@salutejs/plasma-new-hope 0.173.0-dev.0 → 0.173.1-canary.1502.11462220468.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (69) hide show
  1. package/cjs/components/Tabs/createTabsController.js.map +1 -1
  2. package/cjs/components/Tabs/ui/horizontal/HorizontalTabItem/HorizontalTabItem.js +8 -3
  3. package/cjs/components/Tabs/ui/horizontal/HorizontalTabItem/HorizontalTabItem.js.map +1 -1
  4. package/cjs/components/Tabs/ui/horizontal/HorizontalTabs/HorizontalTabs.css +1 -1
  5. package/cjs/components/Tabs/ui/horizontal/HorizontalTabs/HorizontalTabs.js +15 -5
  6. package/cjs/components/Tabs/ui/horizontal/HorizontalTabs/HorizontalTabs.js.map +1 -1
  7. package/cjs/components/Tabs/ui/horizontal/HorizontalTabs/variations/_view/base.js +1 -1
  8. package/cjs/components/Tabs/ui/horizontal/HorizontalTabs/variations/_view/base.js.map +1 -1
  9. package/cjs/components/Tabs/ui/horizontal/HorizontalTabs/variations/_view/{base_9miwn.css → base_4ob3q5.css} +1 -1
  10. package/cjs/components/Tabs/ui/horizontal/const.js +11 -0
  11. package/cjs/components/Tabs/ui/horizontal/const.js.map +1 -0
  12. package/cjs/index.css +1 -1
  13. package/emotion/cjs/components/Tabs/ui/horizontal/HorizontalTabItem/HorizontalTabItem.js +13 -3
  14. package/emotion/cjs/components/Tabs/ui/horizontal/HorizontalTabs/HorizontalTabs.js +20 -5
  15. package/emotion/cjs/components/Tabs/ui/horizontal/HorizontalTabs/variations/_view/base.js +1 -1
  16. package/emotion/cjs/components/Tabs/ui/horizontal/const.js +10 -0
  17. package/emotion/cjs/examples/plasma_b2c/components/Tabs/Tabs.stories.tsx +72 -33
  18. package/emotion/cjs/examples/plasma_web/components/Tabs/Tabs.stories.tsx +72 -33
  19. package/emotion/es/components/Tabs/ui/horizontal/HorizontalTabItem/HorizontalTabItem.js +14 -3
  20. package/emotion/es/components/Tabs/ui/horizontal/HorizontalTabs/HorizontalTabs.js +21 -5
  21. package/emotion/es/components/Tabs/ui/horizontal/HorizontalTabs/variations/_view/base.js +1 -1
  22. package/emotion/es/components/Tabs/ui/horizontal/const.js +4 -0
  23. package/emotion/es/examples/plasma_b2c/components/Tabs/Tabs.stories.tsx +72 -33
  24. package/emotion/es/examples/plasma_web/components/Tabs/Tabs.stories.tsx +72 -33
  25. package/es/components/Tabs/createTabsController.js.map +1 -1
  26. package/es/components/Tabs/ui/horizontal/HorizontalTabItem/HorizontalTabItem.js +9 -4
  27. package/es/components/Tabs/ui/horizontal/HorizontalTabItem/HorizontalTabItem.js.map +1 -1
  28. package/es/components/Tabs/ui/horizontal/HorizontalTabs/HorizontalTabs.css +1 -1
  29. package/es/components/Tabs/ui/horizontal/HorizontalTabs/HorizontalTabs.js +16 -6
  30. package/es/components/Tabs/ui/horizontal/HorizontalTabs/HorizontalTabs.js.map +1 -1
  31. package/es/components/Tabs/ui/horizontal/HorizontalTabs/variations/_view/base.js +1 -1
  32. package/es/components/Tabs/ui/horizontal/HorizontalTabs/variations/_view/base.js.map +1 -1
  33. package/es/components/Tabs/ui/horizontal/HorizontalTabs/variations/_view/{base_9miwn.css → base_4ob3q5.css} +1 -1
  34. package/es/components/Tabs/ui/horizontal/const.js +7 -0
  35. package/es/components/Tabs/ui/horizontal/const.js.map +1 -0
  36. package/es/index.css +1 -1
  37. package/package.json +2 -2
  38. package/styled-components/cjs/components/Tabs/ui/horizontal/HorizontalTabItem/HorizontalTabItem.js +13 -3
  39. package/styled-components/cjs/components/Tabs/ui/horizontal/HorizontalTabs/HorizontalTabs.js +20 -5
  40. package/styled-components/cjs/components/Tabs/ui/horizontal/HorizontalTabs/variations/_view/base.js +1 -1
  41. package/styled-components/cjs/components/Tabs/ui/horizontal/const.js +10 -0
  42. package/styled-components/cjs/examples/plasma_b2c/components/Tabs/Tabs.stories.tsx +72 -33
  43. package/styled-components/cjs/examples/plasma_web/components/Tabs/Tabs.stories.tsx +72 -33
  44. package/styled-components/es/components/Tabs/ui/horizontal/HorizontalTabItem/HorizontalTabItem.js +14 -3
  45. package/styled-components/es/components/Tabs/ui/horizontal/HorizontalTabs/HorizontalTabs.js +21 -5
  46. package/styled-components/es/components/Tabs/ui/horizontal/HorizontalTabs/variations/_view/base.js +1 -1
  47. package/styled-components/es/components/Tabs/ui/horizontal/const.js +4 -0
  48. package/styled-components/es/examples/plasma_b2c/components/Tabs/Tabs.stories.tsx +72 -33
  49. package/styled-components/es/examples/plasma_web/components/Tabs/Tabs.stories.tsx +72 -33
  50. package/types/components/Tabs/TabItem.types.d.ts +50 -8
  51. package/types/components/Tabs/TabItem.types.d.ts.map +1 -1
  52. package/types/components/Tabs/Tabs.types.d.ts +44 -2
  53. package/types/components/Tabs/Tabs.types.d.ts.map +1 -1
  54. package/types/components/Tabs/createTabsController.d.ts +2 -2
  55. package/types/components/Tabs/createTabsController.d.ts.map +1 -1
  56. package/types/components/Tabs/ui/horizontal/HorizontalTabItem/HorizontalTabItem.d.ts.map +1 -1
  57. package/types/components/Tabs/ui/horizontal/HorizontalTabs/HorizontalTabs.d.ts +2 -2
  58. package/types/components/Tabs/ui/horizontal/HorizontalTabs/HorizontalTabs.d.ts.map +1 -1
  59. package/types/components/Tabs/ui/horizontal/HorizontalTabs/variations/_view/base.d.ts.map +1 -1
  60. package/types/components/Tabs/ui/horizontal/const.d.ts +2 -0
  61. package/types/components/Tabs/ui/horizontal/const.d.ts.map +1 -0
  62. package/types/examples/plasma_b2c/components/Tabs/TabItem.d.ts +17 -2
  63. package/types/examples/plasma_b2c/components/Tabs/TabItem.d.ts.map +1 -1
  64. package/types/examples/plasma_b2c/components/Tabs/Tabs.d.ts +1 -1
  65. package/types/examples/plasma_b2c/components/Tabs/Tabs.d.ts.map +1 -1
  66. package/types/examples/plasma_web/components/Tabs/TabItem.d.ts +17 -2
  67. package/types/examples/plasma_web/components/Tabs/TabItem.d.ts.map +1 -1
  68. package/types/examples/plasma_web/components/Tabs/Tabs.d.ts +1 -1
  69. package/types/examples/plasma_web/components/Tabs/Tabs.d.ts.map +1 -1
@@ -12,6 +12,7 @@ import { Tabs } from './Tabs';
12
12
  import { TabItem } from './TabItem';
13
13
 
14
14
  const clips = ['none', 'scroll', 'showAll'];
15
+ const headerClips = ['none', 'scroll'];
15
16
  const sizes = ['xs', 's', 'm', 'l'] as const;
16
17
  const headerSizes = ['h5', 'h4', 'h3', 'h2', 'h1'] as const;
17
18
 
@@ -20,7 +21,6 @@ type HeaderSize = typeof headerSizes[number];
20
21
 
21
22
  type CustomStoryTabsProps = {
22
23
  itemQuantity: number;
23
- hasDivider: boolean;
24
24
  contentLeft: string;
25
25
  contentRight: string;
26
26
  stretch: boolean;
@@ -30,12 +30,12 @@ type CustomStoryTabsProps = {
30
30
  const contentLeftOptions = ['none', 'icon'];
31
31
  const contentRightOptions = ['none', 'counter', 'icon'];
32
32
 
33
- const getContentLeft = (contentLeftOption: string, size: Size) => {
33
+ const getContentLeft = (contentLeftOption: string, size: string) => {
34
34
  const iconSize = size === 'xs' ? 'xs' : 's';
35
35
  return contentLeftOption === 'icon' ? <IconMic size={iconSize} color="inherit" /> : undefined;
36
36
  };
37
37
 
38
- const getContentRight = (contentRightOption: string, size: Size) => {
38
+ const getContentRight = (contentRightOption: string, size: string) => {
39
39
  const iconSize = size === 'xs' ? 'xs' : 's';
40
40
  const counterSize = size === 'xs' ? 'xxs' : 'xs';
41
41
 
@@ -96,7 +96,7 @@ const StoryHorizontalDefault = (props: HorizontalStoryTabsProps) => {
96
96
  const [index, setIndex] = useState(0);
97
97
 
98
98
  return (
99
- <Tabs view={hasDivider ? 'divider' : 'clear'} stretch={stretch} disabled={disabled} size={size}>
99
+ <Tabs view="divider" hasDivider={hasDivider} stretch={stretch} disabled={disabled} size={size}>
100
100
  {items.map((_, i) => {
101
101
  if (helperText !== '') {
102
102
  return (
@@ -152,7 +152,7 @@ const StoryHorizontalScroll = (props: HorizontalStoryTabsProps) => {
152
152
  const [index, setIndex] = useState(0);
153
153
 
154
154
  return (
155
- <Tabs clip={clip} view={hasDivider ? 'divider' : 'clear'} disabled={disabled} size={size} style={{ width }}>
155
+ <Tabs clip={clip} view="divider" hasDivider={hasDivider} disabled={disabled} size={size} style={{ width }}>
156
156
  {items.map((_, i) => {
157
157
  if (helperText !== '') {
158
158
  return (
@@ -220,7 +220,7 @@ const StoryHorizontalShowAll = (props: HorizontalStoryTabsProps) => {
220
220
  });
221
221
 
222
222
  return (
223
- <Tabs clip={clip} view={hasDivider ? 'divider' : 'clear'} disabled={disabled} size={size}>
223
+ <Tabs clip={clip} view="divider" hasDivider={hasDivider} disabled={disabled} size={size}>
224
224
  {visibleItems.map((_, i) => {
225
225
  if (helperText !== '') {
226
226
  return (
@@ -603,31 +603,47 @@ export const VerticalTabs: StoryObj<VerticalStoryTabsProps> = {
603
603
  },
604
604
  };
605
605
 
606
- const StoryHeaderTabs = (props: StoryTabsProps) => {
607
- const {
608
- disabled,
609
- itemQuantity,
610
- size,
611
- contentLeft: contentLeftOption,
612
- contentRight: contentRightOption,
613
- hasDivider,
614
- stretch,
615
- } = props;
606
+ const StoryHeaderDefault = (props: HorizontalStoryTabsProps) => {
607
+ const { disabled, itemQuantity, size, helperText } = props;
608
+ const items = Array(itemQuantity).fill(0);
609
+ const [index, setIndex] = useState(0);
610
+
611
+ return (
612
+ <Tabs view="clear" disabled={disabled} size={size as HeaderSize}>
613
+ {items.map((_, i) => (
614
+ <TabItem
615
+ key={`item:${i}`}
616
+ view="clear"
617
+ selected={i === index}
618
+ onClick={() => !disabled && setIndex(i)}
619
+ tabIndex={!disabled ? 0 : -1}
620
+ disabled={disabled}
621
+ value={helperText}
622
+ size={size as HeaderSize}
623
+ >
624
+ {`Label${i + 1}`}
625
+ </TabItem>
626
+ ))}
627
+ </Tabs>
628
+ );
629
+ };
630
+
631
+ const StoryHeaderScroll = (props: HorizontalStoryTabsProps) => {
632
+ const { disabled, itemQuantity, size, helperText, width } = props;
616
633
  const items = Array(itemQuantity).fill(0);
617
634
  const [index, setIndex] = useState(0);
618
635
 
619
636
  return (
620
- <Tabs view={hasDivider ? 'divider' : 'clear'} disabled={disabled} size={size} stretch={stretch}>
637
+ <Tabs view="clear" disabled={disabled} size={size as HeaderSize} style={{ width }}>
621
638
  {items.map((_, i) => (
622
639
  <TabItem
623
640
  key={`item:${i}`}
624
- view="divider"
641
+ view="clear"
625
642
  selected={i === index}
626
643
  onClick={() => !disabled && setIndex(i)}
627
644
  tabIndex={!disabled ? 0 : -1}
628
645
  disabled={disabled}
629
- contentLeft={getContentLeft(contentLeftOption, size as Size)}
630
- contentRight={getContentRight(contentRightOption, size as Size)}
646
+ value={helperText}
631
647
  size={size as HeaderSize}
632
648
  >
633
649
  {`Label${i + 1}`}
@@ -637,37 +653,60 @@ const StoryHeaderTabs = (props: StoryTabsProps) => {
637
653
  );
638
654
  };
639
655
 
640
- export const HeaderTabs: StoryObj<StoryTabsProps> = {
656
+ export const HeaderTabs: StoryObj<HorizontalStoryTabsProps> = {
641
657
  args: {
642
658
  size: 'h5',
643
659
  disabled: false,
644
- hasDivider: true,
645
- itemQuantity: 4,
660
+ helperText: '',
661
+ itemQuantity: 6,
662
+ width: '12rem',
646
663
  },
647
664
  argTypes: {
648
- size: {
649
- options: headerSizes,
665
+ clip: {
666
+ options: headerClips,
650
667
  control: {
651
668
  type: 'select',
652
669
  },
653
670
  },
654
- contentLeft: {
655
- options: contentLeftOptions,
671
+ width: {
656
672
  control: {
657
- type: 'select',
673
+ type: 'text',
674
+ },
675
+ if: { arg: 'clip', eq: 'scroll' },
676
+ },
677
+ stretch: {
678
+ table: {
679
+ disable: true,
680
+ },
681
+ },
682
+ contentLeft: {
683
+ table: {
684
+ disable: true,
658
685
  },
659
686
  },
660
687
  contentRight: {
661
- options: contentRightOptions,
662
- control: {
663
- type: 'select',
688
+ table: {
689
+ disable: true,
664
690
  },
665
691
  },
666
- clip: {
692
+ hasDivider: {
667
693
  table: {
668
694
  disable: true,
669
695
  },
670
696
  },
697
+ size: {
698
+ options: headerSizes,
699
+ control: {
700
+ type: 'select',
701
+ },
702
+ },
703
+ },
704
+ render: (args) => {
705
+ switch (args.clip) {
706
+ case 'scroll':
707
+ return <StoryHeaderScroll {...args} />;
708
+ default:
709
+ return <StoryHeaderDefault {...args} />;
710
+ }
671
711
  },
672
- render: (args) => <StoryHeaderTabs {...args} />,
673
712
  };
@@ -1,5 +1,11 @@
1
+ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
1
2
  var _excluded = ["size", "view", "isActive", "selected", "disabled", "pilled", "children", "value", "contentLeft", "contentRight", "animated", "onIndexChange", "itemIndex", "tabIndex", "className", "onClick"];
2
3
  function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
4
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
5
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
6
+ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
7
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
8
+ function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
3
9
  function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
4
10
  function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
5
11
  import React, { forwardRef, useRef, useContext, useEffect, useCallback } from 'react';
@@ -7,6 +13,7 @@ import { useForkRef } from '@salutejs/plasma-core';
7
13
  import { classes } from '../../../tokens';
8
14
  import { cx } from '../../../../../utils';
9
15
  import { TabsContext } from '../../../TabsContext';
16
+ import { isHeaderSize } from '../const';
10
17
  import { base as viewCSS } from './variations/_view/base';
11
18
  import { base as sizeCSS } from './variations/_size/base';
12
19
  import { base as pilledCSS } from './variations/_pilled/base';
@@ -34,6 +41,12 @@ export var horizontalTabItemRoot = function horizontalTabItemRoot(Root) {
34
41
  className = props.className,
35
42
  onClick = props.onClick,
36
43
  rest = _objectWithoutProperties(props, _excluded);
44
+ var restRootProps = size && isHeaderSize(size) ? _objectSpread({
45
+ size: size
46
+ }, rest) : _objectSpread({
47
+ size: size,
48
+ pilled: pilled
49
+ }, rest);
37
50
  var innerRef = useRef(null);
38
51
  var ref = useForkRef(outerRef, innerRef);
39
52
  var refs = useContext(TabsContext);
@@ -90,15 +103,13 @@ export var horizontalTabItemRoot = function horizontalTabItemRoot(Root) {
90
103
  return /*#__PURE__*/React.createElement(Root, _extends({
91
104
  ref: ref,
92
105
  disabled: disabled,
93
- pilled: pilled,
94
106
  role: role,
95
107
  view: view,
96
- size: size,
97
108
  onFocus: onItemFocus,
98
109
  tabIndex: hasKeyNavigation ? navigationTabIndex : tabIndex,
99
110
  className: cx(pilledClass, selectedClass, animatedClass, className),
100
111
  onClick: handleClick
101
- }, rest), /*#__PURE__*/React.createElement(React.Fragment, null, contentLeft && /*#__PURE__*/React.createElement(LeftContent, {
112
+ }, restRootProps), /*#__PURE__*/React.createElement(React.Fragment, null, contentLeft && /*#__PURE__*/React.createElement(LeftContent, {
102
113
  className: classes.tabLeftContent
103
114
  }, contentLeft), /*#__PURE__*/React.createElement(StyledContent, {
104
115
  className: classes.tabContent
@@ -1,4 +1,5 @@
1
- var _excluded = ["id", "stretch", "disabled", "clip", "size", "view", "children", "pilled", "index", "className"];
1
+ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
2
+ var _excluded = ["id", "stretch", "disabled", "clip", "size", "view", "children", "pilled", "index", "className", "hasDivider", "outsideScroll"];
2
3
  function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
3
4
  function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
4
5
  function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
@@ -6,6 +7,11 @@ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o =
6
7
  function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
7
8
  function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
8
9
  function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
10
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
11
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
12
+ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
13
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
14
+ function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
9
15
  function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
10
16
  function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
11
17
  import React, { forwardRef, useCallback, useMemo, useState, useEffect, useRef } from 'react';
@@ -14,6 +20,7 @@ import { IconDisclosureLeft, IconDisclosureRight } from '../../../../_Icon';
14
20
  import { classes, tokens } from '../../../tokens';
15
21
  import { cx } from '../../../../../utils';
16
22
  import { TabItemRefs, TabsContext } from '../../../TabsContext';
23
+ import { isHeaderSize } from '../const';
17
24
  import { base as sizeCSS } from './variations/_size/base';
18
25
  import { base as viewCSS } from './variations/_view/base';
19
26
  import { base as disabledCSS } from './variations/_disabled/base';
@@ -43,7 +50,17 @@ export var horizontalTabsRoot = function horizontalTabsRoot(Root) {
43
50
  pilled = _props$pilled === void 0 ? false : _props$pilled,
44
51
  index = props.index,
45
52
  className = props.className,
53
+ _props$hasDivider = props.hasDivider,
54
+ hasDivider = _props$hasDivider === void 0 ? true : _props$hasDivider,
55
+ outsideScroll = props.outsideScroll,
46
56
  rest = _objectWithoutProperties(props, _excluded);
57
+ var restRootProps = size && isHeaderSize(size) ? _objectSpread({
58
+ size: size
59
+ }, rest) : _objectSpread({
60
+ size: size,
61
+ pilled: pilled,
62
+ outsideScroll: outsideScroll
63
+ }, rest);
47
64
  var _useState = useState(true),
48
65
  _useState2 = _slicedToArray(_useState, 2),
49
66
  firstItemVisible = _useState2[0],
@@ -60,6 +77,7 @@ export var horizontalTabsRoot = function horizontalTabsRoot(Root) {
60
77
  var isFilled = view === 'filled'; // outer padding is only for filled view
61
78
  var pilledAttr = view !== 'clear' && pilled;
62
79
  var pilledClass = pilledAttr ? classes.tabsPilled : undefined;
80
+ var noDividerClass = !hasDivider ? classes.tabsNoDivider : undefined;
63
81
  var stretchClass = firstItemVisible && lastItemVisible && stretch ? classes.tabsStretch : undefined;
64
82
  var hasLeftArrowClass = !firstItemVisible ? classes.tabsHasLeftArrow : undefined;
65
83
  var hasRightArrowClass = !lastItemVisible ? classes.tabsHasRightArrow : undefined;
@@ -190,14 +208,12 @@ export var horizontalTabsRoot = function horizontalTabsRoot(Root) {
190
208
  }, /*#__PURE__*/React.createElement(Root, _extends({
191
209
  view: view,
192
210
  role: "tablist",
193
- size: size,
194
- pilled: pilled,
195
211
  id: tabsId,
196
212
  ref: outerRef,
197
213
  disabled: disabled,
198
- className: cx(pilledClass, stretchClass, hasLeftArrowClass, hasRightArrowClass, className),
214
+ className: cx(pilledClass, stretchClass, hasLeftArrowClass, hasRightArrowClass, noDividerClass, className),
199
215
  onKeyDown: onKeyDown
200
- }, rest), !firstItemVisible && PreviousButton, /*#__PURE__*/React.createElement(StyledContentWrapper, {
216
+ }, restRootProps), !firstItemVisible && PreviousButton, /*#__PURE__*/React.createElement(StyledContentWrapper, {
201
217
  className: cx(clipScrollClass, clipShowAllClass),
202
218
  ref: scrollRef,
203
219
  onScroll: handleScroll
@@ -1,3 +1,3 @@
1
1
  import { css } from 'styled-components';
2
2
  import { classes, tokens } from '../../../../../tokens';
3
- export var base = /*#__PURE__*/css(["background-color:var(", ");&::after{content:'';position:absolute;bottom:0.125rem;left:0.125rem;right:0.125rem;background:var(", ");height:var(", ");border-radius:var(", ");}&.", "{&::after{left:1.5rem;}}&.", "{&::after{right:1.5rem;}}"], tokens.tabsBackgroundColor, tokens.tabsDividerColor, tokens.tabsDividerHeight, tokens.tabsDividerBorderRadius, classes.tabsHasLeftArrow, classes.tabsHasRightArrow);
3
+ export var base = /*#__PURE__*/css(["background-color:var(", ");&::after{content:'';position:absolute;bottom:0.125rem;left:0.125rem;right:0.125rem;background:var(", ");height:var(", ");border-radius:var(", ");}&.", "{&::after{left:1.5rem;}}&.", "{&::after{right:1.5rem;}}&.", "{&::after{height:0;}}"], tokens.tabsBackgroundColor, tokens.tabsDividerColor, tokens.tabsDividerHeight, tokens.tabsDividerBorderRadius, classes.tabsHasLeftArrow, classes.tabsHasRightArrow, classes.tabsNoDivider);
@@ -0,0 +1,4 @@
1
+ var headerSizes = ['h1', 'h2', 'h3', 'h4', 'h5'];
2
+ export var isHeaderSize = function isHeaderSize(size) {
3
+ return headerSizes.includes(size);
4
+ };
@@ -12,6 +12,7 @@ import { Tabs } from './Tabs';
12
12
  import { TabItem } from './TabItem';
13
13
 
14
14
  const clips = ['none', 'scroll', 'showAll'];
15
+ const headerClips = ['none', 'scroll'];
15
16
  const sizes = ['xs', 's', 'm', 'l'] as const;
16
17
  const headerSizes = ['h5', 'h4', 'h3', 'h2', 'h1'] as const;
17
18
 
@@ -20,7 +21,6 @@ type HeaderSize = typeof headerSizes[number];
20
21
 
21
22
  type CustomStoryTabsProps = {
22
23
  itemQuantity: number;
23
- hasDivider: boolean;
24
24
  contentLeft: string;
25
25
  contentRight: string;
26
26
  stretch: boolean;
@@ -30,12 +30,12 @@ type CustomStoryTabsProps = {
30
30
  const contentLeftOptions = ['none', 'icon'];
31
31
  const contentRightOptions = ['none', 'counter', 'icon'];
32
32
 
33
- const getContentLeft = (contentLeftOption: string, size: Size) => {
33
+ const getContentLeft = (contentLeftOption: string, size: string) => {
34
34
  const iconSize = size === 'xs' ? 'xs' : 's';
35
35
  return contentLeftOption === 'icon' ? <IconMic size={iconSize} color="inherit" /> : undefined;
36
36
  };
37
37
 
38
- const getContentRight = (contentRightOption: string, size: Size) => {
38
+ const getContentRight = (contentRightOption: string, size: string) => {
39
39
  const iconSize = size === 'xs' ? 'xs' : 's';
40
40
  const counterSize = size === 'xs' ? 'xxs' : 'xs';
41
41
 
@@ -96,7 +96,7 @@ const StoryHorizontalDefault = (props: HorizontalStoryTabsProps) => {
96
96
  const [index, setIndex] = useState(0);
97
97
 
98
98
  return (
99
- <Tabs view={hasDivider ? 'divider' : 'clear'} stretch={stretch} disabled={disabled} size={size}>
99
+ <Tabs view="divider" hasDivider={hasDivider} stretch={stretch} disabled={disabled} size={size}>
100
100
  {items.map((_, i) => {
101
101
  if (helperText !== '') {
102
102
  return (
@@ -152,7 +152,7 @@ const StoryHorizontalScroll = (props: HorizontalStoryTabsProps) => {
152
152
  const [index, setIndex] = useState(0);
153
153
 
154
154
  return (
155
- <Tabs clip={clip} view={hasDivider ? 'divider' : 'clear'} disabled={disabled} size={size} style={{ width }}>
155
+ <Tabs clip={clip} view="divider" hasDivider={hasDivider} disabled={disabled} size={size} style={{ width }}>
156
156
  {items.map((_, i) => {
157
157
  if (helperText !== '') {
158
158
  return (
@@ -220,7 +220,7 @@ const StoryHorizontalShowAll = (props: HorizontalStoryTabsProps) => {
220
220
  });
221
221
 
222
222
  return (
223
- <Tabs clip={clip} view={hasDivider ? 'divider' : 'clear'} disabled={disabled} size={size}>
223
+ <Tabs clip={clip} view="divider" hasDivider={hasDivider} disabled={disabled} size={size}>
224
224
  {visibleItems.map((_, i) => {
225
225
  if (helperText !== '') {
226
226
  return (
@@ -603,31 +603,47 @@ export const VerticalTabs: StoryObj<VerticalStoryTabsProps> = {
603
603
  },
604
604
  };
605
605
 
606
- const StoryHeaderTabs = (props: StoryTabsProps) => {
607
- const {
608
- disabled,
609
- itemQuantity,
610
- size,
611
- contentLeft: contentLeftOption,
612
- contentRight: contentRightOption,
613
- hasDivider,
614
- stretch,
615
- } = props;
606
+ const StoryHeaderDefault = (props: HorizontalStoryTabsProps) => {
607
+ const { disabled, itemQuantity, size, helperText } = props;
608
+ const items = Array(itemQuantity).fill(0);
609
+ const [index, setIndex] = useState(0);
610
+
611
+ return (
612
+ <Tabs view="clear" disabled={disabled} size={size as HeaderSize}>
613
+ {items.map((_, i) => (
614
+ <TabItem
615
+ key={`item:${i}`}
616
+ view="clear"
617
+ selected={i === index}
618
+ onClick={() => !disabled && setIndex(i)}
619
+ tabIndex={!disabled ? 0 : -1}
620
+ disabled={disabled}
621
+ value={helperText}
622
+ size={size as HeaderSize}
623
+ >
624
+ {`Label${i + 1}`}
625
+ </TabItem>
626
+ ))}
627
+ </Tabs>
628
+ );
629
+ };
630
+
631
+ const StoryHeaderScroll = (props: HorizontalStoryTabsProps) => {
632
+ const { disabled, itemQuantity, size, helperText, width } = props;
616
633
  const items = Array(itemQuantity).fill(0);
617
634
  const [index, setIndex] = useState(0);
618
635
 
619
636
  return (
620
- <Tabs view={hasDivider ? 'divider' : 'clear'} disabled={disabled} size={size} stretch={stretch}>
637
+ <Tabs view="clear" disabled={disabled} size={size as HeaderSize} style={{ width }}>
621
638
  {items.map((_, i) => (
622
639
  <TabItem
623
640
  key={`item:${i}`}
624
- view="divider"
641
+ view="clear"
625
642
  selected={i === index}
626
643
  onClick={() => !disabled && setIndex(i)}
627
644
  tabIndex={!disabled ? 0 : -1}
628
645
  disabled={disabled}
629
- contentLeft={getContentLeft(contentLeftOption, size as Size)}
630
- contentRight={getContentRight(contentRightOption, size as Size)}
646
+ value={helperText}
631
647
  size={size as HeaderSize}
632
648
  >
633
649
  {`Label${i + 1}`}
@@ -637,37 +653,60 @@ const StoryHeaderTabs = (props: StoryTabsProps) => {
637
653
  );
638
654
  };
639
655
 
640
- export const HeaderTabs: StoryObj<StoryTabsProps> = {
656
+ export const HeaderTabs: StoryObj<HorizontalStoryTabsProps> = {
641
657
  args: {
642
658
  size: 'h5',
643
659
  disabled: false,
644
- hasDivider: true,
645
- itemQuantity: 4,
660
+ helperText: '',
661
+ itemQuantity: 6,
662
+ width: '12rem',
646
663
  },
647
664
  argTypes: {
648
- size: {
649
- options: headerSizes,
665
+ clip: {
666
+ options: headerClips,
650
667
  control: {
651
668
  type: 'select',
652
669
  },
653
670
  },
654
- contentLeft: {
655
- options: contentLeftOptions,
671
+ width: {
656
672
  control: {
657
- type: 'select',
673
+ type: 'text',
674
+ },
675
+ if: { arg: 'clip', eq: 'scroll' },
676
+ },
677
+ stretch: {
678
+ table: {
679
+ disable: true,
680
+ },
681
+ },
682
+ contentLeft: {
683
+ table: {
684
+ disable: true,
658
685
  },
659
686
  },
660
687
  contentRight: {
661
- options: contentRightOptions,
662
- control: {
663
- type: 'select',
688
+ table: {
689
+ disable: true,
664
690
  },
665
691
  },
666
- clip: {
692
+ hasDivider: {
667
693
  table: {
668
694
  disable: true,
669
695
  },
670
696
  },
697
+ size: {
698
+ options: headerSizes,
699
+ control: {
700
+ type: 'select',
701
+ },
702
+ },
703
+ },
704
+ render: (args) => {
705
+ switch (args.clip) {
706
+ case 'scroll':
707
+ return <StoryHeaderScroll {...args} />;
708
+ default:
709
+ return <StoryHeaderDefault {...args} />;
710
+ }
671
711
  },
672
- render: (args) => <StoryHeaderTabs {...args} />,
673
712
  };