guestbell-forms 2.0.296 → 2.0.297

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -7,6 +7,7 @@ export declare type FormProps = React.PropsWithChildren<ThemeContextProps & {
7
7
  noValidate?: boolean;
8
8
  onSubmit?: () => void;
9
9
  extraComponents?: ComponentsDict;
10
+ component?: keyof JSX.IntrinsicElements;
10
11
  }>;
11
12
  export interface FormState {
12
13
  contextState: FormContextState;
@@ -15,6 +16,7 @@ export declare class Form extends React.PureComponent<FormProps, FormState> {
15
16
  static defaultProps: {
16
17
  noValidate: boolean;
17
18
  showExpandAll: boolean;
19
+ component: keyof JSX.IntrinsicElements;
18
20
  };
19
21
  constructor(props: FormProps);
20
22
  disableComponents(): void;
@@ -35,6 +37,7 @@ declare const _default: React.ForwardRefExoticComponent<ThemeContextProps & {
35
37
  noValidate?: boolean;
36
38
  onSubmit?: () => void;
37
39
  extraComponents?: ComponentsDict;
40
+ component?: keyof JSX.IntrinsicElements;
38
41
  } & {
39
42
  children?: React.ReactNode;
40
43
  } & React.RefAttributes<Form>>;
@@ -124,7 +124,7 @@ var Form = /*#__PURE__*/function (_React$PureComponent) {
124
124
  }, {
125
125
  key: "render",
126
126
  value: function render() {
127
- return /*#__PURE__*/React.createElement("form", _extends({}, this.props.id && {
127
+ return /*#__PURE__*/React.createElement(this.props.component, _extends({}, this.props.id && {
128
128
  id: this.props.id
129
129
  }, {
130
130
  noValidate: true,
@@ -242,7 +242,8 @@ exports.Form = Form;
242
242
 
243
243
  _defineProperty(Form, "defaultProps", {
244
244
  noValidate: false,
245
- showExpandAll: true
245
+ showExpandAll: true,
246
+ component: 'form'
246
247
  });
247
248
 
248
249
  var _default = (0, _withThemeContext.withThemeContext)(Form, 'form');
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/lib/components/form/Form.tsx"],"names":["Form","props","e","preventDefault","onSubmit","subscribe","bind","unSubscribe","updateCallback","disableComponents","enableComponents","state","contextState","isFormValid","components","extraComponents","Object","keys","forEach","key","component","componentApi","disableComponent","enableComponent","touch","unTouch","id","className","mergeContext","children","getIsFormValid","componentId","componentState","setState","previousState","assign","initialValid","validation","isValid","previousComponent","React","PureComponent","noValidate","showExpandAll"],"mappings":"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","sourcesContent":["// Libs\r\nimport * as React from 'react';\r\n\r\n// Misc\r\nimport {\r\n FormContextState,\r\n FormComponentContextState,\r\n FormContextProvider,\r\n ComponentsDict,\r\n} from './FormContext';\r\nimport { withThemeContext } from '../themeProvider/withThemeContext';\r\nimport { ThemeContextProps } from '../themeProvider/ThemeContext';\r\n\r\nexport type FormProps = React.PropsWithChildren<\r\n ThemeContextProps & {\r\n id?: string;\r\n className?: string;\r\n noValidate?: boolean;\r\n onSubmit?: () => void;\r\n extraComponents?: ComponentsDict;\r\n }\r\n>;\r\n\r\nexport interface FormState {\r\n contextState: FormContextState;\r\n}\r\n\r\nexport class Form extends React.PureComponent<FormProps, FormState> {\r\n public static defaultProps = {\r\n noValidate: false,\r\n showExpandAll: true,\r\n };\r\n\r\n constructor(props: FormProps) {\r\n super(props);\r\n this.subscribe = this.subscribe.bind(this);\r\n this.unSubscribe = this.unSubscribe.bind(this);\r\n this.updateCallback = this.updateCallback.bind(this);\r\n this.disableComponents = this.disableComponents.bind(this);\r\n this.enableComponents = this.enableComponents.bind(this);\r\n this.state = {\r\n contextState: {\r\n subscribe: this.subscribe,\r\n unSubscribe: this.unSubscribe,\r\n isFormValid: true,\r\n updateCallback: this.updateCallback,\r\n disableComponents: this.disableComponents,\r\n enableComponents: this.enableComponents,\r\n components: {},\r\n },\r\n };\r\n }\r\n\r\n public disableComponents() {\r\n const components = {\r\n ...this.state.contextState.components,\r\n ...this.props.extraComponents,\r\n };\r\n Object.keys(components).forEach(key => {\r\n const component = components[key];\r\n component &&\r\n component.componentApi &&\r\n component.componentApi.disableComponent &&\r\n component.componentApi.disableComponent();\r\n });\r\n }\r\n\r\n public enableComponents() {\r\n const components = {\r\n ...this.state.contextState.components,\r\n ...this.props.extraComponents,\r\n };\r\n Object.keys(components).forEach(key => {\r\n const component = components[key];\r\n component &&\r\n component.componentApi &&\r\n component.componentApi.enableComponent &&\r\n component.componentApi.enableComponent();\r\n });\r\n }\r\n\r\n public touchAll() {\r\n const components = {\r\n ...this.state.contextState.components,\r\n ...this.props.extraComponents,\r\n };\r\n Object.keys(components).forEach(key => {\r\n const component = components[key];\r\n component &&\r\n component.componentApi &&\r\n component.componentApi.touch &&\r\n component.componentApi.touch();\r\n });\r\n }\r\n\r\n public unTouchAll() {\r\n const components = {\r\n ...this.state.contextState.components,\r\n ...this.props.extraComponents,\r\n };\r\n Object.keys(components).forEach(key => {\r\n const component = components[key];\r\n component &&\r\n component.componentApi &&\r\n component.componentApi.unTouch &&\r\n component.componentApi.unTouch();\r\n });\r\n }\r\n\r\n public render() {\r\n return (\r\n <form\r\n {...(this.props.id && { id: this.props.id })}\r\n noValidate={true}\r\n role=\"form\"\r\n className={`input__form validation-form ${\r\n this.props.className ? this.props.className : ''\r\n }`}\r\n onSubmit={this.onSubmit}\r\n >\r\n <FormContextProvider value={this.mergeContext()}>\r\n {this.props.children}\r\n </FormContextProvider>\r\n </form>\r\n );\r\n }\r\n\r\n private mergeContext(): FormContextState {\r\n if (!this.props.extraComponents) {\r\n return this.state.contextState;\r\n }\r\n const isFormValid =\r\n this.state.contextState.isFormValid &&\r\n this.getIsFormValid(this.props.extraComponents);\r\n return {\r\n ...this.state.contextState,\r\n components: {\r\n ...this.state.contextState.components,\r\n ...this.props.extraComponents,\r\n },\r\n isFormValid,\r\n };\r\n }\r\n\r\n private onSubmit = (e: React.FormEvent) => {\r\n e.preventDefault();\r\n this.props.onSubmit && this.props.onSubmit();\r\n };\r\n\r\n private subscribe(\r\n componentId: string,\r\n componentState: FormComponentContextState\r\n ) {\r\n if (componentId) {\r\n this.setState(previousState => {\r\n let components = Object.assign(\r\n {},\r\n previousState.contextState.components\r\n );\r\n if (componentState) {\r\n components[componentId] = componentState;\r\n }\r\n let isFormValid = this.getIsFormValid(components);\r\n return {\r\n contextState: {\r\n ...previousState.contextState,\r\n components,\r\n isFormValid,\r\n },\r\n };\r\n });\r\n }\r\n }\r\n\r\n private unSubscribe(componentId: string) {\r\n if (componentId) {\r\n this.setState(previousState => {\r\n let components = Object.assign(\r\n {},\r\n previousState.contextState.components\r\n );\r\n delete components[componentId];\r\n let isFormValid = this.getIsFormValid(components);\r\n return {\r\n contextState: {\r\n ...previousState.contextState,\r\n components,\r\n isFormValid,\r\n },\r\n };\r\n });\r\n }\r\n }\r\n\r\n private getIsFormValid(\r\n components: ComponentsDict = this.state.contextState.components,\r\n initialValid: boolean = true\r\n ): boolean {\r\n let isFormValid = initialValid;\r\n Object.keys(components).forEach(key => {\r\n const component = components[key];\r\n if (component && component.validation && !component.validation.isValid) {\r\n isFormValid = false;\r\n }\r\n });\r\n return isFormValid;\r\n }\r\n\r\n private updateCallback(\r\n componentId: string,\r\n componentState: FormComponentContextState\r\n ) {\r\n this.setState(previousState => {\r\n let components = Object.assign({}, previousState.contextState.components);\r\n const previousComponent = components[componentId];\r\n if (componentState && previousComponent) {\r\n components[componentId] = {\r\n ...previousComponent,\r\n ...componentState,\r\n validation: {\r\n ...previousComponent.validation,\r\n ...componentState.validation,\r\n },\r\n };\r\n }\r\n let isFormValid = this.getIsFormValid(components);\r\n return {\r\n contextState: {\r\n ...this.state.contextState,\r\n components,\r\n isFormValid,\r\n },\r\n };\r\n });\r\n }\r\n}\r\n\r\nexport default withThemeContext<FormProps, InstanceType<typeof Form>>(\r\n Form,\r\n 'form'\r\n);\r\n"],"file":"Form.js"}
1
+ {"version":3,"sources":["../../../src/lib/components/form/Form.tsx"],"names":["Form","props","e","preventDefault","onSubmit","subscribe","bind","unSubscribe","updateCallback","disableComponents","enableComponents","state","contextState","isFormValid","components","extraComponents","Object","keys","forEach","key","component","componentApi","disableComponent","enableComponent","touch","unTouch","id","className","mergeContext","children","getIsFormValid","componentId","componentState","setState","previousState","assign","initialValid","validation","isValid","previousComponent","React","PureComponent","noValidate","showExpandAll"],"mappings":"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","sourcesContent":["// Libs\r\nimport * as React from 'react';\r\n\r\n// Misc\r\nimport {\r\n FormContextState,\r\n FormComponentContextState,\r\n FormContextProvider,\r\n ComponentsDict,\r\n} from './FormContext';\r\nimport { withThemeContext } from '../themeProvider/withThemeContext';\r\nimport { ThemeContextProps } from '../themeProvider/ThemeContext';\r\n\r\nexport type FormProps = React.PropsWithChildren<\r\n ThemeContextProps & {\r\n id?: string;\r\n className?: string;\r\n noValidate?: boolean;\r\n onSubmit?: () => void;\r\n extraComponents?: ComponentsDict;\r\n component?: keyof JSX.IntrinsicElements;\r\n }\r\n>;\r\n\r\nexport interface FormState {\r\n contextState: FormContextState;\r\n}\r\n\r\nexport class Form extends React.PureComponent<FormProps, FormState> {\r\n public static defaultProps = {\r\n noValidate: false,\r\n showExpandAll: true,\r\n component: 'form' as keyof JSX.IntrinsicElements,\r\n };\r\n\r\n constructor(props: FormProps) {\r\n super(props);\r\n this.subscribe = this.subscribe.bind(this);\r\n this.unSubscribe = this.unSubscribe.bind(this);\r\n this.updateCallback = this.updateCallback.bind(this);\r\n this.disableComponents = this.disableComponents.bind(this);\r\n this.enableComponents = this.enableComponents.bind(this);\r\n this.state = {\r\n contextState: {\r\n subscribe: this.subscribe,\r\n unSubscribe: this.unSubscribe,\r\n isFormValid: true,\r\n updateCallback: this.updateCallback,\r\n disableComponents: this.disableComponents,\r\n enableComponents: this.enableComponents,\r\n components: {},\r\n },\r\n };\r\n }\r\n\r\n public disableComponents() {\r\n const components = {\r\n ...this.state.contextState.components,\r\n ...this.props.extraComponents,\r\n };\r\n Object.keys(components).forEach(key => {\r\n const component = components[key];\r\n component &&\r\n component.componentApi &&\r\n component.componentApi.disableComponent &&\r\n component.componentApi.disableComponent();\r\n });\r\n }\r\n\r\n public enableComponents() {\r\n const components = {\r\n ...this.state.contextState.components,\r\n ...this.props.extraComponents,\r\n };\r\n Object.keys(components).forEach(key => {\r\n const component = components[key];\r\n component &&\r\n component.componentApi &&\r\n component.componentApi.enableComponent &&\r\n component.componentApi.enableComponent();\r\n });\r\n }\r\n\r\n public touchAll() {\r\n const components = {\r\n ...this.state.contextState.components,\r\n ...this.props.extraComponents,\r\n };\r\n Object.keys(components).forEach(key => {\r\n const component = components[key];\r\n component &&\r\n component.componentApi &&\r\n component.componentApi.touch &&\r\n component.componentApi.touch();\r\n });\r\n }\r\n\r\n public unTouchAll() {\r\n const components = {\r\n ...this.state.contextState.components,\r\n ...this.props.extraComponents,\r\n };\r\n Object.keys(components).forEach(key => {\r\n const component = components[key];\r\n component &&\r\n component.componentApi &&\r\n component.componentApi.unTouch &&\r\n component.componentApi.unTouch();\r\n });\r\n }\r\n\r\n public render() {\r\n return (\r\n <this.props.component\r\n {...(this.props.id && { id: this.props.id })}\r\n noValidate={true}\r\n role=\"form\"\r\n className={`input__form validation-form ${\r\n this.props.className ? this.props.className : ''\r\n }`}\r\n onSubmit={this.onSubmit}\r\n >\r\n <FormContextProvider value={this.mergeContext()}>\r\n {this.props.children}\r\n </FormContextProvider>\r\n </this.props.component>\r\n );\r\n }\r\n\r\n private mergeContext(): FormContextState {\r\n if (!this.props.extraComponents) {\r\n return this.state.contextState;\r\n }\r\n const isFormValid =\r\n this.state.contextState.isFormValid &&\r\n this.getIsFormValid(this.props.extraComponents);\r\n return {\r\n ...this.state.contextState,\r\n components: {\r\n ...this.state.contextState.components,\r\n ...this.props.extraComponents,\r\n },\r\n isFormValid,\r\n };\r\n }\r\n\r\n private onSubmit = (e: React.FormEvent) => {\r\n e.preventDefault();\r\n this.props.onSubmit && this.props.onSubmit();\r\n };\r\n\r\n private subscribe(\r\n componentId: string,\r\n componentState: FormComponentContextState\r\n ) {\r\n if (componentId) {\r\n this.setState(previousState => {\r\n let components = Object.assign(\r\n {},\r\n previousState.contextState.components\r\n );\r\n if (componentState) {\r\n components[componentId] = componentState;\r\n }\r\n let isFormValid = this.getIsFormValid(components);\r\n return {\r\n contextState: {\r\n ...previousState.contextState,\r\n components,\r\n isFormValid,\r\n },\r\n };\r\n });\r\n }\r\n }\r\n\r\n private unSubscribe(componentId: string) {\r\n if (componentId) {\r\n this.setState(previousState => {\r\n let components = Object.assign(\r\n {},\r\n previousState.contextState.components\r\n );\r\n delete components[componentId];\r\n let isFormValid = this.getIsFormValid(components);\r\n return {\r\n contextState: {\r\n ...previousState.contextState,\r\n components,\r\n isFormValid,\r\n },\r\n };\r\n });\r\n }\r\n }\r\n\r\n private getIsFormValid(\r\n components: ComponentsDict = this.state.contextState.components,\r\n initialValid: boolean = true\r\n ): boolean {\r\n let isFormValid = initialValid;\r\n Object.keys(components).forEach(key => {\r\n const component = components[key];\r\n if (component && component.validation && !component.validation.isValid) {\r\n isFormValid = false;\r\n }\r\n });\r\n return isFormValid;\r\n }\r\n\r\n private updateCallback(\r\n componentId: string,\r\n componentState: FormComponentContextState\r\n ) {\r\n this.setState(previousState => {\r\n let components = Object.assign({}, previousState.contextState.components);\r\n const previousComponent = components[componentId];\r\n if (componentState && previousComponent) {\r\n components[componentId] = {\r\n ...previousComponent,\r\n ...componentState,\r\n validation: {\r\n ...previousComponent.validation,\r\n ...componentState.validation,\r\n },\r\n };\r\n }\r\n let isFormValid = this.getIsFormValid(components);\r\n return {\r\n contextState: {\r\n ...this.state.contextState,\r\n components,\r\n isFormValid,\r\n },\r\n };\r\n });\r\n }\r\n}\r\n\r\nexport default withThemeContext<FormProps, InstanceType<typeof Form>>(\r\n Form,\r\n 'form'\r\n);\r\n"],"file":"Form.js"}
@@ -3,7 +3,7 @@
3
3
  <head>
4
4
  <meta charset="UTF-8"/>
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1"/>
6
- <title>guestbell-forms [30 Jul 2022 at 12:46]</title>
6
+ <title>guestbell-forms [12 Sep 2022 at 15:42]</title>
7
7
  <link rel="shortcut icon" href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAMAAACdt4HsAAABrVBMVEUAAAD///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+O1foceMD///+J0/qK1Pr7/v8Xdr/9///W8P4UdL7L7P0Scr2r4Pyj3vwad8D5/f/2/f+55f3E6f34+/2H0/ojfMKpzOd0rNgQcb3F3O/j9f7c8v6g3Pz0/P/w+v/q+P7n9v6T1/uQ1vuE0vqLut/y+v+Z2fvt+f+15Pzv9fuc2/vR7v2V2Pvd6/bg9P7I6/285/2y4/yp3/zp8vk8i8kqgMT7/P31+fyv4vxGkcz6/P6/6P3j7vfS5PNnpNUxhcbO7f7F6v3O4vHK3/DA2u631Ouy0eqXweKJud5wqthfoNMMbLvY8f73+v2dxeR8sNtTmdDx9/zX6PSjyeaCtd1YnNGX2PuQveCGt95Nls42h8dLlM3F4vBtAAAAM3RSTlMAAyOx0/sKBvik8opWGBMOAe3l1snDm2E9LSb06eHcu5JpHbarfHZCN9CBb08zzkdNS0kYaptYAAAFV0lEQVRYw92X51/aYBDHHS2O2qqttVbrqNq9m+TJIAYIShBkWwqIiCgoWvfeq7Z2/s29hyQNyUcR7LveGwVyXy6XH8/9rqxglLfUPLxVduUor3h0rfp2TYvpivk37929TkG037hffoX0+peVtZQc1589rigVUdXS/ABSAyEmGIO/1XfvldSK8vs3OqB6u3m0nxmIrvgB0dj7rr7Y9IbuF68hnfFaiHA/sxqm0wciIG43P60qKv9WXWc1RXGh/mFESFABTSBi0sNAKzqet17eCtOb3kZIDwxEEU0oAIJGYxNBDhBND29e0rtXXbcpuPmED9IhEAAQ/AXEaF8EPmnrrKsv0LvWR3fg5sWDNAFZOgAgaKvZDogHNU9MFwnnYROkc56RD5CjAbQX9Ow4g7upCsvYu55aSI/Nj0H1akgKQEUM94dwK65hYRmFU9MIcH/fqJYOZYcnuJSU/waKDgTOEVaVKhwrTRP5XzgSpAITYzom7UvkhFX5VutmxeNnWDjjswTKTyfgluNDGbUpWissXhF3s7mlSml+czWkg3D0l1nNjGNjz3myOQOa1KM/jOS6ebdbAVTCi4gljHSFrviza7tOgRWcS0MOUX9zdNgag5w7rRqA44Lzw0hr1WqES36dFliSJFlh2rXIae3FFcDDgKdxrUIDePr8jGcSClV1u7A9xeN0ModY/pHMxmR1EzRh8TJiwqsHmKW0l4FCEZI+jHio+JdPPE9qwQtTRxku2D8sIeRL2LnxWSllANCQGOIiqVHAz2ye2JR0DcH+HoxDkaADLjgxjKQ+AwCX/g0+DNgdG0ukYCONAe+dbc2IAc6fwt1ARoDSezNHxV2Cmzwv3O6lDMV55edBGwGK9n1+x2F8EDfAGCxug8MhpsMEcTEAWf3rx2vZhe/LAmtIn/6apE6PN0ULKgywD9mmdxbmFl3OvD5AS5fW5zLbv/YHmcsBTjf/afDz3MaZTVCfAP9z6/Bw6ycv8EUBWJIn9zYcoAWWlW9+OzO3vkTy8H+RANLmdrpOuYWdZYEXpo+TlCJrW5EARb7fF+bWdqf3hhyZI1nWJQHgznErZhbjoEsWqi8dQNoE294aldzFurwSABL2XXMf9+H1VQGke9exw5P/AnA5Pv5ngMul7LOvO922iwACu8WkCwLCafvM4CeWPxfA8lNHcWZSoi8EwMAIciKX2Z4SWCMAa3snCZ/G4EA8D6CMLNFsGQhkkz/gQNEBbPCbWsxGUpYVu3z8IyNAknwJkfPMEhLyrdi5RTyUVACkw4GSFRNWJNEW+fgPGwHD8/JxnRuLabN4CGNRkAE23na2+VmEAUmrYymSGjMAYqH84YUIyzgzs3XC7gNgH36Vcc4zKY9o9fgPBXUAiHHwVboBHGLiX6Zcjp1f2wu4tvzZKo0ecPnDtQYDQvJXaBeNzce45Fp28ZQLrEZVuFqgBwOalArKXnW1UzlnSusQKJqKYNuz4tOnI6sZG4zanpemv+7ySU2jbA9h6uhcgpfy6G2PahirDZ6zvq6zDduMVFTKvzw8wgyEdelwY9in3XkEPs3osJuwRQ4qTkfzifndg9Gfc4pdsu82+tTnHZTBa2EAMrqr2t43pguc8tNm7JQVQ2S0ukj2d22dhXYP0/veWtwKrCkNoNimAN5+Xr/oLrxswKbVJjteWrX7eR63o4j9q0GxnaBdWgGA5VStpanIjQmEhV0/nVt5VOFUvix6awJhPcAaTEShgrG+iGyvb5a0Ndb1YGHFPEwoqAinoaykaID1o1pdPNu7XsnCKQ3R+hwWIIhGvORcJUBYXe3Xa3vq/mF/N9V13ugufMkfXn+KHsRD0B8AAAAASUVORK5CYII=" type="image/x-icon" />
8
8
 
9
9
  <script>
package/package.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "2.0.296",
2
+ "version": "2.0.297",
3
3
  "description": "React forms with validation as used in GuestBell",
4
4
  "keywords": [
5
5
  "react",