@elliemae/ds-tabs 3.4.2 → 3.4.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.
- package/dist/cjs/DSTabs.js +16 -10
- package/dist/cjs/DSTabs.js.map +1 -1
- package/dist/cjs/DSTabsCTX.js +4 -1
- package/dist/cjs/DSTabsCTX.js.map +2 -2
- package/dist/cjs/DSTabsDatatestid.js +4 -1
- package/dist/cjs/DSTabsDatatestid.js.map +1 -1
- package/dist/cjs/config/useCrossRef.js +11 -5
- package/dist/cjs/config/useCrossRef.js.map +1 -1
- package/dist/cjs/config/useTabs.js +18 -12
- package/dist/cjs/config/useTabs.js.map +1 -1
- package/dist/cjs/exported-related/DSTab.js +6 -2
- package/dist/cjs/exported-related/DSTab.js.map +2 -2
- package/dist/cjs/index.js +4 -1
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/parts/carousel/Carousel.js +42 -27
- package/dist/cjs/parts/carousel/Carousel.js.map +1 -1
- package/dist/cjs/parts/carousel/styles.js +4 -1
- package/dist/cjs/parts/carousel/styles.js.map +1 -1
- package/dist/cjs/parts/carousel/useCarousel.js +12 -3
- package/dist/cjs/parts/carousel/useCarousel.js.map +2 -2
- package/dist/cjs/parts/carousel/useCarouselCallbacks.js +29 -23
- package/dist/cjs/parts/carousel/useCarouselCallbacks.js.map +1 -1
- package/dist/cjs/parts/tabBar/TabBar.js +42 -23
- package/dist/cjs/parts/tabBar/TabBar.js.map +2 -2
- package/dist/cjs/parts/tabBar/styles.js +7 -2
- package/dist/cjs/parts/tabBar/styles.js.map +1 -1
- package/dist/cjs/parts/tabBar/useTabBar.js +8 -2
- package/dist/cjs/parts/tabBar/useTabBar.js.map +2 -2
- package/dist/cjs/parts/tabsContent/TabsContent.js +20 -8
- package/dist/cjs/parts/tabsContent/TabsContent.js.map +1 -1
- package/dist/cjs/parts/tabsContent/styles.js +4 -1
- package/dist/cjs/parts/tabsContent/styles.js.map +1 -1
- package/dist/cjs/parts/tabsPanel/TabsPanels.js +50 -37
- package/dist/cjs/parts/tabsPanel/TabsPanels.js.map +2 -2
- package/dist/cjs/parts/tabsPanel/styles.js +4 -1
- package/dist/cjs/parts/tabsPanel/styles.js.map +1 -1
- package/dist/cjs/propTypes.js +4 -1
- package/dist/cjs/propTypes.js.map +1 -1
- package/dist/cjs/sharedTypes.js +4 -1
- package/dist/cjs/sharedTypes.js.map +1 -1
- package/dist/cjs/utils/constants.js +4 -1
- package/dist/cjs/utils/constants.js.map +1 -1
- package/dist/cjs/utils/helpers.js +14 -3
- package/dist/cjs/utils/helpers.js.map +1 -1
- package/dist/cjs/utils/hooks/useKeyboardNavigation.js +41 -35
- package/dist/cjs/utils/hooks/useKeyboardNavigation.js.map +1 -1
- package/dist/cjs/utils/hooks/useTabsCallbacks.js +22 -13
- package/dist/cjs/utils/hooks/useTabsCallbacks.js.map +1 -1
- package/dist/esm/DSTabs.js +12 -9
- package/dist/esm/DSTabs.js.map +1 -1
- package/dist/esm/DSTabsCTX.js.map +1 -1
- package/dist/esm/DSTabsDatatestid.js.map +1 -1
- package/dist/esm/config/useCrossRef.js +7 -4
- package/dist/esm/config/useCrossRef.js.map +1 -1
- package/dist/esm/config/useTabs.js +14 -11
- package/dist/esm/config/useTabs.js.map +1 -1
- package/dist/esm/exported-related/DSTab.js +2 -1
- package/dist/esm/exported-related/DSTab.js.map +2 -2
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/parts/carousel/Carousel.js +38 -26
- package/dist/esm/parts/carousel/Carousel.js.map +1 -1
- package/dist/esm/parts/carousel/styles.js.map +1 -1
- package/dist/esm/parts/carousel/useCarousel.js +8 -2
- package/dist/esm/parts/carousel/useCarousel.js.map +1 -1
- package/dist/esm/parts/carousel/useCarouselCallbacks.js +25 -22
- package/dist/esm/parts/carousel/useCarouselCallbacks.js.map +1 -1
- package/dist/esm/parts/tabBar/TabBar.js +38 -22
- package/dist/esm/parts/tabBar/TabBar.js.map +2 -2
- package/dist/esm/parts/tabBar/styles.js +3 -1
- package/dist/esm/parts/tabBar/styles.js.map +1 -1
- package/dist/esm/parts/tabBar/useTabBar.js +4 -1
- package/dist/esm/parts/tabBar/useTabBar.js.map +1 -1
- package/dist/esm/parts/tabsContent/TabsContent.js +16 -7
- package/dist/esm/parts/tabsContent/TabsContent.js.map +1 -1
- package/dist/esm/parts/tabsContent/styles.js.map +1 -1
- package/dist/esm/parts/tabsPanel/TabsPanels.js +46 -36
- package/dist/esm/parts/tabsPanel/TabsPanels.js.map +2 -2
- package/dist/esm/parts/tabsPanel/styles.js.map +1 -1
- package/dist/esm/propTypes.js.map +1 -1
- package/dist/esm/sharedTypes.js.map +1 -1
- package/dist/esm/utils/constants.js.map +1 -1
- package/dist/esm/utils/helpers.js +10 -2
- package/dist/esm/utils/helpers.js.map +1 -1
- package/dist/esm/utils/hooks/useKeyboardNavigation.js +37 -34
- package/dist/esm/utils/hooks/useKeyboardNavigation.js.map +1 -1
- package/dist/esm/utils/hooks/useTabsCallbacks.js +18 -12
- package/dist/esm/utils/hooks/useTabsCallbacks.js.map +1 -1
- package/package.json +6 -6
|
@@ -4,40 +4,43 @@ import { DSTabsContext, DSTabsCrossRefContext } from "../../DSTabsCTX";
|
|
|
4
4
|
const useKeyboardNavigation = () => {
|
|
5
5
|
const { focusableTabsRef } = useContext(DSTabsContext);
|
|
6
6
|
const { firstSubtabInternalRef, lastTabInternalRef } = useContext(DSTabsCrossRefContext);
|
|
7
|
-
const handleOnKeyDown = useCallback(
|
|
8
|
-
|
|
9
|
-
e.
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
nextTab
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
e.
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
prevTab
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
e.
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
e.
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
7
|
+
const handleOnKeyDown = useCallback(
|
|
8
|
+
(e) => {
|
|
9
|
+
if (e.key === "ArrowRight" && focusableTabsRef.current) {
|
|
10
|
+
e.preventDefault();
|
|
11
|
+
e.stopPropagation();
|
|
12
|
+
const nextTab = focusableTabsRef.current[focusableTabsRef?.current?.indexOf?.(e.target) + 1];
|
|
13
|
+
if (nextTab)
|
|
14
|
+
nextTab.focus();
|
|
15
|
+
if (!nextTab)
|
|
16
|
+
return;
|
|
17
|
+
}
|
|
18
|
+
if (e.key === "ArrowLeft" && focusableTabsRef.current) {
|
|
19
|
+
e.preventDefault();
|
|
20
|
+
e.stopPropagation();
|
|
21
|
+
const prevTab = focusableTabsRef.current[focusableTabsRef?.current?.indexOf?.(e.target) - 1];
|
|
22
|
+
if (prevTab)
|
|
23
|
+
prevTab.focus();
|
|
24
|
+
if (!prevTab)
|
|
25
|
+
return;
|
|
26
|
+
}
|
|
27
|
+
if (e.key === "ArrowDown") {
|
|
28
|
+
e.preventDefault();
|
|
29
|
+
e.stopPropagation();
|
|
30
|
+
const canFocusCrossTabs = firstSubtabInternalRef?.current && lastTabInternalRef?.current;
|
|
31
|
+
if (canFocusCrossTabs)
|
|
32
|
+
firstSubtabInternalRef.current?.focus();
|
|
33
|
+
}
|
|
34
|
+
if (e.key === "ArrowUp") {
|
|
35
|
+
e.preventDefault();
|
|
36
|
+
e.stopPropagation();
|
|
37
|
+
const canFocusCrossTabs = firstSubtabInternalRef?.current && lastTabInternalRef?.current;
|
|
38
|
+
if (canFocusCrossTabs)
|
|
39
|
+
lastTabInternalRef.current?.focus();
|
|
40
|
+
}
|
|
41
|
+
},
|
|
42
|
+
[firstSubtabInternalRef, lastTabInternalRef, focusableTabsRef]
|
|
43
|
+
);
|
|
41
44
|
return {
|
|
42
45
|
handleOnKeyDown
|
|
43
46
|
};
|
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../../scripts/build/transpile/react-shim.js", "../../../../src/utils/hooks/useKeyboardNavigation.tsx"],
|
|
4
4
|
"sourcesContent": ["import * as React from 'react';\nexport { React };\n", "/* eslint-disable max-statements */\n/* eslint-disable complexity */\nimport React, { useCallback, useContext } from 'react';\nimport { DSTabsContext, DSTabsCrossRefContext } from '../../DSTabsCTX';\n\ninterface UseKeyboardNavigationReturnTypeT {\n handleOnKeyDown: (e: React.KeyboardEvent) => void;\n}\n\nexport const useKeyboardNavigation = (): UseKeyboardNavigationReturnTypeT => {\n const { focusableTabsRef } = useContext(DSTabsContext);\n const { firstSubtabInternalRef, lastTabInternalRef } = useContext(DSTabsCrossRefContext);\n\n const handleOnKeyDown = useCallback(\n (e: React.KeyboardEvent) => {\n if (e.key === 'ArrowRight' && focusableTabsRef.current) {\n e.preventDefault();\n e.stopPropagation();\n const nextTab =\n focusableTabsRef.current[focusableTabsRef?.current?.indexOf?.(e.target as HTMLButtonElement) + 1];\n if (nextTab) nextTab.focus();\n if (!nextTab) return;\n }\n\n if (e.key === 'ArrowLeft' && focusableTabsRef.current) {\n e.preventDefault();\n e.stopPropagation();\n const prevTab =\n focusableTabsRef.current[focusableTabsRef?.current?.indexOf?.(e.target as HTMLButtonElement) - 1];\n if (prevTab) prevTab.focus();\n if (!prevTab) return;\n }\n\n if (e.key === 'ArrowDown') {\n e.preventDefault();\n e.stopPropagation();\n const canFocusCrossTabs = firstSubtabInternalRef?.current && lastTabInternalRef?.current;\n if (canFocusCrossTabs) firstSubtabInternalRef.current?.focus();\n }\n\n if (e.key === 'ArrowUp') {\n e.preventDefault();\n e.stopPropagation();\n const canFocusCrossTabs = firstSubtabInternalRef?.current && lastTabInternalRef?.current;\n if (canFocusCrossTabs) lastTabInternalRef.current?.focus();\n }\n },\n [firstSubtabInternalRef, lastTabInternalRef, focusableTabsRef],\n );\n\n return {\n handleOnKeyDown,\n };\n};\n"],
|
|
5
|
-
"mappings": "AAAA;
|
|
5
|
+
"mappings": "AAAA,YAAY,WAAW;ACEvB,SAAgB,aAAa,kBAAkB;AAC/C,SAAS,eAAe,6BAA6B;AAM9C,MAAM,wBAAwB,MAAwC;AAC3E,QAAM,EAAE,iBAAiB,IAAI,WAAW,aAAa;AACrD,QAAM,EAAE,wBAAwB,mBAAmB,IAAI,WAAW,qBAAqB;AAEvF,QAAM,kBAAkB;AAAA,IACtB,CAAC,MAA2B;AAC1B,UAAI,EAAE,QAAQ,gBAAgB,iBAAiB,SAAS;AACtD,UAAE,eAAe;AACjB,UAAE,gBAAgB;AAClB,cAAM,UACJ,iBAAiB,QAAQ,kBAAkB,SAAS,UAAU,EAAE,MAA2B,IAAI;AACjG,YAAI;AAAS,kBAAQ,MAAM;AAC3B,YAAI,CAAC;AAAS;AAAA,MAChB;AAEA,UAAI,EAAE,QAAQ,eAAe,iBAAiB,SAAS;AACrD,UAAE,eAAe;AACjB,UAAE,gBAAgB;AAClB,cAAM,UACJ,iBAAiB,QAAQ,kBAAkB,SAAS,UAAU,EAAE,MAA2B,IAAI;AACjG,YAAI;AAAS,kBAAQ,MAAM;AAC3B,YAAI,CAAC;AAAS;AAAA,MAChB;AAEA,UAAI,EAAE,QAAQ,aAAa;AACzB,UAAE,eAAe;AACjB,UAAE,gBAAgB;AAClB,cAAM,oBAAoB,wBAAwB,WAAW,oBAAoB;AACjF,YAAI;AAAmB,iCAAuB,SAAS,MAAM;AAAA,MAC/D;AAEA,UAAI,EAAE,QAAQ,WAAW;AACvB,UAAE,eAAe;AACjB,UAAE,gBAAgB;AAClB,cAAM,oBAAoB,wBAAwB,WAAW,oBAAoB;AACjF,YAAI;AAAmB,6BAAmB,SAAS,MAAM;AAAA,MAC3D;AAAA,IACF;AAAA,IACA,CAAC,wBAAwB,oBAAoB,gBAAgB;AAAA,EAC/D;AAEA,SAAO;AAAA,IACL;AAAA,EACF;AACF;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -8,18 +8,24 @@ const useTabsCallbacks = () => {
|
|
|
8
8
|
tabsListRef,
|
|
9
9
|
props: { onTabChange, isDSMobile, allowTextSelection, fixedTabsHeaders }
|
|
10
10
|
} = useContext(DSTabsContext);
|
|
11
|
-
const handleOnTabChange = useCallback(
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
11
|
+
const handleOnTabChange = useCallback(
|
|
12
|
+
(tabId, e) => {
|
|
13
|
+
setInternalActiveTab(tabId);
|
|
14
|
+
onTabChange(tabId, e);
|
|
15
|
+
if (isDSMobile && !fixedTabsHeaders && e) {
|
|
16
|
+
centerTab({ e, listRef: tabsListRef });
|
|
17
|
+
}
|
|
18
|
+
},
|
|
19
|
+
[fixedTabsHeaders, isDSMobile, onTabChange, setInternalActiveTab, tabsListRef]
|
|
20
|
+
);
|
|
21
|
+
const handleOnMouseDown = useCallback(
|
|
22
|
+
(e) => {
|
|
23
|
+
const role = e.target.getAttribute("role");
|
|
24
|
+
if (role !== "tabpanel" && allowTextSelection)
|
|
25
|
+
e.stopPropagation();
|
|
26
|
+
},
|
|
27
|
+
[allowTextSelection]
|
|
28
|
+
);
|
|
23
29
|
return {
|
|
24
30
|
handleOnTabChange,
|
|
25
31
|
handleOnMouseDown
|
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../../scripts/build/transpile/react-shim.js", "../../../../src/utils/hooks/useTabsCallbacks.tsx"],
|
|
4
4
|
"sourcesContent": ["import * as React from 'react';\nexport { React };\n", "import React, { useCallback, useContext } from 'react';\nimport { centerTab } from '../helpers';\nimport { DSTabsContext } from '../../DSTabsCTX';\n\ninterface UseTabsCallbacksReturnTypeT {\n handleOnTabChange: (tabId: string, e?: React.MouseEvent) => void;\n handleOnMouseDown: (e: React.MouseEvent) => void;\n}\n\nexport const useTabsCallbacks = (): UseTabsCallbacksReturnTypeT => {\n const {\n setInternalActiveTab,\n tabsListRef,\n props: { onTabChange, isDSMobile, allowTextSelection, fixedTabsHeaders },\n } = useContext(DSTabsContext);\n\n const handleOnTabChange = useCallback(\n (tabId: string, e?: React.MouseEvent) => {\n setInternalActiveTab(tabId);\n onTabChange(tabId, e);\n if (isDSMobile && !fixedTabsHeaders && e) {\n centerTab({ e, listRef: tabsListRef });\n }\n },\n [fixedTabsHeaders, isDSMobile, onTabChange, setInternalActiveTab, tabsListRef],\n );\n\n const handleOnMouseDown = useCallback(\n (e: React.MouseEvent) => {\n const role = (e.target as HTMLElement).getAttribute('role');\n if (role !== 'tabpanel' && allowTextSelection) e.stopPropagation();\n },\n [allowTextSelection],\n );\n\n return {\n handleOnTabChange,\n handleOnMouseDown,\n };\n};\n"],
|
|
5
|
-
"mappings": "AAAA;
|
|
5
|
+
"mappings": "AAAA,YAAY,WAAW;ACAvB,SAAgB,aAAa,kBAAkB;AAC/C,SAAS,iBAAiB;AAC1B,SAAS,qBAAqB;AAOvB,MAAM,mBAAmB,MAAmC;AACjE,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA,OAAO,EAAE,aAAa,YAAY,oBAAoB,iBAAiB;AAAA,EACzE,IAAI,WAAW,aAAa;AAE5B,QAAM,oBAAoB;AAAA,IACxB,CAAC,OAAe,MAAyB;AACvC,2BAAqB,KAAK;AAC1B,kBAAY,OAAO,CAAC;AACpB,UAAI,cAAc,CAAC,oBAAoB,GAAG;AACxC,kBAAU,EAAE,GAAG,SAAS,YAAY,CAAC;AAAA,MACvC;AAAA,IACF;AAAA,IACA,CAAC,kBAAkB,YAAY,aAAa,sBAAsB,WAAW;AAAA,EAC/E;AAEA,QAAM,oBAAoB;AAAA,IACxB,CAAC,MAAwB;AACvB,YAAM,OAAQ,EAAE,OAAuB,aAAa,MAAM;AAC1D,UAAI,SAAS,cAAc;AAAoB,UAAE,gBAAgB;AAAA,IACnE;AAAA,IACA,CAAC,kBAAkB;AAAA,EACrB;AAEA,SAAO;AAAA,IACL;AAAA,IACA;AAAA,EACF;AACF;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@elliemae/ds-tabs",
|
|
3
|
-
"version": "3.4.
|
|
3
|
+
"version": "3.4.3",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"description": "ICE MT - Dimsum - Tabs",
|
|
6
6
|
"files": [
|
|
@@ -131,11 +131,11 @@
|
|
|
131
131
|
"indent": 4
|
|
132
132
|
},
|
|
133
133
|
"dependencies": {
|
|
134
|
-
"@elliemae/ds-button": "3.4.
|
|
135
|
-
"@elliemae/ds-icon": "3.4.
|
|
136
|
-
"@elliemae/ds-icons": "3.4.
|
|
137
|
-
"@elliemae/ds-system": "3.4.
|
|
138
|
-
"@elliemae/ds-utilities": "3.4.
|
|
134
|
+
"@elliemae/ds-button": "3.4.3",
|
|
135
|
+
"@elliemae/ds-icon": "3.4.3",
|
|
136
|
+
"@elliemae/ds-icons": "3.4.3",
|
|
137
|
+
"@elliemae/ds-system": "3.4.3",
|
|
138
|
+
"@elliemae/ds-utilities": "3.4.3",
|
|
139
139
|
"@react-hook/resize-observer": "~1.2.5",
|
|
140
140
|
"react-swipeable-views": "~0.14.0"
|
|
141
141
|
},
|