@pnp/spfx-controls-react
Version:
Reusable React controls for SharePoint Framework solutions
68 lines • 2.94 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.needsSeparator = needsSeparator;
exports.flattenedActions = flattenedActions;
exports.getInFlowToolbarItems = getInFlowToolbarItems;
exports.getOverflowToolbarItems = getOverflowToolbarItems;
var tslib_1 = require("tslib");
var Toolbar_module_scss_1 = tslib_1.__importDefault(require("./Toolbar.module.scss"));
var slugSeparator = "__";
function needsSeparator(actionSlug, index, actionSlugs) {
if (index === 0) {
return false;
}
else if (actionSlugs[index - 1]) {
return actionSlugs[index - 1].split(slugSeparator)[0] !==
actionSlug.split(slugSeparator)[0];
}
}
function flattenedActions(actionGroups) {
return Object.keys(actionGroups).reduce(function (acc_i, actionGroupSlug) {
var actionGroup = actionGroups[actionGroupSlug];
return Object.keys(actionGroup).reduce(function (acc_j, actionSlug) {
var action = actionGroup[actionSlug];
acc_j["".concat(actionGroupSlug).concat(slugSeparator).concat(actionSlug)] = action;
return acc_j;
}, acc_i);
}, {});
}
function getInFlowToolbarItems(allActions, childredFactory) {
return Object.keys(allActions).reduce(function (acc, actionSlug, index, actionSlugs) {
var action = allActions[actionSlug];
acc.push(tslib_1.__assign(tslib_1.__assign({}, action), { key: actionSlug, children: childredFactory(action), title: action.title, "aria-label": action.title, className: "extended-toolbar__near-side__item " + Toolbar_module_scss_1.default.toolbarButtonStyles, styles: {
flex: "0 0 auto",
margin: "0 .0625rem",
display: "inline-flex",
justifyContent: "center",
alignItems: "center",
} }));
if (needsSeparator(actionSlug, index, actionSlugs))
acc.push({
key: "divider".concat(slugSeparator).concat(index),
kind: "divider",
});
return acc;
}, []);
}
function getOverflowToolbarItems(allActions, childredFactory) {
return Object.keys(allActions).reduce(function (acc, actionSlug, index, actionSlugs) {
var action = allActions[actionSlug];
acc.push({
key: actionSlug,
content: action.title,
icon: childredFactory(action),
title: action.title,
"aria-label": action.title,
styles: { padding: ".375rem .5rem" },
onClick: action.onClick
});
if (needsSeparator(actionSlug, index, actionSlugs))
acc.push({
key: "divider".concat(slugSeparator).concat(index),
kind: "divider",
styles: { margin: ".25rem 0", "&:first-child": { display: "none" } },
});
return acc;
}, []);
}
//# sourceMappingURL=ToolbarActionsUtils.js.map