UNPKG

@workday/canvas-kit-react

Version:

The parent module that contains all Workday Canvas Kit React components

47 lines (46 loc) 1.85 kB
"use strict"; 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, }; });