@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.
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 +131 -120
  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 +66 -62
  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 +63 -22
  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 +46 -45
  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 +100 -102
  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 +27 -44
  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 +33 -11
  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 +15 -39
  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 +4 -0
  104. package/types/utils/helpers.d.ts +2 -1
@@ -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,160 +1,171 @@
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 constants = require('../../utils/constants.js');
15
- var useTabsCallbacks = require('../../utils/hooks/useTabsCallbacks.js');
16
- var DSTabsDatatestid = require('../../DSTabsDatatestid.js');
17
- var jsxRuntime = require('react/jsx-runtime');
18
-
19
- function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
20
-
21
- var _jsx__default = /*#__PURE__*/_interopDefaultLegacy(_jsx);
22
- var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
23
-
24
- 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_helpers = require("../../utils/helpers");
40
+ var import_constants = require("../../utils/constants");
41
+ var import_useTabsCallbacks = require("../../utils/hooks/useTabsCallbacks");
42
+ var import_DSTabsDatatestid = require("../../DSTabsDatatestid");
25
43
  const TabBar = () => {
26
44
  const {
27
45
  tabsRef,
28
46
  focusableTabsRef,
29
47
  tabsListRef,
30
48
  tabsRefAsArray,
49
+ carouselOnlyListRef,
31
50
  actualActiveTab,
32
- props: {
33
- type,
34
- fixedTabsHeaders,
35
- withCarousel,
36
- isDSMobile,
37
- showSeparator,
38
- children: tabs
39
- }
40
- } = React.useContext(DSTabsCTX.DSTabsContext);
41
- const {
42
- lastTabInternalRef,
43
- firstSubtabInternalRef
44
- } = React.useContext(DSTabsCTX.DSTabsCrossRefContext);
45
- const {
46
- handleOnTabChange
47
- } = useTabsCallbacks.useTabsCallbacks();
48
- const {
49
- handleOnKeyDown
50
- } = useKeyboardNavigation.useKeyboardNavigation();
51
- const {
52
- indicatorStyle,
53
- mobileGradients,
54
- updateMobileGradients,
55
- updateIndicatorStyle
56
- } = useTabBar.useTabBar();
57
- const renderTabs = React.useMemo(() => {
51
+ props: { type, fixedTabsHeaders, withCarousel, isDSMobile, showSeparator, children: tabs }
52
+ } = (0, import_react.useContext)(import_DSTabsCTX.DSTabsContext);
53
+ const { lastTabInternalRef, firstSubtabInternalRef } = (0, import_react.useContext)(import_DSTabsCTX.DSTabsCrossRefContext);
54
+ const { handleOnTabChange } = (0, import_useTabsCallbacks.useTabsCallbacks)();
55
+ const { handleOnKeyDown } = (0, import_useKeyboardNavigation.useKeyboardNavigation)();
56
+ const { indicatorStyle, mobileGradients, updateMobileGradients, updateIndicatorStyle } = (0, import_useTabBar.useTabBar)();
57
+ const renderTabs = (0, import_react.useMemo)(() => {
58
58
  const availableTabIndexes = [];
59
- return React__default["default"].Children.map(tabs, (tab, index) => {
60
- const {
61
- tabId = '',
62
- title = '',
63
- style,
64
- required = false,
65
- disabled = false,
66
- ref,
67
- onClick,
68
- onKeyDown
69
- } = tab.props;
70
- if (!disabled) availableTabIndexes.push(index);
71
- return /*#__PURE__*/jsxRuntime.jsxs(styles.StyledTabButton, {
59
+ return import_react.default.Children.map(tabs, (tab, index) => {
60
+ const { tabId = "", title = "", style, required = false, disabled = false, ref, onClick, onKeyDown } = tab.props;
61
+ if (!disabled)
62
+ availableTabIndexes.push(index);
63
+ return /* @__PURE__ */ import_react.default.createElement(import_styles.StyledTabButton, {
64
+ key: tabId,
72
65
  role: "tab",
73
- ref: t => {
66
+ ref: (t) => {
74
67
  if (tabsRefAsArray.current && focusableTabsRef.current && tabsRef.current) {
75
68
  tabsRefAsArray.current[index] = t;
76
- if (!disabled && !focusableTabsRef.current.includes(t)) focusableTabsRef.current.push(t);
69
+ if (!disabled && !focusableTabsRef.current.includes(t))
70
+ focusableTabsRef.current.push(t);
77
71
  tabsRef.current[index] = t;
78
-
79
- if (type === constants.TabTypes.SUBTABS && firstSubtabInternalRef && index === availableTabIndexes[0]) {
72
+ if (type === import_constants.TabTypes.SUBTABS && firstSubtabInternalRef && index === availableTabIndexes[0]) {
80
73
  firstSubtabInternalRef.current = t;
81
74
  }
82
-
83
- if (type !== constants.TabTypes.SUBTABS && index === availableTabIndexes[availableTabIndexes.length - 1]) {
75
+ if (type !== import_constants.TabTypes.SUBTABS && index === availableTabIndexes[availableTabIndexes.length - 1]) {
84
76
  lastTabInternalRef.current = t;
85
77
  }
86
-
87
- if (ref) ref.current = t;
78
+ if (ref)
79
+ ref.current = t;
88
80
  }
89
81
  },
90
82
  type: "button",
91
83
  "aria-controls": tabId,
92
84
  "aria-selected": actualActiveTab === tabId,
93
85
  "aria-disabled": disabled,
94
- "aria-labelledby": "".concat(tabId, "-label"),
95
- isDSMobile: isDSMobile,
96
- fixedTabsHeaders: fixedTabsHeaders,
86
+ "aria-labelledby": `${tabId}-label`,
87
+ isDSMobile,
88
+ fixedTabsHeaders,
97
89
  tabType: type,
98
- title: title,
90
+ title,
99
91
  "data-required": required,
100
92
  "data-tab-id": tabId,
101
93
  "data-index": index,
102
- withCarousel: withCarousel,
94
+ withCarousel,
103
95
  isActive: actualActiveTab === tabId,
104
- disabled: disabled,
105
- showSeparator: showSeparator && type !== constants.TabTypes.NORMAL,
106
- "data-testid": type === constants.TabTypes.NORMAL ? DSTabsDatatestid.DSTabsDatatestid.TAB_BUTTON : DSTabsDatatestid.DSTabsDatatestid.SUBTAB_BUTTON,
107
- id: "".concat(tabId, "-label"),
108
- onClick: e => {
96
+ disabled,
97
+ showSeparator: showSeparator && type !== import_constants.TabTypes.NORMAL,
98
+ "data-testid": type === import_constants.TabTypes.NORMAL ? import_DSTabsDatatestid.DSTabsDatatestid.TAB_BUTTON : import_DSTabsDatatestid.DSTabsDatatestid.SUBTAB_BUTTON,
99
+ id: `${tabId}-label`,
100
+ onClick: (e) => {
109
101
  if (!disabled) {
110
102
  handleOnTabChange(tabId, e);
111
103
  updateIndicatorStyle();
112
104
  }
113
-
114
- if (onClick && !disabled) onClick(tabId, e);
105
+ if (onClick && !disabled)
106
+ onClick(tabId, e);
107
+ },
108
+ onFocus: (e) => {
109
+ if (withCarousel)
110
+ (0, import_helpers.centerTab)({ e, listRef: carouselOnlyListRef });
115
111
  },
116
- onKeyDown: e => {
117
- if (e.key === 'Enter') e.stopPropagation();
118
- if (!disabled) handleOnKeyDown(e);
119
- if (onKeyDown && !disabled) onKeyDown(e);
112
+ onKeyDown: (e) => {
113
+ if (e.key === "Enter")
114
+ e.stopPropagation();
115
+ if (!disabled)
116
+ handleOnKeyDown(e);
117
+ if (onKeyDown && !disabled)
118
+ onKeyDown(e);
120
119
  },
121
- style: style,
122
- children: [title, required && (_StyledRequiredMark || (_StyledRequiredMark = /*#__PURE__*/_jsx__default["default"](styles.StyledRequiredMark, {}, void 0, "\u25CF")))]
123
- }, tabId);
120
+ style
121
+ }, title, required && /* @__PURE__ */ import_react.default.createElement(import_styles.StyledRequiredMark, null, "\u25CF"));
124
122
  });
125
- }, [tabs, actualActiveTab, isDSMobile, fixedTabsHeaders, type, withCarousel, showSeparator, tabsRefAsArray, focusableTabsRef, tabsRef, firstSubtabInternalRef, lastTabInternalRef, handleOnTabChange, updateIndicatorStyle, handleOnKeyDown]);
126
-
127
- if (type === constants.TabTypes.SUBTABS && !isDSMobile) {
128
- return /*#__PURE__*/jsxRuntime.jsx(styles.StyledSubTabsList, {
129
- withCarousel: withCarousel,
130
- "data-testid": DSTabsDatatestid.DSTabsDatatestid.SUB_TAB_LIST,
123
+ }, [
124
+ tabs,
125
+ actualActiveTab,
126
+ isDSMobile,
127
+ fixedTabsHeaders,
128
+ type,
129
+ withCarousel,
130
+ showSeparator,
131
+ tabsRefAsArray,
132
+ focusableTabsRef,
133
+ tabsRef,
134
+ firstSubtabInternalRef,
135
+ lastTabInternalRef,
136
+ handleOnTabChange,
137
+ updateIndicatorStyle,
138
+ carouselOnlyListRef,
139
+ handleOnKeyDown
140
+ ]);
141
+ if (type === import_constants.TabTypes.SUBTABS && !isDSMobile) {
142
+ return /* @__PURE__ */ import_react.default.createElement(import_styles.StyledSubTabsList, {
143
+ withCarousel,
144
+ "data-testid": import_DSTabsDatatestid.DSTabsDatatestid.SUB_TAB_LIST,
131
145
  ref: tabsListRef,
132
- role: "tablist",
133
- children: withCarousel ? /*#__PURE__*/_jsx__default["default"](Carousel.Carousel, {}, void 0, renderTabs) : renderTabs
134
- });
146
+ role: "tablist"
147
+ }, withCarousel ? /* @__PURE__ */ import_react.default.createElement(import_Carousel.Carousel, null, renderTabs) : renderTabs);
135
148
  }
136
-
137
- return /*#__PURE__*/jsxRuntime.jsxs(styles.StyledTabList, {
138
- withCarousel: withCarousel,
149
+ return /* @__PURE__ */ import_react.default.createElement(import_styles.StyledTabList, {
150
+ withCarousel,
139
151
  ref: tabsListRef,
140
152
  role: "tablist",
141
- "data-testid": DSTabsDatatestid.DSTabsDatatestid.TAB_LIST,
142
- isDSMobile: isDSMobile,
143
- fixedTabsHeaders: fixedTabsHeaders,
144
- mobileGradients: mobileGradients,
153
+ "data-testid": import_DSTabsDatatestid.DSTabsDatatestid.TAB_LIST,
154
+ isDSMobile,
155
+ fixedTabsHeaders,
156
+ mobileGradients,
145
157
  onScroll: updateMobileGradients,
146
- indicatorStyle: indicatorStyle,
147
- tabType: type,
148
- children: [/*#__PURE__*/_jsx__default["default"](styles.StyledTabWrapper, {
149
- isDSMobile: isDSMobile,
150
- fixedTabsHeaders: fixedTabsHeaders
151
- }, void 0, !isDSMobile && withCarousel ? /*#__PURE__*/_jsx__default["default"](Carousel.Carousel, {
152
- updateIndicatorStyle: updateIndicatorStyle
153
- }, void 0, renderTabs) : renderTabs), /*#__PURE__*/_jsx__default["default"](styles.StyledSelectionIndicator, {
154
- isDSMobile: isDSMobile,
155
- tabType: type
156
- })]
157
- });
158
+ indicatorStyle,
159
+ tabType: type
160
+ }, /* @__PURE__ */ import_react.default.createElement(import_styles.StyledTabWrapper, {
161
+ isDSMobile,
162
+ fixedTabsHeaders
163
+ }, !isDSMobile && withCarousel ? /* @__PURE__ */ import_react.default.createElement(import_Carousel.Carousel, {
164
+ updateIndicatorStyle
165
+ }, renderTabs) : renderTabs), /* @__PURE__ */ import_react.default.createElement(import_styles.StyledSelectionIndicator, {
166
+ isDSMobile,
167
+ tabType: type
168
+ }));
158
169
  };
159
-
160
- exports.TabBar = TabBar;
170
+ module.exports = __toCommonJS(TabBar_exports);
171
+ //# 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 { centerTab } from '../../utils/helpers';\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 carouselOnlyListRef,\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 onFocus={(e) => {\n if (withCarousel) centerTab({ e, listRef: carouselOnlyListRef });\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 carouselOnlyListRef,\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
+ }