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.
		
		
		
		
		
			
		
			
				
					79 lines
				
				1.8 KiB
			
		
		
			
		
	
	
					79 lines
				
				1.8 KiB
			| 
								 
											3 years ago
										 
									 | 
							
								"use strict";
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Object.defineProperty(exports, "__esModule", {
							 | 
						||
| 
								 | 
							
								  value: true
							 | 
						||
| 
								 | 
							
								});
							 | 
						||
| 
								 | 
							
								exports.default = exports.ActionButton = void 0;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								var _react = _interopRequireDefault(require("react"));
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								var _allowOverride = _interopRequireDefault(require("../../../hoc/allow-override"));
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								var _hooks = require("../../../hooks");
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								var _interfaces = require("../../../interfaces");
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								var _utils = require("../../../utils");
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/* eslint-disable no-undef */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/* eslint-disable no-alert */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/* eslint-disable no-restricted-globals */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * Renders Button which redirects to given action
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * ### Usage
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * ```
							 | 
						||
| 
								 | 
							
								 * import { ActionButton } from 'adminjs'
							 | 
						||
| 
								 | 
							
								 * ```
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * @component
							 | 
						||
| 
								 | 
							
								 * @subcategory Application
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								const ActionButton = props => {
							 | 
						||
| 
								 | 
							
								  const {
							 | 
						||
| 
								 | 
							
								    children,
							 | 
						||
| 
								 | 
							
								    action,
							 | 
						||
| 
								 | 
							
								    actionPerformed,
							 | 
						||
| 
								 | 
							
								    resourceId,
							 | 
						||
| 
								 | 
							
								    recordId,
							 | 
						||
| 
								 | 
							
								    recordIds
							 | 
						||
| 
								 | 
							
								  } = props;
							 | 
						||
| 
								 | 
							
								  const {
							 | 
						||
| 
								 | 
							
								    href,
							 | 
						||
| 
								 | 
							
								    handleClick
							 | 
						||
| 
								 | 
							
								  } = (0, _hooks.useAction)(action, {
							 | 
						||
| 
								 | 
							
								    resourceId,
							 | 
						||
| 
								 | 
							
								    recordId,
							 | 
						||
| 
								 | 
							
								    recordIds
							 | 
						||
| 
								 | 
							
								  }, actionPerformed);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  if (!action) {
							 | 
						||
| 
								 | 
							
								    return null;
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  const firstChild = _react.default.Children.toArray(children)[0];
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  if (!firstChild || typeof firstChild === 'string' || typeof firstChild === 'number' || typeof firstChild === 'boolean') {
							 | 
						||
| 
								 | 
							
								    throw new Error('ActionButton has to have one child');
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  const contentTag = (0, _utils.getActionElementCss)(resourceId, action.name, 'button');
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  const WrappedElement = /*#__PURE__*/_react.default.cloneElement(firstChild, {
							 | 
						||
| 
								 | 
							
								    onClick: handleClick,
							 | 
						||
| 
								 | 
							
								    'data-testid': (0, _interfaces.buildActionTestId)(action),
							 | 
						||
| 
								 | 
							
								    'data-css': contentTag,
							 | 
						||
| 
								 | 
							
								    href
							 | 
						||
| 
								 | 
							
								  });
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  return WrappedElement;
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								const OverridableActionButton = (0, _allowOverride.default)(ActionButton, 'ActionButton');
							 | 
						||
| 
								 | 
							
								exports.ActionButton = exports.default = OverridableActionButton;
							 |