@tedi-design-system/react 19.2.0-rc.6 → 19.2.0-rc.8

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 (98) hide show
  1. package/bundle-stats.html +1 -1
  2. package/component.manifest.json +8 -8
  3. package/external/hoist-non-react-statics/external/react-is/cjs/react-is.development.cjs.js +1 -1
  4. package/external/hoist-non-react-statics/external/react-is/cjs/react-is.development.es.js +1 -1
  5. package/external/hoist-non-react-statics/external/react-is/cjs/react-is.production.min.cjs.js +1 -1
  6. package/external/hoist-non-react-statics/external/react-is/cjs/react-is.production.min.es.js +1 -1
  7. package/external/hoist-non-react-statics/external/react-is/index.cjs.js +1 -1
  8. package/external/hoist-non-react-statics/external/react-is/index.es.js +1 -1
  9. package/external/prop-types/external/react-is/cjs/react-is.development.cjs.js +1 -1
  10. package/external/prop-types/external/react-is/cjs/react-is.development.es.js +1 -1
  11. package/external/prop-types/external/react-is/cjs/react-is.production.min.cjs.js +1 -1
  12. package/external/prop-types/external/react-is/cjs/react-is.production.min.es.js +1 -1
  13. package/external/prop-types/external/react-is/index.cjs.js +1 -1
  14. package/external/prop-types/external/react-is/index.es.js +1 -1
  15. package/index.css +1 -1
  16. package/package.json +1 -1
  17. package/src/community/components/map-components/map-layer/map-layer.cjs.js +1 -1
  18. package/src/community/components/map-components/map-layer/map-layer.es.js +1 -1
  19. package/src/tedi/components/content/label/label.cjs.js +1 -1
  20. package/src/tedi/components/content/label/label.d.ts +22 -0
  21. package/src/tedi/components/content/label/label.es.js +30 -28
  22. package/src/tedi/components/form/checkbox/checkbox-group/checkbox-group-context.cjs.js +1 -0
  23. package/src/tedi/components/form/checkbox/checkbox-group/checkbox-group-context.d.ts +20 -0
  24. package/src/tedi/components/form/checkbox/checkbox-group/checkbox-group-context.es.js +5 -0
  25. package/src/tedi/components/form/checkbox/checkbox-group/checkbox-group.cjs.js +1 -0
  26. package/src/tedi/components/form/checkbox/checkbox-group/checkbox-group.d.ts +72 -0
  27. package/src/tedi/components/form/checkbox/checkbox-group/checkbox-group.es.js +124 -0
  28. package/src/tedi/components/form/checkbox/checkbox-group/checkbox-group.module.scss.cjs.js +1 -0
  29. package/src/tedi/components/form/checkbox/checkbox-group/checkbox-group.module.scss.es.js +13 -0
  30. package/src/tedi/components/form/checkbox/checkbox.cjs.js +1 -1
  31. package/src/tedi/components/form/checkbox/checkbox.d.ts +8 -2
  32. package/src/tedi/components/form/checkbox/checkbox.es.js +146 -108
  33. package/src/tedi/components/form/checkbox/checkbox.module.scss.cjs.js +1 -1
  34. package/src/tedi/components/form/checkbox/checkbox.module.scss.es.js +11 -3
  35. package/src/tedi/components/form/checkbox/index.cjs.js +1 -0
  36. package/src/tedi/components/form/checkbox/index.d.ts +11 -0
  37. package/src/tedi/components/form/checkbox/index.es.js +7 -0
  38. package/src/tedi/components/form/choice-group/choice-group.cjs.js +1 -1
  39. package/src/tedi/components/form/choice-group/choice-group.d.ts +11 -0
  40. package/src/tedi/components/form/choice-group/choice-group.es.js +80 -69
  41. package/src/tedi/components/form/choice-group/components/choice-group-item/choice-group-item.cjs.js +1 -1
  42. package/src/tedi/components/form/choice-group/components/choice-group-item/choice-group-item.es.js +15 -15
  43. package/src/tedi/components/form/choice-input.types.d.ts +46 -8
  44. package/src/tedi/components/form/date-field/date-field.cjs.js +1 -1
  45. package/src/tedi/components/form/date-field/date-field.d.ts +5 -0
  46. package/src/tedi/components/form/date-field/date-field.es.js +187 -184
  47. package/src/tedi/components/form/date-time-field/date-time-field.cjs.js +1 -1
  48. package/src/tedi/components/form/date-time-field/date-time-field.d.ts +5 -0
  49. package/src/tedi/components/form/date-time-field/date-time-field.es.js +103 -101
  50. package/src/tedi/components/form/form-label/form-label.cjs.js +1 -1
  51. package/src/tedi/components/form/form-label/form-label.d.ts +9 -0
  52. package/src/tedi/components/form/form-label/form-label.es.js +15 -14
  53. package/src/tedi/components/form/multi-value-field/multi-value-field.cjs.js +1 -1
  54. package/src/tedi/components/form/multi-value-field/multi-value-field.d.ts +7 -0
  55. package/src/tedi/components/form/multi-value-field/multi-value-field.es.js +41 -40
  56. package/src/tedi/components/form/number-field/number-field.cjs.js +1 -1
  57. package/src/tedi/components/form/number-field/number-field.es.js +54 -43
  58. package/src/tedi/components/form/radio/index.cjs.js +1 -0
  59. package/src/tedi/components/form/radio/index.d.ts +11 -0
  60. package/src/tedi/components/form/radio/index.es.js +7 -0
  61. package/src/tedi/components/form/radio/radio-group/radio-group-context.cjs.js +1 -0
  62. package/src/tedi/components/form/radio/radio-group/radio-group-context.d.ts +21 -0
  63. package/src/tedi/components/form/radio/radio-group/radio-group-context.es.js +5 -0
  64. package/src/tedi/components/form/radio/radio-group/radio-group.cjs.js +1 -0
  65. package/src/tedi/components/form/radio/radio-group/radio-group.d.ts +56 -0
  66. package/src/tedi/components/form/radio/radio-group/radio-group.es.js +78 -0
  67. package/src/tedi/components/form/radio/radio-group/radio-group.module.scss.cjs.js +1 -0
  68. package/src/tedi/components/form/radio/radio-group/radio-group.module.scss.es.js +13 -0
  69. package/src/tedi/components/form/radio/radio.cjs.js +1 -1
  70. package/src/tedi/components/form/radio/radio.d.ts +7 -2
  71. package/src/tedi/components/form/radio/radio.es.js +117 -77
  72. package/src/tedi/components/form/radio/radio.module.scss.cjs.js +1 -1
  73. package/src/tedi/components/form/radio/radio.module.scss.es.js +11 -3
  74. package/src/tedi/components/form/select/select.cjs.js +1 -1
  75. package/src/tedi/components/form/select/select.es.js +79 -77
  76. package/src/tedi/components/form/slider/slider.cjs.js +1 -1
  77. package/src/tedi/components/form/slider/slider.d.ts +7 -0
  78. package/src/tedi/components/form/slider/slider.es.js +48 -47
  79. package/src/tedi/components/form/textfield/textfield.cjs.js +1 -1
  80. package/src/tedi/components/form/textfield/textfield.es.js +72 -61
  81. package/src/tedi/components/form/time-field/time-field.cjs.js +1 -1
  82. package/src/tedi/components/form/time-field/time-field.d.ts +5 -0
  83. package/src/tedi/components/form/time-field/time-field.es.js +87 -85
  84. package/src/tedi/components/form/toggle/toggle.cjs.js +1 -1
  85. package/src/tedi/components/form/toggle/toggle.d.ts +7 -0
  86. package/src/tedi/components/form/toggle/toggle.es.js +26 -24
  87. package/src/tedi/components/navigation/table-of-contents/components/table-of-contents-row/table-of-contents-row.cjs.js +1 -1
  88. package/src/tedi/components/navigation/table-of-contents/components/table-of-contents-row/table-of-contents-row.d.ts +12 -0
  89. package/src/tedi/components/navigation/table-of-contents/components/table-of-contents-row/table-of-contents-row.es.js +57 -27
  90. package/src/tedi/components/navigation/table-of-contents/table-of-contents.cjs.js +1 -1
  91. package/src/tedi/components/navigation/table-of-contents/table-of-contents.d.ts +17 -0
  92. package/src/tedi/components/navigation/table-of-contents/table-of-contents.es.js +65 -51
  93. package/src/tedi/index.d.ts +2 -2
  94. package/src/tedi/providers/label-provider/labels-map.cjs.js +1 -1
  95. package/src/tedi/providers/label-provider/labels-map.d.ts +14 -0
  96. package/src/tedi/providers/label-provider/labels-map.es.js +25 -11
  97. package/tedi.cjs.js +1 -1
  98. package/tedi.es.js +298 -294
@@ -1,6 +1,7 @@
1
1
  import { default as React } from 'react';
2
2
  import { BreakpointSupport } from '../../../helpers';
3
3
  import { FeedbackTextProps } from '../feedback-text/feedback-text';
4
+ import { FormLabelProps } from '../form-label/form-label';
4
5
  type SliderBreakpointProps = {
5
6
  /**
6
7
  * Text/element rendered to the left of the track (e.g. the minimum value).
@@ -59,6 +60,12 @@ export interface SliderProps extends BreakpointSupport<SliderBreakpointProps> {
59
60
  * available to assistive technology, or `'keep-space'` to reserve the vertical space.
60
61
  */
61
62
  hideLabel?: boolean | 'keep-space';
63
+ /**
64
+ * Additional props forwarded to the underlying `Label` component.
65
+ * Use `modifiers` to control how the label text wraps or breaks
66
+ * (e.g. `{ modifiers: 'nowrap' }`).
67
+ */
68
+ labelProps?: FormLabelProps['labelProps'];
62
69
  /**
63
70
  * Marks the field as required.
64
71
  */
@@ -1,70 +1,71 @@
1
1
  import { jsxs as s, jsx as r } from "react/jsx-runtime";
2
- import P from "../../../../../external/classnames/index.es.js";
3
- import { forwardRef as se, useId as de, useState as m, useCallback as i, useRef as ce, useEffect as ue } from "react";
4
- import { Tooltip as me } from "../../overlays/tooltip/tooltip.es.js";
5
- import { TooltipContent as pe } from "../../overlays/tooltip/tooltip-content.es.js";
6
- import { TooltipTrigger as ve } from "../../overlays/tooltip/tooltip-trigger.es.js";
7
- import { FeedbackText as fe } from "../feedback-text/feedback-text.es.js";
8
- import { FormLabel as ge } from "../form-label/form-label.es.js";
2
+ import C from "../../../../../external/classnames/index.es.js";
3
+ import { forwardRef as de, useId as ce, useState as m, useCallback as i, useRef as ue, useEffect as me } from "react";
4
+ import { Tooltip as pe } from "../../overlays/tooltip/tooltip.es.js";
5
+ import { TooltipContent as ve } from "../../overlays/tooltip/tooltip-content.es.js";
6
+ import { TooltipTrigger as fe } from "../../overlays/tooltip/tooltip-trigger.es.js";
7
+ import { FeedbackText as ge } from "../feedback-text/feedback-text.es.js";
8
+ import { FormLabel as he } from "../form-label/form-label.es.js";
9
9
  import e from "./slider.module.scss.es.js";
10
- import { useBreakpointProps as he } from "../../../helpers/hooks/use-breakpoint-props.es.js";
11
- const be = se((_, S) => {
12
- const { getCurrentBreakpointProps: D } = he(_.defaultServerBreakpoint), {
10
+ import { useBreakpointProps as be } from "../../../helpers/hooks/use-breakpoint-props.es.js";
11
+ const _e = de((_, S) => {
12
+ const { getCurrentBreakpointProps: D } = be(_.defaultServerBreakpoint), {
13
13
  id: R,
14
14
  name: $,
15
15
  label: w,
16
16
  hideLabel: j,
17
+ labelProps: H,
17
18
  required: L,
18
19
  min: t = 0,
19
20
  max: d = 100,
20
- step: H = 1,
21
+ step: q = 1,
21
22
  value: p,
22
- defaultValue: q,
23
+ defaultValue: O,
23
24
  onChange: c,
24
25
  disabled: n = !1,
25
- invalid: O = !1,
26
+ invalid: U = !1,
26
27
  minLabel: v,
27
- maxLabel: U,
28
+ maxLabel: z,
28
29
  showCurrentValue: f = !1,
29
30
  valueFormatter: N,
30
- tooltip: z = !0,
31
+ tooltip: A = !0,
31
32
  addonRight: x,
32
33
  helper: a,
33
- className: A,
34
- "aria-label": G,
35
- "aria-labelledby": J,
36
- "aria-valuetext": K
37
- } = D(_), Q = de(), g = R ?? `tedi-slider-${Q}`, I = a ? a.id ?? `${g}-helper` : void 0, [W, X] = m(q ?? t), u = Math.min(d, Math.max(t, p ?? W)), [Y, y] = m(!1), [Z, F] = m(!1), [l, T] = m(!1), V = !!z && !n, ee = V && (Y || Z || l), re = i(() => y(!0), []), ae = i(() => y(!1), []), ie = i(() => F(!0), []), te = i(() => F(!1), []), k = ce(null), o = i(() => {
34
+ className: G,
35
+ "aria-label": J,
36
+ "aria-labelledby": K,
37
+ "aria-valuetext": Q
38
+ } = D(_), W = ce(), g = R ?? `tedi-slider-${W}`, I = a ? a.id ?? `${g}-helper` : void 0, [X, Y] = m(O ?? t), u = Math.min(d, Math.max(t, p ?? X)), [Z, y] = m(!1), [ee, F] = m(!1), [l, T] = m(!1), V = !!A && !n, re = V && (Z || ee || l), ae = i(() => y(!0), []), ie = i(() => y(!1), []), te = i(() => F(!0), []), ne = i(() => F(!1), []), k = ue(null), o = i(() => {
38
39
  k.current = null, T(!1);
39
40
  }, []);
40
- ue(() => {
41
+ me(() => {
41
42
  if (l)
42
43
  return window.addEventListener("pointerup", o), window.addEventListener("pointercancel", o), () => {
43
44
  window.removeEventListener("pointerup", o), window.removeEventListener("pointercancel", o);
44
45
  };
45
46
  }, [l, o]);
46
- const ne = i(
47
+ const le = i(
47
48
  (b) => {
48
49
  n || (k.current = b.pointerId, T(!0));
49
50
  },
50
51
  [n]
51
- ), le = i(
52
+ ), oe = i(
52
53
  (b) => {
53
- const C = Number(b.target.value);
54
- p === void 0 && X(C), c == null || c(C);
54
+ const P = Number(b.target.value);
55
+ p === void 0 && Y(P), c == null || c(P);
55
56
  },
56
57
  [c, p]
57
- ), B = O || (a == null ? void 0 : a.type) === "error", E = d === t ? 0 : (u - t) / (d - t) * 100, M = N ? N(u) : u, h = f ? M : U, oe = P(
58
+ ), B = U || (a == null ? void 0 : a.type) === "error", E = d === t ? 0 : (u - t) / (d - t) * 100, M = N ? N(u) : u, h = f ? M : z, se = C(
58
59
  e["tedi-slider"],
59
60
  {
60
61
  [e["tedi-slider--disabled"]]: n,
61
62
  [e["tedi-slider--invalid"]]: B,
62
63
  [e["tedi-slider--dragging"]]: l && !n
63
64
  },
64
- A
65
+ G
65
66
  );
66
- return /* @__PURE__ */ s("div", { "data-name": "slider", className: oe, children: [
67
- w && /* @__PURE__ */ r(ge, { id: g, label: w, required: L, hideLabel: j }),
67
+ return /* @__PURE__ */ s("div", { "data-name": "slider", className: se, children: [
68
+ w && /* @__PURE__ */ r(he, { id: g, label: w, required: L, hideLabel: j, labelProps: H }),
68
69
  /* @__PURE__ */ s("div", { className: e["tedi-slider__container"], children: [
69
70
  /* @__PURE__ */ s("div", { className: e["tedi-slider__track-row"], children: [
70
71
  v != null && /* @__PURE__ */ r("span", { className: e["tedi-slider__range-label"], "aria-hidden": "true", children: v }),
@@ -86,38 +87,38 @@ const be = se((_, S) => {
86
87
  type: "range",
87
88
  min: t,
88
89
  max: d,
89
- step: H,
90
+ step: q,
90
91
  value: u,
91
92
  disabled: n,
92
93
  required: L,
93
94
  "aria-invalid": B ? "true" : void 0,
94
95
  "aria-describedby": I,
95
- "aria-label": G,
96
- "aria-labelledby": J,
97
- "aria-valuetext": K,
98
- onChange: le,
99
- onMouseEnter: re,
100
- onMouseLeave: ae,
101
- onPointerDown: ne,
102
- onFocus: ie,
103
- onBlur: te,
104
- className: P(e["tedi-slider__input"], {
96
+ "aria-label": J,
97
+ "aria-labelledby": K,
98
+ "aria-valuetext": Q,
99
+ onChange: oe,
100
+ onMouseEnter: ae,
101
+ onMouseLeave: ie,
102
+ onPointerDown: le,
103
+ onFocus: te,
104
+ onBlur: ne,
105
+ className: C(e["tedi-slider__input"], {
105
106
  [e["tedi-slider__input--dragging"]]: l
106
107
  })
107
108
  }
108
109
  ),
109
110
  V && /* @__PURE__ */ s(
110
- me,
111
+ pe,
111
112
  {
112
- open: ee,
113
+ open: re,
113
114
  onToggle: () => {
114
115
  },
115
116
  focusManager: { returnFocus: !1, initialFocus: -1 },
116
117
  placement: "top",
117
118
  trackReferencePosition: !0,
118
119
  children: [
119
- /* @__PURE__ */ r(ve, { children: /* @__PURE__ */ r("span", { className: e["tedi-slider__thumb-anchor"], "aria-hidden": "true", tabIndex: -1 }) }),
120
- /* @__PURE__ */ r(pe, { children: M })
120
+ /* @__PURE__ */ r(fe, { children: /* @__PURE__ */ r("span", { className: e["tedi-slider__thumb-anchor"], "aria-hidden": "true", tabIndex: -1 }) }),
121
+ /* @__PURE__ */ r(ve, { children: M })
121
122
  ]
122
123
  }
123
124
  )
@@ -136,10 +137,10 @@ const be = se((_, S) => {
136
137
  ] }),
137
138
  x && /* @__PURE__ */ r("div", { className: e["tedi-slider__addon"], children: x })
138
139
  ] }),
139
- a && /* @__PURE__ */ r(fe, { ...a, id: I })
140
+ a && /* @__PURE__ */ r(ge, { ...a, id: I })
140
141
  ] });
141
142
  });
142
- be.displayName = "Slider";
143
+ _e.displayName = "Slider";
143
144
  export {
144
- be as Slider
145
+ _e as Slider
145
146
  };
@@ -1 +1 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const l=require("react/jsx-runtime"),p=require("../../../../../external/classnames/index.cjs.js"),i=require("react"),K=require("../../base/icon/icon.cjs.js"),pe=require("../../buttons/closing-button/closing-button.cjs.js"),_e=require("../../misc/separator/separator.cjs.js"),D=require("../feedback-text/feedback-text.cjs.js"),Ie=require("../field/field.cjs.js"),ge=require("../form-label/form-label.cjs.js"),k=require("../input-group/input-group.cjs.js"),t=require("./textfield.module.scss.cjs.js"),je=require("../../../helpers/hooks/use-breakpoint-props.cjs.js"),Ae=require("../../../providers/label-provider/use-labels.cjs.js"),Ne={large:24,default:18},q=i.forwardRef((_,U)=>{var V;const{getCurrentBreakpointProps:J}=je.useBreakpointProps(_.defaultServerBreakpoint),{id:ke,label:I,className:Q,inputClassName:W,disabled:c,required:C,hideLabel:S,invalid:f,readOnly:B,icon:s,onIconClick:b,iconButtonProps:y,size:d="default",placeholder:X,isArrowsHidden:Y=!0,isClearable:F,showClearOnInteraction:Z,onClear:v,onChange:o,onChangeEvent:G,onKeyUp:ee,onKeyDown:te,onKeyPress:re,defaultValue:w,value:g,onFocus:j,onBlur:A,onClick:ae,helper:e,input:a,name:le,isTextArea:ie,startSlot:se,endSlot:ne,...de}=J(_)||{},{getLabel:T}=Ae.useLabels(),z=i.useRef(null),L=i.useRef(null),[oe,R]=i.useState(g??w??""),M=g??oe,u=!!(F&&M&&!B),x=(V=k.useOptionalInputGroup)==null?void 0:V.call(k),ce=i.useId(),ue=x==null?void 0:x.hasExternalLabel,m=_.id??(x==null?void 0:x.inputId)??ce;i.useImperativeHandle(U,()=>({get input(){return L.current},get inner(){return z.current}}));const O=i.useMemo(()=>Array.isArray(e)?f||e.some(r=>r.type==="error"):f||(e==null?void 0:e.type)==="error",[f,e]),fe=i.useMemo(()=>!e||Array.isArray(e)&&e.length===0?!1:Array.isArray(e)?!f&&e.every(r=>r.type==="valid"):!f&&e.type==="valid",[f,e]),xe=d==="large"?"default":d,h=g!==void 0,me=i.useCallback(r=>{h||R(r),o==null||o(r)},[h,o]),P=i.useCallback(()=>{h||R(""),o==null||o(""),v==null||v()},[h,o,v]),$=i.useCallback(()=>{if(!s)return null;const N={size:d==="large"?24:d==="small"?!!b?18:16:18,className:t.default["tedi-textfield__icon"]},H=typeof s=="string"?{...N,name:s}:{...N,...s,className:p.default(N.className,s.className)};return b?l.jsx("button",{type:"button",...y,className:p.default(t.default["tedi-textfield__icon-wrapper"],y==null?void 0:y.className),onClick:c?void 0:b,disabled:c,children:l.jsx(K.Icon,{...H})}):l.jsx("div",{className:t.default["tedi-textfield__icon-wrapper"],"aria-hidden":"true",children:l.jsx(K.Icon,{...H})})},[s,d,b,y,c]),E=i.useMemo(()=>u?l.jsx(pe.ClosingButton,{iconSize:Ne[d==="large"?"large":"default"],onClick:c?void 0:P,disabled:c,title:T("clear"),className:t.default["tedi-textfield__clear-button"]}):null,[u,d,c,P,T]),ye=i.useMemo(()=>!u&&!s?null:l.jsxs("div",{className:t.default["tedi-textfield__right-area"],children:[E,u&&s&&l.jsx(_e.Separator,{color:"primary",axis:"vertical",className:t.default["tedi-textfield__separator"]}),s&&$()]}),[u,s,E,$]),be=l.jsx(Ie.Field,{...a,id:m,name:le,value:M,defaultValue:w,onChange:me,onChangeEvent:G,disabled:c,readOnly:B||(a==null?void 0:a.readOnly),required:C,invalid:O,placeholder:X,className:p.default(t.default["tedi-textfield__input"],W,{[t.default["tedi-textfield__input--hidden-arrows"]]:Y}),onFocus:r=>{var n;(n=a==null?void 0:a.onFocus)==null||n.call(a,r),j==null||j(r)},onBlur:r=>{var n;(n=a==null?void 0:a.onBlur)==null||n.call(a,r),A==null||A(r)},isTextArea:ie,"aria-describedby":!e||Array.isArray(e)&&e.length===0?void 0:Array.isArray(e)?e.map((r,n)=>`${m}-helper-${n}`).join(" "):`${m}-helper`,"aria-label":S&&typeof I=="string"?I:void 0,ref:L}),ve=p.default(t.default["tedi-textfield"],{[t.default[`tedi-textfield--${d}`]]:d},{[t.default["tedi-textfield--with-icon"]]:s},{[t.default["tedi-textfield--invalid"]]:O},{[t.default["tedi-textfield--valid"]]:fe},{[t.default["tedi-textfield--clearable"]]:u},{[t.default["tedi-textfield--clear-on-interaction"]]:u&&Z},Q),he=()=>!e||Array.isArray(e)&&e.length===0?null:l.jsx("div",{className:t.default["tedi-textfield__feedback-wrapper"],children:Array.isArray(e)?e.map((r,n)=>l.jsx(D.FeedbackText,{...r,id:`${m}-helper-${n}`},n)):l.jsx(D.FeedbackText,{...e,id:`${m}-helper`})});return l.jsxs("div",{"data-name":"textfield",...de,className:ve,children:[!ue&&l.jsx(ge.FormLabel,{id:m,label:I,required:C,hideLabel:S,size:xe}),l.jsxs("div",{className:t.default["tedi-textfield__inner"],onKeyDown:te,onKeyUp:ee,onKeyPress:re,onClick:ae,ref:z,children:[se,be,ne,(F||s)&&ye]}),he()]})});q.displayName="TextField";exports.TextField=q;exports.default=q;
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const l=require("react/jsx-runtime"),h=require("../../../../../external/classnames/index.cjs.js"),i=require("react"),K=require("../../base/icon/icon.cjs.js"),_e=require("../../buttons/closing-button/closing-button.cjs.js"),Ie=require("../../misc/separator/separator.cjs.js"),D=require("../feedback-text/feedback-text.cjs.js"),ge=require("../field/field.cjs.js"),je=require("../form-label/form-label.cjs.js"),k=require("../input-group/input-group.cjs.js"),t=require("./textfield.module.scss.cjs.js"),Ae=require("../../../helpers/hooks/use-breakpoint-props.cjs.js"),Ne=require("../../../providers/label-provider/use-labels.cjs.js"),ke={large:24,default:18},q=i.forwardRef((_,U)=>{var V;const{getCurrentBreakpointProps:J}=Ae.useBreakpointProps(_.defaultServerBreakpoint),{id:qe,label:I,className:Q,inputClassName:W,disabled:c,required:C,hideLabel:S,labelProps:X,invalid:f,readOnly:B,icon:s,onIconClick:b,iconButtonProps:y,size:d="default",placeholder:Y,isArrowsHidden:Z=!0,isClearable:F,showClearOnInteraction:G,onClear:v,onChange:o,onChangeEvent:ee,onKeyUp:te,onKeyDown:re,onKeyPress:ae,defaultValue:w,value:g,onFocus:j,onBlur:A,onClick:le,helper:e,input:a,name:ie,isTextArea:se,startSlot:ne,endSlot:de,...oe}=J(_)||{},{getLabel:T}=Ne.useLabels(),z=i.useRef(null),L=i.useRef(null),[ce,R]=i.useState(g??w??""),M=g??ce,u=!!(F&&M&&!B),x=(V=k.useOptionalInputGroup)==null?void 0:V.call(k),ue=i.useId(),fe=x==null?void 0:x.hasExternalLabel,m=_.id??(x==null?void 0:x.inputId)??ue;i.useImperativeHandle(U,()=>({get input(){return L.current},get inner(){return z.current}}));const P=i.useMemo(()=>Array.isArray(e)?f||e.some(r=>r.type==="error"):f||(e==null?void 0:e.type)==="error",[f,e]),xe=i.useMemo(()=>!e||Array.isArray(e)&&e.length===0?!1:Array.isArray(e)?!f&&e.every(r=>r.type==="valid"):!f&&e.type==="valid",[f,e]),me=d==="large"?"default":d,p=g!==void 0,ye=i.useCallback(r=>{p||R(r),o==null||o(r)},[p,o]),O=i.useCallback(()=>{p||R(""),o==null||o(""),v==null||v()},[p,o,v]),$=i.useCallback(()=>{if(!s)return null;const N={size:d==="large"?24:d==="small"?!!b?18:16:18,className:t.default["tedi-textfield__icon"]},H=typeof s=="string"?{...N,name:s}:{...N,...s,className:h.default(N.className,s.className)};return b?l.jsx("button",{type:"button",...y,className:h.default(t.default["tedi-textfield__icon-wrapper"],y==null?void 0:y.className),onClick:c?void 0:b,disabled:c,children:l.jsx(K.Icon,{...H})}):l.jsx("div",{className:t.default["tedi-textfield__icon-wrapper"],"aria-hidden":"true",children:l.jsx(K.Icon,{...H})})},[s,d,b,y,c]),E=i.useMemo(()=>u?l.jsx(_e.ClosingButton,{iconSize:ke[d==="large"?"large":"default"],onClick:c?void 0:O,disabled:c,title:T("clear"),className:t.default["tedi-textfield__clear-button"]}):null,[u,d,c,O,T]),be=i.useMemo(()=>!u&&!s?null:l.jsxs("div",{className:t.default["tedi-textfield__right-area"],children:[E,u&&s&&l.jsx(Ie.Separator,{color:"primary",axis:"vertical",className:t.default["tedi-textfield__separator"]}),s&&$()]}),[u,s,E,$]),ve=l.jsx(ge.Field,{...a,id:m,name:ie,value:M,defaultValue:w,onChange:ye,onChangeEvent:ee,disabled:c,readOnly:B||(a==null?void 0:a.readOnly),required:C,invalid:P,placeholder:Y,className:h.default(t.default["tedi-textfield__input"],W,{[t.default["tedi-textfield__input--hidden-arrows"]]:Z}),onFocus:r=>{var n;(n=a==null?void 0:a.onFocus)==null||n.call(a,r),j==null||j(r)},onBlur:r=>{var n;(n=a==null?void 0:a.onBlur)==null||n.call(a,r),A==null||A(r)},isTextArea:se,"aria-describedby":!e||Array.isArray(e)&&e.length===0?void 0:Array.isArray(e)?e.map((r,n)=>`${m}-helper-${n}`).join(" "):`${m}-helper`,"aria-label":S&&typeof I=="string"?I:void 0,ref:L}),pe=h.default(t.default["tedi-textfield"],{[t.default[`tedi-textfield--${d}`]]:d},{[t.default["tedi-textfield--with-icon"]]:s},{[t.default["tedi-textfield--invalid"]]:P},{[t.default["tedi-textfield--valid"]]:xe},{[t.default["tedi-textfield--clearable"]]:u},{[t.default["tedi-textfield--clear-on-interaction"]]:u&&G},Q),he=()=>!e||Array.isArray(e)&&e.length===0?null:l.jsx("div",{className:t.default["tedi-textfield__feedback-wrapper"],children:Array.isArray(e)?e.map((r,n)=>l.jsx(D.FeedbackText,{...r,id:`${m}-helper-${n}`},n)):l.jsx(D.FeedbackText,{...e,id:`${m}-helper`})});return l.jsxs("div",{"data-name":"textfield",...oe,className:pe,children:[!fe&&l.jsx(je.FormLabel,{id:m,label:I,required:C,hideLabel:S,size:me,labelProps:X}),l.jsxs("div",{className:t.default["tedi-textfield__inner"],onKeyDown:re,onKeyUp:te,onKeyPress:ae,onClick:le,ref:z,children:[ne,ve,de,(F||s)&&be]}),he()]})});q.displayName="TextField";exports.TextField=q;exports.default=q;
@@ -1,73 +1,74 @@
1
1
  import { jsx as n, jsxs as S } from "react/jsx-runtime";
2
2
  import _ from "../../../../../external/classnames/index.es.js";
3
- import y, { forwardRef as be, useMemo as b, useCallback as w } from "react";
3
+ import y, { forwardRef as Ie, useMemo as b, useCallback as w } from "react";
4
4
  import { Icon as D } from "../../base/icon/icon.es.js";
5
- import { ClosingButton as Ie } from "../../buttons/closing-button/closing-button.es.js";
6
- import { Separator as ge } from "../../misc/separator/separator.es.js";
5
+ import { ClosingButton as ge } from "../../buttons/closing-button/closing-button.es.js";
6
+ import { Separator as Ne } from "../../misc/separator/separator.es.js";
7
7
  import { FeedbackText as U } from "../feedback-text/feedback-text.es.js";
8
- import { Field as Ne } from "../field/field.es.js";
9
- import { FormLabel as Ae } from "../form-label/form-label.es.js";
10
- import { useOptionalInputGroup as Ce } from "../input-group/input-group.es.js";
8
+ import { Field as Ae } from "../field/field.es.js";
9
+ import { FormLabel as Ce } from "../form-label/form-label.es.js";
10
+ import { useOptionalInputGroup as ke } from "../input-group/input-group.es.js";
11
11
  import r from "./textfield.module.scss.es.js";
12
- import { useBreakpointProps as ke } from "../../../helpers/hooks/use-breakpoint-props.es.js";
13
- import { useLabels as Se } from "../../../providers/label-provider/use-labels.es.js";
14
- const we = {
12
+ import { useBreakpointProps as Se } from "../../../helpers/hooks/use-breakpoint-props.es.js";
13
+ import { useLabels as we } from "../../../providers/label-provider/use-labels.es.js";
14
+ const Be = {
15
15
  large: 24,
16
16
  default: 18
17
- }, Be = be((I, J) => {
17
+ }, ze = Ie((I, J) => {
18
18
  var M;
19
- const { getCurrentBreakpointProps: Q } = ke(I.defaultServerBreakpoint), {
20
- id: ze,
19
+ const { getCurrentBreakpointProps: Q } = Se(I.defaultServerBreakpoint), {
20
+ id: Fe,
21
21
  label: g,
22
22
  className: W,
23
23
  inputClassName: X,
24
24
  disabled: d,
25
25
  required: B,
26
26
  hideLabel: z,
27
+ labelProps: Y,
27
28
  invalid: f,
28
29
  readOnly: F,
29
30
  icon: i,
30
31
  onIconClick: x,
31
32
  iconButtonProps: p,
32
33
  size: s = "default",
33
- placeholder: Y,
34
- isArrowsHidden: Z = !0,
34
+ placeholder: Z,
35
+ isArrowsHidden: G = !0,
35
36
  isClearable: R,
36
- showClearOnInteraction: G,
37
+ showClearOnInteraction: ee,
37
38
  onClear: v,
38
39
  onChange: o,
39
- onChangeEvent: ee,
40
- onKeyUp: re,
41
- onKeyDown: te,
42
- onKeyPress: ae,
40
+ onChangeEvent: re,
41
+ onKeyUp: te,
42
+ onKeyDown: ae,
43
+ onKeyPress: ie,
43
44
  defaultValue: $,
44
45
  value: N,
45
46
  onFocus: A,
46
47
  onBlur: C,
47
- onClick: ie,
48
+ onClick: le,
48
49
  helper: e,
49
50
  input: a,
50
- name: le,
51
- isTextArea: ne,
52
- startSlot: se,
53
- endSlot: oe,
54
- ...de
55
- } = Q(I) || {}, { getLabel: L } = Se(), O = y.useRef(null), T = y.useRef(null), [ce, E] = y.useState(N ?? $ ?? ""), P = N ?? ce, c = !!(R && P && !F), m = (M = Ce) == null ? void 0 : M(), fe = y.useId(), me = m == null ? void 0 : m.hasExternalLabel, u = I.id ?? (m == null ? void 0 : m.inputId) ?? fe;
51
+ name: ne,
52
+ isTextArea: se,
53
+ startSlot: oe,
54
+ endSlot: de,
55
+ ...ce
56
+ } = Q(I) || {}, { getLabel: L } = we(), O = y.useRef(null), P = y.useRef(null), [fe, T] = y.useState(N ?? $ ?? ""), E = N ?? fe, c = !!(R && E && !F), m = (M = ke) == null ? void 0 : M(), me = y.useId(), ue = m == null ? void 0 : m.hasExternalLabel, u = I.id ?? (m == null ? void 0 : m.inputId) ?? me;
56
57
  y.useImperativeHandle(J, () => ({
57
58
  get input() {
58
- return T.current;
59
+ return P.current;
59
60
  },
60
61
  get inner() {
61
62
  return O.current;
62
63
  }
63
64
  }));
64
- const V = b(() => Array.isArray(e) ? f || e.some((t) => t.type === "error") : f || (e == null ? void 0 : e.type) === "error", [f, e]), ue = b(() => !e || Array.isArray(e) && e.length === 0 ? !1 : Array.isArray(e) ? !f && e.every((t) => t.type === "valid") : !f && e.type === "valid", [f, e]), pe = s === "large" ? "default" : s, h = N !== void 0, ye = w(
65
+ const V = b(() => Array.isArray(e) ? f || e.some((t) => t.type === "error") : f || (e == null ? void 0 : e.type) === "error", [f, e]), pe = b(() => !e || Array.isArray(e) && e.length === 0 ? !1 : Array.isArray(e) ? !f && e.every((t) => t.type === "valid") : !f && e.type === "valid", [f, e]), ye = s === "large" ? "default" : s, h = N !== void 0, xe = w(
65
66
  (t) => {
66
- h || E(t), o == null || o(t);
67
+ h || T(t), o == null || o(t);
67
68
  },
68
69
  [h, o]
69
70
  ), j = w(() => {
70
- h || E(""), o == null || o(""), v == null || v();
71
+ h || T(""), o == null || o(""), v == null || v();
71
72
  }, [h, o, v]), H = w(() => {
72
73
  if (!i) return null;
73
74
  const k = {
@@ -86,35 +87,35 @@ const we = {
86
87
  }
87
88
  ) : /* @__PURE__ */ n("div", { className: r["tedi-textfield__icon-wrapper"], "aria-hidden": "true", children: /* @__PURE__ */ n(D, { ...q }) });
88
89
  }, [i, s, x, p, d]), K = b(() => c ? /* @__PURE__ */ n(
89
- Ie,
90
+ ge,
90
91
  {
91
- iconSize: we[s === "large" ? "large" : "default"],
92
+ iconSize: Be[s === "large" ? "large" : "default"],
92
93
  onClick: d ? void 0 : j,
93
94
  disabled: d,
94
95
  title: L("clear"),
95
96
  className: r["tedi-textfield__clear-button"]
96
97
  }
97
- ) : null, [c, s, d, j, L]), xe = b(() => !c && !i ? null : /* @__PURE__ */ S("div", { className: r["tedi-textfield__right-area"], children: [
98
+ ) : null, [c, s, d, j, L]), ve = b(() => !c && !i ? null : /* @__PURE__ */ S("div", { className: r["tedi-textfield__right-area"], children: [
98
99
  K,
99
- c && i && /* @__PURE__ */ n(ge, { color: "primary", axis: "vertical", className: r["tedi-textfield__separator"] }),
100
+ c && i && /* @__PURE__ */ n(Ne, { color: "primary", axis: "vertical", className: r["tedi-textfield__separator"] }),
100
101
  i && H()
101
- ] }), [c, i, K, H]), ve = /* @__PURE__ */ n(
102
- Ne,
102
+ ] }), [c, i, K, H]), he = /* @__PURE__ */ n(
103
+ Ae,
103
104
  {
104
105
  ...a,
105
106
  id: u,
106
- name: le,
107
- value: P,
107
+ name: ne,
108
+ value: E,
108
109
  defaultValue: $,
109
- onChange: ye,
110
- onChangeEvent: ee,
110
+ onChange: xe,
111
+ onChangeEvent: re,
111
112
  disabled: d,
112
113
  readOnly: F || (a == null ? void 0 : a.readOnly),
113
114
  required: B,
114
115
  invalid: V,
115
- placeholder: Y,
116
+ placeholder: Z,
116
117
  className: _(r["tedi-textfield__input"], X, {
117
- [r["tedi-textfield__input--hidden-arrows"]]: Z
118
+ [r["tedi-textfield__input--hidden-arrows"]]: G
118
119
  }),
119
120
  onFocus: (t) => {
120
121
  var l;
@@ -124,45 +125,55 @@ const we = {
124
125
  var l;
125
126
  (l = a == null ? void 0 : a.onBlur) == null || l.call(a, t), C == null || C(t);
126
127
  },
127
- isTextArea: ne,
128
+ isTextArea: se,
128
129
  "aria-describedby": !e || Array.isArray(e) && e.length === 0 ? void 0 : Array.isArray(e) ? e.map((t, l) => `${u}-helper-${l}`).join(" ") : `${u}-helper`,
129
130
  "aria-label": z && typeof g == "string" ? g : void 0,
130
- ref: T
131
+ ref: P
131
132
  }
132
- ), he = _(
133
+ ), _e = _(
133
134
  r["tedi-textfield"],
134
135
  { [r[`tedi-textfield--${s}`]]: s },
135
136
  { [r["tedi-textfield--with-icon"]]: i },
136
137
  { [r["tedi-textfield--invalid"]]: V },
137
- { [r["tedi-textfield--valid"]]: ue },
138
+ { [r["tedi-textfield--valid"]]: pe },
138
139
  { [r["tedi-textfield--clearable"]]: c },
139
- { [r["tedi-textfield--clear-on-interaction"]]: c && G },
140
+ { [r["tedi-textfield--clear-on-interaction"]]: c && ee },
140
141
  W
141
- ), _e = () => !e || Array.isArray(e) && e.length === 0 ? null : /* @__PURE__ */ n("div", { className: r["tedi-textfield__feedback-wrapper"], children: Array.isArray(e) ? e.map((t, l) => /* @__PURE__ */ n(U, { ...t, id: `${u}-helper-${l}` }, l)) : /* @__PURE__ */ n(U, { ...e, id: `${u}-helper` }) });
142
- return /* @__PURE__ */ S("div", { "data-name": "textfield", ...de, className: he, children: [
143
- !me && /* @__PURE__ */ n(Ae, { id: u, label: g, required: B, hideLabel: z, size: pe }),
142
+ ), be = () => !e || Array.isArray(e) && e.length === 0 ? null : /* @__PURE__ */ n("div", { className: r["tedi-textfield__feedback-wrapper"], children: Array.isArray(e) ? e.map((t, l) => /* @__PURE__ */ n(U, { ...t, id: `${u}-helper-${l}` }, l)) : /* @__PURE__ */ n(U, { ...e, id: `${u}-helper` }) });
143
+ return /* @__PURE__ */ S("div", { "data-name": "textfield", ...ce, className: _e, children: [
144
+ !ue && /* @__PURE__ */ n(
145
+ Ce,
146
+ {
147
+ id: u,
148
+ label: g,
149
+ required: B,
150
+ hideLabel: z,
151
+ size: ye,
152
+ labelProps: Y
153
+ }
154
+ ),
144
155
  /* @__PURE__ */ S(
145
156
  "div",
146
157
  {
147
158
  className: r["tedi-textfield__inner"],
148
- onKeyDown: te,
149
- onKeyUp: re,
150
- onKeyPress: ae,
151
- onClick: ie,
159
+ onKeyDown: ae,
160
+ onKeyUp: te,
161
+ onKeyPress: ie,
162
+ onClick: le,
152
163
  ref: O,
153
164
  children: [
154
- se,
155
- ve,
156
165
  oe,
157
- (R || i) && xe
166
+ he,
167
+ de,
168
+ (R || i) && ve
158
169
  ]
159
170
  }
160
171
  ),
161
- _e()
172
+ be()
162
173
  ] });
163
174
  });
164
- Be.displayName = "TextField";
175
+ ze.displayName = "TextField";
165
176
  export {
166
- Be as TextField,
167
- Be as default
177
+ ze as TextField,
178
+ ze as default
168
179
  };
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const i=require("react/jsx-runtime"),u=require("../../../../../external/@floating-ui/react/dist/floating-ui.react.cjs.js"),M=require("../../../../../external/classnames/index.cjs.js"),m=require("react"),J=require("../textfield/textfield.cjs.js"),Pe=require("../time-picker/time-picker.cjs.js"),c=require("./time-field.module.scss.cjs.js"),Q=require("./time-field-helpers.cjs.js"),Ce=require("./time-picker-modal/time-picker-modal.cjs.js"),_e=require("../../../helpers/hooks/use-breakpoint-props.cjs.js"),Te=require("../../../providers/label-provider/use-labels.cjs.js"),W=require("../../../helpers/hooks/use-breakpoint.cjs.js"),P=require("../../overlays/dropdown/dropdown.cjs.js"),je=require("../../../../../external/@floating-ui/dom/dist/floating-ui.dom.cjs.js"),N=require("../../../../../external/@floating-ui/react-dom/dist/floating-ui.react-dom.cjs.js"),X=C=>{const{getCurrentBreakpointProps:Y}=_e.useBreakpointProps(C.defaultServerBreakpoint),{getLabel:Z}=Te.useLabels(),{id:$,label:ee,value:f,defaultValue:te,onChange:_,readOnly:h=!1,disabled:a=!1,required:ie,placeholder:ne,inputProps:t,stepMinutes:R=1,className:D,availableTimes:l,modal:T=!1,modalProps:oe}=C,{useNativePicker:re=!1,timePickerTrigger:j="button",showPicker:o=!0,availableTimesVariant:q="grid-buttons",clearable:se=!0}=Y(C),E=f!==void 0,[ae,S]=m.useState(f??te??""),g=E?f:ae,[w,I]=m.useState(!1),[U,V]=m.useState(!1),p=j==="input",n=re,le=W.default(),d=!n&&o&&!h&&!a&&(T===!0||typeof T=="string"&&W.isBreakpointBelow(le,T)),de=u.useFloating({open:w,onOpenChange:I,placement:p?"bottom-start":"bottom-end",middleware:[N.offset(Q.TIMEPICKER_OFFSET),N.flip(),N.shift()],whileElementsMounted:je.autoUpdate}),{refs:B,context:v,x:ce,y:ue,strategy:fe}=de,pe=u.useClick(v),me=u.useDismiss(v),ge=u.useRole(v,{role:"listbox"}),L=o&&p&&!h&&!a&&!n&&!d,z=u.useInteractions([...L?[pe]:[],me,ge]),x=e=>{const r=e.trim();E||S(r),_==null||_(r)},xe=e=>{var F;const r=e.target.value??"";(F=t==null?void 0:t.onBlur)==null||F.call(t,e);const s=Q.normalizeTime(r);s!==null&&s!==r&&x(s)};m.useEffect(()=>{f!==void 0&&S(f)},[f]);const k=m.useRef(null);m.useEffect(()=>{var e;(e=k.current)!=null&&e.inner&&B.setReference(k.current.inner)},[B]);const ke=()=>{var r;const e=(r=k.current)==null?void 0:r.input;if(e){if(typeof e.showPicker=="function"){e.showPicker();return}e.focus()}},be=()=>I(e=>!e),A=()=>V(!0),he=()=>{!o||a||(n?ke():d?A():j==="button"&&be())},H=d&&p&&!h?()=>{A()}:void 0,y=!n&&o&&!a&&q==="dropdown"&&!!(l!=null&&l.length),K=d?"dialog":"listbox",G=d?U:w,ve=o&&!n&&!y&&(j==="button"||d),Fe=o&&p&&!n&&!y,O={...t,id:$,label:ee,value:g,placeholder:ne,readOnly:h||!n&&p,disabled:a||(t==null?void 0:t.disabled),icon:o?"schedule":{name:"schedule",color:"inherit"},isClearable:se,required:ie,onIconClick:o?he:void 0,iconButtonProps:{"aria-label":Z("time-field.open-picker"),...ve&&{"aria-haspopup":K,"aria-expanded":G},...t==null?void 0:t.iconButtonProps},onChange:x,onBlur:xe,className:M.default(c.default["tedi-time-field__textfield"],{[c.default["tedi-time-field__icon--disabled"]]:!o||a},{[c.default["tedi-time-field__textfield--disabled"]]:a||(t==null?void 0:t.disabled)},{[c.default["tedi-time-field--native"]]:n}),input:{...t==null?void 0:t.input,...n&&{type:"time"},...H&&{onClick:H},...Fe&&{role:"combobox","aria-haspopup":K,"aria-expanded":G}}};if(y){const e=l.indexOf(g),r=e>=0?e:0;return i.jsxs(P.Dropdown,{width:"trigger",defaultActiveIndex:r,children:[i.jsx(P.Dropdown.Trigger,{children:i.jsx("div",{role:"combobox",className:M.default(c.default["tedi-time-field__container"],D,{[c.default["tedi-time-field__container--native"]]:n}),children:i.jsx(J.TextField,{ref:k,...O,input:{...O.input,...!p&&{onClick:s=>s.stopPropagation()}}})})}),i.jsx(P.Dropdown.Content,{children:l.map((s,F)=>i.jsx(P.Dropdown.Item,{index:F,active:s===g,onClick:()=>x(s),children:s},s))})]})}const b={...L?z.getReferenceProps():{}};return delete b.role,delete b["aria-haspopup"],delete b["aria-expanded"],delete b["aria-controls"],i.jsxs(i.Fragment,{children:[i.jsx("div",{className:M.default(c.default["tedi-time-field__container"],D),...b,tabIndex:-1,children:i.jsx(J.TextField,{ref:k,...O})}),d&&i.jsx(Ce.TimePickerModal,{open:U,onOpenChange:V,value:g,onConfirm:x,stepMinutes:R,availableTimes:l,gridVariant:q==="grid-radio"?"radio":"button",modalProps:oe}),!n&&o&&!a&&!d&&i.jsx(u.FloatingPortal,{children:w&&i.jsx(u.FloatingFocusManager,{context:v,modal:!1,initialFocus:-1,children:i.jsx("div",{ref:B.setFloating,...z.getFloatingProps({style:{position:fe,top:ue??0,left:ce??0}}),children:i.jsx(Pe.TimePicker,{value:g,stepMinutes:R,availableTimes:l,onChange:e=>{x(e),l&&I(!1)},gridVariant:q==="grid-radio"?"radio":"button",className:c.default["tedi-time-field__picker-wrapper"]})})})})]})};X.displayName="TimeField";exports.TimeField=X;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const i=require("react/jsx-runtime"),u=require("../../../../../external/@floating-ui/react/dist/floating-ui.react.cjs.js"),M=require("../../../../../external/classnames/index.cjs.js"),m=require("react"),J=require("../textfield/textfield.cjs.js"),Ce=require("../time-picker/time-picker.cjs.js"),c=require("./time-field.module.scss.cjs.js"),Q=require("./time-field-helpers.cjs.js"),_e=require("./time-picker-modal/time-picker-modal.cjs.js"),Te=require("../../../helpers/hooks/use-breakpoint-props.cjs.js"),je=require("../../../providers/label-provider/use-labels.cjs.js"),W=require("../../../helpers/hooks/use-breakpoint.cjs.js"),F=require("../../overlays/dropdown/dropdown.cjs.js"),qe=require("../../../../../external/@floating-ui/dom/dist/floating-ui.dom.cjs.js"),N=require("../../../../../external/@floating-ui/react-dom/dist/floating-ui.react-dom.cjs.js"),X=C=>{const{getCurrentBreakpointProps:Y}=Te.useBreakpointProps(C.defaultServerBreakpoint),{getLabel:Z}=je.useLabels(),{id:$,label:ee,labelProps:te,value:f,defaultValue:ie,onChange:_,readOnly:h=!1,disabled:s=!1,required:oe,placeholder:ne,inputProps:e,stepMinutes:R=1,className:D,availableTimes:a,modal:T=!1,modalProps:re}=C,{useNativePicker:le=!1,timePickerTrigger:j="button",showPicker:n=!0,availableTimesVariant:q="grid-buttons",clearable:se=!0}=Y(C),E=f!==void 0,[ae,S]=m.useState(f??ie??""),g=E?f:ae,[w,I]=m.useState(!1),[U,V]=m.useState(!1),p=j==="input",o=le,de=W.default(),d=!o&&n&&!h&&!s&&(T===!0||typeof T=="string"&&W.isBreakpointBelow(de,T)),ce=u.useFloating({open:w,onOpenChange:I,placement:p?"bottom-start":"bottom-end",middleware:[N.offset(Q.TIMEPICKER_OFFSET),N.flip(),N.shift()],whileElementsMounted:qe.autoUpdate}),{refs:B,context:P,x:ue,y:fe,strategy:pe}=ce,me=u.useClick(P),ge=u.useDismiss(P),xe=u.useRole(P,{role:"listbox"}),L=n&&p&&!h&&!s&&!o&&!d,z=u.useInteractions([...L?[me]:[],ge,xe]),x=t=>{const r=t.trim();E||S(r),_==null||_(r)},be=t=>{var v;const r=t.target.value??"";(v=e==null?void 0:e.onBlur)==null||v.call(e,t);const l=Q.normalizeTime(r);l!==null&&l!==r&&x(l)};m.useEffect(()=>{f!==void 0&&S(f)},[f]);const b=m.useRef(null);m.useEffect(()=>{var t;(t=b.current)!=null&&t.inner&&B.setReference(b.current.inner)},[B]);const ke=()=>{var r;const t=(r=b.current)==null?void 0:r.input;if(t){if(typeof t.showPicker=="function"){t.showPicker();return}t.focus()}},he=()=>I(t=>!t),A=()=>V(!0),Pe=()=>{!n||s||(o?ke():d?A():j==="button"&&he())},H=d&&p&&!h?()=>{A()}:void 0,y=!o&&n&&!s&&q==="dropdown"&&!!(a!=null&&a.length),K=d?"dialog":"listbox",G=d?U:w,ve=n&&!o&&!y&&(j==="button"||d),Fe=n&&p&&!o&&!y,O={...e,id:$,label:ee,labelProps:te??(e==null?void 0:e.labelProps),value:g,placeholder:ne,readOnly:h||!o&&p,disabled:s||(e==null?void 0:e.disabled),icon:n?"schedule":{name:"schedule",color:"inherit"},isClearable:se,required:oe,onIconClick:n?Pe:void 0,iconButtonProps:{"aria-label":Z("time-field.open-picker"),...ve&&{"aria-haspopup":K,"aria-expanded":G},...e==null?void 0:e.iconButtonProps},onChange:x,onBlur:be,className:M.default(c.default["tedi-time-field__textfield"],{[c.default["tedi-time-field__icon--disabled"]]:!n||s},{[c.default["tedi-time-field__textfield--disabled"]]:s||(e==null?void 0:e.disabled)},{[c.default["tedi-time-field--native"]]:o}),input:{...e==null?void 0:e.input,...o&&{type:"time"},...H&&{onClick:H},...Fe&&{role:"combobox","aria-haspopup":K,"aria-expanded":G}}};if(y){const t=a.indexOf(g),r=t>=0?t:0;return i.jsxs(F.Dropdown,{width:"trigger",defaultActiveIndex:r,children:[i.jsx(F.Dropdown.Trigger,{children:i.jsx("div",{role:"combobox",className:M.default(c.default["tedi-time-field__container"],D,{[c.default["tedi-time-field__container--native"]]:o}),children:i.jsx(J.TextField,{ref:b,...O,input:{...O.input,...!p&&{onClick:l=>l.stopPropagation()}}})})}),i.jsx(F.Dropdown.Content,{children:a.map((l,v)=>i.jsx(F.Dropdown.Item,{index:v,active:l===g,onClick:()=>x(l),children:l},l))})]})}const k={...L?z.getReferenceProps():{}};return delete k.role,delete k["aria-haspopup"],delete k["aria-expanded"],delete k["aria-controls"],i.jsxs(i.Fragment,{children:[i.jsx("div",{className:M.default(c.default["tedi-time-field__container"],D),...k,tabIndex:-1,children:i.jsx(J.TextField,{ref:b,...O})}),d&&i.jsx(_e.TimePickerModal,{open:U,onOpenChange:V,value:g,onConfirm:x,stepMinutes:R,availableTimes:a,gridVariant:q==="grid-radio"?"radio":"button",modalProps:re}),!o&&n&&!s&&!d&&i.jsx(u.FloatingPortal,{children:w&&i.jsx(u.FloatingFocusManager,{context:P,modal:!1,initialFocus:-1,children:i.jsx("div",{ref:B.setFloating,...z.getFloatingProps({style:{position:pe,top:fe??0,left:ue??0}}),children:i.jsx(Ce.TimePicker,{value:g,stepMinutes:R,availableTimes:a,onChange:t=>{x(t),a&&I(!1)},gridVariant:q==="grid-radio"?"radio":"button",className:c.default["tedi-time-field__picker-wrapper"]})})})})]})};X.displayName="TimeField";exports.TimeField=X;
@@ -47,6 +47,11 @@ export interface TimeFieldProps extends BreakpointSupport<TimeFieldBreakpointPro
47
47
  * Label for the input field. Used for accessibility.
48
48
  */
49
49
  label: string;
50
+ /**
51
+ * Props forwarded to the field's label (e.g. `{ modifiers: 'nowrap' }` to control
52
+ * how a long label wraps). Breakpoint keys are supported for responsive wrapping.
53
+ */
54
+ labelProps?: TextFieldProps['labelProps'];
50
55
  /**
51
56
  * Current value of the time field (controlled).
52
57
  */