You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							54 lines
						
					
					
						
							1.4 KiB
						
					
					
				
			
		
		
	
	
							54 lines
						
					
					
						
							1.4 KiB
						
					
					
				"use strict";
 | 
						|
 | 
						|
Object.defineProperty(exports, "__esModule", {
 | 
						|
  value: true
 | 
						|
});
 | 
						|
exports.actionsToButtonGroup = void 0;
 | 
						|
 | 
						|
var _interfaces = require("../../../interfaces");
 | 
						|
 | 
						|
const actionsToButtonGroup = options => {
 | 
						|
  const {
 | 
						|
    actions,
 | 
						|
    params,
 | 
						|
    handleClick
 | 
						|
  } = options;
 | 
						|
  const buttons = actions.map(action => {
 | 
						|
    const href = (0, _interfaces.actionHref)(action, params);
 | 
						|
    return {
 | 
						|
      icon: action.icon,
 | 
						|
      label: action.label,
 | 
						|
      variant: action.variant,
 | 
						|
      source: action,
 | 
						|
      href: href || undefined,
 | 
						|
      // when href is not defined - handle click should also be not defined
 | 
						|
      // This prevents from "cursor: pointer;"
 | 
						|
      onClick: href ? handleClick : undefined,
 | 
						|
      'data-testid': (0, _interfaces.buildActionTestId)(action),
 | 
						|
      buttons: [],
 | 
						|
      'data-css': `${action.resourceId}-${action.name}-button`
 | 
						|
    };
 | 
						|
  }); // nesting buttons
 | 
						|
 | 
						|
  const buttonsMap = buttons.reduce((memo, button) => {
 | 
						|
    const action = button.source;
 | 
						|
 | 
						|
    if (action.parent) {
 | 
						|
      const parent = memo[action.parent] || buttons.find(btn => btn.source.name === action.parent) || {
 | 
						|
        label: action.parent
 | 
						|
      };
 | 
						|
      parent.buttons = parent.buttons || [];
 | 
						|
      parent.buttons.push(button);
 | 
						|
      return { ...memo,
 | 
						|
        [action.parent]: parent
 | 
						|
      };
 | 
						|
    }
 | 
						|
 | 
						|
    return { ...memo,
 | 
						|
      [button.source.name]: button
 | 
						|
    };
 | 
						|
  }, {});
 | 
						|
  return Object.values(buttonsMap);
 | 
						|
};
 | 
						|
 | 
						|
exports.actionsToButtonGroup = actionsToButtonGroup; |