@elliemae/ds-tabs 2.2.0 → 2.3.0-alpha.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/cjs/DSTabs.js +58 -40
- package/cjs/DSTabs.js.map +7 -0
- package/cjs/DSTabsCTX.js +51 -25
- package/cjs/DSTabsCTX.js.map +7 -0
- package/cjs/DSTabsDatatestid.js +42 -14
- package/cjs/DSTabsDatatestid.js.map +7 -0
- package/cjs/DSTabsTypes.js +27 -2
- package/cjs/DSTabsTypes.js.map +7 -0
- package/cjs/config/useCrossRef.js +38 -11
- package/cjs/config/useCrossRef.js.map +7 -0
- package/cjs/config/useTabs.js +53 -36
- package/cjs/config/useTabs.js.map +7 -0
- package/cjs/defaultProps.js +39 -13
- package/cjs/defaultProps.js.map +7 -0
- package/cjs/exportsRelated/DSTab.js +46 -32
- package/cjs/exportsRelated/DSTab.js.map +7 -0
- package/cjs/index.js +38 -17
- package/cjs/index.js.map +7 -0
- package/cjs/parts/carousel/Carousel.js +61 -53
- package/cjs/parts/carousel/Carousel.js.map +7 -0
- package/cjs/parts/carousel/styles.js +77 -63
- package/cjs/parts/carousel/styles.js.map +7 -0
- package/cjs/parts/carousel/useCarousel.js +51 -49
- package/cjs/parts/carousel/useCarousel.js.map +7 -0
- package/cjs/parts/carousel/useCarouselCallbacks.js +53 -36
- package/cjs/parts/carousel/useCarouselCallbacks.js.map +7 -0
- package/cjs/parts/tabBar/TabBar.js +131 -120
- package/cjs/parts/tabBar/TabBar.js.map +7 -0
- package/cjs/parts/tabBar/styles.js +289 -195
- package/cjs/parts/tabBar/styles.js.map +7 -0
- package/cjs/parts/tabBar/useTabBar.js +66 -62
- package/cjs/parts/tabBar/useTabBar.js.map +7 -0
- package/cjs/parts/tabsContent/TabsContent.js +49 -45
- package/cjs/parts/tabsContent/TabsContent.js.map +7 -0
- package/cjs/parts/tabsContent/styles.js +39 -15
- package/cjs/parts/tabsContent/styles.js.map +7 -0
- package/cjs/parts/tabsPanel/TabsPanels.js +60 -58
- package/cjs/parts/tabsPanel/TabsPanels.js.map +7 -0
- package/cjs/parts/tabsPanel/styles.js +43 -23
- package/cjs/parts/tabsPanel/styles.js.map +7 -0
- package/cjs/propTypes.js +54 -29
- package/cjs/propTypes.js.map +7 -0
- package/cjs/utils/constants.js +44 -16
- package/cjs/utils/constants.js.map +7 -0
- package/cjs/utils/helpers.js +63 -22
- package/cjs/utils/helpers.js.map +7 -0
- package/cjs/utils/hooks/useKeyboardNavigation.js +59 -43
- package/cjs/utils/hooks/useKeyboardNavigation.js.map +7 -0
- package/cjs/utils/hooks/useTabsCallbacks.js +46 -45
- package/cjs/utils/hooks/useTabsCallbacks.js.map +7 -0
- package/esm/DSTabs.js +24 -25
- package/esm/DSTabs.js.map +7 -0
- package/esm/DSTabsCTX.js +22 -20
- package/esm/DSTabsCTX.js.map +7 -0
- package/esm/DSTabsDatatestid.js +13 -10
- package/esm/DSTabsDatatestid.js.map +7 -0
- package/esm/DSTabsTypes.js +2 -1
- package/esm/DSTabsTypes.js.map +7 -0
- package/esm/config/useCrossRef.js +6 -4
- package/esm/config/useCrossRef.js.map +7 -0
- package/esm/config/useTabs.js +14 -22
- package/esm/config/useTabs.js.map +7 -0
- package/esm/defaultProps.js +9 -8
- package/esm/defaultProps.js.map +7 -0
- package/esm/exportsRelated/DSTab.js +15 -19
- package/esm/exportsRelated/DSTab.js.map +7 -0
- package/esm/index.js +9 -4
- package/esm/index.js.map +7 -0
- package/esm/parts/carousel/Carousel.js +25 -38
- package/esm/parts/carousel/Carousel.js.map +7 -0
- package/esm/parts/carousel/styles.js +48 -52
- package/esm/parts/carousel/styles.js.map +7 -0
- package/esm/parts/carousel/useCarousel.js +15 -34
- package/esm/parts/carousel/useCarousel.js.map +7 -0
- package/esm/parts/carousel/useCarouselCallbacks.js +20 -28
- package/esm/parts/carousel/useCarouselCallbacks.js.map +7 -0
- package/esm/parts/tabBar/TabBar.js +100 -102
- package/esm/parts/tabBar/TabBar.js.map +7 -0
- package/esm/parts/tabBar/styles.js +262 -183
- package/esm/parts/tabBar/styles.js.map +7 -0
- package/esm/parts/tabBar/useTabBar.js +27 -44
- package/esm/parts/tabBar/useTabBar.js.map +7 -0
- package/esm/parts/tabsContent/TabsContent.js +19 -35
- package/esm/parts/tabsContent/TabsContent.js.map +7 -0
- package/esm/parts/tabsContent/styles.js +10 -7
- package/esm/parts/tabsContent/styles.js.map +7 -0
- package/esm/parts/tabsPanel/TabsPanels.js +28 -45
- package/esm/parts/tabsPanel/TabsPanels.js.map +7 -0
- package/esm/parts/tabsPanel/styles.js +14 -15
- package/esm/parts/tabsPanel/styles.js.map +7 -0
- package/esm/propTypes.js +25 -24
- package/esm/propTypes.js.map +7 -0
- package/esm/utils/constants.js +15 -8
- package/esm/utils/constants.js.map +7 -0
- package/esm/utils/helpers.js +33 -11
- package/esm/utils/helpers.js.map +7 -0
- package/esm/utils/hooks/useKeyboardNavigation.js +30 -39
- package/esm/utils/hooks/useKeyboardNavigation.js.map +7 -0
- package/esm/utils/hooks/useTabsCallbacks.js +15 -39
- package/esm/utils/hooks/useTabsCallbacks.js.map +7 -0
- package/package.json +6 -6
- package/types/DSTabs.d.ts +2 -2
- package/types/DSTabsTypes.d.ts +4 -0
- package/types/utils/helpers.d.ts +2 -1
|
@@ -1,55 +1,31 @@
|
|
|
1
|
-
import
|
|
2
|
-
import {
|
|
3
|
-
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
import { useCallback, useContext } from "react";
|
|
3
|
+
import { centerTab } from "../helpers";
|
|
4
|
+
import { DSTabsContext } from "../../DSTabsCTX";
|
|
4
5
|
const useTabsCallbacks = () => {
|
|
5
6
|
const {
|
|
6
7
|
setInternalActiveTab,
|
|
7
8
|
tabsListRef,
|
|
8
|
-
props: {
|
|
9
|
-
onTabChange,
|
|
10
|
-
isDSMobile,
|
|
11
|
-
allowTextSelection,
|
|
12
|
-
fixedTabsHeaders
|
|
13
|
-
}
|
|
9
|
+
props: { onTabChange, isDSMobile, allowTextSelection, fixedTabsHeaders }
|
|
14
10
|
} = useContext(DSTabsContext);
|
|
15
|
-
const centerTabWhenTabChangeMobile = useCallback(e => {
|
|
16
|
-
if (tabsListRef.current) {
|
|
17
|
-
const {
|
|
18
|
-
offsetLeft
|
|
19
|
-
} = e === null || e === void 0 ? void 0 : e.target;
|
|
20
|
-
const {
|
|
21
|
-
width: tabWidth
|
|
22
|
-
} = (e === null || e === void 0 ? void 0 : e.target).getBoundingClientRect();
|
|
23
|
-
const {
|
|
24
|
-
width: listWidth
|
|
25
|
-
} = tabsListRef.current.getBoundingClientRect();
|
|
26
|
-
const extraSideSpace = listWidth - tabWidth;
|
|
27
|
-
const leftOffsetToCenter = extraSideSpace > 0 ? extraSideSpace / 2 : 0;
|
|
28
|
-
const centeredLeftOffset = offsetLeft > leftOffsetToCenter ? offsetLeft - leftOffsetToCenter : 0;
|
|
29
|
-
tabsListRef.current.scrollTo({
|
|
30
|
-
top: 0,
|
|
31
|
-
left: centeredLeftOffset,
|
|
32
|
-
behavior: 'smooth'
|
|
33
|
-
});
|
|
34
|
-
e === null || e === void 0 ? void 0 : e.preventDefault();
|
|
35
|
-
}
|
|
36
|
-
}, [tabsListRef]);
|
|
37
11
|
const handleOnTabChange = useCallback((tabId, e) => {
|
|
38
12
|
setInternalActiveTab(tabId);
|
|
39
13
|
onTabChange(tabId, e);
|
|
40
|
-
|
|
41
14
|
if (isDSMobile && !fixedTabsHeaders && e) {
|
|
42
|
-
|
|
15
|
+
centerTab({ e, listRef: tabsListRef });
|
|
43
16
|
}
|
|
44
|
-
}, [
|
|
45
|
-
const handleOnMouseDown = useCallback(e => {
|
|
46
|
-
const role = e.target.getAttribute(
|
|
47
|
-
if (role !==
|
|
17
|
+
}, [fixedTabsHeaders, isDSMobile, onTabChange, setInternalActiveTab, tabsListRef]);
|
|
18
|
+
const handleOnMouseDown = useCallback((e) => {
|
|
19
|
+
const role = e.target.getAttribute("role");
|
|
20
|
+
if (role !== "tabpanel" && allowTextSelection)
|
|
21
|
+
e.stopPropagation();
|
|
48
22
|
}, [allowTextSelection]);
|
|
49
23
|
return {
|
|
50
24
|
handleOnTabChange,
|
|
51
25
|
handleOnMouseDown
|
|
52
26
|
};
|
|
53
27
|
};
|
|
54
|
-
|
|
55
|
-
|
|
28
|
+
export {
|
|
29
|
+
useTabsCallbacks
|
|
30
|
+
};
|
|
31
|
+
//# sourceMappingURL=useTabsCallbacks.js.map
|
|
@@ -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,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@elliemae/ds-tabs",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.3.0-alpha.3",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"description": "ICE MT - Dimsum - Tabs",
|
|
6
6
|
"module": "./esm/index.js",
|
|
@@ -128,11 +128,11 @@
|
|
|
128
128
|
"build": "node ../../scripts/build/build.js"
|
|
129
129
|
},
|
|
130
130
|
"dependencies": {
|
|
131
|
-
"@elliemae/ds-button": "2.
|
|
132
|
-
"@elliemae/ds-icon": "2.
|
|
133
|
-
"@elliemae/ds-icons": "2.
|
|
134
|
-
"@elliemae/ds-props-helpers": "2.
|
|
135
|
-
"@elliemae/ds-system": "2.
|
|
131
|
+
"@elliemae/ds-button": "2.3.0-alpha.3",
|
|
132
|
+
"@elliemae/ds-icon": "2.3.0-alpha.3",
|
|
133
|
+
"@elliemae/ds-icons": "2.3.0-alpha.3",
|
|
134
|
+
"@elliemae/ds-props-helpers": "2.3.0-alpha.3",
|
|
135
|
+
"@elliemae/ds-system": "2.3.0-alpha.3",
|
|
136
136
|
"@react-hook/resize-observer": "~1.2.5",
|
|
137
137
|
"prop-types": "~15.7.2",
|
|
138
138
|
"react-desc": "~4.1.3",
|
package/types/DSTabs.d.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
/// <reference path="../../../../shared/typings/react-desc.d.ts" />
|
|
2
|
-
import
|
|
2
|
+
import React from 'react';
|
|
3
3
|
import type { DSTabsPropsT } from './DSTabsTypes';
|
|
4
4
|
declare const DSTabs: {
|
|
5
5
|
(props: DSTabsPropsT): JSX.Element;
|
|
6
|
-
propTypes: WeakValidationMap<unknown>;
|
|
6
|
+
propTypes: React.WeakValidationMap<unknown>;
|
|
7
7
|
};
|
|
8
8
|
declare const DSTabsWithSchema: {
|
|
9
9
|
(props?: DSTabsPropsT | undefined): JSX.Element;
|
package/types/DSTabsTypes.d.ts
CHANGED
|
@@ -162,6 +162,10 @@ export interface VisibleDimensionsT {
|
|
|
162
162
|
width: number;
|
|
163
163
|
height: number;
|
|
164
164
|
}
|
|
165
|
+
export interface CenterTabPropsT {
|
|
166
|
+
e?: React.MouseEvent | React.FocusEvent;
|
|
167
|
+
listRef: React.MutableRefObject<HTMLDivElement | null>;
|
|
168
|
+
}
|
|
165
169
|
export interface StyledTabWrapperPropsT {
|
|
166
170
|
isDSMobile: boolean;
|
|
167
171
|
fixedTabsHeaders: boolean;
|
package/types/utils/helpers.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import type { DSTabPropsWithDefaultT, VisibleDimensionsT } from '../DSTabsTypes';
|
|
1
|
+
import type { CenterTabPropsT, DSTabPropsWithDefaultT, VisibleDimensionsT } from '../DSTabsTypes';
|
|
2
2
|
export declare const isElementVisible: (tab: HTMLElement, tabList: HTMLElement) => boolean;
|
|
3
3
|
export declare const isElementVisibleCarousel: (tab: HTMLElement | null, tabContainer: HTMLDivElement | null, firstOrLastItem?: boolean) => boolean;
|
|
4
|
+
export declare const centerTab: ({ e, listRef }: CenterTabPropsT) => void;
|
|
4
5
|
export declare const getVisibleDimensions: (node: HTMLElement, referenceNode: HTMLElement) => VisibleDimensionsT;
|
|
5
6
|
export declare const getIndexById: (children: React.ReactElement<DSTabPropsWithDefaultT>[], activeId?: string | undefined) => number;
|
|
6
7
|
export declare const getIdByIndex: (children: React.ReactElement<DSTabPropsWithDefaultT>[], index: number) => string;
|