@elliemae/ds-tabs 1.60.0 → 2.0.0-alpha.12
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 +29 -150
- package/cjs/DSTabsCTX.js +30 -0
- package/cjs/DSTabsDatatestid.js +18 -0
- package/cjs/DSTabsTypes.js +2 -0
- package/cjs/config/useCrossRef.js +17 -0
- package/cjs/config/useTabs.js +51 -0
- package/cjs/defaultProps.js +27 -0
- package/cjs/exportsRelated/DSTab.js +32 -0
- package/cjs/index.js +5 -35
- package/cjs/parts/carousel/Carousel.js +71 -0
- package/cjs/parts/carousel/styles.js +60 -0
- package/cjs/parts/carousel/useCarousel.js +78 -0
- package/cjs/parts/carousel/useCarouselCallbacks.js +72 -0
- package/cjs/parts/tabBar/TabBar.js +160 -0
- package/cjs/parts/tabBar/styles.js +199 -0
- package/cjs/parts/tabBar/useTabBar.js +98 -0
- package/cjs/parts/tabsContent/TabsContent.js +49 -0
- package/cjs/parts/tabsContent/styles.js +15 -0
- package/cjs/parts/tabsPanel/TabsPanels.js +77 -0
- package/cjs/parts/tabsPanel/styles.js +25 -0
- package/cjs/propTypes.js +33 -0
- package/cjs/utils/constants.js +29 -0
- package/cjs/utils/helpers.js +47 -0
- package/cjs/utils/hooks/useKeyboardNavigation.js +61 -0
- package/cjs/utils/hooks/useTabsCallbacks.js +59 -0
- package/esm/DSTabs.js +31 -152
- package/esm/DSTabsCTX.js +25 -0
- package/esm/DSTabsDatatestid.js +14 -0
- package/esm/DSTabsTypes.js +1 -0
- package/esm/config/useCrossRef.js +13 -0
- package/esm/config/useTabs.js +47 -0
- package/esm/defaultProps.js +23 -0
- package/esm/exportsRelated/DSTab.js +21 -0
- package/esm/index.js +4 -33
- package/esm/parts/carousel/Carousel.js +63 -0
- package/esm/parts/carousel/styles.js +49 -0
- package/esm/parts/carousel/useCarousel.js +70 -0
- package/esm/parts/carousel/useCarouselCallbacks.js +68 -0
- package/esm/parts/tabBar/TabBar.js +151 -0
- package/esm/parts/tabBar/styles.js +185 -0
- package/esm/parts/tabBar/useTabBar.js +90 -0
- package/esm/parts/tabsContent/TabsContent.js +40 -0
- package/esm/parts/tabsContent/styles.js +7 -0
- package/esm/parts/tabsPanel/TabsPanels.js +67 -0
- package/esm/parts/tabsPanel/styles.js +17 -0
- package/esm/propTypes.js +28 -0
- package/esm/utils/constants.js +21 -0
- package/esm/utils/helpers.js +37 -0
- package/esm/utils/hooks/useKeyboardNavigation.js +57 -0
- package/esm/utils/hooks/useTabsCallbacks.js +55 -0
- package/package.json +134 -18
- package/types/DSTabs.d.ts +14 -0
- package/types/DSTabsCTX.d.ts +4 -0
- package/types/DSTabsDatatestid.d.ts +12 -0
- package/types/DSTabsTypes.d.ts +202 -0
- package/types/config/useCrossRef.d.ts +2 -0
- package/types/config/useTabs.d.ts +2 -0
- package/types/defaultProps.d.ts +2 -0
- package/types/exportsRelated/DSTab.d.ts +14 -0
- package/types/index.d.ts +5 -0
- package/types/parts/carousel/Carousel.d.ts +3 -0
- package/types/parts/carousel/styles.d.ts +9 -0
- package/types/parts/carousel/useCarousel.d.ts +2 -0
- package/types/parts/carousel/useCarouselCallbacks.d.ts +2 -0
- package/types/parts/tabBar/TabBar.d.ts +2 -0
- package/types/parts/tabBar/styles.d.ts +7 -0
- package/types/parts/tabBar/useTabBar.d.ts +2 -0
- package/types/parts/tabsContent/TabsContent.d.ts +2 -0
- package/types/parts/tabsContent/styles.d.ts +1 -0
- package/types/parts/tabsPanel/TabsPanels.d.ts +2 -0
- package/types/parts/tabsPanel/styles.d.ts +2 -0
- package/types/propTypes.d.ts +54 -0
- package/types/tests/DSTabs.callbacks.test.d.ts +1 -0
- package/types/tests/DSTabs.func.test.d.ts +1 -0
- package/types/tests/DSTabs.keyboard.test.d.ts +1 -0
- package/types/tests/DSTabs.test.d.ts +1 -0
- package/types/utils/constants.d.ts +19 -0
- package/types/utils/helpers.d.ts +8 -0
- package/types/utils/hooks/useKeyboardNavigation.d.ts +2 -0
- package/types/utils/hooks/useTabsCallbacks.d.ts +2 -0
- package/Carousel/package.json +0 -10
- package/DSTab/package.json +0 -10
- package/DSTabs/package.json +0 -10
- package/PanelContainer/package.json +0 -10
- package/SubTabBar/package.json +0 -10
- package/TabBar/package.json +0 -10
- package/TabTypes/package.json +0 -10
- package/TabsImpl/package.json +0 -10
- package/TabsPanels/package.json +0 -10
- package/cjs/Carousel.js +0 -219
- package/cjs/Carousel.js.map +0 -1
- package/cjs/DSTab.js +0 -50
- package/cjs/DSTab.js.map +0 -1
- package/cjs/DSTabs.js.map +0 -1
- package/cjs/PanelContainer.js +0 -45
- package/cjs/PanelContainer.js.map +0 -1
- package/cjs/SubTabBar.js +0 -81
- package/cjs/SubTabBar.js.map +0 -1
- package/cjs/TabBar.js +0 -480
- package/cjs/TabBar.js.map +0 -1
- package/cjs/TabTypes.js +0 -17
- package/cjs/TabTypes.js.map +0 -1
- package/cjs/TabsImpl.js +0 -173
- package/cjs/TabsImpl.js.map +0 -1
- package/cjs/TabsPanels.js +0 -116
- package/cjs/TabsPanels.js.map +0 -1
- package/cjs/index.js.map +0 -1
- package/cjs/useResize.js +0 -25
- package/cjs/useResize.js.map +0 -1
- package/esm/Carousel.js +0 -209
- package/esm/Carousel.js.map +0 -1
- package/esm/DSTab.js +0 -40
- package/esm/DSTab.js.map +0 -1
- package/esm/DSTabs.js.map +0 -1
- package/esm/PanelContainer.js +0 -37
- package/esm/PanelContainer.js.map +0 -1
- package/esm/SubTabBar.js +0 -74
- package/esm/SubTabBar.js.map +0 -1
- package/esm/TabBar.js +0 -464
- package/esm/TabBar.js.map +0 -1
- package/esm/TabTypes.js +0 -12
- package/esm/TabTypes.js.map +0 -1
- package/esm/TabsImpl.js +0 -163
- package/esm/TabsImpl.js.map +0 -1
- package/esm/TabsPanels.js +0 -103
- package/esm/TabsPanels.js.map +0 -1
- package/esm/index.js.map +0 -1
- package/esm/useResize.js +0 -21
- package/esm/useResize.js.map +0 -1
- package/useResize/package.json +0 -10
package/cjs/DSTabs.js
CHANGED
|
@@ -2,165 +2,44 @@
|
|
|
2
2
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
|
-
var
|
|
5
|
+
var _jsx = require('@babel/runtime/helpers/jsx');
|
|
6
6
|
var reactDesc = require('react-desc');
|
|
7
|
-
var
|
|
8
|
-
var
|
|
9
|
-
var
|
|
10
|
-
require('
|
|
11
|
-
require('
|
|
12
|
-
require('
|
|
13
|
-
require('prop-types');
|
|
14
|
-
require('@elliemae/ds-classnames');
|
|
15
|
-
require('./TabsPanels.js');
|
|
16
|
-
require('@babel/runtime/helpers/classCallCheck');
|
|
17
|
-
require('@babel/runtime/helpers/createClass');
|
|
18
|
-
require('@babel/runtime/helpers/inherits');
|
|
19
|
-
require('@babel/runtime/helpers/possibleConstructorReturn');
|
|
20
|
-
require('@babel/runtime/helpers/getPrototypeOf');
|
|
21
|
-
require('memoize-one');
|
|
22
|
-
require('react-swipeable-views');
|
|
23
|
-
require('./PanelContainer.js');
|
|
24
|
-
require('@babel/runtime/helpers/objectWithoutProperties');
|
|
25
|
-
require('./TabBar.js');
|
|
26
|
-
require('@babel/runtime/helpers/assertThisInitialized');
|
|
27
|
-
require('lodash');
|
|
28
|
-
require('@elliemae/ds-form/RequiredMark');
|
|
29
|
-
require('resize-observer');
|
|
30
|
-
require('styled-components');
|
|
31
|
-
require('./Carousel.js');
|
|
32
|
-
require('@elliemae/ds-icons');
|
|
33
|
-
require('@elliemae/ds-button');
|
|
34
|
-
require('./useResize.js');
|
|
35
|
-
require('./SubTabBar.js');
|
|
7
|
+
var propTypes = require('./propTypes.js');
|
|
8
|
+
var DSTabsCTX = require('./DSTabsCTX.js');
|
|
9
|
+
var TabsContent = require('./parts/tabsContent/TabsContent.js');
|
|
10
|
+
var useTabs = require('./config/useTabs.js');
|
|
11
|
+
var useCrossRef = require('./config/useCrossRef.js');
|
|
12
|
+
var constants = require('./utils/constants.js');
|
|
36
13
|
|
|
37
14
|
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
38
15
|
|
|
39
|
-
var
|
|
16
|
+
var _jsx__default = /*#__PURE__*/_interopDefaultLegacy(_jsx);
|
|
40
17
|
|
|
41
|
-
|
|
18
|
+
var _TabsContent, _TabsContent2;
|
|
42
19
|
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
_ref$enableMouseEvent = _ref.enableMouseEvents,
|
|
50
|
-
enableMouseEvents = _ref$enableMouseEvent === void 0 ? false : _ref$enableMouseEvent,
|
|
51
|
-
_ref$allowTextSelecti = _ref.allowTextSelection,
|
|
52
|
-
allowTextSelection = _ref$allowTextSelecti === void 0 ? false : _ref$allowTextSelecti,
|
|
53
|
-
_ref$onTabChange = _ref.onTabChange,
|
|
54
|
-
onTabChange = _ref$onTabChange === void 0 ? function () {
|
|
55
|
-
return null;
|
|
56
|
-
} : _ref$onTabChange,
|
|
57
|
-
_ref$tabsListAriaLabe = _ref.tabsListAriaLabel,
|
|
58
|
-
tabsListAriaLabel = _ref$tabsListAriaLabe === void 0 ? 'Tab list' : _ref$tabsListAriaLabe,
|
|
59
|
-
_ref$type = _ref.type,
|
|
60
|
-
type = _ref$type === void 0 ? TabTypes.TabTypes.NORMAL : _ref$type,
|
|
61
|
-
_ref$tabBarExtraConte = _ref.tabBarExtraContent,
|
|
62
|
-
tabBarExtraContent = _ref$tabBarExtraConte === void 0 ? undefined : _ref$tabBarExtraConte,
|
|
63
|
-
tabs = _ref.children,
|
|
64
|
-
_ref$onlyRenderActive = _ref.onlyRenderActiveTab,
|
|
65
|
-
onlyRenderActiveTab = _ref$onlyRenderActive === void 0 ? false : _ref$onlyRenderActive,
|
|
66
|
-
activeTab = _ref.activeTab,
|
|
67
|
-
_ref$withCarousel = _ref.withCarousel,
|
|
68
|
-
withCarousel = _ref$withCarousel === void 0 ? false : _ref$withCarousel,
|
|
69
|
-
firstSubtabRef = _ref.firstSubtabRef,
|
|
70
|
-
lastTabRef = _ref.lastTabRef,
|
|
71
|
-
flexibleTabsHeaders = _ref.flexibleTabsHeaders,
|
|
72
|
-
fixedTabsHeaders = _ref.fixedTabsHeaders,
|
|
73
|
-
_ref$isDSMobile = _ref.isDSMobile,
|
|
74
|
-
isDSMobile = _ref$isDSMobile === void 0 ? false : _ref$isDSMobile;
|
|
75
|
-
return /*#__PURE__*/React__default['default'].createElement(TabsImpl, {
|
|
76
|
-
activeTab: activeTab,
|
|
77
|
-
firstSubtabRef: firstSubtabRef,
|
|
78
|
-
lastTabRef: lastTabRef,
|
|
79
|
-
allowTextSelection: allowTextSelection,
|
|
80
|
-
animated: animated,
|
|
81
|
-
containerProps: containerProps,
|
|
82
|
-
enableMouseEvents: enableMouseEvents,
|
|
83
|
-
innerRef: innerRef,
|
|
84
|
-
onlyRenderActiveTab: onlyRenderActiveTab,
|
|
85
|
-
onTabChange: onTabChange,
|
|
86
|
-
tabBarExtraContent: tabBarExtraContent,
|
|
87
|
-
tabsListAriaLabel: tabsListAriaLabel,
|
|
88
|
-
type: type,
|
|
89
|
-
withCarousel: withCarousel,
|
|
90
|
-
flexibleTabsHeaders: flexibleTabsHeaders,
|
|
91
|
-
fixedTabsHeaders: fixedTabsHeaders,
|
|
92
|
-
isDSMobile: isDSMobile
|
|
93
|
-
}, tabs);
|
|
94
|
-
};
|
|
95
|
-
|
|
96
|
-
var props = {
|
|
97
|
-
/** Whether the tab transition should animate or not */
|
|
98
|
-
animated: reactDesc.PropTypes.bool.description('Whether the tab transition should animate or not'),
|
|
99
|
-
|
|
100
|
-
/** Enables tab transition with mouse drag events */
|
|
101
|
-
enableMouseEvents: reactDesc.PropTypes.bool.description('Enables tab transition with mouse drag events'),
|
|
102
|
-
|
|
103
|
-
/** Allow text selection when mouse drag events are active */
|
|
104
|
-
allowTextSelection: reactDesc.PropTypes.bool.description('Allow text selection when mouse drag events are active'),
|
|
105
|
-
|
|
106
|
-
/** Handler when a user clicks on a different tab */
|
|
107
|
-
onTabChange: reactDesc.PropTypes.func.description('Handler when a user clicks on a different tab'),
|
|
108
|
-
|
|
109
|
-
/** Tab type */
|
|
110
|
-
type: reactDesc.PropTypes.oneOf(['normal', 'subtabs']).description('Tab type'),
|
|
111
|
-
|
|
112
|
-
/** Extra content next to the tabs pills */
|
|
113
|
-
tabBarExtraContent: reactDesc.PropTypes.element.description('Extra content next to the tabs pills'),
|
|
114
|
-
|
|
115
|
-
/** Only renders the active tab in the DOM */
|
|
116
|
-
onlyRenderActiveTab: reactDesc.PropTypes.bool.description('Only renders the active tab in the DOM'),
|
|
117
|
-
|
|
118
|
-
/** Mobile only flexible tabs mode */
|
|
119
|
-
flexibleTabsHeaders: reactDesc.PropTypes.bool.description('Mobile only flexible tabs mode'),
|
|
20
|
+
const DSTabs = props => {
|
|
21
|
+
const ctx = useTabs.useTabs(props);
|
|
22
|
+
const crossRefsCtx = useCrossRef.useCrossRef();
|
|
23
|
+
const {
|
|
24
|
+
type
|
|
25
|
+
} = props;
|
|
120
26
|
|
|
121
|
-
|
|
122
|
-
|
|
27
|
+
if (type === constants.TabTypes.SUBTABS) {
|
|
28
|
+
return /*#__PURE__*/_jsx__default["default"](DSTabsCTX.DSTabsContext.Provider, {
|
|
29
|
+
value: ctx
|
|
30
|
+
}, void 0, _TabsContent || (_TabsContent = /*#__PURE__*/_jsx__default["default"](TabsContent.TabsContent, {})));
|
|
31
|
+
}
|
|
123
32
|
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
/** The active tabId */
|
|
131
|
-
activeTab: reactDesc.PropTypes.string.description('The active tabId'),
|
|
132
|
-
|
|
133
|
-
/** tabs children */
|
|
134
|
-
children: reactDesc.PropTypes.arrayOf(reactDesc.PropTypes.shape({
|
|
135
|
-
type: reactDesc.PropTypes.instanceOf([reactDesc.PropTypes.instanceOf(DSTab.DSTab), reactDesc.PropTypes.array])
|
|
136
|
-
})).isRequired.description('tabs children'),
|
|
137
|
-
|
|
138
|
-
/** Aria label for the list */
|
|
139
|
-
tabsListAriaLabel: reactDesc.PropTypes.string.description('Aria label for the list'),
|
|
140
|
-
|
|
141
|
-
/** Additional properties for the container */
|
|
142
|
-
containerProps: reactDesc.PropTypes.object.description('Additional properties for the container'),
|
|
143
|
-
|
|
144
|
-
/** REF */
|
|
145
|
-
innerRef: reactDesc.PropTypes.oneOfType([reactDesc.PropTypes.func, reactDesc.PropTypes.shape({
|
|
146
|
-
current: reactDesc.PropTypes.any
|
|
147
|
-
})]).description('REF'),
|
|
148
|
-
|
|
149
|
-
/** internal ref to handle keyboard a11y behavior */
|
|
150
|
-
firstSubtabRef: reactDesc.PropTypes.oneOfType([reactDesc.PropTypes.func, reactDesc.PropTypes.shape({
|
|
151
|
-
current: reactDesc.PropTypes.any
|
|
152
|
-
})]).description('internal ref to handle keyboard a11y behavior'),
|
|
153
|
-
|
|
154
|
-
/** internal ref to handle keyboard a11y behavior */
|
|
155
|
-
lastTabRef: reactDesc.PropTypes.oneOfType([reactDesc.PropTypes.func, reactDesc.PropTypes.shape({
|
|
156
|
-
current: reactDesc.PropTypes.any
|
|
157
|
-
})]).description('internal ref to handle keyboard a11y behavior')
|
|
33
|
+
return /*#__PURE__*/_jsx__default["default"](DSTabsCTX.DSTabsCrossRefContext.Provider, {
|
|
34
|
+
value: crossRefsCtx
|
|
35
|
+
}, void 0, /*#__PURE__*/_jsx__default["default"](DSTabsCTX.DSTabsContext.Provider, {
|
|
36
|
+
value: ctx
|
|
37
|
+
}, void 0, _TabsContent2 || (_TabsContent2 = /*#__PURE__*/_jsx__default["default"](TabsContent.TabsContent, {}))));
|
|
158
38
|
};
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
DSTabsWithSchema.propTypes =
|
|
39
|
+
|
|
40
|
+
const DSTabsWithSchema = reactDesc.describe(DSTabs);
|
|
41
|
+
DSTabsWithSchema.propTypes = propTypes.tabsPropTypes;
|
|
162
42
|
|
|
163
43
|
exports.DSTabs = DSTabs;
|
|
164
44
|
exports.DSTabsWithSchema = DSTabsWithSchema;
|
|
165
|
-
exports[
|
|
166
|
-
//# sourceMappingURL=DSTabs.js.map
|
|
45
|
+
exports["default"] = DSTabs;
|
package/cjs/DSTabsCTX.js
ADDED
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var React = require('react');
|
|
6
|
+
var defaultProps = require('./defaultProps.js');
|
|
7
|
+
|
|
8
|
+
// eslint-disable-next-line @typescript-eslint/no-empty-function
|
|
9
|
+
const noop = () => {};
|
|
10
|
+
|
|
11
|
+
const defaultContext = {
|
|
12
|
+
props: defaultProps.tabsDefaultProps,
|
|
13
|
+
tabsRef: /*#__PURE__*/React.createRef(),
|
|
14
|
+
tabsListRef: /*#__PURE__*/React.createRef(),
|
|
15
|
+
carouselOnlyListRef: /*#__PURE__*/React.createRef(),
|
|
16
|
+
focusableTabsRef: /*#__PURE__*/React.createRef(),
|
|
17
|
+
tabsRefAsArray: /*#__PURE__*/React.createRef(),
|
|
18
|
+
actualActiveTabRef: /*#__PURE__*/React.createRef(),
|
|
19
|
+
setInternalActiveTab: noop,
|
|
20
|
+
actualActiveTab: ''
|
|
21
|
+
};
|
|
22
|
+
const defaultCrossRefsContext = {
|
|
23
|
+
lastTabInternalRef: /*#__PURE__*/React.createRef(),
|
|
24
|
+
firstSubtabInternalRef: /*#__PURE__*/React.createRef()
|
|
25
|
+
};
|
|
26
|
+
const DSTabsContext = /*#__PURE__*/React.createContext(defaultContext);
|
|
27
|
+
const DSTabsCrossRefContext = /*#__PURE__*/React.createContext(defaultCrossRefsContext);
|
|
28
|
+
|
|
29
|
+
exports.DSTabsContext = DSTabsContext;
|
|
30
|
+
exports.DSTabsCrossRefContext = DSTabsCrossRefContext;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
const DSTabsDatatestid = {
|
|
6
|
+
TABS_CONTAINER: 'ds-tabs-container',
|
|
7
|
+
TAB_BUTTON: 'ds-tabs-tab-button',
|
|
8
|
+
SUBTAB_BUTTON: 'ds-tabs-subtab-button',
|
|
9
|
+
TAB_PANEL: 'ds-tabs-tab-panel',
|
|
10
|
+
SUB_TAB_LIST: 'subtabs-list',
|
|
11
|
+
TAB_LIST: 'tab-list',
|
|
12
|
+
CAROUSEL: {
|
|
13
|
+
BUTTON_RIGHT: 'chevron-right',
|
|
14
|
+
BUTTON_LEFT: 'chevron-left'
|
|
15
|
+
}
|
|
16
|
+
};
|
|
17
|
+
|
|
18
|
+
exports.DSTabsDatatestid = DSTabsDatatestid;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var React = require('react');
|
|
6
|
+
|
|
7
|
+
const useCrossRef = () => {
|
|
8
|
+
const firstSubtabInternalRef = React.useRef();
|
|
9
|
+
const lastTabInternalRef = React.useRef();
|
|
10
|
+
const ctx = React.useMemo(() => ({
|
|
11
|
+
firstSubtabInternalRef,
|
|
12
|
+
lastTabInternalRef
|
|
13
|
+
}), []);
|
|
14
|
+
return ctx;
|
|
15
|
+
};
|
|
16
|
+
|
|
17
|
+
exports.useCrossRef = useCrossRef;
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
require('core-js/modules/web.dom-collections.iterator.js');
|
|
6
|
+
require('core-js/modules/esnext.async-iterator.find.js');
|
|
7
|
+
require('core-js/modules/esnext.iterator.constructor.js');
|
|
8
|
+
require('core-js/modules/esnext.iterator.find.js');
|
|
9
|
+
var React = require('react');
|
|
10
|
+
var dsPropsHelpers = require('@elliemae/ds-props-helpers');
|
|
11
|
+
var defaultProps = require('../defaultProps.js');
|
|
12
|
+
|
|
13
|
+
const useTabs = props => {
|
|
14
|
+
var _children$, _children$$props;
|
|
15
|
+
|
|
16
|
+
const propsWithDefaults = dsPropsHelpers.useMemoMergePropsWithDefault(props, defaultProps.tabsDefaultProps);
|
|
17
|
+
const {
|
|
18
|
+
activeTab,
|
|
19
|
+
children
|
|
20
|
+
} = propsWithDefaults;
|
|
21
|
+
const tabsRef = React.useRef({});
|
|
22
|
+
const tabsRefAsArray = React.useRef([]);
|
|
23
|
+
const focusableTabsRef = React.useRef([]);
|
|
24
|
+
const carouselOnlyListRef = React.useRef(null);
|
|
25
|
+
const tabsListRef = React.useRef(null);
|
|
26
|
+
const actualActiveTabRef = React.useRef(null);
|
|
27
|
+
const [internalActiveTab, setInternalActiveTab] = React.useState(children === null || children === void 0 ? void 0 : (_children$ = children[0]) === null || _children$ === void 0 ? void 0 : (_children$$props = _children$.props) === null || _children$$props === void 0 ? void 0 : _children$$props.tabId);
|
|
28
|
+
const actualActiveTab = React.useMemo(() => {
|
|
29
|
+
if (activeTab !== undefined) return activeTab;
|
|
30
|
+
return internalActiveTab;
|
|
31
|
+
}, [activeTab, internalActiveTab]);
|
|
32
|
+
React.useEffect(() => {
|
|
33
|
+
var _focusableTabsRef$cur;
|
|
34
|
+
|
|
35
|
+
actualActiveTabRef.current = (_focusableTabsRef$cur = focusableTabsRef.current.find(el => el.dataset.tabId === internalActiveTab)) !== null && _focusableTabsRef$cur !== void 0 ? _focusableTabsRef$cur : null;
|
|
36
|
+
}, [internalActiveTab]);
|
|
37
|
+
const ctx = React.useMemo(() => ({
|
|
38
|
+
props: propsWithDefaults,
|
|
39
|
+
tabsRef,
|
|
40
|
+
focusableTabsRef,
|
|
41
|
+
tabsListRef,
|
|
42
|
+
tabsRefAsArray,
|
|
43
|
+
setInternalActiveTab,
|
|
44
|
+
actualActiveTab,
|
|
45
|
+
actualActiveTabRef,
|
|
46
|
+
carouselOnlyListRef
|
|
47
|
+
}), [actualActiveTab, propsWithDefaults]);
|
|
48
|
+
return ctx;
|
|
49
|
+
};
|
|
50
|
+
|
|
51
|
+
exports.useTabs = useTabs;
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var constants = require('./utils/constants.js');
|
|
6
|
+
|
|
7
|
+
// eslint-disable-next-line @typescript-eslint/no-empty-function
|
|
8
|
+
const noop = () => {};
|
|
9
|
+
|
|
10
|
+
const tabsDefaultProps = {
|
|
11
|
+
containerProps: {},
|
|
12
|
+
animated: true,
|
|
13
|
+
enableMouseEvents: false,
|
|
14
|
+
allowTextSelection: false,
|
|
15
|
+
onTabChange: noop,
|
|
16
|
+
tabsListAriaLabel: 'Tab list',
|
|
17
|
+
type: constants.TabTypes.NORMAL,
|
|
18
|
+
onlyRenderActiveTab: false,
|
|
19
|
+
withCarousel: false,
|
|
20
|
+
isDSMobile: false,
|
|
21
|
+
showSelectionIndicator: true,
|
|
22
|
+
children: [],
|
|
23
|
+
fixedTabsHeaders: false,
|
|
24
|
+
showSeparator: true
|
|
25
|
+
};
|
|
26
|
+
|
|
27
|
+
exports.tabsDefaultProps = tabsDefaultProps;
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
require('core-js/modules/esnext.async-iterator.filter.js');
|
|
6
|
+
require('core-js/modules/esnext.iterator.constructor.js');
|
|
7
|
+
require('core-js/modules/esnext.iterator.filter.js');
|
|
8
|
+
require('core-js/modules/esnext.async-iterator.for-each.js');
|
|
9
|
+
require('core-js/modules/esnext.iterator.for-each.js');
|
|
10
|
+
var _defineProperty = require('@babel/runtime/helpers/defineProperty');
|
|
11
|
+
var React = require('react');
|
|
12
|
+
var reactDesc = require('react-desc');
|
|
13
|
+
var propTypes = require('../propTypes.js');
|
|
14
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
15
|
+
|
|
16
|
+
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
17
|
+
|
|
18
|
+
var _defineProperty__default = /*#__PURE__*/_interopDefaultLegacy(_defineProperty);
|
|
19
|
+
var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
|
|
20
|
+
|
|
21
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
|
|
22
|
+
|
|
23
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty__default["default"](target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
|
|
24
|
+
|
|
25
|
+
const DSTab = props => /*#__PURE__*/jsxRuntime.jsx(React__default["default"].Fragment, _objectSpread({}, props));
|
|
26
|
+
|
|
27
|
+
const DSTabWithSchema = reactDesc.describe(DSTab);
|
|
28
|
+
DSTabWithSchema.propTypes = propTypes.tabPropTypes;
|
|
29
|
+
|
|
30
|
+
exports.DSTab = DSTab;
|
|
31
|
+
exports.DSTabWithSchema = DSTabWithSchema;
|
|
32
|
+
exports["default"] = DSTab;
|
package/cjs/index.js
CHANGED
|
@@ -2,38 +2,10 @@
|
|
|
2
2
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
|
-
var DSTab = require('./DSTab.js');
|
|
5
|
+
var DSTab = require('./exportsRelated/DSTab.js');
|
|
6
6
|
var DSTabs = require('./DSTabs.js');
|
|
7
|
-
var
|
|
8
|
-
require('
|
|
9
|
-
require('react-desc');
|
|
10
|
-
require('./TabsImpl.js');
|
|
11
|
-
require('@babel/runtime/helpers/extends');
|
|
12
|
-
require('@babel/runtime/helpers/slicedToArray');
|
|
13
|
-
require('@babel/runtime/helpers/defineProperty');
|
|
14
|
-
require('prop-types');
|
|
15
|
-
require('@elliemae/ds-classnames');
|
|
16
|
-
require('./TabsPanels.js');
|
|
17
|
-
require('@babel/runtime/helpers/classCallCheck');
|
|
18
|
-
require('@babel/runtime/helpers/createClass');
|
|
19
|
-
require('@babel/runtime/helpers/inherits');
|
|
20
|
-
require('@babel/runtime/helpers/possibleConstructorReturn');
|
|
21
|
-
require('@babel/runtime/helpers/getPrototypeOf');
|
|
22
|
-
require('memoize-one');
|
|
23
|
-
require('react-swipeable-views');
|
|
24
|
-
require('./PanelContainer.js');
|
|
25
|
-
require('@babel/runtime/helpers/objectWithoutProperties');
|
|
26
|
-
require('./TabBar.js');
|
|
27
|
-
require('@babel/runtime/helpers/assertThisInitialized');
|
|
28
|
-
require('lodash');
|
|
29
|
-
require('@elliemae/ds-form/RequiredMark');
|
|
30
|
-
require('resize-observer');
|
|
31
|
-
require('styled-components');
|
|
32
|
-
require('./Carousel.js');
|
|
33
|
-
require('@elliemae/ds-icons');
|
|
34
|
-
require('@elliemae/ds-button');
|
|
35
|
-
require('./useResize.js');
|
|
36
|
-
require('./SubTabBar.js');
|
|
7
|
+
var constants = require('./utils/constants.js');
|
|
8
|
+
var DSTabsDatatestid = require('./DSTabsDatatestid.js');
|
|
37
9
|
|
|
38
10
|
|
|
39
11
|
|
|
@@ -41,7 +13,5 @@ exports.DSTab = DSTab.DSTab;
|
|
|
41
13
|
exports.DSTabWithSchema = DSTab.DSTabWithSchema;
|
|
42
14
|
exports.DSTabs = DSTabs.DSTabs;
|
|
43
15
|
exports.DSTabsWithSchema = DSTabs.DSTabsWithSchema;
|
|
44
|
-
exports.
|
|
45
|
-
exports.
|
|
46
|
-
exports.getTabTypes = TabTypes.getTabTypes;
|
|
47
|
-
//# sourceMappingURL=index.js.map
|
|
16
|
+
exports.TabTypes = constants.TabTypes;
|
|
17
|
+
exports.DSTabsDatatestid = DSTabsDatatestid.DSTabsDatatestid;
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var _jsx = require('@babel/runtime/helpers/jsx');
|
|
6
|
+
var React = require('react');
|
|
7
|
+
var dsIcon = require('@elliemae/ds-icon');
|
|
8
|
+
var dsButton = require('@elliemae/ds-button');
|
|
9
|
+
var dsIcons = require('@elliemae/ds-icons');
|
|
10
|
+
var styles = require('./styles.js');
|
|
11
|
+
var useCarousel = require('./useCarousel.js');
|
|
12
|
+
var DSTabsCTX = require('../../DSTabsCTX.js');
|
|
13
|
+
var DSTabsDatatestid = require('../../DSTabsDatatestid.js');
|
|
14
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
15
|
+
|
|
16
|
+
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
17
|
+
|
|
18
|
+
var _jsx__default = /*#__PURE__*/_interopDefaultLegacy(_jsx);
|
|
19
|
+
|
|
20
|
+
const Carousel = _ref => {
|
|
21
|
+
let {
|
|
22
|
+
children,
|
|
23
|
+
updateIndicatorStyle
|
|
24
|
+
} = _ref;
|
|
25
|
+
const {
|
|
26
|
+
showChevrons,
|
|
27
|
+
leftButtonOnClick,
|
|
28
|
+
rightButtonOnClick,
|
|
29
|
+
handleOnClick,
|
|
30
|
+
handleOnScroll
|
|
31
|
+
} = useCarousel.useCarousel({
|
|
32
|
+
updateIndicatorStyle
|
|
33
|
+
});
|
|
34
|
+
const {
|
|
35
|
+
carouselOnlyListRef,
|
|
36
|
+
props: {
|
|
37
|
+
type
|
|
38
|
+
}
|
|
39
|
+
} = React.useContext(DSTabsCTX.DSTabsContext);
|
|
40
|
+
return /*#__PURE__*/_jsx__default["default"](styles.StyledCarouselWrapper, {}, void 0, showChevrons.left && /*#__PURE__*/_jsx__default["default"](styles.StyledCarouselButtonWrapper, {
|
|
41
|
+
tabType: type
|
|
42
|
+
}, void 0, /*#__PURE__*/_jsx__default["default"](styles.StyledCarouselBtn, {
|
|
43
|
+
size: "s",
|
|
44
|
+
onClick: leftButtonOnClick,
|
|
45
|
+
tabIndex: -1,
|
|
46
|
+
"data-testid": DSTabsDatatestid.DSTabsDatatestid.CAROUSEL.BUTTON_LEFT,
|
|
47
|
+
buttonType: dsButton.BUTTON_TYPES.ICON
|
|
48
|
+
}, void 0, /*#__PURE__*/_jsx__default["default"](dsIcons.ChevronLeft, {
|
|
49
|
+
size: dsIcon.DSIconSizes.S,
|
|
50
|
+
color: dsIcon.DSIconColors.PRIMARY
|
|
51
|
+
}))), showChevrons.right && /*#__PURE__*/_jsx__default["default"](styles.StyledCarouselButtonWrapper, {
|
|
52
|
+
tabType: type,
|
|
53
|
+
right: showChevrons.right
|
|
54
|
+
}, void 0, /*#__PURE__*/_jsx__default["default"](styles.StyledCarouselBtn, {
|
|
55
|
+
size: "s",
|
|
56
|
+
onClick: rightButtonOnClick,
|
|
57
|
+
tabIndex: -1,
|
|
58
|
+
"data-testid": DSTabsDatatestid.DSTabsDatatestid.CAROUSEL.BUTTON_RIGHT,
|
|
59
|
+
buttonType: dsButton.BUTTON_TYPES.ICON
|
|
60
|
+
}, void 0, /*#__PURE__*/_jsx__default["default"](dsIcons.ChevronRight, {
|
|
61
|
+
size: dsIcon.DSIconSizes.S,
|
|
62
|
+
color: dsIcon.DSIconColors.PRIMARY
|
|
63
|
+
}))), /*#__PURE__*/jsxRuntime.jsx(styles.StyledChildrenWrap, {
|
|
64
|
+
ref: carouselOnlyListRef,
|
|
65
|
+
onClick: handleOnClick,
|
|
66
|
+
onScroll: handleOnScroll,
|
|
67
|
+
children: children
|
|
68
|
+
}));
|
|
69
|
+
};
|
|
70
|
+
|
|
71
|
+
exports.Carousel = Carousel;
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var styled = require('styled-components');
|
|
6
|
+
var dsButton = require('@elliemae/ds-button');
|
|
7
|
+
var constants = require('../../utils/constants.js');
|
|
8
|
+
|
|
9
|
+
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
10
|
+
|
|
11
|
+
var styled__default = /*#__PURE__*/_interopDefaultLegacy(styled);
|
|
12
|
+
|
|
13
|
+
const StyledCarouselBtn = /*#__PURE__*/styled__default["default"](dsButton.DSButtonV2).withConfig({
|
|
14
|
+
componentId: "sc-prv5a7-0"
|
|
15
|
+
})(["margin:0;min-width:", ";width:", ";&:hover:not(:disabled){background-color:transparent;}background-color:transparent;border-radius:0px;"], _ref => {
|
|
16
|
+
let {
|
|
17
|
+
theme
|
|
18
|
+
} = _ref;
|
|
19
|
+
return theme.space.xs;
|
|
20
|
+
}, _ref2 => {
|
|
21
|
+
let {
|
|
22
|
+
theme
|
|
23
|
+
} = _ref2;
|
|
24
|
+
return theme.space.xs;
|
|
25
|
+
});
|
|
26
|
+
const StyledCarouselWrapper = /*#__PURE__*/styled__default["default"].span.withConfig({
|
|
27
|
+
componentId: "sc-prv5a7-1"
|
|
28
|
+
})(["position:relative;width:100%;display:flex;"]);
|
|
29
|
+
const StyledChildrenWrap = /*#__PURE__*/styled__default["default"].div.withConfig({
|
|
30
|
+
componentId: "sc-prv5a7-2"
|
|
31
|
+
})(["display:flex;flex-wrap:nowrap;flex:1;overflow-x:hidden;"]);
|
|
32
|
+
const StyledCarouselButtonWrapper = /*#__PURE__*/styled__default["default"].div.withConfig({
|
|
33
|
+
componentId: "sc-prv5a7-3"
|
|
34
|
+
})(["max-width:16px;position:absolute;z-index:200;", " width:16px;height:", ";padding-top:", ";background-color:white;", ";"], _ref3 => {
|
|
35
|
+
let {
|
|
36
|
+
right
|
|
37
|
+
} = _ref3;
|
|
38
|
+
return right ? 'right: 0;' : "left: 0;";
|
|
39
|
+
}, _ref4 => {
|
|
40
|
+
let {
|
|
41
|
+
tabType
|
|
42
|
+
} = _ref4;
|
|
43
|
+
return tabType === constants.TabTypes.NORMAL ? '32px' : '22px';
|
|
44
|
+
}, _ref5 => {
|
|
45
|
+
let {
|
|
46
|
+
tabType
|
|
47
|
+
} = _ref5;
|
|
48
|
+
return tabType === constants.TabTypes.NORMAL ? '5px' : '0px';
|
|
49
|
+
}, _ref6 => {
|
|
50
|
+
let {
|
|
51
|
+
theme,
|
|
52
|
+
tabType
|
|
53
|
+
} = _ref6;
|
|
54
|
+
return tabType === constants.TabTypes.NORMAL ? "\n border-bottom: 1px solid ".concat(theme.colors.neutral[200], ";") : "";
|
|
55
|
+
});
|
|
56
|
+
|
|
57
|
+
exports.StyledCarouselBtn = StyledCarouselBtn;
|
|
58
|
+
exports.StyledCarouselButtonWrapper = StyledCarouselButtonWrapper;
|
|
59
|
+
exports.StyledCarouselWrapper = StyledCarouselWrapper;
|
|
60
|
+
exports.StyledChildrenWrap = StyledChildrenWrap;
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
require('core-js/modules/web.dom-collections.iterator.js');
|
|
6
|
+
require('core-js/modules/esnext.async-iterator.reduce.js');
|
|
7
|
+
require('core-js/modules/esnext.iterator.constructor.js');
|
|
8
|
+
require('core-js/modules/esnext.iterator.reduce.js');
|
|
9
|
+
var React = require('react');
|
|
10
|
+
var useResizeObserver = require('@react-hook/resize-observer');
|
|
11
|
+
var DSTabsCTX = require('../../DSTabsCTX.js');
|
|
12
|
+
var helpers = require('../../utils/helpers.js');
|
|
13
|
+
var useCarouselCallbacks = require('./useCarouselCallbacks.js');
|
|
14
|
+
|
|
15
|
+
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
16
|
+
|
|
17
|
+
var useResizeObserver__default = /*#__PURE__*/_interopDefaultLegacy(useResizeObserver);
|
|
18
|
+
|
|
19
|
+
const useCarousel = _ref => {
|
|
20
|
+
let {
|
|
21
|
+
updateIndicatorStyle
|
|
22
|
+
} = _ref;
|
|
23
|
+
const {
|
|
24
|
+
carouselOnlyListRef
|
|
25
|
+
} = React.useContext(DSTabsCTX.DSTabsContext);
|
|
26
|
+
const [showChevrons, setShowChevrons] = React.useState({
|
|
27
|
+
right: false,
|
|
28
|
+
left: false
|
|
29
|
+
});
|
|
30
|
+
const {
|
|
31
|
+
tabsRefAsArray
|
|
32
|
+
} = React.useContext(DSTabsCTX.DSTabsContext);
|
|
33
|
+
const shouldShowLeft = React.useCallback(() => carouselOnlyListRef.current ? carouselOnlyListRef.current.scrollLeft > 0 : false, [carouselOnlyListRef]);
|
|
34
|
+
const shouldShowRight = React.useCallback(() => carouselOnlyListRef.current ? carouselOnlyListRef.current.scrollLeft < carouselOnlyListRef.current.scrollWidth - carouselOnlyListRef.current.clientWidth : false, [carouselOnlyListRef]);
|
|
35
|
+
const recalcChevrons = React.useCallback(() => {
|
|
36
|
+
setShowChevrons({
|
|
37
|
+
right: shouldShowRight(),
|
|
38
|
+
left: shouldShowLeft()
|
|
39
|
+
});
|
|
40
|
+
}, [shouldShowLeft, shouldShowRight]);
|
|
41
|
+
const getVisibleItemsOffset = React.useCallback(() => {
|
|
42
|
+
if (tabsRefAsArray.current) {
|
|
43
|
+
const scroll = tabsRefAsArray.current.reduce((acc, c) => {
|
|
44
|
+
if (helpers.isElementVisibleCarousel(c, carouselOnlyListRef.current)) {
|
|
45
|
+
const styles = window.getComputedStyle(c);
|
|
46
|
+
const width = c.clientWidth;
|
|
47
|
+
const margin = parseFloat(styles.marginLeft) + parseFloat(styles.marginRight);
|
|
48
|
+
return acc + (width + margin);
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
return acc;
|
|
52
|
+
}, 0);
|
|
53
|
+
return scroll - 16;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
return 0;
|
|
57
|
+
}, [tabsRefAsArray, carouselOnlyListRef]);
|
|
58
|
+
useResizeObserver__default["default"](carouselOnlyListRef, recalcChevrons);
|
|
59
|
+
const {
|
|
60
|
+
leftButtonOnClick,
|
|
61
|
+
rightButtonOnClick,
|
|
62
|
+
handleOnClick,
|
|
63
|
+
handleOnScroll
|
|
64
|
+
} = useCarouselCallbacks.useCarouselCallbacks({
|
|
65
|
+
getVisibleItemsOffset,
|
|
66
|
+
recalcChevrons,
|
|
67
|
+
updateIndicatorStyle
|
|
68
|
+
});
|
|
69
|
+
return {
|
|
70
|
+
showChevrons,
|
|
71
|
+
leftButtonOnClick,
|
|
72
|
+
rightButtonOnClick,
|
|
73
|
+
handleOnClick,
|
|
74
|
+
handleOnScroll
|
|
75
|
+
};
|
|
76
|
+
};
|
|
77
|
+
|
|
78
|
+
exports.useCarousel = useCarousel;
|