@elliemae/ds-menu-button 3.46.0-rc.2 → 3.46.0-rc.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (110) hide show
  1. package/dist/cjs/config/useMenuButton.js +6 -2
  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/parts/DSFlyoutMenu/DSFlyoutMenu.js +36 -12
  6. package/dist/cjs/parts/DSFlyoutMenu/DSFlyoutMenu.js.map +3 -3
  7. package/dist/cjs/parts/DSFlyoutMenu/react-desc-prop-types.js +1 -1
  8. package/dist/cjs/parts/DSFlyoutMenu/react-desc-prop-types.js.map +3 -3
  9. package/dist/cjs/parts/DSMenuBehaviouralContextProvider/config/useAdvancedValidation.js +4 -4
  10. package/dist/cjs/parts/DSMenuBehaviouralContextProvider/config/useAdvancedValidation.js.map +1 -1
  11. package/dist/cjs/parts/DSMenuBehaviouralContextProvider/config/useFocusTracker.js +40 -30
  12. package/dist/cjs/parts/DSMenuBehaviouralContextProvider/config/useFocusTracker.js.map +2 -2
  13. package/dist/cjs/parts/DSMenuBehaviouralContextProvider/config/useMenuBehaviouralContextProvider.js +1 -1
  14. package/dist/cjs/parts/DSMenuBehaviouralContextProvider/config/useMenuBehaviouralContextProvider.js.map +2 -2
  15. package/dist/cjs/parts/DSMenuBehaviouralContextProvider/config/useMenuItemEventsHandlers.js +7 -7
  16. package/dist/cjs/parts/DSMenuBehaviouralContextProvider/config/useMenuItemEventsHandlers.js.map +1 -1
  17. package/dist/cjs/parts/DSMenuBehaviouralContextProvider/react-desc-prop-types.js +3 -0
  18. package/dist/cjs/parts/DSMenuBehaviouralContextProvider/react-desc-prop-types.js.map +2 -2
  19. package/dist/cjs/parts/DSMenuBehaviouralContextProvider/utils/multipleSelectionHelpers.js +14 -14
  20. package/dist/cjs/parts/DSMenuBehaviouralContextProvider/utils/multipleSelectionHelpers.js.map +1 -1
  21. package/dist/cjs/parts/DSMenuBehaviouralContextProvider/utils/singleSelectionHelpers.js +2 -2
  22. package/dist/cjs/parts/DSMenuBehaviouralContextProvider/utils/singleSelectionHelpers.js.map +1 -1
  23. package/dist/cjs/parts/DSMenuItemRendererFactory/ActivableMenuItem.js +4 -5
  24. package/dist/cjs/parts/DSMenuItemRendererFactory/ActivableMenuItem.js.map +2 -2
  25. package/dist/cjs/parts/DSMenuItemRendererFactory/ActivableWithSubmenuMenuItem.js +4 -5
  26. package/dist/cjs/parts/DSMenuItemRendererFactory/ActivableWithSubmenuMenuItem.js.map +2 -2
  27. package/dist/cjs/parts/DSMenuItemRendererFactory/MultipleSelectMenuItem.js +6 -7
  28. package/dist/cjs/parts/DSMenuItemRendererFactory/MultipleSelectMenuItem.js.map +2 -2
  29. package/dist/cjs/parts/DSMenuItemRendererFactory/MultipleSelectWithSubmenuMenuItem.js +7 -8
  30. package/dist/cjs/parts/DSMenuItemRendererFactory/MultipleSelectWithSubmenuMenuItem.js.map +2 -2
  31. package/dist/cjs/parts/DSMenuItemRendererFactory/SingleSelectMenuItem.js +6 -7
  32. package/dist/cjs/parts/DSMenuItemRendererFactory/SingleSelectMenuItem.js.map +2 -2
  33. package/dist/cjs/parts/DSMenuItemRendererFactory/SingleSelectWithSubmenuMenuItem.js +6 -7
  34. package/dist/cjs/parts/DSMenuItemRendererFactory/SingleSelectWithSubmenuMenuItem.js.map +2 -2
  35. package/dist/cjs/parts/DSMenuItemRendererFactory/WithSubmenuMenuItem.js +4 -5
  36. package/dist/cjs/parts/DSMenuItemRendererFactory/WithSubmenuMenuItem.js.map +2 -2
  37. package/dist/cjs/parts/DSMenuItemRendererFactory/config/useMenuItemRendererFactory.js +1 -1
  38. package/dist/cjs/parts/DSMenuItemRendererFactory/config/useMenuItemRendererFactory.js.map +2 -2
  39. package/dist/cjs/parts/DSMenuItemRendererFactory/focusNodeRacingConditionSolved.js +43 -0
  40. package/dist/cjs/parts/DSMenuItemRendererFactory/focusNodeRacingConditionSolved.js.map +7 -0
  41. package/dist/cjs/parts/DSMenuItemRendererFactory/react-desc-prop-types.js.map +2 -2
  42. package/dist/cjs/parts/DSOpinionatedButton/react-desc-prop-types.js.map +2 -2
  43. package/dist/cjs/react-desc-prop-types.js +10 -11
  44. package/dist/cjs/react-desc-prop-types.js.map +2 -2
  45. package/dist/cjs/utils/nodesTypeguardsAndGetters.js +18 -56
  46. package/dist/cjs/utils/nodesTypeguardsAndGetters.js.map +2 -2
  47. package/dist/cjs/utils/useOptionsArrayToDsTree.js +10 -3
  48. package/dist/cjs/utils/useOptionsArrayToDsTree.js.map +2 -2
  49. package/dist/esm/config/useMenuButton.js +7 -3
  50. package/dist/esm/config/useMenuButton.js.map +2 -2
  51. package/dist/esm/config/useSplitInherithedProps.js +33 -15
  52. package/dist/esm/config/useSplitInherithedProps.js.map +2 -2
  53. package/dist/esm/parts/DSFlyoutMenu/DSFlyoutMenu.js +34 -10
  54. package/dist/esm/parts/DSFlyoutMenu/DSFlyoutMenu.js.map +2 -2
  55. package/dist/esm/parts/DSFlyoutMenu/react-desc-prop-types.js +1 -4
  56. package/dist/esm/parts/DSFlyoutMenu/react-desc-prop-types.js.map +2 -2
  57. package/dist/esm/parts/DSMenuBehaviouralContextProvider/config/useAdvancedValidation.js +4 -4
  58. package/dist/esm/parts/DSMenuBehaviouralContextProvider/config/useAdvancedValidation.js.map +1 -1
  59. package/dist/esm/parts/DSMenuBehaviouralContextProvider/config/useFocusTracker.js +40 -30
  60. package/dist/esm/parts/DSMenuBehaviouralContextProvider/config/useFocusTracker.js.map +2 -2
  61. package/dist/esm/parts/DSMenuBehaviouralContextProvider/config/useMenuBehaviouralContextProvider.js +1 -1
  62. package/dist/esm/parts/DSMenuBehaviouralContextProvider/config/useMenuBehaviouralContextProvider.js.map +2 -2
  63. package/dist/esm/parts/DSMenuBehaviouralContextProvider/config/useMenuItemEventsHandlers.js +7 -7
  64. package/dist/esm/parts/DSMenuBehaviouralContextProvider/config/useMenuItemEventsHandlers.js.map +1 -1
  65. package/dist/esm/parts/DSMenuBehaviouralContextProvider/react-desc-prop-types.js +3 -0
  66. package/dist/esm/parts/DSMenuBehaviouralContextProvider/react-desc-prop-types.js.map +2 -2
  67. package/dist/esm/parts/DSMenuBehaviouralContextProvider/utils/multipleSelectionHelpers.js +14 -14
  68. package/dist/esm/parts/DSMenuBehaviouralContextProvider/utils/multipleSelectionHelpers.js.map +1 -1
  69. package/dist/esm/parts/DSMenuBehaviouralContextProvider/utils/singleSelectionHelpers.js +2 -2
  70. package/dist/esm/parts/DSMenuBehaviouralContextProvider/utils/singleSelectionHelpers.js.map +1 -1
  71. package/dist/esm/parts/DSMenuItemRendererFactory/ActivableMenuItem.js +4 -5
  72. package/dist/esm/parts/DSMenuItemRendererFactory/ActivableMenuItem.js.map +2 -2
  73. package/dist/esm/parts/DSMenuItemRendererFactory/ActivableWithSubmenuMenuItem.js +4 -5
  74. package/dist/esm/parts/DSMenuItemRendererFactory/ActivableWithSubmenuMenuItem.js.map +2 -2
  75. package/dist/esm/parts/DSMenuItemRendererFactory/MultipleSelectMenuItem.js +6 -7
  76. package/dist/esm/parts/DSMenuItemRendererFactory/MultipleSelectMenuItem.js.map +2 -2
  77. package/dist/esm/parts/DSMenuItemRendererFactory/MultipleSelectWithSubmenuMenuItem.js +7 -8
  78. package/dist/esm/parts/DSMenuItemRendererFactory/MultipleSelectWithSubmenuMenuItem.js.map +2 -2
  79. package/dist/esm/parts/DSMenuItemRendererFactory/SingleSelectMenuItem.js +6 -7
  80. package/dist/esm/parts/DSMenuItemRendererFactory/SingleSelectMenuItem.js.map +2 -2
  81. package/dist/esm/parts/DSMenuItemRendererFactory/SingleSelectWithSubmenuMenuItem.js +6 -7
  82. package/dist/esm/parts/DSMenuItemRendererFactory/SingleSelectWithSubmenuMenuItem.js.map +2 -2
  83. package/dist/esm/parts/DSMenuItemRendererFactory/WithSubmenuMenuItem.js +4 -5
  84. package/dist/esm/parts/DSMenuItemRendererFactory/WithSubmenuMenuItem.js.map +2 -2
  85. package/dist/esm/parts/DSMenuItemRendererFactory/config/useMenuItemRendererFactory.js +1 -1
  86. package/dist/esm/parts/DSMenuItemRendererFactory/config/useMenuItemRendererFactory.js.map +2 -2
  87. package/dist/esm/parts/DSMenuItemRendererFactory/focusNodeRacingConditionSolved.js +13 -0
  88. package/dist/esm/parts/DSMenuItemRendererFactory/focusNodeRacingConditionSolved.js.map +7 -0
  89. package/dist/esm/parts/DSMenuItemRendererFactory/react-desc-prop-types.js.map +2 -2
  90. package/dist/esm/parts/DSOpinionatedButton/react-desc-prop-types.js +1 -1
  91. package/dist/esm/parts/DSOpinionatedButton/react-desc-prop-types.js.map +2 -2
  92. package/dist/esm/react-desc-prop-types.js +10 -11
  93. package/dist/esm/react-desc-prop-types.js.map +2 -2
  94. package/dist/esm/utils/nodesTypeguardsAndGetters.js +18 -56
  95. package/dist/esm/utils/nodesTypeguardsAndGetters.js.map +2 -2
  96. package/dist/esm/utils/useOptionsArrayToDsTree.js +10 -3
  97. package/dist/esm/utils/useOptionsArrayToDsTree.js.map +2 -2
  98. package/dist/types/config/useSplitInherithedProps.d.ts +3 -4
  99. package/dist/types/parts/DSFlyoutMenu/react-desc-prop-types.d.ts +1 -1
  100. package/dist/types/parts/DSMenuBehaviouralContextProvider/config/useFocusTracker.d.ts +6 -6
  101. package/dist/types/parts/DSMenuBehaviouralContextProvider/react-desc-prop-types.d.ts +1 -0
  102. package/dist/types/parts/DSMenuBehaviouralContextProvider/utils/multipleSelectionHelpers.d.ts +3 -3
  103. package/dist/types/parts/DSMenuBehaviouralContextProvider/utils/singleSelectionHelpers.d.ts +2 -2
  104. package/dist/types/parts/DSMenuItemRendererFactory/focusNodeRacingConditionSolved.d.ts +2 -0
  105. package/dist/types/parts/DSMenuItemRendererFactory/react-desc-prop-types.d.ts +2 -2
  106. package/dist/types/parts/DSOpinionatedButton/react-desc-prop-types.d.ts +1 -1
  107. package/dist/types/react-desc-prop-types.d.ts +10 -4
  108. package/dist/types/utils/nodesTypeguardsAndGetters.d.ts +113 -1
  109. package/dist/types/utils/useOptionsArrayToDsTree.d.ts +2 -1
  110. package/package.json +12 -13
@@ -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.2",
3
+ "version": "3.46.0-rc.4",
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.2",
41
- "@elliemae/ds-grid": "3.46.0-rc.2",
42
- "@elliemae/ds-icons": "3.46.0-rc.2",
43
- "@elliemae/ds-menu-items-commons": "3.46.0-rc.2",
44
- "@elliemae/ds-props-helpers": "3.46.0-rc.2",
45
- "@elliemae/ds-system": "3.46.0-rc.2",
46
- "@elliemae/ds-tree-model": "3.46.0-rc.2",
47
- "@elliemae/ds-hooks-on-blur-out": "3.46.0-rc.2",
48
- "@elliemae/ds-floating-context": "3.46.0-rc.2"
40
+ "@elliemae/ds-button-v2": "3.46.0-rc.4",
41
+ "@elliemae/ds-floating-context": "3.46.0-rc.4",
42
+ "@elliemae/ds-grid": "3.46.0-rc.4",
43
+ "@elliemae/ds-hooks-on-blur-out": "3.46.0-rc.4",
44
+ "@elliemae/ds-menu-items-commons": "3.46.0-rc.4",
45
+ "@elliemae/ds-props-helpers": "3.46.0-rc.4",
46
+ "@elliemae/ds-tree-model": "3.46.0-rc.4",
47
+ "@elliemae/ds-system": "3.46.0-rc.4",
48
+ "@elliemae/ds-icons": "3.46.0-rc.4"
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-monorepo-devops": "3.46.0-rc.2",
54
- "@elliemae/ds-typescript-helpers": "3.46.0-rc.2",
55
- "@elliemae/ds-dropdownmenu-v2": "3.46.0-rc.2"
53
+ "@elliemae/ds-monorepo-devops": "3.46.0-rc.4",
54
+ "@elliemae/ds-typescript-helpers": "3.46.0-rc.4"
56
55
  },
57
56
  "peerDependencies": {
58
57
  "@testing-library/jest-dom": "~5.16.4",