@axdspub/axiom-ui-forms 0.3.3 → 0.3.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (122) hide show
  1. package/library/axiom-ui-forms.d.ts +56 -26
  2. package/library/esm/_virtual/index10.js +2 -2
  3. package/library/esm/_virtual/index3.js +2 -2
  4. package/library/esm/_virtual/index4.js +2 -2
  5. package/library/esm/_virtual/index9.js +2 -2
  6. package/library/esm/node_modules/@axdspub/axiom-maps/library/index.js +1 -1
  7. package/library/esm/node_modules/@axdspub/axiom-maps/library/openlayers/index.esm.js +1 -1
  8. package/library/esm/node_modules/@axdspub/axiom-maps/node_modules/@axdspub/axiom-ui-utilities/library/index.js +15219 -0
  9. package/library/esm/node_modules/@axdspub/axiom-maps/node_modules/@axdspub/axiom-ui-utilities/library/index.js.map +1 -0
  10. package/library/esm/node_modules/@axdspub/axiom-ui-utilities/library/index.js +122 -90
  11. package/library/esm/node_modules/@axdspub/axiom-ui-utilities/library/index.js.map +1 -1
  12. package/library/esm/node_modules/@radix-ui/react-icons/dist/react-icons.esm.js +23 -1
  13. package/library/esm/node_modules/@radix-ui/react-icons/dist/react-icons.esm.js.map +1 -1
  14. package/library/esm/node_modules/ajv/dist/compile/validate/index.js +1 -1
  15. package/library/esm/node_modules/ajv/dist/vocabularies/core/index.js +1 -1
  16. package/library/esm/node_modules/ajv/dist/vocabularies/discriminator/index.js +1 -1
  17. package/library/esm/node_modules/ajv/dist/vocabularies/format/index.js +1 -1
  18. package/library/esm/node_modules/lodash-es/_SetCache.js +28 -0
  19. package/library/esm/node_modules/lodash-es/_SetCache.js.map +1 -0
  20. package/library/esm/node_modules/lodash-es/_arrayLikeKeys.js +8 -1
  21. package/library/esm/node_modules/lodash-es/_arrayLikeKeys.js.map +1 -1
  22. package/library/esm/node_modules/lodash-es/_arraySome.js +24 -0
  23. package/library/esm/node_modules/lodash-es/_arraySome.js.map +1 -0
  24. package/library/esm/node_modules/lodash-es/_baseIsEqual.js +29 -0
  25. package/library/esm/node_modules/lodash-es/_baseIsEqual.js.map +1 -0
  26. package/library/esm/node_modules/lodash-es/_baseIsEqualDeep.js +84 -0
  27. package/library/esm/node_modules/lodash-es/_baseIsEqualDeep.js.map +1 -0
  28. package/library/esm/node_modules/lodash-es/_baseKeys.js +31 -0
  29. package/library/esm/node_modules/lodash-es/_baseKeys.js.map +1 -0
  30. package/library/esm/node_modules/lodash-es/_baseTrim.js +20 -0
  31. package/library/esm/node_modules/lodash-es/_baseTrim.js.map +1 -0
  32. package/library/esm/node_modules/lodash-es/_cacheHas.js +14 -0
  33. package/library/esm/node_modules/lodash-es/_cacheHas.js.map +1 -0
  34. package/library/esm/node_modules/lodash-es/_equalArrays.js +85 -0
  35. package/library/esm/node_modules/lodash-es/_equalArrays.js.map +1 -0
  36. package/library/esm/node_modules/lodash-es/_equalByTag.js +113 -0
  37. package/library/esm/node_modules/lodash-es/_equalByTag.js.map +1 -0
  38. package/library/esm/node_modules/lodash-es/_equalObjects.js +91 -0
  39. package/library/esm/node_modules/lodash-es/_equalObjects.js.map +1 -0
  40. package/library/esm/node_modules/lodash-es/_getAllKeys.js +17 -0
  41. package/library/esm/node_modules/lodash-es/_getAllKeys.js.map +1 -0
  42. package/library/esm/node_modules/lodash-es/_mapToArray.js +19 -0
  43. package/library/esm/node_modules/lodash-es/_mapToArray.js.map +1 -0
  44. package/library/esm/node_modules/lodash-es/_nativeKeys.js +7 -0
  45. package/library/esm/node_modules/lodash-es/_nativeKeys.js.map +1 -0
  46. package/library/esm/node_modules/lodash-es/_setCacheAdd.js +20 -0
  47. package/library/esm/node_modules/lodash-es/_setCacheAdd.js.map +1 -0
  48. package/library/esm/node_modules/lodash-es/_setCacheHas.js +15 -0
  49. package/library/esm/node_modules/lodash-es/_setCacheHas.js.map +1 -0
  50. package/library/esm/node_modules/lodash-es/_setToArray.js +19 -0
  51. package/library/esm/node_modules/lodash-es/_setToArray.js.map +1 -0
  52. package/library/esm/node_modules/lodash-es/_trimmedEndIndex.js +20 -0
  53. package/library/esm/node_modules/lodash-es/_trimmedEndIndex.js.map +1 -0
  54. package/library/esm/node_modules/lodash-es/debounce.js +192 -0
  55. package/library/esm/node_modules/lodash-es/debounce.js.map +1 -0
  56. package/library/esm/node_modules/lodash-es/isEqual.js +36 -0
  57. package/library/esm/node_modules/lodash-es/isEqual.js.map +1 -0
  58. package/library/esm/node_modules/lodash-es/keys.js +38 -0
  59. package/library/esm/node_modules/lodash-es/keys.js.map +1 -0
  60. package/library/esm/node_modules/lodash-es/keysIn.js +1 -1
  61. package/library/esm/node_modules/lodash-es/keysIn.js.map +1 -1
  62. package/library/esm/node_modules/lodash-es/now.js +24 -0
  63. package/library/esm/node_modules/lodash-es/now.js.map +1 -0
  64. package/library/esm/node_modules/lodash-es/toNumber.js +65 -0
  65. package/library/esm/node_modules/lodash-es/toNumber.js.map +1 -0
  66. package/library/esm/src/Form/Components/FieldCreator.js +86 -31
  67. package/library/esm/src/Form/Components/FieldCreator.js.map +1 -1
  68. package/library/esm/src/Form/Components/FieldLabel.js +90 -19
  69. package/library/esm/src/Form/Components/FieldLabel.js.map +1 -1
  70. package/library/esm/src/Form/Components/InlineMarkdown.js +4 -0
  71. package/library/esm/src/Form/Components/InlineMarkdown.js.map +1 -1
  72. package/library/esm/src/Form/Components/Inputs/Boolean.js +8 -6
  73. package/library/esm/src/Form/Components/Inputs/Boolean.js.map +1 -1
  74. package/library/esm/src/Form/Components/Inputs/Constant.js +2 -2
  75. package/library/esm/src/Form/Components/Inputs/Constant.js.map +1 -1
  76. package/library/esm/src/Form/Components/Inputs/Date.js +3 -4
  77. package/library/esm/src/Form/Components/Inputs/Date.js.map +1 -1
  78. package/library/esm/src/Form/Components/Inputs/DateTime.js +3 -4
  79. package/library/esm/src/Form/Components/Inputs/DateTime.js.map +1 -1
  80. package/library/esm/src/Form/Components/Inputs/GeoJSON.js +5 -4
  81. package/library/esm/src/Form/Components/Inputs/GeoJSON.js.map +1 -1
  82. package/library/esm/src/Form/Components/Inputs/Geometry.js +20 -11
  83. package/library/esm/src/Form/Components/Inputs/Geometry.js.map +1 -1
  84. package/library/esm/src/Form/Components/Inputs/JSON.js +6 -5
  85. package/library/esm/src/Form/Components/Inputs/JSON.js.map +1 -1
  86. package/library/esm/src/Form/Components/Inputs/LongString.js +5 -5
  87. package/library/esm/src/Form/Components/Inputs/LongString.js.map +1 -1
  88. package/library/esm/src/Form/Components/Inputs/Number.js +49 -35
  89. package/library/esm/src/Form/Components/Inputs/Number.js.map +1 -1
  90. package/library/esm/src/Form/Components/Inputs/Object.js +46 -11
  91. package/library/esm/src/Form/Components/Inputs/Object.js.map +1 -1
  92. package/library/esm/src/Form/Components/Inputs/RadioGroup.js +2 -3
  93. package/library/esm/src/Form/Components/Inputs/RadioGroup.js.map +1 -1
  94. package/library/esm/src/Form/Components/Inputs/SingleSelect.js +2 -3
  95. package/library/esm/src/Form/Components/Inputs/SingleSelect.js.map +1 -1
  96. package/library/esm/src/Form/Components/Inputs/String.js +5 -11
  97. package/library/esm/src/Form/Components/Inputs/String.js.map +1 -1
  98. package/library/esm/src/Form/Components/Inputs/Time.js +2 -3
  99. package/library/esm/src/Form/Components/Inputs/Time.js.map +1 -1
  100. package/library/esm/src/Form/Creator/FormCreator.js +6 -6
  101. package/library/esm/src/Form/Creator/FormCreator.js.map +1 -1
  102. package/library/esm/src/Form/Creator/FormFields.js +1 -1
  103. package/library/esm/src/Form/Creator/FormFields.js.map +1 -1
  104. package/library/esm/src/Form/Creator/FormHeader.js +2 -1
  105. package/library/esm/src/Form/Creator/FormHeader.js.map +1 -1
  106. package/library/esm/src/Form/Creator/FormSection.js +1 -1
  107. package/library/esm/src/Form/Creator/FormSection.js.map +1 -1
  108. package/library/esm/src/Form/Creator/Page.js +7 -2
  109. package/library/esm/src/Form/Creator/Page.js.map +1 -1
  110. package/library/esm/src/Form/Creator/Wizard.js +6 -6
  111. package/library/esm/src/Form/Creator/Wizard.js.map +1 -1
  112. package/library/esm/src/utils/getters.js +36 -6
  113. package/library/esm/src/utils/getters.js.map +1 -1
  114. package/library/esm/src/utils/helpers.js +11 -0
  115. package/library/esm/src/utils/helpers.js.map +1 -0
  116. package/library/esm/src/utils/manipulators.js +30 -11
  117. package/library/esm/src/utils/manipulators.js.map +1 -1
  118. package/library/esm/src/utils/schemaToFormHelpers.js +2 -2
  119. package/library/esm/src/utils/schemaToFormHelpers.js.map +1 -1
  120. package/library/esm/src/utils/validators.js +94 -15
  121. package/library/esm/src/utils/validators.js.map +1 -1
  122. package/package.json +5 -3
@@ -1 +1 @@
1
- {"version":3,"file":"Number.js","sources":["../../../../../../src/Form/Components/Inputs/Number.tsx"],"sourcesContent":["import FieldLabel, { FieldDescriptionTooltip, FieldLabelText } from '@/Form/Components/FieldLabel'\r\nimport { type INumberField, type IFieldInputProps } from '@/Form/Creator/FormCreatorTypes'\r\nimport { Checkbox, Input, Slider } from '@axdspub/axiom-ui-utilities'\r\nimport { CheckIcon, Cross2Icon, Pencil1Icon } from '@radix-ui/react-icons'\r\nimport React, { useState, type ReactElement } from 'react'\r\n\r\nconst isValidNumber = (value: string): boolean => {\r\n if (value === undefined || value === null || value === '') {\r\n return false\r\n }\r\n const num = Number(value)\r\n return !isNaN(num) && isFinite(num)\r\n}\r\n\r\nconst SliderInput = ({ field, value, onChange, min, max, step }: IFieldInputProps & { max: number, min?: number, step?: number }): ReactElement => {\r\n const updateTemp = (value: string | number | undefined): void => {\r\n if (value !== undefined && isValidNumber(String(value))) {\r\n setTempValue(+value)\r\n setTempTextValue(String(value))\r\n } else {\r\n setTempTextValue(value !== undefined ? String(value) : undefined)\r\n }\r\n }\r\n const [tempValue, setTempValue] = useState<number>(value !== undefined && value !== null ? +value : 0)\r\n const [tempTextValue, setTempTextValue] = useState<string | undefined>(value !== undefined ? String(value) : undefined)\r\n const [mode, setMode] = useState<'slider' | 'text'>('slider')\r\n\r\n return (<div>\r\n <FieldLabel {...field} />\r\n <div className='flex flex-row gap-4'>\r\n <Slider\r\n className='flex-grow max-w-[400px] mt-1'\r\n size='sm'\r\n value={tempValue}\r\n min={min ?? 0}\r\n max={max}\r\n onChange={(v: number): void => {\r\n updateTemp(v)\r\n } }\r\n onChangeComplete={(v: number): void => {\r\n updateTemp(v)\r\n onChange(v)\r\n } }\r\n id={field.id}\r\n testId={field.id}\r\n step={step ?? ((max - (min ?? 0)) / 100)} />\r\n <div className='w-[100px] flex flex-row text-right'>\r\n {\r\n mode === 'slider'\r\n ? <>\r\n <strong className='w-[60px]'>{tempValue}</strong>\r\n <Pencil1Icon className='inline m-1 w-5 h-5 cursor-pointer' onClick={() => {\r\n setMode('text')\r\n }} />\r\n </>\r\n : <>\r\n <Input\r\n id={`slider-text-${field.id}`}\r\n testId={`slider-text-${field.id}`}\r\n value={tempTextValue !== undefined && tempTextValue !== null ? String(tempTextValue) : ''}\r\n className='w-[50px] text-xs text-right'\r\n size='xs'\r\n label={undefined}\r\n onChange={(e) => {\r\n updateTemp(e)\r\n }} />\r\n <Cross2Icon className='flex-none inline w-5 h-5 m-1 cursor-pointer' color='red' onClick={() => {\r\n setMode('slider')\r\n }} />\r\n <CheckIcon className={`flex-none inline w-5 h-5 m-1 ${isValidNumber(String(tempTextValue)) ? 'cursor-pointer' : 'opacity-50'}`} color='green' onClick={() => {\r\n if (isValidNumber(String(tempTextValue))) {\r\n setMode('slider')\r\n updateTemp(tempTextValue)\r\n onChange(tempTextValue)\r\n }\r\n }} />\r\n </>\r\n }\r\n </div>\r\n </div>\r\n </div>)\r\n}\r\n\r\nconst TextInput = ({ field, onChange, value, className }: IFieldInputProps): ReactElement => {\r\n const [error, setError] = useState<string | undefined>(undefined)\r\n\r\n return (\r\n <>\r\n <Input\r\n id={field.id}\r\n testId={field.id}\r\n error={error}\r\n className={className}\r\n value={value !== undefined && value !== null ? String(value) : ''}\r\n label={<FieldLabel {...field} />} onChange={(e) => {\r\n if (e !== undefined && !isNaN(+e) && e !== '') {\r\n onChange(+e)\r\n setError(undefined)\r\n } else {\r\n if (String(e).length > 0) {\r\n setError('Please enter a valid number')\r\n } else {\r\n setError(undefined)\r\n }\r\n onChange(undefined)\r\n }\r\n }} />\r\n {error !== undefined && <p className='text-red-500 text-xs py-2'>{error}</p>}\r\n </>\r\n )\r\n}\r\n\r\nconst NumberInput = ({ field, onChange, value }: IFieldInputProps): ReactElement => {\r\n const initialValue = value !== undefined ? value : ''\r\n const numberField = field as INumberField\r\n const isNull = initialValue === undefined || initialValue === null || initialValue === ''\r\n const [userSelectedNotNull, setUserSelectedNotNull] = useState<boolean>(!isNull)\r\n const canBeNull = numberField.settings?.canBeNull === true\r\n\r\n const max = numberField?.constraints?.max\r\n const fieldForInput = canBeNull\r\n ? {\r\n ...field,\r\n label: undefined,\r\n description: undefined\r\n }\r\n : field\r\n const el = (\r\n <>{\r\n max !== undefined\r\n ? <SliderInput\r\n field={fieldForInput}\r\n value={initialValue}\r\n onChange={onChange}\r\n min={numberField?.constraints?.min}\r\n max={max}\r\n step={numberField?.settings?.step} />\r\n : <TextInput\r\n field={fieldForInput}\r\n value={initialValue}\r\n onChange={onChange}\r\n className='max-w-[300px]'\r\n\r\n />\r\n }</>\r\n )\r\n\r\n if (canBeNull) {\r\n return (\r\n <div className='flex flex-col gap-2'>\r\n <Checkbox\r\n id={`${field.id}-null`}\r\n testId={`${field.id}-null`}\r\n label={<><FieldLabelText {...field}\r\n /> <FieldDescriptionTooltip {...field} /></>}\r\n value={userSelectedNotNull}\r\n onChange={(e) => {\r\n setUserSelectedNotNull(!userSelectedNotNull)\r\n if (!e) {\r\n onChange(undefined)\r\n } else {\r\n onChange(numberField?.settings?.nonNullDefaultValue ?? numberField?.defaultValue ?? value ?? 0)\r\n }\r\n }} />\r\n {userSelectedNotNull ? el : <></>}\r\n </div>\r\n )\r\n } else {\r\n return el\r\n }\r\n}\r\n\r\nexport default NumberInput\r\n"],"names":["React","Slider"],"mappings":"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"}
1
+ {"version":3,"file":"Number.js","sources":["../../../../../../src/Form/Components/Inputs/Number.tsx"],"sourcesContent":["import FieldLabel, { FieldDescriptionTooltip, FieldLabelText } from '@/Form/Components/FieldLabel'\r\nimport { type INumberField, type IFieldInputProps, type IValueType } from '@/Form/Creator/FormCreatorTypes'\r\nimport { Checkbox, Input, Slider } from '@axdspub/axiom-ui-utilities'\r\nimport { CheckIcon, Cross2Icon, Pencil1Icon } from '@radix-ui/react-icons'\r\nimport React, { useEffect, useState, type ReactElement } from 'react'\r\n\r\nconst isValidNumber = (value: string): boolean => {\r\n if (value === undefined || value === null || value === '') {\r\n return false\r\n }\r\n const num = Number(value)\r\n return !isNaN(num) && isFinite(num)\r\n}\r\n\r\nconst SliderInput = ({\r\n field,\r\n value,\r\n onChange,\r\n min,\r\n max,\r\n step,\r\n disabled\r\n}: IFieldInputProps & { max: number, min?: number, step?: number }): ReactElement => {\r\n const [tempValue, setTempValue] = useState<number | undefined>(value !== undefined && value !== null ? +value : undefined)\r\n const [tempTextValue, setTempTextValue] = useState<string | undefined>(value !== undefined ? String(value) : undefined)\r\n const [mode, setMode] = useState<'slider' | 'text'>('slider')\r\n const updateTemp = (value: string | number | undefined): void => {\r\n if (value !== undefined && isValidNumber(String(value))) {\r\n setTempValue(+value)\r\n setTempTextValue(String(value))\r\n } else {\r\n setTempTextValue(value !== undefined ? String(value) : undefined)\r\n }\r\n }\r\n useEffect(() => {\r\n if (value !== tempValue) {\r\n updateTemp(value !== undefined && value !== null ? +value : undefined)\r\n }\r\n }, [value])\r\n\r\n return (<div>\r\n <FieldLabel\r\n field={field}\r\n disabled={disabled}\r\n value={value}\r\n onChange={onChange}\r\n />\r\n <div className='flex flex-row gap-4'>\r\n <Slider\r\n wrapperClassName='flex-grow max-w-[400px] mt-1'\r\n size='sm'\r\n disabled={disabled}\r\n retainUndefinedOnLoad={true}\r\n value={tempValue}\r\n min={min ?? 0}\r\n max={max}\r\n onChange={(v: number): void => {\r\n updateTemp(v)\r\n } }\r\n onChangeComplete={(v: number): void => {\r\n updateTemp(v)\r\n onChange(v)\r\n } }\r\n id={field.id}\r\n testId={field.id}\r\n step={step ?? ((max - (min ?? 0)) / 100)} />\r\n <div className='w-[100px] flex flex-row text-right'>\r\n {\r\n mode === 'slider'\r\n ? <>\r\n <strong className={`w-[60px]${disabled ? ' text-slate-400 cursor-not-allowed' : ''}`}>{tempValue}</strong>\r\n <Pencil1Icon className={`inline m-1 w-5 h-5 ${disabled ? ' opacity-50 cursor-not-allowed' : 'cursor-pointer'}`} onClick={() => {\r\n if (disabled) return\r\n setMode('text')\r\n }} />\r\n </>\r\n : <>\r\n {\r\n (\r\n (tempTextValue !== undefined && tempTextValue !== null) ||\r\n mode === 'text'\r\n )\r\n\r\n ? <><Input\r\n id={`slider-text-${field.id}`}\r\n disabled={disabled}\r\n testId={`slider-text-${field.id}`}\r\n value={tempTextValue !== undefined && tempTextValue !== null ? String(tempTextValue) : ''}\r\n className='w-[50px] text-xs text-right'\r\n size='xs'\r\n label={undefined}\r\n onChange={(e) => {\r\n updateTemp(e)\r\n }} />\r\n <Cross2Icon className={`flex-none inline m-1 w-5 h-5 ${disabled ? 'opacity-50 cursor-not-allowed' : 'cursor-pointer'}`} color='red' onClick={() => {\r\n if (!disabled) {\r\n setMode('slider')\r\n }\r\n }} />\r\n <CheckIcon className={`flex-none inline m-1 w-5 h-5 ${(disabled ?? !isValidNumber(String(tempTextValue))) ? 'opacity-50 cursor-not-allowed' : 'cursor-pointer'}`} color='green' onClick={() => {\r\n if (!disabled && isValidNumber(String(tempTextValue))) {\r\n setMode('slider')\r\n updateTemp(tempTextValue)\r\n onChange(tempTextValue)\r\n }\r\n }} />\r\n </>\r\n : ''\r\n }\r\n </>\r\n }\r\n </div>\r\n </div>\r\n </div>)\r\n}\r\n\r\nconst TextInput = ({ field, onChange, value, className, disabled }: IFieldInputProps): ReactElement => {\r\n const [error, setError] = useState<string | undefined>(undefined)\r\n\r\n return (\r\n <>\r\n <Input\r\n id={field.id}\r\n testId={field.id}\r\n error={error}\r\n className={className}\r\n value={value !== undefined && value !== null ? String(value) : ''}\r\n label={<FieldLabel\r\n field={field}\r\n disabled={disabled}\r\n value={value}\r\n onChange={onChange}\r\n />} onChange={(e) => {\r\n if (e !== undefined && !isNaN(+e) && e !== '') {\r\n onChange(+e)\r\n setError(undefined)\r\n } else {\r\n if (String(e).length > 0) {\r\n setError('Please enter a valid number')\r\n } else {\r\n setError(undefined)\r\n }\r\n onChange(undefined)\r\n }\r\n }}\r\n after={error !== undefined && <p className='text-red-500 text-xs py-2'>{error}</p>}\r\n\r\n />\r\n </>\r\n )\r\n}\r\n\r\nconst NumberInput = ({ field, onChange, value, disabled }: IFieldInputProps): ReactElement => {\r\n const initialValue = value !== undefined ? value : undefined\r\n const numberField = field as INumberField\r\n const isNull = initialValue === undefined || initialValue === null || initialValue === ''\r\n const [userSelectedNotNull, setUserSelectedNotNull] = useState<boolean>(!isNull)\r\n const canBeNull = numberField.settings?.canBeNull === true\r\n\r\n const myOnChange = (v: IValueType | IValueType[] | undefined): void => {\r\n onChange(v)\r\n }\r\n\r\n const max = numberField?.constraints?.max\r\n const fieldForInput = canBeNull\r\n ? {\r\n ...field,\r\n label: undefined,\r\n description: undefined\r\n }\r\n : field\r\n const el = (\r\n <>{\r\n max !== undefined\r\n ? <SliderInput\r\n disabled={disabled}\r\n\r\n field={fieldForInput}\r\n value={initialValue}\r\n onChange={myOnChange}\r\n min={numberField?.constraints?.min}\r\n max={max}\r\n step={numberField?.settings?.step} />\r\n : <TextInput\r\n disabled={disabled}\r\n field={fieldForInput}\r\n value={initialValue}\r\n onChange={onChange}\r\n className='max-w-[300px]'\r\n\r\n />\r\n }</>\r\n )\r\n\r\n if (canBeNull) {\r\n return (\r\n <div className='flex flex-col gap-2'>\r\n <Checkbox\r\n disabled={disabled}\r\n id={`${field.id}-null`}\r\n testId={`${field.id}-null`}\r\n label={<><FieldLabelText\r\n field={field}\r\n disabled={disabled}\r\n onChange={onChange}\r\n /> <FieldDescriptionTooltip field={field} disabled={disabled} /></>}\r\n value={userSelectedNotNull}\r\n onChange={(e) => {\r\n setUserSelectedNotNull(!userSelectedNotNull)\r\n if (!e) {\r\n onChange(undefined)\r\n } else {\r\n onChange(numberField?.settings?.nonNullDefaultValue ?? numberField?.defaultValue ?? value ?? undefined)\r\n }\r\n }} />\r\n {userSelectedNotNull ? el : <></>}\r\n </div>\r\n )\r\n } else {\r\n return el\r\n }\r\n}\r\n\r\nexport default NumberInput\r\n"],"names":["React","Slider"],"mappings":"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"}
@@ -1,34 +1,69 @@
1
- import { __assign } from '../../../../node_modules/tslib/tslib.es6.js';
2
1
  import FieldCreator from '../FieldCreator.js';
3
2
  import FieldLabel from '../FieldLabel.js';
3
+ import { checkCondition } from '../../../utils/validators.js';
4
4
  import { utils as index$1 } from '../../../../node_modules/@axdspub/axiom-ui-utilities/library/index.js';
5
5
  import React__default from 'react';
6
6
 
7
7
  var ObjectInput = function (_a) {
8
- var field = _a.field, onChange = _a.onChange, value = _a.value;
8
+ var field = _a.field, onChange = _a.onChange, value = _a.value, disabled = _a.disabled;
9
9
  var initialValue = (typeof value === 'object' ? value !== null && value !== void 0 ? value : {} : {});
10
10
  if (field.type === 'object' && field.fields !== undefined) {
11
- var cl = "".concat(field.layout === 'horizontal' ? "flex flex-row gap-4 ".concat(field.label !== undefined ? 'px-0' : '') : 'flex flex-col gap-4');
12
- var fc_1 = field.layout === 'horizontal' ? 'flex-1' : '';
11
+ var cl = "".concat(field.layout === 'horizontal'
12
+ ? 'flex md:flex-row sm:flex-col gap-4 sm:gap-2'
13
+ : field.layout === 'grid4'
14
+ ? 'grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-4'
15
+ : field.layout === 'grid3'
16
+ ? 'grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4'
17
+ : field.layout === 'grid2'
18
+ ? 'grid grid-cols-1 md:grid-cols-2 gap-4'
19
+ : 'flex flex-col gap-4');
20
+ var fc_1 = field.layout === 'horizontal'
21
+ ? 'flex-1'
22
+ : '';
13
23
  return (React__default.createElement("div", null,
14
24
  field.label !== undefined
15
- ? React__default.createElement(FieldLabel, __assign({}, field))
25
+ ? React__default.createElement(FieldLabel, { field: field, disabled: disabled, value: value, onChange: onChange })
16
26
  : null,
17
- React__default.createElement("div", { className: "p-4 bg-slate-100 ".concat(cl) }, field.fields.map(function (childField) {
27
+ React__default.createElement("div", { className: "".concat(cl).concat(disabled ? ' opacity-70 cursor-not-allowed' : '') }, field.fields.map(function (childField) {
18
28
  var _a, _b;
19
29
  var key = ((_a = field.path) !== null && _a !== void 0 ? _a : [field.id]).concat(childField.id).join('.');
20
- return (React__default.createElement(FieldCreator, { onChange: function (e) {
30
+ var conditionResult = field.multiple
31
+ ? checkCondition(childField, initialValue)
32
+ : undefined;
33
+ return (React__default.createElement(FieldCreator, { disabled: disabled, conditionResult: conditionResult, onChange: function (e) {
21
34
  if (childField.type === 'object' && childField.skip_path === true) {
22
35
  onChange(e);
23
36
  }
24
37
  else {
25
- initialValue[childField.id] = e;
26
- onChange(__assign({}, initialValue));
38
+ // onst path = getPathFromField(field)
39
+ // console.log('field path is ', path)
40
+ // const childPath = getPathFromField(childField)
41
+ // console.log('child field path is ', childPath)
42
+ // only use local path since we're only appending to the local object value rather than the full form value
43
+ /* const localForm = copyAndAddPathToFields(field as IFormSection) // { ...childField, path: childField?.path?.slice(childField?.path?.length - 1) ?? undefined }
44
+ const localField = { ...childField, path: childField?.path?.slice(childField?.path?.length - 1) ?? undefined }
45
+ const cleanedValues = cleanAndUpdateFormValuesWithFieldValue({
46
+ form: localForm,
47
+ field: localField,
48
+ value: e,
49
+ formValues: structuredClone(initialValue)
50
+ }) */
51
+ /* const cleanedValues = cleanAndUpdateFormValuesWithFieldValue({
52
+ form: field as IFormSection,
53
+ field: childField,
54
+ value: e,
55
+ formValues: structuredClone(initialValue)
56
+ }) */
57
+ var newValue = structuredClone(initialValue);
58
+ newValue[childField.id] = e;
59
+ onChange(newValue);
27
60
  }
28
- }, className: index$1.makeClassName({
29
- defaultClassName: 'p-0',
61
+ },
62
+ // conditionResult={conditionResult}
63
+ className: index$1.makeClassName({
30
64
  className: fc_1
31
65
  }),
66
+ // conditionResult={conditionResult}
32
67
  // default to null here so that FormCreator doesn't go out and look for the value again
33
68
  // todo: update this so that it's clearer. difference between undefined and null too small
34
69
  value: (_b = (childField.type === 'object' && childField.skip_path === true
@@ -1 +1 @@
1
- {"version":3,"file":"Object.js","sources":["../../../../../../src/Form/Components/Inputs/Object.tsx"],"sourcesContent":["import FieldCreator from '@/Form/Components/FieldCreator'\r\nimport FieldLabel from '@/Form/Components/FieldLabel'\r\nimport { type ICompositeValueType, type IFieldInputProps } from '@/Form/Creator/FormCreatorTypes'\r\nimport { utils } from '@axdspub/axiom-ui-utilities'\r\nimport React, { type ReactElement } from 'react'\r\n\r\nconst ObjectInput = ({ field, onChange, value }: IFieldInputProps): ReactElement => {\r\n const initialValue = (typeof value === 'object' ? value ?? {} : {}) as ICompositeValueType\r\n if (field.type === 'object' && field.fields !== undefined) {\r\n const cl = `${field.layout === 'horizontal' ? `flex flex-row gap-4 ${field.label !== undefined ? 'px-0' : ''}` : 'flex flex-col gap-4'}`\r\n const fc = field.layout === 'horizontal' ? 'flex-1' : ''\r\n return (\r\n <div>\r\n {\r\n field.label !== undefined\r\n ? <FieldLabel {...field} />\r\n : null\r\n }\r\n <div className={`p-4 bg-slate-100 ${cl}`}>\r\n {\r\n field.fields.map((childField) => {\r\n const key = (field.path ?? [field.id]).concat(childField.id).join('.')\r\n\r\n return (\r\n <FieldCreator\r\n onChange={(e) => {\r\n if (childField.type === 'object' && childField.skip_path === true) {\r\n onChange(e)\r\n } else {\r\n initialValue[childField.id] = e\r\n onChange({ ...initialValue })\r\n }\r\n }}\r\n className={utils.makeClassName({\r\n defaultClassName: 'p-0',\r\n className: fc\r\n })}\r\n // default to null here so that FormCreator doesn't go out and look for the value again\r\n // todo: update this so that it's clearer. difference between undefined and null too small\r\n value={(\r\n childField.type === 'object' && childField.skip_path === true\r\n ? initialValue\r\n : initialValue[childField.id]\r\n ) ?? null\r\n }\r\n field={childField}\r\n key={key}\r\n />\r\n )\r\n })\r\n }\r\n </div>\r\n </div>\r\n )\r\n }\r\n return <p>Field config for {field.id} is missing &apos;fields&apos;</p>\r\n}\r\n\r\nexport default ObjectInput\r\n"],"names":["React","utils"],"mappings":";;;;;;AAMM,IAAA,WAAW,GAAG,UAAC,EAA4C,EAAA;AAA1C,IAAA,IAAA,KAAK,WAAA,EAAE,QAAQ,GAAA,EAAA,CAAA,QAAA,EAAE,KAAK,GAAA,EAAA,CAAA,KAAA;IAC3C,IAAM,YAAY,IAAI,OAAO,KAAK,KAAK,QAAQ,GAAG,KAAK,aAAL,KAAK,KAAA,MAAA,GAAL,KAAK,GAAI,EAAE,GAAG,EAAE,CAAwB;AAC1F,IAAA,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS,EAAE;AACzD,QAAA,IAAM,EAAE,GAAG,EAAG,CAAA,MAAA,CAAA,KAAK,CAAC,MAAM,KAAK,YAAY,GAAG,uBAAA,CAAA,MAAA,CAAwB,KAAK,CAAC,KAAK,KAAK,SAAS,GAAG,MAAM,GAAG,EAAE,CAAE,GAAG,qBAAqB,CAAE;AACzI,QAAA,IAAM,IAAE,GAAG,KAAK,CAAC,MAAM,KAAK,YAAY,GAAG,QAAQ,GAAG,EAAE;AACxD,QAAA,QACIA,cAAA,CAAA,aAAA,CAAA,KAAA,EAAA,IAAA;YAEE,KAAK,CAAC,KAAK,KAAK;AACd,kBAAEA,cAAA,CAAA,aAAA,CAAC,UAAU,EAAA,QAAA,CAAA,EAAA,EAAK,KAAK,CAAI;AAC3B,kBAAE,IAAI;AAEV,YAAAA,cAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAE,oBAAqB,CAAA,MAAA,CAAA,EAAE,CAAE,EAAA,EAEvC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,UAAC,UAAU,EAAA;;gBAC1B,IAAM,GAAG,GAAG,CAAC,CAAA,EAAA,GAAA,KAAK,CAAC,IAAI,MAAI,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAA,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;AAEtE,gBAAA,QACEA,cAAC,CAAA,aAAA,CAAA,YAAY,IACX,QAAQ,EAAE,UAAC,CAAC,EAAA;AACV,wBAAA,IAAI,UAAU,CAAC,IAAI,KAAK,QAAQ,IAAI,UAAU,CAAC,SAAS,KAAK,IAAI,EAAE;4BACjE,QAAQ,CAAC,CAAC,CAAC;;6BACN;AACL,4BAAA,YAAY,CAAC,UAAU,CAAC,EAAE,CAAC,GAAG,CAAC;4BAC/B,QAAQ,CAAA,QAAA,CAAA,EAAA,EAAM,YAAY,CAAA,CAAG;;AAEjC,qBAAC,EACD,SAAS,EAAEC,OAAK,CAAC,aAAa,CAAC;AAC7B,wBAAA,gBAAgB,EAAE,KAAK;AACvB,wBAAA,SAAS,EAAE;qBACZ,CAAC;;;AAGF,oBAAA,KAAK,EAAE,CAAA,EAAA,IACL,UAAU,CAAC,IAAI,KAAK,QAAQ,IAAI,UAAU,CAAC,SAAS,KAAK;AACvD,0BAAE;0BACA,YAAY,CAAC,UAAU,CAAC,EAAE,CAAC,CAChC,MAAI,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAA,IAAI,EAET,KAAK,EAAE,UAAU,EACjB,GAAG,EAAE,GAAG,EAAA,CACR;AAEN,aAAC,CAAC,CAEA,CACA;;IAGV,OAAOD,cAAA,CAAA,aAAA,CAAA,GAAA,EAAA,IAAA;;AAAqB,QAAA,KAAK,CAAC,EAAE;+BAAmC;AACzE;;;;"}
1
+ {"version":3,"file":"Object.js","sources":["../../../../../../src/Form/Components/Inputs/Object.tsx"],"sourcesContent":["import FieldCreator from '@/Form/Components/FieldCreator'\r\nimport FieldLabel from '@/Form/Components/FieldLabel'\r\nimport { type ICompositeValueType, type IFieldInputProps } from '@/Form/Creator/FormCreatorTypes'\r\nimport { checkCondition } from '@/utils/validators'\r\nimport { utils } from '@axdspub/axiom-ui-utilities'\r\nimport React, { type ReactElement } from 'react'\r\n\r\nconst ObjectInput = ({ field, onChange, value, disabled }: IFieldInputProps): ReactElement => {\r\n const initialValue = (typeof value === 'object' ? value ?? {} : {}) as ICompositeValueType\r\n if (field.type === 'object' && field.fields !== undefined) {\r\n const cl = `${field.layout === 'horizontal'\r\n ? 'flex md:flex-row sm:flex-col gap-4 sm:gap-2'\r\n : field.layout === 'grid4'\r\n ? 'grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-4'\r\n : field.layout === 'grid3'\r\n ? 'grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4'\r\n : field.layout === 'grid2'\r\n ? 'grid grid-cols-1 md:grid-cols-2 gap-4'\r\n : 'flex flex-col gap-4'\r\n }`\r\n const fc = field.layout === 'horizontal'\r\n ? 'flex-1'\r\n : ''\r\n return (\r\n <div>\r\n {\r\n field.label !== undefined\r\n ? <FieldLabel field={field} disabled={disabled} value={value} onChange={onChange} />\r\n : null\r\n }\r\n <div className={`${cl}${disabled ? ' opacity-70 cursor-not-allowed' : ''}`}>\r\n {\r\n field.fields.map((childField) => {\r\n const key = (field.path ?? [field.id]).concat(childField.id).join('.')\r\n const conditionResult = field.multiple\r\n ? checkCondition(childField, initialValue)\r\n : undefined\r\n\r\n return (\r\n <FieldCreator\r\n disabled={disabled}\r\n conditionResult={conditionResult}\r\n onChange={(e) => {\r\n if (childField.type === 'object' && childField.skip_path === true) {\r\n onChange(e)\r\n } else {\r\n // onst path = getPathFromField(field)\r\n // console.log('field path is ', path)\r\n // const childPath = getPathFromField(childField)\r\n // console.log('child field path is ', childPath)\r\n\r\n // only use local path since we're only appending to the local object value rather than the full form value\r\n /* const localForm = copyAndAddPathToFields(field as IFormSection) // { ...childField, path: childField?.path?.slice(childField?.path?.length - 1) ?? undefined }\r\n const localField = { ...childField, path: childField?.path?.slice(childField?.path?.length - 1) ?? undefined }\r\n const cleanedValues = cleanAndUpdateFormValuesWithFieldValue({\r\n form: localForm,\r\n field: localField,\r\n value: e,\r\n formValues: structuredClone(initialValue)\r\n }) */\r\n /* const cleanedValues = cleanAndUpdateFormValuesWithFieldValue({\r\n form: field as IFormSection,\r\n field: childField,\r\n value: e,\r\n formValues: structuredClone(initialValue)\r\n }) */\r\n const newValue = structuredClone(initialValue)\r\n newValue[childField.id] = e\r\n onChange(newValue)\r\n }\r\n }}\r\n // conditionResult={conditionResult}\r\n className={utils.makeClassName({\r\n className: fc\r\n })}\r\n // conditionResult={conditionResult}\r\n // default to null here so that FormCreator doesn't go out and look for the value again\r\n // todo: update this so that it's clearer. difference between undefined and null too small\r\n value={(\r\n childField.type === 'object' && childField.skip_path === true\r\n ? initialValue\r\n : initialValue[childField.id]\r\n ) ?? null\r\n }\r\n field={childField}\r\n key={key}\r\n />\r\n )\r\n })\r\n }\r\n </div>\r\n </div>\r\n )\r\n }\r\n return <p>Field config for {field.id} is missing &apos;fields&apos;</p>\r\n}\r\n\r\nexport default ObjectInput\r\n"],"names":["React","utils"],"mappings":"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"}
@@ -1,13 +1,12 @@
1
- import { __assign } from '../../../../node_modules/tslib/tslib.es6.js';
2
1
  import FieldLabel from '../FieldLabel.js';
3
2
  import { RadioGroup as RadixRadioGroup } from '../../../../node_modules/@axdspub/axiom-ui-utilities/library/index.js';
4
3
  import React__default from 'react';
5
4
 
6
5
  var RadioInput = function (_a) {
7
- var field = _a.field, onChange = _a.onChange, value = _a.value;
6
+ var field = _a.field, onChange = _a.onChange, value = _a.value, disabled = _a.disabled;
8
7
  var initialValue = value !== undefined ? value : '';
9
8
  if (field.type === 'radio' && field.options !== undefined) {
10
- return React__default.createElement(RadixRadioGroup, { id: field.id, label: React__default.createElement(FieldLabel, __assign({}, field)), testId: field.id, options: field.options, value: initialValue !== undefined && initialValue !== null ? String(initialValue) : '', onChange: function (e) {
9
+ return React__default.createElement(RadixRadioGroup, { id: field.id, label: React__default.createElement(FieldLabel, { field: field, disabled: disabled, value: value, onChange: onChange }), testId: field.id, options: field.options, value: initialValue !== undefined && initialValue !== null ? String(initialValue) : '', onChange: function (e) {
11
10
  onChange(e === null || e === void 0 ? void 0 : e.value);
12
11
  } });
13
12
  }
@@ -1 +1 @@
1
- {"version":3,"file":"RadioGroup.js","sources":["../../../../../../src/Form/Components/Inputs/RadioGroup.tsx"],"sourcesContent":["import FieldLabel from '@/Form/Components/FieldLabel'\r\nimport { type IFieldInputProps } from '@/Form/Creator/FormCreatorTypes'\r\nimport { RadioGroup } from '@axdspub/axiom-ui-utilities'\r\nimport React, { type ReactElement } from 'react'\r\n\r\nconst RadioInput = ({ field, onChange, value }: IFieldInputProps): ReactElement => {\r\n const initialValue = value !== undefined ? value : ''\r\n\r\n if (field.type === 'radio' && field.options !== undefined) {\r\n return <RadioGroup\r\n id={field.id}\r\n label={<FieldLabel {...field} />}\r\n testId={field.id}\r\n options={field.options}\r\n value={initialValue !== undefined && initialValue !== null ? String(initialValue) : ''}\r\n onChange={(e) => {\r\n onChange(e?.value)\r\n }}\r\n />\r\n }\r\n return <p>Field config for {field.id} is missing &apos;options&apos;</p>\r\n}\r\n\r\nexport default RadioInput\r\n"],"names":["React","RadioGroup"],"mappings":";;;;;AAKM,IAAA,UAAU,GAAG,UAAC,EAA4C,EAAA;AAA1C,IAAA,IAAA,KAAK,WAAA,EAAE,QAAQ,GAAA,EAAA,CAAA,QAAA,EAAE,KAAK,GAAA,EAAA,CAAA,KAAA;AAC1C,IAAA,IAAM,YAAY,GAAG,KAAK,KAAK,SAAS,GAAG,KAAK,GAAG,EAAE;AAErD,IAAA,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,IAAI,KAAK,CAAC,OAAO,KAAK,SAAS,EAAE;QACzD,OAAOA,cAAA,CAAA,aAAA,CAACC,eAAU,EAAA,EACd,EAAE,EAAE,KAAK,CAAC,EAAE,EACZ,KAAK,EAAED,cAAA,CAAA,aAAA,CAAC,UAAU,EAAK,QAAA,CAAA,EAAA,EAAA,KAAK,CAAI,CAAA,EAChC,MAAM,EAAE,KAAK,CAAC,EAAE,EAChB,OAAO,EAAE,KAAK,CAAC,OAAO,EACtB,KAAK,EAAE,YAAY,KAAK,SAAS,IAAI,YAAY,KAAK,IAAI,GAAG,MAAM,CAAC,YAAY,CAAC,GAAG,EAAE,EACtF,QAAQ,EAAE,UAAC,CAAC,EAAA;gBACV,QAAQ,CAAC,CAAC,KAAD,IAAA,IAAA,CAAC,uBAAD,CAAC,CAAE,KAAK,CAAC;AACpB,aAAC,GACD;;IAEN,OAAOA,cAAA,CAAA,aAAA,CAAA,GAAA,EAAA,IAAA;;AAAqB,QAAA,KAAK,CAAC,EAAE;gCAAoC;AAC1E;;;;"}
1
+ {"version":3,"file":"RadioGroup.js","sources":["../../../../../../src/Form/Components/Inputs/RadioGroup.tsx"],"sourcesContent":["import FieldLabel from '@/Form/Components/FieldLabel'\r\nimport { type IFieldInputProps } from '@/Form/Creator/FormCreatorTypes'\r\nimport { RadioGroup } from '@axdspub/axiom-ui-utilities'\r\nimport React, { type ReactElement } from 'react'\r\n\r\nconst RadioInput = ({ field, onChange, value, disabled }: IFieldInputProps): ReactElement => {\r\n const initialValue = value !== undefined ? value : ''\r\n\r\n if (field.type === 'radio' && field.options !== undefined) {\r\n return <RadioGroup\r\n id={field.id}\r\n label={<FieldLabel\r\n field={field}\r\n disabled={disabled}\r\n value={value}\r\n onChange={onChange}\r\n />}\r\n testId={field.id}\r\n options={field.options}\r\n value={initialValue !== undefined && initialValue !== null ? String(initialValue) : ''}\r\n onChange={(e) => {\r\n onChange(e?.value)\r\n }}\r\n />\r\n }\r\n return <p>Field config for {field.id} is missing &apos;options&apos;</p>\r\n}\r\n\r\nexport default RadioInput\r\n"],"names":["React","RadioGroup"],"mappings":";;;;AAKM,IAAA,UAAU,GAAG,UAAC,EAAsD,EAAA;QAApD,KAAK,GAAA,EAAA,CAAA,KAAA,EAAE,QAAQ,GAAA,EAAA,CAAA,QAAA,EAAE,KAAK,GAAA,EAAA,CAAA,KAAA,EAAE,QAAQ,GAAA,EAAA,CAAA,QAAA;AACpD,IAAA,IAAM,YAAY,GAAG,KAAK,KAAK,SAAS,GAAG,KAAK,GAAG,EAAE;AAErD,IAAA,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,IAAI,KAAK,CAAC,OAAO,KAAK,SAAS,EAAE;AACzD,QAAA,OAAOA,cAAC,CAAA,aAAA,CAAAC,eAAU,EACd,EAAA,EAAE,EAAE,KAAK,CAAC,EAAE,EACZ,KAAK,EAAED,cAAA,CAAA,aAAA,CAAC,UAAU,EAChB,EAAA,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,QAAQ,EAClB,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,QAAQ,EAAA,CAClB,EACF,MAAM,EAAE,KAAK,CAAC,EAAE,EAChB,OAAO,EAAE,KAAK,CAAC,OAAO,EACtB,KAAK,EAAE,YAAY,KAAK,SAAS,IAAI,YAAY,KAAK,IAAI,GAAG,MAAM,CAAC,YAAY,CAAC,GAAG,EAAE,EACtF,QAAQ,EAAE,UAAC,CAAC,EAAA;gBACV,QAAQ,CAAC,CAAC,KAAD,IAAA,IAAA,CAAC,uBAAD,CAAC,CAAE,KAAK,CAAC;AACpB,aAAC,GACD;;IAEN,OAAOA,cAAA,CAAA,aAAA,CAAA,GAAA,EAAA,IAAA;;AAAqB,QAAA,KAAK,CAAC,EAAE;gCAAoC;AAC1E;;;;"}
@@ -1,14 +1,13 @@
1
- import { __assign } from '../../../../node_modules/tslib/tslib.es6.js';
2
1
  import FieldLabel from '../FieldLabel.js';
3
2
  import { SelectInput as Select } from '../../../../node_modules/@axdspub/axiom-ui-utilities/library/index.js';
4
3
  import React__default from 'react';
5
4
 
6
5
  var SingleSelectInput = function (_a) {
7
6
  var _b;
8
- var field = _a.field, onChange = _a.onChange, value = _a.value;
7
+ var field = _a.field, onChange = _a.onChange, value = _a.value, disabled = _a.disabled;
9
8
  var initialValue = value !== undefined ? value : '';
10
9
  if (field.type === 'select' && field.options !== undefined) {
11
- return React__default.createElement(Select, { id: field.id, label: React__default.createElement(FieldLabel, __assign({}, field)), testId: field.id, options: field.options, includePrompt: ((_b = field === null || field === void 0 ? void 0 : field.settings) === null || _b === void 0 ? void 0 : _b.allowNull) !== false, value: initialValue !== undefined && initialValue !== null ? String(initialValue) : '', onChange: function (e) {
10
+ return React__default.createElement(Select, { id: field.id, label: React__default.createElement(FieldLabel, { field: field, disabled: disabled, value: value, onChange: onChange }), testId: field.id, options: field.options, includePrompt: ((_b = field === null || field === void 0 ? void 0 : field.settings) === null || _b === void 0 ? void 0 : _b.allowNull) !== false, value: initialValue !== undefined && initialValue !== null ? String(initialValue) : '', onChange: function (e) {
12
11
  onChange(e === null || e === void 0 ? void 0 : e.value);
13
12
  } });
14
13
  }
@@ -1 +1 @@
1
- {"version":3,"file":"SingleSelect.js","sources":["../../../../../../src/Form/Components/Inputs/SingleSelect.tsx"],"sourcesContent":["import FieldLabel from '@/Form/Components/FieldLabel'\r\nimport { type IFieldInputProps } from '@/Form/Creator/FormCreatorTypes'\r\nimport { SelectInput } from '@axdspub/axiom-ui-utilities'\r\nimport React, { type ReactElement } from 'react'\r\n\r\nconst SingleSelectInput = ({ field, onChange, value }: IFieldInputProps): ReactElement => {\r\n const initialValue = value !== undefined ? value : ''\r\n\r\n if (field.type === 'select' && field.options !== undefined) {\r\n return <SelectInput\r\n id={field.id}\r\n label={<FieldLabel {...field} />}\r\n testId={field.id}\r\n options={field.options}\r\n includePrompt = {field?.settings?.allowNull !== false}\r\n value={initialValue !== undefined && initialValue !== null ? String(initialValue) : ''}\r\n onChange={(e) => {\r\n onChange(e?.value)\r\n }}\r\n />\r\n }\r\n return <p>Field config for {field.id} is missing &apos;options&apos;</p>\r\n}\r\n\r\nexport default SingleSelectInput\r\n"],"names":["React","SelectInput"],"mappings":";;;;;AAKM,IAAA,iBAAiB,GAAG,UAAC,EAA4C,EAAA;;AAA1C,IAAA,IAAA,KAAK,WAAA,EAAE,QAAQ,GAAA,EAAA,CAAA,QAAA,EAAE,KAAK,GAAA,EAAA,CAAA,KAAA;AACjD,IAAA,IAAM,YAAY,GAAG,KAAK,KAAK,SAAS,GAAG,KAAK,GAAG,EAAE;AAErD,IAAA,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,KAAK,SAAS,EAAE;AAC1D,QAAA,OAAOA,cAAC,CAAA,aAAA,CAAAC,MAAW,EACf,EAAA,EAAE,EAAE,KAAK,CAAC,EAAE,EACZ,KAAK,EAAED,cAAC,CAAA,aAAA,CAAA,UAAU,eAAK,KAAK,CAAA,CAAI,EAChC,MAAM,EAAE,KAAK,CAAC,EAAE,EAChB,OAAO,EAAE,KAAK,CAAC,OAAO,EACtB,aAAa,EAAI,CAAA,CAAA,EAAA,GAAA,KAAK,KAAL,IAAA,IAAA,KAAK,KAAL,MAAA,GAAA,MAAA,GAAA,KAAK,CAAE,QAAQ,0CAAE,SAAS,MAAK,KAAK,EACrD,KAAK,EAAE,YAAY,KAAK,SAAS,IAAI,YAAY,KAAK,IAAI,GAAG,MAAM,CAAC,YAAY,CAAC,GAAG,EAAE,EACtF,QAAQ,EAAE,UAAC,CAAC,EAAA;gBACV,QAAQ,CAAC,CAAC,KAAD,IAAA,IAAA,CAAC,uBAAD,CAAC,CAAE,KAAK,CAAC;AACpB,aAAC,GACD;;IAEN,OAAOA,cAAA,CAAA,aAAA,CAAA,GAAA,EAAA,IAAA;;AAAqB,QAAA,KAAK,CAAC,EAAE;gCAAoC;AAC1E;;;;"}
1
+ {"version":3,"file":"SingleSelect.js","sources":["../../../../../../src/Form/Components/Inputs/SingleSelect.tsx"],"sourcesContent":["import FieldLabel from '@/Form/Components/FieldLabel'\r\nimport { type IFieldInputProps } from '@/Form/Creator/FormCreatorTypes'\r\nimport { SelectInput } from '@axdspub/axiom-ui-utilities'\r\nimport React, { type ReactElement } from 'react'\r\n\r\nconst SingleSelectInput = ({ field, onChange, value, disabled }: IFieldInputProps): ReactElement => {\r\n const initialValue = value !== undefined ? value : ''\r\n\r\n if (field.type === 'select' && field.options !== undefined) {\r\n return <SelectInput\r\n id={field.id}\r\n label={<FieldLabel\r\n field={field}\r\n disabled={disabled}\r\n value={value}\r\n onChange={onChange}\r\n />}\r\n testId={field.id}\r\n options={field.options}\r\n includePrompt = {field?.settings?.allowNull !== false}\r\n value={initialValue !== undefined && initialValue !== null ? String(initialValue) : ''}\r\n onChange={(e) => {\r\n onChange(e?.value)\r\n }}\r\n />\r\n }\r\n return <p>Field config for {field.id} is missing &apos;options&apos;</p>\r\n}\r\n\r\nexport default SingleSelectInput\r\n"],"names":["React","SelectInput"],"mappings":";;;;AAKM,IAAA,iBAAiB,GAAG,UAAC,EAAsD,EAAA;;QAApD,KAAK,GAAA,EAAA,CAAA,KAAA,EAAE,QAAQ,GAAA,EAAA,CAAA,QAAA,EAAE,KAAK,GAAA,EAAA,CAAA,KAAA,EAAE,QAAQ,GAAA,EAAA,CAAA,QAAA;AAC3D,IAAA,IAAM,YAAY,GAAG,KAAK,KAAK,SAAS,GAAG,KAAK,GAAG,EAAE;AAErD,IAAA,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,KAAK,SAAS,EAAE;AAC1D,QAAA,OAAOA,6BAACC,MAAW,EAAA,EACf,EAAE,EAAE,KAAK,CAAC,EAAE,EACZ,KAAK,EAAED,cAAC,CAAA,aAAA,CAAA,UAAU,IAChB,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,QAAQ,EAClB,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,QAAQ,EAAA,CAChB,EACJ,MAAM,EAAE,KAAK,CAAC,EAAE,EAChB,OAAO,EAAE,KAAK,CAAC,OAAO,EACtB,aAAa,EAAI,CAAA,MAAA,KAAK,KAAA,IAAA,IAAL,KAAK,KAAL,MAAA,GAAA,MAAA,GAAA,KAAK,CAAE,QAAQ,0CAAE,SAAS,MAAK,KAAK,EACrD,KAAK,EAAE,YAAY,KAAK,SAAS,IAAI,YAAY,KAAK,IAAI,GAAG,MAAM,CAAC,YAAY,CAAC,GAAG,EAAE,EACtF,QAAQ,EAAE,UAAC,CAAC,EAAA;gBACV,QAAQ,CAAC,CAAC,KAAD,IAAA,IAAA,CAAC,uBAAD,CAAC,CAAE,KAAK,CAAC;AACpB,aAAC,GACD;;IAEN,OAAOA,cAAA,CAAA,aAAA,CAAA,GAAA,EAAA,IAAA;;AAAqB,QAAA,KAAK,CAAC,EAAE;gCAAoC;AAC1E;;;;"}
@@ -1,21 +1,15 @@
1
- import { __assign } from '../../../../node_modules/tslib/tslib.es6.js';
2
1
  import FieldLabel from '../FieldLabel.js';
2
+ import { createTextFieldDebounce } from '../../../utils/helpers.js';
3
3
  import { Input } from '../../../../node_modules/@axdspub/axiom-ui-utilities/library/index.js';
4
4
  import React__default from 'react';
5
5
 
6
6
  var StringInput = function (_a) {
7
- var field = _a.field, onChange = _a.onChange, value = _a.value;
7
+ var field = _a.field, onChange = _a.onChange, value = _a.value, disabled = _a.disabled;
8
8
  var initialValue = (value !== undefined && value !== null) ? String(value) : '';
9
- /* const [val, setVal] = useState<string | undefined>(initialValue !== undefined && initialValue !== null ? String(initialValue) : '')
10
- useDeferredValue(val)
11
- const newVal = useDeferredValue(val)
12
- useEffect(() => {
13
- onChange(newVal === '' ? undefined : newVal)
14
- }, [newVal]) */
9
+ var textField = field;
10
+ var debounced = createTextFieldDebounce(onChange, 200);
15
11
  return React__default.createElement("div", null,
16
- React__default.createElement(Input, { id: field.id, testId: field.id, value: initialValue, label: React__default.createElement(FieldLabel, __assign({}, field)), onChange: function (e) {
17
- onChange((e === '' || e === null) ? undefined : e);
18
- } }));
12
+ React__default.createElement(Input, { id: field.id, disabled: disabled, testId: field.id, value: initialValue, placeholder: textField.placeholder, label: React__default.createElement(FieldLabel, { field: field, disabled: disabled, value: value, onChange: onChange }), onChange: debounced }));
19
13
  };
20
14
 
21
15
  export { StringInput as default };
@@ -1 +1 @@
1
- {"version":3,"file":"String.js","sources":["../../../../../../src/Form/Components/Inputs/String.tsx"],"sourcesContent":["import FieldLabel from '@/Form/Components/FieldLabel'\r\nimport { type IFieldInputProps } from '@/Form/Creator/FormCreatorTypes'\r\nimport { Input } from '@axdspub/axiom-ui-utilities'\r\nimport React, { type ReactElement } from 'react'\r\n\r\nconst StringInput = ({ field, onChange, value }: IFieldInputProps): ReactElement => {\r\n const initialValue = (value !== undefined && value !== null) ? String(value) : ''\r\n /* const [val, setVal] = useState<string | undefined>(initialValue !== undefined && initialValue !== null ? String(initialValue) : '')\r\n useDeferredValue(val)\r\n const newVal = useDeferredValue(val)\r\n useEffect(() => {\r\n onChange(newVal === '' ? undefined : newVal)\r\n }, [newVal]) */\r\n return <div>\r\n <Input\r\n id={field.id}\r\n testId={field.id}\r\n value={initialValue}\r\n label={<FieldLabel {...field} />} onChange={(e) => {\r\n onChange((e === '' || e === null) ? undefined : e)\r\n }} /></div>\r\n}\r\n\r\nexport default StringInput\r\n"],"names":["React"],"mappings":";;;;;AAKM,IAAA,WAAW,GAAG,UAAC,EAA4C,EAAA;AAA1C,IAAA,IAAA,KAAK,WAAA,EAAE,QAAQ,GAAA,EAAA,CAAA,QAAA,EAAE,KAAK,GAAA,EAAA,CAAA,KAAA;IAC3C,IAAM,YAAY,GAAG,CAAC,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,IAAI,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE;AACjF;;;;;AAKe;IACf,OAAOA,cAAA,CAAA,aAAA,CAAA,KAAA,EAAA,IAAA;AACH,QAAAA,cAAA,CAAA,aAAA,CAAC,KAAK,EAAA,EACJ,EAAE,EAAE,KAAK,CAAC,EAAE,EACZ,MAAM,EAAE,KAAK,CAAC,EAAE,EAChB,KAAK,EAAE,YAAY,EACnB,KAAK,EAAEA,cAAC,CAAA,aAAA,CAAA,UAAU,EAAK,QAAA,CAAA,EAAA,EAAA,KAAK,CAAI,CAAA,EAAE,QAAQ,EAAE,UAAC,CAAC,EAAA;AAC5C,gBAAA,QAAQ,CAAC,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,IAAI,SAAS,GAAG,CAAC,CAAC;aACnD,EAAA,CAAI,CAAM;AACnB;;;;"}
1
+ {"version":3,"file":"String.js","sources":["../../../../../../src/Form/Components/Inputs/String.tsx"],"sourcesContent":["import FieldLabel from '@/Form/Components/FieldLabel'\r\nimport { type IFieldInputProps, type ITextField } from '@/Form/Creator/FormCreatorTypes'\r\nimport { createTextFieldDebounce } from '@/utils/helpers'\r\nimport { Input } from '@axdspub/axiom-ui-utilities'\r\nimport React, { type ReactElement } from 'react'\r\n\r\nconst StringInput = ({ field, onChange, value, disabled }: IFieldInputProps): ReactElement => {\r\n const initialValue = (value !== undefined && value !== null) ? String(value) : ''\r\n const textField = field as ITextField\r\n const debounced = createTextFieldDebounce(onChange, 200)\r\n return <div>\r\n <Input\r\n id={field.id}\r\n disabled={disabled}\r\n testId={field.id}\r\n value={initialValue}\r\n placeholder={textField.placeholder}\r\n label={<FieldLabel\r\n field={field}\r\n disabled={disabled}\r\n value={value}\r\n onChange={onChange}\r\n />\r\n } onChange={debounced} /></div>\r\n}\r\n\r\nexport default StringInput\r\n"],"names":["React"],"mappings":";;;;;AAMM,IAAA,WAAW,GAAG,UAAC,EAAsD,EAAA;QAApD,KAAK,GAAA,EAAA,CAAA,KAAA,EAAE,QAAQ,GAAA,EAAA,CAAA,QAAA,EAAE,KAAK,GAAA,EAAA,CAAA,KAAA,EAAE,QAAQ,GAAA,EAAA,CAAA,QAAA;IACrD,IAAM,YAAY,GAAG,CAAC,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,IAAI,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE;IACjF,IAAM,SAAS,GAAG,KAAmB;IACrC,IAAM,SAAS,GAAG,uBAAuB,CAAC,QAAQ,EAAE,GAAG,CAAC;IACxD,OAAOA,cAAA,CAAA,aAAA,CAAA,KAAA,EAAA,IAAA;QACHA,cAAC,CAAA,aAAA,CAAA,KAAK,EACJ,EAAA,EAAE,EAAE,KAAK,CAAC,EAAE,EACZ,QAAQ,EAAE,QAAQ,EAClB,MAAM,EAAE,KAAK,CAAC,EAAE,EAChB,KAAK,EAAE,YAAY,EACnB,WAAW,EAAE,SAAS,CAAC,WAAW,EAClC,KAAK,EAAEA,cAAC,CAAA,aAAA,CAAA,UAAU,EACd,EAAA,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,QAAQ,EAClB,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,QAAQ,EAAA,CAClB,EACF,QAAQ,EAAE,SAAS,EAAI,CAAA,CAAM;AACvC;;;;"}
@@ -1,10 +1,9 @@
1
- import { __assign } from '../../../../node_modules/tslib/tslib.es6.js';
2
1
  import FieldLabel from '../FieldLabel.js';
3
2
  import React__default, { useState } from 'react';
4
3
 
5
4
  var TimeInput = function (_a) {
6
5
  var _b;
7
- var field = _a.field, onChange = _a.onChange, value = _a.value;
6
+ var field = _a.field, onChange = _a.onChange, value = _a.value, disabled = _a.disabled;
8
7
  var _c = useState(null), error = _c[0], setError = _c[1];
9
8
  if (field.type !== 'time') {
10
9
  return React__default.createElement("p", null,
@@ -80,7 +79,7 @@ var TimeInput = function (_a) {
80
79
  return (React__default.createElement("div", null,
81
80
  React__default.createElement("div", { className: "flex flex-wrap items-baseline gap-2" },
82
81
  React__default.createElement("label", { htmlFor: field.id, className: "flex-1 min-w-[200px]" },
83
- React__default.createElement(FieldLabel, __assign({}, field))),
82
+ React__default.createElement(FieldLabel, { field: field, disabled: disabled })),
84
83
  constraintMessage && (React__default.createElement("span", { className: "text-sm text-slate-500 italic" }, constraintMessage))),
85
84
  React__default.createElement("input", { id: field.id, className: "border ".concat(error ? 'border-red-500' : 'border-slate-300', " p-2 w-full"), "data-testid": field.id, type: "time", value: formatValue(value), onChange: handleChange, min: minTime, max: maxTime }),
86
85
  error && React__default.createElement("p", { className: "text-red-500 text-sm mt-1" }, error)));
@@ -1 +1 @@
1
- {"version":3,"file":"Time.js","sources":["../../../../../../src/Form/Components/Inputs/Time.tsx"],"sourcesContent":["import FieldLabel from '@/Form/Components/FieldLabel'\r\nimport { type IFieldInputProps } from '@/Form/Creator/FormCreatorTypes'\r\nimport React, { type ReactElement, useState } from 'react'\r\n\r\nconst TimeInput = ({ field, onChange, value }: IFieldInputProps): ReactElement => {\r\n const [error, setError] = useState<string | null>(null)\r\n\r\n if (field.type !== 'time') {\r\n return <p>Field config for {field.id} is missing &apos;options&apos;</p>\r\n }\r\n const { minTime, maxTime } = field.constraints ?? {}\r\n\r\n // Convert the value to the format expected by time input (hh:mm)\r\n const formatValue = (val: string | undefined | null): string => {\r\n if (!val) return ''\r\n try {\r\n // Ensure the value is in the correct format\r\n const date = new Date(val)\r\n if (isNaN(date.getTime())) return ''\r\n\r\n // Format to hh:mm\r\n const hours = String(date.getHours()).padStart(2, '0')\r\n const minutes = String(date.getMinutes()).padStart(2, '0')\r\n\r\n return `${hours}:${minutes}`\r\n } catch {\r\n return ''\r\n }\r\n }\r\n\r\n const validateTime = (timeStr: string): string | null => {\r\n if (!minTime && !maxTime) return null\r\n\r\n // Create reference dates for comparison using the same date\r\n const referenceDate = '1970-01-01'\r\n const inputDate = new Date(`${referenceDate}T${timeStr}`)\r\n const minDate = minTime ? new Date(`${referenceDate}T${minTime}`) : null\r\n const maxDate = maxTime ? new Date(`${referenceDate}T${maxTime}`) : null\r\n\r\n if (minDate && inputDate < minDate) {\r\n return `Time must be after ${minTime}`\r\n }\r\n if (maxDate && inputDate > maxDate) {\r\n return `Time must be before ${maxTime}`\r\n }\r\n return null\r\n }\r\n\r\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>): void => {\r\n const inputValue = e.target.value\r\n\r\n // If we have a partial time (e.g., just started typing hours), don't update\r\n if (inputValue && inputValue.length < 5) { // 5 is the length of a complete time value (HH:MM)\r\n return\r\n }\r\n\r\n if (inputValue) {\r\n const newValue = new Date(`1970-01-01T${inputValue}`).toISOString()\r\n const validationError = validateTime(inputValue)\r\n setError(validationError)\r\n if (!validationError) {\r\n onChange(newValue)\r\n }\r\n } else {\r\n setError(null)\r\n onChange(undefined)\r\n }\r\n }\r\n\r\n const getConstraintMessage = (): string | null => {\r\n if (!minTime && !maxTime) return null\r\n const parts = []\r\n if (minTime) parts.push(`after ${minTime}`)\r\n if (maxTime) parts.push(`before ${maxTime}`)\r\n return `Must be ${parts.join(' and ')}`\r\n }\r\n\r\n const constraintMessage = getConstraintMessage()\r\n\r\n return (\r\n <div>\r\n <div className=\"flex flex-wrap items-baseline gap-2\">\r\n <label htmlFor={field.id} className=\"flex-1 min-w-[200px]\">\r\n <FieldLabel {...field} />\r\n </label>\r\n {constraintMessage && (\r\n <span className=\"text-sm text-slate-500 italic\">\r\n {constraintMessage}\r\n </span>\r\n )}\r\n </div>\r\n <input\r\n id={field.id}\r\n className={`border ${error ? 'border-red-500' : 'border-slate-300'} p-2 w-full`}\r\n data-testid={field.id}\r\n type=\"time\"\r\n value={formatValue(value as string)}\r\n onChange={handleChange}\r\n min={minTime}\r\n max={maxTime}\r\n />\r\n {error && <p className=\"text-red-500 text-sm mt-1\">{error}</p>}\r\n </div>\r\n )\r\n}\r\n\r\nexport default TimeInput\r\n"],"names":["React"],"mappings":"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"}
1
+ {"version":3,"file":"Time.js","sources":["../../../../../../src/Form/Components/Inputs/Time.tsx"],"sourcesContent":["import FieldLabel from '@/Form/Components/FieldLabel'\r\nimport { type IFieldInputProps } from '@/Form/Creator/FormCreatorTypes'\r\nimport React, { type ReactElement, useState } from 'react'\r\n\r\nconst TimeInput = ({ field, onChange, value, disabled }: IFieldInputProps): ReactElement => {\r\n const [error, setError] = useState<string | null>(null)\r\n\r\n if (field.type !== 'time') {\r\n return <p>Field config for {field.id} is missing &apos;options&apos;</p>\r\n }\r\n const { minTime, maxTime } = field.constraints ?? {}\r\n\r\n // Convert the value to the format expected by time input (hh:mm)\r\n const formatValue = (val: string | undefined | null): string => {\r\n if (!val) return ''\r\n try {\r\n // Ensure the value is in the correct format\r\n const date = new Date(val)\r\n if (isNaN(date.getTime())) return ''\r\n\r\n // Format to hh:mm\r\n const hours = String(date.getHours()).padStart(2, '0')\r\n const minutes = String(date.getMinutes()).padStart(2, '0')\r\n\r\n return `${hours}:${minutes}`\r\n } catch {\r\n return ''\r\n }\r\n }\r\n\r\n const validateTime = (timeStr: string): string | null => {\r\n if (!minTime && !maxTime) return null\r\n\r\n // Create reference dates for comparison using the same date\r\n const referenceDate = '1970-01-01'\r\n const inputDate = new Date(`${referenceDate}T${timeStr}`)\r\n const minDate = minTime ? new Date(`${referenceDate}T${minTime}`) : null\r\n const maxDate = maxTime ? new Date(`${referenceDate}T${maxTime}`) : null\r\n\r\n if (minDate && inputDate < minDate) {\r\n return `Time must be after ${minTime}`\r\n }\r\n if (maxDate && inputDate > maxDate) {\r\n return `Time must be before ${maxTime}`\r\n }\r\n return null\r\n }\r\n\r\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>): void => {\r\n const inputValue = e.target.value\r\n\r\n // If we have a partial time (e.g., just started typing hours), don't update\r\n if (inputValue && inputValue.length < 5) { // 5 is the length of a complete time value (HH:MM)\r\n return\r\n }\r\n\r\n if (inputValue) {\r\n const newValue = new Date(`1970-01-01T${inputValue}`).toISOString()\r\n const validationError = validateTime(inputValue)\r\n setError(validationError)\r\n if (!validationError) {\r\n onChange(newValue)\r\n }\r\n } else {\r\n setError(null)\r\n onChange(undefined)\r\n }\r\n }\r\n\r\n const getConstraintMessage = (): string | null => {\r\n if (!minTime && !maxTime) return null\r\n const parts = []\r\n if (minTime) parts.push(`after ${minTime}`)\r\n if (maxTime) parts.push(`before ${maxTime}`)\r\n return `Must be ${parts.join(' and ')}`\r\n }\r\n\r\n const constraintMessage = getConstraintMessage()\r\n\r\n return (\r\n <div>\r\n <div className=\"flex flex-wrap items-baseline gap-2\">\r\n <label htmlFor={field.id} className=\"flex-1 min-w-[200px]\">\r\n <FieldLabel field={field} disabled={disabled} />\r\n </label>\r\n {constraintMessage && (\r\n <span className=\"text-sm text-slate-500 italic\">\r\n {constraintMessage}\r\n </span>\r\n )}\r\n </div>\r\n <input\r\n id={field.id}\r\n className={`border ${error ? 'border-red-500' : 'border-slate-300'} p-2 w-full`}\r\n data-testid={field.id}\r\n type=\"time\"\r\n value={formatValue(value as string)}\r\n onChange={handleChange}\r\n min={minTime}\r\n max={maxTime}\r\n />\r\n {error && <p className=\"text-red-500 text-sm mt-1\">{error}</p>}\r\n </div>\r\n )\r\n}\r\n\r\nexport default TimeInput\r\n"],"names":["React"],"mappings":"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"}
@@ -12,15 +12,15 @@ import React__default, { useState, useContext } from 'react';
12
12
 
13
13
  var FormStatus = function () {
14
14
  var _a, _b, _c, _d;
15
- var _e = useContext(FormContext), form = _e.form, formValues = _e.formValues, setFormValues = _e.setFormValues;
16
- var status = calculateSectionStatus([form], [formValues, setFormValues]);
17
- return (React__default.createElement(React__default.Fragment, null,
18
- React__default.createElement("p", { className: 'text-xs mt-4' }, (_a = status[form.id]) === null || _a === void 0 ? void 0 :
15
+ var _e = useContext(FormContext), form = _e.form, formValues = _e.formValues;
16
+ var status = calculateSectionStatus([form], formValues);
17
+ return (React__default.createElement("div", { className: 'flex flex-col gap-2 text-xs' },
18
+ React__default.createElement("p", null, (_a = status[form.id]) === null || _a === void 0 ? void 0 :
19
19
  _a.completed,
20
20
  " of ", (_b = status[form.id]) === null || _b === void 0 ? void 0 :
21
21
  _b.total,
22
22
  " total"),
23
- React__default.createElement("p", { className: 'text-xs mt-2' }, (_c = status[form.id]) === null || _c === void 0 ? void 0 :
23
+ React__default.createElement("p", null, (_c = status[form.id]) === null || _c === void 0 ? void 0 :
24
24
  _c.requiredCompleted,
25
25
  " of ", (_d = status[form.id]) === null || _d === void 0 ? void 0 :
26
26
  _d.requiredTotal,
@@ -37,7 +37,7 @@ var seedFormValuesWithDefaults = function (form) {
37
37
  };
38
38
  var FormCreator = function (_a) {
39
39
  var _b, _c;
40
- var form = _a.form, formValueState = _a.formValueState, note = _a.note, error = _a.error, onChange = _a.onChange, className = _a.className, _d = _a.defaultClassName, defaultClassName = _d === void 0 ? 'flex flex-col gap-2 flex-grow' : _d, _e = _a.urlNavigable, urlNavigable = _e === void 0 ? true : _e, inputOverrides = _a.inputOverrides, schema = _a.schema, footer = _a.footer, header = _a.header;
40
+ var form = _a.form, formValueState = _a.formValueState, note = _a.note, error = _a.error, onChange = _a.onChange, className = _a.className, _d = _a.defaultClassName, defaultClassName = _d === void 0 ? 'flex flex-col gap-8 flex-grow' : _d, _e = _a.urlNavigable, urlNavigable = _e === void 0 ? true : _e, inputOverrides = _a.inputOverrides, schema = _a.schema, footer = _a.footer, header = _a.header;
41
41
  var activeForm = copyAndAddPathToFields(form);
42
42
  var activeFormValues = structuredClone((_b = formValueState === null || formValueState === void 0 ? void 0 : formValueState[0]) !== null && _b !== void 0 ? _b : {});
43
43
  getFieldsFromFormSection(activeForm).forEach(function (field) {
@@ -1 +1 @@
1
- {"version":3,"file":"FormCreator.js","sources":["../../../../../src/Form/Creator/FormCreator.tsx"],"sourcesContent":["import { FormContext } from '@/Form/Creator/FormContextProvider'\r\nimport { type IFormValues, type IForm, type IValueChangeFn, type IFieldInputProps, type IFormOverride, type IFormFieldOverride } from '@/Form/Creator/FormCreatorTypes'\r\nimport FormHeader from '@/Form/Creator/FormHeader'\r\nimport FormSection from '@/Form/Creator/FormSection'\r\nimport { getFieldsFromFormSection, getFieldValue } from '@/utils/getters'\r\nimport { copyAndAddPathToFields, updateFormValuesWithFieldValueInPlace } from '@/utils/manipulators'\r\nimport { overridesAndSchemaToFormObject, schemaToFormObject } from '@/utils/schemaToFormHelpers'\r\nimport { calculateSectionStatus } from '@/utils/validators'\r\nimport { Loader, utils } from '@axdspub/axiom-ui-utilities'\r\nimport { type JSONSchema6 } from 'json-schema'\r\nimport React, { type ReactNode, useContext, type ReactElement, useState } from 'react'\r\n\r\nexport interface IFormCreatorProps {\r\n form: IForm\r\n schema?: JSONSchema6\r\n formValueState?: [IFormValues, (v: IFormValues) => void]\r\n note?: string\r\n error?: string\r\n onChange?: IValueChangeFn\r\n className?: string\r\n defaultClassName?: string\r\n urlNavigable?: boolean\r\n inputOverrides?: Record<string, React.FC<IFieldInputProps>>\r\n header?: ReactNode\r\n footer?: ReactNode\r\n}\r\n\r\nconst FormStatus = (): ReactElement => {\r\n const { form, formValues, setFormValues } = useContext(FormContext)\r\n const status = calculateSectionStatus([form], [formValues, setFormValues])\r\n\r\n return (\r\n <>\r\n <p className='text-xs mt-4'>{status[form.id]?.completed} of {status[form.id]?.total} total</p>\r\n <p className='text-xs mt-2'>{status[form.id]?.requiredCompleted} of {status[form.id]?.requiredTotal} required</p>\r\n </>\r\n )\r\n}\r\n\r\nexport const SchemaFormCreator = ({\r\n label,\r\n id,\r\n schema,\r\n formOverrides,\r\n formFieldOverrides,\r\n ...props\r\n}: Omit<IFormCreatorProps, 'form'> & {\r\n id?: string\r\n label?: string\r\n schema: JSONSchema6\r\n formOverrides?: IFormOverride[]\r\n formFieldOverrides?: IFormFieldOverride[][]\r\n}): ReactElement => {\r\n const form = formOverrides === undefined && formFieldOverrides === undefined\r\n ? schemaToFormObject(schema)\r\n : overridesAndSchemaToFormObject({\r\n formOverrides,\r\n formFieldOverrides,\r\n schema\r\n }) // Convert the JSON schema to a form object\r\n if (id !== undefined) {\r\n form.id = id\r\n }\r\n if (label !== undefined) {\r\n form.label = label\r\n }\r\n\r\n return (\r\n <>{\r\n form !== undefined\r\n ? <FormCreator form={form} {...props} />\r\n : <div className='p-5 bg-slate-200 text-xs'><Loader className='pt-20' /></div>\r\n }</>\r\n\r\n )\r\n}\r\n\r\nconst seedFormValuesWithDefaults = (form: IForm): IFormValues => {\r\n const formValues: IFormValues = {}\r\n getFieldsFromFormSection(form).forEach(field => {\r\n if (field.defaultValue !== undefined && getFieldValue(field, formValues) === undefined) {\r\n updateFormValuesWithFieldValueInPlace(field, field.defaultValue, formValues)\r\n }\r\n })\r\n return formValues\r\n}\r\n\r\nconst FormCreator = ({\r\n form,\r\n formValueState,\r\n note,\r\n error,\r\n onChange,\r\n className,\r\n defaultClassName = 'flex flex-col gap-2 flex-grow',\r\n urlNavigable = true,\r\n inputOverrides,\r\n schema,\r\n footer,\r\n header\r\n}: IFormCreatorProps): ReactElement => {\r\n const activeForm = copyAndAddPathToFields(form)\r\n const activeFormValues = structuredClone(formValueState?.[0] ?? {})\r\n getFieldsFromFormSection(activeForm).forEach(field => {\r\n if (field.defaultValue !== undefined && getFieldValue(field, activeFormValues) === undefined) {\r\n updateFormValuesWithFieldValueInPlace(field, field.defaultValue, activeFormValues)\r\n }\r\n })\r\n const [formValues, setFormValues] = formValueState ?? useState<IFormValues>(seedFormValuesWithDefaults(activeForm))\r\n\r\n activeForm.settings = {\r\n url_navigable: urlNavigable,\r\n ...activeForm.settings\r\n }\r\n\r\n return (\r\n <FormContext.Provider value={{\r\n form: activeForm,\r\n formValues,\r\n setFormValues,\r\n inputOverrides,\r\n schema,\r\n urlNavigable: activeForm.settings.url_navigable\r\n }}>\r\n {header ?? ''}\r\n <div className={utils.makeClassName({\r\n className: activeForm?.settings?.class_name,\r\n defaultClassName,\r\n extras: [className]\r\n })}>\r\n <FormHeader form={activeForm} note={note} error={error} />\r\n {\r\n activeForm?.fields !== undefined && activeForm.fields.length > 0 && activeForm.pages === undefined && activeForm.wizard_steps === undefined\r\n ? <FormStatus />\r\n : ''\r\n }\r\n <FormSection\r\n formSection={activeForm}\r\n onChange={onChange}\r\n />\r\n </div>\r\n {footer ?? ''}\r\n </FormContext.Provider>\r\n )\r\n}\r\n\r\nexport type IFormSectionStatus = Record<string, {\r\n completed: number\r\n total: number\r\n requiredTotal: number\r\n requiredCompleted: number\r\n valid: boolean\r\n}>\r\n\r\nexport default FormCreator\r\n"],"names":["React","utils"],"mappings":"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"}
1
+ {"version":3,"file":"FormCreator.js","sources":["../../../../../src/Form/Creator/FormCreator.tsx"],"sourcesContent":["import { FormContext } from '@/Form/Creator/FormContextProvider'\r\nimport { type IFormValues, type IForm, type IValueChangeFn, type IFieldInputProps, type IFormOverride, type IFormFieldOverride } from '@/Form/Creator/FormCreatorTypes'\r\nimport FormHeader from '@/Form/Creator/FormHeader'\r\nimport FormSection from '@/Form/Creator/FormSection'\r\nimport { getFieldsFromFormSection, getFieldValue } from '@/utils/getters'\r\nimport { copyAndAddPathToFields, updateFormValuesWithFieldValueInPlace } from '@/utils/manipulators'\r\nimport { overridesAndSchemaToFormObject, schemaToFormObject } from '@/utils/schemaToFormHelpers'\r\nimport { calculateSectionStatus } from '@/utils/validators'\r\nimport { Loader, utils } from '@axdspub/axiom-ui-utilities'\r\nimport { type JSONSchema6 } from 'json-schema'\r\nimport React, { type ReactNode, useContext, type ReactElement, useState } from 'react'\r\n\r\nexport interface IFormCreatorProps {\r\n form: IForm\r\n schema?: JSONSchema6\r\n formValueState?: [IFormValues, (v: IFormValues) => void]\r\n note?: string\r\n error?: string\r\n onChange?: IValueChangeFn\r\n className?: string\r\n defaultClassName?: string\r\n urlNavigable?: boolean\r\n inputOverrides?: Record<string, React.FC<IFieldInputProps>>\r\n header?: ReactNode\r\n footer?: ReactNode\r\n}\r\n\r\nconst FormStatus = (): ReactElement => {\r\n const { form, formValues } = useContext(FormContext)\r\n const status = calculateSectionStatus([form], formValues)\r\n\r\n return (\r\n <div className='flex flex-col gap-2 text-xs'>\r\n <p>{status[form.id]?.completed} of {status[form.id]?.total} total</p>\r\n <p>{status[form.id]?.requiredCompleted} of {status[form.id]?.requiredTotal} required</p>\r\n </div>\r\n )\r\n}\r\n\r\nexport const SchemaFormCreator = ({\r\n label,\r\n id,\r\n schema,\r\n formOverrides,\r\n formFieldOverrides,\r\n ...props\r\n}: Omit<IFormCreatorProps, 'form'> & {\r\n id?: string\r\n label?: string\r\n schema: JSONSchema6\r\n formOverrides?: IFormOverride[]\r\n formFieldOverrides?: IFormFieldOverride[][]\r\n}): ReactElement => {\r\n const form = formOverrides === undefined && formFieldOverrides === undefined\r\n ? schemaToFormObject(schema)\r\n : overridesAndSchemaToFormObject({\r\n formOverrides,\r\n formFieldOverrides,\r\n schema\r\n }) // Convert the JSON schema to a form object\r\n if (id !== undefined) {\r\n form.id = id\r\n }\r\n if (label !== undefined) {\r\n form.label = label\r\n }\r\n\r\n return (\r\n <>{\r\n form !== undefined\r\n ? <FormCreator form={form} {...props} />\r\n : <div className='p-5 bg-slate-200 text-xs'><Loader className='pt-20' /></div>\r\n }</>\r\n\r\n )\r\n}\r\n\r\nconst seedFormValuesWithDefaults = (form: IForm): IFormValues => {\r\n const formValues: IFormValues = {}\r\n getFieldsFromFormSection(form).forEach(field => {\r\n if (field.defaultValue !== undefined && getFieldValue(field, formValues) === undefined) {\r\n updateFormValuesWithFieldValueInPlace(field, field.defaultValue, formValues)\r\n }\r\n })\r\n return formValues\r\n}\r\n\r\nconst FormCreator = ({\r\n form,\r\n formValueState,\r\n note,\r\n error,\r\n onChange,\r\n className,\r\n defaultClassName = 'flex flex-col gap-8 flex-grow',\r\n urlNavigable = true,\r\n inputOverrides,\r\n schema,\r\n footer,\r\n header\r\n}: IFormCreatorProps): ReactElement => {\r\n const activeForm = copyAndAddPathToFields(form)\r\n const activeFormValues = structuredClone(formValueState?.[0] ?? {})\r\n getFieldsFromFormSection(activeForm).forEach(field => {\r\n if (field.defaultValue !== undefined && getFieldValue(field, activeFormValues) === undefined) {\r\n updateFormValuesWithFieldValueInPlace(field, field.defaultValue, activeFormValues)\r\n }\r\n })\r\n const [formValues, setFormValues] = formValueState ?? useState<IFormValues>(seedFormValuesWithDefaults(activeForm))\r\n\r\n activeForm.settings = {\r\n url_navigable: urlNavigable,\r\n ...activeForm.settings\r\n }\r\n\r\n return (\r\n <FormContext.Provider value={{\r\n form: activeForm,\r\n formValues,\r\n setFormValues,\r\n inputOverrides,\r\n schema,\r\n urlNavigable: activeForm.settings.url_navigable\r\n }}>\r\n {header ?? ''}\r\n <div className={utils.makeClassName({\r\n className: activeForm?.settings?.class_name,\r\n defaultClassName,\r\n extras: [className]\r\n })}>\r\n <FormHeader form={activeForm} note={note} error={error} />\r\n {\r\n activeForm?.fields !== undefined && activeForm.fields.length > 0 && activeForm.pages === undefined && activeForm.wizard_steps === undefined\r\n ? <FormStatus />\r\n : ''\r\n }\r\n <FormSection\r\n formSection={activeForm}\r\n onChange={onChange}\r\n />\r\n </div>\r\n {footer ?? ''}\r\n </FormContext.Provider>\r\n )\r\n}\r\n\r\nexport type IFormSectionStatus = Record<string, {\r\n completed: number\r\n total: number\r\n requiredTotal: number\r\n requiredCompleted: number\r\n valid: boolean\r\n}>\r\n\r\nexport default FormCreator\r\n"],"names":["React","utils"],"mappings":"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"}
@@ -2,7 +2,7 @@ import FieldCreator from '../Components/FieldCreator.js';
2
2
  import React__default from 'react';
3
3
 
4
4
  var FormFields = function (_a) {
5
- var fields = _a.fields, onChange = _a.onChange, _b = _a.className, className = _b === void 0 ? 'flex flex-col gap-2 flex-grow h-full' : _b;
5
+ var fields = _a.fields, onChange = _a.onChange, _b = _a.className, className = _b === void 0 ? 'flex flex-col gap-4 flex-grow h-full' : _b;
6
6
  return (React__default.createElement(React__default.Fragment, null, fields === undefined || fields.length < 1
7
7
  ? ''
8
8
  : React__default.createElement("div", { className: className }, fields === null || fields === void 0 ? void 0 : fields.map(function (field) {
@@ -1 +1 @@
1
- {"version":3,"file":"FormFields.js","sources":["../../../../../src/Form/Creator/FormFields.tsx"],"sourcesContent":["import FieldCreator from '@/Form/Components/FieldCreator'\r\nimport { type IFormField, type IValueChangeFn } from '@/Form/Creator/FormCreatorTypes'\r\nimport React, { type ReactElement } from 'react'\r\n\r\nconst FormFields = ({\r\n fields,\r\n onChange,\r\n className = 'flex flex-col gap-2 flex-grow h-full'\r\n}: {\r\n fields?: IFormField[]\r\n onChange?: IValueChangeFn\r\n className?: string\r\n}): ReactElement => {\r\n return (\r\n <>\r\n {\r\n fields === undefined || fields.length < 1\r\n ? ''\r\n : <div className={className}>\r\n {\r\n fields?.map((field) => {\r\n return (\r\n <FieldCreator onChange={onChange} field={field} key={field.id} />\r\n )\r\n })\r\n }\r\n </div>\r\n }\r\n </>\r\n )\r\n}\r\n\r\nexport default FormFields\r\n"],"names":["React"],"mappings":";;;AAIM,IAAA,UAAU,GAAG,UAAC,EAQnB,EAAA;QAPC,MAAM,GAAA,EAAA,CAAA,MAAA,EACN,QAAQ,GAAA,EAAA,CAAA,QAAA,EACR,iBAAkD,EAAlD,SAAS,GAAG,EAAA,KAAA,MAAA,GAAA,sCAAsC,GAAA,EAAA;IAMlD,QACIA,cAEE,CAAA,aAAA,CAAAA,cAAA,CAAA,QAAA,EAAA,IAAA,EAAA,MAAM,KAAK,SAAS,IAAI,MAAM,CAAC,MAAM,GAAG;AACtC,UAAE;AACF,UAAEA,cAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAE,SAAS,EAEvB,EAAA,MAAM,KAAN,IAAA,IAAA,MAAM,uBAAN,MAAM,CAAE,GAAG,CAAC,UAAC,KAAK,EAAA;AAChB,YAAA,QACEA,cAAC,CAAA,aAAA,CAAA,YAAY,IAAC,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,CAAC,EAAE,EAAA,CAAI;AAErE,SAAC,CAAC,CAEF,CAEL;AAET;;;;"}
1
+ {"version":3,"file":"FormFields.js","sources":["../../../../../src/Form/Creator/FormFields.tsx"],"sourcesContent":["import FieldCreator from '@/Form/Components/FieldCreator'\r\nimport { type IFormField, type IValueChangeFn } from '@/Form/Creator/FormCreatorTypes'\r\nimport React, { type ReactElement } from 'react'\r\n\r\nconst FormFields = ({\r\n fields,\r\n onChange,\r\n className = 'flex flex-col gap-4 flex-grow h-full'\r\n}: {\r\n fields?: IFormField[]\r\n onChange?: IValueChangeFn\r\n className?: string\r\n}): ReactElement => {\r\n return (\r\n <>\r\n {\r\n fields === undefined || fields.length < 1\r\n ? ''\r\n : <div className={className}>\r\n {\r\n fields?.map((field) => {\r\n return (\r\n <FieldCreator onChange={onChange} field={field} key={field.id} />\r\n )\r\n })\r\n }\r\n </div>\r\n }\r\n </>\r\n )\r\n}\r\n\r\nexport default FormFields\r\n"],"names":["React"],"mappings":";;;AAIM,IAAA,UAAU,GAAG,UAAC,EAQnB,EAAA;QAPC,MAAM,GAAA,EAAA,CAAA,MAAA,EACN,QAAQ,GAAA,EAAA,CAAA,QAAA,EACR,iBAAkD,EAAlD,SAAS,GAAG,EAAA,KAAA,MAAA,GAAA,sCAAsC,GAAA,EAAA;IAMlD,QACIA,cAEE,CAAA,aAAA,CAAAA,cAAA,CAAA,QAAA,EAAA,IAAA,EAAA,MAAM,KAAK,SAAS,IAAI,MAAM,CAAC,MAAM,GAAG;AACtC,UAAE;AACF,UAAEA,cAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAE,SAAS,EAEvB,EAAA,MAAM,KAAN,IAAA,IAAA,MAAM,uBAAN,MAAM,CAAE,GAAG,CAAC,UAAC,KAAK,EAAA;AAChB,YAAA,QACEA,cAAC,CAAA,aAAA,CAAA,YAAY,IAAC,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,CAAC,EAAE,EAAA,CAAI;AAErE,SAAC,CAAC,CAEF,CAEL;AAET;;;;"}
@@ -6,7 +6,8 @@ import { Markdown } from '../../../node_modules/react-markdown/lib/index.js';
6
6
  var FormHeader = function (_a) {
7
7
  var form = _a.form, note = _a.note, error = _a.error;
8
8
  return (React__default.createElement("div", { className: 'flex flex-col gap-4' },
9
- React__default.createElement("h2", { className: 'text-2xl font-bold' }, form.label),
9
+ React__default.createElement("h2", { className: 'text-2xl font-bold' },
10
+ React__default.createElement(InlineMarkdown, null, form.label)),
10
11
  note !== undefined
11
12
  ? React__default.createElement(Markdown, null, note)
12
13
  : null,
@@ -1 +1 @@
1
- {"version":3,"file":"FormHeader.js","sources":["../../../../../src/Form/Creator/FormHeader.tsx"],"sourcesContent":["import InlineMarkdown from '@/Form/Components/InlineMarkdown'\r\nimport type { IForm } from '@/library'\r\nimport { ExclamationTriangleIcon } from '@radix-ui/react-icons'\r\nimport React, { type ReactElement } from 'react'\r\nimport Markdown from 'react-markdown'\r\n\r\nconst FormHeader = ({\r\n form, note, error\r\n\r\n}: {\r\n form: IForm\r\n note?: string\r\n error?: string\r\n}): ReactElement => {\r\n return (\r\n <div className='flex flex-col gap-4'>\r\n <h2 className='text-2xl font-bold'>{form.label}</h2>\r\n {note !== undefined\r\n ? <Markdown>{note}</Markdown>\r\n : null}\r\n {error !== undefined\r\n ? <p className='pb-4 text-rose-800'><ExclamationTriangleIcon className='inline mr-2' /> <InlineMarkdown>{error}</InlineMarkdown></p>\r\n : null}\r\n {form.description !== undefined\r\n ? <Markdown>{form.description}</Markdown>\r\n : null}\r\n </div>\r\n )\r\n}\r\n\r\nexport default FormHeader\r\n"],"names":["React"],"mappings":";;;;;AAMM,IAAA,UAAU,GAAG,UAAC,EAOnB,EAAA;AANC,IAAA,IAAA,IAAI,UAAA,EAAE,IAAI,GAAA,EAAA,CAAA,IAAA,EAAE,KAAK,GAAA,EAAA,CAAA,KAAA;AAOjB,IAAA,QACEA,cAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,qBAAqB,EAAA;AAClC,QAAAA,cAAA,CAAA,aAAA,CAAA,IAAA,EAAA,EAAI,SAAS,EAAC,oBAAoB,IAAE,IAAI,CAAC,KAAK,CAAM;AACnD,QAAA,IAAI,KAAK;AACR,cAAEA,cAAA,CAAA,aAAA,CAAC,QAAQ,EAAA,IAAA,EAAE,IAAI;AACjB,cAAE,IAAI;AACP,QAAA,KAAK,KAAK;AACT,cAAEA,cAAA,CAAA,aAAA,CAAA,GAAA,EAAA,EAAG,SAAS,EAAC,oBAAoB,EAAA;AAAC,gBAAAA,cAAA,CAAA,aAAA,CAAC,uBAAuB,EAAA,EAAC,SAAS,EAAC,aAAa,EAAG,CAAA;;AAAC,gBAAAA,cAAA,CAAA,aAAA,CAAC,cAAc,EAAA,IAAA,EAAE,KAAK,CAAkB;AAChI,cAAE,IAAI;QACP,IAAI,CAAC,WAAW,KAAK;AACpB,cAAEA,cAAC,CAAA,aAAA,CAAA,QAAQ,QAAE,IAAI,CAAC,WAAW;AAC7B,cAAE,IAAI,CACJ;AAEV;;;;"}
1
+ {"version":3,"file":"FormHeader.js","sources":["../../../../../src/Form/Creator/FormHeader.tsx"],"sourcesContent":["import InlineMarkdown from '@/Form/Components/InlineMarkdown'\r\nimport type { IForm } from '@/library'\r\nimport { ExclamationTriangleIcon } from '@radix-ui/react-icons'\r\nimport React, { type ReactElement } from 'react'\r\nimport Markdown from 'react-markdown'\r\n\r\nconst FormHeader = ({\r\n form, note, error\r\n\r\n}: {\r\n form: IForm\r\n note?: string\r\n error?: string\r\n}): ReactElement => {\r\n return (\r\n <div className='flex flex-col gap-4'>\r\n <h2 className='text-2xl font-bold'><InlineMarkdown>{form.label}</InlineMarkdown></h2>\r\n {note !== undefined\r\n ? <Markdown>{note}</Markdown>\r\n : null}\r\n {error !== undefined\r\n ? <p className='pb-4 text-rose-800'><ExclamationTriangleIcon className='inline mr-2' /> <InlineMarkdown>{error}</InlineMarkdown></p>\r\n : null}\r\n {form.description !== undefined\r\n ? <Markdown>{form.description}</Markdown>\r\n : null}\r\n </div>\r\n )\r\n}\r\n\r\nexport default FormHeader\r\n"],"names":["React"],"mappings":";;;;;AAMM,IAAA,UAAU,GAAG,UAAC,EAOnB,EAAA;AANC,IAAA,IAAA,IAAI,UAAA,EAAE,IAAI,GAAA,EAAA,CAAA,IAAA,EAAE,KAAK,GAAA,EAAA,CAAA,KAAA;AAOjB,IAAA,QACEA,cAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,qBAAqB,EAAA;QAClCA,cAAI,CAAA,aAAA,CAAA,IAAA,EAAA,EAAA,SAAS,EAAC,oBAAoB,EAAA;AAAC,YAAAA,cAAA,CAAA,aAAA,CAAC,cAAc,EAAE,IAAA,EAAA,IAAI,CAAC,KAAK,CAAkB,CAAK;AACpF,QAAA,IAAI,KAAK;AACR,cAAEA,cAAA,CAAA,aAAA,CAAC,QAAQ,EAAA,IAAA,EAAE,IAAI;AACjB,cAAE,IAAI;AACP,QAAA,KAAK,KAAK;AACT,cAAEA,cAAA,CAAA,aAAA,CAAA,GAAA,EAAA,EAAG,SAAS,EAAC,oBAAoB,EAAA;AAAC,gBAAAA,cAAA,CAAA,aAAA,CAAC,uBAAuB,EAAA,EAAC,SAAS,EAAC,aAAa,EAAG,CAAA;;AAAC,gBAAAA,cAAA,CAAA,aAAA,CAAC,cAAc,EAAA,IAAA,EAAE,KAAK,CAAkB;AAChI,cAAE,IAAI;QACP,IAAI,CAAC,WAAW,KAAK;AACpB,cAAEA,cAAC,CAAA,aAAA,CAAA,QAAQ,QAAE,IAAI,CAAC,WAAW;AAC7B,cAAE,IAAI,CACJ;AAEV;;;;"}
@@ -35,7 +35,7 @@ var FormSection = function (_a) {
35
35
  ? React__default.createElement(WizardLayout, { sections: wizardSteps, onChange: onChange, level: level })
36
36
  : hasPages
37
37
  ? React__default.createElement(PageLayout, { sections: pages, onChange: onChange, level: level })
38
- : React__default.createElement(FormFields, { fields: fields, onChange: onChange })));
38
+ : React__default.createElement(FormFields, { fields: fields, onChange: onChange, className: level === 0 ? 'flex flex-col gap-8' : undefined })));
39
39
  };
40
40
 
41
41
  export { FormSection as default };
@@ -1 +1 @@
1
- {"version":3,"file":"FormSection.js","sources":["../../../../../src/Form/Creator/FormSection.tsx"],"sourcesContent":["import { type IFieldInputProps, type IFormSection, type IValueChangeFn } from '@/Form/Creator/FormCreatorTypes'\r\nimport FormFields from '@/Form/Creator/FormFields'\r\nimport PageLayout from '@/Form/Creator/Page'\r\nimport WizardLayout from '@/Form/Creator/Wizard'\r\nimport React, { type ReactElement } from 'react'\r\n\r\nconst FormSection = ({\r\n formSection,\r\n onChange,\r\n level = 0,\r\n inputOverrides\r\n}: {\r\n formSection?: IFormSection\r\n onChange?: IValueChangeFn\r\n level?: number\r\n inputOverrides?: Record<string, React.FC<IFieldInputProps>>\r\n\r\n}): ReactElement => {\r\n if (formSection === undefined) {\r\n return <></>\r\n }\r\n const pages = (formSection?.pages ?? []).slice()\r\n const fields = (formSection?.fields ?? []).slice()\r\n const wizardSteps = (formSection?.wizard_steps ?? []).slice()\r\n const hasPages = pages.length > 0\r\n const hasFields = fields.length > 0\r\n const hasWizardSteps = wizardSteps.length > 0\r\n if (hasPages && hasFields) {\r\n pages.unshift({\r\n id: 'default',\r\n label: 'Default',\r\n fields\r\n })\r\n }\r\n if ((hasPages || hasFields) && hasWizardSteps) {\r\n wizardSteps.unshift({\r\n id: 'default',\r\n order: -10,\r\n label: 'Default',\r\n pages,\r\n fields\r\n })\r\n }\r\n return (\r\n <>\r\n {\r\n hasWizardSteps\r\n ? <WizardLayout sections={wizardSteps} onChange={onChange} level={level} />\r\n\r\n : hasPages\r\n ? <PageLayout sections={pages} onChange={onChange} level={level} />\r\n : <FormFields fields={fields} onChange={onChange} />\r\n }\r\n </>\r\n )\r\n}\r\n\r\nexport default FormSection\r\n"],"names":["React"],"mappings":";;;;;AAMM,IAAA,WAAW,GAAG,UAAC,EAWpB,EAAA;;AAVC,IAAA,IAAA,WAAW,GAAA,EAAA,CAAA,WAAA,CAAA,CACX,QAAQ,GAAA,EAAA,CAAA,QAAA,CACR,CAAA,EAAA,GAAA,EAAA,CAAA,KAAS,CAAT,CAAA,KAAK,GAAG,EAAA,KAAA,MAAA,GAAA,CAAC,GAAA,EAAA,CAAA,CACK,EAAA,CAAA;AAQd,IAAA,IAAI,WAAW,KAAK,SAAS,EAAE;AAC7B,QAAA,OAAOA,2DAAK;;AAEd,IAAA,IAAM,KAAK,GAAG,CAAC,CAAA,EAAA,GAAA,WAAW,aAAX,WAAW,KAAA,MAAA,GAAA,MAAA,GAAX,WAAW,CAAE,KAAK,MAAI,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAA,EAAE,EAAE,KAAK,EAAE;AAChD,IAAA,IAAM,MAAM,GAAG,CAAC,CAAA,EAAA,GAAA,WAAW,aAAX,WAAW,KAAA,MAAA,GAAA,MAAA,GAAX,WAAW,CAAE,MAAM,MAAI,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAA,EAAE,EAAE,KAAK,EAAE;AAClD,IAAA,IAAM,WAAW,GAAG,CAAC,CAAA,EAAA,GAAA,WAAW,aAAX,WAAW,KAAA,MAAA,GAAA,MAAA,GAAX,WAAW,CAAE,YAAY,MAAI,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAA,EAAE,EAAE,KAAK,EAAE;AAC7D,IAAA,IAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC;AACjC,IAAA,IAAM,SAAS,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC;AACnC,IAAA,IAAM,cAAc,GAAG,WAAW,CAAC,MAAM,GAAG,CAAC;AAC7C,IAAA,IAAI,QAAQ,IAAI,SAAS,EAAE;QACzB,KAAK,CAAC,OAAO,CAAC;AACZ,YAAA,EAAE,EAAE,SAAS;AACb,YAAA,KAAK,EAAE,SAAS;AAChB,YAAA,MAAM,EAAA;AACP,SAAA,CAAC;;IAEJ,IAAI,CAAC,QAAQ,IAAI,SAAS,KAAK,cAAc,EAAE;QAC7C,WAAW,CAAC,OAAO,CAAC;AAClB,YAAA,EAAE,EAAE,SAAS;YACb,KAAK,EAAE,GAAG;AACV,YAAA,KAAK,EAAE,SAAS;AAChB,YAAA,KAAK,EAAA,KAAA;AACL,YAAA,MAAM,EAAA;AACP,SAAA,CAAC;;IAEJ,QACMA,4DAEI;AACE,UAAEA,cAAA,CAAA,aAAA,CAAC,YAAY,EAAA,EAAC,QAAQ,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAI;AAE3E,UAAE;AACA,cAAEA,cAAA,CAAA,aAAA,CAAC,UAAU,EAAA,EAAC,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAI;AACnE,cAAEA,cAAA,CAAA,aAAA,CAAC,UAAU,EAAA,EAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAI,CAAA,CAEzD;AAEX;;;;"}
1
+ {"version":3,"file":"FormSection.js","sources":["../../../../../src/Form/Creator/FormSection.tsx"],"sourcesContent":["import { type IFieldInputProps, type IFormSection, type IValueChangeFn } from '@/Form/Creator/FormCreatorTypes'\r\nimport FormFields from '@/Form/Creator/FormFields'\r\nimport PageLayout from '@/Form/Creator/Page'\r\nimport WizardLayout from '@/Form/Creator/Wizard'\r\nimport React, { type ReactElement } from 'react'\r\n\r\nconst FormSection = ({\r\n formSection,\r\n onChange,\r\n level = 0,\r\n inputOverrides\r\n}: {\r\n formSection?: IFormSection\r\n onChange?: IValueChangeFn\r\n level?: number\r\n inputOverrides?: Record<string, React.FC<IFieldInputProps>>\r\n\r\n}): ReactElement => {\r\n if (formSection === undefined) {\r\n return <></>\r\n }\r\n const pages = (formSection?.pages ?? []).slice()\r\n const fields = (formSection?.fields ?? []).slice()\r\n const wizardSteps = (formSection?.wizard_steps ?? []).slice()\r\n const hasPages = pages.length > 0\r\n const hasFields = fields.length > 0\r\n const hasWizardSteps = wizardSteps.length > 0\r\n if (hasPages && hasFields) {\r\n pages.unshift({\r\n id: 'default',\r\n label: 'Default',\r\n fields\r\n })\r\n }\r\n if ((hasPages || hasFields) && hasWizardSteps) {\r\n wizardSteps.unshift({\r\n id: 'default',\r\n order: -10,\r\n label: 'Default',\r\n pages,\r\n fields\r\n })\r\n }\r\n return (\r\n <>\r\n {\r\n hasWizardSteps\r\n ? <WizardLayout sections={wizardSteps} onChange={onChange} level={level} />\r\n\r\n : hasPages\r\n ? <PageLayout sections={pages} onChange={onChange} level={level} />\r\n : <FormFields\r\n fields={fields} onChange={onChange}\r\n className={level === 0 ? 'flex flex-col gap-8' : undefined}\r\n\r\n />\r\n }\r\n </>\r\n )\r\n}\r\n\r\nexport default FormSection\r\n"],"names":["React"],"mappings":";;;;;AAMM,IAAA,WAAW,GAAG,UAAC,EAWpB,EAAA;;AAVC,IAAA,IAAA,WAAW,GAAA,EAAA,CAAA,WAAA,CAAA,CACX,QAAQ,GAAA,EAAA,CAAA,QAAA,CACR,CAAA,EAAA,GAAA,EAAA,CAAA,KAAS,CAAT,CAAA,KAAK,GAAG,EAAA,KAAA,MAAA,GAAA,CAAC,GAAA,EAAA,CAAA,CACK,EAAA,CAAA;AAQd,IAAA,IAAI,WAAW,KAAK,SAAS,EAAE;AAC7B,QAAA,OAAOA,2DAAK;;AAEd,IAAA,IAAM,KAAK,GAAG,CAAC,CAAA,EAAA,GAAA,WAAW,aAAX,WAAW,KAAA,MAAA,GAAA,MAAA,GAAX,WAAW,CAAE,KAAK,MAAI,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAA,EAAE,EAAE,KAAK,EAAE;AAChD,IAAA,IAAM,MAAM,GAAG,CAAC,CAAA,EAAA,GAAA,WAAW,aAAX,WAAW,KAAA,MAAA,GAAA,MAAA,GAAX,WAAW,CAAE,MAAM,MAAI,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAA,EAAE,EAAE,KAAK,EAAE;AAClD,IAAA,IAAM,WAAW,GAAG,CAAC,CAAA,EAAA,GAAA,WAAW,aAAX,WAAW,KAAA,MAAA,GAAA,MAAA,GAAX,WAAW,CAAE,YAAY,MAAI,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAA,EAAE,EAAE,KAAK,EAAE;AAC7D,IAAA,IAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC;AACjC,IAAA,IAAM,SAAS,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC;AACnC,IAAA,IAAM,cAAc,GAAG,WAAW,CAAC,MAAM,GAAG,CAAC;AAC7C,IAAA,IAAI,QAAQ,IAAI,SAAS,EAAE;QACzB,KAAK,CAAC,OAAO,CAAC;AACZ,YAAA,EAAE,EAAE,SAAS;AACb,YAAA,KAAK,EAAE,SAAS;AAChB,YAAA,MAAM,EAAA;AACP,SAAA,CAAC;;IAEJ,IAAI,CAAC,QAAQ,IAAI,SAAS,KAAK,cAAc,EAAE;QAC7C,WAAW,CAAC,OAAO,CAAC;AAClB,YAAA,EAAE,EAAE,SAAS;YACb,KAAK,EAAE,GAAG;AACV,YAAA,KAAK,EAAE,SAAS;AAChB,YAAA,KAAK,EAAA,KAAA;AACL,YAAA,MAAM,EAAA;AACP,SAAA,CAAC;;IAEJ,QACMA,4DAEI;AACE,UAAEA,cAAA,CAAA,aAAA,CAAC,YAAY,EAAA,EAAC,QAAQ,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAI;AAE3E,UAAE;AACA,cAAEA,cAAA,CAAA,aAAA,CAAC,UAAU,EAAA,EAAC,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAI;AACnE,cAAEA,cAAA,CAAA,aAAA,CAAC,UAAU,EAAA,EACX,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAClC,SAAS,EAAE,KAAK,KAAK,CAAC,GAAG,qBAAqB,GAAG,SAAS,EAAA,CAExD,CAET;AAEX;;;;"}
@@ -70,11 +70,16 @@ var PageLayout = function (props) {
70
70
  return React__default.createElement(React__default.Fragment, null);
71
71
  }
72
72
  var urlNavigable = useFormContext().urlNavigable;
73
+ var url = new URL(window.location.href);
74
+ var parts = url.pathname.split('/');
75
+ var formParts = parts.slice(parts.length - props.level, parts.length);
73
76
  var params = ((_a = useParams()['*']) !== null && _a !== void 0 ? _a : '').split('/');
74
77
  var path = params.slice(0, props.level).join('/');
75
78
  var id = urlNavigable
76
79
  ? (params[props.level] && params[props.level] !== '') ? params[props.level] : ((_c = (_b = props.sections[0]) === null || _b === void 0 ? void 0 : _b.id) !== null && _c !== void 0 ? _c : null)
77
80
  : (_e = (_d = props.sections[0]) === null || _d === void 0 ? void 0 : _d.id) !== null && _e !== void 0 ? _e : null;
81
+ console.log(props);
82
+ console.log('Form parts:', formParts, 'Level:', props.level, 'Params:', params.join(','));
78
83
  return (React__default.createElement(FormSectionContextProvider, { path: path, id: id },
79
84
  React__default.createElement(PageLayoutContent, __assign({}, props))));
80
85
  };
@@ -84,8 +89,8 @@ var PageLayoutContent = function (_a) {
84
89
  if (sections === undefined) {
85
90
  return React__default.createElement(React__default.Fragment, null);
86
91
  }
87
- var _f = useFormContext(), setFormValues = _f.setFormValues, formValues = _f.formValues;
88
- var sectionStatus = calculateSectionStatus(sections, [formValues, setFormValues]);
92
+ var formValues = useFormContext().formValues;
93
+ var sectionStatus = calculateSectionStatus(sections, formValues);
89
94
  var activeId = useFormSectionContext().activeId;
90
95
  var formSection = (_b = sections === null || sections === void 0 ? void 0 : sections.find(function (s) { return s.id === activeId; })) !== null && _b !== void 0 ? _b : sections === null || sections === void 0 ? void 0 : sections[0];
91
96
  return (React__default.createElement("div", { className: className },