@axdspub/axiom-ui-forms 0.3.3 → 0.3.4

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 (118) hide show
  1. package/library/axiom-ui-forms.d.ts +32 -15
  2. package/library/esm/_virtual/index10.js +2 -2
  3. package/library/esm/_virtual/index11.js +2 -2
  4. package/library/esm/_virtual/index12.js +2 -2
  5. package/library/esm/_virtual/index4.js +2 -2
  6. package/library/esm/_virtual/index5.js +2 -2
  7. package/library/esm/_virtual/index9.js +2 -2
  8. package/library/esm/node_modules/@axdspub/axiom-maps/library/index.js +1 -1
  9. package/library/esm/node_modules/@axdspub/axiom-maps/library/openlayers/index.esm.js +1 -1
  10. package/library/esm/node_modules/@axdspub/axiom-maps/node_modules/@axdspub/axiom-ui-utilities/library/index.js +15219 -0
  11. package/library/esm/node_modules/@axdspub/axiom-maps/node_modules/@axdspub/axiom-ui-utilities/library/index.js.map +1 -0
  12. package/library/esm/node_modules/@axdspub/axiom-ui-utilities/library/index.js +122 -90
  13. package/library/esm/node_modules/@axdspub/axiom-ui-utilities/library/index.js.map +1 -1
  14. package/library/esm/node_modules/@radix-ui/react-icons/dist/react-icons.esm.js +23 -1
  15. package/library/esm/node_modules/@radix-ui/react-icons/dist/react-icons.esm.js.map +1 -1
  16. package/library/esm/node_modules/ajv/dist/compile/codegen/index.js +1 -1
  17. package/library/esm/node_modules/ajv/dist/compile/validate/index.js +1 -1
  18. package/library/esm/node_modules/ajv/dist/vocabularies/applicator/index.js +1 -1
  19. package/library/esm/node_modules/ajv/dist/vocabularies/core/index.js +1 -1
  20. package/library/esm/node_modules/ajv/dist/vocabularies/format/index.js +1 -1
  21. package/library/esm/node_modules/ajv/dist/vocabularies/validation/index.js +1 -1
  22. package/library/esm/node_modules/lodash-es/_SetCache.js +28 -0
  23. package/library/esm/node_modules/lodash-es/_SetCache.js.map +1 -0
  24. package/library/esm/node_modules/lodash-es/_arrayLikeKeys.js +8 -1
  25. package/library/esm/node_modules/lodash-es/_arrayLikeKeys.js.map +1 -1
  26. package/library/esm/node_modules/lodash-es/_arraySome.js +24 -0
  27. package/library/esm/node_modules/lodash-es/_arraySome.js.map +1 -0
  28. package/library/esm/node_modules/lodash-es/_baseIsEqual.js +29 -0
  29. package/library/esm/node_modules/lodash-es/_baseIsEqual.js.map +1 -0
  30. package/library/esm/node_modules/lodash-es/_baseIsEqualDeep.js +84 -0
  31. package/library/esm/node_modules/lodash-es/_baseIsEqualDeep.js.map +1 -0
  32. package/library/esm/node_modules/lodash-es/_baseKeys.js +31 -0
  33. package/library/esm/node_modules/lodash-es/_baseKeys.js.map +1 -0
  34. package/library/esm/node_modules/lodash-es/_baseTrim.js +20 -0
  35. package/library/esm/node_modules/lodash-es/_baseTrim.js.map +1 -0
  36. package/library/esm/node_modules/lodash-es/_cacheHas.js +14 -0
  37. package/library/esm/node_modules/lodash-es/_cacheHas.js.map +1 -0
  38. package/library/esm/node_modules/lodash-es/_equalArrays.js +85 -0
  39. package/library/esm/node_modules/lodash-es/_equalArrays.js.map +1 -0
  40. package/library/esm/node_modules/lodash-es/_equalByTag.js +113 -0
  41. package/library/esm/node_modules/lodash-es/_equalByTag.js.map +1 -0
  42. package/library/esm/node_modules/lodash-es/_equalObjects.js +91 -0
  43. package/library/esm/node_modules/lodash-es/_equalObjects.js.map +1 -0
  44. package/library/esm/node_modules/lodash-es/_getAllKeys.js +17 -0
  45. package/library/esm/node_modules/lodash-es/_getAllKeys.js.map +1 -0
  46. package/library/esm/node_modules/lodash-es/_mapToArray.js +19 -0
  47. package/library/esm/node_modules/lodash-es/_mapToArray.js.map +1 -0
  48. package/library/esm/node_modules/lodash-es/_nativeKeys.js +7 -0
  49. package/library/esm/node_modules/lodash-es/_nativeKeys.js.map +1 -0
  50. package/library/esm/node_modules/lodash-es/_setCacheAdd.js +20 -0
  51. package/library/esm/node_modules/lodash-es/_setCacheAdd.js.map +1 -0
  52. package/library/esm/node_modules/lodash-es/_setCacheHas.js +15 -0
  53. package/library/esm/node_modules/lodash-es/_setCacheHas.js.map +1 -0
  54. package/library/esm/node_modules/lodash-es/_setToArray.js +19 -0
  55. package/library/esm/node_modules/lodash-es/_setToArray.js.map +1 -0
  56. package/library/esm/node_modules/lodash-es/_trimmedEndIndex.js +20 -0
  57. package/library/esm/node_modules/lodash-es/_trimmedEndIndex.js.map +1 -0
  58. package/library/esm/node_modules/lodash-es/debounce.js +192 -0
  59. package/library/esm/node_modules/lodash-es/debounce.js.map +1 -0
  60. package/library/esm/node_modules/lodash-es/isEqual.js +36 -0
  61. package/library/esm/node_modules/lodash-es/isEqual.js.map +1 -0
  62. package/library/esm/node_modules/lodash-es/keys.js +38 -0
  63. package/library/esm/node_modules/lodash-es/keys.js.map +1 -0
  64. package/library/esm/node_modules/lodash-es/keysIn.js +1 -1
  65. package/library/esm/node_modules/lodash-es/keysIn.js.map +1 -1
  66. package/library/esm/node_modules/lodash-es/now.js +24 -0
  67. package/library/esm/node_modules/lodash-es/now.js.map +1 -0
  68. package/library/esm/node_modules/lodash-es/toNumber.js +65 -0
  69. package/library/esm/node_modules/lodash-es/toNumber.js.map +1 -0
  70. package/library/esm/src/Form/Components/FieldCreator.js +25 -14
  71. package/library/esm/src/Form/Components/FieldCreator.js.map +1 -1
  72. package/library/esm/src/Form/Components/FieldLabel.js +27 -13
  73. package/library/esm/src/Form/Components/FieldLabel.js.map +1 -1
  74. package/library/esm/src/Form/Components/InlineMarkdown.js +4 -0
  75. package/library/esm/src/Form/Components/InlineMarkdown.js.map +1 -1
  76. package/library/esm/src/Form/Components/Inputs/Boolean.js +4 -5
  77. package/library/esm/src/Form/Components/Inputs/Boolean.js.map +1 -1
  78. package/library/esm/src/Form/Components/Inputs/Date.js +3 -4
  79. package/library/esm/src/Form/Components/Inputs/Date.js.map +1 -1
  80. package/library/esm/src/Form/Components/Inputs/DateTime.js +3 -4
  81. package/library/esm/src/Form/Components/Inputs/DateTime.js.map +1 -1
  82. package/library/esm/src/Form/Components/Inputs/GeoJSON.js +5 -4
  83. package/library/esm/src/Form/Components/Inputs/GeoJSON.js.map +1 -1
  84. package/library/esm/src/Form/Components/Inputs/Geometry.js +20 -11
  85. package/library/esm/src/Form/Components/Inputs/Geometry.js.map +1 -1
  86. package/library/esm/src/Form/Components/Inputs/JSON.js +6 -5
  87. package/library/esm/src/Form/Components/Inputs/JSON.js.map +1 -1
  88. package/library/esm/src/Form/Components/Inputs/LongString.js +5 -5
  89. package/library/esm/src/Form/Components/Inputs/LongString.js.map +1 -1
  90. package/library/esm/src/Form/Components/Inputs/Number.js +48 -33
  91. package/library/esm/src/Form/Components/Inputs/Number.js.map +1 -1
  92. package/library/esm/src/Form/Components/Inputs/Object.js +16 -6
  93. package/library/esm/src/Form/Components/Inputs/Object.js.map +1 -1
  94. package/library/esm/src/Form/Components/Inputs/RadioGroup.js +2 -3
  95. package/library/esm/src/Form/Components/Inputs/RadioGroup.js.map +1 -1
  96. package/library/esm/src/Form/Components/Inputs/SingleSelect.js +2 -3
  97. package/library/esm/src/Form/Components/Inputs/SingleSelect.js.map +1 -1
  98. package/library/esm/src/Form/Components/Inputs/String.js +5 -11
  99. package/library/esm/src/Form/Components/Inputs/String.js.map +1 -1
  100. package/library/esm/src/Form/Components/Inputs/Time.js +2 -3
  101. package/library/esm/src/Form/Components/Inputs/Time.js.map +1 -1
  102. package/library/esm/src/Form/Creator/FormCreator.js +2 -2
  103. package/library/esm/src/Form/Creator/FormCreator.js.map +1 -1
  104. package/library/esm/src/Form/Creator/FormSection.js +1 -1
  105. package/library/esm/src/Form/Creator/FormSection.js.map +1 -1
  106. package/library/esm/src/Form/Creator/Page.js +7 -2
  107. package/library/esm/src/Form/Creator/Page.js.map +1 -1
  108. package/library/esm/src/Form/Creator/Wizard.js +3 -3
  109. package/library/esm/src/Form/Creator/Wizard.js.map +1 -1
  110. package/library/esm/src/utils/helpers.js +11 -0
  111. package/library/esm/src/utils/helpers.js.map +1 -0
  112. package/library/esm/src/utils/manipulators.js +4 -1
  113. package/library/esm/src/utils/manipulators.js.map +1 -1
  114. package/library/esm/src/utils/schemaToFormHelpers.js +2 -2
  115. package/library/esm/src/utils/schemaToFormHelpers.js.map +1 -1
  116. package/library/esm/src/utils/validators.js +82 -15
  117. package/library/esm/src/utils/validators.js.map +1 -1
  118. package/package.json +3 -3
@@ -1 +1 @@
1
- {"version":3,"file":"JSON.js","sources":["../../../../../../src/Form/Components/Inputs/JSON.tsx"],"sourcesContent":["import React, { type ReactElement, useEffect, useState } from 'react'\r\nimport CodeMirror from '@uiw/react-codemirror'\r\nimport { json } from '@codemirror/lang-json'\r\nimport { yaml } from '@codemirror/lang-yaml'\r\nimport { autocompletion } from '@codemirror/autocomplete'\r\nimport { EditorView } from '@codemirror/view'\r\nimport yamlParser from 'js-yaml'\r\nimport { Button } from '@axdspub/axiom-ui-utilities'\r\nimport { ExclamationTriangleIcon, UpdateIcon } from '@radix-ui/react-icons'\r\nimport { type IJSONField, type IFieldInputProps } from '@/Form/Creator/FormCreatorTypes'\r\nimport FieldLabel from '@/Form/Components/FieldLabel'\r\nimport { CopyButton } from '@/Form/Manage/CopyableJSONOutput'\r\n\r\nconst getFormatted = (val: string, fmt: string): string => {\r\n if (fmt === 'json') {\r\n const jsonObject = JSON.parse(val)\r\n return JSON.stringify(jsonObject, null, 2)\r\n } else {\r\n const yamlObject = yamlParser.load(val)\r\n return yamlParser.dump(yamlObject)\r\n }\r\n}\r\n\r\nconst tryGetFormatted = (val: string, fmt: string): string => {\r\n try {\r\n return getFormatted(val, fmt)\r\n } catch (error) {\r\n return val\r\n }\r\n}\r\n\r\nconst JsonYamlEditor = ({ field, onChange, value }: IFieldInputProps): ReactElement => {\r\n const jsonField = field as IJSONField\r\n const exportAsString = jsonField?.settings?.exportAsString ?? false\r\n const allowEmpty = jsonField?.settings?.allowEmpty ?? false\r\n const [format, setFormat] = useState<'json' | 'yaml'>('json')\r\n const [workingValue, setWorkingValue] = useState<string>('')\r\n const [error, setError] = useState<string | null>(null)\r\n const [hasFocus, setHasFocus] = useState(false)\r\n\r\n useEffect(() => {\r\n if (!hasFocus) {\r\n setWorkingValue(\r\n typeof value === 'object'\r\n ? JSON.stringify(value, null, 2)\r\n : (value !== undefined && value !== null\r\n ? tryGetFormatted(String(value), format)\r\n : allowEmpty\r\n ? ''\r\n : '{}'\r\n )\r\n )\r\n }\r\n }, [value])\r\n\r\n // Validate JSON and display error\r\n const validateJson = (val: string): boolean => {\r\n try {\r\n if (val.trim() === '') {\r\n setError(null)\r\n return true\r\n }\r\n JSON.parse(val)\r\n setError(null) // Clear error if valid\r\n return true\r\n } catch (err) {\r\n setError('Invalid JSON: ' + (err as Error).message)\r\n return false\r\n }\r\n }\r\n\r\n const validateYaml = (val: string): boolean => {\r\n try {\r\n if (val.trim() === '') {\r\n setError(null)\r\n return true\r\n }\r\n yamlParser.load(val)\r\n setError(null)\r\n return true\r\n } catch (err) {\r\n setError('Invalid YAML: ' + (err as Error).message)\r\n return false\r\n }\r\n }\r\n\r\n // Handle content change\r\n const handleChange = (val: string): void => {\r\n setWorkingValue(val)\r\n if (format === 'json') {\r\n if (validateJson(val)) {\r\n if (!allowEmpty && val.trim() === '') {\r\n val = '{}'\r\n }\r\n onChange(exportAsString ? val : JSON.parse(val))\r\n }\r\n } else if (format === 'yaml') {\r\n if (validateYaml(val)) {\r\n const json = JSON.stringify(val === '' && !allowEmpty ? '{}' : yamlParser.load(val), null, 2)\r\n if (validateJson(json)) {\r\n onChange(exportAsString ? json : JSON.parse(json))\r\n }\r\n }\r\n }\r\n }\r\n\r\n // Format JSON or YAML\r\n const handleFormat = (): void => {\r\n try {\r\n setWorkingValue(getFormatted(workingValue, format))\r\n setError(null)\r\n } catch (error) {\r\n setError('Formatting failed: Invalid data.')\r\n }\r\n }\r\n\r\n const updateFormat = (newFormat: 'json' | 'yaml'): void => {\r\n try {\r\n if (newFormat === 'yaml') {\r\n if (workingValue.trim() !== '') {\r\n const jsonObject = JSON.parse(workingValue)\r\n setWorkingValue(yamlParser.dump(jsonObject))\r\n }\r\n setFormat('yaml')\r\n setError(null)\r\n } else {\r\n if (workingValue.trim() !== '') {\r\n const yamlObject = yamlParser.load(workingValue)\r\n const jsonString = JSON.stringify(yamlObject, null, 2)\r\n setWorkingValue(jsonString)\r\n validateJson(jsonString)\r\n }\r\n setFormat('json')\r\n }\r\n } catch (error) {\r\n setError('Format conversion failed: Invalid data.')\r\n }\r\n }\r\n\r\n const btnClass = 'border-0 rounded-none'\r\n\r\n return (\r\n <div className='flex flex-col h-full relative'>\r\n <FieldLabel {...field} />\r\n <div className='flex flex-row'>\r\n <Button size='xs' disabled={error !== null} className={`${btnClass} ${format !== 'json' ? 'font-normal' : 'text-white bg-[#282c34]'}`} onClick={() => { updateFormat('json') }}>JSON</Button>\r\n <Button size='xs' disabled={error !== null} className={`${btnClass} ${format !== 'yaml' ? 'font-normal' : 'text-white bg-[#282c34]'}`} onClick={() => { updateFormat('yaml') }}>YAML</Button>\r\n <div className=\"ml-auto\">\r\n <Button size='xs' className={btnClass} onClick={() => { handleFormat() }}>Format <UpdateIcon className='inline w-3 h-3 -mt-1 ml-1' /></Button>\r\n </div>\r\n </div>\r\n\r\n {error && <p className=\"text-red-500 text-xs mb-2 absolute bg-white bg-opacity-90 max-w-[50%] p-2 right-0 z-40\"><ExclamationTriangleIcon className='inline w-3 h-3 -mt-1 mr-1' /> {error}</p>}\r\n <span className='absolute right-6 bottom-4 pointer-events-auto z-40'>\r\n <CopyButton string={\r\n error === null && workingValue !== ''\r\n ? format === 'json'\r\n ? JSON.stringify(JSON.parse(workingValue), null, 2)\r\n : yamlParser.dump(workingValue)\r\n : workingValue\r\n } className='white z-40' />\r\n </span>\r\n <div className='h-full flex-grow overflow-auto min-h-[300px]'>\r\n <CodeMirror\r\n value={format === 'yaml' && workingValue === '{}' ? '' : workingValue}\r\n extensions={[\r\n format === 'json' ? json() : yaml(),\r\n autocompletion(),\r\n EditorView.lineWrapping\r\n ]}\r\n height='100%'\r\n className='h-full'\r\n onChange={handleChange}\r\n theme=\"dark\"\r\n onFocus={() => {\r\n console.log('FOCUS')\r\n setHasFocus(true)\r\n }}\r\n onBlur={() => {\r\n console.log('BLUR')\r\n setHasFocus(false)\r\n }}\r\n />\r\n </div>\r\n </div>\r\n\r\n )\r\n}\r\n\r\nexport default JsonYamlEditor\r\n"],"names":["yamlParser","React","CodeMirror"],"mappings":"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"}
1
+ {"version":3,"file":"JSON.js","sources":["../../../../../../src/Form/Components/Inputs/JSON.tsx"],"sourcesContent":["import React, { type ReactElement, useEffect, useState } from 'react'\r\nimport CodeMirror from '@uiw/react-codemirror'\r\nimport { json } from '@codemirror/lang-json'\r\nimport { yaml } from '@codemirror/lang-yaml'\r\nimport { autocompletion } from '@codemirror/autocomplete'\r\nimport { EditorView } from '@codemirror/view'\r\nimport yamlParser from 'js-yaml'\r\nimport { Button } from '@axdspub/axiom-ui-utilities'\r\nimport { ExclamationTriangleIcon, UpdateIcon } from '@radix-ui/react-icons'\r\nimport { type IJSONField, type IFieldInputProps } from '@/Form/Creator/FormCreatorTypes'\r\nimport FieldLabel from '@/Form/Components/FieldLabel'\r\nimport { CopyButton } from '@/Form/Manage/CopyableJSONOutput'\r\nimport { debounce } from 'lodash-es'\r\n\r\nconst getFormatted = (val: string, fmt: string): string => {\r\n if (fmt === 'json') {\r\n const jsonObject = JSON.parse(val)\r\n return JSON.stringify(jsonObject, null, 2)\r\n } else {\r\n const yamlObject = yamlParser.load(val)\r\n return yamlParser.dump(yamlObject)\r\n }\r\n}\r\n\r\nconst tryGetFormatted = (val: string, fmt: string): string => {\r\n try {\r\n return getFormatted(val, fmt)\r\n } catch (error) {\r\n return val\r\n }\r\n}\r\n\r\nconst JsonYamlEditor = ({ field, onChange, value, disabled }: IFieldInputProps): ReactElement => {\r\n const jsonField = field as IJSONField\r\n const exportAsString = jsonField?.settings?.exportAsString ?? false\r\n const allowEmpty = jsonField?.settings?.allowEmpty ?? false\r\n const [format, setFormat] = useState<'json' | 'yaml'>('json')\r\n const [workingValue, setWorkingValue] = useState<string>('')\r\n const [error, setError] = useState<string | null>(null)\r\n const [hasFocus, setHasFocus] = useState(false)\r\n\r\n useEffect(() => {\r\n if (!hasFocus) {\r\n setWorkingValue(\r\n typeof value === 'object'\r\n ? JSON.stringify(value, null, 2)\r\n : (value !== undefined && value !== null\r\n ? tryGetFormatted(String(value), format)\r\n : allowEmpty\r\n ? ''\r\n : '{}'\r\n )\r\n )\r\n }\r\n }, [value])\r\n\r\n // Validate JSON and display error\r\n const validateJson = (val: string): boolean => {\r\n try {\r\n if (val.trim() === '') {\r\n setError(null)\r\n return true\r\n }\r\n JSON.parse(val)\r\n setError(null) // Clear error if valid\r\n return true\r\n } catch (err) {\r\n setError('Invalid JSON: ' + (err as Error).message)\r\n return false\r\n }\r\n }\r\n\r\n const validateYaml = (val: string): boolean => {\r\n try {\r\n if (val.trim() === '') {\r\n setError(null)\r\n return true\r\n }\r\n yamlParser.load(val)\r\n setError(null)\r\n return true\r\n } catch (err) {\r\n setError('Invalid YAML: ' + (err as Error).message)\r\n return false\r\n }\r\n }\r\n\r\n // Handle content change\r\n const handleChange = (val: string): void => {\r\n setWorkingValue(val)\r\n if (format === 'json') {\r\n if (validateJson(val)) {\r\n if (!allowEmpty && val.trim() === '') {\r\n val = '{}'\r\n }\r\n onChange(exportAsString ? val : JSON.parse(val))\r\n }\r\n } else if (format === 'yaml') {\r\n if (validateYaml(val)) {\r\n const json = JSON.stringify(val === '' && !allowEmpty ? '{}' : yamlParser.load(val), null, 2)\r\n if (validateJson(json)) {\r\n onChange(exportAsString ? json : JSON.parse(json))\r\n }\r\n }\r\n }\r\n }\r\n\r\n const debounced = debounce(handleChange, 500)\r\n\r\n // Format JSON or YAML\r\n const handleFormat = (): void => {\r\n try {\r\n setWorkingValue(getFormatted(workingValue, format))\r\n setError(null)\r\n } catch (error) {\r\n setError('Formatting failed: Invalid data.')\r\n }\r\n }\r\n\r\n const updateFormat = (newFormat: 'json' | 'yaml'): void => {\r\n try {\r\n if (newFormat === 'yaml') {\r\n if (workingValue.trim() !== '') {\r\n const jsonObject = JSON.parse(workingValue)\r\n setWorkingValue(yamlParser.dump(jsonObject))\r\n }\r\n setFormat('yaml')\r\n setError(null)\r\n } else {\r\n if (workingValue.trim() !== '') {\r\n const yamlObject = yamlParser.load(workingValue)\r\n const jsonString = JSON.stringify(yamlObject, null, 2)\r\n setWorkingValue(jsonString)\r\n validateJson(jsonString)\r\n }\r\n setFormat('json')\r\n }\r\n } catch (error) {\r\n setError('Format conversion failed: Invalid data.')\r\n }\r\n }\r\n\r\n const btnClass = 'border-0 rounded-none'\r\n\r\n return (\r\n <div className='flex flex-col h-full relative'>\r\n <FieldLabel field={field} disabled={disabled} value={value} onChange={onChange} />\r\n <div className='flex flex-row'>\r\n <Button size='xs' disabled={error !== null} className={`${btnClass} ${format !== 'json' ? 'font-normal' : 'text-white bg-[#282c34]'}`} onClick={() => { updateFormat('json') }}>JSON</Button>\r\n <Button size='xs' disabled={error !== null} className={`${btnClass} ${format !== 'yaml' ? 'font-normal' : 'text-white bg-[#282c34]'}`} onClick={() => { updateFormat('yaml') }}>YAML</Button>\r\n <div className=\"ml-auto\">\r\n <Button size='xs' className={btnClass} onClick={() => { handleFormat() }}>Format <UpdateIcon className='inline w-3 h-3 -mt-1 ml-1' /></Button>\r\n </div>\r\n </div>\r\n\r\n {error && <p className=\"text-red-500 text-xs mb-2 absolute bg-white bg-opacity-90 max-w-[50%] p-2 right-0 z-40\"><ExclamationTriangleIcon className='inline w-3 h-3 -mt-1 mr-1' /> {error}</p>}\r\n <span className='absolute right-6 bottom-4 pointer-events-auto z-40'>\r\n <CopyButton string={\r\n error === null && workingValue !== ''\r\n ? format === 'json'\r\n ? JSON.stringify(JSON.parse(workingValue), null, 2)\r\n : yamlParser.dump(workingValue)\r\n : workingValue\r\n } className='white z-40' />\r\n </span>\r\n <div className='h-full flex-grow overflow-auto min-h-[300px]'>\r\n <CodeMirror\r\n readOnly={disabled}\r\n value={format === 'yaml' && workingValue === '{}' ? '' : workingValue}\r\n extensions={[\r\n format === 'json' ? json() : yaml(),\r\n autocompletion(),\r\n EditorView.lineWrapping\r\n ]}\r\n height='100%'\r\n className='h-full'\r\n onChange={debounced}\r\n theme=\"dark\"\r\n onFocus={() => {\r\n console.log('FOCUS')\r\n setHasFocus(true)\r\n }}\r\n onBlur={() => {\r\n console.log('BLUR')\r\n setHasFocus(false)\r\n }}\r\n />\r\n </div>\r\n </div>\r\n\r\n )\r\n}\r\n\r\nexport default JsonYamlEditor\r\n"],"names":["yamlParser","React","CodeMirror"],"mappings":";;;;;;;;;;;;;AAcA,IAAM,YAAY,GAAG,UAAC,GAAW,EAAE,GAAW,EAAA;AAC5C,IAAA,IAAI,GAAG,KAAK,MAAM,EAAE;QAClB,IAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;QAClC,OAAO,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC;;SACrC;QACL,IAAM,UAAU,GAAGA,MAAU,CAAC,IAAI,CAAC,GAAG,CAAC;AACvC,QAAA,OAAOA,MAAU,CAAC,IAAI,CAAC,UAAU,CAAC;;AAEtC,CAAC;AAED,IAAM,eAAe,GAAG,UAAC,GAAW,EAAE,GAAW,EAAA;AAC/C,IAAA,IAAI;AACF,QAAA,OAAO,YAAY,CAAC,GAAG,EAAE,GAAG,CAAC;;IAC7B,OAAO,KAAK,EAAE;AACd,QAAA,OAAO,GAAG;;AAEd,CAAC;AAEK,IAAA,cAAc,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;IACxD,IAAM,SAAS,GAAG,KAAmB;AACrC,IAAA,IAAM,cAAc,GAAG,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,SAAS,KAAT,IAAA,IAAA,SAAS,KAAT,MAAA,GAAA,MAAA,GAAA,SAAS,CAAE,QAAQ,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAE,cAAc,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAI,KAAK;AACnE,IAAA,IAAM,UAAU,GAAG,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,SAAS,KAAT,IAAA,IAAA,SAAS,KAAT,MAAA,GAAA,MAAA,GAAA,SAAS,CAAE,QAAQ,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAE,UAAU,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAI,KAAK;IACrD,IAAA,EAAA,GAAsB,QAAQ,CAAkB,MAAM,CAAC,EAAtD,MAAM,GAAA,EAAA,CAAA,CAAA,CAAA,EAAE,SAAS,GAAA,EAAA,CAAA,CAAA,CAAqC;IACvD,IAAA,EAAA,GAAkC,QAAQ,CAAS,EAAE,CAAC,EAArD,YAAY,GAAA,EAAA,CAAA,CAAA,CAAA,EAAE,eAAe,GAAA,EAAA,CAAA,CAAA,CAAwB;IACtD,IAAA,EAAA,GAAoB,QAAQ,CAAgB,IAAI,CAAC,EAAhD,KAAK,GAAA,EAAA,CAAA,CAAA,CAAA,EAAE,QAAQ,GAAA,EAAA,CAAA,CAAA,CAAiC;IACjD,IAAA,EAAA,GAA0B,QAAQ,CAAC,KAAK,CAAC,EAAxC,QAAQ,GAAA,EAAA,CAAA,CAAA,CAAA,EAAE,WAAW,GAAA,EAAA,CAAA,CAAA,CAAmB;AAE/C,IAAA,SAAS,CAAC,YAAA;QACR,IAAI,CAAC,QAAQ,EAAE;AACb,YAAA,eAAe,CACb,OAAO,KAAK,KAAK;kBACb,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC;mBAC5B,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK;sBAC9B,eAAe,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,MAAM;AACvC,sBAAE;AACA,0BAAE;AACF,0BAAE,IAAI,CACT,CACN;;AAEL,KAAC,EAAE,CAAC,KAAK,CAAC,CAAC;;IAGX,IAAM,YAAY,GAAG,UAAC,GAAW,EAAA;AAC/B,QAAA,IAAI;AACF,YAAA,IAAI,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;gBACrB,QAAQ,CAAC,IAAI,CAAC;AACd,gBAAA,OAAO,IAAI;;AAEb,YAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;AACf,YAAA,QAAQ,CAAC,IAAI,CAAC,CAAA;AACd,YAAA,OAAO,IAAI;;QACX,OAAO,GAAG,EAAE;AACZ,YAAA,QAAQ,CAAC,gBAAgB,GAAI,GAAa,CAAC,OAAO,CAAC;AACnD,YAAA,OAAO,KAAK;;AAEhB,KAAC;IAED,IAAM,YAAY,GAAG,UAAC,GAAW,EAAA;AAC/B,QAAA,IAAI;AACF,YAAA,IAAI,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;gBACrB,QAAQ,CAAC,IAAI,CAAC;AACd,gBAAA,OAAO,IAAI;;AAEb,YAAAA,MAAU,CAAC,IAAI,CAAC,GAAG,CAAC;YACpB,QAAQ,CAAC,IAAI,CAAC;AACd,YAAA,OAAO,IAAI;;QACX,OAAO,GAAG,EAAE;AACZ,YAAA,QAAQ,CAAC,gBAAgB,GAAI,GAAa,CAAC,OAAO,CAAC;AACnD,YAAA,OAAO,KAAK;;AAEhB,KAAC;;IAGD,IAAM,YAAY,GAAG,UAAC,GAAW,EAAA;QAC/B,eAAe,CAAC,GAAG,CAAC;AACpB,QAAA,IAAI,MAAM,KAAK,MAAM,EAAE;AACrB,YAAA,IAAI,YAAY,CAAC,GAAG,CAAC,EAAE;gBACrB,IAAI,CAAC,UAAU,IAAI,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;oBACpC,GAAG,GAAG,IAAI;;AAEZ,gBAAA,QAAQ,CAAC,cAAc,GAAG,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;;;AAE7C,aAAA,IAAI,MAAM,KAAK,MAAM,EAAE;AAC5B,YAAA,IAAI,YAAY,CAAC,GAAG,CAAC,EAAE;AACrB,gBAAA,IAAM,MAAI,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,KAAK,EAAE,IAAI,CAAC,UAAU,GAAG,IAAI,GAAGA,MAAU,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;AAC7F,gBAAA,IAAI,YAAY,CAAC,MAAI,CAAC,EAAE;AACtB,oBAAA,QAAQ,CAAC,cAAc,GAAG,MAAI,GAAG,IAAI,CAAC,KAAK,CAAC,MAAI,CAAC,CAAC;;;;AAI1D,KAAC;IAED,IAAM,SAAS,GAAG,QAAQ,CAAC,YAAY,EAAE,GAAG,CAAC;;AAG7C,IAAA,IAAM,YAAY,GAAG,YAAA;AACnB,QAAA,IAAI;YACF,eAAe,CAAC,YAAY,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;YACnD,QAAQ,CAAC,IAAI,CAAC;;QACd,OAAO,KAAK,EAAE;YACd,QAAQ,CAAC,kCAAkC,CAAC;;AAEhD,KAAC;IAED,IAAM,YAAY,GAAG,UAAC,SAA0B,EAAA;AAC9C,QAAA,IAAI;AACF,YAAA,IAAI,SAAS,KAAK,MAAM,EAAE;AACxB,gBAAA,IAAI,YAAY,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;oBAC9B,IAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC;oBAC3C,eAAe,CAACA,MAAU,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;;gBAE9C,SAAS,CAAC,MAAM,CAAC;gBACjB,QAAQ,CAAC,IAAI,CAAC;;iBACT;AACL,gBAAA,IAAI,YAAY,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;oBAC9B,IAAM,UAAU,GAAGA,MAAU,CAAC,IAAI,CAAC,YAAY,CAAC;AAChD,oBAAA,IAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC;oBACtD,eAAe,CAAC,UAAU,CAAC;oBAC3B,YAAY,CAAC,UAAU,CAAC;;gBAE1B,SAAS,CAAC,MAAM,CAAC;;;QAEnB,OAAO,KAAK,EAAE;YACd,QAAQ,CAAC,yCAAyC,CAAC;;AAEvD,KAAC;IAED,IAAM,QAAQ,GAAG,uBAAuB;AAExC,IAAA,QACEC,cAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,+BAA+B,EAAA;AAC5C,QAAAA,cAAA,CAAA,aAAA,CAAC,UAAU,EAAC,EAAA,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAI,CAAA;QAClFA,cAAK,CAAA,aAAA,CAAA,KAAA,EAAA,EAAA,SAAS,EAAC,eAAe,EAAA;AAC5B,YAAAA,cAAA,CAAA,aAAA,CAAC,MAAM,EAAC,EAAA,IAAI,EAAC,IAAI,EAAC,QAAQ,EAAE,KAAK,KAAK,IAAI,EAAE,SAAS,EAAE,UAAG,QAAQ,EAAA,GAAA,CAAA,CAAA,MAAA,CAAI,MAAM,KAAK,MAAM,GAAG,aAAa,GAAG,yBAAyB,CAAE,EAAE,OAAO,EAAE,YAAA,EAAQ,YAAY,CAAC,MAAM,CAAC,CAAA,EAAE,EAAe,EAAA,MAAA,CAAA;AAC7L,YAAAA,cAAA,CAAA,aAAA,CAAC,MAAM,EAAC,EAAA,IAAI,EAAC,IAAI,EAAC,QAAQ,EAAE,KAAK,KAAK,IAAI,EAAE,SAAS,EAAE,UAAG,QAAQ,EAAA,GAAA,CAAA,CAAA,MAAA,CAAI,MAAM,KAAK,MAAM,GAAG,aAAa,GAAG,yBAAyB,CAAE,EAAE,OAAO,EAAE,YAAA,EAAQ,YAAY,CAAC,MAAM,CAAC,CAAA,EAAE,EAAe,EAAA,MAAA,CAAA;YAC7LA,cAAK,CAAA,aAAA,CAAA,KAAA,EAAA,EAAA,SAAS,EAAC,SAAS,EAAA;AACxB,gBAAAA,cAAA,CAAA,aAAA,CAAC,MAAM,EAAC,EAAA,IAAI,EAAC,IAAI,EAAC,SAAS,EAAE,QAAQ,EAAE,OAAO,EAAE,YAAA,EAAQ,YAAY,EAAE,CAAA,EAAE,EAAA;;oBAASA,cAAC,CAAA,aAAA,CAAA,UAAU,IAAC,SAAS,EAAC,2BAA2B,EAAG,CAAA,CAAS,CACxI,CACF;AAEL,QAAA,KAAK,IAAIA,cAAA,CAAA,aAAA,CAAA,GAAA,EAAA,EAAG,SAAS,EAAC,wFAAwF,EAAA;AAAC,YAAAA,cAAA,CAAA,aAAA,CAAC,uBAAuB,EAAA,EAAC,SAAS,EAAC,2BAA2B,EAAG,CAAA;;AAAE,YAAA,KAAK,CAAK;QAC7LA,cAAM,CAAA,aAAA,CAAA,MAAA,EAAA,EAAA,SAAS,EAAC,oDAAoD,EAAA;YAClEA,cAAC,CAAA,aAAA,CAAA,UAAU,EAAC,EAAA,MAAM,EAChB,KAAK,KAAK,IAAI,IAAI,YAAY,KAAK;sBAC/B,MAAM,KAAK;AACX,0BAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE,IAAI,EAAE,CAAC;AAClD,0BAAED,MAAU,CAAC,IAAI,CAAC,YAAY;AAChC,sBAAE,YAAY,EAChB,SAAS,EAAC,YAAY,GAAG,CACpB;QACTC,cAAK,CAAA,aAAA,CAAA,KAAA,EAAA,EAAA,SAAS,EAAC,8CAA8C,EAAA;YAC7DA,cAAC,CAAA,aAAA,CAAAC,eAAU,EACT,EAAA,QAAQ,EAAE,QAAQ,EAClB,KAAK,EAAE,MAAM,KAAK,MAAM,IAAI,YAAY,KAAK,IAAI,GAAG,EAAE,GAAG,YAAY,EACrE,UAAU,EAAE;oBACV,MAAM,KAAK,MAAM,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE;AACnC,oBAAA,cAAc,EAAE;AAChB,oBAAA,UAAU,CAAC;AACZ,iBAAA,EACD,MAAM,EAAC,MAAM,EACb,SAAS,EAAC,QAAQ,EAClB,QAAQ,EAAE,SAAS,EACnB,KAAK,EAAC,MAAM,EACZ,OAAO,EAAE,YAAA;AACP,oBAAA,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC;oBACpB,WAAW,CAAC,IAAI,CAAC;iBAClB,EACD,MAAM,EAAE,YAAA;AACN,oBAAA,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC;oBACnB,WAAW,CAAC,KAAK,CAAC;AACpB,iBAAC,EACD,CAAA,CACI,CACA;AAGZ;;;;"}
@@ -1,18 +1,18 @@
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 { TextArea } from '../../../../node_modules/@axdspub/axiom-ui-utilities/library/index.js';
4
4
  import React__default from 'react';
5
5
 
6
6
  var LongStringInput = function (_a) {
7
- var field = _a.field, onChange = _a.onChange, value = _a.value, className = _a.className;
7
+ var field = _a.field, onChange = _a.onChange, value = _a.value, className = _a.className, disabled = _a.disabled;
8
8
  var initialValue = value !== undefined ? value : '';
9
+ var textField = field;
9
10
  var getValue = function () {
10
11
  return initialValue !== undefined && initialValue !== null ? String(initialValue) : '';
11
12
  };
13
+ var debounced = createTextFieldDebounce(onChange, 200);
12
14
  return React__default.createElement("div", null,
13
- React__default.createElement(TextArea, { className: className, id: field.id, testId: field.id, label: React__default.createElement(FieldLabel, __assign({}, field)), value: getValue(), onChange: function (e) {
14
- onChange(e);
15
- } }));
15
+ React__default.createElement(TextArea, { className: className, id: field.id, testId: field.id, label: React__default.createElement(FieldLabel, { field: field, disabled: disabled, value: value, onChange: onChange }), placeholder: textField.placeholder, value: getValue(), onChange: debounced }));
16
16
  };
17
17
 
18
18
  export { LongStringInput as default };
@@ -1 +1 @@
1
- {"version":3,"file":"LongString.js","sources":["../../../../../../src/Form/Components/Inputs/LongString.tsx"],"sourcesContent":["import FieldLabel from '@/Form/Components/FieldLabel'\r\nimport { type IFieldInputProps } from '@/Form/Creator/FormCreatorTypes'\r\nimport { TextArea } from '@axdspub/axiom-ui-utilities'\r\nimport React, { type ReactElement } from 'react'\r\n\r\nconst LongStringInput = ({ field, onChange, value, className }: IFieldInputProps): ReactElement => {\r\n const initialValue = value !== undefined ? value : ''\r\n const getValue = (): string => {\r\n return initialValue !== undefined && initialValue !== null ? String(initialValue) : ''\r\n }\r\n return <div>\r\n <TextArea\r\n className={className}\r\n id={field.id}\r\n testId={field.id}\r\n label={<FieldLabel {...field} />}\r\n value={getValue()}\r\n onChange={(e) => {\r\n onChange(e)\r\n }} /></div>\r\n}\r\n\r\nexport default LongStringInput\r\n"],"names":["React"],"mappings":";;;;;AAKM,IAAA,eAAe,GAAG,UAAC,EAAuD,EAAA;QAArD,KAAK,GAAA,EAAA,CAAA,KAAA,EAAE,QAAQ,GAAA,EAAA,CAAA,QAAA,EAAE,KAAK,GAAA,EAAA,CAAA,KAAA,EAAE,SAAS,GAAA,EAAA,CAAA,SAAA;AAC1D,IAAA,IAAM,YAAY,GAAG,KAAK,KAAK,SAAS,GAAG,KAAK,GAAG,EAAE;AACrD,IAAA,IAAM,QAAQ,GAAG,YAAA;AACf,QAAA,OAAO,YAAY,KAAK,SAAS,IAAI,YAAY,KAAK,IAAI,GAAG,MAAM,CAAC,YAAY,CAAC,GAAG,EAAE;AACxF,KAAC;IACD,OAAOA,cAAA,CAAA,aAAA,CAAA,KAAA,EAAA,IAAA;AACH,QAAAA,cAAA,CAAA,aAAA,CAAC,QAAQ,EAAA,EACP,SAAS,EAAE,SAAS,EACpB,EAAE,EAAE,KAAK,CAAC,EAAE,EACZ,MAAM,EAAE,KAAK,CAAC,EAAE,EAChB,KAAK,EAAEA,cAAA,CAAA,aAAA,CAAC,UAAU,EAAA,QAAA,CAAA,EAAA,EAAK,KAAK,CAAI,CAAA,EAChC,KAAK,EAAE,QAAQ,EAAE,EACjB,QAAQ,EAAE,UAAC,CAAC,EAAA;gBACV,QAAQ,CAAC,CAAC,CAAC;aACZ,EAAA,CAAI,CAAM;AACnB;;;;"}
1
+ {"version":3,"file":"LongString.js","sources":["../../../../../../src/Form/Components/Inputs/LongString.tsx"],"sourcesContent":["import FieldLabel from '@/Form/Components/FieldLabel'\r\nimport { type ITextField, type IFieldInputProps } from '@/Form/Creator/FormCreatorTypes'\r\nimport { createTextFieldDebounce } from '@/utils/helpers'\r\nimport { TextArea } from '@axdspub/axiom-ui-utilities'\r\nimport React, { type ReactElement } from 'react'\r\n\r\nconst LongStringInput = ({ field, onChange, value, className, disabled }: IFieldInputProps): ReactElement => {\r\n const initialValue = value !== undefined ? value : ''\r\n const textField = field as ITextField\r\n const getValue = (): string => {\r\n return initialValue !== undefined && initialValue !== null ? String(initialValue) : ''\r\n }\r\n const debounced = createTextFieldDebounce(onChange, 200)\r\n return <div>\r\n <TextArea\r\n className={className}\r\n id={field.id}\r\n testId={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 placeholder={textField.placeholder}\r\n value={getValue()}\r\n onChange={debounced} /></div>\r\n}\r\n\r\nexport default LongStringInput\r\n"],"names":["React"],"mappings":";;;;;AAMM,IAAA,eAAe,GAAG,UAAC,EAAiE,EAAA;AAA/D,IAAA,IAAA,KAAK,GAAA,EAAA,CAAA,KAAA,EAAE,QAAQ,GAAA,EAAA,CAAA,QAAA,EAAE,KAAK,GAAA,EAAA,CAAA,KAAA,EAAE,SAAS,GAAA,EAAA,CAAA,SAAA,EAAE,QAAQ,GAAA,EAAA,CAAA,QAAA;AACpE,IAAA,IAAM,YAAY,GAAG,KAAK,KAAK,SAAS,GAAG,KAAK,GAAG,EAAE;IACrD,IAAM,SAAS,GAAG,KAAmB;AACrC,IAAA,IAAM,QAAQ,GAAG,YAAA;AACf,QAAA,OAAO,YAAY,KAAK,SAAS,IAAI,YAAY,KAAK,IAAI,GAAG,MAAM,CAAC,YAAY,CAAC,GAAG,EAAE;AACxF,KAAC;IACD,IAAM,SAAS,GAAG,uBAAuB,CAAC,QAAQ,EAAE,GAAG,CAAC;IACxD,OAAOA,cAAA,CAAA,aAAA,CAAA,KAAA,EAAA,IAAA;QACHA,cAAC,CAAA,aAAA,CAAA,QAAQ,EACP,EAAA,SAAS,EAAE,SAAS,EACpB,EAAE,EAAE,KAAK,CAAC,EAAE,EACZ,MAAM,EAAE,KAAK,CAAC,EAAE,EAChB,KAAK,EAAEA,cAAC,CAAA,aAAA,CAAA,UAAU,EAChB,EAAA,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,QAAQ,EAClB,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,QAAQ,EAAA,CAClB,EACF,WAAW,EAAE,SAAS,CAAC,WAAW,EAClC,KAAK,EAAE,QAAQ,EAAE,EACjB,QAAQ,EAAE,SAAS,EAAI,CAAA,CAAM;AACrC;;;;"}
@@ -2,7 +2,7 @@ import { __assign } from '../../../../node_modules/tslib/tslib.es6.js';
2
2
  import FieldLabel, { FieldLabelText, FieldDescriptionTooltip } from '../FieldLabel.js';
3
3
  import { Checkbox, Slider as SliderSingle, Input } from '../../../../node_modules/@axdspub/axiom-ui-utilities/library/index.js';
4
4
  import { Pencil1Icon, Cross2Icon, CheckIcon } from '../../../../node_modules/@radix-ui/react-icons/dist/react-icons.esm.js';
5
- import React__default, { useState } from 'react';
5
+ import React__default, { useState, useEffect } from 'react';
6
6
 
7
7
  var isValidNumber = function (value) {
8
8
  if (value === undefined || value === null || value === '') {
@@ -12,7 +12,10 @@ var isValidNumber = function (value) {
12
12
  return !isNaN(num) && isFinite(num);
13
13
  };
14
14
  var SliderInput = function (_a) {
15
- var field = _a.field, value = _a.value, onChange = _a.onChange, min = _a.min, max = _a.max, step = _a.step;
15
+ var field = _a.field, value = _a.value, onChange = _a.onChange, min = _a.min, max = _a.max, step = _a.step, disabled = _a.disabled;
16
+ var _b = useState(value !== undefined && value !== null ? +value : undefined), tempValue = _b[0], setTempValue = _b[1];
17
+ var _c = useState(value !== undefined ? String(value) : undefined), tempTextValue = _c[0], setTempTextValue = _c[1];
18
+ var _d = useState('slider'), mode = _d[0], setMode = _d[1];
16
19
  var updateTemp = function (value) {
17
20
  if (value !== undefined && isValidNumber(String(value))) {
18
21
  setTempValue(+value);
@@ -22,13 +25,15 @@ var SliderInput = function (_a) {
22
25
  setTempTextValue(value !== undefined ? String(value) : undefined);
23
26
  }
24
27
  };
25
- var _b = useState(value !== undefined && value !== null ? +value : 0), tempValue = _b[0], setTempValue = _b[1];
26
- var _c = useState(value !== undefined ? String(value) : undefined), tempTextValue = _c[0], setTempTextValue = _c[1];
27
- var _d = useState('slider'), mode = _d[0], setMode = _d[1];
28
+ useEffect(function () {
29
+ if (value !== tempValue) {
30
+ updateTemp(value !== undefined && value !== null ? +value : undefined);
31
+ }
32
+ }, [value]);
28
33
  return (React__default.createElement("div", null,
29
- React__default.createElement(FieldLabel, __assign({}, field)),
34
+ React__default.createElement(FieldLabel, { field: field, disabled: disabled, value: value, onChange: onChange }),
30
35
  React__default.createElement("div", { className: 'flex flex-row gap-4' },
31
- React__default.createElement(SliderSingle, { className: 'flex-grow max-w-[400px] mt-1', size: 'sm', value: tempValue, min: min !== null && min !== void 0 ? min : 0, max: max, onChange: function (v) {
36
+ React__default.createElement(SliderSingle, { wrapperClassName: 'flex-grow max-w-[400px] mt-1', size: 'sm', disabled: disabled, retainUndefinedOnLoad: true, value: tempValue, min: min !== null && min !== void 0 ? min : 0, max: max, onChange: function (v) {
32
37
  updateTemp(v);
33
38
  }, onChangeComplete: function (v) {
34
39
  updateTemp(v);
@@ -36,30 +41,37 @@ var SliderInput = function (_a) {
36
41
  }, id: field.id, testId: field.id, step: step !== null && step !== void 0 ? step : ((max - (min !== null && min !== void 0 ? min : 0)) / 100) }),
37
42
  React__default.createElement("div", { className: 'w-[100px] flex flex-row text-right' }, mode === 'slider'
38
43
  ? React__default.createElement(React__default.Fragment, null,
39
- React__default.createElement("strong", { className: 'w-[60px]' }, tempValue),
40
- React__default.createElement(Pencil1Icon, { className: 'inline m-1 w-5 h-5 cursor-pointer', onClick: function () {
44
+ React__default.createElement("strong", { className: "w-[60px]".concat(disabled ? ' text-slate-400 cursor-not-allowed' : '') }, tempValue),
45
+ React__default.createElement(Pencil1Icon, { className: "inline m-1 w-5 h-5 ".concat(disabled ? ' opacity-50 cursor-not-allowed' : 'cursor-pointer'), onClick: function () {
46
+ if (disabled)
47
+ return;
41
48
  setMode('text');
42
49
  } }))
43
- : React__default.createElement(React__default.Fragment, null,
44
- React__default.createElement(Input, { id: "slider-text-".concat(field.id), testId: "slider-text-".concat(field.id), value: tempTextValue !== undefined && tempTextValue !== null ? String(tempTextValue) : '', className: 'w-[50px] text-xs text-right', size: 'xs', label: undefined, onChange: function (e) {
45
- updateTemp(e);
46
- } }),
47
- React__default.createElement(Cross2Icon, { className: 'flex-none inline w-5 h-5 m-1 cursor-pointer', color: 'red', onClick: function () {
48
- setMode('slider');
49
- } }),
50
- React__default.createElement(CheckIcon, { className: "flex-none inline w-5 h-5 m-1 ".concat(isValidNumber(String(tempTextValue)) ? 'cursor-pointer' : 'opacity-50'), color: 'green', onClick: function () {
51
- if (isValidNumber(String(tempTextValue))) {
52
- setMode('slider');
53
- updateTemp(tempTextValue);
54
- onChange(tempTextValue);
55
- }
56
- } }))))));
50
+ : React__default.createElement(React__default.Fragment, null, ((tempTextValue !== undefined && tempTextValue !== null) ||
51
+ mode === 'text')
52
+ ? React__default.createElement(React__default.Fragment, null,
53
+ React__default.createElement(Input, { id: "slider-text-".concat(field.id), disabled: disabled, testId: "slider-text-".concat(field.id), value: tempTextValue !== undefined && tempTextValue !== null ? String(tempTextValue) : '', className: 'w-[50px] text-xs text-right', size: 'xs', label: undefined, onChange: function (e) {
54
+ updateTemp(e);
55
+ } }),
56
+ React__default.createElement(Cross2Icon, { className: "flex-none inline m-1 w-5 h-5 ".concat(disabled ? 'opacity-50 cursor-not-allowed' : 'cursor-pointer'), color: 'red', onClick: function () {
57
+ if (!disabled) {
58
+ setMode('slider');
59
+ }
60
+ } }),
61
+ React__default.createElement(CheckIcon, { className: "flex-none inline m-1 w-5 h-5 ".concat((disabled !== null && disabled !== void 0 ? disabled : !isValidNumber(String(tempTextValue))) ? 'opacity-50 cursor-not-allowed' : 'cursor-pointer'), color: 'green', onClick: function () {
62
+ if (!disabled && isValidNumber(String(tempTextValue))) {
63
+ setMode('slider');
64
+ updateTemp(tempTextValue);
65
+ onChange(tempTextValue);
66
+ }
67
+ } }))
68
+ : '')))));
57
69
  };
58
70
  var TextInput = function (_a) {
59
- var field = _a.field, onChange = _a.onChange, value = _a.value, className = _a.className;
71
+ var field = _a.field, onChange = _a.onChange, value = _a.value, className = _a.className, disabled = _a.disabled;
60
72
  var _b = useState(undefined), error = _b[0], setError = _b[1];
61
73
  return (React__default.createElement(React__default.Fragment, null,
62
- React__default.createElement(Input, { id: field.id, testId: field.id, error: error, className: className, value: value !== undefined && value !== null ? String(value) : '', label: React__default.createElement(FieldLabel, __assign({}, field)), onChange: function (e) {
74
+ React__default.createElement(Input, { id: field.id, testId: field.id, error: error, className: className, value: value !== undefined && value !== null ? String(value) : '', label: React__default.createElement(FieldLabel, { field: field, disabled: disabled, value: value, onChange: onChange }), onChange: function (e) {
63
75
  if (e !== undefined && !isNaN(+e) && e !== '') {
64
76
  onChange(+e);
65
77
  setError(undefined);
@@ -78,31 +90,34 @@ var TextInput = function (_a) {
78
90
  };
79
91
  var NumberInput = function (_a) {
80
92
  var _b, _c, _d, _e;
81
- var field = _a.field, onChange = _a.onChange, value = _a.value;
82
- var initialValue = value !== undefined ? value : '';
93
+ var field = _a.field, onChange = _a.onChange, value = _a.value, disabled = _a.disabled;
94
+ var initialValue = value !== undefined ? value : undefined;
83
95
  var numberField = field;
84
96
  var isNull = initialValue === undefined || initialValue === null || initialValue === '';
85
97
  var _f = useState(!isNull), userSelectedNotNull = _f[0], setUserSelectedNotNull = _f[1];
86
98
  var canBeNull = ((_b = numberField.settings) === null || _b === void 0 ? void 0 : _b.canBeNull) === true;
99
+ var myOnChange = function (v) {
100
+ onChange(v);
101
+ };
87
102
  var max = (_c = numberField === null || numberField === void 0 ? void 0 : numberField.constraints) === null || _c === void 0 ? void 0 : _c.max;
88
103
  var fieldForInput = canBeNull
89
104
  ? __assign(__assign({}, field), { label: undefined, description: undefined }) : field;
90
105
  var el = (React__default.createElement(React__default.Fragment, null, max !== undefined
91
- ? React__default.createElement(SliderInput, { field: fieldForInput, value: initialValue, onChange: onChange, min: (_d = numberField === null || numberField === void 0 ? void 0 : numberField.constraints) === null || _d === void 0 ? void 0 : _d.min, max: max, step: (_e = numberField === null || numberField === void 0 ? void 0 : numberField.settings) === null || _e === void 0 ? void 0 : _e.step })
92
- : React__default.createElement(TextInput, { field: fieldForInput, value: initialValue, onChange: onChange, className: 'max-w-[300px]' })));
106
+ ? React__default.createElement(SliderInput, { disabled: disabled, field: fieldForInput, value: initialValue, onChange: myOnChange, min: (_d = numberField === null || numberField === void 0 ? void 0 : numberField.constraints) === null || _d === void 0 ? void 0 : _d.min, max: max, step: (_e = numberField === null || numberField === void 0 ? void 0 : numberField.settings) === null || _e === void 0 ? void 0 : _e.step })
107
+ : React__default.createElement(TextInput, { disabled: disabled, field: fieldForInput, value: initialValue, onChange: onChange, className: 'max-w-[300px]' })));
93
108
  if (canBeNull) {
94
109
  return (React__default.createElement("div", { className: 'flex flex-col gap-2' },
95
- React__default.createElement(Checkbox, { id: "".concat(field.id, "-null"), testId: "".concat(field.id, "-null"), label: React__default.createElement(React__default.Fragment, null,
96
- React__default.createElement(FieldLabelText, __assign({}, field)),
110
+ React__default.createElement(Checkbox, { disabled: disabled, id: "".concat(field.id, "-null"), testId: "".concat(field.id, "-null"), label: React__default.createElement(React__default.Fragment, null,
111
+ React__default.createElement(FieldLabelText, { field: field, disabled: disabled, onChange: onChange }),
97
112
  " ",
98
- React__default.createElement(FieldDescriptionTooltip, __assign({}, field))), value: userSelectedNotNull, onChange: function (e) {
113
+ React__default.createElement(FieldDescriptionTooltip, { field: field, disabled: disabled })), value: userSelectedNotNull, onChange: function (e) {
99
114
  var _a, _b, _c, _d;
100
115
  setUserSelectedNotNull(!userSelectedNotNull);
101
116
  if (!e) {
102
117
  onChange(undefined);
103
118
  }
104
119
  else {
105
- onChange((_d = (_c = (_b = (_a = numberField === null || numberField === void 0 ? void 0 : numberField.settings) === null || _a === void 0 ? void 0 : _a.nonNullDefaultValue) !== null && _b !== void 0 ? _b : numberField === null || numberField === void 0 ? void 0 : numberField.defaultValue) !== null && _c !== void 0 ? _c : value) !== null && _d !== void 0 ? _d : 0);
120
+ onChange((_d = (_c = (_b = (_a = numberField === null || numberField === void 0 ? void 0 : numberField.settings) === null || _a === void 0 ? void 0 : _a.nonNullDefaultValue) !== null && _b !== void 0 ? _b : numberField === null || numberField === void 0 ? void 0 : numberField.defaultValue) !== null && _c !== void 0 ? _c : value) !== null && _d !== void 0 ? _d : undefined);
106
121
  }
107
122
  } }),
108
123
  userSelectedNotNull ? el : React__default.createElement(React__default.Fragment, null)));
@@ -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 {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, 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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"}
@@ -5,19 +5,29 @@ import { utils as index$1 } from '../../../../node_modules/@axdspub/axiom-ui-uti
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: "p-4 bg-slate-100 ".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
+ return (React__default.createElement(FieldCreator, { disabled: disabled, onChange: function (e) {
21
31
  if (childField.type === 'object' && childField.skip_path === true) {
22
32
  onChange(e);
23
33
  }
@@ -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 { 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={`p-4 bg-slate-100 ${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\r\n return (\r\n <FieldCreator\r\n disabled={disabled}\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,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,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,EAAA,CAAA,MAAA,CAAG,KAAK,CAAC,MAAM,KAAK;AAC3B,cAAE;AACF,cAAE,KAAK,CAAC,MAAM,KAAK;AACnB,kBAAE;AACF,kBAAE,KAAK,CAAC,MAAM,KAAK;AACjB,sBAAE;AACF,sBAAE,KAAK,CAAC,MAAM,KAAK;AACjB,0BAAE;0BACA,qBAAqB,CAC3B;AACJ,QAAA,IAAM,IAAE,GAAG,KAAK,CAAC,MAAM,KAAK;AAC1B,cAAE;cACA,EAAE;AACN,QAAA,QACIA,cAAA,CAAA,aAAA,CAAA,KAAA,EAAA,IAAA;YAEE,KAAK,CAAC,KAAK,KAAK;AACd,kBAAEA,cAAC,CAAA,aAAA,CAAA,UAAU,IAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAI;AACpF,kBAAE,IAAI;YAEVA,cAAK,CAAA,aAAA,CAAA,KAAA,EAAA,EAAA,SAAS,EAAE,oBAAqB,CAAA,MAAA,CAAA,EAAE,SAAG,QAAQ,GAAG,gCAAgC,GAAG,EAAE,CAAE,EAAA,EAE1F,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;gBAEtE,QACEA,cAAC,CAAA,aAAA,CAAA,YAAY,EACX,EAAA,QAAQ,EAAE,QAAQ,EAClB,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,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":";;;AAIM,IAAA,SAAS,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;IAC7C,IAAA,EAAA,GAAoB,QAAQ,CAAgB,IAAI,CAAC,EAAhD,KAAK,GAAA,EAAA,CAAA,CAAA,CAAA,EAAE,QAAQ,GAAA,EAAA,CAAA,CAAA,CAAiC;AAEvD,IAAA,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,EAAE;QACzB,OAAOA,cAAA,CAAA,aAAA,CAAA,GAAA,EAAA,IAAA;;AAAqB,YAAA,KAAK,CAAC,EAAE;oCAAoC;;AAEpE,IAAA,IAAA,EAAuB,GAAA,CAAA,EAAA,GAAA,KAAK,CAAC,WAAW,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAI,EAAE,EAA5C,OAAO,GAAA,EAAA,CAAA,OAAA,EAAE,OAAO,aAA4B;;IAGpD,IAAM,WAAW,GAAG,UAAC,GAA8B,EAAA;AACjD,QAAA,IAAI,CAAC,GAAG;AAAE,YAAA,OAAO,EAAE;AACnB,QAAA,IAAI;;AAEF,YAAA,IAAM,IAAI,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC;AAC1B,YAAA,IAAI,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;AAAE,gBAAA,OAAO,EAAE;;AAGpC,YAAA,IAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;AACtD,YAAA,IAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;AAE1D,YAAA,OAAO,EAAG,CAAA,MAAA,CAAA,KAAK,EAAI,GAAA,CAAA,CAAA,MAAA,CAAA,OAAO,CAAE;;AAC5B,QAAA,OAAA,EAAA,EAAM;AACN,YAAA,OAAO,EAAE;;AAEb,KAAC;IAED,IAAM,YAAY,GAAG,UAAC,OAAe,EAAA;AACnC,QAAA,IAAI,CAAC,OAAO,IAAI,CAAC,OAAO;AAAE,YAAA,OAAO,IAAI;;QAGrC,IAAM,aAAa,GAAG,YAAY;QAClC,IAAM,SAAS,GAAG,IAAI,IAAI,CAAC,EAAG,CAAA,MAAA,CAAA,aAAa,EAAI,GAAA,CAAA,CAAA,MAAA,CAAA,OAAO,CAAE,CAAC;AACzD,QAAA,IAAM,OAAO,GAAG,OAAO,GAAG,IAAI,IAAI,CAAC,UAAG,aAAa,EAAA,GAAA,CAAA,CAAA,MAAA,CAAI,OAAO,CAAE,CAAC,GAAG,IAAI;AACxE,QAAA,IAAM,OAAO,GAAG,OAAO,GAAG,IAAI,IAAI,CAAC,UAAG,aAAa,EAAA,GAAA,CAAA,CAAA,MAAA,CAAI,OAAO,CAAE,CAAC,GAAG,IAAI;AAExE,QAAA,IAAI,OAAO,IAAI,SAAS,GAAG,OAAO,EAAE;YAClC,OAAO,qBAAA,CAAA,MAAA,CAAsB,OAAO,CAAE;;AAExC,QAAA,IAAI,OAAO,IAAI,SAAS,GAAG,OAAO,EAAE;YAClC,OAAO,sBAAA,CAAA,MAAA,CAAuB,OAAO,CAAE;;AAEzC,QAAA,OAAO,IAAI;AACb,KAAC;IAED,IAAM,YAAY,GAAG,UAAC,CAAsC,EAAA;AAC1D,QAAA,IAAM,UAAU,GAAG,CAAC,CAAC,MAAM,CAAC,KAAK;;QAGjC,IAAI,UAAU,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;YACvC;;QAGF,IAAI,UAAU,EAAE;AACd,YAAA,IAAM,QAAQ,GAAG,IAAI,IAAI,CAAC,aAAA,CAAA,MAAA,CAAc,UAAU,CAAE,CAAC,CAAC,WAAW,EAAE;AACnE,YAAA,IAAM,eAAe,GAAG,YAAY,CAAC,UAAU,CAAC;YAChD,QAAQ,CAAC,eAAe,CAAC;YACzB,IAAI,CAAC,eAAe,EAAE;gBACpB,QAAQ,CAAC,QAAQ,CAAC;;;aAEf;YACL,QAAQ,CAAC,IAAI,CAAC;YACd,QAAQ,CAAC,SAAS,CAAC;;AAEvB,KAAC;AAED,IAAA,IAAM,oBAAoB,GAAG,YAAA;AAC3B,QAAA,IAAI,CAAC,OAAO,IAAI,CAAC,OAAO;AAAE,YAAA,OAAO,IAAI;QACrC,IAAM,KAAK,GAAG,EAAE;AAChB,QAAA,IAAI,OAAO;AAAE,YAAA,KAAK,CAAC,IAAI,CAAC,gBAAS,OAAO,CAAE,CAAC;AAC3C,QAAA,IAAI,OAAO;AAAE,YAAA,KAAK,CAAC,IAAI,CAAC,iBAAU,OAAO,CAAE,CAAC;QAC5C,OAAO,UAAA,CAAA,MAAA,CAAW,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAE;AACzC,KAAC;AAED,IAAA,IAAM,iBAAiB,GAAG,oBAAoB,EAAE;AAEhD,IAAA,QACEA,cAAA,CAAA,aAAA,CAAA,KAAA,EAAA,IAAA;QACEA,cAAK,CAAA,aAAA,CAAA,KAAA,EAAA,EAAA,SAAS,EAAC,qCAAqC,EAAA;YAClDA,cAAO,CAAA,aAAA,CAAA,OAAA,EAAA,EAAA,OAAO,EAAE,KAAK,CAAC,EAAE,EAAE,SAAS,EAAC,sBAAsB,EAAA;gBACxDA,cAAC,CAAA,aAAA,CAAA,UAAU,EAAC,EAAA,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAA,CAAI,CAC1C;YACP,iBAAiB,KAChBA,cAAA,CAAA,aAAA,CAAA,MAAA,EAAA,EAAM,SAAS,EAAC,+BAA+B,EAC5C,EAAA,iBAAiB,CACb,CACR,CACG;QACNA,cACE,CAAA,aAAA,CAAA,OAAA,EAAA,EAAA,EAAE,EAAE,KAAK,CAAC,EAAE,EACZ,SAAS,EAAE,SAAU,CAAA,MAAA,CAAA,KAAK,GAAG,gBAAgB,GAAG,kBAAkB,EAAA,aAAA,CAAa,EAClE,aAAA,EAAA,KAAK,CAAC,EAAE,EACrB,IAAI,EAAC,MAAM,EACX,KAAK,EAAE,WAAW,CAAC,KAAe,CAAC,EACnC,QAAQ,EAAE,YAAY,EACtB,GAAG,EAAE,OAAO,EACZ,GAAG,EAAE,OAAO,EACZ,CAAA;QACD,KAAK,IAAIA,cAAG,CAAA,aAAA,CAAA,GAAA,EAAA,EAAA,SAAS,EAAC,2BAA2B,IAAE,KAAK,CAAK,CAC1D;AAEV;;;;"}
@@ -12,8 +12,8 @@ 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]);
15
+ var _e = useContext(FormContext), form = _e.form, formValues = _e.formValues;
16
+ var status = calculateSectionStatus([form], formValues);
17
17
  return (React__default.createElement(React__default.Fragment, null,
18
18
  React__default.createElement("p", { className: 'text-xs mt-4' }, (_a = status[form.id]) === null || _a === void 0 ? void 0 :
19
19
  _a.completed,