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
			| 
								 
											3 years ago
										 
									 | 
							
								"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;
							 |