@workday/canvas-kit-react
Version:
The parent module that contains all Workday Canvas Kit React components
47 lines (46 loc) • 1.85 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.useMenuModel = void 0;
const common_1 = require("@workday/canvas-kit-react/common");
const popup_1 = require("@workday/canvas-kit-react/popup");
const collection_1 = require("@workday/canvas-kit-react/collection");
exports.useMenuModel = (0, common_1.createModelHook)({
defaultConfig: {
...collection_1.useListModel.defaultConfig,
...popup_1.usePopupModel.defaultConfig,
/** Determines the default selection manager used as well as if the menu closes when an item is selected */
mode: 'single',
// don't virtualize menus by default to avoid oddities with card width
shouldVirtualize: false,
},
requiredConfig: {
...collection_1.useListModel.requiredConfig,
...popup_1.usePopupModel.requiredConfig,
},
contextOverride: popup_1.usePopupModel.Context,
})(config => {
const list = (0, collection_1.useListModel)(collection_1.useListModel.mergeConfig(config, {
selection: config.mode === 'single' ? collection_1.singleSelectionManager : collection_1.multiSelectionManager,
}));
const popup = (0, popup_1.usePopupModel)(popup_1.usePopupModel.mergeConfig(config, {
id: list.state.id,
onHide() {
// reset the index ref to 0 again so registration doesn't start where it left off
list.state.indexRef.current = 0;
},
}));
(0, popup_1.useAlwaysCloseOnOutsideClick)(popup);
(0, popup_1.useCloseOnEscape)(popup);
const state = { mode: config.mode, ...list.state, ...popup.state };
const events = {
...list.events,
...popup.events,
};
return {
...list,
...popup,
state,
events,
UNSTABLE_parentModel: config.UNSTABLE_parentModel,
};
});