@alfalab/core-components-tabs 7.1.1 → 7.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/components/primary-tablist/Component.d.ts +2 -4
- package/components/primary-tablist/Component.desktop.js +12 -4
- package/components/primary-tablist/Component.js +42 -21
- package/components/primary-tablist/Component.mobile.d.ts +1 -1
- package/components/primary-tablist/Component.mobile.js +13 -5
- package/components/primary-tablist/Component.responsive.d.ts +1 -1
- package/components/primary-tablist/Component.responsive.js +14 -7
- package/components/primary-tablist/index.css +53 -22
- package/components/primary-tablist/mobile.css +99 -69
- package/components/scrollable-container/Component.d.ts +1 -1
- package/components/scrollable-container/Component.js +4 -2
- package/components/scrollable-container/index.css +5 -5
- package/components/secondary-tablist/Component.d.ts +2 -6
- package/components/secondary-tablist/Component.desktop.d.ts +1 -1
- package/components/secondary-tablist/Component.desktop.js +3 -3
- package/components/secondary-tablist/Component.js +3 -3
- package/components/secondary-tablist/Component.mobile.d.ts +1 -1
- package/components/secondary-tablist/Component.mobile.js +4 -4
- package/components/secondary-tablist/Component.responsive.js +4 -4
- package/components/secondary-tablist/index.css +11 -11
- package/components/secondary-tablist/mobile.css +65 -57
- package/components/tab/Component.js +1 -1
- package/components/tab/index.css +3 -3
- package/components/tabs/Component.d.ts +1 -1
- package/components/tabs/Component.desktop.d.ts +1 -1
- package/components/tabs/Component.desktop.js +13 -5
- package/components/tabs/Component.js +2 -2
- package/components/tabs/Component.mobile.d.ts +2 -2
- package/components/tabs/Component.mobile.js +13 -5
- package/components/tabs/Component.responsive.d.ts +1 -1
- package/components/tabs/Component.responsive.js +13 -6
- package/components/title/Component.d.ts +8 -0
- package/components/title/Component.js +27 -0
- package/components/title/index.d.ts +1 -0
- package/components/title/index.js +12 -0
- package/cssm/components/primary-tablist/Component.d.ts +2 -4
- package/cssm/components/primary-tablist/Component.desktop.js +11 -3
- package/cssm/components/primary-tablist/Component.js +42 -21
- package/cssm/components/primary-tablist/Component.mobile.d.ts +1 -1
- package/cssm/components/primary-tablist/Component.mobile.js +11 -3
- package/cssm/components/primary-tablist/Component.responsive.d.ts +1 -1
- package/cssm/components/primary-tablist/Component.responsive.js +13 -6
- package/cssm/components/primary-tablist/index.module.css +33 -2
- package/cssm/components/scrollable-container/Component.d.ts +1 -1
- package/cssm/components/scrollable-container/Component.js +3 -1
- package/cssm/components/secondary-tablist/Component.d.ts +2 -6
- package/cssm/components/secondary-tablist/Component.desktop.d.ts +1 -1
- package/cssm/components/secondary-tablist/Component.desktop.js +2 -2
- package/cssm/components/secondary-tablist/Component.js +3 -3
- package/cssm/components/secondary-tablist/Component.mobile.d.ts +1 -1
- package/cssm/components/secondary-tablist/Component.mobile.js +2 -2
- package/cssm/components/secondary-tablist/Component.responsive.js +3 -3
- package/cssm/components/tabs/Component.d.ts +1 -1
- package/cssm/components/tabs/Component.desktop.d.ts +1 -1
- package/cssm/components/tabs/Component.desktop.js +11 -3
- package/cssm/components/tabs/Component.js +2 -2
- package/cssm/components/tabs/Component.mobile.d.ts +2 -2
- package/cssm/components/tabs/Component.mobile.js +11 -3
- package/cssm/components/tabs/Component.responsive.d.ts +1 -1
- package/cssm/components/tabs/Component.responsive.js +11 -4
- package/cssm/components/title/Component.d.ts +8 -0
- package/cssm/components/title/Component.js +27 -0
- package/cssm/components/title/index.d.ts +1 -0
- package/cssm/components/title/index.js +12 -0
- package/cssm/desktop.d.ts +2 -1
- package/cssm/desktop.js +13 -4
- package/cssm/hooks/use-collapsible-elements.d.ts +8 -0
- package/cssm/hooks/use-collapsible-elements.js +56 -0
- package/cssm/hooks/use-tablist-titles.d.ts +28 -0
- package/cssm/hooks/use-tablist-titles.js +45 -0
- package/{esm/useTabs.d.ts → cssm/hooks/use-tabs.d.ts} +1 -1
- package/cssm/{useTabs.js → hooks/use-tabs.js} +0 -0
- package/cssm/index.d.ts +1 -1
- package/cssm/index.js +12 -5
- package/cssm/mobile.d.ts +1 -1
- package/cssm/mobile.js +12 -4
- package/cssm/responsive.d.ts +2 -1
- package/cssm/responsive.js +13 -5
- package/cssm/synthetic-events.d.ts +6 -0
- package/cssm/synthetic-events.js +47 -0
- package/cssm/{tslib.es6-ce870b46.d.ts → tslib.es6-0857346e.d.ts} +8 -4
- package/cssm/{tslib.es6-ce870b46.js → tslib.es6-0857346e.js} +13 -1
- package/cssm/typings.d.ts +13 -2
- package/desktop.d.ts +2 -1
- package/desktop.js +15 -6
- package/esm/components/primary-tablist/Component.d.ts +2 -4
- package/esm/components/primary-tablist/Component.desktop.js +12 -4
- package/esm/components/primary-tablist/Component.js +43 -22
- package/esm/components/primary-tablist/Component.mobile.d.ts +1 -1
- package/esm/components/primary-tablist/Component.mobile.js +13 -5
- package/esm/components/primary-tablist/Component.responsive.d.ts +1 -1
- package/esm/components/primary-tablist/Component.responsive.js +14 -7
- package/esm/components/primary-tablist/index.css +53 -22
- package/esm/components/primary-tablist/mobile.css +99 -69
- package/esm/components/scrollable-container/Component.d.ts +1 -1
- package/esm/components/scrollable-container/Component.js +4 -2
- package/esm/components/scrollable-container/index.css +5 -5
- package/esm/components/secondary-tablist/Component.d.ts +2 -6
- package/esm/components/secondary-tablist/Component.desktop.d.ts +1 -1
- package/esm/components/secondary-tablist/Component.desktop.js +3 -3
- package/esm/components/secondary-tablist/Component.js +2 -2
- package/esm/components/secondary-tablist/Component.mobile.d.ts +1 -1
- package/esm/components/secondary-tablist/Component.mobile.js +4 -4
- package/esm/components/secondary-tablist/Component.responsive.js +4 -4
- package/esm/components/secondary-tablist/index.css +11 -11
- package/esm/components/secondary-tablist/mobile.css +65 -57
- package/esm/components/tab/Component.js +1 -1
- package/esm/components/tab/index.css +3 -3
- package/esm/components/tabs/Component.d.ts +1 -1
- package/esm/components/tabs/Component.desktop.d.ts +1 -1
- package/esm/components/tabs/Component.desktop.js +13 -5
- package/esm/components/tabs/Component.js +2 -2
- package/esm/components/tabs/Component.mobile.d.ts +2 -2
- package/esm/components/tabs/Component.mobile.js +13 -5
- package/esm/components/tabs/Component.responsive.d.ts +1 -1
- package/esm/components/tabs/Component.responsive.js +13 -6
- package/esm/components/title/Component.d.ts +8 -0
- package/esm/components/title/Component.js +18 -0
- package/esm/components/title/index.d.ts +1 -0
- package/esm/components/title/index.js +4 -0
- package/esm/desktop.d.ts +2 -1
- package/esm/desktop.js +13 -5
- package/esm/hooks/use-collapsible-elements.d.ts +8 -0
- package/esm/hooks/use-collapsible-elements.js +52 -0
- package/esm/hooks/use-tablist-titles.d.ts +28 -0
- package/esm/hooks/use-tablist-titles.js +41 -0
- package/{modern/useTabs.d.ts → esm/hooks/use-tabs.d.ts} +1 -1
- package/esm/{useTabs.js → hooks/use-tabs.js} +0 -0
- package/esm/index.d.ts +1 -1
- package/esm/index.js +13 -6
- package/esm/index.module-01d292c0.js +4 -0
- package/esm/index.module-16a12061.js +4 -0
- package/esm/mobile.d.ts +1 -1
- package/esm/mobile.js +13 -5
- package/esm/responsive.d.ts +2 -1
- package/esm/responsive.js +13 -6
- package/esm/synthetic-events.d.ts +6 -0
- package/esm/synthetic-events.js +41 -0
- package/{tslib.es6-fcb75541.d.ts → esm/tslib.es6-e74e5c93.d.ts} +8 -4
- package/esm/{tslib.es6-444ae64e.js → tslib.es6-e74e5c93.js} +13 -2
- package/esm/typings.d.ts +13 -2
- package/hooks/use-collapsible-elements.d.ts +8 -0
- package/hooks/use-collapsible-elements.js +56 -0
- package/hooks/use-tablist-titles.d.ts +28 -0
- package/hooks/use-tablist-titles.js +45 -0
- package/{cssm/useTabs.d.ts → hooks/use-tabs.d.ts} +1 -1
- package/{useTabs.js → hooks/use-tabs.js} +0 -0
- package/index.d.ts +1 -1
- package/index.js +14 -7
- package/index.module-370f6bd7.js +6 -0
- package/index.module-872dcef9.js +6 -0
- package/mobile.d.ts +1 -1
- package/mobile.js +14 -6
- package/modern/components/primary-tablist/Component.d.ts +2 -4
- package/modern/components/primary-tablist/Component.desktop.js +12 -4
- package/modern/components/primary-tablist/Component.js +38 -17
- package/modern/components/primary-tablist/Component.mobile.d.ts +1 -1
- package/modern/components/primary-tablist/Component.mobile.js +13 -5
- package/modern/components/primary-tablist/Component.responsive.d.ts +1 -1
- package/modern/components/primary-tablist/Component.responsive.js +13 -6
- package/modern/components/primary-tablist/index.css +53 -22
- package/modern/components/primary-tablist/mobile.css +99 -69
- package/modern/components/scrollable-container/Component.d.ts +1 -1
- package/modern/components/scrollable-container/Component.js +4 -2
- package/modern/components/scrollable-container/index.css +5 -5
- package/modern/components/secondary-tablist/Component.d.ts +2 -6
- package/modern/components/secondary-tablist/Component.desktop.d.ts +1 -1
- package/modern/components/secondary-tablist/Component.desktop.js +3 -3
- package/modern/components/secondary-tablist/Component.js +2 -2
- package/modern/components/secondary-tablist/Component.mobile.d.ts +1 -1
- package/modern/components/secondary-tablist/Component.mobile.js +4 -4
- package/modern/components/secondary-tablist/Component.responsive.js +4 -4
- package/modern/components/secondary-tablist/index.css +11 -11
- package/modern/components/secondary-tablist/mobile.css +65 -57
- package/modern/components/tab/Component.js +1 -1
- package/modern/components/tab/index.css +3 -3
- package/modern/components/tabs/Component.d.ts +1 -1
- package/modern/components/tabs/Component.desktop.d.ts +1 -1
- package/modern/components/tabs/Component.desktop.js +13 -5
- package/modern/components/tabs/Component.js +4 -4
- package/modern/components/tabs/Component.mobile.d.ts +2 -2
- package/modern/components/tabs/Component.mobile.js +13 -5
- package/modern/components/tabs/Component.responsive.d.ts +1 -1
- package/modern/components/tabs/Component.responsive.js +13 -6
- package/modern/components/title/Component.d.ts +8 -0
- package/modern/components/title/Component.js +13 -0
- package/modern/components/title/index.d.ts +1 -0
- package/modern/components/title/index.js +3 -0
- package/modern/desktop.d.ts +2 -1
- package/modern/desktop.js +12 -4
- package/modern/hooks/use-collapsible-elements.d.ts +8 -0
- package/modern/hooks/use-collapsible-elements.js +50 -0
- package/modern/hooks/use-tablist-titles.d.ts +28 -0
- package/modern/hooks/use-tablist-titles.js +40 -0
- package/{useTabs.d.ts → modern/hooks/use-tabs.d.ts} +1 -1
- package/modern/{useTabs.js → hooks/use-tabs.js} +3 -3
- package/modern/index.d.ts +1 -1
- package/modern/index.js +12 -5
- package/modern/index.module-01d292c0.js +4 -0
- package/modern/index.module-16a12061.js +4 -0
- package/modern/mobile.d.ts +1 -1
- package/modern/mobile.js +12 -4
- package/modern/responsive.d.ts +2 -1
- package/modern/responsive.js +12 -5
- package/modern/synthetic-events.d.ts +6 -0
- package/modern/synthetic-events.js +61 -0
- package/modern/typings.d.ts +13 -2
- package/package.json +7 -4
- package/responsive.d.ts +2 -1
- package/responsive.js +15 -7
- package/send-stats.js +1 -1
- package/synthetic-events.d.ts +6 -0
- package/synthetic-events.js +47 -0
- package/{esm/tslib.es6-444ae64e.d.ts → tslib.es6-cbc5fb87.d.ts} +8 -4
- package/{tslib.es6-fcb75541.js → tslib.es6-cbc5fb87.js} +13 -1
- package/typings.d.ts +13 -2
- package/esm/index.module-17321b1b.js +0 -4
- package/esm/index.module-198d371d.js +0 -4
- package/index.module-3530e300.js +0 -6
- package/index.module-c424649c.js +0 -6
- package/modern/index.module-17321b1b.js +0 -4
- package/modern/index.module-198d371d.js +0 -4
package/mobile.js
CHANGED
|
@@ -2,18 +2,26 @@
|
|
|
2
2
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
|
-
require('./tslib.es6-
|
|
5
|
+
require('./tslib.es6-cbc5fb87.js');
|
|
6
6
|
require('react');
|
|
7
|
-
require('@alfalab/core-components-keyboard-focusable');
|
|
8
7
|
require('classnames');
|
|
8
|
+
require('@alfalab/core-components/picker-button/desktop');
|
|
9
|
+
require('@alfalab/core-components-badge');
|
|
10
|
+
require('@alfalab/core-components-keyboard-focusable');
|
|
11
|
+
require('@alfalab/hooks');
|
|
12
|
+
require('@juggle/resize-observer');
|
|
13
|
+
require('./hooks/use-collapsible-elements.js');
|
|
14
|
+
var hooks_useTabs = require('./hooks/use-tabs.js');
|
|
15
|
+
require('./hooks/use-tablist-titles.js');
|
|
16
|
+
require('./synthetic-events.js');
|
|
9
17
|
require('compute-scroll-into-view');
|
|
10
18
|
var components_scrollableContainer_Component = require('./components/scrollable-container/Component.js');
|
|
11
|
-
|
|
19
|
+
require('./components/title/Component.js');
|
|
12
20
|
require('./components/primary-tablist/Component.js');
|
|
13
|
-
require('./index.module-
|
|
21
|
+
require('./index.module-370f6bd7.js');
|
|
14
22
|
require('@alfalab/core-components-tag');
|
|
15
23
|
require('./components/secondary-tablist/Component.js');
|
|
16
|
-
require('./index.module-
|
|
24
|
+
require('./index.module-872dcef9.js');
|
|
17
25
|
var components_tab_Component = require('./components/tab/Component.js');
|
|
18
26
|
require('./components/tabs/Component.js');
|
|
19
27
|
var components_primaryTablist_Component_mobile = require('./components/primary-tablist/Component.mobile.js');
|
|
@@ -22,8 +30,8 @@ var components_tabs_Component_mobile = require('./components/tabs/Component.mobi
|
|
|
22
30
|
|
|
23
31
|
|
|
24
32
|
|
|
33
|
+
exports.useTabs = hooks_useTabs.useTabs;
|
|
25
34
|
exports.ScrollableContainer = components_scrollableContainer_Component.ScrollableContainer;
|
|
26
|
-
exports.useTabs = useTabs.useTabs;
|
|
27
35
|
exports.Tab = components_tab_Component.Tab;
|
|
28
36
|
exports.PrimaryTabListMobile = components_primaryTablist_Component_mobile.PrimaryTabListMobile;
|
|
29
37
|
exports.SecondaryTabListMobile = components_secondaryTablist_Component_mobile.SecondaryTabListMobile;
|
|
@@ -1,6 +1,4 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
|
-
import { Styles } from "../../typings";
|
|
3
|
-
declare const PrimaryTabList: ({ size, styles, className, containerClassName, titles, selectedId, scrollable, fullWidthScroll, onChange, dataTestId, }:
|
|
4
|
-
titles?: import("../../typings").TabListTitle[] | undefined;
|
|
5
|
-
} & Styles) => JSX.Element;
|
|
2
|
+
import { Styles, TabListProps } from "../../typings";
|
|
3
|
+
declare const PrimaryTabList: ({ size, styles, className, containerClassName, titles, selectedId, scrollable, collapsible, fullWidthScroll, onChange, dataTestId, breakpoint, }: TabListProps & Styles) => JSX.Element;
|
|
6
4
|
export { PrimaryTabList };
|
|
@@ -1,12 +1,20 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import '@alfalab/core-components-keyboard-focusable/modern';
|
|
3
2
|
import 'classnames';
|
|
3
|
+
import '@alfalab/core-components/picker-button/desktop';
|
|
4
|
+
import '@alfalab/core-components-badge/modern';
|
|
5
|
+
import '@alfalab/core-components-keyboard-focusable/modern';
|
|
6
|
+
import '@alfalab/hooks';
|
|
7
|
+
import '@juggle/resize-observer';
|
|
8
|
+
import '../../hooks/use-collapsible-elements.js';
|
|
9
|
+
import '../../hooks/use-tabs.js';
|
|
10
|
+
import '../../hooks/use-tablist-titles.js';
|
|
11
|
+
import '../../synthetic-events.js';
|
|
4
12
|
import 'compute-scroll-into-view';
|
|
5
13
|
import '../scrollable-container/Component.js';
|
|
6
|
-
import '
|
|
14
|
+
import '../title/Component.js';
|
|
7
15
|
import { PrimaryTabList } from './Component.js';
|
|
8
|
-
import { c as commonStyles } from '../../index.module-
|
|
16
|
+
import { c as commonStyles } from '../../index.module-01d292c0.js';
|
|
9
17
|
|
|
10
|
-
const PrimaryTabListDesktop = ({ size = 'm', ...restProps }) => (React.createElement(PrimaryTabList,
|
|
18
|
+
const PrimaryTabListDesktop = ({ size = 'm', ...restProps }) => (React.createElement(PrimaryTabList, { ...restProps, size: size, styles: commonStyles }));
|
|
11
19
|
|
|
12
20
|
export { PrimaryTabListDesktop };
|
|
@@ -1,15 +1,25 @@
|
|
|
1
|
-
import React, { useRef, useEffect } from 'react';
|
|
2
|
-
import { KeyboardFocusable } from '@alfalab/core-components-keyboard-focusable/modern';
|
|
1
|
+
import React, { useRef, useEffect, useMemo } from 'react';
|
|
3
2
|
import cn from 'classnames';
|
|
3
|
+
import { PickerButtonDesktop } from '@alfalab/core-components/picker-button/desktop';
|
|
4
|
+
import { Badge } from '@alfalab/core-components-badge/modern';
|
|
5
|
+
import { KeyboardFocusable } from '@alfalab/core-components-keyboard-focusable/modern';
|
|
6
|
+
import '@alfalab/hooks';
|
|
7
|
+
import '@juggle/resize-observer';
|
|
8
|
+
import '../../hooks/use-collapsible-elements.js';
|
|
9
|
+
import '../../hooks/use-tabs.js';
|
|
10
|
+
import { useTablistTitles } from '../../hooks/use-tablist-titles.js';
|
|
11
|
+
import { createSyntheticMouseEvent } from '../../synthetic-events.js';
|
|
4
12
|
import 'compute-scroll-into-view';
|
|
5
13
|
import { ScrollableContainer } from '../scrollable-container/Component.js';
|
|
6
|
-
import {
|
|
14
|
+
import { Title } from '../title/Component.js';
|
|
7
15
|
|
|
8
|
-
const PrimaryTabList = ({ size, styles = {}, className, containerClassName, titles = [], selectedId = titles.length ? titles[0].id : undefined, scrollable = true, fullWidthScroll, onChange, dataTestId, }) => {
|
|
16
|
+
const PrimaryTabList = ({ size, styles = {}, className, containerClassName, titles = [], selectedId = titles.length ? titles[0].id : undefined, scrollable = true, collapsible, fullWidthScroll, onChange, dataTestId, breakpoint = 1024, }) => {
|
|
9
17
|
const lineRef = useRef(null);
|
|
10
|
-
const { selectedTab, focusedTab, getTabListItemProps } =
|
|
18
|
+
const { containerRef, addonRef, tablistTitles, selectedTab, focusedTab, getTabListItemProps } = useTablistTitles({
|
|
11
19
|
titles,
|
|
12
20
|
selectedId,
|
|
21
|
+
collapsible,
|
|
22
|
+
breakpoint,
|
|
13
23
|
onChange,
|
|
14
24
|
});
|
|
15
25
|
useEffect(() => {
|
|
@@ -17,22 +27,33 @@ const PrimaryTabList = ({ size, styles = {}, className, containerClassName, titl
|
|
|
17
27
|
lineRef.current.style.width = `${selectedTab.offsetWidth}px`;
|
|
18
28
|
lineRef.current.style.transform = `translateX(${selectedTab.offsetLeft}px)`;
|
|
19
29
|
}
|
|
20
|
-
}, [selectedTab]);
|
|
30
|
+
}, [selectedTab, tablistTitles]);
|
|
31
|
+
const collapsedOptions = useMemo(() => tablistTitles.reduce((options, title) => {
|
|
32
|
+
if (title.collapsed) {
|
|
33
|
+
options.push({
|
|
34
|
+
key: title.title,
|
|
35
|
+
value: title.id,
|
|
36
|
+
content: React.createElement(Title, { ...title, styles: styles, isOption: true }),
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
return options;
|
|
40
|
+
}, []), [tablistTitles, styles]);
|
|
41
|
+
const collapsedAddonsLength = tablistTitles.filter((title) => title.collapsed && title.rightAddons).length;
|
|
42
|
+
const handleOptionsChange = (payload) => {
|
|
43
|
+
if (payload.selected?.value && onChange) {
|
|
44
|
+
const nativeMouseEvent = new MouseEvent('change');
|
|
45
|
+
const syntheticMouseEvent = createSyntheticMouseEvent(nativeMouseEvent);
|
|
46
|
+
onChange(syntheticMouseEvent, { selectedId: payload.selected.value });
|
|
47
|
+
}
|
|
48
|
+
};
|
|
21
49
|
const renderContent = () => (React.createElement("div", { role: 'tablist', "data-test-id": dataTestId, className: cn(styles.component, className, size && styles[size], {
|
|
22
50
|
[styles.fullWidthScroll]: fullWidthScroll,
|
|
23
51
|
}) },
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
return (React.createElement(KeyboardFocusable, { key: item.id }, (ref, focused) => (React.createElement("button", Object.assign({}, getTabListItemProps(index, ref), { type: 'button', className: cn(styles.title, {
|
|
28
|
-
[styles.selected]: item.id === selectedId,
|
|
29
|
-
[styles.disabled]: item.disabled,
|
|
30
|
-
}, item.toggleClassName) }),
|
|
31
|
-
React.createElement("span", { className: focused ? styles.focused : undefined }, item.title),
|
|
32
|
-
item.rightAddons && (React.createElement("span", { className: styles.rightAddons }, item.rightAddons))))));
|
|
33
|
-
}),
|
|
52
|
+
tablistTitles.map((title, index) => (React.createElement(KeyboardFocusable, { key: title.id }, (ref, focused) => (React.createElement(Title, { ...getTabListItemProps(index, ref), ...title, focused: focused, styles: styles }))))),
|
|
53
|
+
collapsedOptions.length ? (React.createElement("span", { ref: addonRef, className: styles.pickerWrapper },
|
|
54
|
+
React.createElement(PickerButtonDesktop, { fieldClassName: styles.title, optionClassName: cn(styles.pickerOption, size && styles[size]), options: collapsedOptions, onChange: handleOptionsChange, rightAddons: collapsedAddonsLength ? (React.createElement(Badge, { view: 'count', content: collapsedAddonsLength })) : null, size: 'l', view: 'ghost', label: '\u0415\u0449\u0451', popoverPosition: 'bottom-end' }))) : null,
|
|
34
55
|
React.createElement("div", { className: styles.line, ref: lineRef })));
|
|
35
|
-
return scrollable ? (React.createElement(ScrollableContainer, { activeChild: focusedTab || selectedTab, containerClassName: containerClassName, fullWidthScroll: fullWidthScroll }, renderContent())) : (React.createElement("div", { className: cn(styles.container, containerClassName) }, renderContent()));
|
|
56
|
+
return scrollable && !collapsible ? (React.createElement(ScrollableContainer, { activeChild: focusedTab || selectedTab, containerClassName: containerClassName, fullWidthScroll: fullWidthScroll }, renderContent())) : (React.createElement("div", { ref: containerRef, className: cn(styles.container, containerClassName) }, renderContent()));
|
|
36
57
|
};
|
|
37
58
|
|
|
38
59
|
export { PrimaryTabList };
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
2
|
import { TabListProps } from "../../typings";
|
|
3
3
|
type PrimaryTabListMobileProps = Omit<TabListProps, 'size'>;
|
|
4
|
-
declare const PrimaryTabListMobile: ({ className, ...restProps }:
|
|
4
|
+
declare const PrimaryTabListMobile: ({ className, ...restProps }: PrimaryTabListMobileProps) => JSX.Element;
|
|
5
5
|
export { PrimaryTabListMobileProps, PrimaryTabListMobile };
|
|
@@ -1,19 +1,27 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import '@alfalab/core-components-keyboard-focusable/modern';
|
|
3
2
|
import cn from 'classnames';
|
|
3
|
+
import '@alfalab/core-components/picker-button/desktop';
|
|
4
|
+
import '@alfalab/core-components-badge/modern';
|
|
5
|
+
import '@alfalab/core-components-keyboard-focusable/modern';
|
|
6
|
+
import '@alfalab/hooks';
|
|
7
|
+
import '@juggle/resize-observer';
|
|
8
|
+
import '../../hooks/use-collapsible-elements.js';
|
|
9
|
+
import '../../hooks/use-tabs.js';
|
|
10
|
+
import '../../hooks/use-tablist-titles.js';
|
|
11
|
+
import '../../synthetic-events.js';
|
|
4
12
|
import 'compute-scroll-into-view';
|
|
5
13
|
import '../scrollable-container/Component.js';
|
|
6
|
-
import '
|
|
14
|
+
import '../title/Component.js';
|
|
7
15
|
import { PrimaryTabList } from './Component.js';
|
|
8
|
-
import { c as commonStyles } from '../../index.module-
|
|
16
|
+
import { c as commonStyles } from '../../index.module-01d292c0.js';
|
|
9
17
|
|
|
10
|
-
var mobileStyles = {"title":"
|
|
18
|
+
var mobileStyles = {"title":"tabs__title_ob67q tabs__title_1qgkh","mobile":"tabs__mobile_ob67q"};
|
|
11
19
|
require('./mobile.css')
|
|
12
20
|
|
|
13
21
|
const styles = {
|
|
14
22
|
...commonStyles,
|
|
15
23
|
...mobileStyles,
|
|
16
24
|
};
|
|
17
|
-
const PrimaryTabListMobile = ({ className, ...restProps }) => (React.createElement(PrimaryTabList,
|
|
25
|
+
const PrimaryTabListMobile = ({ className, ...restProps }) => (React.createElement(PrimaryTabList, { ...restProps, styles: styles, className: cn(className, styles.mobile) }));
|
|
18
26
|
|
|
19
27
|
export { PrimaryTabListMobile };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
2
|
import { TabListProps } from "../../typings";
|
|
3
|
-
declare const PrimaryTabListResponsive: ({ size, defaultMatch, fullWidthScroll, ...restProps }: TabListProps) => JSX.Element;
|
|
3
|
+
declare const PrimaryTabListResponsive: ({ size, defaultMatch, collapsible, fullWidthScroll, ...restProps }: TabListProps) => JSX.Element;
|
|
4
4
|
export { PrimaryTabListResponsive };
|
|
@@ -1,21 +1,28 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import '@alfalab/core-components-keyboard-focusable/modern';
|
|
3
2
|
import 'classnames';
|
|
3
|
+
import '@alfalab/core-components/picker-button/desktop';
|
|
4
|
+
import '@alfalab/core-components-badge/modern';
|
|
5
|
+
import '@alfalab/core-components-keyboard-focusable/modern';
|
|
6
|
+
import { useMedia } from '@alfalab/hooks';
|
|
7
|
+
import '@juggle/resize-observer';
|
|
8
|
+
import '../../hooks/use-collapsible-elements.js';
|
|
9
|
+
import '../../hooks/use-tabs.js';
|
|
10
|
+
import '../../hooks/use-tablist-titles.js';
|
|
11
|
+
import '../../synthetic-events.js';
|
|
4
12
|
import 'compute-scroll-into-view';
|
|
5
13
|
import '../scrollable-container/Component.js';
|
|
6
|
-
import '
|
|
14
|
+
import '../title/Component.js';
|
|
7
15
|
import './Component.js';
|
|
8
|
-
import '../../index.module-
|
|
16
|
+
import '../../index.module-01d292c0.js';
|
|
9
17
|
import { PrimaryTabListDesktop } from './Component.desktop.js';
|
|
10
|
-
import { useMedia } from '@alfalab/hooks';
|
|
11
18
|
import { PrimaryTabListMobile } from './Component.mobile.js';
|
|
12
19
|
|
|
13
|
-
const PrimaryTabListResponsive = ({ size, defaultMatch = 'desktop', fullWidthScroll, ...restProps }) => {
|
|
20
|
+
const PrimaryTabListResponsive = ({ size, defaultMatch = 'desktop', collapsible, fullWidthScroll, ...restProps }) => {
|
|
14
21
|
const [view] = useMedia([
|
|
15
22
|
['mobile', '(max-width: 767px)'],
|
|
16
23
|
['desktop', '(min-width: 768px)'],
|
|
17
24
|
], defaultMatch);
|
|
18
|
-
return view === 'desktop' ? (React.createElement(PrimaryTabListDesktop,
|
|
25
|
+
return view === 'desktop' ? (React.createElement(PrimaryTabListDesktop, { collapsible: collapsible, size: size, ...restProps })) : (React.createElement(PrimaryTabListMobile, { fullWidthScroll: fullWidthScroll, ...restProps }));
|
|
19
26
|
};
|
|
20
27
|
|
|
21
28
|
export { PrimaryTabListResponsive };
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
/* hash:
|
|
1
|
+
/* hash: 1rh9l */
|
|
2
2
|
:root {
|
|
3
3
|
--color-light-border-accent: #ef3124;
|
|
4
4
|
--color-light-border-link: #007aff;
|
|
5
5
|
--color-light-border-primary: #dbdee1;
|
|
6
6
|
--color-light-text-primary: #0b1f35;
|
|
7
|
-
--color-light-text-secondary:
|
|
8
|
-
--color-light-text-tertiary:
|
|
7
|
+
--color-light-text-secondary: rgba(11, 31, 53, 0.7);
|
|
8
|
+
--color-light-text-tertiary: rgba(11, 31, 53, 0.3);
|
|
9
9
|
}
|
|
10
10
|
:root {
|
|
11
11
|
|
|
@@ -83,12 +83,12 @@
|
|
|
83
83
|
|
|
84
84
|
/* size xl */
|
|
85
85
|
}
|
|
86
|
-
.
|
|
86
|
+
.tabs__component_1qgkh {
|
|
87
87
|
position: relative;
|
|
88
88
|
display: inline-flex;
|
|
89
89
|
min-width: 100%
|
|
90
90
|
}
|
|
91
|
-
.
|
|
91
|
+
.tabs__component_1qgkh:before {
|
|
92
92
|
content: '';
|
|
93
93
|
display: block;
|
|
94
94
|
position: absolute;
|
|
@@ -97,15 +97,15 @@
|
|
|
97
97
|
width: 100%;
|
|
98
98
|
background-color: var(--primary-tablist-bottom-border-color);
|
|
99
99
|
}
|
|
100
|
-
.
|
|
100
|
+
.tabs__fullWidthScroll_1qgkh {
|
|
101
101
|
min-width: calc(100% - 2 * var(--gap-m));
|
|
102
102
|
margin: 0 var(--gap-m);
|
|
103
103
|
}
|
|
104
|
-
.
|
|
104
|
+
.tabs__container_1qgkh {
|
|
105
105
|
position: relative;
|
|
106
106
|
overflow: hidden;
|
|
107
107
|
}
|
|
108
|
-
.
|
|
108
|
+
.tabs__title_1qgkh {
|
|
109
109
|
display: flex;
|
|
110
110
|
align-items: center;
|
|
111
111
|
height: 100%;
|
|
@@ -123,22 +123,26 @@
|
|
|
123
123
|
cursor: pointer;
|
|
124
124
|
outline: none
|
|
125
125
|
}
|
|
126
|
-
.
|
|
126
|
+
.tabs__title_1qgkh:not(.tabs__disabled_1qgkh):hover {
|
|
127
127
|
color: var(--primary-tablist-hover-color);
|
|
128
128
|
}
|
|
129
|
-
.
|
|
129
|
+
.tabs__focused_1qgkh {
|
|
130
130
|
outline: 2px solid var(--focus-color);
|
|
131
131
|
outline-offset: 2px;
|
|
132
132
|
}
|
|
133
|
-
.
|
|
133
|
+
.tabs__collapsed_1qgkh {
|
|
134
|
+
order: 99;
|
|
135
|
+
visibility: collapse;
|
|
136
|
+
}
|
|
137
|
+
.tabs__selected_1qgkh {
|
|
134
138
|
cursor: default;
|
|
135
139
|
color: var(--primary-tablist-selected-color);
|
|
136
140
|
}
|
|
137
|
-
.
|
|
141
|
+
.tabs__disabled_1qgkh {
|
|
138
142
|
cursor: var(--disabled-cursor);
|
|
139
143
|
color: var(--primary-tablist-disabled-color);
|
|
140
144
|
}
|
|
141
|
-
.
|
|
145
|
+
.tabs__line_1qgkh {
|
|
142
146
|
position: absolute;
|
|
143
147
|
height: 3px;
|
|
144
148
|
bottom: 0;
|
|
@@ -147,46 +151,73 @@
|
|
|
147
151
|
transition: transform 0.2s ease, width 0.2s ease;
|
|
148
152
|
}
|
|
149
153
|
/* sizes */
|
|
150
|
-
.
|
|
154
|
+
.tabs__s_1qgkh .tabs__title_1qgkh, .tabs__xs_1qgkh .tabs__title_1qgkh, .tabs__xxs_1qgkh .tabs__title_1qgkh {
|
|
151
155
|
padding: var(--primary-tablist-s-padding);
|
|
152
156
|
font-size: var(--primary-tablist-s-font-size);
|
|
153
157
|
font-weight: var(--primary-tablist-s-font-weight);
|
|
154
158
|
font-family: var(--primary-tablist-s-font-family);
|
|
155
159
|
line-height: 24px;
|
|
156
160
|
}
|
|
157
|
-
.
|
|
161
|
+
.tabs__s_1qgkh .tabs__title_1qgkh + .tabs__title_1qgkh, .tabs__xs_1qgkh .tabs__title_1qgkh + .tabs__title_1qgkh, .tabs__xxs_1qgkh .tabs__title_1qgkh + .tabs__title_1qgkh {
|
|
162
|
+
margin-left: var(--primary-tablist-s-gaps);
|
|
163
|
+
}
|
|
164
|
+
.tabs__s_1qgkh .tabs__pickerWrapper_1qgkh, .tabs__xs_1qgkh .tabs__pickerWrapper_1qgkh, .tabs__xxs_1qgkh .tabs__pickerWrapper_1qgkh {
|
|
158
165
|
margin-left: var(--primary-tablist-s-gaps);
|
|
159
166
|
}
|
|
160
|
-
.
|
|
167
|
+
.tabs__s_1qgkh .tabs__option_1qgkh, .tabs__xs_1qgkh .tabs__option_1qgkh, .tabs__xxs_1qgkh .tabs__option_1qgkh {
|
|
168
|
+
padding: 0;
|
|
169
|
+
}
|
|
170
|
+
.tabs__m_1qgkh .tabs__title_1qgkh {
|
|
161
171
|
padding: var(--primary-tablist-m-padding);
|
|
162
172
|
font-size: var(--primary-tablist-m-font-size);
|
|
163
173
|
font-weight: var(--primary-tablist-m-font-weight);
|
|
164
174
|
font-family: var(--primary-tablist-m-font-family);
|
|
165
175
|
line-height: 24px;
|
|
166
176
|
}
|
|
167
|
-
.
|
|
177
|
+
.tabs__m_1qgkh .tabs__title_1qgkh + .tabs__title_1qgkh {
|
|
168
178
|
margin-left: var(--primary-tablist-m-gaps);
|
|
169
179
|
}
|
|
170
|
-
.
|
|
180
|
+
.tabs__m_1qgkh .tabs__pickerWrapper_1qgkh {
|
|
181
|
+
margin-left: var(--primary-tablist-m-gaps);
|
|
182
|
+
}
|
|
183
|
+
.tabs__m_1qgkh .tabs__option_1qgkh {
|
|
184
|
+
padding: 0;
|
|
185
|
+
}
|
|
186
|
+
.tabs__l_1qgkh .tabs__title_1qgkh {
|
|
171
187
|
padding: var(--primary-tablist-l-padding);
|
|
172
188
|
font-size: var(--primary-tablist-l-font-size);
|
|
173
189
|
font-weight: var(--primary-tablist-l-font-weight);
|
|
174
190
|
font-family: var(--primary-tablist-l-font-family);
|
|
175
191
|
line-height: 24px;
|
|
176
192
|
}
|
|
177
|
-
.
|
|
193
|
+
.tabs__l_1qgkh .tabs__title_1qgkh + .tabs__title_1qgkh {
|
|
178
194
|
margin-left: var(--primary-tablist-l-gaps);
|
|
179
195
|
}
|
|
180
|
-
.
|
|
196
|
+
.tabs__l_1qgkh .tabs__pickerWrapper_1qgkh {
|
|
197
|
+
margin-left: var(--primary-tablist-l-gaps);
|
|
198
|
+
}
|
|
199
|
+
.tabs__l_1qgkh .tabs__option_1qgkh {
|
|
200
|
+
padding: 0;
|
|
201
|
+
}
|
|
202
|
+
.tabs__xl_1qgkh .tabs__title_1qgkh {
|
|
181
203
|
padding: var(--primary-tablist-xl-padding);
|
|
182
204
|
font-size: var(--primary-tablist-xl-font-size);
|
|
183
205
|
font-weight: var(--primary-tablist-xl-font-weight);
|
|
184
206
|
font-family: var(--primary-tablist-xl-font-family);
|
|
185
207
|
line-height: 32px;
|
|
186
208
|
}
|
|
187
|
-
.
|
|
209
|
+
.tabs__xl_1qgkh .tabs__title_1qgkh + .tabs__title_1qgkh {
|
|
210
|
+
margin-left: var(--primary-tablist-xl-gaps);
|
|
211
|
+
}
|
|
212
|
+
.tabs__xl_1qgkh .tabs__pickerWrapper_1qgkh {
|
|
188
213
|
margin-left: var(--primary-tablist-xl-gaps);
|
|
189
214
|
}
|
|
190
|
-
.
|
|
215
|
+
.tabs__xl_1qgkh .tabs__option_1qgkh {
|
|
216
|
+
padding: 0;
|
|
217
|
+
}
|
|
218
|
+
.tabs__rightAddons_1qgkh {
|
|
219
|
+
display: flex;
|
|
220
|
+
justify-content: center;
|
|
221
|
+
align-items: center;
|
|
191
222
|
margin-left: var(--gap-xs);
|
|
192
223
|
}
|