@elliemae/ds-tabs 2.3.0-alpha.2 → 2.3.0-alpha.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/{cjs → dist/cjs}/DSTabs.js +0 -0
- package/{cjs → dist/cjs}/DSTabs.js.map +0 -0
- package/{cjs → dist/cjs}/DSTabsCTX.js +0 -0
- package/{cjs → dist/cjs}/DSTabsCTX.js.map +0 -0
- package/{cjs → dist/cjs}/DSTabsDatatestid.js +0 -0
- package/{cjs → dist/cjs}/DSTabsDatatestid.js.map +0 -0
- package/{cjs → dist/cjs}/DSTabsTypes.js +0 -0
- package/{cjs → dist/cjs}/DSTabsTypes.js.map +1 -1
- package/{cjs → dist/cjs}/config/useCrossRef.js +0 -0
- package/{cjs → dist/cjs}/config/useCrossRef.js.map +0 -0
- package/{cjs → dist/cjs}/config/useTabs.js +0 -0
- package/{cjs → dist/cjs}/config/useTabs.js.map +0 -0
- package/{cjs → dist/cjs}/defaultProps.js +0 -0
- package/{cjs → dist/cjs}/defaultProps.js.map +0 -0
- package/{cjs → dist/cjs}/exportsRelated/DSTab.js +0 -0
- package/{cjs → dist/cjs}/exportsRelated/DSTab.js.map +0 -0
- package/{cjs → dist/cjs}/index.js +0 -0
- package/{cjs → dist/cjs}/index.js.map +0 -0
- package/{cjs → dist/cjs}/parts/carousel/Carousel.js +0 -0
- package/{cjs → dist/cjs}/parts/carousel/Carousel.js.map +0 -0
- package/{cjs → dist/cjs}/parts/carousel/styles.js +0 -0
- package/{cjs → dist/cjs}/parts/carousel/styles.js.map +0 -0
- package/{cjs → dist/cjs}/parts/carousel/useCarousel.js +0 -0
- package/{cjs → dist/cjs}/parts/carousel/useCarousel.js.map +0 -0
- package/{cjs → dist/cjs}/parts/carousel/useCarouselCallbacks.js +0 -0
- package/{cjs → dist/cjs}/parts/carousel/useCarouselCallbacks.js.map +0 -0
- package/{cjs → dist/cjs}/parts/tabBar/TabBar.js +7 -0
- package/dist/cjs/parts/tabBar/TabBar.js.map +7 -0
- package/{cjs → dist/cjs}/parts/tabBar/styles.js +0 -0
- package/{cjs → dist/cjs}/parts/tabBar/styles.js.map +0 -0
- package/{cjs → dist/cjs}/parts/tabBar/useTabBar.js +5 -13
- package/dist/cjs/parts/tabBar/useTabBar.js.map +7 -0
- package/{cjs → dist/cjs}/parts/tabsContent/TabsContent.js +0 -0
- package/{cjs → dist/cjs}/parts/tabsContent/TabsContent.js.map +0 -0
- package/{cjs → dist/cjs}/parts/tabsContent/styles.js +0 -0
- package/{cjs → dist/cjs}/parts/tabsContent/styles.js.map +0 -0
- package/{cjs → dist/cjs}/parts/tabsPanel/TabsPanels.js +0 -0
- package/{cjs → dist/cjs}/parts/tabsPanel/TabsPanels.js.map +0 -0
- package/{cjs → dist/cjs}/parts/tabsPanel/styles.js +0 -0
- package/{cjs → dist/cjs}/parts/tabsPanel/styles.js.map +0 -0
- package/{cjs → dist/cjs}/propTypes.js +0 -0
- package/{cjs → dist/cjs}/propTypes.js.map +0 -0
- package/{cjs → dist/cjs}/utils/constants.js +0 -0
- package/{cjs → dist/cjs}/utils/constants.js.map +0 -0
- package/{cjs → dist/cjs}/utils/helpers.js +17 -0
- package/dist/cjs/utils/helpers.js.map +7 -0
- package/{cjs → dist/cjs}/utils/hooks/useKeyboardNavigation.js +0 -0
- package/{cjs → dist/cjs}/utils/hooks/useKeyboardNavigation.js.map +0 -0
- package/{cjs → dist/cjs}/utils/hooks/useTabsCallbacks.js +3 -18
- package/dist/cjs/utils/hooks/useTabsCallbacks.js.map +7 -0
- package/{esm → dist/esm}/DSTabs.js +0 -0
- package/{esm → dist/esm}/DSTabs.js.map +0 -0
- package/{esm → dist/esm}/DSTabsCTX.js +0 -0
- package/{esm → dist/esm}/DSTabsCTX.js.map +0 -0
- package/{esm → dist/esm}/DSTabsDatatestid.js +0 -0
- package/{esm → dist/esm}/DSTabsDatatestid.js.map +0 -0
- package/{esm → dist/esm}/DSTabsTypes.js +0 -0
- package/{esm → dist/esm}/DSTabsTypes.js.map +0 -0
- package/{esm → dist/esm}/config/useCrossRef.js +0 -0
- package/{esm → dist/esm}/config/useCrossRef.js.map +0 -0
- package/{esm → dist/esm}/config/useTabs.js +0 -0
- package/{esm → dist/esm}/config/useTabs.js.map +0 -0
- package/{esm → dist/esm}/defaultProps.js +0 -0
- package/{esm → dist/esm}/defaultProps.js.map +0 -0
- package/{esm → dist/esm}/exportsRelated/DSTab.js +0 -0
- package/{esm → dist/esm}/exportsRelated/DSTab.js.map +0 -0
- package/{esm → dist/esm}/index.js +0 -0
- package/{esm → dist/esm}/index.js.map +0 -0
- package/{esm → dist/esm}/parts/carousel/Carousel.js +0 -0
- package/{esm → dist/esm}/parts/carousel/Carousel.js.map +0 -0
- package/{esm → dist/esm}/parts/carousel/styles.js +0 -0
- package/{esm → dist/esm}/parts/carousel/styles.js.map +0 -0
- package/{esm → dist/esm}/parts/carousel/useCarousel.js +0 -0
- package/{esm → dist/esm}/parts/carousel/useCarousel.js.map +0 -0
- package/{esm → dist/esm}/parts/carousel/useCarouselCallbacks.js +0 -0
- package/{esm → dist/esm}/parts/carousel/useCarouselCallbacks.js.map +0 -0
- package/{esm → dist/esm}/parts/tabBar/TabBar.js +7 -0
- package/dist/esm/parts/tabBar/TabBar.js.map +7 -0
- package/{esm → dist/esm}/parts/tabBar/styles.js +0 -0
- package/{esm → dist/esm}/parts/tabBar/styles.js.map +0 -0
- package/{esm → dist/esm}/parts/tabBar/useTabBar.js +6 -14
- package/dist/esm/parts/tabBar/useTabBar.js.map +7 -0
- package/{esm → dist/esm}/parts/tabsContent/TabsContent.js +0 -0
- package/{esm → dist/esm}/parts/tabsContent/TabsContent.js.map +0 -0
- package/{esm → dist/esm}/parts/tabsContent/styles.js +0 -0
- package/{esm → dist/esm}/parts/tabsContent/styles.js.map +0 -0
- package/{esm → dist/esm}/parts/tabsPanel/TabsPanels.js +0 -0
- package/{esm → dist/esm}/parts/tabsPanel/TabsPanels.js.map +0 -0
- package/{esm → dist/esm}/parts/tabsPanel/styles.js +0 -0
- package/{esm → dist/esm}/parts/tabsPanel/styles.js.map +0 -0
- package/{esm → dist/esm}/propTypes.js +0 -0
- package/{esm → dist/esm}/propTypes.js.map +0 -0
- package/{esm → dist/esm}/utils/constants.js +0 -0
- package/{esm → dist/esm}/utils/constants.js.map +0 -0
- package/{esm → dist/esm}/utils/helpers.js +17 -0
- package/dist/esm/utils/helpers.js.map +7 -0
- package/{esm → dist/esm}/utils/hooks/useKeyboardNavigation.js +0 -0
- package/{esm → dist/esm}/utils/hooks/useKeyboardNavigation.js.map +0 -0
- package/{esm → dist/esm}/utils/hooks/useTabsCallbacks.js +3 -18
- package/dist/esm/utils/hooks/useTabsCallbacks.js.map +7 -0
- package/package.json +72 -70
- package/cjs/parts/tabBar/TabBar.js.map +0 -7
- package/cjs/parts/tabBar/useTabBar.js.map +0 -7
- package/cjs/utils/helpers.js.map +0 -7
- package/cjs/utils/hooks/useTabsCallbacks.js.map +0 -7
- package/esm/parts/tabBar/TabBar.js.map +0 -7
- package/esm/parts/tabBar/useTabBar.js.map +0 -7
- package/esm/utils/helpers.js.map +0 -7
- package/esm/utils/hooks/useTabsCallbacks.js.map +0 -7
- package/types/DSTabs.d.ts +0 -14
- package/types/DSTabsCTX.d.ts +0 -4
- package/types/DSTabsDatatestid.d.ts +0 -12
- package/types/DSTabsTypes.d.ts +0 -201
- package/types/config/useCrossRef.d.ts +0 -2
- package/types/config/useTabs.d.ts +0 -2
- package/types/defaultProps.d.ts +0 -2
- package/types/exportsRelated/DSTab.d.ts +0 -14
- package/types/index.d.ts +0 -5
- package/types/parts/carousel/Carousel.d.ts +0 -3
- package/types/parts/carousel/styles.d.ts +0 -9
- package/types/parts/carousel/useCarousel.d.ts +0 -2
- package/types/parts/carousel/useCarouselCallbacks.d.ts +0 -2
- package/types/parts/tabBar/TabBar.d.ts +0 -2
- package/types/parts/tabBar/styles.d.ts +0 -7
- package/types/parts/tabBar/useTabBar.d.ts +0 -2
- package/types/parts/tabsContent/TabsContent.d.ts +0 -2
- package/types/parts/tabsContent/styles.d.ts +0 -1
- package/types/parts/tabsPanel/TabsPanels.d.ts +0 -2
- package/types/parts/tabsPanel/styles.d.ts +0 -2
- package/types/propTypes.d.ts +0 -54
- package/types/tests/DSTabs.callbacks.test.d.ts +0 -1
- package/types/tests/DSTabs.func.test.d.ts +0 -1
- package/types/tests/DSTabs.keyboard.test.d.ts +0 -1
- package/types/tests/DSTabs.test.d.ts +0 -1
- package/types/utils/constants.d.ts +0 -18
- package/types/utils/helpers.d.ts +0 -8
- package/types/utils/hooks/useKeyboardNavigation.d.ts +0 -2
- package/types/utils/hooks/useTabsCallbacks.d.ts +0 -2
|
@@ -18,6 +18,22 @@ const isElementVisibleCarousel = (tab, tabContainer, firstOrLastItem = true) =>
|
|
|
18
18
|
}
|
|
19
19
|
return false;
|
|
20
20
|
};
|
|
21
|
+
const centerTab = ({ e, listRef }) => {
|
|
22
|
+
if (listRef.current) {
|
|
23
|
+
const { offsetLeft } = e?.target;
|
|
24
|
+
const { width: tabWidth } = (e?.target).getBoundingClientRect();
|
|
25
|
+
const { width: listWidth } = listRef.current.getBoundingClientRect();
|
|
26
|
+
const extraSideSpace = listWidth - tabWidth;
|
|
27
|
+
const leftOffsetToCenter = extraSideSpace > 0 ? extraSideSpace / 2 : 0;
|
|
28
|
+
const centeredLeftOffset = offsetLeft > leftOffsetToCenter ? offsetLeft - leftOffsetToCenter : 0;
|
|
29
|
+
listRef.current.scrollTo({
|
|
30
|
+
top: 0,
|
|
31
|
+
left: centeredLeftOffset,
|
|
32
|
+
behavior: "smooth"
|
|
33
|
+
});
|
|
34
|
+
e?.preventDefault();
|
|
35
|
+
}
|
|
36
|
+
};
|
|
21
37
|
const getVisibleDimensions = (node, referenceNode) => {
|
|
22
38
|
const nodeDimensions = node.getBoundingClientRect();
|
|
23
39
|
const referenceNodeDimensions = referenceNode.getBoundingClientRect();
|
|
@@ -31,6 +47,7 @@ const getIdByIndex = (children, index) => children && children[index].props.tabI
|
|
|
31
47
|
const shouldHaveLeftGradient = (scrollLeft) => Math.abs(scrollLeft) > MOBILE_GRADIENT_WIDTH;
|
|
32
48
|
const shouldHaveRightGradient = (scrollLeft, clientWidth, scrollWidth) => Math.abs(scrollLeft) <= scrollWidth - (clientWidth + MOBILE_GRADIENT_WIDTH);
|
|
33
49
|
export {
|
|
50
|
+
centerTab,
|
|
34
51
|
getIdByIndex,
|
|
35
52
|
getIndexById,
|
|
36
53
|
getVisibleDimensions,
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../scripts/build/transpile/react-shim.js", "../../../src/utils/helpers.tsx"],
|
|
4
|
+
"sourcesContent": ["import * as React from 'react';\nexport { React };\n", "import type { CenterTabPropsT, DSTabPropsWithDefaultT, VisibleDimensionsT } from '../DSTabsTypes';\nimport { MOBILE_GRADIENT_WIDTH } from './constants';\n\nexport const isElementVisible = (tab: HTMLElement, tabList: HTMLElement): boolean => {\n const tabDimensions = tab.getBoundingClientRect();\n const tabListDimensions = tabList.getBoundingClientRect();\n\n return tabDimensions.left <= tabListDimensions.left\n ? tabListDimensions.left - tabDimensions.left <= tabDimensions.width\n : tabDimensions.right - tabListDimensions.right <= tabDimensions.width;\n};\n\nexport const isElementVisibleCarousel = (\n tab: HTMLElement | null,\n tabContainer: HTMLDivElement | null,\n firstOrLastItem = true,\n): boolean => {\n if (tab && tabContainer) {\n const tabDimensions = tab.getBoundingClientRect();\n const tabContainerDimensions = tabContainer.getBoundingClientRect();\n\n const offset = firstOrLastItem ? 16 : 32;\n const tabDimensionsLeft = Math.floor(tabDimensions.left - offset);\n const tabDimensionsRight = Math.floor(tabDimensions.right + offset);\n\n const tabContainerDimensionsLeft = Math.floor(tabContainerDimensions.left);\n const tabContainerDimensionsRight = Math.floor(tabContainerDimensions.right);\n\n return tabDimensionsLeft >= tabContainerDimensionsLeft && tabDimensionsRight <= tabContainerDimensionsRight;\n }\n return false;\n};\n\nexport const centerTab = ({ e, listRef }: CenterTabPropsT) => {\n if (listRef.current) {\n const { offsetLeft } = e?.target as HTMLButtonElement;\n const { width: tabWidth } = (e?.target as HTMLButtonElement).getBoundingClientRect();\n const { width: listWidth } = listRef.current.getBoundingClientRect();\n const extraSideSpace = listWidth - tabWidth;\n const leftOffsetToCenter = extraSideSpace > 0 ? extraSideSpace / 2 : 0;\n const centeredLeftOffset = offsetLeft > leftOffsetToCenter ? offsetLeft - leftOffsetToCenter : 0;\n listRef.current.scrollTo({\n top: 0,\n left: centeredLeftOffset,\n behavior: 'smooth',\n });\n\n e?.preventDefault();\n }\n};\n\nexport const getVisibleDimensions = (node: HTMLElement, referenceNode: HTMLElement): VisibleDimensionsT => {\n const nodeDimensions = node.getBoundingClientRect();\n const referenceNodeDimensions = referenceNode.getBoundingClientRect();\n\n return {\n width: Math.min(\n node.clientWidth,\n referenceNodeDimensions.left + referenceNode.clientWidth - nodeDimensions.left,\n node.clientWidth - (referenceNodeDimensions.left - nodeDimensions.left),\n ),\n height: Math.min(\n node.clientHeight,\n referenceNodeDimensions.top + referenceNode.clientHeight - nodeDimensions.top,\n node.clientHeight - (referenceNodeDimensions.top - nodeDimensions.top),\n ),\n };\n};\n\nexport const getIndexById = (children: React.ReactElement<DSTabPropsWithDefaultT>[], activeId?: string): number =>\n children && children.findIndex((item: React.ReactElement<DSTabPropsWithDefaultT>) => item.props.tabId === activeId);\n\nexport const getIdByIndex = (children: React.ReactElement<DSTabPropsWithDefaultT>[], index: number): string =>\n (children && children[index].props.tabId) || '';\n\nexport const shouldHaveLeftGradient = (scrollLeft: number): boolean => Math.abs(scrollLeft) > MOBILE_GRADIENT_WIDTH;\n\nexport const shouldHaveRightGradient = (scrollLeft: number, clientWidth: number, scrollWidth: number): boolean =>\n Math.abs(scrollLeft) <= scrollWidth - (clientWidth + MOBILE_GRADIENT_WIDTH);\n"],
|
|
5
|
+
"mappings": "AAAA;ACCA;AAEO,MAAM,mBAAmB,CAAC,KAAkB,YAAkC;AACnF,QAAM,gBAAgB,IAAI;AAC1B,QAAM,oBAAoB,QAAQ;AAElC,SAAO,cAAc,QAAQ,kBAAkB,OAC3C,kBAAkB,OAAO,cAAc,QAAQ,cAAc,QAC7D,cAAc,QAAQ,kBAAkB,SAAS,cAAc;AAAA;AAG9D,MAAM,2BAA2B,CACtC,KACA,cACA,kBAAkB,SACN;AACZ,MAAI,OAAO,cAAc;AACvB,UAAM,gBAAgB,IAAI;AAC1B,UAAM,yBAAyB,aAAa;AAE5C,UAAM,SAAS,kBAAkB,KAAK;AACtC,UAAM,oBAAoB,KAAK,MAAM,cAAc,OAAO;AAC1D,UAAM,qBAAqB,KAAK,MAAM,cAAc,QAAQ;AAE5D,UAAM,6BAA6B,KAAK,MAAM,uBAAuB;AACrE,UAAM,8BAA8B,KAAK,MAAM,uBAAuB;AAEtE,WAAO,qBAAqB,8BAA8B,sBAAsB;AAAA;AAElF,SAAO;AAAA;AAGF,MAAM,YAAY,CAAC,EAAE,GAAG,cAA+B;AAC5D,MAAI,QAAQ,SAAS;AACnB,UAAM,EAAE,eAAe,GAAG;AAC1B,UAAM,EAAE,OAAO,aAAc,IAAG,QAA6B;AAC7D,UAAM,EAAE,OAAO,cAAc,QAAQ,QAAQ;AAC7C,UAAM,iBAAiB,YAAY;AACnC,UAAM,qBAAqB,iBAAiB,IAAI,iBAAiB,IAAI;AACrE,UAAM,qBAAqB,aAAa,qBAAqB,aAAa,qBAAqB;AAC/F,YAAQ,QAAQ,SAAS;AAAA,MACvB,KAAK;AAAA,MACL,MAAM;AAAA,MACN,UAAU;AAAA;AAGZ,OAAG;AAAA;AAAA;AAIA,MAAM,uBAAuB,CAAC,MAAmB,kBAAmD;AACzG,QAAM,iBAAiB,KAAK;AAC5B,QAAM,0BAA0B,cAAc;AAE9C,SAAO;AAAA,IACL,OAAO,KAAK,IACV,KAAK,aACL,wBAAwB,OAAO,cAAc,cAAc,eAAe,MAC1E,KAAK,cAAe,yBAAwB,OAAO,eAAe;AAAA,IAEpE,QAAQ,KAAK,IACX,KAAK,cACL,wBAAwB,MAAM,cAAc,eAAe,eAAe,KAC1E,KAAK,eAAgB,yBAAwB,MAAM,eAAe;AAAA;AAAA;AAKjE,MAAM,eAAe,CAAC,UAAwD,aACnF,YAAY,SAAS,UAAU,CAAC,SAAqD,KAAK,MAAM,UAAU;AAErG,MAAM,eAAe,CAAC,UAAwD,UAClF,YAAY,SAAS,OAAO,MAAM,SAAU;AAExC,MAAM,yBAAyB,CAAC,eAAgC,KAAK,IAAI,cAAc;AAEvF,MAAM,0BAA0B,CAAC,YAAoB,aAAqB,gBAC/E,KAAK,IAAI,eAAe,cAAe,eAAc;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
File without changes
|
|
File without changes
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import * as React from "react";
|
|
2
2
|
import { useCallback, useContext } from "react";
|
|
3
|
+
import { centerTab } from "../helpers";
|
|
3
4
|
import { DSTabsContext } from "../../DSTabsCTX";
|
|
4
5
|
const useTabsCallbacks = () => {
|
|
5
6
|
const {
|
|
@@ -7,29 +8,13 @@ const useTabsCallbacks = () => {
|
|
|
7
8
|
tabsListRef,
|
|
8
9
|
props: { onTabChange, isDSMobile, allowTextSelection, fixedTabsHeaders }
|
|
9
10
|
} = useContext(DSTabsContext);
|
|
10
|
-
const centerTabWhenTabChangeMobile = useCallback((e) => {
|
|
11
|
-
if (tabsListRef.current) {
|
|
12
|
-
const { offsetLeft } = e?.target;
|
|
13
|
-
const { width: tabWidth } = (e?.target).getBoundingClientRect();
|
|
14
|
-
const { width: listWidth } = tabsListRef.current.getBoundingClientRect();
|
|
15
|
-
const extraSideSpace = listWidth - tabWidth;
|
|
16
|
-
const leftOffsetToCenter = extraSideSpace > 0 ? extraSideSpace / 2 : 0;
|
|
17
|
-
const centeredLeftOffset = offsetLeft > leftOffsetToCenter ? offsetLeft - leftOffsetToCenter : 0;
|
|
18
|
-
tabsListRef.current.scrollTo({
|
|
19
|
-
top: 0,
|
|
20
|
-
left: centeredLeftOffset,
|
|
21
|
-
behavior: "smooth"
|
|
22
|
-
});
|
|
23
|
-
e?.preventDefault();
|
|
24
|
-
}
|
|
25
|
-
}, [tabsListRef]);
|
|
26
11
|
const handleOnTabChange = useCallback((tabId, e) => {
|
|
27
12
|
setInternalActiveTab(tabId);
|
|
28
13
|
onTabChange(tabId, e);
|
|
29
14
|
if (isDSMobile && !fixedTabsHeaders && e) {
|
|
30
|
-
|
|
15
|
+
centerTab({ e, listRef: tabsListRef });
|
|
31
16
|
}
|
|
32
|
-
}, [
|
|
17
|
+
}, [fixedTabsHeaders, isDSMobile, onTabChange, setInternalActiveTab, tabsListRef]);
|
|
33
18
|
const handleOnMouseDown = useCallback((e) => {
|
|
34
19
|
const role = e.target.getAttribute("role");
|
|
35
20
|
if (role !== "tabpanel" && allowTextSelection)
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../../scripts/build/transpile/react-shim.js", "../../../../src/utils/hooks/useTabsCallbacks.tsx"],
|
|
4
|
+
"sourcesContent": ["import * as React from 'react';\nexport { React };\n", "import React, { useCallback, useContext } from 'react';\nimport { centerTab } from '../helpers';\nimport { DSTabsContext } from '../../DSTabsCTX';\nimport type { UseTabsCallbacksReturnTypeT } from '../../DSTabsTypes';\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;ACAA;AACA;AACA;AAGO,MAAM,mBAAmB,MAAmC;AACjE,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA,OAAO,EAAE,aAAa,YAAY,oBAAoB;AAAA,MACpD,WAAW;AAEf,QAAM,oBAAoB,YACxB,CAAC,OAAe,MAAyB;AACvC,yBAAqB;AACrB,gBAAY,OAAO;AACnB,QAAI,cAAc,CAAC,oBAAoB,GAAG;AACxC,gBAAU,EAAE,GAAG,SAAS;AAAA;AAAA,KAG5B,CAAC,kBAAkB,YAAY,aAAa,sBAAsB;AAGpE,QAAM,oBAAoB,YACxB,CAAC,MAAwB;AACvB,UAAM,OAAQ,EAAE,OAAuB,aAAa;AACpD,QAAI,SAAS,cAAc;AAAoB,QAAE;AAAA,KAEnD,CAAC;AAGH,SAAO;AAAA,IACL;AAAA,IACA;AAAA;AAAA;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
package/package.json
CHANGED
|
@@ -1,111 +1,114 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@elliemae/ds-tabs",
|
|
3
|
-
"version": "2.3.0-alpha.
|
|
3
|
+
"version": "2.3.0-alpha.7",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"description": "ICE MT - Dimsum - Tabs",
|
|
6
|
-
"
|
|
7
|
-
|
|
8
|
-
|
|
6
|
+
"files": [
|
|
7
|
+
"dist"
|
|
8
|
+
],
|
|
9
|
+
"module": "./dist/esm/index.js",
|
|
10
|
+
"main": "./dist/cjs/index.js",
|
|
11
|
+
"types": "./dist/types/index.d.ts",
|
|
9
12
|
"exports": {
|
|
10
13
|
".": {
|
|
11
|
-
"import": "./esm/index.js",
|
|
12
|
-
"require": "./cjs/index.js"
|
|
14
|
+
"import": "./dist/esm/index.js",
|
|
15
|
+
"require": "./dist/cjs/index.js"
|
|
13
16
|
},
|
|
14
17
|
"./utils/hooks/useTabsCallbacks": {
|
|
15
|
-
"import": "./esm/utils/hooks/useTabsCallbacks.js",
|
|
16
|
-
"require": "./cjs/utils/hooks/useTabsCallbacks.js"
|
|
18
|
+
"import": "./dist/esm/utils/hooks/useTabsCallbacks.js",
|
|
19
|
+
"require": "./dist/cjs/utils/hooks/useTabsCallbacks.js"
|
|
17
20
|
},
|
|
18
21
|
"./utils/hooks/useKeyboardNavigation": {
|
|
19
|
-
"import": "./esm/utils/hooks/useKeyboardNavigation.js",
|
|
20
|
-
"require": "./cjs/utils/hooks/useKeyboardNavigation.js"
|
|
22
|
+
"import": "./dist/esm/utils/hooks/useKeyboardNavigation.js",
|
|
23
|
+
"require": "./dist/cjs/utils/hooks/useKeyboardNavigation.js"
|
|
21
24
|
},
|
|
22
25
|
"./utils/helpers": {
|
|
23
|
-
"import": "./esm/utils/helpers.js",
|
|
24
|
-
"require": "./cjs/utils/helpers.js"
|
|
26
|
+
"import": "./dist/esm/utils/helpers.js",
|
|
27
|
+
"require": "./dist/cjs/utils/helpers.js"
|
|
25
28
|
},
|
|
26
29
|
"./utils/constants": {
|
|
27
|
-
"import": "./esm/utils/constants.js",
|
|
28
|
-
"require": "./cjs/utils/constants.js"
|
|
30
|
+
"import": "./dist/esm/utils/constants.js",
|
|
31
|
+
"require": "./dist/cjs/utils/constants.js"
|
|
29
32
|
},
|
|
30
33
|
"./propTypes": {
|
|
31
|
-
"import": "./esm/propTypes.js",
|
|
32
|
-
"require": "./cjs/propTypes.js"
|
|
34
|
+
"import": "./dist/esm/propTypes.js",
|
|
35
|
+
"require": "./dist/cjs/propTypes.js"
|
|
33
36
|
},
|
|
34
37
|
"./parts/tabsPanel/TabsPanels": {
|
|
35
|
-
"import": "./esm/parts/tabsPanel/TabsPanels.js",
|
|
36
|
-
"require": "./cjs/parts/tabsPanel/TabsPanels.js"
|
|
38
|
+
"import": "./dist/esm/parts/tabsPanel/TabsPanels.js",
|
|
39
|
+
"require": "./dist/cjs/parts/tabsPanel/TabsPanels.js"
|
|
37
40
|
},
|
|
38
41
|
"./parts/tabsPanel/styles": {
|
|
39
|
-
"import": "./esm/parts/tabsPanel/styles.js",
|
|
40
|
-
"require": "./cjs/parts/tabsPanel/styles.js"
|
|
42
|
+
"import": "./dist/esm/parts/tabsPanel/styles.js",
|
|
43
|
+
"require": "./dist/cjs/parts/tabsPanel/styles.js"
|
|
41
44
|
},
|
|
42
45
|
"./parts/tabsContent/TabsContent": {
|
|
43
|
-
"import": "./esm/parts/tabsContent/TabsContent.js",
|
|
44
|
-
"require": "./cjs/parts/tabsContent/TabsContent.js"
|
|
46
|
+
"import": "./dist/esm/parts/tabsContent/TabsContent.js",
|
|
47
|
+
"require": "./dist/cjs/parts/tabsContent/TabsContent.js"
|
|
45
48
|
},
|
|
46
49
|
"./parts/tabsContent/styles": {
|
|
47
|
-
"import": "./esm/parts/tabsContent/styles.js",
|
|
48
|
-
"require": "./cjs/parts/tabsContent/styles.js"
|
|
50
|
+
"import": "./dist/esm/parts/tabsContent/styles.js",
|
|
51
|
+
"require": "./dist/cjs/parts/tabsContent/styles.js"
|
|
49
52
|
},
|
|
50
53
|
"./parts/tabBar/useTabBar": {
|
|
51
|
-
"import": "./esm/parts/tabBar/useTabBar.js",
|
|
52
|
-
"require": "./cjs/parts/tabBar/useTabBar.js"
|
|
54
|
+
"import": "./dist/esm/parts/tabBar/useTabBar.js",
|
|
55
|
+
"require": "./dist/cjs/parts/tabBar/useTabBar.js"
|
|
53
56
|
},
|
|
54
57
|
"./parts/tabBar/TabBar": {
|
|
55
|
-
"import": "./esm/parts/tabBar/TabBar.js",
|
|
56
|
-
"require": "./cjs/parts/tabBar/TabBar.js"
|
|
58
|
+
"import": "./dist/esm/parts/tabBar/TabBar.js",
|
|
59
|
+
"require": "./dist/cjs/parts/tabBar/TabBar.js"
|
|
57
60
|
},
|
|
58
61
|
"./parts/tabBar/styles": {
|
|
59
|
-
"import": "./esm/parts/tabBar/styles.js",
|
|
60
|
-
"require": "./cjs/parts/tabBar/styles.js"
|
|
62
|
+
"import": "./dist/esm/parts/tabBar/styles.js",
|
|
63
|
+
"require": "./dist/cjs/parts/tabBar/styles.js"
|
|
61
64
|
},
|
|
62
65
|
"./parts/carousel/useCarouselCallbacks": {
|
|
63
|
-
"import": "./esm/parts/carousel/useCarouselCallbacks.js",
|
|
64
|
-
"require": "./cjs/parts/carousel/useCarouselCallbacks.js"
|
|
66
|
+
"import": "./dist/esm/parts/carousel/useCarouselCallbacks.js",
|
|
67
|
+
"require": "./dist/cjs/parts/carousel/useCarouselCallbacks.js"
|
|
65
68
|
},
|
|
66
69
|
"./parts/carousel/useCarousel": {
|
|
67
|
-
"import": "./esm/parts/carousel/useCarousel.js",
|
|
68
|
-
"require": "./cjs/parts/carousel/useCarousel.js"
|
|
70
|
+
"import": "./dist/esm/parts/carousel/useCarousel.js",
|
|
71
|
+
"require": "./dist/cjs/parts/carousel/useCarousel.js"
|
|
69
72
|
},
|
|
70
73
|
"./parts/carousel/styles": {
|
|
71
|
-
"import": "./esm/parts/carousel/styles.js",
|
|
72
|
-
"require": "./cjs/parts/carousel/styles.js"
|
|
74
|
+
"import": "./dist/esm/parts/carousel/styles.js",
|
|
75
|
+
"require": "./dist/cjs/parts/carousel/styles.js"
|
|
73
76
|
},
|
|
74
77
|
"./parts/carousel/Carousel": {
|
|
75
|
-
"import": "./esm/parts/carousel/Carousel.js",
|
|
76
|
-
"require": "./cjs/parts/carousel/Carousel.js"
|
|
78
|
+
"import": "./dist/esm/parts/carousel/Carousel.js",
|
|
79
|
+
"require": "./dist/cjs/parts/carousel/Carousel.js"
|
|
77
80
|
},
|
|
78
81
|
"./exportsRelated/DSTab": {
|
|
79
|
-
"import": "./esm/exportsRelated/DSTab.js",
|
|
80
|
-
"require": "./cjs/exportsRelated/DSTab.js"
|
|
82
|
+
"import": "./dist/esm/exportsRelated/DSTab.js",
|
|
83
|
+
"require": "./dist/cjs/exportsRelated/DSTab.js"
|
|
81
84
|
},
|
|
82
85
|
"./DSTabsTypes": {
|
|
83
|
-
"import": "./esm/DSTabsTypes.js",
|
|
84
|
-
"require": "./cjs/DSTabsTypes.js"
|
|
86
|
+
"import": "./dist/esm/DSTabsTypes.js",
|
|
87
|
+
"require": "./dist/cjs/DSTabsTypes.js"
|
|
85
88
|
},
|
|
86
89
|
"./DSTabsDatatestid": {
|
|
87
|
-
"import": "./esm/DSTabsDatatestid.js",
|
|
88
|
-
"require": "./cjs/DSTabsDatatestid.js"
|
|
90
|
+
"import": "./dist/esm/DSTabsDatatestid.js",
|
|
91
|
+
"require": "./dist/cjs/DSTabsDatatestid.js"
|
|
89
92
|
},
|
|
90
93
|
"./DSTabsCTX": {
|
|
91
|
-
"import": "./esm/DSTabsCTX.js",
|
|
92
|
-
"require": "./cjs/DSTabsCTX.js"
|
|
94
|
+
"import": "./dist/esm/DSTabsCTX.js",
|
|
95
|
+
"require": "./dist/cjs/DSTabsCTX.js"
|
|
93
96
|
},
|
|
94
97
|
"./DSTabs": {
|
|
95
|
-
"import": "./esm/DSTabs.js",
|
|
96
|
-
"require": "./cjs/DSTabs.js"
|
|
98
|
+
"import": "./dist/esm/DSTabs.js",
|
|
99
|
+
"require": "./dist/cjs/DSTabs.js"
|
|
97
100
|
},
|
|
98
101
|
"./defaultProps": {
|
|
99
|
-
"import": "./esm/defaultProps.js",
|
|
100
|
-
"require": "./cjs/defaultProps.js"
|
|
102
|
+
"import": "./dist/esm/defaultProps.js",
|
|
103
|
+
"require": "./dist/cjs/defaultProps.js"
|
|
101
104
|
},
|
|
102
105
|
"./config/useTabs": {
|
|
103
|
-
"import": "./esm/config/useTabs.js",
|
|
104
|
-
"require": "./cjs/config/useTabs.js"
|
|
106
|
+
"import": "./dist/esm/config/useTabs.js",
|
|
107
|
+
"require": "./dist/cjs/config/useTabs.js"
|
|
105
108
|
},
|
|
106
109
|
"./config/useCrossRef": {
|
|
107
|
-
"import": "./esm/config/useCrossRef.js",
|
|
108
|
-
"require": "./cjs/config/useCrossRef.js"
|
|
110
|
+
"import": "./dist/esm/config/useCrossRef.js",
|
|
111
|
+
"require": "./dist/cjs/config/useCrossRef.js"
|
|
109
112
|
}
|
|
110
113
|
},
|
|
111
114
|
"sideEffects": [
|
|
@@ -117,29 +120,23 @@
|
|
|
117
120
|
"url": "https://git.elliemae.io/platform-ui/dimsum.git"
|
|
118
121
|
},
|
|
119
122
|
"engines": {
|
|
120
|
-
"
|
|
121
|
-
"node": ">=
|
|
123
|
+
"pnpm": ">=6",
|
|
124
|
+
"node": ">=16"
|
|
122
125
|
},
|
|
123
126
|
"author": "ICE MT",
|
|
124
|
-
"scripts": {
|
|
125
|
-
"dev": "cross-env NODE_ENV=development && node ../../scripts/build/build.js -w",
|
|
126
|
-
"prebuild": "exit 0",
|
|
127
|
-
"predev": "exit 0",
|
|
128
|
-
"build": "node ../../scripts/build/build.js"
|
|
129
|
-
},
|
|
130
127
|
"dependencies": {
|
|
131
|
-
"@elliemae/ds-button": "2.3.0-alpha.
|
|
132
|
-
"@elliemae/ds-icon": "2.3.0-alpha.
|
|
133
|
-
"@elliemae/ds-icons": "2.3.0-alpha.
|
|
134
|
-
"@elliemae/ds-props-helpers": "2.3.0-alpha.
|
|
135
|
-
"@elliemae/ds-system": "2.3.0-alpha.
|
|
128
|
+
"@elliemae/ds-button": "2.3.0-alpha.7",
|
|
129
|
+
"@elliemae/ds-icon": "2.3.0-alpha.7",
|
|
130
|
+
"@elliemae/ds-icons": "2.3.0-alpha.7",
|
|
131
|
+
"@elliemae/ds-props-helpers": "2.3.0-alpha.7",
|
|
132
|
+
"@elliemae/ds-system": "2.3.0-alpha.7",
|
|
136
133
|
"@react-hook/resize-observer": "~1.2.5",
|
|
137
134
|
"prop-types": "~15.7.2",
|
|
138
135
|
"react-desc": "~4.1.3",
|
|
139
136
|
"react-swipeable-views": "~0.13.9"
|
|
140
137
|
},
|
|
141
138
|
"devDependencies": {
|
|
142
|
-
"@testing-library/jest-dom": "~5.15.
|
|
139
|
+
"@testing-library/jest-dom": "~5.15.1",
|
|
143
140
|
"@testing-library/react": "~12.1.2",
|
|
144
141
|
"@testing-library/user-event": "~13.5.0",
|
|
145
142
|
"styled-components": "~5.3.3"
|
|
@@ -152,7 +149,12 @@
|
|
|
152
149
|
},
|
|
153
150
|
"publishConfig": {
|
|
154
151
|
"access": "public",
|
|
155
|
-
"
|
|
156
|
-
|
|
152
|
+
"typeSafety": false
|
|
153
|
+
},
|
|
154
|
+
"scripts": {
|
|
155
|
+
"dev": "cross-env NODE_ENV=development && node ../../scripts/build/build.js -w",
|
|
156
|
+
"prebuild": "exit 0",
|
|
157
|
+
"predev": "exit 0",
|
|
158
|
+
"build": "node ../../scripts/build/build.js"
|
|
157
159
|
}
|
|
158
160
|
}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../../src/parts/tabBar/TabBar.tsx", "../../../../../../scripts/build/transpile/react-shim.js"],
|
|
4
|
-
"sourcesContent": ["/* eslint-disable complexity */\nimport React, { useMemo, useContext } from 'react';\nimport { Carousel } from '../carousel/Carousel';\nimport { useTabBar } from './useTabBar';\nimport {\n StyledTabButton,\n StyledTabList,\n StyledTabWrapper,\n StyledSelectionIndicator,\n StyledSubTabsList,\n StyledRequiredMark,\n} from './styles';\nimport { DSTabsContext, DSTabsCrossRefContext } from '../../DSTabsCTX';\nimport { useKeyboardNavigation } from '../../utils/hooks/useKeyboardNavigation';\nimport { TabTypes } from '../../utils/constants';\nimport { useTabsCallbacks } from '../../utils/hooks/useTabsCallbacks';\nimport { DSTabsDatatestid } from '../../DSTabsDatatestid';\nimport type { DSTabPropsWithDefaultT } from '../../DSTabsTypes';\n\nexport const TabBar = (): JSX.Element => {\n const {\n tabsRef,\n focusableTabsRef,\n tabsListRef,\n tabsRefAsArray,\n actualActiveTab,\n props: { type, fixedTabsHeaders, withCarousel, isDSMobile, showSeparator, children: tabs },\n } = useContext(DSTabsContext);\n\n const { lastTabInternalRef, firstSubtabInternalRef } = useContext(DSTabsCrossRefContext);\n const { handleOnTabChange } = useTabsCallbacks();\n const { handleOnKeyDown } = useKeyboardNavigation();\n\n const { indicatorStyle, mobileGradients, updateMobileGradients, updateIndicatorStyle } = useTabBar();\n\n const renderTabs: React.ReactNode[] = useMemo(() => {\n const availableTabIndexes: number[] = [];\n\n return React.Children.map(tabs, (tab: React.ReactElement<DSTabPropsWithDefaultT>, index) => {\n const { tabId = '', title = '', style, required = false, disabled = false, ref, onClick, onKeyDown } = tab.props;\n if (!disabled) availableTabIndexes.push(index);\n return (\n <StyledTabButton\n key={tabId}\n role=\"tab\"\n ref={(t: HTMLButtonElement) => {\n if (tabsRefAsArray.current && focusableTabsRef.current && tabsRef.current) {\n tabsRefAsArray.current[index] = t;\n if (!disabled && !focusableTabsRef.current.includes(t)) focusableTabsRef.current.push(t);\n tabsRef.current[index] = t;\n if (type === TabTypes.SUBTABS && firstSubtabInternalRef && index === availableTabIndexes[0]) {\n firstSubtabInternalRef.current = t;\n }\n if (type !== TabTypes.SUBTABS && index === availableTabIndexes[availableTabIndexes.length - 1]) {\n lastTabInternalRef.current = t;\n }\n if (ref) ref.current = t;\n }\n }}\n type=\"button\"\n aria-controls={tabId}\n aria-selected={actualActiveTab === tabId}\n aria-disabled={disabled}\n aria-labelledby={`${tabId}-label`}\n isDSMobile={isDSMobile}\n fixedTabsHeaders={fixedTabsHeaders}\n tabType={type}\n title={title}\n data-required={required}\n data-tab-id={tabId}\n data-index={index}\n withCarousel={withCarousel}\n isActive={actualActiveTab === tabId}\n disabled={disabled}\n showSeparator={showSeparator && type !== TabTypes.NORMAL}\n data-testid={type === TabTypes.NORMAL ? DSTabsDatatestid.TAB_BUTTON : DSTabsDatatestid.SUBTAB_BUTTON}\n id={`${tabId}-label`}\n onClick={(e) => {\n if (!disabled) {\n handleOnTabChange(tabId, e);\n updateIndicatorStyle();\n }\n if (onClick && !disabled) onClick(tabId, e);\n }}\n onKeyDown={(e) => {\n if (e.key === 'Enter') e.stopPropagation();\n if (!disabled) handleOnKeyDown(e);\n if (onKeyDown && !disabled) onKeyDown(e);\n }}\n style={style}\n >\n {title}\n {required && <StyledRequiredMark>●</StyledRequiredMark>}\n </StyledTabButton>\n );\n });\n }, [\n tabs,\n actualActiveTab,\n isDSMobile,\n fixedTabsHeaders,\n type,\n withCarousel,\n showSeparator,\n tabsRefAsArray,\n focusableTabsRef,\n tabsRef,\n firstSubtabInternalRef,\n lastTabInternalRef,\n handleOnTabChange,\n updateIndicatorStyle,\n handleOnKeyDown,\n ]);\n\n if (type === TabTypes.SUBTABS && !isDSMobile) {\n return (\n <StyledSubTabsList\n withCarousel={withCarousel}\n data-testid={DSTabsDatatestid.SUB_TAB_LIST}\n ref={tabsListRef}\n role=\"tablist\"\n >\n {withCarousel ? <Carousel>{renderTabs}</Carousel> : renderTabs}\n </StyledSubTabsList>\n );\n }\n\n return (\n <StyledTabList\n withCarousel={withCarousel}\n ref={tabsListRef}\n role=\"tablist\"\n data-testid={DSTabsDatatestid.TAB_LIST}\n isDSMobile={isDSMobile}\n fixedTabsHeaders={fixedTabsHeaders}\n mobileGradients={mobileGradients}\n onScroll={updateMobileGradients}\n indicatorStyle={indicatorStyle}\n tabType={type}\n >\n <StyledTabWrapper isDSMobile={isDSMobile} fixedTabsHeaders={fixedTabsHeaders}>\n {!isDSMobile && withCarousel ? (\n <Carousel updateIndicatorStyle={updateIndicatorStyle}>{renderTabs}</Carousel>\n ) : (\n renderTabs\n )}\n </StyledTabWrapper>\n <StyledSelectionIndicator isDSMobile={isDSMobile} tabType={type} />\n </StyledTabList>\n );\n};\n", "import * as React from 'react';\nexport { React };\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": []
|
|
7
|
-
}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../../src/parts/tabBar/useTabBar.tsx", "../../../../../../scripts/build/transpile/react-shim.js"],
|
|
4
|
-
"sourcesContent": ["/* eslint-disable max-statements */\nimport { useCallback, useLayoutEffect, useEffect, useState, useContext } from 'react';\nimport useResizeObserver from '@react-hook/resize-observer';\nimport { isElementVisible, shouldHaveLeftGradient, shouldHaveRightGradient } from '../../utils/helpers';\nimport { DSTabsContext } from '../../DSTabsCTX';\nimport { defaultIndicatorStyles } from '../../utils/constants';\nimport type { IndicatorStyleT, MobileGradientsT, UseTabBarReturnTypeT } from '../../DSTabsTypes';\n\nexport const useTabBar = (): UseTabBarReturnTypeT => {\n const {\n actualActiveTab,\n actualActiveTabRef,\n tabsListRef,\n props: { showSelectionIndicator, isDSMobile, fixedTabsHeaders },\n } = useContext(DSTabsContext);\n\n const [mobileGradients, setMobileGradients] = useState<MobileGradientsT>({ left: false, right: false });\n const [indicatorStyle, setIndicatorStyle] = useState<IndicatorStyleT>(defaultIndicatorStyles);\n\n const getIndicatorStyles = useCallback(() => {\n if (tabsListRef.current) {\n const tabList = tabsListRef.current;\n const activeTabButton = actualActiveTabRef.current;\n\n if (!activeTabButton || !isElementVisible(activeTabButton, tabList)) return defaultIndicatorStyles;\n\n // The missingMargins are to make the selection indicator white marks work properly in desktop, we need\n // the full width of the tab button with margins.\n const missingMargins = isDSMobile ? 0 : 16;\n\n const tabClientWidth =\n isDSMobile && !fixedTabsHeaders\n ? activeTabButton.clientWidth\n : activeTabButton.clientWidth + missingMargins * 2;\n\n // The reason why we use the tabList.scrollLeft is due to the centerOnTabChange (only in Mobile and FlexibleTabs)\n // behavior that adds scroll to the tabList\n const position =\n isDSMobile && !fixedTabsHeaders\n ? activeTabButton.getBoundingClientRect().left - tabList.getBoundingClientRect().left + tabList.scrollLeft\n : activeTabButton.getBoundingClientRect().left - tabList.getBoundingClientRect().left - missingMargins;\n\n const backgroundWithTransparent = `linear-gradient(to right, transparent 0px, transparent 16px, #1E79C2 16px, #1E79C2 ${\n tabClientWidth - 16\n }px,transparent ${tabClientWidth - 16}px,transparent ${tabClientWidth}px )`;\n\n return {\n left: `${position}px`,\n width: `${tabClientWidth}px`,\n backgroundWithTransparent,\n };\n }\n return defaultIndicatorStyles;\n }, [actualActiveTabRef, fixedTabsHeaders, isDSMobile, tabsListRef]);\n\n const updateIndicatorStyle = useCallback(\n () => setTimeout(() => setIndicatorStyle(getIndicatorStyles()), 100),\n [getIndicatorStyles, setIndicatorStyle],\n );\n\n useResizeObserver(tabsListRef, updateIndicatorStyle);\n\n const updateMobileGradients = useCallback(() => {\n if (tabsListRef.current && isDSMobile && !fixedTabsHeaders) {\n const { scrollLeft, scrollWidth, clientWidth } = tabsListRef.current;\n setMobileGradients({\n left: shouldHaveLeftGradient(scrollLeft),\n right: shouldHaveRightGradient(scrollLeft, clientWidth, scrollWidth),\n });\n }\n }, [fixedTabsHeaders, isDSMobile, tabsListRef]);\n\n useEffect(() => {\n if (showSelectionIndicator) {\n updateIndicatorStyle();\n }\n if (isDSMobile && !fixedTabsHeaders) {\n updateMobileGradients();\n }\n }, [\n updateIndicatorStyle,\n showSelectionIndicator,\n actualActiveTab,\n updateMobileGradients,\n isDSMobile,\n fixedTabsHeaders,\n ]);\n\n useLayoutEffect(() => {\n if (showSelectionIndicator) {\n updateIndicatorStyle();\n }\n if (isDSMobile && !fixedTabsHeaders) {\n updateMobileGradients();\n }\n }, [updateMobileGradients, showSelectionIndicator, updateIndicatorStyle, isDSMobile, fixedTabsHeaders]);\n\n return {\n updateIndicatorStyle,\n setIndicatorStyle,\n indicatorStyle,\n mobileGradients,\n updateMobileGradients,\n };\n};\n", "import * as React from 'react';\nexport { React };\n"],
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADCvB,mBAA8E;AAC9E,6BAA8B;AAC9B,qBAAkF;AAClF,uBAA8B;AAC9B,uBAAuC;AAGhC,MAAM,YAAY,MAA4B;AACnD,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA,OAAO,EAAE,wBAAwB,YAAY;AAAA,MAC3C,6BAAW;AAEf,QAAM,CAAC,iBAAiB,sBAAsB,2BAA2B,EAAE,MAAM,OAAO,OAAO;AAC/F,QAAM,CAAC,gBAAgB,qBAAqB,2BAA0B;AAEtE,QAAM,qBAAqB,8BAAY,MAAM;AAC3C,QAAI,YAAY,SAAS;AACvB,YAAM,UAAU,YAAY;AAC5B,YAAM,kBAAkB,mBAAmB;AAE3C,UAAI,CAAC,mBAAmB,CAAC,qCAAiB,iBAAiB;AAAU,eAAO;AAI5E,YAAM,iBAAiB,aAAa,IAAI;AAExC,YAAM,iBACJ,cAAc,CAAC,mBACX,gBAAgB,cAChB,gBAAgB,cAAc,iBAAiB;AAIrD,YAAM,WACJ,cAAc,CAAC,mBACX,gBAAgB,wBAAwB,OAAO,QAAQ,wBAAwB,OAAO,QAAQ,aAC9F,gBAAgB,wBAAwB,OAAO,QAAQ,wBAAwB,OAAO;AAE5F,YAAM,4BAA4B,uFAChC,iBAAiB,oBACD,iBAAiB,oBAAoB;AAEvD,aAAO;AAAA,QACL,MAAM,GAAG;AAAA,QACT,OAAO,GAAG;AAAA,QACV;AAAA;AAAA;AAGJ,WAAO;AAAA,KACN,CAAC,oBAAoB,kBAAkB,YAAY;AAEtD,QAAM,uBAAuB,8BAC3B,MAAM,WAAW,MAAM,kBAAkB,uBAAuB,MAChE,CAAC,oBAAoB;AAGvB,sCAAkB,aAAa;AAE/B,QAAM,wBAAwB,8BAAY,MAAM;AAC9C,QAAI,YAAY,WAAW,cAAc,CAAC,kBAAkB;AAC1D,YAAM,EAAE,YAAY,aAAa,gBAAgB,YAAY;AAC7D,yBAAmB;AAAA,QACjB,MAAM,2CAAuB;AAAA,QAC7B,OAAO,4CAAwB,YAAY,aAAa;AAAA;AAAA;AAAA,KAG3D,CAAC,kBAAkB,YAAY;AAElC,8BAAU,MAAM;AACd,QAAI,wBAAwB;AAC1B;AAAA;AAEF,QAAI,cAAc,CAAC,kBAAkB;AACnC;AAAA;AAAA,KAED;AAAA,IACD;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA;AAGF,oCAAgB,MAAM;AACpB,QAAI,wBAAwB;AAC1B;AAAA;AAEF,QAAI,cAAc,CAAC,kBAAkB;AACnC;AAAA;AAAA,KAED,CAAC,uBAAuB,wBAAwB,sBAAsB,YAAY;AAErF,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA;AAAA;",
|
|
6
|
-
"names": []
|
|
7
|
-
}
|
package/cjs/utils/helpers.js.map
DELETED
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/utils/helpers.tsx", "../../../../../scripts/build/transpile/react-shim.js"],
|
|
4
|
-
"sourcesContent": ["import type { DSTabPropsWithDefaultT, VisibleDimensionsT } from '../DSTabsTypes';\nimport { MOBILE_GRADIENT_WIDTH } from './constants';\n\nexport const isElementVisible = (tab: HTMLElement, tabList: HTMLElement): boolean => {\n const tabDimensions = tab.getBoundingClientRect();\n const tabListDimensions = tabList.getBoundingClientRect();\n\n return tabDimensions.left <= tabListDimensions.left\n ? tabListDimensions.left - tabDimensions.left <= tabDimensions.width\n : tabDimensions.right - tabListDimensions.right <= tabDimensions.width;\n};\n\nexport const isElementVisibleCarousel = (\n tab: HTMLElement | null,\n tabContainer: HTMLDivElement | null,\n firstOrLastItem = true,\n): boolean => {\n if (tab && tabContainer) {\n const tabDimensions = tab.getBoundingClientRect();\n const tabContainerDimensions = tabContainer.getBoundingClientRect();\n\n const offset = firstOrLastItem ? 16 : 32;\n const tabDimensionsLeft = Math.floor(tabDimensions.left - offset);\n const tabDimensionsRight = Math.floor(tabDimensions.right + offset);\n\n const tabContainerDimensionsLeft = Math.floor(tabContainerDimensions.left);\n const tabContainerDimensionsRight = Math.floor(tabContainerDimensions.right);\n\n return tabDimensionsLeft >= tabContainerDimensionsLeft && tabDimensionsRight <= tabContainerDimensionsRight;\n }\n return false;\n};\n\nexport const getVisibleDimensions = (node: HTMLElement, referenceNode: HTMLElement): VisibleDimensionsT => {\n const nodeDimensions = node.getBoundingClientRect();\n const referenceNodeDimensions = referenceNode.getBoundingClientRect();\n\n return {\n width: Math.min(\n node.clientWidth,\n referenceNodeDimensions.left + referenceNode.clientWidth - nodeDimensions.left,\n node.clientWidth - (referenceNodeDimensions.left - nodeDimensions.left),\n ),\n height: Math.min(\n node.clientHeight,\n referenceNodeDimensions.top + referenceNode.clientHeight - nodeDimensions.top,\n node.clientHeight - (referenceNodeDimensions.top - nodeDimensions.top),\n ),\n };\n};\n\nexport const getIndexById = (children: React.ReactElement<DSTabPropsWithDefaultT>[], activeId?: string): number =>\n children && children.findIndex((item: React.ReactElement<DSTabPropsWithDefaultT>) => item.props.tabId === activeId);\n\nexport const getIdByIndex = (children: React.ReactElement<DSTabPropsWithDefaultT>[], index: number): string =>\n (children && children[index].props.tabId) || '';\n\nexport const shouldHaveLeftGradient = (scrollLeft: number): boolean => Math.abs(scrollLeft) > MOBILE_GRADIENT_WIDTH;\n\nexport const shouldHaveRightGradient = (scrollLeft: number, clientWidth: number, scrollWidth: number): boolean =>\n Math.abs(scrollLeft) <= scrollWidth - (clientWidth + MOBILE_GRADIENT_WIDTH);\n", "import * as React from 'react';\nexport { React };\n"],
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADCvB,uBAAsC;AAE/B,MAAM,mBAAmB,CAAC,KAAkB,YAAkC;AACnF,QAAM,gBAAgB,IAAI;AAC1B,QAAM,oBAAoB,QAAQ;AAElC,SAAO,cAAc,QAAQ,kBAAkB,OAC3C,kBAAkB,OAAO,cAAc,QAAQ,cAAc,QAC7D,cAAc,QAAQ,kBAAkB,SAAS,cAAc;AAAA;AAG9D,MAAM,2BAA2B,CACtC,KACA,cACA,kBAAkB,SACN;AACZ,MAAI,OAAO,cAAc;AACvB,UAAM,gBAAgB,IAAI;AAC1B,UAAM,yBAAyB,aAAa;AAE5C,UAAM,SAAS,kBAAkB,KAAK;AACtC,UAAM,oBAAoB,KAAK,MAAM,cAAc,OAAO;AAC1D,UAAM,qBAAqB,KAAK,MAAM,cAAc,QAAQ;AAE5D,UAAM,6BAA6B,KAAK,MAAM,uBAAuB;AACrE,UAAM,8BAA8B,KAAK,MAAM,uBAAuB;AAEtE,WAAO,qBAAqB,8BAA8B,sBAAsB;AAAA;AAElF,SAAO;AAAA;AAGF,MAAM,uBAAuB,CAAC,MAAmB,kBAAmD;AACzG,QAAM,iBAAiB,KAAK;AAC5B,QAAM,0BAA0B,cAAc;AAE9C,SAAO;AAAA,IACL,OAAO,KAAK,IACV,KAAK,aACL,wBAAwB,OAAO,cAAc,cAAc,eAAe,MAC1E,KAAK,cAAe,yBAAwB,OAAO,eAAe;AAAA,IAEpE,QAAQ,KAAK,IACX,KAAK,cACL,wBAAwB,MAAM,cAAc,eAAe,eAAe,KAC1E,KAAK,eAAgB,yBAAwB,MAAM,eAAe;AAAA;AAAA;AAKjE,MAAM,eAAe,CAAC,UAAwD,aACnF,YAAY,SAAS,UAAU,CAAC,SAAqD,KAAK,MAAM,UAAU;AAErG,MAAM,eAAe,CAAC,UAAwD,UAClF,YAAY,SAAS,OAAO,MAAM,SAAU;AAExC,MAAM,yBAAyB,CAAC,eAAgC,KAAK,IAAI,cAAc;AAEvF,MAAM,0BAA0B,CAAC,YAAoB,aAAqB,gBAC/E,KAAK,IAAI,eAAe,cAAe,eAAc;",
|
|
6
|
-
"names": []
|
|
7
|
-
}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../../src/utils/hooks/useTabsCallbacks.tsx", "../../../../../../scripts/build/transpile/react-shim.js"],
|
|
4
|
-
"sourcesContent": ["import React, { useCallback, useContext } from 'react';\nimport { DSTabsContext } from '../../DSTabsCTX';\nimport type { UseTabsCallbacksReturnTypeT } from '../../DSTabsTypes';\n\nexport const useTabsCallbacks = (): UseTabsCallbacksReturnTypeT => {\n const {\n setInternalActiveTab,\n tabsListRef,\n props: { onTabChange, isDSMobile, allowTextSelection, fixedTabsHeaders },\n } = useContext(DSTabsContext);\n\n const centerTabWhenTabChangeMobile = useCallback(\n (e?: React.MouseEvent) => {\n if (tabsListRef.current) {\n const { offsetLeft } = e?.target as HTMLButtonElement;\n const { width: tabWidth } = (e?.target as HTMLButtonElement).getBoundingClientRect();\n const { width: listWidth } = tabsListRef.current.getBoundingClientRect();\n const extraSideSpace = listWidth - tabWidth;\n const leftOffsetToCenter = extraSideSpace > 0 ? extraSideSpace / 2 : 0;\n const centeredLeftOffset = offsetLeft > leftOffsetToCenter ? offsetLeft - leftOffsetToCenter : 0;\n tabsListRef.current.scrollTo({\n top: 0,\n left: centeredLeftOffset,\n behavior: 'smooth',\n });\n\n e?.preventDefault();\n }\n },\n [tabsListRef],\n );\n\n const handleOnTabChange = useCallback(\n (tabId: string, e?: React.MouseEvent) => {\n setInternalActiveTab(tabId);\n onTabChange(tabId, e);\n if (isDSMobile && !fixedTabsHeaders && e) {\n centerTabWhenTabChangeMobile(e);\n }\n },\n [centerTabWhenTabChangeMobile, fixedTabsHeaders, isDSMobile, onTabChange, setInternalActiveTab],\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", "import * as React from 'react';\nexport { React };\n"],
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADAvB,mBAA+C;AAC/C,uBAA8B;AAGvB,MAAM,mBAAmB,MAAmC;AACjE,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA,OAAO,EAAE,aAAa,YAAY,oBAAoB;AAAA,MACpD,6BAAW;AAEf,QAAM,+BAA+B,8BACnC,CAAC,MAAyB;AACxB,QAAI,YAAY,SAAS;AACvB,YAAM,EAAE,eAAe,GAAG;AAC1B,YAAM,EAAE,OAAO,aAAc,IAAG,QAA6B;AAC7D,YAAM,EAAE,OAAO,cAAc,YAAY,QAAQ;AACjD,YAAM,iBAAiB,YAAY;AACnC,YAAM,qBAAqB,iBAAiB,IAAI,iBAAiB,IAAI;AACrE,YAAM,qBAAqB,aAAa,qBAAqB,aAAa,qBAAqB;AAC/F,kBAAY,QAAQ,SAAS;AAAA,QAC3B,KAAK;AAAA,QACL,MAAM;AAAA,QACN,UAAU;AAAA;AAGZ,SAAG;AAAA;AAAA,KAGP,CAAC;AAGH,QAAM,oBAAoB,8BACxB,CAAC,OAAe,MAAyB;AACvC,yBAAqB;AACrB,gBAAY,OAAO;AACnB,QAAI,cAAc,CAAC,oBAAoB,GAAG;AACxC,mCAA6B;AAAA;AAAA,KAGjC,CAAC,8BAA8B,kBAAkB,YAAY,aAAa;AAG5E,QAAM,oBAAoB,8BACxB,CAAC,MAAwB;AACvB,UAAM,OAAQ,EAAE,OAAuB,aAAa;AACpD,QAAI,SAAS,cAAc;AAAoB,QAAE;AAAA,KAEnD,CAAC;AAGH,SAAO;AAAA,IACL;AAAA,IACA;AAAA;AAAA;",
|
|
6
|
-
"names": []
|
|
7
|
-
}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../../../../scripts/build/transpile/react-shim.js", "../../../../src/parts/tabBar/TabBar.tsx"],
|
|
4
|
-
"sourcesContent": ["import * as React from 'react';\nexport { React };\n", "/* eslint-disable complexity */\nimport React, { useMemo, useContext } from 'react';\nimport { Carousel } from '../carousel/Carousel';\nimport { useTabBar } from './useTabBar';\nimport {\n StyledTabButton,\n StyledTabList,\n StyledTabWrapper,\n StyledSelectionIndicator,\n StyledSubTabsList,\n StyledRequiredMark,\n} from './styles';\nimport { DSTabsContext, DSTabsCrossRefContext } from '../../DSTabsCTX';\nimport { useKeyboardNavigation } from '../../utils/hooks/useKeyboardNavigation';\nimport { TabTypes } from '../../utils/constants';\nimport { useTabsCallbacks } from '../../utils/hooks/useTabsCallbacks';\nimport { DSTabsDatatestid } from '../../DSTabsDatatestid';\nimport type { DSTabPropsWithDefaultT } from '../../DSTabsTypes';\n\nexport const TabBar = (): JSX.Element => {\n const {\n tabsRef,\n focusableTabsRef,\n tabsListRef,\n tabsRefAsArray,\n actualActiveTab,\n props: { type, fixedTabsHeaders, withCarousel, isDSMobile, showSeparator, children: tabs },\n } = useContext(DSTabsContext);\n\n const { lastTabInternalRef, firstSubtabInternalRef } = useContext(DSTabsCrossRefContext);\n const { handleOnTabChange } = useTabsCallbacks();\n const { handleOnKeyDown } = useKeyboardNavigation();\n\n const { indicatorStyle, mobileGradients, updateMobileGradients, updateIndicatorStyle } = useTabBar();\n\n const renderTabs: React.ReactNode[] = useMemo(() => {\n const availableTabIndexes: number[] = [];\n\n return React.Children.map(tabs, (tab: React.ReactElement<DSTabPropsWithDefaultT>, index) => {\n const { tabId = '', title = '', style, required = false, disabled = false, ref, onClick, onKeyDown } = tab.props;\n if (!disabled) availableTabIndexes.push(index);\n return (\n <StyledTabButton\n key={tabId}\n role=\"tab\"\n ref={(t: HTMLButtonElement) => {\n if (tabsRefAsArray.current && focusableTabsRef.current && tabsRef.current) {\n tabsRefAsArray.current[index] = t;\n if (!disabled && !focusableTabsRef.current.includes(t)) focusableTabsRef.current.push(t);\n tabsRef.current[index] = t;\n if (type === TabTypes.SUBTABS && firstSubtabInternalRef && index === availableTabIndexes[0]) {\n firstSubtabInternalRef.current = t;\n }\n if (type !== TabTypes.SUBTABS && index === availableTabIndexes[availableTabIndexes.length - 1]) {\n lastTabInternalRef.current = t;\n }\n if (ref) ref.current = t;\n }\n }}\n type=\"button\"\n aria-controls={tabId}\n aria-selected={actualActiveTab === tabId}\n aria-disabled={disabled}\n aria-labelledby={`${tabId}-label`}\n isDSMobile={isDSMobile}\n fixedTabsHeaders={fixedTabsHeaders}\n tabType={type}\n title={title}\n data-required={required}\n data-tab-id={tabId}\n data-index={index}\n withCarousel={withCarousel}\n isActive={actualActiveTab === tabId}\n disabled={disabled}\n showSeparator={showSeparator && type !== TabTypes.NORMAL}\n data-testid={type === TabTypes.NORMAL ? DSTabsDatatestid.TAB_BUTTON : DSTabsDatatestid.SUBTAB_BUTTON}\n id={`${tabId}-label`}\n onClick={(e) => {\n if (!disabled) {\n handleOnTabChange(tabId, e);\n updateIndicatorStyle();\n }\n if (onClick && !disabled) onClick(tabId, e);\n }}\n onKeyDown={(e) => {\n if (e.key === 'Enter') e.stopPropagation();\n if (!disabled) handleOnKeyDown(e);\n if (onKeyDown && !disabled) onKeyDown(e);\n }}\n style={style}\n >\n {title}\n {required && <StyledRequiredMark>●</StyledRequiredMark>}\n </StyledTabButton>\n );\n });\n }, [\n tabs,\n actualActiveTab,\n isDSMobile,\n fixedTabsHeaders,\n type,\n withCarousel,\n showSeparator,\n tabsRefAsArray,\n focusableTabsRef,\n tabsRef,\n firstSubtabInternalRef,\n lastTabInternalRef,\n handleOnTabChange,\n updateIndicatorStyle,\n handleOnKeyDown,\n ]);\n\n if (type === TabTypes.SUBTABS && !isDSMobile) {\n return (\n <StyledSubTabsList\n withCarousel={withCarousel}\n data-testid={DSTabsDatatestid.SUB_TAB_LIST}\n ref={tabsListRef}\n role=\"tablist\"\n >\n {withCarousel ? <Carousel>{renderTabs}</Carousel> : renderTabs}\n </StyledSubTabsList>\n );\n }\n\n return (\n <StyledTabList\n withCarousel={withCarousel}\n ref={tabsListRef}\n role=\"tablist\"\n data-testid={DSTabsDatatestid.TAB_LIST}\n isDSMobile={isDSMobile}\n fixedTabsHeaders={fixedTabsHeaders}\n mobileGradients={mobileGradients}\n onScroll={updateMobileGradients}\n indicatorStyle={indicatorStyle}\n tabType={type}\n >\n <StyledTabWrapper isDSMobile={isDSMobile} fixedTabsHeaders={fixedTabsHeaders}>\n {!isDSMobile && withCarousel ? (\n <Carousel updateIndicatorStyle={updateIndicatorStyle}>{renderTabs}</Carousel>\n ) : (\n renderTabs\n )}\n </StyledTabWrapper>\n <StyledSelectionIndicator isDSMobile={isDSMobile} tabType={type} />\n </StyledTabList>\n );\n};\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": []
|
|
7
|
-
}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../../../../scripts/build/transpile/react-shim.js", "../../../../src/parts/tabBar/useTabBar.tsx"],
|
|
4
|
-
"sourcesContent": ["import * as React from 'react';\nexport { React };\n", "/* eslint-disable max-statements */\nimport { useCallback, useLayoutEffect, useEffect, useState, useContext } from 'react';\nimport useResizeObserver from '@react-hook/resize-observer';\nimport { isElementVisible, shouldHaveLeftGradient, shouldHaveRightGradient } from '../../utils/helpers';\nimport { DSTabsContext } from '../../DSTabsCTX';\nimport { defaultIndicatorStyles } from '../../utils/constants';\nimport type { IndicatorStyleT, MobileGradientsT, UseTabBarReturnTypeT } from '../../DSTabsTypes';\n\nexport const useTabBar = (): UseTabBarReturnTypeT => {\n const {\n actualActiveTab,\n actualActiveTabRef,\n tabsListRef,\n props: { showSelectionIndicator, isDSMobile, fixedTabsHeaders },\n } = useContext(DSTabsContext);\n\n const [mobileGradients, setMobileGradients] = useState<MobileGradientsT>({ left: false, right: false });\n const [indicatorStyle, setIndicatorStyle] = useState<IndicatorStyleT>(defaultIndicatorStyles);\n\n const getIndicatorStyles = useCallback(() => {\n if (tabsListRef.current) {\n const tabList = tabsListRef.current;\n const activeTabButton = actualActiveTabRef.current;\n\n if (!activeTabButton || !isElementVisible(activeTabButton, tabList)) return defaultIndicatorStyles;\n\n // The missingMargins are to make the selection indicator white marks work properly in desktop, we need\n // the full width of the tab button with margins.\n const missingMargins = isDSMobile ? 0 : 16;\n\n const tabClientWidth =\n isDSMobile && !fixedTabsHeaders\n ? activeTabButton.clientWidth\n : activeTabButton.clientWidth + missingMargins * 2;\n\n // The reason why we use the tabList.scrollLeft is due to the centerOnTabChange (only in Mobile and FlexibleTabs)\n // behavior that adds scroll to the tabList\n const position =\n isDSMobile && !fixedTabsHeaders\n ? activeTabButton.getBoundingClientRect().left - tabList.getBoundingClientRect().left + tabList.scrollLeft\n : activeTabButton.getBoundingClientRect().left - tabList.getBoundingClientRect().left - missingMargins;\n\n const backgroundWithTransparent = `linear-gradient(to right, transparent 0px, transparent 16px, #1E79C2 16px, #1E79C2 ${\n tabClientWidth - 16\n }px,transparent ${tabClientWidth - 16}px,transparent ${tabClientWidth}px )`;\n\n return {\n left: `${position}px`,\n width: `${tabClientWidth}px`,\n backgroundWithTransparent,\n };\n }\n return defaultIndicatorStyles;\n }, [actualActiveTabRef, fixedTabsHeaders, isDSMobile, tabsListRef]);\n\n const updateIndicatorStyle = useCallback(\n () => setTimeout(() => setIndicatorStyle(getIndicatorStyles()), 100),\n [getIndicatorStyles, setIndicatorStyle],\n );\n\n useResizeObserver(tabsListRef, updateIndicatorStyle);\n\n const updateMobileGradients = useCallback(() => {\n if (tabsListRef.current && isDSMobile && !fixedTabsHeaders) {\n const { scrollLeft, scrollWidth, clientWidth } = tabsListRef.current;\n setMobileGradients({\n left: shouldHaveLeftGradient(scrollLeft),\n right: shouldHaveRightGradient(scrollLeft, clientWidth, scrollWidth),\n });\n }\n }, [fixedTabsHeaders, isDSMobile, tabsListRef]);\n\n useEffect(() => {\n if (showSelectionIndicator) {\n updateIndicatorStyle();\n }\n if (isDSMobile && !fixedTabsHeaders) {\n updateMobileGradients();\n }\n }, [\n updateIndicatorStyle,\n showSelectionIndicator,\n actualActiveTab,\n updateMobileGradients,\n isDSMobile,\n fixedTabsHeaders,\n ]);\n\n useLayoutEffect(() => {\n if (showSelectionIndicator) {\n updateIndicatorStyle();\n }\n if (isDSMobile && !fixedTabsHeaders) {\n updateMobileGradients();\n }\n }, [updateMobileGradients, showSelectionIndicator, updateIndicatorStyle, isDSMobile, fixedTabsHeaders]);\n\n return {\n updateIndicatorStyle,\n setIndicatorStyle,\n indicatorStyle,\n mobileGradients,\n updateMobileGradients,\n };\n};\n"],
|
|
5
|
-
"mappings": "AAAA;ACCA;AACA;AACA;AACA;AACA;AAGO,MAAM,YAAY,MAA4B;AACnD,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA,OAAO,EAAE,wBAAwB,YAAY;AAAA,MAC3C,WAAW;AAEf,QAAM,CAAC,iBAAiB,sBAAsB,SAA2B,EAAE,MAAM,OAAO,OAAO;AAC/F,QAAM,CAAC,gBAAgB,qBAAqB,SAA0B;AAEtE,QAAM,qBAAqB,YAAY,MAAM;AAC3C,QAAI,YAAY,SAAS;AACvB,YAAM,UAAU,YAAY;AAC5B,YAAM,kBAAkB,mBAAmB;AAE3C,UAAI,CAAC,mBAAmB,CAAC,iBAAiB,iBAAiB;AAAU,eAAO;AAI5E,YAAM,iBAAiB,aAAa,IAAI;AAExC,YAAM,iBACJ,cAAc,CAAC,mBACX,gBAAgB,cAChB,gBAAgB,cAAc,iBAAiB;AAIrD,YAAM,WACJ,cAAc,CAAC,mBACX,gBAAgB,wBAAwB,OAAO,QAAQ,wBAAwB,OAAO,QAAQ,aAC9F,gBAAgB,wBAAwB,OAAO,QAAQ,wBAAwB,OAAO;AAE5F,YAAM,4BAA4B,uFAChC,iBAAiB,oBACD,iBAAiB,oBAAoB;AAEvD,aAAO;AAAA,QACL,MAAM,GAAG;AAAA,QACT,OAAO,GAAG;AAAA,QACV;AAAA;AAAA;AAGJ,WAAO;AAAA,KACN,CAAC,oBAAoB,kBAAkB,YAAY;AAEtD,QAAM,uBAAuB,YAC3B,MAAM,WAAW,MAAM,kBAAkB,uBAAuB,MAChE,CAAC,oBAAoB;AAGvB,oBAAkB,aAAa;AAE/B,QAAM,wBAAwB,YAAY,MAAM;AAC9C,QAAI,YAAY,WAAW,cAAc,CAAC,kBAAkB;AAC1D,YAAM,EAAE,YAAY,aAAa,gBAAgB,YAAY;AAC7D,yBAAmB;AAAA,QACjB,MAAM,uBAAuB;AAAA,QAC7B,OAAO,wBAAwB,YAAY,aAAa;AAAA;AAAA;AAAA,KAG3D,CAAC,kBAAkB,YAAY;AAElC,YAAU,MAAM;AACd,QAAI,wBAAwB;AAC1B;AAAA;AAEF,QAAI,cAAc,CAAC,kBAAkB;AACnC;AAAA;AAAA,KAED;AAAA,IACD;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA;AAGF,kBAAgB,MAAM;AACpB,QAAI,wBAAwB;AAC1B;AAAA;AAEF,QAAI,cAAc,CAAC,kBAAkB;AACnC;AAAA;AAAA,KAED,CAAC,uBAAuB,wBAAwB,sBAAsB,YAAY;AAErF,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA;AAAA;",
|
|
6
|
-
"names": []
|
|
7
|
-
}
|
package/esm/utils/helpers.js.map
DELETED
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../../../scripts/build/transpile/react-shim.js", "../../../src/utils/helpers.tsx"],
|
|
4
|
-
"sourcesContent": ["import * as React from 'react';\nexport { React };\n", "import type { DSTabPropsWithDefaultT, VisibleDimensionsT } from '../DSTabsTypes';\nimport { MOBILE_GRADIENT_WIDTH } from './constants';\n\nexport const isElementVisible = (tab: HTMLElement, tabList: HTMLElement): boolean => {\n const tabDimensions = tab.getBoundingClientRect();\n const tabListDimensions = tabList.getBoundingClientRect();\n\n return tabDimensions.left <= tabListDimensions.left\n ? tabListDimensions.left - tabDimensions.left <= tabDimensions.width\n : tabDimensions.right - tabListDimensions.right <= tabDimensions.width;\n};\n\nexport const isElementVisibleCarousel = (\n tab: HTMLElement | null,\n tabContainer: HTMLDivElement | null,\n firstOrLastItem = true,\n): boolean => {\n if (tab && tabContainer) {\n const tabDimensions = tab.getBoundingClientRect();\n const tabContainerDimensions = tabContainer.getBoundingClientRect();\n\n const offset = firstOrLastItem ? 16 : 32;\n const tabDimensionsLeft = Math.floor(tabDimensions.left - offset);\n const tabDimensionsRight = Math.floor(tabDimensions.right + offset);\n\n const tabContainerDimensionsLeft = Math.floor(tabContainerDimensions.left);\n const tabContainerDimensionsRight = Math.floor(tabContainerDimensions.right);\n\n return tabDimensionsLeft >= tabContainerDimensionsLeft && tabDimensionsRight <= tabContainerDimensionsRight;\n }\n return false;\n};\n\nexport const getVisibleDimensions = (node: HTMLElement, referenceNode: HTMLElement): VisibleDimensionsT => {\n const nodeDimensions = node.getBoundingClientRect();\n const referenceNodeDimensions = referenceNode.getBoundingClientRect();\n\n return {\n width: Math.min(\n node.clientWidth,\n referenceNodeDimensions.left + referenceNode.clientWidth - nodeDimensions.left,\n node.clientWidth - (referenceNodeDimensions.left - nodeDimensions.left),\n ),\n height: Math.min(\n node.clientHeight,\n referenceNodeDimensions.top + referenceNode.clientHeight - nodeDimensions.top,\n node.clientHeight - (referenceNodeDimensions.top - nodeDimensions.top),\n ),\n };\n};\n\nexport const getIndexById = (children: React.ReactElement<DSTabPropsWithDefaultT>[], activeId?: string): number =>\n children && children.findIndex((item: React.ReactElement<DSTabPropsWithDefaultT>) => item.props.tabId === activeId);\n\nexport const getIdByIndex = (children: React.ReactElement<DSTabPropsWithDefaultT>[], index: number): string =>\n (children && children[index].props.tabId) || '';\n\nexport const shouldHaveLeftGradient = (scrollLeft: number): boolean => Math.abs(scrollLeft) > MOBILE_GRADIENT_WIDTH;\n\nexport const shouldHaveRightGradient = (scrollLeft: number, clientWidth: number, scrollWidth: number): boolean =>\n Math.abs(scrollLeft) <= scrollWidth - (clientWidth + MOBILE_GRADIENT_WIDTH);\n"],
|
|
5
|
-
"mappings": "AAAA;ACCA;AAEO,MAAM,mBAAmB,CAAC,KAAkB,YAAkC;AACnF,QAAM,gBAAgB,IAAI;AAC1B,QAAM,oBAAoB,QAAQ;AAElC,SAAO,cAAc,QAAQ,kBAAkB,OAC3C,kBAAkB,OAAO,cAAc,QAAQ,cAAc,QAC7D,cAAc,QAAQ,kBAAkB,SAAS,cAAc;AAAA;AAG9D,MAAM,2BAA2B,CACtC,KACA,cACA,kBAAkB,SACN;AACZ,MAAI,OAAO,cAAc;AACvB,UAAM,gBAAgB,IAAI;AAC1B,UAAM,yBAAyB,aAAa;AAE5C,UAAM,SAAS,kBAAkB,KAAK;AACtC,UAAM,oBAAoB,KAAK,MAAM,cAAc,OAAO;AAC1D,UAAM,qBAAqB,KAAK,MAAM,cAAc,QAAQ;AAE5D,UAAM,6BAA6B,KAAK,MAAM,uBAAuB;AACrE,UAAM,8BAA8B,KAAK,MAAM,uBAAuB;AAEtE,WAAO,qBAAqB,8BAA8B,sBAAsB;AAAA;AAElF,SAAO;AAAA;AAGF,MAAM,uBAAuB,CAAC,MAAmB,kBAAmD;AACzG,QAAM,iBAAiB,KAAK;AAC5B,QAAM,0BAA0B,cAAc;AAE9C,SAAO;AAAA,IACL,OAAO,KAAK,IACV,KAAK,aACL,wBAAwB,OAAO,cAAc,cAAc,eAAe,MAC1E,KAAK,cAAe,yBAAwB,OAAO,eAAe;AAAA,IAEpE,QAAQ,KAAK,IACX,KAAK,cACL,wBAAwB,MAAM,cAAc,eAAe,eAAe,KAC1E,KAAK,eAAgB,yBAAwB,MAAM,eAAe;AAAA;AAAA;AAKjE,MAAM,eAAe,CAAC,UAAwD,aACnF,YAAY,SAAS,UAAU,CAAC,SAAqD,KAAK,MAAM,UAAU;AAErG,MAAM,eAAe,CAAC,UAAwD,UAClF,YAAY,SAAS,OAAO,MAAM,SAAU;AAExC,MAAM,yBAAyB,CAAC,eAAgC,KAAK,IAAI,cAAc;AAEvF,MAAM,0BAA0B,CAAC,YAAoB,aAAqB,gBAC/E,KAAK,IAAI,eAAe,cAAe,eAAc;",
|
|
6
|
-
"names": []
|
|
7
|
-
}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../../../../scripts/build/transpile/react-shim.js", "../../../../src/utils/hooks/useTabsCallbacks.tsx"],
|
|
4
|
-
"sourcesContent": ["import * as React from 'react';\nexport { React };\n", "import React, { useCallback, useContext } from 'react';\nimport { DSTabsContext } from '../../DSTabsCTX';\nimport type { UseTabsCallbacksReturnTypeT } from '../../DSTabsTypes';\n\nexport const useTabsCallbacks = (): UseTabsCallbacksReturnTypeT => {\n const {\n setInternalActiveTab,\n tabsListRef,\n props: { onTabChange, isDSMobile, allowTextSelection, fixedTabsHeaders },\n } = useContext(DSTabsContext);\n\n const centerTabWhenTabChangeMobile = useCallback(\n (e?: React.MouseEvent) => {\n if (tabsListRef.current) {\n const { offsetLeft } = e?.target as HTMLButtonElement;\n const { width: tabWidth } = (e?.target as HTMLButtonElement).getBoundingClientRect();\n const { width: listWidth } = tabsListRef.current.getBoundingClientRect();\n const extraSideSpace = listWidth - tabWidth;\n const leftOffsetToCenter = extraSideSpace > 0 ? extraSideSpace / 2 : 0;\n const centeredLeftOffset = offsetLeft > leftOffsetToCenter ? offsetLeft - leftOffsetToCenter : 0;\n tabsListRef.current.scrollTo({\n top: 0,\n left: centeredLeftOffset,\n behavior: 'smooth',\n });\n\n e?.preventDefault();\n }\n },\n [tabsListRef],\n );\n\n const handleOnTabChange = useCallback(\n (tabId: string, e?: React.MouseEvent) => {\n setInternalActiveTab(tabId);\n onTabChange(tabId, e);\n if (isDSMobile && !fixedTabsHeaders && e) {\n centerTabWhenTabChangeMobile(e);\n }\n },\n [centerTabWhenTabChangeMobile, fixedTabsHeaders, isDSMobile, onTabChange, setInternalActiveTab],\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;ACAA;AACA;AAGO,MAAM,mBAAmB,MAAmC;AACjE,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA,OAAO,EAAE,aAAa,YAAY,oBAAoB;AAAA,MACpD,WAAW;AAEf,QAAM,+BAA+B,YACnC,CAAC,MAAyB;AACxB,QAAI,YAAY,SAAS;AACvB,YAAM,EAAE,eAAe,GAAG;AAC1B,YAAM,EAAE,OAAO,aAAc,IAAG,QAA6B;AAC7D,YAAM,EAAE,OAAO,cAAc,YAAY,QAAQ;AACjD,YAAM,iBAAiB,YAAY;AACnC,YAAM,qBAAqB,iBAAiB,IAAI,iBAAiB,IAAI;AACrE,YAAM,qBAAqB,aAAa,qBAAqB,aAAa,qBAAqB;AAC/F,kBAAY,QAAQ,SAAS;AAAA,QAC3B,KAAK;AAAA,QACL,MAAM;AAAA,QACN,UAAU;AAAA;AAGZ,SAAG;AAAA;AAAA,KAGP,CAAC;AAGH,QAAM,oBAAoB,YACxB,CAAC,OAAe,MAAyB;AACvC,yBAAqB;AACrB,gBAAY,OAAO;AACnB,QAAI,cAAc,CAAC,oBAAoB,GAAG;AACxC,mCAA6B;AAAA;AAAA,KAGjC,CAAC,8BAA8B,kBAAkB,YAAY,aAAa;AAG5E,QAAM,oBAAoB,YACxB,CAAC,MAAwB;AACvB,UAAM,OAAQ,EAAE,OAAuB,aAAa;AACpD,QAAI,SAAS,cAAc;AAAoB,QAAE;AAAA,KAEnD,CAAC;AAGH,SAAO;AAAA,IACL;AAAA,IACA;AAAA;AAAA;",
|
|
6
|
-
"names": []
|
|
7
|
-
}
|
package/types/DSTabs.d.ts
DELETED
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
/// <reference path="../../../../shared/typings/react-desc.d.ts" />
|
|
2
|
-
import React from 'react';
|
|
3
|
-
import type { DSTabsPropsT } from './DSTabsTypes';
|
|
4
|
-
declare const DSTabs: {
|
|
5
|
-
(props: DSTabsPropsT): JSX.Element;
|
|
6
|
-
propTypes: React.WeakValidationMap<unknown>;
|
|
7
|
-
};
|
|
8
|
-
declare const DSTabsWithSchema: {
|
|
9
|
-
(props?: DSTabsPropsT | undefined): JSX.Element;
|
|
10
|
-
propTypes: unknown;
|
|
11
|
-
toTypescript: () => import("react-desc").TypescriptSchema;
|
|
12
|
-
};
|
|
13
|
-
export { DSTabs, DSTabsWithSchema };
|
|
14
|
-
export default DSTabs;
|
package/types/DSTabsCTX.d.ts
DELETED
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
/// <reference types="react" />
|
|
2
|
-
import type { DSTabsUseCrossRefContextT, DSTabsUseTabsContextT } from './DSTabsTypes';
|
|
3
|
-
export declare const DSTabsContext: import("react").Context<DSTabsUseTabsContextT>;
|
|
4
|
-
export declare const DSTabsCrossRefContext: import("react").Context<DSTabsUseCrossRefContextT>;
|