@workday/canvas-kit-react 11.2.0-896-next.0 → 11.2.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/button/lib/DeleteButton.tsx +14 -3
- package/button/lib/PrimaryButton.tsx +14 -3
- package/button/lib/SecondaryButton.tsx +14 -3
- package/button/lib/TertiaryButton.tsx +10 -6
- package/button/lib/parts/ButtonLabelIcon.tsx +3 -2
- package/collection/lib/useOverflowListMeasure.ts +18 -4
- package/collection/lib/useOverflowListModel.tsx +34 -6
- package/dist/commonjs/action-bar/lib/ActionBar.d.ts +126 -0
- package/dist/commonjs/action-bar/lib/ActionBar.d.ts.map +1 -1
- package/dist/commonjs/action-bar/lib/ActionBarItem.d.ts +8 -0
- package/dist/commonjs/action-bar/lib/ActionBarItem.d.ts.map +1 -1
- package/dist/commonjs/action-bar/lib/ActionBarList.d.ts +9 -1
- package/dist/commonjs/action-bar/lib/ActionBarList.d.ts.map +1 -1
- package/dist/commonjs/action-bar/lib/ActionBarOverflowButton.d.ts +8 -0
- package/dist/commonjs/action-bar/lib/ActionBarOverflowButton.d.ts.map +1 -1
- package/dist/commonjs/action-bar/lib/useActionBarModel.d.ts +122 -0
- package/dist/commonjs/action-bar/lib/useActionBarModel.d.ts.map +1 -1
- package/dist/commonjs/breadcrumbs/lib/Breadcrumbs.d.ts +499 -51
- package/dist/commonjs/breadcrumbs/lib/Breadcrumbs.d.ts.map +1 -1
- package/dist/commonjs/breadcrumbs/lib/BreadcrumbsCurrentItem.d.ts +8 -0
- package/dist/commonjs/breadcrumbs/lib/BreadcrumbsCurrentItem.d.ts.map +1 -1
- package/dist/commonjs/breadcrumbs/lib/BreadcrumbsItem.d.ts +8 -0
- package/dist/commonjs/breadcrumbs/lib/BreadcrumbsItem.d.ts.map +1 -1
- package/dist/commonjs/breadcrumbs/lib/BreadcrumbsList.d.ts +4 -0
- package/dist/commonjs/breadcrumbs/lib/BreadcrumbsList.d.ts.map +1 -1
- package/dist/commonjs/breadcrumbs/lib/BreadcrumbsOverflowButton.d.ts +8 -0
- package/dist/commonjs/breadcrumbs/lib/BreadcrumbsOverflowButton.d.ts.map +1 -1
- package/dist/commonjs/breadcrumbs/lib/hooks/useBreadcrumbsModel.d.ts +122 -0
- package/dist/commonjs/breadcrumbs/lib/hooks/useBreadcrumbsModel.d.ts.map +1 -1
- package/dist/commonjs/button/lib/BaseButton.js +1 -1
- package/dist/commonjs/button/lib/DeleteButton.d.ts.map +1 -1
- package/dist/commonjs/button/lib/DeleteButton.js +4 -5
- package/dist/commonjs/button/lib/PrimaryButton.d.ts.map +1 -1
- package/dist/commonjs/button/lib/PrimaryButton.js +5 -6
- package/dist/commonjs/button/lib/SecondaryButton.d.ts.map +1 -1
- package/dist/commonjs/button/lib/SecondaryButton.js +5 -6
- package/dist/commonjs/button/lib/TertiaryButton.d.ts.map +1 -1
- package/dist/commonjs/button/lib/TertiaryButton.js +30 -27
- package/dist/commonjs/button/lib/parts/ButtonLabelIcon.d.ts.map +1 -1
- package/dist/commonjs/button/lib/parts/ButtonLabelIcon.js +2 -1
- package/dist/commonjs/checkbox/lib/CheckboxCheck.js +2 -2
- package/dist/commonjs/collection/lib/useOverflowListItemMeasure.d.ts +4 -0
- package/dist/commonjs/collection/lib/useOverflowListItemMeasure.d.ts.map +1 -1
- package/dist/commonjs/collection/lib/useOverflowListMeasure.d.ts +5 -1
- package/dist/commonjs/collection/lib/useOverflowListMeasure.d.ts.map +1 -1
- package/dist/commonjs/collection/lib/useOverflowListMeasure.js +11 -23
- package/dist/commonjs/collection/lib/useOverflowListModel.d.ts +123 -1
- package/dist/commonjs/collection/lib/useOverflowListModel.d.ts.map +1 -1
- package/dist/commonjs/collection/lib/useOverflowListModel.js +20 -11
- package/dist/commonjs/collection/lib/useOverflowListTarget.d.ts +4 -0
- package/dist/commonjs/collection/lib/useOverflowListTarget.d.ts.map +1 -1
- package/dist/commonjs/icon/lib/SystemIcon.d.ts +3 -1
- package/dist/commonjs/icon/lib/SystemIcon.d.ts.map +1 -1
- package/dist/commonjs/icon/lib/SystemIcon.js +3 -3
- package/dist/commonjs/icon/lib/SystemIconCircle.js +1 -1
- package/dist/commonjs/menu/lib/MenuItem.d.ts.map +1 -1
- package/dist/commonjs/menu/lib/MenuItem.js +1 -0
- package/dist/commonjs/select/lib/hooks/useSelectInput.d.ts +3 -3
- package/dist/commonjs/select/lib/hooks/useSelectInput.d.ts.map +1 -1
- package/dist/commonjs/select/lib/hooks/useSelectInput.js +2 -2
- package/dist/commonjs/side-panel/lib/SidePanel.js +1 -1
- package/dist/commonjs/tabs/lib/Tabs.d.ts +144 -0
- package/dist/commonjs/tabs/lib/Tabs.d.ts.map +1 -1
- package/dist/commonjs/tabs/lib/TabsItem.d.ts +8 -0
- package/dist/commonjs/tabs/lib/TabsItem.d.ts.map +1 -1
- package/dist/commonjs/tabs/lib/TabsList.d.ts +9 -1
- package/dist/commonjs/tabs/lib/TabsList.d.ts.map +1 -1
- package/dist/commonjs/tabs/lib/TabsOverflowButton.d.ts +8 -0
- package/dist/commonjs/tabs/lib/TabsOverflowButton.d.ts.map +1 -1
- package/dist/commonjs/tabs/lib/TabsPanel.d.ts +8 -0
- package/dist/commonjs/tabs/lib/TabsPanel.d.ts.map +1 -1
- package/dist/commonjs/tabs/lib/TabsPanels.d.ts +4 -0
- package/dist/commonjs/tabs/lib/TabsPanels.d.ts.map +1 -1
- package/dist/commonjs/tabs/lib/useTabsModel.d.ts +148 -0
- package/dist/commonjs/tabs/lib/useTabsModel.d.ts.map +1 -1
- package/dist/es6/action-bar/lib/ActionBar.d.ts +126 -0
- package/dist/es6/action-bar/lib/ActionBar.d.ts.map +1 -1
- package/dist/es6/action-bar/lib/ActionBarItem.d.ts +8 -0
- package/dist/es6/action-bar/lib/ActionBarItem.d.ts.map +1 -1
- package/dist/es6/action-bar/lib/ActionBarList.d.ts +9 -1
- package/dist/es6/action-bar/lib/ActionBarList.d.ts.map +1 -1
- package/dist/es6/action-bar/lib/ActionBarOverflowButton.d.ts +8 -0
- package/dist/es6/action-bar/lib/ActionBarOverflowButton.d.ts.map +1 -1
- package/dist/es6/action-bar/lib/useActionBarModel.d.ts +122 -0
- package/dist/es6/action-bar/lib/useActionBarModel.d.ts.map +1 -1
- package/dist/es6/breadcrumbs/lib/Breadcrumbs.d.ts +499 -51
- package/dist/es6/breadcrumbs/lib/Breadcrumbs.d.ts.map +1 -1
- package/dist/es6/breadcrumbs/lib/BreadcrumbsCurrentItem.d.ts +8 -0
- package/dist/es6/breadcrumbs/lib/BreadcrumbsCurrentItem.d.ts.map +1 -1
- package/dist/es6/breadcrumbs/lib/BreadcrumbsItem.d.ts +8 -0
- package/dist/es6/breadcrumbs/lib/BreadcrumbsItem.d.ts.map +1 -1
- package/dist/es6/breadcrumbs/lib/BreadcrumbsList.d.ts +4 -0
- package/dist/es6/breadcrumbs/lib/BreadcrumbsList.d.ts.map +1 -1
- package/dist/es6/breadcrumbs/lib/BreadcrumbsOverflowButton.d.ts +8 -0
- package/dist/es6/breadcrumbs/lib/BreadcrumbsOverflowButton.d.ts.map +1 -1
- package/dist/es6/breadcrumbs/lib/hooks/useBreadcrumbsModel.d.ts +122 -0
- package/dist/es6/breadcrumbs/lib/hooks/useBreadcrumbsModel.d.ts.map +1 -1
- package/dist/es6/button/lib/BaseButton.js +1 -1
- package/dist/es6/button/lib/DeleteButton.d.ts.map +1 -1
- package/dist/es6/button/lib/DeleteButton.js +4 -5
- package/dist/es6/button/lib/PrimaryButton.d.ts.map +1 -1
- package/dist/es6/button/lib/PrimaryButton.js +5 -6
- package/dist/es6/button/lib/SecondaryButton.d.ts.map +1 -1
- package/dist/es6/button/lib/SecondaryButton.js +5 -6
- package/dist/es6/button/lib/TertiaryButton.d.ts.map +1 -1
- package/dist/es6/button/lib/TertiaryButton.js +30 -27
- package/dist/es6/button/lib/parts/ButtonLabelIcon.d.ts.map +1 -1
- package/dist/es6/button/lib/parts/ButtonLabelIcon.js +2 -1
- package/dist/es6/checkbox/lib/CheckboxCheck.js +2 -2
- package/dist/es6/collection/lib/useOverflowListItemMeasure.d.ts +4 -0
- package/dist/es6/collection/lib/useOverflowListItemMeasure.d.ts.map +1 -1
- package/dist/es6/collection/lib/useOverflowListMeasure.d.ts +5 -1
- package/dist/es6/collection/lib/useOverflowListMeasure.d.ts.map +1 -1
- package/dist/es6/collection/lib/useOverflowListMeasure.js +12 -5
- package/dist/es6/collection/lib/useOverflowListModel.d.ts +123 -1
- package/dist/es6/collection/lib/useOverflowListModel.d.ts.map +1 -1
- package/dist/es6/collection/lib/useOverflowListModel.js +20 -11
- package/dist/es6/collection/lib/useOverflowListTarget.d.ts +4 -0
- package/dist/es6/collection/lib/useOverflowListTarget.d.ts.map +1 -1
- package/dist/es6/icon/lib/SystemIcon.d.ts +3 -1
- package/dist/es6/icon/lib/SystemIcon.d.ts.map +1 -1
- package/dist/es6/icon/lib/SystemIcon.js +4 -4
- package/dist/es6/icon/lib/SystemIconCircle.js +1 -1
- package/dist/es6/menu/lib/MenuItem.d.ts.map +1 -1
- package/dist/es6/menu/lib/MenuItem.js +1 -0
- package/dist/es6/select/lib/hooks/useSelectInput.d.ts +3 -3
- package/dist/es6/select/lib/hooks/useSelectInput.d.ts.map +1 -1
- package/dist/es6/select/lib/hooks/useSelectInput.js +2 -2
- package/dist/es6/side-panel/lib/SidePanel.js +1 -1
- package/dist/es6/tabs/lib/Tabs.d.ts +144 -0
- package/dist/es6/tabs/lib/Tabs.d.ts.map +1 -1
- package/dist/es6/tabs/lib/TabsItem.d.ts +8 -0
- package/dist/es6/tabs/lib/TabsItem.d.ts.map +1 -1
- package/dist/es6/tabs/lib/TabsList.d.ts +9 -1
- package/dist/es6/tabs/lib/TabsList.d.ts.map +1 -1
- package/dist/es6/tabs/lib/TabsOverflowButton.d.ts +8 -0
- package/dist/es6/tabs/lib/TabsOverflowButton.d.ts.map +1 -1
- package/dist/es6/tabs/lib/TabsPanel.d.ts +8 -0
- package/dist/es6/tabs/lib/TabsPanel.d.ts.map +1 -1
- package/dist/es6/tabs/lib/TabsPanels.d.ts +4 -0
- package/dist/es6/tabs/lib/TabsPanels.d.ts.map +1 -1
- package/dist/es6/tabs/lib/useTabsModel.d.ts +148 -0
- package/dist/es6/tabs/lib/useTabsModel.d.ts.map +1 -1
- package/icon/lib/SystemIcon.tsx +6 -2
- package/menu/lib/MenuItem.tsx +1 -0
- package/package.json +4 -4
- package/select/lib/hooks/useSelectInput.ts +2 -2
- package/side-panel/lib/SidePanel.tsx +1 -1
|
@@ -6,7 +6,6 @@ import {createStencil, cssVar} from '@workday/canvas-kit-styling';
|
|
|
6
6
|
import {brand, system} from '@workday/canvas-tokens-web';
|
|
7
7
|
import {Button, ButtonProps} from './Button';
|
|
8
8
|
import {systemIconStencil} from '@workday/canvas-kit-react/icon';
|
|
9
|
-
import {mergeStyles} from '@workday/canvas-kit-react/layout';
|
|
10
9
|
|
|
11
10
|
/**
|
|
12
11
|
* Extends all the style properties from Box to our buttons as well as props from ButtonProps.
|
|
@@ -60,9 +59,21 @@ const deleteButtonStencil = createStencil({
|
|
|
60
59
|
*/
|
|
61
60
|
export const DeleteButton = createComponent('button')({
|
|
62
61
|
displayName: 'DeleteButton',
|
|
63
|
-
Component: (
|
|
62
|
+
Component: (
|
|
63
|
+
{children, size, iconPosition, grow, cs, ...elemProps}: DeleteButtonProps,
|
|
64
|
+
ref,
|
|
65
|
+
Element
|
|
66
|
+
) => {
|
|
64
67
|
return (
|
|
65
|
-
<Button
|
|
68
|
+
<Button
|
|
69
|
+
as={Element}
|
|
70
|
+
ref={ref}
|
|
71
|
+
size={size}
|
|
72
|
+
grow={grow}
|
|
73
|
+
iconPosition={iconPosition}
|
|
74
|
+
cs={[deleteButtonStencil({size, iconPosition}), cs]}
|
|
75
|
+
{...elemProps}
|
|
76
|
+
>
|
|
66
77
|
{children}
|
|
67
78
|
</Button>
|
|
68
79
|
);
|
|
@@ -6,7 +6,6 @@ import {createStencil, cssVar} from '@workday/canvas-kit-styling';
|
|
|
6
6
|
import {brand, system} from '@workday/canvas-tokens-web';
|
|
7
7
|
import {buttonColorPropVars, buttonStencil} from './BaseButton';
|
|
8
8
|
import {Button, ButtonProps} from './Button';
|
|
9
|
-
import {mergeStyles} from '@workday/canvas-kit-react/layout';
|
|
10
9
|
|
|
11
10
|
/**
|
|
12
11
|
* Extends all the style properties from Box to our buttons as well as props from ButtonProps.
|
|
@@ -115,9 +114,21 @@ const primaryButtonStencil = createStencil({
|
|
|
115
114
|
|
|
116
115
|
export const PrimaryButton = createComponent('button')({
|
|
117
116
|
displayName: 'PrimaryButton',
|
|
118
|
-
Component: (
|
|
117
|
+
Component: (
|
|
118
|
+
{children, variant, size, iconPosition, grow, cs, ...elemProps}: PrimaryButtonProps,
|
|
119
|
+
ref,
|
|
120
|
+
Element
|
|
121
|
+
) => {
|
|
119
122
|
return (
|
|
120
|
-
<Button
|
|
123
|
+
<Button
|
|
124
|
+
as={Element}
|
|
125
|
+
ref={ref}
|
|
126
|
+
iconPosition={iconPosition}
|
|
127
|
+
size={size}
|
|
128
|
+
grow={grow}
|
|
129
|
+
cs={[primaryButtonStencil({variant, iconPosition, grow, size}), cs]}
|
|
130
|
+
{...elemProps}
|
|
131
|
+
>
|
|
121
132
|
{children}
|
|
122
133
|
</Button>
|
|
123
134
|
);
|
|
@@ -6,7 +6,6 @@ import {createStencil, cssVar} from '@workday/canvas-kit-styling';
|
|
|
6
6
|
import {brand, system} from '@workday/canvas-tokens-web';
|
|
7
7
|
import {Button, ButtonProps} from './Button';
|
|
8
8
|
import {systemIconStencil} from '@workday/canvas-kit-react/icon';
|
|
9
|
-
import {mergeStyles} from '@workday/canvas-kit-react/layout';
|
|
10
9
|
|
|
11
10
|
/**
|
|
12
11
|
* Extends all the style properties from Box to our buttons as well as props from ButtonProps.
|
|
@@ -130,9 +129,21 @@ const secondaryButtonStencil = createStencil({
|
|
|
130
129
|
|
|
131
130
|
export const SecondaryButton = createComponent('button')({
|
|
132
131
|
displayName: 'SecondaryButton',
|
|
133
|
-
Component: (
|
|
132
|
+
Component: (
|
|
133
|
+
{children, variant, size, iconPosition, grow, cs, ...elemProps}: SecondaryButtonProps,
|
|
134
|
+
ref,
|
|
135
|
+
Element
|
|
136
|
+
) => {
|
|
134
137
|
return (
|
|
135
|
-
<Button
|
|
138
|
+
<Button
|
|
139
|
+
as={Element}
|
|
140
|
+
ref={ref}
|
|
141
|
+
iconPosition={iconPosition}
|
|
142
|
+
size={size}
|
|
143
|
+
grow={grow}
|
|
144
|
+
cs={[secondaryButtonStencil({variant, iconPosition, grow, size}), cs]}
|
|
145
|
+
{...elemProps}
|
|
146
|
+
>
|
|
136
147
|
{children}
|
|
137
148
|
</Button>
|
|
138
149
|
);
|
|
@@ -6,7 +6,6 @@ import {calc, createStencil, cssVar} from '@workday/canvas-kit-styling';
|
|
|
6
6
|
import {system, brand} from '@workday/canvas-tokens-web';
|
|
7
7
|
import {Button, ButtonProps} from './Button';
|
|
8
8
|
import {systemIconStencil} from '@workday/canvas-kit-react/icon';
|
|
9
|
-
import {mergeStyles} from '@workday/canvas-kit-react/layout';
|
|
10
9
|
|
|
11
10
|
/**
|
|
12
11
|
* Extends all the style properties from Box to our buttons as well as props from ButtonProps.
|
|
@@ -291,6 +290,8 @@ export const TertiaryButton = createComponent('button')({
|
|
|
291
290
|
size = 'medium',
|
|
292
291
|
variant,
|
|
293
292
|
iconPosition,
|
|
293
|
+
grow,
|
|
294
|
+
cs,
|
|
294
295
|
...elemProps
|
|
295
296
|
}: TertiaryButtonProps,
|
|
296
297
|
ref,
|
|
@@ -311,15 +312,18 @@ export const TertiaryButton = createComponent('button')({
|
|
|
311
312
|
icon={icon}
|
|
312
313
|
size={size}
|
|
313
314
|
iconPosition={iconPosition}
|
|
314
|
-
{
|
|
315
|
-
|
|
315
|
+
grow={grow}
|
|
316
|
+
cs={[
|
|
316
317
|
tertiaryButtonStencil({
|
|
317
|
-
variant,
|
|
318
318
|
size,
|
|
319
|
+
variant,
|
|
320
|
+
grow,
|
|
319
321
|
isThemeable: (isThemeable || baseIconPosition !== 'only') as any,
|
|
320
322
|
iconPosition: baseIconPosition,
|
|
321
|
-
})
|
|
322
|
-
|
|
323
|
+
}),
|
|
324
|
+
cs,
|
|
325
|
+
]}
|
|
326
|
+
{...elemProps}
|
|
323
327
|
>
|
|
324
328
|
{children}
|
|
325
329
|
</Button>
|
|
@@ -2,6 +2,7 @@ import React from 'react';
|
|
|
2
2
|
import {ButtonSizes} from '../types';
|
|
3
3
|
import {createComponent} from '@workday/canvas-kit-react/common';
|
|
4
4
|
import {SystemIcon, SystemIconProps} from '@workday/canvas-kit-react/icon';
|
|
5
|
+
import {px2rem} from '@workday/canvas-kit-styling';
|
|
5
6
|
|
|
6
7
|
export interface ButtonLabelIconProps extends Partial<SystemIconProps> {
|
|
7
8
|
/**
|
|
@@ -42,8 +43,8 @@ export const ButtonLabelIcon = createComponent('span')({
|
|
|
42
43
|
size={iconSize}
|
|
43
44
|
icon={icon}
|
|
44
45
|
shouldMirror={shouldMirrorIcon}
|
|
45
|
-
width={
|
|
46
|
-
height={
|
|
46
|
+
width={px2rem(iconSize)}
|
|
47
|
+
height={px2rem(iconSize)}
|
|
47
48
|
display="inline-block"
|
|
48
49
|
{...elemProps}
|
|
49
50
|
/>
|
|
@@ -1,6 +1,11 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
2
|
|
|
3
|
-
import {
|
|
3
|
+
import {
|
|
4
|
+
createElemPropsHook,
|
|
5
|
+
useMountLayout,
|
|
6
|
+
useResizeObserver,
|
|
7
|
+
useLocalRef,
|
|
8
|
+
} from '@workday/canvas-kit-react/common';
|
|
4
9
|
|
|
5
10
|
import {useOverflowListModel} from './useOverflowListModel';
|
|
6
11
|
|
|
@@ -9,12 +14,21 @@ import {useOverflowListModel} from './useOverflowListModel';
|
|
|
9
14
|
* overflow detection.
|
|
10
15
|
*/
|
|
11
16
|
export const useOverflowListMeasure = createElemPropsHook(useOverflowListModel)((model, ref) => {
|
|
12
|
-
const localRef = React.
|
|
13
|
-
const
|
|
17
|
+
const {elementRef, localRef} = useLocalRef(ref as React.Ref<HTMLElement>);
|
|
18
|
+
const gapProperty = model.state.orientation === 'horizontal' ? 'columnGap' : 'rowGap';
|
|
19
|
+
|
|
20
|
+
useResizeObserver({
|
|
14
21
|
ref: localRef,
|
|
15
22
|
onResize: model.events.setContainerWidth,
|
|
16
23
|
});
|
|
17
|
-
|
|
24
|
+
useMountLayout(() => {
|
|
25
|
+
if (localRef.current) {
|
|
26
|
+
const styles = getComputedStyle(localRef.current);
|
|
27
|
+
model.events.setContainerGap({
|
|
28
|
+
size: styles.gap === 'normal' ? 0 : Number(styles[gapProperty].replace('px', '')),
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
});
|
|
18
32
|
|
|
19
33
|
return {
|
|
20
34
|
ref: elementRef,
|
|
@@ -6,10 +6,11 @@ import {Item} from './useBaseListModel';
|
|
|
6
6
|
|
|
7
7
|
export function getHiddenIds(
|
|
8
8
|
containerWidth: number,
|
|
9
|
+
containerGap: number,
|
|
9
10
|
overflowTargetWidth: number,
|
|
10
11
|
itemWidthCache: Record<string, number>,
|
|
11
12
|
selectedIds: string[] | 'all',
|
|
12
|
-
items
|
|
13
|
+
items: Item<any>[]
|
|
13
14
|
): string[] {
|
|
14
15
|
/** Allows us to prioritize showing the selected item */
|
|
15
16
|
let selectedKey: undefined | string;
|
|
@@ -18,17 +19,22 @@ export function getHiddenIds(
|
|
|
18
19
|
/** Tally ids that won't fit inside the container. These will be used by components to hide
|
|
19
20
|
* elements that won't fit in the container */
|
|
20
21
|
const hiddenIds: string[] = [];
|
|
22
|
+
/** Track if gap should be calculated since gap doesn't apply to the width of the first item, only
|
|
23
|
+
* consecutive items */
|
|
24
|
+
let shouldAddGap = false;
|
|
25
|
+
|
|
21
26
|
if (selectedIds !== 'all' && selectedIds.length) {
|
|
22
|
-
if (items
|
|
27
|
+
if (items.length) {
|
|
23
28
|
// If selectedIds[0] is not in items, use the first id from items
|
|
24
29
|
selectedKey = items.find(item => item.id === selectedIds[0]) ? selectedIds[0] : items[0].id;
|
|
25
|
-
} else {
|
|
26
|
-
selectedKey = selectedIds[0];
|
|
27
30
|
}
|
|
28
31
|
}
|
|
29
32
|
|
|
30
33
|
if (
|
|
31
|
-
Object.keys(itemWidthCache).reduce(
|
|
34
|
+
Object.keys(itemWidthCache).reduce(
|
|
35
|
+
(sum, key, index) => sum + itemWidthCache[key] + (index > 0 ? containerGap : 0),
|
|
36
|
+
0
|
|
37
|
+
) <= containerWidth
|
|
32
38
|
) {
|
|
33
39
|
// All items fit, return empty array
|
|
34
40
|
return [];
|
|
@@ -39,6 +45,7 @@ export function getHiddenIds(
|
|
|
39
45
|
} else {
|
|
40
46
|
// at least the selected item and overflow target fit. Update our itemWidth with the sum
|
|
41
47
|
itemWidth += itemWidthCache[selectedKey] + overflowTargetWidth;
|
|
48
|
+
shouldAddGap = true;
|
|
42
49
|
}
|
|
43
50
|
} else {
|
|
44
51
|
itemWidth += overflowTargetWidth;
|
|
@@ -46,7 +53,8 @@ export function getHiddenIds(
|
|
|
46
53
|
|
|
47
54
|
for (const key in itemWidthCache) {
|
|
48
55
|
if (key !== selectedKey) {
|
|
49
|
-
itemWidth += itemWidthCache[key];
|
|
56
|
+
itemWidth += itemWidthCache[key] + (shouldAddGap ? containerGap : 0);
|
|
57
|
+
shouldAddGap = true;
|
|
50
58
|
if (itemWidth > containerWidth) {
|
|
51
59
|
hiddenIds.push(key);
|
|
52
60
|
}
|
|
@@ -75,6 +83,7 @@ export const useOverflowListModel = createModelHook({
|
|
|
75
83
|
const [hiddenIds, setHiddenIds] = React.useState(config.initialHiddenIds);
|
|
76
84
|
const [itemWidthCache, setItemWidthCache] = React.useState<Record<string, number>>({});
|
|
77
85
|
const [containerWidth, setContainerWidth] = React.useState(0);
|
|
86
|
+
const [containerGap, setContainerGap] = React.useState(0);
|
|
78
87
|
const containerWidthRef = React.useRef(0);
|
|
79
88
|
const itemWidthCacheRef = React.useRef(itemWidthCache);
|
|
80
89
|
const [overflowTargetWidth, setOverflowTargetWidth] = React.useState(0);
|
|
@@ -96,6 +105,7 @@ export const useOverflowListModel = createModelHook({
|
|
|
96
105
|
hiddenIds: internalHiddenIds,
|
|
97
106
|
itemWidthCache,
|
|
98
107
|
containerWidth,
|
|
108
|
+
containerGap,
|
|
99
109
|
overflowTargetWidth,
|
|
100
110
|
};
|
|
101
111
|
|
|
@@ -105,6 +115,7 @@ export const useOverflowListModel = createModelHook({
|
|
|
105
115
|
const {selectedIds} = model.selection.select(data.id, state);
|
|
106
116
|
const ids = getHiddenIds(
|
|
107
117
|
containerWidthRef.current,
|
|
118
|
+
containerGap,
|
|
108
119
|
overflowTargetWidthRef.current,
|
|
109
120
|
itemWidthCacheRef.current,
|
|
110
121
|
selectedIds,
|
|
@@ -120,6 +131,21 @@ export const useOverflowListModel = createModelHook({
|
|
|
120
131
|
|
|
121
132
|
const ids = getHiddenIds(
|
|
122
133
|
containerWidthRef.current,
|
|
134
|
+
containerGap,
|
|
135
|
+
overflowTargetWidthRef.current,
|
|
136
|
+
itemWidthCacheRef.current,
|
|
137
|
+
state.selectedIds,
|
|
138
|
+
config.items
|
|
139
|
+
);
|
|
140
|
+
|
|
141
|
+
setHiddenIds(ids);
|
|
142
|
+
},
|
|
143
|
+
setContainerGap(data: {size: number}) {
|
|
144
|
+
setContainerGap(data.size);
|
|
145
|
+
|
|
146
|
+
const ids = getHiddenIds(
|
|
147
|
+
containerWidthRef.current,
|
|
148
|
+
data.size,
|
|
123
149
|
overflowTargetWidthRef.current,
|
|
124
150
|
itemWidthCacheRef.current,
|
|
125
151
|
state.selectedIds,
|
|
@@ -142,6 +168,7 @@ export const useOverflowListModel = createModelHook({
|
|
|
142
168
|
|
|
143
169
|
const ids = getHiddenIds(
|
|
144
170
|
containerWidthRef.current,
|
|
171
|
+
containerGap,
|
|
145
172
|
overflowTargetWidthRef.current,
|
|
146
173
|
itemWidthCacheRef.current,
|
|
147
174
|
state.selectedIds,
|
|
@@ -158,6 +185,7 @@ export const useOverflowListModel = createModelHook({
|
|
|
158
185
|
|
|
159
186
|
const ids = getHiddenIds(
|
|
160
187
|
containerWidthRef.current,
|
|
188
|
+
containerGap,
|
|
161
189
|
overflowTargetWidthRef.current,
|
|
162
190
|
itemWidthCacheRef.current,
|
|
163
191
|
state.selectedIds !== 'all'
|