@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 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">` * | `Toggle` |
45
- | `Dropdown` | Chakra `NativeSelect` | `Dropdown` |
46
- | `SimpleDropdown` | Chakra `NativeSelect` | `SimpleDropdown` |
47
- | `MultiSelect` | Semantic `<select multiple>` * | `Multiselect` |
48
- | `DateControl` | Chakra `Input` (`type="date"`) | `DateControl` |
49
- | `Slider` | Semantic `<input type="range">` * | `Slider` |
50
- | `RadioGroup` | Semantic `<fieldset>` + `<input type="radio">` * | `RadioGroup` |
51
- | `CheckboxGroup` | Semantic `<fieldset>` + `<input type="checkbox">` * | `CheckboxGroup` |
52
- | `Textarea` | Chakra `Textarea` | `Textarea` |
53
- | `DynamicFragment` | `<input type="hidden">` | `DynamicFragment` |
54
-
55
- \* Uses semantic HTML fallback due to Chakra v3 compound component DTS issues with Ark UI's `Assign` type. Styled with Chakra CSS variables for visual consistency.
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: () => import_core.DocumentLinksStrings,
34
+ DocumentLinksStrings: () => import_adapter_utils.DocumentLinksStrings,
35
35
  Dropdown: () => Dropdown_default,
36
36
  DynamicFragment: () => DynamicFragment_default,
37
- FieldClassName: () => import_core.FieldClassName,
37
+ FieldClassName: () => import_adapter_utils.FieldClassName,
38
38
  FormLoading: () => FormLoading,
39
- GetFieldDataTestId: () => import_core.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: () => import_core.formatDateTime,
53
- getFieldState: () => import_core.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 import_core = require("@form-eng/core");
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, import_core.getFieldState)({ error, required, readOnly }),
109
- "data-testid": (0, import_core.GetFieldDataTestId)(fieldName, programName, entityType, entityId)
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, import_core2.isNull)(value) ? String(value) : "",
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, import_core.getFieldState)({ error, required, readOnly }),
141
- "data-testid": (0, import_core.GetFieldDataTestId)(fieldName, programName, entityType, entityId)
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, import_core3.convertBooleanToYesOrNoText)(value) });
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, import_core.getFieldState)({ error, required, readOnly }),
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, import_core.GetFieldDataTestId)(fieldName, programName, entityType, entityId),
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, import_core.getFieldState)({ error, required, readOnly }),
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, import_core.GetFieldDataTestId)(fieldName, programName, entityType, entityId),
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, import_core.getFieldState)({ error, required, readOnly }),
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, import_core.GetFieldDataTestId)(fieldName, programName, entityType, entityId),
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, import_core.getFieldState)({ error, required, readOnly }),
314
- "data-testid": (0, import_core.GetFieldDataTestId)(fieldName, programName, entityType, entityId),
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 import_core4 = require("@form-eng/core");
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, import_core.formatDateTime)(value, { hideTimestamp: true })
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, import_core.getFieldState)({ error, required, readOnly }),
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, import_core.GetFieldDataTestId)(fieldName, programName, entityType, entityId)
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: import_core4.FormStrings.clickToClear,
373
- "aria-label": `${fieldName} ${import_core4.FormStrings.clear}`,
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, import_core.getFieldState)({ error, required, readOnly }),
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, import_core.GetFieldDataTestId)(fieldName, programName, entityType, entityId)
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, import_core.getFieldState)({ error, required, readOnly }),
456
- "data-testid": (0, import_core.GetFieldDataTestId)(fieldName, programName, entityType, entityId),
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, import_core.getFieldState)({ error, required, readOnly }),
512
- "data-testid": (0, import_core.GetFieldDataTestId)(fieldName, programName, entityType, entityId),
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 import_core6 = require("@form-eng/core");
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 import_core5 = require("@form-eng/core");
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
- import_core5.FormStrings.autoSavePending,
555
+ import_core2.FormStrings.autoSavePending,
558
556
  " (",
559
557
  errorCount,
560
558
  " ",
561
- import_core5.FormStrings.remaining,
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: import_core5.FormStrings.saving }) : null });
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, import_core.getFieldState)({ error, required, readOnly }),
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, import_core.GetFieldDataTestId)(fieldName, programName, entityType, entityId)
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": import_core6.FormStrings.openExpandedTextEditor,
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: import_core6.FormStrings.expand
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": import_core6.FormStrings.closeExpandedTextEditor,
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: import_core6.FormStrings.cancel
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: import_core6.FormStrings.save
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: import_core6.FormStrings.unsavedChanges }),
724
- /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("p", { children: import_core6.FormStrings.saveChangesTo(label) }),
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: import_core6.FormStrings.dontSave
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: import_core6.FormStrings.save
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 import_core7 = require("@form-eng/core");
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 || import_core7.FormConstants.loadingShimmerCount;
772
- const height = loadingFieldShimmerHeight || import_core7.FormConstants.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 import_core8 = require("@form-eng/core");
786
+ var import_core5 = require("@form-eng/core");
789
787
  var import_react9 = __toESM(require("react"));
790
788
  function createChakraFieldRegistry() {
791
789
  return {
792
- [import_core8.ComponentTypes.Textbox]: import_react9.default.createElement(Textbox_default),
793
- [import_core8.ComponentTypes.Number]: import_react9.default.createElement(Number_default),
794
- [import_core8.ComponentTypes.Toggle]: import_react9.default.createElement(Toggle_default),
795
- [import_core8.ComponentTypes.Dropdown]: import_react9.default.createElement(Dropdown_default),
796
- [import_core8.ComponentTypes.SimpleDropdown]: import_react9.default.createElement(SimpleDropdown_default),
797
- [import_core8.ComponentTypes.MultiSelect]: import_react9.default.createElement(MultiSelect_default),
798
- [import_core8.ComponentTypes.DateControl]: import_react9.default.createElement(DateControl_default),
799
- [import_core8.ComponentTypes.Slider]: import_react9.default.createElement(Slider_default),
800
- [import_core8.ComponentTypes.RadioGroup]: import_react9.default.createElement(RadioGroup_default),
801
- [import_core8.ComponentTypes.CheckboxGroup]: import_react9.default.createElement(CheckboxGroup_default),
802
- [import_core8.ComponentTypes.Textarea]: import_react9.default.createElement(Textarea_default),
803
- [import_core8.ComponentTypes.Fragment]: import_react9.default.createElement(DynamicFragment_default),
804
- [import_core8.ComponentTypes.ReadOnly]: import_react9.default.createElement(ReadOnly_default)
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 &times;\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 &times;\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 &times;\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 &times;\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_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
- } from "@form-eng/core";
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;
@@ -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 &times;\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 &times;\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 &times;\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 &times;\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"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@form-eng/chakra",
3
- "version": "1.2.1",
3
+ "version": "1.3.0",
4
4
  "description": "Chakra UI v3 field components for @form-eng/core",
5
5
  "repository": {
6
6
  "type": "git",