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; |