@form-eng/chakra 1.1.1

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.
@@ -0,0 +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"]}
package/package.json ADDED
@@ -0,0 +1,63 @@
1
+ {
2
+ "name": "@form-eng/chakra",
3
+ "version": "1.1.1",
4
+ "description": "Chakra UI v3 field components for @form-eng/core",
5
+ "repository": {
6
+ "type": "git",
7
+ "url": "https://github.com/bghcore/form-engine.git",
8
+ "directory": "packages/chakra"
9
+ },
10
+ "homepage": "https://github.com/bghcore/form-engine#readme",
11
+ "bugs": {
12
+ "url": "https://github.com/bghcore/form-engine/issues"
13
+ },
14
+ "keywords": [
15
+ "react",
16
+ "forms",
17
+ "chakra-ui",
18
+ "dynamic-forms",
19
+ "react-hook-form",
20
+ "form-builder",
21
+ "field-components",
22
+ "business-forms"
23
+ ],
24
+ "main": "dist/index.js",
25
+ "module": "dist/index.mjs",
26
+ "types": "dist/index.d.ts",
27
+ "exports": {
28
+ ".": {
29
+ "types": "./dist/index.d.ts",
30
+ "import": "./dist/index.mjs",
31
+ "require": "./dist/index.js"
32
+ }
33
+ },
34
+ "files": [
35
+ "dist",
36
+ "README.md"
37
+ ],
38
+ "license": "MIT",
39
+ "author": "bghcore (https://github.com/bghcore)",
40
+ "sideEffects": false,
41
+ "scripts": {
42
+ "build": "tsup",
43
+ "clean": "rimraf dist"
44
+ },
45
+ "peerDependencies": {
46
+ "react": "^18.0.0 || ^19.0.0",
47
+ "react-dom": "^18.0.0 || ^19.0.0",
48
+ "react-hook-form": "^7.0.0",
49
+ "@form-eng/core": "^1.0.0",
50
+ "@chakra-ui/react": "^3.0.0"
51
+ },
52
+ "devDependencies": {
53
+ "react": "^19.2.4",
54
+ "react-dom": "^19.2.4",
55
+ "react-hook-form": "^7.71.2",
56
+ "@form-eng/core": "*",
57
+ "@chakra-ui/react": "^3.8.2",
58
+ "tsup": "^8.5.1",
59
+ "typescript": "^5.9.3",
60
+ "@types/react": "^19.2.14",
61
+ "@types/react-dom": "^19.2.3"
62
+ }
63
+ }