@coveord/plasma-mantine
Version:
A Plasma flavoured Mantine theme
218 lines (217 loc) • 9.91 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
Object.defineProperty(exports, "TableActionsList", {
enumerable: true,
get: function() {
return TableActionsList;
}
});
var _object_spread = require("@swc/helpers/_/_object_spread");
var _object_spread_props = require("@swc/helpers/_/_object_spread_props");
var _object_without_properties = require("@swc/helpers/_/_object_without_properties");
var _sliced_to_array = require("@swc/helpers/_/_sliced_to_array");
var _to_consumable_array = require("@swc/helpers/_/_to_consumable_array");
var _jsxruntime = require("react/jsx-runtime");
var _plasmareacticons = require("@coveord/plasma-react-icons");
var _core = require("@mantine/core");
var _react = require("react");
var _inlineconfirm = require("../../inline-confirm");
var _TableContext = require("../TableContext");
var _TableActionContext = require("./TableActionContext");
var defaultProps = {
label: 'More',
primaryGroupLabel: '',
icon: /*#__PURE__*/ (0, _jsxruntime.jsx)(_plasmareacticons.MoreSize16Px, {
height: 16
})
};
var TableActionsList = function(props) {
var getStyles = (0, _TableContext.useTableContext)().getStyles;
var _useProps = (0, _core.useProps)('PlasmaTableActionsListColumn', defaultProps, props), actions = _useProps.actions, icon = _useProps.icon, label = _useProps.label, primaryGroupLabel = _useProps.primaryGroupLabel, classNames = _useProps.classNames, styles = _useProps.styles, _vars = _useProps.vars, variant = _useProps.variant, others = _object_without_properties._(_useProps, [
"actions",
"icon",
"label",
"primaryGroupLabel",
"classNames",
"styles",
"vars",
"variant"
]);
var _useState = _sliced_to_array._((0, _react.useState)(false), 2), opened = _useState[0], setOpened = _useState[1];
var onClick = function(e) {
e.preventDefault();
e.stopPropagation();
setOpened(function(prevState) {
return !prevState;
});
};
var onChange = function(newOpened) {
if (!newOpened) {
setOpened(false);
}
};
var actionsGroups = actions.reduce(function(acc, action) {
if (action.group === '$$primary') {
acc.$$primary.push(action);
} else if (action.group === '$$confirmPrompt') {
acc.$$confirmPrompt.push(action);
} else {
if (acc.secondary[action.group]) {
acc.secondary[action.group].push(action.component);
} else {
acc.secondary[action.group] = [
action.component
];
}
}
return acc;
}, {
$$primary: [],
$$confirmPrompt: [],
secondary: {}
});
var primaryActions = actionsGroups.$$primary.map(function(action) {
return action.component;
});
var confirmPrompts = actionsGroups.$$confirmPrompt.map(function(confirmPromptAction) {
return confirmPromptAction.component;
});
var secondaryActionGroups = Object.entries(actionsGroups.secondary).map(function(param) {
var _param = _sliced_to_array._(param, 2), group = _param[0], groupActions = _param[1];
return {
name: group,
actions: groupActions
};
});
if (variant === 'split') {
return /*#__PURE__*/ (0, _jsxruntime.jsxs)(_inlineconfirm.InlineConfirm, {
children: [
confirmPrompts,
/*#__PURE__*/ (0, _jsxruntime.jsx)(_TableActionContext.TableActionProvider, {
value: {
primary: true
},
children: primaryActions
}),
secondaryActionGroups.length > 0 ? /*#__PURE__*/ (0, _jsxruntime.jsx)(_TableActionContext.TableActionProvider, {
value: {
primary: false
},
children: /*#__PURE__*/ (0, _jsxruntime.jsxs)(_core.Menu, _object_spread_props._(_object_spread._({
withinPortal: false
}, others), {
keepMounted: true,
children: [
/*#__PURE__*/ (0, _jsxruntime.jsx)(_core.Menu.Target, {
children: /*#__PURE__*/ (0, _jsxruntime.jsx)(_core.Button, _object_spread_props._(_object_spread._({}, getStyles('actionsTarget', {
styles: styles,
classNames: classNames
})), {
variant: "subtle",
leftSection: icon,
children: label
}))
}),
/*#__PURE__*/ (0, _jsxruntime.jsx)(_core.Menu.Dropdown, _object_spread_props._(_object_spread._({}, getStyles('actionsDropdown', {
styles: styles,
classNames: classNames
})), {
children: /*#__PURE__*/ (0, _jsxruntime.jsx)(ActionsGroupsMenuItems, {
classNames: classNames,
styles: styles,
actionGroups: secondaryActionGroups
})
}))
]
}))
}) : null
]
});
}
return /*#__PURE__*/ (0, _jsxruntime.jsxs)(_inlineconfirm.InlineConfirm, {
children: [
confirmPrompts,
/*#__PURE__*/ (0, _jsxruntime.jsx)(_TableActionContext.TableActionProvider, {
value: {
primary: false
},
children: /*#__PURE__*/ (0, _jsxruntime.jsxs)(_core.Menu, _object_spread_props._(_object_spread._({
opened: opened,
onChange: onChange
}, others), {
keepMounted: true,
children: [
/*#__PURE__*/ (0, _jsxruntime.jsx)(_core.Menu.Target, {
children: /*#__PURE__*/ (0, _jsxruntime.jsx)(_core.Tooltip, _object_spread_props._(_object_spread._({
label: label
}, getStyles('actionsTooltip', {
styles: styles,
classNames: classNames
})), {
children: /*#__PURE__*/ (0, _jsxruntime.jsx)(_core.ActionIcon, _object_spread_props._(_object_spread._({}, getStyles('actionsTarget', {
styles: styles,
classNames: classNames
})), {
onClick: onClick,
variant: "subtle",
children: icon
}))
}))
}),
/*#__PURE__*/ (0, _jsxruntime.jsx)(_core.Menu.Dropdown, _object_spread_props._(_object_spread._({}, getStyles('actionsDropdown', {
styles: styles,
classNames: classNames
})), {
children: /*#__PURE__*/ (0, _jsxruntime.jsx)(ActionsGroupsMenuItems, {
classNames: classNames,
styles: styles,
actionGroups: primaryActions.length > 0 ? [
{
name: primaryGroupLabel,
actions: primaryActions
}
].concat(_to_consumable_array._(secondaryActionGroups)) : secondaryActionGroups
})
}))
]
}))
})
]
});
};
var ActionsGroupsMenuItems = function(param) {
var styles = param.styles, classNames = param.classNames, actionGroups = param.actionGroups;
var getStyles = (0, _TableContext.useTableContext)().getStyles;
return actionGroups.map(function(param, index) {
var name = param.name, actions = param.actions;
return /*#__PURE__*/ (0, _jsxruntime.jsxs)(_core.Box, _object_spread_props._(_object_spread._({}, getStyles('actionsGroup', {
styles: styles,
classNames: classNames
})), {
children: [
actionGroups.length > 1 ? /*#__PURE__*/ (0, _jsxruntime.jsx)(_core.Menu.Label, _object_spread_props._(_object_spread._({}, getStyles('actionsGroupLabel', {
styles: styles,
classNames: classNames
})), {
children: name
})) : null,
/*#__PURE__*/ (0, _jsxruntime.jsx)(_core.Box, _object_spread_props._(_object_spread._({}, getStyles('actionsGroupItems', {
styles: styles,
classNames: classNames
})), {
children: actions
})),
index < actionGroups.length - 1 ? /*#__PURE__*/ (0, _jsxruntime.jsx)(_core.Menu.Divider, _object_spread._({}, getStyles('actionsGroupDivider', {
styles: styles,
classNames: classNames
}))) : null
]
}), name);
});
};
TableActionsList.extend = function(input) {
return input;
};
//# sourceMappingURL=TableActionsList.js.map