@elliemae/ds-legacy-dropdownmenu 1.0.0-rc.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/DSDropdownMenu.js +50 -0
- package/dist/cjs/DSDropdownMenu.js.map +7 -0
- package/dist/cjs/DropdownMenuContext.js +37 -0
- package/dist/cjs/DropdownMenuContext.js.map +7 -0
- package/dist/cjs/DropdownMenuDataTestId.js +42 -0
- package/dist/cjs/DropdownMenuDataTestId.js.map +7 -0
- package/dist/cjs/config/useDropdownMenuConfig.js +114 -0
- package/dist/cjs/config/useDropdownMenuConfig.js.map +7 -0
- package/dist/cjs/config/useReferenceConfig.js +47 -0
- package/dist/cjs/config/useReferenceConfig.js.map +7 -0
- package/dist/cjs/deprecated/CustomPhoneRenderer.js +37 -0
- package/dist/cjs/deprecated/CustomPhoneRenderer.js.map +7 -0
- package/dist/cjs/deprecated/DSDropdownMenu.js +173 -0
- package/dist/cjs/deprecated/DSDropdownMenu.js.map +7 -0
- package/dist/cjs/deprecated/DropdownMenuContext.js +39 -0
- package/dist/cjs/deprecated/DropdownMenuContext.js.map +7 -0
- package/dist/cjs/deprecated/DropdownMenuLoadingIndicator.js +46 -0
- package/dist/cjs/deprecated/DropdownMenuLoadingIndicator.js.map +7 -0
- package/dist/cjs/deprecated/DropdownMenuProvider.js +109 -0
- package/dist/cjs/deprecated/DropdownMenuProvider.js.map +7 -0
- package/dist/cjs/deprecated/DropdownMenuRenderer.js +173 -0
- package/dist/cjs/deprecated/DropdownMenuRenderer.js.map +7 -0
- package/dist/cjs/deprecated/DropdownMenuWrapper.js +41 -0
- package/dist/cjs/deprecated/DropdownMenuWrapper.js.map +7 -0
- package/dist/cjs/deprecated/MenuItemClickableHOC.js +61 -0
- package/dist/cjs/deprecated/MenuItemClickableHOC.js.map +7 -0
- package/dist/cjs/deprecated/MenuItemGroupSelectionHOC.js +59 -0
- package/dist/cjs/deprecated/MenuItemGroupSelectionHOC.js.map +7 -0
- package/dist/cjs/deprecated/decoratedMenuItemFactory.js +49 -0
- package/dist/cjs/deprecated/decoratedMenuItemFactory.js.map +7 -0
- package/dist/cjs/deprecated/index.js +40 -0
- package/dist/cjs/deprecated/index.js.map +7 -0
- package/dist/cjs/exported-related/constants.js +45 -0
- package/dist/cjs/exported-related/constants.js.map +7 -0
- package/dist/cjs/exported-related/index.js +30 -0
- package/dist/cjs/exported-related/index.js.map +7 -0
- package/dist/cjs/hooks/index.js +32 -0
- package/dist/cjs/hooks/index.js.map +7 -0
- package/dist/cjs/hooks/useAutofocusContainerOnOpen.js +49 -0
- package/dist/cjs/hooks/useAutofocusContainerOnOpen.js.map +7 -0
- package/dist/cjs/hooks/useDropdownListboxHandlers.js +126 -0
- package/dist/cjs/hooks/useDropdownListboxHandlers.js.map +7 -0
- package/dist/cjs/hooks/useDropdownMenuItemHandlers.js +128 -0
- package/dist/cjs/hooks/useDropdownMenuItemHandlers.js.map +7 -0
- package/dist/cjs/hooks/useGetOptionSpecialAttributes.js +47 -0
- package/dist/cjs/hooks/useGetOptionSpecialAttributes.js.map +7 -0
- package/dist/cjs/index.js +46 -0
- package/dist/cjs/index.js.map +7 -0
- package/dist/cjs/package.json +7 -0
- package/dist/cjs/parts/DropdownMenuContent.js +100 -0
- package/dist/cjs/parts/DropdownMenuContent.js.map +7 -0
- package/dist/cjs/parts/DropdownMenuEmptyState.js +38 -0
- package/dist/cjs/parts/DropdownMenuEmptyState.js.map +7 -0
- package/dist/cjs/parts/DropdownMenuItemFactory.js +106 -0
- package/dist/cjs/parts/DropdownMenuItemFactory.js.map +7 -0
- package/dist/cjs/parts/DropdownMenuListBox.js +135 -0
- package/dist/cjs/parts/DropdownMenuListBox.js.map +7 -0
- package/dist/cjs/parts/DropdownMenuLoading.js +73 -0
- package/dist/cjs/parts/DropdownMenuLoading.js.map +7 -0
- package/dist/cjs/parts/DropdownMenuSkeleton.js +42 -0
- package/dist/cjs/parts/DropdownMenuSkeleton.js.map +7 -0
- package/dist/cjs/react-desc-prop-types.js +129 -0
- package/dist/cjs/react-desc-prop-types.js.map +7 -0
- package/dist/cjs/styled.js +120 -0
- package/dist/cjs/styled.js.map +7 -0
- package/dist/cjs/utils/findInCircularList.js +42 -0
- package/dist/cjs/utils/findInCircularList.js.map +7 -0
- package/dist/cjs/utils/index.js +32 -0
- package/dist/cjs/utils/index.js.map +7 -0
- package/dist/cjs/utils/isOptionFocuseable.js +36 -0
- package/dist/cjs/utils/isOptionFocuseable.js.map +7 -0
- package/dist/cjs/utils/manageOpenedSubmenus.js +67 -0
- package/dist/cjs/utils/manageOpenedSubmenus.js.map +7 -0
- package/dist/esm/DSDropdownMenu.js +20 -0
- package/dist/esm/DSDropdownMenu.js.map +7 -0
- package/dist/esm/DropdownMenuContext.js +7 -0
- package/dist/esm/DropdownMenuContext.js.map +7 -0
- package/dist/esm/DropdownMenuDataTestId.js +12 -0
- package/dist/esm/DropdownMenuDataTestId.js.map +7 -0
- package/dist/esm/config/useDropdownMenuConfig.js +84 -0
- package/dist/esm/config/useDropdownMenuConfig.js.map +7 -0
- package/dist/esm/config/useReferenceConfig.js +17 -0
- package/dist/esm/config/useReferenceConfig.js.map +7 -0
- package/dist/esm/deprecated/CustomPhoneRenderer.js +7 -0
- package/dist/esm/deprecated/CustomPhoneRenderer.js.map +7 -0
- package/dist/esm/deprecated/DSDropdownMenu.js +143 -0
- package/dist/esm/deprecated/DSDropdownMenu.js.map +7 -0
- package/dist/esm/deprecated/DropdownMenuContext.js +9 -0
- package/dist/esm/deprecated/DropdownMenuContext.js.map +7 -0
- package/dist/esm/deprecated/DropdownMenuLoadingIndicator.js +16 -0
- package/dist/esm/deprecated/DropdownMenuLoadingIndicator.js.map +7 -0
- package/dist/esm/deprecated/DropdownMenuProvider.js +79 -0
- package/dist/esm/deprecated/DropdownMenuProvider.js.map +7 -0
- package/dist/esm/deprecated/DropdownMenuRenderer.js +143 -0
- package/dist/esm/deprecated/DropdownMenuRenderer.js.map +7 -0
- package/dist/esm/deprecated/DropdownMenuWrapper.js +11 -0
- package/dist/esm/deprecated/DropdownMenuWrapper.js.map +7 -0
- package/dist/esm/deprecated/MenuItemClickableHOC.js +31 -0
- package/dist/esm/deprecated/MenuItemClickableHOC.js.map +7 -0
- package/dist/esm/deprecated/MenuItemGroupSelectionHOC.js +29 -0
- package/dist/esm/deprecated/MenuItemGroupSelectionHOC.js.map +7 -0
- package/dist/esm/deprecated/decoratedMenuItemFactory.js +19 -0
- package/dist/esm/deprecated/decoratedMenuItemFactory.js.map +7 -0
- package/dist/esm/deprecated/index.js +10 -0
- package/dist/esm/deprecated/index.js.map +7 -0
- package/dist/esm/exported-related/constants.js +15 -0
- package/dist/esm/exported-related/constants.js.map +7 -0
- package/dist/esm/exported-related/index.js +3 -0
- package/dist/esm/exported-related/index.js.map +7 -0
- package/dist/esm/hooks/index.js +5 -0
- package/dist/esm/hooks/index.js.map +7 -0
- package/dist/esm/hooks/useAutofocusContainerOnOpen.js +19 -0
- package/dist/esm/hooks/useAutofocusContainerOnOpen.js.map +7 -0
- package/dist/esm/hooks/useDropdownListboxHandlers.js +96 -0
- package/dist/esm/hooks/useDropdownListboxHandlers.js.map +7 -0
- package/dist/esm/hooks/useDropdownMenuItemHandlers.js +98 -0
- package/dist/esm/hooks/useDropdownMenuItemHandlers.js.map +7 -0
- package/dist/esm/hooks/useGetOptionSpecialAttributes.js +17 -0
- package/dist/esm/hooks/useGetOptionSpecialAttributes.js.map +7 -0
- package/dist/esm/index.js +15 -0
- package/dist/esm/index.js.map +7 -0
- package/dist/esm/package.json +7 -0
- package/dist/esm/parts/DropdownMenuContent.js +70 -0
- package/dist/esm/parts/DropdownMenuContent.js.map +7 -0
- package/dist/esm/parts/DropdownMenuEmptyState.js +8 -0
- package/dist/esm/parts/DropdownMenuEmptyState.js.map +7 -0
- package/dist/esm/parts/DropdownMenuItemFactory.js +85 -0
- package/dist/esm/parts/DropdownMenuItemFactory.js.map +7 -0
- package/dist/esm/parts/DropdownMenuListBox.js +105 -0
- package/dist/esm/parts/DropdownMenuListBox.js.map +7 -0
- package/dist/esm/parts/DropdownMenuLoading.js +43 -0
- package/dist/esm/parts/DropdownMenuLoading.js.map +7 -0
- package/dist/esm/parts/DropdownMenuSkeleton.js +12 -0
- package/dist/esm/parts/DropdownMenuSkeleton.js.map +7 -0
- package/dist/esm/react-desc-prop-types.js +102 -0
- package/dist/esm/react-desc-prop-types.js.map +7 -0
- package/dist/esm/styled.js +90 -0
- package/dist/esm/styled.js.map +7 -0
- package/dist/esm/utils/findInCircularList.js +12 -0
- package/dist/esm/utils/findInCircularList.js.map +7 -0
- package/dist/esm/utils/index.js +5 -0
- package/dist/esm/utils/index.js.map +7 -0
- package/dist/esm/utils/isOptionFocuseable.js +6 -0
- package/dist/esm/utils/isOptionFocuseable.js.map +7 -0
- package/dist/esm/utils/manageOpenedSubmenus.js +37 -0
- package/dist/esm/utils/manageOpenedSubmenus.js.map +7 -0
- package/dist/types/DSDropdownMenu.d.ts +5 -0
- package/dist/types/DropdownMenuContext.d.ts +3 -0
- package/dist/types/DropdownMenuDataTestId.d.ts +7 -0
- package/dist/types/config/useDropdownMenuConfig.d.ts +2 -0
- package/dist/types/config/useReferenceConfig.d.ts +7 -0
- package/dist/types/deprecated/CustomPhoneRenderer.d.ts +2 -0
- package/dist/types/deprecated/DSDropdownMenu.d.ts +110 -0
- package/dist/types/deprecated/DropdownMenuContext.d.ts +4 -0
- package/dist/types/deprecated/DropdownMenuLoadingIndicator.d.ts +3 -0
- package/dist/types/deprecated/DropdownMenuProvider.d.ts +12 -0
- package/dist/types/deprecated/DropdownMenuRenderer.d.ts +28 -0
- package/dist/types/deprecated/DropdownMenuWrapper.d.ts +3 -0
- package/dist/types/deprecated/MenuItemClickableHOC.d.ts +6 -0
- package/dist/types/deprecated/MenuItemGroupSelectionHOC.d.ts +6 -0
- package/dist/types/deprecated/decoratedMenuItemFactory.d.ts +2 -0
- package/dist/types/deprecated/index.d.ts +2 -0
- package/dist/types/exported-related/constants.d.ts +9 -0
- package/dist/types/exported-related/index.d.ts +1 -0
- package/dist/types/hooks/index.d.ts +3 -0
- package/dist/types/hooks/useAutofocusContainerOnOpen.d.ts +1 -0
- package/dist/types/hooks/useDropdownListboxHandlers.d.ts +8 -0
- package/dist/types/hooks/useDropdownMenuItemHandlers.d.ts +12 -0
- package/dist/types/hooks/useGetOptionSpecialAttributes.d.ts +3 -0
- package/dist/types/index.d.ts +7 -0
- package/dist/types/parts/DropdownMenuContent.d.ts +2 -0
- package/dist/types/parts/DropdownMenuEmptyState.d.ts +8 -0
- package/dist/types/parts/DropdownMenuItemFactory.d.ts +8 -0
- package/dist/types/parts/DropdownMenuListBox.d.ts +2 -0
- package/dist/types/parts/DropdownMenuLoading.d.ts +2 -0
- package/dist/types/parts/DropdownMenuSkeleton.d.ts +1 -0
- package/dist/types/react-desc-prop-types.d.ts +120 -0
- package/dist/types/styled.d.ts +20 -0
- package/dist/types/tests/DSDropdownMenuV2.keyboardEvents.test.d.ts +1 -0
- package/dist/types/tests/DSDropdownMenuV2.pointerEvents.test.d.ts +1 -0
- package/dist/types/utils/findInCircularList.d.ts +1 -0
- package/dist/types/utils/index.d.ts +3 -0
- package/dist/types/utils/isOptionFocuseable.d.ts +2 -0
- package/dist/types/utils/manageOpenedSubmenus.d.ts +2 -0
- package/package.json +93 -0
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
import { jsx } from "react/jsx-runtime";
|
|
3
|
+
import { useContext } from "react";
|
|
4
|
+
import { runAll, get } from "@elliemae/ds-legacy-utilities";
|
|
5
|
+
import { DropdownMenuContext } from "./DropdownMenuContext.js";
|
|
6
|
+
const noop = () => null;
|
|
7
|
+
const defaultConfig = { type: "default", handlerName: "onClick" };
|
|
8
|
+
function MenuItemClickableHOC(WrappedComponent, config) {
|
|
9
|
+
return function({ item = {}, ...restProps }) {
|
|
10
|
+
const { type, handlerName } = { ...defaultConfig, ...config };
|
|
11
|
+
const { onItemClick, selection } = useContext(DropdownMenuContext);
|
|
12
|
+
const propHandler = restProps[handlerName] || noop;
|
|
13
|
+
const handler = {
|
|
14
|
+
[handlerName]: () => runAll(onItemClick, propHandler)({ item, type })
|
|
15
|
+
};
|
|
16
|
+
return /* @__PURE__ */ jsx(
|
|
17
|
+
WrappedComponent,
|
|
18
|
+
{
|
|
19
|
+
...restProps,
|
|
20
|
+
...type === "selectable" && selection ? { checked: get(selection, [item.id]) } : {},
|
|
21
|
+
...handler
|
|
22
|
+
}
|
|
23
|
+
);
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
var MenuItemClickableHOC_default = MenuItemClickableHOC;
|
|
27
|
+
export {
|
|
28
|
+
MenuItemClickableHOC,
|
|
29
|
+
MenuItemClickableHOC_default as default
|
|
30
|
+
};
|
|
31
|
+
//# sourceMappingURL=MenuItemClickableHOC.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../../scripts/build/transpile/react-shim.js", "../../../src/deprecated/MenuItemClickableHOC.tsx"],
|
|
4
|
+
"sourcesContent": ["import * as React from 'react';\nexport { React };\n", "// @ts-nocheck\n/* eslint-disable react/display-name */\nimport React, { useContext } from 'react';\nimport { runAll, get } from '@elliemae/ds-legacy-utilities';\nimport { DropdownMenuContext } from './DropdownMenuContext.js';\n\nconst noop = () => null;\n\nconst defaultConfig = { type: 'default', handlerName: 'onClick' };\n\nfunction MenuItemClickableHOC(WrappedComponent, config) {\n return function ({ item = {}, ...restProps }) {\n const { type, handlerName } = { ...defaultConfig, ...config };\n const { onItemClick, selection } = useContext(DropdownMenuContext);\n const propHandler = restProps[handlerName] || noop;\n const handler = {\n [handlerName]: () => runAll(onItemClick, propHandler)({ item, type }),\n };\n return (\n <WrappedComponent\n {...restProps}\n {...(type === 'selectable' && selection ? { checked: get(selection, [item.id]) } : {})}\n {...handler}\n />\n );\n };\n}\n\nexport { MenuItemClickableHOC };\nexport default MenuItemClickableHOC;\n"],
|
|
5
|
+
"mappings": "AAAA,YAAY,WAAW;ACmBjB;AAjBN,SAAgB,kBAAkB;AAClC,SAAS,QAAQ,WAAW;AAC5B,SAAS,2BAA2B;AAEpC,MAAM,OAAO,MAAM;AAEnB,MAAM,gBAAgB,EAAE,MAAM,WAAW,aAAa,UAAU;AAEhE,SAAS,qBAAqB,kBAAkB,QAAQ;AACtD,SAAO,SAAU,EAAE,OAAO,CAAC,GAAG,GAAG,UAAU,GAAG;AAC5C,UAAM,EAAE,MAAM,YAAY,IAAI,EAAE,GAAG,eAAe,GAAG,OAAO;AAC5D,UAAM,EAAE,aAAa,UAAU,IAAI,WAAW,mBAAmB;AACjE,UAAM,cAAc,UAAU,WAAW,KAAK;AAC9C,UAAM,UAAU;AAAA,MACd,CAAC,WAAW,GAAG,MAAM,OAAO,aAAa,WAAW,EAAE,EAAE,MAAM,KAAK,CAAC;AAAA,IACtE;AACA,WACE;AAAA,MAAC;AAAA;AAAA,QACE,GAAG;AAAA,QACH,GAAI,SAAS,gBAAgB,YAAY,EAAE,SAAS,IAAI,WAAW,CAAC,KAAK,EAAE,CAAC,EAAE,IAAI,CAAC;AAAA,QACnF,GAAG;AAAA;AAAA,IACN;AAAA,EAEJ;AACF;AAGA,IAAO,+BAAQ;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
import { jsx } from "react/jsx-runtime";
|
|
3
|
+
import { useContext } from "react";
|
|
4
|
+
import { runAll, get } from "@elliemae/ds-legacy-utilities";
|
|
5
|
+
import { DropdownMenuContext } from "./DropdownMenuContext.js";
|
|
6
|
+
const noop = () => null;
|
|
7
|
+
function MenuItemGroupSelectionHOC(WrappedComponent, handlerName = "onSelect") {
|
|
8
|
+
return function({ item = {}, ...restProps }) {
|
|
9
|
+
const { onItemClick, selection } = useContext(DropdownMenuContext);
|
|
10
|
+
const propHandler = restProps[handlerName] || noop;
|
|
11
|
+
const handler = {
|
|
12
|
+
[handlerName]: (active, itemOption) => runAll(item.onSelect, onItemClick, propHandler)({ item: itemOption, group: { ...item, active } })
|
|
13
|
+
};
|
|
14
|
+
return /* @__PURE__ */ jsx(
|
|
15
|
+
WrappedComponent,
|
|
16
|
+
{
|
|
17
|
+
...restProps,
|
|
18
|
+
...selection ? { active: get(selection, [item.id]) || item.active } : {},
|
|
19
|
+
...handler
|
|
20
|
+
}
|
|
21
|
+
);
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
var MenuItemGroupSelectionHOC_default = MenuItemGroupSelectionHOC;
|
|
25
|
+
export {
|
|
26
|
+
MenuItemGroupSelectionHOC,
|
|
27
|
+
MenuItemGroupSelectionHOC_default as default
|
|
28
|
+
};
|
|
29
|
+
//# sourceMappingURL=MenuItemGroupSelectionHOC.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../../scripts/build/transpile/react-shim.js", "../../../src/deprecated/MenuItemGroupSelectionHOC.tsx"],
|
|
4
|
+
"sourcesContent": ["import * as React from 'react';\nexport { React };\n", "// @ts-nocheck\n/* eslint-disable react/display-name */\nimport React, { useContext } from 'react';\nimport { runAll, get } from '@elliemae/ds-legacy-utilities';\nimport { DropdownMenuContext } from './DropdownMenuContext.js';\n\nconst noop = () => null;\n\nfunction MenuItemGroupSelectionHOC(WrappedComponent, handlerName = 'onSelect') {\n return function ({ item = {}, ...restProps }) {\n const { onItemClick, selection } = useContext(DropdownMenuContext);\n const propHandler = restProps[handlerName] || noop;\n const handler = {\n [handlerName]: (active, itemOption) =>\n runAll(item.onSelect, onItemClick, propHandler)({ item: itemOption, group: { ...item, active } }),\n };\n return (\n <WrappedComponent\n {...restProps}\n {...(selection ? { active: get(selection, [item.id]) || item.active } : {})}\n {...handler}\n />\n );\n };\n}\n\nexport { MenuItemGroupSelectionHOC };\nexport default MenuItemGroupSelectionHOC;\n"],
|
|
5
|
+
"mappings": "AAAA,YAAY,WAAW;ACiBjB;AAfN,SAAgB,kBAAkB;AAClC,SAAS,QAAQ,WAAW;AAC5B,SAAS,2BAA2B;AAEpC,MAAM,OAAO,MAAM;AAEnB,SAAS,0BAA0B,kBAAkB,cAAc,YAAY;AAC7E,SAAO,SAAU,EAAE,OAAO,CAAC,GAAG,GAAG,UAAU,GAAG;AAC5C,UAAM,EAAE,aAAa,UAAU,IAAI,WAAW,mBAAmB;AACjE,UAAM,cAAc,UAAU,WAAW,KAAK;AAC9C,UAAM,UAAU;AAAA,MACd,CAAC,WAAW,GAAG,CAAC,QAAQ,eACtB,OAAO,KAAK,UAAU,aAAa,WAAW,EAAE,EAAE,MAAM,YAAY,OAAO,EAAE,GAAG,MAAM,OAAO,EAAE,CAAC;AAAA,IACpG;AACA,WACE;AAAA,MAAC;AAAA;AAAA,QACE,GAAG;AAAA,QACH,GAAI,YAAY,EAAE,QAAQ,IAAI,WAAW,CAAC,KAAK,EAAE,CAAC,KAAK,KAAK,OAAO,IAAI,CAAC;AAAA,QACxE,GAAG;AAAA;AAAA,IACN;AAAA,EAEJ;AACF;AAGA,IAAO,oCAAQ;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
import { Menu, renderMenuItems, menuItemFactory } from "@elliemae/ds-legacy-common";
|
|
3
|
+
import { MenuItemClickableHOC } from "./MenuItemClickableHOC.js";
|
|
4
|
+
import { MenuItemGroupSelectionHOC } from "./MenuItemGroupSelectionHOC.js";
|
|
5
|
+
const itemTypes = {
|
|
6
|
+
separator: Menu.Separator,
|
|
7
|
+
menuitem: MenuItemClickableHOC(Menu.Item),
|
|
8
|
+
radio: MenuItemClickableHOC(Menu.ItemRadio, { type: "selectable" }),
|
|
9
|
+
checkbox: MenuItemClickableHOC(Menu.ItemCheckbox, { type: "selectable" }),
|
|
10
|
+
submenu: Menu.SubMenu,
|
|
11
|
+
"selection-group": MenuItemGroupSelectionHOC(Menu.SelectionGroup)
|
|
12
|
+
};
|
|
13
|
+
const factory = (type) => menuItemFactory(type, itemTypes, itemTypes.menuitem);
|
|
14
|
+
const renderOptions = (options) => renderMenuItems(options, factory);
|
|
15
|
+
export {
|
|
16
|
+
factory,
|
|
17
|
+
renderOptions
|
|
18
|
+
};
|
|
19
|
+
//# sourceMappingURL=decoratedMenuItemFactory.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../../scripts/build/transpile/react-shim.js", "../../../src/deprecated/decoratedMenuItemFactory.tsx"],
|
|
4
|
+
"sourcesContent": ["import * as React from 'react';\nexport { React };\n", "// @ts-nocheck\nimport { Menu, renderMenuItems, menuItemFactory } from '@elliemae/ds-legacy-common';\nimport { MenuItemClickableHOC } from './MenuItemClickableHOC.js';\nimport { MenuItemGroupSelectionHOC } from './MenuItemGroupSelectionHOC.js';\n\nconst itemTypes = {\n separator: Menu.Separator,\n menuitem: MenuItemClickableHOC(Menu.Item),\n radio: MenuItemClickableHOC(Menu.ItemRadio, { type: 'selectable' }),\n checkbox: MenuItemClickableHOC(Menu.ItemCheckbox, { type: 'selectable' }),\n submenu: Menu.SubMenu,\n 'selection-group': MenuItemGroupSelectionHOC(Menu.SelectionGroup),\n};\n\nexport const factory = (type) => menuItemFactory(type, itemTypes, itemTypes.menuitem);\nexport const renderOptions = (options) => renderMenuItems(options, factory);\n"],
|
|
5
|
+
"mappings": "AAAA,YAAY,WAAW;ACCvB,SAAS,MAAM,iBAAiB,uBAAuB;AACvD,SAAS,4BAA4B;AACrC,SAAS,iCAAiC;AAE1C,MAAM,YAAY;AAAA,EAChB,WAAW,KAAK;AAAA,EAChB,UAAU,qBAAqB,KAAK,IAAI;AAAA,EACxC,OAAO,qBAAqB,KAAK,WAAW,EAAE,MAAM,aAAa,CAAC;AAAA,EAClE,UAAU,qBAAqB,KAAK,cAAc,EAAE,MAAM,aAAa,CAAC;AAAA,EACxE,SAAS,KAAK;AAAA,EACd,mBAAmB,0BAA0B,KAAK,cAAc;AAClE;AAEO,MAAM,UAAU,CAAC,SAAS,gBAAgB,MAAM,WAAW,UAAU,QAAQ;AAC7E,MAAM,gBAAgB,CAAC,YAAY,gBAAgB,SAAS,OAAO;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
import { default as default2, DropdownMenuWithSchema, DSDropdownMenu } from "./DSDropdownMenu.js";
|
|
3
|
+
import { CustomPhoneRenderer } from "./CustomPhoneRenderer.js";
|
|
4
|
+
export {
|
|
5
|
+
CustomPhoneRenderer,
|
|
6
|
+
DSDropdownMenu,
|
|
7
|
+
DropdownMenuWithSchema,
|
|
8
|
+
default2 as default
|
|
9
|
+
};
|
|
10
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../../scripts/build/transpile/react-shim.js", "../../../src/deprecated/index.tsx"],
|
|
4
|
+
"sourcesContent": ["import * as React from 'react';\nexport { React };\n", "// @ts-nocheck\nexport { default, DropdownMenuWithSchema, DSDropdownMenu } from './DSDropdownMenu.js';\nexport { CustomPhoneRenderer } from './CustomPhoneRenderer.js';\n"],
|
|
5
|
+
"mappings": "AAAA,YAAY,WAAW;ACCvB,SAAS,WAAAA,UAAS,wBAAwB,sBAAsB;AAChE,SAAS,2BAA2B;",
|
|
6
|
+
"names": ["default"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
const DSDropdownMenuName = "DSDropdownMenu";
|
|
3
|
+
const DSDropdownMenuSlots = {
|
|
4
|
+
ROOT: "root",
|
|
5
|
+
LOADING_WRAPPER: "loading-wrapper",
|
|
6
|
+
LISTBOX_WRAPPER: "listbox-wrapper",
|
|
7
|
+
HEADER_WRAPPER: "header-wrapper",
|
|
8
|
+
OPTION_LIST_WRAPPER: "option-list-wrapper",
|
|
9
|
+
EMPTY_STATE_WRAPPER: "empty-state-wrapper"
|
|
10
|
+
};
|
|
11
|
+
export {
|
|
12
|
+
DSDropdownMenuName,
|
|
13
|
+
DSDropdownMenuSlots
|
|
14
|
+
};
|
|
15
|
+
//# sourceMappingURL=constants.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../../scripts/build/transpile/react-shim.js", "../../../src/exported-related/constants.ts"],
|
|
4
|
+
"sourcesContent": ["import * as React from 'react';\nexport { React };\n", "export const DSDropdownMenuName = 'DSDropdownMenu';\n\nexport const DSDropdownMenuSlots = {\n ROOT: 'root',\n LOADING_WRAPPER: 'loading-wrapper',\n LISTBOX_WRAPPER: 'listbox-wrapper',\n HEADER_WRAPPER: 'header-wrapper',\n OPTION_LIST_WRAPPER: 'option-list-wrapper',\n EMPTY_STATE_WRAPPER: 'empty-state-wrapper',\n};\n"],
|
|
5
|
+
"mappings": "AAAA,YAAY,WAAW;ACAhB,MAAM,qBAAqB;AAE3B,MAAM,sBAAsB;AAAA,EACjC,MAAM;AAAA,EACN,iBAAiB;AAAA,EACjB,iBAAiB;AAAA,EACjB,gBAAgB;AAAA,EAChB,qBAAqB;AAAA,EACrB,qBAAqB;AACvB;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../../scripts/build/transpile/react-shim.js", "../../../src/exported-related/index.ts"],
|
|
4
|
+
"sourcesContent": ["import * as React from 'react';\nexport { React };\n", "export * from './constants.js';\n"],
|
|
5
|
+
"mappings": "AAAA,YAAY,WAAW;ACAvB,cAAc;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../../scripts/build/transpile/react-shim.js", "../../../src/hooks/index.tsx"],
|
|
4
|
+
"sourcesContent": ["import * as React from 'react';\nexport { React };\n", "export * from './useAutofocusContainerOnOpen.js';\nexport * from './useDropdownMenuItemHandlers.js';\nexport * from './useGetOptionSpecialAttributes.js';\n"],
|
|
5
|
+
"mappings": "AAAA,YAAY,WAAW;ACAvB,cAAc;AACd,cAAc;AACd,cAAc;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
import { useContext, useLayoutEffect } from "react";
|
|
3
|
+
import { DSDropdownMenuContext } from "../DropdownMenuContext.js";
|
|
4
|
+
const useAutofocusContainerOnOpen = () => {
|
|
5
|
+
const { listboxReference, inputReference } = useContext(DSDropdownMenuContext);
|
|
6
|
+
useLayoutEffect(() => {
|
|
7
|
+
requestAnimationFrame(() => {
|
|
8
|
+
if (inputReference.current) {
|
|
9
|
+
inputReference.current.focus();
|
|
10
|
+
} else if (listboxReference.current) {
|
|
11
|
+
listboxReference.current.focus();
|
|
12
|
+
}
|
|
13
|
+
});
|
|
14
|
+
}, [inputReference, listboxReference]);
|
|
15
|
+
};
|
|
16
|
+
export {
|
|
17
|
+
useAutofocusContainerOnOpen
|
|
18
|
+
};
|
|
19
|
+
//# sourceMappingURL=useAutofocusContainerOnOpen.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../../scripts/build/transpile/react-shim.js", "../../../src/hooks/useAutofocusContainerOnOpen.tsx"],
|
|
4
|
+
"sourcesContent": ["import * as React from 'react';\nexport { React };\n", "import { useContext, useLayoutEffect } from 'react';\nimport { DSDropdownMenuContext } from '../DropdownMenuContext.js';\n\nexport const useAutofocusContainerOnOpen = () => {\n const { listboxReference, inputReference } = useContext(DSDropdownMenuContext);\n\n useLayoutEffect(() => {\n requestAnimationFrame(() => {\n if (inputReference.current) {\n inputReference.current.focus();\n } else if (listboxReference.current) {\n listboxReference.current.focus();\n }\n });\n }, [inputReference, listboxReference]);\n};\n"],
|
|
5
|
+
"mappings": "AAAA,YAAY,WAAW;ACAvB,SAAS,YAAY,uBAAuB;AAC5C,SAAS,6BAA6B;AAE/B,MAAM,8BAA8B,MAAM;AAC/C,QAAM,EAAE,kBAAkB,eAAe,IAAI,WAAW,qBAAqB;AAE7E,kBAAgB,MAAM;AACpB,0BAAsB,MAAM;AAC1B,UAAI,eAAe,SAAS;AAC1B,uBAAe,QAAQ,MAAM;AAAA,MAC/B,WAAW,iBAAiB,SAAS;AACnC,yBAAiB,QAAQ,MAAM;AAAA,MACjC;AAAA,IACF,CAAC;AAAA,EACH,GAAG,CAAC,gBAAgB,gBAAgB,CAAC;AACvC;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
import { useCallback, useContext } from "react";
|
|
3
|
+
import { DSDropdownMenuContext } from "../DropdownMenuContext.js";
|
|
4
|
+
import { findInCircularList, isOptionFocuseable, manageOpenedSubmenus } from "../utils/index.js";
|
|
5
|
+
const useDropdownListboxHandlers = () => {
|
|
6
|
+
const {
|
|
7
|
+
props: {
|
|
8
|
+
options,
|
|
9
|
+
onOptionClick,
|
|
10
|
+
openedSubmenus,
|
|
11
|
+
onSubmenuToggle,
|
|
12
|
+
onKeyDown: userOnKeyDown,
|
|
13
|
+
selectedOptions,
|
|
14
|
+
onClickOutside,
|
|
15
|
+
onMouseEnter: userOnMouseEnter,
|
|
16
|
+
onMouseLeave
|
|
17
|
+
},
|
|
18
|
+
activeDescendant,
|
|
19
|
+
setActiveDescendant,
|
|
20
|
+
scrollOptionIntoView,
|
|
21
|
+
listboxReference,
|
|
22
|
+
inputReference
|
|
23
|
+
} = useContext(DSDropdownMenuContext);
|
|
24
|
+
const onKeyDown = useCallback(
|
|
25
|
+
(e) => {
|
|
26
|
+
const currentItemIndex = options.findIndex((opt) => opt.dsId === activeDescendant);
|
|
27
|
+
if (currentItemIndex === -1)
|
|
28
|
+
return;
|
|
29
|
+
const option = options[currentItemIndex];
|
|
30
|
+
e.stopPropagation();
|
|
31
|
+
if (e.code === "ArrowDown") {
|
|
32
|
+
e.preventDefault();
|
|
33
|
+
const nextItemIndex = findInCircularList(options, currentItemIndex, isOptionFocuseable);
|
|
34
|
+
setActiveDescendant(options[nextItemIndex].dsId);
|
|
35
|
+
scrollOptionIntoView(options[nextItemIndex].dsId);
|
|
36
|
+
} else if (e.code === "ArrowUp") {
|
|
37
|
+
e.preventDefault();
|
|
38
|
+
const nextItemIndex = findInCircularList(options, currentItemIndex, isOptionFocuseable, -1);
|
|
39
|
+
setActiveDescendant(options[nextItemIndex].dsId);
|
|
40
|
+
scrollOptionIntoView(options[nextItemIndex].dsId);
|
|
41
|
+
} else if (e.code === "ArrowRight" && ["submenu", "singleWithSubmenu"].includes(option.type) && !openedSubmenus[option.dsId]) {
|
|
42
|
+
e.preventDefault();
|
|
43
|
+
onSubmenuToggle(manageOpenedSubmenus(options, { ...openedSubmenus, [option.dsId]: true }, option), option, e);
|
|
44
|
+
} else if (["Space", "Enter"].includes(e.code)) {
|
|
45
|
+
e.preventDefault();
|
|
46
|
+
const nextSelectedOptions = { ...selectedOptions };
|
|
47
|
+
nextSelectedOptions[option.dsId] = !selectedOptions[option.dsId];
|
|
48
|
+
if (option?.disabled)
|
|
49
|
+
return;
|
|
50
|
+
onOptionClick(nextSelectedOptions, option, e);
|
|
51
|
+
if (option.onClick)
|
|
52
|
+
option.onClick(e);
|
|
53
|
+
} else if (e.code === "Escape") {
|
|
54
|
+
onClickOutside(e);
|
|
55
|
+
} else if (e.code === "Home") {
|
|
56
|
+
const nextItemIndex = findInCircularList(options, options.length - 1, isOptionFocuseable);
|
|
57
|
+
setActiveDescendant(options[nextItemIndex].dsId);
|
|
58
|
+
scrollOptionIntoView(options[nextItemIndex].dsId);
|
|
59
|
+
} else if (e.code === "End") {
|
|
60
|
+
const nextItemIndex = findInCircularList(options, 0, isOptionFocuseable, -1);
|
|
61
|
+
setActiveDescendant(options[nextItemIndex].dsId);
|
|
62
|
+
scrollOptionIntoView(options[nextItemIndex].dsId);
|
|
63
|
+
}
|
|
64
|
+
if (option.onKeyDown)
|
|
65
|
+
option.onKeyDown(e);
|
|
66
|
+
userOnKeyDown(e);
|
|
67
|
+
},
|
|
68
|
+
[
|
|
69
|
+
options,
|
|
70
|
+
openedSubmenus,
|
|
71
|
+
userOnKeyDown,
|
|
72
|
+
activeDescendant,
|
|
73
|
+
setActiveDescendant,
|
|
74
|
+
scrollOptionIntoView,
|
|
75
|
+
onSubmenuToggle,
|
|
76
|
+
selectedOptions,
|
|
77
|
+
onOptionClick,
|
|
78
|
+
onClickOutside
|
|
79
|
+
]
|
|
80
|
+
);
|
|
81
|
+
const onMouseEnter = useCallback(
|
|
82
|
+
(e) => {
|
|
83
|
+
if (inputReference.current)
|
|
84
|
+
inputReference.current.focus();
|
|
85
|
+
else
|
|
86
|
+
listboxReference.current?.focus();
|
|
87
|
+
userOnMouseEnter(e);
|
|
88
|
+
},
|
|
89
|
+
[inputReference, listboxReference, userOnMouseEnter]
|
|
90
|
+
);
|
|
91
|
+
return { onKeyDown, onMouseEnter, onMouseLeave };
|
|
92
|
+
};
|
|
93
|
+
export {
|
|
94
|
+
useDropdownListboxHandlers
|
|
95
|
+
};
|
|
96
|
+
//# sourceMappingURL=useDropdownListboxHandlers.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../../scripts/build/transpile/react-shim.js", "../../../src/hooks/useDropdownListboxHandlers.tsx"],
|
|
4
|
+
"sourcesContent": ["import * as React from 'react';\nexport { React };\n", "/* eslint-disable max-params */\n/* eslint-disable max-statements */\n/* eslint-disable complexity */\nimport type React from 'react';\nimport { useCallback, useContext } from 'react';\nimport { DSDropdownMenuContext } from '../DropdownMenuContext.js';\nimport type { DSDropdownMenuT } from '../react-desc-prop-types.js';\nimport { findInCircularList, isOptionFocuseable, manageOpenedSubmenus } from '../utils/index.js';\n\ntype UseDropdownListboxHandlersType = () => {\n onKeyDown: React.KeyboardEventHandler;\n onMouseEnter: React.MouseEventHandler;\n onMouseLeave?: React.MouseEventHandler;\n};\n\nexport const useDropdownListboxHandlers: UseDropdownListboxHandlersType = () => {\n const {\n props: {\n options,\n onOptionClick,\n openedSubmenus,\n onSubmenuToggle,\n onKeyDown: userOnKeyDown,\n selectedOptions,\n onClickOutside,\n onMouseEnter: userOnMouseEnter,\n onMouseLeave,\n },\n activeDescendant,\n setActiveDescendant,\n scrollOptionIntoView,\n listboxReference,\n inputReference,\n } = useContext(DSDropdownMenuContext);\n\n const onKeyDown: React.KeyboardEventHandler = useCallback(\n (e) => {\n const currentItemIndex = options.findIndex((opt) => opt.dsId === activeDescendant);\n if (currentItemIndex === -1) return;\n\n const option = options[currentItemIndex];\n\n e.stopPropagation();\n\n if (e.code === 'ArrowDown') {\n e.preventDefault();\n const nextItemIndex = findInCircularList(options, currentItemIndex, isOptionFocuseable);\n setActiveDescendant(options[nextItemIndex].dsId);\n scrollOptionIntoView(options[nextItemIndex].dsId);\n } else if (e.code === 'ArrowUp') {\n e.preventDefault();\n const nextItemIndex = findInCircularList(options, currentItemIndex, isOptionFocuseable, -1);\n setActiveDescendant(options[nextItemIndex].dsId);\n scrollOptionIntoView(options[nextItemIndex].dsId);\n } else if (\n e.code === 'ArrowRight' &&\n ['submenu', 'singleWithSubmenu'].includes(option.type) &&\n !openedSubmenus[option.dsId]\n ) {\n e.preventDefault();\n onSubmenuToggle(manageOpenedSubmenus(options, { ...openedSubmenus, [option.dsId]: true }, option), option, e);\n } else if (['Space', 'Enter'].includes(e.code)) {\n e.preventDefault();\n const nextSelectedOptions = { ...selectedOptions };\n nextSelectedOptions[option.dsId] = !selectedOptions[option.dsId];\n if ((option as DSDropdownMenuT.ItemActionOptions)?.disabled) return; // prevent click when is disabled\n onOptionClick(nextSelectedOptions, option, e);\n if (option.onClick) option.onClick(e);\n } else if (e.code === 'Escape') {\n onClickOutside(e);\n } else if (e.code === 'Home') {\n const nextItemIndex = findInCircularList(options, options.length - 1, isOptionFocuseable);\n setActiveDescendant(options[nextItemIndex].dsId);\n scrollOptionIntoView(options[nextItemIndex].dsId);\n } else if (e.code === 'End') {\n const nextItemIndex = findInCircularList(options, 0, isOptionFocuseable, -1);\n setActiveDescendant(options[nextItemIndex].dsId);\n scrollOptionIntoView(options[nextItemIndex].dsId);\n }\n if (option.onKeyDown) option.onKeyDown(e);\n userOnKeyDown(e);\n },\n [\n options,\n openedSubmenus,\n userOnKeyDown,\n activeDescendant,\n setActiveDescendant,\n scrollOptionIntoView,\n onSubmenuToggle,\n selectedOptions,\n onOptionClick,\n onClickOutside,\n ],\n );\n\n const onMouseEnter: React.MouseEventHandler = useCallback(\n (e: React.MouseEvent) => {\n if (inputReference.current) inputReference.current.focus();\n else listboxReference.current?.focus();\n userOnMouseEnter(e);\n },\n [inputReference, listboxReference, userOnMouseEnter],\n );\n return { onKeyDown, onMouseEnter, onMouseLeave };\n};\n"],
|
|
5
|
+
"mappings": "AAAA,YAAY,WAAW;ACIvB,SAAS,aAAa,kBAAkB;AACxC,SAAS,6BAA6B;AAEtC,SAAS,oBAAoB,oBAAoB,4BAA4B;AAQtE,MAAM,6BAA6D,MAAM;AAC9E,QAAM;AAAA,IACJ,OAAO;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,WAAW;AAAA,MACX;AAAA,MACA;AAAA,MACA,cAAc;AAAA,MACd;AAAA,IACF;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,IAAI,WAAW,qBAAqB;AAEpC,QAAM,YAAwC;AAAA,IAC5C,CAAC,MAAM;AACL,YAAM,mBAAmB,QAAQ,UAAU,CAAC,QAAQ,IAAI,SAAS,gBAAgB;AACjF,UAAI,qBAAqB;AAAI;AAE7B,YAAM,SAAS,QAAQ,gBAAgB;AAEvC,QAAE,gBAAgB;AAElB,UAAI,EAAE,SAAS,aAAa;AAC1B,UAAE,eAAe;AACjB,cAAM,gBAAgB,mBAAmB,SAAS,kBAAkB,kBAAkB;AACtF,4BAAoB,QAAQ,aAAa,EAAE,IAAI;AAC/C,6BAAqB,QAAQ,aAAa,EAAE,IAAI;AAAA,MAClD,WAAW,EAAE,SAAS,WAAW;AAC/B,UAAE,eAAe;AACjB,cAAM,gBAAgB,mBAAmB,SAAS,kBAAkB,oBAAoB,EAAE;AAC1F,4BAAoB,QAAQ,aAAa,EAAE,IAAI;AAC/C,6BAAqB,QAAQ,aAAa,EAAE,IAAI;AAAA,MAClD,WACE,EAAE,SAAS,gBACX,CAAC,WAAW,mBAAmB,EAAE,SAAS,OAAO,IAAI,KACrD,CAAC,eAAe,OAAO,IAAI,GAC3B;AACA,UAAE,eAAe;AACjB,wBAAgB,qBAAqB,SAAS,EAAE,GAAG,gBAAgB,CAAC,OAAO,IAAI,GAAG,KAAK,GAAG,MAAM,GAAG,QAAQ,CAAC;AAAA,MAC9G,WAAW,CAAC,SAAS,OAAO,EAAE,SAAS,EAAE,IAAI,GAAG;AAC9C,UAAE,eAAe;AACjB,cAAM,sBAAsB,EAAE,GAAG,gBAAgB;AACjD,4BAAoB,OAAO,IAAI,IAAI,CAAC,gBAAgB,OAAO,IAAI;AAC/D,YAAK,QAA8C;AAAU;AAC7D,sBAAc,qBAAqB,QAAQ,CAAC;AAC5C,YAAI,OAAO;AAAS,iBAAO,QAAQ,CAAC;AAAA,MACtC,WAAW,EAAE,SAAS,UAAU;AAC9B,uBAAe,CAAC;AAAA,MAClB,WAAW,EAAE,SAAS,QAAQ;AAC5B,cAAM,gBAAgB,mBAAmB,SAAS,QAAQ,SAAS,GAAG,kBAAkB;AACxF,4BAAoB,QAAQ,aAAa,EAAE,IAAI;AAC/C,6BAAqB,QAAQ,aAAa,EAAE,IAAI;AAAA,MAClD,WAAW,EAAE,SAAS,OAAO;AAC3B,cAAM,gBAAgB,mBAAmB,SAAS,GAAG,oBAAoB,EAAE;AAC3E,4BAAoB,QAAQ,aAAa,EAAE,IAAI;AAC/C,6BAAqB,QAAQ,aAAa,EAAE,IAAI;AAAA,MAClD;AACA,UAAI,OAAO;AAAW,eAAO,UAAU,CAAC;AACxC,oBAAc,CAAC;AAAA,IACjB;AAAA,IACA;AAAA,MACE;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAEA,QAAM,eAAwC;AAAA,IAC5C,CAAC,MAAwB;AACvB,UAAI,eAAe;AAAS,uBAAe,QAAQ,MAAM;AAAA;AACpD,yBAAiB,SAAS,MAAM;AACrC,uBAAiB,CAAC;AAAA,IACpB;AAAA,IACA,CAAC,gBAAgB,kBAAkB,gBAAgB;AAAA,EACrD;AACA,SAAO,EAAE,WAAW,cAAc,aAAa;AACjD;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
import { useCallback, useContext, useMemo } from "react";
|
|
3
|
+
import { useMakeMutable } from "@elliemae/ds-legacy-utilities";
|
|
4
|
+
import { DSDropdownMenuContext } from "../DropdownMenuContext.js";
|
|
5
|
+
import { manageOpenedSubmenus } from "../utils/index.js";
|
|
6
|
+
const useDropdownMenuItemHandlers = (option) => {
|
|
7
|
+
const {
|
|
8
|
+
props: {
|
|
9
|
+
options,
|
|
10
|
+
selectedOptions,
|
|
11
|
+
onOptionClick,
|
|
12
|
+
openedSubmenus,
|
|
13
|
+
onSubmenuToggle,
|
|
14
|
+
onMouseEnter,
|
|
15
|
+
onMouseLeave,
|
|
16
|
+
onMouseDown
|
|
17
|
+
},
|
|
18
|
+
listboxReference,
|
|
19
|
+
inputReference
|
|
20
|
+
} = useContext(DSDropdownMenuContext);
|
|
21
|
+
const mutableOption = useMakeMutable(option);
|
|
22
|
+
const mutableOptions = useMakeMutable(options);
|
|
23
|
+
const mutableOpenedSubmenus = useMakeMutable(openedSubmenus);
|
|
24
|
+
const mutableOnSubmenuToggle = useMakeMutable(onSubmenuToggle);
|
|
25
|
+
const mutableOnOptionClick = useMakeMutable(onOptionClick);
|
|
26
|
+
const mutableSelectedOptions = useMakeMutable(selectedOptions);
|
|
27
|
+
const onClick = useCallback(
|
|
28
|
+
(e) => {
|
|
29
|
+
e.stopPropagation();
|
|
30
|
+
e.preventDefault();
|
|
31
|
+
const nextSelectedOptions = { ...mutableSelectedOptions.current };
|
|
32
|
+
nextSelectedOptions[mutableOption.current.dsId] = !mutableSelectedOptions.current[mutableOption.current.dsId];
|
|
33
|
+
if (mutableOption?.current?.disabled)
|
|
34
|
+
return;
|
|
35
|
+
mutableOnOptionClick?.current?.(nextSelectedOptions, mutableOption.current, e);
|
|
36
|
+
if (e.type === "click")
|
|
37
|
+
mutableOption?.current?.onClick?.(e);
|
|
38
|
+
},
|
|
39
|
+
[mutableOnOptionClick, mutableOption, mutableSelectedOptions]
|
|
40
|
+
);
|
|
41
|
+
const onSubmenuOpen = useCallback(
|
|
42
|
+
(e) => {
|
|
43
|
+
mutableOnSubmenuToggle?.current?.(
|
|
44
|
+
manageOpenedSubmenus(
|
|
45
|
+
mutableOptions.current,
|
|
46
|
+
{ ...mutableOpenedSubmenus?.current || {}, [mutableOption.current.dsId]: true },
|
|
47
|
+
mutableOption.current
|
|
48
|
+
),
|
|
49
|
+
mutableOption.current,
|
|
50
|
+
e
|
|
51
|
+
);
|
|
52
|
+
},
|
|
53
|
+
[mutableOnSubmenuToggle, mutableOpenedSubmenus, mutableOption, mutableOptions]
|
|
54
|
+
);
|
|
55
|
+
const onSubmenuClose = useCallback(
|
|
56
|
+
(e) => {
|
|
57
|
+
mutableOnSubmenuToggle?.current?.(
|
|
58
|
+
manageOpenedSubmenus(
|
|
59
|
+
mutableOptions.current,
|
|
60
|
+
{ ...mutableOpenedSubmenus?.current || {}, [mutableOption.current.dsId]: false },
|
|
61
|
+
mutableOption.current
|
|
62
|
+
),
|
|
63
|
+
mutableOption.current,
|
|
64
|
+
e
|
|
65
|
+
);
|
|
66
|
+
if (inputReference.current)
|
|
67
|
+
inputReference.current.focus();
|
|
68
|
+
else
|
|
69
|
+
listboxReference.current?.focus();
|
|
70
|
+
},
|
|
71
|
+
[inputReference, listboxReference, mutableOnSubmenuToggle, mutableOpenedSubmenus, mutableOption, mutableOptions]
|
|
72
|
+
);
|
|
73
|
+
const onDropdownKeyDown = useCallback(
|
|
74
|
+
(e) => {
|
|
75
|
+
if (e.code === "ArrowLeft") {
|
|
76
|
+
onSubmenuClose(e);
|
|
77
|
+
e.preventDefault();
|
|
78
|
+
}
|
|
79
|
+
},
|
|
80
|
+
[onSubmenuClose]
|
|
81
|
+
);
|
|
82
|
+
return useMemo(
|
|
83
|
+
() => ({
|
|
84
|
+
onClick,
|
|
85
|
+
onSubmenuOpen,
|
|
86
|
+
onSubmenuClose,
|
|
87
|
+
onDropdownKeyDown,
|
|
88
|
+
onMouseEnter,
|
|
89
|
+
onMouseLeave,
|
|
90
|
+
onMouseDown
|
|
91
|
+
}),
|
|
92
|
+
[onClick, onSubmenuOpen, onSubmenuClose, onDropdownKeyDown, onMouseEnter, onMouseLeave, onMouseDown]
|
|
93
|
+
);
|
|
94
|
+
};
|
|
95
|
+
export {
|
|
96
|
+
useDropdownMenuItemHandlers
|
|
97
|
+
};
|
|
98
|
+
//# sourceMappingURL=useDropdownMenuItemHandlers.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../../scripts/build/transpile/react-shim.js", "../../../src/hooks/useDropdownMenuItemHandlers.tsx"],
|
|
4
|
+
"sourcesContent": ["import * as React from 'react';\nexport { React };\n", "import type React from 'react';\nimport { useCallback, useContext, useMemo } from 'react';\nimport { useMakeMutable } from '@elliemae/ds-legacy-utilities';\nimport { DSDropdownMenuContext } from '../DropdownMenuContext.js';\nimport { manageOpenedSubmenus } from '../utils/index.js';\nimport type { DSDropdownMenuT } from '../react-desc-prop-types.js';\n\ntype UseDropdownMenuItemHandlersType = (option: DSDropdownMenuT.Item) => {\n onClick: (e: React.MouseEvent | React.KeyboardEvent) => void;\n onSubmenuOpen: (e: React.MouseEvent | React.KeyboardEvent) => void;\n onSubmenuClose: (e: React.MouseEvent | React.KeyboardEvent) => void;\n onDropdownKeyDown: React.KeyboardEventHandler;\n onMouseEnter: React.MouseEventHandler;\n onMouseLeave: React.MouseEventHandler;\n};\n\nexport const useDropdownMenuItemHandlers: UseDropdownMenuItemHandlersType = (option) => {\n const {\n props: {\n options,\n selectedOptions,\n onOptionClick,\n openedSubmenus,\n onSubmenuToggle,\n onMouseEnter,\n onMouseLeave,\n onMouseDown,\n },\n listboxReference,\n inputReference,\n } = useContext(DSDropdownMenuContext);\n\n // it's vital for the opinionated onSubmenuOpen / onSubmenuClose to\n // - have access to the latest information about openedSubmenus\n // - be as \"pure\" as possible to guarantee that usage with the \"bridge\" pattern\n // will be as \"transparent\" as possible (if nested inside async code, redefing the callback may invoke a stale closure)\n // the whole component is kind of messy so I'm going to implement a quick and dirty solution\n // I'm going to make all the arguments for the callbacks \"mutable\",\n // this is sub-optimal on a performance level but will have to do for now\n const mutableOption = useMakeMutable(option);\n const mutableOptions = useMakeMutable(options);\n const mutableOpenedSubmenus = useMakeMutable(openedSubmenus);\n const mutableOnSubmenuToggle = useMakeMutable(onSubmenuToggle);\n const mutableOnOptionClick = useMakeMutable(onOptionClick);\n const mutableSelectedOptions = useMakeMutable(selectedOptions);\n\n // This callback is used on single / multi items to toggle the selection\n const onClick = useCallback(\n (e: React.MouseEvent | React.KeyboardEvent) => {\n e.stopPropagation();\n e.preventDefault();\n const nextSelectedOptions = { ...mutableSelectedOptions.current };\n nextSelectedOptions[mutableOption.current.dsId] = !mutableSelectedOptions.current[mutableOption.current.dsId];\n if ((mutableOption?.current as DSDropdownMenuT.ItemActionOptions)?.disabled) return; // prevent click when is disabled\n mutableOnOptionClick?.current?.(nextSelectedOptions, mutableOption.current, e);\n // we avoid invoking \"onClick\" twice when the users \"key-down - enter\" on the item by checking if the event is keyboard related\n if (e.type === 'click') mutableOption?.current?.onClick?.(e);\n },\n [mutableOnOptionClick, mutableOption, mutableSelectedOptions],\n );\n\n // This callback is used on submenu items to open it onMouseEnter\n const onSubmenuOpen = useCallback(\n (e: React.MouseEvent | React.KeyboardEvent) => {\n mutableOnSubmenuToggle?.current?.(\n manageOpenedSubmenus(\n mutableOptions.current,\n { ...(mutableOpenedSubmenus?.current || {}), [mutableOption.current.dsId]: true },\n mutableOption.current,\n ),\n mutableOption.current,\n e,\n );\n },\n [mutableOnSubmenuToggle, mutableOpenedSubmenus, mutableOption, mutableOptions],\n );\n\n // This callback is used on submenu to close it onMouseLeave\n const onSubmenuClose = useCallback(\n (e: React.MouseEvent | React.KeyboardEvent) => {\n mutableOnSubmenuToggle?.current?.(\n manageOpenedSubmenus(\n mutableOptions.current,\n { ...(mutableOpenedSubmenus?.current || {}), [mutableOption.current.dsId]: false },\n mutableOption.current,\n ),\n mutableOption.current,\n e,\n );\n if (inputReference.current) inputReference.current.focus();\n else listboxReference.current?.focus();\n },\n [inputReference, listboxReference, mutableOnSubmenuToggle, mutableOpenedSubmenus, mutableOption, mutableOptions],\n );\n\n // This callback is used on child dropdown to close the current opened submenu (which spawned it)\n const onDropdownKeyDown: React.KeyboardEventHandler = useCallback(\n (e) => {\n if (e.code === 'ArrowLeft') {\n onSubmenuClose(e);\n e.preventDefault();\n }\n },\n [onSubmenuClose],\n );\n\n return useMemo(\n () => ({\n onClick,\n onSubmenuOpen,\n onSubmenuClose,\n onDropdownKeyDown,\n onMouseEnter,\n onMouseLeave,\n onMouseDown,\n }),\n [onClick, onSubmenuOpen, onSubmenuClose, onDropdownKeyDown, onMouseEnter, onMouseLeave, onMouseDown],\n );\n};\n"],
|
|
5
|
+
"mappings": "AAAA,YAAY,WAAW;ACCvB,SAAS,aAAa,YAAY,eAAe;AACjD,SAAS,sBAAsB;AAC/B,SAAS,6BAA6B;AACtC,SAAS,4BAA4B;AAY9B,MAAM,8BAA+D,CAAC,WAAW;AACtF,QAAM;AAAA,IACJ,OAAO;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA;AAAA,IACA;AAAA,EACF,IAAI,WAAW,qBAAqB;AASpC,QAAM,gBAAgB,eAAe,MAAM;AAC3C,QAAM,iBAAiB,eAAe,OAAO;AAC7C,QAAM,wBAAwB,eAAe,cAAc;AAC3D,QAAM,yBAAyB,eAAe,eAAe;AAC7D,QAAM,uBAAuB,eAAe,aAAa;AACzD,QAAM,yBAAyB,eAAe,eAAe;AAG7D,QAAM,UAAU;AAAA,IACd,CAAC,MAA8C;AAC7C,QAAE,gBAAgB;AAClB,QAAE,eAAe;AACjB,YAAM,sBAAsB,EAAE,GAAG,uBAAuB,QAAQ;AAChE,0BAAoB,cAAc,QAAQ,IAAI,IAAI,CAAC,uBAAuB,QAAQ,cAAc,QAAQ,IAAI;AAC5G,UAAK,eAAe,SAA+C;AAAU;AAC7E,4BAAsB,UAAU,qBAAqB,cAAc,SAAS,CAAC;AAE7E,UAAI,EAAE,SAAS;AAAS,uBAAe,SAAS,UAAU,CAAC;AAAA,IAC7D;AAAA,IACA,CAAC,sBAAsB,eAAe,sBAAsB;AAAA,EAC9D;AAGA,QAAM,gBAAgB;AAAA,IACpB,CAAC,MAA8C;AAC7C,8BAAwB;AAAA,QACtB;AAAA,UACE,eAAe;AAAA,UACf,EAAE,GAAI,uBAAuB,WAAW,CAAC,GAAI,CAAC,cAAc,QAAQ,IAAI,GAAG,KAAK;AAAA,UAChF,cAAc;AAAA,QAChB;AAAA,QACA,cAAc;AAAA,QACd;AAAA,MACF;AAAA,IACF;AAAA,IACA,CAAC,wBAAwB,uBAAuB,eAAe,cAAc;AAAA,EAC/E;AAGA,QAAM,iBAAiB;AAAA,IACrB,CAAC,MAA8C;AAC7C,8BAAwB;AAAA,QACtB;AAAA,UACE,eAAe;AAAA,UACf,EAAE,GAAI,uBAAuB,WAAW,CAAC,GAAI,CAAC,cAAc,QAAQ,IAAI,GAAG,MAAM;AAAA,UACjF,cAAc;AAAA,QAChB;AAAA,QACA,cAAc;AAAA,QACd;AAAA,MACF;AACA,UAAI,eAAe;AAAS,uBAAe,QAAQ,MAAM;AAAA;AACpD,yBAAiB,SAAS,MAAM;AAAA,IACvC;AAAA,IACA,CAAC,gBAAgB,kBAAkB,wBAAwB,uBAAuB,eAAe,cAAc;AAAA,EACjH;AAGA,QAAM,oBAAgD;AAAA,IACpD,CAAC,MAAM;AACL,UAAI,EAAE,SAAS,aAAa;AAC1B,uBAAe,CAAC;AAChB,UAAE,eAAe;AAAA,MACnB;AAAA,IACF;AAAA,IACA,CAAC,cAAc;AAAA,EACjB;AAEA,SAAO;AAAA,IACL,OAAO;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,CAAC,SAAS,eAAe,gBAAgB,mBAAmB,cAAc,cAAc,WAAW;AAAA,EACrG;AACF;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
import { useContext, useMemo } from "react";
|
|
3
|
+
import { DSDropdownMenuContext } from "../DropdownMenuContext.js";
|
|
4
|
+
const useGetOptionSpecialAttributes = () => {
|
|
5
|
+
const {
|
|
6
|
+
props: { options }
|
|
7
|
+
} = useContext(DSDropdownMenuContext);
|
|
8
|
+
const optionsShouldHavePadding = useMemo(
|
|
9
|
+
() => options.some((option) => ["single", "checkbox", "singleWithSubmenu"].includes(option.type)),
|
|
10
|
+
[options]
|
|
11
|
+
);
|
|
12
|
+
return { optionsShouldHavePadding };
|
|
13
|
+
};
|
|
14
|
+
export {
|
|
15
|
+
useGetOptionSpecialAttributes
|
|
16
|
+
};
|
|
17
|
+
//# sourceMappingURL=useGetOptionSpecialAttributes.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../../scripts/build/transpile/react-shim.js", "../../../src/hooks/useGetOptionSpecialAttributes.tsx"],
|
|
4
|
+
"sourcesContent": ["import * as React from 'react';\nexport { React };\n", "import { useContext, useMemo } from 'react';\nimport { DSDropdownMenuContext } from '../DropdownMenuContext.js';\n\nexport const useGetOptionSpecialAttributes = () => {\n const {\n props: { options },\n } = useContext(DSDropdownMenuContext);\n\n const optionsShouldHavePadding = useMemo(\n () => options.some((option) => ['single', 'checkbox', 'singleWithSubmenu'].includes(option.type)),\n [options],\n );\n\n return { optionsShouldHavePadding };\n};\n"],
|
|
5
|
+
"mappings": "AAAA,YAAY,WAAW;ACAvB,SAAS,YAAY,eAAe;AACpC,SAAS,6BAA6B;AAE/B,MAAM,gCAAgC,MAAM;AACjD,QAAM;AAAA,IACJ,OAAO,EAAE,QAAQ;AAAA,EACnB,IAAI,WAAW,qBAAqB;AAEpC,QAAM,2BAA2B;AAAA,IAC/B,MAAM,QAAQ,KAAK,CAAC,WAAW,CAAC,UAAU,YAAY,mBAAmB,EAAE,SAAS,OAAO,IAAI,CAAC;AAAA,IAChG,CAAC,OAAO;AAAA,EACV;AAEA,SAAO,EAAE,yBAAyB;AACpC;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
import DSDropdownMenu from "./deprecated/index.js";
|
|
3
|
+
export * from "./DSDropdownMenu.js";
|
|
4
|
+
export * from "./exported-related/index.js";
|
|
5
|
+
import { DropdownMenuDataTestId } from "./DropdownMenuDataTestId.js";
|
|
6
|
+
import { DSDropdownMenu as DSDropdownMenu2, DropdownMenuWithSchema, CustomPhoneRenderer } from "./deprecated/index.js";
|
|
7
|
+
var src_default = DSDropdownMenu;
|
|
8
|
+
export {
|
|
9
|
+
CustomPhoneRenderer,
|
|
10
|
+
DSDropdownMenu2 as DSDropdownMenu,
|
|
11
|
+
DropdownMenuDataTestId,
|
|
12
|
+
DropdownMenuWithSchema,
|
|
13
|
+
src_default as default
|
|
14
|
+
};
|
|
15
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../scripts/build/transpile/react-shim.js", "../../src/index.tsx"],
|
|
4
|
+
"sourcesContent": ["import * as React from 'react';\nexport { React };\n", "import DSDropdownMenu from './deprecated/index.js';\nimport type {} from '@xstyled/system';\n\nexport * from './DSDropdownMenu.js';\nexport * from './exported-related/index.js';\nexport type { DSDropdownMenuT } from './react-desc-prop-types.js';\nexport { DropdownMenuDataTestId } from './DropdownMenuDataTestId.js';\n\n// Deprecated part\nexport { DSDropdownMenu, DropdownMenuWithSchema, CustomPhoneRenderer } from './deprecated/index.js';\nexport default DSDropdownMenu;\n"],
|
|
5
|
+
"mappings": "AAAA,YAAY,WAAW;ACAvB,OAAO,oBAAoB;AAG3B,cAAc;AACd,cAAc;AAEd,SAAS,8BAA8B;AAGvC,SAAS,kBAAAA,iBAAgB,wBAAwB,2BAA2B;AAC5E,IAAO,cAAQ;",
|
|
6
|
+
"names": ["DSDropdownMenu"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { useContext } from "react";
|
|
4
|
+
import { DSPopperJS } from "@elliemae/ds-legacy-popperjs";
|
|
5
|
+
import { useGetGlobalAttributes, useGetXstyledProps } from "@elliemae/ds-legacy-props-helpers";
|
|
6
|
+
import { DropdownMenuDataTestId } from "../DropdownMenuDataTestId.js";
|
|
7
|
+
import { StyledTriggerWrapper } from "../styled.js";
|
|
8
|
+
import { DropdownMenuListBox } from "./DropdownMenuListBox.js";
|
|
9
|
+
import { DSDropdownMenuContext } from "../DropdownMenuContext.js";
|
|
10
|
+
import { DropdownMenuLoading } from "./DropdownMenuLoading.js";
|
|
11
|
+
const DropdownMenuContent = () => {
|
|
12
|
+
const { props, triggerReferenceElement, setTriggerReferenceElement } = useContext(DSDropdownMenuContext);
|
|
13
|
+
const {
|
|
14
|
+
children,
|
|
15
|
+
isOpened,
|
|
16
|
+
onClickOutside,
|
|
17
|
+
startPlacementPreference,
|
|
18
|
+
placementOrderPreference,
|
|
19
|
+
customOffset,
|
|
20
|
+
wrapperStyles,
|
|
21
|
+
isLoading,
|
|
22
|
+
zIndex,
|
|
23
|
+
as
|
|
24
|
+
} = props;
|
|
25
|
+
const { "data-popover-label": dataPopoverLabel, ...globalAttributes } = useGetGlobalAttributes(props);
|
|
26
|
+
const { minWidth, minHeight, ...restXstyledProps } = useGetXstyledProps(props);
|
|
27
|
+
const onClickOutsideHandler = (e) => {
|
|
28
|
+
const dropdownListboxes = [
|
|
29
|
+
...document.body.querySelectorAll(`[data-testid="${DropdownMenuDataTestId.MENU_WRAPPER}"]`)
|
|
30
|
+
];
|
|
31
|
+
if (dropdownListboxes.every((listbox) => !listbox.contains(e.target))) {
|
|
32
|
+
onClickOutside(e);
|
|
33
|
+
}
|
|
34
|
+
};
|
|
35
|
+
return /* @__PURE__ */ jsxs(
|
|
36
|
+
StyledTriggerWrapper,
|
|
37
|
+
{
|
|
38
|
+
"data-testid": `${DropdownMenuDataTestId.TRIGGER_WRAPPER}`,
|
|
39
|
+
ref: setTriggerReferenceElement,
|
|
40
|
+
"aria-haspopup": "listbox",
|
|
41
|
+
...wrapperStyles,
|
|
42
|
+
...globalAttributes,
|
|
43
|
+
...restXstyledProps,
|
|
44
|
+
as,
|
|
45
|
+
children: [
|
|
46
|
+
children,
|
|
47
|
+
triggerReferenceElement && /* @__PURE__ */ jsx(
|
|
48
|
+
DSPopperJS,
|
|
49
|
+
{
|
|
50
|
+
referenceElement: triggerReferenceElement,
|
|
51
|
+
showPopover: isOpened,
|
|
52
|
+
withoutArrow: true,
|
|
53
|
+
withoutAnimation: true,
|
|
54
|
+
customOffset,
|
|
55
|
+
onClickOutside: onClickOutsideHandler,
|
|
56
|
+
startPlacementPreference,
|
|
57
|
+
placementOrderPreference,
|
|
58
|
+
zIndex,
|
|
59
|
+
"aria-label": dataPopoverLabel || "dropdown-menu popover",
|
|
60
|
+
children: isLoading ? /* @__PURE__ */ jsx(DropdownMenuLoading, {}) : /* @__PURE__ */ jsx(DropdownMenuListBox, {})
|
|
61
|
+
}
|
|
62
|
+
)
|
|
63
|
+
]
|
|
64
|
+
}
|
|
65
|
+
);
|
|
66
|
+
};
|
|
67
|
+
export {
|
|
68
|
+
DropdownMenuContent
|
|
69
|
+
};
|
|
70
|
+
//# sourceMappingURL=DropdownMenuContent.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../../scripts/build/transpile/react-shim.js", "../../../src/parts/DropdownMenuContent.tsx"],
|
|
4
|
+
"sourcesContent": ["import * as React from 'react';\nexport { React };\n", "/* eslint-disable no-unused-vars */\nimport React, { useContext } from 'react';\nimport { DSPopperJS } from '@elliemae/ds-legacy-popperjs';\nimport { useGetGlobalAttributes, useGetXstyledProps } from '@elliemae/ds-legacy-props-helpers';\nimport { DropdownMenuDataTestId } from '../DropdownMenuDataTestId.js';\nimport { StyledTriggerWrapper } from '../styled.js';\nimport { DropdownMenuListBox } from './DropdownMenuListBox.js';\nimport { DSDropdownMenuContext } from '../DropdownMenuContext.js';\nimport { DropdownMenuLoading } from './DropdownMenuLoading.js';\n\nexport const DropdownMenuContent: React.ComponentType<Record<string, never>> = () => {\n const { props, triggerReferenceElement, setTriggerReferenceElement } = useContext(DSDropdownMenuContext);\n\n const {\n children,\n isOpened,\n onClickOutside,\n startPlacementPreference,\n placementOrderPreference,\n customOffset,\n wrapperStyles,\n isLoading,\n zIndex,\n as,\n } = props;\n const { 'data-popover-label': dataPopoverLabel, ...globalAttributes } = useGetGlobalAttributes(props);\n // we need to exclude this props from the xstyled props because there is a conflict\n // using submenus items with the name of the prop of ddmenu and xstyled\n const { minWidth, minHeight, ...restXstyledProps } = useGetXstyledProps(props);\n const onClickOutsideHandler = (e: MouseEvent | TouchEvent) => {\n // We need to find out if the click was originated inside a child's dropdownmenu\n const dropdownListboxes = [\n ...document.body.querySelectorAll(`[data-testid=\"${DropdownMenuDataTestId.MENU_WRAPPER}\"]`),\n ];\n if (dropdownListboxes.every((listbox) => !listbox.contains(e.target as Node))) {\n onClickOutside(e);\n }\n };\n\n return (\n <StyledTriggerWrapper\n data-testid={`${DropdownMenuDataTestId.TRIGGER_WRAPPER}`}\n ref={setTriggerReferenceElement}\n aria-haspopup=\"listbox\"\n {...wrapperStyles}\n {...globalAttributes}\n {...restXstyledProps}\n as={as}\n >\n {children}\n {triggerReferenceElement && (\n <DSPopperJS\n referenceElement={triggerReferenceElement}\n showPopover={isOpened}\n withoutArrow\n withoutAnimation\n customOffset={customOffset}\n onClickOutside={onClickOutsideHandler}\n startPlacementPreference={startPlacementPreference}\n placementOrderPreference={placementOrderPreference}\n zIndex={zIndex}\n aria-label={(dataPopoverLabel as string) || 'dropdown-menu popover'}\n >\n {isLoading ? <DropdownMenuLoading /> : <DropdownMenuListBox />}\n </DSPopperJS>\n )}\n </StyledTriggerWrapper>\n );\n};\n"],
|
|
5
|
+
"mappings": "AAAA,YAAY,WAAW;ACwCnB,SAuBmB,KAvBnB;AAvCJ,SAAgB,kBAAkB;AAClC,SAAS,kBAAkB;AAC3B,SAAS,wBAAwB,0BAA0B;AAC3D,SAAS,8BAA8B;AACvC,SAAS,4BAA4B;AACrC,SAAS,2BAA2B;AACpC,SAAS,6BAA6B;AACtC,SAAS,2BAA2B;AAE7B,MAAM,sBAAkE,MAAM;AACnF,QAAM,EAAE,OAAO,yBAAyB,2BAA2B,IAAI,WAAW,qBAAqB;AAEvG,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,IAAI;AACJ,QAAM,EAAE,sBAAsB,kBAAkB,GAAG,iBAAiB,IAAI,uBAAuB,KAAK;AAGpG,QAAM,EAAE,UAAU,WAAW,GAAG,iBAAiB,IAAI,mBAAmB,KAAK;AAC7E,QAAM,wBAAwB,CAAC,MAA+B;AAE5D,UAAM,oBAAoB;AAAA,MACxB,GAAG,SAAS,KAAK,iBAAiB,iBAAiB,uBAAuB,gBAAgB;AAAA,IAC5F;AACA,QAAI,kBAAkB,MAAM,CAAC,YAAY,CAAC,QAAQ,SAAS,EAAE,MAAc,CAAC,GAAG;AAC7E,qBAAe,CAAC;AAAA,IAClB;AAAA,EACF;AAEA,SACE;AAAA,IAAC;AAAA;AAAA,MACC,eAAa,GAAG,uBAAuB;AAAA,MACvC,KAAK;AAAA,MACL,iBAAc;AAAA,MACb,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,MACJ;AAAA,MAEC;AAAA;AAAA,QACA,2BACC;AAAA,UAAC;AAAA;AAAA,YACC,kBAAkB;AAAA,YAClB,aAAa;AAAA,YACb,cAAY;AAAA,YACZ,kBAAgB;AAAA,YAChB;AAAA,YACA,gBAAgB;AAAA,YAChB;AAAA,YACA;AAAA,YACA;AAAA,YACA,cAAa,oBAA+B;AAAA,YAE3C,sBAAY,oBAAC,uBAAoB,IAAK,oBAAC,uBAAoB;AAAA;AAAA,QAC9D;AAAA;AAAA;AAAA,EAEJ;AAEJ;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
import { jsx } from "react/jsx-runtime";
|
|
3
|
+
import { StyledEmptyStateWrapper } from "../styled.js";
|
|
4
|
+
const DropdownMenuEmptyState = (props) => /* @__PURE__ */ jsx(StyledEmptyStateWrapper, { px: "xxs", py: "xxxs", role: "alert", ...props, children: "No content available" });
|
|
5
|
+
export {
|
|
6
|
+
DropdownMenuEmptyState
|
|
7
|
+
};
|
|
8
|
+
//# sourceMappingURL=DropdownMenuEmptyState.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../../scripts/build/transpile/react-shim.js", "../../../src/parts/DropdownMenuEmptyState.tsx"],
|
|
4
|
+
"sourcesContent": ["import * as React from 'react';\nexport { React };\n", "import React from 'react';\nimport { StyledEmptyStateWrapper } from '../styled.js';\nimport type { SizingProps } from '@elliemae/ds-legacy-system';\n\ninterface DropdownMenuEmptyStateProps {\n minWidth: SizingProps['minWidth'];\n maxHeight: SizingProps['maxHeight'];\n}\nexport const DropdownMenuEmptyState: React.FC<DropdownMenuEmptyStateProps> = (props) => (\n <StyledEmptyStateWrapper px=\"xxs\" py=\"xxxs\" role=\"alert\" {...props}>\n No content available\n </StyledEmptyStateWrapper>\n);\n"],
|
|
5
|
+
"mappings": "AAAA,YAAY,WAAW;ACSrB;AARF,SAAS,+BAA+B;AAOjC,MAAM,yBAAgE,CAAC,UAC5E,oBAAC,2BAAwB,IAAG,OAAM,IAAG,QAAO,MAAK,SAAS,GAAG,OAAO,kCAEpE;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|