@elliemae/ds-menu-button 3.46.0-rc.1 → 3.46.0-rc.10

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.
Files changed (127) hide show
  1. package/dist/cjs/config/useMenuButton.js +10 -19
  2. package/dist/cjs/config/useMenuButton.js.map +2 -2
  3. package/dist/cjs/config/useSplitInherithedProps.js +33 -15
  4. package/dist/cjs/config/useSplitInherithedProps.js.map +2 -2
  5. package/dist/cjs/index.js +2 -0
  6. package/dist/cjs/index.js.map +2 -2
  7. package/dist/cjs/parts/DSFlyoutMenu/DSFlyoutMenu.js +36 -12
  8. package/dist/cjs/parts/DSFlyoutMenu/DSFlyoutMenu.js.map +3 -3
  9. package/dist/cjs/parts/DSFlyoutMenu/react-desc-prop-types.js +1 -1
  10. package/dist/cjs/parts/DSFlyoutMenu/react-desc-prop-types.js.map +3 -3
  11. package/dist/cjs/parts/DSMenuBehaviouralContextProvider/config/useAdvancedValidation.js +86 -0
  12. package/dist/cjs/parts/DSMenuBehaviouralContextProvider/config/useAdvancedValidation.js.map +7 -0
  13. package/dist/cjs/parts/DSMenuBehaviouralContextProvider/config/useFocusTracker.js +40 -30
  14. package/dist/cjs/parts/DSMenuBehaviouralContextProvider/config/useFocusTracker.js.map +2 -2
  15. package/dist/cjs/parts/DSMenuBehaviouralContextProvider/config/useMenuBehaviouralContextProvider.js +2 -0
  16. package/dist/cjs/parts/DSMenuBehaviouralContextProvider/config/useMenuBehaviouralContextProvider.js.map +2 -2
  17. package/dist/cjs/parts/DSMenuBehaviouralContextProvider/config/useMenuItemEventsHandlers.js +77 -33
  18. package/dist/cjs/parts/DSMenuBehaviouralContextProvider/config/useMenuItemEventsHandlers.js.map +2 -2
  19. package/dist/cjs/parts/DSMenuBehaviouralContextProvider/react-desc-prop-types.js +3 -0
  20. package/dist/cjs/parts/DSMenuBehaviouralContextProvider/react-desc-prop-types.js.map +2 -2
  21. package/dist/cjs/parts/DSMenuBehaviouralContextProvider/utils/multipleSelectionHelpers.js +14 -14
  22. package/dist/cjs/parts/DSMenuBehaviouralContextProvider/utils/multipleSelectionHelpers.js.map +1 -1
  23. package/dist/cjs/parts/DSMenuBehaviouralContextProvider/utils/singleSelectionHelpers.js +2 -2
  24. package/dist/cjs/parts/DSMenuBehaviouralContextProvider/utils/singleSelectionHelpers.js.map +1 -1
  25. package/dist/cjs/parts/DSMenuItemRendererFactory/ActivableMenuItem.js +13 -9
  26. package/dist/cjs/parts/DSMenuItemRendererFactory/ActivableMenuItem.js.map +2 -2
  27. package/dist/cjs/parts/DSMenuItemRendererFactory/ActivableWithSubmenuMenuItem.js +13 -9
  28. package/dist/cjs/parts/DSMenuItemRendererFactory/ActivableWithSubmenuMenuItem.js.map +2 -2
  29. package/dist/cjs/parts/DSMenuItemRendererFactory/DSMenuItemRendererFactory.js +10 -9
  30. package/dist/cjs/parts/DSMenuItemRendererFactory/DSMenuItemRendererFactory.js.map +2 -2
  31. package/dist/cjs/parts/DSMenuItemRendererFactory/MultipleSelectMenuItem.js +15 -11
  32. package/dist/cjs/parts/DSMenuItemRendererFactory/MultipleSelectMenuItem.js.map +2 -2
  33. package/dist/cjs/parts/DSMenuItemRendererFactory/MultipleSelectWithSubmenuMenuItem.js +18 -12
  34. package/dist/cjs/parts/DSMenuItemRendererFactory/MultipleSelectWithSubmenuMenuItem.js.map +2 -2
  35. package/dist/cjs/parts/DSMenuItemRendererFactory/SingleSelectMenuItem.js +15 -11
  36. package/dist/cjs/parts/DSMenuItemRendererFactory/SingleSelectMenuItem.js.map +2 -2
  37. package/dist/cjs/parts/DSMenuItemRendererFactory/SingleSelectWithSubmenuMenuItem.js +15 -11
  38. package/dist/cjs/parts/DSMenuItemRendererFactory/SingleSelectWithSubmenuMenuItem.js.map +2 -2
  39. package/dist/cjs/parts/DSMenuItemRendererFactory/SkeletonMenuItem.js +112 -0
  40. package/dist/cjs/parts/DSMenuItemRendererFactory/SkeletonMenuItem.js.map +7 -0
  41. package/dist/cjs/parts/DSMenuItemRendererFactory/WithSubmenuMenuItem.js +13 -9
  42. package/dist/cjs/parts/DSMenuItemRendererFactory/WithSubmenuMenuItem.js.map +2 -2
  43. package/dist/cjs/parts/DSMenuItemRendererFactory/config/useMenuItemRendererFactory.js +1 -1
  44. package/dist/cjs/parts/DSMenuItemRendererFactory/config/useMenuItemRendererFactory.js.map +2 -2
  45. package/dist/cjs/parts/DSMenuItemRendererFactory/focusNodeRacingConditionSolved.js +43 -0
  46. package/dist/cjs/parts/DSMenuItemRendererFactory/focusNodeRacingConditionSolved.js.map +7 -0
  47. package/dist/cjs/parts/DSMenuItemRendererFactory/react-desc-prop-types.js.map +2 -2
  48. package/dist/cjs/parts/DSOpinionatedButton/react-desc-prop-types.js.map +2 -2
  49. package/dist/cjs/react-desc-prop-types.js +16 -15
  50. package/dist/cjs/react-desc-prop-types.js.map +2 -2
  51. package/dist/cjs/utils/nodesTypeguardsAndGetters.js +18 -56
  52. package/dist/cjs/utils/nodesTypeguardsAndGetters.js.map +2 -2
  53. package/dist/cjs/utils/useOptionsArrayToDsTree.js +10 -3
  54. package/dist/cjs/utils/useOptionsArrayToDsTree.js.map +2 -2
  55. package/dist/esm/config/useMenuButton.js +11 -20
  56. package/dist/esm/config/useMenuButton.js.map +2 -2
  57. package/dist/esm/config/useSplitInherithedProps.js +33 -15
  58. package/dist/esm/config/useSplitInherithedProps.js.map +2 -2
  59. package/dist/esm/index.js +2 -0
  60. package/dist/esm/index.js.map +2 -2
  61. package/dist/esm/parts/DSFlyoutMenu/DSFlyoutMenu.js +34 -10
  62. package/dist/esm/parts/DSFlyoutMenu/DSFlyoutMenu.js.map +2 -2
  63. package/dist/esm/parts/DSFlyoutMenu/react-desc-prop-types.js +1 -4
  64. package/dist/esm/parts/DSFlyoutMenu/react-desc-prop-types.js.map +2 -2
  65. package/dist/esm/parts/DSMenuBehaviouralContextProvider/config/useAdvancedValidation.js +56 -0
  66. package/dist/esm/parts/DSMenuBehaviouralContextProvider/config/useAdvancedValidation.js.map +7 -0
  67. package/dist/esm/parts/DSMenuBehaviouralContextProvider/config/useFocusTracker.js +40 -30
  68. package/dist/esm/parts/DSMenuBehaviouralContextProvider/config/useFocusTracker.js.map +2 -2
  69. package/dist/esm/parts/DSMenuBehaviouralContextProvider/config/useMenuBehaviouralContextProvider.js +2 -0
  70. package/dist/esm/parts/DSMenuBehaviouralContextProvider/config/useMenuBehaviouralContextProvider.js.map +2 -2
  71. package/dist/esm/parts/DSMenuBehaviouralContextProvider/config/useMenuItemEventsHandlers.js +77 -33
  72. package/dist/esm/parts/DSMenuBehaviouralContextProvider/config/useMenuItemEventsHandlers.js.map +2 -2
  73. package/dist/esm/parts/DSMenuBehaviouralContextProvider/react-desc-prop-types.js +3 -0
  74. package/dist/esm/parts/DSMenuBehaviouralContextProvider/react-desc-prop-types.js.map +2 -2
  75. package/dist/esm/parts/DSMenuBehaviouralContextProvider/utils/multipleSelectionHelpers.js +14 -14
  76. package/dist/esm/parts/DSMenuBehaviouralContextProvider/utils/multipleSelectionHelpers.js.map +1 -1
  77. package/dist/esm/parts/DSMenuBehaviouralContextProvider/utils/singleSelectionHelpers.js +2 -2
  78. package/dist/esm/parts/DSMenuBehaviouralContextProvider/utils/singleSelectionHelpers.js.map +1 -1
  79. package/dist/esm/parts/DSMenuItemRendererFactory/ActivableMenuItem.js +13 -9
  80. package/dist/esm/parts/DSMenuItemRendererFactory/ActivableMenuItem.js.map +2 -2
  81. package/dist/esm/parts/DSMenuItemRendererFactory/ActivableWithSubmenuMenuItem.js +13 -9
  82. package/dist/esm/parts/DSMenuItemRendererFactory/ActivableWithSubmenuMenuItem.js.map +2 -2
  83. package/dist/esm/parts/DSMenuItemRendererFactory/DSMenuItemRendererFactory.js +19 -18
  84. package/dist/esm/parts/DSMenuItemRendererFactory/DSMenuItemRendererFactory.js.map +2 -2
  85. package/dist/esm/parts/DSMenuItemRendererFactory/MultipleSelectMenuItem.js +15 -11
  86. package/dist/esm/parts/DSMenuItemRendererFactory/MultipleSelectMenuItem.js.map +2 -2
  87. package/dist/esm/parts/DSMenuItemRendererFactory/MultipleSelectWithSubmenuMenuItem.js +18 -12
  88. package/dist/esm/parts/DSMenuItemRendererFactory/MultipleSelectWithSubmenuMenuItem.js.map +2 -2
  89. package/dist/esm/parts/DSMenuItemRendererFactory/SingleSelectMenuItem.js +15 -11
  90. package/dist/esm/parts/DSMenuItemRendererFactory/SingleSelectMenuItem.js.map +2 -2
  91. package/dist/esm/parts/DSMenuItemRendererFactory/SingleSelectWithSubmenuMenuItem.js +15 -11
  92. package/dist/esm/parts/DSMenuItemRendererFactory/SingleSelectWithSubmenuMenuItem.js.map +2 -2
  93. package/dist/esm/parts/DSMenuItemRendererFactory/SkeletonMenuItem.js +82 -0
  94. package/dist/esm/parts/DSMenuItemRendererFactory/SkeletonMenuItem.js.map +7 -0
  95. package/dist/esm/parts/DSMenuItemRendererFactory/WithSubmenuMenuItem.js +13 -9
  96. package/dist/esm/parts/DSMenuItemRendererFactory/WithSubmenuMenuItem.js.map +2 -2
  97. package/dist/esm/parts/DSMenuItemRendererFactory/config/useMenuItemRendererFactory.js +1 -1
  98. package/dist/esm/parts/DSMenuItemRendererFactory/config/useMenuItemRendererFactory.js.map +2 -2
  99. package/dist/esm/parts/DSMenuItemRendererFactory/focusNodeRacingConditionSolved.js +13 -0
  100. package/dist/esm/parts/DSMenuItemRendererFactory/focusNodeRacingConditionSolved.js.map +7 -0
  101. package/dist/esm/parts/DSMenuItemRendererFactory/react-desc-prop-types.js.map +2 -2
  102. package/dist/esm/parts/DSOpinionatedButton/react-desc-prop-types.js +1 -1
  103. package/dist/esm/parts/DSOpinionatedButton/react-desc-prop-types.js.map +2 -2
  104. package/dist/esm/react-desc-prop-types.js +16 -15
  105. package/dist/esm/react-desc-prop-types.js.map +2 -2
  106. package/dist/esm/utils/nodesTypeguardsAndGetters.js +18 -56
  107. package/dist/esm/utils/nodesTypeguardsAndGetters.js.map +2 -2
  108. package/dist/esm/utils/useOptionsArrayToDsTree.js +10 -3
  109. package/dist/esm/utils/useOptionsArrayToDsTree.js.map +2 -2
  110. package/dist/types/config/useSplitInherithedProps.d.ts +8 -9
  111. package/dist/types/index.d.ts +1 -1
  112. package/dist/types/parts/DSFlyoutMenu/react-desc-prop-types.d.ts +1 -1
  113. package/dist/types/parts/DSMenuBehaviouralContextProvider/config/useAdvancedValidation.d.ts +6 -0
  114. package/dist/types/parts/DSMenuBehaviouralContextProvider/config/useFocusTracker.d.ts +6 -6
  115. package/dist/types/parts/DSMenuBehaviouralContextProvider/config/useMenuItemEventsHandlers.d.ts +2 -1
  116. package/dist/types/parts/DSMenuBehaviouralContextProvider/react-desc-prop-types.d.ts +1 -0
  117. package/dist/types/parts/DSMenuBehaviouralContextProvider/utils/multipleSelectionHelpers.d.ts +3 -3
  118. package/dist/types/parts/DSMenuBehaviouralContextProvider/utils/singleSelectionHelpers.d.ts +2 -2
  119. package/dist/types/parts/DSMenuItemRendererFactory/SkeletonMenuItem.d.ts +5 -0
  120. package/dist/types/parts/DSMenuItemRendererFactory/focusNodeRacingConditionSolved.d.ts +2 -0
  121. package/dist/types/parts/DSMenuItemRendererFactory/react-desc-prop-types.d.ts +2 -2
  122. package/dist/types/parts/DSOpinionatedButton/config/useOpinionatedButton.d.ts +1 -1
  123. package/dist/types/parts/DSOpinionatedButton/react-desc-prop-types.d.ts +1 -1
  124. package/dist/types/react-desc-prop-types.d.ts +23 -17
  125. package/dist/types/utils/nodesTypeguardsAndGetters.d.ts +113 -1
  126. package/dist/types/utils/useOptionsArrayToDsTree.d.ts +2 -1
  127. package/package.json +12 -13
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../scripts/build/transpile/react-shim.js", "../../../src/utils/useOptionsArrayToDsTree.ts"],
4
- "sourcesContent": ["import * as React from 'react';\nexport { React };\n", "import React from 'react';\nimport { useDSTree } from '@elliemae/ds-tree-model';\nimport type { UseDSTreeT } from '@elliemae/ds-tree-model';\nimport { type DSMenuButtonT } from '../react-desc-prop-types.js';\n\nconst useDsTreeOpts: UseDSTreeT.SecondParameter<DSMenuButtonT.MenuItemInterface> = {\n getUniqueId: (item) => item.dsId,\n};\n\ntype UseOptionsArrayToDsTreeRootNodeConfig = {\n options: DSMenuButtonT.MenuItemInterface[];\n instanceUid: string;\n};\n\ntype RootNodeType = UseDSTreeT.Item<DSMenuButtonT.MenuItemInterface>;\n\nexport const useOptionsArrayToDsTree = ({ options, instanceUid }: UseOptionsArrayToDsTreeRootNodeConfig) => {\n // we need to create the root node that the app dev doesn't need to worry about\n const rootNode = React.useMemo<RootNodeType>(\n () =>\n ({\n dsId: `root-${instanceUid}`,\n type: 'ROOT_ITEM',\n subitems: options,\n // as unknown as RootNodeType is because currently\n // the DS tree model doesn't support the type of the root node being different from the subitems\n // in practice, this is fine because the root node is never rendered & the subitems are the only thing that matters\n // will be addresssed via PUI-XXXX\n }) as unknown as RootNodeType,\n [instanceUid, options],\n );\n return useDSTree<DSMenuButtonT.MenuItemInterface>(rootNode, useDsTreeOpts);\n};\n"],
5
- "mappings": "AAAA,YAAY,WAAW;ACAvB,OAAOA,YAAW;AAClB,SAAS,iBAAiB;AAI1B,MAAM,gBAA6E;AAAA,EACjF,aAAa,CAAC,SAAS,KAAK;AAC9B;AASO,MAAM,0BAA0B,CAAC,EAAE,SAAS,YAAY,MAA6C;AAE1G,QAAM,WAAWA,OAAM;AAAA,IACrB,OACG;AAAA,MACC,MAAM,QAAQ,WAAW;AAAA,MACzB,MAAM;AAAA,MACN,UAAU;AAAA;AAAA;AAAA;AAAA;AAAA,IAKZ;AAAA,IACF,CAAC,aAAa,OAAO;AAAA,EACvB;AACA,SAAO,UAA2C,UAAU,aAAa;AAC3E;",
4
+ "sourcesContent": ["import * as React from 'react';\nexport { React };\n", "import React from 'react';\nimport { useDSTree } from '@elliemae/ds-tree-model';\nimport type { UseDSTreeT } from '@elliemae/ds-tree-model';\nimport { type DSMenuButtonT, menuSpecificDefaultProps } from '../react-desc-prop-types.js';\n\nconst useDsTreeOpts: UseDSTreeT.SecondParameter<DSMenuButtonT.MenuItemInterface> = {\n getUniqueId: (item) => item.dsId,\n};\n\ntype UseOptionsArrayToDsTreeRootNodeConfig = {\n options: DSMenuButtonT.MenuItemInterface[];\n instanceUid: string;\n propsWithDefault?: DSMenuButtonT.MenuSpecifiDefaultProps;\n};\n\ntype RootNodeType = UseDSTreeT.Item<DSMenuButtonT.MenuItemInterface>;\n\nexport const useOptionsArrayToDsTree = ({\n options,\n instanceUid,\n propsWithDefault,\n}: UseOptionsArrayToDsTreeRootNodeConfig) => {\n const { maxHeight } = propsWithDefault || menuSpecificDefaultProps;\n // we need to create the root node that the app dev doesn't need to worry about\n const rootNode = React.useMemo<RootNodeType>(\n () =>\n ({\n dsId: `root-${instanceUid}`,\n type: 'ROOT_ITEM',\n subitems: options,\n maxHeight,\n // as unknown as RootNodeType is because currently\n // the DS tree model doesn't support the type of the root node being different from the subitems\n // in practice, this is fine because the root node is never rendered & the subitems are the only thing that matters\n // will be addresssed via PUI-XXXX\n }) as unknown as RootNodeType,\n [instanceUid, maxHeight, options],\n );\n return useDSTree<DSMenuButtonT.MenuItemInterface>(rootNode, useDsTreeOpts);\n};\n"],
5
+ "mappings": "AAAA,YAAY,WAAW;ACAvB,OAAOA,YAAW;AAClB,SAAS,iBAAiB;AAE1B,SAA6B,gCAAgC;AAE7D,MAAM,gBAA6E;AAAA,EACjF,aAAa,CAAC,SAAS,KAAK;AAC9B;AAUO,MAAM,0BAA0B,CAAC;AAAA,EACtC;AAAA,EACA;AAAA,EACA;AACF,MAA6C;AAC3C,QAAM,EAAE,UAAU,IAAI,oBAAoB;AAE1C,QAAM,WAAWA,OAAM;AAAA,IACrB,OACG;AAAA,MACC,MAAM,QAAQ,WAAW;AAAA,MACzB,MAAM;AAAA,MACN,UAAU;AAAA,MACV;AAAA;AAAA;AAAA;AAAA;AAAA,IAKF;AAAA,IACF,CAAC,aAAa,WAAW,OAAO;AAAA,EAClC;AACA,SAAO,UAA2C,UAAU,aAAa;AAC3E;",
6
6
  "names": ["React"]
7
7
  }
@@ -8,21 +8,21 @@ type UseSplitInherithedPropsConfig = {
8
8
  export declare const useSplitInherithedProps: ({ propsWithDefault, focusableNodes, treeRootNode, }: UseSplitInherithedPropsConfig) => {
9
9
  menuBehaviouralLayerProps: {
10
10
  buttonDOMNodeRef: React.MutableRefObject<HTMLElement | null>;
11
- selectedItems: DSMenuButtonT.SelectionableMenuNodes[];
11
+ selectedNodes: DSMenuButtonT.SelectionableMenuNodes[];
12
12
  focusableNodes: DSMenuButtonT.PseudoFocusableMenuNodes[];
13
13
  optionsTree: DSMenuButtonT.MenuNode;
14
14
  onDisplayedSubmenuChange: ((newOpenedItems: DSMenuButtonT.WithSubmenuMenuNodes[], metainfo: {
15
15
  itemNode: DSMenuButtonT.PseudoFocusableMenuNodes | null;
16
- event?: React.SyntheticEvent<Element, Event> | TouchEvent | FocusEvent | undefined;
16
+ event?: TouchEvent | React.SyntheticEvent<Element, Event> | FocusEvent | undefined;
17
17
  }) => void | import("@elliemae/ds-typescript-helpers").TypescriptHelpersT.StateSetter<DSMenuButtonT.WithSubmenuMenuNodes[]>) | undefined;
18
- onItemSelected: (newSelection: DSMenuButtonT.SelectionableMenuNodes[], metainfo: {
18
+ onItemSelected: ((newSelection: DSMenuButtonT.SelectionableMenuNodes[], metainfo: {
19
19
  itemNode: DSMenuButtonT.SelectionableMenuNodes;
20
20
  event?: React.SyntheticEvent<Element, Event> | undefined;
21
- }) => void | import("@elliemae/ds-typescript-helpers").TypescriptHelpersT.StateSetter<DSMenuButtonT.SelectionableMenuNodes[]>;
22
- onActivateItem: (itemNode: DSMenuButtonT.PseudoFocusableMenuNodes, metainfo: {
21
+ }) => void | import("@elliemae/ds-typescript-helpers").TypescriptHelpersT.StateSetter<DSMenuButtonT.SelectionableMenuNodes[]>) | undefined;
22
+ onActivateItem: ((itemNode: DSMenuButtonT.PseudoFocusableMenuNodes, metainfo: {
23
23
  itemNode: DSMenuButtonT.PseudoFocusableMenuNodes;
24
24
  event?: React.SyntheticEvent<Element, Event> | undefined;
25
- }) => void;
25
+ }) => void) | undefined;
26
26
  onOpen: (() => void) | undefined;
27
27
  onClose: (() => void) | undefined;
28
28
  };
@@ -36,7 +36,6 @@ export declare const useSplitInherithedProps: ({ propsWithDefault, focusableNode
36
36
  onSubmenuToggle: (nextOpenedSubmenus: Record<string, boolean>, submenu: DSMenuButtonT.MenuItemInterface, e: React.MouseEvent<Element, MouseEvent> | React.KeyboardEvent<Element>) => void;
37
37
  isLoading: boolean;
38
38
  isSkeleton: boolean;
39
- selectedOptions: Record<string, boolean>;
40
39
  ItemRenderer: DSMenuButtonT.ItemRendererT | undefined;
41
40
  };
42
41
  type?: import("@elliemae/ds-button-v2").DSButtonT.HTMLButtonTypeProp | undefined;
@@ -276,6 +275,7 @@ export declare const useSplitInherithedProps: ({ propsWithDefault, focusableNode
276
275
  contextMenu?: string | undefined;
277
276
  dir?: string | undefined;
278
277
  draggable?: (boolean | "true" | "false") | undefined;
278
+ enterKeyHint?: "enter" | "done" | "go" | "next" | "previous" | "search" | "send" | undefined;
279
279
  hidden?: boolean | undefined;
280
280
  id?: string | undefined;
281
281
  lang?: string | undefined;
@@ -311,7 +311,7 @@ export declare const useSplitInherithedProps: ({ propsWithDefault, focusableNode
311
311
  results?: number | undefined;
312
312
  security?: string | undefined;
313
313
  unselectable?: "on" | "off" | undefined;
314
- inputMode?: "none" | "search" | "text" | "tel" | "url" | "email" | "numeric" | "decimal" | undefined;
314
+ inputMode?: "search" | "none" | "text" | "tel" | "url" | "email" | "numeric" | "decimal" | undefined;
315
315
  is?: string | undefined;
316
316
  accept?: string | undefined;
317
317
  acceptCharset?: string | undefined;
@@ -439,7 +439,6 @@ export declare const useSplitInherithedProps: ({ propsWithDefault, focusableNode
439
439
  h?: import("@xstyled/system").SystemProp<string | number | true | symbol | {} | (string & {}), import("@xstyled/system").Theme> | undefined;
440
440
  maxWidth?: (string | number | true | symbol | {} | (string & {}) | import("@xstyled/system").ThemeProp<string | number | true | symbol | {} | (string & {}), import("@xstyled/system").Theme>) | undefined;
441
441
  maxW?: (string | number | true | symbol | {} | (string & {}) | import("@xstyled/system").ThemeProp<string | number | true | symbol | {} | (string & {}), import("@xstyled/system").Theme>) | undefined;
442
- maxHeight?: (string | number | true | symbol | {} | (string & {}) | import("@xstyled/system").ThemeProp<string | number | true | symbol | {} | (string & {}), import("@xstyled/system").Theme>) | undefined;
443
442
  maxH?: (string | number | true | symbol | {} | (string & {}) | import("@xstyled/system").ThemeProp<string | number | true | symbol | {} | (string & {}), import("@xstyled/system").Theme>) | undefined;
444
443
  minHeight?: (string | number | true | symbol | {} | (string & {}) | import("@xstyled/system").ThemeProp<string | number | true | symbol | {} | (string & {}), import("@xstyled/system").Theme>) | undefined;
445
444
  minH?: (string | number | true | symbol | {} | (string & {}) | import("@xstyled/system").ThemeProp<string | number | true | symbol | {} | (string & {}), import("@xstyled/system").Theme>) | undefined;
@@ -1,5 +1,5 @@
1
1
  export { DSMenuButton, DSMenuButtonWithSchema } from './DSMenuButton.js';
2
- export { type DSMenuButtonT } from './react-desc-prop-types.js';
2
+ export { type DSMenuButtonT, DSMenuButtonPropTypes } from './react-desc-prop-types.js';
3
3
  export { MENU_BUTTON_SLOTS, MENU_BUTTON_DATA_TESTID, MENU_ITEMS_TYPES } from './constants/index.js';
4
4
  export { isFocusableNode } from './utils/nodesTypeguardsAndGetters.js';
5
5
  export { useOptionsArrayToDsTree } from './utils/useOptionsArrayToDsTree.js';
@@ -1,6 +1,6 @@
1
+ import { type useFloatingContext } from '@elliemae/ds-floating-context';
1
2
  import type { DSPropTypesSchema, ValidationMap } from '@elliemae/ds-props-helpers';
2
3
  import { type TypescriptHelpersT } from '@elliemae/ds-typescript-helpers';
3
- import { type useFloatingContext } from '@elliemae/ds-floating-context';
4
4
  import { type DSMenuButtonT } from '../../react-desc-prop-types.js';
5
5
  import { DSFlyoutMenuName, FLYOUT_MENU_SLOTS } from './constants/index.js';
6
6
  export declare namespace DSFlyoutMenuT {
@@ -0,0 +1,6 @@
1
+ import { type DSMenuBehaviouralContextProviderT } from '../react-desc-prop-types.js';
2
+ type UseAdvancedValidationConfigT = {
3
+ propsWithDefault: DSMenuBehaviouralContextProviderT.InternalProps;
4
+ };
5
+ export declare const useAdvancedValidation: ({ propsWithDefault }: UseAdvancedValidationConfigT) => void;
6
+ export {};
@@ -4,12 +4,12 @@ export declare const useFocusTracker: () => {
4
4
  preventBlurReset: React.MutableRefObject<boolean>;
5
5
  focusRegion: "" | "trigger" | `item-dsid-${string}` | `item-dsid-${number}`;
6
6
  focusedElementItemNode: React.MutableRefObject<DSMenuButtonT.PseudoFocusableMenuNodes | null>;
7
- trackFocusTrigger: () => null;
7
+ trackFocusTrigger: () => DSMenuButtonT.PseudoFocusableMenuNodes | null;
8
8
  trackFocusNode: (nodeToFocus: DSMenuButtonT.PseudoFocusableMenuNodes) => void;
9
- trackFocusRegionReset: () => null;
10
- trackFocusFirstChildItem: (itemNode: DSMenuButtonT.PseudoFocusableMenuNodes) => DSMenuButtonT.PseudoFocusableMenuNodes;
11
- trackFocusLastChildItem: (itemNode: DSMenuButtonT.PseudoFocusableMenuNodes) => DSMenuButtonT.PseudoFocusableMenuNodes;
12
- trackFocusNextItem: (itemNode: DSMenuButtonT.PseudoFocusableMenuNodes) => DSMenuButtonT.PseudoFocusableMenuNodes;
13
- trackFocusPreviousItem: (itemNode: DSMenuButtonT.PseudoFocusableMenuNodes) => DSMenuButtonT.PseudoFocusableMenuNodes;
9
+ trackFocusRegionReset: () => DSMenuButtonT.PseudoFocusableMenuNodes | null;
10
+ trackFocusFirstChildItem: (itemNode: DSMenuButtonT.PseudoFocusableMenuNodes) => DSMenuButtonT.PseudoFocusableMenuNodes | null;
11
+ trackFocusLastChildItem: (itemNode: DSMenuButtonT.PseudoFocusableMenuNodes) => DSMenuButtonT.PseudoFocusableMenuNodes | null;
12
+ trackFocusNextItem: (itemNode: DSMenuButtonT.PseudoFocusableMenuNodes) => DSMenuButtonT.PseudoFocusableMenuNodes | null;
13
+ trackFocusPreviousItem: (itemNode: DSMenuButtonT.PseudoFocusableMenuNodes) => DSMenuButtonT.PseudoFocusableMenuNodes | null;
14
14
  trackFocusParentItem: (itemNode: DSMenuButtonT.PseudoFocusableMenuNodes) => DSMenuButtonT.PseudoFocusableMenuNodes | null;
15
15
  };
@@ -12,6 +12,7 @@ type UseMenuItemEventsHandlersConfig = {
12
12
  export declare const useMenuItemEventsHandlers: ({ propsWithDefault, focusTrackers, menuOpenStatus, handleChangeOpenedSubItems, }: UseMenuItemEventsHandlersConfig) => {
13
13
  handleFocusableMenuItemKeyDown: React.KeyboardEventHandler<HTMLDivElement>;
14
14
  handleFocusableMenuItemClick: (event: React.MouseEvent<HTMLDivElement>) => void;
15
- handleFocusableMenuItemOnMouseEnter: (itemNode: DSMenuButtonT.PseudoFocusableMenuNodes, event: React.MouseEvent) => void;
15
+ handleFocusableMenuItemOnMouseEnter: (itemNode: DSMenuButtonT.PseudoFocusableMenuNodes) => void;
16
+ handleFocusableMenuItemNativeFocusEvent: (itemNode: DSMenuButtonT.PseudoFocusableMenuNodes, event: React.FocusEvent) => void;
16
17
  };
17
18
  export {};
@@ -12,6 +12,7 @@ export declare namespace DSMenuBehaviouralContextProviderT {
12
12
  interface DefaultProps extends DSMenuButtonT.MenuBehaviouralLayerDefaultProps {
13
13
  }
14
14
  interface OptionalProps extends DSMenuButtonT.MenuBehaviouralLayerOptionalProps {
15
+ selectedNodes?: DSMenuButtonT.SelectionableMenuNodes[];
15
16
  }
16
17
  interface Props extends Partial<DefaultProps>, OptionalProps, RequiredProps {
17
18
  }
@@ -1,6 +1,6 @@
1
1
  import { type DSMenuButtonT } from '../../../react-desc-prop-types.js';
2
- export declare const getIsMultipleSelectNodeWithSubmenuSelected: ({ itemNode, selectedItems, }: {
2
+ export declare const getIsMultipleSelectNodeWithSubmenuSelected: ({ itemNode, selectedNodes, }: {
3
3
  itemNode: DSMenuButtonT.MenuNodeMultipleSelectWithSubmenuItem;
4
- selectedItems: DSMenuButtonT.SelectionableMenuNodes[];
4
+ selectedNodes: DSMenuButtonT.SelectionableMenuNodes[];
5
5
  }) => boolean | "mixed";
6
- export declare const getNewSelectionMultipleSelect: (selectedItems: DSMenuButtonT.SelectionableMenuNodes[], selectedItem: DSMenuButtonT.MultipleSelectionableMenuNodes) => DSMenuButtonT.SelectionableMenuNodes[];
6
+ export declare const getNewSelectionMultipleSelect: (selectedNodes: DSMenuButtonT.SelectionableMenuNodes[], selectedItem: DSMenuButtonT.MultipleSelectionableMenuNodes) => DSMenuButtonT.SelectionableMenuNodes[];
@@ -6,8 +6,8 @@ import { type DSMenuButtonT } from '../../../react-desc-prop-types.js';
6
6
  * the selection must be propagated because
7
7
  * a single-select within a single-select-with-submenu can't be selected without implying the selection of the parent single-select-with-submenu
8
8
  *
9
- * @param selectedItems - the current selected items
9
+ * @param selectedNodes - the current selected items
10
10
  * @param selectedItem - the newly selected item
11
11
  * @returns DSMenuButtonT.SelectionableMenuNodes[] - the new selection
12
12
  */
13
- export declare const getNewSelectionSingleSelect: (selectedItems: DSMenuButtonT.SelectionableMenuNodes[], selectedItem: DSMenuButtonT.MenuNodeSingleSelectItem | DSMenuButtonT.MenuNodeSingleSelectWithSubmenuItem) => DSMenuButtonT.SelectionableMenuNodes[];
13
+ export declare const getNewSelectionSingleSelect: (selectedNodes: DSMenuButtonT.SelectionableMenuNodes[], selectedItem: DSMenuButtonT.MenuNodeSingleSelectItem | DSMenuButtonT.MenuNodeSingleSelectWithSubmenuItem) => DSMenuButtonT.SelectionableMenuNodes[];
@@ -0,0 +1,5 @@
1
+ import React from 'react';
2
+ import type { DSMenuButtonT } from '../../react-desc-prop-types.js';
3
+ export declare const SkeletonMenuItem: React.ComponentType<{
4
+ itemNode: DSMenuButtonT.MenuNodeSkeletonItem;
5
+ }>;
@@ -0,0 +1,2 @@
1
+ /// <reference types="lodash" />
2
+ export declare const focusNodeRacingConditionSolved: import("lodash").DebouncedFunc<(node: HTMLDivElement) => void>;
@@ -1,9 +1,9 @@
1
1
  /// <reference types="react" />
2
- import type { GlobalAttributesT, XstyledProps, DSPropTypesSchema, ValidationMap } from '@elliemae/ds-props-helpers';
2
+ import type { DSPropTypesSchema, GlobalAttributesT, ValidationMap, XstyledProps } from '@elliemae/ds-props-helpers';
3
3
  import { type TypescriptHelpersT } from '@elliemae/ds-typescript-helpers';
4
- import { DSMenuItemRendererFactoryName, MENU_ITEM_RENDERER_FACTORY_SLOTS } from './constants/index.js';
5
4
  import type { DSMenuButtonT } from '../../react-desc-prop-types.js';
6
5
  import type { DSFlyoutMenuT } from '../DSFlyoutMenu/react-desc-prop-types.js';
6
+ import { DSMenuItemRendererFactoryName, MENU_ITEM_RENDERER_FACTORY_SLOTS } from './constants/index.js';
7
7
  export declare namespace DSMenuItemRendererFactoryT {
8
8
  interface RequiredProps {
9
9
  itemNode: DSMenuButtonT.MenuNode;
@@ -31,7 +31,7 @@ export declare const useOpinionatedButton: (propsFromUser: DSOpinionatedButtonT.
31
31
  context: {
32
32
  withoutPortal: boolean;
33
33
  withoutAnimation: boolean;
34
- portalDOMContainer: HTMLElement;
34
+ portalDOMContainer: HTMLElement | undefined;
35
35
  animationDuration: number;
36
36
  };
37
37
  };
@@ -1,6 +1,6 @@
1
- import React from 'react';
2
1
  import type { DSPropTypesSchema, ValidationMap } from '@elliemae/ds-props-helpers';
3
2
  import { type TypescriptHelpersT } from '@elliemae/ds-typescript-helpers';
3
+ import type React from 'react';
4
4
  import { type DSMenuButtonT } from '../../react-desc-prop-types.js';
5
5
  import { DSOpinionatedButtonName, OPINIONATED_BUTTON_SLOTS } from './constants/index.js';
6
6
  export declare namespace DSOpinionatedButtonT {
@@ -8,6 +8,7 @@ export declare namespace DSMenuButtonT {
8
8
  interface RootItem extends UseDSTreeT.AnyObjectWithoutReservedKeys {
9
9
  type: 'ROOT_ITEM';
10
10
  dsId: string;
11
+ maxHeight?: string | number;
11
12
  label?: undefined;
12
13
  secondaryLabel?: undefined;
13
14
  leftDecoration?: undefined;
@@ -45,6 +46,7 @@ export declare namespace DSMenuButtonT {
45
46
  secondaryLabel?: string;
46
47
  leftDecoration?: React.ComponentType;
47
48
  minWidth?: string | number;
49
+ maxHeight?: string | number;
48
50
  disabled?: boolean;
49
51
  onClick?: (e: React.MouseEvent | React.KeyboardEvent) => void;
50
52
  onKeyDown?: (e: React.KeyboardEvent) => null;
@@ -78,6 +80,7 @@ export declare namespace DSMenuButtonT {
78
80
  secondaryLabel?: string;
79
81
  leftDecoration?: React.ComponentType;
80
82
  minWidth?: string | number;
83
+ maxHeight?: string | number;
81
84
  disabled?: boolean;
82
85
  onClick?: (e: React.MouseEvent | React.KeyboardEvent) => void;
83
86
  onKeyDown?: (e: React.KeyboardEvent) => null;
@@ -89,6 +92,7 @@ export declare namespace DSMenuButtonT {
89
92
  secondaryLabel?: string;
90
93
  leftDecoration?: React.ComponentType;
91
94
  minWidth?: string | number;
95
+ maxHeight?: string | number;
92
96
  disabled?: boolean;
93
97
  onClick?: (e: React.MouseEvent | React.KeyboardEvent) => void;
94
98
  onKeyDown?: (e: React.KeyboardEvent) => null;
@@ -111,6 +115,7 @@ export declare namespace DSMenuButtonT {
111
115
  secondaryLabel?: string;
112
116
  leftDecoration?: React.ComponentType;
113
117
  minWidth?: string | number;
118
+ maxHeight: string | number;
114
119
  disabled?: boolean;
115
120
  onClick?: (e: React.MouseEvent | React.KeyboardEvent) => void;
116
121
  onKeyDown?: (e: React.KeyboardEvent) => null;
@@ -122,8 +127,9 @@ export declare namespace DSMenuButtonT {
122
127
  leftDecoration?: React.ComponentType;
123
128
  minWidth?: string | number;
124
129
  }
125
- type MenuItemInterface = SeparatorItem | ActivableItem | ActionableWithSubmenuItem | SkeletonItem | MultipleSelectItem | MultiSelectWithSubmenuItem | WithSubmenuItem | GroupItem;
130
+ type MenuItemInterface = SeparatorItem | ActivableItem | ActionableWithSubmenuItem | SkeletonItem | MultipleSelectItem | MultiSelectWithSubmenuItem | WithSubmenuItem | GroupItem | SingleSelectItem | SingleSelectWithSubmenuItem;
126
131
  type PseudoFocusableItemInterface = ActivableItem | ActionableWithSubmenuItem | SkeletonItem | MultipleSelectItem | MultiSelectWithSubmenuItem | WithSubmenuItem | SingleSelectItem | SingleSelectWithSubmenuItem;
132
+ type SelectionableMenuItemInterface = MultipleSelectItem | MultiSelectWithSubmenuItem | SingleSelectItem | SingleSelectWithSubmenuItem;
127
133
  type MenuNodeRootItem = UseDSTreeT.TreeNode<RootItem>;
128
134
  type MenuNodeSeparatorItem = UseDSTreeT.TreeNode<SeparatorItem>;
129
135
  type MenuNodeActivableItem = UseDSTreeT.TreeNode<ActivableItem>;
@@ -138,24 +144,15 @@ export declare namespace DSMenuButtonT {
138
144
  type MenuNode = MenuNodeSeparatorItem | MenuNodeActivableItem | MenuNodeActivableWithSubmenuItem | MenuNodeSkeletonItem | MenuNodeMultipleSelectItem | MenuNodeMultipleSelectWithSubmenuItem | MenuNodeWithSubmenuItem | MenuNodeSingleSelectItem | MenuNodeSingleSelectWithSubmenuItem | MenuNodeGroupItem;
139
145
  type PseudoFocusableMenuNodes = MenuNodeActivableItem | MenuNodeActivableWithSubmenuItem | MenuNodeSkeletonItem | MenuNodeSingleSelectItem | MenuNodeMultipleSelectItem | MenuNodeMultipleSelectWithSubmenuItem | MenuNodeWithSubmenuItem | MenuNodeSingleSelectWithSubmenuItem;
140
146
  type MenuNodesAllowedToHaveChildren = MenuNodeRootItem | MenuNodeWithSubmenuItem | MenuNodeGroupItem | MenuNodeActivableWithSubmenuItem | MenuNodeMultipleSelectWithSubmenuItem | MenuNodeSingleSelectWithSubmenuItem;
141
- type ItemRendererT = React.ComponentType<{
142
- itemNode: MenuNode;
143
- }>;
144
147
  type SelectionableMenuNodes = DSMenuButtonT.MenuNodeMultipleSelectItem | DSMenuButtonT.MenuNodeMultipleSelectWithSubmenuItem | DSMenuButtonT.MenuNodeSingleSelectItem | DSMenuButtonT.MenuNodeSingleSelectWithSubmenuItem;
145
148
  type MultipleSelectionableMenuNodes = DSMenuButtonT.MenuNodeMultipleSelectItem | DSMenuButtonT.MenuNodeMultipleSelectWithSubmenuItem;
146
149
  type SingleSelectionableMenuNodes = DSMenuButtonT.MenuNodeSingleSelectItem | DSMenuButtonT.MenuNodeSingleSelectWithSubmenuItem;
147
150
  type WithSubmenuMenuNodes = DSMenuButtonT.MenuNodeWithSubmenuItem | DSMenuButtonT.MenuNodeActivableWithSubmenuItem | DSMenuButtonT.MenuNodeMultipleSelectWithSubmenuItem | DSMenuButtonT.MenuNodeSingleSelectWithSubmenuItem;
148
151
  type SelectionablesWithSubmenuMenuNodes = DSMenuButtonT.MenuNodeMultipleSelectWithSubmenuItem | DSMenuButtonT.MenuNodeSingleSelectWithSubmenuItem;
152
+ type ItemRendererT = React.ComponentType<{
153
+ itemNode: MenuNode;
154
+ }>;
149
155
  interface MenuBehaviouralLayerRequiredProps {
150
- selectedItems: SelectionableMenuNodes[];
151
- onItemSelected: (newSelection: SelectionableMenuNodes[], metainfo: {
152
- itemNode: DSMenuButtonT.SelectionableMenuNodes;
153
- event?: React.SyntheticEvent;
154
- }) => void | TypescriptHelpersT.StateSetter<DSMenuButtonT.SelectionableMenuNodes[]>;
155
- onActivateItem: (itemNode: DSMenuButtonT.PseudoFocusableMenuNodes, metainfo: {
156
- itemNode: DSMenuButtonT.PseudoFocusableMenuNodes;
157
- event?: React.SyntheticEvent;
158
- }) => void;
159
156
  }
160
157
  interface MenuSpecificRequiredProps {
161
158
  }
@@ -173,13 +170,21 @@ export declare namespace DSMenuButtonT {
173
170
  onSubmenuToggle: (nextOpenedSubmenus: Record<string, boolean>, submenu: MenuItemInterface, e: React.MouseEvent | React.KeyboardEvent) => void;
174
171
  isLoading: boolean;
175
172
  isSkeleton: boolean;
176
- selectedOptions: Record<string, boolean>;
173
+ maxHeight: string | number;
177
174
  }
178
175
  interface ButtonInheiredDefaultProps extends Omit<DSButtonV3T.DefaultProps, keyof MenuSpecifiDefaultProps> {
179
176
  }
180
177
  interface DefaultProps extends MenuSpecifiDefaultProps, ButtonInheiredDefaultProps, MenuBehaviouralLayerDefaultProps {
181
178
  }
182
179
  interface MenuBehaviouralLayerOptionalProps {
180
+ onItemSelected?: (newSelection: SelectionableMenuNodes[], metainfo: {
181
+ itemNode: DSMenuButtonT.SelectionableMenuNodes;
182
+ event?: React.SyntheticEvent;
183
+ }) => void | TypescriptHelpersT.StateSetter<DSMenuButtonT.SelectionableMenuNodes[]>;
184
+ onActivateItem?: (itemNode: DSMenuButtonT.PseudoFocusableMenuNodes, metainfo: {
185
+ itemNode: DSMenuButtonT.PseudoFocusableMenuNodes;
186
+ event?: React.SyntheticEvent;
187
+ }) => void;
183
188
  onOpen?: () => void;
184
189
  onClose?: () => void;
185
190
  onDisplayedSubmenuChange?: (newOpenedItems: DSMenuButtonT.WithSubmenuMenuNodes[], metainfo: {
@@ -193,6 +198,7 @@ export declare namespace DSMenuButtonT {
193
198
  interface ButtonInheritedOptionalProps extends Omit<DSButtonV3T.OptionalProps, keyof MenuSpecificOptionalProps> {
194
199
  }
195
200
  interface OptionalProps extends MenuSpecificOptionalProps, ButtonInheritedOptionalProps, MenuBehaviouralLayerOptionalProps, TypescriptHelpersT.PropsForGlobalOnSlots<typeof DSMenuButtonName, typeof MENU_BUTTON_SLOTS> {
201
+ selectedItems?: SelectionableMenuNodes[] | SelectionableMenuItemInterface[];
196
202
  }
197
203
  interface MenuBehaviouralLayerProps extends Partial<MenuBehaviouralLayerDefaultProps>, MenuBehaviouralLayerOptionalProps, MenuBehaviouralLayerRequiredProps {
198
204
  }
@@ -200,7 +206,7 @@ export declare namespace DSMenuButtonT {
200
206
  }
201
207
  interface ButtonInheritedProps extends Omit<DSButtonV3T.Props, keyof MenuSpecificProps> {
202
208
  }
203
- interface Props extends RequiredProps, Partial<DefaultProps>, OptionalProps {
209
+ interface Props extends RequiredProps, Partial<DefaultProps>, OptionalProps, Omit<DSButtonV3T.Props, keyof RequiredProps | keyof DefaultProps | keyof OptionalProps> {
204
210
  }
205
211
  interface MenuBehaviouralLayerInternalProps extends MenuBehaviouralLayerDefaultProps, MenuBehaviouralLayerOptionalProps, MenuBehaviouralLayerRequiredProps {
206
212
  }
@@ -208,10 +214,10 @@ export declare namespace DSMenuButtonT {
208
214
  }
209
215
  interface ButtonInheritedInternalProps extends Omit<DSButtonV3T.InternalProps, keyof MenuSpecificInternalProps> {
210
216
  }
211
- interface InternalProps extends RequiredProps, DefaultProps, OptionalProps {
217
+ interface InternalProps extends RequiredProps, DefaultProps, OptionalProps, Omit<DSButtonV3T.Props, keyof RequiredProps | keyof DefaultProps | keyof OptionalProps> {
212
218
  }
213
219
  }
214
- export declare const defaultProps: DSMenuButtonT.MenuSpecifiDefaultProps;
220
+ export declare const menuSpecificDefaultProps: DSMenuButtonT.MenuSpecifiDefaultProps;
215
221
  export declare const MenuBehaviouralLayerPropTypes: DSPropTypesSchema<DSMenuButtonT.MenuBehaviouralLayerProps>;
216
222
  export declare const DSMenuSpecificPropTypes: DSPropTypesSchema<DSMenuButtonT.MenuSpecificProps>;
217
223
  export declare const DSMenuButtonPropTypes: DSPropTypesSchema<DSMenuButtonT.Props>;
@@ -1,22 +1,134 @@
1
1
  import { type DSMenuButtonT } from '../react-desc-prop-types.js';
2
+ /**
3
+ * Heuristic to determine if the selected item is an item or a node.
4
+ * Not perfect because JavaScript is not typed.
5
+ * If app devs provide an object that matches all of those conditions, it's an edge case the app devs should handle.
6
+ * @param {unknown} item - The item to check.
7
+ * @returns {boolean} - True if the item is (heuristically) a menu node, false otherwise.
8
+ */
9
+ export declare const isObjectAMenuNode: (item: unknown) => item is DSMenuButtonT.MenuNode;
10
+ /**
11
+ * Checks if the item is an activable node.
12
+ * @param {unknown} item - The item to check.
13
+ * @returns {boolean} - True if the item is an activable node, false otherwise.
14
+ */
2
15
  export declare const isActivableNode: (item: unknown) => item is DSMenuButtonT.MenuNodeActivableItem;
3
- export declare const isActivableWithSubmenuNode: (item: unknown) => item is DSMenuButtonT.MenuNodeActivableWithSubmenuItem;
16
+ /**
17
+ * Checks if the item is a skeleton node.
18
+ * @param {unknown} item - The item to check.
19
+ * @returns {boolean} - True if the item is a skeleton node, false otherwise.
20
+ */
4
21
  export declare const isSkeletonNode: (item: unknown) => item is DSMenuButtonT.MenuNodeSkeletonItem;
22
+ /**
23
+ * Checks if the item is a multiple select only node.
24
+ * @param {unknown} item - The item to check.
25
+ * @returns {boolean} - True if the item is a multiple select only node, false otherwise.
26
+ */
5
27
  export declare const isMultipleSelectOnlyNode: (item: unknown) => item is DSMenuButtonT.MenuNodeMultipleSelectItem;
28
+ /**
29
+ * Checks if the item is a multiple select node with a submenu.
30
+ * @param {unknown} item - The item to check.
31
+ * @returns {boolean} - True if the item is a multiple select node with a submenu, false otherwise.
32
+ */
6
33
  export declare const isMultipleSelectWithSubmenuNode: (item: unknown) => item is DSMenuButtonT.MenuNodeMultipleSelectWithSubmenuItem;
34
+ /**
35
+ * Checks if the item is a multiple select node.
36
+ * @param {unknown} item - The item to check.
37
+ * @returns {boolean} - True if the item is a multiple select node, false otherwise.
38
+ */
7
39
  export declare const isMultipleSelectNode: (item: unknown) => item is DSMenuButtonT.MultipleSelectionableMenuNodes;
40
+ /**
41
+ * Checks if the item is a single select only node.
42
+ * @param {unknown} item - The item to check.
43
+ * @returns {boolean} - True if the item is a single select only node, false otherwise.
44
+ */
8
45
  export declare const isSingleSelectOnlyNode: (item: unknown) => item is DSMenuButtonT.MenuNodeSingleSelectItem;
46
+ /**
47
+ * Checks if the item is a single select node with a submenu.
48
+ * @param {unknown} item - The item to check.
49
+ * @returns {boolean} - True if the item is a single select node with a submenu, false otherwise.
50
+ */
9
51
  export declare const isSingleSelectNodeWithSubmenu: (item: unknown) => item is DSMenuButtonT.MenuNodeSingleSelectWithSubmenuItem;
52
+ /**
53
+ * Checks if the item is a single select node.
54
+ * @param {unknown} item - The item to check.
55
+ * @returns {boolean} - True if the item is a single select node, false otherwise.
56
+ */
10
57
  export declare const isSingleSelectNode: (item: unknown) => item is DSMenuButtonT.SingleSelectionableMenuNodes;
58
+ /**
59
+ * Checks if the item is a selectionable node.
60
+ * @param {unknown} item - The item to check.
61
+ * @returns {boolean} - True if the item is a selectionable node, false otherwise.
62
+ */
11
63
  export declare const isSelectionableNode: (item: unknown) => item is DSMenuButtonT.SelectionableMenuNodes;
64
+ /**
65
+ * Gets all selectionable nodes from the tree.
66
+ * @param {DSMenuButtonT.MenuNode} tree - The tree to search.
67
+ * @returns {DSMenuButtonT.SelectionableMenuNodes[]} - An array of selectionable nodes.
68
+ */
12
69
  export declare const getSelectionableNodes: (tree: DSMenuButtonT.MenuNode) => DSMenuButtonT.SelectionableMenuNodes[];
70
+ /**
71
+ * Checks if the item is a node with a submenu (and nothing else).
72
+ * @param {unknown} item - The item to check.
73
+ * @returns {boolean} - True if the item is a node with a submenu, false otherwise.
74
+ */
13
75
  export declare const isWithSubmenuOnlyNode: (item: unknown) => item is DSMenuButtonT.MenuNodeWithSubmenuItem;
76
+ /**
77
+ * Checks if the item is a selectionable node with a submenu.
78
+ * @param {unknown} item - The item to check.
79
+ * @returns {boolean} - True if the item is a selectionable node with a submenu, false otherwise.
80
+ */
14
81
  export declare const isSelectionableWithSubmenuNode: (item: unknown) => item is DSMenuButtonT.SelectionablesWithSubmenuMenuNodes;
82
+ /**
83
+ * Checks if the item is an activable node with a submenu.
84
+ * @param {unknown} item - The item to check.
85
+ * @returns {boolean} - True if the item is an activable node with a submenu, false otherwise.
86
+ */
87
+ export declare const isActivableWithSubmenuNode: (item: unknown) => item is DSMenuButtonT.MenuNodeActivableWithSubmenuItem;
88
+ /**
89
+ * Checks if the item is a node with a submenu.
90
+ * @param {unknown} item - The item to check.
91
+ * @returns {boolean} - True if the item is a node with a submenu, false otherwise.
92
+ */
15
93
  export declare const isWithSubmenuNode: (item: unknown) => item is DSMenuButtonT.WithSubmenuMenuNodes;
94
+ /**
95
+ * Gets all nodes with a submenu from the tree.
96
+ * @param {DSMenuButtonT.MenuNode} tree - The tree to search.
97
+ * @returns {DSMenuButtonT.PseudoFocusableMenuNodes[]} - An array of nodes with a submenu.
98
+ */
16
99
  export declare const getWithSubmenuNodes: (tree: DSMenuButtonT.MenuNode) => DSMenuButtonT.PseudoFocusableMenuNodes[];
100
+ /**
101
+ * Checks if the item is a node that can be focused.
102
+ * @param {unknown} item - The item to check.
103
+ * @returns {boolean} - True if the item is a node that can be focused, false otherwise.
104
+ */
17
105
  export declare const isFocusableNode: (item: unknown) => item is DSMenuButtonT.PseudoFocusableMenuNodes;
106
+ /**
107
+ * Gets all nodes that can be focused from the tree.
108
+ * @param {DSMenuButtonT.MenuNode} tree - The tree to search.
109
+ * @returns {DSMenuButtonT.PseudoFocusableMenuNodes[]} - An array of nodes that can be focused.
110
+ */
18
111
  export declare const getFocusableNodes: (tree: DSMenuButtonT.MenuNode) => DSMenuButtonT.PseudoFocusableMenuNodes[];
112
+ /**
113
+ * Checks if the item is a separator node.
114
+ * @param {unknown} item - The item to check.
115
+ * @returns {boolean} - True if the item is a separator node, false otherwise.
116
+ */
19
117
  export declare const isSeparatorNode: (item: unknown) => item is DSMenuButtonT.MenuNodeSeparatorItem;
118
+ /**
119
+ * Checks if the item is a group node.
120
+ * @param {unknown} item - The item to check.
121
+ * @returns {boolean} - True if the item is a group node, false otherwise.
122
+ */
20
123
  export declare const isGroup: (item: unknown) => item is DSMenuButtonT.MenuNodeGroupItem;
124
+ /**
125
+ * Checks if the given item is a root node of the menu.
126
+ * @param {DSMenuButtonT.MenuNode} tree - The tree to search.
127
+ * @returns {DSMenuButtonT.PseudoFocusableMenuNodes[]} - An array of nodes that can be focused.
128
+ * @remarks
129
+ * The root item is not a renderable item and must always be treated with special care.
130
+ *
131
+ * This function uses a hardcoded string to identify the root item.
132
+ */
21
133
  export declare const isRootNode: (item: unknown) => item is DSMenuButtonT.MenuNodeRootItem;
22
134
  export declare const isMenuNodeAllowedToHaveChildren: (item: unknown) => item is DSMenuButtonT.MenuNodesAllowedToHaveChildren;
@@ -3,6 +3,7 @@ import { type DSMenuButtonT } from '../react-desc-prop-types.js';
3
3
  type UseOptionsArrayToDsTreeRootNodeConfig = {
4
4
  options: DSMenuButtonT.MenuItemInterface[];
5
5
  instanceUid: string;
6
+ propsWithDefault?: DSMenuButtonT.MenuSpecifiDefaultProps;
6
7
  };
7
- export declare const useOptionsArrayToDsTree: ({ options, instanceUid }: UseOptionsArrayToDsTreeRootNodeConfig) => UseDSTreeT.OutputT<DSMenuButtonT.MenuItemInterface>;
8
+ export declare const useOptionsArrayToDsTree: ({ options, instanceUid, propsWithDefault, }: UseOptionsArrayToDsTreeRootNodeConfig) => UseDSTreeT.OutputT<DSMenuButtonT.MenuItemInterface>;
8
9
  export {};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@elliemae/ds-menu-button",
3
- "version": "3.46.0-rc.1",
3
+ "version": "3.46.0-rc.10",
4
4
  "license": "MIT",
5
5
  "description": "ICE MT - Dimsum - Menu Button",
6
6
  "files": [
@@ -37,22 +37,21 @@
37
37
  },
38
38
  "dependencies": {
39
39
  "@xstyled/styled-components": "~3.6.0",
40
- "@elliemae/ds-button-v2": "3.46.0-rc.1",
41
- "@elliemae/ds-hooks-on-blur-out": "3.46.0-rc.1",
42
- "@elliemae/ds-grid": "3.46.0-rc.1",
43
- "@elliemae/ds-floating-context": "3.46.0-rc.1",
44
- "@elliemae/ds-menu-items-commons": "3.46.0-rc.1",
45
- "@elliemae/ds-icons": "3.46.0-rc.1",
46
- "@elliemae/ds-props-helpers": "3.46.0-rc.1",
47
- "@elliemae/ds-system": "3.46.0-rc.1",
48
- "@elliemae/ds-tree-model": "3.46.0-rc.1"
40
+ "@elliemae/ds-button-v2": "3.46.0-rc.10",
41
+ "@elliemae/ds-floating-context": "3.46.0-rc.10",
42
+ "@elliemae/ds-grid": "3.46.0-rc.10",
43
+ "@elliemae/ds-hooks-on-blur-out": "3.46.0-rc.10",
44
+ "@elliemae/ds-props-helpers": "3.46.0-rc.10",
45
+ "@elliemae/ds-icons": "3.46.0-rc.10",
46
+ "@elliemae/ds-system": "3.46.0-rc.10",
47
+ "@elliemae/ds-menu-items-commons": "3.46.0-rc.10",
48
+ "@elliemae/ds-tree-model": "3.46.0-rc.10"
49
49
  },
50
50
  "devDependencies": {
51
51
  "@elliemae/pui-cli": "9.0.0-next.50",
52
52
  "styled-components": "~5.3.9",
53
- "@elliemae/ds-dropdownmenu-v2": "3.46.0-rc.1",
54
- "@elliemae/ds-monorepo-devops": "3.46.0-rc.1",
55
- "@elliemae/ds-typescript-helpers": "3.46.0-rc.1"
53
+ "@elliemae/ds-monorepo-devops": "3.46.0-rc.10",
54
+ "@elliemae/ds-typescript-helpers": "3.46.0-rc.10"
56
55
  },
57
56
  "peerDependencies": {
58
57
  "@testing-library/jest-dom": "~5.16.4",