UNPKG

@pnp/spfx-controls-react

Version:

Reusable React controls for SharePoint Framework solutions

68 lines 2.94 kB
"use strict"; 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