@workday/canvas-kit-react 13.1.5 → 13.1.7
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/focusOnCurrentCursor.ts +4 -1
- package/collection/lib/useListItemRemoveable.ts +5 -3
- package/collection/lib/useListItemRovingFocus.tsx +2 -2
- package/common/lib/utils/useUniqueId.ts +7 -2
- package/dist/commonjs/action-bar/lib/ActionBarList.js +1 -1
- package/dist/commonjs/action-bar/lib/ActionBarOverflowButton.js +1 -1
- package/dist/commonjs/avatar/lib/Avatar.js +20 -20
- package/dist/commonjs/badge/lib/CountBadge.js +3 -3
- package/dist/commonjs/banner/lib/Banner.js +5 -5
- package/dist/commonjs/banner/lib/BannerActionText.js +2 -2
- package/dist/commonjs/banner/lib/BannerIcon.js +1 -1
- package/dist/commonjs/banner/lib/BannerLabel.js +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/ExternalHyperlink.js +1 -1
- package/dist/commonjs/button/lib/Hyperlink.js +2 -2
- 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/focusOnCurrentCursor.d.ts.map +1 -1
- package/dist/commonjs/collection/lib/focusOnCurrentCursor.js +2 -1
- package/dist/commonjs/collection/lib/useListItemRemoveable.d.ts +1 -1
- package/dist/commonjs/collection/lib/useListItemRemoveable.d.ts.map +1 -1
- package/dist/commonjs/collection/lib/useListItemRemoveable.js +2 -2
- package/dist/commonjs/collection/lib/useListItemRovingFocus.d.ts +1 -1
- package/dist/commonjs/collection/lib/useListItemRovingFocus.js +1 -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/common/lib/utils/useUniqueId.d.ts +2 -1
- package/dist/commonjs/common/lib/utils/useUniqueId.d.ts.map +1 -1
- package/dist/commonjs/common/lib/utils/useUniqueId.js +9 -2
- package/dist/commonjs/expandable/lib/Expandable.js +1 -1
- package/dist/commonjs/expandable/lib/ExpandableAvatar.js +1 -1
- package/dist/commonjs/expandable/lib/ExpandableContent.js +1 -1
- package/dist/commonjs/expandable/lib/ExpandableIcon.js +10 -10
- package/dist/commonjs/expandable/lib/ExpandableTarget.js +1 -1
- package/dist/commonjs/expandable/lib/ExpandableTitle.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 +4 -4
- 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/MenuDivider.js +1 -1
- package/dist/commonjs/menu/lib/MenuGroup.js +1 -1
- package/dist/commonjs/menu/lib/MenuItem.d.ts +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/Submenu.d.ts +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/popup/lib/hooks/useDisableBodyScroll.js +1 -1
- package/dist/commonjs/select/lib/SelectCard.js +1 -1
- package/dist/commonjs/select/lib/SelectInput.js +1 -1
- package/dist/commonjs/skeleton/lib/Skeleton.js +2 -2
- package/dist/commonjs/skeleton/lib/parts/SkeletonHeader.js +1 -1
- package/dist/commonjs/skeleton/lib/parts/SkeletonShape.js +1 -1
- package/dist/commonjs/skeleton/lib/parts/SkeletonText.js +1 -1
- package/dist/commonjs/switch/lib/Switch.js +7 -7
- package/dist/commonjs/table/lib/BaseTable.js +1 -1
- package/dist/commonjs/table/lib/Table.js +7 -7
- package/dist/commonjs/table/lib/parts/BaseTableBody.js +1 -1
- package/dist/commonjs/table/lib/parts/BaseTableCaption.js +1 -1
- package/dist/commonjs/table/lib/parts/BaseTableCell.js +1 -1
- package/dist/commonjs/table/lib/parts/BaseTableHead.js +1 -1
- package/dist/commonjs/table/lib/parts/BaseTableHeader.js +1 -1
- package/dist/commonjs/table/lib/parts/css-grid-table/TableRow.js +1 -1
- package/dist/commonjs/tabs/lib/TabsItem.d.ts +1 -1
- package/dist/commonjs/tabs/lib/TabsItem.js +1 -1
- package/dist/commonjs/tabs/lib/TabsList.d.ts +330 -10
- package/dist/commonjs/tabs/lib/TabsList.d.ts.map +1 -1
- package/dist/commonjs/tabs/lib/TabsList.js +66 -71
- package/dist/commonjs/tabs/lib/TabsOverflowButton.js +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/commonjs/tooltip/lib/TooltipContainer.js +2 -2
- package/dist/es6/action-bar/lib/ActionBarList.js +1 -1
- package/dist/es6/action-bar/lib/ActionBarOverflowButton.js +1 -1
- package/dist/es6/avatar/lib/Avatar.js +20 -20
- package/dist/es6/badge/lib/CountBadge.js +3 -3
- package/dist/es6/banner/lib/Banner.js +5 -5
- package/dist/es6/banner/lib/BannerActionText.js +2 -2
- package/dist/es6/banner/lib/BannerIcon.js +1 -1
- package/dist/es6/banner/lib/BannerLabel.js +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/ExternalHyperlink.js +1 -1
- package/dist/es6/button/lib/Hyperlink.js +2 -2
- 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/focusOnCurrentCursor.d.ts.map +1 -1
- package/dist/es6/collection/lib/focusOnCurrentCursor.js +2 -1
- package/dist/es6/collection/lib/useListItemRemoveable.d.ts +1 -1
- package/dist/es6/collection/lib/useListItemRemoveable.d.ts.map +1 -1
- package/dist/es6/collection/lib/useListItemRemoveable.js +3 -3
- package/dist/es6/collection/lib/useListItemRovingFocus.d.ts +1 -1
- package/dist/es6/collection/lib/useListItemRovingFocus.js +2 -2
- 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/common/lib/utils/useUniqueId.d.ts +2 -1
- package/dist/es6/common/lib/utils/useUniqueId.d.ts.map +1 -1
- package/dist/es6/common/lib/utils/useUniqueId.js +6 -2
- package/dist/es6/expandable/lib/Expandable.js +1 -1
- package/dist/es6/expandable/lib/ExpandableAvatar.js +1 -1
- package/dist/es6/expandable/lib/ExpandableContent.js +1 -1
- package/dist/es6/expandable/lib/ExpandableIcon.js +10 -10
- package/dist/es6/expandable/lib/ExpandableTarget.js +1 -1
- package/dist/es6/expandable/lib/ExpandableTitle.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 +4 -4
- 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/MenuDivider.js +1 -1
- package/dist/es6/menu/lib/MenuGroup.js +1 -1
- package/dist/es6/menu/lib/MenuItem.d.ts +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/Submenu.d.ts +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/popup/lib/hooks/useDisableBodyScroll.js +1 -1
- package/dist/es6/select/lib/SelectCard.js +1 -1
- package/dist/es6/select/lib/SelectInput.js +1 -1
- package/dist/es6/skeleton/lib/Skeleton.js +2 -2
- package/dist/es6/skeleton/lib/parts/SkeletonHeader.js +1 -1
- package/dist/es6/skeleton/lib/parts/SkeletonShape.js +1 -1
- package/dist/es6/skeleton/lib/parts/SkeletonText.js +1 -1
- package/dist/es6/switch/lib/Switch.js +7 -7
- package/dist/es6/table/lib/BaseTable.js +1 -1
- package/dist/es6/table/lib/Table.js +7 -7
- package/dist/es6/table/lib/parts/BaseTableBody.js +1 -1
- package/dist/es6/table/lib/parts/BaseTableCaption.js +1 -1
- package/dist/es6/table/lib/parts/BaseTableCell.js +1 -1
- package/dist/es6/table/lib/parts/BaseTableHead.js +1 -1
- package/dist/es6/table/lib/parts/BaseTableHeader.js +1 -1
- package/dist/es6/table/lib/parts/css-grid-table/TableRow.js +1 -1
- package/dist/es6/tabs/lib/TabsItem.d.ts +1 -1
- package/dist/es6/tabs/lib/TabsItem.js +1 -1
- package/dist/es6/tabs/lib/TabsList.d.ts +330 -10
- package/dist/es6/tabs/lib/TabsList.d.ts.map +1 -1
- package/dist/es6/tabs/lib/TabsList.js +66 -70
- package/dist/es6/tabs/lib/TabsOverflowButton.js +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/dist/es6/tooltip/lib/TooltipContainer.js +2 -2
- package/package.json +4 -4
- package/tabs/lib/TabsList.tsx +88 -66
package/tabs/lib/TabsList.tsx
CHANGED
|
@@ -6,6 +6,7 @@ import {
|
|
|
6
6
|
createElemPropsHook,
|
|
7
7
|
ExtractProps,
|
|
8
8
|
useModalityType,
|
|
9
|
+
useLocalRef,
|
|
9
10
|
} from '@workday/canvas-kit-react/common';
|
|
10
11
|
import {Flex, mergeStyles} from '@workday/canvas-kit-react/layout';
|
|
11
12
|
import {
|
|
@@ -32,12 +33,81 @@ export interface TabListProps<T = any> extends Omit<ExtractProps<typeof Flex, ne
|
|
|
32
33
|
overflowButton?: React.ReactNode;
|
|
33
34
|
}
|
|
34
35
|
|
|
36
|
+
function getScrollPercentage(elem: HTMLDivElement, direction: 'vertical' | 'horizontal'): number {
|
|
37
|
+
if (direction === 'vertical') {
|
|
38
|
+
if (elem.scrollHeight > elem.clientHeight) {
|
|
39
|
+
const percentage = elem.scrollTop / (elem.scrollHeight - elem.clientHeight);
|
|
40
|
+
return percentage;
|
|
41
|
+
} else {
|
|
42
|
+
return -1;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
if (elem.scrollWidth > elem.clientWidth) {
|
|
46
|
+
const percentage = elem.scrollLeft / (elem.scrollWidth - elem.clientWidth);
|
|
47
|
+
return percentage;
|
|
48
|
+
} else {
|
|
49
|
+
return -1;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
function getScrollPosition(
|
|
54
|
+
elem: HTMLDivElement,
|
|
55
|
+
direction: 'vertical' | 'horizontal'
|
|
56
|
+
): 'start' | 'middle' | 'end' | undefined {
|
|
57
|
+
const percentage = getScrollPercentage(elem, direction);
|
|
58
|
+
return percentage <= -1
|
|
59
|
+
? undefined
|
|
60
|
+
: percentage > 0.99
|
|
61
|
+
? 'end'
|
|
62
|
+
: percentage > 0.01
|
|
63
|
+
? 'middle'
|
|
64
|
+
: 'start';
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
function setScrollPosition(elem: HTMLDivElement, scrollPosition?: 'start' | 'middle' | 'end') {
|
|
68
|
+
if (scrollPosition) {
|
|
69
|
+
elem.setAttribute('data-scroll-position', scrollPosition);
|
|
70
|
+
} else {
|
|
71
|
+
elem.removeAttribute('data-scroll-position');
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
export const useTabOverflowScroll = createElemPropsHook(useTabsModel)(
|
|
76
|
+
(
|
|
77
|
+
_model,
|
|
78
|
+
ref,
|
|
79
|
+
elemProps: {
|
|
80
|
+
'aria-orientation'?: 'vertical' | 'horizontal';
|
|
81
|
+
} = {}
|
|
82
|
+
) => {
|
|
83
|
+
const direction = elemProps['aria-orientation'] || 'vertical';
|
|
84
|
+
|
|
85
|
+
const {localRef, elementRef} = useLocalRef<HTMLDivElement>(ref as React.Ref<HTMLDivElement>);
|
|
86
|
+
|
|
87
|
+
React.useLayoutEffect(() => {
|
|
88
|
+
if (!localRef.current) {
|
|
89
|
+
return;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
setScrollPosition(localRef.current, getScrollPosition(localRef.current, direction));
|
|
93
|
+
}, [localRef, direction]);
|
|
94
|
+
|
|
95
|
+
return {
|
|
96
|
+
ref: elementRef,
|
|
97
|
+
onScroll: (event: React.UIEvent<HTMLDivElement>) => {
|
|
98
|
+
const elem = event.currentTarget;
|
|
99
|
+
setScrollPosition(elem, getScrollPosition(elem, direction));
|
|
100
|
+
},
|
|
101
|
+
};
|
|
102
|
+
}
|
|
103
|
+
);
|
|
104
|
+
|
|
35
105
|
export const useTabsList = composeHooks(
|
|
36
|
-
|
|
37
|
-
|
|
106
|
+
useTabOverflowScroll,
|
|
107
|
+
createElemPropsHook(useTabsModel)(model => {
|
|
38
108
|
return {
|
|
39
109
|
role: 'tablist',
|
|
40
|
-
|
|
110
|
+
'aria-orientation': model.state.orientation,
|
|
41
111
|
} as const;
|
|
42
112
|
}),
|
|
43
113
|
useOverflowListMeasure,
|
|
@@ -51,12 +121,26 @@ export const tabsListStencil = createStencil({
|
|
|
51
121
|
borderBottom: `${px2rem(1)} solid ${system.color.border.divider}`,
|
|
52
122
|
gap: system.space.x3,
|
|
53
123
|
paddingInline: system.space.x6,
|
|
54
|
-
maskImage: 'none',
|
|
55
124
|
},
|
|
56
125
|
modifiers: {
|
|
57
126
|
modality: {
|
|
58
127
|
touch: {
|
|
128
|
+
overflowX: 'auto',
|
|
59
129
|
paddingInline: system.space.zero,
|
|
130
|
+
// data attributes are needed until scroll-driven animations are supported. Once they are,
|
|
131
|
+
// we can use a CSS-only solution:
|
|
132
|
+
// https://www.bram.us/2023/09/16/solved-by-css-scroll-driven-animations-detect-if-an-element-can-scroll-or-not/
|
|
133
|
+
'&[data-scroll-position="start"]': {
|
|
134
|
+
maskImage: 'linear-gradient(to right, white 80%, transparent)',
|
|
135
|
+
},
|
|
136
|
+
'&[data-scroll-position="middle"]': {
|
|
137
|
+
maskImage:
|
|
138
|
+
'linear-gradient(to left, white 80%, transparent), linear-gradient(to right, white 80%, transparent)',
|
|
139
|
+
maskComposite: 'intersect',
|
|
140
|
+
},
|
|
141
|
+
'&[data-scroll-position="end"]': {
|
|
142
|
+
maskImage: 'linear-gradient(to left, white 80%, transparent)',
|
|
143
|
+
},
|
|
60
144
|
},
|
|
61
145
|
mouse: {},
|
|
62
146
|
pen: {},
|
|
@@ -69,33 +153,7 @@ export const tabsListStencil = createStencil({
|
|
|
69
153
|
left: {},
|
|
70
154
|
right: {},
|
|
71
155
|
},
|
|
72
|
-
currentScrollPos: {
|
|
73
|
-
true: {},
|
|
74
|
-
false: {},
|
|
75
|
-
},
|
|
76
156
|
},
|
|
77
|
-
compound: [
|
|
78
|
-
{
|
|
79
|
-
modifiers: {
|
|
80
|
-
modality: 'touch',
|
|
81
|
-
isDragging: true,
|
|
82
|
-
direction: 'left',
|
|
83
|
-
},
|
|
84
|
-
styles: {
|
|
85
|
-
maskImage: 'linear-gradient(to left, white 80%, transparent)',
|
|
86
|
-
},
|
|
87
|
-
},
|
|
88
|
-
{
|
|
89
|
-
modifiers: {
|
|
90
|
-
modality: 'touch',
|
|
91
|
-
isDragging: true,
|
|
92
|
-
direction: 'right',
|
|
93
|
-
},
|
|
94
|
-
styles: {
|
|
95
|
-
maskImage: 'linear-gradient(to right, white 80%, transparent)',
|
|
96
|
-
},
|
|
97
|
-
},
|
|
98
|
-
],
|
|
99
157
|
});
|
|
100
158
|
|
|
101
159
|
export const TabsList = createSubcomponent('div')({
|
|
@@ -105,7 +163,6 @@ export const TabsList = createSubcomponent('div')({
|
|
|
105
163
|
})<TabListProps & {maskImage?: string}>(
|
|
106
164
|
({children, overflowButton, ...elemProps}, Element, model) => {
|
|
107
165
|
const modality = useModalityType();
|
|
108
|
-
const touchStates = useTouchDirection();
|
|
109
166
|
|
|
110
167
|
return (
|
|
111
168
|
<Element
|
|
@@ -113,8 +170,6 @@ export const TabsList = createSubcomponent('div')({
|
|
|
113
170
|
elemProps,
|
|
114
171
|
tabsListStencil({
|
|
115
172
|
modality: modality,
|
|
116
|
-
isDragging: touchStates.isDragging,
|
|
117
|
-
direction: touchStates.direction,
|
|
118
173
|
})
|
|
119
174
|
)}
|
|
120
175
|
>
|
|
@@ -124,36 +179,3 @@ export const TabsList = createSubcomponent('div')({
|
|
|
124
179
|
);
|
|
125
180
|
}
|
|
126
181
|
);
|
|
127
|
-
|
|
128
|
-
export const useTouchDirection = () => {
|
|
129
|
-
const [isDragging, setIsDragging] = React.useState(false);
|
|
130
|
-
const [touchDir, setTouchDirection] = React.useState<'right' | 'left' | undefined>('right');
|
|
131
|
-
|
|
132
|
-
React.useEffect(() => {
|
|
133
|
-
let prevXPos = window.pageXOffset;
|
|
134
|
-
const handleTouchMove = function (e: TouchEvent) {
|
|
135
|
-
const currXPos = e.touches[0].clientX;
|
|
136
|
-
setIsDragging(true);
|
|
137
|
-
if (currXPos > prevXPos) {
|
|
138
|
-
setTouchDirection('left');
|
|
139
|
-
} else if (currXPos < prevXPos) {
|
|
140
|
-
setTouchDirection('right');
|
|
141
|
-
}
|
|
142
|
-
prevXPos = currXPos;
|
|
143
|
-
e.preventDefault();
|
|
144
|
-
};
|
|
145
|
-
const handleDragEnd = function () {
|
|
146
|
-
setIsDragging(false);
|
|
147
|
-
};
|
|
148
|
-
window.addEventListener('touchmove', handleTouchMove);
|
|
149
|
-
window.addEventListener('touchstart', handleDragEnd);
|
|
150
|
-
window.addEventListener('touchend', handleDragEnd);
|
|
151
|
-
return () => {
|
|
152
|
-
window.removeEventListener('touchmove', handleTouchMove);
|
|
153
|
-
window.removeEventListener('touchstart', handleDragEnd);
|
|
154
|
-
window.removeEventListener('touchend', handleDragEnd);
|
|
155
|
-
};
|
|
156
|
-
}, []);
|
|
157
|
-
|
|
158
|
-
return {direction: touchDir, isDragging: isDragging};
|
|
159
|
-
};
|