@infomaximum/ui-kit 0.17.2 → 0.17.3

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 (62) hide show
  1. package/dist/components/Button/Button.types.d.ts +1 -1
  2. package/dist/components/ConfigProvider/ConfigProvider.js +11 -4
  3. package/dist/components/Switch/Switch.js +4 -4
  4. package/dist/components/Switch/Switch.styles.js +7 -3
  5. package/dist/components/Switch/Switch.types.d.ts +1 -1
  6. package/dist/components/Table/Table.js +15 -23
  7. package/dist/components/Table/Table.styles.d.ts +1 -1
  8. package/dist/components/Table/Table.styles.js +2 -2
  9. package/dist/components/Table/Table.types.d.ts +25 -7
  10. package/dist/components/Table/components/Body/Body.js +1 -1
  11. package/dist/components/Table/components/Body/components/BodyCell/BodyCell.js +4 -3
  12. package/dist/components/Table/components/Body/components/BodyCell/BodyCell.styles.d.ts +2 -2
  13. package/dist/components/Table/components/Body/components/BodyCell/BodyCell.styles.js +3 -3
  14. package/dist/components/Table/components/Body/components/MeasureCell/MeasureCell.js +11 -3
  15. package/dist/components/Table/components/Body/components/MeasureCell/MeasureCell.types.d.ts +1 -0
  16. package/dist/components/Table/components/Body/components/MeasureRow/MeasureRow.js +2 -2
  17. package/dist/components/Table/components/Cell/Cell.styles.d.ts +2 -2
  18. package/dist/components/Table/components/Cell/Cell.styles.js +3 -3
  19. package/dist/components/Table/components/Cell/Cell.types.d.ts +2 -2
  20. package/dist/components/Table/components/EmptyDataRow/EmptyDataRow.js +5 -5
  21. package/dist/components/Table/components/EmptyDataRow/EmptyDataRow.styles.d.ts +2 -2
  22. package/dist/components/Table/components/EmptyDataRow/EmptyDataRow.styles.js +4 -9
  23. package/dist/components/Table/components/FixedHeader/FixedHeader.js +1 -1
  24. package/dist/components/Table/components/FixedHeader/components/FixedHeaderColGroup/FixedHeaderColGroup.js +18 -12
  25. package/dist/components/Table/components/Header/Header.js +1 -1
  26. package/dist/components/Table/components/Header/components/HeaderCell/HeaderCell.js +2 -2
  27. package/dist/components/Table/components/Header/components/HeaderCell/HeaderCell.styles.d.ts +2 -2
  28. package/dist/components/Table/components/Header/components/HeaderCell/HeaderCell.styles.js +3 -3
  29. package/dist/components/Table/contexts/tableContext/TableContext.js +9 -1
  30. package/dist/components/Table/contexts/tableContext/TableContext.types.d.ts +3 -2
  31. package/dist/components/Table/features/tableRowSelection/components/CheckboxCellContentWrapper/CheckboxCellContentWrapper.js +1 -1
  32. package/dist/components/Table/features/tableRowSelection/components/HeaderCheckboxCellContentWrapper/HeaderCheckboxCellContentWrapper.js +1 -1
  33. package/dist/components/Table/features/tableRowSelection/components/RadioCellContentWrapper/RadioCellContentWrapper.js +1 -1
  34. package/dist/components/Table/features/tableSort/components/HeaderCellWithSort/HeaderCellWithSort.js +2 -2
  35. package/dist/components/Table/features/tableStaticContext/contexts/tableStaticContext/TableStaticContext.d.ts +1 -0
  36. package/dist/components/Table/features/tableStaticContext/contexts/tableStaticContext/TableStaticContext.js +2 -1
  37. package/dist/components/Table/features/tableStaticContext/contexts/tableStaticContext/TableStaticContext.types.d.ts +1 -0
  38. package/dist/components/Table/hooks/useTableBordered/getBorderedInfo.d.ts +3 -0
  39. package/dist/components/Table/hooks/useTableBordered/getBorderedInfo.js +41 -0
  40. package/dist/components/Table/hooks/useTableBordered/index.d.ts +1 -0
  41. package/dist/components/Table/hooks/useTableBordered/useTableBordered.d.ts +4 -0
  42. package/dist/components/Table/hooks/useTableBordered/useTableBordered.js +14 -0
  43. package/dist/components/Table/hooks/useTableBordered/useTableBordered.types.d.ts +3 -0
  44. package/dist/components/Table/hooks/useTableVisualParamsChange/index.d.ts +1 -0
  45. package/dist/components/Table/hooks/useTableVisualParamsChange/types.d.ts +6 -0
  46. package/dist/components/Table/hooks/useTableVisualParamsChange/useTableVisualParamsChange.js +17 -4
  47. package/dist/components/Table/hooks/useTableVisualParamsChange/utils.d.ts +1 -0
  48. package/dist/components/Table/hooks/useTableVisualParamsChange/utils.js +3 -1
  49. package/dist/components/Tabs/Tabs.js +2 -2
  50. package/dist/components/Tabs/Tabs.types.d.ts +3 -1
  51. package/dist/components/Tabs/Tabs.utils.d.ts +3 -0
  52. package/dist/components/Tabs/Tabs.utils.js +29 -1
  53. package/dist/components/Tabs/components/TabBar/TabBar.js +12 -10
  54. package/dist/components/Tabs/components/TabBar/TabBar.styles.d.ts +1 -1
  55. package/dist/components/Tabs/components/TabBar/TabBar.styles.js +3 -9
  56. package/dist/components/Tabs/components/TabItem/TabItem.js +24 -8
  57. package/dist/components/Tabs/components/TabItem/TabItem.types.d.ts +2 -0
  58. package/dist/components/Tabs/hooks/useMoreTabsController.d.ts +4 -1
  59. package/dist/components/Tabs/hooks/useMoreTabsController.js +37 -6
  60. package/dist/components/Tabs/hooks/useTabsDndController.d.ts +1 -2
  61. package/dist/components/Tabs/hooks/useTabsDndController.js +7 -4
  62. package/package.json +1 -1
@@ -2,7 +2,7 @@ import { MouseEvent } from 'react';
2
2
  import { TabItem } from '../components/TabItem/TabItem.types';
3
3
  import { DropdownItemKeyType, ItemType, MenuItem } from 'components/Dropdown/Dropdown.types';
4
4
  export declare const useMoreTabsController: (items: TabItem[], currentActiveKey: DropdownItemKeyType | undefined, currentTabElement: HTMLElement | null, onTabClick: ((activeKey: DropdownItemKeyType, event: MouseEvent) => void) | undefined, onChange: ((activeKey: DropdownItemKeyType) => void) | undefined, changeActiveKey: (key: DropdownItemKeyType) => void) => {
5
- tabsRef: import('react').MutableRefObject<HTMLDivElement | null>;
5
+ tabsRef: import('react').RefObject<HTMLDivElement>;
6
6
  dropdownMenu: {
7
7
  items: MenuItem[];
8
8
  onClick: (props: {
@@ -14,4 +14,7 @@ export declare const useMoreTabsController: (items: TabItem[], currentActiveKey:
14
14
  addHiddenTab: (itemKey: DropdownItemKeyType) => void;
15
15
  deleteHiddenTab: (itemKey: DropdownItemKeyType) => void;
16
16
  scrollToTab: (element: HTMLElement | null) => void;
17
+ updateHiddenTabs: () => void;
18
+ hasHiddenTabs: boolean;
19
+ tabItemsRefsMap: Map<DropdownItemKeyType, HTMLElement>;
17
20
  };
@@ -1,18 +1,46 @@
1
- import { useState, useRef, useCallback, useMemo } from "react";
1
+ import { useState, useRef, useCallback, useLayoutEffect, useMemo } from "react";
2
2
  import { isMenuItem } from "../../Dropdown/Dropdown.types.js";
3
3
  import { isFunction } from "lodash-es";
4
+ import { useStatic } from "../../../hooks/useStatic/useStatic.js";
5
+ import { getIntersectionRatio, intersectionThreshold } from "../Tabs.utils.js";
4
6
  const useMoreTabsController = (items, currentActiveKey, currentTabElement, onTabClick, onChange, changeActiveKey) => {
5
- const [hiddenTabs, setHiddenTabs] = useState([]);
7
+ const [hiddenTabs, setHiddenTabs] = useState(() => /* @__PURE__ */ new Set());
6
8
  const tabsRef = useRef(null);
9
+ const tabItemsRefsMap = useStatic(() => /* @__PURE__ */ new Map());
10
+ const updateHiddenTabs = useCallback(() => {
11
+ const tabs = tabsRef.current;
12
+ if (!tabs) {
13
+ return;
14
+ }
15
+ const tabsRect = tabs.getBoundingClientRect();
16
+ const updatedHiddenTabs = /* @__PURE__ */ new Set();
17
+ tabItemsRefsMap.forEach((tabItem, tabItemKey) => {
18
+ const tabItemRect = tabItem.getBoundingClientRect();
19
+ const intersectionRatio = getIntersectionRatio(tabItemRect, tabsRect);
20
+ if (intersectionRatio < intersectionThreshold) {
21
+ updatedHiddenTabs.add(tabItemKey);
22
+ }
23
+ });
24
+ if (updatedHiddenTabs.size) {
25
+ setHiddenTabs(updatedHiddenTabs);
26
+ }
27
+ }, [tabItemsRefsMap]);
28
+ useLayoutEffect(() => {
29
+ updateHiddenTabs();
30
+ }, [updateHiddenTabs]);
7
31
  const addHiddenTab = useCallback((itemKey) => {
8
- setHiddenTabs((prev) => [...prev, itemKey]);
32
+ setHiddenTabs((prev) => new Set(prev).add(itemKey));
9
33
  }, []);
10
34
  const deleteHiddenTab = useCallback((itemKey) => {
11
- setHiddenTabs((prev) => prev.filter((item) => item !== itemKey));
35
+ setHiddenTabs((prev) => {
36
+ const next = new Set(prev);
37
+ next.delete(itemKey);
38
+ return next;
39
+ });
12
40
  }, []);
13
41
  const dropdownItems = useMemo(() => {
14
42
  return items.reduce((acc, item) => {
15
- if (!hiddenTabs.includes(item.key)) {
43
+ if (!hiddenTabs.has(item.key)) {
16
44
  return acc;
17
45
  }
18
46
  const dropdownItem = {
@@ -61,7 +89,10 @@ const useMoreTabsController = (items, currentActiveKey, currentTabElement, onTab
61
89
  dropdownMenu,
62
90
  addHiddenTab,
63
91
  deleteHiddenTab,
64
- scrollToTab
92
+ scrollToTab,
93
+ updateHiddenTabs,
94
+ hasHiddenTabs: Boolean(hiddenTabs.size),
95
+ tabItemsRefsMap
65
96
  };
66
97
  };
67
98
  export {
@@ -1,8 +1,7 @@
1
1
  import { TabItem } from '../components/TabItem/TabItem.types';
2
2
  import { DragEndEvent } from '@dnd-kit/core';
3
- import { DropdownItemKeyType } from 'components/Dropdown/Dropdown.types';
4
3
  export declare const useTabsDndController: (items: TabItem[], draggable: boolean) => {
5
- tabsOrder: DropdownItemKeyType[];
4
+ tabsOrder: import('../../Dropdown/Dropdown.types').DropdownItemKeyType[];
6
5
  isDragging: boolean;
7
6
  dndEvents: {
8
7
  onDragStart: () => void;
@@ -2,13 +2,16 @@ import { useState, useRef, useEffect, useCallback } from "react";
2
2
  import { arrayMove } from "@dnd-kit/sortable";
3
3
  import { getTabKeysWithoutOrdering, getOrderedTabKeys } from "../Tabs.utils.js";
4
4
  const useTabsDndController = (items, draggable) => {
5
- const [tabsOrder, setTabsOrder] = useState([]);
5
+ const [tabsOrder, setTabsOrder] = useState(() => getTabKeysWithoutOrdering(items));
6
6
  const [isDragging, setIsDragging] = useState(false);
7
- const isInitialMount = useRef(true);
7
+ const isInitialMountRef = useRef(true);
8
8
  useEffect(() => {
9
+ if (isInitialMountRef.current) {
10
+ isInitialMountRef.current = false;
11
+ return;
12
+ }
9
13
  const newTabKeys = getTabKeysWithoutOrdering(items);
10
- if (!draggable || isInitialMount.current) {
11
- isInitialMount.current = false;
14
+ if (!draggable) {
12
15
  setTabsOrder(newTabKeys);
13
16
  return;
14
17
  }
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@infomaximum/ui-kit",
3
3
  "license": "Apache-2.0",
4
- "version": "0.17.2",
4
+ "version": "0.17.3",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
7
7
  "module": "dist/index.js",