@tedi-design-system/react 19.1.0-rc.1 → 19.1.0-rc.11

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 (106) hide show
  1. package/DESIGN.md +308 -0
  2. package/README.md +28 -0
  3. package/bundle-stats.html +1 -1
  4. package/component.manifest.json +1200 -0
  5. package/external/hoist-non-react-statics/external/react-is/cjs/react-is.development.cjs.js +1 -1
  6. package/external/hoist-non-react-statics/external/react-is/cjs/react-is.development.es.js +1 -1
  7. package/external/hoist-non-react-statics/external/react-is/cjs/react-is.production.min.cjs.js +1 -1
  8. package/external/hoist-non-react-statics/external/react-is/cjs/react-is.production.min.es.js +1 -1
  9. package/external/hoist-non-react-statics/external/react-is/index.cjs.js +1 -1
  10. package/external/hoist-non-react-statics/external/react-is/index.es.js +1 -1
  11. package/external/prop-types/external/react-is/cjs/react-is.development.cjs.js +1 -1
  12. package/external/prop-types/external/react-is/cjs/react-is.development.es.js +1 -1
  13. package/external/prop-types/external/react-is/cjs/react-is.production.min.cjs.js +1 -1
  14. package/external/prop-types/external/react-is/cjs/react-is.production.min.es.js +1 -1
  15. package/external/prop-types/external/react-is/index.cjs.js +1 -1
  16. package/external/prop-types/external/react-is/index.es.js +1 -1
  17. package/index.css +1 -1
  18. package/package.json +2 -2
  19. package/src/community/components/layout/sidenav/sidenav.cjs.js +1 -1
  20. package/src/community/components/layout/sidenav/sidenav.es.js +38 -40
  21. package/src/community/components/map-components/base-map-selection/base-map-option.cjs.js +1 -1
  22. package/src/community/components/map-components/base-map-selection/base-map-option.d.ts +8 -5
  23. package/src/community/components/map-components/base-map-selection/base-map-option.es.js +63 -65
  24. package/src/community/components/map-components/base-map-selection/base-map-selection.cjs.js +1 -1
  25. package/src/community/components/map-components/base-map-selection/base-map-selection.d.ts +1 -4
  26. package/src/community/components/map-components/base-map-selection/base-map-selection.es.js +55 -55
  27. package/src/community/components/map-components/map-button/map-button.cjs.js +1 -1
  28. package/src/community/components/map-components/map-button/map-button.d.ts +2 -3
  29. package/src/community/components/map-components/map-button/map-button.es.js +37 -36
  30. package/src/community/components/map-components/map-dropdown/map-dropdown.cjs.js +1 -1
  31. package/src/community/components/map-components/map-dropdown/map-dropdown.es.js +51 -49
  32. package/src/tedi/components/content/card/card.d.ts +4 -0
  33. package/src/tedi/components/content/card/card.module.scss.cjs.js +1 -1
  34. package/src/tedi/components/content/card/card.module.scss.es.js +3 -2
  35. package/src/tedi/components/content/collapse/collapse.cjs.js +1 -1
  36. package/src/tedi/components/content/collapse/collapse.d.ts +9 -0
  37. package/src/tedi/components/content/collapse/collapse.es.js +44 -35
  38. package/src/tedi/components/content/table-card/index.d.ts +1 -0
  39. package/src/tedi/components/content/table-card/table-card.cjs.js +1 -0
  40. package/src/tedi/components/content/table-card/table-card.d.ts +131 -0
  41. package/src/tedi/components/content/table-card/table-card.es.js +206 -0
  42. package/src/tedi/components/content/table-card/table-card.module.scss.cjs.js +1 -0
  43. package/src/tedi/components/content/table-card/table-card.module.scss.es.js +18 -0
  44. package/src/tedi/components/content/text-group/text-group-list/text-group-list.cjs.js +1 -1
  45. package/src/tedi/components/content/text-group/text-group-list/text-group-list.d.ts +42 -0
  46. package/src/tedi/components/content/text-group/text-group-list/text-group-list.es.js +41 -23
  47. package/src/tedi/components/content/text-group/text-group.cjs.js +1 -1
  48. package/src/tedi/components/content/text-group/text-group.d.ts +10 -0
  49. package/src/tedi/components/content/text-group/text-group.es.js +14 -13
  50. package/src/tedi/components/content/text-group/text-group.module.scss.cjs.js +1 -1
  51. package/src/tedi/components/content/text-group/text-group.module.scss.es.js +5 -1
  52. package/src/tedi/components/filter/filter/filter.cjs.js +1 -1
  53. package/src/tedi/components/filter/filter/filter.d.ts +5 -0
  54. package/src/tedi/components/filter/filter/filter.es.js +154 -144
  55. package/src/tedi/components/filter/filter/filter.module.scss.cjs.js +1 -1
  56. package/src/tedi/components/filter/filter/filter.module.scss.es.js +2 -1
  57. package/src/tedi/components/form/date-field/date-field-helpers.cjs.js +1 -1
  58. package/src/tedi/components/form/date-field/date-field-helpers.d.ts +12 -19
  59. package/src/tedi/components/form/date-field/date-field-helpers.es.js +27 -21
  60. package/src/tedi/components/form/date-field/date-field.cjs.js +1 -1
  61. package/src/tedi/components/form/date-field/date-field.d.ts +1 -1
  62. package/src/tedi/components/form/date-field/date-field.es.js +169 -164
  63. package/src/tedi/components/form/textfield/textfield.cjs.js +1 -1
  64. package/src/tedi/components/form/textfield/textfield.es.js +21 -21
  65. package/src/tedi/components/form/time-field/time-field.cjs.js +1 -1
  66. package/src/tedi/components/form/time-field/time-field.es.js +126 -124
  67. package/src/tedi/components/layout/sidenav/components/sidenav-item/sidenav-item.cjs.js +1 -1
  68. package/src/tedi/components/layout/sidenav/components/sidenav-item/sidenav-item.es.js +82 -85
  69. package/src/tedi/components/layout/sidenav/sidenav.cjs.js +1 -1
  70. package/src/tedi/components/layout/sidenav/sidenav.es.js +16 -16
  71. package/src/tedi/components/layout/top-nav/components/top-nav-item/top-nav-item.cjs.js +1 -1
  72. package/src/tedi/components/layout/top-nav/components/top-nav-item/top-nav-item.es.js +6 -7
  73. package/src/tedi/components/layout/top-nav/components/top-nav-separator/top-nav-separator.cjs.js +1 -1
  74. package/src/tedi/components/layout/top-nav/components/top-nav-separator/top-nav-separator.es.js +2 -2
  75. package/src/tedi/components/layout/top-nav/top-nav.cjs.js +1 -1
  76. package/src/tedi/components/layout/top-nav/top-nav.es.js +9 -8
  77. package/src/tedi/components/misc/affix/affix.cjs.js +1 -1
  78. package/src/tedi/components/misc/affix/affix.es.js +20 -8
  79. package/src/tedi/components/navigation/table-of-contents/components/table-of-contents-collapsible/table-of-contents-collapsible.cjs.js +1 -1
  80. package/src/tedi/components/navigation/table-of-contents/components/table-of-contents-collapsible/table-of-contents-collapsible.d.ts +9 -1
  81. package/src/tedi/components/navigation/table-of-contents/components/table-of-contents-collapsible/table-of-contents-collapsible.es.js +78 -39
  82. package/src/tedi/components/navigation/table-of-contents/components/table-of-contents-item/table-of-contents-item.d.ts +6 -0
  83. package/src/tedi/components/navigation/table-of-contents/components/table-of-contents-row/table-of-contents-row.cjs.js +1 -1
  84. package/src/tedi/components/navigation/table-of-contents/components/table-of-contents-row/table-of-contents-row.es.js +23 -28
  85. package/src/tedi/components/navigation/table-of-contents/table-of-contents.cjs.js +1 -1
  86. package/src/tedi/components/navigation/table-of-contents/table-of-contents.d.ts +32 -21
  87. package/src/tedi/components/navigation/table-of-contents/table-of-contents.es.js +58 -55
  88. package/src/tedi/components/navigation/table-of-contents/table-of-contents.module.scss.cjs.js +1 -1
  89. package/src/tedi/components/navigation/table-of-contents/table-of-contents.module.scss.es.js +4 -1
  90. package/src/tedi/components/overlays/dropdown/dropdown.cjs.js +1 -1
  91. package/src/tedi/components/overlays/dropdown/dropdown.d.ts +8 -0
  92. package/src/tedi/components/overlays/dropdown/dropdown.es.js +82 -74
  93. package/src/tedi/components/overlays/dropdown/dropdown.module.scss.cjs.js +1 -1
  94. package/src/tedi/components/overlays/dropdown/dropdown.module.scss.es.js +1 -0
  95. package/src/tedi/components/overlays/overlay/overlay-trigger.cjs.js +1 -1
  96. package/src/tedi/components/overlays/overlay/overlay-trigger.es.js +22 -21
  97. package/src/tedi/helpers/hooks/use-safe-id.cjs.js +1 -0
  98. package/src/tedi/helpers/hooks/use-safe-id.d.ts +16 -0
  99. package/src/tedi/helpers/hooks/use-safe-id.es.js +5 -0
  100. package/src/tedi/helpers/index.d.ts +1 -0
  101. package/src/tedi/index.d.ts +1 -0
  102. package/src/tedi/providers/label-provider/labels-map.cjs.js +1 -1
  103. package/src/tedi/providers/label-provider/labels-map.d.ts +23 -2
  104. package/src/tedi/providers/label-provider/labels-map.es.js +21 -0
  105. package/tedi.cjs.js +1 -1
  106. package/tedi.es.js +102 -98
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=require("react/jsx-runtime"),ae=require("../../../../../external/classnames/index.cjs.js"),l=require("react"),oe=require("../../base/icon/icon.cjs.js"),E=require("../../buttons/button/button.cjs.js"),ce=require("../../form/checkbox/checkbox.cjs.js"),We=require("../../form/search/search.cjs.js"),d=require("../../overlays/dropdown/dropdown.cjs.js"),Ze=require("../../tags/status-badge/status-badge.cjs.js"),n=require("./filter.module.scss.cjs.js"),He=require("./filter-group-context.cjs.js"),Je=require("../../../helpers/hooks/use-breakpoint-props.cjs.js"),Ke=require("../../../providers/label-provider/use-labels.cjs.js"),de=v=>v==="large"?24:18,Qe=v=>{const b=l.useId();return v??`tedi-filter-${b.replace(/[^a-zA-Z0-9-]/g,"")}`},ue=l.forwardRef((v,b)=>{const{getCurrentBreakpointProps:fe}=Je.useBreakpointProps(v.defaultServerBreakpoint),{text:g,value:_,disabled:he=!1,className:pe,id:W,selected:k,defaultSelected:Z=!1,onSelectedChange:C,selectedValue:j,defaultSelectedValue:me,onSelectedValueChange:u,multiselect:H=!1,selectedValues:f,defaultSelectedValues:be,onSelectedValuesChange:a,options:S=[],searchable:xe=!1,showSelectAll:ve=!1,selectAllLabel:ge,showClear:J=!1,clearLabel:je,preserveLabel:K=!1,children:Q,onClear:y,prepend:I,hidePrependWhenSelected:Se=!0,append:M,placement:we="bottom-start",variant:_e="primary",size:D="default",searchLabel:U}=fe(v),{getLabel:V}=Ke.useLabels(),ke=ge??V("filter.select-all"),X=je??V("filter.clear-selection"),i=l.useContext(He.FilterGroupContext),L=Qe(W),Ce=l.useRef(null),P=S.length>0,F=!!Q,x=P||F,h=P&&!H,p=P&&H,N=!!(i!=null&&i.isManaged)&&_!==void 0&&!x,O=N&&!(i!=null&&i.multiselect),Y=he||((i==null?void 0:i.disabled)??!1),[Le,Fe]=l.useState(Z),[Ne,ee]=l.useState(me??""),[ye,T]=l.useState(be??[]);F&&(Z||C)&&k===void 0&&console.warn("[Filter] `defaultSelected` and `onSelectedChange` are not honoured in custom-content mode (when `children` is provided). Drive the selected state yourself via the controlled `selected` prop, e.g. `selected={Boolean(value)}`.");const B=k!==void 0?k:Le,m=j!==void 0?j:Ne,r=f!==void 0?f:ye,w=l.useMemo(()=>N?i.isSelected(_):p?r.length>0:h?m!=="":B,[N,_,i,p,r,h,m,B]),q=l.useMemo(()=>{var e;return!h||!m?null:((e=S.find(s=>s.value===m))==null?void 0:e.label)??null},[h,m,S]),Be=l.useMemo(()=>h?q&&K?`${g}: ${q}`:q??g:g,[h,q,K,g]),[$,te]=l.useState(!1),[z,le]=l.useState("");l.useEffect(()=>{$||le("")},[$]);const R=l.useMemo(()=>{const e=z.trim().toLowerCase();return e?S.filter(s=>s.label.toLowerCase().includes(e)):S},[z,S]),o=l.useMemo(()=>R.filter(e=>!e.disabled),[R]),A=l.useMemo(()=>o.length===0?!1:o.every(e=>r.includes(e.value)),[o,r]),qe=l.useMemo(()=>{if(o.length===0)return!1;const e=o.filter(s=>r.includes(s.value)).length;return e>0&&e<o.length},[o,r]),Ie=l.useCallback(e=>{Ce.current=e,typeof b=="function"?b(e):b&&(b.current=e)},[b]),Me=l.useCallback(()=>{if(N){i.selectFilter(_);return}const e=!B;k===void 0&&Fe(e),C==null||C(e)},[N,i,_,B,k,C]),De=l.useCallback(e=>{const s=m===e?"":e;j===void 0&&ee(s),u==null||u(s)},[m,j,u]),Pe=l.useCallback(e=>{const s=r.includes(e)?r.filter(c=>c!==e):[...r,e];f===void 0&&T(s),a==null||a(s)},[r,f,a]),Oe=l.useCallback(()=>{let e;if(A){const s=new Set(o.map(c=>c.value));e=r.filter(c=>!s.has(c))}else{const s=new Set(r);o.forEach(c=>s.add(c.value)),e=[...s]}f===void 0&&T(e),a==null||a(e)},[A,o,r,f,a]),se=l.useCallback(()=>{F?y==null||y():p?(f===void 0&&T([]),a==null||a([])):h&&(j===void 0&&ee(""),u==null||u("")),te(!1)},[F,y,p,f,a,h,j,u]),Te=w&&Se,$e=O?"radio":void 0,ze=O?w:void 0,Re=!x&&!O?w:void 0,Ae=t.jsxs(t.Fragment,{children:[!x&&w&&t.jsx(oe.Icon,{className:n.default["tedi-filter__icon"],name:"check",size:de(D),color:"inherit"}),I!=null&&t.jsx("span",{className:ae.default(n.default["tedi-filter__prepend"],{[n.default["tedi-filter__prepend--hidden"]]:Te}),children:I}),t.jsx("span",{className:n.default["tedi-filter__text"],children:Be}),M!=null&&t.jsx("span",{className:n.default["tedi-filter__append"],children:M}),p&&w&&r.length>0&&t.jsx(Ze.StatusBadge,{className:n.default["tedi-filter__count"],color:Y?"neutral":"brand",children:String(r.length)}),x&&t.jsx(oe.Icon,{className:n.default["tedi-filter__icon"],name:"arrow_drop_down",filled:!0,size:de(D),color:"inherit"})]}),re=ae.default(n.default["tedi-filter"],n.default[`tedi-filter--${_e}`],D==="large"&&n.default["tedi-filter--large"],w&&n.default["tedi-filter--selected"],pe),ne=t.jsx(E.Button,{ref:Ie,id:W,type:"button",disabled:Y,className:n.default["tedi-filter__button"],onClick:x?void 0:Me,role:x?void 0:$e,"aria-checked":ze,"aria-pressed":Re,noStyle:!0,children:Ae});if(!x)return t.jsx("div",{className:re,children:ne});const G=p&&ve?0:null,Ge=G!==null?1:0,Ee=()=>R.map((e,s)=>{const c=p?r.includes(e.value):m===e.value,ie=s+Ge;return p?t.jsx(d.Dropdown.Item,{index:ie,asChild:!0,disabled:e.disabled,closeOnSelect:!1,children:t.jsx(ce.Checkbox,{id:`${L}-option-${s}`,label:e.label,value:e.value,checked:c,disabled:e.disabled,onChange:()=>Pe(e.value),name:`${L}-options`})},e.value):t.jsx(d.Dropdown.Item,{index:ie,disabled:e.disabled,active:c,onClick:()=>De(e.value),children:e.label},e.value)});return t.jsx("div",{className:re,children:t.jsxs(d.Dropdown,{open:$,onOpenChange:te,placement:we,width:"auto",children:[t.jsx(d.Dropdown.Trigger,{children:ne}),t.jsx(d.Dropdown.Content,{children:F?t.jsxs(t.Fragment,{children:[t.jsx("div",{className:n.default["tedi-filter-dropdown__custom-content"],children:Q}),J&&t.jsxs(t.Fragment,{children:[t.jsx(d.Dropdown.Separator,{}),t.jsx("div",{className:n.default["tedi-filter-dropdown__clear"],children:t.jsx(E.Button,{visualType:"neutral",size:"small",type:"button",iconLeft:"refresh",onClick:se,children:X})})]})]}):t.jsxs(t.Fragment,{children:[xe&&t.jsxs(t.Fragment,{children:[t.jsx("div",{className:n.default["tedi-filter-dropdown__search"],children:t.jsx(We.Search,{id:`${L}-search`,label:U??g,hideLabel:!0,ariaLabel:U??g,value:z,onChange:le})}),t.jsx(d.Dropdown.Separator,{})]}),G!==null&&t.jsxs(t.Fragment,{children:[t.jsx(d.Dropdown.Item,{index:G,asChild:!0,closeOnSelect:!1,children:t.jsx(ce.Checkbox,{id:`${L}-select-all`,label:ke,value:"select-all",checked:A,indeterminate:qe,onChange:Oe,name:`${L}-select-all`})}),t.jsx(d.Dropdown.Separator,{})]}),Ee(),J&&t.jsxs(t.Fragment,{children:[t.jsx(d.Dropdown.Separator,{}),t.jsx("div",{className:n.default["tedi-filter-dropdown__clear"],children:t.jsx(E.Button,{visualType:"neutral",size:"small",type:"button",iconLeft:"refresh",onClick:se,children:X})})]})]})})]})})});ue.displayName="Filter";exports.Filter=ue;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=require("react/jsx-runtime"),W=require("../../../../../external/classnames/index.cjs.js"),l=require("react"),ue=require("../../base/icon/icon.cjs.js"),Z=require("../../buttons/button/button.cjs.js"),fe=require("../../form/checkbox/checkbox.cjs.js"),Ze=require("../../form/search/search.cjs.js"),c=require("../../overlays/dropdown/dropdown.cjs.js"),Je=require("../../tags/status-badge/status-badge.cjs.js"),r=require("./filter.module.scss.cjs.js"),Ke=require("./filter-group-context.cjs.js"),Qe=require("../../../helpers/hooks/use-breakpoint-props.cjs.js"),Ue=require("../../../providers/label-provider/use-labels.cjs.js"),he=b=>b==="large"?24:18,Ve=b=>{const x=l.useId();return b??`tedi-filter-${x.replace(/[^a-zA-Z0-9-]/g,"")}`},pe=l.forwardRef((b,x)=>{const{getCurrentBreakpointProps:me}=Qe.useBreakpointProps(b.defaultServerBreakpoint),{text:g,value:_,disabled:xe=!1,className:ve,id:J,selected:k,defaultSelected:K=!1,onSelectedChange:C,selectedValue:j,defaultSelectedValue:be,onSelectedValueChange:u,multiselect:Q=!1,selectedValues:f,defaultSelectedValues:ge,onSelectedValuesChange:a,options:S=[],searchable:je=!1,showSelectAll:Se=!1,selectAllLabel:we,showClear:U=!1,clearLabel:_e,preserveLabel:V=!1,children:X,onClear:B,prepend:D,hidePrependWhenSelected:ke=!0,append:P,placement:Ce="bottom-start",variant:Le="primary",size:$="default",searchLabel:Y,maxHeight:M}=me(b),{getLabel:ee}=Ue.useLabels(),ye=we??ee("filter.select-all"),te=_e??ee("filter.clear-selection"),L=M===void 0?void 0:typeof M=="number"?`${M}px`:M,i=l.useContext(Ke.FilterGroupContext),y=Ve(J),Ne=l.useRef(null),O=S.length>0,N=!!X,v=O||N,h=O&&!Q,p=O&&Q,F=!!(i!=null&&i.isManaged)&&_!==void 0&&!v,T=F&&!(i!=null&&i.multiselect),le=xe||((i==null?void 0:i.disabled)??!1),[Fe,Be]=l.useState(K),[Me,se]=l.useState(be??""),[qe,z]=l.useState(ge??[]);N&&(K||C)&&k===void 0&&console.warn("[Filter] `defaultSelected` and `onSelectedChange` are not honoured in custom-content mode (when `children` is provided). Drive the selected state yourself via the controlled `selected` prop, e.g. `selected={Boolean(value)}`.");const q=k!==void 0?k:Fe,m=j!==void 0?j:Me,n=f!==void 0?f:qe,w=l.useMemo(()=>F?i.isSelected(_):p?n.length>0:h?m!=="":q,[F,_,i,p,n,h,m,q]),I=l.useMemo(()=>{var e;return!h||!m?null:((e=S.find(s=>s.value===m))==null?void 0:e.label)??null},[h,m,S]),Ie=l.useMemo(()=>h?I&&V?`${g}: ${I}`:I??g:g,[h,I,V,g]),[R,re]=l.useState(!1),[A,ne]=l.useState("");l.useEffect(()=>{R||ne("")},[R]);const G=l.useMemo(()=>{const e=A.trim().toLowerCase();return e?S.filter(s=>s.label.toLowerCase().includes(e)):S},[A,S]),o=l.useMemo(()=>G.filter(e=>!e.disabled),[G]),H=l.useMemo(()=>o.length===0?!1:o.every(e=>n.includes(e.value)),[o,n]),De=l.useMemo(()=>{if(o.length===0)return!1;const e=o.filter(s=>n.includes(s.value)).length;return e>0&&e<o.length},[o,n]),Pe=l.useCallback(e=>{Ne.current=e,typeof x=="function"?x(e):x&&(x.current=e)},[x]),$e=l.useCallback(()=>{if(F){i.selectFilter(_);return}const e=!q;k===void 0&&Be(e),C==null||C(e)},[F,i,_,q,k,C]),Oe=l.useCallback(e=>{const s=m===e?"":e;j===void 0&&se(s),u==null||u(s)},[m,j,u]),Te=l.useCallback(e=>{const s=n.includes(e)?n.filter(d=>d!==e):[...n,e];f===void 0&&z(s),a==null||a(s)},[n,f,a]),ze=l.useCallback(()=>{let e;if(H){const s=new Set(o.map(d=>d.value));e=n.filter(d=>!s.has(d))}else{const s=new Set(n);o.forEach(d=>s.add(d.value)),e=[...s]}f===void 0&&z(e),a==null||a(e)},[H,o,n,f,a]),ie=l.useCallback(()=>{N?B==null||B():p?(f===void 0&&z([]),a==null||a([])):h&&(j===void 0&&se(""),u==null||u("")),re(!1)},[N,B,p,f,a,h,j,u]),Re=w&&ke,Ae=T?"radio":void 0,Ge=T?w:void 0,He=!v&&!T?w:void 0,Ee=t.jsxs(t.Fragment,{children:[!v&&w&&t.jsx(ue.Icon,{className:r.default["tedi-filter__icon"],name:"check",size:he($),color:"inherit"}),D!=null&&t.jsx("span",{className:W.default(r.default["tedi-filter__prepend"],{[r.default["tedi-filter__prepend--hidden"]]:Re}),children:D}),t.jsx("span",{className:r.default["tedi-filter__text"],children:Ie}),P!=null&&t.jsx("span",{className:r.default["tedi-filter__append"],children:P}),p&&w&&n.length>0&&t.jsx(Je.StatusBadge,{className:r.default["tedi-filter__count"],color:le?"neutral":"brand",children:String(n.length)}),v&&t.jsx(ue.Icon,{className:r.default["tedi-filter__icon"],name:"arrow_drop_down",filled:!0,size:he($),color:"inherit"})]}),ae=W.default(r.default["tedi-filter"],r.default[`tedi-filter--${Le}`],$==="large"&&r.default["tedi-filter--large"],w&&r.default["tedi-filter--selected"],ve),oe=t.jsx(Z.Button,{ref:Pe,id:J,type:"button",disabled:le,className:r.default["tedi-filter__button"],onClick:v?void 0:$e,role:v?void 0:Ae,"aria-checked":Ge,"aria-pressed":He,noStyle:!0,children:Ee});if(!v)return t.jsx("div",{className:ae,children:oe});const E=p&&Se?0:null,We=E!==null?1:0,de=()=>G.map((e,s)=>{const d=p?n.includes(e.value):m===e.value,ce=s+We;return p?t.jsx(c.Dropdown.Item,{index:ce,asChild:!0,disabled:e.disabled,closeOnSelect:!1,children:t.jsx(fe.Checkbox,{id:`${y}-option-${s}`,label:e.label,value:e.value,checked:d,disabled:e.disabled,onChange:()=>Te(e.value),name:`${y}-options`})},e.value):t.jsx(c.Dropdown.Item,{index:ce,disabled:e.disabled,active:d,onClick:()=>Oe(e.value),children:e.label},e.value)});return t.jsx("div",{className:ae,children:t.jsxs(c.Dropdown,{open:R,onOpenChange:re,placement:Ce,width:"auto",children:[t.jsx(c.Dropdown.Trigger,{children:oe}),t.jsx(c.Dropdown.Content,{children:N?t.jsxs(t.Fragment,{children:[t.jsx("div",{className:W.default(r.default["tedi-filter-dropdown__custom-content"],{[r.default["tedi-filter-dropdown__options"]]:L!==void 0}),style:L!==void 0?{maxHeight:L}:void 0,children:X}),U&&t.jsxs(t.Fragment,{children:[t.jsx(c.Dropdown.Separator,{}),t.jsx("div",{className:r.default["tedi-filter-dropdown__clear"],children:t.jsx(Z.Button,{visualType:"neutral",size:"small",type:"button",iconLeft:"refresh",onClick:ie,children:te})})]})]}):t.jsxs(t.Fragment,{children:[je&&t.jsxs(t.Fragment,{children:[t.jsx("div",{className:r.default["tedi-filter-dropdown__search"],children:t.jsx(Ze.Search,{id:`${y}-search`,label:Y??g,hideLabel:!0,ariaLabel:Y??g,value:A,onChange:ne})}),t.jsx(c.Dropdown.Separator,{})]}),E!==null&&t.jsxs(t.Fragment,{children:[t.jsx(c.Dropdown.Item,{index:E,asChild:!0,closeOnSelect:!1,children:t.jsx(fe.Checkbox,{id:`${y}-select-all`,label:ye,value:"select-all",checked:H,indeterminate:De,onChange:ze,name:`${y}-select-all`})}),t.jsx(c.Dropdown.Separator,{})]}),L!==void 0?t.jsx("div",{className:r.default["tedi-filter-dropdown__options"],style:{maxHeight:L},children:de()}):de(),U&&t.jsxs(t.Fragment,{children:[t.jsx(c.Dropdown.Separator,{}),t.jsx("div",{className:r.default["tedi-filter-dropdown__clear"],children:t.jsx(Z.Button,{visualType:"neutral",size:"small",type:"button",iconLeft:"refresh",onClick:ie,children:te})})]})]})})]})})});pe.displayName="Filter";exports.Filter=pe;
@@ -93,6 +93,11 @@ export interface FilterProps extends BreakpointSupport<FilterBreakpointProps> {
93
93
  placement?: React.ComponentProps<typeof Dropdown>['placement'];
94
94
  /** Accessible label for the search input. Falls back to `text`. */
95
95
  searchLabel?: string;
96
+ /**
97
+ * Caps the height of the dropdown's option list. The list scrolls when it's taller, while the
98
+ * search and "Clear selection" stay pinned. `number` = px, `string` = any CSS length.
99
+ */
100
+ maxHeight?: React.ComponentProps<typeof Dropdown>['maxHeight'];
96
101
  }
97
102
  export declare const Filter: React.ForwardRefExoticComponent<FilterProps & React.RefAttributes<HTMLButtonElement>>;
98
103
  export default Filter;
@@ -1,235 +1,245 @@
1
1
  import { jsxs as p, Fragment as g, jsx as t } from "react/jsx-runtime";
2
- import ue from "../../../../../external/classnames/index.es.js";
3
- import Je, { forwardRef as Ke, useContext as Qe, useRef as Ue, useState as O, useMemo as S, useEffect as Ve, useCallback as C } from "react";
4
- import { Icon as fe } from "../../base/icon/icon.es.js";
5
- import { Button as J } from "../../buttons/button/button.es.js";
6
- import { Checkbox as me } from "../../form/checkbox/checkbox.es.js";
7
- import { Search as Xe } from "../../form/search/search.es.js";
2
+ import Q from "../../../../../external/classnames/index.es.js";
3
+ import Qe, { forwardRef as Ue, useContext as Ve, useRef as Xe, useState as P, useMemo as _, useEffect as Ye, useCallback as y } from "react";
4
+ import { Icon as pe } from "../../base/icon/icon.es.js";
5
+ import { Button as U } from "../../buttons/button/button.es.js";
6
+ import { Checkbox as ve } from "../../form/checkbox/checkbox.es.js";
7
+ import { Search as et } from "../../form/search/search.es.js";
8
8
  import { Dropdown as c } from "../../overlays/dropdown/dropdown.es.js";
9
- import { StatusBadge as Ye } from "../../tags/status-badge/status-badge.es.js";
10
- import i from "./filter.module.scss.es.js";
11
- import { FilterGroupContext as et } from "./filter-group-context.es.js";
12
- import { useBreakpointProps as tt } from "../../../helpers/hooks/use-breakpoint-props.es.js";
13
- import { useLabels as lt } from "../../../providers/label-provider/use-labels.es.js";
14
- const he = (_) => _ === "large" ? 24 : 18, rt = (_) => {
15
- const v = Je.useId();
16
- return _ ?? `tedi-filter-${v.replace(/[^a-zA-Z0-9-]/g, "")}`;
17
- }, it = Ke((_, v) => {
18
- const { getCurrentBreakpointProps: pe } = tt(_.defaultServerBreakpoint), {
9
+ import { StatusBadge as tt } from "../../tags/status-badge/status-badge.es.js";
10
+ import r from "./filter.module.scss.es.js";
11
+ import { FilterGroupContext as lt } from "./filter-group-context.es.js";
12
+ import { useBreakpointProps as rt } from "../../../helpers/hooks/use-breakpoint-props.es.js";
13
+ import { useLabels as it } from "../../../providers/label-provider/use-labels.es.js";
14
+ const be = (S) => S === "large" ? 24 : 18, nt = (S) => {
15
+ const v = Qe.useId();
16
+ return S ?? `tedi-filter-${v.replace(/[^a-zA-Z0-9-]/g, "")}`;
17
+ }, st = Ue((S, v) => {
18
+ const { getCurrentBreakpointProps: ge } = rt(S.defaultServerBreakpoint), {
19
19
  text: w,
20
- value: k,
21
- disabled: ve = !1,
22
- className: be,
23
- id: K,
24
- selected: y,
25
- defaultSelected: Q = !1,
20
+ value: C,
21
+ disabled: _e = !1,
22
+ className: Se,
23
+ id: V,
24
+ selected: k,
25
+ defaultSelected: X = !1,
26
26
  onSelectedChange: I,
27
- selectedValue: L,
28
- defaultSelectedValue: ge,
27
+ selectedValue: x,
28
+ defaultSelectedValue: we,
29
29
  onSelectedValueChange: d,
30
- multiselect: U = !1,
30
+ multiselect: Y = !1,
31
31
  selectedValues: u,
32
- defaultSelectedValues: Se,
32
+ defaultSelectedValues: xe,
33
33
  onSelectedValuesChange: s,
34
34
  options: N = [],
35
- searchable: _e = !1,
36
- showSelectAll: we = !1,
37
- selectAllLabel: Le,
38
- showClear: V = !1,
39
- clearLabel: Ne,
40
- preserveLabel: X = !1,
41
- children: Y,
42
- onClear: P,
43
- prepend: A,
44
- hidePrependWhenSelected: xe = !0,
45
- append: R,
46
- placement: Ce = "bottom-start",
47
- variant: ke = "primary",
48
- size: M = "default",
49
- searchLabel: ee
50
- } = pe(_), { getLabel: te } = lt(), ye = Le ?? te("filter.select-all"), le = Ne ?? te("filter.clear-selection"), n = Qe(et), B = rt(K), Ie = Ue(null), G = N.length > 0, $ = !!Y, b = G || $, f = G && !U, m = G && U, F = !!(n != null && n.isManaged) && k !== void 0 && !b, D = F && !(n != null && n.multiselect), re = ve || ((n == null ? void 0 : n.disabled) ?? !1), [Be, $e] = O(Q), [Fe, ie] = O(ge ?? ""), [Oe, j] = O(Se ?? []);
51
- $ && (Q || I) && y === void 0 && console.warn(
35
+ searchable: Ne = !1,
36
+ showSelectAll: Le = !1,
37
+ selectAllLabel: ye,
38
+ showClear: ee = !1,
39
+ clearLabel: Ce,
40
+ preserveLabel: te = !1,
41
+ children: le,
42
+ onClear: T,
43
+ prepend: R,
44
+ hidePrependWhenSelected: ke = !0,
45
+ append: G,
46
+ placement: Ie = "bottom-start",
47
+ variant: $e = "primary",
48
+ size: H = "default",
49
+ searchLabel: re,
50
+ maxHeight: z
51
+ } = ge(S), { getLabel: ie } = it(), Be = ye ?? ie("filter.select-all"), ne = Ce ?? ie("filter.clear-selection"), $ = z === void 0 ? void 0 : typeof z == "number" ? `${z}px` : z, n = Ve(lt), B = nt(V), Fe = Xe(null), D = N.length > 0, F = !!le, b = D || F, f = D && !Y, m = D && Y, O = !!(n != null && n.isManaged) && C !== void 0 && !b, j = O && !(n != null && n.multiselect), se = _e || ((n == null ? void 0 : n.disabled) ?? !1), [Oe, Pe] = P(X), [Te, oe] = P(we ?? ""), [ze, E] = P(xe ?? []);
52
+ F && (X || I) && k === void 0 && console.warn(
52
53
  "[Filter] `defaultSelected` and `onSelectedChange` are not honoured in custom-content mode (when `children` is provided). Drive the selected state yourself via the controlled `selected` prop, e.g. `selected={Boolean(value)}`."
53
54
  );
54
- const T = y !== void 0 ? y : Be, h = L !== void 0 ? L : Fe, r = u !== void 0 ? u : Oe, x = S(() => F ? n.isSelected(k) : m ? r.length > 0 : f ? h !== "" : T, [F, k, n, m, r, f, h, T]), z = S(() => {
55
+ const A = k !== void 0 ? k : Oe, h = x !== void 0 ? x : Te, i = u !== void 0 ? u : ze, L = _(() => O ? n.isSelected(C) : m ? i.length > 0 : f ? h !== "" : A, [O, C, n, m, i, f, h, A]), M = _(() => {
55
56
  var e;
56
57
  return !f || !h ? null : ((e = N.find((l) => l.value === h)) == null ? void 0 : e.label) ?? null;
57
- }, [f, h, N]), Pe = S(() => f ? z && X ? `${w}: ${z}` : z ?? w : w, [f, z, X, w]), [E, ne] = O(!1), [W, se] = O("");
58
- Ve(() => {
59
- E || se("");
60
- }, [E]);
61
- const Z = S(() => {
62
- const e = W.trim().toLowerCase();
58
+ }, [f, h, N]), Ae = _(() => f ? M && te ? `${w}: ${M}` : M ?? w : w, [f, M, te, w]), [W, ae] = P(!1), [Z, ce] = P("");
59
+ Ye(() => {
60
+ W || ce("");
61
+ }, [W]);
62
+ const q = _(() => {
63
+ const e = Z.trim().toLowerCase();
63
64
  return e ? N.filter((l) => l.label.toLowerCase().includes(e)) : N;
64
- }, [W, N]), a = S(() => Z.filter((e) => !e.disabled), [Z]), q = S(() => a.length === 0 ? !1 : a.every((e) => r.includes(e.value)), [a, r]), Te = S(() => {
65
- if (a.length === 0) return !1;
66
- const e = a.filter((l) => r.includes(l.value)).length;
67
- return e > 0 && e < a.length;
68
- }, [a, r]), ze = C(
65
+ }, [Z, N]), o = _(() => q.filter((e) => !e.disabled), [q]), J = _(() => o.length === 0 ? !1 : o.every((e) => i.includes(e.value)), [o, i]), Me = _(() => {
66
+ if (o.length === 0) return !1;
67
+ const e = o.filter((l) => i.includes(l.value)).length;
68
+ return e > 0 && e < o.length;
69
+ }, [o, i]), Re = y(
69
70
  (e) => {
70
- Ie.current = e, typeof v == "function" ? v(e) : v && (v.current = e);
71
+ Fe.current = e, typeof v == "function" ? v(e) : v && (v.current = e);
71
72
  },
72
73
  [v]
73
- ), Ae = C(() => {
74
- if (F) {
75
- n.selectFilter(k);
74
+ ), Ge = y(() => {
75
+ if (O) {
76
+ n.selectFilter(C);
76
77
  return;
77
78
  }
78
- const e = !T;
79
- y === void 0 && $e(e), I == null || I(e);
80
- }, [F, n, k, T, y, I]), Re = C(
79
+ const e = !A;
80
+ k === void 0 && Pe(e), I == null || I(e);
81
+ }, [O, n, C, A, k, I]), He = y(
81
82
  (e) => {
82
83
  const l = h === e ? "" : e;
83
- L === void 0 && ie(l), d == null || d(l);
84
+ x === void 0 && oe(l), d == null || d(l);
84
85
  },
85
- [h, L, d]
86
- ), Me = C(
86
+ [h, x, d]
87
+ ), De = y(
87
88
  (e) => {
88
- const l = r.includes(e) ? r.filter((o) => o !== e) : [...r, e];
89
- u === void 0 && j(l), s == null || s(l);
89
+ const l = i.includes(e) ? i.filter((a) => a !== e) : [...i, e];
90
+ u === void 0 && E(l), s == null || s(l);
90
91
  },
91
- [r, u, s]
92
- ), Ge = C(() => {
92
+ [i, u, s]
93
+ ), je = y(() => {
93
94
  let e;
94
- if (q) {
95
- const l = new Set(a.map((o) => o.value));
96
- e = r.filter((o) => !l.has(o));
95
+ if (J) {
96
+ const l = new Set(o.map((a) => a.value));
97
+ e = i.filter((a) => !l.has(a));
97
98
  } else {
98
- const l = new Set(r);
99
- a.forEach((o) => l.add(o.value)), e = [...l];
99
+ const l = new Set(i);
100
+ o.forEach((a) => l.add(a.value)), e = [...l];
100
101
  }
101
- u === void 0 && j(e), s == null || s(e);
102
- }, [q, a, r, u, s]), ae = C(() => {
103
- $ ? P == null || P() : m ? (u === void 0 && j([]), s == null || s([])) : f && (L === void 0 && ie(""), d == null || d("")), ne(!1);
102
+ u === void 0 && E(e), s == null || s(e);
103
+ }, [J, o, i, u, s]), de = y(() => {
104
+ F ? T == null || T() : m ? (u === void 0 && E([]), s == null || s([])) : f && (x === void 0 && oe(""), d == null || d("")), ae(!1);
104
105
  }, [
105
- $,
106
- P,
106
+ F,
107
+ T,
107
108
  m,
108
109
  u,
109
110
  s,
110
111
  f,
111
- L,
112
+ x,
112
113
  d
113
- ]), De = x && xe, je = D ? "radio" : void 0, Ee = D ? x : void 0, We = !b && !D ? x : void 0, Ze = /* @__PURE__ */ p(g, { children: [
114
- !b && x && /* @__PURE__ */ t(fe, { className: i["tedi-filter__icon"], name: "check", size: he(M), color: "inherit" }),
115
- A != null && /* @__PURE__ */ t(
114
+ ]), Ee = L && ke, We = j ? "radio" : void 0, Ze = j ? L : void 0, qe = !b && !j ? L : void 0, Je = /* @__PURE__ */ p(g, { children: [
115
+ !b && L && /* @__PURE__ */ t(pe, { className: r["tedi-filter__icon"], name: "check", size: be(H), color: "inherit" }),
116
+ R != null && /* @__PURE__ */ t(
116
117
  "span",
117
118
  {
118
- className: ue(i["tedi-filter__prepend"], {
119
- [i["tedi-filter__prepend--hidden"]]: De
119
+ className: Q(r["tedi-filter__prepend"], {
120
+ [r["tedi-filter__prepend--hidden"]]: Ee
120
121
  }),
121
- children: A
122
+ children: R
122
123
  }
123
124
  ),
124
- /* @__PURE__ */ t("span", { className: i["tedi-filter__text"], children: Pe }),
125
- R != null && /* @__PURE__ */ t("span", { className: i["tedi-filter__append"], children: R }),
126
- m && x && r.length > 0 && /* @__PURE__ */ t(Ye, { className: i["tedi-filter__count"], color: re ? "neutral" : "brand", children: String(r.length) }),
125
+ /* @__PURE__ */ t("span", { className: r["tedi-filter__text"], children: Ae }),
126
+ G != null && /* @__PURE__ */ t("span", { className: r["tedi-filter__append"], children: G }),
127
+ m && L && i.length > 0 && /* @__PURE__ */ t(tt, { className: r["tedi-filter__count"], color: se ? "neutral" : "brand", children: String(i.length) }),
127
128
  b && /* @__PURE__ */ t(
128
- fe,
129
+ pe,
129
130
  {
130
- className: i["tedi-filter__icon"],
131
+ className: r["tedi-filter__icon"],
131
132
  name: "arrow_drop_down",
132
133
  filled: !0,
133
- size: he(M),
134
+ size: be(H),
134
135
  color: "inherit"
135
136
  }
136
137
  )
137
- ] }), oe = ue(
138
- i["tedi-filter"],
139
- i[`tedi-filter--${ke}`],
140
- M === "large" && i["tedi-filter--large"],
141
- x && i["tedi-filter--selected"],
142
- be
143
- ), ce = /* @__PURE__ */ t(
144
- J,
138
+ ] }), ue = Q(
139
+ r["tedi-filter"],
140
+ r[`tedi-filter--${$e}`],
141
+ H === "large" && r["tedi-filter--large"],
142
+ L && r["tedi-filter--selected"],
143
+ Se
144
+ ), fe = /* @__PURE__ */ t(
145
+ U,
145
146
  {
146
- ref: ze,
147
- id: K,
147
+ ref: Re,
148
+ id: V,
148
149
  type: "button",
149
- disabled: re,
150
- className: i["tedi-filter__button"],
151
- onClick: b ? void 0 : Ae,
152
- role: b ? void 0 : je,
153
- "aria-checked": Ee,
154
- "aria-pressed": We,
150
+ disabled: se,
151
+ className: r["tedi-filter__button"],
152
+ onClick: b ? void 0 : Ge,
153
+ role: b ? void 0 : We,
154
+ "aria-checked": Ze,
155
+ "aria-pressed": qe,
155
156
  noStyle: !0,
156
- children: Ze
157
+ children: Je
157
158
  }
158
159
  );
159
160
  if (!b)
160
- return /* @__PURE__ */ t("div", { className: oe, children: ce });
161
- const H = m && we ? 0 : null, qe = H !== null ? 1 : 0, He = () => Z.map((e, l) => {
162
- const o = m ? r.includes(e.value) : h === e.value, de = l + qe;
163
- return m ? /* @__PURE__ */ t(c.Item, { index: de, asChild: !0, disabled: e.disabled, closeOnSelect: !1, children: /* @__PURE__ */ t(
164
- me,
161
+ return /* @__PURE__ */ t("div", { className: ue, children: fe });
162
+ const K = m && Le ? 0 : null, Ke = K !== null ? 1 : 0, me = () => q.map((e, l) => {
163
+ const a = m ? i.includes(e.value) : h === e.value, he = l + Ke;
164
+ return m ? /* @__PURE__ */ t(c.Item, { index: he, asChild: !0, disabled: e.disabled, closeOnSelect: !1, children: /* @__PURE__ */ t(
165
+ ve,
165
166
  {
166
167
  id: `${B}-option-${l}`,
167
168
  label: e.label,
168
169
  value: e.value,
169
- checked: o,
170
+ checked: a,
170
171
  disabled: e.disabled,
171
- onChange: () => Me(e.value),
172
+ onChange: () => De(e.value),
172
173
  name: `${B}-options`
173
174
  }
174
175
  ) }, e.value) : /* @__PURE__ */ t(
175
176
  c.Item,
176
177
  {
177
- index: de,
178
+ index: he,
178
179
  disabled: e.disabled,
179
- active: o,
180
- onClick: () => Re(e.value),
180
+ active: a,
181
+ onClick: () => He(e.value),
181
182
  children: e.label
182
183
  },
183
184
  e.value
184
185
  );
185
186
  });
186
- return /* @__PURE__ */ t("div", { className: oe, children: /* @__PURE__ */ p(c, { open: E, onOpenChange: ne, placement: Ce, width: "auto", children: [
187
- /* @__PURE__ */ t(c.Trigger, { children: ce }),
188
- /* @__PURE__ */ t(c.Content, { children: $ ? /* @__PURE__ */ p(g, { children: [
189
- /* @__PURE__ */ t("div", { className: i["tedi-filter-dropdown__custom-content"], children: Y }),
190
- V && /* @__PURE__ */ p(g, { children: [
187
+ return /* @__PURE__ */ t("div", { className: ue, children: /* @__PURE__ */ p(c, { open: W, onOpenChange: ae, placement: Ie, width: "auto", children: [
188
+ /* @__PURE__ */ t(c.Trigger, { children: fe }),
189
+ /* @__PURE__ */ t(c.Content, { children: F ? /* @__PURE__ */ p(g, { children: [
190
+ /* @__PURE__ */ t(
191
+ "div",
192
+ {
193
+ className: Q(r["tedi-filter-dropdown__custom-content"], {
194
+ [r["tedi-filter-dropdown__options"]]: $ !== void 0
195
+ }),
196
+ style: $ !== void 0 ? { maxHeight: $ } : void 0,
197
+ children: le
198
+ }
199
+ ),
200
+ ee && /* @__PURE__ */ p(g, { children: [
191
201
  /* @__PURE__ */ t(c.Separator, {}),
192
- /* @__PURE__ */ t("div", { className: i["tedi-filter-dropdown__clear"], children: /* @__PURE__ */ t(J, { visualType: "neutral", size: "small", type: "button", iconLeft: "refresh", onClick: ae, children: le }) })
202
+ /* @__PURE__ */ t("div", { className: r["tedi-filter-dropdown__clear"], children: /* @__PURE__ */ t(U, { visualType: "neutral", size: "small", type: "button", iconLeft: "refresh", onClick: de, children: ne }) })
193
203
  ] })
194
204
  ] }) : /* @__PURE__ */ p(g, { children: [
195
- _e && /* @__PURE__ */ p(g, { children: [
196
- /* @__PURE__ */ t("div", { className: i["tedi-filter-dropdown__search"], children: /* @__PURE__ */ t(
197
- Xe,
205
+ Ne && /* @__PURE__ */ p(g, { children: [
206
+ /* @__PURE__ */ t("div", { className: r["tedi-filter-dropdown__search"], children: /* @__PURE__ */ t(
207
+ et,
198
208
  {
199
209
  id: `${B}-search`,
200
- label: ee ?? w,
210
+ label: re ?? w,
201
211
  hideLabel: !0,
202
- ariaLabel: ee ?? w,
203
- value: W,
204
- onChange: se
212
+ ariaLabel: re ?? w,
213
+ value: Z,
214
+ onChange: ce
205
215
  }
206
216
  ) }),
207
217
  /* @__PURE__ */ t(c.Separator, {})
208
218
  ] }),
209
- H !== null && /* @__PURE__ */ p(g, { children: [
210
- /* @__PURE__ */ t(c.Item, { index: H, asChild: !0, closeOnSelect: !1, children: /* @__PURE__ */ t(
211
- me,
219
+ K !== null && /* @__PURE__ */ p(g, { children: [
220
+ /* @__PURE__ */ t(c.Item, { index: K, asChild: !0, closeOnSelect: !1, children: /* @__PURE__ */ t(
221
+ ve,
212
222
  {
213
223
  id: `${B}-select-all`,
214
- label: ye,
224
+ label: Be,
215
225
  value: "select-all",
216
- checked: q,
217
- indeterminate: Te,
218
- onChange: Ge,
226
+ checked: J,
227
+ indeterminate: Me,
228
+ onChange: je,
219
229
  name: `${B}-select-all`
220
230
  }
221
231
  ) }),
222
232
  /* @__PURE__ */ t(c.Separator, {})
223
233
  ] }),
224
- He(),
225
- V && /* @__PURE__ */ p(g, { children: [
234
+ $ !== void 0 ? /* @__PURE__ */ t("div", { className: r["tedi-filter-dropdown__options"], style: { maxHeight: $ }, children: me() }) : me(),
235
+ ee && /* @__PURE__ */ p(g, { children: [
226
236
  /* @__PURE__ */ t(c.Separator, {}),
227
- /* @__PURE__ */ t("div", { className: i["tedi-filter-dropdown__clear"], children: /* @__PURE__ */ t(J, { visualType: "neutral", size: "small", type: "button", iconLeft: "refresh", onClick: ae, children: le }) })
237
+ /* @__PURE__ */ t("div", { className: r["tedi-filter-dropdown__clear"], children: /* @__PURE__ */ t(U, { visualType: "neutral", size: "small", type: "button", iconLeft: "refresh", onClick: de, children: ne }) })
228
238
  ] })
229
239
  ] }) })
230
240
  ] }) });
231
241
  });
232
- it.displayName = "Filter";
242
+ st.displayName = "Filter";
233
243
  export {
234
- it as Filter
244
+ st as Filter
235
245
  };
@@ -1 +1 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e={"tedi-filter":"tedi-filter-e3f2f618","tedi-filter__button":"tedi-filter__button-b7abc5ed","tedi-filter__text":"tedi-filter__text-2c4eaab6","tedi-filter__icon":"tedi-filter__icon-1b8e93f2","tedi-filter__prepend":"tedi-filter__prepend-68dc0007","tedi-filter__append":"tedi-filter__append-bdb27679","tedi-filter__prepend--hidden":"tedi-filter__prepend--hidden-5039af1e","tedi-filter__count":"tedi-filter__count-d72acead","tedi-filter--primary":"tedi-filter--primary-837108e8","tedi-filter--selected":"tedi-filter--selected-7273f310","tedi-filter--secondary":"tedi-filter--secondary-8aaf488e","tedi-filter--large":"tedi-filter--large-f7f46174","tedi-filter-group":"tedi-filter-group-9d16304d","tedi-filter-dropdown__custom-content":"tedi-filter-dropdown__custom-content-6e851b26","tedi-filter-dropdown__search":"tedi-filter-dropdown__search-dbb4e1a3","tedi-filter-dropdown__clear":"tedi-filter-dropdown__clear-fa4e6a11"};exports.default=e;
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e={"tedi-filter":"tedi-filter-e3f2f618","tedi-filter__button":"tedi-filter__button-b7abc5ed","tedi-filter__text":"tedi-filter__text-2c4eaab6","tedi-filter__icon":"tedi-filter__icon-1b8e93f2","tedi-filter__prepend":"tedi-filter__prepend-68dc0007","tedi-filter__append":"tedi-filter__append-bdb27679","tedi-filter__prepend--hidden":"tedi-filter__prepend--hidden-5039af1e","tedi-filter__count":"tedi-filter__count-d72acead","tedi-filter--primary":"tedi-filter--primary-837108e8","tedi-filter--selected":"tedi-filter--selected-7273f310","tedi-filter--secondary":"tedi-filter--secondary-8aaf488e","tedi-filter--large":"tedi-filter--large-f7f46174","tedi-filter-group":"tedi-filter-group-9d16304d","tedi-filter-dropdown__custom-content":"tedi-filter-dropdown__custom-content-6e851b26","tedi-filter-dropdown__search":"tedi-filter-dropdown__search-dbb4e1a3","tedi-filter-dropdown__clear":"tedi-filter-dropdown__clear-fa4e6a11","tedi-filter-dropdown__options":"tedi-filter-dropdown__options-45f2e9a4"};exports.default=e;
@@ -14,7 +14,8 @@ const e = {
14
14
  "tedi-filter-group": "tedi-filter-group-9d16304d",
15
15
  "tedi-filter-dropdown__custom-content": "tedi-filter-dropdown__custom-content-6e851b26",
16
16
  "tedi-filter-dropdown__search": "tedi-filter-dropdown__search-dbb4e1a3",
17
- "tedi-filter-dropdown__clear": "tedi-filter-dropdown__clear-fa4e6a11"
17
+ "tedi-filter-dropdown__clear": "tedi-filter-dropdown__clear-fa4e6a11",
18
+ "tedi-filter-dropdown__options": "tedi-filter-dropdown__options-45f2e9a4"
18
19
  };
19
20
  export {
20
21
  e as default
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const d=4,c=8,l=e=>!!e&&!Array.isArray(e)&&!(e instanceof Date)&&"from"in e,f=(e,a,t)=>t&&l(a)&&a.from&&a.to?{from:t,to:void 0}:l(e)?e:void 0,D=e=>{const a=[];return e.disabled&&(Array.isArray(e.disabled)?a.push(...e.disabled):a.push(e.disabled)),e.minDate&&a.push({before:e.minDate}),e.maxDate&&a.push({after:e.maxDate}),e.disablePast&&a.push({before:new Date}),e.disableFuture&&a.push({after:new Date}),e.shouldDisableMonth&&a.push(t=>{var r;return((r=e.shouldDisableMonth)==null?void 0:r.call(e,t))??!1}),e.shouldDisableYear&&a.push(t=>{var r;return((r=e.shouldDisableYear)==null?void 0:r.call(e,t))??!1}),a},h=e=>{const a=new Date(2099,11,31),t=e.formatToParts(a),r=[],s=[];for(const o of t)o.type==="day"||o.type==="month"||o.type==="year"?r.push(o.type):o.type==="literal"&&r.length>0&&s.length<2&&s.push(o.value);return{fieldOrder:r,separators:s}},n=({fieldOrder:e,separators:a})=>{const t=r=>r.replace(/[.*+?^${}()|[\]\\]/g,"\\$&");return e.map((r,s)=>{const o=r==="year"?"\\d{4}":"\\d{2}";return`${s>0?t(a[s-1]??""):""}(${o})`}).join("")};exports.CALENDAR_POPOVER_OFFSET=d;exports.CALENDAR_POPOVER_PADDING=c;exports.buildDateRegexSource=n;exports.buildDisabledMatchers=D;exports.getLocaleDateParts=h;exports.resolveRangeSelection=f;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const f=4,n=8,l=e=>!!e&&!Array.isArray(e)&&!(e instanceof Date)&&"from"in e,D=(e,a,t)=>{if(t&&l(a)&&a.from&&a.to)return{from:t,to:void 0};if(!l(e))return;const r=!!e.from&&!!e.to&&e.from.getTime()===e.to.getTime(),o=l(a)&&!!a.from&&!a.to;return r&&!o?{from:e.from,to:void 0}:e},c=e=>{const a=[];return e.disabled&&(Array.isArray(e.disabled)?a.push(...e.disabled):a.push(e.disabled)),e.minDate&&a.push({before:e.minDate}),e.maxDate&&a.push({after:e.maxDate}),e.disablePast&&a.push({before:new Date}),e.disableFuture&&a.push({after:new Date}),e.shouldDisableMonth&&a.push(t=>{var r;return((r=e.shouldDisableMonth)==null?void 0:r.call(e,t))??!1}),e.shouldDisableYear&&a.push(t=>{var r;return((r=e.shouldDisableYear)==null?void 0:r.call(e,t))??!1}),a},d=e=>{const a=new Date(2099,11,31),t=e.formatToParts(a),r=[],o=[];for(const s of t)s.type==="day"||s.type==="month"||s.type==="year"?r.push(s.type):s.type==="literal"&&r.length>0&&o.length<2&&o.push(s.value);return{fieldOrder:r,separators:o}},i=({fieldOrder:e,separators:a})=>{const t=r=>r.replace(/[.*+?^${}()|[\]\\]/g,"\\$&");return e.map((r,o)=>{const s=r==="year"?"\\d{4}":"\\d{2}";return`${o>0?t(a[o-1]??""):""}(${s})`}).join("")};exports.CALENDAR_POPOVER_OFFSET=f;exports.CALENDAR_POPOVER_PADDING=n;exports.buildDateRegexSource=i;exports.buildDisabledMatchers=c;exports.getLocaleDateParts=d;exports.resolveRangeSelection=D;
@@ -13,27 +13,22 @@ export declare const CALENDAR_POPOVER_OFFSET = 4;
13
13
  export declare const CALENDAR_POPOVER_PADDING = 8;
14
14
  export type SelectedValueLike = Date | Date[] | DateRange | undefined;
15
15
  /**
16
- * Range-selection click resolver. react-day-picker's default `addToRange`
17
- * keeps a completed `{ from, to }` range and only moves one of its ends when
18
- * the user clicks again — so after picking a start and an end, clicking a new
19
- * start instead drags the existing end. That surprises users who expect a
20
- * fresh click to begin a new range.
16
+ * Range-selection click resolver that fixes two quirks in react-day-picker's default `addToRange`:
17
+ * clicking on a completed range drags an existing end instead of starting over, and the first click
18
+ * on an empty range returns a same-day `{ from, to }` that reads as already-complete (issue #813).
21
19
  *
22
- * This normalises that: once a range is complete, the next click starts over
23
- * with `from` set to the clicked day and `to` cleared. While the range is
24
- * still being built (or empty), DayPicker's own result is passed through.
20
+ * So: a click on a complete range starts a new one (`from` set, `to` cleared); the first click on an
21
+ * empty range becomes a `to`-less start (re-clicking the same day keeps a single-day range);
22
+ * otherwise DayPicker's result passes through.
25
23
  *
26
24
  * @param computed - the range react-day-picker derived from the click
27
- * @param previous - the range that was selected before this click
28
- * @param clickedDay - the day the user just clicked
25
+ * @param previous - the range selected before this click
26
+ * @param clickedDay - the day just clicked
29
27
  */
30
28
  export declare const resolveRangeSelection: (computed: SelectedValueLike, previous: SelectedValueLike, clickedDay: Date | undefined) => DateRange | undefined;
31
29
  /**
32
- * Resolves the month the calendar should start on for any selection
33
- * shape. Used by both `DateField` (single / multiple / range Date(s)) and
34
- * `DateTimeField` (single Date or `{from, to}` range). For arrays the
35
- * earliest date wins; for ranges the `from` (or `to` if `from` is unset)
36
- * wins. Falls back to the explicit `fallback` and finally `new Date()`.
30
+ * Resolves the month the calendar should open on for any selection shape: a single `Date`, an array
31
+ * (earliest date wins), or a range (`from`, else `to`). Falls back to `fallback`, then `new Date()`.
37
32
  */
38
33
  export declare const getInitialMonth: (val: SelectedValueLike, fallback?: Date) => Date;
39
34
  /**
@@ -58,10 +53,8 @@ export interface DisabledMatcherInputs {
58
53
  */
59
54
  export declare const buildDisabledMatchers: (inputs: DisabledMatcherInputs) => Matcher[];
60
55
  /**
61
- * Field order + literal separators extracted from a locale's date format,
62
- * derived via `Intl.DateTimeFormat.formatToParts`. Used by parsers in
63
- * `DateField` (date-only) and `DateTimeField` (date + " HH:mm") to build
64
- * a regex that round-trips the displayed value in any locale.
56
+ * Field order + literal separators extracted from a locale's date format (via
57
+ * `Intl.DateTimeFormat.formatToParts`), used to build a locale-aware parsing regex.
65
58
  */
66
59
  export interface LocaleDateParts {
67
60
  fieldOrder: ('day' | 'month' | 'year')[];
@@ -1,29 +1,35 @@
1
- const d = 4, c = 8, l = (e) => !!e && !Array.isArray(e) && !(e instanceof Date) && "from" in e, h = (e, a, o) => o && l(a) && a.from && a.to ? { from: o, to: void 0 } : l(e) ? e : void 0, D = (e) => {
1
+ const n = 4, h = 8, f = (e) => !!e && !Array.isArray(e) && !(e instanceof Date) && "from" in e, D = (e, a, t) => {
2
+ if (t && f(a) && a.from && a.to)
3
+ return { from: t, to: void 0 };
4
+ if (!f(e)) return;
5
+ const r = !!e.from && !!e.to && e.from.getTime() === e.to.getTime(), o = f(a) && !!a.from && !a.to;
6
+ return r && !o ? { from: e.from, to: void 0 } : e;
7
+ }, d = (e) => {
2
8
  const a = [];
3
- return e.disabled && (Array.isArray(e.disabled) ? a.push(...e.disabled) : a.push(e.disabled)), e.minDate && a.push({ before: e.minDate }), e.maxDate && a.push({ after: e.maxDate }), e.disablePast && a.push({ before: /* @__PURE__ */ new Date() }), e.disableFuture && a.push({ after: /* @__PURE__ */ new Date() }), e.shouldDisableMonth && a.push((o) => {
9
+ return e.disabled && (Array.isArray(e.disabled) ? a.push(...e.disabled) : a.push(e.disabled)), e.minDate && a.push({ before: e.minDate }), e.maxDate && a.push({ after: e.maxDate }), e.disablePast && a.push({ before: /* @__PURE__ */ new Date() }), e.disableFuture && a.push({ after: /* @__PURE__ */ new Date() }), e.shouldDisableMonth && a.push((t) => {
4
10
  var r;
5
- return ((r = e.shouldDisableMonth) == null ? void 0 : r.call(e, o)) ?? !1;
6
- }), e.shouldDisableYear && a.push((o) => {
11
+ return ((r = e.shouldDisableMonth) == null ? void 0 : r.call(e, t)) ?? !1;
12
+ }), e.shouldDisableYear && a.push((t) => {
7
13
  var r;
8
- return ((r = e.shouldDisableYear) == null ? void 0 : r.call(e, o)) ?? !1;
14
+ return ((r = e.shouldDisableYear) == null ? void 0 : r.call(e, t)) ?? !1;
9
15
  }), a;
10
- }, n = (e) => {
11
- const a = new Date(2099, 11, 31), o = e.formatToParts(a), r = [], s = [];
12
- for (const t of o)
13
- t.type === "day" || t.type === "month" || t.type === "year" ? r.push(t.type) : t.type === "literal" && r.length > 0 && s.length < 2 && s.push(t.value);
14
- return { fieldOrder: r, separators: s };
15
- }, b = ({ fieldOrder: e, separators: a }) => {
16
- const o = (r) => r.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
17
- return e.map((r, s) => {
18
- const t = r === "year" ? "\\d{4}" : "\\d{2}";
19
- return `${s > 0 ? o(a[s - 1] ?? "") : ""}(${t})`;
16
+ }, c = (e) => {
17
+ const a = new Date(2099, 11, 31), t = e.formatToParts(a), r = [], o = [];
18
+ for (const s of t)
19
+ s.type === "day" || s.type === "month" || s.type === "year" ? r.push(s.type) : s.type === "literal" && r.length > 0 && o.length < 2 && o.push(s.value);
20
+ return { fieldOrder: r, separators: o };
21
+ }, i = ({ fieldOrder: e, separators: a }) => {
22
+ const t = (r) => r.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
23
+ return e.map((r, o) => {
24
+ const s = r === "year" ? "\\d{4}" : "\\d{2}";
25
+ return `${o > 0 ? t(a[o - 1] ?? "") : ""}(${s})`;
20
26
  }).join("");
21
27
  };
22
28
  export {
23
- d as CALENDAR_POPOVER_OFFSET,
24
- c as CALENDAR_POPOVER_PADDING,
25
- b as buildDateRegexSource,
26
- D as buildDisabledMatchers,
27
- n as getLocaleDateParts,
28
- h as resolveRangeSelection
29
+ n as CALENDAR_POPOVER_OFFSET,
30
+ h as CALENDAR_POPOVER_PADDING,
31
+ i as buildDateRegexSource,
32
+ d as buildDisabledMatchers,
33
+ c as getLocaleDateParts,
34
+ D as resolveRangeSelection
29
35
  };