diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 5f3f0172..c2e8ce3d 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -14,7 +14,7 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - node-version: [16.x] + node-version: [18.x] steps: - uses: actions/checkout@v2 @@ -33,7 +33,7 @@ jobs: strategy: matrix: os: [ubuntu-latest] - node-version: [16.x] + node-version: [18.x] steps: - uses: actions/checkout@v2 @@ -53,7 +53,7 @@ jobs: strategy: matrix: - node-version: [16.x] + node-version: [18.x] steps: - uses: actions/checkout@v2 @@ -84,7 +84,7 @@ jobs: strategy: matrix: - node-version: [14.x] + node-version: [18.x] steps: - uses: actions/checkout@v2 diff --git a/.github/workflows/website.yml b/.github/workflows/website.yml new file mode 100644 index 00000000..2755afa6 --- /dev/null +++ b/.github/workflows/website.yml @@ -0,0 +1,32 @@ +# This workflow will do a clean install of node dependencies, build the source code and run tests across different versions of node +# For more information see: https://help.github.com/actions/language-and-framework-guides/using-nodejs-with-github-actions + +name: Website + +on: + workflow_dispatch: + +jobs: + publish-pages: + runs-on: ubuntu-latest + needs: deploy-packages + if: ${{ github.event_name != 'pull_request' && (contains(github.ref, 'master') || contains(github.ref, 'alpha') || contains(github.ref, 'beta') || contains(github.ref, 'rc')) }} + + strategy: + matrix: + node-version: [18.x] + + steps: + - uses: actions/checkout@v2 + - name: Use Node.js ${{ matrix.node-version }} + uses: actions/setup-node@v1 + with: + node-version: ${{ matrix.node-version }} + - name: Install dependencies + run: yarn install --frozen-lockfile + - name: Release packages + env: + CI: true + GH_TOKEN: ${{ secrets.GH_TOKEN }} + NPM_TOKEN: ${{ secrets.NPM_TOKEN }} + run: yarn publish:storybook diff --git a/package.json b/package.json index d04b9426..40cbb14a 100644 --- a/package.json +++ b/package.json @@ -65,7 +65,7 @@ "@testing-library/jest-dom": "^5.16.4", "@testing-library/react": "^12.1.5", "@testing-library/user-event": "^14.2.1", - "@tsed/monorepo-utils": "1.17.8", + "@tsed/monorepo-utils": "^1.22.6", "@types/ejs": "^3.0.5", "@types/jest": "27.0.2", "@types/lodash": "4.14.168", @@ -106,7 +106,7 @@ "rimraf": "^3.0.2", "semantic-release": "19.0.3", "semantic-release-slack-bot": "3.5.3", - "typescript": "5.1.3", + "typescript": "4.9.5", "webpack": "4.44.2" }, "workspaces": { @@ -118,11 +118,13 @@ "productionBranch": "master", "developBranch": "master", "npmAccess": "public", - "ghpages": { - "dir": "./packages/tailwind-formio/.out", - "url": "https://github.com/TypedProject/tsed-formio.git", - "branch": "gh-pages", - "cname": "formio.tsed.io" - } + "ghpages": [ + { + "dir": "./packages/storybook/.out", + "url": "https://github.com/tsedio/tsed-formio.git", + "branch": "gh-pages", + "cname": "formio.tsed.io" + } + ] } } diff --git a/packages/react-formio-container/coverage.json b/packages/react-formio-container/coverage.json index 53759ed1..f85b5b63 100644 --- a/packages/react-formio-container/coverage.json +++ b/packages/react-formio-container/coverage.json @@ -1,6 +1,6 @@ { "statements": 2.29, "branches": 0.44, - "functions": 3.17, + "functions": 2.56, "lines": 2.43 } diff --git a/packages/react-formio/coverage.json b/packages/react-formio/coverage.json index f6f62516..ea4d998f 100644 --- a/packages/react-formio/coverage.json +++ b/packages/react-formio/coverage.json @@ -1,6 +1,6 @@ { - "statements": 56.11, - "branches": 46.65, - "functions": 51.31, - "lines": 56.1 + "statements": 56.02, + "branches": 46.56, + "functions": 48.33, + "lines": 56.04 } diff --git a/packages/react-formio/package.json b/packages/react-formio/package.json index d7951bae..a911ff1f 100644 --- a/packages/react-formio/package.json +++ b/packages/react-formio/package.json @@ -16,7 +16,8 @@ }, "dependencies": { "eventemitter2": "^6.4.3", - "prop-types": "^15.7.2" + "prop-types": "^15.7.2", + "classnames": "^2.3.1" }, "peerDependencies": { "@formio/choices.js": ">=9.0.1", @@ -34,4 +35,4 @@ "@tsed/tailwind": "2.1.2", "@tsed/tailwind-formio": "2.1.2" } -} \ No newline at end of file +} diff --git a/packages/react-formio/readme.md b/packages/react-formio/readme.md index e1da804e..702b406c 100644 --- a/packages/react-formio/readme.md +++ b/packages/react-formio/readme.md @@ -31,24 +31,25 @@ platform. This module is based on the original [react-formio](https://github.com/formio/react-formio) and add extra features listed above. -See our [storybook](https://formio.tsed.io/) to see all available components. +See our [storybook](https://formio.tsed.io/?path=/docs/getting-started--docs) to see all available components. ## Features -- Many components are provided to build your own backoffice based on Formio.js API: - - [ActionsTable](https://formio.tsed.io/?path=/story/reactformio-actionstable--sandbox), - - [FormAccess](https://formio.tsed.io/?path=/story/reactformio-formaccess--sandbox), - - [FormAction](https://formio.tsed.io/?path=/story/reactformio-formaction--sandbox), - - [Form](https://formio.tsed.io/?path=/story/reactformio-form--sandbox), - - [FormBuilder](https://formio.tsed.io/?path=/story/reactformio-formbuilder--sandbox), - - [FormEdit](https://formio.tsed.io/?path=/story/reactformio-formedit--sandbox), - - [FormsTable](https://formio.tsed.io/?path=/story/reactformio-formstable--sandbox), - - [InputTags](https://formio.tsed.io/?path=/story/reactformio-inputtags--sandbox), - - [InputText](https://formio.tsed.io/?path=/story/reactformio-inputtext--sandbox), - - [Pagination](https://formio.tsed.io/?path=/story/reactformio-pagination--sandbox), - - [Select](https://formio.tsed.io/?path=/story/reactformio-select--sandbox), - - [SubmissionsTable](https://formio.tsed.io/?path=/story/reactformio-subssionsstable--sandbox). - - [Table](https://formio.tsed.io/?path=/story/reactformio-table--sandbox), +Many components are provided to build your own backoffice based on Formio.js API: + +- [ActionsTable](https://formio.tsed.io/?path=story/reactformio-actionstable--sandbox), +- [FormAccess](https://formio.tsed.io/?path=story/reactformio-formaccess--sandbox), +- [FormAction](https://formio.tsed.io/?path=story/reactformio-formaction--sandbox), +- [Form](https://formio.tsed.io/?path=docs/documentation-form--docs), +- [FormBuilder](https://formio.tsed.io/?path=docs/documentation-formbuilder--docs), +- [FormEdit](https://formio.tsed.io/?path=docs/documentation-formedit--docs), +- [FormsTable](https://formio.tsed.io/?path=docs/documentation-formstable--docs), +- [InputTags](https://formio.tsed.io/?path=story/reactformio-inputtags--sandbox), +- [InputText](https://formio.tsed.io/?path=story/reactformio-inputtext--sandbox), +- [Pagination](https://formio.tsed.io/?path=story/reactformio-pagination--sandbox), +- [Select](https://formio.tsed.io/?path=/story/reactformio-select--sandbox), +- [SubmissionsTable](https://formio.tsed.io/?path=/docs/documentation-submissionstable--docs). +- [Table](https://formio.tsed.io/?path=/story/reactformio-table--sandbox), - Predefined Reducers for Actions, Action, Form, Forms, Submission, Submissions, etc..., - TypeScript support. - Tailwind support. @@ -90,186 +91,7 @@ function App() { export default App; ``` -## Components - -### Form - -The form component is the primary component of the system. It is what takes the form definition (json) and renders the -form into html. There are multiple ways to send the form to the Form component. The two main ways are to pass the `src` -prop with a url to the form definition, usually a form.io server. The other is to pass the `form` prop with the json -definition and optionally a `url` prop with the location of the form. - -#### Props - -| Name | Type | Default | Description | -| ------------ | ------ | ------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `src` | url | | The url of the form definition. This is commonly from a form.io server. When using src, the form will automatically submit the data to that url as well. | -| `url` | url | | The url of the form definition. The form will not be loaded from this url and the submission will not be saved here either. This is used for file upload, oauth and other components or actions that need to know where the server is. Use this in connection with `form` | -| `form` | object | | Instead of loading a form from the `src` url, you can preload the form definition and pass it in with the `form` prop. You should also set `url` if you are using any advanced components like file upload or oauth. | -| `submission` | object | | Submission data to fill the form. You can either load a previous submission or create a submission with some pre-filled data. If you do not provide a submissions the form will initialize an empty submission using default values from the form. | -| `options` | object | | an options object that can pass options to the formio.js Form that is rendered. You can set options such as `readOnly`, `noAlerts` or `hide`. There are [many options to be found in the formio.js library](https://github.com/formio/formio.js/wiki/Form-Renderer#options). | - -#### Event Props - -You can respond to various events in the form. Simply pass in a prop with a function for one of these events. - -| Name | Parameters | Description | -| --------------- | --------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------- | -| `onAsyncSubmit` | `submission`: object | When the submit button is pressed and the submission has started. Use this event if you submit data to external service. | -| `onSubmit` | `submission`: object | When the submit button is pressed and the submission has started. If `src` is not provided, this will be the final submit event. | -| `onSubmitDone` | `submission`: object | When the submission has successfully been made to the server. This will only fire if `src` is set. | -| `onChange` | `submission`: object, `submission.changed`: object of what changed, `submission.isValid`: boolean - if the submission passes validations. | A value in the submission has changed. | -| `onError` | `errors`: array or string or boolean | Called when an error occurs during submission such as a validation issue. | -| `onRender` | | Triggers when the form is finished rendering. | -| `onCustomEvent` | { `type`: string - event type, `component`: object - triggering component, `data`: object - data for component, `event`: string - raw event } | Event that is triggered from a button configured with "Event" type. | -| `onPrevPage` | { `page`: integer - new page number, `submission`: object - submission data } | Triggered for wizards when "Previous" button is pressed | -| `onNextPage` | { `page`: integer - new page number, `submission`: object - submission data } | Triggered for wizards when "Next" button is pressed | -| `onFormReady` | `formInstance`: Webform/Wizard - form class instance | Called when the form gets ready state | - -#### Example - -##### With src/url - -Give `Form` a `src` property and render: - -```tsx -import React from "react"; -import ReactDOM from "react-dom"; -import { Form } from "@tsed/react-formio"; - -ReactDOM.render(
, document.getElementById("example")); -``` - -##### With form - -Give `Form` a `src` property and render: - -```tsx -import React from "react"; -import ReactDOM from "react-dom"; -import { Form } from "@tsed/react-formio"; - -interface MyFormData { - title: string; -} - -const form = { - display: "form", - components: [ - { - key: "title", - type: "textfield" - } - ] -}; - -ReactDOM.render( - - form={form} - onAsyncSubmit={(submission) => { - return httpClient.post("/path/to/external/service", { data: submission }).catch((er) => { - err.errors = [ - { - message: "My custom message about this field", - type: "custom", - path: ["title"], - level: "error" - } - ]; - throw error; - }); - }} - />, - document.getElementById("example") -); -``` - -> See [Form with error from server](https://formio.tsed.io/?path=/story/reactformio-form--trigger-error) - -### FormBuilder - -The [FormBuilder](https://formio.tsed.io/?path=/story/reactformio-formbuilder--sandbox)) class can be -used -to embed a form builder directly in your react application. -Please note that you'll need to include the CSS for the form builder from formio.js as well. - -Please note that the [FormBuilder](<[FormsTable](https://formio.tsed.io/?path=/story/reactformio-formbuilder--sandbox)>) -component -does not load and save from/to a url. You must handle the form definition loading and saving yourself or use -the [FormEdit](https://formio.tsed.io/?path=/story/reactformio-formedit--sandbox) component. - -#### Props - -| Name | Type | Default | Description | -| --------- | ------ | ------- | -------------------------------------------------------------------------------------------------------------------------------------------- | -| `form` | object | | This is the form definition object. It should at least have a `display` property set to form, wizard or pdf. | -| `options` | object | | an options object that can pass options to the formio.js Form that is rendered. There are many options to be found in the formio.js library. | - -#### Event Props - -| Name | Parameters | Description | -| ------------------- | ------------------- | ---------------------------------------------------------------- | -| `onChange` | `schema`: object | Triggered any time the form definition changes | -| `onEditComponent` | `component`: object | Triggered when the component settings dialog is opened | -| `onSaveComponent` | `component`: object | Triggered when the component settings dialog is saved and closed | -| `onCancelComponent` | `component`: object | Triggered when the component settings dialog is cancelled | -| `onDeleteComponent` | `component`: object | Triggered when a component is removed from the form | -| `onUpdateComponent` | `component`: object | Triggered when a component is added or moved in the form | - -#### Example - -```tsx -import React from "react"; -import ReactDOM from "react-dom"; -import { FormBuilder } from "@tsed/react-formio"; - -ReactDOM.render( console.log(schema)} />, document.getElementById("builder")); -``` - -### FormEdit - -The [FormEdit](https://formio.tsed.io/?path=/story/reactformio-formedit--sandbox) component wraps -the [FormBuilder](<[FormsTable](https://formio.tsed.io/?path=/story/reactformio-formbuilder--sandbox)>) component and -adds the title, display, name and path fields at the top along with a save button. - -#### Props - -| Name | Type | Default | Description | -| --------------------------------------------------------------- | ------ | ------------------- | ----------- | --------------------------------------------------------------- | -| --------------------------------------------------------------- | -| `form` | object | {display: 'form' \ | 'wizard'} | The form definition of the exiting form that is to be modified. | - -| -| `options` | object | {} | The options to be passed to FormBuilder | -| `saveText` | string | '' | The string that will be displayed in the save-button | - -#### Event Props - -| Name | Parameters | Description | -| ---------- | ---------- | -------------------------------------------------------------------------------------- | -| `onSubmit` | form | Called when the save button is pressed. Will pass the form definition to the callback. | - -### FormsTable - -The [FormsTable](https://formio.tsed.io/?path=/story/reactformio-formstable--sandbox) component can be used to render a -list of forms with buttons to edit, view, delete, etc on each row. - -#### Props - -| Name | Type | Default | Description | -| ------ | -------------- | ------- | ------------------------------------------- | -| `data` | array of forms | [] | A list of forms to be rendered in the grid. | - -### SubmissionsTable - -The submisison grid will render a list of submissions and allow clicking on one row to select it. - -#### Props - -| Name | Type | Default | Description | -| ------ | -------------------- | ------- | -------------------------------------------------------------------------------- | -| `data` | array of submissions | [] | A list of submissions to be rendered in the grid. | -| `form` | object | {} | The form definition for the submissions. This is used to render the submissions. | +See more on http://formio.tsed.io/?path=/docs/getting-started--docs ## Contributors diff --git a/packages/react-formio/src/components/form-builder/formBuilder.stories.tsx b/packages/react-formio/src/components/form-builder/formBuilder.stories.tsx index 54ea9cdc..a4be3332 100644 --- a/packages/react-formio/src/components/form-builder/formBuilder.stories.tsx +++ b/packages/react-formio/src/components/form-builder/formBuilder.stories.tsx @@ -33,3632 +33,3635 @@ export default { } }; -export const Sandbox = (args: any) => { - return ; -}; - -Sandbox.args = { - display: "form", - components: [ - { - label: "Text Field", - labelPosition: "top", - placeholder: "", - description: "", - tooltip: "", - prefix: "", - suffix: "", - widget: { type: "input" }, - inputMask: "", - allowMultipleMasks: false, - customClass: "", - tabindex: "", - autocomplete: "", - hidden: false, - hideLabel: false, - showWordCount: false, - showCharCount: false, - mask: false, - autofocus: false, - spellcheck: true, - disabled: false, - tableView: true, - modalEdit: false, - multiple: false, - persistent: true, - inputFormat: "plain", - protected: false, - dbIndex: false, - case: "", - encrypted: false, - redrawOn: "", - clearOnHide: true, - customDefaultValue: "", - calculateValue: "", - calculateServer: false, - allowCalculateOverride: false, - validateOn: "change", - validate: { - required: true, - pattern: "", - customMessage: "", - custom: "", - customPrivate: false, - json: "", - minLength: "", - maxLength: "", - strictDateValidation: false, - multiple: false, - unique: false - }, - unique: false, - errorLabel: "", - key: "textField", - tags: [], - properties: {}, - conditional: { show: null, when: null, eq: "", json: "" }, - customConditional: "", - logic: [], - attributes: {}, - overlay: { - style: "", - page: "", - left: "", - top: "", - width: "", - height: "" - }, - type: "textfield", - input: true, - refreshOn: "", - inputType: "text", - id: "eqb1o4r", - defaultValue: "" - }, - { - label: "Text Area", - labelPosition: "top", - placeholder: "Placeholder", - description: "description", - tooltip: "tooltip", - prefix: "", - suffix: "", - widget: { type: "input" }, - editor: "", - autoExpand: false, - customClass: "", - tabindex: "", - autocomplete: "", - hidden: false, - hideLabel: false, - showWordCount: false, - showCharCount: false, - autofocus: false, - spellcheck: true, - disabled: false, - tableView: true, - modalEdit: false, - multiple: false, - persistent: true, - inputFormat: "html", - protected: false, - dbIndex: false, - case: "", - encrypted: false, - redrawOn: "", - clearOnHide: true, - customDefaultValue: "", - calculateValue: "", - calculateServer: false, - allowCalculateOverride: false, - validateOn: "change", - validate: { - required: false, - pattern: "", - customMessage: "", - custom: "", - customPrivate: false, - json: "", - minLength: "", - maxLength: "", - minWords: "", - maxWords: "", - strictDateValidation: false, - multiple: false, - unique: false - }, - unique: false, - errorLabel: "", - key: "textArea", - tags: [], - properties: {}, - conditional: { show: null, when: null, eq: "", json: "" }, - customConditional: "", - logic: [], - fixedSize: true, - overlay: { - style: "", - page: "", - left: "", - top: "", - width: "", - height: "" - }, - attributes: {}, - type: "textarea", - rows: 3, - wysiwyg: false, - input: true, - refreshOn: "", - allowMultipleMasks: false, - mask: false, - inputType: "text", - inputMask: "", - id: "e4jsrqc", - defaultValue: "" - }, - { - label: "Number", - labelPosition: "top", - placeholder: "", - description: "", - tooltip: "", - prefix: "", - suffix: "", - widget: { type: "input" }, - customClass: "", - tabindex: "", - autocomplete: "", - hidden: false, - hideLabel: false, - mask: false, - autofocus: false, - spellcheck: true, - disabled: false, - tableView: false, - modalEdit: false, - multiple: false, - persistent: true, - delimiter: false, - requireDecimal: false, - inputFormat: "plain", - protected: false, - dbIndex: false, - encrypted: false, - redrawOn: "", - clearOnHide: true, - customDefaultValue: "", - calculateValue: "", - calculateServer: false, - allowCalculateOverride: false, - validateOn: "change", - validate: { - required: false, - customMessage: "", - custom: "", - customPrivate: false, - json: "", - min: "", - max: "", - strictDateValidation: false, +export const Sandbox = { + render: ({ display, options, components }: any) => { + return ; + }, + args: { + display: "form", + options: { template: "tailwind", iconset: "bx" }, + components: [ + { + label: "Text Field", + labelPosition: "top", + placeholder: "", + description: "", + tooltip: "", + prefix: "", + suffix: "", + widget: { type: "input" }, + inputMask: "", + allowMultipleMasks: false, + customClass: "", + tabindex: "", + autocomplete: "", + hidden: false, + hideLabel: false, + showWordCount: false, + showCharCount: false, + mask: false, + autofocus: false, + spellcheck: true, + disabled: false, + tableView: true, + modalEdit: false, multiple: false, + persistent: true, + inputFormat: "plain", + protected: false, + dbIndex: false, + case: "", + encrypted: false, + redrawOn: "", + clearOnHide: true, + customDefaultValue: "", + calculateValue: "", + calculateServer: false, + allowCalculateOverride: false, + validateOn: "change", + validate: { + required: true, + pattern: "", + customMessage: "", + custom: "", + customPrivate: false, + json: "", + minLength: "", + maxLength: "", + strictDateValidation: false, + multiple: false, + unique: false + }, unique: false, - step: "any", - integer: "" - }, - errorLabel: "", - key: "number", - tags: [], - properties: {}, - conditional: { show: null, when: null, eq: "", json: "" }, - customConditional: "", - logic: [], - attributes: {}, - overlay: { - style: "", - page: "", - left: "", - top: "", - width: "", - height: "" - }, - type: "number", - input: true, - unique: false, - refreshOn: "", - showCharCount: false, - showWordCount: false, - allowMultipleMasks: false, - id: "ex8zh8u", - defaultValue: null - }, - { - label: "Password", - labelPosition: "top", - placeholder: "", - description: "", - tooltip: "", - prefix: "", - suffix: "", - widget: { type: "input" }, - customClass: "", - tabindex: "", - autocomplete: "", - hidden: false, - hideLabel: false, - showWordCount: false, - showCharCount: false, - mask: false, - autofocus: false, - spellcheck: true, - disabled: false, - tableView: false, - modalEdit: false, - case: "", - redrawOn: "", - clearOnHide: true, - calculateServer: false, - allowCalculateOverride: false, - validateOn: "change", - validate: { - required: false, - pattern: "", - customMessage: "", - custom: "", - customPrivate: false, - json: "", - minLength: "", - maxLength: "", - strictDateValidation: false, + errorLabel: "", + key: "textField", + tags: [], + properties: {}, + conditional: { show: null, when: null, eq: "", json: "" }, + customConditional: "", + logic: [], + attributes: {}, + overlay: { + style: "", + page: "", + left: "", + top: "", + width: "", + height: "" + }, + type: "textfield", + input: true, + refreshOn: "", + inputType: "text", + id: "eqb1o4r", + defaultValue: "" + }, + { + label: "Text Area", + labelPosition: "top", + placeholder: "Placeholder", + description: "description", + tooltip: "tooltip", + prefix: "", + suffix: "", + widget: { type: "input" }, + editor: "", + autoExpand: false, + customClass: "", + tabindex: "", + autocomplete: "", + hidden: false, + hideLabel: false, + showWordCount: false, + showCharCount: false, + autofocus: false, + spellcheck: true, + disabled: false, + tableView: true, + modalEdit: false, multiple: false, - unique: false - }, - errorLabel: "", - key: "password", - tags: [], - properties: {}, - conditional: { show: null, when: null, eq: "", json: "" }, - customConditional: "", - logic: [], - attributes: {}, - overlay: { - style: "", - page: "", - left: "", - top: "", - width: "", - height: "" - }, - type: "password", - input: true, - multiple: false, - defaultValue: null, - protected: true, - unique: false, - persistent: true, - refreshOn: "", - dbIndex: false, - customDefaultValue: "", - calculateValue: "", - encrypted: false, - allowMultipleMasks: false, - inputType: "text", - inputFormat: "plain", - inputMask: "", - id: "etqa5pm" - }, - { - label: "Checkbox", - description: "description", - tooltip: "tooltip", - shortcut: "", - inputType: "checkbox", - customClass: "", - tabindex: "", - hidden: false, - hideLabel: false, - autofocus: false, - disabled: false, - tableView: false, - modalEdit: false, - defaultValue: false, - persistent: true, - protected: false, - dbIndex: false, - encrypted: false, - redrawOn: "", - clearOnHide: true, - customDefaultValue: "", - calculateValue: "", - calculateServer: false, - allowCalculateOverride: false, - validate: { - required: false, - customMessage: "", - custom: "", - customPrivate: false, - json: "", - strictDateValidation: false, + persistent: true, + inputFormat: "html", + protected: false, + dbIndex: false, + case: "", + encrypted: false, + redrawOn: "", + clearOnHide: true, + customDefaultValue: "", + calculateValue: "", + calculateServer: false, + allowCalculateOverride: false, + validateOn: "change", + validate: { + required: false, + pattern: "", + customMessage: "", + custom: "", + customPrivate: false, + json: "", + minLength: "", + maxLength: "", + minWords: "", + maxWords: "", + strictDateValidation: false, + multiple: false, + unique: false + }, + unique: false, + errorLabel: "", + key: "textArea", + tags: [], + properties: {}, + conditional: { show: null, when: null, eq: "", json: "" }, + customConditional: "", + logic: [], + fixedSize: true, + overlay: { + style: "", + page: "", + left: "", + top: "", + width: "", + height: "" + }, + attributes: {}, + type: "textarea", + rows: 3, + wysiwyg: false, + input: true, + refreshOn: "", + allowMultipleMasks: false, + mask: false, + inputType: "text", + inputMask: "", + id: "e4jsrqc", + defaultValue: "" + }, + { + label: "Number", + labelPosition: "top", + placeholder: "", + description: "", + tooltip: "", + prefix: "", + suffix: "", + widget: { type: "input" }, + customClass: "", + tabindex: "", + autocomplete: "", + hidden: false, + hideLabel: false, + mask: false, + autofocus: false, + spellcheck: true, + disabled: false, + tableView: false, + modalEdit: false, multiple: false, - unique: false - }, - errorLabel: "", - key: "checkbox", - tags: [], - properties: {}, - conditional: { show: null, when: null, eq: "", json: "" }, - customConditional: "", - logic: [], - attributes: {}, - overlay: { - style: "", - page: "", - left: "", - top: "", - width: "", - height: "" - }, - type: "checkbox", - name: "", - value: "", - input: true, - placeholder: "", - prefix: "", - suffix: "", - multiple: false, - unique: false, - refreshOn: "", - labelPosition: "right", - widget: null, - validateOn: "change", - showCharCount: false, - showWordCount: false, - allowMultipleMasks: false, - dataGridLabel: true, - id: "em8ln2m" - }, - { - label: "Select Boxes", - labelPosition: "top", - optionsLabelPosition: "right", - description: "", - tooltip: "", - customClass: "", - tabindex: "", - inline: false, - hidden: false, - hideLabel: false, - autofocus: false, - disabled: false, - tableView: false, - modalEdit: false, - values: [ - { label: "label", value: "label", shortcut: "" }, - { label: "lol", value: "lol", shortcut: "" } - ], - persistent: true, - protected: false, - dbIndex: false, - encrypted: false, - redrawOn: "", - clearOnHide: true, - customDefaultValue: "", - calculateValue: "", - calculateServer: false, - allowCalculateOverride: false, - validate: { - required: false, - customMessage: "", - custom: "", - customPrivate: false, - json: "", - strictDateValidation: false, + persistent: true, + delimiter: false, + requireDecimal: false, + inputFormat: "plain", + protected: false, + dbIndex: false, + encrypted: false, + redrawOn: "", + clearOnHide: true, + customDefaultValue: "", + calculateValue: "", + calculateServer: false, + allowCalculateOverride: false, + validateOn: "change", + validate: { + required: false, + customMessage: "", + custom: "", + customPrivate: false, + json: "", + min: "", + max: "", + strictDateValidation: false, + multiple: false, + unique: false, + step: "any", + integer: "" + }, + errorLabel: "", + key: "number", + tags: [], + properties: {}, + conditional: { show: null, when: null, eq: "", json: "" }, + customConditional: "", + logic: [], + attributes: {}, + overlay: { + style: "", + page: "", + left: "", + top: "", + width: "", + height: "" + }, + type: "number", + input: true, + unique: false, + refreshOn: "", + showCharCount: false, + showWordCount: false, + allowMultipleMasks: false, + id: "ex8zh8u", + defaultValue: null + }, + { + label: "Password", + labelPosition: "top", + placeholder: "", + description: "", + tooltip: "", + prefix: "", + suffix: "", + widget: { type: "input" }, + customClass: "", + tabindex: "", + autocomplete: "", + hidden: false, + hideLabel: false, + showWordCount: false, + showCharCount: false, + mask: false, + autofocus: false, + spellcheck: true, + disabled: false, + tableView: false, + modalEdit: false, + case: "", + redrawOn: "", + clearOnHide: true, + calculateServer: false, + allowCalculateOverride: false, + validateOn: "change", + validate: { + required: false, + pattern: "", + customMessage: "", + custom: "", + customPrivate: false, + json: "", + minLength: "", + maxLength: "", + strictDateValidation: false, + multiple: false, + unique: false + }, + errorLabel: "", + key: "password", + tags: [], + properties: {}, + conditional: { show: null, when: null, eq: "", json: "" }, + customConditional: "", + logic: [], + attributes: {}, + overlay: { + style: "", + page: "", + left: "", + top: "", + width: "", + height: "" + }, + type: "password", + input: true, multiple: false, - unique: false - }, - errorLabel: "", - minSelectedCountMessage: "", - maxSelectedCountMessage: "", - key: "selectBoxes", - tags: [], - properties: {}, - conditional: { show: null, when: null, eq: "", json: "" }, - customConditional: "", - logic: [], - attributes: {}, - overlay: { - style: "", - page: "", - left: "", - top: "", - width: "", - height: "" - }, - type: "selectboxes", - input: true, - placeholder: "", - prefix: "", - suffix: "", - multiple: false, - unique: false, - refreshOn: "", - widget: null, - validateOn: "change", - showCharCount: false, - showWordCount: false, - allowMultipleMasks: false, - inputType: "checkbox", - fieldSet: false, - id: "esa4upt", - defaultValue: { "": false } - }, - { - label: "Radio", - labelPosition: "top", - optionsLabelPosition: "right", - description: "", - tooltip: "", - customClass: "", - tabindex: "", - inline: false, - hidden: false, - hideLabel: false, - autofocus: false, - disabled: false, - tableView: false, - modalEdit: false, - values: [ - { label: "data", value: "data", shortcut: "" }, - { label: "label", value: "label", shortcut: "" } - ], - dataType: "", - persistent: true, - protected: false, - dbIndex: false, - encrypted: false, - redrawOn: "", - clearOnHide: true, - customDefaultValue: "", - calculateValue: "", - calculateServer: false, - allowCalculateOverride: false, - validate: { - required: false, - customMessage: "", - custom: "", - customPrivate: false, - json: "", - strictDateValidation: false, + defaultValue: null, + protected: true, + unique: false, + persistent: true, + refreshOn: "", + dbIndex: false, + customDefaultValue: "", + calculateValue: "", + encrypted: false, + allowMultipleMasks: false, + inputType: "text", + inputFormat: "plain", + inputMask: "", + id: "etqa5pm" + }, + { + label: "Checkbox", + description: "description", + tooltip: "tooltip", + shortcut: "", + inputType: "checkbox", + customClass: "", + tabindex: "", + hidden: false, + hideLabel: false, + autofocus: false, + disabled: false, + tableView: false, + modalEdit: false, + defaultValue: false, + persistent: true, + protected: false, + dbIndex: false, + encrypted: false, + redrawOn: "", + clearOnHide: true, + customDefaultValue: "", + calculateValue: "", + calculateServer: false, + allowCalculateOverride: false, + validate: { + required: false, + customMessage: "", + custom: "", + customPrivate: false, + json: "", + strictDateValidation: false, + multiple: false, + unique: false + }, + errorLabel: "", + key: "checkbox", + tags: [], + properties: {}, + conditional: { show: null, when: null, eq: "", json: "" }, + customConditional: "", + logic: [], + attributes: {}, + overlay: { + style: "", + page: "", + left: "", + top: "", + width: "", + height: "" + }, + type: "checkbox", + name: "", + value: "", + input: true, + placeholder: "", + prefix: "", + suffix: "", multiple: false, - unique: false - }, - errorLabel: "", - key: "radio", - tags: [], - properties: {}, - conditional: { show: null, when: null, eq: "", json: "" }, - customConditional: "", - logic: [], - attributes: {}, - overlay: { - style: "", - page: "", - left: "", - top: "", - width: "", - height: "" - }, - type: "radio", - input: true, - placeholder: "", - prefix: "", - suffix: "", - multiple: false, - unique: false, - refreshOn: "", - widget: null, - validateOn: "change", - showCharCount: false, - showWordCount: false, - allowMultipleMasks: false, - inputType: "radio", - fieldSet: false, - id: "edh7o6o", - defaultValue: "" - }, - { - label: "Select", - labelPosition: "top", - widget: "choicesjs", - placeholder: "placeholder", - description: "", - tooltip: "", - customClass: "", - tabindex: "", - hidden: false, - hideLabel: false, - uniqueOptions: false, - autofocus: false, - disabled: false, - tableView: true, - modalEdit: false, - multiple: false, - dataSrc: "values", - data: { + unique: false, + refreshOn: "", + labelPosition: "right", + widget: null, + validateOn: "change", + showCharCount: false, + showWordCount: false, + allowMultipleMasks: false, + dataGridLabel: true, + id: "em8ln2m" + }, + { + label: "Select Boxes", + labelPosition: "top", + optionsLabelPosition: "right", + description: "", + tooltip: "", + customClass: "", + tabindex: "", + inline: false, + hidden: false, + hideLabel: false, + autofocus: false, + disabled: false, + tableView: false, + modalEdit: false, values: [ - { label: "label", value: "label" }, - { label: "save", value: "save" } + { label: "label", value: "label", shortcut: "" }, + { label: "lol", value: "lol", shortcut: "" } ], - resource: "", - json: "", - url: "", - custom: "" - }, - valueProperty: "", - dataType: "", - idPath: "id", - template: "{{ item.label }}", - refreshOn: "", - refreshOnBlur: "", - clearOnRefresh: false, - searchEnabled: true, - selectThreshold: 0.3, - readOnlyValue: false, - customOptions: {}, - useExactSearch: false, - persistent: true, - protected: false, - dbIndex: false, - encrypted: false, - clearOnHide: true, - customDefaultValue: "", - calculateValue: "", - calculateServer: false, - allowCalculateOverride: false, - validateOn: "change", - validate: { - required: false, - customMessage: "", - custom: "", - customPrivate: false, - json: "", - strictDateValidation: false, + persistent: true, + protected: false, + dbIndex: false, + encrypted: false, + redrawOn: "", + clearOnHide: true, + customDefaultValue: "", + calculateValue: "", + calculateServer: false, + allowCalculateOverride: false, + validate: { + required: false, + customMessage: "", + custom: "", + customPrivate: false, + json: "", + strictDateValidation: false, + multiple: false, + unique: false + }, + errorLabel: "", + minSelectedCountMessage: "", + maxSelectedCountMessage: "", + key: "selectBoxes", + tags: [], + properties: {}, + conditional: { show: null, when: null, eq: "", json: "" }, + customConditional: "", + logic: [], + attributes: {}, + overlay: { + style: "", + page: "", + left: "", + top: "", + width: "", + height: "" + }, + type: "selectboxes", + input: true, + placeholder: "", + prefix: "", + suffix: "", multiple: false, - unique: false - }, - unique: false, - errorLabel: "", - key: "select", - tags: [], - properties: {}, - conditional: { show: null, when: null, eq: "", json: "" }, - customConditional: "", - logic: [], - attributes: {}, - overlay: { - style: "", - page: "", - left: "", - top: "", - width: "", - height: "" - }, - type: "select", - indexeddb: { filter: {} }, - selectFields: "", - searchField: "", - minSearch: 0, - filter: "", - limit: 100, - redrawOn: "", - input: true, - prefix: "", - suffix: "", - showCharCount: false, - showWordCount: false, - allowMultipleMasks: false, - lazyLoad: true, - authenticate: false, - searchThreshold: 0.3, - fuseOptions: { include: "score", threshold: 0.3 }, - id: "ebqtqd6", - defaultValue: "" - }, - { - label: "Select", - labelPosition: "top", - widget: "html5", - placeholder: "placeholder", - description: "", - tooltip: "", - customClass: "", - tabindex: "", - hidden: false, - hideLabel: false, - uniqueOptions: false, - autofocus: false, - disabled: false, - tableView: true, - modalEdit: false, - multiple: false, - dataSrc: "values", - data: { - values: [{ label: "", value: "" }], - resource: "", - json: "", - url: "", - custom: "" - }, - valueProperty: "", - dataType: "", - idPath: "id", - template: "{{ item.label }}", - refreshOn: "", - refreshOnBlur: "", - clearOnRefresh: false, - searchEnabled: true, - selectThreshold: 0.3, - readOnlyValue: false, - customOptions: {}, - useExactSearch: false, - persistent: true, - protected: false, - dbIndex: false, - encrypted: false, - clearOnHide: true, - customDefaultValue: "", - calculateValue: "", - calculateServer: false, - allowCalculateOverride: false, - validateOn: "change", - validate: { - required: false, - customMessage: "", - custom: "", - customPrivate: false, - json: "", - strictDateValidation: false, + unique: false, + refreshOn: "", + widget: null, + validateOn: "change", + showCharCount: false, + showWordCount: false, + allowMultipleMasks: false, + inputType: "checkbox", + fieldSet: false, + id: "esa4upt", + defaultValue: { "": false } + }, + { + label: "Radio", + labelPosition: "top", + optionsLabelPosition: "right", + description: "", + tooltip: "", + customClass: "", + tabindex: "", + inline: false, + hidden: false, + hideLabel: false, + autofocus: false, + disabled: false, + tableView: false, + modalEdit: false, + values: [ + { label: "data", value: "data", shortcut: "" }, + { label: "label", value: "label", shortcut: "" } + ], + dataType: "", + persistent: true, + protected: false, + dbIndex: false, + encrypted: false, + redrawOn: "", + clearOnHide: true, + customDefaultValue: "", + calculateValue: "", + calculateServer: false, + allowCalculateOverride: false, + validate: { + required: false, + customMessage: "", + custom: "", + customPrivate: false, + json: "", + strictDateValidation: false, + multiple: false, + unique: false + }, + errorLabel: "", + key: "radio", + tags: [], + properties: {}, + conditional: { show: null, when: null, eq: "", json: "" }, + customConditional: "", + logic: [], + attributes: {}, + overlay: { + style: "", + page: "", + left: "", + top: "", + width: "", + height: "" + }, + type: "radio", + input: true, + placeholder: "", + prefix: "", + suffix: "", multiple: false, - unique: false - }, - unique: false, - errorLabel: "", - key: "select1", - tags: [], - properties: {}, - conditional: { show: null, when: null, eq: "", json: "" }, - customConditional: "", - logic: [], - attributes: {}, - overlay: { - style: "", - page: "", - left: "", - top: "", - width: "", - height: "" - }, - type: "select", - indexeddb: { filter: {} }, - selectFields: "", - searchField: "", - minSearch: 0, - filter: "", - limit: 100, - redrawOn: "", - input: true, - prefix: "", - suffix: "", - showCharCount: false, - showWordCount: false, - allowMultipleMasks: false, - lazyLoad: true, - authenticate: false, - searchThreshold: 0.3, - fuseOptions: { include: "score", threshold: 0.3 }, - id: "em8m4qk", - defaultValue: "" - }, - { - label: "Email", - labelPosition: "top", - placeholder: "", - description: "", - tooltip: "", - prefix: "", - suffix: "", - widget: { type: "input" }, - customClass: "", - tabindex: "", - autocomplete: "", - hidden: false, - hideLabel: false, - mask: false, - autofocus: false, - spellcheck: true, - disabled: false, - tableView: true, - modalEdit: false, - multiple: false, - persistent: true, - inputFormat: "plain", - protected: false, - dbIndex: false, - case: "", - encrypted: false, - redrawOn: "", - clearOnHide: true, - customDefaultValue: "", - calculateValue: "", - calculateServer: false, - allowCalculateOverride: false, - validateOn: "change", - validate: { - required: false, - pattern: "", - customMessage: "", - custom: "", - customPrivate: false, - json: "", - minLength: "", - maxLength: "", - strictDateValidation: false, + unique: false, + refreshOn: "", + widget: null, + validateOn: "change", + showCharCount: false, + showWordCount: false, + allowMultipleMasks: false, + inputType: "radio", + fieldSet: false, + id: "edh7o6o", + defaultValue: "" + }, + { + label: "Select", + labelPosition: "top", + widget: "choicesjs", + placeholder: "placeholder", + description: "", + tooltip: "", + customClass: "", + tabindex: "", + hidden: false, + hideLabel: false, + uniqueOptions: false, + autofocus: false, + disabled: false, + tableView: true, + modalEdit: false, multiple: false, - unique: false - }, - unique: false, - kickbox: { enabled: false }, - errorLabel: "", - key: "email", - tags: [], - properties: {}, - conditional: { show: null, when: null, eq: "", json: "" }, - customConditional: "", - logic: [], - attributes: {}, - overlay: { - style: "", - page: "", - left: "", - top: "", - width: "", - height: "" - }, - type: "email", - input: true, - refreshOn: "", - showCharCount: false, - showWordCount: false, - allowMultipleMasks: false, - inputType: "email", - inputMask: "", - id: "epj8sj28", - defaultValue: null - }, - { - label: "Url", - labelPosition: "top", - placeholder: "", - description: "", - tooltip: "", - prefix: "", - suffix: "", - widget: { type: "input" }, - customClass: "", - tabindex: "", - autocomplete: "", - hidden: false, - hideLabel: false, - mask: false, - autofocus: false, - spellcheck: true, - disabled: false, - tableView: true, - modalEdit: false, - multiple: false, - persistent: true, - inputFormat: "plain", - protected: false, - dbIndex: false, - encrypted: false, - redrawOn: "", - clearOnHide: true, - customDefaultValue: "", - calculateValue: "", - calculateServer: false, - allowCalculateOverride: false, - validateOn: "change", - validate: { - required: false, - pattern: "", - customMessage: "", - custom: "", - customPrivate: false, - json: "", - minLength: "", - maxLength: "", - strictDateValidation: false, + dataSrc: "values", + data: { + values: [ + { label: "label", value: "label" }, + { label: "save", value: "save" } + ], + resource: "", + json: "", + url: "", + custom: "" + }, + valueProperty: "", + dataType: "", + idPath: "id", + template: "{{ item.label }}", + refreshOn: "", + refreshOnBlur: "", + clearOnRefresh: false, + searchEnabled: true, + selectThreshold: 0.3, + readOnlyValue: false, + customOptions: {}, + useExactSearch: false, + persistent: true, + protected: false, + dbIndex: false, + encrypted: false, + clearOnHide: true, + customDefaultValue: "", + calculateValue: "", + calculateServer: false, + allowCalculateOverride: false, + validateOn: "change", + validate: { + required: false, + customMessage: "", + custom: "", + customPrivate: false, + json: "", + strictDateValidation: false, + multiple: false, + unique: false + }, + unique: false, + errorLabel: "", + key: "select", + tags: [], + properties: {}, + conditional: { show: null, when: null, eq: "", json: "" }, + customConditional: "", + logic: [], + attributes: {}, + overlay: { + style: "", + page: "", + left: "", + top: "", + width: "", + height: "" + }, + type: "select", + indexeddb: { filter: {} }, + selectFields: "", + searchField: "", + minSearch: 0, + filter: "", + limit: 100, + redrawOn: "", + input: true, + prefix: "", + suffix: "", + showCharCount: false, + showWordCount: false, + allowMultipleMasks: false, + lazyLoad: true, + authenticate: false, + searchThreshold: 0.3, + fuseOptions: { include: "score", threshold: 0.3 }, + id: "ebqtqd6", + defaultValue: "" + }, + { + label: "Select", + labelPosition: "top", + widget: "html5", + placeholder: "placeholder", + description: "", + tooltip: "", + customClass: "", + tabindex: "", + hidden: false, + hideLabel: false, + uniqueOptions: false, + autofocus: false, + disabled: false, + tableView: true, + modalEdit: false, multiple: false, - unique: false - }, - unique: false, - errorLabel: "", - key: "url", - tags: [], - properties: {}, - conditional: { show: null, when: null, eq: "", json: "" }, - customConditional: "", - logic: [], - attributes: {}, - overlay: { - style: "", - page: "", - left: "", - top: "", - width: "", - height: "" - }, - type: "url", - input: true, - refreshOn: "", - showCharCount: false, - showWordCount: false, - allowMultipleMasks: false, - inputType: "url", - inputMask: "", - id: "exw9p4", - defaultValue: null - }, - { - label: "Phone Number", - labelPosition: "top", - placeholder: "", - description: "", - tooltip: "", - prefix: "", - suffix: "", - widget: { type: "input" }, - inputMask: "(999) 999-9999", - allowMultipleMasks: false, - customClass: "", - tabindex: "", - autocomplete: "", - hidden: false, - hideLabel: false, - mask: false, - autofocus: false, - spellcheck: true, - disabled: false, - tableView: true, - modalEdit: false, - multiple: false, - persistent: true, - inputFormat: "plain", - protected: false, - dbIndex: false, - case: "", - encrypted: false, - redrawOn: "", - clearOnHide: true, - customDefaultValue: "", - calculateValue: "", - calculateServer: false, - allowCalculateOverride: false, - validateOn: "change", - validate: { - required: false, - customMessage: "", - custom: "", - customPrivate: false, - json: "", - strictDateValidation: false, + dataSrc: "values", + data: { + values: [{ label: "", value: "" }], + resource: "", + json: "", + url: "", + custom: "" + }, + valueProperty: "", + dataType: "", + idPath: "id", + template: "{{ item.label }}", + refreshOn: "", + refreshOnBlur: "", + clearOnRefresh: false, + searchEnabled: true, + selectThreshold: 0.3, + readOnlyValue: false, + customOptions: {}, + useExactSearch: false, + persistent: true, + protected: false, + dbIndex: false, + encrypted: false, + clearOnHide: true, + customDefaultValue: "", + calculateValue: "", + calculateServer: false, + allowCalculateOverride: false, + validateOn: "change", + validate: { + required: false, + customMessage: "", + custom: "", + customPrivate: false, + json: "", + strictDateValidation: false, + multiple: false, + unique: false + }, + unique: false, + errorLabel: "", + key: "select1", + tags: [], + properties: {}, + conditional: { show: null, when: null, eq: "", json: "" }, + customConditional: "", + logic: [], + attributes: {}, + overlay: { + style: "", + page: "", + left: "", + top: "", + width: "", + height: "" + }, + type: "select", + indexeddb: { filter: {} }, + selectFields: "", + searchField: "", + minSearch: 0, + filter: "", + limit: 100, + redrawOn: "", + input: true, + prefix: "", + suffix: "", + showCharCount: false, + showWordCount: false, + allowMultipleMasks: false, + lazyLoad: true, + authenticate: false, + searchThreshold: 0.3, + fuseOptions: { include: "score", threshold: 0.3 }, + id: "em8m4qk", + defaultValue: "" + }, + { + label: "Email", + labelPosition: "top", + placeholder: "", + description: "", + tooltip: "", + prefix: "", + suffix: "", + widget: { type: "input" }, + customClass: "", + tabindex: "", + autocomplete: "", + hidden: false, + hideLabel: false, + mask: false, + autofocus: false, + spellcheck: true, + disabled: false, + tableView: true, + modalEdit: false, multiple: false, + persistent: true, + inputFormat: "plain", + protected: false, + dbIndex: false, + case: "", + encrypted: false, + redrawOn: "", + clearOnHide: true, + customDefaultValue: "", + calculateValue: "", + calculateServer: false, + allowCalculateOverride: false, + validateOn: "change", + validate: { + required: false, + pattern: "", + customMessage: "", + custom: "", + customPrivate: false, + json: "", + minLength: "", + maxLength: "", + strictDateValidation: false, + multiple: false, + unique: false + }, unique: false, - minLength: "", - maxLength: "", - pattern: "" - }, - unique: false, - errorLabel: "", - key: "phoneNumber", - tags: [], - properties: {}, - conditional: { show: null, when: null, eq: "", json: "" }, - customConditional: "", - logic: [], - attributes: {}, - overlay: { - style: "", - page: "", - left: "", - top: "", - width: "", - height: "" - }, - type: "phoneNumber", - input: true, - refreshOn: "", - showCharCount: false, - showWordCount: false, - inputType: "tel", - id: "e2c7lpl", - defaultValue: null - }, - { - label: "Tags", - labelPosition: "top", - placeholder: "", - description: "", - tooltip: "", - customClass: "", - tabindex: "", - hidden: false, - hideLabel: false, - autofocus: false, - disabled: false, - tableView: false, - modalEdit: false, - delimeter: ",", - maxTags: 0, - storeas: "string", - persistent: true, - protected: false, - dbIndex: false, - encrypted: false, - redrawOn: "", - clearOnHide: true, - customDefaultValue: "", - calculateValue: "", - calculateServer: false, - allowCalculateOverride: false, - validate: { - required: false, - customMessage: "", - custom: "", - customPrivate: false, - json: "", - strictDateValidation: false, + kickbox: { enabled: false }, + errorLabel: "", + key: "email", + tags: [], + properties: {}, + conditional: { show: null, when: null, eq: "", json: "" }, + customConditional: "", + logic: [], + attributes: {}, + overlay: { + style: "", + page: "", + left: "", + top: "", + width: "", + height: "" + }, + type: "email", + input: true, + refreshOn: "", + showCharCount: false, + showWordCount: false, + allowMultipleMasks: false, + inputType: "email", + inputMask: "", + id: "epj8sj28", + defaultValue: null + }, + { + label: "Url", + labelPosition: "top", + placeholder: "", + description: "", + tooltip: "", + prefix: "", + suffix: "", + widget: { type: "input" }, + customClass: "", + tabindex: "", + autocomplete: "", + hidden: false, + hideLabel: false, + mask: false, + autofocus: false, + spellcheck: true, + disabled: false, + tableView: true, + modalEdit: false, multiple: false, - unique: false - }, - unique: false, - validateOn: "change", - errorLabel: "", - key: "tags", - tags: [], - properties: {}, - conditional: { show: null, when: null, eq: "", json: "" }, - customConditional: "", - logic: [], - attributes: {}, - overlay: { - style: "", - page: "", - left: "", - top: "", - width: "", - height: "" - }, - type: "tags", - input: true, - prefix: "", - suffix: "", - multiple: false, - refreshOn: "", - widget: { type: "input" }, - showCharCount: false, - showWordCount: false, - allowMultipleMasks: false, - id: "ejc82t", - defaultValue: null - }, - { - label: "Address", - labelPosition: "top", - enableManualMode: false, - disableClearIcon: false, - placeholder: "", - description: "", - tooltip: "", - customClass: "", - tabindex: "", - hidden: false, - hideLabel: false, - autofocus: false, - disabled: false, - tableView: false, - modalEdit: false, - multiple: false, - persistent: true, - protected: false, - dbIndex: false, - encrypted: false, - redrawOn: "", - clearOnHide: true, - customDefaultValue: "", - calculateValue: "", - calculateServer: false, - allowCalculateOverride: false, - provider: "google", - manualModeViewString: "", - validate: { - required: false, - customMessage: "", - custom: "", - customPrivate: false, - json: "", - strictDateValidation: false, + persistent: true, + inputFormat: "plain", + protected: false, + dbIndex: false, + encrypted: false, + redrawOn: "", + clearOnHide: true, + customDefaultValue: "", + calculateValue: "", + calculateServer: false, + allowCalculateOverride: false, + validateOn: "change", + validate: { + required: false, + pattern: "", + customMessage: "", + custom: "", + customPrivate: false, + json: "", + minLength: "", + maxLength: "", + strictDateValidation: false, + multiple: false, + unique: false + }, + unique: false, + errorLabel: "", + key: "url", + tags: [], + properties: {}, + conditional: { show: null, when: null, eq: "", json: "" }, + customConditional: "", + logic: [], + attributes: {}, + overlay: { + style: "", + page: "", + left: "", + top: "", + width: "", + height: "" + }, + type: "url", + input: true, + refreshOn: "", + showCharCount: false, + showWordCount: false, + allowMultipleMasks: false, + inputType: "url", + inputMask: "", + id: "exw9p4", + defaultValue: null + }, + { + label: "Phone Number", + labelPosition: "top", + placeholder: "", + description: "", + tooltip: "", + prefix: "", + suffix: "", + widget: { type: "input" }, + inputMask: "(999) 999-9999", + allowMultipleMasks: false, + customClass: "", + tabindex: "", + autocomplete: "", + hidden: false, + hideLabel: false, + mask: false, + autofocus: false, + spellcheck: true, + disabled: false, + tableView: true, + modalEdit: false, multiple: false, - unique: false - }, - unique: false, - validateOn: "change", - errorLabel: "", - key: "address", - tags: [], - properties: {}, - conditional: { show: null, when: null, eq: "", json: "" }, - customConditional: "", - logic: [], - attributes: {}, - overlay: { - style: "", - page: "", - left: "", - top: "", - width: "", - height: "" - }, - type: "address", - switchToManualModeLabel: "Can't find address? Switch to manual mode.", - input: true, - prefix: "", - suffix: "", - refreshOn: "", - widget: null, - showCharCount: false, - showWordCount: false, - allowMultipleMasks: false, - tree: true, - components: [ - { - label: "Address 1", - tableView: false, - key: "address1", - type: "textfield", - input: true, - customConditional: "show = _.get(instance, 'parent.manualMode', false);", - placeholder: "", - prefix: "", - customClass: "", - suffix: "", + persistent: true, + inputFormat: "plain", + protected: false, + dbIndex: false, + case: "", + encrypted: false, + redrawOn: "", + clearOnHide: true, + customDefaultValue: "", + calculateValue: "", + calculateServer: false, + allowCalculateOverride: false, + validateOn: "change", + validate: { + required: false, + customMessage: "", + custom: "", + customPrivate: false, + json: "", + strictDateValidation: false, multiple: false, - defaultValue: null, - protected: false, unique: false, - persistent: true, - hidden: false, - clearOnHide: true, - refreshOn: "", - redrawOn: "", - modalEdit: false, - labelPosition: "top", - description: "", - errorLabel: "", - tooltip: "", - hideLabel: false, - tabindex: "", - disabled: false, - autofocus: false, - dbIndex: false, - customDefaultValue: "", - calculateValue: "", - calculateServer: false, - widget: { type: "input" }, - attributes: {}, - validateOn: "change", - validate: { - required: false, - custom: "", - customPrivate: false, - strictDateValidation: false, + minLength: "", + maxLength: "", + pattern: "" + }, + unique: false, + errorLabel: "", + key: "phoneNumber", + tags: [], + properties: {}, + conditional: { show: null, when: null, eq: "", json: "" }, + customConditional: "", + logic: [], + attributes: {}, + overlay: { + style: "", + page: "", + left: "", + top: "", + width: "", + height: "" + }, + type: "phoneNumber", + input: true, + refreshOn: "", + showCharCount: false, + showWordCount: false, + inputType: "tel", + id: "e2c7lpl", + defaultValue: null + }, + { + label: "Tags", + labelPosition: "top", + placeholder: "", + description: "", + tooltip: "", + customClass: "", + tabindex: "", + hidden: false, + hideLabel: false, + autofocus: false, + disabled: false, + tableView: false, + modalEdit: false, + delimeter: ",", + maxTags: 0, + storeas: "string", + persistent: true, + protected: false, + dbIndex: false, + encrypted: false, + redrawOn: "", + clearOnHide: true, + customDefaultValue: "", + calculateValue: "", + calculateServer: false, + allowCalculateOverride: false, + validate: { + required: false, + customMessage: "", + custom: "", + customPrivate: false, + json: "", + strictDateValidation: false, + multiple: false, + unique: false + }, + unique: false, + validateOn: "change", + errorLabel: "", + key: "tags", + tags: [], + properties: {}, + conditional: { show: null, when: null, eq: "", json: "" }, + customConditional: "", + logic: [], + attributes: {}, + overlay: { + style: "", + page: "", + left: "", + top: "", + width: "", + height: "" + }, + type: "tags", + input: true, + prefix: "", + suffix: "", + multiple: false, + refreshOn: "", + widget: { type: "input" }, + showCharCount: false, + showWordCount: false, + allowMultipleMasks: false, + id: "ejc82t", + defaultValue: null + }, + { + label: "Address", + labelPosition: "top", + enableManualMode: false, + disableClearIcon: false, + placeholder: "", + description: "", + tooltip: "", + customClass: "", + tabindex: "", + hidden: false, + hideLabel: false, + autofocus: false, + disabled: false, + tableView: false, + modalEdit: false, + multiple: false, + persistent: true, + protected: false, + dbIndex: false, + encrypted: false, + redrawOn: "", + clearOnHide: true, + customDefaultValue: "", + calculateValue: "", + calculateServer: false, + allowCalculateOverride: false, + provider: "google", + manualModeViewString: "", + validate: { + required: false, + customMessage: "", + custom: "", + customPrivate: false, + json: "", + strictDateValidation: false, + multiple: false, + unique: false + }, + unique: false, + validateOn: "change", + errorLabel: "", + key: "address", + tags: [], + properties: {}, + conditional: { show: null, when: null, eq: "", json: "" }, + customConditional: "", + logic: [], + attributes: {}, + overlay: { + style: "", + page: "", + left: "", + top: "", + width: "", + height: "" + }, + type: "address", + switchToManualModeLabel: "Can't find address? Switch to manual mode.", + input: true, + prefix: "", + suffix: "", + refreshOn: "", + widget: null, + showCharCount: false, + showWordCount: false, + allowMultipleMasks: false, + tree: true, + components: [ + { + label: "Address 1", + tableView: false, + key: "address1", + type: "textfield", + input: true, + customConditional: "show = _.get(instance, 'parent.manualMode', false);", + placeholder: "", + prefix: "", + customClass: "", + suffix: "", multiple: false, + defaultValue: null, + protected: false, unique: false, - minLength: "", - maxLength: "", - pattern: "" + persistent: true, + hidden: false, + clearOnHide: true, + refreshOn: "", + redrawOn: "", + modalEdit: false, + labelPosition: "top", + description: "", + errorLabel: "", + tooltip: "", + hideLabel: false, + tabindex: "", + disabled: false, + autofocus: false, + dbIndex: false, + customDefaultValue: "", + calculateValue: "", + calculateServer: false, + widget: { type: "input" }, + attributes: {}, + validateOn: "change", + validate: { + required: false, + custom: "", + customPrivate: false, + strictDateValidation: false, + multiple: false, + unique: false, + minLength: "", + maxLength: "", + pattern: "" + }, + conditional: { show: null, when: null, eq: "" }, + overlay: { style: "", left: "", top: "", width: "", height: "" }, + allowCalculateOverride: false, + encrypted: false, + showCharCount: false, + showWordCount: false, + properties: {}, + allowMultipleMasks: false, + mask: false, + inputType: "text", + inputFormat: "plain", + inputMask: "", + spellcheck: true, + id: "eecfg6h" }, - conditional: { show: null, when: null, eq: "" }, - overlay: { style: "", left: "", top: "", width: "", height: "" }, - allowCalculateOverride: false, - encrypted: false, - showCharCount: false, - showWordCount: false, - properties: {}, - allowMultipleMasks: false, - mask: false, - inputType: "text", - inputFormat: "plain", - inputMask: "", - spellcheck: true, - id: "eecfg6h" - }, - { - label: "Address 2", - tableView: false, - key: "address2", - type: "textfield", - input: true, - customConditional: "show = _.get(instance, 'parent.manualMode', false);", - placeholder: "", - prefix: "", - customClass: "", - suffix: "", - multiple: false, - defaultValue: null, - protected: false, - unique: false, - persistent: true, - hidden: false, - clearOnHide: true, - refreshOn: "", - redrawOn: "", - modalEdit: false, - labelPosition: "top", - description: "", - errorLabel: "", - tooltip: "", - hideLabel: false, - tabindex: "", - disabled: false, - autofocus: false, - dbIndex: false, - customDefaultValue: "", - calculateValue: "", - calculateServer: false, - widget: { type: "input" }, - attributes: {}, - validateOn: "change", - validate: { - required: false, - custom: "", - customPrivate: false, - strictDateValidation: false, + { + label: "Address 2", + tableView: false, + key: "address2", + type: "textfield", + input: true, + customConditional: "show = _.get(instance, 'parent.manualMode', false);", + placeholder: "", + prefix: "", + customClass: "", + suffix: "", multiple: false, + defaultValue: null, + protected: false, unique: false, - minLength: "", - maxLength: "", - pattern: "" + persistent: true, + hidden: false, + clearOnHide: true, + refreshOn: "", + redrawOn: "", + modalEdit: false, + labelPosition: "top", + description: "", + errorLabel: "", + tooltip: "", + hideLabel: false, + tabindex: "", + disabled: false, + autofocus: false, + dbIndex: false, + customDefaultValue: "", + calculateValue: "", + calculateServer: false, + widget: { type: "input" }, + attributes: {}, + validateOn: "change", + validate: { + required: false, + custom: "", + customPrivate: false, + strictDateValidation: false, + multiple: false, + unique: false, + minLength: "", + maxLength: "", + pattern: "" + }, + conditional: { show: null, when: null, eq: "" }, + overlay: { style: "", left: "", top: "", width: "", height: "" }, + allowCalculateOverride: false, + encrypted: false, + showCharCount: false, + showWordCount: false, + properties: {}, + allowMultipleMasks: false, + mask: false, + inputType: "text", + inputFormat: "plain", + inputMask: "", + spellcheck: true, + id: "eajhpuu" }, - conditional: { show: null, when: null, eq: "" }, - overlay: { style: "", left: "", top: "", width: "", height: "" }, - allowCalculateOverride: false, - encrypted: false, - showCharCount: false, - showWordCount: false, - properties: {}, - allowMultipleMasks: false, - mask: false, - inputType: "text", - inputFormat: "plain", - inputMask: "", - spellcheck: true, - id: "eajhpuu" - }, - { - label: "City", - tableView: false, - key: "city", - type: "textfield", - input: true, - customConditional: "show = _.get(instance, 'parent.manualMode', false);", - placeholder: "", - prefix: "", - customClass: "", - suffix: "", - multiple: false, - defaultValue: null, - protected: false, - unique: false, - persistent: true, - hidden: false, - clearOnHide: true, - refreshOn: "", - redrawOn: "", - modalEdit: false, - labelPosition: "top", - description: "", - errorLabel: "", - tooltip: "", - hideLabel: false, - tabindex: "", - disabled: false, - autofocus: false, - dbIndex: false, - customDefaultValue: "", - calculateValue: "", - calculateServer: false, - widget: { type: "input" }, - attributes: {}, - validateOn: "change", - validate: { - required: false, - custom: "", - customPrivate: false, - strictDateValidation: false, + { + label: "City", + tableView: false, + key: "city", + type: "textfield", + input: true, + customConditional: "show = _.get(instance, 'parent.manualMode', false);", + placeholder: "", + prefix: "", + customClass: "", + suffix: "", multiple: false, + defaultValue: null, + protected: false, unique: false, - minLength: "", - maxLength: "", - pattern: "" + persistent: true, + hidden: false, + clearOnHide: true, + refreshOn: "", + redrawOn: "", + modalEdit: false, + labelPosition: "top", + description: "", + errorLabel: "", + tooltip: "", + hideLabel: false, + tabindex: "", + disabled: false, + autofocus: false, + dbIndex: false, + customDefaultValue: "", + calculateValue: "", + calculateServer: false, + widget: { type: "input" }, + attributes: {}, + validateOn: "change", + validate: { + required: false, + custom: "", + customPrivate: false, + strictDateValidation: false, + multiple: false, + unique: false, + minLength: "", + maxLength: "", + pattern: "" + }, + conditional: { show: null, when: null, eq: "" }, + overlay: { style: "", left: "", top: "", width: "", height: "" }, + allowCalculateOverride: false, + encrypted: false, + showCharCount: false, + showWordCount: false, + properties: {}, + allowMultipleMasks: false, + mask: false, + inputType: "text", + inputFormat: "plain", + inputMask: "", + spellcheck: true, + id: "efpnrca7" }, - conditional: { show: null, when: null, eq: "" }, - overlay: { style: "", left: "", top: "", width: "", height: "" }, - allowCalculateOverride: false, - encrypted: false, - showCharCount: false, - showWordCount: false, - properties: {}, - allowMultipleMasks: false, - mask: false, - inputType: "text", - inputFormat: "plain", - inputMask: "", - spellcheck: true, - id: "efpnrca7" - }, - { - label: "State", - tableView: false, - key: "state", - type: "textfield", - input: true, - customConditional: "show = _.get(instance, 'parent.manualMode', false);", - placeholder: "", - prefix: "", - customClass: "", - suffix: "", - multiple: false, - defaultValue: null, - protected: false, - unique: false, - persistent: true, - hidden: false, - clearOnHide: true, - refreshOn: "", - redrawOn: "", - modalEdit: false, - labelPosition: "top", - description: "", - errorLabel: "", - tooltip: "", - hideLabel: false, - tabindex: "", - disabled: false, - autofocus: false, - dbIndex: false, - customDefaultValue: "", - calculateValue: "", - calculateServer: false, - widget: { type: "input" }, - attributes: {}, - validateOn: "change", - validate: { - required: false, - custom: "", - customPrivate: false, - strictDateValidation: false, + { + label: "State", + tableView: false, + key: "state", + type: "textfield", + input: true, + customConditional: "show = _.get(instance, 'parent.manualMode', false);", + placeholder: "", + prefix: "", + customClass: "", + suffix: "", multiple: false, + defaultValue: null, + protected: false, unique: false, - minLength: "", - maxLength: "", - pattern: "" + persistent: true, + hidden: false, + clearOnHide: true, + refreshOn: "", + redrawOn: "", + modalEdit: false, + labelPosition: "top", + description: "", + errorLabel: "", + tooltip: "", + hideLabel: false, + tabindex: "", + disabled: false, + autofocus: false, + dbIndex: false, + customDefaultValue: "", + calculateValue: "", + calculateServer: false, + widget: { type: "input" }, + attributes: {}, + validateOn: "change", + validate: { + required: false, + custom: "", + customPrivate: false, + strictDateValidation: false, + multiple: false, + unique: false, + minLength: "", + maxLength: "", + pattern: "" + }, + conditional: { show: null, when: null, eq: "" }, + overlay: { style: "", left: "", top: "", width: "", height: "" }, + allowCalculateOverride: false, + encrypted: false, + showCharCount: false, + showWordCount: false, + properties: {}, + allowMultipleMasks: false, + mask: false, + inputType: "text", + inputFormat: "plain", + inputMask: "", + spellcheck: true, + id: "eu3kksv" }, - conditional: { show: null, when: null, eq: "" }, - overlay: { style: "", left: "", top: "", width: "", height: "" }, - allowCalculateOverride: false, - encrypted: false, - showCharCount: false, - showWordCount: false, - properties: {}, - allowMultipleMasks: false, - mask: false, - inputType: "text", - inputFormat: "plain", - inputMask: "", - spellcheck: true, - id: "eu3kksv" - }, - { - label: "Country", - tableView: false, - key: "country", - type: "textfield", - input: true, - customConditional: "show = _.get(instance, 'parent.manualMode', false);", - placeholder: "", - prefix: "", - customClass: "", - suffix: "", - multiple: false, - defaultValue: null, - protected: false, - unique: false, - persistent: true, - hidden: false, - clearOnHide: true, - refreshOn: "", - redrawOn: "", - modalEdit: false, - labelPosition: "top", - description: "", - errorLabel: "", - tooltip: "", - hideLabel: false, - tabindex: "", - disabled: false, - autofocus: false, - dbIndex: false, - customDefaultValue: "", - calculateValue: "", - calculateServer: false, - widget: { type: "input" }, - attributes: {}, - validateOn: "change", - validate: { - required: false, - custom: "", - customPrivate: false, - strictDateValidation: false, + { + label: "Country", + tableView: false, + key: "country", + type: "textfield", + input: true, + customConditional: "show = _.get(instance, 'parent.manualMode', false);", + placeholder: "", + prefix: "", + customClass: "", + suffix: "", multiple: false, + defaultValue: null, + protected: false, unique: false, - minLength: "", - maxLength: "", - pattern: "" + persistent: true, + hidden: false, + clearOnHide: true, + refreshOn: "", + redrawOn: "", + modalEdit: false, + labelPosition: "top", + description: "", + errorLabel: "", + tooltip: "", + hideLabel: false, + tabindex: "", + disabled: false, + autofocus: false, + dbIndex: false, + customDefaultValue: "", + calculateValue: "", + calculateServer: false, + widget: { type: "input" }, + attributes: {}, + validateOn: "change", + validate: { + required: false, + custom: "", + customPrivate: false, + strictDateValidation: false, + multiple: false, + unique: false, + minLength: "", + maxLength: "", + pattern: "" + }, + conditional: { show: null, when: null, eq: "" }, + overlay: { style: "", left: "", top: "", width: "", height: "" }, + allowCalculateOverride: false, + encrypted: false, + showCharCount: false, + showWordCount: false, + properties: {}, + allowMultipleMasks: false, + mask: false, + inputType: "text", + inputFormat: "plain", + inputMask: "", + spellcheck: true, + id: "el39cu9" }, - conditional: { show: null, when: null, eq: "" }, - overlay: { style: "", left: "", top: "", width: "", height: "" }, - allowCalculateOverride: false, - encrypted: false, - showCharCount: false, - showWordCount: false, - properties: {}, - allowMultipleMasks: false, - mask: false, - inputType: "text", - inputFormat: "plain", - inputMask: "", - spellcheck: true, - id: "el39cu9" - }, - { - label: "Zip Code", - tableView: false, - key: "zip", - type: "textfield", - input: true, - customConditional: "show = _.get(instance, 'parent.manualMode', false);", - placeholder: "", - prefix: "", - customClass: "", - suffix: "", - multiple: false, - defaultValue: null, - protected: false, - unique: false, - persistent: true, - hidden: false, - clearOnHide: true, - refreshOn: "", - redrawOn: "", - modalEdit: false, - labelPosition: "top", - description: "", - errorLabel: "", - tooltip: "", - hideLabel: false, - tabindex: "", - disabled: false, - autofocus: false, - dbIndex: false, - customDefaultValue: "", - calculateValue: "", - calculateServer: false, - widget: { type: "input" }, - attributes: {}, - validateOn: "change", - validate: { - required: false, - custom: "", - customPrivate: false, - strictDateValidation: false, + { + label: "Zip Code", + tableView: false, + key: "zip", + type: "textfield", + input: true, + customConditional: "show = _.get(instance, 'parent.manualMode', false);", + placeholder: "", + prefix: "", + customClass: "", + suffix: "", multiple: false, + defaultValue: null, + protected: false, unique: false, - minLength: "", - maxLength: "", - pattern: "" - }, - conditional: { show: null, when: null, eq: "" }, - overlay: { style: "", left: "", top: "", width: "", height: "" }, - allowCalculateOverride: false, - encrypted: false, - showCharCount: false, - showWordCount: false, - properties: {}, - allowMultipleMasks: false, - mask: false, - inputType: "text", - inputFormat: "plain", - inputMask: "", - spellcheck: true, - id: "epyac4" - } - ], - providerOptions: { params: { key: "fze", region: "" } }, - id: "er02e2gb", - defaultValue: {} - }, - { - label: "Date / Time", - labelPosition: "top", - displayInTimezone: "viewer", - useLocaleSettings: false, - allowInput: true, - format: "yyyy-MM-dd hh:mm a", - placeholder: "", - description: "", - tooltip: "", - customClass: "", - tabindex: "", - hidden: false, - hideLabel: false, - autofocus: false, - disabled: false, - tableView: false, - modalEdit: false, - enableDate: true, - enableMinDateInput: false, - datePicker: { - minDate: null, - maxDate: null, - disable: "", - disableFunction: "", - disableWeekends: false, - disableWeekdays: false, - showWeeks: true, - startingDay: 0, - initDate: "", - minMode: "day", - maxMode: "year", - yearRows: 4, - yearColumns: 5 - }, - enableMaxDateInput: false, - enableTime: true, - timePicker: { - showMeridian: true, - hourStep: 1, - minuteStep: 1, - readonlyInput: false, - mousewheel: true, - arrowkeys: true - }, - multiple: false, - defaultValue: "", - defaultDate: "", - customOptions: {}, - persistent: true, - protected: false, - dbIndex: false, - encrypted: false, - redrawOn: "", - clearOnHide: true, - customDefaultValue: "", - calculateValue: "", - calculateServer: false, - allowCalculateOverride: false, - validate: { - required: false, - customMessage: "", - custom: "", - customPrivate: false, - json: "", - strictDateValidation: false, - multiple: false, - unique: false - }, - unique: false, - validateOn: "change", - errorLabel: "", - key: "dateTime", - tags: [], - properties: {}, - conditional: { show: null, when: null, eq: "", json: "" }, - customConditional: "", - logic: [], - attributes: {}, - overlay: { - style: "", - page: "", - left: "", - top: "", - width: "", - height: "" + persistent: true, + hidden: false, + clearOnHide: true, + refreshOn: "", + redrawOn: "", + modalEdit: false, + labelPosition: "top", + description: "", + errorLabel: "", + tooltip: "", + hideLabel: false, + tabindex: "", + disabled: false, + autofocus: false, + dbIndex: false, + customDefaultValue: "", + calculateValue: "", + calculateServer: false, + widget: { type: "input" }, + attributes: {}, + validateOn: "change", + validate: { + required: false, + custom: "", + customPrivate: false, + strictDateValidation: false, + multiple: false, + unique: false, + minLength: "", + maxLength: "", + pattern: "" + }, + conditional: { show: null, when: null, eq: "" }, + overlay: { style: "", left: "", top: "", width: "", height: "" }, + allowCalculateOverride: false, + encrypted: false, + showCharCount: false, + showWordCount: false, + properties: {}, + allowMultipleMasks: false, + mask: false, + inputType: "text", + inputFormat: "plain", + inputMask: "", + spellcheck: true, + id: "epyac4" + } + ], + providerOptions: { params: { key: "fze", region: "" } }, + id: "er02e2gb", + defaultValue: {} }, - type: "datetime", - timezone: "", - input: true, - prefix: "", - suffix: "", - refreshOn: "", - widget: { - type: "calendar", + { + label: "Date / Time", + labelPosition: "top", displayInTimezone: "viewer", - locale: "en", useLocaleSettings: false, allowInput: true, - mode: "single", - enableTime: true, - noCalendar: false, format: "yyyy-MM-dd hh:mm a", - hourIncrement: 1, - minuteIncrement: 1, - minDate: null, - disabledDates: "", - disableWeekends: false, - disableWeekdays: false, - disableFunction: "", - maxDate: null - }, - showCharCount: false, - showWordCount: false, - allowMultipleMasks: false, - datepickerMode: "day", - id: "el9idgl" - }, - { - label: "Day", - hideInputLabels: false, - inputsLabelPosition: "top", - description: "", - useLocaleSettings: false, - tooltip: "", - customClass: "", - tabindex: "", - hidden: false, - hideLabel: false, - autofocus: false, - disabled: false, - tableView: false, - modalEdit: false, - fields: { - day: { - type: "number", - placeholder: "", - hide: false, - required: false - }, - month: { - type: "select", - placeholder: "", - hide: false, - required: false - }, - year: { - type: "number", - placeholder: "", - hide: false, - required: false - } - }, - dayFirst: false, - persistent: true, - protected: false, - dbIndex: false, - encrypted: false, - redrawOn: "", - clearOnHide: true, - customDefaultValue: "", - calculateValue: "", - calculateServer: false, - allowCalculateOverride: false, - validateOn: "change", - maxDate: "", - minDate: "", - unique: false, - errorLabel: "", - validate: { - customMessage: "", - custom: "", - customPrivate: false, - json: "", - required: false, - strictDateValidation: false, + placeholder: "", + description: "", + tooltip: "", + customClass: "", + tabindex: "", + hidden: false, + hideLabel: false, + autofocus: false, + disabled: false, + tableView: false, + modalEdit: false, + enableDate: true, + enableMinDateInput: false, + datePicker: { + minDate: null, + maxDate: null, + disable: "", + disableFunction: "", + disableWeekends: false, + disableWeekdays: false, + showWeeks: true, + startingDay: 0, + initDate: "", + minMode: "day", + maxMode: "year", + yearRows: 4, + yearColumns: 5 + }, + enableMaxDateInput: false, + enableTime: true, + timePicker: { + showMeridian: true, + hourStep: 1, + minuteStep: 1, + readonlyInput: false, + mousewheel: true, + arrowkeys: true + }, multiple: false, - unique: false - }, - key: "day", - tags: [], - properties: {}, - conditional: { show: null, when: null, eq: "", json: "" }, - customConditional: "", - logic: [], - attributes: {}, - overlay: { - style: "", - page: "", - left: "", - top: "", - width: "", - height: "" - }, - type: "day", - input: true, - placeholder: "", - prefix: "", - suffix: "", - multiple: false, - refreshOn: "", - labelPosition: "top", - widget: null, - showCharCount: false, - showWordCount: false, - allowMultipleMasks: false, - id: "ecgefls", - defaultValue: "00/00/0000" - }, - { - label: "Currency", - labelPosition: "top", - placeholder: "", - description: "", - tooltip: "", - prefix: "", - suffix: "", - widget: { type: "input" }, - customClass: "", - tabindex: "", - autocomplete: "", - hidden: false, - hideLabel: false, - mask: false, - autofocus: false, - spellcheck: true, - disabled: false, - tableView: false, - modalEdit: false, - multiple: false, - persistent: true, - currency: "USD", - inputFormat: "plain", - protected: false, - dbIndex: false, - case: "", - encrypted: false, - redrawOn: "", - clearOnHide: true, - customDefaultValue: "", - calculateValue: "", - calculateServer: false, - allowCalculateOverride: false, - validateOn: "change", - validate: { - required: false, - customMessage: "", - custom: "", - customPrivate: false, - json: "", - strictDateValidation: false, + defaultValue: "", + defaultDate: "", + customOptions: {}, + persistent: true, + protected: false, + dbIndex: false, + encrypted: false, + redrawOn: "", + clearOnHide: true, + customDefaultValue: "", + calculateValue: "", + calculateServer: false, + allowCalculateOverride: false, + validate: { + required: false, + customMessage: "", + custom: "", + customPrivate: false, + json: "", + strictDateValidation: false, + multiple: false, + unique: false + }, + unique: false, + validateOn: "change", + errorLabel: "", + key: "dateTime", + tags: [], + properties: {}, + conditional: { show: null, when: null, eq: "", json: "" }, + customConditional: "", + logic: [], + attributes: {}, + overlay: { + style: "", + page: "", + left: "", + top: "", + width: "", + height: "" + }, + type: "datetime", + timezone: "", + input: true, + prefix: "", + suffix: "", + refreshOn: "", + widget: { + type: "calendar", + displayInTimezone: "viewer", + locale: "en", + useLocaleSettings: false, + allowInput: true, + mode: "single", + enableTime: true, + noCalendar: false, + format: "yyyy-MM-dd hh:mm a", + hourIncrement: 1, + minuteIncrement: 1, + minDate: null, + disabledDates: "", + disableWeekends: false, + disableWeekdays: false, + disableFunction: "", + maxDate: null + }, + showCharCount: false, + showWordCount: false, + allowMultipleMasks: false, + datepickerMode: "day", + id: "el9idgl" + }, + { + label: "Day", + hideInputLabels: false, + inputsLabelPosition: "top", + description: "", + useLocaleSettings: false, + tooltip: "", + customClass: "", + tabindex: "", + hidden: false, + hideLabel: false, + autofocus: false, + disabled: false, + tableView: false, + modalEdit: false, + fields: { + day: { + type: "number", + placeholder: "", + hide: false, + required: false + }, + month: { + type: "select", + placeholder: "", + hide: false, + required: false + }, + year: { + type: "number", + placeholder: "", + hide: false, + required: false + } + }, + dayFirst: false, + persistent: true, + protected: false, + dbIndex: false, + encrypted: false, + redrawOn: "", + clearOnHide: true, + customDefaultValue: "", + calculateValue: "", + calculateServer: false, + allowCalculateOverride: false, + validateOn: "change", + maxDate: "", + minDate: "", + unique: false, + errorLabel: "", + validate: { + customMessage: "", + custom: "", + customPrivate: false, + json: "", + required: false, + strictDateValidation: false, + multiple: false, + unique: false + }, + key: "day", + tags: [], + properties: {}, + conditional: { show: null, when: null, eq: "", json: "" }, + customConditional: "", + logic: [], + attributes: {}, + overlay: { + style: "", + page: "", + left: "", + top: "", + width: "", + height: "" + }, + type: "day", + input: true, + placeholder: "", + prefix: "", + suffix: "", multiple: false, + refreshOn: "", + labelPosition: "top", + widget: null, + showCharCount: false, + showWordCount: false, + allowMultipleMasks: false, + id: "ecgefls", + defaultValue: "00/00/0000" + }, + { + label: "Currency", + labelPosition: "top", + placeholder: "", + description: "", + tooltip: "", + prefix: "", + suffix: "", + widget: { type: "input" }, + customClass: "", + tabindex: "", + autocomplete: "", + hidden: false, + hideLabel: false, + mask: false, + autofocus: false, + spellcheck: true, + disabled: false, + tableView: false, + modalEdit: false, + multiple: false, + persistent: true, + currency: "USD", + inputFormat: "plain", + protected: false, + dbIndex: false, + case: "", + encrypted: false, + redrawOn: "", + clearOnHide: true, + customDefaultValue: "", + calculateValue: "", + calculateServer: false, + allowCalculateOverride: false, + validateOn: "change", + validate: { + required: false, + customMessage: "", + custom: "", + customPrivate: false, + json: "", + strictDateValidation: false, + multiple: false, + unique: false, + min: "", + max: "", + step: "any", + integer: "" + }, unique: false, - min: "", - max: "", - step: "any", - integer: "" - }, - unique: false, - errorLabel: "", - key: "currency", - tags: [], - properties: {}, - conditional: { show: null, when: null, eq: "", json: "" }, - customConditional: "", - logic: [], - attributes: {}, - overlay: { - style: "", - page: "", - left: "", - top: "", - width: "", - height: "" - }, - type: "currency", - input: true, - refreshOn: "", - showCharCount: false, - showWordCount: false, - allowMultipleMasks: false, - delimiter: true, - id: "em22wkd", - defaultValue: null - }, - { - type: "button", - label: "Submit", - key: "submit", - size: "md", - block: false, - action: "submit", - disableOnInvalid: true, - theme: "primary", - input: true, - placeholder: "", - prefix: "", - customClass: "", - suffix: "", - multiple: false, - defaultValue: null, - protected: false, - unique: false, - persistent: false, - hidden: false, - clearOnHide: true, - refreshOn: "", - redrawOn: "", - tableView: false, - modalEdit: false, - labelPosition: "top", - description: "", - errorLabel: "", - tooltip: "", - hideLabel: false, - tabindex: "", - disabled: false, - autofocus: false, - dbIndex: false, - customDefaultValue: "", - calculateValue: "", - calculateServer: false, - widget: { type: "input" }, - attributes: {}, - validateOn: "change", - validate: { - required: false, - custom: "", - customPrivate: false, - strictDateValidation: false, + errorLabel: "", + key: "currency", + tags: [], + properties: {}, + conditional: { show: null, when: null, eq: "", json: "" }, + customConditional: "", + logic: [], + attributes: {}, + overlay: { + style: "", + page: "", + left: "", + top: "", + width: "", + height: "" + }, + type: "currency", + input: true, + refreshOn: "", + showCharCount: false, + showWordCount: false, + allowMultipleMasks: false, + delimiter: true, + id: "em22wkd", + defaultValue: null + }, + { + type: "button", + label: "Submit", + key: "submit", + size: "md", + block: false, + action: "submit", + disableOnInvalid: true, + theme: "primary", + input: true, + placeholder: "", + prefix: "", + customClass: "", + suffix: "", multiple: false, - unique: false - }, - conditional: { show: null, when: null, eq: "" }, - overlay: { style: "", left: "", top: "", width: "", height: "" }, - allowCalculateOverride: false, - encrypted: false, - showCharCount: false, - showWordCount: false, - properties: {}, - allowMultipleMasks: false, - leftIcon: "", - rightIcon: "", - dataGridLabel: true, - id: "e08gq3l" - } - ], - options: { template: "tailwind", iconset: "bx" } + defaultValue: null, + protected: false, + unique: false, + persistent: false, + hidden: false, + clearOnHide: true, + refreshOn: "", + redrawOn: "", + tableView: false, + modalEdit: false, + labelPosition: "top", + description: "", + errorLabel: "", + tooltip: "", + hideLabel: false, + tabindex: "", + disabled: false, + autofocus: false, + dbIndex: false, + customDefaultValue: "", + calculateValue: "", + calculateServer: false, + widget: { type: "input" }, + attributes: {}, + validateOn: "change", + validate: { + required: false, + custom: "", + customPrivate: false, + strictDateValidation: false, + multiple: false, + unique: false + }, + conditional: { show: null, when: null, eq: "" }, + overlay: { style: "", left: "", top: "", width: "", height: "" }, + allowCalculateOverride: false, + encrypted: false, + showCharCount: false, + showWordCount: false, + properties: {}, + allowMultipleMasks: false, + leftIcon: "", + rightIcon: "", + dataGridLabel: true, + id: "e08gq3l" + } + ] + } }; -export const Wizard = (args: any) => { - return ; -}; +export const Wizard = { + render: (args: any) => { + return ; + }, -Wizard.args = { - display: "wizard", - components: [ - { - label: "Text Field", - labelPosition: "top", - placeholder: "", - description: "", - tooltip: "", - prefix: "", - suffix: "", - widget: { type: "input" }, - inputMask: "", - allowMultipleMasks: false, - customClass: "", - tabindex: "", - autocomplete: "", - hidden: false, - hideLabel: false, - showWordCount: false, - showCharCount: false, - mask: false, - autofocus: false, - spellcheck: true, - disabled: false, - tableView: true, - modalEdit: false, - multiple: false, - persistent: true, - inputFormat: "plain", - protected: false, - dbIndex: false, - case: "", - encrypted: false, - redrawOn: "", - clearOnHide: true, - customDefaultValue: "", - calculateValue: "", - calculateServer: false, - allowCalculateOverride: false, - validateOn: "change", - validate: { - required: true, - pattern: "", - customMessage: "", - custom: "", - customPrivate: false, - json: "", - minLength: "", - maxLength: "", - strictDateValidation: false, - multiple: false, - unique: false - }, - unique: false, - errorLabel: "", - key: "textField", - tags: [], - properties: {}, - conditional: { show: null, when: null, eq: "", json: "" }, - customConditional: "", - logic: [], - attributes: {}, - overlay: { - style: "", - page: "", - left: "", - top: "", - width: "", - height: "" - }, - type: "textfield", - input: true, - refreshOn: "", - inputType: "text", - id: "eqb1o4r", - defaultValue: "" - }, - { - label: "Text Area", - labelPosition: "top", - placeholder: "Placeholder", - description: "description", - tooltip: "tooltip", - prefix: "", - suffix: "", - widget: { type: "input" }, - editor: "", - autoExpand: false, - customClass: "", - tabindex: "", - autocomplete: "", - hidden: false, - hideLabel: false, - showWordCount: false, - showCharCount: false, - autofocus: false, - spellcheck: true, - disabled: false, - tableView: true, - modalEdit: false, - multiple: false, - persistent: true, - inputFormat: "html", - protected: false, - dbIndex: false, - case: "", - encrypted: false, - redrawOn: "", - clearOnHide: true, - customDefaultValue: "", - calculateValue: "", - calculateServer: false, - allowCalculateOverride: false, - validateOn: "change", - validate: { - required: false, - pattern: "", - customMessage: "", - custom: "", - customPrivate: false, - json: "", - minLength: "", - maxLength: "", - minWords: "", - maxWords: "", - strictDateValidation: false, - multiple: false, - unique: false - }, - unique: false, - errorLabel: "", - key: "textArea", - tags: [], - properties: {}, - conditional: { show: null, when: null, eq: "", json: "" }, - customConditional: "", - logic: [], - fixedSize: true, - overlay: { - style: "", - page: "", - left: "", - top: "", - width: "", - height: "" - }, - attributes: {}, - type: "textarea", - rows: 3, - wysiwyg: false, - input: true, - refreshOn: "", - allowMultipleMasks: false, - mask: false, - inputType: "text", - inputMask: "", - id: "e4jsrqc", - defaultValue: "" - }, - { - label: "Number", - labelPosition: "top", - placeholder: "", - description: "", - tooltip: "", - prefix: "", - suffix: "", - widget: { type: "input" }, - customClass: "", - tabindex: "", - autocomplete: "", - hidden: false, - hideLabel: false, - mask: false, - autofocus: false, - spellcheck: true, - disabled: false, - tableView: false, - modalEdit: false, - multiple: false, - persistent: true, - delimiter: false, - requireDecimal: false, - inputFormat: "plain", - protected: false, - dbIndex: false, - encrypted: false, - redrawOn: "", - clearOnHide: true, - customDefaultValue: "", - calculateValue: "", - calculateServer: false, - allowCalculateOverride: false, - validateOn: "change", - validate: { - required: false, - customMessage: "", - custom: "", - customPrivate: false, - json: "", - min: "", - max: "", - strictDateValidation: false, + args: { + display: "wizard", + components: [ + { + label: "Text Field", + labelPosition: "top", + placeholder: "", + description: "", + tooltip: "", + prefix: "", + suffix: "", + widget: { type: "input" }, + inputMask: "", + allowMultipleMasks: false, + customClass: "", + tabindex: "", + autocomplete: "", + hidden: false, + hideLabel: false, + showWordCount: false, + showCharCount: false, + mask: false, + autofocus: false, + spellcheck: true, + disabled: false, + tableView: true, + modalEdit: false, multiple: false, + persistent: true, + inputFormat: "plain", + protected: false, + dbIndex: false, + case: "", + encrypted: false, + redrawOn: "", + clearOnHide: true, + customDefaultValue: "", + calculateValue: "", + calculateServer: false, + allowCalculateOverride: false, + validateOn: "change", + validate: { + required: true, + pattern: "", + customMessage: "", + custom: "", + customPrivate: false, + json: "", + minLength: "", + maxLength: "", + strictDateValidation: false, + multiple: false, + unique: false + }, unique: false, - step: "any", - integer: "" - }, - errorLabel: "", - key: "number", - tags: [], - properties: {}, - conditional: { show: null, when: null, eq: "", json: "" }, - customConditional: "", - logic: [], - attributes: {}, - overlay: { - style: "", - page: "", - left: "", - top: "", - width: "", - height: "" - }, - type: "number", - input: true, - unique: false, - refreshOn: "", - showCharCount: false, - showWordCount: false, - allowMultipleMasks: false, - id: "ex8zh8u", - defaultValue: null - }, - { - label: "Password", - labelPosition: "top", - placeholder: "", - description: "", - tooltip: "", - prefix: "", - suffix: "", - widget: { type: "input" }, - customClass: "", - tabindex: "", - autocomplete: "", - hidden: false, - hideLabel: false, - showWordCount: false, - showCharCount: false, - mask: false, - autofocus: false, - spellcheck: true, - disabled: false, - tableView: false, - modalEdit: false, - case: "", - redrawOn: "", - clearOnHide: true, - calculateServer: false, - allowCalculateOverride: false, - validateOn: "change", - validate: { - required: false, - pattern: "", - customMessage: "", - custom: "", - customPrivate: false, - json: "", - minLength: "", - maxLength: "", - strictDateValidation: false, + errorLabel: "", + key: "textField", + tags: [], + properties: {}, + conditional: { show: null, when: null, eq: "", json: "" }, + customConditional: "", + logic: [], + attributes: {}, + overlay: { + style: "", + page: "", + left: "", + top: "", + width: "", + height: "" + }, + type: "textfield", + input: true, + refreshOn: "", + inputType: "text", + id: "eqb1o4r", + defaultValue: "" + }, + { + label: "Text Area", + labelPosition: "top", + placeholder: "Placeholder", + description: "description", + tooltip: "tooltip", + prefix: "", + suffix: "", + widget: { type: "input" }, + editor: "", + autoExpand: false, + customClass: "", + tabindex: "", + autocomplete: "", + hidden: false, + hideLabel: false, + showWordCount: false, + showCharCount: false, + autofocus: false, + spellcheck: true, + disabled: false, + tableView: true, + modalEdit: false, multiple: false, - unique: false - }, - errorLabel: "", - key: "password", - tags: [], - properties: {}, - conditional: { show: null, when: null, eq: "", json: "" }, - customConditional: "", - logic: [], - attributes: {}, - overlay: { - style: "", - page: "", - left: "", - top: "", - width: "", - height: "" - }, - type: "password", - input: true, - multiple: false, - defaultValue: null, - protected: true, - unique: false, - persistent: true, - refreshOn: "", - dbIndex: false, - customDefaultValue: "", - calculateValue: "", - encrypted: false, - allowMultipleMasks: false, - inputType: "text", - inputFormat: "plain", - inputMask: "", - id: "etqa5pm" - }, - { - label: "Checkbox", - description: "description", - tooltip: "tooltip", - shortcut: "", - inputType: "checkbox", - customClass: "", - tabindex: "", - hidden: false, - hideLabel: false, - autofocus: false, - disabled: false, - tableView: false, - modalEdit: false, - defaultValue: false, - persistent: true, - protected: false, - dbIndex: false, - encrypted: false, - redrawOn: "", - clearOnHide: true, - customDefaultValue: "", - calculateValue: "", - calculateServer: false, - allowCalculateOverride: false, - validate: { - required: false, - customMessage: "", - custom: "", - customPrivate: false, - json: "", - strictDateValidation: false, + persistent: true, + inputFormat: "html", + protected: false, + dbIndex: false, + case: "", + encrypted: false, + redrawOn: "", + clearOnHide: true, + customDefaultValue: "", + calculateValue: "", + calculateServer: false, + allowCalculateOverride: false, + validateOn: "change", + validate: { + required: false, + pattern: "", + customMessage: "", + custom: "", + customPrivate: false, + json: "", + minLength: "", + maxLength: "", + minWords: "", + maxWords: "", + strictDateValidation: false, + multiple: false, + unique: false + }, + unique: false, + errorLabel: "", + key: "textArea", + tags: [], + properties: {}, + conditional: { show: null, when: null, eq: "", json: "" }, + customConditional: "", + logic: [], + fixedSize: true, + overlay: { + style: "", + page: "", + left: "", + top: "", + width: "", + height: "" + }, + attributes: {}, + type: "textarea", + rows: 3, + wysiwyg: false, + input: true, + refreshOn: "", + allowMultipleMasks: false, + mask: false, + inputType: "text", + inputMask: "", + id: "e4jsrqc", + defaultValue: "" + }, + { + label: "Number", + labelPosition: "top", + placeholder: "", + description: "", + tooltip: "", + prefix: "", + suffix: "", + widget: { type: "input" }, + customClass: "", + tabindex: "", + autocomplete: "", + hidden: false, + hideLabel: false, + mask: false, + autofocus: false, + spellcheck: true, + disabled: false, + tableView: false, + modalEdit: false, multiple: false, - unique: false - }, - errorLabel: "", - key: "checkbox", - tags: [], - properties: {}, - conditional: { show: null, when: null, eq: "", json: "" }, - customConditional: "", - logic: [], - attributes: {}, - overlay: { - style: "", - page: "", - left: "", - top: "", - width: "", - height: "" - }, - type: "checkbox", - name: "", - value: "", - input: true, - placeholder: "", - prefix: "", - suffix: "", - multiple: false, - unique: false, - refreshOn: "", - labelPosition: "right", - widget: null, - validateOn: "change", - showCharCount: false, - showWordCount: false, - allowMultipleMasks: false, - dataGridLabel: true, - id: "em8ln2m" - }, - { - label: "Select Boxes", - labelPosition: "top", - optionsLabelPosition: "right", - description: "", - tooltip: "", - customClass: "", - tabindex: "", - inline: false, - hidden: false, - hideLabel: false, - autofocus: false, - disabled: false, - tableView: false, - modalEdit: false, - values: [ - { label: "label", value: "label", shortcut: "" }, - { label: "lol", value: "lol", shortcut: "" } - ], - persistent: true, - protected: false, - dbIndex: false, - encrypted: false, - redrawOn: "", - clearOnHide: true, - customDefaultValue: "", - calculateValue: "", - calculateServer: false, - allowCalculateOverride: false, - validate: { - required: false, - customMessage: "", - custom: "", - customPrivate: false, - json: "", - strictDateValidation: false, + persistent: true, + delimiter: false, + requireDecimal: false, + inputFormat: "plain", + protected: false, + dbIndex: false, + encrypted: false, + redrawOn: "", + clearOnHide: true, + customDefaultValue: "", + calculateValue: "", + calculateServer: false, + allowCalculateOverride: false, + validateOn: "change", + validate: { + required: false, + customMessage: "", + custom: "", + customPrivate: false, + json: "", + min: "", + max: "", + strictDateValidation: false, + multiple: false, + unique: false, + step: "any", + integer: "" + }, + errorLabel: "", + key: "number", + tags: [], + properties: {}, + conditional: { show: null, when: null, eq: "", json: "" }, + customConditional: "", + logic: [], + attributes: {}, + overlay: { + style: "", + page: "", + left: "", + top: "", + width: "", + height: "" + }, + type: "number", + input: true, + unique: false, + refreshOn: "", + showCharCount: false, + showWordCount: false, + allowMultipleMasks: false, + id: "ex8zh8u", + defaultValue: null + }, + { + label: "Password", + labelPosition: "top", + placeholder: "", + description: "", + tooltip: "", + prefix: "", + suffix: "", + widget: { type: "input" }, + customClass: "", + tabindex: "", + autocomplete: "", + hidden: false, + hideLabel: false, + showWordCount: false, + showCharCount: false, + mask: false, + autofocus: false, + spellcheck: true, + disabled: false, + tableView: false, + modalEdit: false, + case: "", + redrawOn: "", + clearOnHide: true, + calculateServer: false, + allowCalculateOverride: false, + validateOn: "change", + validate: { + required: false, + pattern: "", + customMessage: "", + custom: "", + customPrivate: false, + json: "", + minLength: "", + maxLength: "", + strictDateValidation: false, + multiple: false, + unique: false + }, + errorLabel: "", + key: "password", + tags: [], + properties: {}, + conditional: { show: null, when: null, eq: "", json: "" }, + customConditional: "", + logic: [], + attributes: {}, + overlay: { + style: "", + page: "", + left: "", + top: "", + width: "", + height: "" + }, + type: "password", + input: true, multiple: false, - unique: false - }, - errorLabel: "", - minSelectedCountMessage: "", - maxSelectedCountMessage: "", - key: "selectBoxes", - tags: [], - properties: {}, - conditional: { show: null, when: null, eq: "", json: "" }, - customConditional: "", - logic: [], - attributes: {}, - overlay: { - style: "", - page: "", - left: "", - top: "", - width: "", - height: "" - }, - type: "selectboxes", - input: true, - placeholder: "", - prefix: "", - suffix: "", - multiple: false, - unique: false, - refreshOn: "", - widget: null, - validateOn: "change", - showCharCount: false, - showWordCount: false, - allowMultipleMasks: false, - inputType: "checkbox", - fieldSet: false, - id: "esa4upt", - defaultValue: { "": false } - }, - { - label: "Radio", - labelPosition: "top", - optionsLabelPosition: "right", - description: "", - tooltip: "", - customClass: "", - tabindex: "", - inline: false, - hidden: false, - hideLabel: false, - autofocus: false, - disabled: false, - tableView: false, - modalEdit: false, - values: [ - { label: "data", value: "data", shortcut: "" }, - { label: "label", value: "label", shortcut: "" } - ], - dataType: "", - persistent: true, - protected: false, - dbIndex: false, - encrypted: false, - redrawOn: "", - clearOnHide: true, - customDefaultValue: "", - calculateValue: "", - calculateServer: false, - allowCalculateOverride: false, - validate: { - required: false, - customMessage: "", - custom: "", - customPrivate: false, - json: "", - strictDateValidation: false, + defaultValue: null, + protected: true, + unique: false, + persistent: true, + refreshOn: "", + dbIndex: false, + customDefaultValue: "", + calculateValue: "", + encrypted: false, + allowMultipleMasks: false, + inputType: "text", + inputFormat: "plain", + inputMask: "", + id: "etqa5pm" + }, + { + label: "Checkbox", + description: "description", + tooltip: "tooltip", + shortcut: "", + inputType: "checkbox", + customClass: "", + tabindex: "", + hidden: false, + hideLabel: false, + autofocus: false, + disabled: false, + tableView: false, + modalEdit: false, + defaultValue: false, + persistent: true, + protected: false, + dbIndex: false, + encrypted: false, + redrawOn: "", + clearOnHide: true, + customDefaultValue: "", + calculateValue: "", + calculateServer: false, + allowCalculateOverride: false, + validate: { + required: false, + customMessage: "", + custom: "", + customPrivate: false, + json: "", + strictDateValidation: false, + multiple: false, + unique: false + }, + errorLabel: "", + key: "checkbox", + tags: [], + properties: {}, + conditional: { show: null, when: null, eq: "", json: "" }, + customConditional: "", + logic: [], + attributes: {}, + overlay: { + style: "", + page: "", + left: "", + top: "", + width: "", + height: "" + }, + type: "checkbox", + name: "", + value: "", + input: true, + placeholder: "", + prefix: "", + suffix: "", multiple: false, - unique: false - }, - errorLabel: "", - key: "radio", - tags: [], - properties: {}, - conditional: { show: null, when: null, eq: "", json: "" }, - customConditional: "", - logic: [], - attributes: {}, - overlay: { - style: "", - page: "", - left: "", - top: "", - width: "", - height: "" - }, - type: "radio", - input: true, - placeholder: "", - prefix: "", - suffix: "", - multiple: false, - unique: false, - refreshOn: "", - widget: null, - validateOn: "change", - showCharCount: false, - showWordCount: false, - allowMultipleMasks: false, - inputType: "radio", - fieldSet: false, - id: "edh7o6o", - defaultValue: "" - }, - { - label: "Select", - labelPosition: "top", - widget: "choicesjs", - placeholder: "placeholder", - description: "", - tooltip: "", - customClass: "", - tabindex: "", - hidden: false, - hideLabel: false, - uniqueOptions: false, - autofocus: false, - disabled: false, - tableView: true, - modalEdit: false, - multiple: false, - dataSrc: "values", - data: { + unique: false, + refreshOn: "", + labelPosition: "right", + widget: null, + validateOn: "change", + showCharCount: false, + showWordCount: false, + allowMultipleMasks: false, + dataGridLabel: true, + id: "em8ln2m" + }, + { + label: "Select Boxes", + labelPosition: "top", + optionsLabelPosition: "right", + description: "", + tooltip: "", + customClass: "", + tabindex: "", + inline: false, + hidden: false, + hideLabel: false, + autofocus: false, + disabled: false, + tableView: false, + modalEdit: false, values: [ - { label: "label", value: "label" }, - { label: "save", value: "save" } + { label: "label", value: "label", shortcut: "" }, + { label: "lol", value: "lol", shortcut: "" } ], - resource: "", - json: "", - url: "", - custom: "" - }, - valueProperty: "", - dataType: "", - idPath: "id", - template: "{{ item.label }}", - refreshOn: "", - refreshOnBlur: "", - clearOnRefresh: false, - searchEnabled: true, - selectThreshold: 0.3, - readOnlyValue: false, - customOptions: {}, - useExactSearch: false, - persistent: true, - protected: false, - dbIndex: false, - encrypted: false, - clearOnHide: true, - customDefaultValue: "", - calculateValue: "", - calculateServer: false, - allowCalculateOverride: false, - validateOn: "change", - validate: { - required: false, - customMessage: "", - custom: "", - customPrivate: false, - json: "", - strictDateValidation: false, + persistent: true, + protected: false, + dbIndex: false, + encrypted: false, + redrawOn: "", + clearOnHide: true, + customDefaultValue: "", + calculateValue: "", + calculateServer: false, + allowCalculateOverride: false, + validate: { + required: false, + customMessage: "", + custom: "", + customPrivate: false, + json: "", + strictDateValidation: false, + multiple: false, + unique: false + }, + errorLabel: "", + minSelectedCountMessage: "", + maxSelectedCountMessage: "", + key: "selectBoxes", + tags: [], + properties: {}, + conditional: { show: null, when: null, eq: "", json: "" }, + customConditional: "", + logic: [], + attributes: {}, + overlay: { + style: "", + page: "", + left: "", + top: "", + width: "", + height: "" + }, + type: "selectboxes", + input: true, + placeholder: "", + prefix: "", + suffix: "", multiple: false, - unique: false - }, - unique: false, - errorLabel: "", - key: "select", - tags: [], - properties: {}, - conditional: { show: null, when: null, eq: "", json: "" }, - customConditional: "", - logic: [], - attributes: {}, - overlay: { - style: "", - page: "", - left: "", - top: "", - width: "", - height: "" - }, - type: "select", - indexeddb: { filter: {} }, - selectFields: "", - searchField: "", - minSearch: 0, - filter: "", - limit: 100, - redrawOn: "", - input: true, - prefix: "", - suffix: "", - showCharCount: false, - showWordCount: false, - allowMultipleMasks: false, - lazyLoad: true, - authenticate: false, - searchThreshold: 0.3, - fuseOptions: { include: "score", threshold: 0.3 }, - id: "ebqtqd6", - defaultValue: "" - }, - { - label: "Select", - labelPosition: "top", - widget: "html5", - placeholder: "placeholder", - description: "", - tooltip: "", - customClass: "", - tabindex: "", - hidden: false, - hideLabel: false, - uniqueOptions: false, - autofocus: false, - disabled: false, - tableView: true, - modalEdit: false, - multiple: false, - dataSrc: "values", - data: { - values: [{ label: "", value: "" }], - resource: "", - json: "", - url: "", - custom: "" - }, - valueProperty: "", - dataType: "", - idPath: "id", - template: "{{ item.label }}", - refreshOn: "", - refreshOnBlur: "", - clearOnRefresh: false, - searchEnabled: true, - selectThreshold: 0.3, - readOnlyValue: false, - customOptions: {}, - useExactSearch: false, - persistent: true, - protected: false, - dbIndex: false, - encrypted: false, - clearOnHide: true, - customDefaultValue: "", - calculateValue: "", - calculateServer: false, - allowCalculateOverride: false, - validateOn: "change", - validate: { - required: false, - customMessage: "", - custom: "", - customPrivate: false, - json: "", - strictDateValidation: false, + unique: false, + refreshOn: "", + widget: null, + validateOn: "change", + showCharCount: false, + showWordCount: false, + allowMultipleMasks: false, + inputType: "checkbox", + fieldSet: false, + id: "esa4upt", + defaultValue: { "": false } + }, + { + label: "Radio", + labelPosition: "top", + optionsLabelPosition: "right", + description: "", + tooltip: "", + customClass: "", + tabindex: "", + inline: false, + hidden: false, + hideLabel: false, + autofocus: false, + disabled: false, + tableView: false, + modalEdit: false, + values: [ + { label: "data", value: "data", shortcut: "" }, + { label: "label", value: "label", shortcut: "" } + ], + dataType: "", + persistent: true, + protected: false, + dbIndex: false, + encrypted: false, + redrawOn: "", + clearOnHide: true, + customDefaultValue: "", + calculateValue: "", + calculateServer: false, + allowCalculateOverride: false, + validate: { + required: false, + customMessage: "", + custom: "", + customPrivate: false, + json: "", + strictDateValidation: false, + multiple: false, + unique: false + }, + errorLabel: "", + key: "radio", + tags: [], + properties: {}, + conditional: { show: null, when: null, eq: "", json: "" }, + customConditional: "", + logic: [], + attributes: {}, + overlay: { + style: "", + page: "", + left: "", + top: "", + width: "", + height: "" + }, + type: "radio", + input: true, + placeholder: "", + prefix: "", + suffix: "", multiple: false, - unique: false - }, - unique: false, - errorLabel: "", - key: "select1", - tags: [], - properties: {}, - conditional: { show: null, when: null, eq: "", json: "" }, - customConditional: "", - logic: [], - attributes: {}, - overlay: { - style: "", - page: "", - left: "", - top: "", - width: "", - height: "" - }, - type: "select", - indexeddb: { filter: {} }, - selectFields: "", - searchField: "", - minSearch: 0, - filter: "", - limit: 100, - redrawOn: "", - input: true, - prefix: "", - suffix: "", - showCharCount: false, - showWordCount: false, - allowMultipleMasks: false, - lazyLoad: true, - authenticate: false, - searchThreshold: 0.3, - fuseOptions: { include: "score", threshold: 0.3 }, - id: "em8m4qk", - defaultValue: "" - }, - { - label: "Email", - labelPosition: "top", - placeholder: "", - description: "", - tooltip: "", - prefix: "", - suffix: "", - widget: { type: "input" }, - customClass: "", - tabindex: "", - autocomplete: "", - hidden: false, - hideLabel: false, - mask: false, - autofocus: false, - spellcheck: true, - disabled: false, - tableView: true, - modalEdit: false, - multiple: false, - persistent: true, - inputFormat: "plain", - protected: false, - dbIndex: false, - case: "", - encrypted: false, - redrawOn: "", - clearOnHide: true, - customDefaultValue: "", - calculateValue: "", - calculateServer: false, - allowCalculateOverride: false, - validateOn: "change", - validate: { - required: false, - pattern: "", - customMessage: "", - custom: "", - customPrivate: false, - json: "", - minLength: "", - maxLength: "", - strictDateValidation: false, + unique: false, + refreshOn: "", + widget: null, + validateOn: "change", + showCharCount: false, + showWordCount: false, + allowMultipleMasks: false, + inputType: "radio", + fieldSet: false, + id: "edh7o6o", + defaultValue: "" + }, + { + label: "Select", + labelPosition: "top", + widget: "choicesjs", + placeholder: "placeholder", + description: "", + tooltip: "", + customClass: "", + tabindex: "", + hidden: false, + hideLabel: false, + uniqueOptions: false, + autofocus: false, + disabled: false, + tableView: true, + modalEdit: false, multiple: false, - unique: false - }, - unique: false, - kickbox: { enabled: false }, - errorLabel: "", - key: "email", - tags: [], - properties: {}, - conditional: { show: null, when: null, eq: "", json: "" }, - customConditional: "", - logic: [], - attributes: {}, - overlay: { - style: "", - page: "", - left: "", - top: "", - width: "", - height: "" - }, - type: "email", - input: true, - refreshOn: "", - showCharCount: false, - showWordCount: false, - allowMultipleMasks: false, - inputType: "email", - inputMask: "", - id: "epj8sj28", - defaultValue: null - }, - { - label: "Url", - labelPosition: "top", - placeholder: "", - description: "", - tooltip: "", - prefix: "", - suffix: "", - widget: { type: "input" }, - customClass: "", - tabindex: "", - autocomplete: "", - hidden: false, - hideLabel: false, - mask: false, - autofocus: false, - spellcheck: true, - disabled: false, - tableView: true, - modalEdit: false, - multiple: false, - persistent: true, - inputFormat: "plain", - protected: false, - dbIndex: false, - encrypted: false, - redrawOn: "", - clearOnHide: true, - customDefaultValue: "", - calculateValue: "", - calculateServer: false, - allowCalculateOverride: false, - validateOn: "change", - validate: { - required: false, - pattern: "", - customMessage: "", - custom: "", - customPrivate: false, - json: "", - minLength: "", - maxLength: "", - strictDateValidation: false, + dataSrc: "values", + data: { + values: [ + { label: "label", value: "label" }, + { label: "save", value: "save" } + ], + resource: "", + json: "", + url: "", + custom: "" + }, + valueProperty: "", + dataType: "", + idPath: "id", + template: "{{ item.label }}", + refreshOn: "", + refreshOnBlur: "", + clearOnRefresh: false, + searchEnabled: true, + selectThreshold: 0.3, + readOnlyValue: false, + customOptions: {}, + useExactSearch: false, + persistent: true, + protected: false, + dbIndex: false, + encrypted: false, + clearOnHide: true, + customDefaultValue: "", + calculateValue: "", + calculateServer: false, + allowCalculateOverride: false, + validateOn: "change", + validate: { + required: false, + customMessage: "", + custom: "", + customPrivate: false, + json: "", + strictDateValidation: false, + multiple: false, + unique: false + }, + unique: false, + errorLabel: "", + key: "select", + tags: [], + properties: {}, + conditional: { show: null, when: null, eq: "", json: "" }, + customConditional: "", + logic: [], + attributes: {}, + overlay: { + style: "", + page: "", + left: "", + top: "", + width: "", + height: "" + }, + type: "select", + indexeddb: { filter: {} }, + selectFields: "", + searchField: "", + minSearch: 0, + filter: "", + limit: 100, + redrawOn: "", + input: true, + prefix: "", + suffix: "", + showCharCount: false, + showWordCount: false, + allowMultipleMasks: false, + lazyLoad: true, + authenticate: false, + searchThreshold: 0.3, + fuseOptions: { include: "score", threshold: 0.3 }, + id: "ebqtqd6", + defaultValue: "" + }, + { + label: "Select", + labelPosition: "top", + widget: "html5", + placeholder: "placeholder", + description: "", + tooltip: "", + customClass: "", + tabindex: "", + hidden: false, + hideLabel: false, + uniqueOptions: false, + autofocus: false, + disabled: false, + tableView: true, + modalEdit: false, multiple: false, - unique: false - }, - unique: false, - errorLabel: "", - key: "url", - tags: [], - properties: {}, - conditional: { show: null, when: null, eq: "", json: "" }, - customConditional: "", - logic: [], - attributes: {}, - overlay: { - style: "", - page: "", - left: "", - top: "", - width: "", - height: "" - }, - type: "url", - input: true, - refreshOn: "", - showCharCount: false, - showWordCount: false, - allowMultipleMasks: false, - inputType: "url", - inputMask: "", - id: "exw9p4", - defaultValue: null - }, - { - label: "Phone Number", - labelPosition: "top", - placeholder: "", - description: "", - tooltip: "", - prefix: "", - suffix: "", - widget: { type: "input" }, - inputMask: "(999) 999-9999", - allowMultipleMasks: false, - customClass: "", - tabindex: "", - autocomplete: "", - hidden: false, - hideLabel: false, - mask: false, - autofocus: false, - spellcheck: true, - disabled: false, - tableView: true, - modalEdit: false, - multiple: false, - persistent: true, - inputFormat: "plain", - protected: false, - dbIndex: false, - case: "", - encrypted: false, - redrawOn: "", - clearOnHide: true, - customDefaultValue: "", - calculateValue: "", - calculateServer: false, - allowCalculateOverride: false, - validateOn: "change", - validate: { - required: false, - customMessage: "", - custom: "", - customPrivate: false, - json: "", - strictDateValidation: false, + dataSrc: "values", + data: { + values: [{ label: "", value: "" }], + resource: "", + json: "", + url: "", + custom: "" + }, + valueProperty: "", + dataType: "", + idPath: "id", + template: "{{ item.label }}", + refreshOn: "", + refreshOnBlur: "", + clearOnRefresh: false, + searchEnabled: true, + selectThreshold: 0.3, + readOnlyValue: false, + customOptions: {}, + useExactSearch: false, + persistent: true, + protected: false, + dbIndex: false, + encrypted: false, + clearOnHide: true, + customDefaultValue: "", + calculateValue: "", + calculateServer: false, + allowCalculateOverride: false, + validateOn: "change", + validate: { + required: false, + customMessage: "", + custom: "", + customPrivate: false, + json: "", + strictDateValidation: false, + multiple: false, + unique: false + }, + unique: false, + errorLabel: "", + key: "select1", + tags: [], + properties: {}, + conditional: { show: null, when: null, eq: "", json: "" }, + customConditional: "", + logic: [], + attributes: {}, + overlay: { + style: "", + page: "", + left: "", + top: "", + width: "", + height: "" + }, + type: "select", + indexeddb: { filter: {} }, + selectFields: "", + searchField: "", + minSearch: 0, + filter: "", + limit: 100, + redrawOn: "", + input: true, + prefix: "", + suffix: "", + showCharCount: false, + showWordCount: false, + allowMultipleMasks: false, + lazyLoad: true, + authenticate: false, + searchThreshold: 0.3, + fuseOptions: { include: "score", threshold: 0.3 }, + id: "em8m4qk", + defaultValue: "" + }, + { + label: "Email", + labelPosition: "top", + placeholder: "", + description: "", + tooltip: "", + prefix: "", + suffix: "", + widget: { type: "input" }, + customClass: "", + tabindex: "", + autocomplete: "", + hidden: false, + hideLabel: false, + mask: false, + autofocus: false, + spellcheck: true, + disabled: false, + tableView: true, + modalEdit: false, multiple: false, + persistent: true, + inputFormat: "plain", + protected: false, + dbIndex: false, + case: "", + encrypted: false, + redrawOn: "", + clearOnHide: true, + customDefaultValue: "", + calculateValue: "", + calculateServer: false, + allowCalculateOverride: false, + validateOn: "change", + validate: { + required: false, + pattern: "", + customMessage: "", + custom: "", + customPrivate: false, + json: "", + minLength: "", + maxLength: "", + strictDateValidation: false, + multiple: false, + unique: false + }, unique: false, - minLength: "", - maxLength: "", - pattern: "" - }, - unique: false, - errorLabel: "", - key: "phoneNumber", - tags: [], - properties: {}, - conditional: { show: null, when: null, eq: "", json: "" }, - customConditional: "", - logic: [], - attributes: {}, - overlay: { - style: "", - page: "", - left: "", - top: "", - width: "", - height: "" - }, - type: "phoneNumber", - input: true, - refreshOn: "", - showCharCount: false, - showWordCount: false, - inputType: "tel", - id: "e2c7lpl", - defaultValue: null - }, - { - label: "Tags", - labelPosition: "top", - placeholder: "", - description: "", - tooltip: "", - customClass: "", - tabindex: "", - hidden: false, - hideLabel: false, - autofocus: false, - disabled: false, - tableView: false, - modalEdit: false, - delimeter: ",", - maxTags: 0, - storeas: "string", - persistent: true, - protected: false, - dbIndex: false, - encrypted: false, - redrawOn: "", - clearOnHide: true, - customDefaultValue: "", - calculateValue: "", - calculateServer: false, - allowCalculateOverride: false, - validate: { - required: false, - customMessage: "", - custom: "", - customPrivate: false, - json: "", - strictDateValidation: false, + kickbox: { enabled: false }, + errorLabel: "", + key: "email", + tags: [], + properties: {}, + conditional: { show: null, when: null, eq: "", json: "" }, + customConditional: "", + logic: [], + attributes: {}, + overlay: { + style: "", + page: "", + left: "", + top: "", + width: "", + height: "" + }, + type: "email", + input: true, + refreshOn: "", + showCharCount: false, + showWordCount: false, + allowMultipleMasks: false, + inputType: "email", + inputMask: "", + id: "epj8sj28", + defaultValue: null + }, + { + label: "Url", + labelPosition: "top", + placeholder: "", + description: "", + tooltip: "", + prefix: "", + suffix: "", + widget: { type: "input" }, + customClass: "", + tabindex: "", + autocomplete: "", + hidden: false, + hideLabel: false, + mask: false, + autofocus: false, + spellcheck: true, + disabled: false, + tableView: true, + modalEdit: false, multiple: false, - unique: false - }, - unique: false, - validateOn: "change", - errorLabel: "", - key: "tags", - tags: [], - properties: {}, - conditional: { show: null, when: null, eq: "", json: "" }, - customConditional: "", - logic: [], - attributes: {}, - overlay: { - style: "", - page: "", - left: "", - top: "", - width: "", - height: "" - }, - type: "tags", - input: true, - prefix: "", - suffix: "", - multiple: false, - refreshOn: "", - widget: { type: "input" }, - showCharCount: false, - showWordCount: false, - allowMultipleMasks: false, - id: "ejc82t", - defaultValue: null - }, - { - label: "Address", - labelPosition: "top", - enableManualMode: false, - disableClearIcon: false, - placeholder: "", - description: "", - tooltip: "", - customClass: "", - tabindex: "", - hidden: false, - hideLabel: false, - autofocus: false, - disabled: false, - tableView: false, - modalEdit: false, - multiple: false, - persistent: true, - protected: false, - dbIndex: false, - encrypted: false, - redrawOn: "", - clearOnHide: true, - customDefaultValue: "", - calculateValue: "", - calculateServer: false, - allowCalculateOverride: false, - provider: "google", - manualModeViewString: "", - validate: { - required: false, - customMessage: "", - custom: "", - customPrivate: false, - json: "", - strictDateValidation: false, + persistent: true, + inputFormat: "plain", + protected: false, + dbIndex: false, + encrypted: false, + redrawOn: "", + clearOnHide: true, + customDefaultValue: "", + calculateValue: "", + calculateServer: false, + allowCalculateOverride: false, + validateOn: "change", + validate: { + required: false, + pattern: "", + customMessage: "", + custom: "", + customPrivate: false, + json: "", + minLength: "", + maxLength: "", + strictDateValidation: false, + multiple: false, + unique: false + }, + unique: false, + errorLabel: "", + key: "url", + tags: [], + properties: {}, + conditional: { show: null, when: null, eq: "", json: "" }, + customConditional: "", + logic: [], + attributes: {}, + overlay: { + style: "", + page: "", + left: "", + top: "", + width: "", + height: "" + }, + type: "url", + input: true, + refreshOn: "", + showCharCount: false, + showWordCount: false, + allowMultipleMasks: false, + inputType: "url", + inputMask: "", + id: "exw9p4", + defaultValue: null + }, + { + label: "Phone Number", + labelPosition: "top", + placeholder: "", + description: "", + tooltip: "", + prefix: "", + suffix: "", + widget: { type: "input" }, + inputMask: "(999) 999-9999", + allowMultipleMasks: false, + customClass: "", + tabindex: "", + autocomplete: "", + hidden: false, + hideLabel: false, + mask: false, + autofocus: false, + spellcheck: true, + disabled: false, + tableView: true, + modalEdit: false, multiple: false, - unique: false - }, - unique: false, - validateOn: "change", - errorLabel: "", - key: "address", - tags: [], - properties: {}, - conditional: { show: null, when: null, eq: "", json: "" }, - customConditional: "", - logic: [], - attributes: {}, - overlay: { - style: "", - page: "", - left: "", - top: "", - width: "", - height: "" - }, - type: "address", - switchToManualModeLabel: "Can't find address? Switch to manual mode.", - input: true, - prefix: "", - suffix: "", - refreshOn: "", - widget: null, - showCharCount: false, - showWordCount: false, - allowMultipleMasks: false, - tree: true, - components: [ - { - label: "Address 1", - tableView: false, - key: "address1", - type: "textfield", - input: true, - customConditional: "show = _.get(instance, 'parent.manualMode', false);", - placeholder: "", - prefix: "", - customClass: "", - suffix: "", + persistent: true, + inputFormat: "plain", + protected: false, + dbIndex: false, + case: "", + encrypted: false, + redrawOn: "", + clearOnHide: true, + customDefaultValue: "", + calculateValue: "", + calculateServer: false, + allowCalculateOverride: false, + validateOn: "change", + validate: { + required: false, + customMessage: "", + custom: "", + customPrivate: false, + json: "", + strictDateValidation: false, multiple: false, - defaultValue: null, - protected: false, unique: false, - persistent: true, - hidden: false, - clearOnHide: true, - refreshOn: "", - redrawOn: "", - modalEdit: false, - labelPosition: "top", - description: "", - errorLabel: "", - tooltip: "", - hideLabel: false, - tabindex: "", - disabled: false, - autofocus: false, - dbIndex: false, - customDefaultValue: "", - calculateValue: "", - calculateServer: false, - widget: { type: "input" }, - attributes: {}, - validateOn: "change", - validate: { - required: false, - custom: "", - customPrivate: false, - strictDateValidation: false, + minLength: "", + maxLength: "", + pattern: "" + }, + unique: false, + errorLabel: "", + key: "phoneNumber", + tags: [], + properties: {}, + conditional: { show: null, when: null, eq: "", json: "" }, + customConditional: "", + logic: [], + attributes: {}, + overlay: { + style: "", + page: "", + left: "", + top: "", + width: "", + height: "" + }, + type: "phoneNumber", + input: true, + refreshOn: "", + showCharCount: false, + showWordCount: false, + inputType: "tel", + id: "e2c7lpl", + defaultValue: null + }, + { + label: "Tags", + labelPosition: "top", + placeholder: "", + description: "", + tooltip: "", + customClass: "", + tabindex: "", + hidden: false, + hideLabel: false, + autofocus: false, + disabled: false, + tableView: false, + modalEdit: false, + delimeter: ",", + maxTags: 0, + storeas: "string", + persistent: true, + protected: false, + dbIndex: false, + encrypted: false, + redrawOn: "", + clearOnHide: true, + customDefaultValue: "", + calculateValue: "", + calculateServer: false, + allowCalculateOverride: false, + validate: { + required: false, + customMessage: "", + custom: "", + customPrivate: false, + json: "", + strictDateValidation: false, + multiple: false, + unique: false + }, + unique: false, + validateOn: "change", + errorLabel: "", + key: "tags", + tags: [], + properties: {}, + conditional: { show: null, when: null, eq: "", json: "" }, + customConditional: "", + logic: [], + attributes: {}, + overlay: { + style: "", + page: "", + left: "", + top: "", + width: "", + height: "" + }, + type: "tags", + input: true, + prefix: "", + suffix: "", + multiple: false, + refreshOn: "", + widget: { type: "input" }, + showCharCount: false, + showWordCount: false, + allowMultipleMasks: false, + id: "ejc82t", + defaultValue: null + }, + { + label: "Address", + labelPosition: "top", + enableManualMode: false, + disableClearIcon: false, + placeholder: "", + description: "", + tooltip: "", + customClass: "", + tabindex: "", + hidden: false, + hideLabel: false, + autofocus: false, + disabled: false, + tableView: false, + modalEdit: false, + multiple: false, + persistent: true, + protected: false, + dbIndex: false, + encrypted: false, + redrawOn: "", + clearOnHide: true, + customDefaultValue: "", + calculateValue: "", + calculateServer: false, + allowCalculateOverride: false, + provider: "google", + manualModeViewString: "", + validate: { + required: false, + customMessage: "", + custom: "", + customPrivate: false, + json: "", + strictDateValidation: false, + multiple: false, + unique: false + }, + unique: false, + validateOn: "change", + errorLabel: "", + key: "address", + tags: [], + properties: {}, + conditional: { show: null, when: null, eq: "", json: "" }, + customConditional: "", + logic: [], + attributes: {}, + overlay: { + style: "", + page: "", + left: "", + top: "", + width: "", + height: "" + }, + type: "address", + switchToManualModeLabel: "Can't find address? Switch to manual mode.", + input: true, + prefix: "", + suffix: "", + refreshOn: "", + widget: null, + showCharCount: false, + showWordCount: false, + allowMultipleMasks: false, + tree: true, + components: [ + { + label: "Address 1", + tableView: false, + key: "address1", + type: "textfield", + input: true, + customConditional: "show = _.get(instance, 'parent.manualMode', false);", + placeholder: "", + prefix: "", + customClass: "", + suffix: "", multiple: false, + defaultValue: null, + protected: false, unique: false, - minLength: "", - maxLength: "", - pattern: "" + persistent: true, + hidden: false, + clearOnHide: true, + refreshOn: "", + redrawOn: "", + modalEdit: false, + labelPosition: "top", + description: "", + errorLabel: "", + tooltip: "", + hideLabel: false, + tabindex: "", + disabled: false, + autofocus: false, + dbIndex: false, + customDefaultValue: "", + calculateValue: "", + calculateServer: false, + widget: { type: "input" }, + attributes: {}, + validateOn: "change", + validate: { + required: false, + custom: "", + customPrivate: false, + strictDateValidation: false, + multiple: false, + unique: false, + minLength: "", + maxLength: "", + pattern: "" + }, + conditional: { show: null, when: null, eq: "" }, + overlay: { style: "", left: "", top: "", width: "", height: "" }, + allowCalculateOverride: false, + encrypted: false, + showCharCount: false, + showWordCount: false, + properties: {}, + allowMultipleMasks: false, + mask: false, + inputType: "text", + inputFormat: "plain", + inputMask: "", + spellcheck: true, + id: "eecfg6h" }, - conditional: { show: null, when: null, eq: "" }, - overlay: { style: "", left: "", top: "", width: "", height: "" }, - allowCalculateOverride: false, - encrypted: false, - showCharCount: false, - showWordCount: false, - properties: {}, - allowMultipleMasks: false, - mask: false, - inputType: "text", - inputFormat: "plain", - inputMask: "", - spellcheck: true, - id: "eecfg6h" - }, - { - label: "Address 2", - tableView: false, - key: "address2", - type: "textfield", - input: true, - customConditional: "show = _.get(instance, 'parent.manualMode', false);", - placeholder: "", - prefix: "", - customClass: "", - suffix: "", - multiple: false, - defaultValue: null, - protected: false, - unique: false, - persistent: true, - hidden: false, - clearOnHide: true, - refreshOn: "", - redrawOn: "", - modalEdit: false, - labelPosition: "top", - description: "", - errorLabel: "", - tooltip: "", - hideLabel: false, - tabindex: "", - disabled: false, - autofocus: false, - dbIndex: false, - customDefaultValue: "", - calculateValue: "", - calculateServer: false, - widget: { type: "input" }, - attributes: {}, - validateOn: "change", - validate: { - required: false, - custom: "", - customPrivate: false, - strictDateValidation: false, + { + label: "Address 2", + tableView: false, + key: "address2", + type: "textfield", + input: true, + customConditional: "show = _.get(instance, 'parent.manualMode', false);", + placeholder: "", + prefix: "", + customClass: "", + suffix: "", multiple: false, + defaultValue: null, + protected: false, unique: false, - minLength: "", - maxLength: "", - pattern: "" + persistent: true, + hidden: false, + clearOnHide: true, + refreshOn: "", + redrawOn: "", + modalEdit: false, + labelPosition: "top", + description: "", + errorLabel: "", + tooltip: "", + hideLabel: false, + tabindex: "", + disabled: false, + autofocus: false, + dbIndex: false, + customDefaultValue: "", + calculateValue: "", + calculateServer: false, + widget: { type: "input" }, + attributes: {}, + validateOn: "change", + validate: { + required: false, + custom: "", + customPrivate: false, + strictDateValidation: false, + multiple: false, + unique: false, + minLength: "", + maxLength: "", + pattern: "" + }, + conditional: { show: null, when: null, eq: "" }, + overlay: { style: "", left: "", top: "", width: "", height: "" }, + allowCalculateOverride: false, + encrypted: false, + showCharCount: false, + showWordCount: false, + properties: {}, + allowMultipleMasks: false, + mask: false, + inputType: "text", + inputFormat: "plain", + inputMask: "", + spellcheck: true, + id: "eajhpuu" }, - conditional: { show: null, when: null, eq: "" }, - overlay: { style: "", left: "", top: "", width: "", height: "" }, - allowCalculateOverride: false, - encrypted: false, - showCharCount: false, - showWordCount: false, - properties: {}, - allowMultipleMasks: false, - mask: false, - inputType: "text", - inputFormat: "plain", - inputMask: "", - spellcheck: true, - id: "eajhpuu" - }, - { - label: "City", - tableView: false, - key: "city", - type: "textfield", - input: true, - customConditional: "show = _.get(instance, 'parent.manualMode', false);", - placeholder: "", - prefix: "", - customClass: "", - suffix: "", - multiple: false, - defaultValue: null, - protected: false, - unique: false, - persistent: true, - hidden: false, - clearOnHide: true, - refreshOn: "", - redrawOn: "", - modalEdit: false, - labelPosition: "top", - description: "", - errorLabel: "", - tooltip: "", - hideLabel: false, - tabindex: "", - disabled: false, - autofocus: false, - dbIndex: false, - customDefaultValue: "", - calculateValue: "", - calculateServer: false, - widget: { type: "input" }, - attributes: {}, - validateOn: "change", - validate: { - required: false, - custom: "", - customPrivate: false, - strictDateValidation: false, + { + label: "City", + tableView: false, + key: "city", + type: "textfield", + input: true, + customConditional: "show = _.get(instance, 'parent.manualMode', false);", + placeholder: "", + prefix: "", + customClass: "", + suffix: "", multiple: false, + defaultValue: null, + protected: false, unique: false, - minLength: "", - maxLength: "", - pattern: "" + persistent: true, + hidden: false, + clearOnHide: true, + refreshOn: "", + redrawOn: "", + modalEdit: false, + labelPosition: "top", + description: "", + errorLabel: "", + tooltip: "", + hideLabel: false, + tabindex: "", + disabled: false, + autofocus: false, + dbIndex: false, + customDefaultValue: "", + calculateValue: "", + calculateServer: false, + widget: { type: "input" }, + attributes: {}, + validateOn: "change", + validate: { + required: false, + custom: "", + customPrivate: false, + strictDateValidation: false, + multiple: false, + unique: false, + minLength: "", + maxLength: "", + pattern: "" + }, + conditional: { show: null, when: null, eq: "" }, + overlay: { style: "", left: "", top: "", width: "", height: "" }, + allowCalculateOverride: false, + encrypted: false, + showCharCount: false, + showWordCount: false, + properties: {}, + allowMultipleMasks: false, + mask: false, + inputType: "text", + inputFormat: "plain", + inputMask: "", + spellcheck: true, + id: "efpnrca7" }, - conditional: { show: null, when: null, eq: "" }, - overlay: { style: "", left: "", top: "", width: "", height: "" }, - allowCalculateOverride: false, - encrypted: false, - showCharCount: false, - showWordCount: false, - properties: {}, - allowMultipleMasks: false, - mask: false, - inputType: "text", - inputFormat: "plain", - inputMask: "", - spellcheck: true, - id: "efpnrca7" - }, - { - label: "State", - tableView: false, - key: "state", - type: "textfield", - input: true, - customConditional: "show = _.get(instance, 'parent.manualMode', false);", - placeholder: "", - prefix: "", - customClass: "", - suffix: "", - multiple: false, - defaultValue: null, - protected: false, - unique: false, - persistent: true, - hidden: false, - clearOnHide: true, - refreshOn: "", - redrawOn: "", - modalEdit: false, - labelPosition: "top", - description: "", - errorLabel: "", - tooltip: "", - hideLabel: false, - tabindex: "", - disabled: false, - autofocus: false, - dbIndex: false, - customDefaultValue: "", - calculateValue: "", - calculateServer: false, - widget: { type: "input" }, - attributes: {}, - validateOn: "change", - validate: { - required: false, - custom: "", - customPrivate: false, - strictDateValidation: false, + { + label: "State", + tableView: false, + key: "state", + type: "textfield", + input: true, + customConditional: "show = _.get(instance, 'parent.manualMode', false);", + placeholder: "", + prefix: "", + customClass: "", + suffix: "", multiple: false, + defaultValue: null, + protected: false, unique: false, - minLength: "", - maxLength: "", - pattern: "" + persistent: true, + hidden: false, + clearOnHide: true, + refreshOn: "", + redrawOn: "", + modalEdit: false, + labelPosition: "top", + description: "", + errorLabel: "", + tooltip: "", + hideLabel: false, + tabindex: "", + disabled: false, + autofocus: false, + dbIndex: false, + customDefaultValue: "", + calculateValue: "", + calculateServer: false, + widget: { type: "input" }, + attributes: {}, + validateOn: "change", + validate: { + required: false, + custom: "", + customPrivate: false, + strictDateValidation: false, + multiple: false, + unique: false, + minLength: "", + maxLength: "", + pattern: "" + }, + conditional: { show: null, when: null, eq: "" }, + overlay: { style: "", left: "", top: "", width: "", height: "" }, + allowCalculateOverride: false, + encrypted: false, + showCharCount: false, + showWordCount: false, + properties: {}, + allowMultipleMasks: false, + mask: false, + inputType: "text", + inputFormat: "plain", + inputMask: "", + spellcheck: true, + id: "eu3kksv" }, - conditional: { show: null, when: null, eq: "" }, - overlay: { style: "", left: "", top: "", width: "", height: "" }, - allowCalculateOverride: false, - encrypted: false, - showCharCount: false, - showWordCount: false, - properties: {}, - allowMultipleMasks: false, - mask: false, - inputType: "text", - inputFormat: "plain", - inputMask: "", - spellcheck: true, - id: "eu3kksv" - }, - { - label: "Country", - tableView: false, - key: "country", - type: "textfield", - input: true, - customConditional: "show = _.get(instance, 'parent.manualMode', false);", - placeholder: "", - prefix: "", - customClass: "", - suffix: "", - multiple: false, - defaultValue: null, - protected: false, - unique: false, - persistent: true, - hidden: false, - clearOnHide: true, - refreshOn: "", - redrawOn: "", - modalEdit: false, - labelPosition: "top", - description: "", - errorLabel: "", - tooltip: "", - hideLabel: false, - tabindex: "", - disabled: false, - autofocus: false, - dbIndex: false, - customDefaultValue: "", - calculateValue: "", - calculateServer: false, - widget: { type: "input" }, - attributes: {}, - validateOn: "change", - validate: { - required: false, - custom: "", - customPrivate: false, - strictDateValidation: false, + { + label: "Country", + tableView: false, + key: "country", + type: "textfield", + input: true, + customConditional: "show = _.get(instance, 'parent.manualMode', false);", + placeholder: "", + prefix: "", + customClass: "", + suffix: "", multiple: false, + defaultValue: null, + protected: false, unique: false, - minLength: "", - maxLength: "", - pattern: "" + persistent: true, + hidden: false, + clearOnHide: true, + refreshOn: "", + redrawOn: "", + modalEdit: false, + labelPosition: "top", + description: "", + errorLabel: "", + tooltip: "", + hideLabel: false, + tabindex: "", + disabled: false, + autofocus: false, + dbIndex: false, + customDefaultValue: "", + calculateValue: "", + calculateServer: false, + widget: { type: "input" }, + attributes: {}, + validateOn: "change", + validate: { + required: false, + custom: "", + customPrivate: false, + strictDateValidation: false, + multiple: false, + unique: false, + minLength: "", + maxLength: "", + pattern: "" + }, + conditional: { show: null, when: null, eq: "" }, + overlay: { style: "", left: "", top: "", width: "", height: "" }, + allowCalculateOverride: false, + encrypted: false, + showCharCount: false, + showWordCount: false, + properties: {}, + allowMultipleMasks: false, + mask: false, + inputType: "text", + inputFormat: "plain", + inputMask: "", + spellcheck: true, + id: "el39cu9" }, - conditional: { show: null, when: null, eq: "" }, - overlay: { style: "", left: "", top: "", width: "", height: "" }, - allowCalculateOverride: false, - encrypted: false, - showCharCount: false, - showWordCount: false, - properties: {}, - allowMultipleMasks: false, - mask: false, - inputType: "text", - inputFormat: "plain", - inputMask: "", - spellcheck: true, - id: "el39cu9" - }, - { - label: "Zip Code", - tableView: false, - key: "zip", - type: "textfield", - input: true, - customConditional: "show = _.get(instance, 'parent.manualMode', false);", - placeholder: "", - prefix: "", - customClass: "", - suffix: "", - multiple: false, - defaultValue: null, - protected: false, - unique: false, - persistent: true, - hidden: false, - clearOnHide: true, - refreshOn: "", - redrawOn: "", - modalEdit: false, - labelPosition: "top", - description: "", - errorLabel: "", - tooltip: "", - hideLabel: false, - tabindex: "", - disabled: false, - autofocus: false, - dbIndex: false, - customDefaultValue: "", - calculateValue: "", - calculateServer: false, - widget: { type: "input" }, - attributes: {}, - validateOn: "change", - validate: { - required: false, - custom: "", - customPrivate: false, - strictDateValidation: false, + { + label: "Zip Code", + tableView: false, + key: "zip", + type: "textfield", + input: true, + customConditional: "show = _.get(instance, 'parent.manualMode', false);", + placeholder: "", + prefix: "", + customClass: "", + suffix: "", multiple: false, + defaultValue: null, + protected: false, unique: false, - minLength: "", - maxLength: "", - pattern: "" - }, - conditional: { show: null, when: null, eq: "" }, - overlay: { style: "", left: "", top: "", width: "", height: "" }, - allowCalculateOverride: false, - encrypted: false, - showCharCount: false, - showWordCount: false, - properties: {}, - allowMultipleMasks: false, - mask: false, - inputType: "text", - inputFormat: "plain", - inputMask: "", - spellcheck: true, - id: "epyac4" - } - ], - providerOptions: { params: { key: "fze", region: "" } }, - id: "er02e2gb", - defaultValue: {} - }, - { - label: "Date / Time", - labelPosition: "top", - displayInTimezone: "viewer", - useLocaleSettings: false, - allowInput: true, - format: "yyyy-MM-dd hh:mm a", - placeholder: "", - description: "", - tooltip: "", - customClass: "", - tabindex: "", - hidden: false, - hideLabel: false, - autofocus: false, - disabled: false, - tableView: false, - modalEdit: false, - enableDate: true, - enableMinDateInput: false, - datePicker: { - minDate: null, - maxDate: null, - disable: "", - disableFunction: "", - disableWeekends: false, - disableWeekdays: false, - showWeeks: true, - startingDay: 0, - initDate: "", - minMode: "day", - maxMode: "year", - yearRows: 4, - yearColumns: 5 - }, - enableMaxDateInput: false, - enableTime: true, - timePicker: { - showMeridian: true, - hourStep: 1, - minuteStep: 1, - readonlyInput: false, - mousewheel: true, - arrowkeys: true - }, - multiple: false, - defaultValue: "", - defaultDate: "", - customOptions: {}, - persistent: true, - protected: false, - dbIndex: false, - encrypted: false, - redrawOn: "", - clearOnHide: true, - customDefaultValue: "", - calculateValue: "", - calculateServer: false, - allowCalculateOverride: false, - validate: { - required: false, - customMessage: "", - custom: "", - customPrivate: false, - json: "", - strictDateValidation: false, - multiple: false, - unique: false - }, - unique: false, - validateOn: "change", - errorLabel: "", - key: "dateTime", - tags: [], - properties: {}, - conditional: { show: null, when: null, eq: "", json: "" }, - customConditional: "", - logic: [], - attributes: {}, - overlay: { - style: "", - page: "", - left: "", - top: "", - width: "", - height: "" + persistent: true, + hidden: false, + clearOnHide: true, + refreshOn: "", + redrawOn: "", + modalEdit: false, + labelPosition: "top", + description: "", + errorLabel: "", + tooltip: "", + hideLabel: false, + tabindex: "", + disabled: false, + autofocus: false, + dbIndex: false, + customDefaultValue: "", + calculateValue: "", + calculateServer: false, + widget: { type: "input" }, + attributes: {}, + validateOn: "change", + validate: { + required: false, + custom: "", + customPrivate: false, + strictDateValidation: false, + multiple: false, + unique: false, + minLength: "", + maxLength: "", + pattern: "" + }, + conditional: { show: null, when: null, eq: "" }, + overlay: { style: "", left: "", top: "", width: "", height: "" }, + allowCalculateOverride: false, + encrypted: false, + showCharCount: false, + showWordCount: false, + properties: {}, + allowMultipleMasks: false, + mask: false, + inputType: "text", + inputFormat: "plain", + inputMask: "", + spellcheck: true, + id: "epyac4" + } + ], + providerOptions: { params: { key: "fze", region: "" } }, + id: "er02e2gb", + defaultValue: {} }, - type: "datetime", - timezone: "", - input: true, - prefix: "", - suffix: "", - refreshOn: "", - widget: { - type: "calendar", + { + label: "Date / Time", + labelPosition: "top", displayInTimezone: "viewer", - locale: "en", useLocaleSettings: false, allowInput: true, - mode: "single", - enableTime: true, - noCalendar: false, format: "yyyy-MM-dd hh:mm a", - hourIncrement: 1, - minuteIncrement: 1, - minDate: null, - disabledDates: "", - disableWeekends: false, - disableWeekdays: false, - disableFunction: "", - maxDate: null - }, - showCharCount: false, - showWordCount: false, - allowMultipleMasks: false, - datepickerMode: "day", - id: "el9idgl" - }, - { - label: "Day", - hideInputLabels: false, - inputsLabelPosition: "top", - description: "", - useLocaleSettings: false, - tooltip: "", - customClass: "", - tabindex: "", - hidden: false, - hideLabel: false, - autofocus: false, - disabled: false, - tableView: false, - modalEdit: false, - fields: { - day: { - type: "number", - placeholder: "", - hide: false, - required: false - }, - month: { - type: "select", - placeholder: "", - hide: false, - required: false - }, - year: { - type: "number", - placeholder: "", - hide: false, - required: false - } - }, - dayFirst: false, - persistent: true, - protected: false, - dbIndex: false, - encrypted: false, - redrawOn: "", - clearOnHide: true, - customDefaultValue: "", - calculateValue: "", - calculateServer: false, - allowCalculateOverride: false, - validateOn: "change", - maxDate: "", - minDate: "", - unique: false, - errorLabel: "", - validate: { - customMessage: "", - custom: "", - customPrivate: false, - json: "", - required: false, - strictDateValidation: false, + placeholder: "", + description: "", + tooltip: "", + customClass: "", + tabindex: "", + hidden: false, + hideLabel: false, + autofocus: false, + disabled: false, + tableView: false, + modalEdit: false, + enableDate: true, + enableMinDateInput: false, + datePicker: { + minDate: null, + maxDate: null, + disable: "", + disableFunction: "", + disableWeekends: false, + disableWeekdays: false, + showWeeks: true, + startingDay: 0, + initDate: "", + minMode: "day", + maxMode: "year", + yearRows: 4, + yearColumns: 5 + }, + enableMaxDateInput: false, + enableTime: true, + timePicker: { + showMeridian: true, + hourStep: 1, + minuteStep: 1, + readonlyInput: false, + mousewheel: true, + arrowkeys: true + }, multiple: false, - unique: false - }, - key: "day", - tags: [], - properties: {}, - conditional: { show: null, when: null, eq: "", json: "" }, - customConditional: "", - logic: [], - attributes: {}, - overlay: { - style: "", - page: "", - left: "", - top: "", - width: "", - height: "" - }, - type: "day", - input: true, - placeholder: "", - prefix: "", - suffix: "", - multiple: false, - refreshOn: "", - labelPosition: "top", - widget: null, - showCharCount: false, - showWordCount: false, - allowMultipleMasks: false, - id: "ecgefls", - defaultValue: "00/00/0000" - }, - { - label: "Currency", - labelPosition: "top", - placeholder: "", - description: "", - tooltip: "", - prefix: "", - suffix: "", - widget: { type: "input" }, - customClass: "", - tabindex: "", - autocomplete: "", - hidden: false, - hideLabel: false, - mask: false, - autofocus: false, - spellcheck: true, - disabled: false, - tableView: false, - modalEdit: false, - multiple: false, - persistent: true, - currency: "USD", - inputFormat: "plain", - protected: false, - dbIndex: false, - case: "", - encrypted: false, - redrawOn: "", - clearOnHide: true, - customDefaultValue: "", - calculateValue: "", - calculateServer: false, - allowCalculateOverride: false, - validateOn: "change", - validate: { - required: false, - customMessage: "", - custom: "", - customPrivate: false, - json: "", - strictDateValidation: false, + defaultValue: "", + defaultDate: "", + customOptions: {}, + persistent: true, + protected: false, + dbIndex: false, + encrypted: false, + redrawOn: "", + clearOnHide: true, + customDefaultValue: "", + calculateValue: "", + calculateServer: false, + allowCalculateOverride: false, + validate: { + required: false, + customMessage: "", + custom: "", + customPrivate: false, + json: "", + strictDateValidation: false, + multiple: false, + unique: false + }, + unique: false, + validateOn: "change", + errorLabel: "", + key: "dateTime", + tags: [], + properties: {}, + conditional: { show: null, when: null, eq: "", json: "" }, + customConditional: "", + logic: [], + attributes: {}, + overlay: { + style: "", + page: "", + left: "", + top: "", + width: "", + height: "" + }, + type: "datetime", + timezone: "", + input: true, + prefix: "", + suffix: "", + refreshOn: "", + widget: { + type: "calendar", + displayInTimezone: "viewer", + locale: "en", + useLocaleSettings: false, + allowInput: true, + mode: "single", + enableTime: true, + noCalendar: false, + format: "yyyy-MM-dd hh:mm a", + hourIncrement: 1, + minuteIncrement: 1, + minDate: null, + disabledDates: "", + disableWeekends: false, + disableWeekdays: false, + disableFunction: "", + maxDate: null + }, + showCharCount: false, + showWordCount: false, + allowMultipleMasks: false, + datepickerMode: "day", + id: "el9idgl" + }, + { + label: "Day", + hideInputLabels: false, + inputsLabelPosition: "top", + description: "", + useLocaleSettings: false, + tooltip: "", + customClass: "", + tabindex: "", + hidden: false, + hideLabel: false, + autofocus: false, + disabled: false, + tableView: false, + modalEdit: false, + fields: { + day: { + type: "number", + placeholder: "", + hide: false, + required: false + }, + month: { + type: "select", + placeholder: "", + hide: false, + required: false + }, + year: { + type: "number", + placeholder: "", + hide: false, + required: false + } + }, + dayFirst: false, + persistent: true, + protected: false, + dbIndex: false, + encrypted: false, + redrawOn: "", + clearOnHide: true, + customDefaultValue: "", + calculateValue: "", + calculateServer: false, + allowCalculateOverride: false, + validateOn: "change", + maxDate: "", + minDate: "", + unique: false, + errorLabel: "", + validate: { + customMessage: "", + custom: "", + customPrivate: false, + json: "", + required: false, + strictDateValidation: false, + multiple: false, + unique: false + }, + key: "day", + tags: [], + properties: {}, + conditional: { show: null, when: null, eq: "", json: "" }, + customConditional: "", + logic: [], + attributes: {}, + overlay: { + style: "", + page: "", + left: "", + top: "", + width: "", + height: "" + }, + type: "day", + input: true, + placeholder: "", + prefix: "", + suffix: "", multiple: false, + refreshOn: "", + labelPosition: "top", + widget: null, + showCharCount: false, + showWordCount: false, + allowMultipleMasks: false, + id: "ecgefls", + defaultValue: "00/00/0000" + }, + { + label: "Currency", + labelPosition: "top", + placeholder: "", + description: "", + tooltip: "", + prefix: "", + suffix: "", + widget: { type: "input" }, + customClass: "", + tabindex: "", + autocomplete: "", + hidden: false, + hideLabel: false, + mask: false, + autofocus: false, + spellcheck: true, + disabled: false, + tableView: false, + modalEdit: false, + multiple: false, + persistent: true, + currency: "USD", + inputFormat: "plain", + protected: false, + dbIndex: false, + case: "", + encrypted: false, + redrawOn: "", + clearOnHide: true, + customDefaultValue: "", + calculateValue: "", + calculateServer: false, + allowCalculateOverride: false, + validateOn: "change", + validate: { + required: false, + customMessage: "", + custom: "", + customPrivate: false, + json: "", + strictDateValidation: false, + multiple: false, + unique: false, + min: "", + max: "", + step: "any", + integer: "" + }, unique: false, - min: "", - max: "", - step: "any", - integer: "" - }, - unique: false, - errorLabel: "", - key: "currency", - tags: [], - properties: {}, - conditional: { show: null, when: null, eq: "", json: "" }, - customConditional: "", - logic: [], - attributes: {}, - overlay: { - style: "", - page: "", - left: "", - top: "", - width: "", - height: "" - }, - type: "currency", - input: true, - refreshOn: "", - showCharCount: false, - showWordCount: false, - allowMultipleMasks: false, - delimiter: true, - id: "em22wkd", - defaultValue: null - }, - { - type: "button", - label: "Submit", - key: "submit", - size: "md", - block: false, - action: "submit", - disableOnInvalid: true, - theme: "primary", - input: true, - placeholder: "", - prefix: "", - customClass: "", - suffix: "", - multiple: false, - defaultValue: null, - protected: false, - unique: false, - persistent: false, - hidden: false, - clearOnHide: true, - refreshOn: "", - redrawOn: "", - tableView: false, - modalEdit: false, - labelPosition: "top", - description: "", - errorLabel: "", - tooltip: "", - hideLabel: false, - tabindex: "", - disabled: false, - autofocus: false, - dbIndex: false, - customDefaultValue: "", - calculateValue: "", - calculateServer: false, - widget: { type: "input" }, - attributes: {}, - validateOn: "change", - validate: { - required: false, - custom: "", - customPrivate: false, - strictDateValidation: false, + errorLabel: "", + key: "currency", + tags: [], + properties: {}, + conditional: { show: null, when: null, eq: "", json: "" }, + customConditional: "", + logic: [], + attributes: {}, + overlay: { + style: "", + page: "", + left: "", + top: "", + width: "", + height: "" + }, + type: "currency", + input: true, + refreshOn: "", + showCharCount: false, + showWordCount: false, + allowMultipleMasks: false, + delimiter: true, + id: "em22wkd", + defaultValue: null + }, + { + type: "button", + label: "Submit", + key: "submit", + size: "md", + block: false, + action: "submit", + disableOnInvalid: true, + theme: "primary", + input: true, + placeholder: "", + prefix: "", + customClass: "", + suffix: "", multiple: false, - unique: false - }, - conditional: { show: null, when: null, eq: "" }, - overlay: { style: "", left: "", top: "", width: "", height: "" }, - allowCalculateOverride: false, - encrypted: false, - showCharCount: false, - showWordCount: false, - properties: {}, - allowMultipleMasks: false, - leftIcon: "", - rightIcon: "", - dataGridLabel: true, - id: "e08gq3l" - } - ], - options: { template: "tailwind", iconset: "bx" } + defaultValue: null, + protected: false, + unique: false, + persistent: false, + hidden: false, + clearOnHide: true, + refreshOn: "", + redrawOn: "", + tableView: false, + modalEdit: false, + labelPosition: "top", + description: "", + errorLabel: "", + tooltip: "", + hideLabel: false, + tabindex: "", + disabled: false, + autofocus: false, + dbIndex: false, + customDefaultValue: "", + calculateValue: "", + calculateServer: false, + widget: { type: "input" }, + attributes: {}, + validateOn: "change", + validate: { + required: false, + custom: "", + customPrivate: false, + strictDateValidation: false, + multiple: false, + unique: false + }, + conditional: { show: null, when: null, eq: "" }, + overlay: { style: "", left: "", top: "", width: "", height: "" }, + allowCalculateOverride: false, + encrypted: false, + showCharCount: false, + showWordCount: false, + properties: {}, + allowMultipleMasks: false, + leftIcon: "", + rightIcon: "", + dataGridLabel: true, + id: "e08gq3l" + } + ], + options: { template: "tailwind", iconset: "bx" } + } }; diff --git a/packages/react-formio/src/components/form-edit/formEdit.stories.tsx b/packages/react-formio/src/components/form-edit/formEdit.stories.tsx index fb40d366..05a8b9c4 100644 --- a/packages/react-formio/src/components/form-edit/formEdit.stories.tsx +++ b/packages/react-formio/src/components/form-edit/formEdit.stories.tsx @@ -2,7 +2,7 @@ import React from "react"; import { FormEdit } from "./formEdit.component"; import { defaultDisplayChoices } from "./formParameters.component"; -console.log("===", FormEdit); + export default { title: "ReactFormio/FormEdit", component: FormEdit, @@ -45,327 +45,330 @@ export default { } }; -export const Sandbox = (args: any) => { - return ; -}; - -Sandbox.args = { - form: { - type: "form", - tags: [], - owner: "5d0797a382461b6656d2c790", - components: [ - { - label: "Text Field", - labelPosition: "top", - placeholder: "", - description: "", - tooltip: "", - prefix: "", - suffix: "", - widget: { type: "input" }, - inputMask: "", - allowMultipleMasks: false, - customClass: "", - tabindex: "", - autocomplete: "", - hidden: false, - hideLabel: false, - showWordCount: false, - showCharCount: false, - mask: false, - autofocus: false, - spellcheck: true, - disabled: false, - tableView: true, - modalEdit: false, - multiple: false, - persistent: true, - inputFormat: "plain", - protected: false, - dbIndex: false, - case: "", - encrypted: false, - redrawOn: "", - clearOnHide: true, - customDefaultValue: "", - calculateValue: "", - calculateServer: false, - allowCalculateOverride: false, - validateOn: "change", - validate: { - required: true, - pattern: "", - customMessage: "", - custom: "", - customPrivate: false, - json: "", - minLength: "", - maxLength: "", - strictDateValidation: false, - multiple: false, - unique: false - }, - unique: false, - errorLabel: "", - key: "textField", - tags: [], - properties: {}, - conditional: { show: null, when: null, eq: "", json: "" }, - customConditional: "", - logic: [], - attributes: {}, - overlay: { - style: "", - page: "", - left: "", - top: "", - width: "", - height: "" - }, - type: "textfield", - input: true, - refreshOn: "", - inputType: "text", - id: "eqb1o4r", - defaultValue: "" - } - ], - title: "text-field", - display: "form", - access: [ - { - roles: ["5d0797bc872fc747da559858", "5d0797bc872fc71d05559859", "5d0797bc872fc7da3b55985a"], - type: "read_all" - } - ], - submissionAccess: [], - controller: "", - properties: {}, - settings: {}, - name: "textField", - path: "textfield", - machineName: "tcspjwhsevrzpcd:textField" +export const Sandbox = { + render: ({ form, typeChoices, displayChoices, enableTags, options }: any) => { + return ; }, - typeChoices: [ - { label: "Form", value: "form" }, - { label: "Resources", value: "resource" } - ], - displayChoices: defaultDisplayChoices, - enableTags: true, - options: { template: "tailwind", iconset: "bx" } -}; - -export const WithoutTypeChoices = (args: any) => { - return ; -}; - -WithoutTypeChoices.args = { - form: { - type: "form", - tags: [], - owner: "5d0797a382461b6656d2c790", - components: [ - { - label: "Text Field", - labelPosition: "top", - placeholder: "", - description: "", - tooltip: "", - prefix: "", - suffix: "", - widget: { type: "input" }, - inputMask: "", - allowMultipleMasks: false, - customClass: "", - tabindex: "", - autocomplete: "", - hidden: false, - hideLabel: false, - showWordCount: false, - showCharCount: false, - mask: false, - autofocus: false, - spellcheck: true, - disabled: false, - tableView: true, - modalEdit: false, - multiple: false, - persistent: true, - inputFormat: "plain", - protected: false, - dbIndex: false, - case: "", - encrypted: false, - redrawOn: "", - clearOnHide: true, - customDefaultValue: "", - calculateValue: "", - calculateServer: false, - allowCalculateOverride: false, - validateOn: "change", - validate: { - required: true, - pattern: "", - customMessage: "", - custom: "", - customPrivate: false, - json: "", - minLength: "", - maxLength: "", - strictDateValidation: false, - multiple: false, - unique: false - }, - unique: false, - errorLabel: "", - key: "textField", - tags: [], - properties: {}, - conditional: { show: null, when: null, eq: "", json: "" }, - customConditional: "", - logic: [], - attributes: {}, - overlay: { - style: "", - page: "", - left: "", - top: "", - width: "", - height: "" - }, - type: "textfield", - input: true, - refreshOn: "", - inputType: "text", - id: "eqb1o4r", - defaultValue: "" - } + args: { + typeChoices: [ + { label: "Form", value: "form" }, + { label: "Resources", value: "resource" } ], - title: "text-field", - display: "form", - access: [ - { - roles: ["5d0797bc872fc747da559858", "5d0797bc872fc71d05559859", "5d0797bc872fc7da3b55985a"], - type: "read_all" - } - ], - submissionAccess: [], - controller: "", - properties: {}, - settings: {}, - name: "textField", - path: "textfield", - machineName: "tcspjwhsevrzpcd:textField" - }, - displayChoices: defaultDisplayChoices, - enableTags: true, - options: { template: "tailwind", iconset: "bx" } + displayChoices: defaultDisplayChoices, + enableTags: true, + options: { template: "tailwind", iconset: "bx" }, + form: { + type: "form", + tags: [], + owner: "5d0797a382461b6656d2c790", + components: [ + { + label: "Text Field", + labelPosition: "top", + placeholder: "", + description: "", + tooltip: "", + prefix: "", + suffix: "", + widget: { type: "input" }, + inputMask: "", + allowMultipleMasks: false, + customClass: "", + tabindex: "", + autocomplete: "", + hidden: false, + hideLabel: false, + showWordCount: false, + showCharCount: false, + mask: false, + autofocus: false, + spellcheck: true, + disabled: false, + tableView: true, + modalEdit: false, + multiple: false, + persistent: true, + inputFormat: "plain", + protected: false, + dbIndex: false, + case: "", + encrypted: false, + redrawOn: "", + clearOnHide: true, + customDefaultValue: "", + calculateValue: "", + calculateServer: false, + allowCalculateOverride: false, + validateOn: "change", + validate: { + required: true, + pattern: "", + customMessage: "", + custom: "", + customPrivate: false, + json: "", + minLength: "", + maxLength: "", + strictDateValidation: false, + multiple: false, + unique: false + }, + unique: false, + errorLabel: "", + key: "textField", + tags: [], + properties: {}, + conditional: { show: null, when: null, eq: "", json: "" }, + customConditional: "", + logic: [], + attributes: {}, + overlay: { + style: "", + page: "", + left: "", + top: "", + width: "", + height: "" + }, + type: "textfield", + input: true, + refreshOn: "", + inputType: "text", + id: "eqb1o4r", + defaultValue: "" + } + ], + title: "text-field", + display: "form", + access: [ + { + roles: ["5d0797bc872fc747da559858", "5d0797bc872fc71d05559859", "5d0797bc872fc7da3b55985a"], + type: "read_all" + } + ], + submissionAccess: [], + controller: "", + properties: {}, + settings: {}, + name: "textField", + path: "textfield", + machineName: "tcspjwhsevrzpcd:textField" + } + } }; -export const WithoutTags = (args: any) => { - return ; +export const WithoutTypeChoices = { + render: (args: any) => { + return ; + }, + args: { + form: { + type: "form", + tags: [], + owner: "5d0797a382461b6656d2c790", + components: [ + { + label: "Text Field", + labelPosition: "top", + placeholder: "", + description: "", + tooltip: "", + prefix: "", + suffix: "", + widget: { type: "input" }, + inputMask: "", + allowMultipleMasks: false, + customClass: "", + tabindex: "", + autocomplete: "", + hidden: false, + hideLabel: false, + showWordCount: false, + showCharCount: false, + mask: false, + autofocus: false, + spellcheck: true, + disabled: false, + tableView: true, + modalEdit: false, + multiple: false, + persistent: true, + inputFormat: "plain", + protected: false, + dbIndex: false, + case: "", + encrypted: false, + redrawOn: "", + clearOnHide: true, + customDefaultValue: "", + calculateValue: "", + calculateServer: false, + allowCalculateOverride: false, + validateOn: "change", + validate: { + required: true, + pattern: "", + customMessage: "", + custom: "", + customPrivate: false, + json: "", + minLength: "", + maxLength: "", + strictDateValidation: false, + multiple: false, + unique: false + }, + unique: false, + errorLabel: "", + key: "textField", + tags: [], + properties: {}, + conditional: { show: null, when: null, eq: "", json: "" }, + customConditional: "", + logic: [], + attributes: {}, + overlay: { + style: "", + page: "", + left: "", + top: "", + width: "", + height: "" + }, + type: "textfield", + input: true, + refreshOn: "", + inputType: "text", + id: "eqb1o4r", + defaultValue: "" + } + ], + title: "text-field", + display: "form", + access: [ + { + roles: ["5d0797bc872fc747da559858", "5d0797bc872fc71d05559859", "5d0797bc872fc7da3b55985a"], + type: "read_all" + } + ], + submissionAccess: [], + controller: "", + properties: {}, + settings: {}, + name: "textField", + path: "textfield", + machineName: "tcspjwhsevrzpcd:textField" + }, + displayChoices: defaultDisplayChoices, + enableTags: true, + options: { template: "tailwind", iconset: "bx" } + } }; -WithoutTags.args = { - form: { - type: "form", - tags: [], - owner: "5d0797a382461b6656d2c790", - components: [ - { - label: "Text Field", - labelPosition: "top", - placeholder: "", - description: "", - tooltip: "", - prefix: "", - suffix: "", - widget: { type: "input" }, - inputMask: "", - allowMultipleMasks: false, - customClass: "", - tabindex: "", - autocomplete: "", - hidden: false, - hideLabel: false, - showWordCount: false, - showCharCount: false, - mask: false, - autofocus: false, - spellcheck: true, - disabled: false, - tableView: true, - modalEdit: false, - multiple: false, - persistent: true, - inputFormat: "plain", - protected: false, - dbIndex: false, - case: "", - encrypted: false, - redrawOn: "", - clearOnHide: true, - customDefaultValue: "", - calculateValue: "", - calculateServer: false, - allowCalculateOverride: false, - validateOn: "change", - validate: { - required: true, - pattern: "", - customMessage: "", - custom: "", - customPrivate: false, - json: "", - minLength: "", - maxLength: "", - strictDateValidation: false, - multiple: false, - unique: false - }, - unique: false, - errorLabel: "", - key: "textField", - tags: [], - properties: {}, - conditional: { show: null, when: null, eq: "", json: "" }, - customConditional: "", - logic: [], - attributes: {}, - overlay: { - style: "", - page: "", - left: "", - top: "", - width: "", - height: "" - }, - type: "textfield", - input: true, - refreshOn: "", - inputType: "text", - id: "eqb1o4r", - defaultValue: "" - } - ], - title: "text-field", - display: "form", - access: [ - { - roles: ["5d0797bc872fc747da559858", "5d0797bc872fc71d05559859", "5d0797bc872fc7da3b55985a"], - type: "read_all" - } - ], - submissionAccess: [], - controller: "", - properties: {}, - settings: {}, - name: "textField", - path: "textfield", - machineName: "tcspjwhsevrzpcd:textField" +export const WithoutTags = { + render: (args: any) => { + return ; }, - displayChoices: defaultDisplayChoices, - enableTags: false, - options: { template: "tailwind", iconset: "bx" } + args: { + form: { + type: "form", + tags: [], + owner: "5d0797a382461b6656d2c790", + components: [ + { + label: "Text Field", + labelPosition: "top", + placeholder: "", + description: "", + tooltip: "", + prefix: "", + suffix: "", + widget: { type: "input" }, + inputMask: "", + allowMultipleMasks: false, + customClass: "", + tabindex: "", + autocomplete: "", + hidden: false, + hideLabel: false, + showWordCount: false, + showCharCount: false, + mask: false, + autofocus: false, + spellcheck: true, + disabled: false, + tableView: true, + modalEdit: false, + multiple: false, + persistent: true, + inputFormat: "plain", + protected: false, + dbIndex: false, + case: "", + encrypted: false, + redrawOn: "", + clearOnHide: true, + customDefaultValue: "", + calculateValue: "", + calculateServer: false, + allowCalculateOverride: false, + validateOn: "change", + validate: { + required: true, + pattern: "", + customMessage: "", + custom: "", + customPrivate: false, + json: "", + minLength: "", + maxLength: "", + strictDateValidation: false, + multiple: false, + unique: false + }, + unique: false, + errorLabel: "", + key: "textField", + tags: [], + properties: {}, + conditional: { show: null, when: null, eq: "", json: "" }, + customConditional: "", + logic: [], + attributes: {}, + overlay: { + style: "", + page: "", + left: "", + top: "", + width: "", + height: "" + }, + type: "textfield", + input: true, + refreshOn: "", + inputType: "text", + id: "eqb1o4r", + defaultValue: "" + } + ], + title: "text-field", + display: "form", + access: [ + { + roles: ["5d0797bc872fc747da559858", "5d0797bc872fc71d05559859", "5d0797bc872fc7da3b55985a"], + type: "read_all" + } + ], + submissionAccess: [], + controller: "", + properties: {}, + settings: {}, + name: "textField", + path: "textfield", + machineName: "tcspjwhsevrzpcd:textField" + }, + displayChoices: defaultDisplayChoices, + enableTags: false, + options: { template: "tailwind", iconset: "bx" } + } }; diff --git a/packages/react-formio/src/components/form/form.stories.tsx b/packages/react-formio/src/components/form/form.stories.tsx index 4afb56b6..33d1543c 100644 --- a/packages/react-formio/src/components/form/form.stories.tsx +++ b/packages/react-formio/src/components/form/form.stories.tsx @@ -112,137 +112,143 @@ function wrap(args: any) { }; } -export const Sandbox = (args: any) => { - return ; -}; - -Sandbox.args = { - form -}; - -export const TriggerError = (args: any) => { - const onAsyncSubmit = (submission: Submission) => { - return new Promise((resolve, reject) => { - setTimeout(() => { - reject(new Error("server error")); - }, 500); - }).catch((error) => { - error.errors = { - message: "My custom message about this field", - type: "custom", - path: ["firstName"], - level: "error" - }; - throw error; - }); - }; - - return {...wrap(args)} form={args.form} onAsyncSubmit={onAsyncSubmit} />; -}; - -TriggerError.args = { - form: { - type: "form", - display: "form", - tags: [], - components: [ - { - label: "First name", - widget: { - type: "input" - }, - errorLabel: "", - key: "firstName", - inputType: "text", - type: "textfield", - id: "eqb1o4r", - defaultValue: "" - }, - { - label: "Submit", - showValidations: false, - tableView: false, - key: "submit", - type: "button", - input: true - } - ] +export const Sandbox = { + args: { + form + }, + render: (args: any) => { + return ; } }; -export const ReadOnly = (args: any) => { - return ( - { + const onAsyncSubmit = (submission: Submission) => { + return new Promise((resolve, reject) => { + setTimeout(() => { + reject(new Error("server error")); + }, 500); + }).catch((error) => { + error.errors = { + message: "My custom message about this field", + type: "custom", + path: ["firstName"], + level: "error" + }; + throw error; + }); + }; + + return {...wrap(args)} form={args.form} onAsyncSubmit={onAsyncSubmit} />; + }, + args: { + form: { + type: "form", + display: "form", + tags: [], + components: [ + { + label: "First name", + widget: { + type: "input" + }, + errorLabel: "", + key: "firstName", + inputType: "text", + type: "textfield", + id: "eqb1o4r", + defaultValue: "" + }, + { + label: "Submit", + showValidations: false, + tableView: false, + key: "submit", + type: "button", + input: true } - }} - /> - ); -}; - -ReadOnly.args = { - readonly: true, - form + ] + } + } }; -export const OnChange = (args: any) => { - const [data, setForm] = useState(() => {}); - const props = wrap(args); - - return ( - { - setForm(changedSubmission.data); - }} - /> - ); +export const ReadOnly = { + render: (args: any) => { + return ( + + ); + }, + + args: { + readonly: true, + form + } }; -OnChange.args = { - form: { - type: "form", - display: "form", - tags: [], - components: [ - { - label: "First name", - widget: { - type: "input" - }, - errorLabel: "", - key: "firstName", - inputType: "text", - type: "textfield", - id: "eqb1o4r", - defaultValue: "", - validate: { - required: true - } - }, - { - label: "Last name", - widget: { - type: "input" +export const OnChange = { + render: function Render(args: any) { + const [data, setForm] = useState(() => {}); + const props = wrap(args); + + return ( + { + setForm(changedSubmission.data); + }} + /> + ); + }, + + args: { + form: { + type: "form", + display: "form", + tags: [], + components: [ + { + label: "First name", + widget: { + type: "input" + }, + errorLabel: "", + key: "firstName", + inputType: "text", + type: "textfield", + id: "eqb1o4r", + defaultValue: "", + validate: { + required: true + } }, - errorLabel: "", - key: "lastName", - inputType: "text", - type: "textfield", - id: "eqb1o4r", - defaultValue: "", - validate: { - required: true + { + label: "Last name", + widget: { + type: "input" + }, + errorLabel: "", + key: "lastName", + inputType: "text", + type: "textfield", + id: "eqb1o4r", + defaultValue: "", + validate: { + required: true + } } - } - ] + ] + } } }; diff --git a/packages/redux-utils/coverage.json b/packages/redux-utils/coverage.json index b943699b..adb66002 100644 --- a/packages/redux-utils/coverage.json +++ b/packages/redux-utils/coverage.json @@ -1,6 +1,6 @@ { "statements": 83.33, "branches": 100, - "functions": 66.67, + "functions": 66.66, "lines": 84.21 } diff --git a/packages/storybook/.eslintignore b/packages/storybook/.eslintignore new file mode 100644 index 00000000..539ef9f9 --- /dev/null +++ b/packages/storybook/.eslintignore @@ -0,0 +1,14 @@ +**/node_modules +docs +docs-references +**/lib +**/build +**/dist +**/coverage +**/.nyc_output +**/node_modules +*-lock.json +*.lock +benchmarks.* +**/generated +src/**/*.ejs.js diff --git a/packages/storybook/.eslintrc.js b/packages/storybook/.eslintrc.js new file mode 100644 index 00000000..1b5dd069 --- /dev/null +++ b/packages/storybook/.eslintrc.js @@ -0,0 +1,7 @@ +module.exports = { + extends: [require.resolve("@tsed/config/eslint/node")], + rules: { + "import/no-anonymous-default-export": 0, + "jsx-a11y/anchor-is-valid": 0 + } +}; diff --git a/packages/storybook/.storybook/main.js b/packages/storybook/.storybook/main.js new file mode 100644 index 00000000..8f9ff162 --- /dev/null +++ b/packages/storybook/.storybook/main.js @@ -0,0 +1,49 @@ +import svgr from 'vite-plugin-svgr' +import {mergeConfig} from 'vite' +import remarkGfm from 'remark-gfm' + +/** @type { import('@storybook/react-vite').StorybookConfig } */ +const config = { + staticDirs: ['../../tailwind/build'], + stories: [ + '../stories/Getting-started.mdx', + '../stories/**/*.mdx', + '../../{tailwind-formio,react-formio}/src/**/*.mdx', + '../../{tailwind-formio,react-formio}/src/**/*.stories.@(js|jsx|ts|tsx)', + '../../{tailwind-formio,react-formio}/src/**/*.story.@(js|jsx|ts|tsx)' + ], + addons: [ + '@storybook/addon-links', + {name: '@storybook/addon-essentials', options: {docs: false}}, + { + name: '@storybook/addon-docs', + options: { + mdxPluginOptions: { + mdxCompileOptions: { + remarkPlugins: [remarkGfm] + } + } + } + }, + '@storybook/addon-interactions' + ], + framework: { + name: '@storybook/react-vite', + options: {} + }, + docs: { + autodocs: 'tag' + }, + async viteFinal (config) { + // return the customized config + return mergeConfig(config, { + // customize the Vite config here + base: './', + define: { + 'process.env.NODE_ENV': `'${process.env.NODE_ENV}'` + }, + plugins: [svgr()] + }) + } +} +export default config diff --git a/packages/tailwind-formio/.storybook/preview-head.html b/packages/storybook/.storybook/preview-head.html similarity index 100% rename from packages/tailwind-formio/.storybook/preview-head.html rename to packages/storybook/.storybook/preview-head.html diff --git a/packages/storybook/.storybook/preview.js b/packages/storybook/.storybook/preview.js new file mode 100644 index 00000000..cefaad46 --- /dev/null +++ b/packages/storybook/.storybook/preview.js @@ -0,0 +1,25 @@ +import tailwind from '@tsed/tailwind-formio' +import {Formio, Templates} from '@tsed/react-formio' +import {INITIAL_VIEWPORTS} from '@storybook/addon-viewport' +import "./styles/index.css"; + +Formio.use(tailwind) +Templates.framework = 'tailwind' + +/** @type { import('@storybook/react').Preview } */ +const preview = { + parameters: { + actions: {argTypesRegex: '^on[A-Z].*'}, + controls: { + matchers: { + color: /(background|color)$/i, + date: /Date$/ + } + } + }, + viewport: { + viewports: INITIAL_VIEWPORTS + } +} + +export default preview diff --git a/packages/tailwind-formio/.storybook/styles/fonts/bxicons/animations.css b/packages/storybook/.storybook/styles/fonts/bxicons/animations.css similarity index 100% rename from packages/tailwind-formio/.storybook/styles/fonts/bxicons/animations.css rename to packages/storybook/.storybook/styles/fonts/bxicons/animations.css diff --git a/packages/tailwind-formio/.storybook/styles/fonts/bxicons/boxicons.css b/packages/storybook/.storybook/styles/fonts/bxicons/boxicons.css similarity index 100% rename from packages/tailwind-formio/.storybook/styles/fonts/bxicons/boxicons.css rename to packages/storybook/.storybook/styles/fonts/bxicons/boxicons.css diff --git a/packages/tailwind-formio/.storybook/styles/fonts/bxicons/boxicons.eot b/packages/storybook/.storybook/styles/fonts/bxicons/boxicons.eot similarity index 100% rename from packages/tailwind-formio/.storybook/styles/fonts/bxicons/boxicons.eot rename to packages/storybook/.storybook/styles/fonts/bxicons/boxicons.eot diff --git a/packages/tailwind-formio/.storybook/styles/fonts/bxicons/boxicons.svg b/packages/storybook/.storybook/styles/fonts/bxicons/boxicons.svg similarity index 100% rename from packages/tailwind-formio/.storybook/styles/fonts/bxicons/boxicons.svg rename to packages/storybook/.storybook/styles/fonts/bxicons/boxicons.svg diff --git a/packages/tailwind-formio/.storybook/styles/fonts/bxicons/boxicons.ttf b/packages/storybook/.storybook/styles/fonts/bxicons/boxicons.ttf similarity index 100% rename from packages/tailwind-formio/.storybook/styles/fonts/bxicons/boxicons.ttf rename to packages/storybook/.storybook/styles/fonts/bxicons/boxicons.ttf diff --git a/packages/tailwind-formio/.storybook/styles/fonts/bxicons/boxicons.woff b/packages/storybook/.storybook/styles/fonts/bxicons/boxicons.woff similarity index 100% rename from packages/tailwind-formio/.storybook/styles/fonts/bxicons/boxicons.woff rename to packages/storybook/.storybook/styles/fonts/bxicons/boxicons.woff diff --git a/packages/tailwind-formio/.storybook/styles/fonts/bxicons/boxicons.woff2 b/packages/storybook/.storybook/styles/fonts/bxicons/boxicons.woff2 similarity index 100% rename from packages/tailwind-formio/.storybook/styles/fonts/bxicons/boxicons.woff2 rename to packages/storybook/.storybook/styles/fonts/bxicons/boxicons.woff2 diff --git a/packages/tailwind-formio/.storybook/styles/fonts/bxicons/index.css b/packages/storybook/.storybook/styles/fonts/bxicons/index.css similarity index 100% rename from packages/tailwind-formio/.storybook/styles/fonts/bxicons/index.css rename to packages/storybook/.storybook/styles/fonts/bxicons/index.css diff --git a/packages/tailwind-formio/.storybook/styles/fonts/bxicons/transformations.css b/packages/storybook/.storybook/styles/fonts/bxicons/transformations.css similarity index 100% rename from packages/tailwind-formio/.storybook/styles/fonts/bxicons/transformations.css rename to packages/storybook/.storybook/styles/fonts/bxicons/transformations.css diff --git a/packages/tailwind-formio/.storybook/styles/fonts/inconsolata/index.css b/packages/storybook/.storybook/styles/fonts/inconsolata/index.css similarity index 100% rename from packages/tailwind-formio/.storybook/styles/fonts/inconsolata/index.css rename to packages/storybook/.storybook/styles/fonts/inconsolata/index.css diff --git a/packages/tailwind-formio/.storybook/styles/fonts/index.css b/packages/storybook/.storybook/styles/fonts/index.css similarity index 100% rename from packages/tailwind-formio/.storybook/styles/fonts/index.css rename to packages/storybook/.storybook/styles/fonts/index.css index 63f5d633..a92aee58 100644 --- a/packages/tailwind-formio/.storybook/styles/fonts/index.css +++ b/packages/storybook/.storybook/styles/fonts/index.css @@ -1,3 +1,3 @@ -@import "source-sans-pro/index.css"; -@import "inconsolata/index.css"; @import "bxicons/index.css"; +@import "inconsolata/index.css"; +@import "source-sans-pro/index.css"; diff --git a/packages/tailwind-formio/.storybook/styles/fonts/source-sans-pro/index.css b/packages/storybook/.storybook/styles/fonts/source-sans-pro/index.css similarity index 100% rename from packages/tailwind-formio/.storybook/styles/fonts/source-sans-pro/index.css rename to packages/storybook/.storybook/styles/fonts/source-sans-pro/index.css diff --git a/packages/storybook/.storybook/styles/index.css b/packages/storybook/.storybook/styles/index.css new file mode 100644 index 00000000..1654ef07 --- /dev/null +++ b/packages/storybook/.storybook/styles/index.css @@ -0,0 +1,6 @@ +@import "tailwind.css"; +@import "fonts/index.css"; +@import "typography.css"; +@import "formiojs/dist/formio.full.css"; +@import "../../../tailwind-formio/styles/index.css"; + diff --git a/packages/tailwind-formio/.storybook/styles/tailwind.css b/packages/storybook/.storybook/styles/tailwind.css similarity index 100% rename from packages/tailwind-formio/.storybook/styles/tailwind.css rename to packages/storybook/.storybook/styles/tailwind.css diff --git a/packages/tailwind-formio/.storybook/styles/typography.css b/packages/storybook/.storybook/styles/typography.css similarity index 100% rename from packages/tailwind-formio/.storybook/styles/typography.css rename to packages/storybook/.storybook/styles/typography.css diff --git a/packages/storybook/package.json b/packages/storybook/package.json new file mode 100644 index 00000000..94b5d20c --- /dev/null +++ b/packages/storybook/package.json @@ -0,0 +1,50 @@ +{ + "name": "@tsed/storybook", + "version": "2.1.2", + "private": true, + "description": "storybook package", + "scripts": { + "lint": "eslint \"**/*.{js,jsx,ts,tsx}\"", + "lint:fix": "yarn lint --fix", + "start:storybook": "storybook dev -p 6006", + "build:storybook": "storybook build -c ./.storybook -o .out", + "serve": "serve .out", + "watch": "nodemon --watch ./src --ext ts,js,ejs --exec \"yarn build\"" + }, + "dependencies": { + "@tsed/config": "2.1.2", + "@tsed/tailwind-formio": "2.1.2", + "@tsed/react-formio": "2.1.2" + }, + "devDependencies": { + "@storybook/addon-essentials": "^7.0.18", + "@storybook/addon-interactions": "^7.0.18", + "@storybook/addon-links": "^7.0.18", + "@storybook/blocks": "^7.0.18", + "@storybook/react": "^7.0.18", + "@storybook/react-vite": "^7.0.18", + "@storybook/testing-library": "^0.0.14-next.2", + "@storybook/addon-viewport": "^7.0.18", + "remark-gfm": "^3.0.1", + "prop-types": "^15.8.1", + "react": "^18.2.0", + "react-dom": "^18.2.0", + "react-svg": "10.0.23", + "vite": "4.3.9", + "vite-plugin-svgr": "^2.4.0", + "storybook": "^7.0.18", + "serve": "^13.0.4" + }, + "browserslist": { + "production": [ + ">0.2%", + "not dead", + "not op_mini all" + ], + "development": [ + "last 1 chrome version", + "last 1 firefox version", + "last 1 safari version" + ] + } +} diff --git a/packages/storybook/postcss.config.js b/packages/storybook/postcss.config.js new file mode 100644 index 00000000..5a0b9646 --- /dev/null +++ b/packages/storybook/postcss.config.js @@ -0,0 +1 @@ +module.exports = require("@tsed/config/postcss.config.js"); diff --git a/packages/storybook/stories/Form.mdx b/packages/storybook/stories/Form.mdx new file mode 100644 index 00000000..65a07854 --- /dev/null +++ b/packages/storybook/stories/Form.mdx @@ -0,0 +1,128 @@ +import {Canvas, Meta} from '@storybook/blocks' +import * as FormStories from '../../react-formio/src/components/form/form.stories' + + + + + +# Form + +The form component is the primary component of the system. It is what takes the form definition (json) and renders the +form into html. There are multiple ways to send the form to the Form component. The two main ways are to pass the `src` +prop with an url to the form definition, usually a form.io server. The other is to pass the `form` prop with the json +definition and optionally a `url` prop with the location of the form. + +## Props + +| Name | Type | Default | Description | +|--------------|--------|---------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| `src` | url | | The url of the form definition. This is commonly from a form.io server. When using src, the form will automatically submit the data to that url as well. | +| `url` | url | | The url of the form definition. The form will not be loaded from this url and the submission will not be saved here either. This is used for file upload, oauth and other components or actions that need to know where the server is. Use this in connection with `form` | +| `form` | object | | Instead of loading a form from the `src` url, you can preload the form definition and pass it in with the `form` prop. You should also set `url` if you are using any advanced components like file upload or oauth. | +| `submission` | object | | Submission data to fill the form. You can either load a previous submission or create a submission with some pre-filled data. If you do not provide a submissions the form will initialize an empty submission using default values from the form. | +| `options` | object | | an options object that can pass options to the formio.js Form that is rendered. You can set options such as `readOnly`, `noAlerts` or `hide`. There are [many options to be found in the formio.js library](https://github.com/formio/formio.js/wiki/Form-Renderer#options). | + +## Event Props + +| Name | Parameters | Description | +|---------------------|---------------------|------------------------------------------------------------------| +| `onChange` | `schema`: object | Triggered any time the form definition changes | +| `onEditComponent` | `component`: object | Triggered when the component settings dialog is opened | +| `onSaveComponent` | `component`: object | Triggered when the component settings dialog is saved and closed | +| `onCancelComponent` | `component`: object | Triggered when the component settings dialog is cancelled | +| `onDeleteComponent` | `component`: object | Triggered when a component is removed from the form | +| `onUpdateComponent` | `component`: object | Triggered when a component is added or moved in the form | + +## Example + +### Basic usage +```tsx +import React from "react"; +import ReactDOM from "react-dom"; +import { Form } from "@tsed/react-formio"; + +ReactDOM.render( + console.log(schema)} />, + document.getElementById("builder") +); +``` + +Will render: + + + +### With src/url + +Give `Form` a `src` property and render: + +```tsx +import React from "react"; +import ReactDOM from "react-dom"; +import { Form } from "@tsed/react-formio"; + +ReactDOM.render( + , + document.getElementById("example") +); +``` + +### With error management + +Give `Form` a `src` property and render: + +```tsx +import React from "react"; +import ReactDOM from "react-dom"; +import { Form } from "@tsed/react-formio"; + +interface MyFormData { + title: string; +} + + +const form = { + display: "form", + components: [ + { + key: "title", + type: "textfield" + } + ] +}; + +ReactDOM.render( + + form={form} + onAsyncSubmit={(submission) => { + return httpClient.post("/path/to/external/service", { data: submission }).catch((er) => { + err.errors = [ + { + message: "My custom message about this field", + type: "custom", + path: ["title"], + level: "error" + } + ]; + throw error; + }); + }} + />, + document.getElementById("example") +); +``` + +Will render: + + + +> Clic on the Submit button to see the error. + diff --git a/packages/storybook/stories/FormBuilder.mdx b/packages/storybook/stories/FormBuilder.mdx new file mode 100644 index 00000000..d9a49aaa --- /dev/null +++ b/packages/storybook/stories/FormBuilder.mdx @@ -0,0 +1,64 @@ +import {Canvas, Meta} from '@storybook/blocks' +import * as FormBuilderStories from '../../react-formio/src/components/form-builder/formBuilder.stories' + + + + + +# Form Builder + +The [FormBuilder](/story/reactformio-formbuilder--sandbox) class can be used to embed a form builder directly in your React application. + +Please note that you'll need to include the CSS for the form builder from formio.js as well. + +Please note that the [FormBuilder](/story/reactformio-formbuilder--sandbox) component does not load and save from/to an url. +You must handle the form definition loading and saving yourself or use the [FormEdit](/docs/documentation-formedit--docs) component. + +## Props + +| Name | Type | Default | Description | +|-----------|--------|---------|----------------------------------------------------------------------------------------------------------------------------------------------| +| `form` | object | | This is the form definition object. It should at least have a `display` property set to form, wizard or pdf. | +| `options` | object | | an options object that can pass options to the formio.js Form that is rendered. There are many options to be found in the formio.js library. | + +## Event Props + +| Name | Parameters | Description | +|---------------------|---------------------|------------------------------------------------------------------| +| `onChange` | `schema`: object | Triggered any time the form definition changes | +| `onEditComponent` | `component`: object | Triggered when the component settings dialog is opened | +| `onSaveComponent` | `component`: object | Triggered when the component settings dialog is saved and closed | +| `onCancelComponent` | `component`: object | Triggered when the component settings dialog is cancelled | +| `onDeleteComponent` | `component`: object | Triggered when a component is removed from the form | +| `onUpdateComponent` | `component`: object | Triggered when a component is added or moved in the form | + +## Example + +```tsx +import React from "react"; +import ReactDOM from "react-dom"; +import { FormBuilder } from "@tsed/react-formio"; + + +ReactDOM.render( + console.log(schema)} />, + document.getElementById("builder") +); +``` + +Will render the following: + + + +## Example of a wizard form + + diff --git a/packages/storybook/stories/FormEdit.mdx b/packages/storybook/stories/FormEdit.mdx new file mode 100644 index 00000000..c46e3318 --- /dev/null +++ b/packages/storybook/stories/FormEdit.mdx @@ -0,0 +1,41 @@ +import {Canvas, Meta} from '@storybook/blocks' +import * as FormEditStories from '../../react-formio/src/components/form-edit/formEdit.stories' + + + + + + +# FormEdit + +The [FormEdit](/story/reactformio-formedit--sandbox) component wraps +the [FormBuilder](/docs/documentation-formbuilder--docs) component and +adds the title, display, name and path fields at the top along with a save button. + +## Props + +| Name | Type | Default | Description | +|------------|--------|---------------------|-----------------------------------------------------------------| +| `form` | object | `{display: 'form'}` | The form definition of the exiting form that is to be modified. | +| `options` | object | `{}` | The options to be passed to FormBuilder | +| `saveText` | string | `''` | The string that will be displayed in the save-button | + + +## Event Props + +| Name | Parameters | Description | +|------------|------------|----------------------------------------------------------------------------------------| +| `onSubmit` | form | Called when the save button is pressed. Will pass the form definition to the callback. | + +## Example + + diff --git a/packages/storybook/stories/FormTable.mdx b/packages/storybook/stories/FormTable.mdx new file mode 100644 index 00000000..c0b56604 --- /dev/null +++ b/packages/storybook/stories/FormTable.mdx @@ -0,0 +1,30 @@ +import {Canvas, Meta} from '@storybook/blocks' +import * as FormsTableStories from '../../react-formio/src/components/forms-table/formsTable.stories' + + + + + +# FormsTable + +The [FormsTable](https://formio.tsed.io/?path=/story/reactformio-formstable--sandbox) component can be used to render a +list of forms with buttons to edit, view, delete, etc on each row. + +## Props + +| Name | Type | Default | Description | +|--------|----------------|---------|---------------------------------------------| +| `data` | array of forms | [] | A list of forms to be rendered in the grid. | + +## Example + + diff --git a/packages/storybook/stories/Getting-started.mdx b/packages/storybook/stories/Getting-started.mdx new file mode 100644 index 00000000..09ab3bed --- /dev/null +++ b/packages/storybook/stories/Getting-started.mdx @@ -0,0 +1,155 @@ +import {Canvas, Meta} from '@storybook/blocks' +import * as FormBuilderStories from '../../react-formio/src/components/form-builder/formBuilder.stories' + + + + + +
+ Ts.ED logo +
+ +
+

Ts.ED - React Formio

+ +
+ Build & Release + semantic-release + code style: prettier + backers +
+
+ +
+ Website +   •   + Tutorial +   •   + Slack +   •   + Twitter +
+ +
+ +A [React](http://facebook.github.io/react/) library for rendering out forms based on the [Form.io](https://www.form.io) +platform. + +This module is based on the original [react-formio](https://github.com/formio/react-formio) and add extra features +listed above. + +See our [storybook](https://formio.tsed.io/) to see all available components. + +## Features + +Many components are provided to build your own backoffice based on Formio.js API: + +- [ActionsTable](/story/reactformio-actionstable--sandbox), +- [FormAccess](/story/reactformio-formaccess--sandbox), +- [FormAction](/story/reactformio-formaction--sandbox), +- [Form](/docs/documentation-form--docs), +- [FormBuilder](/docs/documentation-formbuilder--docs), +- [FormEdit](/docs/documentation-formedit--docs), +- [FormsTable](/docs/documentation-formstable--docs), +- [InputTags](/story/reactformio-inputtags--sandbox), +- [InputText](/story/reactformio-inputtext--sandbox), +- [Pagination](/story/reactformio-pagination--sandbox), +- [Select](/story/reactformio-select--sandbox), +- [SubmissionsTable](/docs/documentation-submissionstable--docs). +- [Table](/story/reactformio-table--sandbox), +- Predefined Reducers for Actions, Action, Form, Forms, Submission, Submissions, etc..., +- TypeScript support. +- Tailwind support. + +## Migrate from v1 + +If you use redux actions from v1, you have to install `@tsed/redux-formio-stores` and remplace your imports: + +```diff +- import { defaultFormioReducer, formsReducer } from "@tsed/react-formio"; ++ import { defaultFormioReducer, formsReducer } from "@tsed/react-formio-stores"; +``` + +## Install + +`@tsed/react-formio` can be used on the server, or bundled for the client using an +npm-compatible packaging system such as [Browserify](http://browserify.org/) or +[webpack](http://webpack.github.io/). + +``` +npm install @tsed/react-formio react-table --save +npm install formiojs choices.js --save // Install formiojs since it is a peerDependency +``` + +## Usage + +```tsx +import React from "react"; +import { FormBuilder } from "@tsed/react-formio"; + +function App() { + return ( +
+ +
+ ); +} + +export default App; +``` + + + +## Contributors + +Please read [contributing guidelines here](./CONTRIBUTING.md). + + + +## Backers + +Thank you to all our backers! 🙏 [[Become a backer](https://opencollective.com/tsed#backer)] + + + +## Sponsors + +Support this project by becoming a sponsor. Your logo will show up here with a link to your +website. [[Become a sponsor](https://opencollective.com/tsed#sponsor)] + +## License + +The MIT License (MIT) + +Copyright (c) 2016 - 2021 Romain Lenzotti + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated +documentation files (the "Software"), to deal in the Software without restriction, including without limitation the +rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit +persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the +Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE +WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + diff --git a/packages/storybook/stories/SubmissionsTable.mdx b/packages/storybook/stories/SubmissionsTable.mdx new file mode 100644 index 00000000..509a0f41 --- /dev/null +++ b/packages/storybook/stories/SubmissionsTable.mdx @@ -0,0 +1,30 @@ +import {Canvas, Meta} from '@storybook/blocks' +import * as SubmissionsTableStories from '../../react-formio/src/components/submissions-table/submissionsTable.stories' + + + + + +# SubmissionsTable + +The submission grid will render a list of submissions and allow clicking on one row to select it. + +## Props + +| Name | Type | Default | Description | +|--------|----------------------|---------|----------------------------------------------------------------------------------| +| `data` | array of submissions | [] | A list of submissions to be rendered in the grid. | +| `form` | object | {} | The form definition for the submissions. This is used to render the submissions. | + +## Example + + diff --git a/packages/storybook/tailwind.config.js b/packages/storybook/tailwind.config.js new file mode 100644 index 00000000..0f770ec6 --- /dev/null +++ b/packages/storybook/tailwind.config.js @@ -0,0 +1 @@ +module.exports = require("@tsed/tailwind"); diff --git a/packages/tailwind-formio/.storybook/main.js b/packages/tailwind-formio/.storybook/main.js deleted file mode 100644 index cb6b8ca0..00000000 --- a/packages/tailwind-formio/.storybook/main.js +++ /dev/null @@ -1,63 +0,0 @@ -const {dirname, join} = require('path') -const rootDir = join(__dirname, '..', 'src') -const formioDir = dirname(require.resolve('@tsed/react-formio')) -const formioContainerDir = dirname(require.resolve('@tsed/react-formio-container')) -const tailwindDir = dirname(require.resolve('@tsed/tailwind-formio')) -const {mergeConfig} = require('vite') -const svgr = require("vite-plugin-svgr"); - -const scanDirs = dir => [ - join(dir, '**/*.stories.mdx'), - join(dir, '**/*.story.mdx'), - join(dir, '**/*.story.@(js|jsx|ts|tsx)'), - join(dir, '**/*.stories.@(js|jsx|ts|tsx)') -] - -module.exports = { - staticDirs: ['../../tailwind/build'], - addons: [ - '@storybook/addon-links', - '@storybook/addon-essentials', - //'@storybook/addon-interactions', - { - name: '@storybook/addon-postcss', - options: { - cssLoaderOptions: { - importLoaders: 1, - sourceMap: true - }, - postcssLoaderOptions: { - // When using postCSS 8 - implementation: require('postcss'), - postcssOptions: { - plugins: require('../postcss.config.js').plugins - }, - sourceMap: true - } - } - }], - stories: [ - join(rootDir, '**/*.stories.mdx'), - join(rootDir, '**/*.stories.@(js|jsx|ts|tsx)'), - ...scanDirs(join(formioDir, '..', 'src', 'components')), - ...scanDirs(join(formioContainerDir, '..', 'src')), - ...scanDirs(join(tailwindDir, '..', 'src', 'templates')) - ], - core: { - builder: "@storybook/builder-vite" - }, - features: { - storyStoreV7: true - }, - async viteFinal (config) { - // return the customized config - return mergeConfig(config, { - // customize the Vite config here - base: "./", - define: { - "process.env.NODE_ENV": `'${process.env.NODE_ENV}'` - }, - plugins: [svgr()] - }); - } -} diff --git a/packages/tailwind-formio/.storybook/preview.js b/packages/tailwind-formio/.storybook/preview.js deleted file mode 100644 index 3dbeff25..00000000 --- a/packages/tailwind-formio/.storybook/preview.js +++ /dev/null @@ -1,19 +0,0 @@ -import { Formio, Templates } from "@tsed/react-formio"; -import { INITIAL_VIEWPORTS } from "@storybook/addon-viewport"; -import tailwind from "../dist/index.modern.js"; -import "./styles/index.css"; - -Formio.use(tailwind); -Templates.framework = "tailwind"; - -export const parameters = { - controls: { - matchers: { - color: /(background|color)$/i, - date: /Date$/ - } - }, - viewport: { - viewports: INITIAL_VIEWPORTS - } -}; diff --git a/packages/tailwind-formio/.storybook/styles/index.css b/packages/tailwind-formio/.storybook/styles/index.css deleted file mode 100644 index 197aea6e..00000000 --- a/packages/tailwind-formio/.storybook/styles/index.css +++ /dev/null @@ -1,5 +0,0 @@ -@import "./tailwind.css"; -@import "./fonts/index.css"; -@import "./typography.css"; -@import "formiojs/dist/formio.full.css"; -@import "../../styles/index.css"; diff --git a/packages/tailwind-formio/package.json b/packages/tailwind-formio/package.json index 9b1e7fd4..21210cf4 100644 --- a/packages/tailwind-formio/package.json +++ b/packages/tailwind-formio/package.json @@ -8,45 +8,20 @@ "scripts": { "lint": "eslint \"**/*.{js,jsx,ts,tsx}\"", "lint:fix": "yarn lint --fix", - "start:storybook": "start-storybook -p 6006", - "build:storybook": "build-storybook -c ../tailwind-formio/.storybook -o .out", - "serve": "serve .out", "watch": "nodemon --watch ./src --ext ts,js,ejs --exec \"yarn build\"", "build:templates": "gulp templates", "build:source": "microbundle --no-compress --format modern,cjs --jsx React.createElement --jsxFragment React.Fragment --globals react/jsx-runtime=jsx", "build": "gulp templates && yarn build:source" }, "devDependencies": { - "@babel/core": "^7.18.9", - "@sambego/storybook-state": "2.0.1", - "@storybook/addon-actions": "6.5.16", - "@storybook/addon-docs": "6.5.16", - "@storybook/addon-essentials": "6.5.16", - "@storybook/addon-links": "6.5.16", - "@storybook/addon-postcss": "^2.0.0", - "@storybook/addon-viewport": "6.5.16", - "@storybook/addons": "6.5.16", - "@storybook/builder-vite": "0.4.2", - "@storybook/react": "6.5.16", - "@svgr/webpack": "6.5.1", "@tsed/config": "2.1.2", "@tsed/tailwind": "2.1.2", - "@tsed/yarn-workspaces": "1.19.3", - "@vitejs/plugin-react": "4.0.0", - "babel-loader": "^8.2.5", "cross-env": "7.0.3", "gulp": "^4.0.2", "gulp-insert": "^0.5.0", "gulp-rename": "^2.0.0", "gulp-template": "^5.0.0", - "nodemon": "2.0.20", - "react-svg": "10.0.23", - "serve": "^13.0.4", - "url-loader": "4.1.1", - "vite": "^4.3.5", - "vite-plugin-svgr": "^2.4.0", - "webpack": "4.44.2", - "webpack-cli": "4.9.2" + "nodemon": "2.0.20" }, "browserslist": { "production": [ @@ -62,4 +37,4 @@ }, "dependencies": {}, "peerDependencies": {} -} \ No newline at end of file +} diff --git a/packages/tailwind-formio/src/stories/tailwind.stories.mdx b/packages/tailwind-formio/src/stories/tailwind.stories.mdx index 77e7ba9f..67968c18 100644 --- a/packages/tailwind-formio/src/stories/tailwind.stories.mdx +++ b/packages/tailwind-formio/src/stories/tailwind.stories.mdx @@ -1,6 +1,6 @@ -import { Meta } from '@storybook/addon-docs/blocks' +import { Meta } from '@storybook/blocks'; - + -