wcz-test 6.7.5 → 6.7.7
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.
- package/dist/Approval-CWQn-kah.d.cts +284 -0
- package/dist/FileMeta-CC014fnB.d.cts +18 -0
- package/dist/client-utils.cjs +118 -0
- package/dist/client-utils.cjs.map +1 -0
- package/dist/client-utils.d.cts +704 -0
- package/dist/client-utils.d.ts +28 -30
- package/dist/components.cjs +802 -0
- package/dist/components.cjs.map +1 -0
- package/dist/components.d.cts +89 -0
- package/dist/hooks.cjs +534 -0
- package/dist/hooks.cjs.map +1 -0
- package/dist/hooks.d.cts +160 -0
- package/dist/index.cjs +3373 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +36 -0
- package/dist/models.cjs +330 -0
- package/dist/models.cjs.map +1 -0
- package/dist/models.d.cts +161 -0
- package/dist/queries.cjs +706 -0
- package/dist/queries.cjs.map +1 -0
- package/dist/queries.d.cts +1585 -0
- package/dist/server-utils.cjs +145 -0
- package/dist/server-utils.cjs.map +1 -0
- package/dist/server-utils.d.cts +36 -0
- package/dist/utils-ChipkRJ9.d.cts +49 -0
- package/dist/utils.cjs +81 -0
- package/dist/utils.cjs.map +1 -0
- package/dist/utils.d.cts +4 -0
- package/dist/vite.cjs +94 -0
- package/dist/vite.cjs.map +1 -0
- package/dist/vite.d.cts +5 -0
- package/package.json +20 -11
package/dist/hooks.cjs
ADDED
|
@@ -0,0 +1,534 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __create = Object.create;
|
|
3
|
+
var __defProp = Object.defineProperty;
|
|
4
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
7
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
+
var __export = (target, all) => {
|
|
9
|
+
for (var name in all)
|
|
10
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
11
|
+
};
|
|
12
|
+
var __copyProps = (to, from, except, desc) => {
|
|
13
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
14
|
+
for (let key of __getOwnPropNames(from))
|
|
15
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
16
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
17
|
+
}
|
|
18
|
+
return to;
|
|
19
|
+
};
|
|
20
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
21
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
22
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
23
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
24
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
25
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
26
|
+
mod
|
|
27
|
+
));
|
|
28
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
29
|
+
|
|
30
|
+
// src/hooks.ts
|
|
31
|
+
var hooks_exports = {};
|
|
32
|
+
__export(hooks_exports, {
|
|
33
|
+
useDialogs: () => useDialogs,
|
|
34
|
+
useFieldContext: () => useFieldContext,
|
|
35
|
+
useFormContext: () => useFormContext,
|
|
36
|
+
useInView: () => import_react_intersection_observer.useInView,
|
|
37
|
+
useLayoutForm: () => useLayoutForm,
|
|
38
|
+
withLayoutForm: () => withLayoutForm
|
|
39
|
+
});
|
|
40
|
+
module.exports = __toCommonJS(hooks_exports);
|
|
41
|
+
|
|
42
|
+
// src/hooks/FormHooks.ts
|
|
43
|
+
var import_react_form = require("@tanstack/react-form");
|
|
44
|
+
|
|
45
|
+
// src/components/form/FormAutocomplete.tsx
|
|
46
|
+
var import_material = require("@mui/material");
|
|
47
|
+
|
|
48
|
+
// src/lib/utils.ts
|
|
49
|
+
var import_axios = __toESM(require("axios"), 1);
|
|
50
|
+
|
|
51
|
+
// src/env.ts
|
|
52
|
+
var import_env_core = require("@t3-oss/env-core");
|
|
53
|
+
var import_zod = require("zod");
|
|
54
|
+
var import_meta = {};
|
|
55
|
+
var clientEnv = (0, import_env_core.createEnv)({
|
|
56
|
+
clientPrefix: "VITE_",
|
|
57
|
+
client: {
|
|
58
|
+
VITE_APP_TITLE: import_zod.z.string(),
|
|
59
|
+
VITE_MUI_LICENSE_KEY: import_zod.z.string(),
|
|
60
|
+
VITE_API_URL: import_zod.z.url()
|
|
61
|
+
},
|
|
62
|
+
runtimeEnv: import_meta.env,
|
|
63
|
+
emptyStringAsUndefined: true
|
|
64
|
+
});
|
|
65
|
+
var serverEnv = (0, import_env_core.createEnv)({
|
|
66
|
+
server: {
|
|
67
|
+
DATABASE_URL: import_zod.z.string(),
|
|
68
|
+
MICROSOFT_CLIENT_ID: import_zod.z.string(),
|
|
69
|
+
MICROSOFT_CLIENT_SECRET: import_zod.z.string()
|
|
70
|
+
},
|
|
71
|
+
runtimeEnv: process.env,
|
|
72
|
+
emptyStringAsUndefined: true
|
|
73
|
+
});
|
|
74
|
+
|
|
75
|
+
// src/lib/utils.ts
|
|
76
|
+
var httpClient = import_axios.default.create({
|
|
77
|
+
baseURL: clientEnv.VITE_API_URL
|
|
78
|
+
// TODO: Not working in children projects
|
|
79
|
+
});
|
|
80
|
+
var getFieldStatus = (field) => {
|
|
81
|
+
const { meta } = field.state;
|
|
82
|
+
const isTouched = meta.isTouched;
|
|
83
|
+
const hasError = !!meta.errors.length;
|
|
84
|
+
const helperText = meta.errors[0]?.message;
|
|
85
|
+
return { isTouched, hasError, helperText };
|
|
86
|
+
};
|
|
87
|
+
|
|
88
|
+
// src/components/form/FormAutocomplete.tsx
|
|
89
|
+
var import_jsx_runtime = require("react/jsx-runtime");
|
|
90
|
+
var FormAutocomplete = ({ textFieldProps, ...autocompleteProps }) => {
|
|
91
|
+
const field = useFieldContext();
|
|
92
|
+
const { isTouched, hasError, helperText } = getFieldStatus(field);
|
|
93
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
94
|
+
import_material.Autocomplete,
|
|
95
|
+
{
|
|
96
|
+
value: field.state.value,
|
|
97
|
+
onChange: (_, value) => !autocompleteProps.freeSolo && field.handleChange(value),
|
|
98
|
+
onInputChange: (_, value, reason) => reason !== "reset" && autocompleteProps.freeSolo && field.handleChange(value),
|
|
99
|
+
onBlur: field.handleBlur,
|
|
100
|
+
"aria-label": field.name,
|
|
101
|
+
...autocompleteProps,
|
|
102
|
+
renderInput: (parameters) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
103
|
+
import_material.TextField,
|
|
104
|
+
{
|
|
105
|
+
...parameters,
|
|
106
|
+
name: field.name,
|
|
107
|
+
error: isTouched && hasError,
|
|
108
|
+
helperText: isTouched && helperText,
|
|
109
|
+
...textFieldProps
|
|
110
|
+
}
|
|
111
|
+
)
|
|
112
|
+
}
|
|
113
|
+
);
|
|
114
|
+
};
|
|
115
|
+
|
|
116
|
+
// src/components/form/FormCheckbox.tsx
|
|
117
|
+
var import_material2 = require("@mui/material");
|
|
118
|
+
var import_jsx_runtime2 = require("react/jsx-runtime");
|
|
119
|
+
var FormCheckbox = (props) => {
|
|
120
|
+
const field = useFieldContext();
|
|
121
|
+
const { isTouched, hasError, helperText } = getFieldStatus(field);
|
|
122
|
+
return /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)(import_material2.FormControl, { component: "fieldset", children: [
|
|
123
|
+
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
|
|
124
|
+
import_material2.FormControlLabel,
|
|
125
|
+
{
|
|
126
|
+
control: /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
|
|
127
|
+
import_material2.Checkbox,
|
|
128
|
+
{
|
|
129
|
+
name: field.name,
|
|
130
|
+
checked: Boolean(field.state.value),
|
|
131
|
+
onChange: (event) => field.handleChange(event.target.checked),
|
|
132
|
+
onBlur: field.handleBlur,
|
|
133
|
+
"aria-label": field.name,
|
|
134
|
+
...props
|
|
135
|
+
}
|
|
136
|
+
),
|
|
137
|
+
label: props.label ?? ""
|
|
138
|
+
}
|
|
139
|
+
),
|
|
140
|
+
isTouched && hasError && /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(import_material2.FormHelperText, { error: hasError, children: helperText })
|
|
141
|
+
] });
|
|
142
|
+
};
|
|
143
|
+
|
|
144
|
+
// src/components/form/FormDatePicker.tsx
|
|
145
|
+
var import_x_date_pickers_pro = require("@mui/x-date-pickers-pro");
|
|
146
|
+
var import_jsx_runtime3 = require("react/jsx-runtime");
|
|
147
|
+
var FormDatePicker = (props) => {
|
|
148
|
+
const field = useFieldContext();
|
|
149
|
+
const { isTouched, hasError, helperText } = getFieldStatus(field);
|
|
150
|
+
return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
|
|
151
|
+
import_x_date_pickers_pro.DatePicker,
|
|
152
|
+
{
|
|
153
|
+
name: field.name,
|
|
154
|
+
value: field.state.value,
|
|
155
|
+
onChange: (value) => field.handleChange(value),
|
|
156
|
+
slotProps: {
|
|
157
|
+
textField: {
|
|
158
|
+
onBlur: field.handleBlur,
|
|
159
|
+
error: isTouched && hasError,
|
|
160
|
+
helperText: isTouched && helperText,
|
|
161
|
+
...props.textFieldProps
|
|
162
|
+
},
|
|
163
|
+
...props.slotProps
|
|
164
|
+
},
|
|
165
|
+
"aria-label": field.name,
|
|
166
|
+
...props
|
|
167
|
+
}
|
|
168
|
+
);
|
|
169
|
+
};
|
|
170
|
+
|
|
171
|
+
// src/components/form/FormDateRangePicker.tsx
|
|
172
|
+
var import_x_date_pickers_pro2 = require("@mui/x-date-pickers-pro");
|
|
173
|
+
var import_jsx_runtime4 = require("react/jsx-runtime");
|
|
174
|
+
var FormDateRangePicker = (props) => {
|
|
175
|
+
const field = useFieldContext();
|
|
176
|
+
const { isTouched, hasError, helperText } = getFieldStatus(field);
|
|
177
|
+
return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
|
|
178
|
+
import_x_date_pickers_pro2.DateRangePicker,
|
|
179
|
+
{
|
|
180
|
+
name: field.name,
|
|
181
|
+
value: field.state.value,
|
|
182
|
+
onChange: (value) => field.handleChange(value),
|
|
183
|
+
slotProps: {
|
|
184
|
+
textField: {
|
|
185
|
+
onBlur: field.handleBlur,
|
|
186
|
+
error: isTouched && hasError,
|
|
187
|
+
helperText: isTouched && helperText,
|
|
188
|
+
...props.textFieldProps
|
|
189
|
+
},
|
|
190
|
+
...props.slotProps
|
|
191
|
+
},
|
|
192
|
+
"aria-label": field.name,
|
|
193
|
+
...props
|
|
194
|
+
}
|
|
195
|
+
);
|
|
196
|
+
};
|
|
197
|
+
|
|
198
|
+
// src/components/form/FormTimePicker.tsx
|
|
199
|
+
var import_x_date_pickers_pro3 = require("@mui/x-date-pickers-pro");
|
|
200
|
+
var import_jsx_runtime5 = require("react/jsx-runtime");
|
|
201
|
+
var FormTimePicker = (props) => {
|
|
202
|
+
const field = useFieldContext();
|
|
203
|
+
const { isTouched, hasError, helperText } = getFieldStatus(field);
|
|
204
|
+
return /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
|
|
205
|
+
import_x_date_pickers_pro3.TimePicker,
|
|
206
|
+
{
|
|
207
|
+
name: field.name,
|
|
208
|
+
value: field.state.value,
|
|
209
|
+
onChange: (value) => field.handleChange(value),
|
|
210
|
+
slotProps: {
|
|
211
|
+
textField: {
|
|
212
|
+
onBlur: field.handleBlur,
|
|
213
|
+
error: isTouched && hasError,
|
|
214
|
+
helperText: isTouched && helperText,
|
|
215
|
+
...props.textFieldProps
|
|
216
|
+
},
|
|
217
|
+
...props.slotProps
|
|
218
|
+
},
|
|
219
|
+
"aria-label": field.name,
|
|
220
|
+
...props
|
|
221
|
+
}
|
|
222
|
+
);
|
|
223
|
+
};
|
|
224
|
+
|
|
225
|
+
// src/components/form/FormTimeRangePicker.tsx
|
|
226
|
+
var import_x_date_pickers_pro4 = require("@mui/x-date-pickers-pro");
|
|
227
|
+
var import_jsx_runtime6 = require("react/jsx-runtime");
|
|
228
|
+
var FormTimeRangePicker = (props) => {
|
|
229
|
+
const field = useFieldContext();
|
|
230
|
+
const { isTouched, hasError, helperText } = getFieldStatus(field);
|
|
231
|
+
return /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
|
|
232
|
+
import_x_date_pickers_pro4.TimeRangePicker,
|
|
233
|
+
{
|
|
234
|
+
name: field.name,
|
|
235
|
+
value: field.state.value,
|
|
236
|
+
onChange: (value) => field.handleChange(value),
|
|
237
|
+
slotProps: {
|
|
238
|
+
textField: {
|
|
239
|
+
onBlur: field.handleBlur,
|
|
240
|
+
error: isTouched && hasError,
|
|
241
|
+
helperText: isTouched && helperText,
|
|
242
|
+
...props.textFieldProps
|
|
243
|
+
},
|
|
244
|
+
...props.slotProps
|
|
245
|
+
},
|
|
246
|
+
"aria-label": field.name,
|
|
247
|
+
...props
|
|
248
|
+
}
|
|
249
|
+
);
|
|
250
|
+
};
|
|
251
|
+
|
|
252
|
+
// src/components/form/FormDateTimePicker.tsx
|
|
253
|
+
var import_x_date_pickers_pro5 = require("@mui/x-date-pickers-pro");
|
|
254
|
+
var import_jsx_runtime7 = require("react/jsx-runtime");
|
|
255
|
+
var FormDateTimePicker = (props) => {
|
|
256
|
+
const field = useFieldContext();
|
|
257
|
+
const { isTouched, hasError, helperText } = getFieldStatus(field);
|
|
258
|
+
return /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
|
|
259
|
+
import_x_date_pickers_pro5.DateTimePicker,
|
|
260
|
+
{
|
|
261
|
+
name: field.name,
|
|
262
|
+
value: field.state.value,
|
|
263
|
+
onChange: (value) => field.handleChange(value),
|
|
264
|
+
slotProps: {
|
|
265
|
+
textField: {
|
|
266
|
+
onBlur: field.handleBlur,
|
|
267
|
+
error: isTouched && hasError,
|
|
268
|
+
helperText: isTouched && helperText,
|
|
269
|
+
...props.textFieldProps
|
|
270
|
+
},
|
|
271
|
+
...props.slotProps
|
|
272
|
+
},
|
|
273
|
+
"aria-label": field.name,
|
|
274
|
+
...props
|
|
275
|
+
}
|
|
276
|
+
);
|
|
277
|
+
};
|
|
278
|
+
|
|
279
|
+
// src/components/form/FormDateTimeRangePicker.tsx
|
|
280
|
+
var import_x_date_pickers_pro6 = require("@mui/x-date-pickers-pro");
|
|
281
|
+
var import_jsx_runtime8 = require("react/jsx-runtime");
|
|
282
|
+
var FormDateTimeRangePicker = (props) => {
|
|
283
|
+
const field = useFieldContext();
|
|
284
|
+
const { isTouched, hasError, helperText } = getFieldStatus(field);
|
|
285
|
+
return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
|
|
286
|
+
import_x_date_pickers_pro6.DateTimeRangePicker,
|
|
287
|
+
{
|
|
288
|
+
name: field.name,
|
|
289
|
+
value: field.state.value,
|
|
290
|
+
onChange: (value) => field.handleChange(value),
|
|
291
|
+
slotProps: {
|
|
292
|
+
textField: {
|
|
293
|
+
onBlur: field.handleBlur,
|
|
294
|
+
error: isTouched && hasError,
|
|
295
|
+
helperText: isTouched && helperText,
|
|
296
|
+
...props.textFieldProps
|
|
297
|
+
},
|
|
298
|
+
...props.slotProps
|
|
299
|
+
},
|
|
300
|
+
"aria-label": field.name,
|
|
301
|
+
...props
|
|
302
|
+
}
|
|
303
|
+
);
|
|
304
|
+
};
|
|
305
|
+
|
|
306
|
+
// src/components/form/FormNumberField.tsx
|
|
307
|
+
var import_material3 = require("@mui/material");
|
|
308
|
+
var import_react_number_format = require("react-number-format");
|
|
309
|
+
var import_jsx_runtime9 = require("react/jsx-runtime");
|
|
310
|
+
var FormNumberField = ({ options, ...props }) => {
|
|
311
|
+
const field = useFieldContext();
|
|
312
|
+
const { isTouched, hasError, helperText } = getFieldStatus(field);
|
|
313
|
+
return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
|
|
314
|
+
import_react_number_format.NumericFormat,
|
|
315
|
+
{
|
|
316
|
+
customInput: import_material3.TextField,
|
|
317
|
+
name: field.name,
|
|
318
|
+
value: field.state.value ?? "",
|
|
319
|
+
onValueChange: ({ floatValue }) => field.handleChange(floatValue),
|
|
320
|
+
onBlur: field.handleBlur,
|
|
321
|
+
error: isTouched && hasError,
|
|
322
|
+
helperText: isTouched && helperText,
|
|
323
|
+
"aria-label": field.name,
|
|
324
|
+
...props,
|
|
325
|
+
...options
|
|
326
|
+
}
|
|
327
|
+
);
|
|
328
|
+
};
|
|
329
|
+
|
|
330
|
+
// src/components/form/FormRadioGroup.tsx
|
|
331
|
+
var import_material4 = require("@mui/material");
|
|
332
|
+
var import_jsx_runtime10 = require("react/jsx-runtime");
|
|
333
|
+
var FormRadioGroup = ({ label, options, ...props }) => {
|
|
334
|
+
const field = useFieldContext();
|
|
335
|
+
const { isTouched, hasError, helperText } = getFieldStatus(field);
|
|
336
|
+
return /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(import_material4.FormControl, { component: "fieldset", children: [
|
|
337
|
+
label && /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(import_material4.FormLabel, { component: "legend", children: label }),
|
|
338
|
+
/* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
|
|
339
|
+
import_material4.RadioGroup,
|
|
340
|
+
{
|
|
341
|
+
name: field.name,
|
|
342
|
+
value: field.state.value ?? "",
|
|
343
|
+
onChange: (event) => field.handleChange(event.target.value),
|
|
344
|
+
onBlur: field.handleBlur,
|
|
345
|
+
"aria-label": field.name,
|
|
346
|
+
...props,
|
|
347
|
+
children: options.map((option) => /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
|
|
348
|
+
import_material4.FormControlLabel,
|
|
349
|
+
{
|
|
350
|
+
value: option.value,
|
|
351
|
+
control: /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(import_material4.Radio, {}),
|
|
352
|
+
label: option.label
|
|
353
|
+
},
|
|
354
|
+
option.value
|
|
355
|
+
))
|
|
356
|
+
}
|
|
357
|
+
),
|
|
358
|
+
isTouched && hasError && /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(import_material4.FormHelperText, { error: hasError, children: helperText })
|
|
359
|
+
] });
|
|
360
|
+
};
|
|
361
|
+
|
|
362
|
+
// src/components/form/FormSlider.tsx
|
|
363
|
+
var import_material5 = require("@mui/material");
|
|
364
|
+
var import_jsx_runtime11 = require("react/jsx-runtime");
|
|
365
|
+
var FormSlider = ({ label, ...props }) => {
|
|
366
|
+
const field = useFieldContext();
|
|
367
|
+
const { isTouched, hasError, helperText } = getFieldStatus(field);
|
|
368
|
+
return /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(import_material5.FormControl, { component: "fieldset", children: [
|
|
369
|
+
label && /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(import_material5.FormLabel, { children: label }),
|
|
370
|
+
/* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
|
|
371
|
+
import_material5.Slider,
|
|
372
|
+
{
|
|
373
|
+
name: field.name,
|
|
374
|
+
value: field.state.value ?? 0,
|
|
375
|
+
onChange: (_, value) => field.handleChange(Array.isArray(value) ? value[0] : value),
|
|
376
|
+
onBlur: field.handleBlur,
|
|
377
|
+
"aria-label": field.name,
|
|
378
|
+
...props
|
|
379
|
+
}
|
|
380
|
+
),
|
|
381
|
+
isTouched && hasError && /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(import_material5.FormHelperText, { error: hasError, children: helperText })
|
|
382
|
+
] });
|
|
383
|
+
};
|
|
384
|
+
|
|
385
|
+
// src/components/form/FormSubmitButton.tsx
|
|
386
|
+
var import_material6 = require("@mui/material");
|
|
387
|
+
var import_jsx_runtime12 = require("react/jsx-runtime");
|
|
388
|
+
var FormSubmitButton = (props) => {
|
|
389
|
+
const form = useFormContext();
|
|
390
|
+
const handleClick = (event) => {
|
|
391
|
+
event.preventDefault();
|
|
392
|
+
event.stopPropagation();
|
|
393
|
+
form.handleSubmit();
|
|
394
|
+
};
|
|
395
|
+
return /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(form.Subscribe, { selector: (state) => [state.canSubmit, state.isSubmitting], children: ([canSubmit, isSubmitting]) => /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
|
|
396
|
+
import_material6.Button,
|
|
397
|
+
{
|
|
398
|
+
loading: isSubmitting,
|
|
399
|
+
disabled: !canSubmit,
|
|
400
|
+
onClick: handleClick,
|
|
401
|
+
type: "submit",
|
|
402
|
+
"aria-label": "submit",
|
|
403
|
+
...props
|
|
404
|
+
}
|
|
405
|
+
) });
|
|
406
|
+
};
|
|
407
|
+
|
|
408
|
+
// src/components/form/FormSwitch.tsx
|
|
409
|
+
var import_material7 = require("@mui/material");
|
|
410
|
+
var import_jsx_runtime13 = require("react/jsx-runtime");
|
|
411
|
+
var FormSwitch = (props) => {
|
|
412
|
+
const field = useFieldContext();
|
|
413
|
+
const { isTouched, hasError, helperText } = getFieldStatus(field);
|
|
414
|
+
return /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(import_material7.FormControl, { component: "fieldset", children: [
|
|
415
|
+
/* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
|
|
416
|
+
import_material7.FormControlLabel,
|
|
417
|
+
{
|
|
418
|
+
control: /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
|
|
419
|
+
import_material7.Switch,
|
|
420
|
+
{
|
|
421
|
+
name: field.name,
|
|
422
|
+
checked: Boolean(field.state.value),
|
|
423
|
+
onChange: (event) => field.handleChange(event.target.checked),
|
|
424
|
+
onBlur: field.handleBlur,
|
|
425
|
+
"aria-label": field.name,
|
|
426
|
+
...props
|
|
427
|
+
}
|
|
428
|
+
),
|
|
429
|
+
label: props.label ?? ""
|
|
430
|
+
}
|
|
431
|
+
),
|
|
432
|
+
isTouched && hasError && /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(import_material7.FormHelperText, { error: hasError, children: helperText })
|
|
433
|
+
] });
|
|
434
|
+
};
|
|
435
|
+
|
|
436
|
+
// src/components/form/FormTextField.tsx
|
|
437
|
+
var import_material8 = require("@mui/material");
|
|
438
|
+
var import_jsx_runtime14 = require("react/jsx-runtime");
|
|
439
|
+
var FormTextField = (props) => {
|
|
440
|
+
const field = useFieldContext();
|
|
441
|
+
const { isTouched, hasError, helperText } = getFieldStatus(field);
|
|
442
|
+
return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
|
|
443
|
+
import_material8.TextField,
|
|
444
|
+
{
|
|
445
|
+
name: field.name,
|
|
446
|
+
value: field.state.value ?? "",
|
|
447
|
+
onChange: (event) => field.handleChange(event.target.value),
|
|
448
|
+
onBlur: field.handleBlur,
|
|
449
|
+
error: isTouched && hasError,
|
|
450
|
+
helperText: isTouched && helperText,
|
|
451
|
+
"aria-label": field.name,
|
|
452
|
+
...props
|
|
453
|
+
}
|
|
454
|
+
);
|
|
455
|
+
};
|
|
456
|
+
|
|
457
|
+
// src/hooks/FormHooks.ts
|
|
458
|
+
var { fieldContext, useFieldContext, formContext, useFormContext } = (0, import_react_form.createFormHookContexts)();
|
|
459
|
+
var { useAppForm: useLayoutForm, withForm: withLayoutForm } = (0, import_react_form.createFormHook)({
|
|
460
|
+
fieldComponents: {
|
|
461
|
+
TextField: FormTextField,
|
|
462
|
+
NumberField: FormNumberField,
|
|
463
|
+
Autocomplete: FormAutocomplete,
|
|
464
|
+
Checkbox: FormCheckbox,
|
|
465
|
+
Switch: FormSwitch,
|
|
466
|
+
RadioGroup: FormRadioGroup,
|
|
467
|
+
Slider: FormSlider,
|
|
468
|
+
DatePicker: FormDatePicker,
|
|
469
|
+
DateRangePicker: FormDateRangePicker,
|
|
470
|
+
TimePicker: FormTimePicker,
|
|
471
|
+
TimeRangePicker: FormTimeRangePicker,
|
|
472
|
+
DateTimePicker: FormDateTimePicker,
|
|
473
|
+
DateTimeRangePicker: FormDateTimeRangePicker
|
|
474
|
+
},
|
|
475
|
+
formComponents: {
|
|
476
|
+
SubmitButton: FormSubmitButton
|
|
477
|
+
},
|
|
478
|
+
fieldContext,
|
|
479
|
+
formContext
|
|
480
|
+
});
|
|
481
|
+
|
|
482
|
+
// src/hooks/DialogsHooks.tsx
|
|
483
|
+
var import_material9 = require("@mui/material");
|
|
484
|
+
var import_react2 = require("react");
|
|
485
|
+
var import_react_i18next = require("react-i18next");
|
|
486
|
+
|
|
487
|
+
// src/contexts/DialogsContext.ts
|
|
488
|
+
var import_react = require("react");
|
|
489
|
+
var DialogsContext = (0, import_react.createContext)({});
|
|
490
|
+
|
|
491
|
+
// src/hooks/DialogsHooks.tsx
|
|
492
|
+
var import_jsx_runtime15 = require("react/jsx-runtime");
|
|
493
|
+
function AlertDialog({ open, payload, onClose }) {
|
|
494
|
+
const { t } = (0, import_react_i18next.useTranslation)();
|
|
495
|
+
return /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(import_material9.Dialog, { maxWidth: "xs", fullWidth: true, open, onClose: () => onClose(), disableRestoreFocus: true, children: [
|
|
496
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_material9.DialogTitle, { children: payload.title ?? t("Layout.Dialog.Alert") }),
|
|
497
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_material9.DialogContent, { children: payload.message }),
|
|
498
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_material9.DialogActions, { children: /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_material9.Button, { onClick: () => onClose(), autoFocus: true, children: t("Layout.Dialog.Confirm") }) })
|
|
499
|
+
] });
|
|
500
|
+
}
|
|
501
|
+
function ConfirmDialog({ open, payload, onClose }) {
|
|
502
|
+
const { t } = (0, import_react_i18next.useTranslation)();
|
|
503
|
+
return /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(import_material9.Dialog, { maxWidth: "xs", fullWidth: true, open, onClose: () => onClose(false), disableRestoreFocus: true, children: [
|
|
504
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_material9.DialogTitle, { children: payload.title ?? t("Layout.Dialog.Confirm") }),
|
|
505
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_material9.DialogContent, { children: payload.message }),
|
|
506
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(import_material9.DialogActions, { children: [
|
|
507
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_material9.Button, { onClick: () => onClose(false), children: payload.cancelText ?? t("Layout.Dialog.Cancel") }),
|
|
508
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_material9.Button, { onClick: () => onClose(true), autoFocus: true, children: t("Layout.Dialog.Confirm") })
|
|
509
|
+
] })
|
|
510
|
+
] });
|
|
511
|
+
}
|
|
512
|
+
function useDialogs() {
|
|
513
|
+
const { open, close } = (0, import_react2.useContext)(DialogsContext);
|
|
514
|
+
const alert = (0, import_material9.useEventCallback)(
|
|
515
|
+
(message, { ...options } = {}) => open(AlertDialog, { ...options, message })
|
|
516
|
+
);
|
|
517
|
+
const confirm = (0, import_material9.useEventCallback)(
|
|
518
|
+
(message, { ...options } = {}) => open(ConfirmDialog, { ...options, message })
|
|
519
|
+
);
|
|
520
|
+
return { alert, confirm, open, close };
|
|
521
|
+
}
|
|
522
|
+
|
|
523
|
+
// src/hooks.ts
|
|
524
|
+
var import_react_intersection_observer = require("react-intersection-observer");
|
|
525
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
526
|
+
0 && (module.exports = {
|
|
527
|
+
useDialogs,
|
|
528
|
+
useFieldContext,
|
|
529
|
+
useFormContext,
|
|
530
|
+
useInView,
|
|
531
|
+
useLayoutForm,
|
|
532
|
+
withLayoutForm
|
|
533
|
+
});
|
|
534
|
+
//# sourceMappingURL=hooks.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/hooks.ts","../src/hooks/FormHooks.ts","../src/components/form/FormAutocomplete.tsx","../src/lib/utils.ts","../src/env.ts","../src/components/form/FormCheckbox.tsx","../src/components/form/FormDatePicker.tsx","../src/components/form/FormDateRangePicker.tsx","../src/components/form/FormTimePicker.tsx","../src/components/form/FormTimeRangePicker.tsx","../src/components/form/FormDateTimePicker.tsx","../src/components/form/FormDateTimeRangePicker.tsx","../src/components/form/FormNumberField.tsx","../src/components/form/FormRadioGroup.tsx","../src/components/form/FormSlider.tsx","../src/components/form/FormSubmitButton.tsx","../src/components/form/FormSwitch.tsx","../src/components/form/FormTextField.tsx","../src/hooks/DialogsHooks.tsx","../src/contexts/DialogsContext.ts"],"sourcesContent":["export { useFieldContext, useFormContext, useLayoutForm, withLayoutForm } from \"./hooks/FormHooks\";\r\nexport { useDialogs } from \"./hooks/DialogsHooks\";\r\nexport type { DialogProps } from \"./hooks/DialogsHooks\";\r\nexport { useInView } from \"react-intersection-observer\";\r\n","import { createFormHook, createFormHookContexts } from \"@tanstack/react-form\";\r\nimport { FormAutocomplete as Autocomplete } from \"~/components/form/FormAutocomplete\";\r\nimport { FormCheckbox as Checkbox } from \"~/components/form/FormCheckbox\";\r\nimport { FormDatePicker as DatePicker } from \"~/components/form/FormDatePicker\";\r\nimport { FormDateRangePicker as DateRangePicker } from \"~/components/form/FormDateRangePicker\";\r\nimport { FormTimePicker as TimePicker } from \"~/components/form/FormTimePicker\";\r\nimport { FormTimeRangePicker as TimeRangePicker } from \"~/components/form/FormTimeRangePicker\";\r\nimport { FormDateTimePicker as DateTimePicker } from \"~/components/form/FormDateTimePicker\";\r\nimport { FormDateTimeRangePicker as DateTimeRangePicker } from \"~/components/form/FormDateTimeRangePicker\";\r\nimport { FormNumberField as NumberField } from \"~/components/form/FormNumberField\";\r\nimport { FormRadioGroup as RadioGroup } from \"~/components/form/FormRadioGroup\";\r\nimport { FormSlider as Slider } from \"~/components/form/FormSlider\";\r\nimport { FormSubmitButton as SubmitButton } from \"~/components/form/FormSubmitButton\";\r\nimport { FormSwitch as Switch } from \"~/components/form/FormSwitch\";\r\nimport { FormTextField as TextField } from \"~/components/form/FormTextField\";\r\n\r\nexport const { fieldContext, useFieldContext, formContext, useFormContext } = createFormHookContexts();\r\n\r\nexport const { useAppForm: useLayoutForm, withForm: withLayoutForm } =\r\n createFormHook({\r\n fieldComponents: {\r\n TextField,\r\n NumberField,\r\n Autocomplete,\r\n Checkbox,\r\n Switch,\r\n RadioGroup,\r\n Slider,\r\n DatePicker,\r\n DateRangePicker,\r\n TimePicker,\r\n TimeRangePicker,\r\n DateTimePicker,\r\n DateTimeRangePicker,\r\n },\r\n formComponents: {\r\n SubmitButton,\r\n },\r\n fieldContext,\r\n formContext,\r\n });\r\n","import { Autocomplete, TextField } from \"@mui/material\";\r\nimport type { AutocompleteProps, TextFieldProps } from \"@mui/material\";\r\nimport type { FC } from \"react\";\r\nimport type { FormOmittedProps } from \"~/lib/utils\";\r\nimport { useFieldContext } from \"~/hooks/FormHooks\";\r\nimport { getFieldStatus } from \"~/lib/utils\";\r\n\r\nexport interface FormAutocompleteProps extends Omit<AutocompleteProps<any, boolean, boolean, boolean>, FormOmittedProps> {\r\n textFieldProps?: Omit<TextFieldProps, FormOmittedProps>;\r\n}\r\n\r\nexport const FormAutocomplete: FC<FormAutocompleteProps> = ({ textFieldProps, ...autocompleteProps }) => {\r\n const field = useFieldContext();\r\n const { isTouched, hasError, helperText } = getFieldStatus(field);\r\n\r\n return (\r\n <Autocomplete\r\n value={field.state.value}\r\n onChange={(_, value) => !autocompleteProps.freeSolo && field.handleChange(value)}\r\n onInputChange={(_, value, reason) => reason !== \"reset\" && autocompleteProps.freeSolo && field.handleChange(value)}\r\n onBlur={field.handleBlur}\r\n aria-label={field.name}\r\n {...autocompleteProps}\r\n renderInput={(parameters) =>\r\n <TextField\r\n {...parameters}\r\n name={field.name}\r\n error={isTouched && hasError}\r\n helperText={isTouched && helperText}\r\n {...textFieldProps}\r\n />\r\n }\r\n />\r\n );\r\n};","import axios from \"axios\";\r\nimport type { AnyFieldApi } from \"@tanstack/react-form\";\r\nimport { clientEnv } from \"~/env\";\r\n\r\nexport class Platform {\r\n static get isAndroid() { return /android/i.test(this.userAgent); }\r\n static get isIOS() { return /iPad|iPhone|iPod/.test(this.userAgent); }\r\n static get isWindows() { return /windows/i.test(this.userAgent); }\r\n static get isMacOS() { return /Macintosh|MacIntel|MacPPC|Mac68K/.test(this.userAgent); }\r\n\r\n private static get userAgent() { return typeof navigator === \"undefined\" ? \"\" : navigator.userAgent; }\r\n}\r\n\r\nexport const rootRouteHead = () => ({\r\n meta: [\r\n { charSet: \"utf-8\" },\r\n { name: \"viewport\", content: \"width=device-width, initial-scale=1\" },\r\n { title: clientEnv.VITE_APP_TITLE },\r\n { name: \"og:type\", content: \"website\" },\r\n { name: \"og:title\", content: clientEnv.VITE_APP_TITLE },\r\n { name: \"og:image\", content: \"/favicon-32x32.png\" }\r\n ],\r\n links: [\r\n { rel: \"apple-touch-icon\", sizes: \"180x180\", href: \"/apple-touch-icon.png\", },\r\n { rel: \"icon\", type: \"image/png\", sizes: \"32x32\", href: \"/favicon-32x32.png\", },\r\n { rel: \"icon\", type: \"image/png\", sizes: \"16x16\", href: \"/favicon-16x16.png\", },\r\n { rel: \"manifest\", href: \"/manifest.webmanifest\" },\r\n { rel: \"icon\", href: \"/favicon.ico\" },\r\n ],\r\n});\r\n\r\nexport const httpClient = axios.create({\r\n baseURL: clientEnv.VITE_API_URL // TODO: Not working in children projects\r\n});\r\n\r\n/* Internal Utils */\r\nexport type FormOmittedProps =\r\n \"name\" |\r\n \"value\" |\r\n \"onChange\" |\r\n \"onBlur\" |\r\n \"error\" |\r\n \"helperText\" |\r\n \"renderInput\" |\r\n \"type\" |\r\n \"aria-label\";\r\n\r\nexport const getFieldStatus = (field: AnyFieldApi) => {\r\n const { meta } = field.state;\r\n\r\n const isTouched = meta.isTouched;\r\n const hasError = !!meta.errors.length;\r\n const helperText = meta.errors[0]?.message;\r\n\r\n return { isTouched, hasError, helperText };\r\n};\r\n\r\nexport const toKebabCase = (str: string): string => {\r\n return str\r\n .replaceAll(/([a-z])([A-Z])/g, \"$1-$2\")\r\n .replaceAll(/[\\s_]+/g, \"-\")\r\n .replaceAll(/[^a-zA-Z0-9-]/g, \"\")\r\n .toLowerCase()\r\n .replaceAll(/-+/g, \"-\")\r\n .replaceAll(/(^-|-$)/g, \"\");\r\n};\r\n","import { createEnv } from \"@t3-oss/env-core\";\r\nimport { z } from \"zod\";\r\n\r\nexport const clientEnv = createEnv({\r\n clientPrefix: \"VITE_\",\r\n client: {\r\n VITE_APP_TITLE: z.string(),\r\n VITE_MUI_LICENSE_KEY: z.string(),\r\n VITE_API_URL: z.url(),\r\n },\r\n runtimeEnv: import.meta.env,\r\n emptyStringAsUndefined: true,\r\n});\r\n\r\nexport const serverEnv = createEnv({\r\n server: {\r\n DATABASE_URL: z.string(),\r\n MICROSOFT_CLIENT_ID: z.string(),\r\n MICROSOFT_CLIENT_SECRET: z.string(),\r\n },\r\n runtimeEnv: process.env,\r\n emptyStringAsUndefined: true,\r\n});\r\n","import { Checkbox, FormControl, FormControlLabel, FormHelperText } from \"@mui/material\";\r\nimport type { CheckboxProps } from \"@mui/material\";\r\nimport type { FC } from \"react\";\r\nimport type { FormOmittedProps } from \"~/lib/utils\";\r\nimport { useFieldContext } from \"~/hooks/FormHooks\";\r\nimport { getFieldStatus } from \"~/lib/utils\";\r\n\r\nexport interface FormCheckboxProps extends Omit<CheckboxProps, FormOmittedProps> {\r\n label?: string;\r\n}\r\n\r\nexport const FormCheckbox: FC<FormCheckboxProps> = (props) => {\r\n const field = useFieldContext<boolean | null | undefined>();\r\n const { isTouched, hasError, helperText } = getFieldStatus(field);\r\n\r\n return (\r\n <FormControl component=\"fieldset\">\r\n <FormControlLabel\r\n control={\r\n <Checkbox\r\n name={field.name}\r\n checked={Boolean(field.state.value)}\r\n onChange={(event) => field.handleChange(event.target.checked)}\r\n onBlur={field.handleBlur}\r\n aria-label={field.name}\r\n {...props}\r\n />\r\n }\r\n label={props.label ?? \"\"}\r\n />\r\n {isTouched && hasError && <FormHelperText error={hasError}>{helperText}</FormHelperText>}\r\n </FormControl>\r\n );\r\n};","import { DatePicker } from \"@mui/x-date-pickers-pro\";\r\nimport type { Dayjs } from \"dayjs\";\r\nimport type { TextFieldProps } from \"@mui/material\";\r\nimport type { DatePickerProps } from \"@mui/x-date-pickers-pro\";\r\nimport type { FC } from \"react\";\r\nimport type { FormOmittedProps } from \"~/lib/utils\";\r\nimport { useFieldContext } from \"~/hooks/FormHooks\";\r\nimport { getFieldStatus } from \"~/lib/utils\";\r\n\r\nexport interface FormDatePickerProps extends Omit<DatePickerProps, FormOmittedProps> {\r\n textFieldProps?: TextFieldProps;\r\n}\r\n\r\nexport const FormDatePicker: FC<FormDatePickerProps> = (props) => {\r\n const field = useFieldContext<Dayjs | null | undefined>();\r\n const { isTouched, hasError, helperText } = getFieldStatus(field);\r\n\r\n return (\r\n <DatePicker\r\n name={field.name}\r\n value={field.state.value}\r\n onChange={(value) => field.handleChange(value)}\r\n slotProps={{\r\n textField: {\r\n onBlur: field.handleBlur,\r\n error: isTouched && hasError,\r\n helperText: isTouched && helperText,\r\n ...props.textFieldProps\r\n },\r\n ...props.slotProps\r\n }}\r\n aria-label={field.name}\r\n {...props}\r\n />\r\n );\r\n};\r\n","import { DateRangePicker } from \"@mui/x-date-pickers-pro\";\r\nimport type { TextFieldProps } from \"@mui/material\";\r\nimport type { DateRangePickerProps } from \"@mui/x-date-pickers-pro\";\r\nimport type { Dayjs } from \"dayjs\";\r\nimport type { FC } from \"react\";\r\nimport type { FormOmittedProps } from \"~/lib/utils\";\r\nimport { useFieldContext } from \"~/hooks/FormHooks\";\r\nimport { getFieldStatus } from \"~/lib/utils\";\r\n\r\nexport interface FormDateRangePickerProps extends Omit<DateRangePickerProps, FormOmittedProps> {\r\n textFieldProps?: TextFieldProps;\r\n}\r\n\r\nexport const FormDateRangePicker: FC<FormDateRangePickerProps> = (props) => {\r\n const field = useFieldContext<[Dayjs | null, Dayjs | null] | undefined>();\r\n const { isTouched, hasError, helperText } = getFieldStatus(field);\r\n\r\n return (\r\n <DateRangePicker\r\n name={field.name}\r\n value={field.state.value}\r\n onChange={(value) => field.handleChange(value)}\r\n slotProps={{\r\n textField: {\r\n onBlur: field.handleBlur,\r\n error: isTouched && hasError,\r\n helperText: isTouched && helperText,\r\n ...props.textFieldProps\r\n },\r\n ...props.slotProps\r\n }}\r\n aria-label={field.name}\r\n {...props}\r\n />\r\n );\r\n};\r\n","import { TimePicker } from \"@mui/x-date-pickers-pro\";\r\nimport type { TextFieldProps } from \"@mui/material\";\r\nimport type { TimePickerProps } from \"@mui/x-date-pickers-pro\";\r\nimport type { Dayjs } from \"dayjs\";\r\nimport type { FC } from \"react\";\r\nimport type { FormOmittedProps } from \"~/lib/utils\";\r\nimport { useFieldContext } from \"~/hooks/FormHooks\";\r\nimport { getFieldStatus } from \"~/lib/utils\";\r\n\r\nexport interface FormTimePickerProps extends Omit<TimePickerProps, FormOmittedProps> {\r\n textFieldProps?: TextFieldProps;\r\n}\r\n\r\nexport const FormTimePicker: FC<FormTimePickerProps> = (props) => {\r\n const field = useFieldContext<Dayjs | null | undefined>();\r\n const { isTouched, hasError, helperText } = getFieldStatus(field);\r\n\r\n return (\r\n <TimePicker\r\n name={field.name}\r\n value={field.state.value}\r\n onChange={(value) => field.handleChange(value)}\r\n slotProps={{\r\n textField: {\r\n onBlur: field.handleBlur,\r\n error: isTouched && hasError,\r\n helperText: isTouched && helperText,\r\n ...props.textFieldProps\r\n },\r\n ...props.slotProps\r\n }}\r\n aria-label={field.name}\r\n {...props}\r\n />\r\n );\r\n};\r\n","import { TimeRangePicker } from \"@mui/x-date-pickers-pro\";\r\nimport type { TextFieldProps } from \"@mui/material\";\r\nimport type { TimeRangePickerProps } from \"@mui/x-date-pickers-pro\";\r\nimport type { Dayjs } from \"dayjs\";\r\nimport type { FC } from \"react\";\r\nimport type { FormOmittedProps } from \"~/lib/utils\";\r\nimport { useFieldContext } from \"~/hooks/FormHooks\";\r\nimport { getFieldStatus } from \"~/lib/utils\";\r\n\r\nexport interface FormTimeRangePickerProps extends Omit<TimeRangePickerProps, FormOmittedProps> {\r\n textFieldProps?: TextFieldProps;\r\n}\r\n\r\nexport const FormTimeRangePicker: FC<FormTimeRangePickerProps> = (props) => {\r\n const field = useFieldContext<[Dayjs | null, Dayjs | null] | undefined>();\r\n const { isTouched, hasError, helperText } = getFieldStatus(field);\r\n\r\n return (\r\n <TimeRangePicker\r\n name={field.name}\r\n value={field.state.value}\r\n onChange={(value) => field.handleChange(value)}\r\n slotProps={{\r\n textField: {\r\n onBlur: field.handleBlur,\r\n error: isTouched && hasError,\r\n helperText: isTouched && helperText,\r\n ...props.textFieldProps\r\n },\r\n ...props.slotProps\r\n }}\r\n aria-label={field.name}\r\n {...props}\r\n />\r\n );\r\n};\r\n","import { DateTimePicker } from \"@mui/x-date-pickers-pro\";\r\nimport type { Dayjs } from \"dayjs\";\r\nimport type { TextFieldProps } from \"@mui/material\";\r\nimport type { DateTimePickerProps } from \"@mui/x-date-pickers-pro\";\r\nimport type { FC } from \"react\";\r\nimport type { FormOmittedProps } from \"~/lib/utils\";\r\nimport { useFieldContext } from \"~/hooks/FormHooks\";\r\nimport { getFieldStatus } from \"~/lib/utils\";\r\n\r\nexport interface FormDateTimePickerProps extends Omit<DateTimePickerProps, FormOmittedProps> {\r\n textFieldProps?: TextFieldProps;\r\n}\r\n\r\nexport const FormDateTimePicker: FC<FormDateTimePickerProps> = (props) => {\r\n const field = useFieldContext<Dayjs | null | undefined>();\r\n const { isTouched, hasError, helperText } = getFieldStatus(field);\r\n\r\n return (\r\n <DateTimePicker\r\n name={field.name}\r\n value={field.state.value}\r\n onChange={(value) => field.handleChange(value)}\r\n slotProps={{\r\n textField: {\r\n onBlur: field.handleBlur,\r\n error: isTouched && hasError,\r\n helperText: isTouched && helperText,\r\n ...props.textFieldProps,\r\n },\r\n ...props.slotProps\r\n }}\r\n aria-label={field.name}\r\n {...props}\r\n />\r\n );\r\n};\r\n","import { DateTimeRangePicker } from \"@mui/x-date-pickers-pro\";\r\nimport type { TextFieldProps } from \"@mui/material\";\r\nimport type { DateTimeRangePickerProps } from \"@mui/x-date-pickers-pro\";\r\nimport type { Dayjs } from \"dayjs\";\r\nimport type { FC } from \"react\";\r\nimport type { FormOmittedProps } from \"~/lib/utils\";\r\nimport { useFieldContext } from \"~/hooks/FormHooks\";\r\nimport { getFieldStatus } from \"~/lib/utils\";\r\n\r\nexport interface FormDateTimeRangePickerProps extends Omit<DateTimeRangePickerProps, FormOmittedProps> {\r\n textFieldProps?: TextFieldProps;\r\n}\r\n\r\nexport const FormDateTimeRangePicker: FC<FormDateTimeRangePickerProps> = (props) => {\r\n const field = useFieldContext<[Dayjs | null, Dayjs | null] | undefined>();\r\n const { isTouched, hasError, helperText } = getFieldStatus(field);\r\n\r\n return (\r\n <DateTimeRangePicker\r\n name={field.name}\r\n value={field.state.value}\r\n onChange={(value) => field.handleChange(value)}\r\n slotProps={{\r\n textField: {\r\n onBlur: field.handleBlur,\r\n error: isTouched && hasError,\r\n helperText: isTouched && helperText,\r\n ...props.textFieldProps\r\n },\r\n ...props.slotProps\r\n }}\r\n aria-label={field.name}\r\n {...props}\r\n />\r\n );\r\n};\r\n","import { TextField } from \"@mui/material\";\r\nimport { NumericFormat } from \"react-number-format\";\r\nimport type { InputAttributes, NumericFormatProps } from \"react-number-format/types/types\";\r\nimport type { FC } from \"react\";\r\nimport type { TextFieldProps } from \"@mui/material\";\r\nimport type { FormOmittedProps } from \"~/lib/utils\";\r\nimport { useFieldContext } from \"~/hooks/FormHooks\";\r\nimport { getFieldStatus } from \"~/lib/utils\";\r\n\r\nexport interface FormNumberFieldProps extends Omit<TextFieldProps, FormOmittedProps> {\r\n\tdefaultValue?: number | null;\r\n\toptions?: Omit<NumericFormatProps<InputAttributes>, \"customInput\" | \"onValueChange\" | keyof InputAttributes>;\r\n}\r\n\r\nexport const FormNumberField: FC<FormNumberFieldProps> = ({ options, ...props }) => {\r\n\tconst field = useFieldContext<number | null | undefined>();\r\n\tconst { isTouched, hasError, helperText } = getFieldStatus(field);\r\n\r\n\treturn (\r\n\t\t<NumericFormat\r\n\t\t\tcustomInput={TextField}\r\n\t\t\tname={field.name}\r\n\t\t\tvalue={field.state.value ?? \"\"}\r\n\t\t\tonValueChange={({ floatValue }) => field.handleChange(floatValue)}\r\n\t\t\tonBlur={field.handleBlur}\r\n\t\t\terror={isTouched && hasError}\r\n\t\t\thelperText={isTouched && helperText}\r\n\t\t\taria-label={field.name}\r\n\t\t\t{...props}\r\n\t\t\t{...options}\r\n\t\t/>\r\n\t);\r\n};\r\n","import { FormControl, FormControlLabel, FormHelperText, FormLabel, Radio, RadioGroup } from \"@mui/material\";\r\nimport type { RadioGroupProps } from \"@mui/material\";\r\nimport type { FC } from \"react\";\r\nimport type { FormOmittedProps } from \"~/lib/utils\";\r\nimport { useFieldContext } from \"~/hooks/FormHooks\";\r\nimport { getFieldStatus } from \"~/lib/utils\";\r\n\r\ninterface Option {\r\n label: string;\r\n value: string | number;\r\n}\r\n\r\nexport interface FormRadioGroupProps extends Omit<RadioGroupProps, FormOmittedProps> {\r\n label?: string;\r\n options: Array<Option>;\r\n}\r\n\r\nexport const FormRadioGroup: FC<FormRadioGroupProps> = ({ label, options, ...props }) => {\r\n const field = useFieldContext<string | number | null | undefined>();\r\n const { isTouched, hasError, helperText } = getFieldStatus(field);\r\n\r\n return (\r\n <FormControl component=\"fieldset\">\r\n {label && <FormLabel component=\"legend\">{label}</FormLabel>}\r\n <RadioGroup\r\n name={field.name}\r\n value={field.state.value ?? \"\"}\r\n onChange={(event) => field.handleChange(event.target.value)}\r\n onBlur={field.handleBlur}\r\n aria-label={field.name}\r\n {...props}\r\n >\r\n {options.map((option) => (\r\n <FormControlLabel\r\n key={option.value}\r\n value={option.value}\r\n control={<Radio />}\r\n label={option.label}\r\n />\r\n ))}\r\n </RadioGroup>\r\n {isTouched && hasError && <FormHelperText error={hasError}>{helperText}</FormHelperText>}\r\n </FormControl>\r\n );\r\n};\r\n","import { FormControl, FormHelperText, FormLabel, Slider } from \"@mui/material\";\r\nimport type { SliderProps } from \"@mui/material\";\r\nimport type { FC } from \"react\";\r\nimport type { FormOmittedProps } from \"~/lib/utils\";\r\nimport { useFieldContext } from \"~/hooks/FormHooks\";\r\nimport { getFieldStatus } from \"~/lib/utils\";\r\n\r\nexport interface FormSliderProps extends Omit<SliderProps, FormOmittedProps> {\r\n label?: string;\r\n}\r\n\r\nexport const FormSlider: FC<FormSliderProps> = ({ label, ...props }) => {\r\n const field = useFieldContext<number | null | undefined>();\r\n const { isTouched, hasError, helperText } = getFieldStatus(field);\r\n\r\n return (\r\n <FormControl component=\"fieldset\">\r\n {label && <FormLabel>{label}</FormLabel>}\r\n <Slider\r\n name={field.name}\r\n value={field.state.value ?? 0}\r\n onChange={(_, value) => field.handleChange(Array.isArray(value) ? value[0] : value)}\r\n onBlur={field.handleBlur}\r\n aria-label={field.name}\r\n {...props}\r\n />\r\n {isTouched && hasError && <FormHelperText error={hasError}>{helperText}</FormHelperText>}\r\n </FormControl>\r\n );\r\n};\r\n","import { Button } from \"@mui/material\";\r\nimport type { ButtonProps } from \"@mui/material\";\r\nimport type { FC } from \"react\";\r\nimport { useFormContext } from \"~/hooks/FormHooks\";\r\n\r\nexport type FormSubmitButtonProps = Omit<ButtonProps, \"loading\" | \"disabled\" | \"onClick\" | \"type\">;\r\n\r\nexport const FormSubmitButton: FC<FormSubmitButtonProps> = (props) => {\r\n const form = useFormContext();\r\n\r\n const handleClick = (event: React.MouseEvent<HTMLButtonElement>) => {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n form.handleSubmit();\r\n };\r\n\r\n return (\r\n <form.Subscribe selector={(state) => [state.canSubmit, state.isSubmitting]}>\r\n {([canSubmit, isSubmitting]) => (\r\n <Button\r\n loading={isSubmitting}\r\n disabled={!canSubmit}\r\n onClick={handleClick}\r\n type=\"submit\"\r\n aria-label=\"submit\"\r\n {...props}\r\n />\r\n )}\r\n </form.Subscribe>\r\n );\r\n};","import { FormControl, FormControlLabel, FormHelperText, Switch } from \"@mui/material\";\r\nimport type { SwitchProps } from \"@mui/material\";\r\nimport type { FC } from \"react\";\r\nimport type { FormOmittedProps } from \"~/lib/utils\";\r\nimport { useFieldContext } from \"~/hooks/FormHooks\";\r\nimport { getFieldStatus } from \"~/lib/utils\";\r\n\r\nexport interface FormSwitchProps extends Omit<SwitchProps, FormOmittedProps> {\r\n label?: string;\r\n}\r\n\r\nexport const FormSwitch: FC<FormSwitchProps> = (props) => {\r\n const field = useFieldContext<boolean | null | undefined>();\r\n const { isTouched, hasError, helperText } = getFieldStatus(field);\r\n\r\n return (\r\n <FormControl component=\"fieldset\">\r\n <FormControlLabel\r\n control={\r\n <Switch\r\n name={field.name}\r\n checked={Boolean(field.state.value)}\r\n onChange={(event) => field.handleChange(event.target.checked)}\r\n onBlur={field.handleBlur}\r\n aria-label={field.name}\r\n {...props}\r\n />\r\n }\r\n label={props.label ?? \"\"}\r\n />\r\n {isTouched && hasError && <FormHelperText error={hasError}>{helperText}</FormHelperText>}\r\n </FormControl>\r\n );\r\n};\r\n","import { TextField } from \"@mui/material\";\r\nimport type { TextFieldProps } from \"@mui/material\";\r\nimport type { FC } from \"react\";\r\nimport type { FormOmittedProps } from \"~/lib/utils\";\r\nimport { useFieldContext } from \"~/hooks/FormHooks\";\r\nimport { getFieldStatus } from \"~/lib/utils\";\r\n\r\nexport interface FormTextFieldProps extends Omit<TextFieldProps, FormOmittedProps> {\r\n type?: \"color\" | \"email\" | \"password\" | \"search\" | \"tel\" | \"text\" | \"url\"\r\n}\r\n\r\nexport const FormTextField: FC<FormTextFieldProps> = (props) => {\r\n const field = useFieldContext<string | number | null | undefined>();\r\n const { isTouched, hasError, helperText } = getFieldStatus(field);\r\n\r\n return (\r\n <TextField\r\n name={field.name}\r\n value={field.state.value ?? \"\"}\r\n onChange={event => field.handleChange(event.target.value)}\r\n onBlur={field.handleBlur}\r\n error={isTouched && hasError}\r\n helperText={isTouched && helperText}\r\n aria-label={field.name}\r\n {...props}\r\n />\r\n );\r\n};","import { Button, Dialog, DialogActions, DialogContent, DialogTitle, useEventCallback } from \"@mui/material\";\r\nimport { useContext } from \"react\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { DialogsContext } from \"../contexts/DialogsContext\";\r\nimport type { ReactNode } from \"react\";\r\n\r\nexport interface OpenDialogOptions<TResult> {\r\n onClose?: (result: TResult) => Promise<void>;\r\n}\r\n\r\nexport interface AlertOptions {\r\n title?: ReactNode;\r\n}\r\n\r\nexport interface ConfirmOptions {\r\n title?: ReactNode;\r\n cancelText?: ReactNode;\r\n}\r\n\r\nexport interface DialogProps<TPayload = undefined, TResult = void> {\r\n payload: TPayload;\r\n open: boolean;\r\n onClose: (result: TResult) => Promise<void>;\r\n}\r\n\r\nexport type OpenAlertDialog = (message: ReactNode, options?: AlertOptions) => Promise<void>;\r\n\r\nexport type OpenConfirmDialog = (message: ReactNode, options?: ConfirmOptions) => Promise<boolean>;\r\n\r\nexport type DialogComponent<TPayload, TResult> = React.ComponentType<DialogProps<TPayload, TResult>>;\r\n\r\nexport interface OpenDialog {\r\n <TPayload extends undefined, TResult>(Component: DialogComponent<TPayload, TResult>, payload?: TPayload, options?: OpenDialogOptions<TResult>): Promise<TResult>;\r\n <TPayload, TResult>(Component: DialogComponent<TPayload, TResult>, payload: TPayload, options?: OpenDialogOptions<TResult>): Promise<TResult>;\r\n}\r\n\r\nexport type CloseDialog = <TResult>(dialog: Promise<TResult>, result: TResult) => Promise<TResult>;\r\n\r\nexport interface AlertDialogPayload extends AlertOptions {\r\n message: ReactNode;\r\n}\r\n\r\nexport type AlertDialogProps = DialogProps<AlertDialogPayload, void>\r\n\r\nexport function AlertDialog({ open, payload, onClose }: Readonly<AlertDialogProps>) {\r\n const { t } = useTranslation();\r\n\r\n return (\r\n <Dialog maxWidth=\"xs\" fullWidth open={open} onClose={() => onClose()} disableRestoreFocus>\r\n <DialogTitle>{payload.title ?? t(\"Layout.Dialog.Alert\")}</DialogTitle>\r\n <DialogContent>{payload.message}</DialogContent>\r\n <DialogActions>\r\n <Button onClick={() => onClose()} autoFocus>\r\n {t(\"Layout.Dialog.Confirm\")}\r\n </Button>\r\n </DialogActions>\r\n </Dialog>\r\n );\r\n}\r\n\r\nexport interface ConfirmDialogPayload extends ConfirmOptions {\r\n message: ReactNode;\r\n}\r\n\r\nexport type ConfirmDialogProps = DialogProps<ConfirmDialogPayload, boolean>\r\n\r\nexport function ConfirmDialog({ open, payload, onClose }: Readonly<ConfirmDialogProps>) {\r\n const { t } = useTranslation();\r\n\r\n return (\r\n <Dialog maxWidth=\"xs\" fullWidth open={open} onClose={() => onClose(false)} disableRestoreFocus>\r\n <DialogTitle>{payload.title ?? t(\"Layout.Dialog.Confirm\")}</DialogTitle>\r\n <DialogContent>{payload.message}</DialogContent>\r\n <DialogActions>\r\n <Button onClick={() => onClose(false)}>\r\n {payload.cancelText ?? t(\"Layout.Dialog.Cancel\")}\r\n </Button>\r\n <Button onClick={() => onClose(true)} autoFocus>\r\n {t(\"Layout.Dialog.Confirm\")}\r\n </Button>\r\n </DialogActions>\r\n </Dialog>\r\n );\r\n}\r\n\r\ninterface DialogHook {\r\n alert: OpenAlertDialog;\r\n confirm: OpenConfirmDialog;\r\n open: OpenDialog;\r\n close: CloseDialog;\r\n}\r\n\r\nexport function useDialogs(): DialogHook {\r\n const { open, close } = useContext(DialogsContext);\r\n\r\n const alert = useEventCallback<OpenAlertDialog>((message, { ...options } = {}) =>\r\n open(AlertDialog, { ...options, message }),\r\n );\r\n\r\n const confirm = useEventCallback<OpenConfirmDialog>((message, { ...options } = {}) =>\r\n open(ConfirmDialog, { ...options, message }),\r\n );\r\n\r\n return { alert, confirm, open, close };\r\n}\r\n","import { createContext } from \"react\";\r\nimport type { CloseDialog, OpenDialog } from \"../hooks/DialogsHooks\";\r\n\r\nexport interface DialogsContextValue {\r\n open: OpenDialog;\r\n close: CloseDialog;\r\n}\r\n\r\nexport const DialogsContext = createContext<DialogsContextValue>({} as DialogsContextValue);"],"mappings":"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","names":["axios","import_material","import_jsx_runtime","import_jsx_runtime","import_x_date_pickers_pro","import_jsx_runtime","import_x_date_pickers_pro","import_jsx_runtime","import_x_date_pickers_pro","import_jsx_runtime","import_x_date_pickers_pro","import_jsx_runtime","import_x_date_pickers_pro","import_jsx_runtime","import_material","import_jsx_runtime","import_material","import_jsx_runtime","import_material","import_jsx_runtime","import_material","import_jsx_runtime","import_material","import_jsx_runtime","import_material","import_jsx_runtime","import_material","import_react","import_jsx_runtime"]}
|