@form-eng/chakra 1.2.1 → 1.3.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.
- package/README.md +19 -19
- package/dist/index.d.mts +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +65 -67
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +4 -4
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -37,28 +37,28 @@ function App() {
|
|
|
37
37
|
|
|
38
38
|
### Editable Fields (12)
|
|
39
39
|
|
|
40
|
-
| Component | Implementation | Type Key |
|
|
41
|
-
|
|
42
|
-
| `Textbox` | Chakra `Input` | `Textbox` |
|
|
43
|
-
| `Number` | Chakra `Input` (`type="number"`) | `Number` |
|
|
44
|
-
| `Toggle` | Semantic `<input type="checkbox" role="switch">`
|
|
45
|
-
| `Dropdown` | Chakra `NativeSelect` | `Dropdown` |
|
|
46
|
-
| `SimpleDropdown` | Chakra `NativeSelect` | `SimpleDropdown` |
|
|
47
|
-
| `MultiSelect` | Semantic `<select multiple>`
|
|
48
|
-
| `DateControl` | Chakra `Input` (`type="date"`) | `DateControl` |
|
|
49
|
-
| `Slider` | Semantic `<input type="range">`
|
|
50
|
-
| `RadioGroup` | Semantic `<fieldset>` + `<input type="radio">`
|
|
51
|
-
| `CheckboxGroup` | Semantic `<fieldset>` + `<input type="checkbox">`
|
|
52
|
-
| `Textarea` | Chakra `Textarea` | `Textarea` |
|
|
53
|
-
| `DynamicFragment` | `<input type="hidden">` | `DynamicFragment` |
|
|
54
|
-
|
|
55
|
-
|
|
40
|
+
| Component | Implementation | Type Key | Status |
|
|
41
|
+
|---|---|---|---|
|
|
42
|
+
| `Textbox` | Chakra `Input` | `Textbox` | Native Chakra |
|
|
43
|
+
| `Number` | Chakra `Input` (`type="number"`) | `Number` | Native Chakra |
|
|
44
|
+
| `Toggle` | Semantic `<input type="checkbox" role="switch">` | `Toggle` | Temporary - awaiting Chakra v3 DTS fix |
|
|
45
|
+
| `Dropdown` | Chakra `NativeSelect` | `Dropdown` | Native Chakra |
|
|
46
|
+
| `SimpleDropdown` | Chakra `NativeSelect` | `SimpleDropdown` | Native Chakra |
|
|
47
|
+
| `MultiSelect` | Semantic `<select multiple>` | `Multiselect` | Temporary - awaiting Chakra v3 DTS fix |
|
|
48
|
+
| `DateControl` | Chakra `Input` (`type="date"`) | `DateControl` | Native Chakra |
|
|
49
|
+
| `Slider` | Semantic `<input type="range">` | `Slider` | Temporary - awaiting Chakra v3 DTS fix |
|
|
50
|
+
| `RadioGroup` | Semantic `<fieldset>` + `<input type="radio">` | `RadioGroup` | Temporary - awaiting Chakra v3 DTS fix |
|
|
51
|
+
| `CheckboxGroup` | Semantic `<fieldset>` + `<input type="checkbox">` | `CheckboxGroup` | Temporary - awaiting Chakra v3 DTS fix |
|
|
52
|
+
| `Textarea` | Chakra `Textarea` | `Textarea` | Native Chakra |
|
|
53
|
+
| `DynamicFragment` | `<input type="hidden">` | `DynamicFragment` | Expected - native HTML |
|
|
54
|
+
|
|
55
|
+
Fields with "Temporary" status use semantic HTML fallbacks due to Chakra v3 compound component DTS issues with Ark UI's `Assign` type. They are styled with Chakra CSS variables for visual consistency and will be replaced with native Chakra components when the issue is resolved.
|
|
56
56
|
|
|
57
57
|
### Read-Only Fields (1)
|
|
58
58
|
|
|
59
|
-
| Component | Renders | Type Key |
|
|
60
|
-
|
|
61
|
-
| `ReadOnly` | `ReadOnlyText` | `ReadOnly` |
|
|
59
|
+
| Component | Renders | Type Key | Status |
|
|
60
|
+
|---|---|---|---|
|
|
61
|
+
| `ReadOnly` | `ReadOnlyText` | `ReadOnly` | Expected - native HTML |
|
|
62
62
|
|
|
63
63
|
## Custom Fields
|
|
64
64
|
|
package/dist/index.d.mts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
2
|
import { IFieldProps, Dictionary } from '@form-eng/core';
|
|
3
|
-
export { DocumentLinksStrings, FieldClassName, GetFieldDataTestId, formatDateTime, getFieldState } from '@form-eng/core';
|
|
4
3
|
import React from 'react';
|
|
5
4
|
import { FieldError } from 'react-hook-form';
|
|
5
|
+
export { DocumentLinksStrings, FieldClassName, GetFieldDataTestId, formatDateTime, getFieldState } from '@form-eng/core/adapter-utils';
|
|
6
6
|
|
|
7
7
|
interface ITextboxProps {
|
|
8
8
|
ellipsifyTextCharacters?: number;
|
package/dist/index.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
2
|
import { IFieldProps, Dictionary } from '@form-eng/core';
|
|
3
|
-
export { DocumentLinksStrings, FieldClassName, GetFieldDataTestId, formatDateTime, getFieldState } from '@form-eng/core';
|
|
4
3
|
import React from 'react';
|
|
5
4
|
import { FieldError } from 'react-hook-form';
|
|
5
|
+
export { DocumentLinksStrings, FieldClassName, GetFieldDataTestId, formatDateTime, getFieldState } from '@form-eng/core/adapter-utils';
|
|
6
6
|
|
|
7
7
|
interface ITextboxProps {
|
|
8
8
|
ellipsifyTextCharacters?: number;
|
package/dist/index.js
CHANGED
|
@@ -31,12 +31,12 @@ var index_exports = {};
|
|
|
31
31
|
__export(index_exports, {
|
|
32
32
|
CheckboxGroup: () => CheckboxGroup_default,
|
|
33
33
|
DateControl: () => DateControl_default,
|
|
34
|
-
DocumentLinksStrings: () =>
|
|
34
|
+
DocumentLinksStrings: () => import_adapter_utils.DocumentLinksStrings,
|
|
35
35
|
Dropdown: () => Dropdown_default,
|
|
36
36
|
DynamicFragment: () => DynamicFragment_default,
|
|
37
|
-
FieldClassName: () =>
|
|
37
|
+
FieldClassName: () => import_adapter_utils.FieldClassName,
|
|
38
38
|
FormLoading: () => FormLoading,
|
|
39
|
-
GetFieldDataTestId: () =>
|
|
39
|
+
GetFieldDataTestId: () => import_adapter_utils.GetFieldDataTestId,
|
|
40
40
|
MultiSelect: () => MultiSelect_default,
|
|
41
41
|
Number: () => Number_default,
|
|
42
42
|
RadioGroup: () => RadioGroup_default,
|
|
@@ -49,8 +49,8 @@ __export(index_exports, {
|
|
|
49
49
|
Textbox: () => Textbox_default,
|
|
50
50
|
Toggle: () => Toggle_default,
|
|
51
51
|
createChakraFieldRegistry: () => createChakraFieldRegistry,
|
|
52
|
-
formatDateTime: () =>
|
|
53
|
-
getFieldState: () =>
|
|
52
|
+
formatDateTime: () => import_adapter_utils.formatDateTime,
|
|
53
|
+
getFieldState: () => import_adapter_utils.getFieldState
|
|
54
54
|
});
|
|
55
55
|
module.exports = __toCommonJS(index_exports);
|
|
56
56
|
|
|
@@ -75,7 +75,7 @@ var ReadOnlyText = (props) => {
|
|
|
75
75
|
};
|
|
76
76
|
|
|
77
77
|
// src/helpers.ts
|
|
78
|
-
var
|
|
78
|
+
var import_adapter_utils = require("@form-eng/core/adapter-utils");
|
|
79
79
|
|
|
80
80
|
// src/fields/Textbox.tsx
|
|
81
81
|
var import_jsx_runtime2 = require("react/jsx-runtime");
|
|
@@ -105,15 +105,14 @@ var Textbox = (props) => {
|
|
|
105
105
|
"aria-invalid": !!error,
|
|
106
106
|
"aria-required": required,
|
|
107
107
|
"data-field-type": "Textbox",
|
|
108
|
-
"data-field-state": (0,
|
|
109
|
-
"data-testid": (0,
|
|
108
|
+
"data-field-state": (0, import_adapter_utils.getFieldState)({ error, required, readOnly }),
|
|
109
|
+
"data-testid": (0, import_adapter_utils.GetFieldDataTestId)(fieldName, programName, entityType, entityId)
|
|
110
110
|
}
|
|
111
111
|
);
|
|
112
112
|
};
|
|
113
113
|
var Textbox_default = Textbox;
|
|
114
114
|
|
|
115
115
|
// src/fields/Number.tsx
|
|
116
|
-
var import_core2 = require("@form-eng/core");
|
|
117
116
|
var import_react2 = require("@chakra-ui/react");
|
|
118
117
|
var import_jsx_runtime3 = require("react/jsx-runtime");
|
|
119
118
|
var NumberField = (props) => {
|
|
@@ -132,20 +131,19 @@ var NumberField = (props) => {
|
|
|
132
131
|
{
|
|
133
132
|
type: "number",
|
|
134
133
|
autoComplete: "off",
|
|
135
|
-
value: !(0,
|
|
134
|
+
value: !(0, import_adapter_utils.isNull)(value) ? String(value) : "",
|
|
136
135
|
onChange,
|
|
137
136
|
"aria-invalid": !!error,
|
|
138
137
|
"aria-required": required,
|
|
139
138
|
"data-field-type": "Number",
|
|
140
|
-
"data-field-state": (0,
|
|
141
|
-
"data-testid": (0,
|
|
139
|
+
"data-field-state": (0, import_adapter_utils.getFieldState)({ error, required, readOnly }),
|
|
140
|
+
"data-testid": (0, import_adapter_utils.GetFieldDataTestId)(fieldName, programName, entityType, entityId)
|
|
142
141
|
}
|
|
143
142
|
);
|
|
144
143
|
};
|
|
145
144
|
var Number_default = NumberField;
|
|
146
145
|
|
|
147
146
|
// src/fields/Toggle.tsx
|
|
148
|
-
var import_core3 = require("@form-eng/core");
|
|
149
147
|
var import_jsx_runtime4 = require("react/jsx-runtime");
|
|
150
148
|
var Toggle = (props) => {
|
|
151
149
|
const { fieldName, programName, entityType, entityId, value, readOnly, error, required, label, setFieldValue } = props;
|
|
@@ -153,7 +151,7 @@ var Toggle = (props) => {
|
|
|
153
151
|
setFieldValue(fieldName, event.target.checked);
|
|
154
152
|
};
|
|
155
153
|
if (readOnly) {
|
|
156
|
-
return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(ReadOnlyText, { fieldName, value: (0,
|
|
154
|
+
return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(ReadOnlyText, { fieldName, value: (0, import_adapter_utils.convertBooleanToYesOrNoText)(value) });
|
|
157
155
|
}
|
|
158
156
|
return /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)(
|
|
159
157
|
"label",
|
|
@@ -165,7 +163,7 @@ var Toggle = (props) => {
|
|
|
165
163
|
cursor: "pointer"
|
|
166
164
|
},
|
|
167
165
|
"data-field-type": "Toggle",
|
|
168
|
-
"data-field-state": (0,
|
|
166
|
+
"data-field-state": (0, import_adapter_utils.getFieldState)({ error, required, readOnly }),
|
|
169
167
|
children: [
|
|
170
168
|
/* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
|
|
171
169
|
"input",
|
|
@@ -176,7 +174,7 @@ var Toggle = (props) => {
|
|
|
176
174
|
onChange,
|
|
177
175
|
"aria-invalid": !!error,
|
|
178
176
|
"aria-required": required,
|
|
179
|
-
"data-testid": (0,
|
|
177
|
+
"data-testid": (0, import_adapter_utils.GetFieldDataTestId)(fieldName, programName, entityType, entityId),
|
|
180
178
|
style: { accentColor: "var(--chakra-colors-blue-500, #3182CE)" }
|
|
181
179
|
}
|
|
182
180
|
),
|
|
@@ -208,7 +206,7 @@ var Dropdown = (props) => {
|
|
|
208
206
|
import_react3.NativeSelect.Root,
|
|
209
207
|
{
|
|
210
208
|
"data-field-type": "Dropdown",
|
|
211
|
-
"data-field-state": (0,
|
|
209
|
+
"data-field-state": (0, import_adapter_utils.getFieldState)({ error, required, readOnly }),
|
|
212
210
|
children: [
|
|
213
211
|
/* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(
|
|
214
212
|
import_react3.NativeSelect.Field,
|
|
@@ -217,7 +215,7 @@ var Dropdown = (props) => {
|
|
|
217
215
|
onChange,
|
|
218
216
|
"aria-invalid": !!error,
|
|
219
217
|
"aria-required": required,
|
|
220
|
-
"data-testid": (0,
|
|
218
|
+
"data-testid": (0, import_adapter_utils.GetFieldDataTestId)(fieldName, programName, entityType, entityId),
|
|
221
219
|
children: [
|
|
222
220
|
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)("option", { value: "", children: placeholder ?? config?.placeHolder ?? "" }),
|
|
223
221
|
options?.map((option) => /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("option", { value: String(option.value), disabled: option.disabled, children: option.label }, String(option.value)))
|
|
@@ -247,7 +245,7 @@ var SimpleDropdown = (props) => {
|
|
|
247
245
|
import_react5.NativeSelect.Root,
|
|
248
246
|
{
|
|
249
247
|
"data-field-type": "SimpleDropdown",
|
|
250
|
-
"data-field-state": (0,
|
|
248
|
+
"data-field-state": (0, import_adapter_utils.getFieldState)({ error, required, readOnly }),
|
|
251
249
|
children: [
|
|
252
250
|
/* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(
|
|
253
251
|
import_react5.NativeSelect.Field,
|
|
@@ -256,7 +254,7 @@ var SimpleDropdown = (props) => {
|
|
|
256
254
|
onChange,
|
|
257
255
|
"aria-invalid": !!error,
|
|
258
256
|
"aria-required": required,
|
|
259
|
-
"data-testid": (0,
|
|
257
|
+
"data-testid": (0, import_adapter_utils.GetFieldDataTestId)(fieldName, programName, entityType, entityId),
|
|
260
258
|
children: [
|
|
261
259
|
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)("option", { value: "", children: placeholder ?? config?.placeHolder ?? "" }),
|
|
262
260
|
simpleOptions.map((option) => /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("option", { value: option, children: option }, option))
|
|
@@ -310,8 +308,8 @@ var MultiSelect = (props) => {
|
|
|
310
308
|
"aria-invalid": !!error,
|
|
311
309
|
"aria-required": required,
|
|
312
310
|
"data-field-type": "MultiSelect",
|
|
313
|
-
"data-field-state": (0,
|
|
314
|
-
"data-testid": (0,
|
|
311
|
+
"data-field-state": (0, import_adapter_utils.getFieldState)({ error, required, readOnly }),
|
|
312
|
+
"data-testid": (0, import_adapter_utils.GetFieldDataTestId)(fieldName, programName, entityType, entityId),
|
|
315
313
|
children: options?.map((option) => /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("option", { value: String(option.value), disabled: option.disabled, children: option.label }, String(option.value)))
|
|
316
314
|
}
|
|
317
315
|
);
|
|
@@ -319,7 +317,7 @@ var MultiSelect = (props) => {
|
|
|
319
317
|
var MultiSelect_default = MultiSelect;
|
|
320
318
|
|
|
321
319
|
// src/fields/DateControl.tsx
|
|
322
|
-
var
|
|
320
|
+
var import_core = require("@form-eng/core");
|
|
323
321
|
var import_react6 = require("@chakra-ui/react");
|
|
324
322
|
var import_jsx_runtime8 = require("react/jsx-runtime");
|
|
325
323
|
var DateControl = (props) => {
|
|
@@ -342,7 +340,7 @@ var DateControl = (props) => {
|
|
|
342
340
|
dateTime: value,
|
|
343
341
|
"data-field-type": "DateControl",
|
|
344
342
|
"data-field-state": "readonly",
|
|
345
|
-
children: (0,
|
|
343
|
+
children: (0, import_adapter_utils.formatDateTime)(value, { hideTimestamp: true })
|
|
346
344
|
}
|
|
347
345
|
) : /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("span", { className: "fe-read-only-text", children: "-" });
|
|
348
346
|
}
|
|
@@ -351,7 +349,7 @@ var DateControl = (props) => {
|
|
|
351
349
|
{
|
|
352
350
|
style: { display: "flex", alignItems: "center", gap: "8px" },
|
|
353
351
|
"data-field-type": "DateControl",
|
|
354
|
-
"data-field-state": (0,
|
|
352
|
+
"data-field-state": (0, import_adapter_utils.getFieldState)({ error, required, readOnly }),
|
|
355
353
|
children: [
|
|
356
354
|
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
|
|
357
355
|
import_react6.Input,
|
|
@@ -361,7 +359,7 @@ var DateControl = (props) => {
|
|
|
361
359
|
onChange,
|
|
362
360
|
"aria-invalid": !!error,
|
|
363
361
|
"aria-required": required,
|
|
364
|
-
"data-testid": (0,
|
|
362
|
+
"data-testid": (0, import_adapter_utils.GetFieldDataTestId)(fieldName, programName, entityType, entityId)
|
|
365
363
|
}
|
|
366
364
|
),
|
|
367
365
|
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
|
|
@@ -369,8 +367,8 @@ var DateControl = (props) => {
|
|
|
369
367
|
{
|
|
370
368
|
type: "button",
|
|
371
369
|
onClick: onClear,
|
|
372
|
-
title:
|
|
373
|
-
"aria-label": `${fieldName} ${
|
|
370
|
+
title: import_core.FormStrings.clickToClear,
|
|
371
|
+
"aria-label": `${fieldName} ${import_core.FormStrings.clear}`,
|
|
374
372
|
style: {
|
|
375
373
|
background: "none",
|
|
376
374
|
border: "none",
|
|
@@ -403,7 +401,7 @@ var Slider = (props) => {
|
|
|
403
401
|
{
|
|
404
402
|
style: { display: "flex", alignItems: "center", gap: "12px" },
|
|
405
403
|
"data-field-type": "Slider",
|
|
406
|
-
"data-field-state": (0,
|
|
404
|
+
"data-field-state": (0, import_adapter_utils.getFieldState)({ error, required, readOnly }),
|
|
407
405
|
children: [
|
|
408
406
|
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
|
|
409
407
|
"input",
|
|
@@ -423,7 +421,7 @@ var Slider = (props) => {
|
|
|
423
421
|
"aria-valuenow": value ?? 0,
|
|
424
422
|
"aria-valuemin": config?.min ?? 0,
|
|
425
423
|
"aria-valuemax": config?.max ?? 100,
|
|
426
|
-
"data-testid": (0,
|
|
424
|
+
"data-testid": (0, import_adapter_utils.GetFieldDataTestId)(fieldName, programName, entityType, entityId)
|
|
427
425
|
}
|
|
428
426
|
),
|
|
429
427
|
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)("output", { style: { minWidth: "32px", textAlign: "center", fontSize: "var(--chakra-fontSizes-md, 16px)" }, children: String(value) })
|
|
@@ -452,8 +450,8 @@ var RadioGroup = (props) => {
|
|
|
452
450
|
"aria-invalid": !!error,
|
|
453
451
|
"aria-required": required,
|
|
454
452
|
"data-field-type": "RadioGroup",
|
|
455
|
-
"data-field-state": (0,
|
|
456
|
-
"data-testid": (0,
|
|
453
|
+
"data-field-state": (0, import_adapter_utils.getFieldState)({ error, required, readOnly }),
|
|
454
|
+
"data-testid": (0, import_adapter_utils.GetFieldDataTestId)(fieldName, programName, entityType, entityId),
|
|
457
455
|
children: options?.map((option) => /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(
|
|
458
456
|
"label",
|
|
459
457
|
{
|
|
@@ -508,8 +506,8 @@ var CheckboxGroup = (props) => {
|
|
|
508
506
|
"aria-invalid": !!error,
|
|
509
507
|
"aria-required": required,
|
|
510
508
|
"data-field-type": "CheckboxGroup",
|
|
511
|
-
"data-field-state": (0,
|
|
512
|
-
"data-testid": (0,
|
|
509
|
+
"data-field-state": (0, import_adapter_utils.getFieldState)({ error, required, readOnly }),
|
|
510
|
+
"data-testid": (0, import_adapter_utils.GetFieldDataTestId)(fieldName, programName, entityType, entityId),
|
|
513
511
|
children: options?.map((option) => /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(
|
|
514
512
|
"label",
|
|
515
513
|
{
|
|
@@ -544,23 +542,23 @@ var CheckboxGroup = (props) => {
|
|
|
544
542
|
var CheckboxGroup_default = CheckboxGroup;
|
|
545
543
|
|
|
546
544
|
// src/fields/Textarea.tsx
|
|
547
|
-
var
|
|
545
|
+
var import_core3 = require("@form-eng/core");
|
|
548
546
|
var import_react7 = require("@chakra-ui/react");
|
|
549
547
|
var import_react8 = __toESM(require("react"));
|
|
550
548
|
|
|
551
549
|
// src/components/StatusMessage.tsx
|
|
552
|
-
var
|
|
550
|
+
var import_core2 = require("@form-eng/core");
|
|
553
551
|
var import_jsx_runtime12 = require("react/jsx-runtime");
|
|
554
552
|
var StatusMessage = (props) => {
|
|
555
553
|
const { id, error, errorCount, savePending, saving } = props;
|
|
556
554
|
return /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("div", { className: "fe-status-message", children: error ? /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("span", { id, role: "alert", style: { color: "var(--chakra-colors-red-500, #E53E3E)" }, children: error.message || "Error" }) : savePending ? /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)("span", { id, role: "alert", style: { color: "var(--chakra-colors-orange-500, #DD6B20)" }, children: [
|
|
557
|
-
|
|
555
|
+
import_core2.FormStrings.autoSavePending,
|
|
558
556
|
" (",
|
|
559
557
|
errorCount,
|
|
560
558
|
" ",
|
|
561
|
-
|
|
559
|
+
import_core2.FormStrings.remaining,
|
|
562
560
|
")"
|
|
563
|
-
] }) : saving ? /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("span", { id, role: "status", style: { color: "var(--chakra-colors-gray-500, #718096)" }, children:
|
|
561
|
+
] }) : saving ? /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("span", { id, role: "status", style: { color: "var(--chakra-colors-gray-500, #718096)" }, children: import_core2.FormStrings.saving }) : null });
|
|
564
562
|
};
|
|
565
563
|
|
|
566
564
|
// src/fields/Textarea.tsx
|
|
@@ -632,7 +630,7 @@ var Textarea = (props) => {
|
|
|
632
630
|
"div",
|
|
633
631
|
{
|
|
634
632
|
"data-field-type": "Textarea",
|
|
635
|
-
"data-field-state": (0,
|
|
633
|
+
"data-field-state": (0, import_adapter_utils.getFieldState)({ error, required, readOnly }),
|
|
636
634
|
children: [
|
|
637
635
|
/* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
|
|
638
636
|
import_react7.Textarea,
|
|
@@ -643,7 +641,7 @@ var Textarea = (props) => {
|
|
|
643
641
|
rows: config?.numberOfRows ?? 4,
|
|
644
642
|
"aria-invalid": !!error,
|
|
645
643
|
"aria-required": required,
|
|
646
|
-
"data-testid": (0,
|
|
644
|
+
"data-testid": (0, import_adapter_utils.GetFieldDataTestId)(fieldName, programName, entityType, entityId)
|
|
647
645
|
}
|
|
648
646
|
),
|
|
649
647
|
/* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
|
|
@@ -651,7 +649,7 @@ var Textarea = (props) => {
|
|
|
651
649
|
{
|
|
652
650
|
type: "button",
|
|
653
651
|
onClick: onExpand,
|
|
654
|
-
"aria-label":
|
|
652
|
+
"aria-label": import_core3.FormStrings.openExpandedTextEditor,
|
|
655
653
|
style: {
|
|
656
654
|
marginTop: "4px",
|
|
657
655
|
background: "none",
|
|
@@ -661,7 +659,7 @@ var Textarea = (props) => {
|
|
|
661
659
|
fontSize: "var(--chakra-fontSizes-sm, 14px)",
|
|
662
660
|
padding: "2px 0"
|
|
663
661
|
},
|
|
664
|
-
children:
|
|
662
|
+
children: import_core3.FormStrings.expand
|
|
665
663
|
}
|
|
666
664
|
)
|
|
667
665
|
]
|
|
@@ -678,7 +676,7 @@ var Textarea = (props) => {
|
|
|
678
676
|
{
|
|
679
677
|
type: "button",
|
|
680
678
|
onClick: onCancel,
|
|
681
|
-
"aria-label":
|
|
679
|
+
"aria-label": import_core3.FormStrings.closeExpandedTextEditor,
|
|
682
680
|
style: { background: "none", border: "none", cursor: "pointer", fontSize: "20px" },
|
|
683
681
|
children: "\xD7"
|
|
684
682
|
}
|
|
@@ -703,7 +701,7 @@ var Textarea = (props) => {
|
|
|
703
701
|
type: "button",
|
|
704
702
|
onClick: onCancel,
|
|
705
703
|
style: { padding: "6px 16px", borderRadius: "6px", border: "1px solid var(--chakra-colors-gray-200, #E2E8F0)", background: "white", cursor: "pointer" },
|
|
706
|
-
children:
|
|
704
|
+
children: import_core3.FormStrings.cancel
|
|
707
705
|
}
|
|
708
706
|
),
|
|
709
707
|
/* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
|
|
@@ -714,14 +712,14 @@ var Textarea = (props) => {
|
|
|
714
712
|
disabled: !config?.saveCallback && modalValue === value,
|
|
715
713
|
style: { padding: "6px 16px", borderRadius: "6px", border: "none", background: "var(--chakra-colors-blue-500, #3182CE)", color: "white", cursor: "pointer" },
|
|
716
714
|
"data-testid": `${programName}-${entityType}-${entityId}-save-note`,
|
|
717
|
-
children:
|
|
715
|
+
children: import_core3.FormStrings.save
|
|
718
716
|
}
|
|
719
717
|
)
|
|
720
718
|
] })
|
|
721
719
|
] }),
|
|
722
720
|
/* @__PURE__ */ (0, import_jsx_runtime13.jsxs)("dialog", { ref: confirmRef, style: { padding: "24px", borderRadius: "8px", border: "1px solid var(--chakra-colors-gray-200, #E2E8F0)" }, children: [
|
|
723
|
-
/* @__PURE__ */ (0, import_jsx_runtime13.jsx)("h2", { style: { margin: "0 0 8px 0", fontSize: "18px" }, children:
|
|
724
|
-
/* @__PURE__ */ (0, import_jsx_runtime13.jsx)("p", { children:
|
|
721
|
+
/* @__PURE__ */ (0, import_jsx_runtime13.jsx)("h2", { style: { margin: "0 0 8px 0", fontSize: "18px" }, children: import_core3.FormStrings.unsavedChanges }),
|
|
722
|
+
/* @__PURE__ */ (0, import_jsx_runtime13.jsx)("p", { children: import_core3.FormStrings.saveChangesTo(label) }),
|
|
725
723
|
/* @__PURE__ */ (0, import_jsx_runtime13.jsxs)("footer", { style: { display: "flex", justifyContent: "flex-end", gap: "8px", marginTop: "16px" }, children: [
|
|
726
724
|
/* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
|
|
727
725
|
"button",
|
|
@@ -729,7 +727,7 @@ var Textarea = (props) => {
|
|
|
729
727
|
type: "button",
|
|
730
728
|
onClick: onCancel,
|
|
731
729
|
style: { padding: "6px 16px", borderRadius: "6px", border: "1px solid var(--chakra-colors-gray-200, #E2E8F0)", background: "white", cursor: "pointer" },
|
|
732
|
-
children:
|
|
730
|
+
children: import_core3.FormStrings.dontSave
|
|
733
731
|
}
|
|
734
732
|
),
|
|
735
733
|
/* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
|
|
@@ -738,7 +736,7 @@ var Textarea = (props) => {
|
|
|
738
736
|
type: "button",
|
|
739
737
|
onClick: onSave,
|
|
740
738
|
style: { padding: "6px 16px", borderRadius: "6px", border: "none", background: "var(--chakra-colors-blue-500, #3182CE)", color: "white", cursor: "pointer" },
|
|
741
|
-
children:
|
|
739
|
+
children: import_core3.FormStrings.save
|
|
742
740
|
}
|
|
743
741
|
)
|
|
744
742
|
] })
|
|
@@ -764,12 +762,12 @@ var ReadOnly = (props) => {
|
|
|
764
762
|
var ReadOnly_default = ReadOnly;
|
|
765
763
|
|
|
766
764
|
// src/components/FormLoading.tsx
|
|
767
|
-
var
|
|
765
|
+
var import_core4 = require("@form-eng/core");
|
|
768
766
|
var import_jsx_runtime16 = require("react/jsx-runtime");
|
|
769
767
|
var FormLoading = (props) => {
|
|
770
768
|
const { loadingShimmerCount, loadingFieldShimmerHeight, inPanel, hideTitleShimmer } = props;
|
|
771
|
-
const count = loadingShimmerCount ||
|
|
772
|
-
const height = loadingFieldShimmerHeight ||
|
|
769
|
+
const count = loadingShimmerCount || import_core4.FormConstants.loadingShimmerCount;
|
|
770
|
+
const height = loadingFieldShimmerHeight || import_core4.FormConstants.loadingFieldShimmerHeight;
|
|
773
771
|
return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
|
|
774
772
|
"div",
|
|
775
773
|
{
|
|
@@ -785,23 +783,23 @@ var FormLoading = (props) => {
|
|
|
785
783
|
};
|
|
786
784
|
|
|
787
785
|
// src/registry.ts
|
|
788
|
-
var
|
|
786
|
+
var import_core5 = require("@form-eng/core");
|
|
789
787
|
var import_react9 = __toESM(require("react"));
|
|
790
788
|
function createChakraFieldRegistry() {
|
|
791
789
|
return {
|
|
792
|
-
[
|
|
793
|
-
[
|
|
794
|
-
[
|
|
795
|
-
[
|
|
796
|
-
[
|
|
797
|
-
[
|
|
798
|
-
[
|
|
799
|
-
[
|
|
800
|
-
[
|
|
801
|
-
[
|
|
802
|
-
[
|
|
803
|
-
[
|
|
804
|
-
[
|
|
790
|
+
[import_core5.ComponentTypes.Textbox]: import_react9.default.createElement(Textbox_default),
|
|
791
|
+
[import_core5.ComponentTypes.Number]: import_react9.default.createElement(Number_default),
|
|
792
|
+
[import_core5.ComponentTypes.Toggle]: import_react9.default.createElement(Toggle_default),
|
|
793
|
+
[import_core5.ComponentTypes.Dropdown]: import_react9.default.createElement(Dropdown_default),
|
|
794
|
+
[import_core5.ComponentTypes.SimpleDropdown]: import_react9.default.createElement(SimpleDropdown_default),
|
|
795
|
+
[import_core5.ComponentTypes.MultiSelect]: import_react9.default.createElement(MultiSelect_default),
|
|
796
|
+
[import_core5.ComponentTypes.DateControl]: import_react9.default.createElement(DateControl_default),
|
|
797
|
+
[import_core5.ComponentTypes.Slider]: import_react9.default.createElement(Slider_default),
|
|
798
|
+
[import_core5.ComponentTypes.RadioGroup]: import_react9.default.createElement(RadioGroup_default),
|
|
799
|
+
[import_core5.ComponentTypes.CheckboxGroup]: import_react9.default.createElement(CheckboxGroup_default),
|
|
800
|
+
[import_core5.ComponentTypes.Textarea]: import_react9.default.createElement(Textarea_default),
|
|
801
|
+
[import_core5.ComponentTypes.Fragment]: import_react9.default.createElement(DynamicFragment_default),
|
|
802
|
+
[import_core5.ComponentTypes.ReadOnly]: import_react9.default.createElement(ReadOnly_default)
|
|
805
803
|
};
|
|
806
804
|
}
|
|
807
805
|
// Annotate the CommonJS export names for ESM import in node:
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts","../src/fields/Textbox.tsx","../src/components/ReadOnlyText.tsx","../src/helpers.ts","../src/fields/Number.tsx","../src/fields/Toggle.tsx","../src/fields/Dropdown.tsx","../src/fields/SimpleDropdown.tsx","../src/fields/MultiSelect.tsx","../src/fields/DateControl.tsx","../src/fields/Slider.tsx","../src/fields/RadioGroup.tsx","../src/fields/CheckboxGroup.tsx","../src/fields/Textarea.tsx","../src/components/StatusMessage.tsx","../src/fields/DynamicFragment.tsx","../src/fields/readonly/ReadOnly.tsx","../src/components/FormLoading.tsx","../src/registry.ts"],"sourcesContent":["// Field components\nexport { default as Textbox } from \"./fields/Textbox\";\nexport { default as Number } from \"./fields/Number\";\nexport { default as Toggle } from \"./fields/Toggle\";\nexport { default as Dropdown } from \"./fields/Dropdown\";\nexport { default as SimpleDropdown } from \"./fields/SimpleDropdown\";\nexport { default as MultiSelect } from \"./fields/MultiSelect\";\nexport { default as DateControl } from \"./fields/DateControl\";\nexport { default as Slider } from \"./fields/Slider\";\nexport { default as RadioGroup } from \"./fields/RadioGroup\";\nexport { default as CheckboxGroup } from \"./fields/CheckboxGroup\";\nexport { default as Textarea } from \"./fields/Textarea\";\nexport { default as DynamicFragment } from \"./fields/DynamicFragment\";\n\n// Read-only fields\nexport { default as ReadOnly } from \"./fields/readonly/ReadOnly\";\n\n// Supporting components\nexport { ReadOnlyText } from \"./components/ReadOnlyText\";\nexport type { IReadOnlyFieldProps } from \"./components/ReadOnlyText\";\nexport { StatusMessage } from \"./components/StatusMessage\";\nexport { FormLoading } from \"./components/FormLoading\";\n\n// Registry\nexport { createChakraFieldRegistry } from \"./registry\";\n\n// Helpers\nexport { FieldClassName, GetFieldDataTestId, getFieldState, formatDateTime, DocumentLinksStrings } from \"./helpers\";\n","import { IFieldProps } from \"@form-eng/core\";\nimport { Input } from \"@chakra-ui/react\";\nimport React from \"react\";\nimport { ReadOnlyText } from \"../components/ReadOnlyText\";\nimport { GetFieldDataTestId, getFieldState } from \"../helpers\";\n\ninterface ITextboxProps {\n ellipsifyTextCharacters?: number;\n placeHolder?: string;\n multiline?: boolean;\n}\n\nconst Textbox = (props: IFieldProps<ITextboxProps>) => {\n const { fieldName, programName, entityType, entityId, value, readOnly, config, error, required, placeholder, setFieldValue } = props;\n\n const onChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n setFieldValue(fieldName, event.target.value, false, 3000);\n };\n\n if (readOnly) {\n return (\n <ReadOnlyText\n fieldName={fieldName}\n value={value as string}\n ellipsifyTextCharacters={config?.ellipsifyTextCharacters}\n />\n );\n }\n\n return (\n <Input\n type=\"text\"\n autoComplete=\"off\"\n value={(value as string) ?? \"\"}\n onChange={onChange}\n placeholder={placeholder ?? config?.placeHolder}\n aria-invalid={!!error}\n aria-required={required}\n data-field-type=\"Textbox\"\n data-field-state={getFieldState({ error, required, readOnly })}\n data-testid={GetFieldDataTestId(fieldName, programName, entityType, entityId)}\n />\n );\n};\n\nexport default Textbox;\n","import React from \"react\";\n\nexport interface IReadOnlyFieldProps {\n readonly value?: string;\n readonly fieldName?: string;\n readonly labelClassName?: string;\n readonly valueClassName?: string;\n readonly showControlOnSide?: boolean;\n readonly containerClassName?: string;\n readonly ellipsifyTextCharacters?: number;\n}\n\nexport const ReadOnlyText: React.FunctionComponent<IReadOnlyFieldProps> = (props) => {\n const { value, fieldName, ellipsifyTextCharacters } = props;\n const cutoff = (ellipsifyTextCharacters || 0) - 3;\n\n const displayValue = value\n ? ellipsifyTextCharacters && value.length > ellipsifyTextCharacters\n ? `${value.substring(0, cutoff)}...`\n : value\n : \"-\";\n\n return (\n <span\n id={`${fieldName}-read-only`}\n className=\"fe-read-only-text\"\n title={value}\n >\n {displayValue}\n </span>\n );\n};\n\nexport default ReadOnlyText;\n","// Re-export shared field utilities from core\nexport {\n FieldClassName,\n GetFieldDataTestId,\n getFieldState,\n formatDateTime,\n DocumentLinksStrings,\n} from \"@form-eng/core\";\n","import { IFieldProps, isNull } from \"@form-eng/core\";\nimport { Input } from \"@chakra-ui/react\";\nimport React from \"react\";\nimport { ReadOnlyText } from \"../components/ReadOnlyText\";\nimport { GetFieldDataTestId, getFieldState } from \"../helpers\";\n\nconst NumberField = (props: IFieldProps<{}>) => {\n const { fieldName, programName, entityType, entityId, value, readOnly, error, required, setFieldValue } = props;\n\n const onChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n const number = Number(event.target.value);\n if (!isNaN(number)) {\n setFieldValue(fieldName, number, false, 1500);\n }\n };\n\n if (readOnly) {\n return <ReadOnlyText fieldName={fieldName} value={String(value)} />;\n }\n\n return (\n <Input\n type=\"number\"\n autoComplete=\"off\"\n value={!isNull(value) ? String(value) : \"\"}\n onChange={onChange}\n aria-invalid={!!error}\n aria-required={required}\n data-field-type=\"Number\"\n data-field-state={getFieldState({ error, required, readOnly })}\n data-testid={GetFieldDataTestId(fieldName, programName, entityType, entityId)}\n />\n );\n};\n\nexport default NumberField;\n","import { IFieldProps, convertBooleanToYesOrNoText } from \"@form-eng/core\";\nimport React from \"react\";\nimport { ReadOnlyText } from \"../components/ReadOnlyText\";\nimport { GetFieldDataTestId, getFieldState } from \"../helpers\";\n\nconst Toggle = (props: IFieldProps<{}>) => {\n const { fieldName, programName, entityType, entityId, value, readOnly, error, required, label, setFieldValue } = props;\n\n const onChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n setFieldValue(fieldName, event.target.checked);\n };\n\n if (readOnly) {\n return <ReadOnlyText fieldName={fieldName} value={convertBooleanToYesOrNoText(value as boolean)} />;\n }\n\n return (\n <label\n style={{\n display: \"inline-flex\",\n alignItems: \"center\",\n gap: \"8px\",\n cursor: \"pointer\",\n }}\n data-field-type=\"Toggle\"\n data-field-state={getFieldState({ error, required, readOnly })}\n >\n <input\n type=\"checkbox\"\n role=\"switch\"\n checked={!!value}\n onChange={onChange}\n aria-invalid={!!error}\n aria-required={required}\n data-testid={GetFieldDataTestId(fieldName, programName, entityType, entityId)}\n style={{ accentColor: \"var(--chakra-colors-blue-500, #3182CE)\" }}\n />\n {label && <span style={{ fontSize: \"var(--chakra-fontSizes-md, 16px)\" }}>{label}</span>}\n </label>\n );\n};\n\nexport default Toggle;\n","import { IFieldProps } from \"@form-eng/core\";\nimport { NativeSelect } from \"@chakra-ui/react\";\nimport React from \"react\";\nimport { ReadOnlyText } from \"../components/ReadOnlyText\";\nimport { GetFieldDataTestId, getFieldState } from \"../helpers\";\n\ninterface IDropdownProps {\n placeHolder?: string;\n setDefaultKeyIfOnlyOneOption?: boolean;\n}\n\nconst Dropdown = (props: IFieldProps<IDropdownProps>) => {\n const { fieldName, programName, entityType, entityId, value, readOnly, config, error, required, options, placeholder, setFieldValue } = props;\n\n const onChange = (event: React.ChangeEvent<HTMLSelectElement>) => {\n setFieldValue(fieldName, event.target.value);\n };\n\n React.useEffect(() => {\n if (!value && !readOnly && config?.setDefaultKeyIfOnlyOneOption && options?.length === 1) {\n setFieldValue(fieldName, String(options[0].value));\n }\n }, [options]);\n\n if (readOnly) {\n return <ReadOnlyText fieldName={fieldName} value={value as string} />;\n }\n\n return (\n <NativeSelect.Root\n data-field-type=\"Dropdown\"\n data-field-state={getFieldState({ error, required, readOnly })}\n >\n <NativeSelect.Field\n value={(value as string) ?? \"\"}\n onChange={onChange}\n aria-invalid={!!error}\n aria-required={required}\n data-testid={GetFieldDataTestId(fieldName, programName, entityType, entityId)}\n >\n <option value=\"\">{placeholder ?? config?.placeHolder ?? \"\"}</option>\n {options?.map(option => (\n <option key={String(option.value)} value={String(option.value)} disabled={option.disabled}>\n {option.label}\n </option>\n ))}\n </NativeSelect.Field>\n <NativeSelect.Indicator />\n </NativeSelect.Root>\n );\n};\n\nexport default Dropdown;\n","import { IFieldProps } from \"@form-eng/core\";\nimport { NativeSelect } from \"@chakra-ui/react\";\nimport React from \"react\";\nimport { ReadOnlyText } from \"../components/ReadOnlyText\";\nimport { GetFieldDataTestId, getFieldState } from \"../helpers\";\n\ninterface ISimpleDropdownProps {\n dropdownOptions?: string[];\n placeHolder?: string;\n}\n\nconst SimpleDropdown = (props: IFieldProps<ISimpleDropdownProps>) => {\n const { fieldName, programName, entityType, entityId, value, readOnly, config, error, required, placeholder, setFieldValue } = props;\n\n const simpleOptions = config?.dropdownOptions ?? [];\n\n const onChange = (event: React.ChangeEvent<HTMLSelectElement>) => {\n setFieldValue(fieldName, event.target.value);\n };\n\n if (readOnly) {\n return <ReadOnlyText fieldName={fieldName} value={value as string} />;\n }\n\n return (\n <NativeSelect.Root\n data-field-type=\"SimpleDropdown\"\n data-field-state={getFieldState({ error, required, readOnly })}\n >\n <NativeSelect.Field\n value={(value as string) ?? \"\"}\n onChange={onChange}\n aria-invalid={!!error}\n aria-required={required}\n data-testid={GetFieldDataTestId(fieldName, programName, entityType, entityId)}\n >\n <option value=\"\">{placeholder ?? config?.placeHolder ?? \"\"}</option>\n {simpleOptions.map(option => (\n <option key={option} value={option}>{option}</option>\n ))}\n </NativeSelect.Field>\n <NativeSelect.Indicator />\n </NativeSelect.Root>\n );\n};\n\nexport default SimpleDropdown;\n","import { IFieldProps } from \"@form-eng/core\";\nimport React from \"react\";\nimport { GetFieldDataTestId, getFieldState } from \"../helpers\";\n\nconst MultiSelect = (props: IFieldProps<{}>) => {\n const { fieldName, programName, entityType, entityId, value, readOnly, error, required, options, setFieldValue } = props;\n\n const selectedValues = (value as string[]) ?? [];\n\n const onChange = (event: React.ChangeEvent<HTMLSelectElement>) => {\n const selected = Array.from(event.target.selectedOptions, opt => opt.value);\n setFieldValue(fieldName, selected, false, 1500);\n };\n\n if (readOnly) {\n return selectedValues.length > 0 ? (\n <ul\n style={{ listStyle: \"none\", padding: 0, margin: 0 }}\n data-field-type=\"MultiSelect\"\n data-field-state=\"readonly\"\n >\n {selectedValues.map((v, i) => (\n <li key={i} style={{ padding: \"2px 0\" }}>{v}</li>\n ))}\n </ul>\n ) : (\n <span className=\"fe-read-only-text\">-</span>\n );\n }\n\n return (\n <select\n multiple\n style={{\n width: \"100%\",\n minHeight: \"80px\",\n padding: \"8px\",\n borderWidth: \"1px\",\n borderStyle: \"solid\",\n borderColor: error ? \"var(--chakra-colors-red-500, #E53E3E)\" : \"var(--chakra-colors-gray-200, #E2E8F0)\",\n borderRadius: \"var(--chakra-radii-md, 6px)\",\n fontSize: \"var(--chakra-fontSizes-md, 16px)\",\n background: \"var(--chakra-colors-white, #FFFFFF)\",\n }}\n value={selectedValues}\n onChange={onChange}\n aria-invalid={!!error}\n aria-required={required}\n data-field-type=\"MultiSelect\"\n data-field-state={getFieldState({ error, required, readOnly })}\n data-testid={GetFieldDataTestId(fieldName, programName, entityType, entityId)}\n >\n {options?.map(option => (\n <option key={String(option.value)} value={String(option.value)} disabled={option.disabled}>\n {option.label}\n </option>\n ))}\n </select>\n );\n};\n\nexport default MultiSelect;\n","import { IFieldProps, FormStrings } from \"@form-eng/core\";\nimport { Input } from \"@chakra-ui/react\";\nimport React from \"react\";\nimport { GetFieldDataTestId, getFieldState, formatDateTime } from \"../helpers\";\n\nconst DateControl = (props: IFieldProps<{}>) => {\n const { fieldName, programName, entityType, entityId, value, readOnly, error, required, setFieldValue } = props;\n\n const onChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n const date = new Date(event.target.value);\n if (!isNaN(date.getTime())) {\n setFieldValue(fieldName, date.toISOString());\n }\n };\n\n const onClear = () => {\n setFieldValue(fieldName, null);\n };\n\n const dateInputValue = value ? new Date(value as string).toISOString().split(\"T\")[0] : \"\";\n\n if (readOnly) {\n return value ? (\n <time\n className=\"fe-read-only-date\"\n dateTime={value as string}\n data-field-type=\"DateControl\"\n data-field-state=\"readonly\"\n >\n {formatDateTime(value as string, { hideTimestamp: true })}\n </time>\n ) : (\n <span className=\"fe-read-only-text\">-</span>\n );\n }\n\n return (\n <div\n style={{ display: \"flex\", alignItems: \"center\", gap: \"8px\" }}\n data-field-type=\"DateControl\"\n data-field-state={getFieldState({ error, required, readOnly })}\n >\n <Input\n type=\"date\"\n value={dateInputValue}\n onChange={onChange}\n aria-invalid={!!error}\n aria-required={required}\n data-testid={GetFieldDataTestId(fieldName, programName, entityType, entityId)}\n />\n <button\n type=\"button\"\n onClick={onClear}\n title={FormStrings.clickToClear}\n aria-label={`${fieldName} ${FormStrings.clear}`}\n style={{\n background: \"none\",\n border: \"none\",\n cursor: \"pointer\",\n fontSize: \"18px\",\n color: \"var(--chakra-colors-gray-500, #718096)\",\n padding: \"4px 8px\",\n }}\n >\n ×\n </button>\n </div>\n );\n};\n\nexport default DateControl;\n","import { IFieldProps } from \"@form-eng/core\";\nimport React from \"react\";\nimport { ReadOnlyText } from \"../components/ReadOnlyText\";\nimport { GetFieldDataTestId, getFieldState } from \"../helpers\";\n\ninterface ISliderProps {\n max?: number;\n min?: number;\n step?: number;\n}\n\nconst Slider = (props: IFieldProps<ISliderProps>) => {\n const { fieldName, programName, entityType, entityId, value, readOnly, config, error, required, setFieldValue } = props;\n\n const onChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n setFieldValue(fieldName, Number(event.target.value));\n };\n\n if (readOnly) {\n return <ReadOnlyText fieldName={fieldName} value={String(value)} />;\n }\n\n return (\n <div\n style={{ display: \"flex\", alignItems: \"center\", gap: \"12px\" }}\n data-field-type=\"Slider\"\n data-field-state={getFieldState({ error, required, readOnly })}\n >\n <input\n type=\"range\"\n style={{\n flex: 1,\n accentColor: \"var(--chakra-colors-blue-500, #3182CE)\",\n }}\n value={(value as number) ?? 0}\n onChange={onChange}\n max={config?.max ?? 100}\n min={config?.min ?? 0}\n step={config?.step ?? 1}\n aria-invalid={!!error}\n aria-required={required}\n aria-valuenow={(value as number) ?? 0}\n aria-valuemin={config?.min ?? 0}\n aria-valuemax={config?.max ?? 100}\n data-testid={GetFieldDataTestId(fieldName, programName, entityType, entityId)}\n />\n <output style={{ minWidth: \"32px\", textAlign: \"center\", fontSize: \"var(--chakra-fontSizes-md, 16px)\" }}>\n {String(value)}\n </output>\n </div>\n );\n};\n\nexport default Slider;\n","import { IFieldProps } from \"@form-eng/core\";\nimport React from \"react\";\nimport { ReadOnlyText } from \"../components/ReadOnlyText\";\nimport { GetFieldDataTestId, getFieldState } from \"../helpers\";\n\nconst RadioGroup = (props: IFieldProps<{}>) => {\n const { fieldName, programName, entityType, entityId, value, readOnly, error, required, options, setFieldValue } = props;\n\n const onChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n setFieldValue(fieldName, event.target.value);\n };\n\n if (readOnly) {\n const label = options?.find(o => String(o.value) === String(value))?.label ?? (value as string);\n return <ReadOnlyText fieldName={fieldName} value={label} />;\n }\n\n return (\n <div\n role=\"radiogroup\"\n style={{ display: \"flex\", flexDirection: \"column\", gap: \"8px\" }}\n aria-invalid={!!error}\n aria-required={required}\n data-field-type=\"RadioGroup\"\n data-field-state={getFieldState({ error, required, readOnly })}\n data-testid={GetFieldDataTestId(fieldName, programName, entityType, entityId)}\n >\n {options?.map(option => (\n <label\n key={String(option.value)}\n style={{\n display: \"flex\",\n alignItems: \"center\",\n gap: \"8px\",\n cursor: option.disabled ? \"not-allowed\" : \"pointer\",\n opacity: option.disabled ? 0.5 : 1,\n fontSize: \"var(--chakra-fontSizes-md, 16px)\",\n }}\n >\n <input\n type=\"radio\"\n name={fieldName}\n value={String(option.value)}\n checked={String(value) === String(option.value)}\n onChange={onChange}\n disabled={option.disabled}\n style={{ accentColor: \"var(--chakra-colors-blue-500, #3182CE)\" }}\n />\n <span>{option.label}</span>\n </label>\n ))}\n </div>\n );\n};\n\nexport default RadioGroup;\n","import { IFieldProps } from \"@form-eng/core\";\nimport React from \"react\";\nimport { ReadOnlyText } from \"../components/ReadOnlyText\";\nimport { GetFieldDataTestId, getFieldState } from \"../helpers\";\n\nconst CheckboxGroup = (props: IFieldProps<{}>) => {\n const { fieldName, programName, entityType, entityId, value, readOnly, error, required, options, setFieldValue } = props;\n\n const selected = Array.isArray(value) ? (value as string[]) : [];\n\n const onChange = (optionValue: string) => (event: React.ChangeEvent<HTMLInputElement>) => {\n const next = event.target.checked\n ? [...selected, optionValue]\n : selected.filter(v => v !== optionValue);\n setFieldValue(fieldName, next);\n };\n\n if (readOnly) {\n const labels = options\n ?.filter(o => selected.includes(String(o.value)))\n .map(o => o.label)\n .join(\", \");\n return <ReadOnlyText fieldName={fieldName} value={labels ?? \"\"} />;\n }\n\n return (\n <div\n style={{ display: \"flex\", flexDirection: \"column\", gap: \"8px\" }}\n aria-invalid={!!error}\n aria-required={required}\n data-field-type=\"CheckboxGroup\"\n data-field-state={getFieldState({ error, required, readOnly })}\n data-testid={GetFieldDataTestId(fieldName, programName, entityType, entityId)}\n >\n {options?.map(option => (\n <label\n key={String(option.value)}\n style={{\n display: \"flex\",\n alignItems: \"center\",\n gap: \"8px\",\n cursor: option.disabled ? \"not-allowed\" : \"pointer\",\n opacity: option.disabled ? 0.5 : 1,\n fontSize: \"var(--chakra-fontSizes-md, 16px)\",\n }}\n >\n <input\n type=\"checkbox\"\n value={String(option.value)}\n checked={selected.includes(String(option.value))}\n onChange={onChange(String(option.value))}\n disabled={option.disabled}\n style={{ accentColor: \"var(--chakra-colors-blue-500, #3182CE)\" }}\n />\n <span>{option.label}</span>\n </label>\n ))}\n </div>\n );\n};\n\nexport default CheckboxGroup;\n","import { IFieldProps, FormStrings } from \"@form-eng/core\";\nimport { Textarea as ChakraTextarea } from \"@chakra-ui/react\";\nimport React, { useState } from \"react\";\nimport { ReadOnlyText } from \"../components/ReadOnlyText\";\nimport { StatusMessage } from \"../components/StatusMessage\";\nimport { GetFieldDataTestId, getFieldState } from \"../helpers\";\n\ninterface ITextareaProps {\n autoAdjustHeight?: boolean;\n numberOfRows?: number;\n ellipsifyTextCharacters?: number;\n additionalInfo?: string;\n maxLimit?: number;\n saveCallback?: () => void;\n renderExtraModalFooter?: () => React.ReactNode;\n}\n\nconst Textarea = (props: IFieldProps<ITextareaProps>) => {\n const {\n error, fieldName, programName, entityType, entityId, config, readOnly,\n required, savePending, saving, value, label, setFieldValue\n } = props;\n\n const [modalValue, setModalValue] = useState<string>();\n const [modalVisible, setModalVisible] = useState(false);\n const [confirmVisible, setConfirmVisible] = useState(false);\n const dialogRef = React.useRef<HTMLDialogElement>(null);\n const confirmRef = React.useRef<HTMLDialogElement>(null);\n\n const onChange = (event: React.ChangeEvent<HTMLTextAreaElement>) => {\n const newValue = event.target.value;\n modalVisible ? setModalValue(newValue) : setFieldValue(fieldName, newValue, false, 3000);\n };\n\n const onExpand = () => {\n setModalVisible(true);\n setModalValue(value ? `${value}` : \"\");\n dialogRef.current?.showModal();\n };\n\n const onSave = () => {\n setFieldValue(fieldName, modalValue, false);\n setConfirmVisible(false);\n setModalVisible(false);\n dialogRef.current?.close();\n confirmRef.current?.close();\n config?.saveCallback?.();\n };\n\n const onCancel = () => {\n if (confirmVisible) {\n setConfirmVisible(false);\n setModalVisible(false);\n dialogRef.current?.close();\n confirmRef.current?.close();\n } else if (modalValue !== value) {\n setConfirmVisible(true);\n confirmRef.current?.showModal();\n } else {\n setModalVisible(false);\n dialogRef.current?.close();\n }\n };\n\n if (readOnly) {\n return (\n <ReadOnlyText\n fieldName={fieldName}\n value={value ? `${value}` : \"\"}\n ellipsifyTextCharacters={config?.ellipsifyTextCharacters}\n />\n );\n }\n\n return (\n <>\n <div\n data-field-type=\"Textarea\"\n data-field-state={getFieldState({ error, required, readOnly })}\n >\n <ChakraTextarea\n autoComplete=\"off\"\n value={modalVisible ? `${modalValue}` : value ? `${value}` : \"\"}\n onChange={onChange}\n rows={config?.numberOfRows ?? 4}\n aria-invalid={!!error}\n aria-required={required}\n data-testid={GetFieldDataTestId(fieldName, programName, entityType, entityId)}\n />\n <button\n type=\"button\"\n onClick={onExpand}\n aria-label={FormStrings.openExpandedTextEditor}\n style={{\n marginTop: \"4px\",\n background: \"none\",\n border: \"none\",\n cursor: \"pointer\",\n color: \"var(--chakra-colors-blue-500, #3182CE)\",\n fontSize: \"var(--chakra-fontSizes-sm, 14px)\",\n padding: \"2px 0\",\n }}\n >\n {FormStrings.expand}\n </button>\n </div>\n\n <dialog ref={dialogRef} style={{ padding: \"24px\", borderRadius: \"8px\", border: \"1px solid var(--chakra-colors-gray-200, #E2E8F0)\", maxWidth: \"640px\", width: \"100%\" }} aria-label={`${label} editor`}>\n <header style={{ display: \"flex\", justifyContent: \"space-between\", alignItems: \"center\", marginBottom: \"16px\" }}>\n <h2 style={{ margin: 0, fontSize: \"18px\" }}>\n {label}{required && <span style={{ color: \"var(--chakra-colors-red-500, #E53E3E)\" }}> *</span>}\n </h2>\n <button\n type=\"button\"\n onClick={onCancel}\n aria-label={FormStrings.closeExpandedTextEditor}\n style={{ background: \"none\", border: \"none\", cursor: \"pointer\", fontSize: \"20px\" }}\n >\n ×\n </button>\n </header>\n <div style={{ marginBottom: \"16px\" }}>\n <ChakraTextarea\n autoComplete=\"off\"\n value={modalVisible ? `${modalValue}` : value ? `${value}` : \"\"}\n onChange={onChange}\n rows={12}\n aria-invalid={!!error}\n />\n </div>\n <footer style={{ display: \"flex\", justifyContent: \"flex-end\", alignItems: \"center\", gap: \"8px\" }}>\n {config?.renderExtraModalFooter && <div>{config.renderExtraModalFooter()}</div>}\n {(savePending || saving) && (\n <StatusMessage savePending={!error ? savePending : undefined} saving={saving} error={error} />\n )}\n <button\n type=\"button\"\n onClick={onCancel}\n style={{ padding: \"6px 16px\", borderRadius: \"6px\", border: \"1px solid var(--chakra-colors-gray-200, #E2E8F0)\", background: \"white\", cursor: \"pointer\" }}\n >\n {FormStrings.cancel}\n </button>\n <button\n type=\"button\"\n onClick={onSave}\n disabled={!config?.saveCallback && modalValue === (value as string)}\n style={{ padding: \"6px 16px\", borderRadius: \"6px\", border: \"none\", background: \"var(--chakra-colors-blue-500, #3182CE)\", color: \"white\", cursor: \"pointer\" }}\n data-testid={`${programName}-${entityType}-${entityId}-save-note`}\n >\n {FormStrings.save}\n </button>\n </footer>\n </dialog>\n\n <dialog ref={confirmRef} style={{ padding: \"24px\", borderRadius: \"8px\", border: \"1px solid var(--chakra-colors-gray-200, #E2E8F0)\" }}>\n <h2 style={{ margin: \"0 0 8px 0\", fontSize: \"18px\" }}>{FormStrings.unsavedChanges}</h2>\n <p>{FormStrings.saveChangesTo(label)}</p>\n <footer style={{ display: \"flex\", justifyContent: \"flex-end\", gap: \"8px\", marginTop: \"16px\" }}>\n <button\n type=\"button\"\n onClick={onCancel}\n style={{ padding: \"6px 16px\", borderRadius: \"6px\", border: \"1px solid var(--chakra-colors-gray-200, #E2E8F0)\", background: \"white\", cursor: \"pointer\" }}\n >\n {FormStrings.dontSave}\n </button>\n <button\n type=\"button\"\n onClick={onSave}\n style={{ padding: \"6px 16px\", borderRadius: \"6px\", border: \"none\", background: \"var(--chakra-colors-blue-500, #3182CE)\", color: \"white\", cursor: \"pointer\" }}\n >\n {FormStrings.save}\n </button>\n </footer>\n </dialog>\n </>\n );\n};\n\nexport default Textarea;\n","import { FormStrings } from \"@form-eng/core\";\nimport React from \"react\";\nimport { FieldError } from \"react-hook-form\";\n\ninterface IStatusMessageProps {\n id?: string;\n readonly error?: FieldError;\n readonly errorCount?: number;\n readonly savePending?: boolean;\n readonly saving?: boolean;\n}\n\nexport const StatusMessage: React.FunctionComponent<IStatusMessageProps> = (props) => {\n const { id, error, errorCount, savePending, saving } = props;\n return (\n <div className=\"fe-status-message\">\n {error ? (\n <span id={id} role=\"alert\" style={{ color: \"var(--chakra-colors-red-500, #E53E3E)\" }}>\n {error.message || \"Error\"}\n </span>\n ) : savePending ? (\n <span id={id} role=\"alert\" style={{ color: \"var(--chakra-colors-orange-500, #DD6B20)\" }}>\n {FormStrings.autoSavePending} ({errorCount} {FormStrings.remaining})\n </span>\n ) : saving ? (\n <span id={id} role=\"status\" style={{ color: \"var(--chakra-colors-gray-500, #718096)\" }}>\n {FormStrings.saving}\n </span>\n ) : null}\n </div>\n );\n};\n","import { IFieldProps } from \"@form-eng/core\";\nimport React from \"react\";\n\nconst DynamicFragment = (props: IFieldProps<{}>) => {\n const { value } = props;\n return <input type=\"hidden\" value={value as string} />;\n};\n\nexport default DynamicFragment;\n","import { IFieldProps } from \"@form-eng/core\";\nimport React from \"react\";\nimport { ReadOnlyText, IReadOnlyFieldProps } from \"../../components/ReadOnlyText\";\n\nconst ReadOnly = (props: IFieldProps<IReadOnlyFieldProps>) => {\n const { fieldName, value, config } = props;\n return <ReadOnlyText fieldName={fieldName} value={value as string} {...config} />;\n};\n\nexport default ReadOnly;\n","import { FormConstants } from \"@form-eng/core\";\nimport React from \"react\";\n\ninterface IFormLoadingProps {\n loadingShimmerCount?: number;\n loadingFieldShimmerHeight?: number;\n inPanel?: boolean;\n hideTitleShimmer?: boolean;\n}\n\nexport const FormLoading = (props: IFormLoadingProps) => {\n const { loadingShimmerCount, loadingFieldShimmerHeight, inPanel, hideTitleShimmer } = props;\n const count = loadingShimmerCount || FormConstants.loadingShimmerCount;\n const height = loadingFieldShimmerHeight || FormConstants.loadingFieldShimmerHeight;\n\n return (\n <div\n className={`fe-form-loading ${inPanel ? \"fe-form-loading--panel\" : \"\"}`}\n role=\"status\"\n aria-label=\"Loading form\"\n >\n {[...Array(count)].map((_, i) => (\n <div key={`fe-loading-${i}`} style={{ marginBottom: 16 }}>\n {!hideTitleShimmer && (\n <div className=\"fe-skeleton\" style={{ width: \"33%\", height: 16, marginBottom: 8, background: \"var(--chakra-colors-gray-200, #E2E8F0)\", borderRadius: 4 }} />\n )}\n <div className=\"fe-skeleton\" style={{ width: \"100%\", height, background: \"var(--chakra-colors-gray-200, #E2E8F0)\", borderRadius: 4 }} />\n </div>\n ))}\n </div>\n );\n};\n\nexport default FormLoading;\n","import { ComponentTypes, Dictionary } from \"@form-eng/core\";\nimport React from \"react\";\nimport Textbox from \"./fields/Textbox\";\nimport NumberField from \"./fields/Number\";\nimport Toggle from \"./fields/Toggle\";\nimport Dropdown from \"./fields/Dropdown\";\nimport SimpleDropdown from \"./fields/SimpleDropdown\";\nimport MultiSelect from \"./fields/MultiSelect\";\nimport DateControl from \"./fields/DateControl\";\nimport Slider from \"./fields/Slider\";\nimport RadioGroup from \"./fields/RadioGroup\";\nimport CheckboxGroup from \"./fields/CheckboxGroup\";\nimport Textarea from \"./fields/Textarea\";\nimport DynamicFragment from \"./fields/DynamicFragment\";\nimport ReadOnly from \"./fields/readonly/ReadOnly\";\n\n/** Creates the default Chakra UI v3 field registry for use with InjectedFieldProvider */\nexport function createChakraFieldRegistry(): Dictionary<React.JSX.Element> {\n return {\n [ComponentTypes.Textbox]: React.createElement(Textbox),\n [ComponentTypes.Number]: React.createElement(NumberField),\n [ComponentTypes.Toggle]: React.createElement(Toggle),\n [ComponentTypes.Dropdown]: React.createElement(Dropdown),\n [ComponentTypes.SimpleDropdown]: React.createElement(SimpleDropdown),\n [ComponentTypes.MultiSelect]: React.createElement(MultiSelect),\n [ComponentTypes.DateControl]: React.createElement(DateControl),\n [ComponentTypes.Slider]: React.createElement(Slider),\n [ComponentTypes.RadioGroup]: React.createElement(RadioGroup),\n [ComponentTypes.CheckboxGroup]: React.createElement(CheckboxGroup),\n [ComponentTypes.Textarea]: React.createElement(Textarea),\n [ComponentTypes.Fragment]: React.createElement(DynamicFragment),\n [ComponentTypes.ReadOnly]: React.createElement(ReadOnly),\n };\n}\n"],"mappings":"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","names":["import_jsx_runtime","import_core","import_react","import_jsx_runtime","import_core","import_jsx_runtime","import_react","import_jsx_runtime","React","import_react","import_jsx_runtime","import_jsx_runtime","import_core","import_react","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_core","import_react","import_core","import_jsx_runtime","import_jsx_runtime","React","ChakraTextarea","import_jsx_runtime","import_jsx_runtime","import_core","import_jsx_runtime","import_core","import_react","React"]}
|
|
1
|
+
{"version":3,"sources":["../src/index.ts","../src/fields/Textbox.tsx","../src/components/ReadOnlyText.tsx","../src/helpers.ts","../src/fields/Number.tsx","../src/fields/Toggle.tsx","../src/fields/Dropdown.tsx","../src/fields/SimpleDropdown.tsx","../src/fields/MultiSelect.tsx","../src/fields/DateControl.tsx","../src/fields/Slider.tsx","../src/fields/RadioGroup.tsx","../src/fields/CheckboxGroup.tsx","../src/fields/Textarea.tsx","../src/components/StatusMessage.tsx","../src/fields/DynamicFragment.tsx","../src/fields/readonly/ReadOnly.tsx","../src/components/FormLoading.tsx","../src/registry.ts"],"sourcesContent":["// Field components\nexport { default as Textbox } from \"./fields/Textbox\";\nexport { default as Number } from \"./fields/Number\";\nexport { default as Toggle } from \"./fields/Toggle\";\nexport { default as Dropdown } from \"./fields/Dropdown\";\nexport { default as SimpleDropdown } from \"./fields/SimpleDropdown\";\nexport { default as MultiSelect } from \"./fields/MultiSelect\";\nexport { default as DateControl } from \"./fields/DateControl\";\nexport { default as Slider } from \"./fields/Slider\";\nexport { default as RadioGroup } from \"./fields/RadioGroup\";\nexport { default as CheckboxGroup } from \"./fields/CheckboxGroup\";\nexport { default as Textarea } from \"./fields/Textarea\";\nexport { default as DynamicFragment } from \"./fields/DynamicFragment\";\n\n// Read-only fields\nexport { default as ReadOnly } from \"./fields/readonly/ReadOnly\";\n\n// Supporting components\nexport { ReadOnlyText } from \"./components/ReadOnlyText\";\nexport type { IReadOnlyFieldProps } from \"./components/ReadOnlyText\";\nexport { StatusMessage } from \"./components/StatusMessage\";\nexport { FormLoading } from \"./components/FormLoading\";\n\n// Registry\nexport { createChakraFieldRegistry } from \"./registry\";\n\n// Helpers\nexport { FieldClassName, GetFieldDataTestId, getFieldState, formatDateTime, DocumentLinksStrings } from \"./helpers\";\n","import { IFieldProps } from \"@form-eng/core\";\nimport { Input } from \"@chakra-ui/react\";\nimport React from \"react\";\nimport { ReadOnlyText } from \"../components/ReadOnlyText\";\nimport { GetFieldDataTestId, getFieldState } from \"../helpers\";\n\ninterface ITextboxProps {\n ellipsifyTextCharacters?: number;\n placeHolder?: string;\n multiline?: boolean;\n}\n\nconst Textbox = (props: IFieldProps<ITextboxProps>) => {\n const { fieldName, programName, entityType, entityId, value, readOnly, config, error, required, placeholder, setFieldValue } = props;\n\n const onChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n setFieldValue(fieldName, event.target.value, false, 3000);\n };\n\n if (readOnly) {\n return (\n <ReadOnlyText\n fieldName={fieldName}\n value={value as string}\n ellipsifyTextCharacters={config?.ellipsifyTextCharacters}\n />\n );\n }\n\n return (\n <Input\n type=\"text\"\n autoComplete=\"off\"\n value={(value as string) ?? \"\"}\n onChange={onChange}\n placeholder={placeholder ?? config?.placeHolder}\n aria-invalid={!!error}\n aria-required={required}\n data-field-type=\"Textbox\"\n data-field-state={getFieldState({ error, required, readOnly })}\n data-testid={GetFieldDataTestId(fieldName, programName, entityType, entityId)}\n />\n );\n};\n\nexport default Textbox;\n","import React from \"react\";\n\nexport interface IReadOnlyFieldProps {\n readonly value?: string;\n readonly fieldName?: string;\n readonly labelClassName?: string;\n readonly valueClassName?: string;\n readonly showControlOnSide?: boolean;\n readonly containerClassName?: string;\n readonly ellipsifyTextCharacters?: number;\n}\n\nexport const ReadOnlyText: React.FunctionComponent<IReadOnlyFieldProps> = (props) => {\n const { value, fieldName, ellipsifyTextCharacters } = props;\n const cutoff = (ellipsifyTextCharacters || 0) - 3;\n\n const displayValue = value\n ? ellipsifyTextCharacters && value.length > ellipsifyTextCharacters\n ? `${value.substring(0, cutoff)}...`\n : value\n : \"-\";\n\n return (\n <span\n id={`${fieldName}-read-only`}\n className=\"fe-read-only-text\"\n title={value}\n >\n {displayValue}\n </span>\n );\n};\n\nexport default ReadOnlyText;\n","// Re-export shared field utilities from core\nexport {\n FieldClassName,\n GetFieldDataTestId,\n getFieldState,\n formatDateTime,\n DocumentLinksStrings,\n convertBooleanToYesOrNoText,\n isNull,\n} from \"@form-eng/core/adapter-utils\";\n","import { IFieldProps } from \"@form-eng/core\";\nimport { isNull } from \"../helpers\";\nimport { Input } from \"@chakra-ui/react\";\nimport React from \"react\";\nimport { ReadOnlyText } from \"../components/ReadOnlyText\";\nimport { GetFieldDataTestId, getFieldState } from \"../helpers\";\n\nconst NumberField = (props: IFieldProps<{}>) => {\n const { fieldName, programName, entityType, entityId, value, readOnly, error, required, setFieldValue } = props;\n\n const onChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n const number = Number(event.target.value);\n if (!isNaN(number)) {\n setFieldValue(fieldName, number, false, 1500);\n }\n };\n\n if (readOnly) {\n return <ReadOnlyText fieldName={fieldName} value={String(value)} />;\n }\n\n return (\n <Input\n type=\"number\"\n autoComplete=\"off\"\n value={!isNull(value) ? String(value) : \"\"}\n onChange={onChange}\n aria-invalid={!!error}\n aria-required={required}\n data-field-type=\"Number\"\n data-field-state={getFieldState({ error, required, readOnly })}\n data-testid={GetFieldDataTestId(fieldName, programName, entityType, entityId)}\n />\n );\n};\n\nexport default NumberField;\n","import { IFieldProps } from \"@form-eng/core\";\nimport { convertBooleanToYesOrNoText } from \"../helpers\";\nimport React from \"react\";\nimport { ReadOnlyText } from \"../components/ReadOnlyText\";\nimport { GetFieldDataTestId, getFieldState } from \"../helpers\";\n\nconst Toggle = (props: IFieldProps<{}>) => {\n const { fieldName, programName, entityType, entityId, value, readOnly, error, required, label, setFieldValue } = props;\n\n const onChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n setFieldValue(fieldName, event.target.checked);\n };\n\n if (readOnly) {\n return <ReadOnlyText fieldName={fieldName} value={convertBooleanToYesOrNoText(value as boolean)} />;\n }\n\n return (\n <label\n style={{\n display: \"inline-flex\",\n alignItems: \"center\",\n gap: \"8px\",\n cursor: \"pointer\",\n }}\n data-field-type=\"Toggle\"\n data-field-state={getFieldState({ error, required, readOnly })}\n >\n <input\n type=\"checkbox\"\n role=\"switch\"\n checked={!!value}\n onChange={onChange}\n aria-invalid={!!error}\n aria-required={required}\n data-testid={GetFieldDataTestId(fieldName, programName, entityType, entityId)}\n style={{ accentColor: \"var(--chakra-colors-blue-500, #3182CE)\" }}\n />\n {label && <span style={{ fontSize: \"var(--chakra-fontSizes-md, 16px)\" }}>{label}</span>}\n </label>\n );\n};\n\nexport default Toggle;\n","import { IFieldProps } from \"@form-eng/core\";\nimport { NativeSelect } from \"@chakra-ui/react\";\nimport React from \"react\";\nimport { ReadOnlyText } from \"../components/ReadOnlyText\";\nimport { GetFieldDataTestId, getFieldState } from \"../helpers\";\n\ninterface IDropdownProps {\n placeHolder?: string;\n setDefaultKeyIfOnlyOneOption?: boolean;\n}\n\nconst Dropdown = (props: IFieldProps<IDropdownProps>) => {\n const { fieldName, programName, entityType, entityId, value, readOnly, config, error, required, options, placeholder, setFieldValue } = props;\n\n const onChange = (event: React.ChangeEvent<HTMLSelectElement>) => {\n setFieldValue(fieldName, event.target.value);\n };\n\n React.useEffect(() => {\n if (!value && !readOnly && config?.setDefaultKeyIfOnlyOneOption && options?.length === 1) {\n setFieldValue(fieldName, String(options[0].value));\n }\n }, [options]);\n\n if (readOnly) {\n return <ReadOnlyText fieldName={fieldName} value={value as string} />;\n }\n\n return (\n <NativeSelect.Root\n data-field-type=\"Dropdown\"\n data-field-state={getFieldState({ error, required, readOnly })}\n >\n <NativeSelect.Field\n value={(value as string) ?? \"\"}\n onChange={onChange}\n aria-invalid={!!error}\n aria-required={required}\n data-testid={GetFieldDataTestId(fieldName, programName, entityType, entityId)}\n >\n <option value=\"\">{placeholder ?? config?.placeHolder ?? \"\"}</option>\n {options?.map(option => (\n <option key={String(option.value)} value={String(option.value)} disabled={option.disabled}>\n {option.label}\n </option>\n ))}\n </NativeSelect.Field>\n <NativeSelect.Indicator />\n </NativeSelect.Root>\n );\n};\n\nexport default Dropdown;\n","import { IFieldProps } from \"@form-eng/core\";\nimport { NativeSelect } from \"@chakra-ui/react\";\nimport React from \"react\";\nimport { ReadOnlyText } from \"../components/ReadOnlyText\";\nimport { GetFieldDataTestId, getFieldState } from \"../helpers\";\n\ninterface ISimpleDropdownProps {\n dropdownOptions?: string[];\n placeHolder?: string;\n}\n\nconst SimpleDropdown = (props: IFieldProps<ISimpleDropdownProps>) => {\n const { fieldName, programName, entityType, entityId, value, readOnly, config, error, required, placeholder, setFieldValue } = props;\n\n const simpleOptions = config?.dropdownOptions ?? [];\n\n const onChange = (event: React.ChangeEvent<HTMLSelectElement>) => {\n setFieldValue(fieldName, event.target.value);\n };\n\n if (readOnly) {\n return <ReadOnlyText fieldName={fieldName} value={value as string} />;\n }\n\n return (\n <NativeSelect.Root\n data-field-type=\"SimpleDropdown\"\n data-field-state={getFieldState({ error, required, readOnly })}\n >\n <NativeSelect.Field\n value={(value as string) ?? \"\"}\n onChange={onChange}\n aria-invalid={!!error}\n aria-required={required}\n data-testid={GetFieldDataTestId(fieldName, programName, entityType, entityId)}\n >\n <option value=\"\">{placeholder ?? config?.placeHolder ?? \"\"}</option>\n {simpleOptions.map(option => (\n <option key={option} value={option}>{option}</option>\n ))}\n </NativeSelect.Field>\n <NativeSelect.Indicator />\n </NativeSelect.Root>\n );\n};\n\nexport default SimpleDropdown;\n","import { IFieldProps } from \"@form-eng/core\";\nimport React from \"react\";\nimport { GetFieldDataTestId, getFieldState } from \"../helpers\";\n\nconst MultiSelect = (props: IFieldProps<{}>) => {\n const { fieldName, programName, entityType, entityId, value, readOnly, error, required, options, setFieldValue } = props;\n\n const selectedValues = (value as string[]) ?? [];\n\n const onChange = (event: React.ChangeEvent<HTMLSelectElement>) => {\n const selected = Array.from(event.target.selectedOptions, opt => opt.value);\n setFieldValue(fieldName, selected, false, 1500);\n };\n\n if (readOnly) {\n return selectedValues.length > 0 ? (\n <ul\n style={{ listStyle: \"none\", padding: 0, margin: 0 }}\n data-field-type=\"MultiSelect\"\n data-field-state=\"readonly\"\n >\n {selectedValues.map((v, i) => (\n <li key={i} style={{ padding: \"2px 0\" }}>{v}</li>\n ))}\n </ul>\n ) : (\n <span className=\"fe-read-only-text\">-</span>\n );\n }\n\n return (\n <select\n multiple\n style={{\n width: \"100%\",\n minHeight: \"80px\",\n padding: \"8px\",\n borderWidth: \"1px\",\n borderStyle: \"solid\",\n borderColor: error ? \"var(--chakra-colors-red-500, #E53E3E)\" : \"var(--chakra-colors-gray-200, #E2E8F0)\",\n borderRadius: \"var(--chakra-radii-md, 6px)\",\n fontSize: \"var(--chakra-fontSizes-md, 16px)\",\n background: \"var(--chakra-colors-white, #FFFFFF)\",\n }}\n value={selectedValues}\n onChange={onChange}\n aria-invalid={!!error}\n aria-required={required}\n data-field-type=\"MultiSelect\"\n data-field-state={getFieldState({ error, required, readOnly })}\n data-testid={GetFieldDataTestId(fieldName, programName, entityType, entityId)}\n >\n {options?.map(option => (\n <option key={String(option.value)} value={String(option.value)} disabled={option.disabled}>\n {option.label}\n </option>\n ))}\n </select>\n );\n};\n\nexport default MultiSelect;\n","import { IFieldProps, FormStrings } from \"@form-eng/core\";\nimport { Input } from \"@chakra-ui/react\";\nimport React from \"react\";\nimport { GetFieldDataTestId, getFieldState, formatDateTime } from \"../helpers\";\n\nconst DateControl = (props: IFieldProps<{}>) => {\n const { fieldName, programName, entityType, entityId, value, readOnly, error, required, setFieldValue } = props;\n\n const onChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n const date = new Date(event.target.value);\n if (!isNaN(date.getTime())) {\n setFieldValue(fieldName, date.toISOString());\n }\n };\n\n const onClear = () => {\n setFieldValue(fieldName, null);\n };\n\n const dateInputValue = value ? new Date(value as string).toISOString().split(\"T\")[0] : \"\";\n\n if (readOnly) {\n return value ? (\n <time\n className=\"fe-read-only-date\"\n dateTime={value as string}\n data-field-type=\"DateControl\"\n data-field-state=\"readonly\"\n >\n {formatDateTime(value as string, { hideTimestamp: true })}\n </time>\n ) : (\n <span className=\"fe-read-only-text\">-</span>\n );\n }\n\n return (\n <div\n style={{ display: \"flex\", alignItems: \"center\", gap: \"8px\" }}\n data-field-type=\"DateControl\"\n data-field-state={getFieldState({ error, required, readOnly })}\n >\n <Input\n type=\"date\"\n value={dateInputValue}\n onChange={onChange}\n aria-invalid={!!error}\n aria-required={required}\n data-testid={GetFieldDataTestId(fieldName, programName, entityType, entityId)}\n />\n <button\n type=\"button\"\n onClick={onClear}\n title={FormStrings.clickToClear}\n aria-label={`${fieldName} ${FormStrings.clear}`}\n style={{\n background: \"none\",\n border: \"none\",\n cursor: \"pointer\",\n fontSize: \"18px\",\n color: \"var(--chakra-colors-gray-500, #718096)\",\n padding: \"4px 8px\",\n }}\n >\n ×\n </button>\n </div>\n );\n};\n\nexport default DateControl;\n","import { IFieldProps } from \"@form-eng/core\";\nimport React from \"react\";\nimport { ReadOnlyText } from \"../components/ReadOnlyText\";\nimport { GetFieldDataTestId, getFieldState } from \"../helpers\";\n\ninterface ISliderProps {\n max?: number;\n min?: number;\n step?: number;\n}\n\nconst Slider = (props: IFieldProps<ISliderProps>) => {\n const { fieldName, programName, entityType, entityId, value, readOnly, config, error, required, setFieldValue } = props;\n\n const onChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n setFieldValue(fieldName, Number(event.target.value));\n };\n\n if (readOnly) {\n return <ReadOnlyText fieldName={fieldName} value={String(value)} />;\n }\n\n return (\n <div\n style={{ display: \"flex\", alignItems: \"center\", gap: \"12px\" }}\n data-field-type=\"Slider\"\n data-field-state={getFieldState({ error, required, readOnly })}\n >\n <input\n type=\"range\"\n style={{\n flex: 1,\n accentColor: \"var(--chakra-colors-blue-500, #3182CE)\",\n }}\n value={(value as number) ?? 0}\n onChange={onChange}\n max={config?.max ?? 100}\n min={config?.min ?? 0}\n step={config?.step ?? 1}\n aria-invalid={!!error}\n aria-required={required}\n aria-valuenow={(value as number) ?? 0}\n aria-valuemin={config?.min ?? 0}\n aria-valuemax={config?.max ?? 100}\n data-testid={GetFieldDataTestId(fieldName, programName, entityType, entityId)}\n />\n <output style={{ minWidth: \"32px\", textAlign: \"center\", fontSize: \"var(--chakra-fontSizes-md, 16px)\" }}>\n {String(value)}\n </output>\n </div>\n );\n};\n\nexport default Slider;\n","import { IFieldProps } from \"@form-eng/core\";\nimport React from \"react\";\nimport { ReadOnlyText } from \"../components/ReadOnlyText\";\nimport { GetFieldDataTestId, getFieldState } from \"../helpers\";\n\nconst RadioGroup = (props: IFieldProps<{}>) => {\n const { fieldName, programName, entityType, entityId, value, readOnly, error, required, options, setFieldValue } = props;\n\n const onChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n setFieldValue(fieldName, event.target.value);\n };\n\n if (readOnly) {\n const label = options?.find(o => String(o.value) === String(value))?.label ?? (value as string);\n return <ReadOnlyText fieldName={fieldName} value={label} />;\n }\n\n return (\n <div\n role=\"radiogroup\"\n style={{ display: \"flex\", flexDirection: \"column\", gap: \"8px\" }}\n aria-invalid={!!error}\n aria-required={required}\n data-field-type=\"RadioGroup\"\n data-field-state={getFieldState({ error, required, readOnly })}\n data-testid={GetFieldDataTestId(fieldName, programName, entityType, entityId)}\n >\n {options?.map(option => (\n <label\n key={String(option.value)}\n style={{\n display: \"flex\",\n alignItems: \"center\",\n gap: \"8px\",\n cursor: option.disabled ? \"not-allowed\" : \"pointer\",\n opacity: option.disabled ? 0.5 : 1,\n fontSize: \"var(--chakra-fontSizes-md, 16px)\",\n }}\n >\n <input\n type=\"radio\"\n name={fieldName}\n value={String(option.value)}\n checked={String(value) === String(option.value)}\n onChange={onChange}\n disabled={option.disabled}\n style={{ accentColor: \"var(--chakra-colors-blue-500, #3182CE)\" }}\n />\n <span>{option.label}</span>\n </label>\n ))}\n </div>\n );\n};\n\nexport default RadioGroup;\n","import { IFieldProps } from \"@form-eng/core\";\nimport React from \"react\";\nimport { ReadOnlyText } from \"../components/ReadOnlyText\";\nimport { GetFieldDataTestId, getFieldState } from \"../helpers\";\n\nconst CheckboxGroup = (props: IFieldProps<{}>) => {\n const { fieldName, programName, entityType, entityId, value, readOnly, error, required, options, setFieldValue } = props;\n\n const selected = Array.isArray(value) ? (value as string[]) : [];\n\n const onChange = (optionValue: string) => (event: React.ChangeEvent<HTMLInputElement>) => {\n const next = event.target.checked\n ? [...selected, optionValue]\n : selected.filter(v => v !== optionValue);\n setFieldValue(fieldName, next);\n };\n\n if (readOnly) {\n const labels = options\n ?.filter(o => selected.includes(String(o.value)))\n .map(o => o.label)\n .join(\", \");\n return <ReadOnlyText fieldName={fieldName} value={labels ?? \"\"} />;\n }\n\n return (\n <div\n style={{ display: \"flex\", flexDirection: \"column\", gap: \"8px\" }}\n aria-invalid={!!error}\n aria-required={required}\n data-field-type=\"CheckboxGroup\"\n data-field-state={getFieldState({ error, required, readOnly })}\n data-testid={GetFieldDataTestId(fieldName, programName, entityType, entityId)}\n >\n {options?.map(option => (\n <label\n key={String(option.value)}\n style={{\n display: \"flex\",\n alignItems: \"center\",\n gap: \"8px\",\n cursor: option.disabled ? \"not-allowed\" : \"pointer\",\n opacity: option.disabled ? 0.5 : 1,\n fontSize: \"var(--chakra-fontSizes-md, 16px)\",\n }}\n >\n <input\n type=\"checkbox\"\n value={String(option.value)}\n checked={selected.includes(String(option.value))}\n onChange={onChange(String(option.value))}\n disabled={option.disabled}\n style={{ accentColor: \"var(--chakra-colors-blue-500, #3182CE)\" }}\n />\n <span>{option.label}</span>\n </label>\n ))}\n </div>\n );\n};\n\nexport default CheckboxGroup;\n","import { IFieldProps, FormStrings } from \"@form-eng/core\";\nimport { Textarea as ChakraTextarea } from \"@chakra-ui/react\";\nimport React, { useState } from \"react\";\nimport { ReadOnlyText } from \"../components/ReadOnlyText\";\nimport { StatusMessage } from \"../components/StatusMessage\";\nimport { GetFieldDataTestId, getFieldState } from \"../helpers\";\n\ninterface ITextareaProps {\n autoAdjustHeight?: boolean;\n numberOfRows?: number;\n ellipsifyTextCharacters?: number;\n additionalInfo?: string;\n maxLimit?: number;\n saveCallback?: () => void;\n renderExtraModalFooter?: () => React.ReactNode;\n}\n\nconst Textarea = (props: IFieldProps<ITextareaProps>) => {\n const {\n error, fieldName, programName, entityType, entityId, config, readOnly,\n required, savePending, saving, value, label, setFieldValue\n } = props;\n\n const [modalValue, setModalValue] = useState<string>();\n const [modalVisible, setModalVisible] = useState(false);\n const [confirmVisible, setConfirmVisible] = useState(false);\n const dialogRef = React.useRef<HTMLDialogElement>(null);\n const confirmRef = React.useRef<HTMLDialogElement>(null);\n\n const onChange = (event: React.ChangeEvent<HTMLTextAreaElement>) => {\n const newValue = event.target.value;\n modalVisible ? setModalValue(newValue) : setFieldValue(fieldName, newValue, false, 3000);\n };\n\n const onExpand = () => {\n setModalVisible(true);\n setModalValue(value ? `${value}` : \"\");\n dialogRef.current?.showModal();\n };\n\n const onSave = () => {\n setFieldValue(fieldName, modalValue, false);\n setConfirmVisible(false);\n setModalVisible(false);\n dialogRef.current?.close();\n confirmRef.current?.close();\n config?.saveCallback?.();\n };\n\n const onCancel = () => {\n if (confirmVisible) {\n setConfirmVisible(false);\n setModalVisible(false);\n dialogRef.current?.close();\n confirmRef.current?.close();\n } else if (modalValue !== value) {\n setConfirmVisible(true);\n confirmRef.current?.showModal();\n } else {\n setModalVisible(false);\n dialogRef.current?.close();\n }\n };\n\n if (readOnly) {\n return (\n <ReadOnlyText\n fieldName={fieldName}\n value={value ? `${value}` : \"\"}\n ellipsifyTextCharacters={config?.ellipsifyTextCharacters}\n />\n );\n }\n\n return (\n <>\n <div\n data-field-type=\"Textarea\"\n data-field-state={getFieldState({ error, required, readOnly })}\n >\n <ChakraTextarea\n autoComplete=\"off\"\n value={modalVisible ? `${modalValue}` : value ? `${value}` : \"\"}\n onChange={onChange}\n rows={config?.numberOfRows ?? 4}\n aria-invalid={!!error}\n aria-required={required}\n data-testid={GetFieldDataTestId(fieldName, programName, entityType, entityId)}\n />\n <button\n type=\"button\"\n onClick={onExpand}\n aria-label={FormStrings.openExpandedTextEditor}\n style={{\n marginTop: \"4px\",\n background: \"none\",\n border: \"none\",\n cursor: \"pointer\",\n color: \"var(--chakra-colors-blue-500, #3182CE)\",\n fontSize: \"var(--chakra-fontSizes-sm, 14px)\",\n padding: \"2px 0\",\n }}\n >\n {FormStrings.expand}\n </button>\n </div>\n\n <dialog ref={dialogRef} style={{ padding: \"24px\", borderRadius: \"8px\", border: \"1px solid var(--chakra-colors-gray-200, #E2E8F0)\", maxWidth: \"640px\", width: \"100%\" }} aria-label={`${label} editor`}>\n <header style={{ display: \"flex\", justifyContent: \"space-between\", alignItems: \"center\", marginBottom: \"16px\" }}>\n <h2 style={{ margin: 0, fontSize: \"18px\" }}>\n {label}{required && <span style={{ color: \"var(--chakra-colors-red-500, #E53E3E)\" }}> *</span>}\n </h2>\n <button\n type=\"button\"\n onClick={onCancel}\n aria-label={FormStrings.closeExpandedTextEditor}\n style={{ background: \"none\", border: \"none\", cursor: \"pointer\", fontSize: \"20px\" }}\n >\n ×\n </button>\n </header>\n <div style={{ marginBottom: \"16px\" }}>\n <ChakraTextarea\n autoComplete=\"off\"\n value={modalVisible ? `${modalValue}` : value ? `${value}` : \"\"}\n onChange={onChange}\n rows={12}\n aria-invalid={!!error}\n />\n </div>\n <footer style={{ display: \"flex\", justifyContent: \"flex-end\", alignItems: \"center\", gap: \"8px\" }}>\n {config?.renderExtraModalFooter && <div>{config.renderExtraModalFooter()}</div>}\n {(savePending || saving) && (\n <StatusMessage savePending={!error ? savePending : undefined} saving={saving} error={error} />\n )}\n <button\n type=\"button\"\n onClick={onCancel}\n style={{ padding: \"6px 16px\", borderRadius: \"6px\", border: \"1px solid var(--chakra-colors-gray-200, #E2E8F0)\", background: \"white\", cursor: \"pointer\" }}\n >\n {FormStrings.cancel}\n </button>\n <button\n type=\"button\"\n onClick={onSave}\n disabled={!config?.saveCallback && modalValue === (value as string)}\n style={{ padding: \"6px 16px\", borderRadius: \"6px\", border: \"none\", background: \"var(--chakra-colors-blue-500, #3182CE)\", color: \"white\", cursor: \"pointer\" }}\n data-testid={`${programName}-${entityType}-${entityId}-save-note`}\n >\n {FormStrings.save}\n </button>\n </footer>\n </dialog>\n\n <dialog ref={confirmRef} style={{ padding: \"24px\", borderRadius: \"8px\", border: \"1px solid var(--chakra-colors-gray-200, #E2E8F0)\" }}>\n <h2 style={{ margin: \"0 0 8px 0\", fontSize: \"18px\" }}>{FormStrings.unsavedChanges}</h2>\n <p>{FormStrings.saveChangesTo(label)}</p>\n <footer style={{ display: \"flex\", justifyContent: \"flex-end\", gap: \"8px\", marginTop: \"16px\" }}>\n <button\n type=\"button\"\n onClick={onCancel}\n style={{ padding: \"6px 16px\", borderRadius: \"6px\", border: \"1px solid var(--chakra-colors-gray-200, #E2E8F0)\", background: \"white\", cursor: \"pointer\" }}\n >\n {FormStrings.dontSave}\n </button>\n <button\n type=\"button\"\n onClick={onSave}\n style={{ padding: \"6px 16px\", borderRadius: \"6px\", border: \"none\", background: \"var(--chakra-colors-blue-500, #3182CE)\", color: \"white\", cursor: \"pointer\" }}\n >\n {FormStrings.save}\n </button>\n </footer>\n </dialog>\n </>\n );\n};\n\nexport default Textarea;\n","import { FormStrings } from \"@form-eng/core\";\nimport React from \"react\";\nimport { FieldError } from \"react-hook-form\";\n\ninterface IStatusMessageProps {\n id?: string;\n readonly error?: FieldError;\n readonly errorCount?: number;\n readonly savePending?: boolean;\n readonly saving?: boolean;\n}\n\nexport const StatusMessage: React.FunctionComponent<IStatusMessageProps> = (props) => {\n const { id, error, errorCount, savePending, saving } = props;\n return (\n <div className=\"fe-status-message\">\n {error ? (\n <span id={id} role=\"alert\" style={{ color: \"var(--chakra-colors-red-500, #E53E3E)\" }}>\n {error.message || \"Error\"}\n </span>\n ) : savePending ? (\n <span id={id} role=\"alert\" style={{ color: \"var(--chakra-colors-orange-500, #DD6B20)\" }}>\n {FormStrings.autoSavePending} ({errorCount} {FormStrings.remaining})\n </span>\n ) : saving ? (\n <span id={id} role=\"status\" style={{ color: \"var(--chakra-colors-gray-500, #718096)\" }}>\n {FormStrings.saving}\n </span>\n ) : null}\n </div>\n );\n};\n","import { IFieldProps } from \"@form-eng/core\";\nimport React from \"react\";\n\nconst DynamicFragment = (props: IFieldProps<{}>) => {\n const { value } = props;\n return <input type=\"hidden\" value={value as string} />;\n};\n\nexport default DynamicFragment;\n","import { IFieldProps } from \"@form-eng/core\";\nimport React from \"react\";\nimport { ReadOnlyText, IReadOnlyFieldProps } from \"../../components/ReadOnlyText\";\n\nconst ReadOnly = (props: IFieldProps<IReadOnlyFieldProps>) => {\n const { fieldName, value, config } = props;\n return <ReadOnlyText fieldName={fieldName} value={value as string} {...config} />;\n};\n\nexport default ReadOnly;\n","import { FormConstants } from \"@form-eng/core\";\nimport React from \"react\";\n\ninterface IFormLoadingProps {\n loadingShimmerCount?: number;\n loadingFieldShimmerHeight?: number;\n inPanel?: boolean;\n hideTitleShimmer?: boolean;\n}\n\nexport const FormLoading = (props: IFormLoadingProps) => {\n const { loadingShimmerCount, loadingFieldShimmerHeight, inPanel, hideTitleShimmer } = props;\n const count = loadingShimmerCount || FormConstants.loadingShimmerCount;\n const height = loadingFieldShimmerHeight || FormConstants.loadingFieldShimmerHeight;\n\n return (\n <div\n className={`fe-form-loading ${inPanel ? \"fe-form-loading--panel\" : \"\"}`}\n role=\"status\"\n aria-label=\"Loading form\"\n >\n {[...Array(count)].map((_, i) => (\n <div key={`fe-loading-${i}`} style={{ marginBottom: 16 }}>\n {!hideTitleShimmer && (\n <div className=\"fe-skeleton\" style={{ width: \"33%\", height: 16, marginBottom: 8, background: \"var(--chakra-colors-gray-200, #E2E8F0)\", borderRadius: 4 }} />\n )}\n <div className=\"fe-skeleton\" style={{ width: \"100%\", height, background: \"var(--chakra-colors-gray-200, #E2E8F0)\", borderRadius: 4 }} />\n </div>\n ))}\n </div>\n );\n};\n\nexport default FormLoading;\n","import { ComponentTypes, Dictionary } from \"@form-eng/core\";\nimport React from \"react\";\nimport Textbox from \"./fields/Textbox\";\nimport NumberField from \"./fields/Number\";\nimport Toggle from \"./fields/Toggle\";\nimport Dropdown from \"./fields/Dropdown\";\nimport SimpleDropdown from \"./fields/SimpleDropdown\";\nimport MultiSelect from \"./fields/MultiSelect\";\nimport DateControl from \"./fields/DateControl\";\nimport Slider from \"./fields/Slider\";\nimport RadioGroup from \"./fields/RadioGroup\";\nimport CheckboxGroup from \"./fields/CheckboxGroup\";\nimport Textarea from \"./fields/Textarea\";\nimport DynamicFragment from \"./fields/DynamicFragment\";\nimport ReadOnly from \"./fields/readonly/ReadOnly\";\n\n/** Creates the default Chakra UI v3 field registry for use with InjectedFieldProvider */\nexport function createChakraFieldRegistry(): Dictionary<React.JSX.Element> {\n return {\n [ComponentTypes.Textbox]: React.createElement(Textbox),\n [ComponentTypes.Number]: React.createElement(NumberField),\n [ComponentTypes.Toggle]: React.createElement(Toggle),\n [ComponentTypes.Dropdown]: React.createElement(Dropdown),\n [ComponentTypes.SimpleDropdown]: React.createElement(SimpleDropdown),\n [ComponentTypes.MultiSelect]: React.createElement(MultiSelect),\n [ComponentTypes.DateControl]: React.createElement(DateControl),\n [ComponentTypes.Slider]: React.createElement(Slider),\n [ComponentTypes.RadioGroup]: React.createElement(RadioGroup),\n [ComponentTypes.CheckboxGroup]: React.createElement(CheckboxGroup),\n [ComponentTypes.Textarea]: React.createElement(Textarea),\n [ComponentTypes.Fragment]: React.createElement(DynamicFragment),\n [ComponentTypes.ReadOnly]: React.createElement(ReadOnly),\n };\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACCA,mBAAsB;;;ACsBlB;AAXG,IAAM,eAA6D,CAAC,UAAU;AACnF,QAAM,EAAE,OAAO,WAAW,wBAAwB,IAAI;AACtD,QAAM,UAAU,2BAA2B,KAAK;AAEhD,QAAM,eAAe,QACjB,2BAA2B,MAAM,SAAS,0BACxC,GAAG,MAAM,UAAU,GAAG,MAAM,CAAC,QAC7B,QACF;AAEJ,SACE;AAAA,IAAC;AAAA;AAAA,MACC,IAAI,GAAG,SAAS;AAAA,MAChB,WAAU;AAAA,MACV,OAAO;AAAA,MAEN;AAAA;AAAA,EACH;AAEJ;;;AC9BA,2BAQO;;;AFYD,IAAAA,sBAAA;AATN,IAAM,UAAU,CAAC,UAAsC;AACrD,QAAM,EAAE,WAAW,aAAa,YAAY,UAAU,OAAO,UAAU,QAAQ,OAAO,UAAU,aAAa,cAAc,IAAI;AAE/H,QAAM,WAAW,CAAC,UAA+C;AAC/D,kBAAc,WAAW,MAAM,OAAO,OAAO,OAAO,GAAI;AAAA,EAC1D;AAEA,MAAI,UAAU;AACZ,WACE;AAAA,MAAC;AAAA;AAAA,QACC;AAAA,QACA;AAAA,QACA,yBAAyB,QAAQ;AAAA;AAAA,IACnC;AAAA,EAEJ;AAEA,SACE;AAAA,IAAC;AAAA;AAAA,MACC,MAAK;AAAA,MACL,cAAa;AAAA,MACb,OAAQ,SAAoB;AAAA,MAC5B;AAAA,MACA,aAAa,eAAe,QAAQ;AAAA,MACpC,gBAAc,CAAC,CAAC;AAAA,MAChB,iBAAe;AAAA,MACf,mBAAgB;AAAA,MAChB,wBAAkB,oCAAc,EAAE,OAAO,UAAU,SAAS,CAAC;AAAA,MAC7D,mBAAa,yCAAmB,WAAW,aAAa,YAAY,QAAQ;AAAA;AAAA,EAC9E;AAEJ;AAEA,IAAO,kBAAQ;;;AG3Cf,IAAAC,gBAAsB;AAgBX,IAAAC,sBAAA;AAXX,IAAM,cAAc,CAAC,UAA2B;AAC9C,QAAM,EAAE,WAAW,aAAa,YAAY,UAAU,OAAO,UAAU,OAAO,UAAU,cAAc,IAAI;AAE1G,QAAM,WAAW,CAAC,UAA+C;AAC/D,UAAM,SAAS,OAAO,MAAM,OAAO,KAAK;AACxC,QAAI,CAAC,MAAM,MAAM,GAAG;AAClB,oBAAc,WAAW,QAAQ,OAAO,IAAI;AAAA,IAC9C;AAAA,EACF;AAEA,MAAI,UAAU;AACZ,WAAO,6CAAC,gBAAa,WAAsB,OAAO,OAAO,KAAK,GAAG;AAAA,EACnE;AAEA,SACE;AAAA,IAAC;AAAA;AAAA,MACC,MAAK;AAAA,MACL,cAAa;AAAA,MACb,OAAO,KAAC,6BAAO,KAAK,IAAI,OAAO,KAAK,IAAI;AAAA,MACxC;AAAA,MACA,gBAAc,CAAC,CAAC;AAAA,MAChB,iBAAe;AAAA,MACf,mBAAgB;AAAA,MAChB,wBAAkB,oCAAc,EAAE,OAAO,UAAU,SAAS,CAAC;AAAA,MAC7D,mBAAa,yCAAmB,WAAW,aAAa,YAAY,QAAQ;AAAA;AAAA,EAC9E;AAEJ;AAEA,IAAO,iBAAQ;;;ACtBJ,IAAAC,sBAAA;AARX,IAAM,SAAS,CAAC,UAA2B;AACzC,QAAM,EAAE,WAAW,aAAa,YAAY,UAAU,OAAO,UAAU,OAAO,UAAU,OAAO,cAAc,IAAI;AAEjH,QAAM,WAAW,CAAC,UAA+C;AAC/D,kBAAc,WAAW,MAAM,OAAO,OAAO;AAAA,EAC/C;AAEA,MAAI,UAAU;AACZ,WAAO,6CAAC,gBAAa,WAAsB,WAAO,kDAA4B,KAAgB,GAAG;AAAA,EACnG;AAEA,SACE;AAAA,IAAC;AAAA;AAAA,MACC,OAAO;AAAA,QACL,SAAS;AAAA,QACT,YAAY;AAAA,QACZ,KAAK;AAAA,QACL,QAAQ;AAAA,MACV;AAAA,MACA,mBAAgB;AAAA,MAChB,wBAAkB,oCAAc,EAAE,OAAO,UAAU,SAAS,CAAC;AAAA,MAE7D;AAAA;AAAA,UAAC;AAAA;AAAA,YACC,MAAK;AAAA,YACL,MAAK;AAAA,YACL,SAAS,CAAC,CAAC;AAAA,YACX;AAAA,YACA,gBAAc,CAAC,CAAC;AAAA,YAChB,iBAAe;AAAA,YACf,mBAAa,yCAAmB,WAAW,aAAa,YAAY,QAAQ;AAAA,YAC5E,OAAO,EAAE,aAAa,yCAAyC;AAAA;AAAA,QACjE;AAAA,QACC,SAAS,6CAAC,UAAK,OAAO,EAAE,UAAU,mCAAmC,GAAI,iBAAM;AAAA;AAAA;AAAA,EAClF;AAEJ;AAEA,IAAO,iBAAQ;;;AC1Cf,IAAAC,gBAA6B;AAC7B,IAAAA,gBAAkB;AAuBP,IAAAC,sBAAA;AAdX,IAAM,WAAW,CAAC,UAAuC;AACvD,QAAM,EAAE,WAAW,aAAa,YAAY,UAAU,OAAO,UAAU,QAAQ,OAAO,UAAU,SAAS,aAAa,cAAc,IAAI;AAExI,QAAM,WAAW,CAAC,UAAgD;AAChE,kBAAc,WAAW,MAAM,OAAO,KAAK;AAAA,EAC7C;AAEA,gBAAAC,QAAM,UAAU,MAAM;AACpB,QAAI,CAAC,SAAS,CAAC,YAAY,QAAQ,gCAAgC,SAAS,WAAW,GAAG;AACxF,oBAAc,WAAW,OAAO,QAAQ,CAAC,EAAE,KAAK,CAAC;AAAA,IACnD;AAAA,EACF,GAAG,CAAC,OAAO,CAAC;AAEZ,MAAI,UAAU;AACZ,WAAO,6CAAC,gBAAa,WAAsB,OAAwB;AAAA,EACrE;AAEA,SACE;AAAA,IAAC,2BAAa;AAAA,IAAb;AAAA,MACC,mBAAgB;AAAA,MAChB,wBAAkB,oCAAc,EAAE,OAAO,UAAU,SAAS,CAAC;AAAA,MAE7D;AAAA;AAAA,UAAC,2BAAa;AAAA,UAAb;AAAA,YACC,OAAQ,SAAoB;AAAA,YAC5B;AAAA,YACA,gBAAc,CAAC,CAAC;AAAA,YAChB,iBAAe;AAAA,YACf,mBAAa,yCAAmB,WAAW,aAAa,YAAY,QAAQ;AAAA,YAE5E;AAAA,2DAAC,YAAO,OAAM,IAAI,yBAAe,QAAQ,eAAe,IAAG;AAAA,cAC1D,SAAS,IAAI,YACZ,6CAAC,YAAkC,OAAO,OAAO,OAAO,KAAK,GAAG,UAAU,OAAO,UAC9E,iBAAO,SADG,OAAO,OAAO,KAAK,CAEhC,CACD;AAAA;AAAA;AAAA,QACH;AAAA,QACA,6CAAC,2BAAa,WAAb,EAAuB;AAAA;AAAA;AAAA,EAC1B;AAEJ;AAEA,IAAO,mBAAQ;;;ACnDf,IAAAC,gBAA6B;AAoBlB,IAAAC,sBAAA;AAVX,IAAM,iBAAiB,CAAC,UAA6C;AACnE,QAAM,EAAE,WAAW,aAAa,YAAY,UAAU,OAAO,UAAU,QAAQ,OAAO,UAAU,aAAa,cAAc,IAAI;AAE/H,QAAM,gBAAgB,QAAQ,mBAAmB,CAAC;AAElD,QAAM,WAAW,CAAC,UAAgD;AAChE,kBAAc,WAAW,MAAM,OAAO,KAAK;AAAA,EAC7C;AAEA,MAAI,UAAU;AACZ,WAAO,6CAAC,gBAAa,WAAsB,OAAwB;AAAA,EACrE;AAEA,SACE;AAAA,IAAC,2BAAa;AAAA,IAAb;AAAA,MACC,mBAAgB;AAAA,MAChB,wBAAkB,oCAAc,EAAE,OAAO,UAAU,SAAS,CAAC;AAAA,MAE7D;AAAA;AAAA,UAAC,2BAAa;AAAA,UAAb;AAAA,YACC,OAAQ,SAAoB;AAAA,YAC5B;AAAA,YACA,gBAAc,CAAC,CAAC;AAAA,YAChB,iBAAe;AAAA,YACf,mBAAa,yCAAmB,WAAW,aAAa,YAAY,QAAQ;AAAA,YAE5E;AAAA,2DAAC,YAAO,OAAM,IAAI,yBAAe,QAAQ,eAAe,IAAG;AAAA,cAC1D,cAAc,IAAI,YACjB,6CAAC,YAAoB,OAAO,QAAS,oBAAxB,MAA+B,CAC7C;AAAA;AAAA;AAAA,QACH;AAAA,QACA,6CAAC,2BAAa,WAAb,EAAuB;AAAA;AAAA;AAAA,EAC1B;AAEJ;AAEA,IAAO,yBAAQ;;;ACxBL,IAAAC,sBAAA;AAlBV,IAAM,cAAc,CAAC,UAA2B;AAC9C,QAAM,EAAE,WAAW,aAAa,YAAY,UAAU,OAAO,UAAU,OAAO,UAAU,SAAS,cAAc,IAAI;AAEnH,QAAM,iBAAkB,SAAsB,CAAC;AAE/C,QAAM,WAAW,CAAC,UAAgD;AAChE,UAAM,WAAW,MAAM,KAAK,MAAM,OAAO,iBAAiB,SAAO,IAAI,KAAK;AAC1E,kBAAc,WAAW,UAAU,OAAO,IAAI;AAAA,EAChD;AAEA,MAAI,UAAU;AACZ,WAAO,eAAe,SAAS,IAC7B;AAAA,MAAC;AAAA;AAAA,QACC,OAAO,EAAE,WAAW,QAAQ,SAAS,GAAG,QAAQ,EAAE;AAAA,QAClD,mBAAgB;AAAA,QAChB,oBAAiB;AAAA,QAEhB,yBAAe,IAAI,CAAC,GAAG,MACtB,6CAAC,QAAW,OAAO,EAAE,SAAS,QAAQ,GAAI,eAAjC,CAAmC,CAC7C;AAAA;AAAA,IACH,IAEA,6CAAC,UAAK,WAAU,qBAAoB,eAAC;AAAA,EAEzC;AAEA,SACE;AAAA,IAAC;AAAA;AAAA,MACC,UAAQ;AAAA,MACR,OAAO;AAAA,QACL,OAAO;AAAA,QACP,WAAW;AAAA,QACX,SAAS;AAAA,QACT,aAAa;AAAA,QACb,aAAa;AAAA,QACb,aAAa,QAAQ,0CAA0C;AAAA,QAC/D,cAAc;AAAA,QACd,UAAU;AAAA,QACV,YAAY;AAAA,MACd;AAAA,MACA,OAAO;AAAA,MACP;AAAA,MACA,gBAAc,CAAC,CAAC;AAAA,MAChB,iBAAe;AAAA,MACf,mBAAgB;AAAA,MAChB,wBAAkB,oCAAc,EAAE,OAAO,UAAU,SAAS,CAAC;AAAA,MAC7D,mBAAa,yCAAmB,WAAW,aAAa,YAAY,QAAQ;AAAA,MAE3E,mBAAS,IAAI,YACZ,6CAAC,YAAkC,OAAO,OAAO,OAAO,KAAK,GAAG,UAAU,OAAO,UAC9E,iBAAO,SADG,OAAO,OAAO,KAAK,CAEhC,CACD;AAAA;AAAA,EACH;AAEJ;AAEA,IAAO,sBAAQ;;;AC7Df,kBAAyC;AACzC,IAAAC,gBAAsB;AAsBhB,IAAAC,sBAAA;AAlBN,IAAM,cAAc,CAAC,UAA2B;AAC9C,QAAM,EAAE,WAAW,aAAa,YAAY,UAAU,OAAO,UAAU,OAAO,UAAU,cAAc,IAAI;AAE1G,QAAM,WAAW,CAAC,UAA+C;AAC/D,UAAM,OAAO,IAAI,KAAK,MAAM,OAAO,KAAK;AACxC,QAAI,CAAC,MAAM,KAAK,QAAQ,CAAC,GAAG;AAC1B,oBAAc,WAAW,KAAK,YAAY,CAAC;AAAA,IAC7C;AAAA,EACF;AAEA,QAAM,UAAU,MAAM;AACpB,kBAAc,WAAW,IAAI;AAAA,EAC/B;AAEA,QAAM,iBAAiB,QAAQ,IAAI,KAAK,KAAe,EAAE,YAAY,EAAE,MAAM,GAAG,EAAE,CAAC,IAAI;AAEvF,MAAI,UAAU;AACZ,WAAO,QACL;AAAA,MAAC;AAAA;AAAA,QACC,WAAU;AAAA,QACV,UAAU;AAAA,QACV,mBAAgB;AAAA,QAChB,oBAAiB;AAAA,QAEhB,mDAAe,OAAiB,EAAE,eAAe,KAAK,CAAC;AAAA;AAAA,IAC1D,IAEA,6CAAC,UAAK,WAAU,qBAAoB,eAAC;AAAA,EAEzC;AAEA,SACE;AAAA,IAAC;AAAA;AAAA,MACC,OAAO,EAAE,SAAS,QAAQ,YAAY,UAAU,KAAK,MAAM;AAAA,MAC3D,mBAAgB;AAAA,MAChB,wBAAkB,oCAAc,EAAE,OAAO,UAAU,SAAS,CAAC;AAAA,MAE7D;AAAA;AAAA,UAAC;AAAA;AAAA,YACC,MAAK;AAAA,YACL,OAAO;AAAA,YACP;AAAA,YACA,gBAAc,CAAC,CAAC;AAAA,YAChB,iBAAe;AAAA,YACf,mBAAa,yCAAmB,WAAW,aAAa,YAAY,QAAQ;AAAA;AAAA,QAC9E;AAAA,QACA;AAAA,UAAC;AAAA;AAAA,YACC,MAAK;AAAA,YACL,SAAS;AAAA,YACT,OAAO,wBAAY;AAAA,YACnB,cAAY,GAAG,SAAS,IAAI,wBAAY,KAAK;AAAA,YAC7C,OAAO;AAAA,cACL,YAAY;AAAA,cACZ,QAAQ;AAAA,cACR,QAAQ;AAAA,cACR,UAAU;AAAA,cACV,OAAO;AAAA,cACP,SAAS;AAAA,YACX;AAAA,YACD;AAAA;AAAA,QAED;AAAA;AAAA;AAAA,EACF;AAEJ;AAEA,IAAO,sBAAQ;;;ACnDJ,IAAAC,sBAAA;AARX,IAAM,SAAS,CAAC,UAAqC;AACnD,QAAM,EAAE,WAAW,aAAa,YAAY,UAAU,OAAO,UAAU,QAAQ,OAAO,UAAU,cAAc,IAAI;AAElH,QAAM,WAAW,CAAC,UAA+C;AAC/D,kBAAc,WAAW,OAAO,MAAM,OAAO,KAAK,CAAC;AAAA,EACrD;AAEA,MAAI,UAAU;AACZ,WAAO,6CAAC,gBAAa,WAAsB,OAAO,OAAO,KAAK,GAAG;AAAA,EACnE;AAEA,SACE;AAAA,IAAC;AAAA;AAAA,MACC,OAAO,EAAE,SAAS,QAAQ,YAAY,UAAU,KAAK,OAAO;AAAA,MAC5D,mBAAgB;AAAA,MAChB,wBAAkB,oCAAc,EAAE,OAAO,UAAU,SAAS,CAAC;AAAA,MAE7D;AAAA;AAAA,UAAC;AAAA;AAAA,YACC,MAAK;AAAA,YACL,OAAO;AAAA,cACL,MAAM;AAAA,cACN,aAAa;AAAA,YACf;AAAA,YACA,OAAQ,SAAoB;AAAA,YAC5B;AAAA,YACA,KAAK,QAAQ,OAAO;AAAA,YACpB,KAAK,QAAQ,OAAO;AAAA,YACpB,MAAM,QAAQ,QAAQ;AAAA,YACtB,gBAAc,CAAC,CAAC;AAAA,YAChB,iBAAe;AAAA,YACf,iBAAgB,SAAoB;AAAA,YACpC,iBAAe,QAAQ,OAAO;AAAA,YAC9B,iBAAe,QAAQ,OAAO;AAAA,YAC9B,mBAAa,yCAAmB,WAAW,aAAa,YAAY,QAAQ;AAAA;AAAA,QAC9E;AAAA,QACA,6CAAC,YAAO,OAAO,EAAE,UAAU,QAAQ,WAAW,UAAU,UAAU,mCAAmC,GAClG,iBAAO,KAAK,GACf;AAAA;AAAA;AAAA,EACF;AAEJ;AAEA,IAAO,iBAAQ;;;ACvCJ,IAAAC,uBAAA;AATX,IAAM,aAAa,CAAC,UAA2B;AAC7C,QAAM,EAAE,WAAW,aAAa,YAAY,UAAU,OAAO,UAAU,OAAO,UAAU,SAAS,cAAc,IAAI;AAEnH,QAAM,WAAW,CAAC,UAA+C;AAC/D,kBAAc,WAAW,MAAM,OAAO,KAAK;AAAA,EAC7C;AAEA,MAAI,UAAU;AACZ,UAAM,QAAQ,SAAS,KAAK,OAAK,OAAO,EAAE,KAAK,MAAM,OAAO,KAAK,CAAC,GAAG,SAAU;AAC/E,WAAO,8CAAC,gBAAa,WAAsB,OAAO,OAAO;AAAA,EAC3D;AAEA,SACE;AAAA,IAAC;AAAA;AAAA,MACC,MAAK;AAAA,MACL,OAAO,EAAE,SAAS,QAAQ,eAAe,UAAU,KAAK,MAAM;AAAA,MAC9D,gBAAc,CAAC,CAAC;AAAA,MAChB,iBAAe;AAAA,MACf,mBAAgB;AAAA,MAChB,wBAAkB,oCAAc,EAAE,OAAO,UAAU,SAAS,CAAC;AAAA,MAC7D,mBAAa,yCAAmB,WAAW,aAAa,YAAY,QAAQ;AAAA,MAE3E,mBAAS,IAAI,YACZ;AAAA,QAAC;AAAA;AAAA,UAEC,OAAO;AAAA,YACL,SAAS;AAAA,YACT,YAAY;AAAA,YACZ,KAAK;AAAA,YACL,QAAQ,OAAO,WAAW,gBAAgB;AAAA,YAC1C,SAAS,OAAO,WAAW,MAAM;AAAA,YACjC,UAAU;AAAA,UACZ;AAAA,UAEA;AAAA;AAAA,cAAC;AAAA;AAAA,gBACC,MAAK;AAAA,gBACL,MAAM;AAAA,gBACN,OAAO,OAAO,OAAO,KAAK;AAAA,gBAC1B,SAAS,OAAO,KAAK,MAAM,OAAO,OAAO,KAAK;AAAA,gBAC9C;AAAA,gBACA,UAAU,OAAO;AAAA,gBACjB,OAAO,EAAE,aAAa,yCAAyC;AAAA;AAAA,YACjE;AAAA,YACA,8CAAC,UAAM,iBAAO,OAAM;AAAA;AAAA;AAAA,QAnBf,OAAO,OAAO,KAAK;AAAA,MAoB1B,CACD;AAAA;AAAA,EACH;AAEJ;AAEA,IAAO,qBAAQ;;;ACjCJ,IAAAC,uBAAA;AAjBX,IAAM,gBAAgB,CAAC,UAA2B;AAChD,QAAM,EAAE,WAAW,aAAa,YAAY,UAAU,OAAO,UAAU,OAAO,UAAU,SAAS,cAAc,IAAI;AAEnH,QAAM,WAAW,MAAM,QAAQ,KAAK,IAAK,QAAqB,CAAC;AAE/D,QAAM,WAAW,CAAC,gBAAwB,CAAC,UAA+C;AACxF,UAAM,OAAO,MAAM,OAAO,UACtB,CAAC,GAAG,UAAU,WAAW,IACzB,SAAS,OAAO,OAAK,MAAM,WAAW;AAC1C,kBAAc,WAAW,IAAI;AAAA,EAC/B;AAEA,MAAI,UAAU;AACZ,UAAM,SAAS,SACX,OAAO,OAAK,SAAS,SAAS,OAAO,EAAE,KAAK,CAAC,CAAC,EAC/C,IAAI,OAAK,EAAE,KAAK,EAChB,KAAK,IAAI;AACZ,WAAO,8CAAC,gBAAa,WAAsB,OAAO,UAAU,IAAI;AAAA,EAClE;AAEA,SACE;AAAA,IAAC;AAAA;AAAA,MACC,OAAO,EAAE,SAAS,QAAQ,eAAe,UAAU,KAAK,MAAM;AAAA,MAC9D,gBAAc,CAAC,CAAC;AAAA,MAChB,iBAAe;AAAA,MACf,mBAAgB;AAAA,MAChB,wBAAkB,oCAAc,EAAE,OAAO,UAAU,SAAS,CAAC;AAAA,MAC7D,mBAAa,yCAAmB,WAAW,aAAa,YAAY,QAAQ;AAAA,MAE3E,mBAAS,IAAI,YACZ;AAAA,QAAC;AAAA;AAAA,UAEC,OAAO;AAAA,YACL,SAAS;AAAA,YACT,YAAY;AAAA,YACZ,KAAK;AAAA,YACL,QAAQ,OAAO,WAAW,gBAAgB;AAAA,YAC1C,SAAS,OAAO,WAAW,MAAM;AAAA,YACjC,UAAU;AAAA,UACZ;AAAA,UAEA;AAAA;AAAA,cAAC;AAAA;AAAA,gBACC,MAAK;AAAA,gBACL,OAAO,OAAO,OAAO,KAAK;AAAA,gBAC1B,SAAS,SAAS,SAAS,OAAO,OAAO,KAAK,CAAC;AAAA,gBAC/C,UAAU,SAAS,OAAO,OAAO,KAAK,CAAC;AAAA,gBACvC,UAAU,OAAO;AAAA,gBACjB,OAAO,EAAE,aAAa,yCAAyC;AAAA;AAAA,YACjE;AAAA,YACA,8CAAC,UAAM,iBAAO,OAAM;AAAA;AAAA;AAAA,QAlBf,OAAO,OAAO,KAAK;AAAA,MAmB1B,CACD;AAAA;AAAA,EACH;AAEJ;AAEA,IAAO,wBAAQ;;;AC7Df,IAAAC,eAAyC;AACzC,IAAAC,gBAA2C;AAC3C,IAAAA,gBAAgC;;;ACFhC,IAAAC,eAA4B;AAiBpB,IAAAC,uBAAA;AALD,IAAM,gBAA8D,CAAC,UAAU;AACpF,QAAM,EAAE,IAAI,OAAO,YAAY,aAAa,OAAO,IAAI;AACvD,SACE,8CAAC,SAAI,WAAU,qBACZ,kBACC,8CAAC,UAAK,IAAQ,MAAK,SAAQ,OAAO,EAAE,OAAO,wCAAwC,GAChF,gBAAM,WAAW,SACpB,IACE,cACF,+CAAC,UAAK,IAAQ,MAAK,SAAQ,OAAO,EAAE,OAAO,2CAA2C,GACnF;AAAA,6BAAY;AAAA,IAAgB;AAAA,IAAG;AAAA,IAAW;AAAA,IAAE,yBAAY;AAAA,IAAU;AAAA,KACrE,IACE,SACF,8CAAC,UAAK,IAAQ,MAAK,UAAS,OAAO,EAAE,OAAO,yCAAyC,GAClF,mCAAY,QACf,IACE,MACN;AAEJ;;;ADmCM,IAAAC,uBAAA;AAjDN,IAAM,WAAW,CAAC,UAAuC;AACvD,QAAM;AAAA,IACJ;AAAA,IAAO;AAAA,IAAW;AAAA,IAAa;AAAA,IAAY;AAAA,IAAU;AAAA,IAAQ;AAAA,IAC7D;AAAA,IAAU;AAAA,IAAa;AAAA,IAAQ;AAAA,IAAO;AAAA,IAAO;AAAA,EAC/C,IAAI;AAEJ,QAAM,CAAC,YAAY,aAAa,QAAI,wBAAiB;AACrD,QAAM,CAAC,cAAc,eAAe,QAAI,wBAAS,KAAK;AACtD,QAAM,CAAC,gBAAgB,iBAAiB,QAAI,wBAAS,KAAK;AAC1D,QAAM,YAAY,cAAAC,QAAM,OAA0B,IAAI;AACtD,QAAM,aAAa,cAAAA,QAAM,OAA0B,IAAI;AAEvD,QAAM,WAAW,CAAC,UAAkD;AAClE,UAAM,WAAW,MAAM,OAAO;AAC9B,mBAAe,cAAc,QAAQ,IAAI,cAAc,WAAW,UAAU,OAAO,GAAI;AAAA,EACzF;AAEA,QAAM,WAAW,MAAM;AACrB,oBAAgB,IAAI;AACpB,kBAAc,QAAQ,GAAG,KAAK,KAAK,EAAE;AACrC,cAAU,SAAS,UAAU;AAAA,EAC/B;AAEA,QAAM,SAAS,MAAM;AACnB,kBAAc,WAAW,YAAY,KAAK;AAC1C,sBAAkB,KAAK;AACvB,oBAAgB,KAAK;AACrB,cAAU,SAAS,MAAM;AACzB,eAAW,SAAS,MAAM;AAC1B,YAAQ,eAAe;AAAA,EACzB;AAEA,QAAM,WAAW,MAAM;AACrB,QAAI,gBAAgB;AAClB,wBAAkB,KAAK;AACvB,sBAAgB,KAAK;AACrB,gBAAU,SAAS,MAAM;AACzB,iBAAW,SAAS,MAAM;AAAA,IAC5B,WAAW,eAAe,OAAO;AAC/B,wBAAkB,IAAI;AACtB,iBAAW,SAAS,UAAU;AAAA,IAChC,OAAO;AACL,sBAAgB,KAAK;AACrB,gBAAU,SAAS,MAAM;AAAA,IAC3B;AAAA,EACF;AAEA,MAAI,UAAU;AACZ,WACE;AAAA,MAAC;AAAA;AAAA,QACC;AAAA,QACA,OAAO,QAAQ,GAAG,KAAK,KAAK;AAAA,QAC5B,yBAAyB,QAAQ;AAAA;AAAA,IACnC;AAAA,EAEJ;AAEA,SACE,gFACE;AAAA;AAAA,MAAC;AAAA;AAAA,QACC,mBAAgB;AAAA,QAChB,wBAAkB,oCAAc,EAAE,OAAO,UAAU,SAAS,CAAC;AAAA,QAE7D;AAAA;AAAA,YAAC,cAAAC;AAAA,YAAA;AAAA,cACC,cAAa;AAAA,cACb,OAAO,eAAe,GAAG,UAAU,KAAK,QAAQ,GAAG,KAAK,KAAK;AAAA,cAC7D;AAAA,cACA,MAAM,QAAQ,gBAAgB;AAAA,cAC9B,gBAAc,CAAC,CAAC;AAAA,cAChB,iBAAe;AAAA,cACf,mBAAa,yCAAmB,WAAW,aAAa,YAAY,QAAQ;AAAA;AAAA,UAC9E;AAAA,UACA;AAAA,YAAC;AAAA;AAAA,cACC,MAAK;AAAA,cACL,SAAS;AAAA,cACT,cAAY,yBAAY;AAAA,cACxB,OAAO;AAAA,gBACL,WAAW;AAAA,gBACX,YAAY;AAAA,gBACZ,QAAQ;AAAA,gBACR,QAAQ;AAAA,gBACR,OAAO;AAAA,gBACP,UAAU;AAAA,gBACV,SAAS;AAAA,cACX;AAAA,cAEC,mCAAY;AAAA;AAAA,UACf;AAAA;AAAA;AAAA,IACF;AAAA,IAEA,+CAAC,YAAO,KAAK,WAAW,OAAO,EAAE,SAAS,QAAQ,cAAc,OAAO,QAAQ,oDAAoD,UAAU,SAAS,OAAO,OAAO,GAAG,cAAY,GAAG,KAAK,WACzL;AAAA,qDAAC,YAAO,OAAO,EAAE,SAAS,QAAQ,gBAAgB,iBAAiB,YAAY,UAAU,cAAc,OAAO,GAC5G;AAAA,uDAAC,QAAG,OAAO,EAAE,QAAQ,GAAG,UAAU,OAAO,GACtC;AAAA;AAAA,UAAO,YAAY,8CAAC,UAAK,OAAO,EAAE,OAAO,wCAAwC,GAAG,gBAAE;AAAA,WACzF;AAAA,QACA;AAAA,UAAC;AAAA;AAAA,YACC,MAAK;AAAA,YACL,SAAS;AAAA,YACT,cAAY,yBAAY;AAAA,YACxB,OAAO,EAAE,YAAY,QAAQ,QAAQ,QAAQ,QAAQ,WAAW,UAAU,OAAO;AAAA,YAClF;AAAA;AAAA,QAED;AAAA,SACF;AAAA,MACA,8CAAC,SAAI,OAAO,EAAE,cAAc,OAAO,GACjC;AAAA,QAAC,cAAAA;AAAA,QAAA;AAAA,UACC,cAAa;AAAA,UACb,OAAO,eAAe,GAAG,UAAU,KAAK,QAAQ,GAAG,KAAK,KAAK;AAAA,UAC7D;AAAA,UACA,MAAM;AAAA,UACN,gBAAc,CAAC,CAAC;AAAA;AAAA,MAClB,GACF;AAAA,MACA,+CAAC,YAAO,OAAO,EAAE,SAAS,QAAQ,gBAAgB,YAAY,YAAY,UAAU,KAAK,MAAM,GAC5F;AAAA,gBAAQ,0BAA0B,8CAAC,SAAK,iBAAO,uBAAuB,GAAE;AAAA,SACvE,eAAe,WACf,8CAAC,iBAAc,aAAa,CAAC,QAAQ,cAAc,QAAW,QAAgB,OAAc;AAAA,QAE9F;AAAA,UAAC;AAAA;AAAA,YACC,MAAK;AAAA,YACL,SAAS;AAAA,YACT,OAAO,EAAE,SAAS,YAAY,cAAc,OAAO,QAAQ,oDAAoD,YAAY,SAAS,QAAQ,UAAU;AAAA,YAErJ,mCAAY;AAAA;AAAA,QACf;AAAA,QACA;AAAA,UAAC;AAAA;AAAA,YACC,MAAK;AAAA,YACL,SAAS;AAAA,YACT,UAAU,CAAC,QAAQ,gBAAgB,eAAgB;AAAA,YACnD,OAAO,EAAE,SAAS,YAAY,cAAc,OAAO,QAAQ,QAAQ,YAAY,0CAA0C,OAAO,SAAS,QAAQ,UAAU;AAAA,YAC3J,eAAa,GAAG,WAAW,IAAI,UAAU,IAAI,QAAQ;AAAA,YAEpD,mCAAY;AAAA;AAAA,QACf;AAAA,SACF;AAAA,OACF;AAAA,IAEA,+CAAC,YAAO,KAAK,YAAY,OAAO,EAAE,SAAS,QAAQ,cAAc,OAAO,QAAQ,mDAAmD,GACjI;AAAA,oDAAC,QAAG,OAAO,EAAE,QAAQ,aAAa,UAAU,OAAO,GAAI,mCAAY,gBAAe;AAAA,MAClF,8CAAC,OAAG,mCAAY,cAAc,KAAK,GAAE;AAAA,MACrC,+CAAC,YAAO,OAAO,EAAE,SAAS,QAAQ,gBAAgB,YAAY,KAAK,OAAO,WAAW,OAAO,GAC1F;AAAA;AAAA,UAAC;AAAA;AAAA,YACC,MAAK;AAAA,YACL,SAAS;AAAA,YACT,OAAO,EAAE,SAAS,YAAY,cAAc,OAAO,QAAQ,oDAAoD,YAAY,SAAS,QAAQ,UAAU;AAAA,YAErJ,mCAAY;AAAA;AAAA,QACf;AAAA,QACA;AAAA,UAAC;AAAA;AAAA,YACC,MAAK;AAAA,YACL,SAAS;AAAA,YACT,OAAO,EAAE,SAAS,YAAY,cAAc,OAAO,QAAQ,QAAQ,YAAY,0CAA0C,OAAO,SAAS,QAAQ,UAAU;AAAA,YAE1J,mCAAY;AAAA;AAAA,QACf;AAAA,SACF;AAAA,OACF;AAAA,KACF;AAEJ;AAEA,IAAO,mBAAQ;;;AE7KN,IAAAC,uBAAA;AAFT,IAAM,kBAAkB,CAAC,UAA2B;AAClD,QAAM,EAAE,MAAM,IAAI;AAClB,SAAO,8CAAC,WAAM,MAAK,UAAS,OAAwB;AACtD;AAEA,IAAO,0BAAQ;;;ACFN,IAAAC,uBAAA;AAFT,IAAM,WAAW,CAAC,UAA4C;AAC5D,QAAM,EAAE,WAAW,OAAO,OAAO,IAAI;AACrC,SAAO,8CAAC,gBAAa,WAAsB,OAAyB,GAAG,QAAQ;AACjF;AAEA,IAAO,mBAAQ;;;ACTf,IAAAC,eAA8B;AAsBtB,IAAAC,uBAAA;AAZD,IAAM,cAAc,CAAC,UAA6B;AACvD,QAAM,EAAE,qBAAqB,2BAA2B,SAAS,iBAAiB,IAAI;AACtF,QAAM,QAAQ,uBAAuB,2BAAc;AACnD,QAAM,SAAS,6BAA6B,2BAAc;AAE1D,SACE;AAAA,IAAC;AAAA;AAAA,MACC,WAAW,mBAAmB,UAAU,2BAA2B,EAAE;AAAA,MACrE,MAAK;AAAA,MACL,cAAW;AAAA,MAEV,WAAC,GAAG,MAAM,KAAK,CAAC,EAAE,IAAI,CAAC,GAAG,MACzB,+CAAC,SAA4B,OAAO,EAAE,cAAc,GAAG,GACpD;AAAA,SAAC,oBACA,8CAAC,SAAI,WAAU,eAAc,OAAO,EAAE,OAAO,OAAO,QAAQ,IAAI,cAAc,GAAG,YAAY,0CAA0C,cAAc,EAAE,GAAG;AAAA,QAE5J,8CAAC,SAAI,WAAU,eAAc,OAAO,EAAE,OAAO,QAAQ,QAAQ,YAAY,0CAA0C,cAAc,EAAE,GAAG;AAAA,WAJ9H,cAAc,CAAC,EAKzB,CACD;AAAA;AAAA,EACH;AAEJ;;;AC/BA,IAAAC,eAA2C;AAC3C,IAAAC,gBAAkB;AAgBX,SAAS,4BAA2D;AACzE,SAAO;AAAA,IACL,CAAC,4BAAe,OAAO,GAAG,cAAAC,QAAM,cAAc,eAAO;AAAA,IACrD,CAAC,4BAAe,MAAM,GAAG,cAAAA,QAAM,cAAc,cAAW;AAAA,IACxD,CAAC,4BAAe,MAAM,GAAG,cAAAA,QAAM,cAAc,cAAM;AAAA,IACnD,CAAC,4BAAe,QAAQ,GAAG,cAAAA,QAAM,cAAc,gBAAQ;AAAA,IACvD,CAAC,4BAAe,cAAc,GAAG,cAAAA,QAAM,cAAc,sBAAc;AAAA,IACnE,CAAC,4BAAe,WAAW,GAAG,cAAAA,QAAM,cAAc,mBAAW;AAAA,IAC7D,CAAC,4BAAe,WAAW,GAAG,cAAAA,QAAM,cAAc,mBAAW;AAAA,IAC7D,CAAC,4BAAe,MAAM,GAAG,cAAAA,QAAM,cAAc,cAAM;AAAA,IACnD,CAAC,4BAAe,UAAU,GAAG,cAAAA,QAAM,cAAc,kBAAU;AAAA,IAC3D,CAAC,4BAAe,aAAa,GAAG,cAAAA,QAAM,cAAc,qBAAa;AAAA,IACjE,CAAC,4BAAe,QAAQ,GAAG,cAAAA,QAAM,cAAc,gBAAQ;AAAA,IACvD,CAAC,4BAAe,QAAQ,GAAG,cAAAA,QAAM,cAAc,uBAAe;AAAA,IAC9D,CAAC,4BAAe,QAAQ,GAAG,cAAAA,QAAM,cAAc,gBAAQ;AAAA,EACzD;AACF;","names":["import_jsx_runtime","import_react","import_jsx_runtime","import_jsx_runtime","import_react","import_jsx_runtime","React","import_react","import_jsx_runtime","import_jsx_runtime","import_react","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_core","import_react","import_core","import_jsx_runtime","import_jsx_runtime","React","ChakraTextarea","import_jsx_runtime","import_jsx_runtime","import_core","import_jsx_runtime","import_core","import_react","React"]}
|
package/dist/index.mjs
CHANGED
|
@@ -24,8 +24,10 @@ import {
|
|
|
24
24
|
GetFieldDataTestId,
|
|
25
25
|
getFieldState,
|
|
26
26
|
formatDateTime,
|
|
27
|
-
DocumentLinksStrings
|
|
28
|
-
|
|
27
|
+
DocumentLinksStrings,
|
|
28
|
+
convertBooleanToYesOrNoText,
|
|
29
|
+
isNull
|
|
30
|
+
} from "@form-eng/core/adapter-utils";
|
|
29
31
|
|
|
30
32
|
// src/fields/Textbox.tsx
|
|
31
33
|
import { jsx as jsx2 } from "react/jsx-runtime";
|
|
@@ -63,7 +65,6 @@ var Textbox = (props) => {
|
|
|
63
65
|
var Textbox_default = Textbox;
|
|
64
66
|
|
|
65
67
|
// src/fields/Number.tsx
|
|
66
|
-
import { isNull } from "@form-eng/core";
|
|
67
68
|
import { Input as Input2 } from "@chakra-ui/react";
|
|
68
69
|
import { jsx as jsx3 } from "react/jsx-runtime";
|
|
69
70
|
var NumberField = (props) => {
|
|
@@ -95,7 +96,6 @@ var NumberField = (props) => {
|
|
|
95
96
|
var Number_default = NumberField;
|
|
96
97
|
|
|
97
98
|
// src/fields/Toggle.tsx
|
|
98
|
-
import { convertBooleanToYesOrNoText } from "@form-eng/core";
|
|
99
99
|
import { jsx as jsx4, jsxs } from "react/jsx-runtime";
|
|
100
100
|
var Toggle = (props) => {
|
|
101
101
|
const { fieldName, programName, entityType, entityId, value, readOnly, error, required, label, setFieldValue } = props;
|
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/fields/Textbox.tsx","../src/components/ReadOnlyText.tsx","../src/helpers.ts","../src/fields/Number.tsx","../src/fields/Toggle.tsx","../src/fields/Dropdown.tsx","../src/fields/SimpleDropdown.tsx","../src/fields/MultiSelect.tsx","../src/fields/DateControl.tsx","../src/fields/Slider.tsx","../src/fields/RadioGroup.tsx","../src/fields/CheckboxGroup.tsx","../src/fields/Textarea.tsx","../src/components/StatusMessage.tsx","../src/fields/DynamicFragment.tsx","../src/fields/readonly/ReadOnly.tsx","../src/components/FormLoading.tsx","../src/registry.ts"],"sourcesContent":["import { IFieldProps } from \"@form-eng/core\";\nimport { Input } from \"@chakra-ui/react\";\nimport React from \"react\";\nimport { ReadOnlyText } from \"../components/ReadOnlyText\";\nimport { GetFieldDataTestId, getFieldState } from \"../helpers\";\n\ninterface ITextboxProps {\n ellipsifyTextCharacters?: number;\n placeHolder?: string;\n multiline?: boolean;\n}\n\nconst Textbox = (props: IFieldProps<ITextboxProps>) => {\n const { fieldName, programName, entityType, entityId, value, readOnly, config, error, required, placeholder, setFieldValue } = props;\n\n const onChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n setFieldValue(fieldName, event.target.value, false, 3000);\n };\n\n if (readOnly) {\n return (\n <ReadOnlyText\n fieldName={fieldName}\n value={value as string}\n ellipsifyTextCharacters={config?.ellipsifyTextCharacters}\n />\n );\n }\n\n return (\n <Input\n type=\"text\"\n autoComplete=\"off\"\n value={(value as string) ?? \"\"}\n onChange={onChange}\n placeholder={placeholder ?? config?.placeHolder}\n aria-invalid={!!error}\n aria-required={required}\n data-field-type=\"Textbox\"\n data-field-state={getFieldState({ error, required, readOnly })}\n data-testid={GetFieldDataTestId(fieldName, programName, entityType, entityId)}\n />\n );\n};\n\nexport default Textbox;\n","import React from \"react\";\n\nexport interface IReadOnlyFieldProps {\n readonly value?: string;\n readonly fieldName?: string;\n readonly labelClassName?: string;\n readonly valueClassName?: string;\n readonly showControlOnSide?: boolean;\n readonly containerClassName?: string;\n readonly ellipsifyTextCharacters?: number;\n}\n\nexport const ReadOnlyText: React.FunctionComponent<IReadOnlyFieldProps> = (props) => {\n const { value, fieldName, ellipsifyTextCharacters } = props;\n const cutoff = (ellipsifyTextCharacters || 0) - 3;\n\n const displayValue = value\n ? ellipsifyTextCharacters && value.length > ellipsifyTextCharacters\n ? `${value.substring(0, cutoff)}...`\n : value\n : \"-\";\n\n return (\n <span\n id={`${fieldName}-read-only`}\n className=\"fe-read-only-text\"\n title={value}\n >\n {displayValue}\n </span>\n );\n};\n\nexport default ReadOnlyText;\n","// Re-export shared field utilities from core\nexport {\n FieldClassName,\n GetFieldDataTestId,\n getFieldState,\n formatDateTime,\n DocumentLinksStrings,\n} from \"@form-eng/core\";\n","import { IFieldProps, isNull } from \"@form-eng/core\";\nimport { Input } from \"@chakra-ui/react\";\nimport React from \"react\";\nimport { ReadOnlyText } from \"../components/ReadOnlyText\";\nimport { GetFieldDataTestId, getFieldState } from \"../helpers\";\n\nconst NumberField = (props: IFieldProps<{}>) => {\n const { fieldName, programName, entityType, entityId, value, readOnly, error, required, setFieldValue } = props;\n\n const onChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n const number = Number(event.target.value);\n if (!isNaN(number)) {\n setFieldValue(fieldName, number, false, 1500);\n }\n };\n\n if (readOnly) {\n return <ReadOnlyText fieldName={fieldName} value={String(value)} />;\n }\n\n return (\n <Input\n type=\"number\"\n autoComplete=\"off\"\n value={!isNull(value) ? String(value) : \"\"}\n onChange={onChange}\n aria-invalid={!!error}\n aria-required={required}\n data-field-type=\"Number\"\n data-field-state={getFieldState({ error, required, readOnly })}\n data-testid={GetFieldDataTestId(fieldName, programName, entityType, entityId)}\n />\n );\n};\n\nexport default NumberField;\n","import { IFieldProps, convertBooleanToYesOrNoText } from \"@form-eng/core\";\nimport React from \"react\";\nimport { ReadOnlyText } from \"../components/ReadOnlyText\";\nimport { GetFieldDataTestId, getFieldState } from \"../helpers\";\n\nconst Toggle = (props: IFieldProps<{}>) => {\n const { fieldName, programName, entityType, entityId, value, readOnly, error, required, label, setFieldValue } = props;\n\n const onChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n setFieldValue(fieldName, event.target.checked);\n };\n\n if (readOnly) {\n return <ReadOnlyText fieldName={fieldName} value={convertBooleanToYesOrNoText(value as boolean)} />;\n }\n\n return (\n <label\n style={{\n display: \"inline-flex\",\n alignItems: \"center\",\n gap: \"8px\",\n cursor: \"pointer\",\n }}\n data-field-type=\"Toggle\"\n data-field-state={getFieldState({ error, required, readOnly })}\n >\n <input\n type=\"checkbox\"\n role=\"switch\"\n checked={!!value}\n onChange={onChange}\n aria-invalid={!!error}\n aria-required={required}\n data-testid={GetFieldDataTestId(fieldName, programName, entityType, entityId)}\n style={{ accentColor: \"var(--chakra-colors-blue-500, #3182CE)\" }}\n />\n {label && <span style={{ fontSize: \"var(--chakra-fontSizes-md, 16px)\" }}>{label}</span>}\n </label>\n );\n};\n\nexport default Toggle;\n","import { IFieldProps } from \"@form-eng/core\";\nimport { NativeSelect } from \"@chakra-ui/react\";\nimport React from \"react\";\nimport { ReadOnlyText } from \"../components/ReadOnlyText\";\nimport { GetFieldDataTestId, getFieldState } from \"../helpers\";\n\ninterface IDropdownProps {\n placeHolder?: string;\n setDefaultKeyIfOnlyOneOption?: boolean;\n}\n\nconst Dropdown = (props: IFieldProps<IDropdownProps>) => {\n const { fieldName, programName, entityType, entityId, value, readOnly, config, error, required, options, placeholder, setFieldValue } = props;\n\n const onChange = (event: React.ChangeEvent<HTMLSelectElement>) => {\n setFieldValue(fieldName, event.target.value);\n };\n\n React.useEffect(() => {\n if (!value && !readOnly && config?.setDefaultKeyIfOnlyOneOption && options?.length === 1) {\n setFieldValue(fieldName, String(options[0].value));\n }\n }, [options]);\n\n if (readOnly) {\n return <ReadOnlyText fieldName={fieldName} value={value as string} />;\n }\n\n return (\n <NativeSelect.Root\n data-field-type=\"Dropdown\"\n data-field-state={getFieldState({ error, required, readOnly })}\n >\n <NativeSelect.Field\n value={(value as string) ?? \"\"}\n onChange={onChange}\n aria-invalid={!!error}\n aria-required={required}\n data-testid={GetFieldDataTestId(fieldName, programName, entityType, entityId)}\n >\n <option value=\"\">{placeholder ?? config?.placeHolder ?? \"\"}</option>\n {options?.map(option => (\n <option key={String(option.value)} value={String(option.value)} disabled={option.disabled}>\n {option.label}\n </option>\n ))}\n </NativeSelect.Field>\n <NativeSelect.Indicator />\n </NativeSelect.Root>\n );\n};\n\nexport default Dropdown;\n","import { IFieldProps } from \"@form-eng/core\";\nimport { NativeSelect } from \"@chakra-ui/react\";\nimport React from \"react\";\nimport { ReadOnlyText } from \"../components/ReadOnlyText\";\nimport { GetFieldDataTestId, getFieldState } from \"../helpers\";\n\ninterface ISimpleDropdownProps {\n dropdownOptions?: string[];\n placeHolder?: string;\n}\n\nconst SimpleDropdown = (props: IFieldProps<ISimpleDropdownProps>) => {\n const { fieldName, programName, entityType, entityId, value, readOnly, config, error, required, placeholder, setFieldValue } = props;\n\n const simpleOptions = config?.dropdownOptions ?? [];\n\n const onChange = (event: React.ChangeEvent<HTMLSelectElement>) => {\n setFieldValue(fieldName, event.target.value);\n };\n\n if (readOnly) {\n return <ReadOnlyText fieldName={fieldName} value={value as string} />;\n }\n\n return (\n <NativeSelect.Root\n data-field-type=\"SimpleDropdown\"\n data-field-state={getFieldState({ error, required, readOnly })}\n >\n <NativeSelect.Field\n value={(value as string) ?? \"\"}\n onChange={onChange}\n aria-invalid={!!error}\n aria-required={required}\n data-testid={GetFieldDataTestId(fieldName, programName, entityType, entityId)}\n >\n <option value=\"\">{placeholder ?? config?.placeHolder ?? \"\"}</option>\n {simpleOptions.map(option => (\n <option key={option} value={option}>{option}</option>\n ))}\n </NativeSelect.Field>\n <NativeSelect.Indicator />\n </NativeSelect.Root>\n );\n};\n\nexport default SimpleDropdown;\n","import { IFieldProps } from \"@form-eng/core\";\nimport React from \"react\";\nimport { GetFieldDataTestId, getFieldState } from \"../helpers\";\n\nconst MultiSelect = (props: IFieldProps<{}>) => {\n const { fieldName, programName, entityType, entityId, value, readOnly, error, required, options, setFieldValue } = props;\n\n const selectedValues = (value as string[]) ?? [];\n\n const onChange = (event: React.ChangeEvent<HTMLSelectElement>) => {\n const selected = Array.from(event.target.selectedOptions, opt => opt.value);\n setFieldValue(fieldName, selected, false, 1500);\n };\n\n if (readOnly) {\n return selectedValues.length > 0 ? (\n <ul\n style={{ listStyle: \"none\", padding: 0, margin: 0 }}\n data-field-type=\"MultiSelect\"\n data-field-state=\"readonly\"\n >\n {selectedValues.map((v, i) => (\n <li key={i} style={{ padding: \"2px 0\" }}>{v}</li>\n ))}\n </ul>\n ) : (\n <span className=\"fe-read-only-text\">-</span>\n );\n }\n\n return (\n <select\n multiple\n style={{\n width: \"100%\",\n minHeight: \"80px\",\n padding: \"8px\",\n borderWidth: \"1px\",\n borderStyle: \"solid\",\n borderColor: error ? \"var(--chakra-colors-red-500, #E53E3E)\" : \"var(--chakra-colors-gray-200, #E2E8F0)\",\n borderRadius: \"var(--chakra-radii-md, 6px)\",\n fontSize: \"var(--chakra-fontSizes-md, 16px)\",\n background: \"var(--chakra-colors-white, #FFFFFF)\",\n }}\n value={selectedValues}\n onChange={onChange}\n aria-invalid={!!error}\n aria-required={required}\n data-field-type=\"MultiSelect\"\n data-field-state={getFieldState({ error, required, readOnly })}\n data-testid={GetFieldDataTestId(fieldName, programName, entityType, entityId)}\n >\n {options?.map(option => (\n <option key={String(option.value)} value={String(option.value)} disabled={option.disabled}>\n {option.label}\n </option>\n ))}\n </select>\n );\n};\n\nexport default MultiSelect;\n","import { IFieldProps, FormStrings } from \"@form-eng/core\";\nimport { Input } from \"@chakra-ui/react\";\nimport React from \"react\";\nimport { GetFieldDataTestId, getFieldState, formatDateTime } from \"../helpers\";\n\nconst DateControl = (props: IFieldProps<{}>) => {\n const { fieldName, programName, entityType, entityId, value, readOnly, error, required, setFieldValue } = props;\n\n const onChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n const date = new Date(event.target.value);\n if (!isNaN(date.getTime())) {\n setFieldValue(fieldName, date.toISOString());\n }\n };\n\n const onClear = () => {\n setFieldValue(fieldName, null);\n };\n\n const dateInputValue = value ? new Date(value as string).toISOString().split(\"T\")[0] : \"\";\n\n if (readOnly) {\n return value ? (\n <time\n className=\"fe-read-only-date\"\n dateTime={value as string}\n data-field-type=\"DateControl\"\n data-field-state=\"readonly\"\n >\n {formatDateTime(value as string, { hideTimestamp: true })}\n </time>\n ) : (\n <span className=\"fe-read-only-text\">-</span>\n );\n }\n\n return (\n <div\n style={{ display: \"flex\", alignItems: \"center\", gap: \"8px\" }}\n data-field-type=\"DateControl\"\n data-field-state={getFieldState({ error, required, readOnly })}\n >\n <Input\n type=\"date\"\n value={dateInputValue}\n onChange={onChange}\n aria-invalid={!!error}\n aria-required={required}\n data-testid={GetFieldDataTestId(fieldName, programName, entityType, entityId)}\n />\n <button\n type=\"button\"\n onClick={onClear}\n title={FormStrings.clickToClear}\n aria-label={`${fieldName} ${FormStrings.clear}`}\n style={{\n background: \"none\",\n border: \"none\",\n cursor: \"pointer\",\n fontSize: \"18px\",\n color: \"var(--chakra-colors-gray-500, #718096)\",\n padding: \"4px 8px\",\n }}\n >\n ×\n </button>\n </div>\n );\n};\n\nexport default DateControl;\n","import { IFieldProps } from \"@form-eng/core\";\nimport React from \"react\";\nimport { ReadOnlyText } from \"../components/ReadOnlyText\";\nimport { GetFieldDataTestId, getFieldState } from \"../helpers\";\n\ninterface ISliderProps {\n max?: number;\n min?: number;\n step?: number;\n}\n\nconst Slider = (props: IFieldProps<ISliderProps>) => {\n const { fieldName, programName, entityType, entityId, value, readOnly, config, error, required, setFieldValue } = props;\n\n const onChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n setFieldValue(fieldName, Number(event.target.value));\n };\n\n if (readOnly) {\n return <ReadOnlyText fieldName={fieldName} value={String(value)} />;\n }\n\n return (\n <div\n style={{ display: \"flex\", alignItems: \"center\", gap: \"12px\" }}\n data-field-type=\"Slider\"\n data-field-state={getFieldState({ error, required, readOnly })}\n >\n <input\n type=\"range\"\n style={{\n flex: 1,\n accentColor: \"var(--chakra-colors-blue-500, #3182CE)\",\n }}\n value={(value as number) ?? 0}\n onChange={onChange}\n max={config?.max ?? 100}\n min={config?.min ?? 0}\n step={config?.step ?? 1}\n aria-invalid={!!error}\n aria-required={required}\n aria-valuenow={(value as number) ?? 0}\n aria-valuemin={config?.min ?? 0}\n aria-valuemax={config?.max ?? 100}\n data-testid={GetFieldDataTestId(fieldName, programName, entityType, entityId)}\n />\n <output style={{ minWidth: \"32px\", textAlign: \"center\", fontSize: \"var(--chakra-fontSizes-md, 16px)\" }}>\n {String(value)}\n </output>\n </div>\n );\n};\n\nexport default Slider;\n","import { IFieldProps } from \"@form-eng/core\";\nimport React from \"react\";\nimport { ReadOnlyText } from \"../components/ReadOnlyText\";\nimport { GetFieldDataTestId, getFieldState } from \"../helpers\";\n\nconst RadioGroup = (props: IFieldProps<{}>) => {\n const { fieldName, programName, entityType, entityId, value, readOnly, error, required, options, setFieldValue } = props;\n\n const onChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n setFieldValue(fieldName, event.target.value);\n };\n\n if (readOnly) {\n const label = options?.find(o => String(o.value) === String(value))?.label ?? (value as string);\n return <ReadOnlyText fieldName={fieldName} value={label} />;\n }\n\n return (\n <div\n role=\"radiogroup\"\n style={{ display: \"flex\", flexDirection: \"column\", gap: \"8px\" }}\n aria-invalid={!!error}\n aria-required={required}\n data-field-type=\"RadioGroup\"\n data-field-state={getFieldState({ error, required, readOnly })}\n data-testid={GetFieldDataTestId(fieldName, programName, entityType, entityId)}\n >\n {options?.map(option => (\n <label\n key={String(option.value)}\n style={{\n display: \"flex\",\n alignItems: \"center\",\n gap: \"8px\",\n cursor: option.disabled ? \"not-allowed\" : \"pointer\",\n opacity: option.disabled ? 0.5 : 1,\n fontSize: \"var(--chakra-fontSizes-md, 16px)\",\n }}\n >\n <input\n type=\"radio\"\n name={fieldName}\n value={String(option.value)}\n checked={String(value) === String(option.value)}\n onChange={onChange}\n disabled={option.disabled}\n style={{ accentColor: \"var(--chakra-colors-blue-500, #3182CE)\" }}\n />\n <span>{option.label}</span>\n </label>\n ))}\n </div>\n );\n};\n\nexport default RadioGroup;\n","import { IFieldProps } from \"@form-eng/core\";\nimport React from \"react\";\nimport { ReadOnlyText } from \"../components/ReadOnlyText\";\nimport { GetFieldDataTestId, getFieldState } from \"../helpers\";\n\nconst CheckboxGroup = (props: IFieldProps<{}>) => {\n const { fieldName, programName, entityType, entityId, value, readOnly, error, required, options, setFieldValue } = props;\n\n const selected = Array.isArray(value) ? (value as string[]) : [];\n\n const onChange = (optionValue: string) => (event: React.ChangeEvent<HTMLInputElement>) => {\n const next = event.target.checked\n ? [...selected, optionValue]\n : selected.filter(v => v !== optionValue);\n setFieldValue(fieldName, next);\n };\n\n if (readOnly) {\n const labels = options\n ?.filter(o => selected.includes(String(o.value)))\n .map(o => o.label)\n .join(\", \");\n return <ReadOnlyText fieldName={fieldName} value={labels ?? \"\"} />;\n }\n\n return (\n <div\n style={{ display: \"flex\", flexDirection: \"column\", gap: \"8px\" }}\n aria-invalid={!!error}\n aria-required={required}\n data-field-type=\"CheckboxGroup\"\n data-field-state={getFieldState({ error, required, readOnly })}\n data-testid={GetFieldDataTestId(fieldName, programName, entityType, entityId)}\n >\n {options?.map(option => (\n <label\n key={String(option.value)}\n style={{\n display: \"flex\",\n alignItems: \"center\",\n gap: \"8px\",\n cursor: option.disabled ? \"not-allowed\" : \"pointer\",\n opacity: option.disabled ? 0.5 : 1,\n fontSize: \"var(--chakra-fontSizes-md, 16px)\",\n }}\n >\n <input\n type=\"checkbox\"\n value={String(option.value)}\n checked={selected.includes(String(option.value))}\n onChange={onChange(String(option.value))}\n disabled={option.disabled}\n style={{ accentColor: \"var(--chakra-colors-blue-500, #3182CE)\" }}\n />\n <span>{option.label}</span>\n </label>\n ))}\n </div>\n );\n};\n\nexport default CheckboxGroup;\n","import { IFieldProps, FormStrings } from \"@form-eng/core\";\nimport { Textarea as ChakraTextarea } from \"@chakra-ui/react\";\nimport React, { useState } from \"react\";\nimport { ReadOnlyText } from \"../components/ReadOnlyText\";\nimport { StatusMessage } from \"../components/StatusMessage\";\nimport { GetFieldDataTestId, getFieldState } from \"../helpers\";\n\ninterface ITextareaProps {\n autoAdjustHeight?: boolean;\n numberOfRows?: number;\n ellipsifyTextCharacters?: number;\n additionalInfo?: string;\n maxLimit?: number;\n saveCallback?: () => void;\n renderExtraModalFooter?: () => React.ReactNode;\n}\n\nconst Textarea = (props: IFieldProps<ITextareaProps>) => {\n const {\n error, fieldName, programName, entityType, entityId, config, readOnly,\n required, savePending, saving, value, label, setFieldValue\n } = props;\n\n const [modalValue, setModalValue] = useState<string>();\n const [modalVisible, setModalVisible] = useState(false);\n const [confirmVisible, setConfirmVisible] = useState(false);\n const dialogRef = React.useRef<HTMLDialogElement>(null);\n const confirmRef = React.useRef<HTMLDialogElement>(null);\n\n const onChange = (event: React.ChangeEvent<HTMLTextAreaElement>) => {\n const newValue = event.target.value;\n modalVisible ? setModalValue(newValue) : setFieldValue(fieldName, newValue, false, 3000);\n };\n\n const onExpand = () => {\n setModalVisible(true);\n setModalValue(value ? `${value}` : \"\");\n dialogRef.current?.showModal();\n };\n\n const onSave = () => {\n setFieldValue(fieldName, modalValue, false);\n setConfirmVisible(false);\n setModalVisible(false);\n dialogRef.current?.close();\n confirmRef.current?.close();\n config?.saveCallback?.();\n };\n\n const onCancel = () => {\n if (confirmVisible) {\n setConfirmVisible(false);\n setModalVisible(false);\n dialogRef.current?.close();\n confirmRef.current?.close();\n } else if (modalValue !== value) {\n setConfirmVisible(true);\n confirmRef.current?.showModal();\n } else {\n setModalVisible(false);\n dialogRef.current?.close();\n }\n };\n\n if (readOnly) {\n return (\n <ReadOnlyText\n fieldName={fieldName}\n value={value ? `${value}` : \"\"}\n ellipsifyTextCharacters={config?.ellipsifyTextCharacters}\n />\n );\n }\n\n return (\n <>\n <div\n data-field-type=\"Textarea\"\n data-field-state={getFieldState({ error, required, readOnly })}\n >\n <ChakraTextarea\n autoComplete=\"off\"\n value={modalVisible ? `${modalValue}` : value ? `${value}` : \"\"}\n onChange={onChange}\n rows={config?.numberOfRows ?? 4}\n aria-invalid={!!error}\n aria-required={required}\n data-testid={GetFieldDataTestId(fieldName, programName, entityType, entityId)}\n />\n <button\n type=\"button\"\n onClick={onExpand}\n aria-label={FormStrings.openExpandedTextEditor}\n style={{\n marginTop: \"4px\",\n background: \"none\",\n border: \"none\",\n cursor: \"pointer\",\n color: \"var(--chakra-colors-blue-500, #3182CE)\",\n fontSize: \"var(--chakra-fontSizes-sm, 14px)\",\n padding: \"2px 0\",\n }}\n >\n {FormStrings.expand}\n </button>\n </div>\n\n <dialog ref={dialogRef} style={{ padding: \"24px\", borderRadius: \"8px\", border: \"1px solid var(--chakra-colors-gray-200, #E2E8F0)\", maxWidth: \"640px\", width: \"100%\" }} aria-label={`${label} editor`}>\n <header style={{ display: \"flex\", justifyContent: \"space-between\", alignItems: \"center\", marginBottom: \"16px\" }}>\n <h2 style={{ margin: 0, fontSize: \"18px\" }}>\n {label}{required && <span style={{ color: \"var(--chakra-colors-red-500, #E53E3E)\" }}> *</span>}\n </h2>\n <button\n type=\"button\"\n onClick={onCancel}\n aria-label={FormStrings.closeExpandedTextEditor}\n style={{ background: \"none\", border: \"none\", cursor: \"pointer\", fontSize: \"20px\" }}\n >\n ×\n </button>\n </header>\n <div style={{ marginBottom: \"16px\" }}>\n <ChakraTextarea\n autoComplete=\"off\"\n value={modalVisible ? `${modalValue}` : value ? `${value}` : \"\"}\n onChange={onChange}\n rows={12}\n aria-invalid={!!error}\n />\n </div>\n <footer style={{ display: \"flex\", justifyContent: \"flex-end\", alignItems: \"center\", gap: \"8px\" }}>\n {config?.renderExtraModalFooter && <div>{config.renderExtraModalFooter()}</div>}\n {(savePending || saving) && (\n <StatusMessage savePending={!error ? savePending : undefined} saving={saving} error={error} />\n )}\n <button\n type=\"button\"\n onClick={onCancel}\n style={{ padding: \"6px 16px\", borderRadius: \"6px\", border: \"1px solid var(--chakra-colors-gray-200, #E2E8F0)\", background: \"white\", cursor: \"pointer\" }}\n >\n {FormStrings.cancel}\n </button>\n <button\n type=\"button\"\n onClick={onSave}\n disabled={!config?.saveCallback && modalValue === (value as string)}\n style={{ padding: \"6px 16px\", borderRadius: \"6px\", border: \"none\", background: \"var(--chakra-colors-blue-500, #3182CE)\", color: \"white\", cursor: \"pointer\" }}\n data-testid={`${programName}-${entityType}-${entityId}-save-note`}\n >\n {FormStrings.save}\n </button>\n </footer>\n </dialog>\n\n <dialog ref={confirmRef} style={{ padding: \"24px\", borderRadius: \"8px\", border: \"1px solid var(--chakra-colors-gray-200, #E2E8F0)\" }}>\n <h2 style={{ margin: \"0 0 8px 0\", fontSize: \"18px\" }}>{FormStrings.unsavedChanges}</h2>\n <p>{FormStrings.saveChangesTo(label)}</p>\n <footer style={{ display: \"flex\", justifyContent: \"flex-end\", gap: \"8px\", marginTop: \"16px\" }}>\n <button\n type=\"button\"\n onClick={onCancel}\n style={{ padding: \"6px 16px\", borderRadius: \"6px\", border: \"1px solid var(--chakra-colors-gray-200, #E2E8F0)\", background: \"white\", cursor: \"pointer\" }}\n >\n {FormStrings.dontSave}\n </button>\n <button\n type=\"button\"\n onClick={onSave}\n style={{ padding: \"6px 16px\", borderRadius: \"6px\", border: \"none\", background: \"var(--chakra-colors-blue-500, #3182CE)\", color: \"white\", cursor: \"pointer\" }}\n >\n {FormStrings.save}\n </button>\n </footer>\n </dialog>\n </>\n );\n};\n\nexport default Textarea;\n","import { FormStrings } from \"@form-eng/core\";\nimport React from \"react\";\nimport { FieldError } from \"react-hook-form\";\n\ninterface IStatusMessageProps {\n id?: string;\n readonly error?: FieldError;\n readonly errorCount?: number;\n readonly savePending?: boolean;\n readonly saving?: boolean;\n}\n\nexport const StatusMessage: React.FunctionComponent<IStatusMessageProps> = (props) => {\n const { id, error, errorCount, savePending, saving } = props;\n return (\n <div className=\"fe-status-message\">\n {error ? (\n <span id={id} role=\"alert\" style={{ color: \"var(--chakra-colors-red-500, #E53E3E)\" }}>\n {error.message || \"Error\"}\n </span>\n ) : savePending ? (\n <span id={id} role=\"alert\" style={{ color: \"var(--chakra-colors-orange-500, #DD6B20)\" }}>\n {FormStrings.autoSavePending} ({errorCount} {FormStrings.remaining})\n </span>\n ) : saving ? (\n <span id={id} role=\"status\" style={{ color: \"var(--chakra-colors-gray-500, #718096)\" }}>\n {FormStrings.saving}\n </span>\n ) : null}\n </div>\n );\n};\n","import { IFieldProps } from \"@form-eng/core\";\nimport React from \"react\";\n\nconst DynamicFragment = (props: IFieldProps<{}>) => {\n const { value } = props;\n return <input type=\"hidden\" value={value as string} />;\n};\n\nexport default DynamicFragment;\n","import { IFieldProps } from \"@form-eng/core\";\nimport React from \"react\";\nimport { ReadOnlyText, IReadOnlyFieldProps } from \"../../components/ReadOnlyText\";\n\nconst ReadOnly = (props: IFieldProps<IReadOnlyFieldProps>) => {\n const { fieldName, value, config } = props;\n return <ReadOnlyText fieldName={fieldName} value={value as string} {...config} />;\n};\n\nexport default ReadOnly;\n","import { FormConstants } from \"@form-eng/core\";\nimport React from \"react\";\n\ninterface IFormLoadingProps {\n loadingShimmerCount?: number;\n loadingFieldShimmerHeight?: number;\n inPanel?: boolean;\n hideTitleShimmer?: boolean;\n}\n\nexport const FormLoading = (props: IFormLoadingProps) => {\n const { loadingShimmerCount, loadingFieldShimmerHeight, inPanel, hideTitleShimmer } = props;\n const count = loadingShimmerCount || FormConstants.loadingShimmerCount;\n const height = loadingFieldShimmerHeight || FormConstants.loadingFieldShimmerHeight;\n\n return (\n <div\n className={`fe-form-loading ${inPanel ? \"fe-form-loading--panel\" : \"\"}`}\n role=\"status\"\n aria-label=\"Loading form\"\n >\n {[...Array(count)].map((_, i) => (\n <div key={`fe-loading-${i}`} style={{ marginBottom: 16 }}>\n {!hideTitleShimmer && (\n <div className=\"fe-skeleton\" style={{ width: \"33%\", height: 16, marginBottom: 8, background: \"var(--chakra-colors-gray-200, #E2E8F0)\", borderRadius: 4 }} />\n )}\n <div className=\"fe-skeleton\" style={{ width: \"100%\", height, background: \"var(--chakra-colors-gray-200, #E2E8F0)\", borderRadius: 4 }} />\n </div>\n ))}\n </div>\n );\n};\n\nexport default FormLoading;\n","import { ComponentTypes, Dictionary } from \"@form-eng/core\";\nimport React from \"react\";\nimport Textbox from \"./fields/Textbox\";\nimport NumberField from \"./fields/Number\";\nimport Toggle from \"./fields/Toggle\";\nimport Dropdown from \"./fields/Dropdown\";\nimport SimpleDropdown from \"./fields/SimpleDropdown\";\nimport MultiSelect from \"./fields/MultiSelect\";\nimport DateControl from \"./fields/DateControl\";\nimport Slider from \"./fields/Slider\";\nimport RadioGroup from \"./fields/RadioGroup\";\nimport CheckboxGroup from \"./fields/CheckboxGroup\";\nimport Textarea from \"./fields/Textarea\";\nimport DynamicFragment from \"./fields/DynamicFragment\";\nimport ReadOnly from \"./fields/readonly/ReadOnly\";\n\n/** Creates the default Chakra UI v3 field registry for use with InjectedFieldProvider */\nexport function createChakraFieldRegistry(): Dictionary<React.JSX.Element> {\n return {\n [ComponentTypes.Textbox]: React.createElement(Textbox),\n [ComponentTypes.Number]: React.createElement(NumberField),\n [ComponentTypes.Toggle]: React.createElement(Toggle),\n [ComponentTypes.Dropdown]: React.createElement(Dropdown),\n [ComponentTypes.SimpleDropdown]: React.createElement(SimpleDropdown),\n [ComponentTypes.MultiSelect]: React.createElement(MultiSelect),\n [ComponentTypes.DateControl]: React.createElement(DateControl),\n [ComponentTypes.Slider]: React.createElement(Slider),\n [ComponentTypes.RadioGroup]: React.createElement(RadioGroup),\n [ComponentTypes.CheckboxGroup]: React.createElement(CheckboxGroup),\n [ComponentTypes.Textarea]: React.createElement(Textarea),\n [ComponentTypes.Fragment]: React.createElement(DynamicFragment),\n [ComponentTypes.ReadOnly]: React.createElement(ReadOnly),\n };\n}\n"],"mappings":"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","names":["jsx","Input","jsx","Input","jsx","jsx","jsxs","NativeSelect","jsx","jsxs","NativeSelect","jsx","Input","jsx","jsxs","Input","jsx","jsxs","jsx","jsxs","jsx","jsxs","FormStrings","React","FormStrings","jsx","jsxs","jsx","jsxs","React","FormStrings","jsx","jsx","jsx","jsxs","React","React"]}
|
|
1
|
+
{"version":3,"sources":["../src/fields/Textbox.tsx","../src/components/ReadOnlyText.tsx","../src/helpers.ts","../src/fields/Number.tsx","../src/fields/Toggle.tsx","../src/fields/Dropdown.tsx","../src/fields/SimpleDropdown.tsx","../src/fields/MultiSelect.tsx","../src/fields/DateControl.tsx","../src/fields/Slider.tsx","../src/fields/RadioGroup.tsx","../src/fields/CheckboxGroup.tsx","../src/fields/Textarea.tsx","../src/components/StatusMessage.tsx","../src/fields/DynamicFragment.tsx","../src/fields/readonly/ReadOnly.tsx","../src/components/FormLoading.tsx","../src/registry.ts"],"sourcesContent":["import { IFieldProps } from \"@form-eng/core\";\nimport { Input } from \"@chakra-ui/react\";\nimport React from \"react\";\nimport { ReadOnlyText } from \"../components/ReadOnlyText\";\nimport { GetFieldDataTestId, getFieldState } from \"../helpers\";\n\ninterface ITextboxProps {\n ellipsifyTextCharacters?: number;\n placeHolder?: string;\n multiline?: boolean;\n}\n\nconst Textbox = (props: IFieldProps<ITextboxProps>) => {\n const { fieldName, programName, entityType, entityId, value, readOnly, config, error, required, placeholder, setFieldValue } = props;\n\n const onChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n setFieldValue(fieldName, event.target.value, false, 3000);\n };\n\n if (readOnly) {\n return (\n <ReadOnlyText\n fieldName={fieldName}\n value={value as string}\n ellipsifyTextCharacters={config?.ellipsifyTextCharacters}\n />\n );\n }\n\n return (\n <Input\n type=\"text\"\n autoComplete=\"off\"\n value={(value as string) ?? \"\"}\n onChange={onChange}\n placeholder={placeholder ?? config?.placeHolder}\n aria-invalid={!!error}\n aria-required={required}\n data-field-type=\"Textbox\"\n data-field-state={getFieldState({ error, required, readOnly })}\n data-testid={GetFieldDataTestId(fieldName, programName, entityType, entityId)}\n />\n );\n};\n\nexport default Textbox;\n","import React from \"react\";\n\nexport interface IReadOnlyFieldProps {\n readonly value?: string;\n readonly fieldName?: string;\n readonly labelClassName?: string;\n readonly valueClassName?: string;\n readonly showControlOnSide?: boolean;\n readonly containerClassName?: string;\n readonly ellipsifyTextCharacters?: number;\n}\n\nexport const ReadOnlyText: React.FunctionComponent<IReadOnlyFieldProps> = (props) => {\n const { value, fieldName, ellipsifyTextCharacters } = props;\n const cutoff = (ellipsifyTextCharacters || 0) - 3;\n\n const displayValue = value\n ? ellipsifyTextCharacters && value.length > ellipsifyTextCharacters\n ? `${value.substring(0, cutoff)}...`\n : value\n : \"-\";\n\n return (\n <span\n id={`${fieldName}-read-only`}\n className=\"fe-read-only-text\"\n title={value}\n >\n {displayValue}\n </span>\n );\n};\n\nexport default ReadOnlyText;\n","// Re-export shared field utilities from core\nexport {\n FieldClassName,\n GetFieldDataTestId,\n getFieldState,\n formatDateTime,\n DocumentLinksStrings,\n convertBooleanToYesOrNoText,\n isNull,\n} from \"@form-eng/core/adapter-utils\";\n","import { IFieldProps } from \"@form-eng/core\";\nimport { isNull } from \"../helpers\";\nimport { Input } from \"@chakra-ui/react\";\nimport React from \"react\";\nimport { ReadOnlyText } from \"../components/ReadOnlyText\";\nimport { GetFieldDataTestId, getFieldState } from \"../helpers\";\n\nconst NumberField = (props: IFieldProps<{}>) => {\n const { fieldName, programName, entityType, entityId, value, readOnly, error, required, setFieldValue } = props;\n\n const onChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n const number = Number(event.target.value);\n if (!isNaN(number)) {\n setFieldValue(fieldName, number, false, 1500);\n }\n };\n\n if (readOnly) {\n return <ReadOnlyText fieldName={fieldName} value={String(value)} />;\n }\n\n return (\n <Input\n type=\"number\"\n autoComplete=\"off\"\n value={!isNull(value) ? String(value) : \"\"}\n onChange={onChange}\n aria-invalid={!!error}\n aria-required={required}\n data-field-type=\"Number\"\n data-field-state={getFieldState({ error, required, readOnly })}\n data-testid={GetFieldDataTestId(fieldName, programName, entityType, entityId)}\n />\n );\n};\n\nexport default NumberField;\n","import { IFieldProps } from \"@form-eng/core\";\nimport { convertBooleanToYesOrNoText } from \"../helpers\";\nimport React from \"react\";\nimport { ReadOnlyText } from \"../components/ReadOnlyText\";\nimport { GetFieldDataTestId, getFieldState } from \"../helpers\";\n\nconst Toggle = (props: IFieldProps<{}>) => {\n const { fieldName, programName, entityType, entityId, value, readOnly, error, required, label, setFieldValue } = props;\n\n const onChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n setFieldValue(fieldName, event.target.checked);\n };\n\n if (readOnly) {\n return <ReadOnlyText fieldName={fieldName} value={convertBooleanToYesOrNoText(value as boolean)} />;\n }\n\n return (\n <label\n style={{\n display: \"inline-flex\",\n alignItems: \"center\",\n gap: \"8px\",\n cursor: \"pointer\",\n }}\n data-field-type=\"Toggle\"\n data-field-state={getFieldState({ error, required, readOnly })}\n >\n <input\n type=\"checkbox\"\n role=\"switch\"\n checked={!!value}\n onChange={onChange}\n aria-invalid={!!error}\n aria-required={required}\n data-testid={GetFieldDataTestId(fieldName, programName, entityType, entityId)}\n style={{ accentColor: \"var(--chakra-colors-blue-500, #3182CE)\" }}\n />\n {label && <span style={{ fontSize: \"var(--chakra-fontSizes-md, 16px)\" }}>{label}</span>}\n </label>\n );\n};\n\nexport default Toggle;\n","import { IFieldProps } from \"@form-eng/core\";\nimport { NativeSelect } from \"@chakra-ui/react\";\nimport React from \"react\";\nimport { ReadOnlyText } from \"../components/ReadOnlyText\";\nimport { GetFieldDataTestId, getFieldState } from \"../helpers\";\n\ninterface IDropdownProps {\n placeHolder?: string;\n setDefaultKeyIfOnlyOneOption?: boolean;\n}\n\nconst Dropdown = (props: IFieldProps<IDropdownProps>) => {\n const { fieldName, programName, entityType, entityId, value, readOnly, config, error, required, options, placeholder, setFieldValue } = props;\n\n const onChange = (event: React.ChangeEvent<HTMLSelectElement>) => {\n setFieldValue(fieldName, event.target.value);\n };\n\n React.useEffect(() => {\n if (!value && !readOnly && config?.setDefaultKeyIfOnlyOneOption && options?.length === 1) {\n setFieldValue(fieldName, String(options[0].value));\n }\n }, [options]);\n\n if (readOnly) {\n return <ReadOnlyText fieldName={fieldName} value={value as string} />;\n }\n\n return (\n <NativeSelect.Root\n data-field-type=\"Dropdown\"\n data-field-state={getFieldState({ error, required, readOnly })}\n >\n <NativeSelect.Field\n value={(value as string) ?? \"\"}\n onChange={onChange}\n aria-invalid={!!error}\n aria-required={required}\n data-testid={GetFieldDataTestId(fieldName, programName, entityType, entityId)}\n >\n <option value=\"\">{placeholder ?? config?.placeHolder ?? \"\"}</option>\n {options?.map(option => (\n <option key={String(option.value)} value={String(option.value)} disabled={option.disabled}>\n {option.label}\n </option>\n ))}\n </NativeSelect.Field>\n <NativeSelect.Indicator />\n </NativeSelect.Root>\n );\n};\n\nexport default Dropdown;\n","import { IFieldProps } from \"@form-eng/core\";\nimport { NativeSelect } from \"@chakra-ui/react\";\nimport React from \"react\";\nimport { ReadOnlyText } from \"../components/ReadOnlyText\";\nimport { GetFieldDataTestId, getFieldState } from \"../helpers\";\n\ninterface ISimpleDropdownProps {\n dropdownOptions?: string[];\n placeHolder?: string;\n}\n\nconst SimpleDropdown = (props: IFieldProps<ISimpleDropdownProps>) => {\n const { fieldName, programName, entityType, entityId, value, readOnly, config, error, required, placeholder, setFieldValue } = props;\n\n const simpleOptions = config?.dropdownOptions ?? [];\n\n const onChange = (event: React.ChangeEvent<HTMLSelectElement>) => {\n setFieldValue(fieldName, event.target.value);\n };\n\n if (readOnly) {\n return <ReadOnlyText fieldName={fieldName} value={value as string} />;\n }\n\n return (\n <NativeSelect.Root\n data-field-type=\"SimpleDropdown\"\n data-field-state={getFieldState({ error, required, readOnly })}\n >\n <NativeSelect.Field\n value={(value as string) ?? \"\"}\n onChange={onChange}\n aria-invalid={!!error}\n aria-required={required}\n data-testid={GetFieldDataTestId(fieldName, programName, entityType, entityId)}\n >\n <option value=\"\">{placeholder ?? config?.placeHolder ?? \"\"}</option>\n {simpleOptions.map(option => (\n <option key={option} value={option}>{option}</option>\n ))}\n </NativeSelect.Field>\n <NativeSelect.Indicator />\n </NativeSelect.Root>\n );\n};\n\nexport default SimpleDropdown;\n","import { IFieldProps } from \"@form-eng/core\";\nimport React from \"react\";\nimport { GetFieldDataTestId, getFieldState } from \"../helpers\";\n\nconst MultiSelect = (props: IFieldProps<{}>) => {\n const { fieldName, programName, entityType, entityId, value, readOnly, error, required, options, setFieldValue } = props;\n\n const selectedValues = (value as string[]) ?? [];\n\n const onChange = (event: React.ChangeEvent<HTMLSelectElement>) => {\n const selected = Array.from(event.target.selectedOptions, opt => opt.value);\n setFieldValue(fieldName, selected, false, 1500);\n };\n\n if (readOnly) {\n return selectedValues.length > 0 ? (\n <ul\n style={{ listStyle: \"none\", padding: 0, margin: 0 }}\n data-field-type=\"MultiSelect\"\n data-field-state=\"readonly\"\n >\n {selectedValues.map((v, i) => (\n <li key={i} style={{ padding: \"2px 0\" }}>{v}</li>\n ))}\n </ul>\n ) : (\n <span className=\"fe-read-only-text\">-</span>\n );\n }\n\n return (\n <select\n multiple\n style={{\n width: \"100%\",\n minHeight: \"80px\",\n padding: \"8px\",\n borderWidth: \"1px\",\n borderStyle: \"solid\",\n borderColor: error ? \"var(--chakra-colors-red-500, #E53E3E)\" : \"var(--chakra-colors-gray-200, #E2E8F0)\",\n borderRadius: \"var(--chakra-radii-md, 6px)\",\n fontSize: \"var(--chakra-fontSizes-md, 16px)\",\n background: \"var(--chakra-colors-white, #FFFFFF)\",\n }}\n value={selectedValues}\n onChange={onChange}\n aria-invalid={!!error}\n aria-required={required}\n data-field-type=\"MultiSelect\"\n data-field-state={getFieldState({ error, required, readOnly })}\n data-testid={GetFieldDataTestId(fieldName, programName, entityType, entityId)}\n >\n {options?.map(option => (\n <option key={String(option.value)} value={String(option.value)} disabled={option.disabled}>\n {option.label}\n </option>\n ))}\n </select>\n );\n};\n\nexport default MultiSelect;\n","import { IFieldProps, FormStrings } from \"@form-eng/core\";\nimport { Input } from \"@chakra-ui/react\";\nimport React from \"react\";\nimport { GetFieldDataTestId, getFieldState, formatDateTime } from \"../helpers\";\n\nconst DateControl = (props: IFieldProps<{}>) => {\n const { fieldName, programName, entityType, entityId, value, readOnly, error, required, setFieldValue } = props;\n\n const onChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n const date = new Date(event.target.value);\n if (!isNaN(date.getTime())) {\n setFieldValue(fieldName, date.toISOString());\n }\n };\n\n const onClear = () => {\n setFieldValue(fieldName, null);\n };\n\n const dateInputValue = value ? new Date(value as string).toISOString().split(\"T\")[0] : \"\";\n\n if (readOnly) {\n return value ? (\n <time\n className=\"fe-read-only-date\"\n dateTime={value as string}\n data-field-type=\"DateControl\"\n data-field-state=\"readonly\"\n >\n {formatDateTime(value as string, { hideTimestamp: true })}\n </time>\n ) : (\n <span className=\"fe-read-only-text\">-</span>\n );\n }\n\n return (\n <div\n style={{ display: \"flex\", alignItems: \"center\", gap: \"8px\" }}\n data-field-type=\"DateControl\"\n data-field-state={getFieldState({ error, required, readOnly })}\n >\n <Input\n type=\"date\"\n value={dateInputValue}\n onChange={onChange}\n aria-invalid={!!error}\n aria-required={required}\n data-testid={GetFieldDataTestId(fieldName, programName, entityType, entityId)}\n />\n <button\n type=\"button\"\n onClick={onClear}\n title={FormStrings.clickToClear}\n aria-label={`${fieldName} ${FormStrings.clear}`}\n style={{\n background: \"none\",\n border: \"none\",\n cursor: \"pointer\",\n fontSize: \"18px\",\n color: \"var(--chakra-colors-gray-500, #718096)\",\n padding: \"4px 8px\",\n }}\n >\n ×\n </button>\n </div>\n );\n};\n\nexport default DateControl;\n","import { IFieldProps } from \"@form-eng/core\";\nimport React from \"react\";\nimport { ReadOnlyText } from \"../components/ReadOnlyText\";\nimport { GetFieldDataTestId, getFieldState } from \"../helpers\";\n\ninterface ISliderProps {\n max?: number;\n min?: number;\n step?: number;\n}\n\nconst Slider = (props: IFieldProps<ISliderProps>) => {\n const { fieldName, programName, entityType, entityId, value, readOnly, config, error, required, setFieldValue } = props;\n\n const onChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n setFieldValue(fieldName, Number(event.target.value));\n };\n\n if (readOnly) {\n return <ReadOnlyText fieldName={fieldName} value={String(value)} />;\n }\n\n return (\n <div\n style={{ display: \"flex\", alignItems: \"center\", gap: \"12px\" }}\n data-field-type=\"Slider\"\n data-field-state={getFieldState({ error, required, readOnly })}\n >\n <input\n type=\"range\"\n style={{\n flex: 1,\n accentColor: \"var(--chakra-colors-blue-500, #3182CE)\",\n }}\n value={(value as number) ?? 0}\n onChange={onChange}\n max={config?.max ?? 100}\n min={config?.min ?? 0}\n step={config?.step ?? 1}\n aria-invalid={!!error}\n aria-required={required}\n aria-valuenow={(value as number) ?? 0}\n aria-valuemin={config?.min ?? 0}\n aria-valuemax={config?.max ?? 100}\n data-testid={GetFieldDataTestId(fieldName, programName, entityType, entityId)}\n />\n <output style={{ minWidth: \"32px\", textAlign: \"center\", fontSize: \"var(--chakra-fontSizes-md, 16px)\" }}>\n {String(value)}\n </output>\n </div>\n );\n};\n\nexport default Slider;\n","import { IFieldProps } from \"@form-eng/core\";\nimport React from \"react\";\nimport { ReadOnlyText } from \"../components/ReadOnlyText\";\nimport { GetFieldDataTestId, getFieldState } from \"../helpers\";\n\nconst RadioGroup = (props: IFieldProps<{}>) => {\n const { fieldName, programName, entityType, entityId, value, readOnly, error, required, options, setFieldValue } = props;\n\n const onChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n setFieldValue(fieldName, event.target.value);\n };\n\n if (readOnly) {\n const label = options?.find(o => String(o.value) === String(value))?.label ?? (value as string);\n return <ReadOnlyText fieldName={fieldName} value={label} />;\n }\n\n return (\n <div\n role=\"radiogroup\"\n style={{ display: \"flex\", flexDirection: \"column\", gap: \"8px\" }}\n aria-invalid={!!error}\n aria-required={required}\n data-field-type=\"RadioGroup\"\n data-field-state={getFieldState({ error, required, readOnly })}\n data-testid={GetFieldDataTestId(fieldName, programName, entityType, entityId)}\n >\n {options?.map(option => (\n <label\n key={String(option.value)}\n style={{\n display: \"flex\",\n alignItems: \"center\",\n gap: \"8px\",\n cursor: option.disabled ? \"not-allowed\" : \"pointer\",\n opacity: option.disabled ? 0.5 : 1,\n fontSize: \"var(--chakra-fontSizes-md, 16px)\",\n }}\n >\n <input\n type=\"radio\"\n name={fieldName}\n value={String(option.value)}\n checked={String(value) === String(option.value)}\n onChange={onChange}\n disabled={option.disabled}\n style={{ accentColor: \"var(--chakra-colors-blue-500, #3182CE)\" }}\n />\n <span>{option.label}</span>\n </label>\n ))}\n </div>\n );\n};\n\nexport default RadioGroup;\n","import { IFieldProps } from \"@form-eng/core\";\nimport React from \"react\";\nimport { ReadOnlyText } from \"../components/ReadOnlyText\";\nimport { GetFieldDataTestId, getFieldState } from \"../helpers\";\n\nconst CheckboxGroup = (props: IFieldProps<{}>) => {\n const { fieldName, programName, entityType, entityId, value, readOnly, error, required, options, setFieldValue } = props;\n\n const selected = Array.isArray(value) ? (value as string[]) : [];\n\n const onChange = (optionValue: string) => (event: React.ChangeEvent<HTMLInputElement>) => {\n const next = event.target.checked\n ? [...selected, optionValue]\n : selected.filter(v => v !== optionValue);\n setFieldValue(fieldName, next);\n };\n\n if (readOnly) {\n const labels = options\n ?.filter(o => selected.includes(String(o.value)))\n .map(o => o.label)\n .join(\", \");\n return <ReadOnlyText fieldName={fieldName} value={labels ?? \"\"} />;\n }\n\n return (\n <div\n style={{ display: \"flex\", flexDirection: \"column\", gap: \"8px\" }}\n aria-invalid={!!error}\n aria-required={required}\n data-field-type=\"CheckboxGroup\"\n data-field-state={getFieldState({ error, required, readOnly })}\n data-testid={GetFieldDataTestId(fieldName, programName, entityType, entityId)}\n >\n {options?.map(option => (\n <label\n key={String(option.value)}\n style={{\n display: \"flex\",\n alignItems: \"center\",\n gap: \"8px\",\n cursor: option.disabled ? \"not-allowed\" : \"pointer\",\n opacity: option.disabled ? 0.5 : 1,\n fontSize: \"var(--chakra-fontSizes-md, 16px)\",\n }}\n >\n <input\n type=\"checkbox\"\n value={String(option.value)}\n checked={selected.includes(String(option.value))}\n onChange={onChange(String(option.value))}\n disabled={option.disabled}\n style={{ accentColor: \"var(--chakra-colors-blue-500, #3182CE)\" }}\n />\n <span>{option.label}</span>\n </label>\n ))}\n </div>\n );\n};\n\nexport default CheckboxGroup;\n","import { IFieldProps, FormStrings } from \"@form-eng/core\";\nimport { Textarea as ChakraTextarea } from \"@chakra-ui/react\";\nimport React, { useState } from \"react\";\nimport { ReadOnlyText } from \"../components/ReadOnlyText\";\nimport { StatusMessage } from \"../components/StatusMessage\";\nimport { GetFieldDataTestId, getFieldState } from \"../helpers\";\n\ninterface ITextareaProps {\n autoAdjustHeight?: boolean;\n numberOfRows?: number;\n ellipsifyTextCharacters?: number;\n additionalInfo?: string;\n maxLimit?: number;\n saveCallback?: () => void;\n renderExtraModalFooter?: () => React.ReactNode;\n}\n\nconst Textarea = (props: IFieldProps<ITextareaProps>) => {\n const {\n error, fieldName, programName, entityType, entityId, config, readOnly,\n required, savePending, saving, value, label, setFieldValue\n } = props;\n\n const [modalValue, setModalValue] = useState<string>();\n const [modalVisible, setModalVisible] = useState(false);\n const [confirmVisible, setConfirmVisible] = useState(false);\n const dialogRef = React.useRef<HTMLDialogElement>(null);\n const confirmRef = React.useRef<HTMLDialogElement>(null);\n\n const onChange = (event: React.ChangeEvent<HTMLTextAreaElement>) => {\n const newValue = event.target.value;\n modalVisible ? setModalValue(newValue) : setFieldValue(fieldName, newValue, false, 3000);\n };\n\n const onExpand = () => {\n setModalVisible(true);\n setModalValue(value ? `${value}` : \"\");\n dialogRef.current?.showModal();\n };\n\n const onSave = () => {\n setFieldValue(fieldName, modalValue, false);\n setConfirmVisible(false);\n setModalVisible(false);\n dialogRef.current?.close();\n confirmRef.current?.close();\n config?.saveCallback?.();\n };\n\n const onCancel = () => {\n if (confirmVisible) {\n setConfirmVisible(false);\n setModalVisible(false);\n dialogRef.current?.close();\n confirmRef.current?.close();\n } else if (modalValue !== value) {\n setConfirmVisible(true);\n confirmRef.current?.showModal();\n } else {\n setModalVisible(false);\n dialogRef.current?.close();\n }\n };\n\n if (readOnly) {\n return (\n <ReadOnlyText\n fieldName={fieldName}\n value={value ? `${value}` : \"\"}\n ellipsifyTextCharacters={config?.ellipsifyTextCharacters}\n />\n );\n }\n\n return (\n <>\n <div\n data-field-type=\"Textarea\"\n data-field-state={getFieldState({ error, required, readOnly })}\n >\n <ChakraTextarea\n autoComplete=\"off\"\n value={modalVisible ? `${modalValue}` : value ? `${value}` : \"\"}\n onChange={onChange}\n rows={config?.numberOfRows ?? 4}\n aria-invalid={!!error}\n aria-required={required}\n data-testid={GetFieldDataTestId(fieldName, programName, entityType, entityId)}\n />\n <button\n type=\"button\"\n onClick={onExpand}\n aria-label={FormStrings.openExpandedTextEditor}\n style={{\n marginTop: \"4px\",\n background: \"none\",\n border: \"none\",\n cursor: \"pointer\",\n color: \"var(--chakra-colors-blue-500, #3182CE)\",\n fontSize: \"var(--chakra-fontSizes-sm, 14px)\",\n padding: \"2px 0\",\n }}\n >\n {FormStrings.expand}\n </button>\n </div>\n\n <dialog ref={dialogRef} style={{ padding: \"24px\", borderRadius: \"8px\", border: \"1px solid var(--chakra-colors-gray-200, #E2E8F0)\", maxWidth: \"640px\", width: \"100%\" }} aria-label={`${label} editor`}>\n <header style={{ display: \"flex\", justifyContent: \"space-between\", alignItems: \"center\", marginBottom: \"16px\" }}>\n <h2 style={{ margin: 0, fontSize: \"18px\" }}>\n {label}{required && <span style={{ color: \"var(--chakra-colors-red-500, #E53E3E)\" }}> *</span>}\n </h2>\n <button\n type=\"button\"\n onClick={onCancel}\n aria-label={FormStrings.closeExpandedTextEditor}\n style={{ background: \"none\", border: \"none\", cursor: \"pointer\", fontSize: \"20px\" }}\n >\n ×\n </button>\n </header>\n <div style={{ marginBottom: \"16px\" }}>\n <ChakraTextarea\n autoComplete=\"off\"\n value={modalVisible ? `${modalValue}` : value ? `${value}` : \"\"}\n onChange={onChange}\n rows={12}\n aria-invalid={!!error}\n />\n </div>\n <footer style={{ display: \"flex\", justifyContent: \"flex-end\", alignItems: \"center\", gap: \"8px\" }}>\n {config?.renderExtraModalFooter && <div>{config.renderExtraModalFooter()}</div>}\n {(savePending || saving) && (\n <StatusMessage savePending={!error ? savePending : undefined} saving={saving} error={error} />\n )}\n <button\n type=\"button\"\n onClick={onCancel}\n style={{ padding: \"6px 16px\", borderRadius: \"6px\", border: \"1px solid var(--chakra-colors-gray-200, #E2E8F0)\", background: \"white\", cursor: \"pointer\" }}\n >\n {FormStrings.cancel}\n </button>\n <button\n type=\"button\"\n onClick={onSave}\n disabled={!config?.saveCallback && modalValue === (value as string)}\n style={{ padding: \"6px 16px\", borderRadius: \"6px\", border: \"none\", background: \"var(--chakra-colors-blue-500, #3182CE)\", color: \"white\", cursor: \"pointer\" }}\n data-testid={`${programName}-${entityType}-${entityId}-save-note`}\n >\n {FormStrings.save}\n </button>\n </footer>\n </dialog>\n\n <dialog ref={confirmRef} style={{ padding: \"24px\", borderRadius: \"8px\", border: \"1px solid var(--chakra-colors-gray-200, #E2E8F0)\" }}>\n <h2 style={{ margin: \"0 0 8px 0\", fontSize: \"18px\" }}>{FormStrings.unsavedChanges}</h2>\n <p>{FormStrings.saveChangesTo(label)}</p>\n <footer style={{ display: \"flex\", justifyContent: \"flex-end\", gap: \"8px\", marginTop: \"16px\" }}>\n <button\n type=\"button\"\n onClick={onCancel}\n style={{ padding: \"6px 16px\", borderRadius: \"6px\", border: \"1px solid var(--chakra-colors-gray-200, #E2E8F0)\", background: \"white\", cursor: \"pointer\" }}\n >\n {FormStrings.dontSave}\n </button>\n <button\n type=\"button\"\n onClick={onSave}\n style={{ padding: \"6px 16px\", borderRadius: \"6px\", border: \"none\", background: \"var(--chakra-colors-blue-500, #3182CE)\", color: \"white\", cursor: \"pointer\" }}\n >\n {FormStrings.save}\n </button>\n </footer>\n </dialog>\n </>\n );\n};\n\nexport default Textarea;\n","import { FormStrings } from \"@form-eng/core\";\nimport React from \"react\";\nimport { FieldError } from \"react-hook-form\";\n\ninterface IStatusMessageProps {\n id?: string;\n readonly error?: FieldError;\n readonly errorCount?: number;\n readonly savePending?: boolean;\n readonly saving?: boolean;\n}\n\nexport const StatusMessage: React.FunctionComponent<IStatusMessageProps> = (props) => {\n const { id, error, errorCount, savePending, saving } = props;\n return (\n <div className=\"fe-status-message\">\n {error ? (\n <span id={id} role=\"alert\" style={{ color: \"var(--chakra-colors-red-500, #E53E3E)\" }}>\n {error.message || \"Error\"}\n </span>\n ) : savePending ? (\n <span id={id} role=\"alert\" style={{ color: \"var(--chakra-colors-orange-500, #DD6B20)\" }}>\n {FormStrings.autoSavePending} ({errorCount} {FormStrings.remaining})\n </span>\n ) : saving ? (\n <span id={id} role=\"status\" style={{ color: \"var(--chakra-colors-gray-500, #718096)\" }}>\n {FormStrings.saving}\n </span>\n ) : null}\n </div>\n );\n};\n","import { IFieldProps } from \"@form-eng/core\";\nimport React from \"react\";\n\nconst DynamicFragment = (props: IFieldProps<{}>) => {\n const { value } = props;\n return <input type=\"hidden\" value={value as string} />;\n};\n\nexport default DynamicFragment;\n","import { IFieldProps } from \"@form-eng/core\";\nimport React from \"react\";\nimport { ReadOnlyText, IReadOnlyFieldProps } from \"../../components/ReadOnlyText\";\n\nconst ReadOnly = (props: IFieldProps<IReadOnlyFieldProps>) => {\n const { fieldName, value, config } = props;\n return <ReadOnlyText fieldName={fieldName} value={value as string} {...config} />;\n};\n\nexport default ReadOnly;\n","import { FormConstants } from \"@form-eng/core\";\nimport React from \"react\";\n\ninterface IFormLoadingProps {\n loadingShimmerCount?: number;\n loadingFieldShimmerHeight?: number;\n inPanel?: boolean;\n hideTitleShimmer?: boolean;\n}\n\nexport const FormLoading = (props: IFormLoadingProps) => {\n const { loadingShimmerCount, loadingFieldShimmerHeight, inPanel, hideTitleShimmer } = props;\n const count = loadingShimmerCount || FormConstants.loadingShimmerCount;\n const height = loadingFieldShimmerHeight || FormConstants.loadingFieldShimmerHeight;\n\n return (\n <div\n className={`fe-form-loading ${inPanel ? \"fe-form-loading--panel\" : \"\"}`}\n role=\"status\"\n aria-label=\"Loading form\"\n >\n {[...Array(count)].map((_, i) => (\n <div key={`fe-loading-${i}`} style={{ marginBottom: 16 }}>\n {!hideTitleShimmer && (\n <div className=\"fe-skeleton\" style={{ width: \"33%\", height: 16, marginBottom: 8, background: \"var(--chakra-colors-gray-200, #E2E8F0)\", borderRadius: 4 }} />\n )}\n <div className=\"fe-skeleton\" style={{ width: \"100%\", height, background: \"var(--chakra-colors-gray-200, #E2E8F0)\", borderRadius: 4 }} />\n </div>\n ))}\n </div>\n );\n};\n\nexport default FormLoading;\n","import { ComponentTypes, Dictionary } from \"@form-eng/core\";\nimport React from \"react\";\nimport Textbox from \"./fields/Textbox\";\nimport NumberField from \"./fields/Number\";\nimport Toggle from \"./fields/Toggle\";\nimport Dropdown from \"./fields/Dropdown\";\nimport SimpleDropdown from \"./fields/SimpleDropdown\";\nimport MultiSelect from \"./fields/MultiSelect\";\nimport DateControl from \"./fields/DateControl\";\nimport Slider from \"./fields/Slider\";\nimport RadioGroup from \"./fields/RadioGroup\";\nimport CheckboxGroup from \"./fields/CheckboxGroup\";\nimport Textarea from \"./fields/Textarea\";\nimport DynamicFragment from \"./fields/DynamicFragment\";\nimport ReadOnly from \"./fields/readonly/ReadOnly\";\n\n/** Creates the default Chakra UI v3 field registry for use with InjectedFieldProvider */\nexport function createChakraFieldRegistry(): Dictionary<React.JSX.Element> {\n return {\n [ComponentTypes.Textbox]: React.createElement(Textbox),\n [ComponentTypes.Number]: React.createElement(NumberField),\n [ComponentTypes.Toggle]: React.createElement(Toggle),\n [ComponentTypes.Dropdown]: React.createElement(Dropdown),\n [ComponentTypes.SimpleDropdown]: React.createElement(SimpleDropdown),\n [ComponentTypes.MultiSelect]: React.createElement(MultiSelect),\n [ComponentTypes.DateControl]: React.createElement(DateControl),\n [ComponentTypes.Slider]: React.createElement(Slider),\n [ComponentTypes.RadioGroup]: React.createElement(RadioGroup),\n [ComponentTypes.CheckboxGroup]: React.createElement(CheckboxGroup),\n [ComponentTypes.Textarea]: React.createElement(Textarea),\n [ComponentTypes.Fragment]: React.createElement(DynamicFragment),\n [ComponentTypes.ReadOnly]: React.createElement(ReadOnly),\n };\n}\n"],"mappings":"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","names":["jsx","Input","jsx","Input","jsx","jsx","jsxs","NativeSelect","jsx","jsxs","NativeSelect","jsx","Input","jsx","jsxs","Input","jsx","jsxs","jsx","jsxs","jsx","jsxs","FormStrings","React","FormStrings","jsx","jsxs","jsx","jsxs","React","FormStrings","jsx","jsx","jsx","jsxs","React","React"]}
|