@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.
- package/cjs/components/Tabs/createTabsController.js.map +1 -1
- package/cjs/components/Tabs/ui/horizontal/HorizontalTabItem/HorizontalTabItem.js +8 -3
- package/cjs/components/Tabs/ui/horizontal/HorizontalTabItem/HorizontalTabItem.js.map +1 -1
- package/cjs/components/Tabs/ui/horizontal/HorizontalTabs/HorizontalTabs.css +1 -1
- package/cjs/components/Tabs/ui/horizontal/HorizontalTabs/HorizontalTabs.js +15 -5
- package/cjs/components/Tabs/ui/horizontal/HorizontalTabs/HorizontalTabs.js.map +1 -1
- package/cjs/components/Tabs/ui/horizontal/HorizontalTabs/variations/_view/base.js +1 -1
- package/cjs/components/Tabs/ui/horizontal/HorizontalTabs/variations/_view/base.js.map +1 -1
- package/cjs/components/Tabs/ui/horizontal/HorizontalTabs/variations/_view/{base_9miwn.css → base_4ob3q5.css} +1 -1
- package/cjs/components/Tabs/ui/horizontal/const.js +11 -0
- package/cjs/components/Tabs/ui/horizontal/const.js.map +1 -0
- package/cjs/index.css +1 -1
- package/emotion/cjs/components/Tabs/ui/horizontal/HorizontalTabItem/HorizontalTabItem.js +13 -3
- package/emotion/cjs/components/Tabs/ui/horizontal/HorizontalTabs/HorizontalTabs.js +20 -5
- package/emotion/cjs/components/Tabs/ui/horizontal/HorizontalTabs/variations/_view/base.js +1 -1
- package/emotion/cjs/components/Tabs/ui/horizontal/const.js +10 -0
- package/emotion/cjs/examples/plasma_b2c/components/Tabs/Tabs.stories.tsx +72 -33
- package/emotion/cjs/examples/plasma_web/components/Tabs/Tabs.stories.tsx +72 -33
- package/emotion/es/components/Tabs/ui/horizontal/HorizontalTabItem/HorizontalTabItem.js +14 -3
- package/emotion/es/components/Tabs/ui/horizontal/HorizontalTabs/HorizontalTabs.js +21 -5
- package/emotion/es/components/Tabs/ui/horizontal/HorizontalTabs/variations/_view/base.js +1 -1
- package/emotion/es/components/Tabs/ui/horizontal/const.js +4 -0
- package/emotion/es/examples/plasma_b2c/components/Tabs/Tabs.stories.tsx +72 -33
- package/emotion/es/examples/plasma_web/components/Tabs/Tabs.stories.tsx +72 -33
- package/es/components/Tabs/createTabsController.js.map +1 -1
- package/es/components/Tabs/ui/horizontal/HorizontalTabItem/HorizontalTabItem.js +9 -4
- package/es/components/Tabs/ui/horizontal/HorizontalTabItem/HorizontalTabItem.js.map +1 -1
- package/es/components/Tabs/ui/horizontal/HorizontalTabs/HorizontalTabs.css +1 -1
- package/es/components/Tabs/ui/horizontal/HorizontalTabs/HorizontalTabs.js +16 -6
- package/es/components/Tabs/ui/horizontal/HorizontalTabs/HorizontalTabs.js.map +1 -1
- package/es/components/Tabs/ui/horizontal/HorizontalTabs/variations/_view/base.js +1 -1
- package/es/components/Tabs/ui/horizontal/HorizontalTabs/variations/_view/base.js.map +1 -1
- package/es/components/Tabs/ui/horizontal/HorizontalTabs/variations/_view/{base_9miwn.css → base_4ob3q5.css} +1 -1
- package/es/components/Tabs/ui/horizontal/const.js +7 -0
- package/es/components/Tabs/ui/horizontal/const.js.map +1 -0
- package/es/index.css +1 -1
- package/package.json +2 -2
- package/styled-components/cjs/components/Tabs/ui/horizontal/HorizontalTabItem/HorizontalTabItem.js +13 -3
- package/styled-components/cjs/components/Tabs/ui/horizontal/HorizontalTabs/HorizontalTabs.js +20 -5
- package/styled-components/cjs/components/Tabs/ui/horizontal/HorizontalTabs/variations/_view/base.js +1 -1
- package/styled-components/cjs/components/Tabs/ui/horizontal/const.js +10 -0
- package/styled-components/cjs/examples/plasma_b2c/components/Tabs/Tabs.stories.tsx +72 -33
- package/styled-components/cjs/examples/plasma_web/components/Tabs/Tabs.stories.tsx +72 -33
- package/styled-components/es/components/Tabs/ui/horizontal/HorizontalTabItem/HorizontalTabItem.js +14 -3
- package/styled-components/es/components/Tabs/ui/horizontal/HorizontalTabs/HorizontalTabs.js +21 -5
- package/styled-components/es/components/Tabs/ui/horizontal/HorizontalTabs/variations/_view/base.js +1 -1
- package/styled-components/es/components/Tabs/ui/horizontal/const.js +4 -0
- package/styled-components/es/examples/plasma_b2c/components/Tabs/Tabs.stories.tsx +72 -33
- package/styled-components/es/examples/plasma_web/components/Tabs/Tabs.stories.tsx +72 -33
- package/types/components/Tabs/TabItem.types.d.ts +50 -8
- package/types/components/Tabs/TabItem.types.d.ts.map +1 -1
- package/types/components/Tabs/Tabs.types.d.ts +44 -2
- package/types/components/Tabs/Tabs.types.d.ts.map +1 -1
- package/types/components/Tabs/createTabsController.d.ts +2 -2
- package/types/components/Tabs/createTabsController.d.ts.map +1 -1
- package/types/components/Tabs/ui/horizontal/HorizontalTabItem/HorizontalTabItem.d.ts.map +1 -1
- package/types/components/Tabs/ui/horizontal/HorizontalTabs/HorizontalTabs.d.ts +2 -2
- package/types/components/Tabs/ui/horizontal/HorizontalTabs/HorizontalTabs.d.ts.map +1 -1
- package/types/components/Tabs/ui/horizontal/HorizontalTabs/variations/_view/base.d.ts.map +1 -1
- package/types/components/Tabs/ui/horizontal/const.d.ts +2 -0
- package/types/components/Tabs/ui/horizontal/const.d.ts.map +1 -0
- package/types/examples/plasma_b2c/components/Tabs/TabItem.d.ts +17 -2
- package/types/examples/plasma_b2c/components/Tabs/TabItem.d.ts.map +1 -1
- package/types/examples/plasma_b2c/components/Tabs/Tabs.d.ts +1 -1
- package/types/examples/plasma_b2c/components/Tabs/Tabs.d.ts.map +1 -1
- package/types/examples/plasma_web/components/Tabs/TabItem.d.ts +17 -2
- package/types/examples/plasma_web/components/Tabs/TabItem.d.ts.map +1 -1
- package/types/examples/plasma_web/components/Tabs/Tabs.d.ts +1 -1
- 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:
|
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:
|
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
|
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
|
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
|
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
|
607
|
-
const {
|
608
|
-
|
609
|
-
|
610
|
-
|
611
|
-
|
612
|
-
|
613
|
-
|
614
|
-
|
615
|
-
|
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=
|
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="
|
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
|
-
|
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<
|
656
|
+
export const HeaderTabs: StoryObj<HorizontalStoryTabsProps> = {
|
641
657
|
args: {
|
642
658
|
size: 'h5',
|
643
659
|
disabled: false,
|
644
|
-
|
645
|
-
itemQuantity:
|
660
|
+
helperText: '',
|
661
|
+
itemQuantity: 6,
|
662
|
+
width: '12rem',
|
646
663
|
},
|
647
664
|
argTypes: {
|
648
|
-
|
649
|
-
options:
|
665
|
+
clip: {
|
666
|
+
options: headerClips,
|
650
667
|
control: {
|
651
668
|
type: 'select',
|
652
669
|
},
|
653
670
|
},
|
654
|
-
|
655
|
-
options: contentLeftOptions,
|
671
|
+
width: {
|
656
672
|
control: {
|
657
|
-
type: '
|
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
|
-
|
662
|
-
|
663
|
-
type: 'select',
|
688
|
+
table: {
|
689
|
+
disable: true,
|
664
690
|
},
|
665
691
|
},
|
666
|
-
|
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
|
};
|
package/styled-components/es/components/Tabs/ui/horizontal/HorizontalTabItem/HorizontalTabItem.js
CHANGED
@@ -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
|
-
},
|
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
|
-
|
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
|
-
},
|
216
|
+
}, restRootProps), !firstItemVisible && PreviousButton, /*#__PURE__*/React.createElement(StyledContentWrapper, {
|
201
217
|
className: cx(clipScrollClass, clipShowAllClass),
|
202
218
|
ref: scrollRef,
|
203
219
|
onScroll: handleScroll
|
package/styled-components/es/components/Tabs/ui/horizontal/HorizontalTabs/variations/_view/base.js
CHANGED
@@ -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);
|
@@ -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:
|
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:
|
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
|
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
|
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
|
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
|
607
|
-
const {
|
608
|
-
|
609
|
-
|
610
|
-
|
611
|
-
|
612
|
-
|
613
|
-
|
614
|
-
|
615
|
-
|
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=
|
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="
|
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
|
-
|
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<
|
656
|
+
export const HeaderTabs: StoryObj<HorizontalStoryTabsProps> = {
|
641
657
|
args: {
|
642
658
|
size: 'h5',
|
643
659
|
disabled: false,
|
644
|
-
|
645
|
-
itemQuantity:
|
660
|
+
helperText: '',
|
661
|
+
itemQuantity: 6,
|
662
|
+
width: '12rem',
|
646
663
|
},
|
647
664
|
argTypes: {
|
648
|
-
|
649
|
-
options:
|
665
|
+
clip: {
|
666
|
+
options: headerClips,
|
650
667
|
control: {
|
651
668
|
type: 'select',
|
652
669
|
},
|
653
670
|
},
|
654
|
-
|
655
|
-
options: contentLeftOptions,
|
671
|
+
width: {
|
656
672
|
control: {
|
657
|
-
type: '
|
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
|
-
|
662
|
-
|
663
|
-
type: 'select',
|
688
|
+
table: {
|
689
|
+
disable: true,
|
664
690
|
},
|
665
691
|
},
|
666
|
-
|
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
|
};
|