@nolwenture/formik-jsonschema-form 2.0.2 → 3.0.0-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +18 -0
- package/dist/cjs/common/types/index.js +2 -0
- package/dist/cjs/index.js +15 -5
- package/dist/cjs/v3/codemod/bindings.js +124 -0
- package/dist/cjs/v3/codemod/cli.js +89 -0
- package/dist/cjs/v3/codemod/migrate.js +21 -0
- package/dist/cjs/v3/codemod/package.js +5 -0
- package/dist/cjs/v3/codemod/slots.js +27 -0
- package/dist/cjs/v3/codemod/transform.js +61 -0
- package/dist/cjs/v3/document/fromDocument.js +50 -0
- package/dist/cjs/v3/document/index.js +9 -0
- package/dist/cjs/v3/document/render.js +22 -0
- package/dist/cjs/v3/raw/compat/v2utils.js +39 -0
- package/dist/cjs/v3/raw/core/arrays.js +55 -0
- package/dist/cjs/v3/raw/core/choiceStyle.js +14 -0
- package/dist/cjs/v3/raw/core/conditionals.js +88 -0
- package/dist/cjs/v3/raw/core/dates.js +74 -0
- package/dist/cjs/v3/raw/core/defaults.js +31 -0
- package/dist/cjs/v3/raw/core/enums.js +37 -0
- package/dist/cjs/v3/raw/core/initialValues.js +68 -0
- package/dist/cjs/v3/raw/core/issues.js +42 -0
- package/dist/cjs/v3/raw/core/json.js +58 -0
- package/dist/cjs/v3/raw/core/merge.js +51 -0
- package/dist/cjs/v3/raw/core/paths.js +88 -0
- package/dist/cjs/v3/raw/core/policies/fileUploadView.js +4 -0
- package/dist/cjs/v3/raw/core/policies/optionalNumberInitial.js +7 -0
- package/dist/cjs/v3/raw/core/policies/storedFormats.js +5 -0
- package/dist/cjs/v3/raw/core/refs.js +104 -0
- package/dist/cjs/v3/raw/core/schemaType.js +75 -0
- package/dist/cjs/v3/raw/core/titles.js +30 -0
- package/dist/cjs/v3/raw/core/trail.js +18 -0
- package/dist/cjs/v3/raw/core/uiProps.js +72 -0
- package/dist/cjs/v3/raw/core/uiSchema.js +56 -0
- package/dist/cjs/v3/raw/dom/bind.js +84 -0
- package/dist/cjs/v3/raw/dom/build.js +27 -0
- package/dist/cjs/v3/raw/dom/controller.js +87 -0
- package/dist/cjs/v3/raw/dom/core.js +67 -0
- package/dist/cjs/v3/raw/dom/delegate.js +31 -0
- package/dist/cjs/v3/raw/dom/effects.js +67 -0
- package/dist/cjs/v3/raw/dom/elements.js +88 -0
- package/dist/cjs/v3/raw/dom/emitter.js +47 -0
- package/dist/cjs/v3/raw/dom/nodes.js +25 -0
- package/dist/cjs/v3/raw/dom/render.js +122 -0
- package/dist/cjs/v3/raw/dom/upload.js +186 -0
- package/dist/cjs/v3/raw/i18n/en.js +47 -0
- package/dist/cjs/v3/raw/i18n/fi.js +44 -0
- package/dist/cjs/v3/raw/i18n/index.js +14 -0
- package/dist/cjs/v3/raw/index.js +98 -0
- package/dist/cjs/v3/raw/model/classes.js +9 -0
- package/dist/cjs/v3/raw/model/form/actions.js +154 -0
- package/dist/cjs/v3/raw/model/form/any.js +27 -0
- package/dist/cjs/v3/raw/model/form/appearance.js +32 -0
- package/dist/cjs/v3/raw/model/form/array.js +69 -0
- package/dist/cjs/v3/raw/model/form/choice.js +74 -0
- package/dist/cjs/v3/raw/model/form/chrome.js +65 -0
- package/dist/cjs/v3/raw/model/form/componentTable.js +148 -0
- package/dist/cjs/v3/raw/model/form/date.js +53 -0
- package/dist/cjs/v3/raw/model/form/dispatch.js +119 -0
- package/dist/cjs/v3/raw/model/form/iconData.js +19 -0
- package/dist/cjs/v3/raw/model/form/icons.js +10 -0
- package/dist/cjs/v3/raw/model/form/index.js +43 -0
- package/dist/cjs/v3/raw/model/form/leaf.js +99 -0
- package/dist/cjs/v3/raw/model/form/markup.js +46 -0
- package/dist/cjs/v3/raw/model/form/object.js +105 -0
- package/dist/cjs/v3/raw/model/form/parts.js +26 -0
- package/dist/cjs/v3/raw/model/form/searchable.js +81 -0
- package/dist/cjs/v3/raw/model/form/templated.js +22 -0
- package/dist/cjs/v3/raw/model/form/upload.js +88 -0
- package/dist/cjs/v3/raw/model/styledChains.js +43 -0
- package/dist/cjs/v3/raw/model/view/build.js +165 -0
- package/dist/cjs/v3/raw/model/view/fields.js +102 -0
- package/dist/cjs/v3/raw/model/view/index.js +10 -0
- package/dist/cjs/v3/raw/model/view/markup.js +62 -0
- package/dist/cjs/v3/raw/model/view/toVNode.js +67 -0
- package/dist/cjs/v3/raw/model/view/values.js +58 -0
- package/dist/cjs/v3/raw/model/vnode.js +21 -0
- package/dist/cjs/v3/raw/sanitize/index.js +10 -0
- package/dist/cjs/v3/raw/sanitize/sanitizeHtml.js +128 -0
- package/dist/cjs/v3/raw/serialize/toDOM.js +150 -0
- package/dist/cjs/v3/raw/serialize/toString.js +58 -0
- package/dist/cjs/v3/raw/store/createStore.js +133 -0
- package/dist/cjs/v3/raw/styles/color.js +112 -0
- package/dist/cjs/v3/raw/styles/colorNames.js +30 -0
- package/dist/cjs/v3/raw/styles/defaultStyles.js +114 -0
- package/dist/cjs/v3/raw/styles/index.js +24 -0
- package/dist/cjs/v3/raw/styles/themeToCssVars.js +60 -0
- package/dist/cjs/v3/raw/styles/vars.js +28 -0
- package/dist/cjs/v3/raw/validation/arrays.js +78 -0
- package/dist/cjs/v3/raw/validation/conditions.js +63 -0
- package/dist/cjs/v3/raw/validation/index.js +182 -0
- package/dist/cjs/v3/raw/validation/keywords.js +113 -0
- package/dist/cjs/v3/raw/validation/messages.js +14 -0
- package/dist/cjs/v3/raw/validation/patterns.js +74 -0
- package/dist/cjs/v3/react/chain.js +7 -0
- package/dist/cjs/v3/react/compat.js +11 -0
- package/dist/cjs/v3/react/componentsProp.js +23 -0
- package/dist/cjs/v3/react/defined.js +6 -0
- package/dist/cjs/v3/react/ejs/EJSField.js +75 -0
- package/dist/cjs/v3/react/ejs/index.js +8 -0
- package/dist/cjs/v3/react/form/components.js +105 -0
- package/dist/cjs/v3/react/form/fields.js +75 -0
- package/dist/cjs/v3/react/form/host.js +100 -0
- package/dist/cjs/{Form/FormRegistry.js → v3/react/form/registry.js} +6 -7
- package/dist/cjs/v3/react/form/root.js +42 -0
- package/dist/cjs/v3/react/form/runtime.js +117 -0
- package/dist/cjs/v3/react/form/templates.js +58 -0
- package/dist/cjs/v3/react/form/upload.js +173 -0
- package/dist/cjs/v3/react/form/uploadContexts.js +27 -0
- package/dist/cjs/v3/react/form/useSetDefault.js +21 -0
- package/dist/cjs/v3/react/hostCore.js +59 -0
- package/dist/cjs/v3/react/index.js +45 -0
- package/dist/cjs/v3/react/selector.js +17 -0
- package/dist/cjs/v3/react/slots.js +19 -0
- package/dist/cjs/v3/react/toReact.js +63 -0
- package/dist/cjs/v3/react/view/components.js +63 -0
- package/dist/cjs/v3/react/view/fields.js +46 -0
- package/dist/cjs/v3/react/view/host.js +36 -0
- package/dist/cjs/v3/react/view/registry.js +20 -0
- package/dist/cjs/v3/react/view/root.js +37 -0
- package/dist/cjs/v3/react/view/templates.js +50 -0
- package/dist/esm/common/types/index.js +2 -0
- package/dist/esm/index.js +8 -5
- package/dist/esm/v3/document/fromDocument.js +46 -0
- package/dist/esm/v3/document/index.js +4 -0
- package/dist/esm/v3/document/render.js +18 -0
- package/dist/esm/v3/raw/compat/v2utils.js +15 -0
- package/dist/esm/v3/raw/core/arrays.js +49 -0
- package/dist/esm/v3/raw/core/choiceStyle.js +10 -0
- package/dist/esm/v3/raw/core/conditionals.js +82 -0
- package/dist/esm/v3/raw/core/dates.js +66 -0
- package/dist/esm/v3/raw/core/defaults.js +25 -0
- package/dist/esm/v3/raw/core/enums.js +32 -0
- package/dist/esm/v3/raw/core/initialValues.js +65 -0
- package/dist/esm/v3/raw/core/issues.js +36 -0
- package/dist/esm/v3/raw/core/json.js +49 -0
- package/dist/esm/v3/raw/core/merge.js +47 -0
- package/dist/esm/v3/raw/core/paths.js +79 -0
- package/dist/esm/v3/raw/core/policies/fileUploadView.js +1 -0
- package/dist/esm/v3/raw/core/policies/optionalNumberInitial.js +3 -0
- package/dist/esm/v3/raw/core/policies/storedFormats.js +2 -0
- package/dist/esm/v3/raw/core/refs.js +97 -0
- package/dist/esm/v3/raw/core/schemaType.js +68 -0
- package/dist/esm/v3/raw/core/titles.js +25 -0
- package/dist/esm/v3/raw/core/trail.js +14 -0
- package/dist/esm/v3/raw/core/uiProps.js +68 -0
- package/dist/esm/v3/raw/core/uiSchema.js +47 -0
- package/dist/esm/v3/raw/dom/bind.js +80 -0
- package/dist/esm/v3/raw/dom/build.js +23 -0
- package/dist/esm/v3/raw/dom/controller.js +83 -0
- package/dist/esm/v3/raw/dom/core.js +63 -0
- package/dist/esm/v3/raw/dom/delegate.js +25 -0
- package/dist/esm/v3/raw/dom/effects.js +62 -0
- package/dist/esm/v3/raw/dom/elements.js +84 -0
- package/dist/esm/v3/raw/dom/emitter.js +43 -0
- package/dist/esm/v3/raw/dom/nodes.js +20 -0
- package/dist/esm/v3/raw/dom/render.js +118 -0
- package/dist/esm/v3/raw/dom/upload.js +182 -0
- package/dist/esm/v3/raw/i18n/en.js +44 -0
- package/dist/esm/v3/raw/i18n/fi.js +41 -0
- package/dist/esm/v3/raw/i18n/index.js +9 -0
- package/dist/esm/v3/raw/index.js +33 -0
- package/dist/esm/v3/raw/model/classes.js +5 -0
- package/dist/esm/v3/raw/model/form/actions.js +150 -0
- package/dist/esm/v3/raw/model/form/any.js +23 -0
- package/dist/esm/v3/raw/model/form/appearance.js +27 -0
- package/dist/esm/v3/raw/model/form/array.js +65 -0
- package/dist/esm/v3/raw/model/form/choice.js +65 -0
- package/dist/esm/v3/raw/model/form/chrome.js +58 -0
- package/dist/esm/v3/raw/model/form/componentTable.js +145 -0
- package/dist/esm/v3/raw/model/form/date.js +48 -0
- package/dist/esm/v3/raw/model/form/dispatch.js +114 -0
- package/dist/esm/v3/raw/model/form/iconData.js +16 -0
- package/dist/esm/v3/raw/model/form/icons.js +6 -0
- package/dist/esm/v3/raw/model/form/index.js +32 -0
- package/dist/esm/v3/raw/model/form/leaf.js +89 -0
- package/dist/esm/v3/raw/model/form/markup.js +35 -0
- package/dist/esm/v3/raw/model/form/object.js +100 -0
- package/dist/esm/v3/raw/model/form/parts.js +21 -0
- package/dist/esm/v3/raw/model/form/searchable.js +76 -0
- package/dist/esm/v3/raw/model/form/templated.js +17 -0
- package/dist/esm/v3/raw/model/form/upload.js +81 -0
- package/dist/esm/v3/raw/model/styledChains.js +40 -0
- package/dist/esm/v3/raw/model/view/build.js +158 -0
- package/dist/esm/v3/raw/model/view/fields.js +90 -0
- package/dist/esm/v3/raw/model/view/index.js +6 -0
- package/dist/esm/v3/raw/model/view/markup.js +48 -0
- package/dist/esm/v3/raw/model/view/toVNode.js +63 -0
- package/dist/esm/v3/raw/model/view/values.js +50 -0
- package/dist/esm/v3/raw/model/vnode.js +13 -0
- package/dist/esm/v3/raw/sanitize/index.js +2 -0
- package/dist/esm/v3/raw/sanitize/sanitizeHtml.js +119 -0
- package/dist/esm/v3/raw/serialize/toDOM.js +145 -0
- package/dist/esm/v3/raw/serialize/toString.js +52 -0
- package/dist/esm/v3/raw/store/createStore.js +126 -0
- package/dist/esm/v3/raw/styles/color.js +104 -0
- package/dist/esm/v3/raw/styles/colorNames.js +27 -0
- package/dist/esm/v3/raw/styles/defaultStyles.js +111 -0
- package/dist/esm/v3/raw/styles/index.js +14 -0
- package/dist/esm/v3/raw/styles/themeToCssVars.js +55 -0
- package/dist/esm/v3/raw/styles/vars.js +24 -0
- package/dist/esm/v3/raw/validation/arrays.js +40 -0
- package/dist/esm/v3/raw/validation/conditions.js +60 -0
- package/dist/esm/v3/raw/validation/index.js +146 -0
- package/dist/esm/v3/raw/validation/keywords.js +73 -0
- package/dist/esm/v3/raw/validation/messages.js +10 -0
- package/dist/esm/v3/raw/validation/patterns.js +68 -0
- package/dist/esm/v3/react/chain.js +4 -0
- package/dist/esm/v3/react/compat.js +8 -0
- package/dist/esm/v3/react/componentsProp.js +18 -0
- package/dist/esm/v3/react/defined.js +2 -0
- package/dist/esm/v3/react/ejs/EJSField.js +67 -0
- package/dist/esm/v3/react/ejs/index.js +3 -0
- package/dist/esm/v3/react/form/components.js +101 -0
- package/dist/esm/v3/react/form/fields.js +70 -0
- package/dist/esm/v3/react/form/host.js +95 -0
- package/dist/esm/{Form/FormRegistry.js → v3/react/form/registry.js} +5 -3
- package/dist/esm/v3/react/form/root.js +38 -0
- package/dist/esm/v3/react/form/runtime.js +113 -0
- package/dist/esm/v3/react/form/templates.js +55 -0
- package/dist/esm/v3/react/form/upload.js +168 -0
- package/dist/esm/v3/react/form/uploadContexts.js +24 -0
- package/dist/esm/v3/react/form/useSetDefault.js +17 -0
- package/dist/esm/v3/react/hostCore.js +52 -0
- package/dist/esm/v3/react/index.js +18 -0
- package/dist/esm/v3/react/selector.js +13 -0
- package/dist/esm/v3/react/slots.js +15 -0
- package/dist/esm/v3/react/toReact.js +58 -0
- package/dist/esm/v3/react/view/components.js +59 -0
- package/dist/esm/v3/react/view/fields.js +43 -0
- package/dist/esm/v3/react/view/host.js +32 -0
- package/dist/esm/v3/react/view/registry.js +16 -0
- package/dist/esm/v3/react/view/root.js +33 -0
- package/dist/esm/v3/react/view/templates.js +47 -0
- package/dist/types/common/types/Form.d.ts +9 -32
- package/dist/types/common/types/Utils.d.ts +11 -0
- package/dist/types/common/types/index.d.ts +2 -0
- package/dist/types/index.d.ts +6 -4
- package/dist/types/v3/codemod/bindings.d.ts +18 -0
- package/dist/types/v3/codemod/cli.d.ts +2 -0
- package/dist/types/v3/codemod/migrate.d.ts +8 -0
- package/dist/types/v3/codemod/package.d.ts +2 -0
- package/dist/types/v3/codemod/slots.d.ts +13 -0
- package/dist/types/v3/codemod/transform.d.ts +29 -0
- package/dist/types/v3/document/fromDocument.d.ts +22 -0
- package/dist/types/v3/document/index.d.ts +4 -0
- package/dist/types/v3/document/render.d.ts +11 -0
- package/dist/types/v3/raw/compat/v2utils.d.ts +14 -0
- package/dist/types/v3/raw/core/arrays.d.ts +22 -0
- package/dist/types/v3/raw/core/choiceStyle.d.ts +4 -0
- package/dist/types/v3/raw/core/conditionals.d.ts +6 -0
- package/dist/types/v3/raw/core/dates.d.ts +8 -0
- package/dist/types/v3/raw/core/defaults.d.ts +15 -0
- package/dist/types/v3/raw/core/enums.d.ts +18 -0
- package/dist/types/v3/raw/core/initialValues.d.ts +12 -0
- package/dist/types/v3/raw/core/issues.d.ts +17 -0
- package/dist/types/v3/raw/core/json.d.ts +52 -0
- package/dist/types/v3/raw/core/merge.d.ts +6 -0
- package/dist/types/v3/raw/core/paths.d.ts +17 -0
- package/dist/types/v3/raw/core/policies/fileUploadView.d.ts +2 -0
- package/dist/types/v3/raw/core/policies/optionalNumberInitial.d.ts +4 -0
- package/dist/types/v3/raw/core/policies/storedFormats.d.ts +4 -0
- package/dist/types/v3/raw/core/refs.d.ts +41 -0
- package/dist/types/v3/raw/core/schemaType.d.ts +16 -0
- package/dist/types/v3/raw/core/titles.d.ts +2 -0
- package/dist/types/v3/raw/core/trail.d.ts +5 -0
- package/dist/types/v3/raw/core/uiProps.d.ts +12 -0
- package/dist/types/v3/raw/core/uiSchema.d.ts +19 -0
- package/dist/types/v3/raw/dom/bind.d.ts +2 -0
- package/dist/types/v3/raw/dom/build.d.ts +10 -0
- package/dist/types/v3/raw/dom/controller.d.ts +37 -0
- package/dist/types/v3/raw/dom/core.d.ts +43 -0
- package/dist/types/v3/raw/dom/delegate.d.ts +18 -0
- package/dist/types/v3/raw/dom/effects.d.ts +18 -0
- package/dist/types/v3/raw/dom/elements.d.ts +17 -0
- package/dist/types/v3/raw/dom/emitter.d.ts +8 -0
- package/dist/types/v3/raw/dom/nodes.d.ts +3 -0
- package/dist/types/v3/raw/dom/render.d.ts +2 -0
- package/dist/types/v3/raw/dom/types.d.ts +112 -0
- package/dist/types/v3/raw/dom/upload.d.ts +16 -0
- package/dist/types/v3/raw/i18n/en.d.ts +42 -0
- package/dist/types/v3/raw/i18n/fi.d.ts +2 -0
- package/dist/types/v3/raw/i18n/index.d.ts +9 -0
- package/dist/types/v3/raw/index.d.ts +43 -0
- package/dist/types/v3/raw/model/classes.d.ts +2 -0
- package/dist/types/v3/raw/model/form/actions.d.ts +41 -0
- package/dist/types/v3/raw/model/form/any.d.ts +5 -0
- package/dist/types/v3/raw/model/form/appearance.d.ts +9 -0
- package/dist/types/v3/raw/model/form/array.d.ts +4 -0
- package/dist/types/v3/raw/model/form/choice.d.ts +16 -0
- package/dist/types/v3/raw/model/form/chrome.d.ts +20 -0
- package/dist/types/v3/raw/model/form/componentTable.d.ts +2 -0
- package/dist/types/v3/raw/model/form/date.d.ts +13 -0
- package/dist/types/v3/raw/model/form/dispatch.d.ts +13 -0
- package/dist/types/v3/raw/model/form/iconData.d.ts +4 -0
- package/dist/types/v3/raw/model/form/icons.d.ts +2 -0
- package/dist/types/v3/raw/model/form/index.d.ts +38 -0
- package/dist/types/v3/raw/model/form/leaf.d.ts +29 -0
- package/dist/types/v3/raw/model/form/markup.d.ts +39 -0
- package/dist/types/v3/raw/model/form/object.d.ts +9 -0
- package/dist/types/v3/raw/model/form/parts.d.ts +10 -0
- package/dist/types/v3/raw/model/form/searchable.d.ts +5 -0
- package/dist/types/v3/raw/model/form/templated.d.ts +14 -0
- package/dist/types/v3/raw/model/form/types.d.ts +179 -0
- package/dist/types/v3/raw/model/form/upload.d.ts +28 -0
- package/dist/types/v3/raw/model/host.d.ts +46 -0
- package/dist/types/v3/raw/model/styledChains.d.ts +1 -0
- package/dist/types/v3/raw/model/view/build.d.ts +21 -0
- package/dist/types/v3/raw/model/view/fields.d.ts +31 -0
- package/dist/types/v3/raw/model/view/index.d.ts +6 -0
- package/dist/types/v3/raw/model/view/markup.d.ts +39 -0
- package/dist/types/v3/raw/model/view/toVNode.d.ts +3 -0
- package/dist/types/v3/raw/model/view/types.d.ts +109 -0
- package/dist/types/v3/raw/model/view/values.d.ts +10 -0
- package/dist/types/v3/raw/model/vnode.d.ts +24 -0
- package/dist/types/v3/raw/sanitize/index.d.ts +2 -0
- package/dist/types/v3/raw/sanitize/sanitizeHtml.d.ts +30 -0
- package/dist/types/v3/raw/serialize/toDOM.d.ts +14 -0
- package/dist/types/v3/raw/serialize/toString.d.ts +4 -0
- package/dist/types/v3/raw/store/createStore.d.ts +39 -0
- package/dist/types/v3/raw/styles/color.d.ts +15 -0
- package/dist/types/v3/raw/styles/colorNames.d.ts +1 -0
- package/dist/types/v3/raw/styles/defaultStyles.d.ts +1 -0
- package/dist/types/v3/raw/styles/index.d.ts +8 -0
- package/dist/types/v3/raw/styles/themeToCssVars.d.ts +4 -0
- package/dist/types/v3/raw/styles/vars.d.ts +43 -0
- package/dist/types/v3/raw/validation/arrays.d.ts +16 -0
- package/dist/types/v3/raw/validation/conditions.d.ts +10 -0
- package/dist/types/v3/raw/validation/index.d.ts +30 -0
- package/dist/types/v3/raw/validation/keywords.d.ts +10 -0
- package/dist/types/v3/raw/validation/messages.d.ts +8 -0
- package/dist/types/v3/raw/validation/patterns.d.ts +8 -0
- package/dist/types/v3/react/chain.d.ts +1 -0
- package/dist/types/v3/react/compat.d.ts +4 -0
- package/dist/types/v3/react/componentsProp.d.ts +5 -0
- package/dist/types/v3/react/defined.d.ts +1 -0
- package/dist/types/v3/react/ejs/EJSField.d.ts +14 -0
- package/dist/types/v3/react/ejs/index.d.ts +1 -0
- package/dist/types/v3/react/form/components.d.ts +3 -0
- package/dist/types/v3/react/form/fields.d.ts +8 -0
- package/dist/types/v3/react/form/host.d.ts +9 -0
- package/dist/types/v3/react/form/registry.d.ts +46 -0
- package/dist/types/v3/react/form/root.d.ts +32 -0
- package/dist/types/v3/react/form/runtime.d.ts +3 -0
- package/dist/types/v3/react/form/templates.d.ts +1 -0
- package/dist/types/v3/react/form/upload.d.ts +3 -0
- package/dist/types/v3/react/form/uploadContexts.d.ts +34 -0
- package/dist/types/v3/react/form/useSetDefault.d.ts +5 -0
- package/dist/types/v3/react/hostCore.d.ts +24 -0
- package/dist/types/v3/react/index.d.ts +23 -0
- package/dist/types/v3/react/selector.d.ts +10 -0
- package/dist/types/v3/react/slots.d.ts +4 -0
- package/dist/types/v3/react/toReact.d.ts +10 -0
- package/dist/types/v3/react/view/components.d.ts +8 -0
- package/dist/types/v3/react/view/fields.d.ts +4 -0
- package/dist/types/v3/react/view/host.d.ts +6 -0
- package/dist/types/v3/react/view/registry.d.ts +34 -0
- package/dist/types/v3/react/view/root.d.ts +32 -0
- package/dist/types/v3/react/view/templates.d.ts +15 -0
- package/package.json +97 -11
- package/styles.css +187 -0
- package/dist/cjs/Form/Form.js +0 -38
- package/dist/cjs/Form/components/Clickable.js +0 -11
- package/dist/cjs/Form/components/ErrorMessage.js +0 -23
- package/dist/cjs/Form/components/FieldInfo.js +0 -144
- package/dist/cjs/Form/components/FieldInput.js +0 -86
- package/dist/cjs/Form/components/Form.js +0 -52
- package/dist/cjs/Form/components/Icon.js +0 -5
- package/dist/cjs/Form/components/RequiredIndicator.js +0 -9
- package/dist/cjs/Form/components/index.js +0 -58
- package/dist/cjs/Form/fields/AnyField/AnyField.js +0 -30
- package/dist/cjs/Form/fields/AnyField/index.js +0 -38
- package/dist/cjs/Form/fields/AnyField/styledComponents.js +0 -6
- package/dist/cjs/Form/fields/ArrayField/ArrayField.js +0 -130
- package/dist/cjs/Form/fields/ArrayField/index.js +0 -38
- package/dist/cjs/Form/fields/ArrayField/styledComponents.js +0 -22
- package/dist/cjs/Form/fields/BooleanField/BooleanField.js +0 -26
- package/dist/cjs/Form/fields/BooleanField/index.js +0 -38
- package/dist/cjs/Form/fields/BooleanField/styledComponents.js +0 -18
- package/dist/cjs/Form/fields/DateField/DateField.js +0 -26
- package/dist/cjs/Form/fields/DateField/DateInput.js +0 -121
- package/dist/cjs/Form/fields/DateField/dateParsing.js +0 -68
- package/dist/cjs/Form/fields/DateField/index.js +0 -42
- package/dist/cjs/Form/fields/DateField/styledComponents.js +0 -60
- package/dist/cjs/Form/fields/FileUploadField/FileUploadField.js +0 -69
- package/dist/cjs/Form/fields/FileUploadField/FileUploadFieldInput.js +0 -21
- package/dist/cjs/Form/fields/FileUploadField/index.js +0 -41
- package/dist/cjs/Form/fields/FileUploadField/styledComponents.js +0 -63
- package/dist/cjs/Form/fields/FilesUploadField/FilesUploadField.js +0 -102
- package/dist/cjs/Form/fields/FilesUploadField/FilesUploadFieldInput.js +0 -174
- package/dist/cjs/Form/fields/FilesUploadField/index.js +0 -41
- package/dist/cjs/Form/fields/FilesUploadField/styledComponents.js +0 -217
- package/dist/cjs/Form/fields/MultipleChoiceField/MultipleChoiceField.js +0 -35
- package/dist/cjs/Form/fields/MultipleChoiceField/MultipleChoiceFieldInput.js +0 -40
- package/dist/cjs/Form/fields/MultipleChoiceField/index.js +0 -41
- package/dist/cjs/Form/fields/MultipleChoiceField/styledComponents.js +0 -24
- package/dist/cjs/Form/fields/NullField/NullField.js +0 -15
- package/dist/cjs/Form/fields/NullField/index.js +0 -37
- package/dist/cjs/Form/fields/NumberField/NumberField.js +0 -16
- package/dist/cjs/Form/fields/NumberField/index.js +0 -38
- package/dist/cjs/Form/fields/NumberField/styledComponents.js +0 -6
- package/dist/cjs/Form/fields/ObjectField/ObjectField.js +0 -190
- package/dist/cjs/Form/fields/ObjectField/ObjectFieldSection.js +0 -17
- package/dist/cjs/Form/fields/ObjectField/index.js +0 -41
- package/dist/cjs/Form/fields/ObjectField/styledComponents.js +0 -50
- package/dist/cjs/Form/fields/ObjectField/types.js +0 -10
- package/dist/cjs/Form/fields/RadioField/RadioField.js +0 -19
- package/dist/cjs/Form/fields/RadioField/RadioFieldInput.js +0 -11
- package/dist/cjs/Form/fields/RadioField/index.js +0 -41
- package/dist/cjs/Form/fields/RadioField/styledComponents.js +0 -78
- package/dist/cjs/Form/fields/SchemaField/SchemaField.js +0 -38
- package/dist/cjs/Form/fields/SchemaField/index.js +0 -37
- package/dist/cjs/Form/fields/SearchableMultiTagSelectField/SearchableMultiTagSelectField.js +0 -20
- package/dist/cjs/Form/fields/SearchableMultiTagSelectField/SearchableMultiTagSelectFieldInput.js +0 -27
- package/dist/cjs/Form/fields/SearchableMultiTagSelectField/index.js +0 -41
- package/dist/cjs/Form/fields/SearchableMultiTagSelectField/styledComponents.js +0 -71
- package/dist/cjs/Form/fields/SearchableSelectField/SearchableSelectField.js +0 -147
- package/dist/cjs/Form/fields/SearchableSelectField/index.js +0 -40
- package/dist/cjs/Form/fields/SearchableSelectField/styledComponents.js +0 -53
- package/dist/cjs/Form/fields/StringField/StringField.js +0 -44
- package/dist/cjs/Form/fields/StringField/index.js +0 -37
- package/dist/cjs/Form/fields/StringField/styledComponents.js +0 -6
- package/dist/cjs/Form/fields/TextAreaField/TextAreaField.js +0 -21
- package/dist/cjs/Form/fields/TextAreaField/index.js +0 -38
- package/dist/cjs/Form/fields/TextAreaField/styledComponents.js +0 -17
- package/dist/cjs/Form/fields/ToggleField/ToggleField.js +0 -19
- package/dist/cjs/Form/fields/ToggleField/ToggleFieldInput.js +0 -11
- package/dist/cjs/Form/fields/ToggleField/index.js +0 -41
- package/dist/cjs/Form/fields/ToggleField/styledComponents.js +0 -58
- package/dist/cjs/Form/fields/index.js +0 -93
- package/dist/cjs/Form/hooks/index.js +0 -17
- package/dist/cjs/Form/hooks/useSetDefault.js +0 -32
- package/dist/cjs/Form/index.js +0 -26
- package/dist/cjs/Form/styles/common.js +0 -259
- package/dist/cjs/Form/templates/ArrayFieldTemplate/ArrayFieldTemplate.js +0 -36
- package/dist/cjs/Form/templates/ArrayFieldTemplate/index.js +0 -38
- package/dist/cjs/Form/templates/ArrayFieldTemplate/styledComponents.js +0 -28
- package/dist/cjs/Form/templates/CollapsibleObjectFieldTemplate/CollapsibleObjectFieldTemplate.js +0 -41
- package/dist/cjs/Form/templates/CollapsibleObjectFieldTemplate/index.js +0 -38
- package/dist/cjs/Form/templates/CollapsibleObjectFieldTemplate/styledComponents.js +0 -55
- package/dist/cjs/Form/templates/FieldTemplate/FieldTemplate.js +0 -28
- package/dist/cjs/Form/templates/FieldTemplate/index.js +0 -37
- package/dist/cjs/Form/templates/ObjectFieldTemplate/ObjectFieldTemplate.js +0 -32
- package/dist/cjs/Form/templates/ObjectFieldTemplate/index.js +0 -38
- package/dist/cjs/Form/templates/ObjectFieldTemplate/styledComponents.js +0 -57
- package/dist/cjs/Form/templates/index.js +0 -55
- package/dist/cjs/Form/types/index.js +0 -17
- package/dist/cjs/FormView/FormView.js +0 -36
- package/dist/cjs/FormView/FormViewRegistry.js +0 -19
- package/dist/cjs/FormView/components/Field.js +0 -131
- package/dist/cjs/FormView/components/Form.js +0 -9
- package/dist/cjs/FormView/components/Icon.js +0 -7
- package/dist/cjs/FormView/components/index.js +0 -56
- package/dist/cjs/FormView/fields/AnyField.js +0 -26
- package/dist/cjs/FormView/fields/ArrayField.js +0 -32
- package/dist/cjs/FormView/fields/BooleanField.js +0 -33
- package/dist/cjs/FormView/fields/DateField.js +0 -12
- package/dist/cjs/FormView/fields/EJSField.js +0 -39
- package/dist/cjs/FormView/fields/FileUploadField.js +0 -7
- package/dist/cjs/FormView/fields/FilesUploadField.js +0 -7
- package/dist/cjs/FormView/fields/MultipleChoiceField.js +0 -30
- package/dist/cjs/FormView/fields/NullField.js +0 -14
- package/dist/cjs/FormView/fields/NumberField.js +0 -12
- package/dist/cjs/FormView/fields/ObjectField/ObjectField.js +0 -57
- package/dist/cjs/FormView/fields/ObjectField/ObjectFieldSection.js +0 -11
- package/dist/cjs/FormView/fields/ObjectField/index.js +0 -41
- package/dist/cjs/FormView/fields/ObjectField/styledComponents.js +0 -6
- package/dist/cjs/FormView/fields/RadioField.js +0 -15
- package/dist/cjs/FormView/fields/SchemaField.js +0 -38
- package/dist/cjs/FormView/fields/SearchableMultiTagSelectField.js +0 -14
- package/dist/cjs/FormView/fields/SearchableSelectField.js +0 -13
- package/dist/cjs/FormView/fields/StringField.js +0 -24
- package/dist/cjs/FormView/fields/TextAreaField.js +0 -18
- package/dist/cjs/FormView/fields/ToggleField.js +0 -15
- package/dist/cjs/FormView/fields/index.js +0 -81
- package/dist/cjs/FormView/index.js +0 -25
- package/dist/cjs/FormView/templates/ArrayFieldTemplate/ArrayFieldTemplate.js +0 -20
- package/dist/cjs/FormView/templates/ArrayFieldTemplate/index.js +0 -38
- package/dist/cjs/FormView/templates/ArrayFieldTemplate/styledComponents.js +0 -15
- package/dist/cjs/FormView/templates/FieldTemplate/FieldTemplate.js +0 -18
- package/dist/cjs/FormView/templates/FieldTemplate/index.js +0 -37
- package/dist/cjs/FormView/templates/ObjectFieldTemplate/ObjectFieldTemplate.js +0 -30
- package/dist/cjs/FormView/templates/ObjectFieldTemplate/index.js +0 -38
- package/dist/cjs/FormView/templates/ObjectFieldTemplate/styledComponents.js +0 -65
- package/dist/cjs/FormView/templates/index.js +0 -52
- package/dist/cjs/common/FileUploadContext.js +0 -15
- package/dist/cjs/common/FilesUploadContext.js +0 -14
- package/dist/cjs/common/constants.js +0 -13
- package/dist/cjs/common/index.js +0 -20
- package/dist/cjs/utils/createInitialValues.js +0 -38
- package/dist/cjs/utils/createValidationSchema.js +0 -397
- package/dist/cjs/utils/deepOverlap.js +0 -18
- package/dist/cjs/utils/extractUiSchema.js +0 -22
- package/dist/cjs/utils/getEnums.js +0 -56
- package/dist/cjs/utils/getHiddenProperties.js +0 -11
- package/dist/cjs/utils/getStyle.js +0 -21
- package/dist/cjs/utils/getTitleAndDescription.js +0 -19
- package/dist/cjs/utils/getTypes.js +0 -60
- package/dist/cjs/utils/immutablySwapItems.js +0 -10
- package/dist/cjs/utils/index.js +0 -31
- package/dist/cjs/utils/mergeSchemas.js +0 -30
- package/dist/cjs/utils/orderAdditionalProperties.js +0 -12
- package/dist/cjs/utils/orderByUiSchema.js +0 -29
- package/dist/cjs/utils/resolveSchema.js +0 -117
- package/dist/cjs/utils/setTitleValues.js +0 -25
- package/dist/cjs/utils/solveReferences.js +0 -25
- package/dist/esm/Form/Form.js +0 -34
- package/dist/esm/Form/components/Clickable.js +0 -7
- package/dist/esm/Form/components/ErrorMessage.js +0 -16
- package/dist/esm/Form/components/FieldInfo.js +0 -140
- package/dist/esm/Form/components/FieldInput.js +0 -50
- package/dist/esm/Form/components/Form.js +0 -13
- package/dist/esm/Form/components/Icon.js +0 -2
- package/dist/esm/Form/components/RequiredIndicator.js +0 -6
- package/dist/esm/Form/components/index.js +0 -22
- package/dist/esm/Form/fields/AnyField/AnyField.js +0 -26
- package/dist/esm/Form/fields/AnyField/index.js +0 -2
- package/dist/esm/Form/fields/AnyField/styledComponents.js +0 -3
- package/dist/esm/Form/fields/ArrayField/ArrayField.js +0 -126
- package/dist/esm/Form/fields/ArrayField/index.js +0 -2
- package/dist/esm/Form/fields/ArrayField/styledComponents.js +0 -16
- package/dist/esm/Form/fields/BooleanField/BooleanField.js +0 -22
- package/dist/esm/Form/fields/BooleanField/index.js +0 -2
- package/dist/esm/Form/fields/BooleanField/styledComponents.js +0 -15
- package/dist/esm/Form/fields/DateField/DateField.js +0 -22
- package/dist/esm/Form/fields/DateField/DateInput.js +0 -117
- package/dist/esm/Form/fields/DateField/dateParsing.js +0 -62
- package/dist/esm/Form/fields/DateField/index.js +0 -3
- package/dist/esm/Form/fields/DateField/styledComponents.js +0 -54
- package/dist/esm/Form/fields/FileUploadField/FileUploadField.js +0 -65
- package/dist/esm/Form/fields/FileUploadField/FileUploadFieldInput.js +0 -17
- package/dist/esm/Form/fields/FileUploadField/index.js +0 -5
- package/dist/esm/Form/fields/FileUploadField/styledComponents.js +0 -57
- package/dist/esm/Form/fields/FilesUploadField/FilesUploadField.js +0 -98
- package/dist/esm/Form/fields/FilesUploadField/FilesUploadFieldInput.js +0 -137
- package/dist/esm/Form/fields/FilesUploadField/index.js +0 -5
- package/dist/esm/Form/fields/FilesUploadField/styledComponents.js +0 -211
- package/dist/esm/Form/fields/MultipleChoiceField/MultipleChoiceField.js +0 -31
- package/dist/esm/Form/fields/MultipleChoiceField/MultipleChoiceFieldInput.js +0 -36
- package/dist/esm/Form/fields/MultipleChoiceField/index.js +0 -5
- package/dist/esm/Form/fields/MultipleChoiceField/styledComponents.js +0 -18
- package/dist/esm/Form/fields/NullField/NullField.js +0 -11
- package/dist/esm/Form/fields/NullField/index.js +0 -1
- package/dist/esm/Form/fields/NumberField/NumberField.js +0 -12
- package/dist/esm/Form/fields/NumberField/index.js +0 -2
- package/dist/esm/Form/fields/NumberField/styledComponents.js +0 -3
- package/dist/esm/Form/fields/ObjectField/ObjectField.js +0 -186
- package/dist/esm/Form/fields/ObjectField/ObjectFieldSection.js +0 -13
- package/dist/esm/Form/fields/ObjectField/index.js +0 -5
- package/dist/esm/Form/fields/ObjectField/styledComponents.js +0 -47
- package/dist/esm/Form/fields/ObjectField/types.js +0 -7
- package/dist/esm/Form/fields/RadioField/RadioField.js +0 -15
- package/dist/esm/Form/fields/RadioField/RadioFieldInput.js +0 -7
- package/dist/esm/Form/fields/RadioField/index.js +0 -5
- package/dist/esm/Form/fields/RadioField/styledComponents.js +0 -75
- package/dist/esm/Form/fields/SchemaField/SchemaField.js +0 -34
- package/dist/esm/Form/fields/SchemaField/index.js +0 -1
- package/dist/esm/Form/fields/SearchableMultiTagSelectField/SearchableMultiTagSelectField.js +0 -16
- package/dist/esm/Form/fields/SearchableMultiTagSelectField/SearchableMultiTagSelectFieldInput.js +0 -23
- package/dist/esm/Form/fields/SearchableMultiTagSelectField/index.js +0 -5
- package/dist/esm/Form/fields/SearchableMultiTagSelectField/styledComponents.js +0 -68
- package/dist/esm/Form/fields/SearchableSelectField/SearchableSelectField.js +0 -143
- package/dist/esm/Form/fields/SearchableSelectField/index.js +0 -4
- package/dist/esm/Form/fields/SearchableSelectField/styledComponents.js +0 -50
- package/dist/esm/Form/fields/StringField/StringField.js +0 -40
- package/dist/esm/Form/fields/StringField/index.js +0 -1
- package/dist/esm/Form/fields/StringField/styledComponents.js +0 -3
- package/dist/esm/Form/fields/TextAreaField/TextAreaField.js +0 -17
- package/dist/esm/Form/fields/TextAreaField/index.js +0 -2
- package/dist/esm/Form/fields/TextAreaField/styledComponents.js +0 -11
- package/dist/esm/Form/fields/ToggleField/ToggleField.js +0 -15
- package/dist/esm/Form/fields/ToggleField/ToggleFieldInput.js +0 -7
- package/dist/esm/Form/fields/ToggleField/index.js +0 -5
- package/dist/esm/Form/fields/ToggleField/styledComponents.js +0 -55
- package/dist/esm/Form/fields/index.js +0 -57
- package/dist/esm/Form/hooks/index.js +0 -1
- package/dist/esm/Form/hooks/useSetDefault.js +0 -28
- package/dist/esm/Form/index.js +0 -7
- package/dist/esm/Form/styles/common.js +0 -256
- package/dist/esm/Form/templates/ArrayFieldTemplate/ArrayFieldTemplate.js +0 -32
- package/dist/esm/Form/templates/ArrayFieldTemplate/index.js +0 -2
- package/dist/esm/Form/templates/ArrayFieldTemplate/styledComponents.js +0 -24
- package/dist/esm/Form/templates/CollapsibleObjectFieldTemplate/CollapsibleObjectFieldTemplate.js +0 -37
- package/dist/esm/Form/templates/CollapsibleObjectFieldTemplate/index.js +0 -2
- package/dist/esm/Form/templates/CollapsibleObjectFieldTemplate/styledComponents.js +0 -51
- package/dist/esm/Form/templates/FieldTemplate/FieldTemplate.js +0 -24
- package/dist/esm/Form/templates/FieldTemplate/index.js +0 -1
- package/dist/esm/Form/templates/ObjectFieldTemplate/ObjectFieldTemplate.js +0 -28
- package/dist/esm/Form/templates/ObjectFieldTemplate/index.js +0 -2
- package/dist/esm/Form/templates/ObjectFieldTemplate/styledComponents.js +0 -53
- package/dist/esm/Form/templates/index.js +0 -19
- package/dist/esm/Form/types/index.js +0 -1
- package/dist/esm/FormView/FormView.js +0 -29
- package/dist/esm/FormView/FormViewRegistry.js +0 -13
- package/dist/esm/FormView/components/Field.js +0 -123
- package/dist/esm/FormView/components/Form.js +0 -6
- package/dist/esm/FormView/components/Icon.js +0 -4
- package/dist/esm/FormView/components/index.js +0 -17
- package/dist/esm/FormView/fields/AnyField.js +0 -22
- package/dist/esm/FormView/fields/ArrayField.js +0 -28
- package/dist/esm/FormView/fields/BooleanField.js +0 -29
- package/dist/esm/FormView/fields/DateField.js +0 -8
- package/dist/esm/FormView/fields/EJSField.js +0 -32
- package/dist/esm/FormView/fields/FileUploadField.js +0 -3
- package/dist/esm/FormView/fields/FilesUploadField.js +0 -3
- package/dist/esm/FormView/fields/MultipleChoiceField.js +0 -26
- package/dist/esm/FormView/fields/NullField.js +0 -10
- package/dist/esm/FormView/fields/NumberField.js +0 -8
- package/dist/esm/FormView/fields/ObjectField/ObjectField.js +0 -53
- package/dist/esm/FormView/fields/ObjectField/ObjectFieldSection.js +0 -7
- package/dist/esm/FormView/fields/ObjectField/index.js +0 -5
- package/dist/esm/FormView/fields/ObjectField/styledComponents.js +0 -3
- package/dist/esm/FormView/fields/RadioField.js +0 -11
- package/dist/esm/FormView/fields/SchemaField.js +0 -34
- package/dist/esm/FormView/fields/SearchableMultiTagSelectField.js +0 -10
- package/dist/esm/FormView/fields/SearchableSelectField.js +0 -9
- package/dist/esm/FormView/fields/StringField.js +0 -20
- package/dist/esm/FormView/fields/TextAreaField.js +0 -14
- package/dist/esm/FormView/fields/ToggleField.js +0 -11
- package/dist/esm/FormView/fields/index.js +0 -45
- package/dist/esm/FormView/index.js +0 -6
- package/dist/esm/FormView/templates/ArrayFieldTemplate/ArrayFieldTemplate.js +0 -16
- package/dist/esm/FormView/templates/ArrayFieldTemplate/index.js +0 -2
- package/dist/esm/FormView/templates/ArrayFieldTemplate/styledComponents.js +0 -11
- package/dist/esm/FormView/templates/FieldTemplate/FieldTemplate.js +0 -14
- package/dist/esm/FormView/templates/FieldTemplate/index.js +0 -1
- package/dist/esm/FormView/templates/ObjectFieldTemplate/ObjectFieldTemplate.js +0 -26
- package/dist/esm/FormView/templates/ObjectFieldTemplate/index.js +0 -2
- package/dist/esm/FormView/templates/ObjectFieldTemplate/styledComponents.js +0 -58
- package/dist/esm/FormView/templates/index.js +0 -16
- package/dist/esm/common/FileUploadContext.js +0 -12
- package/dist/esm/common/FilesUploadContext.js +0 -11
- package/dist/esm/common/constants.js +0 -10
- package/dist/esm/common/index.js +0 -4
- package/dist/esm/utils/createInitialValues.js +0 -35
- package/dist/esm/utils/createValidationSchema.js +0 -361
- package/dist/esm/utils/deepOverlap.js +0 -14
- package/dist/esm/utils/extractUiSchema.js +0 -18
- package/dist/esm/utils/getEnums.js +0 -51
- package/dist/esm/utils/getHiddenProperties.js +0 -7
- package/dist/esm/utils/getStyle.js +0 -18
- package/dist/esm/utils/getTitleAndDescription.js +0 -14
- package/dist/esm/utils/getTypes.js +0 -53
- package/dist/esm/utils/immutablySwapItems.js +0 -7
- package/dist/esm/utils/index.js +0 -15
- package/dist/esm/utils/mergeSchemas.js +0 -26
- package/dist/esm/utils/orderAdditionalProperties.js +0 -9
- package/dist/esm/utils/orderByUiSchema.js +0 -26
- package/dist/esm/utils/resolveSchema.js +0 -112
- package/dist/esm/utils/setTitleValues.js +0 -21
- package/dist/esm/utils/solveReferences.js +0 -22
- package/dist/types/Form/Form.d.ts +0 -2
- package/dist/types/Form/FormRegistry.d.ts +0 -3
- package/dist/types/Form/components/Clickable.d.ts +0 -15
- package/dist/types/Form/components/ErrorMessage.d.ts +0 -3
- package/dist/types/Form/components/FieldInfo.d.ts +0 -10
- package/dist/types/Form/components/FieldInput.d.ts +0 -19
- package/dist/types/Form/components/Form.d.ts +0 -6
- package/dist/types/Form/components/Icon.d.ts +0 -1
- package/dist/types/Form/components/RequiredIndicator.d.ts +0 -1
- package/dist/types/Form/components/index.d.ts +0 -249
- package/dist/types/Form/fields/AnyField/AnyField.d.ts +0 -2
- package/dist/types/Form/fields/AnyField/index.d.ts +0 -2
- package/dist/types/Form/fields/AnyField/styledComponents.d.ts +0 -3
- package/dist/types/Form/fields/ArrayField/ArrayField.d.ts +0 -2
- package/dist/types/Form/fields/ArrayField/index.d.ts +0 -2
- package/dist/types/Form/fields/ArrayField/styledComponents.d.ts +0 -13
- package/dist/types/Form/fields/BooleanField/BooleanField.d.ts +0 -2
- package/dist/types/Form/fields/BooleanField/index.d.ts +0 -2
- package/dist/types/Form/fields/BooleanField/styledComponents.d.ts +0 -3
- package/dist/types/Form/fields/DateField/DateField.d.ts +0 -2
- package/dist/types/Form/fields/DateField/DateInput.d.ts +0 -17
- package/dist/types/Form/fields/DateField/dateParsing.d.ts +0 -9
- package/dist/types/Form/fields/DateField/index.d.ts +0 -3
- package/dist/types/Form/fields/DateField/styledComponents.d.ts +0 -4
- package/dist/types/Form/fields/FileUploadField/FileUploadField.d.ts +0 -2
- package/dist/types/Form/fields/FileUploadField/FileUploadFieldInput.d.ts +0 -25
- package/dist/types/Form/fields/FileUploadField/index.d.ts +0 -17
- package/dist/types/Form/fields/FileUploadField/styledComponents.d.ts +0 -11
- package/dist/types/Form/fields/FilesUploadField/FilesUploadField.d.ts +0 -2
- package/dist/types/Form/fields/FilesUploadField/FilesUploadFieldInput.d.ts +0 -42
- package/dist/types/Form/fields/FilesUploadField/index.d.ts +0 -37
- package/dist/types/Form/fields/FilesUploadField/styledComponents.d.ts +0 -32
- package/dist/types/Form/fields/MultipleChoiceField/MultipleChoiceField.d.ts +0 -2
- package/dist/types/Form/fields/MultipleChoiceField/MultipleChoiceFieldInput.d.ts +0 -17
- package/dist/types/Form/fields/MultipleChoiceField/index.d.ts +0 -22
- package/dist/types/Form/fields/MultipleChoiceField/styledComponents.d.ts +0 -16
- package/dist/types/Form/fields/NullField/NullField.d.ts +0 -2
- package/dist/types/Form/fields/NullField/index.d.ts +0 -1
- package/dist/types/Form/fields/NumberField/NumberField.d.ts +0 -2
- package/dist/types/Form/fields/NumberField/index.d.ts +0 -2
- package/dist/types/Form/fields/NumberField/styledComponents.d.ts +0 -1
- package/dist/types/Form/fields/ObjectField/ObjectField.d.ts +0 -2
- package/dist/types/Form/fields/ObjectField/ObjectFieldSection.d.ts +0 -3
- package/dist/types/Form/fields/ObjectField/index.d.ts +0 -20
- package/dist/types/Form/fields/ObjectField/styledComponents.d.ts +0 -15
- package/dist/types/Form/fields/ObjectField/types.d.ts +0 -19
- package/dist/types/Form/fields/RadioField/RadioField.d.ts +0 -2
- package/dist/types/Form/fields/RadioField/RadioFieldInput.d.ts +0 -11
- package/dist/types/Form/fields/RadioField/index.d.ts +0 -22
- package/dist/types/Form/fields/RadioField/styledComponents.d.ts +0 -16
- package/dist/types/Form/fields/SchemaField/SchemaField.d.ts +0 -2
- package/dist/types/Form/fields/SchemaField/index.d.ts +0 -1
- package/dist/types/Form/fields/SearchableMultiTagSelectField/SearchableMultiTagSelectField.d.ts +0 -2
- package/dist/types/Form/fields/SearchableMultiTagSelectField/SearchableMultiTagSelectFieldInput.d.ts +0 -11
- package/dist/types/Form/fields/SearchableMultiTagSelectField/index.d.ts +0 -21
- package/dist/types/Form/fields/SearchableMultiTagSelectField/styledComponents.d.ts +0 -15
- package/dist/types/Form/fields/SearchableSelectField/SearchableSelectField.d.ts +0 -2
- package/dist/types/Form/fields/SearchableSelectField/index.d.ts +0 -2
- package/dist/types/Form/fields/SearchableSelectField/styledComponents.d.ts +0 -22
- package/dist/types/Form/fields/SearchableSelectField/types.d.ts +0 -25
- package/dist/types/Form/fields/StringField/StringField.d.ts +0 -2
- package/dist/types/Form/fields/StringField/index.d.ts +0 -1
- package/dist/types/Form/fields/StringField/styledComponents.d.ts +0 -3
- package/dist/types/Form/fields/TextAreaField/TextAreaField.d.ts +0 -2
- package/dist/types/Form/fields/TextAreaField/index.d.ts +0 -2
- package/dist/types/Form/fields/TextAreaField/styledComponents.d.ts +0 -5
- package/dist/types/Form/fields/ToggleField/ToggleField.d.ts +0 -2
- package/dist/types/Form/fields/ToggleField/ToggleFieldInput.d.ts +0 -6
- package/dist/types/Form/fields/ToggleField/index.d.ts +0 -13
- package/dist/types/Form/fields/ToggleField/styledComponents.d.ts +0 -7
- package/dist/types/Form/fields/index.d.ts +0 -191
- package/dist/types/Form/hooks/index.d.ts +0 -1
- package/dist/types/Form/hooks/useSetDefault.d.ts +0 -2
- package/dist/types/Form/index.d.ts +0 -8
- package/dist/types/Form/styles/common.d.ts +0 -2
- package/dist/types/Form/templates/ArrayFieldTemplate/ArrayFieldTemplate.d.ts +0 -2
- package/dist/types/Form/templates/ArrayFieldTemplate/index.d.ts +0 -2
- package/dist/types/Form/templates/ArrayFieldTemplate/styledComponents.d.ts +0 -30
- package/dist/types/Form/templates/CollapsibleObjectFieldTemplate/CollapsibleObjectFieldTemplate.d.ts +0 -2
- package/dist/types/Form/templates/CollapsibleObjectFieldTemplate/index.d.ts +0 -2
- package/dist/types/Form/templates/CollapsibleObjectFieldTemplate/styledComponents.d.ts +0 -36
- package/dist/types/Form/templates/FieldTemplate/FieldTemplate.d.ts +0 -2
- package/dist/types/Form/templates/FieldTemplate/index.d.ts +0 -1
- package/dist/types/Form/templates/ObjectFieldTemplate/ObjectFieldTemplate.d.ts +0 -2
- package/dist/types/Form/templates/ObjectFieldTemplate/index.d.ts +0 -2
- package/dist/types/Form/templates/ObjectFieldTemplate/styledComponents.d.ts +0 -27
- package/dist/types/Form/templates/index.d.ts +0 -57
- package/dist/types/Form/types/FormRegistryContext.d.ts +0 -23
- package/dist/types/Form/types/index.d.ts +0 -1
- package/dist/types/FormView/FormView.d.ts +0 -4
- package/dist/types/FormView/FormViewRegistry.d.ts +0 -3
- package/dist/types/FormView/components/Field.d.ts +0 -35
- package/dist/types/FormView/components/Form.d.ts +0 -1
- package/dist/types/FormView/components/Icon.d.ts +0 -1
- package/dist/types/FormView/components/index.d.ts +0 -53
- package/dist/types/FormView/fields/AnyField.d.ts +0 -2
- package/dist/types/FormView/fields/ArrayField.d.ts +0 -2
- package/dist/types/FormView/fields/BooleanField.d.ts +0 -2
- package/dist/types/FormView/fields/DateField.d.ts +0 -2
- package/dist/types/FormView/fields/EJSField.d.ts +0 -2
- package/dist/types/FormView/fields/FileUploadField.d.ts +0 -2
- package/dist/types/FormView/fields/FilesUploadField.d.ts +0 -2
- package/dist/types/FormView/fields/MultipleChoiceField.d.ts +0 -2
- package/dist/types/FormView/fields/NullField.d.ts +0 -2
- package/dist/types/FormView/fields/NumberField.d.ts +0 -2
- package/dist/types/FormView/fields/ObjectField/ObjectField.d.ts +0 -2
- package/dist/types/FormView/fields/ObjectField/ObjectFieldSection.d.ts +0 -7
- package/dist/types/FormView/fields/ObjectField/index.d.ts +0 -8
- package/dist/types/FormView/fields/ObjectField/styledComponents.d.ts +0 -2
- package/dist/types/FormView/fields/RadioField.d.ts +0 -2
- package/dist/types/FormView/fields/SchemaField.d.ts +0 -2
- package/dist/types/FormView/fields/SearchableMultiTagSelectField.d.ts +0 -2
- package/dist/types/FormView/fields/SearchableSelectField.d.ts +0 -2
- package/dist/types/FormView/fields/StringField.d.ts +0 -2
- package/dist/types/FormView/fields/TextAreaField.d.ts +0 -2
- package/dist/types/FormView/fields/ToggleField.d.ts +0 -2
- package/dist/types/FormView/fields/index.d.ts +0 -9
- package/dist/types/FormView/index.d.ts +0 -7
- package/dist/types/FormView/templates/ArrayFieldTemplate/ArrayFieldTemplate.d.ts +0 -2
- package/dist/types/FormView/templates/ArrayFieldTemplate/index.d.ts +0 -2
- package/dist/types/FormView/templates/ArrayFieldTemplate/styledComponents.d.ts +0 -10
- package/dist/types/FormView/templates/FieldTemplate/FieldTemplate.d.ts +0 -2
- package/dist/types/FormView/templates/FieldTemplate/index.d.ts +0 -1
- package/dist/types/FormView/templates/ObjectFieldTemplate/ObjectFieldTemplate.d.ts +0 -2
- package/dist/types/FormView/templates/ObjectFieldTemplate/index.d.ts +0 -2
- package/dist/types/FormView/templates/ObjectFieldTemplate/styledComponents.d.ts +0 -10
- package/dist/types/FormView/templates/index.d.ts +0 -23
- package/dist/types/FormView/types/FormViewRegistryContext.d.ts +0 -21
- package/dist/types/FormView/types/index.d.ts +0 -1
- package/dist/types/common/FileUploadContext.d.ts +0 -18
- package/dist/types/common/FilesUploadContext.d.ts +0 -17
- package/dist/types/common/constants.d.ts +0 -10
- package/dist/types/common/index.d.ts +0 -4
- package/dist/types/styles/types.d.ts +0 -216
- package/dist/types/utils/createInitialValues.d.ts +0 -7
- package/dist/types/utils/createValidationSchema.d.ts +0 -31
- package/dist/types/utils/deepOverlap.d.ts +0 -1
- package/dist/types/utils/extractUiSchema.d.ts +0 -9
- package/dist/types/utils/getEnums.d.ts +0 -30
- package/dist/types/utils/getHiddenProperties.d.ts +0 -2
- package/dist/types/utils/getStyle.d.ts +0 -5
- package/dist/types/utils/getTitleAndDescription.d.ts +0 -12
- package/dist/types/utils/getTypes.d.ts +0 -5
- package/dist/types/utils/immutablySwapItems.d.ts +0 -1
- package/dist/types/utils/index.d.ts +0 -15
- package/dist/types/utils/mergeSchemas.d.ts +0 -1
- package/dist/types/utils/orderAdditionalProperties.d.ts +0 -2
- package/dist/types/utils/orderByUiSchema.d.ts +0 -2
- package/dist/types/utils/resolveSchema.d.ts +0 -4
- package/dist/types/utils/setTitleValues.d.ts +0 -1
- package/dist/types/utils/solveReferences.d.ts +0 -10
- /package/dist/cjs/{Form/fields/SearchableSelectField/types.js → common/types/Utils.js} +0 -0
- /package/dist/cjs/{styles → v3/raw/dom}/types.js +0 -0
- /package/dist/cjs/{Form/types/FormRegistryContext.js → v3/raw/model/form/types.js} +0 -0
- /package/dist/cjs/{FormView/types/FormViewRegistryContext.js → v3/raw/model/host.js} +0 -0
- /package/dist/cjs/{FormView/types/index.js → v3/raw/model/view/types.js} +0 -0
- /package/dist/esm/{Form/fields/SearchableSelectField/types.js → common/types/Utils.js} +0 -0
- /package/dist/esm/{styles → v3/raw/dom}/types.js +0 -0
- /package/dist/esm/{Form/types/FormRegistryContext.js → v3/raw/model/form/types.js} +0 -0
- /package/dist/esm/{FormView/types/FormViewRegistryContext.js → v3/raw/model/host.js} +0 -0
- /package/dist/esm/{FormView/types/index.js → v3/raw/model/view/types.js} +0 -0
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
import { issue } from "../../core/issues";
|
|
2
|
+
import { mayEnter } from "../../core/trail";
|
|
3
|
+
import { isPlainObject } from "../../core/json";
|
|
4
|
+
import { resolveRefs } from "../../core/refs";
|
|
5
|
+
import { getSchemaType } from "../../core/schemaType";
|
|
6
|
+
import { extractUiSchema } from "../../core/uiSchema";
|
|
7
|
+
import { h, withHost } from "../vnode";
|
|
8
|
+
import { fieldTemplateMarkup } from "./markup";
|
|
9
|
+
import { formChrome } from "./chrome";
|
|
10
|
+
import { anyField } from "./any";
|
|
11
|
+
import { arrayField } from "./array";
|
|
12
|
+
import { booleanField, nullField, stringField, textAreaField } from "./leaf";
|
|
13
|
+
import { objectField } from "./object";
|
|
14
|
+
import { plain } from "./markup";
|
|
15
|
+
import { multipleChoiceField, radioField, toggleField } from "./choice";
|
|
16
|
+
import { dateField } from "./date";
|
|
17
|
+
import { searchableMultiTagField, searchableSelectField } from "./searchable";
|
|
18
|
+
import { fileUploadMarkup, filesOf, filesUploadMarkup } from "./upload";
|
|
19
|
+
import { getIn } from "../../core/paths";
|
|
20
|
+
export const COMPONENT_TYPES = {
|
|
21
|
+
array: "ArrayField", boolean: "BooleanField", integer: "NumberField", number: "NumberField",
|
|
22
|
+
object: "ObjectField", string: "StringField", null: "NullField", any: "AnyField",
|
|
23
|
+
};
|
|
24
|
+
/** Built-in field names of slice S5. */
|
|
25
|
+
export const S5_FIELDS = new Set([
|
|
26
|
+
"DateField", "SearchableSelectField", "SearchableMultiTagSelectField", "MultipleChoiceField", "RadioField", "ToggleField", "FileUploadField", "FilesUploadField",
|
|
27
|
+
]);
|
|
28
|
+
const BUILT_IN = new Set([...Object.values(COMPONENT_TYPES), "TextAreaField", "SchemaField", ...S5_FIELDS]);
|
|
29
|
+
/** Fields that applied defaults on mount in 2.x (useSetDefault). */
|
|
30
|
+
const DEFAULTING = new Set(["StringField", "NumberField", "TextAreaField", "BooleanField", "ObjectField", "ArrayField", ...S5_FIELDS]);
|
|
31
|
+
/** The upload fields: the host renders its upload component here; RAW draws the state after mount (no upload running). */
|
|
32
|
+
const uploadHost = (ctx, field, p) => {
|
|
33
|
+
const value = getIn(ctx.values, p.name);
|
|
34
|
+
const markup = field === "FileUploadField"
|
|
35
|
+
? fileUploadMarkup(ctx, p, { value, uploadedFile: null, progress: 0 })
|
|
36
|
+
: filesUploadMarkup(ctx, p, { value, files: filesOf(value), progress: Object.fromEntries(filesOf(value).map((f) => [f.progressId, 100])), dragging: false });
|
|
37
|
+
const props = { name: p.name, schema: p.schema, uiSchema: p.ui, ...(p.required !== undefined ? { required: p.required } : {}), ...(p.hidden ? { "data-fjsf-hidden": "true" } : {}) };
|
|
38
|
+
return withHost(h("#fragment", {}, markup), { kind: "field", field, props });
|
|
39
|
+
};
|
|
40
|
+
const byType = (schema) => {
|
|
41
|
+
let type = getSchemaType(schema);
|
|
42
|
+
if (Array.isArray(type))
|
|
43
|
+
type = type[0];
|
|
44
|
+
return COMPONENT_TYPES[type || "any"];
|
|
45
|
+
};
|
|
46
|
+
/** A field the host provides: the caller's field gets the 2.x SchemaField props. */
|
|
47
|
+
const slot = (ctx, p, field, chain) => {
|
|
48
|
+
const props = {
|
|
49
|
+
"data-fjsf-kind": "custom", name: p.name, schema: p.schema, uiSchema: p.ui,
|
|
50
|
+
...(p.required !== undefined ? { required: p.required } : {}),
|
|
51
|
+
...(p.hidden ? { "data-fjsf-hidden": "true", style: { display: "none" } } : {}),
|
|
52
|
+
...(p.forceDefaultValue !== undefined ? { forceDefaultValue: p.forceDefaultValue } : {}),
|
|
53
|
+
};
|
|
54
|
+
const markup = fieldTemplateMarkup(formChrome(ctx, { ...p, kind: "custom" }), [h("div", { "data-fjsf-slot": p.name, "data-fjsf-field": field })]);
|
|
55
|
+
return withHost(markup, { kind: "field", field, props, chain });
|
|
56
|
+
};
|
|
57
|
+
export const formField = (ctx, p, chain = [], trail = []) => {
|
|
58
|
+
const given = p.schema;
|
|
59
|
+
const ref = isPlainObject(given) && typeof given.$ref === "string" ? given.$ref : undefined;
|
|
60
|
+
if (ref && chain.includes(ref)) {
|
|
61
|
+
ctx.sink(issue("REF_CYCLE", p.name, ref));
|
|
62
|
+
return nullField(ctx, { ...p, kind: "error" });
|
|
63
|
+
}
|
|
64
|
+
const next = ref ? [...chain, ref] : chain;
|
|
65
|
+
const resolved = given === undefined
|
|
66
|
+
? { schema: undefined, uiSchema: p.ui }
|
|
67
|
+
: resolveRefs(given, p.ui, { definitions: ctx.definitions, defs: ctx.defs, uiSchemaDefinitions: ctx.uiDefinitions, sink: ctx.sink, path: p.name });
|
|
68
|
+
const q = { ...p, schema: resolved.schema, ui: resolved.uiSchema };
|
|
69
|
+
const field = extractUiSchema(q.ui).field;
|
|
70
|
+
if (typeof field === "function")
|
|
71
|
+
return slot(ctx, q, "", next);
|
|
72
|
+
if (typeof field === "string" && ctx.customFields.includes(field))
|
|
73
|
+
return slot(ctx, q, field, next);
|
|
74
|
+
// SEC-UI-1/2: an unknown name (also "constructor", "toString") is reported and the type's field renders.
|
|
75
|
+
if (typeof field === "string" && !BUILT_IN.has(field))
|
|
76
|
+
ctx.sink(issue("FIELD_UNKNOWN", q.name, field));
|
|
77
|
+
let component = typeof field === "string" && BUILT_IN.has(field) ? field : byType(q.schema);
|
|
78
|
+
if (!component) {
|
|
79
|
+
ctx.sink(issue("SCHEMA_UNSUPPORTED_TYPE", q.name, String(getSchemaType(q.schema))));
|
|
80
|
+
return h("p", { style: "color:red" }, '!!! Unsupported field "" !!!');
|
|
81
|
+
}
|
|
82
|
+
if (ctx.customFields.includes(component))
|
|
83
|
+
return slot(ctx, q, component, next);
|
|
84
|
+
return builtIn(ctx, component, q, next, trail);
|
|
85
|
+
};
|
|
86
|
+
/** One built-in field by name (2.x `FormFields.X`). */
|
|
87
|
+
export const builtIn = (ctx, component, p, chain = [], trail = []) => {
|
|
88
|
+
if (DEFAULTING.has(component) && p.name)
|
|
89
|
+
ctx.appeared.push({ path: p.name, schema: p.schema, forceDefaultValue: !!p.forceDefaultValue });
|
|
90
|
+
switch (component) {
|
|
91
|
+
case "ObjectField":
|
|
92
|
+
// BUG-110: an object schema that contains itself, or nests too deep, is cut with a code.
|
|
93
|
+
if (!isPlainObject(p.schema) || mayEnter(p.schema, trail, ctx.sink, p.name))
|
|
94
|
+
return objectField(ctx, p, chain, isPlainObject(p.schema) ? [...trail, p.schema] : trail);
|
|
95
|
+
return nullField(ctx, { ...p, kind: "error" });
|
|
96
|
+
case "ArrayField": return arrayField(ctx, p, chain);
|
|
97
|
+
case "NumberField": return plain("div", "NumberFieldWrapper", {}, stringField(ctx, p, true));
|
|
98
|
+
case "StringField": return stringField(ctx, p);
|
|
99
|
+
case "TextAreaField": return textAreaField(ctx, p);
|
|
100
|
+
case "BooleanField": return booleanField(ctx, p);
|
|
101
|
+
case "NullField": return nullField(ctx, p);
|
|
102
|
+
case "AnyField": return anyField(ctx, p, chain, trail);
|
|
103
|
+
case "SchemaField": return formField(ctx, p, chain, trail);
|
|
104
|
+
case "DateField": return dateField(ctx, p);
|
|
105
|
+
case "RadioField": return radioField(ctx, p);
|
|
106
|
+
case "ToggleField": return toggleField(ctx, p);
|
|
107
|
+
case "MultipleChoiceField": return multipleChoiceField(ctx, p);
|
|
108
|
+
case "SearchableSelectField": return searchableSelectField(ctx, p);
|
|
109
|
+
case "SearchableMultiTagSelectField": return searchableMultiTagField(ctx, p);
|
|
110
|
+
case "FileUploadField":
|
|
111
|
+
case "FilesUploadField": return uploadHost(ctx, component, p);
|
|
112
|
+
default: return builtIn(ctx, byType(p.schema) ?? "AnyField", p, chain, trail);
|
|
113
|
+
}
|
|
114
|
+
};
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
// react-icons (Font Awesome 5) glyphs 2.x rendered in the S5 fields, as data: the v3 React layer may not import
|
|
2
|
+
// react-icons (ESLint boundary). Generated from react-icons/fa; rendered by iconMarkup (form/icons.ts).
|
|
3
|
+
export const ICONS = {
|
|
4
|
+
FaCalendar: { viewBox: "0 0 448 512", paths: ["M12 192h424c6.6 0 12 5.4 12 12v260c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V204c0-6.6 5.4-12 12-12zm436-44v-36c0-26.5-21.5-48-48-48h-48V12c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v52H160V12c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v52H48C21.5 64 0 85.5 0 112v36c0 6.6 5.4 12 12 12h424c6.6 0 12-5.4 12-12z"] },
|
|
5
|
+
FaCloudUploadAlt: { viewBox: "0 0 640 512", paths: ["M537.6 226.6c4.1-10.7 6.4-22.4 6.4-34.6 0-53-43-96-96-96-19.7 0-38.1 6-53.3 16.2C367 64.2 315.3 32 256 32c-88.4 0-160 71.6-160 160 0 2.7.1 5.4.2 8.1C40.2 219.8 0 273.2 0 336c0 79.5 64.5 144 144 144h368c70.7 0 128-57.3 128-128 0-61.9-44-113.6-102.4-125.4zM393.4 288H328v112c0 8.8-7.2 16-16 16h-48c-8.8 0-16-7.2-16-16V288h-65.4c-14.3 0-21.4-17.2-11.3-27.3l105.4-105.4c6.2-6.2 16.4-6.2 22.6 0l105.4 105.4c10.1 10.1 2.9 27.3-11.3 27.3z"] },
|
|
6
|
+
FaTrash: { viewBox: "0 0 448 512", paths: ["M432 32H312l-9.4-18.7A24 24 0 0 0 281.1 0H166.8a23.72 23.72 0 0 0-21.4 13.3L136 32H16A16 16 0 0 0 0 48v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zM53.2 467a48 48 0 0 0 47.9 45h245.8a48 48 0 0 0 47.9-45L416 128H32z"] },
|
|
7
|
+
FaFile: { viewBox: "0 0 384 512", paths: ["M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm160-14.1v6.1H256V0h6.1c6.4 0 12.5 2.5 17 7l97.9 98c4.5 4.5 7 10.6 7 16.9z"] },
|
|
8
|
+
FaFilePdf: { viewBox: "0 0 384 512", paths: ["M181.9 256.1c-5-16-4.9-46.9-2-46.9 8.4 0 7.6 36.9 2 46.9zm-1.7 47.2c-7.7 20.2-17.3 43.3-28.4 62.7 18.3-7 39-17.2 62.9-21.9-12.7-9.6-24.9-23.4-34.5-40.8zM86.1 428.1c0 .8 13.2-5.4 34.9-40.2-6.7 6.3-29.1 24.5-34.9 40.2zM248 160h136v328c0 13.3-10.7 24-24 24H24c-13.3 0-24-10.7-24-24V24C0 10.7 10.7 0 24 0h200v136c0 13.2 10.8 24 24 24zm-8 171.8c-20-12.2-33.3-29-42.7-53.8 4.5-18.5 11.6-46.6 6.2-64.2-4.7-29.4-42.4-26.5-47.8-6.8-5 18.3-.4 44.1 8.1 77-11.6 27.6-28.7 64.6-40.8 85.8-.1 0-.1.1-.2.1-27.1 13.9-73.6 44.5-54.5 68 5.6 6.9 16 10 21.5 10 17.9 0 35.7-18 61.1-61.8 25.8-8.5 54.1-19.1 79-23.2 21.7 11.8 47.1 19.5 64 19.5 29.2 0 31.2-32 19.7-43.4-13.9-13.6-54.3-9.7-73.6-7.2zM377 105L279 7c-4.5-4.5-10.6-7-17-7h-6v128h128v-6.1c0-6.3-2.5-12.4-7-16.9zm-74.1 255.3c4.1-2.7-2.5-11.9-42.8-9 37.1 15.8 42.8 9 42.8 9z"] },
|
|
9
|
+
FaFileAudio: { viewBox: "0 0 384 512", paths: ["M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm-64 268c0 10.7-12.9 16-20.5 8.5L104 376H76c-6.6 0-12-5.4-12-12v-56c0-6.6 5.4-12 12-12h28l35.5-36.5c7.6-7.6 20.5-2.2 20.5 8.5v136zm33.2-47.6c9.1-9.3 9.1-24.1 0-33.4-22.1-22.8 12.2-56.2 34.4-33.5 27.2 27.9 27.2 72.4 0 100.4-21.8 22.3-56.9-10.4-34.4-33.5zm86-117.1c54.4 55.9 54.4 144.8 0 200.8-21.8 22.4-57-10.3-34.4-33.5 36.2-37.2 36.3-96.5 0-133.8-22.1-22.8 12.3-56.3 34.4-33.5zM384 121.9v6.1H256V0h6.1c6.4 0 12.5 2.5 17 7l97.9 98c4.5 4.5 7 10.6 7 16.9z"] },
|
|
10
|
+
FaFileImage: { viewBox: "0 0 384 512", paths: ["M384 121.941V128H256V0h6.059a24 24 0 0 1 16.97 7.029l97.941 97.941a24.002 24.002 0 0 1 7.03 16.971zM248 160c-13.2 0-24-10.8-24-24V0H24C10.745 0 0 10.745 0 24v464c0 13.255 10.745 24 24 24h336c13.255 0 24-10.745 24-24V160H248zm-135.455 16c26.51 0 48 21.49 48 48s-21.49 48-48 48-48-21.49-48-48 21.491-48 48-48zm208 240h-256l.485-48.485L104.545 328c4.686-4.686 11.799-4.201 16.485.485L160.545 368 264.06 264.485c4.686-4.686 12.284-4.686 16.971 0L320.545 304v112z"] },
|
|
11
|
+
FaFileCsv: { viewBox: "0 0 384 512", paths: ["M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm-96 144c0 4.42-3.58 8-8 8h-8c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h8c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8h-8c-26.51 0-48-21.49-48-48v-32c0-26.51 21.49-48 48-48h8c4.42 0 8 3.58 8 8v16zm44.27 104H160c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h12.27c5.95 0 10.41-3.5 10.41-6.62 0-1.3-.75-2.66-2.12-3.84l-21.89-18.77c-8.47-7.22-13.33-17.48-13.33-28.14 0-21.3 19.02-38.62 42.41-38.62H200c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8h-12.27c-5.95 0-10.41 3.5-10.41 6.62 0 1.3.75 2.66 2.12 3.84l21.89 18.77c8.47 7.22 13.33 17.48 13.33 28.14.01 21.29-19 38.62-42.39 38.62zM256 264v20.8c0 20.27 5.7 40.17 16 56.88 10.3-16.7 16-36.61 16-56.88V264c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v20.8c0 35.48-12.88 68.89-36.28 94.09-3.02 3.25-7.27 5.11-11.72 5.11s-8.7-1.86-11.72-5.11c-23.4-25.2-36.28-58.61-36.28-94.09V264c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8zm121-159L279.1 7c-4.5-4.5-10.6-7-17-7H256v128h128v-6.1c0-6.3-2.5-12.4-7-16.9z"] },
|
|
12
|
+
FaFileWord: { viewBox: "0 0 384 512", paths: ["M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm57.1 120H305c7.7 0 13.4 7.1 11.7 14.7l-38 168c-1.2 5.5-6.1 9.3-11.7 9.3h-38c-5.5 0-10.3-3.8-11.6-9.1-25.8-103.5-20.8-81.2-25.6-110.5h-.5c-1.1 14.3-2.4 17.4-25.6 110.5-1.3 5.3-6.1 9.1-11.6 9.1H117c-5.6 0-10.5-3.9-11.7-9.4l-37.8-168c-1.7-7.5 4-14.6 11.7-14.6h24.5c5.7 0 10.7 4 11.8 9.7 15.6 78 20.1 109.5 21 122.2 1.6-10.2 7.3-32.7 29.4-122.7 1.3-5.4 6.1-9.1 11.7-9.1h29.1c5.6 0 10.4 3.8 11.7 9.2 24 100.4 28.8 124 29.6 129.4-.2-11.2-2.6-17.8 21.6-129.2 1-5.6 5.9-9.5 11.5-9.5zM384 121.9v6.1H256V0h6.1c6.4 0 12.5 2.5 17 7l97.9 98c4.5 4.5 7 10.6 7 16.9z"] },
|
|
13
|
+
FaFileExcel: { viewBox: "0 0 384 512", paths: ["M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm60.1 106.5L224 336l60.1 93.5c5.1 8-.6 18.5-10.1 18.5h-34.9c-4.4 0-8.5-2.4-10.6-6.3C208.9 405.5 192 373 192 373c-6.4 14.8-10 20-36.6 68.8-2.1 3.9-6.1 6.3-10.5 6.3H110c-9.5 0-15.2-10.5-10.1-18.5l60.3-93.5-60.3-93.5c-5.2-8 .6-18.5 10.1-18.5h34.8c4.4 0 8.5 2.4 10.6 6.3 26.1 48.8 20 33.6 36.6 68.5 0 0 6.1-11.7 36.6-68.5 2.1-3.9 6.2-6.3 10.6-6.3H274c9.5-.1 15.2 10.4 10.1 18.4zM384 121.9v6.1H256V0h6.1c6.4 0 12.5 2.5 17 7l97.9 98c4.5 4.5 7 10.6 7 16.9z"] },
|
|
14
|
+
FaFilePowerpoint: { viewBox: "0 0 384 512", paths: ["M193.7 271.2c8.8 0 15.5 2.7 20.3 8.1 9.6 10.9 9.8 32.7-.2 44.1-4.9 5.6-11.9 8.5-21.1 8.5h-26.9v-60.7h27.9zM377 105L279 7c-4.5-4.5-10.6-7-17-7h-6v128h128v-6.1c0-6.3-2.5-12.4-7-16.9zm-153 31V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm53 165.2c0 90.3-88.8 77.6-111.1 77.6V436c0 6.6-5.4 12-12 12h-30.8c-6.6 0-12-5.4-12-12V236.2c0-6.6 5.4-12 12-12h81c44.5 0 72.9 32.8 72.9 77z"] },
|
|
15
|
+
FaFileCode: { viewBox: "0 0 384 512", paths: ["M384 121.941V128H256V0h6.059c6.365 0 12.47 2.529 16.971 7.029l97.941 97.941A24.005 24.005 0 0 1 384 121.941zM248 160c-13.2 0-24-10.8-24-24V0H24C10.745 0 0 10.745 0 24v464c0 13.255 10.745 24 24 24h336c13.255 0 24-10.745 24-24V160H248zM123.206 400.505a5.4 5.4 0 0 1-7.633.246l-64.866-60.812a5.4 5.4 0 0 1 0-7.879l64.866-60.812a5.4 5.4 0 0 1 7.633.246l19.579 20.885a5.4 5.4 0 0 1-.372 7.747L101.65 336l40.763 35.874a5.4 5.4 0 0 1 .372 7.747l-19.579 20.884zm51.295 50.479l-27.453-7.97a5.402 5.402 0 0 1-3.681-6.692l61.44-211.626a5.402 5.402 0 0 1 6.692-3.681l27.452 7.97a5.4 5.4 0 0 1 3.68 6.692l-61.44 211.626a5.397 5.397 0 0 1-6.69 3.681zm160.792-111.045l-64.866 60.812a5.4 5.4 0 0 1-7.633-.246l-19.58-20.885a5.4 5.4 0 0 1 .372-7.747L284.35 336l-40.763-35.874a5.4 5.4 0 0 1-.372-7.747l19.58-20.885a5.4 5.4 0 0 1 7.633-.246l64.866 60.812a5.4 5.4 0 0 1-.001 7.879z"] },
|
|
16
|
+
};
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { h } from "../vnode";
|
|
2
|
+
import { ICONS } from "./iconData";
|
|
3
|
+
export const iconMarkup = (name, className) => {
|
|
4
|
+
const icon = ICONS[name] ?? ICONS.FaFile;
|
|
5
|
+
return h("svg", { stroke: "currentColor", fill: "currentColor", "stroke-width": "0", viewBox: icon.viewBox, ...(className ? { class: className } : {}), height: "1em", width: "1em", xmlns: "http://www.w3.org/2000/svg" }, icon.paths.map((d) => h("path", { d })));
|
|
6
|
+
};
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { ignoreIssues } from "../../core/issues";
|
|
2
|
+
import { isPlainObject } from "../../core/json";
|
|
3
|
+
import { fc } from "./markup";
|
|
4
|
+
export const createFormContext = (schema, uiSchema, state, o = {}) => ({
|
|
5
|
+
values: state.values ?? {},
|
|
6
|
+
errors: state.errors ?? {},
|
|
7
|
+
touched: state.touched ?? {},
|
|
8
|
+
submitting: !!state.submitting,
|
|
9
|
+
customFields: o.customFields ?? [],
|
|
10
|
+
definitions: o.definitions ?? (isPlainObject(schema?.definitions) ? schema.definitions : {}),
|
|
11
|
+
defs: o.defs ?? (isPlainObject(schema?.$defs) ? schema.$defs : undefined),
|
|
12
|
+
uiDefinitions: o.uiDefinitions ?? uiSchema?.definitions,
|
|
13
|
+
sink: o.sink ?? ignoreIssues,
|
|
14
|
+
formLocalization: o.formLocalization,
|
|
15
|
+
formOptions: o.formOptions,
|
|
16
|
+
locale: o.locale,
|
|
17
|
+
ui: o.ui ?? {},
|
|
18
|
+
hideUnmarkedAdditionalProperties: !!o.hideUnmarkedAdditionalProperties,
|
|
19
|
+
orderable: !!o.orderable,
|
|
20
|
+
appeared: [],
|
|
21
|
+
prune: [],
|
|
22
|
+
anyGuesses: {},
|
|
23
|
+
});
|
|
24
|
+
/** 2.x <Form>: formik's <form action="#"> (registry Form), the fields, then the caller's children or the submit button. */
|
|
25
|
+
export const formShell = (content, o) => {
|
|
26
|
+
const submit = o.hideSubmit ? null : fc(["FormButton"], { type: "submit", disabled: o.submitting || undefined, "data-fjsf-button": "submit" }, "Send");
|
|
27
|
+
const form = fc(["Form"], { action: "#", ...(o.className ? { class: o.className } : {}) }, content, o.children !== undefined ? o.children : fc(["FormButtonWrapper"], {}, submit));
|
|
28
|
+
return { ...form, on: { submit: { type: "submit" } } };
|
|
29
|
+
};
|
|
30
|
+
export { applyAction } from "./actions";
|
|
31
|
+
export { newAppearances, settle } from "./appearance";
|
|
32
|
+
export { builtIn, formField, S5_FIELDS } from "./dispatch";
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
import { EnumsTypes, getEnums } from "../../core/enums";
|
|
2
|
+
import { isPlainObject } from "../../core/json";
|
|
3
|
+
import { getIn } from "../../core/paths";
|
|
4
|
+
import { getSchemaType } from "../../core/schemaType";
|
|
5
|
+
import { filterUiProps } from "../../core/uiProps";
|
|
6
|
+
import { extractUiSchema } from "../../core/uiSchema";
|
|
7
|
+
import { h } from "../vnode";
|
|
8
|
+
import { reactAttr, reactText } from "../view/values";
|
|
9
|
+
import { formChrome } from "./chrome";
|
|
10
|
+
import { fc, fcAs, fieldTemplateMarkup, plain } from "./markup";
|
|
11
|
+
import { templated } from "./templated";
|
|
12
|
+
/** HTML input types a uiSchema may pick (`ui:type` / `ui:options.type`); others fall back to text. */
|
|
13
|
+
const INPUT_TYPES = new Set(["text", "number", "email", "tel", "url", "password", "search", "date", "time", "datetime-local", "month", "week", "color", "range"]);
|
|
14
|
+
const NOT_INPUT_PROPS = new Set(["wrapper", "title", "description", "help", "error", "type"]);
|
|
15
|
+
/** `ui:props` for the control (2.x spread them verbatim), through the D5 allowlist. */
|
|
16
|
+
export const inputAttrs = (ctx, p) => {
|
|
17
|
+
const props = extractUiSchema(p.ui).props;
|
|
18
|
+
if (!isPlainObject(props))
|
|
19
|
+
return {};
|
|
20
|
+
const own = Object.fromEntries(Object.entries(props).filter(([k]) => !NOT_INPUT_PROPS.has(k)));
|
|
21
|
+
return filterUiProps(own, p.name, ctx.sink).attrs;
|
|
22
|
+
};
|
|
23
|
+
const control = (p) => ({ name: p.name, readonly: p.schema?.readOnly ? true : undefined });
|
|
24
|
+
/** The control's actions. Q-RO-1: a readOnly control never changes the value (browsers ignore readonly on select/checkbox). */
|
|
25
|
+
export const on = (p, parse, consts) => ({
|
|
26
|
+
...(p.schema?.readOnly ? {} : { change: { type: "set", path: p.name, parse, ...(consts ? { consts } : {}) } }),
|
|
27
|
+
// A readOnly checkbox / radio must not even toggle visually (2.x blocked the pointer).
|
|
28
|
+
...(p.schema?.readOnly && (parse === "checkbox" || parse === "radio") ? { click: { type: "preventDefault" } } : {}),
|
|
29
|
+
blur: { type: "touch", path: p.name },
|
|
30
|
+
});
|
|
31
|
+
const field = (ctx, p, content) => templated(ctx, "FieldTemplate", p, fieldTemplateMarkup(formChrome(ctx, p), content), content);
|
|
32
|
+
/** StringField / NumberField: an input, or a select for `oneOf`/`enum` consts. */
|
|
33
|
+
export const stringField = (ctx, p, numberField = false) => {
|
|
34
|
+
const ui = extractUiSchema(p.ui);
|
|
35
|
+
const value = getIn(ctx.values, p.name);
|
|
36
|
+
const enums = getEnums({ schema: p.schema }, ctx.sink, p.name);
|
|
37
|
+
// Q-REN-4 kept (Q12): 2.x tests `schema.type === "string"`, so type arrays carry data-fjsf-number.
|
|
38
|
+
const data = p.schema?.type === "string" ? { "data-fjsf-string": p.name } : { "data-fjsf-number": p.name };
|
|
39
|
+
// 2.x NumberField put type "number" into ui:props; `ui:options.props` replaces those (extractUiSchema), so such
|
|
40
|
+
// fields were text inputs storing strings. Kept: pro3's stored format (legacy/completeDisabled).
|
|
41
|
+
const numberType = numberField && !isPlainObject(p.ui?.["ui:options"]?.props);
|
|
42
|
+
const type = numberType ? "number" : typeof ui.type === "string" && INPUT_TYPES.has(ui.type) ? ui.type : undefined;
|
|
43
|
+
const isSelect = enums?.type === EnumsTypes.SELECT;
|
|
44
|
+
const props = { ...p, data, kind: p.kind ?? (isSelect ? "enum" : ["number", "integer"].includes(getSchemaType(p.schema)) ? "number" : "string") };
|
|
45
|
+
if (isSelect) {
|
|
46
|
+
const placeholderOpts = ui.placeholderOptionOptions?.props ?? {};
|
|
47
|
+
const options = [
|
|
48
|
+
h("option", { value: "", disabled: placeholderOpts.disabled === true ? true : undefined, hidden: placeholderOpts.hidden === false ? undefined : true }, reactText(ui.placeholder)),
|
|
49
|
+
...enums.values.map((o) => h("option", { value: reactAttr(o?.const) ?? "" }, reactText(o?.title))),
|
|
50
|
+
];
|
|
51
|
+
const select = { ...fcAs("select", ["SelectFieldInput"], { ...inputAttrs(ctx, props), ...control(props), value: reactAttr(value) ?? "" }, options), on: on(props, "enum", enums.values.map((o) => o?.const)) };
|
|
52
|
+
return field(ctx, props, [plain("div", "StringFieldWrapper", {}, select)]);
|
|
53
|
+
}
|
|
54
|
+
const input = { ...fc(["FieldInput"], { type, placeholder: reactAttr(ui.placeholder), ...inputAttrs(ctx, props), ...control(props), value: textValue(value) }), on: on(props, type === "number" ? "number" : "text") };
|
|
55
|
+
return field(ctx, props, [plain("div", "StringFieldWrapper", {}, input)]);
|
|
56
|
+
};
|
|
57
|
+
/** What an input shows for a stored value (React renders primitives; objects and arrays are not shown). */
|
|
58
|
+
export const textValue = (value) => {
|
|
59
|
+
if (value === undefined || value === null)
|
|
60
|
+
return "";
|
|
61
|
+
try {
|
|
62
|
+
return String(value); // React's coercion: an object shows "[object Object]", an array "a,b" (2.x)
|
|
63
|
+
}
|
|
64
|
+
catch {
|
|
65
|
+
return ""; // a null-prototype object has no toString (BUG-109: never throw)
|
|
66
|
+
}
|
|
67
|
+
};
|
|
68
|
+
export const textAreaField = (ctx, p) => {
|
|
69
|
+
const props = { ...p, data: { "data-fjsf-string": p.name }, kind: "textarea" };
|
|
70
|
+
const value = textValue(getIn(ctx.values, p.name));
|
|
71
|
+
const area = {
|
|
72
|
+
...fcAs("textarea", ["TextAreaFieldInput"], { placeholder: reactAttr(extractUiSchema(p.ui).placeholder), ...inputAttrs(ctx, props), ...control(props), value }),
|
|
73
|
+
on: on(props, "text"),
|
|
74
|
+
};
|
|
75
|
+
return field(ctx, props, [area]);
|
|
76
|
+
};
|
|
77
|
+
/** BooleanField: a checkbox (stores true/false, Q-R19-1) and its ui:label, which toggles on click (BUG-FMK-1: nested path). */
|
|
78
|
+
export const booleanField = (ctx, p) => {
|
|
79
|
+
const props = { ...p, data: { "data-fjsf-boolean": p.name }, kind: p.kind ?? "boolean" };
|
|
80
|
+
const value = getIn(ctx.values, p.name);
|
|
81
|
+
const label = extractUiSchema(p.ui).label;
|
|
82
|
+
// Q-UI-8: 2.x crashed on a {true,false} label in Form; v3 shows the one for the value.
|
|
83
|
+
const text = isPlainObject(label) ? reactText(value === true ? label.true : value === false ? label.false : undefined) : reactText(label);
|
|
84
|
+
// formik Field: checked = !!value (a stored truthy string shows checked); a change stores a boolean (Q-R19-1).
|
|
85
|
+
const box = { ...fc(["FieldInput"], { ...inputAttrs(ctx, props), ...control(props), type: "checkbox", checked: !!value }), on: on(props, "checkbox") };
|
|
86
|
+
const span = { ...h("span", {}, text), on: { click: { type: "toggle", path: p.name } } };
|
|
87
|
+
return field(ctx, props, [fc(["BooleanFieldWrapper"], {}, box, span)]);
|
|
88
|
+
};
|
|
89
|
+
export const nullField = (ctx, p) => field(ctx, { ...p, data: { "data-fjsf-null": p.name }, kind: "null" }, []);
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { expandClasses } from "../classes";
|
|
2
|
+
import { h, withHost } from "../vnode";
|
|
3
|
+
import { FORM_COMPONENTS } from "./componentTable";
|
|
4
|
+
const classOf = (chain, extra) => [...expandClasses(chain.map((n) => `fjsf-${n}`)), ...(typeof extra === "string" && extra ? [extra] : [])].join(" ");
|
|
5
|
+
/** A registry component element: the default is the first name of the chain that 2.x defines. */
|
|
6
|
+
export const fc = (names, attrs, ...children) => fcAs(undefined, names, attrs, ...children);
|
|
7
|
+
/** Same, with another tag (2.x `formikAs`: a FieldInput rendered as select / textarea). */
|
|
8
|
+
export const fcAs = (tag, names, attrs, ...children) => {
|
|
9
|
+
const entry = names.map((n) => FORM_COMPONENTS[n]).find((e) => Array.isArray(e));
|
|
10
|
+
const [own, ...chain] = entry ?? ["div", names[names.length - 1]];
|
|
11
|
+
const { class: extra, ...rest } = attrs;
|
|
12
|
+
return withHost(h(tag ?? own, { class: classOf(chain, extra), ...rest }, ...children), { kind: "component", names });
|
|
13
|
+
};
|
|
14
|
+
/** A styled element that is not a registry key (2.x StringFieldWrapper, ErrorText, ...). */
|
|
15
|
+
export const plain = (tag, name, attrs, ...children) => {
|
|
16
|
+
const { class: extra, ...rest } = attrs;
|
|
17
|
+
return h(tag, { class: classOf([name], extra), ...rest }, ...children);
|
|
18
|
+
};
|
|
19
|
+
/** A 2.x function component in the registry: an override gets `props` (and `children`). */
|
|
20
|
+
export const fcComposite = (name, props, content, ...markup) => withHost(h("#fragment", {}, ...markup), { kind: "component", names: [name], props, ...(content ? { children: content } : {}) });
|
|
21
|
+
const required = (c, names) => (c.required ? fc(names, {}) : null);
|
|
22
|
+
/** 2.x Form FieldTemplate. */
|
|
23
|
+
export const fieldTemplateMarkup = (c, content) => fc(["FieldWrapper"], c.disabled ? { ...c.attrs, "aria-disabled": "true" } : c.attrs, fc(["FieldTitleInfoWrapper"], {}, c.title ? fc(["FieldTitle"], { ...c.titleAttrs, for: c.path }, c.title, required(c, ["RequiredIndicator"])) : null, c.info ?? null), c.description ? fc(["FieldDescription"], { ...c.descriptionAttrs }, c.description) : null, ...content, c.help ? fc(["FieldHelp"], { ...c.helpAttrs }, c.help) : null, c.error ?? null);
|
|
24
|
+
/** 2.x ObjectFieldTemplate (fieldset + legend). */
|
|
25
|
+
export const objectTemplateMarkup = (c, content) => fc(["ObjectFieldTemplateWrapper"], c.attrs, fc(["ObjectFieldTitleInfoWrapper"], {}, c.title ? fc(["ObjectFieldTemplateTitle"], { ...c.titleAttrs }, c.title, required(c, ["ObjectFieldTemplateRequiredIndicator", "RequiredIndicator"])) : null, c.info ?? null), c.description ? fc(["ObjectFieldTemplateDescription", "FieldDescription"], { ...c.descriptionAttrs }, c.description) : null, ...content, c.help ? fc(["ObjectFieldTemplateHelp", "FieldHelp"], { ...c.helpAttrs }, c.help) : null);
|
|
26
|
+
/** 2.x CollapsibleObjectFieldTemplate: a toggle button around the title; ChildrenWrapper is the wrapper chain (2.x). */
|
|
27
|
+
export const collapsibleTemplateMarkup = (c, content, o) => {
|
|
28
|
+
const C = "CollapsibleObjectFieldTemplate";
|
|
29
|
+
const toggle = fc([`${C}Toggle`],
|
|
30
|
+
// Q-A11Y-1: the toggle states whether its panel is open (2.x had no aria-expanded)
|
|
31
|
+
{ type: "button", "data-fjsf-button": "collapse", "aria-label": o.ariaLabel, "aria-expanded": o.collapsed ? "false" : "true" }, fc([`${C}Title`, "ObjectFieldTemplateTitle"], { ...c.titleAttrs, for: c.path }, c.title, required(c, [`${C}RequiredIndicator`, "ObjectFieldTemplateRequiredIndicator", "RequiredIndicator"]), fc([`${C}Icon`, "Icon"], {}, o.icon)));
|
|
32
|
+
return fc([`${C}Wrapper`, "ObjectFieldTemplateWrapper"], c.attrs, fc(["CollapsibleObjectTitleInfoWrapper", "ObjectFieldTitleInfoWrapper"], {}, c.title ? { ...toggle, on: { click: { type: "collapse", id: o.id, collapsed: !o.collapsed } } } : null, c.info ?? null), fc([`${C}Wrapper`, "ObjectFieldTemplateWrapper"], o.collapsed ? { style: "display:none", "data-fjsf-hidden": "true" } : {}, c.description ? fc([`${C}Description`, "ObjectFieldTemplateDescription", "FieldDescription"], { ...c.descriptionAttrs }, c.description) : null, ...content, c.help ? fc([`${C}Help`, "ObjectFieldTemplateHelp", "FieldHelp"], { ...c.helpAttrs }, c.help) : null));
|
|
33
|
+
};
|
|
34
|
+
/** 2.x ArrayFieldTemplate: the array names first, then the object/field fallbacks; the title keeps `for`. */
|
|
35
|
+
export const arrayTemplateMarkup = (c, items) => fc(["ArrayFieldTemplateWrapper", "ObjectFieldTemplateWrapper"], c.attrs, fc(["ArrayFieldTitleInfoWrapper", "ObjectFieldTitleInfoWrapper"], {}, c.title ? fc(["ArrayFieldTemplateTitle", "ObjectFieldTemplateTitle"], { ...c.titleAttrs, for: c.path }, c.title, required(c, ["ArrayFieldTemplateRequiredIndicator", "RequiredIndicator"])) : null, c.info ?? null), c.description ? fc(["ArrayFieldTemplateDescription", "FieldDescription"], { ...c.descriptionAttrs }, c.description) : null, ...items, c.help ? fc(["ArrayFieldTemplateHelp", "FieldHelp"], { ...c.helpAttrs }, c.help) : null, c.error ?? null);
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
import { resolveSchema } from "../../core/conditionals";
|
|
2
|
+
import { issue } from "../../core/issues";
|
|
3
|
+
import { isPlainObject, PROTOTYPE_KEYS } from "../../core/json";
|
|
4
|
+
import { getIn } from "../../core/paths";
|
|
5
|
+
import { defaultValueForType } from "../../core/schemaType";
|
|
6
|
+
import { setTitleValues } from "../../core/titles";
|
|
7
|
+
import { extractUiSchema, getHiddenProperties, orderAdditionalProperties, orderByUiSchema } from "../../core/uiSchema";
|
|
8
|
+
import { formChrome } from "./chrome";
|
|
9
|
+
import { formField } from "./dispatch";
|
|
10
|
+
import { buttonMarkup, sectionMarkup } from "./parts";
|
|
11
|
+
import { collapsibleTemplateMarkup, fc, objectTemplateMarkup } from "./markup";
|
|
12
|
+
import { templated } from "./templated";
|
|
13
|
+
/** 2.x prepareChildSchema: booleans become {}, a readOnly parent makes the child readOnly. */
|
|
14
|
+
export const prepareChildSchema = (child, parent) => {
|
|
15
|
+
if (!child || typeof child === "boolean" || !isPlainObject(child))
|
|
16
|
+
return {};
|
|
17
|
+
return parent?.readOnly ? { ...child, readOnly: parent.readOnly } : child;
|
|
18
|
+
};
|
|
19
|
+
const childUi = (ui, key, extra = {}) => ({ ...extra, ...(ui?.properties ?? {}), ...(ui?.[`> ${key}`] ?? ui?.[key] ?? {}) });
|
|
20
|
+
const join = (name, key) => (name ? `${name}.${key}` : key);
|
|
21
|
+
export const objectField = (ctx, p, chain, trail = []) => {
|
|
22
|
+
const { name, schema, ui } = p;
|
|
23
|
+
const extracted = extractUiSchema(ui);
|
|
24
|
+
const raw = name ? getIn(ctx.values, name) : ctx.values;
|
|
25
|
+
const value = isPlainObject(raw) ? raw : {};
|
|
26
|
+
const [{ properties, additionalProperties, required }, toRemove] = resolveSchema(schema, value);
|
|
27
|
+
if (toRemove.length)
|
|
28
|
+
ctx.prune.push({ path: name, keys: toRemove });
|
|
29
|
+
const safe = (key) => {
|
|
30
|
+
if (!PROTOTYPE_KEYS.has(key))
|
|
31
|
+
return true;
|
|
32
|
+
ctx.sink(issue("KEY_REJECTED", join(name, key)));
|
|
33
|
+
return false;
|
|
34
|
+
};
|
|
35
|
+
const props = (isPlainObject(properties) ? properties : {});
|
|
36
|
+
const keys = Object.keys(props).filter(safe);
|
|
37
|
+
const isRequired = (key) => Array.isArray(required) && required.includes(key);
|
|
38
|
+
const child = (key, extra = {}) => formField(ctx, { name: join(name, key), schema: prepareChildSchema(props[key], schema), ui: childUi(ui, key), ...extra }, chain, trail);
|
|
39
|
+
const content = [];
|
|
40
|
+
for (const entry of orderByUiSchema(extracted.order, keys)) {
|
|
41
|
+
if (typeof entry === "string") {
|
|
42
|
+
if (props[entry])
|
|
43
|
+
content.push(child(entry, { required: isRequired(entry) }));
|
|
44
|
+
}
|
|
45
|
+
else if (entry && Array.isArray(entry.fields)) {
|
|
46
|
+
const fields = entry.fields.filter((k) => keys.includes(k) && props[k]).map((k) => child(k));
|
|
47
|
+
content.push(sectionMarkup(ctx, name, entry, fields));
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
for (const key of getHiddenProperties(extracted.order, keys))
|
|
51
|
+
if (props[key])
|
|
52
|
+
content.push(child(key, { required: isRequired(key), hidden: true }));
|
|
53
|
+
const extraKeys = Object.keys(value).filter((k) => !keys.includes(k) && safe(k));
|
|
54
|
+
const ordered = orderAdditionalProperties(extracted.order, extraKeys);
|
|
55
|
+
const show = !ctx.hideUnmarkedAdditionalProperties || !!additionalProperties;
|
|
56
|
+
// Additional properties are bounded by the data: they start a new $ref chain (2.x rendered them).
|
|
57
|
+
const extraChild = (key, hidden) => formField(ctx, { name: join(name, key), schema: prepareChildSchema(schema?.additionalProperties, schema), ui: childUi(ui, key, ui?.additionalProperties ?? {}), required: isRequired(key), ...(hidden ? { hidden } : {}) }, []);
|
|
58
|
+
if (show) {
|
|
59
|
+
ordered.forEach((key, index) => {
|
|
60
|
+
const path = join(name, key);
|
|
61
|
+
const move = (to) => ({ type: "propertyMove", path: name, order: ordered, next: swap(ordered, index, to) });
|
|
62
|
+
const buttons = [
|
|
63
|
+
ctx.orderable && index > 0 ? buttonMarkup(extracted.upButton, "ObjectFieldUpButton", "up", path, "↑", move(index - 1)) : null,
|
|
64
|
+
ctx.orderable && index < ordered.length - 1 ? buttonMarkup(extracted.downButton, "ObjectFieldDownButton", "down", path, "↓", move(index + 1)) : null,
|
|
65
|
+
buttonMarkup(extracted.removeButton, "ObjectFieldRemoveButton", "remove", path, "-", { type: "propertyRemove", path: name, key, order: ordered }),
|
|
66
|
+
];
|
|
67
|
+
content.push(fc(["ObjectFieldItem"], {}, extraChild(key, false), fc(["ObjectFieldItemButtons"], {}, buttons)));
|
|
68
|
+
});
|
|
69
|
+
for (const key of getHiddenProperties(extracted.order, extraKeys))
|
|
70
|
+
content.push(fc(["ObjectFieldItem"], { style: "display:none" }, extraChild(key, true)));
|
|
71
|
+
}
|
|
72
|
+
if (additionalProperties) {
|
|
73
|
+
// Q-FMK-8: the type's empty value; scalars get "" (an empty control, unset for validation, Q-VAL-2).
|
|
74
|
+
const added = (isPlainObject(schema?.additionalProperties) ? defaultValueForType(schema.additionalProperties.type) : undefined) ?? "";
|
|
75
|
+
content.push(buttonMarkup(extracted.addButton, "ObjectFieldAddButton", "add", name, "+", { type: "propertyAdd", path: name, order: ordered, item: added }));
|
|
76
|
+
}
|
|
77
|
+
const fp = { ...p, kind: "object", data: { "data-fjsf-object": name || "ROOT", "data-fjsf-level": String(name ? name.split(".").length : 0) } };
|
|
78
|
+
const chrome = formChrome(ctx, fp, false);
|
|
79
|
+
// 2.x: `ui:template` first (a built-in one renders natively), then isCollapsible.
|
|
80
|
+
const named = ui?.["ui:template"];
|
|
81
|
+
const collapsible = named === "CollapsibleObjectFieldTemplate" || (named !== "ObjectFieldTemplate" && !!extracted.isCollapsible);
|
|
82
|
+
const markup = collapsible
|
|
83
|
+
? collapsibleTemplateMarkup({ ...chrome, title: collapsibleTitle(chrome.title, name, extracted, ctx.values) }, content, collapse(ctx, name, extracted))
|
|
84
|
+
: objectTemplateMarkup(chrome, content);
|
|
85
|
+
const template = templated(ctx, collapsible ? "CollapsibleObjectFieldTemplate" : "ObjectFieldTemplate", fp, markup, content);
|
|
86
|
+
return fc(["ObjectFieldWrapper"], {}, template);
|
|
87
|
+
};
|
|
88
|
+
/** 2.x setTitleValues(name, getTitle ?? "", ui:options.defaultTitle ?? "", values) for string titles. */
|
|
89
|
+
const collapsibleTitle = (title, name, extracted, values) => typeof title === "string" || title === undefined ? setTitleValues(name, title ?? "", String(extracted.defaultTitle ?? ""), values) || undefined : title;
|
|
90
|
+
const collapse = (ctx, name, extracted) => {
|
|
91
|
+
const id = `${name}#object`;
|
|
92
|
+
const collapsed = ctx.ui.collapsed?.[id] ?? extracted.isCollapsedOnLoad ?? true;
|
|
93
|
+
const icon = collapsed ? extracted.collapsedIcon ?? "▸" : extracted.openIcon ?? "▾";
|
|
94
|
+
return { collapsed: !!collapsed, id, ariaLabel: String(extracted.props?.ariaLabel ?? name), icon: String(icon) };
|
|
95
|
+
};
|
|
96
|
+
const swap = (items, a, b) => {
|
|
97
|
+
const next = [...items];
|
|
98
|
+
[next[a], next[b]] = [next[b], next[a]];
|
|
99
|
+
return next;
|
|
100
|
+
};
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { isPlainObject } from "../../core/json";
|
|
2
|
+
import { filterUiProps } from "../../core/uiProps";
|
|
3
|
+
import { textOf } from "../view/values";
|
|
4
|
+
import { fc, fcComposite } from "./markup";
|
|
5
|
+
/** 2.x getObjectFieldButton / the ArrayField buttons: `ui:options.<x>Button.{props,content}`, D5-filtered props. */
|
|
6
|
+
export const buttonMarkup = (conf, names, purpose, path, fallback, action) => {
|
|
7
|
+
const props = isPlainObject(conf) && conf.props !== undefined ? filterUiProps(conf.props, path).attrs : {};
|
|
8
|
+
const content = isPlainObject(conf) && conf.content !== undefined ? textOf(conf.content) : fallback;
|
|
9
|
+
const button = fc(Array.isArray(names) ? names : [names], { ...props, "data-fjsf-button": purpose, "data-fjsf-path": path, type: "button" }, content);
|
|
10
|
+
return { ...button, on: { click: action } };
|
|
11
|
+
};
|
|
12
|
+
/** Form ObjectFieldSection (a ui:order group); collapsible sections start collapsed (2.x useState(collapsible)). */
|
|
13
|
+
export const sectionMarkup = (ctx, name, entry, fields) => {
|
|
14
|
+
const title = String(entry.title ?? "");
|
|
15
|
+
const collapsible = !!entry.collapsible;
|
|
16
|
+
const id = `${name}#section:${entry.fields.join("_")}`;
|
|
17
|
+
const collapsed = collapsible && (ctx.ui.collapsed?.[id] ?? true);
|
|
18
|
+
const legend = fc(["ObjectFieldSectionTitle"], collapsible ? { "data-fjsf-button": "collapse" } : {}, title, fc(["IconWrapper"], {}, collapsible ? (collapsed ? "▸" : "▾") : null));
|
|
19
|
+
const markup = fc(["ObjectFieldSectionWrapper"], { "data-fjsf-section": title }, collapsible ? { ...legend, on: { click: { type: "collapse", id, collapsed: !collapsed } } } : legend, fc(["ObjectFieldSectionChildrenWrapper"], collapsed ? { style: "display:none", "data-fjsf-hidden": "true" } : {}, ...fields));
|
|
20
|
+
return fcComposite("ObjectFieldSection", { title, collapsible: entry.collapsible }, fields, markup);
|
|
21
|
+
};
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import { getEnums } from "../../core/enums";
|
|
2
|
+
import { isPlainObject } from "../../core/json";
|
|
3
|
+
import { getIn } from "../../core/paths";
|
|
4
|
+
import { filterUiProps } from "../../core/uiProps";
|
|
5
|
+
import { extractUiSchema } from "../../core/uiSchema";
|
|
6
|
+
import { reactAttr, reactText } from "../view/values";
|
|
7
|
+
import { formChrome } from "./chrome";
|
|
8
|
+
import { inputAttrs } from "./leaf";
|
|
9
|
+
import { fc, fieldTemplateMarkup, plain } from "./markup";
|
|
10
|
+
import { templated } from "./templated";
|
|
11
|
+
const optionsOf = (ctx, p) => (getEnums({ schema: p.schema }, ctx.sink, p.name)?.values ?? []).map((o) => ({ const: o?.const, title: reactText(o?.title) }));
|
|
12
|
+
const field = (ctx, p, content) => templated(ctx, "FieldTemplate", p, fieldTemplateMarkup(formChrome(ctx, p), content), content);
|
|
13
|
+
const mouseDown = { mousedown: { type: "preventDefault" } };
|
|
14
|
+
const noEnter = { type: "preventEnter" };
|
|
15
|
+
export const searchableSelectField = (ctx, p) => {
|
|
16
|
+
const props = { ...p, data: p.schema?.type === "string" ? { "data-fjsf-string": p.name } : { "data-fjsf-number": p.name }, kind: "searchable" };
|
|
17
|
+
const ui = extractUiSchema(p.ui);
|
|
18
|
+
const dropdown = { show: false, height: "", width: "", perPage: 20, ...(isPlainObject(ui.dropdown) ? ui.dropdown : {}) };
|
|
19
|
+
const perPage = Number(dropdown.perPage) || 20;
|
|
20
|
+
const options = optionsOf(ctx, p);
|
|
21
|
+
const value = getIn(ctx.values, p.name);
|
|
22
|
+
const readOnly = !!p.schema?.readOnly;
|
|
23
|
+
const term = ctx.ui.text?.[p.name] ?? options.find((o) => o.const === value)?.title ?? "";
|
|
24
|
+
const open = ctx.ui.open?.[p.name] ?? !!dropdown.show;
|
|
25
|
+
const active = ctx.ui.active?.[p.name] ?? -1;
|
|
26
|
+
const filtered = options.filter((o) => o.title.toLowerCase().includes(term.toLowerCase()));
|
|
27
|
+
const displayed = filtered.slice(0, ctx.ui.shown?.[p.name] ?? perPage);
|
|
28
|
+
const hover = filterUiProps({ style: { backgroundColor: ui.hoverColors?.backgroundColor, color: ui.hoverColors?.color } }).attrs.style;
|
|
29
|
+
const select = (o) => ({ type: "searchSelect", path: p.name, value: o.const, title: o.title });
|
|
30
|
+
const items = displayed.map((o, i) => ({
|
|
31
|
+
...fc(["SearchableSelectFieldListOption"], { role: "filtered-list", class: i === active ? "selected-item-active" : "", ...(i === active && hover ? { style: hover } : {}) }, o.title),
|
|
32
|
+
// Q-SEL-1 / F1: the host scrolls the keyboard-active option into view (guarded) when it changes.
|
|
33
|
+
on: { click: select(o), ...mouseDown, ...(i === active ? { active: { type: "searchActive", path: p.name, index: i } } : {}) },
|
|
34
|
+
}));
|
|
35
|
+
const list = open && !readOnly
|
|
36
|
+
? fc(["SearchableSelectFieldDropdownContainer"], { role: "dropdown-list", style: filterUiProps({ style: { maxHeight: dropdown.height || undefined, width: dropdown.width || undefined } }).attrs.style }, items.length ? items : { ...fc(["SearchableSelectFieldNotFound"], {}, reactText(ui.notFoundMessage) || "No match found"), on: mouseDown }, displayed.length < filtered.length && displayed.length >= perPage ? { ...fc(["SearchableSelectFieldListExpand"], {}, reactText(ui.expandText) || "More..."), on: { click: { type: "searchMore", path: p.name, perPage }, ...mouseDown } } : null)
|
|
37
|
+
: null;
|
|
38
|
+
const input = {
|
|
39
|
+
...fc(["SearchableSelectFieldInputElement"], { ...inputAttrs(ctx, props), name: p.name, type: "text", placeholder: reactAttr(ui.placeholder), value: term, readonly: readOnly || undefined }),
|
|
40
|
+
on: readOnly ? { keydown: noEnter } : { change: { type: "searchInput", path: p.name, perPage }, focus: { type: "searchOpen", path: p.name }, keydown: noEnter },
|
|
41
|
+
};
|
|
42
|
+
const clear = term && !ui.hideClearButton
|
|
43
|
+
? { ...fc(["SearchableSelectFieldClearButton"], { type: "button", disabled: readOnly || undefined }, reactText(ui.clearButtonText) || "✕"), on: readOnly ? {} : { click: { type: "searchClear", path: p.name } } }
|
|
44
|
+
: null;
|
|
45
|
+
const keys = { type: "searchKey", path: p.name, items: displayed.map(select), open };
|
|
46
|
+
const container = { ...fc(["SearchableSelectFieldContainer"], {}, fc(["SearchableSelectFieldInputContainer"], {}, input, clear), list), on: { focusout: { type: "searchLeave", path: p.name }, documentKeydown: keys } };
|
|
47
|
+
return field(ctx, props, [container]);
|
|
48
|
+
};
|
|
49
|
+
export const searchableMultiTagField = (ctx, p) => {
|
|
50
|
+
const props = { ...p, data: { "data-fjsf-array": p.name }, kind: "searchable-multi" };
|
|
51
|
+
const ui = extractUiSchema(p.ui);
|
|
52
|
+
const inputProps = isPlainObject(ui.props) ? ui.props : {};
|
|
53
|
+
const className = typeof inputProps.className === "string" ? inputProps.className : undefined;
|
|
54
|
+
const disabled = !!inputProps.disabled;
|
|
55
|
+
const readOnly = !!p.schema?.readOnly;
|
|
56
|
+
const options = optionsOf(ctx, p);
|
|
57
|
+
const raw = getIn(ctx.values, p.name);
|
|
58
|
+
const chosen = Array.isArray(raw) ? raw : [];
|
|
59
|
+
const term = ctx.ui.text?.[p.name] ?? "";
|
|
60
|
+
const matches = options.some((o) => o.title.toLowerCase().includes(term.toLowerCase()));
|
|
61
|
+
const list = term && !disabled && !readOnly
|
|
62
|
+
? fc(["SearchableMultiTagSelectFieldOptionList"], {}, matches
|
|
63
|
+
? options
|
|
64
|
+
.filter((o) => !chosen.includes(o.const) && o.title.toLowerCase().includes(term.toLowerCase()))
|
|
65
|
+
.map((o) => ({ ...fc(["SearchableMultiTagSelectFieldOptionListItem"], { value: reactAttr(o.const) }, o.title), on: { click: { type: "tagAdd", path: p.name, value: o.const } } }))
|
|
66
|
+
: fc(["SearchableMultiTagSelectFieldOptionListWithoutItem"], {}, reactText(ui.emptySearchMessage) || "No match found"))
|
|
67
|
+
: null;
|
|
68
|
+
const badges = chosen.map((v) => fc(["SearchableMultiTagSelectFieldBadge"], {}, options.find((o) => o.const === v)?.title ?? "", { ...fc(["SearchableMultiTagSelectFieldBadgeCloseElement"], { type: "button", disabled: disabled || readOnly || undefined }, reactText(inputProps.closeElement) || "✕"), on: { click: { type: "tagRemove", path: p.name, value: v } } }));
|
|
69
|
+
const error = getIn(ctx.touched, p.name) && typeof getIn(ctx.errors, p.name) === "string" ? plain("div", "", { class: "error" }, String(getIn(ctx.errors, p.name))) : null;
|
|
70
|
+
const content = fc(["SearchableMultiTagSelectFieldContainer"], className ? { class: className } : {}, fc(["FieldInput"], { id: className, type: "hidden", name: p.name, value: chosen.map((v) => reactAttr(v) ?? "").join(",") }), fc(["SearchableMultiTagSelectFieldSearchContainer"], {}, {
|
|
71
|
+
...fc(["SearchableMultiTagSelectFieldInputElement"], { id: `${className}_id`, class: className, type: "text", placeholder: reactAttr(ui.placeholder), value: term, readonly: readOnly || undefined, disabled: disabled || undefined }),
|
|
72
|
+
// Q-SEL-3: blur touches the field (2.x had no name here, so it wrote touched["undefined_id"]).
|
|
73
|
+
on: { change: { type: "searchText", path: p.name }, blur: { type: "touch", path: p.name }, keydown: noEnter },
|
|
74
|
+
}, list), fc(["SearchableMultiTagSelectFieldBadgeContainer"], {}, badges), error);
|
|
75
|
+
return field(ctx, props, [content]);
|
|
76
|
+
};
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { h, withHost } from "../vnode";
|
|
2
|
+
/** The 2.x template props: the field props plus the data-* props the field passed. */
|
|
3
|
+
export const templateProps = (p) => ({
|
|
4
|
+
name: p.name,
|
|
5
|
+
schema: p.schema,
|
|
6
|
+
uiSchema: p.ui,
|
|
7
|
+
...(p.required !== undefined ? { required: p.required } : {}),
|
|
8
|
+
...p.data,
|
|
9
|
+
...(p.kind ? { "data-fjsf-kind": p.kind } : {}),
|
|
10
|
+
...(p.hidden ? { "data-fjsf-hidden": "true" } : {}),
|
|
11
|
+
});
|
|
12
|
+
export const templated = (_ctx, template, p, markup, children, extra = {}) => {
|
|
13
|
+
const override = p.ui?.["ui:template"];
|
|
14
|
+
// A fragment carries the template mark, so the markup's root keeps its own (component) mark: a slot on
|
|
15
|
+
// FieldWrapper / ObjectFieldTemplateWrapper still applies when the template is the default.
|
|
16
|
+
return withHost(h("#fragment", {}, markup), { kind: "template", template, ...(typeof override === "string" ? { override } : {}), props: templateProps(p), children, ...extra });
|
|
17
|
+
};
|