@owp/core 2.5.16 → 2.5.18

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 (40) hide show
  1. package/dist/components/OwpPicker/OwpTimePicker.js +186 -208
  2. package/dist/components/OwpPicker/OwpTimePicker.js.map +1 -1
  3. package/dist/components/OwpTreeGrid/OwpTreeGrid.js +298 -227
  4. package/dist/components/OwpTreeGrid/OwpTreeGrid.js.map +1 -1
  5. package/dist/components/OwpTreeGrid/internal/hooks/useOwpTreeGridDatePickerEditor.js +487 -0
  6. package/dist/components/OwpTreeGrid/internal/hooks/useOwpTreeGridDatePickerEditor.js.map +1 -0
  7. package/dist/components/OwpTreeGrid/internal/treeGridRuntime.js +369 -248
  8. package/dist/components/OwpTreeGrid/internal/treeGridRuntime.js.map +1 -1
  9. package/dist/components/OwpTreeGrid/internal/treeGridTheme.js +201 -117
  10. package/dist/components/OwpTreeGrid/internal/treeGridTheme.js.map +1 -1
  11. package/dist/constants/gridTheme.js +7 -6
  12. package/dist/constants/gridTheme.js.map +1 -1
  13. package/dist/constants/treeGrid.js +27 -26
  14. package/dist/constants/treeGrid.js.map +1 -1
  15. package/dist/constants.js +23 -22
  16. package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/barcodes/CODE128/constants.js +1 -1
  17. package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/barcodes/CODE93/constants.js +1 -1
  18. package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/barcodes/ITF/constants.js +1 -1
  19. package/dist/owp-app.css +1 -1
  20. package/dist/types/components/OwpPicker/OwpTimePicker.d.ts +3 -1
  21. package/dist/types/components/OwpTreeGrid/OwpTreeGrid.d.ts +14 -6
  22. package/dist/types/components/OwpTreeGrid/internal/hooks/useOwpTreeGridDatePickerEditor.d.ts +17 -0
  23. package/dist/types/components/OwpTreeGrid/internal/treeGridRuntime.d.ts +41 -7
  24. package/dist/types/components/OwpTreeGrid/internal/treeGridTheme.d.ts +1 -1
  25. package/dist/types/constants/gridTheme.d.ts +2 -0
  26. package/dist/types/constants/treeGrid.d.ts +2 -1
  27. package/dist/types/types/OwpGridThemeTypes.d.ts +1 -0
  28. package/dist/types/utils/index.d.ts +0 -1
  29. package/dist/types/utils/treeGridUtil.d.ts +27 -0
  30. package/dist/utils/treeGridUtil.js +172 -112
  31. package/dist/utils/treeGridUtil.js.map +1 -1
  32. package/dist/utils.js +85 -83
  33. package/dist/utils.js.map +1 -1
  34. package/package.json +1 -1
  35. package/dist/components/OwpTreeGrid/internal/treeGridColumnEditRules.js +0 -84
  36. package/dist/components/OwpTreeGrid/internal/treeGridColumnEditRules.js.map +0 -1
  37. package/dist/types/components/OwpTreeGrid/internal/treeGridColumnEditRules.d.ts +0 -60
  38. package/dist/types/utils/normalizeTimeToHourMinute.d.ts +0 -11
  39. package/dist/utils/normalizeTimeToHourMinute.js +0 -34
  40. package/dist/utils/normalizeTimeToHourMinute.js.map +0 -1
@@ -1,18 +1,18 @@
1
- var to = Object.defineProperty;
2
- var r = (t, S) => to(t, "name", { value: S, configurable: !0 });
3
- import { jsx as p, jsxs as io } from "../../node_modules/.pnpm/@emotion_react@11.14.0_@types_react@19.2.14_react@19.2.4/node_modules/@emotion/react/jsx-runtime/dist/emotion-react-jsx-runtime.browser.esm.js";
4
- import { useOwpTranslation as ao } from "../../hooks/useOwpTranslation.js";
5
- import { ensureDayjsBrowserSetup as lo } from "../../utils/dayjsBrowser.js";
6
- import co from "../../node_modules/.pnpm/@mui_icons-material@7.3.9_@mui_material@7.3.9_@emotion_react@11.14.0_@types_react@19.2._dc2be6bc014bebdac88a574e3e02c144/node_modules/@mui/icons-material/esm/Clear.js";
7
- import { IconButton as so, InputAdornment as uo } from "@mui/material";
8
- import { TimePicker as mo, LocalizationProvider as fo } from "@mui/x-date-pickers";
9
- import { AdapterDayjs as po } from "@mui/x-date-pickers/AdapterDayjs";
10
- import { clsx as bo } from "../../node_modules/.pnpm/clsx@2.1.1/node_modules/clsx/dist/clsx.js";
11
- import w from "dayjs";
12
- import { useState as go, useRef as I, useMemo as ko, useCallback as C, useEffect as Mo } from "react";
13
- import { VALUE_TIME_FORMATTER as z } from "./constants/index.js";
14
- lo();
15
- const v = "––", i = "#aeaeae", Y = {
1
+ var me = Object.defineProperty;
2
+ var t = (r, w) => me(r, "name", { value: w, configurable: !0 });
3
+ import { jsx as f, jsxs as fe } from "../../node_modules/.pnpm/@emotion_react@11.14.0_@types_react@19.2.14_react@19.2.4/node_modules/@emotion/react/jsx-runtime/dist/emotion-react-jsx-runtime.browser.esm.js";
4
+ import { useOwpTranslation as pe } from "../../hooks/useOwpTranslation.js";
5
+ import { ensureDayjsBrowserSetup as ge } from "../../utils/dayjsBrowser.js";
6
+ import be from "../../node_modules/.pnpm/@mui_icons-material@7.3.9_@mui_material@7.3.9_@emotion_react@11.14.0_@types_react@19.2._dc2be6bc014bebdac88a574e3e02c144/node_modules/@mui/icons-material/esm/Clear.js";
7
+ import { MenuItem as ke, IconButton as Ie, InputAdornment as Me } from "@mui/material";
8
+ import { TimePicker as Ee, LocalizationProvider as ye } from "@mui/x-date-pickers";
9
+ import { AdapterDayjs as Te } from "@mui/x-date-pickers/AdapterDayjs";
10
+ import { clsx as he } from "../../node_modules/.pnpm/clsx@2.1.1/node_modules/clsx/dist/clsx.js";
11
+ import B from "dayjs";
12
+ import { useState as Se, useRef as v, useMemo as V, useCallback as S, useEffect as we, forwardRef as Ce } from "react";
13
+ import { VALUE_TIME_FORMATTER as Y } from "./constants/index.js";
14
+ ge();
15
+ const D = "––", Be = 1, U = {
16
16
  "&:hover": {
17
17
  backgroundColor: "var(--owp-datepicker-hover-bg, rgba(3, 155, 229, 0.14))"
18
18
  },
@@ -23,7 +23,7 @@ const v = "––", i = "#aeaeae", Y = {
23
23
  backgroundColor: "var(--owp-datepicker-selected-hover-bg, #039be5)"
24
24
  }
25
25
  }
26
- }, ho = {
26
+ }, ve = {
27
27
  "& .MuiInputBase-root": {
28
28
  alignItems: "center"
29
29
  },
@@ -49,132 +49,182 @@ const v = "––", i = "#aeaeae", Y = {
49
49
  visibility: "visible"
50
50
  }
51
51
  }
52
- }, yo = /* @__PURE__ */ r((t) => t.ctrlKey || t.altKey || t.metaKey ? !1 : t.key.length === 1 || t.key === "Backspace" || t.key === "Delete", "isValueEditingKey"), Ko = /* @__PURE__ */ r(({
53
- label: t,
54
- variant: S = "standard",
55
- sx: j,
56
- value: c,
57
- format: N = z,
58
- useAmPm: H,
59
- placeholder: V,
60
- disabledClearButton: T,
61
- fullWidth: D,
62
- onChange: d,
63
- textFieldProps: e,
64
- localeText: W,
65
- open: E,
66
- onOpen: b,
67
- onClose: g,
68
- slots: X,
69
- ...a
52
+ }, W = {
53
+ border: 0,
54
+ borderRadius: 1,
55
+ boxShadow: 8,
56
+ backgroundImage: "none",
57
+ backgroundColor: "background.paper",
58
+ overflow: "hidden",
59
+ "& .MuiPickersLayout-contentWrapper": {
60
+ border: 0
61
+ },
62
+ "& .MuiPickersLayout-actionBar": {
63
+ borderTop: "1px solid",
64
+ borderColor: "#e0e0e0"
65
+ },
66
+ "& .MuiMultiSectionDigitalClock-root, & .MuiDigitalClock-root": {
67
+ border: 0
68
+ },
69
+ "& .MuiMultiSectionDigitalClockSection-root": {
70
+ border: 0
71
+ },
72
+ "& .MuiMultiSectionDigitalClockSection-root:last-of-type": {
73
+ overflowY: "hidden",
74
+ scrollbarWidth: "none",
75
+ "&::-webkit-scrollbar": {
76
+ display: "none",
77
+ width: 0
78
+ },
79
+ "@media (pointer: fine)": {
80
+ "&:hover": {
81
+ overflowY: "hidden"
82
+ }
83
+ },
84
+ "@media (pointer: none), (pointer: coarse)": {
85
+ overflowY: "hidden"
86
+ }
87
+ }
88
+ }, De = /* @__PURE__ */ t((r) => r.ctrlKey || r.altKey || r.metaKey ? !1 : r.key.length === 1 || r.key === "Backspace" || r.key === "Delete", "isValueEditingKey"), We = /* @__PURE__ */ t(({
89
+ label: r,
90
+ variant: w = "standard",
91
+ sx: q,
92
+ value: d,
93
+ format: G = Y,
94
+ useAmPm: J,
95
+ placeholder: Q,
96
+ disabledClearButton: _,
97
+ fullWidth: L,
98
+ onChange: s,
99
+ textFieldProps: n,
100
+ localeText: Z,
101
+ open: A,
102
+ onOpen: g,
103
+ onClose: b,
104
+ slots: k,
105
+ slotProps: m,
106
+ ...i
70
107
  }) => {
71
- const k = z, M = H ?? /a/i.test(N), q = M ? "A hh:mm" : k, U = a.closeOnSelect ?? !1, G = {
108
+ const I = Y, M = J ?? /a/i.test(G), $ = M ? "A hh:mm" : I, x = i.closeOnSelect ?? !1, F = {
72
109
  minutes: 1,
73
- ...a.timeSteps
74
- }, [J, B] = go(!1), L = I(null), O = I(null), h = I(!1), { t: A, i18n: R } = ao(), Q = (R.resolvedLanguage ?? R.language ?? "kr") === "kr" ? "ko" : "en", _ = {
75
- okButtonLabel: A("Button.확인"),
76
- clearButtonLabel: A("Button.초기화"),
77
- fieldHoursPlaceholder: /* @__PURE__ */ r(() => v, "fieldHoursPlaceholder"),
78
- fieldMinutesPlaceholder: /* @__PURE__ */ r(() => v, "fieldMinutesPlaceholder"),
79
- fieldMeridiemPlaceholder: /* @__PURE__ */ r(() => v, "fieldMeridiemPlaceholder"),
80
- ...W
81
- }, Z = V ?? (M ? "–– ––:––" : "––:––"), $ = [ho, j, e == null ? void 0 : e.sx].filter(
110
+ ...i.timeSteps
111
+ }, [P, O] = Se(!1), R = v(null), K = v(null), E = v(!1), { t: N, i18n: z } = pe(), ee = (z.resolvedLanguage ?? z.language ?? "kr") === "kr" ? "ko" : "en", j = {
112
+ okButtonLabel: N("Button.확인"),
113
+ clearButtonLabel: N("Button.초기화"),
114
+ fieldHoursPlaceholder: /* @__PURE__ */ t(() => D, "fieldHoursPlaceholder"),
115
+ fieldMinutesPlaceholder: /* @__PURE__ */ t(() => D, "fieldMinutesPlaceholder"),
116
+ fieldMeridiemPlaceholder: /* @__PURE__ */ t(() => D, "fieldMeridiemPlaceholder"),
117
+ ...Z
118
+ }, ne = Q ?? (M ? "–– ––:––" : "––:––"), oe = [ve, q, n == null ? void 0 : n.sx].filter(
82
119
  Boolean
83
- ), x = !!(T || a.disabled || a.readOnly), F = !!d && !T, u = E !== void 0, l = u ? E : J, P = ko(() => {
84
- if (!c)
120
+ ), te = !!(_ || i.disabled || i.readOnly), re = !!s && !_, p = A !== void 0, l = p ? A : P, y = typeof (m == null ? void 0 : m.actionBar) == "function" || m == null ? void 0 : m.actionBar, ie = V(() => {
121
+ if (!d)
85
122
  return null;
86
- if (w.isDayjs(c))
87
- return c;
88
- if (typeof c == "string") {
89
- const n = w(c, k, !0);
90
- return n.isValid() ? n : null;
123
+ if (B.isDayjs(d))
124
+ return d;
125
+ if (typeof d == "string") {
126
+ const o = B(d, I, !0);
127
+ return o.isValid() ? o : null;
91
128
  }
92
- const o = w(c);
93
- return o.isValid() ? o : null;
94
- }, [k, c]), oo = /* @__PURE__ */ r((o) => {
95
- d == null || d(o != null && o.isValid() ? o.format(k) : void 0);
96
- }, "handleChange"), y = C(() => {
97
- if (h.current) {
98
- h.current = !1;
129
+ const e = B(d);
130
+ return e.isValid() ? e : null;
131
+ }, [I, d]), ae = /* @__PURE__ */ t((e) => {
132
+ s == null || s(e != null && e.isValid() ? e.format(I) : void 0);
133
+ }, "handleChange"), T = S(() => {
134
+ if (E.current) {
135
+ E.current = !1;
99
136
  return;
100
137
  }
101
- u || B(!0), b == null || b();
102
- }, [u, b]), s = C(() => {
103
- u || B(!1), g == null || g();
104
- }, [u, g]), eo = /* @__PURE__ */ r(() => {
105
- d == null || d("");
106
- }, "handleClear"), ro = C(
107
- (o) => {
108
- var n;
109
- if ((n = e == null ? void 0 : e.onClick) == null || n.call(e, o), !(o.defaultPrevented || a.disabled || a.readOnly)) {
138
+ p || O(!0), g == null || g();
139
+ }, [p, g]), a = S(() => {
140
+ p || O(!1), b == null || b();
141
+ }, [p, b]), ce = /* @__PURE__ */ t(() => {
142
+ s == null || s("");
143
+ }, "handleClear"), le = S(
144
+ (e) => {
145
+ var o;
146
+ if ((o = n == null ? void 0 : n.onClick) == null || o.call(n, e), !(e.defaultPrevented || i.disabled || i.readOnly)) {
110
147
  if (l) {
111
- h.current = !0, s(), queueMicrotask(() => {
112
- h.current = !1;
148
+ E.current = !0, a(), queueMicrotask(() => {
149
+ E.current = !1;
113
150
  });
114
151
  return;
115
152
  }
116
- y();
153
+ T();
117
154
  }
118
155
  },
119
- [s, y, l, e, a.disabled, a.readOnly]
120
- ), no = C(
121
- (o) => {
122
- var n;
123
- (n = e == null ? void 0 : e.onKeyDown) == null || n.call(e, o), !(o.defaultPrevented || !l || !yo(o)) && s();
156
+ [a, T, l, n, i.disabled, i.readOnly]
157
+ ), de = S(
158
+ (e) => {
159
+ var o;
160
+ (o = n == null ? void 0 : n.onKeyDown) == null || o.call(n, e), !(e.defaultPrevented || !l || !De(e)) && a();
124
161
  },
125
- [s, l, e]
162
+ [a, l, n]
126
163
  );
127
- return Mo(() => {
164
+ we(() => {
128
165
  if (!l)
129
166
  return;
130
- const o = /* @__PURE__ */ r((n) => {
131
- var f, K;
132
- const m = n.target;
133
- m instanceof Node && ((f = L.current) != null && f.contains(m) || (K = O.current) != null && K.contains(m) || s());
167
+ const e = /* @__PURE__ */ t((o) => {
168
+ var u, C;
169
+ const c = o.target;
170
+ c instanceof Node && ((u = R.current) != null && u.contains(c) || (C = K.current) != null && C.contains(c) || a());
134
171
  }, "handleDocumentMouseDown");
135
- return document.addEventListener("mousedown", o, !0), () => {
136
- document.removeEventListener("mousedown", o, !0);
172
+ return document.addEventListener("mousedown", e, !0), () => {
173
+ document.removeEventListener("mousedown", e, !0);
137
174
  };
138
- }, [s, l]), /* @__PURE__ */ p(fo, { dateAdapter: po, adapterLocale: Q, children: /* @__PURE__ */ p("div", { ref: L, children: /* @__PURE__ */ p(
139
- mo,
175
+ }, [a, l]);
176
+ const se = /* @__PURE__ */ t(({ position: e, children: o, ...c }) => /* @__PURE__ */ fe(Me, { position: e, ...c, children: [
177
+ e === "end" && re && /* @__PURE__ */ f(
178
+ Ie,
179
+ {
180
+ className: "clearButton",
181
+ size: "small",
182
+ "aria-label": j.clearButtonLabel,
183
+ disabled: te,
184
+ onClick: /* @__PURE__ */ t((u) => {
185
+ u.preventDefault(), u.stopPropagation(), ce();
186
+ }, "onClick"),
187
+ children: /* @__PURE__ */ f(be, { fontSize: "small" })
188
+ }
189
+ ),
190
+ o
191
+ ] }), "TimePickerInputAdornment"), ue = V(
192
+ () => Ce((e, o) => {
193
+ const { onClick: c, ...u } = e;
194
+ return /* @__PURE__ */ f(ke, { ref: o, onClick: /* @__PURE__ */ t((X) => {
195
+ c == null || c(X);
196
+ const h = X.currentTarget.parentElement, H = h == null ? void 0 : h.parentElement;
197
+ (H ? Array.from(H.children).indexOf(h) : -1) === Be && window.setTimeout(a, 0);
198
+ }, "handleClick"), ...u });
199
+ }),
200
+ [a]
201
+ );
202
+ return /* @__PURE__ */ f(ye, { dateAdapter: Te, adapterLocale: ee, children: /* @__PURE__ */ f("div", { ref: R, children: /* @__PURE__ */ f(
203
+ Ee,
140
204
  {
141
- ...a,
205
+ ...i,
142
206
  enableAccessibleFieldDOMStructure: !1,
143
207
  ampm: M,
144
208
  open: l,
145
- closeOnSelect: U,
146
- timeSteps: G,
147
- label: t,
148
- value: P,
149
- format: q,
150
- localeText: _,
151
- onChange: oo,
152
- onOpen: y,
153
- onClose: s,
209
+ closeOnSelect: x,
210
+ timeSteps: F,
211
+ label: r,
212
+ value: ie,
213
+ format: $,
214
+ localeText: j,
215
+ onChange: ae,
216
+ onOpen: T,
217
+ onClose: a,
154
218
  slots: {
155
- ...X,
156
- inputAdornment: /* @__PURE__ */ r(({ position: o, children: n, ...m }) => /* @__PURE__ */ io(uo, { position: o, ...m, children: [
157
- o === "end" && F && /* @__PURE__ */ p(
158
- so,
159
- {
160
- className: "clearButton",
161
- size: "small",
162
- "aria-label": _.clearButtonLabel,
163
- disabled: x,
164
- onClick: /* @__PURE__ */ r((f) => {
165
- f.preventDefault(), f.stopPropagation(), eo();
166
- }, "onClick"),
167
- children: /* @__PURE__ */ p(co, { fontSize: "small" })
168
- }
169
- ),
170
- n
171
- ] }), "TimePickerInputAdornment")
219
+ ...k,
220
+ inputAdornment: se,
221
+ digitalClockSectionItem: (k == null ? void 0 : k.digitalClockSectionItem) ?? ue
172
222
  },
173
223
  slotProps: {
174
224
  popper: {
175
225
  placement: "bottom-end",
176
- ref: /* @__PURE__ */ r((o) => {
177
- O.current = o;
226
+ ref: /* @__PURE__ */ t((e) => {
227
+ K.current = e;
178
228
  }, "ref"),
179
229
  modifiers: [
180
230
  {
@@ -186,87 +236,13 @@ const v = "––", i = "#aeaeae", Y = {
186
236
  ]
187
237
  },
188
238
  desktopPaper: {
189
- sx: {
190
- border: "1px solid",
191
- borderColor: i,
192
- borderRadius: 1,
193
- boxShadow: "none",
194
- backgroundImage: "none",
195
- backgroundColor: "background.paper",
196
- overflow: "hidden",
197
- "& .MuiPickersLayout-contentWrapper": {
198
- borderColor: i
199
- },
200
- "& .MuiPickersLayout-actionBar": {
201
- borderTop: "1px solid",
202
- borderColor: i
203
- },
204
- "& .MuiMultiSectionDigitalClock-root, & .MuiDigitalClock-root": {
205
- borderColor: i
206
- },
207
- "& .MuiMultiSectionDigitalClockSection-root": {
208
- borderColor: i
209
- },
210
- "& .MuiMultiSectionDigitalClockSection-root:last-of-type": {
211
- overflowY: "hidden",
212
- scrollbarWidth: "none",
213
- "&::-webkit-scrollbar": {
214
- display: "none",
215
- width: 0
216
- },
217
- "@media (pointer: fine)": {
218
- "&:hover": {
219
- overflowY: "hidden"
220
- }
221
- },
222
- "@media (pointer: none), (pointer: coarse)": {
223
- overflowY: "hidden"
224
- }
225
- }
226
- }
239
+ sx: W
227
240
  },
228
241
  mobilePaper: {
229
- sx: {
230
- border: "1px solid",
231
- borderColor: i,
232
- borderRadius: 1,
233
- boxShadow: "none",
234
- backgroundImage: "none",
235
- backgroundColor: "background.paper",
236
- overflow: "hidden",
237
- "& .MuiPickersLayout-contentWrapper": {
238
- borderColor: i
239
- },
240
- "& .MuiPickersLayout-actionBar": {
241
- borderTop: "1px solid",
242
- borderColor: i
243
- },
244
- "& .MuiMultiSectionDigitalClock-root, & .MuiDigitalClock-root": {
245
- borderColor: i
246
- },
247
- "& .MuiMultiSectionDigitalClockSection-root": {
248
- borderColor: i
249
- },
250
- "& .MuiMultiSectionDigitalClockSection-root:last-of-type": {
251
- overflowY: "hidden",
252
- scrollbarWidth: "none",
253
- "&::-webkit-scrollbar": {
254
- display: "none",
255
- width: 0
256
- },
257
- "@media (pointer: fine)": {
258
- "&:hover": {
259
- overflowY: "hidden"
260
- }
261
- },
262
- "@media (pointer: none), (pointer: coarse)": {
263
- overflowY: "hidden"
264
- }
265
- }
266
- }
242
+ sx: W
267
243
  },
268
244
  actionBar: {
269
- actions: ["accept"],
245
+ actions: [],
270
246
  sx: {
271
247
  backgroundColor: "#f6f3f4",
272
248
  minHeight: 44,
@@ -277,13 +253,15 @@ const v = "––", i = "#aeaeae", Y = {
277
253
  padding: "4px 8px",
278
254
  fontSize: "1.3rem",
279
255
  lineHeight: 1.2
280
- }
281
- }
256
+ },
257
+ ...y == null ? void 0 : y.sx
258
+ },
259
+ ...y
282
260
  },
283
261
  openPickerButton: {
284
262
  size: "small",
285
- onClick: /* @__PURE__ */ r((o) => {
286
- o.preventDefault(), o.stopPropagation(), l || y();
263
+ onClick: /* @__PURE__ */ t((e) => {
264
+ e.preventDefault(), e.stopPropagation(), l || T();
287
265
  }, "onClick"),
288
266
  sx: {
289
267
  margin: 0,
@@ -301,29 +279,29 @@ const v = "––", i = "#aeaeae", Y = {
301
279
  }
302
280
  },
303
281
  digitalClockItem: {
304
- sx: Y
282
+ sx: U
305
283
  },
306
284
  digitalClockSectionItem: {
307
- sx: Y
285
+ sx: U
308
286
  },
309
287
  textField: {
310
- variant: S,
311
- fullWidth: D,
312
- ...e,
313
- className: bo(
314
- !D && (M ? "w-[160px]" : "w-[140px]"),
315
- e == null ? void 0 : e.className
288
+ variant: w,
289
+ fullWidth: L,
290
+ ...n,
291
+ className: he(
292
+ !L && (M ? "w-[160px]" : "w-[140px]"),
293
+ n == null ? void 0 : n.className
316
294
  ),
317
- onClick: ro,
318
- onKeyDown: no,
319
- placeholder: Z,
320
- sx: $
295
+ onClick: le,
296
+ onKeyDown: de,
297
+ placeholder: ne,
298
+ sx: oe
321
299
  }
322
300
  }
323
301
  }
324
302
  ) }) });
325
303
  }, "OwpTimePicker");
326
304
  export {
327
- Ko as OwpTimePicker
305
+ We as OwpTimePicker
328
306
  };
329
307
  //# sourceMappingURL=OwpTimePicker.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"OwpTimePicker.js","sources":["../../../src/components/OwpPicker/OwpTimePicker.tsx"],"sourcesContent":["import { useOwpTranslation } from '@/hooks/useOwpTranslation';\nimport { ensureDayjsBrowserSetup } from '@/utils/dayjsBrowser';\nimport ClearIcon from '@mui/icons-material/Clear';\nimport {\n IconButton,\n InputAdornment,\n type InputAdornmentProps,\n TextFieldProps,\n} from '@mui/material';\nimport type { SxProps, Theme } from '@mui/material/styles';\nimport { LocalizationProvider, TimePicker, type TimePickerProps } from '@mui/x-date-pickers';\nimport { AdapterDayjs } from '@mui/x-date-pickers/AdapterDayjs';\nimport clsx from 'clsx';\nimport dayjs, { type Dayjs } from 'dayjs';\nimport { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport { VALUE_TIME_FORMATTER } from './constants';\n\nensureDayjsBrowserSetup();\n\nconst EMPTY_TIME_SECTION = '––';\nconst PICKER_BORDER_COLOR = '#aeaeae';\n\nconst SELECTED_TIME_ITEM_SX = {\n '&:hover': {\n backgroundColor: 'var(--owp-datepicker-hover-bg, rgba(3, 155, 229, 0.14))',\n },\n '&.Mui-selected': {\n backgroundColor: 'var(--owp-datepicker-selected-bg, #039be5)',\n color: 'var(--owp-datepicker-selected-color, #fff)',\n '&:focus-visible, &:hover': {\n backgroundColor: 'var(--owp-datepicker-selected-hover-bg, #039be5)',\n },\n },\n};\n\nconst TIME_PICKER_TEXT_FIELD_SX = {\n '& .MuiInputBase-root': {\n alignItems: 'center',\n },\n '& .MuiInputAdornment-positionEnd': {\n marginBottom: 0,\n marginLeft: 0,\n gap: 0,\n },\n '& .MuiInputAdornment-positionEnd > :not(style) + :not(style)': {\n marginLeft: 0,\n },\n '& .MuiInputAdornment-positionEnd .MuiIconButton-root': {\n margin: 0,\n padding: 0,\n },\n '& .clearButton': {\n opacity: 1,\n visibility: 'visible',\n },\n '@media (pointer: fine)': {\n '& .clearButton': {\n opacity: 1,\n visibility: 'visible',\n },\n },\n};\n\nexport type OwpTimePickerValue = string | Date | Dayjs;\ntype OwpTimePickerTextFieldClickEvent = Parameters<NonNullable<TextFieldProps['onClick']>>[0];\ntype OwpTimePickerTextFieldKeyDownEvent = Parameters<NonNullable<TextFieldProps['onKeyDown']>>[0];\n\nconst isValueEditingKey = (event: OwpTimePickerTextFieldKeyDownEvent) => {\n if (event.ctrlKey || event.altKey || event.metaKey) {\n return false;\n }\n\n return event.key.length === 1 || event.key === 'Backspace' || event.key === 'Delete';\n};\n\ninterface OwnProps {\n label?: string;\n variant?: TextFieldProps['variant'];\n sx?: TextFieldProps['sx'];\n value?: OwpTimePickerValue;\n format?: string;\n useAmPm?: boolean;\n placeholder?: string;\n disabledClearButton?: boolean;\n fullWidth?: boolean;\n onChange?: (value?: string) => void;\n textFieldProps?: Omit<TextFieldProps, 'value' | 'defaultValue' | 'onChange'>;\n}\n\ntype OwpTimePickerProps = OwnProps &\n Omit<\n TimePickerProps<false>,\n | 'value'\n | 'onChange'\n | 'label'\n | 'format'\n | 'ampm'\n | 'slotProps'\n | 'enableAccessibleFieldDOMStructure'\n >;\n\n/**\n * OwpTimePicker 컴포넌트\n * @param label 입력 라벨\n * @param variant variant 값\n * @param sx sx 값\n * @param value 현재 값, clear 버튼 동작 대상 값\n * @param format 시간 포맷\n * @param useAmPm 오전/오후 포맷 사용 여부\n * @param disabledClearButton clear 버튼 비활성화 여부\n * @param fullWidth 전체 너비 사용 여부\n * @param onChange onChange 핸들러, clear 버튼 활성화 조건\n * @param textFieldProps TextField props\n */\nconst OwpTimePicker = ({\n label,\n variant = 'standard',\n sx,\n value,\n format = VALUE_TIME_FORMATTER,\n useAmPm,\n placeholder,\n disabledClearButton,\n fullWidth,\n onChange,\n textFieldProps,\n localeText,\n open: openProp,\n onOpen,\n onClose,\n slots,\n ...timePickerProps\n}: OwpTimePickerProps) => {\n const normalizedValueFormat = VALUE_TIME_FORMATTER;\n const useMeridiem = useAmPm ?? /a/i.test(format);\n const displayFormat = useMeridiem ? 'A hh:mm' : normalizedValueFormat;\n const resolvedCloseOnSelect = timePickerProps.closeOnSelect ?? false;\n const resolvedTimeSteps = {\n minutes: 1,\n ...timePickerProps.timeSteps,\n };\n const [internalOpen, setInternalOpen] = useState(false);\n const rootRef = useRef<HTMLDivElement | null>(null);\n const popperRef = useRef<HTMLDivElement | null>(null);\n const skipNextOpenRef = useRef(false);\n const { t, i18n } = useOwpTranslation();\n const languageId = i18n.resolvedLanguage ?? i18n.language ?? 'kr';\n const adapterLocale = languageId === 'kr' ? 'ko' : 'en';\n const resolvedLocaleText = {\n okButtonLabel: t('Button.확인'),\n clearButtonLabel: t('Button.초기화'),\n fieldHoursPlaceholder: () => EMPTY_TIME_SECTION,\n fieldMinutesPlaceholder: () => EMPTY_TIME_SECTION,\n fieldMeridiemPlaceholder: () => EMPTY_TIME_SECTION,\n ...localeText,\n };\n const resolvedPlaceholder = placeholder ?? (useMeridiem ? '–– ––:––' : '––:––');\n const resolvedTextFieldSx = [TIME_PICKER_TEXT_FIELD_SX, sx, textFieldProps?.sx].filter(\n Boolean,\n ) as SxProps<Theme>;\n const isClearDisabled = Boolean(\n disabledClearButton || timePickerProps.disabled || timePickerProps.readOnly,\n );\n const canClear = Boolean(onChange) && !disabledClearButton;\n const isControlledOpen = openProp !== undefined;\n const isOpen = isControlledOpen ? openProp : internalOpen;\n\n const selectedValue = useMemo(() => {\n if (!value) {\n return null;\n }\n\n if (dayjs.isDayjs(value)) {\n return value;\n }\n\n if (typeof value === 'string') {\n const parsedValue = dayjs(value, normalizedValueFormat, true);\n return parsedValue.isValid() ? parsedValue : null;\n }\n\n const parsedValue = dayjs(value);\n return parsedValue.isValid() ? parsedValue : null;\n }, [normalizedValueFormat, value]);\n\n const handleChange = (nextValue: Dayjs | null) => {\n onChange?.(nextValue?.isValid() ? nextValue.format(normalizedValueFormat) : undefined);\n };\n\n const handleOpen = useCallback(() => {\n if (skipNextOpenRef.current) {\n skipNextOpenRef.current = false;\n return;\n }\n\n if (!isControlledOpen) {\n setInternalOpen(true);\n }\n\n onOpen?.();\n }, [isControlledOpen, onOpen]);\n\n const handleClose = useCallback(() => {\n if (!isControlledOpen) {\n setInternalOpen(false);\n }\n\n onClose?.();\n }, [isControlledOpen, onClose]);\n\n const handleClear = () => {\n onChange?.('');\n };\n\n const handleTextFieldClick = useCallback(\n (event: OwpTimePickerTextFieldClickEvent) => {\n textFieldProps?.onClick?.(event);\n\n if (event.defaultPrevented || timePickerProps.disabled || timePickerProps.readOnly) {\n return;\n }\n\n if (isOpen) {\n skipNextOpenRef.current = true;\n handleClose();\n queueMicrotask(() => {\n skipNextOpenRef.current = false;\n });\n return;\n }\n\n handleOpen();\n },\n [handleClose, handleOpen, isOpen, textFieldProps, timePickerProps.disabled, timePickerProps.readOnly],\n );\n\n const handleTextFieldKeyDown = useCallback(\n (event: OwpTimePickerTextFieldKeyDownEvent) => {\n textFieldProps?.onKeyDown?.(event);\n\n if (event.defaultPrevented || !isOpen || !isValueEditingKey(event)) {\n return;\n }\n\n handleClose();\n },\n [handleClose, isOpen, textFieldProps],\n );\n\n useEffect(() => {\n if (!isOpen) {\n return undefined;\n }\n\n const handleDocumentMouseDown = (event: MouseEvent) => {\n const target = event.target;\n\n if (!(target instanceof Node)) {\n return;\n }\n\n if (rootRef.current?.contains(target) || popperRef.current?.contains(target)) {\n return;\n }\n\n handleClose();\n };\n\n document.addEventListener('mousedown', handleDocumentMouseDown, true);\n\n return () => {\n document.removeEventListener('mousedown', handleDocumentMouseDown, true);\n };\n }, [handleClose, isOpen]);\n\n \n const TimePickerInputAdornment = ({ position, children, ...restProps }: InputAdornmentProps) => (\n <InputAdornment position={position} {...restProps}>\n {position === 'end' && canClear && (\n <IconButton\n className=\"clearButton\"\n size=\"small\"\n aria-label={resolvedLocaleText.clearButtonLabel}\n disabled={isClearDisabled}\n onClick={(event) => {\n event.preventDefault();\n event.stopPropagation();\n handleClear();\n }}\n >\n <ClearIcon fontSize=\"small\" />\n </IconButton>\n )}\n {children}\n </InputAdornment>\n );\n\n return (\n <LocalizationProvider dateAdapter={AdapterDayjs} adapterLocale={adapterLocale}>\n <div ref={rootRef}>\n <TimePicker\n {...timePickerProps}\n enableAccessibleFieldDOMStructure={false}\n ampm={useMeridiem}\n open={isOpen}\n closeOnSelect={resolvedCloseOnSelect}\n timeSteps={resolvedTimeSteps}\n label={label}\n value={selectedValue}\n format={displayFormat}\n localeText={resolvedLocaleText}\n onChange={handleChange}\n onOpen={handleOpen}\n onClose={handleClose}\n slots={{\n ...slots,\n inputAdornment: TimePickerInputAdornment,\n }}\n slotProps={{\n popper: {\n placement: 'bottom-end',\n ref: (instance) => {\n popperRef.current = instance;\n },\n modifiers: [\n {\n name: 'offset',\n options: {\n offset: [0, 7],\n },\n },\n ],\n },\n desktopPaper: {\n sx: {\n border: '1px solid',\n borderColor: PICKER_BORDER_COLOR,\n borderRadius: 1,\n boxShadow: 'none',\n backgroundImage: 'none',\n backgroundColor: 'background.paper',\n overflow: 'hidden',\n '& .MuiPickersLayout-contentWrapper': {\n borderColor: PICKER_BORDER_COLOR,\n },\n '& .MuiPickersLayout-actionBar': {\n borderTop: '1px solid',\n borderColor: PICKER_BORDER_COLOR,\n },\n '& .MuiMultiSectionDigitalClock-root, & .MuiDigitalClock-root': {\n borderColor: PICKER_BORDER_COLOR,\n },\n '& .MuiMultiSectionDigitalClockSection-root': {\n borderColor: PICKER_BORDER_COLOR,\n },\n '& .MuiMultiSectionDigitalClockSection-root:last-of-type': {\n overflowY: 'hidden',\n scrollbarWidth: 'none',\n '&::-webkit-scrollbar': {\n display: 'none',\n width: 0,\n },\n '@media (pointer: fine)': {\n '&:hover': {\n overflowY: 'hidden',\n },\n },\n '@media (pointer: none), (pointer: coarse)': {\n overflowY: 'hidden',\n },\n },\n },\n },\n mobilePaper: {\n sx: {\n border: '1px solid',\n borderColor: PICKER_BORDER_COLOR,\n borderRadius: 1,\n boxShadow: 'none',\n backgroundImage: 'none',\n backgroundColor: 'background.paper',\n overflow: 'hidden',\n '& .MuiPickersLayout-contentWrapper': {\n borderColor: PICKER_BORDER_COLOR,\n },\n '& .MuiPickersLayout-actionBar': {\n borderTop: '1px solid',\n borderColor: PICKER_BORDER_COLOR,\n },\n '& .MuiMultiSectionDigitalClock-root, & .MuiDigitalClock-root': {\n borderColor: PICKER_BORDER_COLOR,\n },\n '& .MuiMultiSectionDigitalClockSection-root': {\n borderColor: PICKER_BORDER_COLOR,\n },\n '& .MuiMultiSectionDigitalClockSection-root:last-of-type': {\n overflowY: 'hidden',\n scrollbarWidth: 'none',\n '&::-webkit-scrollbar': {\n display: 'none',\n width: 0,\n },\n '@media (pointer: fine)': {\n '&:hover': {\n overflowY: 'hidden',\n },\n },\n '@media (pointer: none), (pointer: coarse)': {\n overflowY: 'hidden',\n },\n },\n },\n },\n actionBar: {\n actions: ['accept'],\n sx: {\n backgroundColor: '#f6f3f4',\n minHeight: 44,\n padding: '4px 8px',\n '& .MuiButton-root': {\n minHeight: 28,\n minWidth: 48,\n padding: '4px 8px',\n fontSize: '1.3rem',\n lineHeight: 1.2,\n },\n },\n },\n openPickerButton: {\n size: 'small',\n onClick: (event) => {\n event.preventDefault();\n event.stopPropagation();\n\n if (!isOpen) {\n handleOpen();\n }\n },\n sx: {\n margin: 0,\n padding: 0,\n },\n },\n openPickerIcon: {\n fontSize: 'small',\n },\n inputAdornment: {\n sx: {\n marginBottom: 0,\n marginLeft: 0,\n gap: 0,\n },\n },\n digitalClockItem: {\n sx: SELECTED_TIME_ITEM_SX,\n },\n digitalClockSectionItem: {\n sx: SELECTED_TIME_ITEM_SX,\n },\n textField: {\n variant,\n fullWidth,\n ...textFieldProps,\n className: clsx(\n !fullWidth && (useMeridiem ? 'w-[160px]' : 'w-[140px]'),\n textFieldProps?.className,\n ),\n onClick: handleTextFieldClick,\n onKeyDown: handleTextFieldKeyDown,\n placeholder: resolvedPlaceholder,\n sx: resolvedTextFieldSx,\n },\n }}\n />\n </div>\n </LocalizationProvider>\n );\n};\n\nexport { OwpTimePicker };\n"],"names":["ensureDayjsBrowserSetup","EMPTY_TIME_SECTION","PICKER_BORDER_COLOR","SELECTED_TIME_ITEM_SX","TIME_PICKER_TEXT_FIELD_SX","isValueEditingKey","__name","event","OwpTimePicker","label","variant","sx","value","format","VALUE_TIME_FORMATTER","useAmPm","placeholder","disabledClearButton","fullWidth","onChange","textFieldProps","localeText","openProp","onOpen","onClose","slots","timePickerProps","normalizedValueFormat","useMeridiem","displayFormat","resolvedCloseOnSelect","resolvedTimeSteps","internalOpen","setInternalOpen","useState","rootRef","useRef","popperRef","skipNextOpenRef","t","i18n","useOwpTranslation","adapterLocale","resolvedLocaleText","resolvedPlaceholder","resolvedTextFieldSx","isClearDisabled","canClear","isControlledOpen","isOpen","selectedValue","useMemo","dayjs","parsedValue","handleChange","nextValue","handleOpen","useCallback","handleClose","handleClear","handleTextFieldClick","_a","handleTextFieldKeyDown","useEffect","handleDocumentMouseDown","target","_b","jsx","LocalizationProvider","AdapterDayjs","TimePicker","position","children","restProps","jsxs","InputAdornment","IconButton","ClearIcon","instance","clsx"],"mappings":"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"}
1
+ {"version":3,"file":"OwpTimePicker.js","sources":["../../../src/components/OwpPicker/OwpTimePicker.tsx"],"sourcesContent":["import { useOwpTranslation } from '@/hooks/useOwpTranslation';\nimport { ensureDayjsBrowserSetup } from '@/utils/dayjsBrowser';\nimport ClearIcon from '@mui/icons-material/Clear';\nimport {\n IconButton,\n InputAdornment,\n MenuItem,\n type MenuItemProps,\n type InputAdornmentProps,\n TextFieldProps,\n} from '@mui/material';\nimport type { SxProps, Theme } from '@mui/material/styles';\nimport { LocalizationProvider, TimePicker, type TimePickerProps } from '@mui/x-date-pickers';\nimport { AdapterDayjs } from '@mui/x-date-pickers/AdapterDayjs';\nimport clsx from 'clsx';\nimport dayjs, { type Dayjs } from 'dayjs';\nimport {\n type MouseEvent as ReactMouseEvent,\n forwardRef,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport { VALUE_TIME_FORMATTER } from './constants';\n\nensureDayjsBrowserSetup();\n\nconst EMPTY_TIME_SECTION = '––';\nconst TIME_PICKER_MINUTE_SECTION_INDEX = 1;\n\nconst SELECTED_TIME_ITEM_SX = {\n '&:hover': {\n backgroundColor: 'var(--owp-datepicker-hover-bg, rgba(3, 155, 229, 0.14))',\n },\n '&.Mui-selected': {\n backgroundColor: 'var(--owp-datepicker-selected-bg, #039be5)',\n color: 'var(--owp-datepicker-selected-color, #fff)',\n '&:focus-visible, &:hover': {\n backgroundColor: 'var(--owp-datepicker-selected-hover-bg, #039be5)',\n },\n },\n};\n\nconst TIME_PICKER_TEXT_FIELD_SX = {\n '& .MuiInputBase-root': {\n alignItems: 'center',\n },\n '& .MuiInputAdornment-positionEnd': {\n marginBottom: 0,\n marginLeft: 0,\n gap: 0,\n },\n '& .MuiInputAdornment-positionEnd > :not(style) + :not(style)': {\n marginLeft: 0,\n },\n '& .MuiInputAdornment-positionEnd .MuiIconButton-root': {\n margin: 0,\n padding: 0,\n },\n '& .clearButton': {\n opacity: 1,\n visibility: 'visible',\n },\n '@media (pointer: fine)': {\n '& .clearButton': {\n opacity: 1,\n visibility: 'visible',\n },\n },\n};\n\nconst TIME_PICKER_PAPER_SX = {\n border: 0,\n borderRadius: 1,\n boxShadow: 8,\n backgroundImage: 'none',\n backgroundColor: 'background.paper',\n overflow: 'hidden',\n '& .MuiPickersLayout-contentWrapper': {\n border: 0,\n },\n '& .MuiPickersLayout-actionBar': {\n borderTop: '1px solid',\n borderColor: '#e0e0e0',\n },\n '& .MuiMultiSectionDigitalClock-root, & .MuiDigitalClock-root': {\n border: 0,\n },\n '& .MuiMultiSectionDigitalClockSection-root': {\n border: 0,\n },\n '& .MuiMultiSectionDigitalClockSection-root:last-of-type': {\n overflowY: 'hidden',\n scrollbarWidth: 'none',\n '&::-webkit-scrollbar': {\n display: 'none',\n width: 0,\n },\n '@media (pointer: fine)': {\n '&:hover': {\n overflowY: 'hidden',\n },\n },\n '@media (pointer: none), (pointer: coarse)': {\n overflowY: 'hidden',\n },\n },\n};\n\nexport type OwpTimePickerValue = string | Date | Dayjs;\ntype OwpTimePickerTextFieldClickEvent = Parameters<NonNullable<TextFieldProps['onClick']>>[0];\ntype OwpTimePickerTextFieldKeyDownEvent = Parameters<NonNullable<TextFieldProps['onKeyDown']>>[0];\n\nconst isValueEditingKey = (event: OwpTimePickerTextFieldKeyDownEvent) => {\n if (event.ctrlKey || event.altKey || event.metaKey) {\n return false;\n }\n\n return event.key.length === 1 || event.key === 'Backspace' || event.key === 'Delete';\n};\n\ninterface OwnProps {\n label?: string;\n variant?: TextFieldProps['variant'];\n sx?: TextFieldProps['sx'];\n value?: OwpTimePickerValue;\n format?: string;\n useAmPm?: boolean;\n placeholder?: string;\n disabledClearButton?: boolean;\n fullWidth?: boolean;\n onChange?: (value?: string) => void;\n slotProps?: TimePickerProps<false>['slotProps'];\n textFieldProps?: Omit<TextFieldProps, 'value' | 'defaultValue' | 'onChange'>;\n}\n\ntype OwpTimePickerProps = OwnProps &\n Omit<\n TimePickerProps<false>,\n | 'value'\n | 'onChange'\n | 'label'\n | 'format'\n | 'ampm'\n | 'slotProps'\n | 'enableAccessibleFieldDOMStructure'\n >;\n\n/**\n * OwpTimePicker 컴포넌트\n * @param label 입력 라벨\n * @param variant variant 값\n * @param sx sx 값\n * @param value 현재 값, clear 버튼 동작 대상 값\n * @param format 시간 포맷\n * @param useAmPm 오전/오후 포맷 사용 여부\n * @param disabledClearButton clear 버튼 비활성화 여부\n * @param fullWidth 전체 너비 사용 여부\n * @param onChange onChange 핸들러, clear 버튼 활성화 조건\n * @param slotProps TimePicker slot props\n * @param textFieldProps TextField props\n */\nconst OwpTimePicker = ({\n label,\n variant = 'standard',\n sx,\n value,\n format = VALUE_TIME_FORMATTER,\n useAmPm,\n placeholder,\n disabledClearButton,\n fullWidth,\n onChange,\n textFieldProps,\n localeText,\n open: openProp,\n onOpen,\n onClose,\n slots,\n slotProps,\n ...timePickerProps\n}: OwpTimePickerProps) => {\n const normalizedValueFormat = VALUE_TIME_FORMATTER;\n const useMeridiem = useAmPm ?? /a/i.test(format);\n const displayFormat = useMeridiem ? 'A hh:mm' : normalizedValueFormat;\n const resolvedCloseOnSelect = timePickerProps.closeOnSelect ?? false;\n const resolvedTimeSteps = {\n minutes: 1,\n ...timePickerProps.timeSteps,\n };\n const [internalOpen, setInternalOpen] = useState(false);\n const rootRef = useRef<HTMLDivElement | null>(null);\n const popperRef = useRef<HTMLDivElement | null>(null);\n const skipNextOpenRef = useRef(false);\n const { t, i18n } = useOwpTranslation();\n const languageId = i18n.resolvedLanguage ?? i18n.language ?? 'kr';\n const adapterLocale = languageId === 'kr' ? 'ko' : 'en';\n const resolvedLocaleText = {\n okButtonLabel: t('Button.확인'),\n clearButtonLabel: t('Button.초기화'),\n fieldHoursPlaceholder: () => EMPTY_TIME_SECTION,\n fieldMinutesPlaceholder: () => EMPTY_TIME_SECTION,\n fieldMeridiemPlaceholder: () => EMPTY_TIME_SECTION,\n ...localeText,\n };\n const resolvedPlaceholder = placeholder ?? (useMeridiem ? '–– ––:––' : '––:––');\n const resolvedTextFieldSx = [TIME_PICKER_TEXT_FIELD_SX, sx, textFieldProps?.sx].filter(\n Boolean,\n ) as SxProps<Theme>;\n const isClearDisabled = Boolean(\n disabledClearButton || timePickerProps.disabled || timePickerProps.readOnly,\n );\n const canClear = Boolean(onChange) && !disabledClearButton;\n const isControlledOpen = openProp !== undefined;\n const isOpen = isControlledOpen ? openProp : internalOpen;\n const actionBarSlotProps =\n typeof slotProps?.actionBar === 'function' ? undefined : slotProps?.actionBar;\n\n const selectedValue = useMemo(() => {\n if (!value) {\n return null;\n }\n\n if (dayjs.isDayjs(value)) {\n return value;\n }\n\n if (typeof value === 'string') {\n const parsedValue = dayjs(value, normalizedValueFormat, true);\n return parsedValue.isValid() ? parsedValue : null;\n }\n\n const parsedValue = dayjs(value);\n return parsedValue.isValid() ? parsedValue : null;\n }, [normalizedValueFormat, value]);\n\n const handleChange = (nextValue: Dayjs | null) => {\n onChange?.(nextValue?.isValid() ? nextValue.format(normalizedValueFormat) : undefined);\n };\n\n const handleOpen = useCallback(() => {\n if (skipNextOpenRef.current) {\n skipNextOpenRef.current = false;\n return;\n }\n\n if (!isControlledOpen) {\n setInternalOpen(true);\n }\n\n onOpen?.();\n }, [isControlledOpen, onOpen]);\n\n const handleClose = useCallback(() => {\n if (!isControlledOpen) {\n setInternalOpen(false);\n }\n\n onClose?.();\n }, [isControlledOpen, onClose]);\n\n const handleClear = () => {\n onChange?.('');\n };\n\n const handleTextFieldClick = useCallback(\n (event: OwpTimePickerTextFieldClickEvent) => {\n textFieldProps?.onClick?.(event);\n\n if (event.defaultPrevented || timePickerProps.disabled || timePickerProps.readOnly) {\n return;\n }\n\n if (isOpen) {\n skipNextOpenRef.current = true;\n handleClose();\n queueMicrotask(() => {\n skipNextOpenRef.current = false;\n });\n return;\n }\n\n handleOpen();\n },\n [handleClose, handleOpen, isOpen, textFieldProps, timePickerProps.disabled, timePickerProps.readOnly],\n );\n\n const handleTextFieldKeyDown = useCallback(\n (event: OwpTimePickerTextFieldKeyDownEvent) => {\n textFieldProps?.onKeyDown?.(event);\n\n if (event.defaultPrevented || !isOpen || !isValueEditingKey(event)) {\n return;\n }\n\n handleClose();\n },\n [handleClose, isOpen, textFieldProps],\n );\n\n useEffect(() => {\n if (!isOpen) {\n return undefined;\n }\n\n const handleDocumentMouseDown = (event: MouseEvent) => {\n const target = event.target;\n\n if (!(target instanceof Node)) {\n return;\n }\n\n if (rootRef.current?.contains(target) || popperRef.current?.contains(target)) {\n return;\n }\n\n handleClose();\n };\n\n document.addEventListener('mousedown', handleDocumentMouseDown, true);\n\n return () => {\n document.removeEventListener('mousedown', handleDocumentMouseDown, true);\n };\n }, [handleClose, isOpen]);\n\n const TimePickerInputAdornment = ({ position, children, ...restProps }: InputAdornmentProps) => (\n <InputAdornment position={position} {...restProps}>\n {position === 'end' && canClear && (\n <IconButton\n className=\"clearButton\"\n size=\"small\"\n aria-label={resolvedLocaleText.clearButtonLabel}\n disabled={isClearDisabled}\n onClick={(event) => {\n event.preventDefault();\n event.stopPropagation();\n handleClear();\n }}\n >\n <ClearIcon fontSize=\"small\" />\n </IconButton>\n )}\n {children}\n </InputAdornment>\n );\n\n const TimePickerDigitalClockSectionItem = useMemo(\n () =>\n forwardRef<HTMLLIElement, MenuItemProps>((props, ref) => {\n const { onClick, ...restProps } = props;\n\n const handleClick = (event: ReactMouseEvent<HTMLLIElement>) => {\n onClick?.(event);\n\n const parentElement = event.currentTarget.parentElement;\n const parentParentElement = parentElement?.parentElement;\n const sectionIndex = parentParentElement\n ? Array.from(parentParentElement.children).indexOf(parentElement)\n : -1;\n\n if (sectionIndex === TIME_PICKER_MINUTE_SECTION_INDEX) {\n window.setTimeout(handleClose, 0);\n }\n };\n\n return <MenuItem ref={ref} onClick={handleClick} {...restProps} />;\n }),\n [handleClose],\n );\n\n return (\n <LocalizationProvider dateAdapter={AdapterDayjs} adapterLocale={adapterLocale}>\n <div ref={rootRef}>\n <TimePicker\n {...timePickerProps}\n enableAccessibleFieldDOMStructure={false}\n ampm={useMeridiem}\n open={isOpen}\n closeOnSelect={resolvedCloseOnSelect}\n timeSteps={resolvedTimeSteps}\n label={label}\n value={selectedValue}\n format={displayFormat}\n localeText={resolvedLocaleText}\n onChange={handleChange}\n onOpen={handleOpen}\n onClose={handleClose}\n slots={{\n ...slots,\n inputAdornment: TimePickerInputAdornment,\n digitalClockSectionItem:\n slots?.digitalClockSectionItem ?? TimePickerDigitalClockSectionItem,\n }}\n slotProps={{\n popper: {\n placement: 'bottom-end',\n ref: (instance) => {\n popperRef.current = instance;\n },\n modifiers: [\n {\n name: 'offset',\n options: {\n offset: [0, 7],\n },\n },\n ],\n },\n desktopPaper: {\n sx: TIME_PICKER_PAPER_SX,\n },\n mobilePaper: {\n sx: TIME_PICKER_PAPER_SX,\n },\n actionBar: {\n actions: [],\n sx: {\n backgroundColor: '#f6f3f4',\n minHeight: 44,\n padding: '4px 8px',\n '& .MuiButton-root': {\n minHeight: 28,\n minWidth: 48,\n padding: '4px 8px',\n fontSize: '1.3rem',\n lineHeight: 1.2,\n },\n ...actionBarSlotProps?.sx,\n },\n ...actionBarSlotProps,\n },\n openPickerButton: {\n size: 'small',\n onClick: (event) => {\n event.preventDefault();\n event.stopPropagation();\n\n if (!isOpen) {\n handleOpen();\n }\n },\n sx: {\n margin: 0,\n padding: 0,\n },\n },\n openPickerIcon: {\n fontSize: 'small',\n },\n inputAdornment: {\n sx: {\n marginBottom: 0,\n marginLeft: 0,\n gap: 0,\n },\n },\n digitalClockItem: {\n sx: SELECTED_TIME_ITEM_SX,\n },\n digitalClockSectionItem: {\n sx: SELECTED_TIME_ITEM_SX,\n },\n textField: {\n variant,\n fullWidth,\n ...textFieldProps,\n className: clsx(\n !fullWidth && (useMeridiem ? 'w-[160px]' : 'w-[140px]'),\n textFieldProps?.className,\n ),\n onClick: handleTextFieldClick,\n onKeyDown: handleTextFieldKeyDown,\n placeholder: resolvedPlaceholder,\n sx: resolvedTextFieldSx,\n },\n }}\n />\n </div>\n </LocalizationProvider>\n );\n};\n\nexport { OwpTimePicker };\n"],"names":["ensureDayjsBrowserSetup","EMPTY_TIME_SECTION","TIME_PICKER_MINUTE_SECTION_INDEX","SELECTED_TIME_ITEM_SX","TIME_PICKER_TEXT_FIELD_SX","TIME_PICKER_PAPER_SX","isValueEditingKey","__name","event","OwpTimePicker","label","variant","sx","value","format","VALUE_TIME_FORMATTER","useAmPm","placeholder","disabledClearButton","fullWidth","onChange","textFieldProps","localeText","openProp","onOpen","onClose","slots","slotProps","timePickerProps","normalizedValueFormat","useMeridiem","displayFormat","resolvedCloseOnSelect","resolvedTimeSteps","internalOpen","setInternalOpen","useState","rootRef","useRef","popperRef","skipNextOpenRef","t","i18n","useOwpTranslation","adapterLocale","resolvedLocaleText","resolvedPlaceholder","resolvedTextFieldSx","isClearDisabled","canClear","isControlledOpen","isOpen","actionBarSlotProps","selectedValue","useMemo","dayjs","parsedValue","handleChange","nextValue","handleOpen","useCallback","handleClose","handleClear","handleTextFieldClick","_a","handleTextFieldKeyDown","useEffect","handleDocumentMouseDown","target","_b","TimePickerInputAdornment","position","children","restProps","jsxs","InputAdornment","jsx","IconButton","ClearIcon","TimePickerDigitalClockSectionItem","forwardRef","props","ref","onClick","MenuItem","parentElement","parentParentElement","LocalizationProvider","AdapterDayjs","TimePicker","instance","clsx"],"mappings":"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"}