@workday/canvas-kit-react 12.1.0-943-next.0 → 12.1.0-945-next.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/collection/lib/useOverflowListItemMeasure.tsx +6 -2
- package/collection/lib/useOverflowListMeasure.ts +1 -1
- package/collection/lib/useOverflowListModel.tsx +90 -51
- package/collection/lib/useOverflowListTarget.tsx +5 -1
- package/dist/commonjs/action-bar/lib/ActionBar.d.ts +452 -0
- package/dist/commonjs/action-bar/lib/ActionBar.d.ts.map +1 -1
- package/dist/commonjs/action-bar/lib/ActionBarItem.d.ts +36 -0
- package/dist/commonjs/action-bar/lib/ActionBarItem.d.ts.map +1 -1
- package/dist/commonjs/action-bar/lib/ActionBarList.d.ts +36 -0
- package/dist/commonjs/action-bar/lib/ActionBarList.d.ts.map +1 -1
- package/dist/commonjs/action-bar/lib/ActionBarOverflowButton.d.ts +36 -0
- package/dist/commonjs/action-bar/lib/ActionBarOverflowButton.d.ts.map +1 -1
- package/dist/commonjs/action-bar/lib/useActionBarModel.d.ts +434 -0
- package/dist/commonjs/action-bar/lib/useActionBarModel.d.ts.map +1 -1
- package/dist/commonjs/avatar/lib/Avatar.js +21 -21
- package/dist/commonjs/badge/lib/CountBadge.js +3 -3
- package/dist/commonjs/breadcrumbs/lib/Breadcrumbs.d.ts +525 -385
- package/dist/commonjs/breadcrumbs/lib/Breadcrumbs.d.ts.map +1 -1
- package/dist/commonjs/breadcrumbs/lib/BreadcrumbsCurrentItem.d.ts +36 -0
- package/dist/commonjs/breadcrumbs/lib/BreadcrumbsCurrentItem.d.ts.map +1 -1
- package/dist/commonjs/breadcrumbs/lib/BreadcrumbsItem.d.ts +36 -0
- package/dist/commonjs/breadcrumbs/lib/BreadcrumbsItem.d.ts.map +1 -1
- package/dist/commonjs/breadcrumbs/lib/BreadcrumbsList.d.ts +18 -0
- package/dist/commonjs/breadcrumbs/lib/BreadcrumbsList.d.ts.map +1 -1
- package/dist/commonjs/breadcrumbs/lib/BreadcrumbsOverflowButton.d.ts +36 -0
- package/dist/commonjs/breadcrumbs/lib/BreadcrumbsOverflowButton.d.ts.map +1 -1
- package/dist/commonjs/breadcrumbs/lib/hooks/useBreadcrumbsModel.d.ts +434 -0
- package/dist/commonjs/breadcrumbs/lib/hooks/useBreadcrumbsModel.d.ts.map +1 -1
- package/dist/commonjs/button/lib/BaseButton.js +21 -21
- package/dist/commonjs/button/lib/DeleteButton.js +1 -1
- package/dist/commonjs/button/lib/PrimaryButton.js +2 -2
- package/dist/commonjs/button/lib/SecondaryButton.js +2 -2
- package/dist/commonjs/button/lib/TertiaryButton.js +18 -18
- package/dist/commonjs/card/lib/Card.js +1 -1
- package/dist/commonjs/card/lib/CardBody.js +1 -1
- package/dist/commonjs/card/lib/CardHeading.js +1 -1
- package/dist/commonjs/checkbox/lib/CheckBackground.js +3 -3
- package/dist/commonjs/checkbox/lib/CheckboxCheck.js +5 -5
- package/dist/commonjs/checkbox/lib/CheckboxContainer.js +1 -1
- package/dist/commonjs/checkbox/lib/CheckboxInput.js +5 -5
- package/dist/commonjs/checkbox/lib/CheckboxRipple.js +1 -1
- package/dist/commonjs/collection/lib/ListBox.js +3 -3
- package/dist/commonjs/collection/lib/useOverflowListItemMeasure.d.ts +18 -0
- package/dist/commonjs/collection/lib/useOverflowListItemMeasure.d.ts.map +1 -1
- package/dist/commonjs/collection/lib/useOverflowListItemMeasure.js +5 -2
- package/dist/commonjs/collection/lib/useOverflowListMeasure.d.ts +18 -0
- package/dist/commonjs/collection/lib/useOverflowListMeasure.d.ts.map +1 -1
- package/dist/commonjs/collection/lib/useOverflowListMeasure.js +1 -1
- package/dist/commonjs/collection/lib/useOverflowListModel.d.ts +846 -1
- package/dist/commonjs/collection/lib/useOverflowListModel.d.ts.map +1 -1
- package/dist/commonjs/collection/lib/useOverflowListModel.js +73 -35
- package/dist/commonjs/collection/lib/useOverflowListTarget.d.ts +18 -0
- package/dist/commonjs/collection/lib/useOverflowListTarget.d.ts.map +1 -1
- package/dist/commonjs/collection/lib/useOverflowListTarget.js +4 -1
- package/dist/commonjs/combobox/lib/ComboboxMenuList.js +1 -1
- package/dist/commonjs/common/lib/AccessibleHide.js +1 -1
- package/dist/commonjs/common/lib/CanvasProvider.js +1 -1
- package/dist/commonjs/form-field/lib/FormFieldContainer.js +1 -1
- package/dist/commonjs/form-field/lib/FormFieldField.js +1 -1
- package/dist/commonjs/form-field/lib/FormFieldGroupLabel.js +5 -5
- package/dist/commonjs/form-field/lib/FormFieldGroupList.js +3 -3
- package/dist/commonjs/form-field/lib/FormFieldHint.js +3 -3
- package/dist/commonjs/form-field/lib/FormFieldLabel.js +6 -6
- package/dist/commonjs/form-field/lib/formFieldStencil.js +8 -8
- package/dist/commonjs/icon/lib/AccentIcon.js +2 -2
- package/dist/commonjs/icon/lib/AppletIcon.js +1 -1
- package/dist/commonjs/icon/lib/Graphic.js +2 -2
- package/dist/commonjs/icon/lib/Svg.js +2 -2
- package/dist/commonjs/icon/lib/SystemIcon.js +1 -1
- package/dist/commonjs/icon/lib/SystemIconCircle.js +1 -1
- package/dist/commonjs/loading-dots/lib/LoadingDots.js +2 -2
- package/dist/commonjs/menu/lib/MenuCard.js +1 -1
- package/dist/commonjs/menu/lib/MenuItem.js +1 -1
- package/dist/commonjs/menu/lib/MenuList.js +3 -3
- package/dist/commonjs/menu/lib/MenuOption.js +1 -1
- package/dist/commonjs/modal/lib/ModalBody.js +1 -1
- package/dist/commonjs/modal/lib/ModalCard.js +1 -1
- package/dist/commonjs/modal/lib/ModalHeading.js +1 -1
- package/dist/commonjs/modal/lib/ModalOverflowOverlay.js +1 -1
- package/dist/commonjs/modal/lib/ModalOverlay.js +2 -2
- package/dist/commonjs/popup/lib/PopupBody.js +1 -1
- package/dist/commonjs/popup/lib/PopupCard.js +2 -2
- package/dist/commonjs/popup/lib/PopupCloseIcon.js +1 -1
- package/dist/commonjs/popup/lib/PopupHeading.js +1 -1
- package/dist/commonjs/select/lib/SelectCard.js +1 -1
- package/dist/commonjs/select/lib/SelectInput.js +3 -3
- package/dist/commonjs/switch/lib/Switch.js +7 -7
- package/dist/commonjs/table/lib/Table.js +1 -1
- package/dist/commonjs/table/lib/TableBody.js +1 -1
- package/dist/commonjs/table/lib/TableCaption.js +1 -1
- package/dist/commonjs/table/lib/TableCell.js +1 -1
- package/dist/commonjs/table/lib/TableFooter.js +1 -1
- package/dist/commonjs/table/lib/TableHead.js +1 -1
- package/dist/commonjs/table/lib/TableHeader.js +1 -1
- package/dist/commonjs/table/lib/TableRow.js +1 -1
- package/dist/commonjs/tabs/lib/Tabs.d.ts +520 -0
- package/dist/commonjs/tabs/lib/Tabs.d.ts.map +1 -1
- package/dist/commonjs/tabs/lib/TabsItem.d.ts +36 -0
- package/dist/commonjs/tabs/lib/TabsItem.d.ts.map +1 -1
- package/dist/commonjs/tabs/lib/TabsList.d.ts +36 -0
- package/dist/commonjs/tabs/lib/TabsList.d.ts.map +1 -1
- package/dist/commonjs/tabs/lib/TabsOverflowButton.d.ts +36 -0
- package/dist/commonjs/tabs/lib/TabsOverflowButton.d.ts.map +1 -1
- package/dist/commonjs/tabs/lib/TabsPanel.d.ts +36 -0
- package/dist/commonjs/tabs/lib/TabsPanel.d.ts.map +1 -1
- package/dist/commonjs/tabs/lib/TabsPanels.d.ts +18 -0
- package/dist/commonjs/tabs/lib/TabsPanels.d.ts.map +1 -1
- package/dist/commonjs/tabs/lib/useTabsModel.d.ts +530 -0
- package/dist/commonjs/tabs/lib/useTabsModel.d.ts.map +1 -1
- package/dist/commonjs/text/lib/LabelText.js +6 -6
- package/dist/commonjs/text/lib/Text.js +16 -16
- package/dist/commonjs/text/lib/TypeLevelComponents.js +4 -4
- package/dist/commonjs/text-area/lib/TextArea.js +5 -5
- package/dist/commonjs/text-input/lib/InputGroup.js +6 -6
- package/dist/commonjs/text-input/lib/TextInput.js +5 -5
- package/dist/commonjs/toast/lib/Toast.js +1 -1
- package/dist/commonjs/toast/lib/ToastBody.js +1 -1
- package/dist/commonjs/toast/lib/ToastCloseIcon.js +1 -1
- package/dist/commonjs/toast/lib/ToastIcon.js +1 -1
- package/dist/commonjs/toast/lib/ToastMessage.js +1 -1
- package/dist/es6/action-bar/lib/ActionBar.d.ts +452 -0
- package/dist/es6/action-bar/lib/ActionBar.d.ts.map +1 -1
- package/dist/es6/action-bar/lib/ActionBarItem.d.ts +36 -0
- package/dist/es6/action-bar/lib/ActionBarItem.d.ts.map +1 -1
- package/dist/es6/action-bar/lib/ActionBarList.d.ts +36 -0
- package/dist/es6/action-bar/lib/ActionBarList.d.ts.map +1 -1
- package/dist/es6/action-bar/lib/ActionBarOverflowButton.d.ts +36 -0
- package/dist/es6/action-bar/lib/ActionBarOverflowButton.d.ts.map +1 -1
- package/dist/es6/action-bar/lib/useActionBarModel.d.ts +434 -0
- package/dist/es6/action-bar/lib/useActionBarModel.d.ts.map +1 -1
- package/dist/es6/avatar/lib/Avatar.js +21 -21
- package/dist/es6/badge/lib/CountBadge.js +3 -3
- package/dist/es6/breadcrumbs/lib/Breadcrumbs.d.ts +525 -385
- package/dist/es6/breadcrumbs/lib/Breadcrumbs.d.ts.map +1 -1
- package/dist/es6/breadcrumbs/lib/BreadcrumbsCurrentItem.d.ts +36 -0
- package/dist/es6/breadcrumbs/lib/BreadcrumbsCurrentItem.d.ts.map +1 -1
- package/dist/es6/breadcrumbs/lib/BreadcrumbsItem.d.ts +36 -0
- package/dist/es6/breadcrumbs/lib/BreadcrumbsItem.d.ts.map +1 -1
- package/dist/es6/breadcrumbs/lib/BreadcrumbsList.d.ts +18 -0
- package/dist/es6/breadcrumbs/lib/BreadcrumbsList.d.ts.map +1 -1
- package/dist/es6/breadcrumbs/lib/BreadcrumbsOverflowButton.d.ts +36 -0
- package/dist/es6/breadcrumbs/lib/BreadcrumbsOverflowButton.d.ts.map +1 -1
- package/dist/es6/breadcrumbs/lib/hooks/useBreadcrumbsModel.d.ts +434 -0
- package/dist/es6/breadcrumbs/lib/hooks/useBreadcrumbsModel.d.ts.map +1 -1
- package/dist/es6/button/lib/BaseButton.js +21 -21
- package/dist/es6/button/lib/DeleteButton.js +1 -1
- package/dist/es6/button/lib/PrimaryButton.js +2 -2
- package/dist/es6/button/lib/SecondaryButton.js +2 -2
- package/dist/es6/button/lib/TertiaryButton.js +18 -18
- package/dist/es6/card/lib/Card.js +1 -1
- package/dist/es6/card/lib/CardBody.js +1 -1
- package/dist/es6/card/lib/CardHeading.js +1 -1
- package/dist/es6/checkbox/lib/CheckBackground.js +3 -3
- package/dist/es6/checkbox/lib/CheckboxCheck.js +5 -5
- package/dist/es6/checkbox/lib/CheckboxContainer.js +1 -1
- package/dist/es6/checkbox/lib/CheckboxInput.js +5 -5
- package/dist/es6/checkbox/lib/CheckboxRipple.js +1 -1
- package/dist/es6/collection/lib/ListBox.js +3 -3
- package/dist/es6/collection/lib/useOverflowListItemMeasure.d.ts +18 -0
- package/dist/es6/collection/lib/useOverflowListItemMeasure.d.ts.map +1 -1
- package/dist/es6/collection/lib/useOverflowListItemMeasure.js +5 -2
- package/dist/es6/collection/lib/useOverflowListMeasure.d.ts +18 -0
- package/dist/es6/collection/lib/useOverflowListMeasure.d.ts.map +1 -1
- package/dist/es6/collection/lib/useOverflowListMeasure.js +1 -1
- package/dist/es6/collection/lib/useOverflowListModel.d.ts +846 -1
- package/dist/es6/collection/lib/useOverflowListModel.d.ts.map +1 -1
- package/dist/es6/collection/lib/useOverflowListModel.js +73 -35
- package/dist/es6/collection/lib/useOverflowListTarget.d.ts +18 -0
- package/dist/es6/collection/lib/useOverflowListTarget.d.ts.map +1 -1
- package/dist/es6/collection/lib/useOverflowListTarget.js +4 -1
- package/dist/es6/combobox/lib/ComboboxMenuList.js +1 -1
- package/dist/es6/common/lib/AccessibleHide.js +1 -1
- package/dist/es6/common/lib/CanvasProvider.js +1 -1
- package/dist/es6/form-field/lib/FormFieldContainer.js +1 -1
- package/dist/es6/form-field/lib/FormFieldField.js +1 -1
- package/dist/es6/form-field/lib/FormFieldGroupLabel.js +5 -5
- package/dist/es6/form-field/lib/FormFieldGroupList.js +3 -3
- package/dist/es6/form-field/lib/FormFieldHint.js +3 -3
- package/dist/es6/form-field/lib/FormFieldLabel.js +6 -6
- package/dist/es6/form-field/lib/formFieldStencil.js +8 -8
- package/dist/es6/icon/lib/AccentIcon.js +2 -2
- package/dist/es6/icon/lib/AppletIcon.js +1 -1
- package/dist/es6/icon/lib/Graphic.js +2 -2
- package/dist/es6/icon/lib/Svg.js +2 -2
- package/dist/es6/icon/lib/SystemIcon.js +1 -1
- package/dist/es6/icon/lib/SystemIconCircle.js +1 -1
- package/dist/es6/loading-dots/lib/LoadingDots.js +2 -2
- package/dist/es6/menu/lib/MenuCard.js +1 -1
- package/dist/es6/menu/lib/MenuItem.js +1 -1
- package/dist/es6/menu/lib/MenuList.js +3 -3
- package/dist/es6/menu/lib/MenuOption.js +1 -1
- package/dist/es6/modal/lib/ModalBody.js +1 -1
- package/dist/es6/modal/lib/ModalCard.js +1 -1
- package/dist/es6/modal/lib/ModalHeading.js +1 -1
- package/dist/es6/modal/lib/ModalOverflowOverlay.js +1 -1
- package/dist/es6/modal/lib/ModalOverlay.js +2 -2
- package/dist/es6/popup/lib/PopupBody.js +1 -1
- package/dist/es6/popup/lib/PopupCard.js +2 -2
- package/dist/es6/popup/lib/PopupCloseIcon.js +1 -1
- package/dist/es6/popup/lib/PopupHeading.js +1 -1
- package/dist/es6/select/lib/SelectCard.js +1 -1
- package/dist/es6/select/lib/SelectInput.js +3 -3
- package/dist/es6/switch/lib/Switch.js +7 -7
- package/dist/es6/table/lib/Table.js +1 -1
- package/dist/es6/table/lib/TableBody.js +1 -1
- package/dist/es6/table/lib/TableCaption.js +1 -1
- package/dist/es6/table/lib/TableCell.js +1 -1
- package/dist/es6/table/lib/TableFooter.js +1 -1
- package/dist/es6/table/lib/TableHead.js +1 -1
- package/dist/es6/table/lib/TableHeader.js +1 -1
- package/dist/es6/table/lib/TableRow.js +1 -1
- package/dist/es6/tabs/lib/Tabs.d.ts +520 -0
- package/dist/es6/tabs/lib/Tabs.d.ts.map +1 -1
- package/dist/es6/tabs/lib/TabsItem.d.ts +36 -0
- package/dist/es6/tabs/lib/TabsItem.d.ts.map +1 -1
- package/dist/es6/tabs/lib/TabsList.d.ts +36 -0
- package/dist/es6/tabs/lib/TabsList.d.ts.map +1 -1
- package/dist/es6/tabs/lib/TabsOverflowButton.d.ts +36 -0
- package/dist/es6/tabs/lib/TabsOverflowButton.d.ts.map +1 -1
- package/dist/es6/tabs/lib/TabsPanel.d.ts +36 -0
- package/dist/es6/tabs/lib/TabsPanel.d.ts.map +1 -1
- package/dist/es6/tabs/lib/TabsPanels.d.ts +18 -0
- package/dist/es6/tabs/lib/TabsPanels.d.ts.map +1 -1
- package/dist/es6/tabs/lib/useTabsModel.d.ts +530 -0
- package/dist/es6/tabs/lib/useTabsModel.d.ts.map +1 -1
- package/dist/es6/text/lib/LabelText.js +6 -6
- package/dist/es6/text/lib/Text.js +16 -16
- package/dist/es6/text/lib/TypeLevelComponents.js +4 -4
- package/dist/es6/text-area/lib/TextArea.js +5 -5
- package/dist/es6/text-input/lib/InputGroup.js +6 -6
- package/dist/es6/text-input/lib/TextInput.js +5 -5
- package/dist/es6/toast/lib/Toast.js +1 -1
- package/dist/es6/toast/lib/ToastBody.js +1 -1
- package/dist/es6/toast/lib/ToastCloseIcon.js +1 -1
- package/dist/es6/toast/lib/ToastIcon.js +1 -1
- package/dist/es6/toast/lib/ToastMessage.js +1 -1
- package/package.json +4 -4
|
@@ -26,17 +26,21 @@ export const useOverflowListItemMeasure = createElemPropsHook(useOverflowListMod
|
|
|
26
26
|
useMountLayout(() => {
|
|
27
27
|
if (localRef.current) {
|
|
28
28
|
const styles = getComputedStyle(localRef.current);
|
|
29
|
-
model.events.
|
|
29
|
+
model.events.addItemSize({
|
|
30
30
|
id: name,
|
|
31
31
|
width:
|
|
32
32
|
localRef.current.offsetWidth +
|
|
33
33
|
parseFloat(styles.marginLeft) +
|
|
34
34
|
parseFloat(styles.marginRight),
|
|
35
|
+
height:
|
|
36
|
+
localRef.current.offsetHeight +
|
|
37
|
+
parseFloat(styles.marginTop) +
|
|
38
|
+
parseFloat(styles.marginBottom),
|
|
35
39
|
});
|
|
36
40
|
}
|
|
37
41
|
|
|
38
42
|
return () => {
|
|
39
|
-
model.events.
|
|
43
|
+
model.events.removeItemSize({id: name});
|
|
40
44
|
};
|
|
41
45
|
});
|
|
42
46
|
|
|
@@ -19,7 +19,7 @@ export const useOverflowListMeasure = createElemPropsHook(useOverflowListModel)(
|
|
|
19
19
|
|
|
20
20
|
useResizeObserver({
|
|
21
21
|
ref: localRef,
|
|
22
|
-
onResize: model.events.
|
|
22
|
+
onResize: model.events.setContainerSize,
|
|
23
23
|
});
|
|
24
24
|
useMountLayout(() => {
|
|
25
25
|
if (localRef.current) {
|
|
@@ -5,17 +5,17 @@ import {useSelectionListModel} from './useSelectionListModel';
|
|
|
5
5
|
import {Item} from './useBaseListModel';
|
|
6
6
|
|
|
7
7
|
export function getHiddenIds(
|
|
8
|
-
|
|
8
|
+
containerSize: number,
|
|
9
9
|
containerGap: number,
|
|
10
|
-
|
|
11
|
-
|
|
10
|
+
overflowTargetSize: number,
|
|
11
|
+
itemSizeCache: Record<string, number>,
|
|
12
12
|
selectedIds: string[] | 'all',
|
|
13
13
|
items: Item<any>[]
|
|
14
14
|
): string[] {
|
|
15
15
|
/** Allows us to prioritize showing the selected item */
|
|
16
16
|
let selectedKey: undefined | string;
|
|
17
17
|
/** Tally of combined item widths. We'll add items that fit until the container is full */
|
|
18
|
-
let
|
|
18
|
+
let itemSize = 0;
|
|
19
19
|
/** Tally ids that won't fit inside the container. These will be used by components to hide
|
|
20
20
|
* elements that won't fit in the container */
|
|
21
21
|
const hiddenIds: string[] = [];
|
|
@@ -31,31 +31,31 @@ export function getHiddenIds(
|
|
|
31
31
|
}
|
|
32
32
|
|
|
33
33
|
if (
|
|
34
|
-
Object.keys(
|
|
35
|
-
(sum, key, index) => sum +
|
|
34
|
+
Object.keys(itemSizeCache).reduce(
|
|
35
|
+
(sum, key, index) => sum + itemSizeCache[key] + (index > 0 ? containerGap : 0),
|
|
36
36
|
0
|
|
37
|
-
) <=
|
|
37
|
+
) <= containerSize
|
|
38
38
|
) {
|
|
39
39
|
// All items fit, return empty array
|
|
40
40
|
return [];
|
|
41
41
|
} else if (selectedKey) {
|
|
42
|
-
if (
|
|
42
|
+
if (itemSizeCache[selectedKey] + overflowTargetSize > containerSize) {
|
|
43
43
|
// If the selected item doesn't fit, only show overflow (all items hidden)
|
|
44
|
-
return Object.keys(
|
|
44
|
+
return Object.keys(itemSizeCache);
|
|
45
45
|
} else {
|
|
46
46
|
// at least the selected item and overflow target fit. Update our itemWidth with the sum
|
|
47
|
-
|
|
47
|
+
itemSize += itemSizeCache[selectedKey] + overflowTargetSize;
|
|
48
48
|
shouldAddGap = true;
|
|
49
49
|
}
|
|
50
50
|
} else {
|
|
51
|
-
|
|
51
|
+
itemSize += overflowTargetSize;
|
|
52
52
|
}
|
|
53
53
|
|
|
54
|
-
for (const key in
|
|
54
|
+
for (const key in itemSizeCache) {
|
|
55
55
|
if (key !== selectedKey) {
|
|
56
|
-
|
|
56
|
+
itemSize += itemSizeCache[key] + (shouldAddGap ? containerGap : 0);
|
|
57
57
|
shouldAddGap = true;
|
|
58
|
-
if (
|
|
58
|
+
if (itemSize > containerSize) {
|
|
59
59
|
hiddenIds.push(key);
|
|
60
60
|
}
|
|
61
61
|
}
|
|
@@ -81,13 +81,13 @@ export const useOverflowListModel = createModelHook({
|
|
|
81
81
|
const shouldCalculateOverflow =
|
|
82
82
|
config.shouldCalculateOverflow === undefined ? true : config.shouldCalculateOverflow;
|
|
83
83
|
const [hiddenIds, setHiddenIds] = React.useState(config.initialHiddenIds);
|
|
84
|
-
const [
|
|
85
|
-
const [
|
|
84
|
+
const [itemSizeCache, setItemSizeCache] = React.useState<Record<string, number>>({});
|
|
85
|
+
const [containerSize, setContainerSize] = React.useState(0);
|
|
86
86
|
const [containerGap, setContainerGap] = React.useState(0);
|
|
87
|
-
const
|
|
88
|
-
const
|
|
87
|
+
const containerSizeRef = React.useRef(0);
|
|
88
|
+
const itemSizeCacheRef = React.useRef(itemSizeCache);
|
|
89
89
|
const [overflowTargetWidth, setOverflowTargetWidth] = React.useState(0);
|
|
90
|
-
const
|
|
90
|
+
const overflowTargetSizeRef = React.useRef(0);
|
|
91
91
|
|
|
92
92
|
const internalHiddenIds = shouldCalculateOverflow ? hiddenIds : [];
|
|
93
93
|
|
|
@@ -103,8 +103,16 @@ export const useOverflowListModel = createModelHook({
|
|
|
103
103
|
const state = {
|
|
104
104
|
...model.state,
|
|
105
105
|
hiddenIds: internalHiddenIds,
|
|
106
|
-
|
|
107
|
-
|
|
106
|
+
itemSizeCache,
|
|
107
|
+
/**
|
|
108
|
+
* @deprecated Use `itemSizeCache` instead
|
|
109
|
+
*/
|
|
110
|
+
itemWidthCache: itemSizeCache,
|
|
111
|
+
containerSize,
|
|
112
|
+
/**
|
|
113
|
+
* @deprecated Use `containerSize` instead
|
|
114
|
+
*/
|
|
115
|
+
containerWidth: containerSize,
|
|
108
116
|
containerGap,
|
|
109
117
|
overflowTargetWidth,
|
|
110
118
|
};
|
|
@@ -114,10 +122,10 @@ export const useOverflowListModel = createModelHook({
|
|
|
114
122
|
select(data: Parameters<typeof model.events.select>[0]) {
|
|
115
123
|
const {selectedIds} = model.selection.select(data.id, state);
|
|
116
124
|
const ids = getHiddenIds(
|
|
117
|
-
|
|
125
|
+
containerSizeRef.current,
|
|
118
126
|
containerGap,
|
|
119
|
-
|
|
120
|
-
|
|
127
|
+
overflowTargetSizeRef.current,
|
|
128
|
+
itemSizeCacheRef.current,
|
|
121
129
|
selectedIds,
|
|
122
130
|
config.items
|
|
123
131
|
);
|
|
@@ -125,69 +133,93 @@ export const useOverflowListModel = createModelHook({
|
|
|
125
133
|
|
|
126
134
|
setHiddenIds(ids);
|
|
127
135
|
},
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
136
|
+
setContainerSize(data: {width?: number; height?: number}) {
|
|
137
|
+
containerSizeRef.current =
|
|
138
|
+
model.state.orientation === 'horizontal' ? data.width || 0 : data.height || 0;
|
|
139
|
+
setContainerSize(containerSizeRef.current);
|
|
132
140
|
const ids = getHiddenIds(
|
|
133
|
-
|
|
141
|
+
containerSizeRef.current,
|
|
134
142
|
containerGap,
|
|
135
|
-
|
|
136
|
-
|
|
143
|
+
overflowTargetSizeRef.current,
|
|
144
|
+
itemSizeCacheRef.current,
|
|
137
145
|
state.selectedIds,
|
|
138
146
|
config.items
|
|
139
147
|
);
|
|
140
|
-
|
|
141
148
|
setHiddenIds(ids);
|
|
142
149
|
},
|
|
150
|
+
/**
|
|
151
|
+
* @deprecated Use `setContainerSize` instead and pass both `width` and `height`
|
|
152
|
+
*/
|
|
153
|
+
setContainerWidth(data: {width?: number}) {
|
|
154
|
+
events.setContainerSize({width: data.width, height: 0});
|
|
155
|
+
},
|
|
143
156
|
setContainerGap(data: {size: number}) {
|
|
144
157
|
setContainerGap(data.size);
|
|
145
158
|
|
|
146
159
|
const ids = getHiddenIds(
|
|
147
|
-
|
|
160
|
+
containerSizeRef.current,
|
|
148
161
|
data.size,
|
|
149
|
-
|
|
150
|
-
|
|
162
|
+
overflowTargetSizeRef.current,
|
|
163
|
+
itemSizeCacheRef.current,
|
|
151
164
|
state.selectedIds,
|
|
152
165
|
config.items
|
|
153
166
|
);
|
|
154
167
|
|
|
155
168
|
setHiddenIds(ids);
|
|
156
169
|
},
|
|
170
|
+
setOverflowTargetSize(data: {width: number; height: number}) {
|
|
171
|
+
overflowTargetSizeRef.current =
|
|
172
|
+
model.state.orientation === 'horizontal' ? data.width || 0 : data.height || 0;
|
|
173
|
+
setOverflowTargetWidth(overflowTargetSizeRef.current);
|
|
174
|
+
},
|
|
175
|
+
|
|
176
|
+
/**
|
|
177
|
+
*
|
|
178
|
+
* @deprecated `setOverflowTargetWidth` is deprecated. Please use `setOverflowTargetSize` and pass in the `width` and set `height` to `0`.
|
|
179
|
+
*/
|
|
157
180
|
setOverflowTargetWidth(data: {width: number}) {
|
|
158
|
-
|
|
159
|
-
|
|
181
|
+
overflowTargetSizeRef.current = data.width;
|
|
182
|
+
events.setOverflowTargetSize({width: overflowTargetSizeRef.current, height: 0});
|
|
160
183
|
},
|
|
184
|
+
|
|
185
|
+
/**
|
|
186
|
+
*
|
|
187
|
+
* @deprecated `addItemWidth` is deprecated. Please use `addItemSize` and set the `width`
|
|
188
|
+
*/
|
|
161
189
|
addItemWidth(data: {id: string; width: number}) {
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
190
|
+
events.addItemSize({id: data.id, width: data.width, height: 0});
|
|
191
|
+
},
|
|
192
|
+
addItemSize(data: {id: string; width: number; height: number}) {
|
|
193
|
+
itemSizeCacheRef.current = {
|
|
194
|
+
...itemSizeCacheRef.current,
|
|
195
|
+
[data.id]: model.state.orientation === 'horizontal' ? data.width : data.height,
|
|
165
196
|
};
|
|
166
197
|
|
|
167
|
-
|
|
198
|
+
|
|
199
|
+
setItemSizeCache(itemSizeCacheRef.current);
|
|
168
200
|
|
|
169
201
|
const ids = getHiddenIds(
|
|
170
|
-
|
|
202
|
+
containerSizeRef.current,
|
|
171
203
|
containerGap,
|
|
172
|
-
|
|
173
|
-
|
|
204
|
+
overflowTargetSizeRef.current,
|
|
205
|
+
itemSizeCacheRef.current,
|
|
174
206
|
state.selectedIds,
|
|
175
207
|
config.items
|
|
176
208
|
);
|
|
177
209
|
|
|
178
210
|
setHiddenIds(ids);
|
|
179
211
|
},
|
|
180
|
-
|
|
181
|
-
const newCache = {...
|
|
212
|
+
removeItemSize(data: {id: string}) {
|
|
213
|
+
const newCache = {...itemSizeCacheRef.current};
|
|
182
214
|
delete newCache[data.id];
|
|
183
|
-
|
|
184
|
-
|
|
215
|
+
itemSizeCacheRef.current = newCache;
|
|
216
|
+
setItemSizeCache(itemSizeCacheRef.current);
|
|
185
217
|
|
|
186
218
|
const ids = getHiddenIds(
|
|
187
|
-
|
|
219
|
+
containerSizeRef.current,
|
|
188
220
|
containerGap,
|
|
189
|
-
|
|
190
|
-
|
|
221
|
+
overflowTargetSizeRef.current,
|
|
222
|
+
itemSizeCacheRef.current,
|
|
191
223
|
state.selectedIds !== 'all'
|
|
192
224
|
? state.selectedIds.filter(sId => data.id !== sId)
|
|
193
225
|
: state.selectedIds,
|
|
@@ -196,6 +228,13 @@ export const useOverflowListModel = createModelHook({
|
|
|
196
228
|
|
|
197
229
|
setHiddenIds(ids);
|
|
198
230
|
},
|
|
231
|
+
/**
|
|
232
|
+
*
|
|
233
|
+
* @deprecated `removeItemWidth` is deprecated. Please use `removeItemSize`.
|
|
234
|
+
*/
|
|
235
|
+
removeItemWidth(data: {id: string}) {
|
|
236
|
+
events.removeItemSize({id: data.id});
|
|
237
|
+
},
|
|
199
238
|
addHiddenKey(data: {id: string}) {
|
|
200
239
|
setHiddenIds(ids => ids.concat(data.id));
|
|
201
240
|
},
|
|
@@ -24,11 +24,15 @@ export const useOverflowListTarget = createElemPropsHook(useOverflowListModel)((
|
|
|
24
24
|
if (localRef.current) {
|
|
25
25
|
const styles = getComputedStyle(localRef.current);
|
|
26
26
|
|
|
27
|
-
model.events.
|
|
27
|
+
model.events.setOverflowTargetSize({
|
|
28
28
|
width:
|
|
29
29
|
localRef.current.offsetWidth +
|
|
30
30
|
parseFloat(styles.marginLeft) +
|
|
31
31
|
parseFloat(styles.marginRight),
|
|
32
|
+
height:
|
|
33
|
+
localRef.current.offsetWidth +
|
|
34
|
+
parseFloat(styles.marginTop) +
|
|
35
|
+
parseFloat(styles.marginBottom),
|
|
32
36
|
});
|
|
33
37
|
}
|
|
34
38
|
});
|