@tedi-design-system/react 18.1.0-rc.8 → 18.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (177) hide show
  1. package/bundle-stats.html +1 -1
  2. package/index.css +1 -1
  3. package/package.json +12 -6
  4. package/src/community/components/anchor/anchor.d.ts +1 -0
  5. package/src/community/components/button/button.d.ts +1 -0
  6. package/src/community/components/card/card-content/card-content.d.ts +3 -0
  7. package/src/community/components/card/card-header/card-header.d.ts +3 -0
  8. package/src/community/components/card/card-notification/card-notification.d.ts +3 -0
  9. package/src/community/components/card/card.d.ts +3 -0
  10. package/src/community/components/dropdown/dropdown.cjs.js +1 -1
  11. package/src/community/components/dropdown/dropdown.d.ts +3 -0
  12. package/src/community/components/dropdown/dropdown.es.js +5 -6
  13. package/src/community/components/form/choice-group/choice-group.d.ts +3 -0
  14. package/src/community/components/form/file-upload/file-upload.d.ts +6 -0
  15. package/src/community/components/form/radio/radio.d.ts +3 -0
  16. package/src/community/components/form/select/select.d.ts +3 -0
  17. package/src/community/components/form/toggle/toggle.cjs.js +1 -1
  18. package/src/community/components/form/toggle/toggle.d.ts +3 -0
  19. package/src/community/components/form/toggle/toggle.es.js +5 -6
  20. package/src/community/components/layout/header/components/header-language/header-language.d.ts +3 -0
  21. package/src/community/components/layout/header/components/header-role/header-role.d.ts +3 -0
  22. package/src/community/components/layout/header/components/sidenav-toggle/sidenav-toggle.d.ts +3 -0
  23. package/src/community/components/layout/header/header/header.d.ts +3 -0
  24. package/src/community/components/layout/sidenav/sidenav.d.ts +3 -0
  25. package/src/community/components/map-components/button-group/button-group.module.scss.cjs.js +1 -1
  26. package/src/community/components/map-components/button-group/button-group.module.scss.es.js +1 -0
  27. package/src/community/components/map-components/left-panel/left-panel-content.cjs.js +1 -1
  28. package/src/community/components/map-components/left-panel/left-panel-content.d.ts +10 -5
  29. package/src/community/components/map-components/left-panel/left-panel-content.es.js +7 -21
  30. package/src/community/components/map-components/left-panel/left-panel-footer.cjs.js +1 -1
  31. package/src/community/components/map-components/left-panel/left-panel-footer.d.ts +11 -1
  32. package/src/community/components/map-components/left-panel/left-panel-footer.es.js +7 -24
  33. package/src/community/components/map-components/left-panel/left-panel-header.cjs.js +1 -1
  34. package/src/community/components/map-components/left-panel/left-panel-header.d.ts +11 -1
  35. package/src/community/components/map-components/left-panel/left-panel-header.es.js +7 -62
  36. package/src/community/components/map-components/left-panel/left-panel.cjs.js +1 -1
  37. package/src/community/components/map-components/left-panel/left-panel.d.ts +67 -5
  38. package/src/community/components/map-components/left-panel/left-panel.es.js +85 -14
  39. package/src/community/components/map-components/left-panel/left-panel.module.scss.cjs.js +1 -1
  40. package/src/community/components/map-components/left-panel/left-panel.module.scss.es.js +4 -4
  41. package/src/community/components/map-components/map-button/map-button.cjs.js +1 -1
  42. package/src/community/components/map-components/map-button/map-button.d.ts +8 -3
  43. package/src/community/components/map-components/map-button/map-button.es.js +42 -33
  44. package/src/community/components/map-components/map-button/map-button.module.scss.cjs.js +1 -1
  45. package/src/community/components/map-components/map-button/map-button.module.scss.es.js +3 -0
  46. package/src/community/components/map-components/resizer/resizer.cjs.js +1 -1
  47. package/src/community/components/map-components/resizer/resizer.es.js +9 -10
  48. package/src/community/components/status/status.d.ts +3 -0
  49. package/src/community/components/table/table.d.ts +3 -0
  50. package/src/community/components/tag/tag.d.ts +3 -0
  51. package/src/community/components/toggle-open/toggle-open.d.ts +3 -0
  52. package/src/community/components/tooltip/tooltip-trigger.cjs.js +1 -1
  53. package/src/community/components/tooltip/tooltip-trigger.d.ts +3 -0
  54. package/src/community/components/tooltip/tooltip-trigger.es.js +15 -14
  55. package/src/community/components/tooltip/tooltip.d.ts +3 -0
  56. package/src/tedi/components/buttons/button-content/button-content.cjs.js +1 -1
  57. package/src/tedi/components/buttons/button-content/button-content.es.js +31 -30
  58. package/src/tedi/components/buttons/collapse-button/collapse-button.cjs.js +1 -1
  59. package/src/tedi/components/buttons/collapse-button/collapse-button.es.js +2 -1
  60. package/src/tedi/components/content/label/label.cjs.js +1 -1
  61. package/src/tedi/components/content/label/label.d.ts +4 -3
  62. package/src/tedi/components/content/label/label.es.js +24 -27
  63. package/src/tedi/components/content/label/label.module.scss.cjs.js +1 -1
  64. package/src/tedi/components/content/label/label.module.scss.es.js +2 -1
  65. package/src/tedi/components/content/table/table.cjs.js +1 -1
  66. package/src/tedi/components/content/table/table.d.ts +8 -5
  67. package/src/tedi/components/content/table/table.es.js +308 -295
  68. package/src/tedi/components/form/checkbox/checkbox.cjs.js +1 -1
  69. package/src/tedi/components/form/checkbox/checkbox.es.js +64 -58
  70. package/src/tedi/components/form/choice-group/choice-group.cjs.js +1 -1
  71. package/src/tedi/components/form/choice-group/choice-group.es.js +98 -85
  72. package/src/tedi/components/form/choice-group/components/choice-group-item/choice-group-item.cjs.js +1 -1
  73. package/src/tedi/components/form/choice-group/components/choice-group-item/choice-group-item.es.js +13 -14
  74. package/src/tedi/components/form/choice-input.types.d.ts +3 -2
  75. package/src/tedi/components/form/date-field/date-field.cjs.js +1 -1
  76. package/src/tedi/components/form/date-field/date-field.d.ts +15 -0
  77. package/src/tedi/components/form/date-field/date-field.es.js +304 -269
  78. package/src/tedi/components/form/file-dropzone/file-dropzone.cjs.js +1 -1
  79. package/src/tedi/components/form/file-dropzone/file-dropzone.es.js +90 -79
  80. package/src/tedi/components/form/file-upload/file-upload.cjs.js +1 -1
  81. package/src/tedi/components/form/file-upload/file-upload.d.ts +4 -1
  82. package/src/tedi/components/form/file-upload/file-upload.es.js +138 -119
  83. package/src/tedi/components/form/file-upload/file-upload.module.scss.cjs.js +1 -1
  84. package/src/tedi/components/form/file-upload/file-upload.module.scss.es.js +1 -1
  85. package/src/tedi/components/form/form-label/form-label.d.ts +1 -1
  86. package/src/tedi/components/form/multi-value-field/multi-value-field.cjs.js +1 -1
  87. package/src/tedi/components/form/multi-value-field/multi-value-field.d.ts +8 -0
  88. package/src/tedi/components/form/multi-value-field/multi-value-field.es.js +147 -66
  89. package/src/tedi/components/form/multi-value-field/multi-value-field.module.scss.cjs.js +1 -1
  90. package/src/tedi/components/form/multi-value-field/multi-value-field.module.scss.es.js +3 -0
  91. package/src/tedi/components/form/number-field/number-field.cjs.js +1 -1
  92. package/src/tedi/components/form/number-field/number-field.es.js +117 -112
  93. package/src/tedi/components/form/radio/radio.cjs.js +1 -1
  94. package/src/tedi/components/form/radio/radio.es.js +24 -23
  95. package/src/tedi/components/form/search/search.cjs.js +1 -1
  96. package/src/tedi/components/form/search/search.es.js +60 -40
  97. package/src/tedi/components/form/search/search.module.scss.cjs.js +1 -1
  98. package/src/tedi/components/form/search/search.module.scss.es.js +7 -3
  99. package/src/tedi/components/form/select/components/select-input.cjs.js +1 -1
  100. package/src/tedi/components/form/select/components/select-input.es.js +24 -15
  101. package/src/tedi/components/form/select/components/select-multi-value-remove.cjs.js +1 -1
  102. package/src/tedi/components/form/select/components/select-multi-value-remove.es.js +11 -11
  103. package/src/tedi/components/form/select/components/select-multi-value.cjs.js +1 -1
  104. package/src/tedi/components/form/select/components/select-multi-value.es.js +34 -30
  105. package/src/tedi/components/form/select/select.cjs.js +1 -1
  106. package/src/tedi/components/form/select/select.d.ts +14 -0
  107. package/src/tedi/components/form/select/select.es.js +274 -267
  108. package/src/tedi/components/layout/header/components/header-language/header-language.cjs.js +1 -0
  109. package/src/tedi/components/layout/header/components/header-language/header-language.es.js +105 -0
  110. package/src/tedi/components/layout/header/components/header-language/header-language.module.scss.cjs.js +1 -0
  111. package/src/tedi/components/layout/header/components/header-language/header-language.module.scss.es.js +12 -0
  112. package/src/tedi/components/layout/header/components/header-login/header-login.cjs.js +1 -0
  113. package/src/tedi/components/layout/header/components/header-login/header-login.es.js +36 -0
  114. package/src/tedi/components/layout/header/components/header-login/header-login.module.scss.cjs.js +1 -0
  115. package/src/tedi/components/layout/header/components/header-login/header-login.module.scss.es.js +8 -0
  116. package/src/tedi/components/layout/header/components/header-logout/header-logout.cjs.js +1 -0
  117. package/src/tedi/components/layout/header/components/header-logout/header-logout.es.js +33 -0
  118. package/src/tedi/components/layout/header/components/header-logout/header-logout.module.scss.cjs.js +1 -0
  119. package/src/tedi/components/layout/header/components/header-logout/header-logout.module.scss.es.js +7 -0
  120. package/src/tedi/components/layout/header/components/header-mobile-button/header-mobile-button.cjs.js +1 -0
  121. package/src/tedi/components/layout/header/components/header-mobile-button/header-mobile-button.es.js +25 -0
  122. package/src/tedi/components/layout/header/components/header-mobile-button/header-mobile-button.module.scss.cjs.js +1 -0
  123. package/src/tedi/components/layout/header/components/header-mobile-button/header-mobile-button.module.scss.es.js +10 -0
  124. package/src/tedi/components/layout/header/components/header-profile/header-profile.cjs.js +1 -0
  125. package/src/tedi/components/layout/header/components/header-profile/header-profile.es.js +136 -0
  126. package/src/tedi/components/layout/header/components/header-profile/header-profile.module.scss.cjs.js +1 -0
  127. package/src/tedi/components/layout/header/components/header-profile/header-profile.module.scss.es.js +14 -0
  128. package/src/tedi/components/layout/header/components/header-role/header-role-representatives.cjs.js +1 -0
  129. package/src/tedi/components/layout/header/components/header-role/header-role-representatives.es.js +89 -0
  130. package/src/tedi/components/layout/header/components/header-role/header-role.cjs.js +1 -0
  131. package/src/tedi/components/layout/header/components/header-role/header-role.es.js +162 -0
  132. package/src/tedi/components/layout/header/components/header-role/header-role.module.scss.cjs.js +1 -0
  133. package/src/tedi/components/layout/header/components/header-role/header-role.module.scss.es.js +25 -0
  134. package/src/tedi/components/layout/header/components/header-search/header-search.cjs.js +1 -0
  135. package/src/tedi/components/layout/header/components/header-search/header-search.es.js +60 -0
  136. package/src/tedi/components/layout/header/components/header-search/header-search.module.scss.cjs.js +1 -0
  137. package/src/tedi/components/layout/header/components/header-search/header-search.module.scss.es.js +9 -0
  138. package/src/tedi/components/layout/header/header.cjs.js +1 -0
  139. package/src/tedi/components/layout/header/header.es.js +63 -0
  140. package/src/tedi/components/layout/header/header.module.scss.cjs.js +1 -0
  141. package/src/tedi/components/layout/header/header.module.scss.es.js +13 -0
  142. package/src/tedi/components/layout/hide-at/hide-at.cjs.js +1 -0
  143. package/src/tedi/components/layout/hide-at/hide-at.es.js +10 -0
  144. package/src/tedi/components/layout/show-at/show-at.cjs.js +1 -0
  145. package/src/tedi/components/layout/show-at/show-at.es.js +10 -0
  146. package/src/tedi/components/loaders/spinner/spinner.cjs.js +1 -1
  147. package/src/tedi/components/loaders/spinner/spinner.d.ts +7 -0
  148. package/src/tedi/components/loaders/spinner/spinner.es.js +29 -18
  149. package/src/tedi/components/overlays/dropdown/dropdown-trigger/dropdown-trigger.cjs.js +1 -1
  150. package/src/tedi/components/overlays/dropdown/dropdown-trigger/dropdown-trigger.es.js +8 -7
  151. package/src/tedi/components/overlays/modal/modal-trigger/modal-trigger.cjs.js +1 -1
  152. package/src/tedi/components/overlays/modal/modal-trigger/modal-trigger.es.js +10 -9
  153. package/src/tedi/components/overlays/overlay/overlay-content.cjs.js +1 -1
  154. package/src/tedi/components/overlays/overlay/overlay-content.es.js +14 -12
  155. package/src/tedi/components/overlays/overlay/overlay-trigger.cjs.js +1 -1
  156. package/src/tedi/components/overlays/overlay/overlay-trigger.es.js +20 -19
  157. package/src/tedi/components/overlays/overlay/overlay.cjs.js +1 -1
  158. package/src/tedi/components/overlays/overlay/overlay.d.ts +10 -0
  159. package/src/tedi/components/overlays/overlay/overlay.es.js +74 -71
  160. package/src/tedi/components/overlays/tooltip/index.d.ts +1 -0
  161. package/src/tedi/components/overlays/tooltip/info-tooltip.cjs.js +1 -0
  162. package/src/tedi/components/overlays/tooltip/info-tooltip.d.ts +52 -0
  163. package/src/tedi/components/overlays/tooltip/info-tooltip.es.js +24 -0
  164. package/src/tedi/components/tags/tag/tag.cjs.js +1 -1
  165. package/src/tedi/components/tags/tag/tag.d.ts +9 -0
  166. package/src/tedi/components/tags/tag/tag.es.js +18 -17
  167. package/src/tedi/helpers/get-element-ref.cjs.js +1 -0
  168. package/src/tedi/helpers/get-element-ref.d.ts +11 -0
  169. package/src/tedi/helpers/get-element-ref.es.js +8 -0
  170. package/src/tedi/helpers/hooks/use-file-upload.cjs.js +1 -1
  171. package/src/tedi/helpers/hooks/use-file-upload.es.js +71 -66
  172. package/src/tedi/index.d.ts +3 -0
  173. package/src/tedi/providers/label-provider/labels-map.cjs.js +1 -1
  174. package/src/tedi/providers/label-provider/labels-map.d.ts +69 -6
  175. package/src/tedi/providers/label-provider/labels-map.es.js +137 -74
  176. package/tedi.cjs.js +1 -1
  177. package/tedi.es.js +305 -281
@@ -1 +1 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("react/jsx-runtime"),x=require("../../../../../external/classnames/index.cjs.js"),_=require("react"),j=require("../../base/icon/icon.cjs.js"),w=require("../../buttons/closing-button/closing-button.cjs.js"),k=require("../../misc/separator/separator.cjs.js"),z=require("../../tags/tag/tag.cjs.js"),R=require("../form-label/form-label.cjs.js"),i=require("./multi-value-field.module.scss.cjs.js"),$=require("../../../providers/label-provider/use-labels.cjs.js"),c=_.forwardRef((h,O)=>{const{id:b,label:d,name:m,values:f,onChange:n,tagColor:q="primary",className:N,icon:t,onIconClick:v,iconButtonProps:s,isClearable:V=!0,required:p,disabled:u}=h,{getLabel:y}=$.useLabels(),[C,S]=_.useState(f??[]),a=f??C,g=l=>{S(l),n==null||n(l)},F=l=>{const r=a.filter((T,M)=>M!==l);g(r)},o=!u&&V&&a.length>0,I=()=>{g([])},L=()=>{if(!t)return null;const l=typeof t=="string"?{name:t}:t;return v?e.jsx("button",{...s,className:x.default(i.default["tedi-multi-value-field__icon-wrapper"],s==null?void 0:s.className),onClick:v,type:"button",children:e.jsx(j.Icon,{...l,size:18})}):e.jsx("div",{className:i.default["tedi-multi-value-field__icon-wrapper"],children:e.jsx(j.Icon,{...l,size:18})})};return e.jsxs("div",{className:x.default(i.default["tedi-multi-value-field"],N),children:[d&&e.jsx(R.FormLabel,{id:b,label:d,required:p}),e.jsxs("div",{className:i.default["tedi-multi-value-field__inner"],children:[a.length>0&&e.jsx("div",{className:i.default["tedi-multi-value-field__tags"],children:a.map((l,r)=>e.jsx(z.Tag,{color:q,onClose:u?void 0:()=>F(r),children:l},`${l}-${r}`))}),(o||t)&&e.jsxs("div",{className:i.default["tedi-multi-value-field__right-area"],children:[o&&e.jsx(w.ClosingButton,{onClick:I,title:y("clear"),className:i.default["tedi-multi-value-field__clear-button"],iconSize:18}),o&&t&&e.jsx(k.Separator,{color:"primary",axis:"vertical",height:1.5,spacing:.25}),t&&L()]})]}),m&&e.jsx("input",{type:"hidden",name:m,value:a.length?JSON.stringify(a):"",required:p,disabled:u})]})});c.displayName="MultiValueField";exports.MultiValueField=c;exports.default=c;
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const l=require("react/jsx-runtime"),v=require("../../../../../external/classnames/index.cjs.js"),i=require("react"),T=require("../../base/icon/icon.cjs.js"),Z=require("../../buttons/closing-button/closing-button.cjs.js"),ee=require("../../misc/separator/separator.cjs.js"),z=require("../../tags/tag/tag.cjs.js"),te=require("../form-label/form-label.cjs.js"),r=require("./multi-value-field.module.scss.cjs.js"),le=require("../../../providers/label-provider/use-labels.cjs.js"),j=4,ie=44,N=i.forwardRef((F,O)=>{const{id:A,label:w,name:q,values:C,onChange:_,tagColor:y="primary",tagsDirection:P="stack",className:$,icon:o,onIconClick:V,iconButtonProps:m,isClearable:G=!0,required:S,disabled:b}=F,{getLabel:M}=le.useLabels(),[X,B]=i.useState(C??[]),E=i.useRef(null),W=i.useRef(null);i.useImperativeHandle(O,()=>({input:W.current,wrapper:E.current}),[]);const a=C??X,n=P==="row",[f,D]=i.useState(null),H=i.useCallback(e=>D(e),[]),p=i.useRef(0),[d,g]=i.useState(null);i.useEffect(()=>{n&&g(null)},[a.length,n]),i.useEffect(()=>{if(!n||!f||typeof ResizeObserver>"u")return;const e=new ResizeObserver(t=>{var c;const s=((c=t[0])==null?void 0:c.contentRect.width)??0;s>0&&s!==p.current&&g(null)});return e.observe(f),()=>e.disconnect()},[n,f]),i.useLayoutEffect(()=>{if(!n||d!==null)return;const e=f;if(!e)return;const t=e.clientWidth;if(t===0)return;const s=e.querySelectorAll("[data-tedi-tag-index]");if(s.length===0)return;let c=0;for(let u=0;u<s.length;u++)c+=s[u].offsetWidth+(u>0?j:0);if(c<=t){p.current=t,g(s.length);return}let k=0,h=0;for(let u=0;u<s.length;u++){const Q=s[u].offsetWidth,Y=u<s.length-1?ie+j:0,L=k+Q+(h>0?j:0);if(L+Y<=t)k=L,h++;else break}h===0&&(h=1),p.current=t,g(h)},[n,d,a,f]);const I=e=>{B(e),_==null||_(e)},J=e=>{const t=a.filter((s,c)=>c!==e);I(t)},x=!b&&G&&a.length>0,U=()=>{I([])},R=n&&d!==null?Math.max(0,a.length-d):0,K=()=>{if(!o)return null;const e=typeof o=="string"?{name:o}:o;return V?l.jsx("button",{...m,className:v.default(r.default["tedi-multi-value-field__icon-wrapper"],m==null?void 0:m.className),onClick:V,type:"button",children:l.jsx(T.Icon,{...e,size:18})}):l.jsx("div",{className:r.default["tedi-multi-value-field__icon-wrapper"],children:l.jsx(T.Icon,{...e,size:18})})};return l.jsxs("div",{className:v.default(r.default["tedi-multi-value-field"],$),children:[w&&l.jsx(te.FormLabel,{id:A,label:w,required:S}),l.jsxs("div",{ref:E,className:v.default(r.default["tedi-multi-value-field__inner"],{[r.default["tedi-multi-value-field__inner--row"]]:n}),children:[a.length>0&&l.jsxs("div",{ref:H,className:v.default(r.default["tedi-multi-value-field__tags"],{[r.default["tedi-multi-value-field__tags--row"]]:n}),children:[a.map((e,t)=>n&&d!==null&&t>=d?null:l.jsx(z.Tag,{color:y,"data-tedi-tag-index":t,onClose:b?void 0:()=>J(t),children:e},`${e}-${t}`)),R>0&&l.jsxs(z.Tag,{color:y,className:r.default["tedi-multi-value-field__overflow-tag"],"aria-label":M("multi-value-field.hidden-count",R),children:["+",R]})]}),(x||o)&&l.jsxs("div",{className:r.default["tedi-multi-value-field__right-area"],children:[x&&l.jsx(Z.ClosingButton,{onClick:U,title:M("clear"),className:r.default["tedi-multi-value-field__clear-button"],iconSize:18}),x&&o&&l.jsx(ee.Separator,{color:"primary",axis:"vertical",height:1.5,spacing:.25}),o&&K()]})]}),q&&l.jsx("input",{ref:W,type:"hidden",name:q,value:a.length?JSON.stringify(a):"",required:S,disabled:b})]})});N.displayName="MultiValueField";exports.MultiValueField=N;exports.default=N;
@@ -29,6 +29,14 @@ export interface MultiValueFieldProps {
29
29
  * @default 'primary'
30
30
  */
31
31
  tagColor?: 'primary' | 'secondary' | 'danger';
32
+ /**
33
+ * Layout for the value tags.
34
+ * - `'stack'` (default) — tags wrap onto multiple rows; the field grows in height.
35
+ * - `'row'` — tags stay on a single row; any that don't fit collapse into a
36
+ * `+N` counter (the count is measured from the available width).
37
+ * @default stack
38
+ */
39
+ tagsDirection?: 'stack' | 'row';
32
40
  /**
33
41
  * Additional CSS class names applied to the root element.
34
42
  */
@@ -1,81 +1,162 @@
1
- import { jsxs as m, jsx as l } from "react/jsx-runtime";
2
- import _ from "../../../../../external/classnames/index.es.js";
3
- import { forwardRef as L, useState as j } from "react";
4
- import { Icon as g } from "../../base/icon/icon.es.js";
5
- import { ClosingButton as M } from "../../buttons/closing-button/closing-button.es.js";
6
- import { Separator as $ } from "../../misc/separator/separator.es.js";
7
- import { Tag as q } from "../../tags/tag/tag.es.js";
8
- import { FormLabel as A } from "../form-label/form-label.es.js";
9
- import t from "./multi-value-field.module.scss.es.js";
10
- import { useLabels as J } from "../../../providers/label-provider/use-labels.es.js";
11
- const O = L((N, R) => {
1
+ import { jsxs as m, jsx as a } from "react/jsx-runtime";
2
+ import v from "../../../../../external/classnames/index.es.js";
3
+ import { forwardRef as te, useState as R, useRef as C, useImperativeHandle as le, useCallback as ie, useEffect as T, useLayoutEffect as re } from "react";
4
+ import { Icon as F } from "../../base/icon/icon.es.js";
5
+ import { ClosingButton as ne } from "../../buttons/closing-button/closing-button.es.js";
6
+ import { Separator as se } from "../../misc/separator/separator.es.js";
7
+ import { Tag as P } from "../../tags/tag/tag.es.js";
8
+ import { FormLabel as ae } from "../form-label/form-label.es.js";
9
+ import r from "./multi-value-field.module.scss.es.js";
10
+ import { useLabels as oe } from "../../../providers/label-provider/use-labels.es.js";
11
+ const y = 4, ue = 44, ce = te((j, q) => {
12
12
  const {
13
- id: b,
14
- label: d,
15
- name: u,
16
- values: f,
17
- onChange: o,
18
- tagColor: y = "primary",
19
- className: C,
20
- icon: i,
21
- onIconClick: p,
22
- iconButtonProps: a,
23
- isClearable: V = !0,
24
- required: v,
25
- disabled: n
26
- } = N, { getLabel: w } = J(), [x, I] = j(f ?? []), r = f ?? x, h = (e) => {
27
- I(e), o == null || o(e);
28
- }, S = (e) => {
29
- const s = r.filter((T, F) => F !== e);
30
- h(s);
31
- }, c = !n && V && r.length > 0, k = () => {
32
- h([]);
33
- }, z = () => {
34
- if (!i) return null;
35
- const e = typeof i == "string" ? { name: i } : i;
36
- return p ? /* @__PURE__ */ l(
13
+ id: G,
14
+ label: V,
15
+ name: W,
16
+ values: E,
17
+ onChange: g,
18
+ tagColor: k = "primary",
19
+ tagsDirection: X = "stack",
20
+ className: $,
21
+ icon: o,
22
+ onIconClick: I,
23
+ iconButtonProps: h,
24
+ isClearable: D = !0,
25
+ required: M,
26
+ disabled: _
27
+ } = j, { getLabel: S } = oe(), [H, J] = R(E ?? []), x = C(null), z = C(null);
28
+ le(q, () => ({ input: z.current, wrapper: x.current }), []);
29
+ const n = E ?? H, i = X === "row", [d, U] = R(null), B = ie((e) => U(e), []), b = C(0), [c, p] = R(null);
30
+ T(() => {
31
+ i && p(null);
32
+ }, [n.length, i]), T(() => {
33
+ if (!i || !d || typeof ResizeObserver > "u") return;
34
+ const e = new ResizeObserver((t) => {
35
+ var u;
36
+ const l = ((u = t[0]) == null ? void 0 : u.contentRect.width) ?? 0;
37
+ l > 0 && l !== b.current && p(null);
38
+ });
39
+ return e.observe(d), () => e.disconnect();
40
+ }, [i, d]), re(() => {
41
+ if (!i || c !== null) return;
42
+ const e = d;
43
+ if (!e) return;
44
+ const t = e.clientWidth;
45
+ if (t === 0) return;
46
+ const l = e.querySelectorAll("[data-tedi-tag-index]");
47
+ if (l.length === 0) return;
48
+ let u = 0;
49
+ for (let s = 0; s < l.length; s++)
50
+ u += l[s].offsetWidth + (s > 0 ? y : 0);
51
+ if (u <= t) {
52
+ b.current = t, p(l.length);
53
+ return;
54
+ }
55
+ let L = 0, f = 0;
56
+ for (let s = 0; s < l.length; s++) {
57
+ const Z = l[s].offsetWidth, ee = s < l.length - 1 ? ue + y : 0, O = L + Z + (f > 0 ? y : 0);
58
+ if (O + ee <= t)
59
+ L = O, f++;
60
+ else
61
+ break;
62
+ }
63
+ f === 0 && (f = 1), b.current = t, p(f);
64
+ }, [i, c, n, d]);
65
+ const A = (e) => {
66
+ J(e), g == null || g(e);
67
+ }, K = (e) => {
68
+ const t = n.filter((l, u) => u !== e);
69
+ A(t);
70
+ }, N = !_ && D && n.length > 0, Q = () => {
71
+ A([]);
72
+ }, w = i && c !== null ? Math.max(0, n.length - c) : 0, Y = () => {
73
+ if (!o) return null;
74
+ const e = typeof o == "string" ? { name: o } : o;
75
+ return I ? /* @__PURE__ */ a(
37
76
  "button",
38
77
  {
39
- ...a,
40
- className: _(t["tedi-multi-value-field__icon-wrapper"], a == null ? void 0 : a.className),
41
- onClick: p,
78
+ ...h,
79
+ className: v(r["tedi-multi-value-field__icon-wrapper"], h == null ? void 0 : h.className),
80
+ onClick: I,
42
81
  type: "button",
43
- children: /* @__PURE__ */ l(g, { ...e, size: 18 })
82
+ children: /* @__PURE__ */ a(F, { ...e, size: 18 })
44
83
  }
45
- ) : /* @__PURE__ */ l("div", { className: t["tedi-multi-value-field__icon-wrapper"], children: /* @__PURE__ */ l(g, { ...e, size: 18 }) });
84
+ ) : /* @__PURE__ */ a("div", { className: r["tedi-multi-value-field__icon-wrapper"], children: /* @__PURE__ */ a(F, { ...e, size: 18 }) });
46
85
  };
47
- return /* @__PURE__ */ m("div", { className: _(t["tedi-multi-value-field"], C), children: [
48
- d && /* @__PURE__ */ l(A, { id: b, label: d, required: v }),
49
- /* @__PURE__ */ m("div", { className: t["tedi-multi-value-field__inner"], children: [
50
- r.length > 0 && /* @__PURE__ */ l("div", { className: t["tedi-multi-value-field__tags"], children: r.map((e, s) => /* @__PURE__ */ l(q, { color: y, onClose: n ? void 0 : () => S(s), children: e }, `${e}-${s}`)) }),
51
- (c || i) && /* @__PURE__ */ m("div", { className: t["tedi-multi-value-field__right-area"], children: [
52
- c && /* @__PURE__ */ l(
53
- M,
54
- {
55
- onClick: k,
56
- title: w("clear"),
57
- className: t["tedi-multi-value-field__clear-button"],
58
- iconSize: 18
59
- }
60
- ),
61
- c && i && /* @__PURE__ */ l($, { color: "primary", axis: "vertical", height: 1.5, spacing: 0.25 }),
62
- i && z()
63
- ] })
64
- ] }),
65
- u && /* @__PURE__ */ l(
86
+ return /* @__PURE__ */ m("div", { className: v(r["tedi-multi-value-field"], $), children: [
87
+ V && /* @__PURE__ */ a(ae, { id: G, label: V, required: M }),
88
+ /* @__PURE__ */ m(
89
+ "div",
90
+ {
91
+ ref: x,
92
+ className: v(r["tedi-multi-value-field__inner"], {
93
+ [r["tedi-multi-value-field__inner--row"]]: i
94
+ }),
95
+ children: [
96
+ n.length > 0 && /* @__PURE__ */ m(
97
+ "div",
98
+ {
99
+ ref: B,
100
+ className: v(r["tedi-multi-value-field__tags"], {
101
+ [r["tedi-multi-value-field__tags--row"]]: i
102
+ }),
103
+ children: [
104
+ n.map((e, t) => i && c !== null && t >= c ? null : /* @__PURE__ */ a(
105
+ P,
106
+ {
107
+ color: k,
108
+ "data-tedi-tag-index": t,
109
+ onClose: _ ? void 0 : () => K(t),
110
+ children: e
111
+ },
112
+ `${e}-${t}`
113
+ )),
114
+ w > 0 && /* @__PURE__ */ m(
115
+ P,
116
+ {
117
+ color: k,
118
+ className: r["tedi-multi-value-field__overflow-tag"],
119
+ "aria-label": S("multi-value-field.hidden-count", w),
120
+ children: [
121
+ "+",
122
+ w
123
+ ]
124
+ }
125
+ )
126
+ ]
127
+ }
128
+ ),
129
+ (N || o) && /* @__PURE__ */ m("div", { className: r["tedi-multi-value-field__right-area"], children: [
130
+ N && /* @__PURE__ */ a(
131
+ ne,
132
+ {
133
+ onClick: Q,
134
+ title: S("clear"),
135
+ className: r["tedi-multi-value-field__clear-button"],
136
+ iconSize: 18
137
+ }
138
+ ),
139
+ N && o && /* @__PURE__ */ a(se, { color: "primary", axis: "vertical", height: 1.5, spacing: 0.25 }),
140
+ o && Y()
141
+ ] })
142
+ ]
143
+ }
144
+ ),
145
+ W && /* @__PURE__ */ a(
66
146
  "input",
67
147
  {
148
+ ref: z,
68
149
  type: "hidden",
69
- name: u,
70
- value: r.length ? JSON.stringify(r) : "",
71
- required: v,
72
- disabled: n
150
+ name: W,
151
+ value: n.length ? JSON.stringify(n) : "",
152
+ required: M,
153
+ disabled: _
73
154
  }
74
155
  )
75
156
  ] });
76
157
  });
77
- O.displayName = "MultiValueField";
158
+ ce.displayName = "MultiValueField";
78
159
  export {
79
- O as MultiValueField,
80
- O as default
160
+ ce as MultiValueField,
161
+ ce as default
81
162
  };
@@ -1 +1 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e={"tedi-multi-value-field__inner":"tedi-multi-value-field__inner-d00be7fe","tedi-multi-value-field__tags":"tedi-multi-value-field__tags-4f52450e","tedi-multi-value-field__right-area":"tedi-multi-value-field__right-area-2d533551","tedi-multi-value-field__icon-wrapper":"tedi-multi-value-field__icon-wrapper-d73d0e44"};exports.default=e;
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e={"tedi-multi-value-field__inner":"tedi-multi-value-field__inner-d00be7fe","tedi-multi-value-field__inner--row":"tedi-multi-value-field__inner--row-50af96e5","tedi-multi-value-field__tags":"tedi-multi-value-field__tags-4f52450e","tedi-multi-value-field__tags--row":"tedi-multi-value-field__tags--row-fa16b6db","tedi-multi-value-field__overflow-tag":"tedi-multi-value-field__overflow-tag-e6aa972a","tedi-multi-value-field__right-area":"tedi-multi-value-field__right-area-2d533551","tedi-multi-value-field__icon-wrapper":"tedi-multi-value-field__icon-wrapper-d73d0e44"};exports.default=e;
@@ -1,6 +1,9 @@
1
1
  const e = {
2
2
  "tedi-multi-value-field__inner": "tedi-multi-value-field__inner-d00be7fe",
3
+ "tedi-multi-value-field__inner--row": "tedi-multi-value-field__inner--row-50af96e5",
3
4
  "tedi-multi-value-field__tags": "tedi-multi-value-field__tags-4f52450e",
5
+ "tedi-multi-value-field__tags--row": "tedi-multi-value-field__tags--row-fa16b6db",
6
+ "tedi-multi-value-field__overflow-tag": "tedi-multi-value-field__overflow-tag-e6aa972a",
4
7
  "tedi-multi-value-field__right-area": "tedi-multi-value-field__right-area-2d533551",
5
8
  "tedi-multi-value-field__icon-wrapper": "tedi-multi-value-field__icon-wrapper-d73d0e44"
6
9
  };
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const l=require("react/jsx-runtime"),y=require("../../../../../external/classnames/index.cjs.js"),u=require("react"),re=require("../../base/typography/text/text.cjs.js"),le=require("../../buttons/button/button.cjs.js"),se=require("../feedback-text/feedback-text.cjs.js"),ue=require("../form-label/form-label.cjs.js"),n=require("./number-field.module.scss.cjs.js"),de=require("../../../helpers/hooks/use-breakpoint-props.cjs.js"),oe=require("../../../providers/label-provider/use-labels.cjs.js"),z=S=>{const{getCurrentBreakpointProps:C}=de.useBreakpointProps(S.defaultServerBreakpoint),{getLabel:L,locale:D}=oe.useLabels(),W=D==="en"?".":",",{id:B,label:A,hideLabel:G,required:T,className:V,size:N,inputMode:H,decimalPlaces:p,decimalSeparator:F=W,min:d,max:o,step:I=1,defaultValue:g,value:c,onChange:a,suffix:h,fullWidth:J=!1,disabled:b=!1,invalid:k=!1,helper:i,input:v}=C(S),K=H??(p&&p>0||F===","?"decimal":"numeric"),m=u.useCallback(e=>e===void 0?"":F===","?String(e).replace(".",","):String(e),[F]),x=u.useRef(null),q=u.useRef(!1),[w,E]=u.useState(""),[Q,j]=u.useState(g),[X,_]=u.useState(()=>m(c??g)),r=a&&typeof c<"u"?c:Q;u.useEffect(()=>{!q.current&&typeof c<"u"&&_(m(c))},[c,m]);const O=i?`${B}-helper`:void 0,P=u.useCallback(e=>{if(e===void 0)return k||(i==null?void 0:i.type)==="error";const t=d!==void 0&&e<d,s=o!==void 0&&e>o;return k||t||s||(i==null?void 0:i.type)==="error"},[k,i,o,d]),U=e=>Math.min(o??1/0,Math.max(d??-1/0,e)),Y=e=>{const t=L("numberField.quantityUpdated",e);E(t),setTimeout(()=>{E("")},5e3)},R=e=>p!==void 0?parseFloat(e.toFixed(p)):e,Z=e=>{let t=r??0;e==="increment"&&(t=t+I),e==="decrement"&&(t=t-I),t=U(t),t=R(t),Y(t),a==null||a(t),j(t),_(m(t))},ee=({currentTarget:{value:e}})=>{if(_(e),e===""){r!==void 0&&(a==null||a(void 0),j(void 0));return}const t=e.replace(",",".");if(!/^-?(\d+(\.\d*)?|\.\d+)$/.test(t))return;const s=parseFloat(t);if(Number.isNaN(s))return;const f=U(s),M=R(f);M!==r&&(a==null||a(M),j(M))},te=()=>{q.current=!0},ne=()=>{q.current=!1,_(m(r))},$=e=>{const t=r!==void 0&&(e==="increment"?o!==void 0&&r>=o:d!==void 0&&r<=d),s=y.default(n.default["tedi-number-field__button"],n.default[`tedi-number-field__button--${e}`],{[n.default["tedi-number-field__button--disabled"]]:t||b}),f=L(`numberField.${e}`,I);return l.jsx(le.Button,{"aria-label":f,onClick:()=>Z(e),disabled:t||b,visualType:"secondary",className:s,icon:{name:e==="increment"?"add":"remove"},size:N==="small"?"small":void 0,children:e==="increment"?"+":"-"})},ae=()=>{const e=y.default(n.default["tedi-number-field__input-wrapper"],{[n.default["tedi-number-field__input-wrapper--with-suffix"]]:h,[n.default["tedi-number-field__input-wrapper--full-width"]]:J}),t=y.default(n.default["tedi-number-field__input"],v==null?void 0:v.className),s=()=>{var f;return(f=x==null?void 0:x.current)==null?void 0:f.focus()};return l.jsxs("div",{className:e,onClick:s,children:[l.jsx("input",{ref:x,id:B,role:"spinbutton","aria-valuemin":d,"aria-valuemax":o,"aria-valuenow":r,"aria-describedby":O,"aria-invalid":P(r)?"true":"false",type:"text",inputMode:K,value:X,required:T,disabled:b,onChange:ee,onFocus:te,onBlur:ne,className:t,...v}),h&&l.jsx(re.Text,{element:"span",modifiers:"small",color:"tertiary",className:n.default["tedi-number-field__suffix"],children:h})]})},ie=y.default(n.default["tedi-number-field"],{[n.default["tedi-number-field--invalid"]]:P(r)},{[n.default["tedi-number-field--disabled"]]:b},{[n.default["tedi-number-field--small"]]:N==="small"},V);return l.jsxs("div",{"data-name":"number-field",className:V,children:[l.jsx(ue.FormLabel,{id:B,label:A,required:T,hideLabel:G,size:N}),l.jsxs("div",{className:ie,children:[$("decrement"),ae(),$("increment")]}),i&&l.jsx(se.FeedbackText,{className:n.default["tedi-number-field__feedback"],...i,id:O}),w&&l.jsx("div",{"aria-live":"polite",className:"sr-only",children:w})]})};z.displayName="NumberField";exports.NumberField=z;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const s=require("react/jsx-runtime"),T=require("../../../../../external/classnames/index.cjs.js"),r=require("react"),ce=require("../../base/typography/text/text.cjs.js"),fe=require("../../buttons/button/button.cjs.js"),me=require("../feedback-text/feedback-text.cjs.js"),be=require("../form-label/form-label.cjs.js"),i=require("./number-field.module.scss.cjs.js"),pe=require("../../../helpers/hooks/use-breakpoint-props.cjs.js"),ve=require("../../../providers/label-provider/use-labels.cjs.js"),U=g=>{const{getCurrentBreakpointProps:G}=pe.useBreakpointProps(g.defaultServerBreakpoint),{getLabel:h,locale:J}=ve.useLabels(),K=J==="en"?".":",",{id:Q,label:k,hideLabel:X,required:w,className:C,size:q,inputMode:Y,decimalPlaces:x,decimalSeparator:j=K,min:d,max:o,step:M=1,defaultValue:O,value:c,onChange:a,suffix:S,fullWidth:Z=!1,disabled:N=!1,invalid:R=!1,helper:u,input:_}=G(g),ee=r.useId(),E=Q??ee,te=Y??(x&&x>0||j===","?"decimal":"numeric"),m=r.useCallback(e=>e===void 0?"":j===","?String(e).replace(".",","):String(e),[j]),y=r.useRef(null),B=r.useRef(!1),[ne,L]=r.useState(""),[re,V]=r.useState(O),[ie,I]=r.useState(()=>m(c??O)),F=c!==void 0,n=F?c:re,b=r.useRef(),p=r.useRef(),P=r.useRef(n);r.useEffect(()=>{!B.current&&typeof c<"u"&&I(m(c))},[c,m]);const $=u?`${E}-helper`:void 0,z=r.useCallback(e=>{if(e===void 0)return R||(u==null?void 0:u.type)==="error";const t=d!==void 0&&e<d,l=o!==void 0&&e>o;return R||t||l||(u==null?void 0:u.type)==="error"},[R,u,o,d]),A=e=>Math.min(o??1/0,Math.max(d??-1/0,e)),D=r.useCallback(e=>{e&&(L(""),b.current&&clearTimeout(b.current),p.current&&clearTimeout(p.current),b.current=setTimeout(()=>{L(e),p.current=setTimeout(()=>L(""),5e3)},100))},[]);r.useEffect(()=>()=>{b.current&&clearTimeout(b.current),p.current&&clearTimeout(p.current)},[]),r.useEffect(()=>{P.current!==n&&(!B.current&&n!==void 0&&D(h("numberField.quantityUpdated",n)),P.current=n)},[n,D,h]);const W=e=>x!==void 0?parseFloat(e.toFixed(x)):e,ue=e=>{let t=n??0;e==="increment"&&(t=t+M),e==="decrement"&&(t=t-M),t=A(t),t=W(t),a==null||a(t),F||V(t),I(m(t))},ae=({currentTarget:{value:e}})=>{if(I(e),e===""){n!==void 0&&(a==null||a(void 0),F||V(void 0));return}const t=e.replace(",",".");if(!/^-?(\d+(\.\d*)?|\.\d+)$/.test(t))return;const l=parseFloat(t);if(Number.isNaN(l))return;const f=A(l),v=W(f);v!==n&&(a==null||a(v),F||V(v))},se=()=>{B.current=!0},le=()=>{B.current=!1,I(m(n))},H=e=>{const t=n!==void 0&&(e==="increment"?o!==void 0&&n>=o:d!==void 0&&n<=d),l=T.default(i.default["tedi-number-field__button"],i.default[`tedi-number-field__button--${e}`],{[i.default["tedi-number-field__button--disabled"]]:t||N}),f=typeof k=="string"?k:void 0,v=h(`numberField.${e}`,M,f);return s.jsx(fe.Button,{"aria-label":v,onClick:()=>ue(e),disabled:t||N,visualType:"secondary",className:l,icon:{name:e==="increment"?"add":"remove"},size:q==="small"?"small":void 0,children:e==="increment"?"+":"-"})},de=()=>{const e=T.default(i.default["tedi-number-field__input-wrapper"],{[i.default["tedi-number-field__input-wrapper--with-suffix"]]:S,[i.default["tedi-number-field__input-wrapper--full-width"]]:Z}),t=T.default(i.default["tedi-number-field__input"],_==null?void 0:_.className),l=()=>{var f;return(f=y==null?void 0:y.current)==null?void 0:f.focus()};return s.jsxs("div",{className:e,onClick:l,children:[s.jsx("input",{ref:y,id:E,role:"spinbutton","aria-valuemin":d,"aria-valuemax":o,"aria-valuenow":n,"aria-describedby":$,"aria-invalid":z(n)?"true":"false",type:"text",inputMode:te,value:ie,required:w,disabled:N,onChange:ae,onFocus:se,onBlur:le,className:t,..._}),S&&s.jsx(ce.Text,{element:"span",modifiers:"small",color:"tertiary",className:i.default["tedi-number-field__suffix"],children:S})]})},oe=T.default(i.default["tedi-number-field"],{[i.default["tedi-number-field--invalid"]]:z(n)},{[i.default["tedi-number-field--disabled"]]:N},{[i.default["tedi-number-field--small"]]:q==="small"},C);return s.jsxs("div",{"data-name":"number-field",className:C,children:[s.jsx(be.FormLabel,{id:E,label:k,required:w,hideLabel:X,size:q}),s.jsxs("div",{className:oe,children:[H("decrement"),de(),H("increment")]}),u&&s.jsx(me.FeedbackText,{className:i.default["tedi-number-field__feedback"],...u,id:$}),s.jsx("div",{role:"status","aria-live":"polite","aria-atomic":"true",className:"sr-only",children:ne})]})};U.displayName="NumberField";exports.NumberField=U;
@@ -1,145 +1,150 @@
1
- import { jsxs as L, jsx as c } from "react/jsx-runtime";
2
- import _ from "../../../../../external/classnames/index.es.js";
3
- import { useCallback as D, useRef as W, useState as S, useEffect as se } from "react";
4
- import { Text as oe } from "../../base/typography/text/text.es.js";
5
- import { Button as de } from "../../buttons/button/button.es.js";
6
- import { FeedbackText as ue } from "../feedback-text/feedback-text.es.js";
7
- import { FormLabel as ce } from "../form-label/form-label.es.js";
1
+ import { jsxs as $, jsx as c } from "react/jsx-runtime";
2
+ import F from "../../../../../external/classnames/index.es.js";
3
+ import { useId as pe, useCallback as z, useRef as v, useState as C, useEffect as P } from "react";
4
+ import { Text as be } from "../../base/typography/text/text.es.js";
5
+ import { Button as ve } from "../../buttons/button/button.es.js";
6
+ import { FeedbackText as Ne } from "../feedback-text/feedback-text.es.js";
7
+ import { FormLabel as _e } from "../form-label/form-label.es.js";
8
8
  import n from "./number-field.module.scss.es.js";
9
- import { useBreakpointProps as me } from "../../../helpers/hooks/use-breakpoint-props.es.js";
10
- import { useLabels as fe } from "../../../providers/label-provider/use-labels.es.js";
11
- const pe = (T) => {
12
- const { getCurrentBreakpointProps: A } = me(T.defaultServerBreakpoint), { getLabel: w, locale: R } = fe(), G = R === "en" ? "." : ",", {
13
- id: y,
14
- label: H,
15
- hideLabel: J,
16
- required: E,
17
- className: U,
18
- size: B,
19
- inputMode: K,
20
- decimalPlaces: f,
21
- decimalSeparator: I = G,
22
- min: l,
23
- max: s,
24
- step: x = 1,
25
- defaultValue: O,
26
- value: d,
27
- onChange: i,
28
- suffix: h,
29
- fullWidth: Q = !1,
30
- disabled: p = !1,
31
- invalid: F = !1,
32
- helper: r,
33
- input: b
34
- } = A(T), X = K ?? (f && f > 0 || I === "," ? "decimal" : "numeric"), m = D(
35
- (e) => e === void 0 ? "" : I === "," ? String(e).replace(".", ",") : String(e),
36
- [I]
37
- ), v = W(null), M = W(!1), [$, g] = S(""), [Y, k] = S(O), [Z, N] = S(() => m(d ?? O)), a = i && typeof d < "u" ? d : Y;
38
- se(() => {
39
- !M.current && typeof d < "u" && N(m(d));
40
- }, [d, m]);
41
- const z = r ? `${y}-helper` : void 0, P = D(
9
+ import { useBreakpointProps as ye } from "../../../helpers/hooks/use-breakpoint-props.es.js";
10
+ import { useLabels as Be } from "../../../providers/label-provider/use-labels.es.js";
11
+ const Ie = (j) => {
12
+ const { getCurrentBreakpointProps: Q } = ye(j.defaultServerBreakpoint), { getLabel: T, locale: X } = Be(), Y = X === "en" ? "." : ",", {
13
+ id: Z,
14
+ label: M,
15
+ hideLabel: ee,
16
+ required: q,
17
+ className: A,
18
+ size: k,
19
+ inputMode: te,
20
+ decimalPlaces: N,
21
+ decimalSeparator: S = Y,
22
+ min: a,
23
+ max: l,
24
+ step: V = 1,
25
+ defaultValue: D,
26
+ value: u,
27
+ onChange: o,
28
+ suffix: w,
29
+ fullWidth: re = !1,
30
+ disabled: _ = !1,
31
+ invalid: E = !1,
32
+ helper: i,
33
+ input: y
34
+ } = Q(j), ne = pe(), L = Z ?? ne, ie = te ?? (N && N > 0 || S === "," ? "decimal" : "numeric"), m = z(
35
+ (e) => e === void 0 ? "" : S === "," ? String(e).replace(".", ",") : String(e),
36
+ [S]
37
+ ), B = v(null), I = v(!1), [oe, g] = C(""), [ae, O] = C(D), [le, h] = C(() => m(u ?? D)), x = u !== void 0, r = x ? u : ae, f = v(), p = v(), R = v(r);
38
+ P(() => {
39
+ !I.current && typeof u < "u" && h(m(u));
40
+ }, [u, m]);
41
+ const W = i ? `${L}-helper` : void 0, H = z(
42
42
  (e) => {
43
43
  if (e === void 0)
44
- return F || (r == null ? void 0 : r.type) === "error";
45
- const t = l !== void 0 && e < l, o = s !== void 0 && e > s;
46
- return F || t || o || (r == null ? void 0 : r.type) === "error";
44
+ return E || (i == null ? void 0 : i.type) === "error";
45
+ const t = a !== void 0 && e < a, s = l !== void 0 && e > l;
46
+ return E || t || s || (i == null ? void 0 : i.type) === "error";
47
47
  },
48
- [F, r, s, l]
49
- ), j = (e) => Math.min(s ?? 1 / 0, Math.max(l ?? -1 / 0, e)), ee = (e) => {
50
- const t = w("numberField.quantityUpdated", e);
51
- g(t), setTimeout(() => {
52
- g("");
53
- }, 5e3);
54
- }, q = (e) => f !== void 0 ? parseFloat(e.toFixed(f)) : e, te = (e) => {
55
- let t = a ?? 0;
56
- e === "increment" && (t = t + x), e === "decrement" && (t = t - x), t = j(t), t = q(t), ee(t), i == null || i(t), k(t), N(m(t));
57
- }, ne = ({ currentTarget: { value: e } }) => {
58
- if (N(e), e === "") {
59
- a !== void 0 && (i == null || i(void 0), k(void 0));
48
+ [E, i, l, a]
49
+ ), U = (e) => Math.min(l ?? 1 / 0, Math.max(a ?? -1 / 0, e)), G = z((e) => {
50
+ e && (g(""), f.current && clearTimeout(f.current), p.current && clearTimeout(p.current), f.current = setTimeout(() => {
51
+ g(e), p.current = setTimeout(() => g(""), 5e3);
52
+ }, 100));
53
+ }, []);
54
+ P(() => () => {
55
+ f.current && clearTimeout(f.current), p.current && clearTimeout(p.current);
56
+ }, []), P(() => {
57
+ R.current !== r && (!I.current && r !== void 0 && G(T("numberField.quantityUpdated", r)), R.current = r);
58
+ }, [r, G, T]);
59
+ const J = (e) => N !== void 0 ? parseFloat(e.toFixed(N)) : e, se = (e) => {
60
+ let t = r ?? 0;
61
+ e === "increment" && (t = t + V), e === "decrement" && (t = t - V), t = U(t), t = J(t), o == null || o(t), x || O(t), h(m(t));
62
+ }, ue = ({ currentTarget: { value: e } }) => {
63
+ if (h(e), e === "") {
64
+ r !== void 0 && (o == null || o(void 0), x || O(void 0));
60
65
  return;
61
66
  }
62
67
  const t = e.replace(",", ".");
63
68
  if (!/^-?(\d+(\.\d*)?|\.\d+)$/.test(t))
64
69
  return;
65
- const o = parseFloat(t);
66
- if (Number.isNaN(o)) return;
67
- const u = j(o), V = q(u);
68
- V !== a && (i == null || i(V), k(V));
69
- }, ie = () => {
70
- M.current = !0;
71
- }, re = () => {
72
- M.current = !1, N(m(a));
73
- }, C = (e) => {
74
- const t = a !== void 0 && (e === "increment" ? s !== void 0 && a >= s : l !== void 0 && a <= l), o = _(n["tedi-number-field__button"], n[`tedi-number-field__button--${e}`], {
75
- [n["tedi-number-field__button--disabled"]]: t || p
76
- }), u = w(`numberField.${e}`, x);
70
+ const s = parseFloat(t);
71
+ if (Number.isNaN(s)) return;
72
+ const d = U(s), b = J(d);
73
+ b !== r && (o == null || o(b), x || O(b));
74
+ }, de = () => {
75
+ I.current = !0;
76
+ }, ce = () => {
77
+ I.current = !1, h(m(r));
78
+ }, K = (e) => {
79
+ const t = r !== void 0 && (e === "increment" ? l !== void 0 && r >= l : a !== void 0 && r <= a), s = F(n["tedi-number-field__button"], n[`tedi-number-field__button--${e}`], {
80
+ [n["tedi-number-field__button--disabled"]]: t || _
81
+ }), d = typeof M == "string" ? M : void 0, b = T(`numberField.${e}`, V, d);
77
82
  return /* @__PURE__ */ c(
78
- de,
83
+ ve,
79
84
  {
80
- "aria-label": u,
81
- onClick: () => te(e),
82
- disabled: t || p,
85
+ "aria-label": b,
86
+ onClick: () => se(e),
87
+ disabled: t || _,
83
88
  visualType: "secondary",
84
- className: o,
89
+ className: s,
85
90
  icon: { name: e === "increment" ? "add" : "remove" },
86
- size: B === "small" ? "small" : void 0,
91
+ size: k === "small" ? "small" : void 0,
87
92
  children: e === "increment" ? "+" : "-"
88
93
  }
89
94
  );
90
- }, ae = () => {
91
- const e = _(n["tedi-number-field__input-wrapper"], {
92
- [n["tedi-number-field__input-wrapper--with-suffix"]]: h,
93
- [n["tedi-number-field__input-wrapper--full-width"]]: Q
94
- }), t = _(n["tedi-number-field__input"], b == null ? void 0 : b.className);
95
- return /* @__PURE__ */ L("div", { className: e, onClick: () => {
96
- var u;
97
- return (u = v == null ? void 0 : v.current) == null ? void 0 : u.focus();
95
+ }, me = () => {
96
+ const e = F(n["tedi-number-field__input-wrapper"], {
97
+ [n["tedi-number-field__input-wrapper--with-suffix"]]: w,
98
+ [n["tedi-number-field__input-wrapper--full-width"]]: re
99
+ }), t = F(n["tedi-number-field__input"], y == null ? void 0 : y.className);
100
+ return /* @__PURE__ */ $("div", { className: e, onClick: () => {
101
+ var d;
102
+ return (d = B == null ? void 0 : B.current) == null ? void 0 : d.focus();
98
103
  }, children: [
99
104
  /* @__PURE__ */ c(
100
105
  "input",
101
106
  {
102
- ref: v,
103
- id: y,
107
+ ref: B,
108
+ id: L,
104
109
  role: "spinbutton",
105
- "aria-valuemin": l,
106
- "aria-valuemax": s,
107
- "aria-valuenow": a,
108
- "aria-describedby": z,
109
- "aria-invalid": P(a) ? "true" : "false",
110
+ "aria-valuemin": a,
111
+ "aria-valuemax": l,
112
+ "aria-valuenow": r,
113
+ "aria-describedby": W,
114
+ "aria-invalid": H(r) ? "true" : "false",
110
115
  type: "text",
111
- inputMode: X,
112
- value: Z,
113
- required: E,
114
- disabled: p,
115
- onChange: ne,
116
- onFocus: ie,
117
- onBlur: re,
116
+ inputMode: ie,
117
+ value: le,
118
+ required: q,
119
+ disabled: _,
120
+ onChange: ue,
121
+ onFocus: de,
122
+ onBlur: ce,
118
123
  className: t,
119
- ...b
124
+ ...y
120
125
  }
121
126
  ),
122
- h && /* @__PURE__ */ c(oe, { element: "span", modifiers: "small", color: "tertiary", className: n["tedi-number-field__suffix"], children: h })
127
+ w && /* @__PURE__ */ c(be, { element: "span", modifiers: "small", color: "tertiary", className: n["tedi-number-field__suffix"], children: w })
123
128
  ] });
124
- }, le = _(
129
+ }, fe = F(
125
130
  n["tedi-number-field"],
126
- { [n["tedi-number-field--invalid"]]: P(a) },
127
- { [n["tedi-number-field--disabled"]]: p },
128
- { [n["tedi-number-field--small"]]: B === "small" },
129
- U
131
+ { [n["tedi-number-field--invalid"]]: H(r) },
132
+ { [n["tedi-number-field--disabled"]]: _ },
133
+ { [n["tedi-number-field--small"]]: k === "small" },
134
+ A
130
135
  );
131
- return /* @__PURE__ */ L("div", { "data-name": "number-field", className: U, children: [
132
- /* @__PURE__ */ c(ce, { id: y, label: H, required: E, hideLabel: J, size: B }),
133
- /* @__PURE__ */ L("div", { className: le, children: [
134
- C("decrement"),
135
- ae(),
136
- C("increment")
136
+ return /* @__PURE__ */ $("div", { "data-name": "number-field", className: A, children: [
137
+ /* @__PURE__ */ c(_e, { id: L, label: M, required: q, hideLabel: ee, size: k }),
138
+ /* @__PURE__ */ $("div", { className: fe, children: [
139
+ K("decrement"),
140
+ me(),
141
+ K("increment")
137
142
  ] }),
138
- r && /* @__PURE__ */ c(ue, { className: n["tedi-number-field__feedback"], ...r, id: z }),
139
- $ && /* @__PURE__ */ c("div", { "aria-live": "polite", className: "sr-only", children: $ })
143
+ i && /* @__PURE__ */ c(Ne, { className: n["tedi-number-field__feedback"], ...i, id: W }),
144
+ /* @__PURE__ */ c("div", { role: "status", "aria-live": "polite", "aria-atomic": "true", className: "sr-only", children: oe })
140
145
  ] });
141
146
  };
142
- pe.displayName = "NumberField";
147
+ Ie.displayName = "NumberField";
143
148
  export {
144
- pe as NumberField
149
+ Ie as NumberField
145
150
  };
@@ -1 +1 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const a=require("react/jsx-runtime"),l=require("../../../../../external/classnames/index.cjs.js"),c=require("react"),T=require("../feedback-text/feedback-text.cjs.js"),$=require("../form-label/form-label.cjs.js"),e=require("./radio.module.scss.cjs.js"),z=require("../../layout/grid/row.cjs.js"),p=require("../../layout/grid/col.cjs.js"),x=j=>{const{id:r,label:u,value:n,className:k,disabled:s,onChange:i,hideLabel:q,helper:t,checked:o,defaultChecked:C,hover:N,name:g,tooltip:f,size:h="default",invalid:R,required:y,...w}=j,[_,L]=c.useState(C||!1),b=c.useRef(null),M=c.useMemo(()=>i&&typeof o<"u"?o:_,[i,_,o]),v=d=>{typeof o>"u"&&L(d==null?void 0:d.target.checked),i==null||i(n,d==null?void 0:d.target.checked)},m=t?t.id??`${r}-helper`:void 0,I=f?`${r}-tooltip`:void 0,S=l.default(e.default["tedi-radio__label"],{[e.default["tedi-radio--disabled"]]:s});return a.jsxs("div",{className:l.default(e.default["tedi-radio"],{[e.default["tedi-radio--disabled"]]:s}),"data-name":"radio",...w,children:[a.jsxs(z.Row,{gutter:0,children:[a.jsx(p.Col,{width:"auto",children:a.jsxs("div",{className:e.default["tedi-radio__outer-indicator-wrapper"],children:[a.jsx("input",{id:r,value:n,name:g,type:"radio",disabled:s,checked:M,onChange:v,className:e.default["tedi-radio__input"],"aria-describedby":[m,I].filter(Boolean).join(" ")}),a.jsx("div",{"aria-hidden":"true",onClick:()=>{var d;return(d=b.current)==null?void 0:d.click()},className:l.default(e.default["tedi-radio__indicator"],{[e.default["tedi-radio__indicator--hover"]]:N},{[e.default[`tedi-radio__indicator--size-${h}`]]:h},{[e.default["tedi-radio__indicator--invalid"]]:R},k),"data-testid":"radio-indicator"})]})}),u&&a.jsx(p.Col,{children:a.jsx($.FormLabel,{ref:b,className:S,id:r,"data-testid":"radio-label",hideLabel:q,label:u,tooltip:f,required:y})})]}),t&&a.jsx(T.FeedbackText,{id:m,...t,className:l.default(e.default["tedi-radio__helper"],t.className)})]})};exports.Radio=x;exports.default=x;
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const a=require("react/jsx-runtime"),l=require("../../../../../external/classnames/index.cjs.js"),c=require("react"),T=require("../feedback-text/feedback-text.cjs.js"),$=require("../form-label/form-label.cjs.js"),e=require("./radio.module.scss.cjs.js"),z=require("../../layout/grid/row.cjs.js"),x=require("../../layout/grid/col.cjs.js"),j=k=>{const{id:r,label:u,value:n,className:q,disabled:s,onChange:i,hideLabel:C,helper:t,checked:o,defaultChecked:N,hover:g,name:R,tooltip:f,size:h="default",invalid:y,required:_,...w}=k,[b,L]=c.useState(N||!1),m=c.useRef(null),M=c.useMemo(()=>i&&typeof o<"u"?o:b,[i,b,o]),v=d=>{typeof o>"u"&&L(d==null?void 0:d.target.checked),i==null||i(n,d==null?void 0:d.target.checked)},p=t?t.id??`${r}-helper`:void 0,I=f?`${r}-tooltip`:void 0,S=l.default(e.default["tedi-radio__label"],{[e.default["tedi-radio--disabled"]]:s});return a.jsxs("div",{className:l.default(e.default["tedi-radio"],{[e.default["tedi-radio--disabled"]]:s}),"data-name":"radio",...w,children:[a.jsxs(z.Row,{gutter:0,children:[a.jsx(x.Col,{width:"auto",children:a.jsxs("div",{className:e.default["tedi-radio__outer-indicator-wrapper"],children:[a.jsx("input",{id:r,value:n,name:R,type:"radio",disabled:s,checked:M,onChange:v,className:e.default["tedi-radio__input"],"aria-describedby":[p,I].filter(Boolean).join(" "),required:_}),a.jsx("div",{"aria-hidden":"true",onClick:()=>{var d;return(d=m.current)==null?void 0:d.click()},className:l.default(e.default["tedi-radio__indicator"],{[e.default["tedi-radio__indicator--hover"]]:g},{[e.default[`tedi-radio__indicator--size-${h}`]]:h},{[e.default["tedi-radio__indicator--invalid"]]:y},q),"data-testid":"radio-indicator"})]})}),u&&a.jsx(x.Col,{children:a.jsx($.FormLabel,{ref:m,className:S,id:r,"data-testid":"radio-label",hideLabel:C,label:u,tooltip:f,required:_})})]}),t&&a.jsx(T.FeedbackText,{id:p,...t,className:l.default(e.default["tedi-radio__helper"],t.className)})]})};exports.Radio=j;exports.default=j;