@elliemae/ds-tabs 2.2.0-next.3 → 2.3.0-alpha.1

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.
Files changed (104) hide show
  1. package/cjs/DSTabs.js +58 -40
  2. package/cjs/DSTabs.js.map +7 -0
  3. package/cjs/DSTabsCTX.js +51 -25
  4. package/cjs/DSTabsCTX.js.map +7 -0
  5. package/cjs/DSTabsDatatestid.js +42 -14
  6. package/cjs/DSTabsDatatestid.js.map +7 -0
  7. package/cjs/DSTabsTypes.js +27 -2
  8. package/cjs/DSTabsTypes.js.map +7 -0
  9. package/cjs/config/useCrossRef.js +38 -11
  10. package/cjs/config/useCrossRef.js.map +7 -0
  11. package/cjs/config/useTabs.js +53 -36
  12. package/cjs/config/useTabs.js.map +7 -0
  13. package/cjs/defaultProps.js +39 -13
  14. package/cjs/defaultProps.js.map +7 -0
  15. package/cjs/exportsRelated/DSTab.js +46 -32
  16. package/cjs/exportsRelated/DSTab.js.map +7 -0
  17. package/cjs/index.js +38 -17
  18. package/cjs/index.js.map +7 -0
  19. package/cjs/parts/carousel/Carousel.js +61 -53
  20. package/cjs/parts/carousel/Carousel.js.map +7 -0
  21. package/cjs/parts/carousel/styles.js +77 -63
  22. package/cjs/parts/carousel/styles.js.map +7 -0
  23. package/cjs/parts/carousel/useCarousel.js +51 -49
  24. package/cjs/parts/carousel/useCarousel.js.map +7 -0
  25. package/cjs/parts/carousel/useCarouselCallbacks.js +53 -36
  26. package/cjs/parts/carousel/useCarouselCallbacks.js.map +7 -0
  27. package/cjs/parts/tabBar/TabBar.js +124 -128
  28. package/cjs/parts/tabBar/TabBar.js.map +7 -0
  29. package/cjs/parts/tabBar/styles.js +289 -195
  30. package/cjs/parts/tabBar/styles.js.map +7 -0
  31. package/cjs/parts/tabBar/useTabBar.js +74 -53
  32. package/cjs/parts/tabBar/useTabBar.js.map +7 -0
  33. package/cjs/parts/tabsContent/TabsContent.js +49 -45
  34. package/cjs/parts/tabsContent/TabsContent.js.map +7 -0
  35. package/cjs/parts/tabsContent/styles.js +39 -15
  36. package/cjs/parts/tabsContent/styles.js.map +7 -0
  37. package/cjs/parts/tabsPanel/TabsPanels.js +60 -58
  38. package/cjs/parts/tabsPanel/TabsPanels.js.map +7 -0
  39. package/cjs/parts/tabsPanel/styles.js +43 -23
  40. package/cjs/parts/tabsPanel/styles.js.map +7 -0
  41. package/cjs/propTypes.js +54 -29
  42. package/cjs/propTypes.js.map +7 -0
  43. package/cjs/utils/constants.js +44 -16
  44. package/cjs/utils/constants.js.map +7 -0
  45. package/cjs/utils/helpers.js +46 -50
  46. package/cjs/utils/helpers.js.map +7 -0
  47. package/cjs/utils/hooks/useKeyboardNavigation.js +59 -43
  48. package/cjs/utils/hooks/useKeyboardNavigation.js.map +7 -0
  49. package/cjs/utils/hooks/useTabsCallbacks.js +60 -26
  50. package/cjs/utils/hooks/useTabsCallbacks.js.map +7 -0
  51. package/esm/DSTabs.js +24 -25
  52. package/esm/DSTabs.js.map +7 -0
  53. package/esm/DSTabsCTX.js +22 -20
  54. package/esm/DSTabsCTX.js.map +7 -0
  55. package/esm/DSTabsDatatestid.js +13 -10
  56. package/esm/DSTabsDatatestid.js.map +7 -0
  57. package/esm/DSTabsTypes.js +2 -1
  58. package/esm/DSTabsTypes.js.map +7 -0
  59. package/esm/config/useCrossRef.js +6 -4
  60. package/esm/config/useCrossRef.js.map +7 -0
  61. package/esm/config/useTabs.js +14 -22
  62. package/esm/config/useTabs.js.map +7 -0
  63. package/esm/defaultProps.js +9 -8
  64. package/esm/defaultProps.js.map +7 -0
  65. package/esm/exportsRelated/DSTab.js +15 -19
  66. package/esm/exportsRelated/DSTab.js.map +7 -0
  67. package/esm/index.js +9 -4
  68. package/esm/index.js.map +7 -0
  69. package/esm/parts/carousel/Carousel.js +25 -38
  70. package/esm/parts/carousel/Carousel.js.map +7 -0
  71. package/esm/parts/carousel/styles.js +48 -52
  72. package/esm/parts/carousel/styles.js.map +7 -0
  73. package/esm/parts/carousel/useCarousel.js +15 -34
  74. package/esm/parts/carousel/useCarousel.js.map +7 -0
  75. package/esm/parts/carousel/useCarouselCallbacks.js +20 -28
  76. package/esm/parts/carousel/useCarouselCallbacks.js.map +7 -0
  77. package/esm/parts/tabBar/TabBar.js +93 -110
  78. package/esm/parts/tabBar/TabBar.js.map +7 -0
  79. package/esm/parts/tabBar/styles.js +262 -183
  80. package/esm/parts/tabBar/styles.js.map +7 -0
  81. package/esm/parts/tabBar/useTabBar.js +35 -35
  82. package/esm/parts/tabBar/useTabBar.js.map +7 -0
  83. package/esm/parts/tabsContent/TabsContent.js +19 -35
  84. package/esm/parts/tabsContent/TabsContent.js.map +7 -0
  85. package/esm/parts/tabsContent/styles.js +10 -7
  86. package/esm/parts/tabsContent/styles.js.map +7 -0
  87. package/esm/parts/tabsPanel/TabsPanels.js +28 -45
  88. package/esm/parts/tabsPanel/TabsPanels.js.map +7 -0
  89. package/esm/parts/tabsPanel/styles.js +14 -15
  90. package/esm/parts/tabsPanel/styles.js.map +7 -0
  91. package/esm/propTypes.js +25 -24
  92. package/esm/propTypes.js.map +7 -0
  93. package/esm/utils/constants.js +15 -8
  94. package/esm/utils/constants.js.map +7 -0
  95. package/esm/utils/helpers.js +16 -38
  96. package/esm/utils/helpers.js.map +7 -0
  97. package/esm/utils/hooks/useKeyboardNavigation.js +30 -39
  98. package/esm/utils/hooks/useKeyboardNavigation.js.map +7 -0
  99. package/esm/utils/hooks/useTabsCallbacks.js +30 -21
  100. package/esm/utils/hooks/useTabsCallbacks.js.map +7 -0
  101. package/package.json +6 -6
  102. package/types/DSTabs.d.ts +2 -2
  103. package/types/DSTabsTypes.d.ts +0 -4
  104. package/types/utils/helpers.d.ts +1 -2
@@ -1,58 +1,75 @@
1
- 'use strict';
2
-
3
- Object.defineProperty(exports, '__esModule', { value: true });
4
-
5
- var React = require('react');
6
- var helpers = require('../../utils/helpers.js');
7
- var DSTabsCTX = require('../../DSTabsCTX.js');
8
-
9
- /* eslint-disable max-statements */
10
- const useCarouselCallbacks = _ref => {
11
- let {
12
- getVisibleItemsOffset,
13
- updateIndicatorStyle,
14
- recalcChevrons
15
- } = _ref;
16
- const {
17
- focusableTabsRef,
18
- carouselOnlyListRef
19
- } = React.useContext(DSTabsCTX.DSTabsContext);
20
- const rightButtonOnClick = React.useCallback(() => {
1
+ var __create = Object.create;
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __getProtoOf = Object.getPrototypeOf;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __markAsModule = (target) => __defProp(target, "__esModule", { value: true });
8
+ var __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, { get: all[name], enumerable: true });
11
+ };
12
+ var __reExport = (target, module2, copyDefault, desc) => {
13
+ if (module2 && typeof module2 === "object" || typeof module2 === "function") {
14
+ for (let key of __getOwnPropNames(module2))
15
+ if (!__hasOwnProp.call(target, key) && (copyDefault || key !== "default"))
16
+ __defProp(target, key, { get: () => module2[key], enumerable: !(desc = __getOwnPropDesc(module2, key)) || desc.enumerable });
17
+ }
18
+ return target;
19
+ };
20
+ var __toESM = (module2, isNodeMode) => {
21
+ return __reExport(__markAsModule(__defProp(module2 != null ? __create(__getProtoOf(module2)) : {}, "default", !isNodeMode && module2 && module2.__esModule ? { get: () => module2.default, enumerable: true } : { value: module2, enumerable: true })), module2);
22
+ };
23
+ var __toCommonJS = /* @__PURE__ */ ((cache) => {
24
+ return (module2, temp) => {
25
+ return cache && cache.get(module2) || (temp = __reExport(__markAsModule({}), module2, 1), cache && cache.set(module2, temp), temp);
26
+ };
27
+ })(typeof WeakMap !== "undefined" ? /* @__PURE__ */ new WeakMap() : 0);
28
+ var useCarouselCallbacks_exports = {};
29
+ __export(useCarouselCallbacks_exports, {
30
+ useCarouselCallbacks: () => useCarouselCallbacks
31
+ });
32
+ var React = __toESM(require("react"));
33
+ var import_react = require("react");
34
+ var import_helpers = require("../../utils/helpers");
35
+ var import_DSTabsCTX = require("../../DSTabsCTX");
36
+ const useCarouselCallbacks = ({
37
+ getVisibleItemsOffset,
38
+ updateIndicatorStyle,
39
+ recalcChevrons
40
+ }) => {
41
+ const { focusableTabsRef, carouselOnlyListRef } = (0, import_react.useContext)(import_DSTabsCTX.DSTabsContext);
42
+ const rightButtonOnClick = (0, import_react.useCallback)(() => {
21
43
  if (carouselOnlyListRef.current) {
22
44
  carouselOnlyListRef.current.scrollLeft += getVisibleItemsOffset();
23
45
  }
24
46
  }, [getVisibleItemsOffset, carouselOnlyListRef]);
25
- const leftButtonOnClick = React.useCallback(() => {
47
+ const leftButtonOnClick = (0, import_react.useCallback)(() => {
26
48
  if (carouselOnlyListRef.current) {
27
49
  carouselOnlyListRef.current.scrollLeft -= getVisibleItemsOffset();
28
50
  }
29
51
  }, [getVisibleItemsOffset, carouselOnlyListRef]);
30
- const handleOnScroll = React.useCallback(() => {
52
+ const handleOnScroll = (0, import_react.useCallback)(() => {
31
53
  recalcChevrons();
32
- if (updateIndicatorStyle) updateIndicatorStyle();
54
+ if (updateIndicatorStyle)
55
+ updateIndicatorStyle();
33
56
  }, [recalcChevrons, updateIndicatorStyle]);
34
- const handleOnClick = React.useCallback(_ref2 => {
35
- let {
36
- target
37
- } = _ref2;
38
-
39
- if (focusableTabsRef.current && target.getAttribute('role') === 'tab') {
57
+ const handleOnClick = (0, import_react.useCallback)(({ target }) => {
58
+ if (focusableTabsRef.current && target.getAttribute("role") === "tab") {
40
59
  const tabList = carouselOnlyListRef.current;
41
60
  const tabButton = target;
42
61
  const tabButtonDimensions = tabButton.getBoundingClientRect();
43
- const tabListDimensions = tabList === null || tabList === void 0 ? void 0 : tabList.getBoundingClientRect();
62
+ const tabListDimensions = tabList?.getBoundingClientRect();
44
63
  const tabButtonIndex = tabButton.dataset.index;
45
64
  const lastItemIndex = focusableTabsRef.current.length.toString();
46
65
  const magicNumber = 34;
47
- const firstOrLastItem = tabButtonIndex === '0' || tabButtonIndex === lastItemIndex;
48
-
49
- if (!helpers.isElementVisibleCarousel(tabButton, tabList, firstOrLastItem) && tabListDimensions && carouselOnlyListRef.current) {
66
+ const firstOrLastItem = tabButtonIndex === "0" || tabButtonIndex === lastItemIndex;
67
+ if (!(0, import_helpers.isElementVisibleCarousel)(tabButton, tabList, firstOrLastItem) && tabListDimensions && carouselOnlyListRef.current) {
50
68
  const containerWidth = tabListDimensions.width;
51
69
  const halfContainer = containerWidth / 2;
52
70
  const elementScrollPosition = tabButtonDimensions.left - tabListDimensions.left;
53
71
  const positionInContainer = elementScrollPosition % containerWidth;
54
72
  const width = tabButton.offsetWidth + magicNumber;
55
-
56
73
  if (positionInContainer > halfContainer) {
57
74
  carouselOnlyListRef.current.scrollLeft += width + positionInContainer - containerWidth;
58
75
  } else {
@@ -68,5 +85,5 @@ const useCarouselCallbacks = _ref => {
68
85
  handleOnScroll
69
86
  };
70
87
  };
71
-
72
- exports.useCarouselCallbacks = useCarouselCallbacks;
88
+ module.exports = __toCommonJS(useCarouselCallbacks_exports);
89
+ //# sourceMappingURL=useCarouselCallbacks.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/parts/carousel/useCarouselCallbacks.tsx", "../../../../../../scripts/build/transpile/react-shim.js"],
4
+ "sourcesContent": ["/* eslint-disable max-statements */\nimport { useCallback, useContext } from 'react';\nimport type { MouseEvent } from 'react';\nimport { isElementVisibleCarousel } from '../../utils/helpers';\nimport { DSTabsContext } from '../../DSTabsCTX';\nimport type { UseCarouselCallbacksPropsT, UseCarouselCallbacksReturnTypeT } from '../../DSTabsTypes';\n\nexport const useCarouselCallbacks = ({\n getVisibleItemsOffset,\n updateIndicatorStyle,\n recalcChevrons,\n}: UseCarouselCallbacksPropsT): UseCarouselCallbacksReturnTypeT => {\n const { focusableTabsRef, carouselOnlyListRef } = useContext(DSTabsContext);\n\n const rightButtonOnClick = useCallback(() => {\n if (carouselOnlyListRef.current) {\n carouselOnlyListRef.current.scrollLeft += getVisibleItemsOffset();\n }\n }, [getVisibleItemsOffset, carouselOnlyListRef]);\n\n const leftButtonOnClick = useCallback(() => {\n if (carouselOnlyListRef.current) {\n carouselOnlyListRef.current.scrollLeft -= getVisibleItemsOffset();\n }\n }, [getVisibleItemsOffset, carouselOnlyListRef]);\n\n const handleOnScroll = useCallback(() => {\n recalcChevrons();\n if (updateIndicatorStyle) updateIndicatorStyle();\n }, [recalcChevrons, updateIndicatorStyle]);\n\n const handleOnClick = useCallback(\n ({ target }: MouseEvent) => {\n if (focusableTabsRef.current && (target as HTMLButtonElement).getAttribute('role') === 'tab') {\n const tabList = carouselOnlyListRef.current;\n const tabButton = target as HTMLButtonElement;\n const tabButtonDimensions = tabButton.getBoundingClientRect();\n const tabListDimensions = tabList?.getBoundingClientRect();\n const tabButtonIndex = tabButton.dataset.index as string;\n const lastItemIndex = focusableTabsRef.current.length.toString();\n const magicNumber = 34;\n\n const firstOrLastItem = tabButtonIndex === '0' || tabButtonIndex === lastItemIndex;\n\n if (\n !isElementVisibleCarousel(tabButton, tabList, firstOrLastItem) &&\n tabListDimensions &&\n carouselOnlyListRef.current\n ) {\n const containerWidth = tabListDimensions.width;\n const halfContainer = containerWidth / 2;\n const elementScrollPosition = tabButtonDimensions.left - tabListDimensions.left;\n const positionInContainer = elementScrollPosition % containerWidth;\n const width = tabButton.offsetWidth + magicNumber;\n\n if (positionInContainer > halfContainer) {\n carouselOnlyListRef.current.scrollLeft += width + positionInContainer - containerWidth;\n } else {\n carouselOnlyListRef.current.scrollLeft += positionInContainer - magicNumber;\n }\n }\n }\n },\n [focusableTabsRef, carouselOnlyListRef],\n );\n\n return {\n handleOnClick,\n rightButtonOnClick,\n leftButtonOnClick,\n handleOnScroll,\n };\n};\n", "import * as React from 'react';\nexport { React };\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADCvB,mBAAwC;AAExC,qBAAyC;AACzC,uBAA8B;AAGvB,MAAM,uBAAuB,CAAC;AAAA,EACnC;AAAA,EACA;AAAA,EACA;AAAA,MACiE;AACjE,QAAM,EAAE,kBAAkB,wBAAwB,6BAAW;AAE7D,QAAM,qBAAqB,8BAAY,MAAM;AAC3C,QAAI,oBAAoB,SAAS;AAC/B,0BAAoB,QAAQ,cAAc;AAAA;AAAA,KAE3C,CAAC,uBAAuB;AAE3B,QAAM,oBAAoB,8BAAY,MAAM;AAC1C,QAAI,oBAAoB,SAAS;AAC/B,0BAAoB,QAAQ,cAAc;AAAA;AAAA,KAE3C,CAAC,uBAAuB;AAE3B,QAAM,iBAAiB,8BAAY,MAAM;AACvC;AACA,QAAI;AAAsB;AAAA,KACzB,CAAC,gBAAgB;AAEpB,QAAM,gBAAgB,8BACpB,CAAC,EAAE,aAAyB;AAC1B,QAAI,iBAAiB,WAAY,OAA6B,aAAa,YAAY,OAAO;AAC5F,YAAM,UAAU,oBAAoB;AACpC,YAAM,YAAY;AAClB,YAAM,sBAAsB,UAAU;AACtC,YAAM,oBAAoB,SAAS;AACnC,YAAM,iBAAiB,UAAU,QAAQ;AACzC,YAAM,gBAAgB,iBAAiB,QAAQ,OAAO;AACtD,YAAM,cAAc;AAEpB,YAAM,kBAAkB,mBAAmB,OAAO,mBAAmB;AAErE,UACE,CAAC,6CAAyB,WAAW,SAAS,oBAC9C,qBACA,oBAAoB,SACpB;AACA,cAAM,iBAAiB,kBAAkB;AACzC,cAAM,gBAAgB,iBAAiB;AACvC,cAAM,wBAAwB,oBAAoB,OAAO,kBAAkB;AAC3E,cAAM,sBAAsB,wBAAwB;AACpD,cAAM,QAAQ,UAAU,cAAc;AAEtC,YAAI,sBAAsB,eAAe;AACvC,8BAAoB,QAAQ,cAAc,QAAQ,sBAAsB;AAAA,eACnE;AACL,8BAAoB,QAAQ,cAAc,sBAAsB;AAAA;AAAA;AAAA;AAAA,KAKxE,CAAC,kBAAkB;AAGrB,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA;AAAA;",
6
+ "names": []
7
+ }
@@ -1,168 +1,164 @@
1
- 'use strict';
2
-
3
- Object.defineProperty(exports, '__esModule', { value: true });
4
-
5
- var _jsx = require('@babel/runtime/helpers/jsx');
6
- require('core-js/modules/esnext.async-iterator.map.js');
7
- require('core-js/modules/esnext.iterator.map.js');
8
- var React = require('react');
9
- var Carousel = require('../carousel/Carousel.js');
10
- var useTabBar = require('./useTabBar.js');
11
- var styles = require('./styles.js');
12
- var DSTabsCTX = require('../../DSTabsCTX.js');
13
- var useKeyboardNavigation = require('../../utils/hooks/useKeyboardNavigation.js');
14
- var helpers = require('../../utils/helpers.js');
15
- var constants = require('../../utils/constants.js');
16
- var useTabsCallbacks = require('../../utils/hooks/useTabsCallbacks.js');
17
- var DSTabsDatatestid = require('../../DSTabsDatatestid.js');
18
- var jsxRuntime = require('react/jsx-runtime');
19
-
20
- function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
21
-
22
- var _jsx__default = /*#__PURE__*/_interopDefaultLegacy(_jsx);
23
- var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
24
-
25
- var _StyledRequiredMark;
1
+ var __create = Object.create;
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __getProtoOf = Object.getPrototypeOf;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __markAsModule = (target) => __defProp(target, "__esModule", { value: true });
8
+ var __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, { get: all[name], enumerable: true });
11
+ };
12
+ var __reExport = (target, module2, copyDefault, desc) => {
13
+ if (module2 && typeof module2 === "object" || typeof module2 === "function") {
14
+ for (let key of __getOwnPropNames(module2))
15
+ if (!__hasOwnProp.call(target, key) && (copyDefault || key !== "default"))
16
+ __defProp(target, key, { get: () => module2[key], enumerable: !(desc = __getOwnPropDesc(module2, key)) || desc.enumerable });
17
+ }
18
+ return target;
19
+ };
20
+ var __toESM = (module2, isNodeMode) => {
21
+ return __reExport(__markAsModule(__defProp(module2 != null ? __create(__getProtoOf(module2)) : {}, "default", !isNodeMode && module2 && module2.__esModule ? { get: () => module2.default, enumerable: true } : { value: module2, enumerable: true })), module2);
22
+ };
23
+ var __toCommonJS = /* @__PURE__ */ ((cache) => {
24
+ return (module2, temp) => {
25
+ return cache && cache.get(module2) || (temp = __reExport(__markAsModule({}), module2, 1), cache && cache.set(module2, temp), temp);
26
+ };
27
+ })(typeof WeakMap !== "undefined" ? /* @__PURE__ */ new WeakMap() : 0);
28
+ var TabBar_exports = {};
29
+ __export(TabBar_exports, {
30
+ TabBar: () => TabBar
31
+ });
32
+ var React = __toESM(require("react"));
33
+ var import_react = __toESM(require("react"));
34
+ var import_Carousel = require("../carousel/Carousel");
35
+ var import_useTabBar = require("./useTabBar");
36
+ var import_styles = require("./styles");
37
+ var import_DSTabsCTX = require("../../DSTabsCTX");
38
+ var import_useKeyboardNavigation = require("../../utils/hooks/useKeyboardNavigation");
39
+ var import_constants = require("../../utils/constants");
40
+ var import_useTabsCallbacks = require("../../utils/hooks/useTabsCallbacks");
41
+ var import_DSTabsDatatestid = require("../../DSTabsDatatestid");
26
42
  const TabBar = () => {
27
43
  const {
28
44
  tabsRef,
29
45
  focusableTabsRef,
30
46
  tabsListRef,
31
47
  tabsRefAsArray,
32
- carouselOnlyListRef,
33
48
  actualActiveTab,
34
- props: {
35
- type,
36
- fixedTabsHeaders,
37
- withCarousel,
38
- isDSMobile,
39
- showSeparator,
40
- children: tabs
41
- }
42
- } = React.useContext(DSTabsCTX.DSTabsContext);
43
- const {
44
- lastTabInternalRef,
45
- firstSubtabInternalRef
46
- } = React.useContext(DSTabsCTX.DSTabsCrossRefContext);
47
- const {
48
- handleOnTabChange
49
- } = useTabsCallbacks.useTabsCallbacks();
50
- const {
51
- handleOnKeyDown
52
- } = useKeyboardNavigation.useKeyboardNavigation();
53
- const {
54
- indicatorStyle,
55
- mobileGradients,
56
- updateMobileGradients,
57
- updateIndicatorStyle
58
- } = useTabBar.useTabBar();
59
- const renderTabs = React.useMemo(() => {
49
+ props: { type, fixedTabsHeaders, withCarousel, isDSMobile, showSeparator, children: tabs }
50
+ } = (0, import_react.useContext)(import_DSTabsCTX.DSTabsContext);
51
+ const { lastTabInternalRef, firstSubtabInternalRef } = (0, import_react.useContext)(import_DSTabsCTX.DSTabsCrossRefContext);
52
+ const { handleOnTabChange } = (0, import_useTabsCallbacks.useTabsCallbacks)();
53
+ const { handleOnKeyDown } = (0, import_useKeyboardNavigation.useKeyboardNavigation)();
54
+ const { indicatorStyle, mobileGradients, updateMobileGradients, updateIndicatorStyle } = (0, import_useTabBar.useTabBar)();
55
+ const renderTabs = (0, import_react.useMemo)(() => {
60
56
  const availableTabIndexes = [];
61
- return React__default["default"].Children.map(tabs, (tab, index) => {
62
- const {
63
- tabId = '',
64
- title = '',
65
- style,
66
- required = false,
67
- disabled = false,
68
- ref,
69
- onClick,
70
- onKeyDown
71
- } = tab.props;
72
- if (!disabled) availableTabIndexes.push(index);
73
- return /*#__PURE__*/jsxRuntime.jsxs(styles.StyledTabButton, {
57
+ return import_react.default.Children.map(tabs, (tab, index) => {
58
+ const { tabId = "", title = "", style, required = false, disabled = false, ref, onClick, onKeyDown } = tab.props;
59
+ if (!disabled)
60
+ availableTabIndexes.push(index);
61
+ return /* @__PURE__ */ import_react.default.createElement(import_styles.StyledTabButton, {
62
+ key: tabId,
74
63
  role: "tab",
75
- ref: t => {
64
+ ref: (t) => {
76
65
  if (tabsRefAsArray.current && focusableTabsRef.current && tabsRef.current) {
77
66
  tabsRefAsArray.current[index] = t;
78
- if (!disabled && !focusableTabsRef.current.includes(t)) focusableTabsRef.current.push(t);
67
+ if (!disabled && !focusableTabsRef.current.includes(t))
68
+ focusableTabsRef.current.push(t);
79
69
  tabsRef.current[index] = t;
80
-
81
- if (type === constants.TabTypes.SUBTABS && firstSubtabInternalRef && index === availableTabIndexes[0]) {
70
+ if (type === import_constants.TabTypes.SUBTABS && firstSubtabInternalRef && index === availableTabIndexes[0]) {
82
71
  firstSubtabInternalRef.current = t;
83
72
  }
84
-
85
- if (type !== constants.TabTypes.SUBTABS && index === availableTabIndexes[availableTabIndexes.length - 1]) {
73
+ if (type !== import_constants.TabTypes.SUBTABS && index === availableTabIndexes[availableTabIndexes.length - 1]) {
86
74
  lastTabInternalRef.current = t;
87
75
  }
88
-
89
- if (ref) ref.current = t;
76
+ if (ref)
77
+ ref.current = t;
90
78
  }
91
79
  },
92
80
  type: "button",
93
81
  "aria-controls": tabId,
94
82
  "aria-selected": actualActiveTab === tabId,
95
83
  "aria-disabled": disabled,
96
- "aria-labelledby": "".concat(tabId, "-label"),
97
- isDSMobile: isDSMobile,
98
- fixedTabsHeaders: fixedTabsHeaders,
84
+ "aria-labelledby": `${tabId}-label`,
85
+ isDSMobile,
86
+ fixedTabsHeaders,
99
87
  tabType: type,
100
- title: title,
88
+ title,
101
89
  "data-required": required,
102
90
  "data-tab-id": tabId,
103
91
  "data-index": index,
104
- withCarousel: withCarousel,
92
+ withCarousel,
105
93
  isActive: actualActiveTab === tabId,
106
- disabled: disabled,
107
- showSeparator: showSeparator && type !== constants.TabTypes.NORMAL,
108
- "data-testid": type === constants.TabTypes.NORMAL ? DSTabsDatatestid.DSTabsDatatestid.TAB_BUTTON : DSTabsDatatestid.DSTabsDatatestid.SUBTAB_BUTTON,
109
- id: "".concat(tabId, "-label"),
110
- onClick: e => {
94
+ disabled,
95
+ showSeparator: showSeparator && type !== import_constants.TabTypes.NORMAL,
96
+ "data-testid": type === import_constants.TabTypes.NORMAL ? import_DSTabsDatatestid.DSTabsDatatestid.TAB_BUTTON : import_DSTabsDatatestid.DSTabsDatatestid.SUBTAB_BUTTON,
97
+ id: `${tabId}-label`,
98
+ onClick: (e) => {
111
99
  if (!disabled) {
112
100
  handleOnTabChange(tabId, e);
113
101
  updateIndicatorStyle();
114
102
  }
115
-
116
- if (onClick && !disabled) onClick(tabId, e);
117
- },
118
- onFocus: e => {
119
- if (withCarousel) helpers.centerTab({
120
- e,
121
- listRef: carouselOnlyListRef
122
- });
103
+ if (onClick && !disabled)
104
+ onClick(tabId, e);
123
105
  },
124
- onKeyDown: e => {
125
- if (e.key === 'Enter') e.stopPropagation();
126
- if (!disabled) handleOnKeyDown(e);
127
- if (onKeyDown && !disabled) onKeyDown(e);
106
+ onKeyDown: (e) => {
107
+ if (e.key === "Enter")
108
+ e.stopPropagation();
109
+ if (!disabled)
110
+ handleOnKeyDown(e);
111
+ if (onKeyDown && !disabled)
112
+ onKeyDown(e);
128
113
  },
129
- style: style,
130
- children: [title, required && (_StyledRequiredMark || (_StyledRequiredMark = /*#__PURE__*/_jsx__default["default"](styles.StyledRequiredMark, {}, void 0, "\u25CF")))]
131
- }, tabId);
114
+ style
115
+ }, title, required && /* @__PURE__ */ import_react.default.createElement(import_styles.StyledRequiredMark, null, "\u25CF"));
132
116
  });
133
- }, [tabs, actualActiveTab, isDSMobile, fixedTabsHeaders, type, withCarousel, showSeparator, tabsRefAsArray, focusableTabsRef, tabsRef, firstSubtabInternalRef, lastTabInternalRef, handleOnTabChange, updateIndicatorStyle, carouselOnlyListRef, handleOnKeyDown]);
134
-
135
- if (type === constants.TabTypes.SUBTABS && !isDSMobile) {
136
- return /*#__PURE__*/jsxRuntime.jsx(styles.StyledSubTabsList, {
137
- withCarousel: withCarousel,
138
- "data-testid": DSTabsDatatestid.DSTabsDatatestid.SUB_TAB_LIST,
117
+ }, [
118
+ tabs,
119
+ actualActiveTab,
120
+ isDSMobile,
121
+ fixedTabsHeaders,
122
+ type,
123
+ withCarousel,
124
+ showSeparator,
125
+ tabsRefAsArray,
126
+ focusableTabsRef,
127
+ tabsRef,
128
+ firstSubtabInternalRef,
129
+ lastTabInternalRef,
130
+ handleOnTabChange,
131
+ updateIndicatorStyle,
132
+ handleOnKeyDown
133
+ ]);
134
+ if (type === import_constants.TabTypes.SUBTABS && !isDSMobile) {
135
+ return /* @__PURE__ */ import_react.default.createElement(import_styles.StyledSubTabsList, {
136
+ withCarousel,
137
+ "data-testid": import_DSTabsDatatestid.DSTabsDatatestid.SUB_TAB_LIST,
139
138
  ref: tabsListRef,
140
- role: "tablist",
141
- children: withCarousel ? /*#__PURE__*/_jsx__default["default"](Carousel.Carousel, {}, void 0, renderTabs) : renderTabs
142
- });
139
+ role: "tablist"
140
+ }, withCarousel ? /* @__PURE__ */ import_react.default.createElement(import_Carousel.Carousel, null, renderTabs) : renderTabs);
143
141
  }
144
-
145
- return /*#__PURE__*/jsxRuntime.jsxs(styles.StyledTabList, {
146
- withCarousel: withCarousel,
142
+ return /* @__PURE__ */ import_react.default.createElement(import_styles.StyledTabList, {
143
+ withCarousel,
147
144
  ref: tabsListRef,
148
145
  role: "tablist",
149
- "data-testid": DSTabsDatatestid.DSTabsDatatestid.TAB_LIST,
150
- isDSMobile: isDSMobile,
151
- fixedTabsHeaders: fixedTabsHeaders,
152
- mobileGradients: mobileGradients,
146
+ "data-testid": import_DSTabsDatatestid.DSTabsDatatestid.TAB_LIST,
147
+ isDSMobile,
148
+ fixedTabsHeaders,
149
+ mobileGradients,
153
150
  onScroll: updateMobileGradients,
154
- indicatorStyle: indicatorStyle,
155
- tabType: type,
156
- children: [/*#__PURE__*/_jsx__default["default"](styles.StyledTabWrapper, {
157
- isDSMobile: isDSMobile,
158
- fixedTabsHeaders: fixedTabsHeaders
159
- }, void 0, !isDSMobile && withCarousel ? /*#__PURE__*/_jsx__default["default"](Carousel.Carousel, {
160
- updateIndicatorStyle: updateIndicatorStyle
161
- }, void 0, renderTabs) : renderTabs), /*#__PURE__*/_jsx__default["default"](styles.StyledSelectionIndicator, {
162
- isDSMobile: isDSMobile,
163
- tabType: type
164
- })]
165
- });
151
+ indicatorStyle,
152
+ tabType: type
153
+ }, /* @__PURE__ */ import_react.default.createElement(import_styles.StyledTabWrapper, {
154
+ isDSMobile,
155
+ fixedTabsHeaders
156
+ }, !isDSMobile && withCarousel ? /* @__PURE__ */ import_react.default.createElement(import_Carousel.Carousel, {
157
+ updateIndicatorStyle
158
+ }, renderTabs) : renderTabs), /* @__PURE__ */ import_react.default.createElement(import_styles.StyledSelectionIndicator, {
159
+ isDSMobile,
160
+ tabType: type
161
+ }));
166
162
  };
167
-
168
- exports.TabBar = TabBar;
163
+ module.exports = __toCommonJS(TabBar_exports);
164
+ //# sourceMappingURL=TabBar.js.map
@@ -0,0 +1,7 @@
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>&#9679;</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
+ }