@hitachivantara/uikit-react-core 5.66.6 → 5.66.8

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 (70) hide show
  1. package/dist/cjs/BaseDropdown/BaseDropdown.cjs +259 -241
  2. package/dist/cjs/BaseDropdown/BaseDropdownContext/BaseDropdownContext.cjs +6 -3
  3. package/dist/cjs/Button/Button.cjs +10 -2
  4. package/dist/cjs/Button/Button.styles.cjs +1 -1
  5. package/dist/cjs/Calendar/SingleCalendar/SingleCalendar.styles.cjs +0 -1
  6. package/dist/cjs/ColorPicker/ColorPicker.styles.cjs +2 -1
  7. package/dist/cjs/DropDownMenu/DropDownMenu.cjs +22 -5
  8. package/dist/cjs/DropDownMenu/DropDownMenu.styles.cjs +3 -1
  9. package/dist/cjs/Dropdown/List/List.cjs +2 -2
  10. package/dist/cjs/InlineEditor/InlineEditor.cjs +1 -1
  11. package/dist/cjs/MultiButton/MultiButton.styles.cjs +1 -6
  12. package/dist/cjs/TagsInput/TagsInput.cjs +1 -1
  13. package/dist/cjs/TimePicker/TimePicker.styles.cjs +0 -1
  14. package/dist/cjs/TreeView/TreeItem/TreeItem.cjs +2 -2
  15. package/dist/cjs/TreeView/TreeItem/TreeItem.styles.cjs +5 -3
  16. package/dist/cjs/TreeView/TreeItem/useHvTreeItem.cjs +23 -0
  17. package/dist/cjs/TreeView/internals/DescendantProvider.cjs +12 -16
  18. package/dist/cjs/VerticalNavigation/TreeView/TreeView.cjs +17 -24
  19. package/dist/cjs/VerticalNavigation/TreeView/TreeViewItem.cjs +4 -4
  20. package/dist/esm/BaseDropdown/BaseDropdown.js +261 -243
  21. package/dist/esm/BaseDropdown/BaseDropdown.js.map +1 -1
  22. package/dist/esm/BaseDropdown/BaseDropdownContext/BaseDropdownContext.js +8 -3
  23. package/dist/esm/BaseDropdown/BaseDropdownContext/BaseDropdownContext.js.map +1 -1
  24. package/dist/esm/Button/Button.js +11 -3
  25. package/dist/esm/Button/Button.js.map +1 -1
  26. package/dist/esm/Button/Button.styles.js +1 -1
  27. package/dist/esm/Button/Button.styles.js.map +1 -1
  28. package/dist/esm/Calendar/SingleCalendar/SingleCalendar.styles.js +0 -1
  29. package/dist/esm/Calendar/SingleCalendar/SingleCalendar.styles.js.map +1 -1
  30. package/dist/esm/CheckBox/CheckBox.js.map +1 -1
  31. package/dist/esm/CheckBoxGroup/CheckBoxGroup.js.map +1 -1
  32. package/dist/esm/ColorPicker/ColorPicker.styles.js +2 -1
  33. package/dist/esm/ColorPicker/ColorPicker.styles.js.map +1 -1
  34. package/dist/esm/DatePicker/DatePicker.js.map +1 -1
  35. package/dist/esm/DropDownMenu/DropDownMenu.js +23 -6
  36. package/dist/esm/DropDownMenu/DropDownMenu.js.map +1 -1
  37. package/dist/esm/DropDownMenu/DropDownMenu.styles.js +3 -1
  38. package/dist/esm/DropDownMenu/DropDownMenu.styles.js.map +1 -1
  39. package/dist/esm/Dropdown/Dropdown.js.map +1 -1
  40. package/dist/esm/Dropdown/List/List.js +3 -3
  41. package/dist/esm/Dropdown/List/List.js.map +1 -1
  42. package/dist/esm/InlineEditor/InlineEditor.js +1 -1
  43. package/dist/esm/InlineEditor/InlineEditor.js.map +1 -1
  44. package/dist/esm/MultiButton/MultiButton.styles.js +1 -6
  45. package/dist/esm/MultiButton/MultiButton.styles.js.map +1 -1
  46. package/dist/esm/SelectionList/SelectionList.js.map +1 -1
  47. package/dist/esm/Switch/Switch.js.map +1 -1
  48. package/dist/esm/TagsInput/TagsInput.js +1 -1
  49. package/dist/esm/TagsInput/TagsInput.js.map +1 -1
  50. package/dist/esm/TimePicker/TimePicker.js.map +1 -1
  51. package/dist/esm/TimePicker/TimePicker.styles.js +0 -1
  52. package/dist/esm/TimePicker/TimePicker.styles.js.map +1 -1
  53. package/dist/esm/TreeView/TreeItem/TreeItem.js +2 -2
  54. package/dist/esm/TreeView/TreeItem/TreeItem.js.map +1 -1
  55. package/dist/esm/TreeView/TreeItem/TreeItem.styles.js +5 -3
  56. package/dist/esm/TreeView/TreeItem/TreeItem.styles.js.map +1 -1
  57. package/dist/esm/TreeView/TreeItem/useHvTreeItem.js +4 -0
  58. package/dist/esm/TreeView/TreeItem/useHvTreeItem.js.map +1 -1
  59. package/dist/esm/TreeView/internals/DescendantProvider.js +12 -16
  60. package/dist/esm/TreeView/internals/DescendantProvider.js.map +1 -1
  61. package/dist/esm/VerticalNavigation/TreeView/TreeView.js +16 -23
  62. package/dist/esm/VerticalNavigation/TreeView/TreeView.js.map +1 -1
  63. package/dist/esm/VerticalNavigation/TreeView/TreeViewItem.js +2 -2
  64. package/dist/esm/VerticalNavigation/TreeView/TreeViewItem.js.map +1 -1
  65. package/dist/esm/hooks/useControlled.js.map +1 -1
  66. package/dist/types/index.d.ts +15 -11
  67. package/package.json +6 -6
  68. package/dist/cjs/VerticalNavigation/TreeView/descendants.cjs +0 -125
  69. package/dist/esm/VerticalNavigation/TreeView/descendants.js +0 -125
  70. package/dist/esm/VerticalNavigation/TreeView/descendants.js.map +0 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hitachivantara/uikit-react-core",
3
- "version": "5.66.6",
3
+ "version": "5.66.8",
4
4
  "private": false,
5
5
  "author": "Hitachi Vantara UI Kit Team",
6
6
  "description": "Core React components for the NEXT Design System.",
@@ -33,11 +33,11 @@
33
33
  "@emotion/css": "^11.11.2",
34
34
  "@emotion/serialize": "^1.1.2",
35
35
  "@emotion/utils": "^1.2.1",
36
- "@hitachivantara/uikit-react-icons": "^5.10.0",
37
- "@hitachivantara/uikit-react-shared": "^5.1.42",
38
- "@hitachivantara/uikit-styles": "^5.30.1",
36
+ "@hitachivantara/uikit-react-icons": "^5.10.1",
37
+ "@hitachivantara/uikit-react-shared": "^5.1.43",
38
+ "@hitachivantara/uikit-styles": "^5.30.2",
39
39
  "@internationalized/date": "^3.2.0",
40
- "@mui/base": "^5.0.0-beta.34",
40
+ "@mui/base": "^5.0.0-beta.40",
41
41
  "@popperjs/core": "^2.11.8",
42
42
  "@react-aria/datepicker": "^3.9.0",
43
43
  "@react-stately/datepicker": "^3.9.0",
@@ -62,7 +62,7 @@
62
62
  "access": "public",
63
63
  "directory": "package"
64
64
  },
65
- "gitHead": "60ed3017acf5d32f06164fe156085912c42903a8",
65
+ "gitHead": "6cfa285815d1ff1d4621790762555845129a3fd3",
66
66
  "exports": {
67
67
  ".": {
68
68
  "require": "./dist/cjs/index.cjs",
@@ -1,125 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- const jsxRuntime = require("@emotion/react/jsx-runtime");
4
- const React = require("react");
5
- const useEnhancedEffect = require("../../hooks/useEnhancedEffect.cjs");
6
- function binaryFindElement(array, element) {
7
- let start = 0;
8
- let end = array.length - 1;
9
- while (start <= end) {
10
- const middle = Math.floor((start + end) / 2);
11
- if (array[middle].element === element) {
12
- return middle;
13
- }
14
- if (array[middle].element.compareDocumentPosition(element) && Node.DOCUMENT_POSITION_PRECEDING) {
15
- end = middle - 1;
16
- } else {
17
- start = middle + 1;
18
- }
19
- }
20
- return start;
21
- }
22
- const DescendantContext = React.createContext({
23
- level: 0,
24
- descendants: []
25
- });
26
- function usePrevious(value) {
27
- const ref = React.useRef(null);
28
- React.useEffect(() => {
29
- ref.current = value;
30
- }, [value]);
31
- return ref.current;
32
- }
33
- const noop = () => {
34
- };
35
- function useDescendant(descendant) {
36
- const [, forceUpdate] = React.useState();
37
- const {
38
- registerDescendant = noop,
39
- unregisterDescendant = noop,
40
- descendants = [],
41
- parentId = null,
42
- level = 0
43
- } = React.useContext(DescendantContext);
44
- const index = descendants.findIndex(
45
- (item) => item.element === descendant.element
46
- );
47
- const previousDescendants = usePrevious(descendants);
48
- const someDescendantsHaveChanged = descendants.some(
49
- (newDescendant, position) => {
50
- return previousDescendants && previousDescendants[position];
51
- }
52
- );
53
- useEnhancedEffect.useEnhancedEffect(() => {
54
- if (descendant.element) {
55
- registerDescendant({
56
- ...descendant,
57
- index
58
- });
59
- return () => {
60
- unregisterDescendant(descendant.element);
61
- };
62
- }
63
- forceUpdate({});
64
- return void 0;
65
- }, [
66
- registerDescendant,
67
- unregisterDescendant,
68
- index,
69
- someDescendantsHaveChanged,
70
- descendant
71
- ]);
72
- return { parentId, index, level };
73
- }
74
- const DescendantProvider = (props) => {
75
- const { children, id, level } = props;
76
- const [items, set] = React.useState([]);
77
- const registerDescendant = React.useCallback(({ element, ...other }) => {
78
- set((oldItems) => {
79
- let newItems;
80
- if (oldItems.length === 0) {
81
- return [
82
- {
83
- ...other,
84
- element,
85
- index: 0
86
- }
87
- ];
88
- }
89
- const index = binaryFindElement(oldItems, element);
90
- if (oldItems[index] && oldItems[index].element === element) {
91
- newItems = oldItems;
92
- } else {
93
- const newItem = {
94
- ...other,
95
- element,
96
- index
97
- };
98
- newItems = oldItems.slice();
99
- newItems.splice(index, 0, newItem);
100
- }
101
- newItems.forEach((item, position) => {
102
- item.index = position;
103
- });
104
- return newItems;
105
- });
106
- }, []);
107
- const unregisterDescendant = React.useCallback((element) => {
108
- set(
109
- (oldItems) => oldItems.filter((item) => element !== item.element)
110
- );
111
- }, []);
112
- const value = React.useMemo(
113
- () => ({
114
- descendants: items,
115
- registerDescendant,
116
- unregisterDescendant,
117
- parentId: id,
118
- level
119
- }),
120
- [items, registerDescendant, unregisterDescendant, id, level]
121
- );
122
- return /* @__PURE__ */ jsxRuntime.jsx(DescendantContext.Provider, { value, children });
123
- };
124
- exports.DescendantProvider = DescendantProvider;
125
- exports.useDescendant = useDescendant;
@@ -1,125 +0,0 @@
1
- import { jsx } from "@emotion/react/jsx-runtime";
2
- import { createContext, useState, useContext, useCallback, useMemo, useRef, useEffect } from "react";
3
- import { useEnhancedEffect } from "../../hooks/useEnhancedEffect.js";
4
- function binaryFindElement(array, element) {
5
- let start = 0;
6
- let end = array.length - 1;
7
- while (start <= end) {
8
- const middle = Math.floor((start + end) / 2);
9
- if (array[middle].element === element) {
10
- return middle;
11
- }
12
- if (array[middle].element.compareDocumentPosition(element) && Node.DOCUMENT_POSITION_PRECEDING) {
13
- end = middle - 1;
14
- } else {
15
- start = middle + 1;
16
- }
17
- }
18
- return start;
19
- }
20
- const DescendantContext = createContext({
21
- level: 0,
22
- descendants: []
23
- });
24
- function usePrevious(value) {
25
- const ref = useRef(null);
26
- useEffect(() => {
27
- ref.current = value;
28
- }, [value]);
29
- return ref.current;
30
- }
31
- const noop = () => {
32
- };
33
- function useDescendant(descendant) {
34
- const [, forceUpdate] = useState();
35
- const {
36
- registerDescendant = noop,
37
- unregisterDescendant = noop,
38
- descendants = [],
39
- parentId = null,
40
- level = 0
41
- } = useContext(DescendantContext);
42
- const index = descendants.findIndex(
43
- (item) => item.element === descendant.element
44
- );
45
- const previousDescendants = usePrevious(descendants);
46
- const someDescendantsHaveChanged = descendants.some(
47
- (newDescendant, position) => {
48
- return previousDescendants && previousDescendants[position];
49
- }
50
- );
51
- useEnhancedEffect(() => {
52
- if (descendant.element) {
53
- registerDescendant({
54
- ...descendant,
55
- index
56
- });
57
- return () => {
58
- unregisterDescendant(descendant.element);
59
- };
60
- }
61
- forceUpdate({});
62
- return void 0;
63
- }, [
64
- registerDescendant,
65
- unregisterDescendant,
66
- index,
67
- someDescendantsHaveChanged,
68
- descendant
69
- ]);
70
- return { parentId, index, level };
71
- }
72
- const DescendantProvider = (props) => {
73
- const { children, id, level } = props;
74
- const [items, set] = useState([]);
75
- const registerDescendant = useCallback(({ element, ...other }) => {
76
- set((oldItems) => {
77
- let newItems;
78
- if (oldItems.length === 0) {
79
- return [
80
- {
81
- ...other,
82
- element,
83
- index: 0
84
- }
85
- ];
86
- }
87
- const index = binaryFindElement(oldItems, element);
88
- if (oldItems[index] && oldItems[index].element === element) {
89
- newItems = oldItems;
90
- } else {
91
- const newItem = {
92
- ...other,
93
- element,
94
- index
95
- };
96
- newItems = oldItems.slice();
97
- newItems.splice(index, 0, newItem);
98
- }
99
- newItems.forEach((item, position) => {
100
- item.index = position;
101
- });
102
- return newItems;
103
- });
104
- }, []);
105
- const unregisterDescendant = useCallback((element) => {
106
- set(
107
- (oldItems) => oldItems.filter((item) => element !== item.element)
108
- );
109
- }, []);
110
- const value = useMemo(
111
- () => ({
112
- descendants: items,
113
- registerDescendant,
114
- unregisterDescendant,
115
- parentId: id,
116
- level
117
- }),
118
- [items, registerDescendant, unregisterDescendant, id, level]
119
- );
120
- return /* @__PURE__ */ jsx(DescendantContext.Provider, { value, children });
121
- };
122
- export {
123
- DescendantProvider,
124
- useDescendant
125
- };
@@ -1 +0,0 @@
1
- {"version":3,"file":"descendants.js","sources":["../../../../src/VerticalNavigation/TreeView/descendants.tsx"],"sourcesContent":["/**\n * Copied from https://github.com/mui-org/material-ui/blob/8763de1633d80295e7b83d8c21040dad333e6699/packages/material-ui-lab/src/TreeView/descendants.js\n * Credit: https://github.com/reach/reach-ui/blob/86a046f54d53b6420e392b3fa56dd991d9d4e458/packages/descendants/README.md\n *\n * - Added level (depth) property.\n * - Use local copy of useEnhancedEffect.\n */\n\nimport {\n createContext,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\n\nimport { useEnhancedEffect } from \"../../hooks/useEnhancedEffect\";\n\ntype Item = {\n element?;\n index?;\n [key: string]: unknown;\n};\n\nfunction binaryFindElement(array, element) {\n let start = 0;\n let end = array.length - 1;\n\n while (start <= end) {\n const middle = Math.floor((start + end) / 2);\n\n if (array[middle].element === element) {\n return middle;\n }\n\n if (\n array[middle].element.compareDocumentPosition(element) &&\n Node.DOCUMENT_POSITION_PRECEDING\n ) {\n end = middle - 1;\n } else {\n start = middle + 1;\n }\n }\n\n return start;\n}\n\nconst DescendantContext = createContext<DescendantContextValue>({\n level: 0,\n descendants: [],\n});\n\ninterface DescendantContextValue {\n level?: number;\n registerDescendant?;\n unregisterDescendant?;\n descendants: Item[];\n parentId?;\n}\n\nfunction usePrevious(value) {\n const ref = useRef(null);\n useEffect(() => {\n ref.current = value;\n }, [value]);\n return ref.current;\n}\n\nconst noop = () => {};\n\n/**\n * This hook registers our descendant by passing it into an array. We can then\n * search that array by to find its index when registering it in the component.\n * We use this for focus management, keyboard navigation, and typeahead\n * functionality for some components.\n *\n * The hook accepts the element node\n *\n * Our main goals with this are:\n * 1) maximum composability,\n * 2) minimal API friction\n * 3) SSR compatibility*\n * 4) concurrent safe\n * 5) index always up-to-date with the tree despite changes\n * 6) works with memoization of any component in the tree (hopefully)\n *\n * * As for SSR, the good news is that we don't actually need the index on the\n * server for most use-cases, as we are only using it to determine the order of\n * composed descendants for keyboard navigation.\n */\nexport function useDescendant(descendant) {\n const [, forceUpdate] = useState<{} | null>();\n const {\n registerDescendant = noop,\n unregisterDescendant = noop,\n descendants = [],\n parentId = null,\n level = 0,\n } = useContext(DescendantContext);\n\n // This will initially return -1 because we haven't registered the descendant\n // on the first render. After we register, this will then return the correct\n // index on the following render and we will re-register descendants\n // so that everything is up-to-date before the user interacts with a\n // collection.\n const index = descendants.findIndex(\n (item) => item.element === descendant.element,\n );\n\n const previousDescendants: Item[] | null = usePrevious(descendants);\n\n // We also need to re-register descendants any time ANY of the other\n // descendants have changed. My brain was melting when I wrote this and it\n // feels a little off, but checking in render and using the result in the\n // effect's dependency array works well enough.\n const someDescendantsHaveChanged = descendants.some(\n (newDescendant, position) => {\n return (\n previousDescendants && previousDescendants[position]\n // previousDescendants[position].element !== newDescendant.element\n // was not able to type check this, did not any difference\n );\n },\n );\n\n // Prevent any flashing\n useEnhancedEffect(() => {\n if (descendant.element) {\n registerDescendant({\n ...descendant,\n index,\n });\n return () => {\n unregisterDescendant(descendant.element);\n };\n }\n forceUpdate({});\n\n return undefined;\n }, [\n registerDescendant,\n unregisterDescendant,\n index,\n someDescendantsHaveChanged,\n descendant,\n ]);\n\n return { parentId, index, level };\n}\n\nexport const DescendantProvider = (props: DescendantProviderProps) => {\n const { children, id, level } = props;\n\n const [items, set] = useState<Item[]>([]);\n\n const registerDescendant = useCallback(({ element, ...other }) => {\n set((oldItems) => {\n let newItems;\n if (oldItems.length === 0) {\n // If there are no items, register at index 0 and bail.\n return [\n {\n ...other,\n element,\n index: 0,\n },\n ];\n }\n\n const index = binaryFindElement(oldItems, element);\n\n if (oldItems[index] && oldItems[index].element === element) {\n // If the element is already registered, just use the same array\n newItems = oldItems;\n } else {\n // When registering a descendant, we need to make sure we insert in\n // into the array in the same order that it appears in the DOM. So as\n // new descendants are added or maybe some are removed, we always know\n // that the array is up-to-date and correct.\n //\n // So here we look at our registered descendants and see if the new\n // element we are adding appears earlier than an existing descendant's\n // DOM node via `node.compareDocumentPosition`. If it does, we insert\n // the new element at this index. Because `registerDescendant` will be\n // called in an effect every time the descendants state value changes,\n // we should be sure that this index is accurate when descendent\n // elements come or go from our component.\n\n const newItem = {\n ...other,\n element,\n index,\n };\n\n // If an index is not found we will push the element to the end.\n newItems = oldItems.slice();\n newItems.splice(index, 0, newItem);\n }\n newItems.forEach((item, position) => {\n item.index = position;\n });\n return newItems;\n });\n }, []);\n\n const unregisterDescendant = useCallback((element: Item) => {\n set((oldItems) =>\n oldItems.filter((item: Item) => element !== item.element),\n );\n }, []);\n\n const value = useMemo(\n () => ({\n descendants: items,\n registerDescendant,\n unregisterDescendant,\n parentId: id,\n level,\n }),\n [items, registerDescendant, unregisterDescendant, id, level],\n );\n\n return (\n <DescendantContext.Provider value={value}>\n {children}\n </DescendantContext.Provider>\n );\n};\n\nexport type DescendantProviderProps = {\n children?: React.ReactNode;\n id?: string;\n level?: number;\n};\n"],"names":[],"mappings":"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"}