@servicetitan/anvil2 1.27.2 → 1.29.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 (108) hide show
  1. package/CHANGELOG.md +76 -0
  2. package/dist/AnvilProvider-C7Li86-d.js +16 -0
  3. package/dist/AnvilProvider-C7Li86-d.js.map +1 -0
  4. package/dist/AnvilProvider.js +1 -1
  5. package/dist/{Combobox-DnTI2I3L.js → Combobox-DCrEfyl2.js} +2209 -228
  6. package/dist/Combobox-DCrEfyl2.js.map +1 -0
  7. package/dist/Combobox.css +443 -69
  8. package/dist/Combobox.js +1 -1
  9. package/dist/DateField-4jR9NvbC.js +1109 -0
  10. package/dist/DateField-4jR9NvbC.js.map +1 -0
  11. package/dist/DateField.js +1 -1
  12. package/dist/{Dialog-DQ9QXB5D.js → Dialog-CL3bfZuB.js} +2 -2
  13. package/dist/{Dialog-DQ9QXB5D.js.map → Dialog-CL3bfZuB.js.map} +1 -1
  14. package/dist/{Dialog-Kh2tcVWz-DqcNnouf.js → Dialog-CYBt_JdP-CmF0MUHL.js} +80 -51
  15. package/dist/Dialog-CYBt_JdP-CmF0MUHL.js.map +1 -0
  16. package/dist/Dialog.js +1 -1
  17. package/dist/Drawer-8nHrKktU.js +66 -0
  18. package/dist/Drawer-8nHrKktU.js.map +1 -0
  19. package/dist/{Drawer-C6fpnRDX.js → Drawer-UQlX-LQG-BSCnMRad.js} +97 -130
  20. package/dist/Drawer-UQlX-LQG-BSCnMRad.js.map +1 -0
  21. package/dist/{Drawer.css → Drawer-UQlX-LQG.css} +26 -25
  22. package/dist/Drawer.js +1 -1
  23. package/dist/{AnvilProvider-DNJk1Ait.js → HammerProvider-DuxhW0gv-C2voN5ro.js} +26 -15
  24. package/dist/HammerProvider-DuxhW0gv-C2voN5ro.js.map +1 -0
  25. package/dist/InputMask-B8N8PP1W-DlUKpMR4.js +323 -0
  26. package/dist/InputMask-B8N8PP1W-DlUKpMR4.js.map +1 -0
  27. package/dist/{InputMask-Ceh574pv.js → InputMask-jsL7rSOk.js} +2 -2
  28. package/dist/{InputMask-Ceh574pv.js.map → InputMask-jsL7rSOk.js.map} +1 -1
  29. package/dist/InputMask.js +1 -1
  30. package/dist/{Label-DWF2pXeG-1BhzVgZG.js → Label-CUVr-jvI-BXhER5eQ.js} +3 -3
  31. package/dist/{Label-DWF2pXeG-1BhzVgZG.js.map → Label-CUVr-jvI-BXhER5eQ.js.map} +1 -1
  32. package/dist/Menu-CsfX8-_z.js +1091 -0
  33. package/dist/Menu-CsfX8-_z.js.map +1 -0
  34. package/dist/Menu.css +116 -1
  35. package/dist/Menu.js +1 -1
  36. package/dist/{Page-BGkLs3bR.js → Page-vKi5JkDS.js} +70 -54
  37. package/dist/Page-vKi5JkDS.js.map +1 -0
  38. package/dist/Page.css +103 -70
  39. package/dist/Page.js +1 -1
  40. package/dist/{Popover-DzEc_Muv.js → Popover-OFlyW8gN.js} +2 -2
  41. package/dist/{Popover-DzEc_Muv.js.map → Popover-OFlyW8gN.js.map} +1 -1
  42. package/dist/{Popover-QKZtjN4_-CETYlWwq.js → Popover-tu_N1aS6-CSLR1Xzc.js} +351 -12
  43. package/dist/Popover-tu_N1aS6-CSLR1Xzc.js.map +1 -0
  44. package/dist/{Popover-QKZtjN4_.css → Popover-tu_N1aS6.css} +53 -1
  45. package/dist/Popover.js +1 -1
  46. package/dist/{ProgressBar-cKtBso7j-3CDyBaAN.js → ProgressBar-DQ1lsFk2-Ci4eqzM0.js} +3 -3
  47. package/dist/{ProgressBar-cKtBso7j-3CDyBaAN.js.map → ProgressBar-DQ1lsFk2-Ci4eqzM0.js.map} +1 -1
  48. package/dist/{ProgressBar-IItIByYc.js → ProgressBar-gVRLaKPz.js} +2 -2
  49. package/dist/{ProgressBar-IItIByYc.js.map → ProgressBar-gVRLaKPz.js.map} +1 -1
  50. package/dist/ProgressBar.js +1 -1
  51. package/dist/{SearchField-CWb0kaV8.js → SearchField-C-4icPUa.js} +2 -2
  52. package/dist/{SearchField-CWb0kaV8.js.map → SearchField-C-4icPUa.js.map} +1 -1
  53. package/dist/SearchField.js +1 -1
  54. package/dist/{TextField-D53XNiCi-C6_A5VRq.js → TextField-B8LHWOoC-DSV9zY-z.js} +2 -2
  55. package/dist/{TextField-D53XNiCi-C6_A5VRq.js.map → TextField-B8LHWOoC-DSV9zY-z.js.map} +1 -1
  56. package/dist/{TextField-s92xHzb3.js → TextField-DgxJO1a7.js} +2 -2
  57. package/dist/{TextField-s92xHzb3.js.map → TextField-DgxJO1a7.js.map} +1 -1
  58. package/dist/TextField.js +1 -1
  59. package/dist/{Textarea-B61wNIFr.js → Textarea-B-Dv2RXs.js} +2 -2
  60. package/dist/{Textarea-B61wNIFr.js.map → Textarea-B-Dv2RXs.js.map} +1 -1
  61. package/dist/Textarea.js +1 -1
  62. package/dist/Toast.js +1 -1
  63. package/dist/{Toolbar-Cge6Nznj.js → Toolbar-7BeCY61H.js} +2 -2
  64. package/dist/{Toolbar-Cge6Nznj.js.map → Toolbar-7BeCY61H.js.map} +1 -1
  65. package/dist/Toolbar.js +1 -1
  66. package/dist/{Tooltip-89FIvMG0.js → Tooltip-BVBq-KxK.js} +2 -2
  67. package/dist/{Tooltip-89FIvMG0.js.map → Tooltip-BVBq-KxK.js.map} +1 -1
  68. package/dist/{Tooltip-DgM8NSPm-CRIQbuTm.js → Tooltip-C8sCGmKM-CLrDofvy.js} +222 -22
  69. package/dist/Tooltip-C8sCGmKM-CLrDofvy.js.map +1 -0
  70. package/dist/{Tooltip-DgM8NSPm.css → Tooltip-C8sCGmKM.css} +43 -1
  71. package/dist/Tooltip.js +1 -1
  72. package/dist/components/Dialog/Dialog.d.ts +1 -0
  73. package/dist/components/Drawer/Drawer.d.ts +1 -0
  74. package/dist/components/Page/Page.d.ts +4 -1
  75. package/dist/floating-ui.react-4AwURJA3.js +5989 -0
  76. package/dist/floating-ui.react-4AwURJA3.js.map +1 -0
  77. package/dist/{useKeyboardFocusables-CwVMAe5C-CIHqixNA.js → index.esm-CunAFnrh.js} +11 -59
  78. package/dist/index.esm-CunAFnrh.js.map +1 -0
  79. package/dist/index.js +16 -16
  80. package/dist/supportsPopover-8aJR37cf-8aJR37cf.js +6 -0
  81. package/dist/supportsPopover-8aJR37cf-8aJR37cf.js.map +1 -0
  82. package/dist/{toast-CHld8RKY.js → toast-CbokOkfo.js} +6 -2
  83. package/dist/toast-CbokOkfo.js.map +1 -0
  84. package/dist/useKeyboardFocusables-CwVMAe5C-DtjYOAmt.js +61 -0
  85. package/dist/useKeyboardFocusables-CwVMAe5C-DtjYOAmt.js.map +1 -0
  86. package/package.json +3 -3
  87. package/dist/AnvilProvider-DNJk1Ait.js.map +0 -1
  88. package/dist/Combobox-DnTI2I3L.js.map +0 -1
  89. package/dist/DateField-DocC46Mw.js +0 -565
  90. package/dist/DateField-DocC46Mw.js.map +0 -1
  91. package/dist/Dialog-Kh2tcVWz-DqcNnouf.js.map +0 -1
  92. package/dist/Drawer-C6fpnRDX.js.map +0 -1
  93. package/dist/InputMask-DQXw5qvG-BH4P-Woc.js +0 -195
  94. package/dist/InputMask-DQXw5qvG-BH4P-Woc.js.map +0 -1
  95. package/dist/Menu-D8SDm9s9.js +0 -706
  96. package/dist/Menu-D8SDm9s9.js.map +0 -1
  97. package/dist/Page-BGkLs3bR.js.map +0 -1
  98. package/dist/Popover-QKZtjN4_-CETYlWwq.js.map +0 -1
  99. package/dist/Tooltip-DgM8NSPm-CRIQbuTm.js.map +0 -1
  100. package/dist/floating-ui.react-P5949bpO.js +0 -28
  101. package/dist/floating-ui.react-P5949bpO.js.map +0 -1
  102. package/dist/floating-ui.react-dom-D912oS4K.js +0 -1841
  103. package/dist/floating-ui.react-dom-D912oS4K.js.map +0 -1
  104. package/dist/toast-CHld8RKY.js.map +0 -1
  105. package/dist/useKeyboardFocusables-CwVMAe5C-CIHqixNA.js.map +0 -1
  106. /package/dist/{Dialog-Kh2tcVWz.css → Dialog-CYBt_JdP.css} +0 -0
  107. /package/dist/{Label-DWF2pXeG.css → Label-CUVr-jvI.css} +0 -0
  108. /package/dist/{ProgressBar-cKtBso7j.css → ProgressBar-DQ1lsFk2.css} +0 -0
@@ -1,565 +0,0 @@
1
- import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
2
- import * as React from 'react';
3
- import { forwardRef, useState, useRef, useMemo, useEffect } from 'react';
4
- import { useTrackingId } from './useTrackingId.js';
5
- import { c as childrenToString } from './childrenToString-Bz9MqbHb-Bz9MqbHb.js';
6
- import { I as InputMask } from './InputMask-DQXw5qvG-BH4P-Woc.js';
7
- import { T as TextField } from './TextField-D53XNiCi-C6_A5VRq.js';
8
- import { d as Popover } from './Popover-QKZtjN4_-CETYlWwq.js';
9
- import { D as DateTime, t as toDateString, i as isValidDate, C as Calendar } from './Calendar-9iYMS0Iw-D_XWYjOE.js';
10
- import { I as Icon } from './Icon-DbHA5GV1-DwO2aGkj.js';
11
- import { u as useMergeRefs } from './useMergeRefs-Bde85AWI-Bde85AWI.js';
12
-
13
- const SvgEvent = (props) => /* @__PURE__ */ React.createElement("svg", { xmlns: "http://www.w3.org/2000/svg", width: "1em", height: "1em", viewBox: "0 0 24 24", ...props }, /* @__PURE__ */ React.createElement("path", { d: "M16 13h-3c-.55 0-1 .45-1 1v3c0 .55.45 1 1 1h3c.55 0 1-.45 1-1v-3c0-.55-.45-1-1-1zm0-10v1H8V3c0-.55-.45-1-1-1s-1 .45-1 1v1H5c-1.11 0-1.99.9-1.99 2L3 20a2 2 0 0 0 2 2h14c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2h-1V3c0-.55-.45-1-1-1s-1 .45-1 1zm2 17H6c-.55 0-1-.45-1-1V9h14v10c0 .55-.45 1-1 1z" }));
14
-
15
- const RANGE_DIVIDER = " — ";
16
- const DateField$1 = forwardRef(
17
- ({
18
- // DateField
19
- openCalendar,
20
- onFocus,
21
- onBlur,
22
- onChange,
23
- format = "MM/dd/yyyy",
24
- disableHint,
25
- // Calendar
26
- minDate,
27
- maxDate,
28
- unavailableDates,
29
- unavailable,
30
- startDay,
31
- defaultValue,
32
- value: inputValue,
33
- // Shared
34
- locale = Intl.DateTimeFormat().resolvedOptions().locale,
35
- defaultTimeZone = Intl.DateTimeFormat().resolvedOptions().timeZone,
36
- range,
37
- // Input
38
- required,
39
- ...inputProps
40
- }, ref) => {
41
- const [open, setOpen] = useState(openCalendar || false);
42
- const [internalValue, setInternalValue] = useState();
43
- const [disableFocusLock, setDisableFocusLock] = useState(true);
44
- const inputRef = useRef(null);
45
- const calRef = useRef(null);
46
- const iconRef = useRef(null);
47
- const docRef = useRef(null);
48
- const floatRef = useRef(null);
49
- const isClickOutside = useRef(false);
50
- const formatMask = format.replace(/[^/]/g, "_");
51
- const hint = useMemo(
52
- () => disableHint ? undefined : `format: ${format.replace(/M/g, "m")}`,
53
- [format, disableHint]
54
- );
55
- useEffect(() => {
56
- if (!docRef.current) {
57
- if (document != null) {
58
- docRef.current = document;
59
- return;
60
- }
61
- const doc = inputRef.current?.closest("body")?.ownerDocument;
62
- doc && (docRef.current = doc);
63
- if (docRef.current == null && inputRef.current?.parentNode != null) {
64
- let node = inputRef.current?.parentNode;
65
- while (node.parentNode != null) {
66
- node = node.parentNode;
67
- }
68
- docRef.current = node;
69
- }
70
- }
71
- const clickOutHandler = (ev) => {
72
- const realTarget = ev.composedPath()[0];
73
- if (!floatRef.current?.contains(realTarget) && !iconRef.current?.contains(realTarget) && inputRef.current !== realTarget) {
74
- setOpen(false);
75
- setDisableFocusLock(true);
76
- onBlur?.(ev);
77
- }
78
- };
79
- if (open) {
80
- docRef.current?.addEventListener("click", clickOutHandler);
81
- } else {
82
- docRef.current?.removeEventListener("click", clickOutHandler);
83
- }
84
- return () => {
85
- docRef.current?.removeEventListener("click", clickOutHandler);
86
- };
87
- }, [open, onBlur]);
88
- useEffect(() => {
89
- if (range) {
90
- let start;
91
- let end;
92
- if (typeof inputValue === "string") {
93
- const parts = inputValue.split(RANGE_DIVIDER);
94
- start = parts[0];
95
- end = parts[1];
96
- } else {
97
- start = inputValue?.start ?? "";
98
- end = inputValue?.end ?? "";
99
- }
100
- const startDate = DateTime.fromFormat(start ?? "", format, {
101
- zone: defaultTimeZone
102
- }).startOf("day");
103
- const endDate = DateTime.fromFormat(end ?? "", format, {
104
- zone: defaultTimeZone
105
- }).startOf("day");
106
- const newData = {
107
- start: {
108
- value: start,
109
- date: toDateString(startDate),
110
- isValid: startDate.isValid && isValidDate(
111
- startDate,
112
- minDate,
113
- maxDate,
114
- new Set(unavailableDates || unavailable?.dates),
115
- {
116
- dates: new Set(unavailable?.dates),
117
- daysOfWeek: new Set(unavailable?.daysOfWeek)
118
- },
119
- defaultTimeZone
120
- )
121
- },
122
- end: {
123
- value: end,
124
- date: toDateString(endDate),
125
- isValid: startDate.isValid && isValidDate(
126
- endDate,
127
- minDate,
128
- maxDate,
129
- new Set(unavailableDates || unavailable?.dates),
130
- {
131
- dates: new Set(unavailable?.dates),
132
- daysOfWeek: new Set(unavailable?.daysOfWeek)
133
- },
134
- defaultTimeZone
135
- )
136
- },
137
- value: `${start || formatMask}${RANGE_DIVIDER}${end || formatMask}`
138
- };
139
- setInternalValue(newData);
140
- } else {
141
- if (typeof inputValue !== "string") return;
142
- const inputDate = DateTime.fromFormat(inputValue, format, {
143
- zone: defaultTimeZone
144
- }).startOf("day");
145
- const newData = {
146
- value: inputValue,
147
- date: toDateString(inputDate),
148
- isValid: inputDate.isValid && isValidDate(
149
- inputDate,
150
- minDate,
151
- maxDate,
152
- new Set(unavailableDates || unavailable?.dates),
153
- {
154
- dates: new Set(unavailable?.dates),
155
- daysOfWeek: new Set(unavailable?.daysOfWeek)
156
- },
157
- defaultTimeZone
158
- )
159
- };
160
- setInternalValue(newData);
161
- }
162
- }, [inputValue]);
163
- const mask = useMemo(() => {
164
- const maskPart = format.replace(/[Mdy]/g, "9");
165
- if (range) {
166
- return maskPart + RANGE_DIVIDER + maskPart;
167
- } else {
168
- return maskPart;
169
- }
170
- }, [format, range]);
171
- useEffect(() => {
172
- if (typeof inputValue === "string") return;
173
- if (defaultValue) {
174
- if (range) {
175
- const defValStart = defaultValue.start;
176
- const defValEnd = defaultValue.end;
177
- const initValStart = defValStart + (formatMask + RANGE_DIVIDER + formatMask).slice(
178
- defValStart?.length
179
- );
180
- const initValEnd = defValEnd + (formatMask + RANGE_DIVIDER + formatMask).slice(defValEnd?.length);
181
- const newValue = initValStart + RANGE_DIVIDER + initValEnd;
182
- const inputDateStart = DateTime.fromFormat(
183
- defValStart || "",
184
- format,
185
- {
186
- zone: defaultTimeZone
187
- }
188
- ).startOf("day");
189
- const inputDateEnd = DateTime.fromFormat(defValEnd || "", format, {
190
- zone: defaultTimeZone
191
- }).startOf("day");
192
- const isValidStart = inputDateStart.isValid && isValidDate(
193
- inputDateStart,
194
- minDate,
195
- maxDate,
196
- new Set(unavailableDates || unavailable?.dates),
197
- {
198
- dates: new Set(unavailable?.dates),
199
- daysOfWeek: new Set(unavailable?.daysOfWeek)
200
- },
201
- defaultTimeZone
202
- );
203
- const isValidEnd = inputDateEnd.isValid && isValidDate(
204
- inputDateEnd,
205
- minDate,
206
- maxDate,
207
- new Set(unavailableDates || unavailable?.dates),
208
- {
209
- dates: new Set(unavailable?.dates),
210
- daysOfWeek: new Set(unavailable?.daysOfWeek)
211
- },
212
- defaultTimeZone
213
- );
214
- const initCalendarValue = {
215
- start: {
216
- value: initValStart,
217
- date: toDateString(inputDateStart),
218
- isValid: isValidStart
219
- },
220
- end: {
221
- value: initValEnd,
222
- date: toDateString(inputDateEnd),
223
- isValid: isValidEnd
224
- },
225
- value: newValue
226
- };
227
- setInternalValue(initCalendarValue);
228
- } else {
229
- const defVal = defaultValue;
230
- const initVal = defVal + formatMask.slice(defVal.length);
231
- const inputDate = DateTime.fromFormat(defVal, format, {
232
- zone: defaultTimeZone
233
- }).startOf("day");
234
- const isValid = inputDate.isValid && isValidDate(
235
- inputDate,
236
- minDate,
237
- maxDate,
238
- new Set(unavailableDates || unavailable?.dates),
239
- {
240
- dates: new Set(unavailable?.dates),
241
- daysOfWeek: new Set(unavailable?.daysOfWeek)
242
- },
243
- defaultTimeZone
244
- );
245
- const initCalendarValue = {
246
- value: initVal,
247
- date: toDateString(inputDate),
248
- isValid
249
- };
250
- setInternalValue(initCalendarValue);
251
- }
252
- }
253
- }, []);
254
- const focusToCalendar = () => {
255
- if (calRef.current) {
256
- const currentFocusable = calRef.current.querySelectorAll('[tabindex = "0"]')[0];
257
- if (currentFocusable) {
258
- currentFocusable.focus();
259
- }
260
- }
261
- };
262
- const handleInputKeyDown = (ev) => {
263
- switch (ev.key) {
264
- case "Tab":
265
- setOpen(false);
266
- break;
267
- case "ArrowDown":
268
- if (!open) {
269
- setOpen(true);
270
- setTimeout(focusToCalendar, 100);
271
- } else {
272
- focusToCalendar();
273
- }
274
- }
275
- };
276
- const handleInputChange = (ev) => {
277
- if (range) {
278
- const parts = ev.target.value.split(RANGE_DIVIDER);
279
- if (parts.length !== 2) return;
280
- const startDate = DateTime.fromFormat(parts[0], format, {
281
- zone: defaultTimeZone
282
- }).startOf("day");
283
- const endDate = DateTime.fromFormat(parts[1], format, {
284
- zone: defaultTimeZone
285
- }).startOf("day");
286
- const returnValue = {
287
- start: {
288
- value: parts[0],
289
- date: toDateString(startDate),
290
- isValid: startDate.isValid && isValidDate(
291
- startDate,
292
- minDate,
293
- maxDate,
294
- new Set(unavailableDates || unavailable?.dates),
295
- {
296
- dates: new Set(unavailable?.dates),
297
- daysOfWeek: new Set(unavailable?.daysOfWeek)
298
- },
299
- defaultTimeZone
300
- )
301
- },
302
- end: {
303
- value: parts[1],
304
- date: toDateString(endDate),
305
- isValid: startDate.isValid && isValidDate(
306
- endDate,
307
- minDate,
308
- maxDate,
309
- new Set(unavailableDates || unavailable?.dates),
310
- {
311
- dates: new Set(unavailable?.dates),
312
- daysOfWeek: new Set(unavailable?.daysOfWeek)
313
- },
314
- defaultTimeZone
315
- )
316
- },
317
- value: ev.target.value
318
- };
319
- if (!inputValue) {
320
- setInternalValue(returnValue);
321
- }
322
- onChange?.(ev, returnValue);
323
- } else {
324
- if (ev.target.value === internalValue?.date) return;
325
- const inputDate = DateTime.fromFormat(ev.target.value, format, {
326
- zone: defaultTimeZone
327
- }).startOf("day");
328
- const returnValue = {
329
- value: ev.target.value,
330
- date: toDateString(inputDate),
331
- isValid: inputDate.isValid && isValidDate(
332
- inputDate,
333
- minDate,
334
- maxDate,
335
- new Set(unavailableDates || unavailable?.dates),
336
- {
337
- dates: new Set(unavailable?.dates),
338
- daysOfWeek: new Set(unavailable?.daysOfWeek)
339
- },
340
- defaultTimeZone
341
- )
342
- };
343
- if (!inputValue) {
344
- setInternalValue(returnValue);
345
- }
346
- onChange?.(ev, returnValue);
347
- }
348
- };
349
- const handleInputBlur = (ev) => {
350
- if (isClickOutside.current) {
351
- isClickOutside.current = false;
352
- return;
353
- }
354
- if (!calRef.current?.contains(ev.relatedTarget)) {
355
- setOpen(false);
356
- onBlur?.(ev);
357
- }
358
- };
359
- const handleCalendarKeyDown = (ev) => {
360
- switch (ev.key) {
361
- case "Escape":
362
- setDisableFocusLock(true);
363
- inputRef.current?.focus();
364
- break;
365
- }
366
- };
367
- const handleCalendarBlur = (ev) => {
368
- if (!(inputRef.current === ev.currentTarget || calRef.current === ev.currentTarget)) {
369
- setOpen(false);
370
- onBlur?.(ev);
371
- }
372
- if (!(calRef.current === ev.currentTarget)) {
373
- setDisableFocusLock(true);
374
- }
375
- };
376
- const handleCalendarFocus = (ev) => {
377
- disableFocusLock && setDisableFocusLock(false);
378
- };
379
- const handleCalendarSelection = (data) => {
380
- if (range) {
381
- const calSelectData = data;
382
- const startVal = DateTime.fromISO(calSelectData?.value?.start || "", {
383
- zone: defaultTimeZone
384
- });
385
- const endVal = DateTime.fromISO(calSelectData?.value?.end || "", {
386
- zone: defaultTimeZone
387
- });
388
- let newValue = "";
389
- const newInternalValue = { value: "" };
390
- if (startVal.isValid) {
391
- newInternalValue.start = {
392
- value: startVal.toFormat(format),
393
- date: calSelectData?.value?.start,
394
- isValid: true
395
- };
396
- newValue += startVal.toFormat(format);
397
- } else {
398
- newValue += formatMask;
399
- }
400
- newValue += RANGE_DIVIDER;
401
- if (endVal.isValid) {
402
- newInternalValue.end = {
403
- value: endVal.toFormat(format),
404
- date: calSelectData?.value?.end,
405
- isValid: true
406
- };
407
- newValue += endVal.toFormat(format);
408
- } else {
409
- newValue += formatMask;
410
- }
411
- if (typeof inputValue !== "string") {
412
- setInternalValue(newInternalValue);
413
- }
414
- newInternalValue.value = newValue;
415
- const event = {
416
- target: {
417
- value: newValue
418
- }
419
- };
420
- onChange?.(event, newInternalValue);
421
- } else {
422
- const calSelectData = data;
423
- const val = DateTime.fromISO(calSelectData.value || "", {
424
- zone: defaultTimeZone
425
- });
426
- const newValue = val.toFormat(format);
427
- const newInternalValue = {
428
- value: newValue,
429
- date: calSelectData.value,
430
- isValid: val.isValid && isValidDate(
431
- val,
432
- minDate,
433
- maxDate,
434
- new Set(unavailableDates || unavailable?.dates),
435
- {
436
- dates: new Set(unavailable?.dates),
437
- daysOfWeek: new Set(unavailable?.daysOfWeek)
438
- },
439
- defaultTimeZone
440
- )
441
- };
442
- if (typeof inputValue !== "string") {
443
- setInternalValue(newInternalValue);
444
- }
445
- const event = {
446
- target: {
447
- value: newValue
448
- }
449
- };
450
- onChange?.(event, newInternalValue);
451
- }
452
- };
453
- const handleInputFocus = (ev) => {
454
- if (!open) {
455
- setOpen(true);
456
- onFocus?.(ev);
457
- }
458
- };
459
- const [popoverRef, setPopoverRef] = useState();
460
- const combinedRef = useMergeRefs([popoverRef, inputRef]);
461
- return /* @__PURE__ */ jsxs(
462
- Popover,
463
- {
464
- open: openCalendar || open,
465
- modal: true,
466
- placement: "bottom-start",
467
- disableTriggerFocus: true,
468
- disableFocusLock,
469
- children: [
470
- /* @__PURE__ */ jsx(Popover.Trigger, { children: ({ ref: iRef, ...props }) => {
471
- setPopoverRef(iRef);
472
- return /* @__PURE__ */ jsx(Fragment, { children: /* @__PURE__ */ jsx(
473
- InputMask,
474
- {
475
- mask,
476
- inputProps: {
477
- onKeyDown: handleInputKeyDown,
478
- onBlur: handleInputBlur,
479
- onChange: handleInputChange,
480
- onFocus: handleInputFocus
481
- },
482
- value: internalValue?.value || "",
483
- ...props,
484
- ref: combinedRef,
485
- children: /* @__PURE__ */ jsx(
486
- TextField,
487
- {
488
- hint,
489
- ref,
490
- prefix: /* @__PURE__ */ jsx(Icon, { svg: SvgEvent, ref: iconRef }),
491
- ...inputProps,
492
- required
493
- }
494
- )
495
- }
496
- ) });
497
- } }),
498
- /* @__PURE__ */ jsx(Popover.Content, { ref: floatRef, children: !range ? /* @__PURE__ */ jsx(
499
- Calendar,
500
- {
501
- ref: calRef,
502
- onKeyDown: handleCalendarKeyDown,
503
- defaultFocusedDate: internalValue?.date,
504
- value: internalValue?.date || undefined,
505
- locale,
506
- onBlur: handleCalendarBlur,
507
- onSelection: handleCalendarSelection,
508
- onFocus: handleCalendarFocus,
509
- minDate,
510
- maxDate,
511
- unavailableDates,
512
- unavailable,
513
- defaultTimeZone,
514
- startDay
515
- }
516
- ) : /* @__PURE__ */ jsx(
517
- Calendar,
518
- {
519
- ref: calRef,
520
- onKeyDown: handleCalendarKeyDown,
521
- defaultFocusedDate: internalValue?.start?.date,
522
- value: internalValue ? {
523
- start: internalValue?.start?.date || undefined,
524
- end: internalValue?.end?.date || undefined
525
- } : undefined,
526
- locale,
527
- onBlur: handleCalendarBlur,
528
- onSelection: handleCalendarSelection,
529
- onFocus: handleCalendarFocus,
530
- minDate,
531
- maxDate,
532
- unavailableDates,
533
- unavailable,
534
- defaultTimeZone,
535
- startDay,
536
- range: true
537
- }
538
- ) })
539
- ]
540
- }
541
- );
542
- }
543
- );
544
- DateField$1.displayName = "DateField";
545
-
546
- const DateField = forwardRef(
547
- (props, ref) => {
548
- const data = {
549
- label: childrenToString(props.label),
550
- labelProps: props.labelProps,
551
- description: childrenToString(props.description),
552
- size: props.size,
553
- type: props.type
554
- };
555
- const trackingId = useTrackingId({
556
- name: "DateField",
557
- data,
558
- hasOverride: !!props["data-tracking-id"]
559
- });
560
- return /* @__PURE__ */ jsx(DateField$1, { ref, "data-tracking-id": trackingId, ...props });
561
- }
562
- );
563
-
564
- export { DateField as D };
565
- //# sourceMappingURL=DateField-DocC46Mw.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"DateField-DocC46Mw.js","sources":["../../hammer-icon/mdi/round/event.svg","../../hammer-react/dist/DateField-D0EiLbSf.js","../src/components/DateField/DateField.tsx"],"sourcesContent":["import * as React from \"react\";\nconst SvgEvent = (props) => /* @__PURE__ */ React.createElement(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", width: \"1em\", height: \"1em\", viewBox: \"0 0 24 24\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M16 13h-3c-.55 0-1 .45-1 1v3c0 .55.45 1 1 1h3c.55 0 1-.45 1-1v-3c0-.55-.45-1-1-1zm0-10v1H8V3c0-.55-.45-1-1-1s-1 .45-1 1v1H5c-1.11 0-1.99.9-1.99 2L3 20a2 2 0 0 0 2 2h14c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2h-1V3c0-.55-.45-1-1-1s-1 .45-1 1zm2 17H6c-.55 0-1-.45-1-1V9h14v10c0 .55-.45 1-1 1z\" }));\nexport default SvgEvent;\n","import { jsxs, jsx, Fragment } from 'react/jsx-runtime';\nimport { forwardRef, useState, useRef, useMemo, useEffect } from 'react';\nimport { I as InputMask } from './InputMask-DQXw5qvG.js';\nimport { T as TextField } from './TextField-D53XNiCi.js';\nimport { P as Popover } from './Popover-QKZtjN4_.js';\nimport { t as toDateString, i as isValidDate, C as Calendar } from './Calendar-9iYMS0Iw.js';\nimport { I as Icon } from './Icon-DbHA5GV1.js';\nimport Event from '@servicetitan/hammer-icon/mdi/round/event.svg';\nimport { DateTime } from 'luxon';\nimport { u as useMergeRefs } from './useMergeRefs-Bde85AWI.js';\n\nconst RANGE_DIVIDER = \" — \";\nconst DateField = forwardRef(\n ({\n // DateField\n openCalendar,\n onFocus,\n onBlur,\n onChange,\n format = \"MM/dd/yyyy\",\n disableHint,\n // Calendar\n minDate,\n maxDate,\n unavailableDates,\n unavailable,\n startDay,\n defaultValue,\n value: inputValue,\n // Shared\n locale = Intl.DateTimeFormat().resolvedOptions().locale,\n defaultTimeZone = Intl.DateTimeFormat().resolvedOptions().timeZone,\n range,\n // Input\n required,\n ...inputProps\n }, ref) => {\n const [open, setOpen] = useState(openCalendar || false);\n const [internalValue, setInternalValue] = useState();\n const [disableFocusLock, setDisableFocusLock] = useState(true);\n const inputRef = useRef(null);\n const calRef = useRef(null);\n const iconRef = useRef(null);\n const docRef = useRef(null);\n const floatRef = useRef(null);\n const isClickOutside = useRef(false);\n const formatMask = format.replace(/[^/]/g, \"_\");\n const hint = useMemo(\n () => disableHint ? undefined : `format: ${format.replace(/M/g, \"m\")}`,\n [format, disableHint]\n );\n useEffect(() => {\n if (!docRef.current) {\n if (document != null) {\n docRef.current = document;\n return;\n }\n const doc = inputRef.current?.closest(\"body\")?.ownerDocument;\n doc && (docRef.current = doc);\n if (docRef.current == null && inputRef.current?.parentNode != null) {\n let node = inputRef.current?.parentNode;\n while (node.parentNode != null) {\n node = node.parentNode;\n }\n docRef.current = node;\n }\n }\n const clickOutHandler = (ev) => {\n const realTarget = ev.composedPath()[0];\n if (!floatRef.current?.contains(realTarget) && !iconRef.current?.contains(realTarget) && inputRef.current !== realTarget) {\n setOpen(false);\n setDisableFocusLock(true);\n onBlur?.(ev);\n }\n };\n if (open) {\n docRef.current?.addEventListener(\"click\", clickOutHandler);\n } else {\n docRef.current?.removeEventListener(\"click\", clickOutHandler);\n }\n return () => {\n docRef.current?.removeEventListener(\"click\", clickOutHandler);\n };\n }, [open, onBlur]);\n useEffect(() => {\n if (range) {\n let start;\n let end;\n if (typeof inputValue === \"string\") {\n const parts = inputValue.split(RANGE_DIVIDER);\n start = parts[0];\n end = parts[1];\n } else {\n start = inputValue?.start ?? \"\";\n end = inputValue?.end ?? \"\";\n }\n const startDate = DateTime.fromFormat(start ?? \"\", format, {\n zone: defaultTimeZone\n }).startOf(\"day\");\n const endDate = DateTime.fromFormat(end ?? \"\", format, {\n zone: defaultTimeZone\n }).startOf(\"day\");\n const newData = {\n start: {\n value: start,\n date: toDateString(startDate),\n isValid: startDate.isValid && isValidDate(\n startDate,\n minDate,\n maxDate,\n new Set(unavailableDates || unavailable?.dates),\n {\n dates: new Set(unavailable?.dates),\n daysOfWeek: new Set(unavailable?.daysOfWeek)\n },\n defaultTimeZone\n )\n },\n end: {\n value: end,\n date: toDateString(endDate),\n isValid: startDate.isValid && isValidDate(\n endDate,\n minDate,\n maxDate,\n new Set(unavailableDates || unavailable?.dates),\n {\n dates: new Set(unavailable?.dates),\n daysOfWeek: new Set(unavailable?.daysOfWeek)\n },\n defaultTimeZone\n )\n },\n value: `${start || formatMask}${RANGE_DIVIDER}${end || formatMask}`\n };\n setInternalValue(newData);\n } else {\n if (typeof inputValue !== \"string\") return;\n const inputDate = DateTime.fromFormat(inputValue, format, {\n zone: defaultTimeZone\n }).startOf(\"day\");\n const newData = {\n value: inputValue,\n date: toDateString(inputDate),\n isValid: inputDate.isValid && isValidDate(\n inputDate,\n minDate,\n maxDate,\n new Set(unavailableDates || unavailable?.dates),\n {\n dates: new Set(unavailable?.dates),\n daysOfWeek: new Set(unavailable?.daysOfWeek)\n },\n defaultTimeZone\n )\n };\n setInternalValue(newData);\n }\n }, [inputValue]);\n const mask = useMemo(() => {\n const maskPart = format.replace(/[Mdy]/g, \"9\");\n if (range) {\n return maskPart + RANGE_DIVIDER + maskPart;\n } else {\n return maskPart;\n }\n }, [format, range]);\n useEffect(() => {\n if (typeof inputValue === \"string\") return;\n if (defaultValue) {\n if (range) {\n const defValStart = defaultValue.start;\n const defValEnd = defaultValue.end;\n const initValStart = defValStart + (formatMask + RANGE_DIVIDER + formatMask).slice(\n defValStart?.length\n );\n const initValEnd = defValEnd + (formatMask + RANGE_DIVIDER + formatMask).slice(defValEnd?.length);\n const newValue = initValStart + RANGE_DIVIDER + initValEnd;\n const inputDateStart = DateTime.fromFormat(\n defValStart || \"\",\n format,\n {\n zone: defaultTimeZone\n }\n ).startOf(\"day\");\n const inputDateEnd = DateTime.fromFormat(defValEnd || \"\", format, {\n zone: defaultTimeZone\n }).startOf(\"day\");\n const isValidStart = inputDateStart.isValid && isValidDate(\n inputDateStart,\n minDate,\n maxDate,\n new Set(unavailableDates || unavailable?.dates),\n {\n dates: new Set(unavailable?.dates),\n daysOfWeek: new Set(unavailable?.daysOfWeek)\n },\n defaultTimeZone\n );\n const isValidEnd = inputDateEnd.isValid && isValidDate(\n inputDateEnd,\n minDate,\n maxDate,\n new Set(unavailableDates || unavailable?.dates),\n {\n dates: new Set(unavailable?.dates),\n daysOfWeek: new Set(unavailable?.daysOfWeek)\n },\n defaultTimeZone\n );\n const initCalendarValue = {\n start: {\n value: initValStart,\n date: toDateString(inputDateStart),\n isValid: isValidStart\n },\n end: {\n value: initValEnd,\n date: toDateString(inputDateEnd),\n isValid: isValidEnd\n },\n value: newValue\n };\n setInternalValue(initCalendarValue);\n } else {\n const defVal = defaultValue;\n const initVal = defVal + formatMask.slice(defVal.length);\n const inputDate = DateTime.fromFormat(defVal, format, {\n zone: defaultTimeZone\n }).startOf(\"day\");\n const isValid = inputDate.isValid && isValidDate(\n inputDate,\n minDate,\n maxDate,\n new Set(unavailableDates || unavailable?.dates),\n {\n dates: new Set(unavailable?.dates),\n daysOfWeek: new Set(unavailable?.daysOfWeek)\n },\n defaultTimeZone\n );\n const initCalendarValue = {\n value: initVal,\n date: toDateString(inputDate),\n isValid\n };\n setInternalValue(initCalendarValue);\n }\n }\n }, []);\n const focusToCalendar = () => {\n if (calRef.current) {\n const currentFocusable = calRef.current.querySelectorAll('[tabindex = \"0\"]')[0];\n if (currentFocusable) {\n currentFocusable.focus();\n }\n }\n };\n const handleInputKeyDown = (ev) => {\n switch (ev.key) {\n case \"Tab\":\n setOpen(false);\n break;\n case \"ArrowDown\":\n if (!open) {\n setOpen(true);\n setTimeout(focusToCalendar, 100);\n } else {\n focusToCalendar();\n }\n }\n };\n const handleInputChange = (ev) => {\n if (range) {\n const parts = ev.target.value.split(RANGE_DIVIDER);\n if (parts.length !== 2) return;\n const startDate = DateTime.fromFormat(parts[0], format, {\n zone: defaultTimeZone\n }).startOf(\"day\");\n const endDate = DateTime.fromFormat(parts[1], format, {\n zone: defaultTimeZone\n }).startOf(\"day\");\n const returnValue = {\n start: {\n value: parts[0],\n date: toDateString(startDate),\n isValid: startDate.isValid && isValidDate(\n startDate,\n minDate,\n maxDate,\n new Set(unavailableDates || unavailable?.dates),\n {\n dates: new Set(unavailable?.dates),\n daysOfWeek: new Set(unavailable?.daysOfWeek)\n },\n defaultTimeZone\n )\n },\n end: {\n value: parts[1],\n date: toDateString(endDate),\n isValid: startDate.isValid && isValidDate(\n endDate,\n minDate,\n maxDate,\n new Set(unavailableDates || unavailable?.dates),\n {\n dates: new Set(unavailable?.dates),\n daysOfWeek: new Set(unavailable?.daysOfWeek)\n },\n defaultTimeZone\n )\n },\n value: ev.target.value\n };\n if (!inputValue) {\n setInternalValue(returnValue);\n }\n onChange?.(ev, returnValue);\n } else {\n if (ev.target.value === internalValue?.date) return;\n const inputDate = DateTime.fromFormat(ev.target.value, format, {\n zone: defaultTimeZone\n }).startOf(\"day\");\n const returnValue = {\n value: ev.target.value,\n date: toDateString(inputDate),\n isValid: inputDate.isValid && isValidDate(\n inputDate,\n minDate,\n maxDate,\n new Set(unavailableDates || unavailable?.dates),\n {\n dates: new Set(unavailable?.dates),\n daysOfWeek: new Set(unavailable?.daysOfWeek)\n },\n defaultTimeZone\n )\n };\n if (!inputValue) {\n setInternalValue(returnValue);\n }\n onChange?.(ev, returnValue);\n }\n };\n const handleInputBlur = (ev) => {\n if (isClickOutside.current) {\n isClickOutside.current = false;\n return;\n }\n if (!calRef.current?.contains(ev.relatedTarget)) {\n setOpen(false);\n onBlur?.(ev);\n }\n };\n const handleCalendarKeyDown = (ev) => {\n switch (ev.key) {\n case \"Escape\":\n setDisableFocusLock(true);\n inputRef.current?.focus();\n break;\n }\n };\n const handleCalendarBlur = (ev) => {\n if (!(inputRef.current === ev.currentTarget || calRef.current === ev.currentTarget)) {\n setOpen(false);\n onBlur?.(ev);\n }\n if (!(calRef.current === ev.currentTarget)) {\n setDisableFocusLock(true);\n }\n };\n const handleCalendarFocus = (ev) => {\n disableFocusLock && setDisableFocusLock(false);\n };\n const handleCalendarSelection = (data) => {\n if (range) {\n const calSelectData = data;\n const startVal = DateTime.fromISO(calSelectData?.value?.start || \"\", {\n zone: defaultTimeZone\n });\n const endVal = DateTime.fromISO(calSelectData?.value?.end || \"\", {\n zone: defaultTimeZone\n });\n let newValue = \"\";\n const newInternalValue = { value: \"\" };\n if (startVal.isValid) {\n newInternalValue.start = {\n value: startVal.toFormat(format),\n date: calSelectData?.value?.start,\n isValid: true\n };\n newValue += startVal.toFormat(format);\n } else {\n newValue += formatMask;\n }\n newValue += RANGE_DIVIDER;\n if (endVal.isValid) {\n newInternalValue.end = {\n value: endVal.toFormat(format),\n date: calSelectData?.value?.end,\n isValid: true\n };\n newValue += endVal.toFormat(format);\n } else {\n newValue += formatMask;\n }\n if (typeof inputValue !== \"string\") {\n setInternalValue(newInternalValue);\n }\n newInternalValue.value = newValue;\n const event = {\n target: {\n value: newValue\n }\n };\n onChange?.(event, newInternalValue);\n } else {\n const calSelectData = data;\n const val = DateTime.fromISO(calSelectData.value || \"\", {\n zone: defaultTimeZone\n });\n const newValue = val.toFormat(format);\n const newInternalValue = {\n value: newValue,\n date: calSelectData.value,\n isValid: val.isValid && isValidDate(\n val,\n minDate,\n maxDate,\n new Set(unavailableDates || unavailable?.dates),\n {\n dates: new Set(unavailable?.dates),\n daysOfWeek: new Set(unavailable?.daysOfWeek)\n },\n defaultTimeZone\n )\n };\n if (typeof inputValue !== \"string\") {\n setInternalValue(newInternalValue);\n }\n const event = {\n target: {\n value: newValue\n }\n };\n onChange?.(event, newInternalValue);\n }\n };\n const handleInputFocus = (ev) => {\n if (!open) {\n setOpen(true);\n onFocus?.(ev);\n }\n };\n const [popoverRef, setPopoverRef] = useState();\n const combinedRef = useMergeRefs([popoverRef, inputRef]);\n return /* @__PURE__ */ jsxs(\n Popover,\n {\n open: openCalendar || open,\n modal: true,\n placement: \"bottom-start\",\n disableTriggerFocus: true,\n disableFocusLock,\n children: [\n /* @__PURE__ */ jsx(Popover.Trigger, { children: ({ ref: iRef, ...props }) => {\n setPopoverRef(iRef);\n return /* @__PURE__ */ jsx(Fragment, { children: /* @__PURE__ */ jsx(\n InputMask,\n {\n mask,\n inputProps: {\n onKeyDown: handleInputKeyDown,\n onBlur: handleInputBlur,\n onChange: handleInputChange,\n onFocus: handleInputFocus\n },\n value: internalValue?.value || \"\",\n ...props,\n ref: combinedRef,\n children: /* @__PURE__ */ jsx(\n TextField,\n {\n hint,\n ref,\n prefix: /* @__PURE__ */ jsx(Icon, { svg: Event, ref: iconRef }),\n ...inputProps,\n required\n }\n )\n }\n ) });\n } }),\n /* @__PURE__ */ jsx(Popover.Content, { ref: floatRef, children: !range ? /* @__PURE__ */ jsx(\n Calendar,\n {\n ref: calRef,\n onKeyDown: handleCalendarKeyDown,\n defaultFocusedDate: internalValue?.date,\n value: internalValue?.date || undefined,\n locale,\n onBlur: handleCalendarBlur,\n onSelection: handleCalendarSelection,\n onFocus: handleCalendarFocus,\n minDate,\n maxDate,\n unavailableDates,\n unavailable,\n defaultTimeZone,\n startDay\n }\n ) : /* @__PURE__ */ jsx(\n Calendar,\n {\n ref: calRef,\n onKeyDown: handleCalendarKeyDown,\n defaultFocusedDate: internalValue?.start?.date,\n value: internalValue ? {\n start: internalValue?.start?.date || undefined,\n end: internalValue?.end?.date || undefined\n } : undefined,\n locale,\n onBlur: handleCalendarBlur,\n onSelection: handleCalendarSelection,\n onFocus: handleCalendarFocus,\n minDate,\n maxDate,\n unavailableDates,\n unavailable,\n defaultTimeZone,\n startDay,\n range: true\n }\n ) })\n ]\n }\n );\n }\n);\nDateField.displayName = \"DateField\";\n\nexport { DateField as D };\n//# sourceMappingURL=DateField-D0EiLbSf.js.map\n","import {\n DateFieldProps as CoreDateFieldProps,\n DateField as CoreDateField,\n childrenToString,\n} from \"@servicetitan/hammer-react\";\nimport { Ref, forwardRef } from \"react\";\nimport { useTrackingId } from \"../../hooks/useTrackingId\";\n\nexport type DateFieldProps = CoreDateFieldProps & {\n [\"data-tracking-id\"]?: string;\n};\n\nexport const DateField = forwardRef(\n (props: DateFieldProps, ref: Ref<HTMLInputElement>) => {\n const data = {\n label: childrenToString(props.label),\n labelProps: props.labelProps,\n description: childrenToString(props.description),\n size: props.size,\n type: props.type,\n };\n\n const trackingId = useTrackingId({\n name: \"DateField\",\n data,\n hasOverride: !!props[\"data-tracking-id\"],\n });\n return <CoreDateField ref={ref} data-tracking-id={trackingId} {...props} />;\n },\n);\n"],"names":["DateField","Event","CoreDateField"],"mappings":"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"}