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