@redneckz/wildless-cms-uni-blocks 0.7.5 → 0.7.6
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/bundle/blocks.schema.json +1 -1
- package/bundle/bundle.umd.js +103 -19
- package/bundle/bundle.umd.min.js +1 -1
- package/bundle/components/Tabs/LinkTab.d.ts +1 -0
- package/bundle/components/Tabs/ScrollableTabs.d.ts +8 -0
- package/bundle/components/Tabs/TabsContent.d.ts +12 -0
- package/bundle/components/Tabs/renderGroupTab.d.ts +2 -2
- package/bundle/components/Tabs/renderTab.d.ts +2 -1
- package/bundle/components/Tabs/tabItemClasses.d.ts +6 -1
- package/dist/components/Tabs/LinkTab.d.ts +1 -0
- package/dist/components/Tabs/LinkTab.js +2 -2
- package/dist/components/Tabs/LinkTab.js.map +1 -1
- package/dist/components/Tabs/ScrollableTabs.d.ts +8 -0
- package/dist/components/Tabs/ScrollableTabs.js +24 -0
- package/dist/components/Tabs/ScrollableTabs.js.map +1 -0
- package/dist/components/Tabs/Tabs.js +9 -2
- package/dist/components/Tabs/Tabs.js.map +1 -1
- package/dist/components/Tabs/TabsContent.d.ts +12 -0
- package/dist/components/Tabs/renderGroupTab.d.ts +2 -2
- package/dist/components/Tabs/renderGroupTab.js +12 -4
- package/dist/components/Tabs/renderGroupTab.js.map +1 -1
- package/dist/components/Tabs/renderTab.d.ts +2 -1
- package/dist/components/Tabs/renderTab.js +4 -6
- package/dist/components/Tabs/renderTab.js.map +1 -1
- package/dist/components/Tabs/tabItemClasses.d.ts +6 -1
- package/dist/components/Tabs/tabItemClasses.js +61 -2
- package/dist/components/Tabs/tabItemClasses.js.map +1 -1
- package/dist/setup-fixture.js +0 -1
- package/dist/setup-fixture.js.map +1 -1
- package/lib/common.css +1 -1
- package/lib/components/Tabs/LinkTab.d.ts +1 -0
- package/lib/components/Tabs/LinkTab.js +3 -3
- package/lib/components/Tabs/LinkTab.js.map +1 -1
- package/lib/components/Tabs/ScrollableTabs.d.ts +8 -0
- package/lib/components/Tabs/ScrollableTabs.js +22 -0
- package/lib/components/Tabs/ScrollableTabs.js.map +1 -0
- package/lib/components/Tabs/Tabs.fixture.d.ts +1 -0
- package/lib/components/Tabs/Tabs.js +9 -2
- package/lib/components/Tabs/Tabs.js.map +1 -1
- package/lib/components/Tabs/TabsContent.d.ts +12 -0
- package/lib/components/Tabs/renderGroupTab.d.ts +2 -2
- package/lib/components/Tabs/renderGroupTab.js +13 -5
- package/lib/components/Tabs/renderGroupTab.js.map +1 -1
- package/lib/components/Tabs/renderTab.d.ts +2 -1
- package/lib/components/Tabs/renderTab.js +4 -6
- package/lib/components/Tabs/renderTab.js.map +1 -1
- package/lib/components/Tabs/tabItemClasses.d.ts +6 -1
- package/lib/components/Tabs/tabItemClasses.js +58 -1
- package/lib/components/Tabs/tabItemClasses.js.map +1 -1
- package/lib/setup-fixture.js +0 -1
- package/lib/setup-fixture.js.map +1 -1
- package/mobile/bundle/bundle.umd.js +1 -1
- package/mobile/bundle/bundle.umd.min.js +1 -1
- package/mobile/bundle/components/Tabs/LinkTab.d.ts +1 -0
- package/mobile/bundle/components/Tabs/ScrollableTabs.d.ts +8 -0
- package/mobile/bundle/components/Tabs/TabsContent.d.ts +12 -0
- package/mobile/bundle/components/Tabs/renderGroupTab.d.ts +2 -2
- package/mobile/bundle/components/Tabs/renderTab.d.ts +2 -1
- package/mobile/bundle/components/Tabs/tabItemClasses.d.ts +6 -1
- package/mobile/dist/components/Tabs/LinkTab.d.ts +1 -0
- package/mobile/dist/components/Tabs/LinkTab.js +2 -2
- package/mobile/dist/components/Tabs/LinkTab.js.map +1 -1
- package/mobile/dist/components/Tabs/ScrollableTabs.d.ts +8 -0
- package/mobile/dist/components/Tabs/ScrollableTabs.js +24 -0
- package/mobile/dist/components/Tabs/ScrollableTabs.js.map +1 -0
- package/mobile/dist/components/Tabs/Tabs.js +9 -2
- package/mobile/dist/components/Tabs/Tabs.js.map +1 -1
- package/mobile/dist/components/Tabs/TabsContent.d.ts +12 -0
- package/mobile/dist/components/Tabs/renderGroupTab.d.ts +2 -2
- package/mobile/dist/components/Tabs/renderGroupTab.js +12 -4
- package/mobile/dist/components/Tabs/renderGroupTab.js.map +1 -1
- package/mobile/dist/components/Tabs/renderTab.d.ts +2 -1
- package/mobile/dist/components/Tabs/renderTab.js +4 -6
- package/mobile/dist/components/Tabs/renderTab.js.map +1 -1
- package/mobile/dist/components/Tabs/tabItemClasses.d.ts +6 -1
- package/mobile/dist/components/Tabs/tabItemClasses.js +61 -2
- package/mobile/dist/components/Tabs/tabItemClasses.js.map +1 -1
- package/mobile/dist/setup-fixture.js +0 -1
- package/mobile/dist/setup-fixture.js.map +1 -1
- package/mobile/lib/components/Tabs/LinkTab.d.ts +1 -0
- package/mobile/lib/components/Tabs/LinkTab.js +3 -3
- package/mobile/lib/components/Tabs/LinkTab.js.map +1 -1
- package/mobile/lib/components/Tabs/ScrollableTabs.d.ts +8 -0
- package/mobile/lib/components/Tabs/ScrollableTabs.js +22 -0
- package/mobile/lib/components/Tabs/ScrollableTabs.js.map +1 -0
- package/mobile/lib/components/Tabs/Tabs.js +9 -2
- package/mobile/lib/components/Tabs/Tabs.js.map +1 -1
- package/mobile/lib/components/Tabs/TabsContent.d.ts +12 -0
- package/mobile/lib/components/Tabs/renderGroupTab.d.ts +2 -2
- package/mobile/lib/components/Tabs/renderGroupTab.js +13 -5
- package/mobile/lib/components/Tabs/renderGroupTab.js.map +1 -1
- package/mobile/lib/components/Tabs/renderTab.d.ts +2 -1
- package/mobile/lib/components/Tabs/renderTab.js +4 -6
- package/mobile/lib/components/Tabs/renderTab.js.map +1 -1
- package/mobile/lib/components/Tabs/tabItemClasses.d.ts +6 -1
- package/mobile/lib/components/Tabs/tabItemClasses.js +58 -1
- package/mobile/lib/components/Tabs/tabItemClasses.js.map +1 -1
- package/mobile/lib/setup-fixture.js +0 -1
- package/mobile/lib/setup-fixture.js.map +1 -1
- package/mobile/src/components/Tabs/LinkTab.tsx +5 -13
- package/mobile/src/components/Tabs/ScrollableTabs.tsx +55 -0
- package/mobile/src/components/Tabs/Tabs.tsx +26 -4
- package/mobile/src/components/Tabs/TabsContent.ts +13 -0
- package/mobile/src/components/Tabs/renderGroupTab.tsx +30 -20
- package/mobile/src/components/Tabs/renderTab.tsx +8 -5
- package/mobile/src/components/Tabs/tabItemClasses.ts +65 -1
- package/mobile/src/setup-fixture.ts +0 -1
- package/package.json +1 -1
- package/src/components/Tabs/LinkTab.tsx +5 -13
- package/src/components/Tabs/ScrollableTabs.tsx +55 -0
- package/src/components/Tabs/Tabs.fixture.tsx +22 -0
- package/src/components/Tabs/Tabs.tsx +26 -4
- package/src/components/Tabs/TabsContent.ts +13 -0
- package/src/components/Tabs/renderGroupTab.tsx +30 -20
- package/src/components/Tabs/renderTab.tsx +8 -5
- package/src/components/Tabs/tabItemClasses.ts +65 -1
- package/src/setup-fixture.ts +0 -1
|
@@ -4,23 +4,21 @@ const jsx_runtime_1 = require("@redneckz/uni-jsx/jsx-runtime");
|
|
|
4
4
|
const assertUnreachable_1 = require("../../utils/assertUnreachable");
|
|
5
5
|
const LinkTab_1 = require("./LinkTab");
|
|
6
6
|
const renderGroupTab_1 = require("./renderGroupTab");
|
|
7
|
-
const renderTab = ({ page, currentTab, showCounter, onClick }) =>
|
|
8
|
-
// Linter doesn't understand that switch processes all cases
|
|
9
|
-
// eslint-disable-next-line consistent-return
|
|
10
|
-
(tab, i) => {
|
|
7
|
+
const renderTab = ({ page, currentTab, showCounter, onClick, isScrollable = false }) => (tab, i) => {
|
|
11
8
|
const type = tab.type;
|
|
12
9
|
if (!(type === 'group' || type === 'link')) {
|
|
13
10
|
return null;
|
|
14
11
|
}
|
|
15
12
|
switch (type) {
|
|
16
13
|
case 'group':
|
|
17
|
-
return (0, renderGroupTab_1.renderGroupTab)({ page, currentTab, showCounter, onClick })(tab, i);
|
|
14
|
+
return (0, renderGroupTab_1.renderGroupTab)({ page, currentTab, showCounter, onClick, isScrollable })(tab, i);
|
|
18
15
|
case 'link': {
|
|
19
|
-
return (0, jsx_runtime_1.jsx)(LinkTab_1.LinkTab, { tab: tab, currentTab: currentTab }, String(i));
|
|
16
|
+
return ((0, jsx_runtime_1.jsx)(LinkTab_1.LinkTab, { tab: tab, currentTab: currentTab, isScrollable: isScrollable }, String(i)));
|
|
20
17
|
}
|
|
21
18
|
default:
|
|
22
19
|
(0, assertUnreachable_1.assertUnreachable)(type);
|
|
23
20
|
}
|
|
21
|
+
return null;
|
|
24
22
|
};
|
|
25
23
|
exports.renderTab = renderTab;
|
|
26
24
|
//# sourceMappingURL=renderTab.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"renderTab.js","sourceRoot":"","sources":["../../../src/components/Tabs/renderTab.tsx"],"names":[],"mappings":";;;AACA,qEAAkE;AAClE,uCAAoC;AACpC,qDAAkD;
|
|
1
|
+
{"version":3,"file":"renderTab.js","sourceRoot":"","sources":["../../../src/components/Tabs/renderTab.tsx"],"names":[],"mappings":";;;AACA,qEAAkE;AAClE,uCAAoC;AACpC,qDAAkD;AAW3C,MAAM,SAAS,GACpB,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,WAAW,EAAE,OAAO,EAAE,YAAY,GAAG,KAAK,EAAkB,EAAE,EAAE,CACrF,CAAC,GAAY,EAAE,CAAS,EAAE,EAAE;IAC1B,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;IAEtB,IAAI,CAAC,CAAC,IAAI,KAAK,OAAO,IAAI,IAAI,KAAK,MAAM,CAAC,EAAE;QAC1C,OAAO,IAAI,CAAC;KACb;IAED,QAAQ,IAAI,EAAE;QACZ,KAAK,OAAO;YACV,OAAO,IAAA,+BAAc,EAAC,EAAE,IAAI,EAAE,UAAU,EAAE,WAAW,EAAE,OAAO,EAAE,YAAY,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QAC1F,KAAK,MAAM,CAAC,CAAC;YACX,OAAO,CACL,uBAAC,iBAAO,IAAiB,GAAG,EAAE,GAAG,EAAE,UAAU,EAAE,UAAU,EAAE,YAAY,EAAE,YAAY,IAAvE,MAAM,CAAC,CAAC,CAAC,CAAkE,CAC1F,CAAC;SACH;QACD;YACE,IAAA,qCAAiB,EAAC,IAAI,CAAC,CAAC;KAC3B;IAED,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AAtBS,QAAA,SAAS,aAsBlB"}
|
|
@@ -1,6 +1,11 @@
|
|
|
1
1
|
export declare const LINK_CLASSES = "h-12 flex-1 flex items-center justify-center cursor-pointer";
|
|
2
2
|
export declare const ACTIVE_LINK_CLASSES = "bg-primary-main";
|
|
3
3
|
export declare const INACTIVE_LINK_CLASSES = "group/btn bg-white";
|
|
4
|
-
export declare const
|
|
4
|
+
export declare const SCROLLABLE_ACTIVE_LINK_CLASSES = "bg-white text-primary-main";
|
|
5
|
+
export declare const WIDESCREEN_ACTIVE_LINK_CLASSES = "bg-primary-main text-white";
|
|
6
|
+
export declare const TEXT_CLASSES = "font-sans text-m text-center";
|
|
5
7
|
export declare const ACTIVE_TEXT_CLASSES = "text-white";
|
|
6
8
|
export declare const INACTIVE_TEXT_CLASSES = "text-secondary-text group-hover/btn:text-primary-main";
|
|
9
|
+
export declare const WHITE_ACTIVE_TEXT_CLASSES = "text-primary-main";
|
|
10
|
+
export declare const getGroupTabClassName: (type: string, active: boolean, isScrollable: boolean) => any;
|
|
11
|
+
export declare const getLinkTabClassName: (type: string, active: boolean, isScrollable: boolean) => any;
|
|
@@ -1,9 +1,68 @@
|
|
|
1
1
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
2
|
-
exports.INACTIVE_TEXT_CLASSES = exports.ACTIVE_TEXT_CLASSES = exports.TEXT_CLASSES = exports.INACTIVE_LINK_CLASSES = exports.ACTIVE_LINK_CLASSES = exports.LINK_CLASSES = void 0;
|
|
2
|
+
exports.getLinkTabClassName = exports.getGroupTabClassName = exports.WHITE_ACTIVE_TEXT_CLASSES = exports.INACTIVE_TEXT_CLASSES = exports.ACTIVE_TEXT_CLASSES = exports.TEXT_CLASSES = exports.WIDESCREEN_ACTIVE_LINK_CLASSES = exports.SCROLLABLE_ACTIVE_LINK_CLASSES = exports.INACTIVE_LINK_CLASSES = exports.ACTIVE_LINK_CLASSES = exports.LINK_CLASSES = void 0;
|
|
3
3
|
exports.LINK_CLASSES = 'h-12 flex-1 flex items-center justify-center cursor-pointer';
|
|
4
4
|
exports.ACTIVE_LINK_CLASSES = 'bg-primary-main';
|
|
5
5
|
exports.INACTIVE_LINK_CLASSES = 'group/btn bg-white';
|
|
6
|
-
exports.
|
|
6
|
+
exports.SCROLLABLE_ACTIVE_LINK_CLASSES = 'bg-white text-primary-main';
|
|
7
|
+
exports.WIDESCREEN_ACTIVE_LINK_CLASSES = 'bg-primary-main text-white';
|
|
8
|
+
exports.TEXT_CLASSES = 'font-sans text-m text-center';
|
|
7
9
|
exports.ACTIVE_TEXT_CLASSES = 'text-white';
|
|
8
10
|
exports.INACTIVE_TEXT_CLASSES = 'text-secondary-text group-hover/btn:text-primary-main';
|
|
11
|
+
exports.WHITE_ACTIVE_TEXT_CLASSES = 'text-primary-main';
|
|
12
|
+
const GROUP_TAB_CLASSES = {
|
|
13
|
+
div: {
|
|
14
|
+
scrollable: {
|
|
15
|
+
active: `inline-flex px-4 grow whitespace-nowrap ${exports.LINK_CLASSES} ${exports.SCROLLABLE_ACTIVE_LINK_CLASSES}`,
|
|
16
|
+
default: `inline-flex px-4 grow whitespace-nowrap ${exports.LINK_CLASSES} ${exports.INACTIVE_LINK_CLASSES}`,
|
|
17
|
+
},
|
|
18
|
+
default: {
|
|
19
|
+
active: `${exports.LINK_CLASSES} ${exports.WIDESCREEN_ACTIVE_LINK_CLASSES} whitespace-nowrap`,
|
|
20
|
+
default: `${exports.LINK_CLASSES} ${exports.INACTIVE_LINK_CLASSES} whitespace-nowrap`,
|
|
21
|
+
},
|
|
22
|
+
},
|
|
23
|
+
text: {
|
|
24
|
+
scrollable: {
|
|
25
|
+
active: `h-full border-0 border-b-2`,
|
|
26
|
+
default: ``,
|
|
27
|
+
},
|
|
28
|
+
default: {
|
|
29
|
+
active: '',
|
|
30
|
+
default: '',
|
|
31
|
+
},
|
|
32
|
+
},
|
|
33
|
+
};
|
|
34
|
+
const LINK_TAB_CLASSES = {
|
|
35
|
+
link: {
|
|
36
|
+
scrollable: {
|
|
37
|
+
active: `inline-flex px-4 grow whitespace-nowrap ${exports.LINK_CLASSES} ${exports.SCROLLABLE_ACTIVE_LINK_CLASSES}`,
|
|
38
|
+
default: `inline-flex px-4 grow whitespace-nowrap ${exports.LINK_CLASSES} ${exports.INACTIVE_LINK_CLASSES}`,
|
|
39
|
+
},
|
|
40
|
+
default: {
|
|
41
|
+
active: `${exports.LINK_CLASSES} ${exports.WIDESCREEN_ACTIVE_LINK_CLASSES}`,
|
|
42
|
+
default: `${exports.LINK_CLASSES} ${exports.INACTIVE_LINK_CLASSES}`,
|
|
43
|
+
},
|
|
44
|
+
},
|
|
45
|
+
text: {
|
|
46
|
+
scrollable: {
|
|
47
|
+
active: `${exports.TEXT_CLASSES} flex items-center h-full border-0 border-b-2 ${exports.WHITE_ACTIVE_TEXT_CLASSES}`,
|
|
48
|
+
default: `${exports.TEXT_CLASSES} ${exports.INACTIVE_TEXT_CLASSES}`,
|
|
49
|
+
},
|
|
50
|
+
default: {
|
|
51
|
+
active: `${exports.TEXT_CLASSES} ${exports.ACTIVE_TEXT_CLASSES}`,
|
|
52
|
+
default: `${exports.TEXT_CLASSES} ${exports.INACTIVE_TEXT_CLASSES}`,
|
|
53
|
+
},
|
|
54
|
+
},
|
|
55
|
+
};
|
|
56
|
+
const getGroupTabClassName = (type, active, isScrollable) => {
|
|
57
|
+
const styleType = isScrollable ? 'scrollable' : 'default';
|
|
58
|
+
const styleActive = active ? 'active' : 'default';
|
|
59
|
+
return GROUP_TAB_CLASSES[type][styleType][styleActive];
|
|
60
|
+
};
|
|
61
|
+
exports.getGroupTabClassName = getGroupTabClassName;
|
|
62
|
+
const getLinkTabClassName = (type, active, isScrollable) => {
|
|
63
|
+
const styleType = isScrollable ? 'scrollable' : 'default';
|
|
64
|
+
const styleActive = active ? 'active' : 'default';
|
|
65
|
+
return LINK_TAB_CLASSES[type][styleType][styleActive];
|
|
66
|
+
};
|
|
67
|
+
exports.getLinkTabClassName = getLinkTabClassName;
|
|
9
68
|
//# sourceMappingURL=tabItemClasses.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tabItemClasses.js","sourceRoot":"","sources":["../../../src/components/Tabs/tabItemClasses.ts"],"names":[],"mappings":";;AAAa,QAAA,YAAY,GAAG,6DAA6D,CAAC;AAC7E,QAAA,mBAAmB,GAAG,iBAAiB,CAAC;AACxC,QAAA,qBAAqB,GAAG,oBAAoB,CAAC;AAE7C,QAAA,YAAY,GAAG,
|
|
1
|
+
{"version":3,"file":"tabItemClasses.js","sourceRoot":"","sources":["../../../src/components/Tabs/tabItemClasses.ts"],"names":[],"mappings":";;AAAa,QAAA,YAAY,GAAG,6DAA6D,CAAC;AAC7E,QAAA,mBAAmB,GAAG,iBAAiB,CAAC;AACxC,QAAA,qBAAqB,GAAG,oBAAoB,CAAC;AAE7C,QAAA,8BAA8B,GAAG,4BAA4B,CAAC;AAC9D,QAAA,8BAA8B,GAAG,4BAA4B,CAAC;AAE9D,QAAA,YAAY,GAAG,8BAA8B,CAAC;AAC9C,QAAA,mBAAmB,GAAG,YAAY,CAAC;AACnC,QAAA,qBAAqB,GAAG,uDAAuD,CAAC;AAEhF,QAAA,yBAAyB,GAAG,mBAAmB,CAAC;AAE7D,MAAM,iBAAiB,GAAG;IACxB,GAAG,EAAE;QACH,UAAU,EAAE;YACV,MAAM,EAAE,2CAA2C,oBAAY,IAAI,sCAA8B,EAAE;YACnG,OAAO,EAAE,2CAA2C,oBAAY,IAAI,6BAAqB,EAAE;SAC5F;QACD,OAAO,EAAE;YACP,MAAM,EAAE,GAAG,oBAAY,IAAI,sCAA8B,oBAAoB;YAC7E,OAAO,EAAE,GAAG,oBAAY,IAAI,6BAAqB,oBAAoB;SACtE;KACF;IACD,IAAI,EAAE;QACJ,UAAU,EAAE;YACV,MAAM,EAAE,4BAA4B;YACpC,OAAO,EAAE,EAAE;SACZ;QACD,OAAO,EAAE;YACP,MAAM,EAAE,EAAE;YACV,OAAO,EAAE,EAAE;SACZ;KACF;CACF,CAAC;AACF,MAAM,gBAAgB,GAAG;IACvB,IAAI,EAAE;QACJ,UAAU,EAAE;YACV,MAAM,EAAE,2CAA2C,oBAAY,IAAI,sCAA8B,EAAE;YACnG,OAAO,EAAE,2CAA2C,oBAAY,IAAI,6BAAqB,EAAE;SAC5F;QACD,OAAO,EAAE;YACP,MAAM,EAAE,GAAG,oBAAY,IAAI,sCAA8B,EAAE;YAC3D,OAAO,EAAE,GAAG,oBAAY,IAAI,6BAAqB,EAAE;SACpD;KACF;IACD,IAAI,EAAE;QACJ,UAAU,EAAE;YACV,MAAM,EAAE,GAAG,oBAAY,iDAAiD,iCAAyB,EAAE;YACnG,OAAO,EAAE,GAAG,oBAAY,IAAI,6BAAqB,EAAE;SACpD;QACD,OAAO,EAAE;YACP,MAAM,EAAE,GAAG,oBAAY,IAAI,2BAAmB,EAAE;YAChD,OAAO,EAAE,GAAG,oBAAY,IAAI,6BAAqB,EAAE;SACpD;KACF;CACF,CAAC;AAEK,MAAM,oBAAoB,GAAG,CAAC,IAAY,EAAE,MAAe,EAAE,YAAqB,EAAE,EAAE;IAC3F,MAAM,SAAS,GAAG,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC;IAC1D,MAAM,WAAW,GAAG,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;IAElD,OAAO,iBAAiB,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC,WAAW,CAAC,CAAC;AACzD,CAAC,CAAC;AALW,QAAA,oBAAoB,wBAK/B;AAEK,MAAM,mBAAmB,GAAG,CAAC,IAAY,EAAE,MAAe,EAAE,YAAqB,EAAE,EAAE;IAC1F,MAAM,SAAS,GAAG,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC;IAC1D,MAAM,WAAW,GAAG,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;IAElD,OAAO,gBAAgB,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC,WAAW,CAAC,CAAC;AACxD,CAAC,CAAC;AALW,QAAA,mBAAmB,uBAK9B"}
|
|
@@ -27,7 +27,6 @@ useRouter_1.useRouter.setup(() => {
|
|
|
27
27
|
});
|
|
28
28
|
handlerDecorator_1.handlerDecorator.setup((handler, targetContent) => (ev) => {
|
|
29
29
|
ev.preventDefault();
|
|
30
|
-
console.log(ev.target, ev, targetContent);
|
|
31
30
|
handler(ev);
|
|
32
31
|
});
|
|
33
32
|
//# sourceMappingURL=setup-fixture.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setup-fixture.js","sourceRoot":"","sources":["../src/setup-fixture.ts"],"names":[],"mappings":";;;;AAAA,6CAA2C;AAC3C,iCAAiC;AACjC,+DAA4D;AAC5D,iDAA8C;AAC9C,uDAAoD;AACpD,0DAA6B;AAE7B,iCAAe,CAAC,KAAK,CAAC,kBAAG,CAAC,CAAC;AAE3B,qBAAS,CAAC,KAAK,CAAC,GAAG,EAAE;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC,GAAG,IAAA,gBAAQ,EAAS,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IAE/D,OAAO;QACL,IAAI,EAAE,GAAG,UAAU,CAAC,QAAQ,CAAC,MAAM,GAAG,iCAAe,CAAC,SAAS,cAAc;QAC7E,QAAQ,EAAE,eAAe;QACzB,KAAK,EAAE,EAAE;QACT,IAAI,EAAE,CAAC,GAAW,EAAE,EAAE;YACpB,UAAU,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;YAC5C,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACpC,CAAC;QACD,OAAO,EAAE,CAAC,GAAW,EAAE,EAAE;YACvB,UAAU,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;YAC/C,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACpC,CAAC;KACF,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,mCAAgB,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,aAAa,EAAO,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE;IAC7D,EAAE,CAAC,cAAc,EAAE,CAAC;IACpB,OAAO,CAAC,
|
|
1
|
+
{"version":3,"file":"setup-fixture.js","sourceRoot":"","sources":["../src/setup-fixture.ts"],"names":[],"mappings":";;;;AAAA,6CAA2C;AAC3C,iCAAiC;AACjC,+DAA4D;AAC5D,iDAA8C;AAC9C,uDAAoD;AACpD,0DAA6B;AAE7B,iCAAe,CAAC,KAAK,CAAC,kBAAG,CAAC,CAAC;AAE3B,qBAAS,CAAC,KAAK,CAAC,GAAG,EAAE;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC,GAAG,IAAA,gBAAQ,EAAS,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IAE/D,OAAO;QACL,IAAI,EAAE,GAAG,UAAU,CAAC,QAAQ,CAAC,MAAM,GAAG,iCAAe,CAAC,SAAS,cAAc;QAC7E,QAAQ,EAAE,eAAe;QACzB,KAAK,EAAE,EAAE;QACT,IAAI,EAAE,CAAC,GAAW,EAAE,EAAE;YACpB,UAAU,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;YAC5C,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACpC,CAAC;QACD,OAAO,EAAE,CAAC,GAAW,EAAE,EAAE;YACvB,UAAU,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;YAC/C,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACpC,CAAC;KACF,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,mCAAgB,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,aAAa,EAAO,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE;IAC7D,EAAE,CAAC,cAAc,EAAE,CAAC;IACpB,OAAO,CAAC,EAAE,CAAC,CAAC;AACd,CAAC,CAAC,CAAC"}
|
|
@@ -2,6 +2,7 @@ import type { LinkTabData, TabData } from './TabsContent';
|
|
|
2
2
|
interface LinkTabProps {
|
|
3
3
|
tab: LinkTabData;
|
|
4
4
|
currentTab?: TabData;
|
|
5
|
+
isScrollable?: boolean;
|
|
5
6
|
}
|
|
6
7
|
export declare const LinkTab: import("@redneckz/uni-jsx").UNIComponent<LinkTabProps, any, any>;
|
|
7
8
|
export {};
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { jsx as _jsx } from "@redneckz/uni-jsx/jsx-runtime";
|
|
2
2
|
import { JSX } from '@redneckz/uni-jsx';
|
|
3
3
|
import { useLink } from '../../hooks/useLink.js';
|
|
4
|
-
import {
|
|
4
|
+
import { getLinkTabClassName } from './tabItemClasses.js';
|
|
5
5
|
export const LinkTab = JSX((props) => {
|
|
6
|
-
const { tab, currentTab } = props;
|
|
6
|
+
const { tab, currentTab, isScrollable = false } = props;
|
|
7
7
|
const active = currentTab?.type === 'link' && currentTab.href === tab.href;
|
|
8
8
|
const link = useLink();
|
|
9
9
|
const adjustedProps = link(tab);
|
|
10
|
-
return (_jsx("a", { role: "tab", className:
|
|
10
|
+
return (_jsx("a", { role: "tab", className: getLinkTabClassName('link', active, isScrollable), target: tab.target, href: adjustedProps.href, onClick: adjustedProps.onClick, children: _jsx("span", { className: getLinkTabClassName('text', active, isScrollable), children: tab.text }) }));
|
|
11
11
|
});
|
|
12
12
|
//# sourceMappingURL=LinkTab.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LinkTab.js","sourceRoot":"","sources":["../../../src/components/Tabs/LinkTab.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;AACxC,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAC9C,OAAO,
|
|
1
|
+
{"version":3,"file":"LinkTab.js","sourceRoot":"","sources":["../../../src/components/Tabs/LinkTab.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;AACxC,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAC9C,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AASvD,MAAM,CAAC,MAAM,OAAO,GAAG,GAAG,CAAe,CAAC,KAAK,EAAE,EAAE;IACjD,MAAM,EAAE,GAAG,EAAE,UAAU,EAAE,YAAY,GAAG,KAAK,EAAE,GAAG,KAAK,CAAC;IACxD,MAAM,MAAM,GAAG,UAAU,EAAE,IAAI,KAAK,MAAM,IAAI,UAAU,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI,CAAC;IAE3E,MAAM,IAAI,GAAG,OAAO,EAAE,CAAC;IACvB,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;IAEhC,OAAO,CACL,YACE,IAAI,EAAC,KAAK,EACV,SAAS,EAAE,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,YAAY,CAAC,EAC5D,MAAM,EAAE,GAAG,CAAC,MAAM,EAClB,IAAI,EAAE,aAAa,CAAC,IAAI,EACxB,OAAO,EAAE,aAAa,CAAC,OAAO,YAE9B,eAAM,SAAS,EAAE,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,YAAY,CAAC,YAAG,GAAG,CAAC,IAAI,GAAQ,GACnF,CACL,CAAC;AACJ,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { RenderTabProps } from './renderTab';
|
|
2
|
+
import type { TabData } from './TabsContent';
|
|
3
|
+
interface ScrollableTabsProps extends RenderTabProps {
|
|
4
|
+
tabs?: TabData[];
|
|
5
|
+
}
|
|
6
|
+
export declare type IsScrollButtonsShown = boolean[];
|
|
7
|
+
export declare const ScrollableTabs: import("@redneckz/uni-jsx").UNIComponent<ScrollableTabsProps, any, any>;
|
|
8
|
+
export {};
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "@redneckz/uni-jsx/jsx-runtime";
|
|
2
|
+
import { JSX } from '@redneckz/uni-jsx';
|
|
3
|
+
import { SwipeListContainer } from '../../ui-kit/SwipeListControl/SwipeListContainer.js';
|
|
4
|
+
import { useSwipeListScroll } from '../../ui-kit/SwipeListControl/useSwipeListScroll.js';
|
|
5
|
+
import { ScrollLeftButton, ScrollRightButton } from '../../ui-kit/Button/ArrowButton.js';
|
|
6
|
+
import { renderTab } from './renderTab.js';
|
|
7
|
+
const scrollButtonStyle = 'absolute z-50 top-0';
|
|
8
|
+
export const ScrollableTabs = JSX((props) => {
|
|
9
|
+
const { tabs, onClick, currentTab, page, showCounter } = props;
|
|
10
|
+
const [containerRef, scroll] = useSwipeListScroll({
|
|
11
|
+
itemCount: tabs?.length || 0,
|
|
12
|
+
isCyclic: false,
|
|
13
|
+
});
|
|
14
|
+
return (_jsxs("div", { className: "relative max-w-full m-auto", children: [_jsx("div", { className: `font-sans max-w-full w-full overflow-hidden relative bg-white`, children: _jsx(SwipeListContainer, { containerRef: containerRef, snapAlign: "snap-start", onVisibleIndicesChange: scroll.handleVisibleIndicesChange, children: tabs?.map(renderTab({
|
|
15
|
+
onClick,
|
|
16
|
+
currentTab,
|
|
17
|
+
showCounter,
|
|
18
|
+
page,
|
|
19
|
+
isScrollable: true,
|
|
20
|
+
})) }) }), scroll.canScrollLeft ? (_jsx(ScrollLeftButton, { className: `${scrollButtonStyle} left-6`, onClick: scroll.scrollLeft })) : null, scroll.canScrollRight ? (_jsx(ScrollRightButton, { className: `${scrollButtonStyle} rotate-180 right-6`, onClick: scroll.scrollRight })) : null] }));
|
|
21
|
+
});
|
|
22
|
+
//# sourceMappingURL=ScrollableTabs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ScrollableTabs.js","sourceRoot":"","sources":["../../../src/components/Tabs/ScrollableTabs.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;AAGxC,OAAO,EAAE,kBAAkB,EAAE,MAAM,kDAAkD,CAAC;AACtF,OAAO,EAAE,kBAAkB,EAAE,MAAM,kDAAkD,CAAC;AACtF,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AACtF,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAQxC,MAAM,iBAAiB,GAAG,qBAAqB,CAAC;AAEhD,MAAM,CAAC,MAAM,cAAc,GAAG,GAAG,CAAsB,CAAC,KAAK,EAAE,EAAE;IAC/D,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,KAAK,CAAC;IAE/D,MAAM,CAAC,YAAY,EAAE,MAAM,CAAC,GAAG,kBAAkB,CAAiB;QAChE,SAAS,EAAE,IAAI,EAAE,MAAM,IAAI,CAAC;QAC5B,QAAQ,EAAE,KAAK;KAChB,CAAC,CAAC;IAEH,OAAO,CACL,eAAK,SAAS,EAAC,4BAA4B,aACzC,cAAK,SAAS,EAAE,+DAA+D,YAC7E,KAAC,kBAAkB,IACjB,YAAY,EAAE,YAAY,EAC1B,SAAS,EAAC,YAAY,EACtB,sBAAsB,EAAE,MAAM,CAAC,0BAA0B,YAExD,IAAI,EAAE,GAAG,CACR,SAAS,CAAC;wBACR,OAAO;wBACP,UAAU;wBACV,WAAW;wBACX,IAAI;wBACJ,YAAY,EAAE,IAAI;qBACnB,CAAC,CACH,GACkB,GACjB,EACL,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,CACtB,KAAC,gBAAgB,IAAC,SAAS,EAAE,GAAG,iBAAiB,SAAS,EAAE,OAAO,EAAE,MAAM,CAAC,UAAU,GAAI,CAC3F,CAAC,CAAC,CAAC,IAAI,EACP,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,CACvB,KAAC,iBAAiB,IAChB,SAAS,EAAE,GAAG,iBAAiB,qBAAqB,EACpD,OAAO,EAAE,MAAM,CAAC,WAAW,GAC3B,CACH,CAAC,CAAC,CAAC,IAAI,IACJ,CACP,CAAC;AACJ,CAAC,CAAC,CAAC"}
|
|
@@ -4,14 +4,16 @@ import { useCallback, useEffect, useState } from '@redneckz/uni-jsx/lib/hooks';
|
|
|
4
4
|
import { EventBus } from '../../EventBus/EventBus.js';
|
|
5
5
|
import { BlockWrapper } from '../../ui-kit/BlockWrapper.js';
|
|
6
6
|
import { renderTab } from './renderTab.js';
|
|
7
|
+
import { ScrollableTabs } from './ScrollableTabs.js';
|
|
7
8
|
export const Tabs = JSX((props) => {
|
|
8
|
-
const { className = '', tabs, showCounter, isSticky, ...rest } = props;
|
|
9
|
+
const { className = '', tabs, showCounter, isSticky, tabsMode, ...rest } = props;
|
|
9
10
|
const [currentTab, setCurrentTab] = useState(tabs ? tabs[0] : undefined);
|
|
10
11
|
useEffect(() => EventBus.inst.subscribe('tab', (event) => {
|
|
11
12
|
const tab = tabs?.find(checkTab(event));
|
|
12
13
|
if (event.type === 'link' && tab) {
|
|
13
14
|
setCurrentTab(tab);
|
|
14
15
|
}
|
|
16
|
+
return [];
|
|
15
17
|
}), [tabs]);
|
|
16
18
|
useEffect(() => currentTab?.type === 'group'
|
|
17
19
|
? EventBus.inst.subject('tab', { label: currentTab.ref })
|
|
@@ -22,7 +24,12 @@ export const Tabs = JSX((props) => {
|
|
|
22
24
|
}
|
|
23
25
|
setCurrentTab(selectedTab);
|
|
24
26
|
}, []);
|
|
25
|
-
return (_jsx(BlockWrapper, { className:
|
|
27
|
+
return (_jsx(BlockWrapper, { className: `relative box-border flex gap-x-1 w-full ${isSticky ? 'sticky top-1 z-20 ' : ''} ${className}`, role: "tablist", ...rest, children: tabsMode === 'scrollable' ? (_jsx(ScrollableTabs, { tabs: tabs, onClick: handleClick, currentTab: currentTab, showCounter: showCounter, ...rest })) : (tabs?.map(renderTab({
|
|
28
|
+
onClick: handleClick,
|
|
29
|
+
currentTab,
|
|
30
|
+
showCounter,
|
|
31
|
+
...rest,
|
|
32
|
+
}))) }));
|
|
26
33
|
});
|
|
27
34
|
const checkTab = (event) => (_) => _.type === 'link' && _.href === `#${event.label}`;
|
|
28
35
|
//# sourceMappingURL=Tabs.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Tabs.js","sourceRoot":"","sources":["../../../src/components/Tabs/Tabs.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;AACxC,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAC/E,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"Tabs.js","sourceRoot":"","sources":["../../../src/components/Tabs/Tabs.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;AACxC,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAC/E,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAGnD,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AASlD,MAAM,CAAC,MAAM,IAAI,GAAG,GAAG,CAAiB,CAAC,KAAK,EAAE,EAAE;IAChD,MAAM,EAAE,SAAS,GAAG,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,IAAI,EAAE,GAAG,KAAK,CAAC;IAEjF,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IAEzE,SAAS,CACP,GAAG,EAAE,CACH,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE;QACvC,MAAM,GAAG,GAAG,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;QACxC,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,IAAI,GAAG,EAAE;YAChC,aAAa,CAAC,GAAG,CAAC,CAAC;SACpB;QAED,OAAO,EAAE,CAAC;IACZ,CAAC,CAAC,EACJ,CAAC,IAAI,CAAC,CACP,CAAC;IAEF,SAAS,CACP,GAAG,EAAE,CACH,UAAU,EAAE,IAAI,KAAK,OAAO;QAC1B,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,UAAU,CAAC,GAAG,EAAE,CAAC;QACzD,CAAC,CAAC,SAAS,EACf,CAAC,UAAU,CAAC,CACb,CAAC;IAEF,MAAM,WAAW,GAAG,WAAW,CAAC,CAAC,WAAoB,EAAE,EAAE;QACvD,IAAI,WAAW,EAAE,IAAI,KAAK,OAAO,EAAE;YACjC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,WAAW,CAAC,IAAI,EAAE,KAAK,EAAE,WAAW,CAAC,GAAG,EAAE,CAAC,CAAC;SAC/E;QACD,aAAa,CAAC,WAAW,CAAC,CAAC;IAC7B,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,OAAO,CACL,KAAC,YAAY,IACX,SAAS,EAAE,2CACT,QAAQ,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,EACpC,IAAI,SAAS,EAAE,EACf,IAAI,EAAC,SAAS,KACV,IAAI,YAEP,QAAQ,KAAK,YAAY,CAAC,CAAC,CAAC,CAC3B,KAAC,cAAc,IACb,IAAI,EAAE,IAAI,EACV,OAAO,EAAE,WAAW,EACpB,UAAU,EAAE,UAAU,EACtB,WAAW,EAAE,WAAW,KACpB,IAAI,GACR,CACH,CAAC,CAAC,CAAC,CACF,IAAI,EAAE,GAAG,CACP,SAAS,CAAC;YACR,OAAO,EAAE,WAAW;YACpB,UAAU;YACV,WAAW;YACX,GAAG,IAAI;SACR,CAAC,CACH,CACF,GACY,CAChB,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,MAAM,QAAQ,GAAG,CAAC,KAAyB,EAAE,EAAE,CAAC,CAAC,CAAU,EAAE,EAAE,CAC7D,CAAC,CAAC,IAAI,KAAK,MAAM,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC"}
|
|
@@ -23,6 +23,13 @@ export declare type LinkTabData = LinkProps & {
|
|
|
23
23
|
* }
|
|
24
24
|
*/
|
|
25
25
|
export declare type TabData = GroupTabData | LinkTabData;
|
|
26
|
+
/**
|
|
27
|
+
* @enumNames [
|
|
28
|
+
* "По ширине экрана",
|
|
29
|
+
* "С прокруткой"
|
|
30
|
+
* ]
|
|
31
|
+
*/
|
|
32
|
+
export declare type TabsMode = 'wideScreen' | 'scrollable';
|
|
26
33
|
/**
|
|
27
34
|
* @title Вкладки
|
|
28
35
|
*/
|
|
@@ -33,4 +40,9 @@ export interface TabsContent {
|
|
|
33
40
|
isSticky?: boolean;
|
|
34
41
|
/** @title Показывать счетчик блоков во вкладках */
|
|
35
42
|
showCounter?: boolean;
|
|
43
|
+
/**
|
|
44
|
+
* @title Режим вкладок
|
|
45
|
+
* @default "wideScreen"
|
|
46
|
+
*/
|
|
47
|
+
tabsMode?: TabsMode;
|
|
36
48
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
|
-
import type { RenderTabProps } from './renderTab';
|
|
3
2
|
import type { GroupTabData } from './TabsContent';
|
|
4
|
-
|
|
3
|
+
import type { RenderTabProps } from './renderTab';
|
|
4
|
+
export declare const renderGroupTab: ({ page, currentTab, showCounter, onClick, isScrollable }: RenderTabProps) => (tab: GroupTabData, i: number) => JSX.Element;
|
|
@@ -1,15 +1,23 @@
|
|
|
1
1
|
import { jsxs as _jsxs, jsx as _jsx } from "@redneckz/uni-jsx/jsx-runtime";
|
|
2
|
-
import {
|
|
2
|
+
import { ACTIVE_TEXT_CLASSES, INACTIVE_TEXT_CLASSES, TEXT_CLASSES, WHITE_ACTIVE_TEXT_CLASSES, getGroupTabClassName, } from './tabItemClasses.js';
|
|
3
3
|
const BADGE_CLASSES = 'min-w-[22px] h-[22px] rounded-full text-xs ml-2 flex justify-center items-center';
|
|
4
4
|
const ACTIVE_BADGE_CLASSES = 'bg-white/30 text-white';
|
|
5
5
|
const INACTIVE_BADGE_CLASSES = 'bg-main-divider text-secondary-text group-hover/btn:text-primary-main';
|
|
6
|
-
export const renderGroupTab = ({ page, currentTab, showCounter, onClick }) => (tab, i) => {
|
|
6
|
+
export const renderGroupTab = ({ page, currentTab, showCounter, onClick, isScrollable = false }) => (tab, i) => {
|
|
7
7
|
const active = currentTab === tab;
|
|
8
8
|
const count = tab.ref && page?.blocks
|
|
9
9
|
? page.blocks.filter((block) => block?.labels?.includes(tab.ref)).length
|
|
10
10
|
: 0;
|
|
11
|
-
return (_jsx("div", { className:
|
|
11
|
+
return (_jsx("div", { className: getGroupTabClassName('div', active, isScrollable), role: "tab", "aria-selected": active, onClick: () => onClick(tab), children: _jsxs("div", { className: `flex flex-1 items-center justify-center ${getGroupTabClassName('text', active, isScrollable)}`, children: [renderTitle(tab.title, active, isScrollable), renderCount(showCounter, count, active)] }) }, `group-${String(i)}`));
|
|
12
|
+
};
|
|
13
|
+
const renderTitle = (title, active, isScrollable) => {
|
|
14
|
+
const activeClassName = active ? WHITE_ACTIVE_TEXT_CLASSES : INACTIVE_TEXT_CLASSES;
|
|
15
|
+
const titleClassName = isScrollable
|
|
16
|
+
? `${TEXT_CLASSES} ${activeClassName}`
|
|
17
|
+
: `${TEXT_CLASSES} ${active ? ACTIVE_TEXT_CLASSES : INACTIVE_TEXT_CLASSES}`;
|
|
18
|
+
return title ? _jsx("h3", { className: titleClassName, children: title }) : null;
|
|
19
|
+
};
|
|
20
|
+
const renderCount = (showCounter, count, active) => {
|
|
21
|
+
return showCounter && count ? (_jsx("div", { className: `${BADGE_CLASSES} ${active ? ACTIVE_BADGE_CLASSES : INACTIVE_BADGE_CLASSES}`, children: count })) : null;
|
|
12
22
|
};
|
|
13
|
-
const renderTitle = (title, active) => (_jsx("h3", { className: `${TEXT_CLASSES} ${active ? ACTIVE_TEXT_CLASSES : INACTIVE_TEXT_CLASSES}`, children: title }));
|
|
14
|
-
const renderCount = (count, active) => (_jsx("div", { className: `${BADGE_CLASSES} ${active ? ACTIVE_BADGE_CLASSES : INACTIVE_BADGE_CLASSES}`, children: count }));
|
|
15
23
|
//# sourceMappingURL=renderGroupTab.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"renderGroupTab.js","sourceRoot":"","sources":["../../../src/components/Tabs/renderGroupTab.tsx"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"renderGroupTab.js","sourceRoot":"","sources":["../../../src/components/Tabs/renderGroupTab.tsx"],"names":[],"mappings":";AAEA,OAAO,EACL,mBAAmB,EACnB,qBAAqB,EACrB,YAAY,EACZ,yBAAyB,EACzB,oBAAoB,GACrB,MAAM,kBAAkB,CAAC;AAE1B,MAAM,aAAa,GACjB,kFAAkF,CAAC;AACrF,MAAM,oBAAoB,GAAG,wBAAwB,CAAC;AACtD,MAAM,sBAAsB,GAC1B,uEAAuE,CAAC;AAE1E,MAAM,CAAC,MAAM,cAAc,GACzB,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,WAAW,EAAE,OAAO,EAAE,YAAY,GAAG,KAAK,EAAkB,EAAE,EAAE,CACrF,CAAC,GAAiB,EAAE,CAAS,EAAE,EAAE;IAC/B,MAAM,MAAM,GAAG,UAAU,KAAK,GAAG,CAAC;IAElC,MAAM,KAAK,GACT,GAAG,CAAC,GAAG,IAAI,IAAI,EAAE,MAAM;QACrB,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,GAAG,CAAC,GAAa,CAAC,CAAC,CAAC,MAAM;QAClF,CAAC,CAAC,CAAC,CAAC;IAER,OAAO,CACL,cAEE,SAAS,EAAE,oBAAoB,CAAC,KAAK,EAAE,MAAM,EAAE,YAAY,CAAC,EAC5D,IAAI,EAAC,KAAK,mBACK,MAAM,EACrB,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,YAE3B,eACE,SAAS,EAAE,2CAA2C,oBAAoB,CACxE,MAAM,EACN,MAAM,EACN,YAAY,CACb,EAAE,aAEF,WAAW,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,YAAY,CAAC,EAC5C,WAAW,CAAC,WAAW,EAAE,KAAK,EAAE,MAAM,CAAC,IACpC,IAfD,SAAS,MAAM,CAAC,CAAC,CAAC,EAAE,CAgBrB,CACP,CAAC;AACJ,CAAC,CAAC;AAEJ,MAAM,WAAW,GAAG,CAAC,KAAyB,EAAE,MAAe,EAAE,YAAqB,EAAE,EAAE;IACxF,MAAM,eAAe,GAAG,MAAM,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC,qBAAqB,CAAC;IACnF,MAAM,cAAc,GAAG,YAAY;QACjC,CAAC,CAAC,GAAG,YAAY,IAAI,eAAe,EAAE;QACtC,CAAC,CAAC,GAAG,YAAY,IAAI,MAAM,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,qBAAqB,EAAE,CAAC;IAE9E,OAAO,KAAK,CAAC,CAAC,CAAC,aAAI,SAAS,EAAE,cAAc,YAAG,KAAK,GAAM,CAAC,CAAC,CAAC,IAAI,CAAC;AACpE,CAAC,CAAC;AAEF,MAAM,WAAW,GAAG,CAAC,WAAgC,EAAE,KAAa,EAAE,MAAe,EAAE,EAAE;IACvF,OAAO,WAAW,IAAI,KAAK,CAAC,CAAC,CAAC,CAC5B,cAAK,SAAS,EAAE,GAAG,aAAa,IAAI,MAAM,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,sBAAsB,EAAE,YACzF,KAAK,GACF,CACP,CAAC,CAAC,CAAC,IAAI,CAAC;AACX,CAAC,CAAC"}
|
|
@@ -6,5 +6,6 @@ export interface RenderTabProps {
|
|
|
6
6
|
currentTab?: TabData;
|
|
7
7
|
showCounter?: boolean;
|
|
8
8
|
onClick: (tab: TabData) => void;
|
|
9
|
+
isScrollable?: boolean;
|
|
9
10
|
}
|
|
10
|
-
export declare const renderTab: ({ page, currentTab, showCounter, onClick }: RenderTabProps) => (tab: TabData, i: number) => JSX.Element | null;
|
|
11
|
+
export declare const renderTab: ({ page, currentTab, showCounter, onClick, isScrollable }: RenderTabProps) => (tab: TabData, i: number) => JSX.Element | null;
|
|
@@ -2,22 +2,20 @@ import { jsx as _jsx } from "@redneckz/uni-jsx/jsx-runtime";
|
|
|
2
2
|
import { assertUnreachable } from '../../utils/assertUnreachable.js';
|
|
3
3
|
import { LinkTab } from './LinkTab.js';
|
|
4
4
|
import { renderGroupTab } from './renderGroupTab.js';
|
|
5
|
-
export const renderTab = ({ page, currentTab, showCounter, onClick }) =>
|
|
6
|
-
// Linter doesn't understand that switch processes all cases
|
|
7
|
-
// eslint-disable-next-line consistent-return
|
|
8
|
-
(tab, i) => {
|
|
5
|
+
export const renderTab = ({ page, currentTab, showCounter, onClick, isScrollable = false }) => (tab, i) => {
|
|
9
6
|
const type = tab.type;
|
|
10
7
|
if (!(type === 'group' || type === 'link')) {
|
|
11
8
|
return null;
|
|
12
9
|
}
|
|
13
10
|
switch (type) {
|
|
14
11
|
case 'group':
|
|
15
|
-
return renderGroupTab({ page, currentTab, showCounter, onClick })(tab, i);
|
|
12
|
+
return renderGroupTab({ page, currentTab, showCounter, onClick, isScrollable })(tab, i);
|
|
16
13
|
case 'link': {
|
|
17
|
-
return _jsx(LinkTab, { tab: tab, currentTab: currentTab }, String(i));
|
|
14
|
+
return (_jsx(LinkTab, { tab: tab, currentTab: currentTab, isScrollable: isScrollable }, String(i)));
|
|
18
15
|
}
|
|
19
16
|
default:
|
|
20
17
|
assertUnreachable(type);
|
|
21
18
|
}
|
|
19
|
+
return null;
|
|
22
20
|
};
|
|
23
21
|
//# sourceMappingURL=renderTab.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"renderTab.js","sourceRoot":"","sources":["../../../src/components/Tabs/renderTab.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"renderTab.js","sourceRoot":"","sources":["../../../src/components/Tabs/renderTab.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAWlD,MAAM,CAAC,MAAM,SAAS,GACpB,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,WAAW,EAAE,OAAO,EAAE,YAAY,GAAG,KAAK,EAAkB,EAAE,EAAE,CACrF,CAAC,GAAY,EAAE,CAAS,EAAE,EAAE;IAC1B,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;IAEtB,IAAI,CAAC,CAAC,IAAI,KAAK,OAAO,IAAI,IAAI,KAAK,MAAM,CAAC,EAAE;QAC1C,OAAO,IAAI,CAAC;KACb;IAED,QAAQ,IAAI,EAAE;QACZ,KAAK,OAAO;YACV,OAAO,cAAc,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,WAAW,EAAE,OAAO,EAAE,YAAY,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QAC1F,KAAK,MAAM,CAAC,CAAC;YACX,OAAO,CACL,KAAC,OAAO,IAAiB,GAAG,EAAE,GAAG,EAAE,UAAU,EAAE,UAAU,EAAE,YAAY,EAAE,YAAY,IAAvE,MAAM,CAAC,CAAC,CAAC,CAAkE,CAC1F,CAAC;SACH;QACD;YACE,iBAAiB,CAAC,IAAI,CAAC,CAAC;KAC3B;IAED,OAAO,IAAI,CAAC;AACd,CAAC,CAAC"}
|
|
@@ -1,6 +1,11 @@
|
|
|
1
1
|
export declare const LINK_CLASSES = "h-12 flex-1 flex items-center justify-center cursor-pointer";
|
|
2
2
|
export declare const ACTIVE_LINK_CLASSES = "bg-primary-main";
|
|
3
3
|
export declare const INACTIVE_LINK_CLASSES = "group/btn bg-white";
|
|
4
|
-
export declare const
|
|
4
|
+
export declare const SCROLLABLE_ACTIVE_LINK_CLASSES = "bg-white text-primary-main";
|
|
5
|
+
export declare const WIDESCREEN_ACTIVE_LINK_CLASSES = "bg-primary-main text-white";
|
|
6
|
+
export declare const TEXT_CLASSES = "font-sans text-m text-center";
|
|
5
7
|
export declare const ACTIVE_TEXT_CLASSES = "text-white";
|
|
6
8
|
export declare const INACTIVE_TEXT_CLASSES = "text-secondary-text group-hover/btn:text-primary-main";
|
|
9
|
+
export declare const WHITE_ACTIVE_TEXT_CLASSES = "text-primary-main";
|
|
10
|
+
export declare const getGroupTabClassName: (type: string, active: boolean, isScrollable: boolean) => any;
|
|
11
|
+
export declare const getLinkTabClassName: (type: string, active: boolean, isScrollable: boolean) => any;
|
|
@@ -1,7 +1,64 @@
|
|
|
1
1
|
export const LINK_CLASSES = 'h-12 flex-1 flex items-center justify-center cursor-pointer';
|
|
2
2
|
export const ACTIVE_LINK_CLASSES = 'bg-primary-main';
|
|
3
3
|
export const INACTIVE_LINK_CLASSES = 'group/btn bg-white';
|
|
4
|
-
export const
|
|
4
|
+
export const SCROLLABLE_ACTIVE_LINK_CLASSES = 'bg-white text-primary-main';
|
|
5
|
+
export const WIDESCREEN_ACTIVE_LINK_CLASSES = 'bg-primary-main text-white';
|
|
6
|
+
export const TEXT_CLASSES = 'font-sans text-m text-center';
|
|
5
7
|
export const ACTIVE_TEXT_CLASSES = 'text-white';
|
|
6
8
|
export const INACTIVE_TEXT_CLASSES = 'text-secondary-text group-hover/btn:text-primary-main';
|
|
9
|
+
export const WHITE_ACTIVE_TEXT_CLASSES = 'text-primary-main';
|
|
10
|
+
const GROUP_TAB_CLASSES = {
|
|
11
|
+
div: {
|
|
12
|
+
scrollable: {
|
|
13
|
+
active: `inline-flex px-4 grow whitespace-nowrap ${LINK_CLASSES} ${SCROLLABLE_ACTIVE_LINK_CLASSES}`,
|
|
14
|
+
default: `inline-flex px-4 grow whitespace-nowrap ${LINK_CLASSES} ${INACTIVE_LINK_CLASSES}`,
|
|
15
|
+
},
|
|
16
|
+
default: {
|
|
17
|
+
active: `${LINK_CLASSES} ${WIDESCREEN_ACTIVE_LINK_CLASSES} whitespace-nowrap`,
|
|
18
|
+
default: `${LINK_CLASSES} ${INACTIVE_LINK_CLASSES} whitespace-nowrap`,
|
|
19
|
+
},
|
|
20
|
+
},
|
|
21
|
+
text: {
|
|
22
|
+
scrollable: {
|
|
23
|
+
active: `h-full border-0 border-b-2`,
|
|
24
|
+
default: ``,
|
|
25
|
+
},
|
|
26
|
+
default: {
|
|
27
|
+
active: '',
|
|
28
|
+
default: '',
|
|
29
|
+
},
|
|
30
|
+
},
|
|
31
|
+
};
|
|
32
|
+
const LINK_TAB_CLASSES = {
|
|
33
|
+
link: {
|
|
34
|
+
scrollable: {
|
|
35
|
+
active: `inline-flex px-4 grow whitespace-nowrap ${LINK_CLASSES} ${SCROLLABLE_ACTIVE_LINK_CLASSES}`,
|
|
36
|
+
default: `inline-flex px-4 grow whitespace-nowrap ${LINK_CLASSES} ${INACTIVE_LINK_CLASSES}`,
|
|
37
|
+
},
|
|
38
|
+
default: {
|
|
39
|
+
active: `${LINK_CLASSES} ${WIDESCREEN_ACTIVE_LINK_CLASSES}`,
|
|
40
|
+
default: `${LINK_CLASSES} ${INACTIVE_LINK_CLASSES}`,
|
|
41
|
+
},
|
|
42
|
+
},
|
|
43
|
+
text: {
|
|
44
|
+
scrollable: {
|
|
45
|
+
active: `${TEXT_CLASSES} flex items-center h-full border-0 border-b-2 ${WHITE_ACTIVE_TEXT_CLASSES}`,
|
|
46
|
+
default: `${TEXT_CLASSES} ${INACTIVE_TEXT_CLASSES}`,
|
|
47
|
+
},
|
|
48
|
+
default: {
|
|
49
|
+
active: `${TEXT_CLASSES} ${ACTIVE_TEXT_CLASSES}`,
|
|
50
|
+
default: `${TEXT_CLASSES} ${INACTIVE_TEXT_CLASSES}`,
|
|
51
|
+
},
|
|
52
|
+
},
|
|
53
|
+
};
|
|
54
|
+
export const getGroupTabClassName = (type, active, isScrollable) => {
|
|
55
|
+
const styleType = isScrollable ? 'scrollable' : 'default';
|
|
56
|
+
const styleActive = active ? 'active' : 'default';
|
|
57
|
+
return GROUP_TAB_CLASSES[type][styleType][styleActive];
|
|
58
|
+
};
|
|
59
|
+
export const getLinkTabClassName = (type, active, isScrollable) => {
|
|
60
|
+
const styleType = isScrollable ? 'scrollable' : 'default';
|
|
61
|
+
const styleActive = active ? 'active' : 'default';
|
|
62
|
+
return LINK_TAB_CLASSES[type][styleType][styleActive];
|
|
63
|
+
};
|
|
7
64
|
//# sourceMappingURL=tabItemClasses.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tabItemClasses.js","sourceRoot":"","sources":["../../../src/components/Tabs/tabItemClasses.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,YAAY,GAAG,6DAA6D,CAAC;AAC1F,MAAM,CAAC,MAAM,mBAAmB,GAAG,iBAAiB,CAAC;AACrD,MAAM,CAAC,MAAM,qBAAqB,GAAG,oBAAoB,CAAC;AAE1D,MAAM,CAAC,MAAM,YAAY,GAAG,
|
|
1
|
+
{"version":3,"file":"tabItemClasses.js","sourceRoot":"","sources":["../../../src/components/Tabs/tabItemClasses.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,YAAY,GAAG,6DAA6D,CAAC;AAC1F,MAAM,CAAC,MAAM,mBAAmB,GAAG,iBAAiB,CAAC;AACrD,MAAM,CAAC,MAAM,qBAAqB,GAAG,oBAAoB,CAAC;AAE1D,MAAM,CAAC,MAAM,8BAA8B,GAAG,4BAA4B,CAAC;AAC3E,MAAM,CAAC,MAAM,8BAA8B,GAAG,4BAA4B,CAAC;AAE3E,MAAM,CAAC,MAAM,YAAY,GAAG,8BAA8B,CAAC;AAC3D,MAAM,CAAC,MAAM,mBAAmB,GAAG,YAAY,CAAC;AAChD,MAAM,CAAC,MAAM,qBAAqB,GAAG,uDAAuD,CAAC;AAE7F,MAAM,CAAC,MAAM,yBAAyB,GAAG,mBAAmB,CAAC;AAE7D,MAAM,iBAAiB,GAAG;IACxB,GAAG,EAAE;QACH,UAAU,EAAE;YACV,MAAM,EAAE,2CAA2C,YAAY,IAAI,8BAA8B,EAAE;YACnG,OAAO,EAAE,2CAA2C,YAAY,IAAI,qBAAqB,EAAE;SAC5F;QACD,OAAO,EAAE;YACP,MAAM,EAAE,GAAG,YAAY,IAAI,8BAA8B,oBAAoB;YAC7E,OAAO,EAAE,GAAG,YAAY,IAAI,qBAAqB,oBAAoB;SACtE;KACF;IACD,IAAI,EAAE;QACJ,UAAU,EAAE;YACV,MAAM,EAAE,4BAA4B;YACpC,OAAO,EAAE,EAAE;SACZ;QACD,OAAO,EAAE;YACP,MAAM,EAAE,EAAE;YACV,OAAO,EAAE,EAAE;SACZ;KACF;CACF,CAAC;AACF,MAAM,gBAAgB,GAAG;IACvB,IAAI,EAAE;QACJ,UAAU,EAAE;YACV,MAAM,EAAE,2CAA2C,YAAY,IAAI,8BAA8B,EAAE;YACnG,OAAO,EAAE,2CAA2C,YAAY,IAAI,qBAAqB,EAAE;SAC5F;QACD,OAAO,EAAE;YACP,MAAM,EAAE,GAAG,YAAY,IAAI,8BAA8B,EAAE;YAC3D,OAAO,EAAE,GAAG,YAAY,IAAI,qBAAqB,EAAE;SACpD;KACF;IACD,IAAI,EAAE;QACJ,UAAU,EAAE;YACV,MAAM,EAAE,GAAG,YAAY,iDAAiD,yBAAyB,EAAE;YACnG,OAAO,EAAE,GAAG,YAAY,IAAI,qBAAqB,EAAE;SACpD;QACD,OAAO,EAAE;YACP,MAAM,EAAE,GAAG,YAAY,IAAI,mBAAmB,EAAE;YAChD,OAAO,EAAE,GAAG,YAAY,IAAI,qBAAqB,EAAE;SACpD;KACF;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,IAAY,EAAE,MAAe,EAAE,YAAqB,EAAE,EAAE;IAC3F,MAAM,SAAS,GAAG,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC;IAC1D,MAAM,WAAW,GAAG,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;IAElD,OAAO,iBAAiB,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC,WAAW,CAAC,CAAC;AACzD,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,IAAY,EAAE,MAAe,EAAE,YAAqB,EAAE,EAAE;IAC1F,MAAM,SAAS,GAAG,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC;IAC1D,MAAM,WAAW,GAAG,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;IAElD,OAAO,gBAAgB,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC,WAAW,CAAC,CAAC;AACxD,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setup-fixture.js","sourceRoot":"","sources":["../src/setup-fixture.ts"],"names":[],"mappings":"AAAA,OAAO,mCAAmC,CAAC;AAC3C,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACjC,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,GAAG,MAAM,YAAY,CAAC;AAE7B,eAAe,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AAE3B,SAAS,CAAC,KAAK,CAAC,GAAG,EAAE;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC,GAAG,QAAQ,CAAS,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IAE/D,OAAO;QACL,IAAI,EAAE,GAAG,UAAU,CAAC,QAAQ,CAAC,MAAM,GAAG,eAAe,CAAC,SAAS,cAAc;QAC7E,QAAQ,EAAE,eAAe;QACzB,KAAK,EAAE,EAAE;QACT,IAAI,EAAE,CAAC,GAAW,EAAE,EAAE;YACpB,UAAU,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;YAC5C,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACpC,CAAC;QACD,OAAO,EAAE,CAAC,GAAW,EAAE,EAAE;YACvB,UAAU,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;YAC/C,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACpC,CAAC;KACF,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,gBAAgB,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,aAAa,EAAO,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE;IAC7D,EAAE,CAAC,cAAc,EAAE,CAAC;IACpB,OAAO,CAAC,
|
|
1
|
+
{"version":3,"file":"setup-fixture.js","sourceRoot":"","sources":["../src/setup-fixture.ts"],"names":[],"mappings":"AAAA,OAAO,mCAAmC,CAAC;AAC3C,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACjC,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,GAAG,MAAM,YAAY,CAAC;AAE7B,eAAe,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AAE3B,SAAS,CAAC,KAAK,CAAC,GAAG,EAAE;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC,GAAG,QAAQ,CAAS,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IAE/D,OAAO;QACL,IAAI,EAAE,GAAG,UAAU,CAAC,QAAQ,CAAC,MAAM,GAAG,eAAe,CAAC,SAAS,cAAc;QAC7E,QAAQ,EAAE,eAAe;QACzB,KAAK,EAAE,EAAE;QACT,IAAI,EAAE,CAAC,GAAW,EAAE,EAAE;YACpB,UAAU,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;YAC5C,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACpC,CAAC;QACD,OAAO,EAAE,CAAC,GAAW,EAAE,EAAE;YACvB,UAAU,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;YAC/C,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACpC,CAAC;KACF,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,gBAAgB,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,aAAa,EAAO,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE;IAC7D,EAAE,CAAC,cAAc,EAAE,CAAC;IACpB,OAAO,CAAC,EAAE,CAAC,CAAC;AACd,CAAC,CAAC,CAAC"}
|
|
@@ -1,22 +1,16 @@
|
|
|
1
1
|
import { JSX } from '@redneckz/uni-jsx';
|
|
2
2
|
import { useLink } from '../../hooks/useLink';
|
|
3
|
-
import {
|
|
4
|
-
ACTIVE_LINK_CLASSES,
|
|
5
|
-
ACTIVE_TEXT_CLASSES,
|
|
6
|
-
INACTIVE_LINK_CLASSES,
|
|
7
|
-
INACTIVE_TEXT_CLASSES,
|
|
8
|
-
LINK_CLASSES,
|
|
9
|
-
TEXT_CLASSES,
|
|
10
|
-
} from './tabItemClasses';
|
|
3
|
+
import { getLinkTabClassName } from './tabItemClasses';
|
|
11
4
|
import type { LinkTabData, TabData } from './TabsContent';
|
|
12
5
|
|
|
13
6
|
interface LinkTabProps {
|
|
14
7
|
tab: LinkTabData;
|
|
15
8
|
currentTab?: TabData;
|
|
9
|
+
isScrollable?: boolean;
|
|
16
10
|
}
|
|
17
11
|
|
|
18
12
|
export const LinkTab = JSX<LinkTabProps>((props) => {
|
|
19
|
-
const { tab, currentTab } = props;
|
|
13
|
+
const { tab, currentTab, isScrollable = false } = props;
|
|
20
14
|
const active = currentTab?.type === 'link' && currentTab.href === tab.href;
|
|
21
15
|
|
|
22
16
|
const link = useLink();
|
|
@@ -25,14 +19,12 @@ export const LinkTab = JSX<LinkTabProps>((props) => {
|
|
|
25
19
|
return (
|
|
26
20
|
<a
|
|
27
21
|
role="tab"
|
|
28
|
-
className={
|
|
22
|
+
className={getLinkTabClassName('link', active, isScrollable)}
|
|
29
23
|
target={tab.target}
|
|
30
24
|
href={adjustedProps.href}
|
|
31
25
|
onClick={adjustedProps.onClick}
|
|
32
26
|
>
|
|
33
|
-
<span className={
|
|
34
|
-
{tab.text}
|
|
35
|
-
</span>
|
|
27
|
+
<span className={getLinkTabClassName('text', active, isScrollable)}>{tab.text}</span>
|
|
36
28
|
</a>
|
|
37
29
|
);
|
|
38
30
|
});
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { JSX } from '@redneckz/uni-jsx';
|
|
2
|
+
import type { RenderTabProps } from './renderTab';
|
|
3
|
+
import type { TabData } from './TabsContent';
|
|
4
|
+
import { SwipeListContainer } from '../../ui-kit/SwipeListControl/SwipeListContainer';
|
|
5
|
+
import { useSwipeListScroll } from '../../ui-kit/SwipeListControl/useSwipeListScroll';
|
|
6
|
+
import { ScrollLeftButton, ScrollRightButton } from '../../ui-kit/Button/ArrowButton';
|
|
7
|
+
import { renderTab } from './renderTab';
|
|
8
|
+
|
|
9
|
+
interface ScrollableTabsProps extends RenderTabProps {
|
|
10
|
+
tabs?: TabData[];
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
export type IsScrollButtonsShown = boolean[];
|
|
14
|
+
|
|
15
|
+
const scrollButtonStyle = 'absolute z-50 top-0';
|
|
16
|
+
|
|
17
|
+
export const ScrollableTabs = JSX<ScrollableTabsProps>((props) => {
|
|
18
|
+
const { tabs, onClick, currentTab, page, showCounter } = props;
|
|
19
|
+
|
|
20
|
+
const [containerRef, scroll] = useSwipeListScroll<HTMLDivElement>({
|
|
21
|
+
itemCount: tabs?.length || 0,
|
|
22
|
+
isCyclic: false,
|
|
23
|
+
});
|
|
24
|
+
|
|
25
|
+
return (
|
|
26
|
+
<div className="relative max-w-full m-auto">
|
|
27
|
+
<div className={`font-sans max-w-full w-full overflow-hidden relative bg-white`}>
|
|
28
|
+
<SwipeListContainer
|
|
29
|
+
containerRef={containerRef}
|
|
30
|
+
snapAlign="snap-start"
|
|
31
|
+
onVisibleIndicesChange={scroll.handleVisibleIndicesChange}
|
|
32
|
+
>
|
|
33
|
+
{tabs?.map(
|
|
34
|
+
renderTab({
|
|
35
|
+
onClick,
|
|
36
|
+
currentTab,
|
|
37
|
+
showCounter,
|
|
38
|
+
page,
|
|
39
|
+
isScrollable: true,
|
|
40
|
+
}),
|
|
41
|
+
)}
|
|
42
|
+
</SwipeListContainer>
|
|
43
|
+
</div>
|
|
44
|
+
{scroll.canScrollLeft ? (
|
|
45
|
+
<ScrollLeftButton className={`${scrollButtonStyle} left-6`} onClick={scroll.scrollLeft} />
|
|
46
|
+
) : null}
|
|
47
|
+
{scroll.canScrollRight ? (
|
|
48
|
+
<ScrollRightButton
|
|
49
|
+
className={`${scrollButtonStyle} rotate-180 right-6`}
|
|
50
|
+
onClick={scroll.scrollRight}
|
|
51
|
+
/>
|
|
52
|
+
) : null}
|
|
53
|
+
</div>
|
|
54
|
+
);
|
|
55
|
+
});
|