@tedi-design-system/react 18.0.0-rc.21 → 18.0.0-rc.22
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/_virtual/index.es13.js +2 -2
- package/_virtual/index.es14.js +2 -2
- package/bundle-stats.html +1 -1
- package/external/hoist-non-react-statics/external/react-is/cjs/react-is.development.cjs.js +1 -1
- package/external/hoist-non-react-statics/external/react-is/cjs/react-is.development.es.js +1 -1
- package/external/hoist-non-react-statics/external/react-is/cjs/react-is.production.min.cjs.js +1 -1
- package/external/hoist-non-react-statics/external/react-is/cjs/react-is.production.min.es.js +1 -1
- package/external/hoist-non-react-statics/external/react-is/index.cjs.js +1 -1
- package/external/hoist-non-react-statics/external/react-is/index.es.js +1 -1
- package/external/prop-types/external/react-is/cjs/react-is.development.cjs.js +1 -1
- package/external/prop-types/external/react-is/cjs/react-is.development.es.js +1 -1
- package/external/prop-types/external/react-is/cjs/react-is.production.min.cjs.js +1 -1
- package/external/prop-types/external/react-is/cjs/react-is.production.min.es.js +1 -1
- package/external/prop-types/external/react-is/index.cjs.js +1 -1
- package/external/prop-types/external/react-is/index.es.js +1 -1
- package/external/react-is/index.cjs.js +1 -1
- package/external/react-is/index.es.js +1 -1
- package/external/toposort/index.cjs.js +1 -1
- package/external/toposort/index.es.js +1 -1
- package/index.css +1 -1
- package/package.json +1 -1
- package/src/tedi/components/navigation/tabs/tabs-list/tabs-list.cjs.js +1 -1
- package/src/tedi/components/navigation/tabs/tabs-list/tabs-list.d.ts +4 -0
- package/src/tedi/components/navigation/tabs/tabs-list/tabs-list.es.js +70 -68
package/package.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const l=require("react/jsx-runtime"),m=require("../../../../../../external/classnames/index.cjs.js"),r=require("react"),W=require("../../../base/icon/icon.cjs.js"),z=require("../../../misc/print/print.cjs.js"),i=require("../../../overlays/dropdown/dropdown.cjs.js"),o=require("../tabs.module.scss.cjs.js"),P=require("../tabs-context.cjs.js"),A=require("../../../../providers/label-provider/use-labels.cjs.js"),F=require("../../../../helpers/hooks/use-scroll-fade.cjs.js"),_=v=>{const{children:c,className:x,"aria-label":L,"aria-labelledby":g,printVisibility:S="show",overflowMode:s="dropdown",dropdownLabel:j}=v,{getLabel:y}=A.useLabels(),{currentTab:q,setCurrentTab:C}=P.useTabsContext(),d=r.useRef(null),b=r.useRef(null),[R,T]=r.useState(!1),{scrollRef:f,canScrollStart:M,canScrollEnd:N,handleScroll:E}=F.useScrollFade({direction:"horizontal"}),I=r.useCallback(e=>{b.current=e,s==="scroll"&&f(e)},[s,f]),u=r.useMemo(()=>r.Children.toArray(c).filter(r.isValidElement),[c]),p=r.useMemo(()=>{const e=[];return u.forEach(t=>{const a=t.props;e.push({id:a.id,label:a.children,disabled:a.disabled})}),e},[u]),w=s==="dropdown"&&R&&p.length>1,O=p.filter(e=>e.id!==q),k=e=>{e&&C(e)},n=r.useCallback(()=>{const e=d.current,t=b.current;if(!e||!t||t.clientWidth===0)return;const a=o.default["tedi-tabs__list--overflow"],h=t.classList.contains(a);h&&t.classList.remove(a);const D=t.scrollWidth;h&&t.classList.add(a),T(D>e.clientWidth)},[]);return r.useLayoutEffect(()=>{s==="dropdown"&&n()},[s,n,u]),r.useEffect(()=>{if(s!=="dropdown")return;const e=d.current;if(!e)return;const t=new ResizeObserver(n);return t.observe(e),()=>t.disconnect()},[s,n]),l.jsx(z.Print,{visibility:S,children:l.jsxs("div",{ref:d,className:m.default(o.default["tedi-tabs__list-wrapper"],{[o.default["tedi-tabs__list-wrapper--scroll-fade-left"]]:s==="scroll"&&M,[o.default["tedi-tabs__list-wrapper--scroll-fade-right"]]:s==="scroll"&&N}),children:[l.jsx("div",{ref:I,"data-name":"tabs-list",role:"tablist","aria-label":L,"aria-labelledby":g,className:m.default(o.default["tedi-tabs__list"],{[o.default["tedi-tabs__list--overflow"]]:w},{[o.default["tedi-tabs__list--scroll"]]:s==="scroll"},x),onScroll:s==="scroll"?E:void 0,children:c}),w&&l.jsx("div",{className:o.default["tedi-tabs__more-wrapper"],children:l.jsxs(i.Dropdown,{placement:"bottom-end",children:[l.jsx(i.Dropdown.Trigger,{children:l.jsxs("button",{"data-name":"tabs-more-btn",type:"button",className:o.default["tedi-tabs__more-btn"],children:[j??y("tabs.more"),l.jsx(W.Icon,{name:"expand_more",size:18})]})}),l.jsx(i.Dropdown.Content,{children:O.map((e,t)=>l.jsx(i.Dropdown.Item,{index:t,disabled:e.disabled,onClick:()=>k(e.id),children:e.label},e.id))})]})})]})})};_.displayName="TabsList";exports.TabsList=_;
|
|
@@ -29,6 +29,10 @@ export interface TabsListProps {
|
|
|
29
29
|
* @default 'dropdown'
|
|
30
30
|
*/
|
|
31
31
|
overflowMode?: 'dropdown' | 'scroll';
|
|
32
|
+
/**
|
|
33
|
+
* Label for the overflow dropdown trigger. Defaults to the `tabs.more` label.
|
|
34
|
+
*/
|
|
35
|
+
dropdownLabel?: string;
|
|
32
36
|
}
|
|
33
37
|
export declare const TabsList: {
|
|
34
38
|
(props: TabsListProps): import("react/jsx-runtime").JSX.Element;
|
|
@@ -1,92 +1,94 @@
|
|
|
1
|
-
import { jsx as
|
|
2
|
-
import
|
|
3
|
-
import i, { useRef as
|
|
4
|
-
import { Icon as
|
|
5
|
-
import { Print as
|
|
6
|
-
import { Dropdown as
|
|
7
|
-
import
|
|
8
|
-
import { useTabsContext as
|
|
9
|
-
import { useLabels as
|
|
10
|
-
import { useScrollFade as
|
|
11
|
-
const
|
|
1
|
+
import { jsx as o, jsxs as f } from "react/jsx-runtime";
|
|
2
|
+
import _ from "../../../../../../external/classnames/index.es.js";
|
|
3
|
+
import i, { useRef as v, useState as V, useCallback as L, useLayoutEffect as B, useEffect as D } from "react";
|
|
4
|
+
import { Icon as F } from "../../../base/icon/icon.es.js";
|
|
5
|
+
import { Print as q } from "../../../misc/print/print.es.js";
|
|
6
|
+
import { Dropdown as n } from "../../../overlays/dropdown/dropdown.es.js";
|
|
7
|
+
import s from "../tabs.module.scss.es.js";
|
|
8
|
+
import { useTabsContext as G } from "../tabs-context.es.js";
|
|
9
|
+
import { useLabels as H } from "../../../../providers/label-provider/use-labels.es.js";
|
|
10
|
+
import { useScrollFade as J } from "../../../../helpers/hooks/use-scroll-fade.es.js";
|
|
11
|
+
const K = (g) => {
|
|
12
12
|
const {
|
|
13
13
|
children: c,
|
|
14
|
-
className:
|
|
15
|
-
"aria-label":
|
|
16
|
-
"aria-labelledby":
|
|
17
|
-
printVisibility:
|
|
18
|
-
overflowMode:
|
|
19
|
-
|
|
20
|
-
m
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
} = H({ direction: "horizontal" }), k = P(
|
|
14
|
+
className: y,
|
|
15
|
+
"aria-label": S,
|
|
16
|
+
"aria-labelledby": C,
|
|
17
|
+
printVisibility: R = "show",
|
|
18
|
+
overflowMode: t = "dropdown",
|
|
19
|
+
dropdownLabel: N
|
|
20
|
+
} = g, { getLabel: T } = H(), { currentTab: x, setCurrentTab: E } = G(), d = v(null), m = v(null), [I, M] = V(!1), {
|
|
21
|
+
scrollRef: p,
|
|
22
|
+
canScrollStart: O,
|
|
23
|
+
canScrollEnd: W,
|
|
24
|
+
handleScroll: k
|
|
25
|
+
} = J({ direction: "horizontal" }), z = L(
|
|
27
26
|
(e) => {
|
|
28
|
-
|
|
27
|
+
m.current = e, t === "scroll" && p(e);
|
|
29
28
|
},
|
|
30
|
-
[
|
|
31
|
-
),
|
|
29
|
+
[t, p]
|
|
30
|
+
), b = i.useMemo(() => i.Children.toArray(c).filter(i.isValidElement), [c]), u = i.useMemo(() => {
|
|
32
31
|
const e = [];
|
|
33
|
-
return
|
|
34
|
-
const
|
|
35
|
-
e.push({ id:
|
|
32
|
+
return b.forEach((r) => {
|
|
33
|
+
const l = r.props;
|
|
34
|
+
e.push({ id: l.id, label: l.children, disabled: l.disabled });
|
|
36
35
|
}), e;
|
|
37
|
-
}, [
|
|
36
|
+
}, [b]), h = t === "dropdown" && I && u.length > 1, j = u.filter((e) => e.id !== x), A = (e) => {
|
|
38
37
|
e && E(e);
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
if (r
|
|
38
|
+
}, a = L(() => {
|
|
39
|
+
const e = d.current, r = m.current;
|
|
40
|
+
if (!e || !r || r.clientWidth === 0) return;
|
|
41
|
+
const l = s["tedi-tabs__list--overflow"], w = r.classList.contains(l);
|
|
42
|
+
w && r.classList.remove(l);
|
|
43
|
+
const P = r.scrollWidth;
|
|
44
|
+
w && r.classList.add(l), M(P > e.clientWidth);
|
|
45
|
+
}, []);
|
|
46
|
+
return B(() => {
|
|
47
|
+
t === "dropdown" && a();
|
|
48
|
+
}, [t, a, b]), D(() => {
|
|
49
|
+
if (t !== "dropdown") return;
|
|
42
50
|
const e = d.current;
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
if (!e || !t) return;
|
|
48
|
-
const o = () => {
|
|
49
|
-
m.current ? u.current <= e.clientWidth && b(!1) : t.scrollWidth > t.clientWidth && t.clientWidth > 0 && (u.current = t.scrollWidth, b(!0));
|
|
50
|
-
}, y = new ResizeObserver(o);
|
|
51
|
-
return y.observe(e), () => y.disconnect();
|
|
52
|
-
}, [r]), /* @__PURE__ */ s(F, { visibility: C, children: /* @__PURE__ */ h(
|
|
51
|
+
if (!e) return;
|
|
52
|
+
const r = new ResizeObserver(a);
|
|
53
|
+
return r.observe(e), () => r.disconnect();
|
|
54
|
+
}, [t, a]), /* @__PURE__ */ o(q, { visibility: R, children: /* @__PURE__ */ f(
|
|
53
55
|
"div",
|
|
54
56
|
{
|
|
55
|
-
ref:
|
|
56
|
-
className:
|
|
57
|
-
[
|
|
58
|
-
[
|
|
57
|
+
ref: d,
|
|
58
|
+
className: _(s["tedi-tabs__list-wrapper"], {
|
|
59
|
+
[s["tedi-tabs__list-wrapper--scroll-fade-left"]]: t === "scroll" && O,
|
|
60
|
+
[s["tedi-tabs__list-wrapper--scroll-fade-right"]]: t === "scroll" && W
|
|
59
61
|
}),
|
|
60
62
|
children: [
|
|
61
|
-
/* @__PURE__ */
|
|
63
|
+
/* @__PURE__ */ o(
|
|
62
64
|
"div",
|
|
63
65
|
{
|
|
64
|
-
ref:
|
|
66
|
+
ref: z,
|
|
65
67
|
"data-name": "tabs-list",
|
|
66
68
|
role: "tablist",
|
|
67
|
-
"aria-label":
|
|
68
|
-
"aria-labelledby":
|
|
69
|
-
className:
|
|
70
|
-
|
|
71
|
-
{ [
|
|
72
|
-
{ [
|
|
73
|
-
|
|
69
|
+
"aria-label": S,
|
|
70
|
+
"aria-labelledby": C,
|
|
71
|
+
className: _(
|
|
72
|
+
s["tedi-tabs__list"],
|
|
73
|
+
{ [s["tedi-tabs__list--overflow"]]: h },
|
|
74
|
+
{ [s["tedi-tabs__list--scroll"]]: t === "scroll" },
|
|
75
|
+
y
|
|
74
76
|
),
|
|
75
|
-
onScroll:
|
|
77
|
+
onScroll: t === "scroll" ? k : void 0,
|
|
76
78
|
children: c
|
|
77
79
|
}
|
|
78
80
|
),
|
|
79
|
-
|
|
80
|
-
/* @__PURE__ */
|
|
81
|
-
T("tabs.more"),
|
|
82
|
-
/* @__PURE__ */
|
|
81
|
+
h && /* @__PURE__ */ o("div", { className: s["tedi-tabs__more-wrapper"], children: /* @__PURE__ */ f(n, { placement: "bottom-end", children: [
|
|
82
|
+
/* @__PURE__ */ o(n.Trigger, { children: /* @__PURE__ */ f("button", { "data-name": "tabs-more-btn", type: "button", className: s["tedi-tabs__more-btn"], children: [
|
|
83
|
+
N ?? T("tabs.more"),
|
|
84
|
+
/* @__PURE__ */ o(F, { name: "expand_more", size: 18 })
|
|
83
85
|
] }) }),
|
|
84
|
-
/* @__PURE__ */
|
|
85
|
-
|
|
86
|
+
/* @__PURE__ */ o(n.Content, { children: j.map((e, r) => /* @__PURE__ */ o(
|
|
87
|
+
n.Item,
|
|
86
88
|
{
|
|
87
|
-
index:
|
|
89
|
+
index: r,
|
|
88
90
|
disabled: e.disabled,
|
|
89
|
-
onClick: () =>
|
|
91
|
+
onClick: () => A(e.id),
|
|
90
92
|
children: e.label
|
|
91
93
|
},
|
|
92
94
|
e.id
|
|
@@ -96,7 +98,7 @@ const J = (S) => {
|
|
|
96
98
|
}
|
|
97
99
|
) });
|
|
98
100
|
};
|
|
99
|
-
|
|
101
|
+
K.displayName = "TabsList";
|
|
100
102
|
export {
|
|
101
|
-
|
|
103
|
+
K as TabsList
|
|
102
104
|
};
|