{"version":3,"file":"MultiStepForm-a4167566.js","sources":["../../../app/javascript/src/components/ui/Step.jsx","../../../app/javascript/src/utils/children.js","../../../app/javascript/src/components/ui/StepRenderer.jsx","../../../app/javascript/src/components/ui/StepNavigator.jsx","../../../app/javascript/src/components/ui/form/MultiStepForm.jsx"],"sourcesContent":["//\nimport React, { Component, createContext } from 'react'\n\n/**\n * Used to provide custom step body render method\n * @type {{Provider, Consumer}}\n */\n/* $FlowFixMe */\nexport const StepContext = createContext({\n render: (body) => body,\n})\n\nclass Step extends Component {\n static contextType = StepContext\n\n static defaultProps = {\n initialValues: undefined,\n onNavigate: undefined,\n }\n\n componentDidMount() {\n const { onNavigate } = this.props\n\n if (onNavigate) {\n onNavigate()\n }\n }\n\n render() {\n const { children } = this.props\n return this.context.render(children, this)\n }\n}\n\nexport default Step\n","import React from 'react'\n\nexport function mapChildren(children, func, context) {\n let index = 0\n\n let result = React.Children.map(children, (child) => {\n if (!React.isValidElement(child)) {\n return child\n }\n\n return func.call(context, child, index++)\n })\n\n return result\n}\n","//\nimport { Component } from 'react'\nimport * as React from 'react'\nimport { mapChildren } from 'utils/children'\n\n/**\n * StepController Properties\n */\n\n/**\n * StepController State\n */\n\n/**\n *\n */\nexport default class StepRenderer extends Component {\n /**\n * @param step\n * @param idx\n * @returns {*}\n */\n renderStepBody(step, idx) {\n const { activeStep } = this.props\n return idx === activeStep ? step : null\n }\n\n render() {\n const { children } = this.props\n return mapChildren(children, this.renderStepBody, this)\n }\n}\n","//\nimport { Component, createContext, useContext } from 'react'\nimport * as React from 'react'\nimport StepRenderer from './StepRenderer'\nimport history from 'components/frontend/history'\n\n/**\n * StepNavigator Properties\n */\n\n/**\n * StepNavigator State\n */\n\nexport const StepNavigatorContext = createContext({\n currentStep: 0,\n nextStep: () => {},\n prevStep: () => {},\n navigateTo: (step) => {},\n})\n\nexport function useStepNavigator() {\n return useContext(StepNavigatorContext)\n}\n\n/**\n */\nexport default class StepNavigator extends Component {\n constructor(props) {\n super(props)\n\n this.state = {\n currentStep: props.initialStep ? props.initialStep : 0,\n totalSteps: this.stepsCount(),\n nextStep: this.nextStep.bind(this),\n prevStep: this.prevStep.bind(this),\n navigateTo: this.navigateTo.bind(this),\n }\n\n this.nextStep = this.nextStep.bind(this)\n this.prevStep = this.prevStep.bind(this)\n this.navigateTo = this.navigateTo.bind(this)\n this.updateCurrentLocation = this.updateCurrentLocation.bind(this)\n }\n\n componentDidUpdate(prevProps) {\n if (this.props.initialStep !== prevProps.initialStep) {\n this.setState({\n currentStep: this.props.initialStep,\n })\n }\n }\n\n static getDerivedStateFromProps(props, state) {\n /* $FlowFixMe */\n state.totalSteps = props.children.length\n return state\n }\n\n nextStep() {\n let { currentStep, totalSteps } = this.state\n\n if (currentStep < totalSteps - 1) {\n currentStep++\n }\n\n this.handleStepChange(currentStep)\n }\n\n prevStep() {\n let { currentStep } = this.state\n\n if (currentStep > 0) {\n currentStep--\n }\n\n this.handleStepChange(currentStep)\n }\n\n navigateTo(step) {\n let { totalSteps } = this.state\n\n if (step >= 0 && step < totalSteps) {\n this.handleStepChange(step)\n }\n }\n\n updateCurrentLocation() {\n const { currentStep } = this.state\n const { trackingKey, children } = this.props\n\n if (trackingKey) {\n let key = currentStep\n\n if (Array.isArray(children) && children[currentStep]) {\n const { props: { name } = {} } = children[currentStep]\n\n if (name) {\n key = name\n }\n }\n\n let path = location.pathname + `?ul=${trackingKey}-${key}`\n if (location.hash) {\n path += location.hash\n }\n\n history.push(path)\n }\n }\n\n handleStepChange(currentStep) {\n const { onNavigate } = this.props\n\n if (onNavigate) {\n onNavigate(currentStep).then((newStep) => {\n this.setState(\n {\n currentStep: newStep ? newStep : currentStep,\n },\n this.updateCurrentLocation\n )\n })\n } else {\n this.setState(\n {\n currentStep,\n },\n this.updateCurrentLocation\n )\n }\n }\n\n /**\n * @returns {number}\n */\n stepsCount() {\n /* $FlowFixMe */\n return this.props.children.length\n }\n\n render() {\n const { currentStep } = this.state\n\n return (\n \n \n {this.props.children}\n \n \n )\n }\n}\n","//\nimport 'babel-polyfill'\nimport React, { Component } from 'react'\nimport { StepContext } from '../Step'\nimport StepNavigator, { StepNavigatorContext } from '../StepNavigator'\n\nimport { Form, FormSpy } from 'react-final-form'\nimport MultiStepFormContext from './MultiStepFormContext'\n\n/**\n * MultiStep State\n */\n\n/**\n */\nexport default class MultiStepForm extends Component {\n renderCtx\n state = {\n stepData: {},\n }\n\n constructor(props) {\n super(props)\n\n this.renderCtx = {\n render: this.renderStep.bind(this),\n }\n\n const { initialValues } = props\n let sessionData = {}\n\n if (!props.dontPersist) {\n const key = this.getStorageKey()\n if (key) {\n const data = window.sessionStorage.getItem(key)\n if (data) {\n try {\n sessionData = JSON.parse(data)\n } catch (e) {\n console.error(e)\n }\n }\n }\n }\n\n const hasInitialValues =\n initialValues && Object.getOwnPropertyNames(initialValues).length\n if (\n Object.getOwnPropertyNames(sessionData).length ||\n hasInitialValues\n ) {\n this.state.stepData = { ...(sessionData ? sessionData : {}) }\n\n if (initialValues) {\n for (const stepName of Object.keys(initialValues)) {\n if (!this.state.stepData[stepName]) {\n this.state.stepData[stepName] = {}\n }\n\n if (hasInitialValues) {\n this.state.stepData[stepName] = {\n ...(initialValues[stepName]\n ? initialValues[stepName]\n : {}),\n ...this.state.stepData[stepName],\n }\n }\n }\n }\n }\n\n this.submitStep = this.submitStep.bind(this)\n this.submitFullForm = this.submitFullForm.bind(this)\n this.onNavigateTo = this.onNavigateTo.bind(this)\n this.onChange = this.onChange.bind(this)\n this.renderStep = this.renderStep.bind(this)\n }\n\n getStorageKey() {\n const { id } = this.props\n\n if (id) {\n return `form${id}`\n }\n\n return null\n }\n\n persistFormData() {\n const { dontPersist } = this.props\n const { stepData } = this.state\n\n if (dontPersist) {\n return\n }\n\n const key = this.getStorageKey()\n if (key) {\n window.sessionStorage.setItem(key, JSON.stringify(stepData))\n }\n }\n\n submitStep(step, values, navigatorContext) {\n const {\n props: { name, last = false, onSubmit: stepOnSubmit },\n } = step\n\n return new Promise((resolve, reject) => {\n this.setState(\n (state) => {\n state['stepData'][name] = values\n },\n async () => {\n const { onSubmit } = this.props\n\n this.persistFormData()\n\n const isLast =\n typeof last === 'function' ? last(values) : last\n\n if (isLast && onSubmit) {\n let result = this.submitFullForm()\n if (result && typeof result.then === 'function') {\n result = await result\n }\n\n if (typeof result === 'number') {\n /* $FlowFixMe */\n navigatorContext.navigateTo(result)\n } else if (!result) {\n /* $FlowFixMe */\n navigatorContext.nextStep()\n } else {\n return resolve(result)\n }\n }\n\n if (stepOnSubmit) {\n let result = stepOnSubmit(values, onSubmit)\n\n if (result && typeof result.then === 'function') {\n result = await result\n }\n\n if (\n result &&\n typeof result === 'object' &&\n result?.navigateTo\n ) {\n navigatorContext.navigateTo(result?.navigateTo)\n resolve(result?.navigateTo)\n }\n\n if (result !== -1) {\n navigatorContext.nextStep()\n } else {\n reject()\n }\n } else {\n navigatorContext.nextStep()\n }\n }\n )\n })\n }\n\n async submitFullForm() {\n const result = await this.props.onSubmit(this.state.stepData)\n const { dontPersist } = this.props\n\n if (!dontPersist) {\n // remove form data from sessionStorage\n const key = this.getStorageKey()\n if (key) {\n window.sessionStorage.removeItem(key)\n }\n }\n\n return result\n }\n\n async onNavigateTo(step) {\n const children = React.Children.toArray(this.props.children)\n\n if (children[step]) {\n const {\n props: { onNavigate },\n } = children[step]\n\n if (onNavigate) {\n return await onNavigate(step, this.state.stepData)\n }\n }\n\n return null\n }\n\n wrapInDiv(body, className) {\n if (className && className.length > 0) {\n return
{body}
\n }\n return body\n }\n\n /**\n * Auto-save all the form changes\n * @param name\n * @param values\n */\n onChange(name, values) {\n const key = this.getStorageKey()\n if (key) {\n const { stepData } = this.state\n const res = { ...stepData }\n if (!res[name]) {\n res[name] = { ...values }\n } else {\n res[name] = {\n ...res[name],\n ...values,\n }\n }\n\n const { dontPersist } = this.props\n if (!dontPersist) {\n window.sessionStorage.setItem(key, JSON.stringify(res))\n }\n }\n }\n\n renderStep(body, step) {\n const { name, className } = step.props\n\n // check if it is a FormStep\n if (name) {\n const { className: formClassName } = this.props\n const initialValues =\n this.state.stepData[name] && !step.props.forceInitialValues\n ? this.state.stepData[name]\n : step.props.initialValues\n\n return this.wrapInDiv(\n \n {(navigatorContext) => (\n \n this.submitStep(\n step,\n values,\n navigatorContext\n ).catch(\n (err) =>\n err &&\n console.log(\n 'error submitting step:',\n err\n )\n )\n }\n initialValues={initialValues}\n render={(form) => {\n return (\n \n \n this.onChange(name, values)\n }\n />\n\n {body(form)}\n \n )\n }}\n />\n )}\n ,\n className\n )\n } else {\n return this.wrapInDiv(body, className)\n }\n }\n\n render() {\n const { children, initialStep, trackingKey, disableAutocomplete } =\n this.props\n return (\n {\n this.setState({ stepData: {} })\n },\n disableAutocomplete,\n }}\n >\n \n \n {children}\n \n \n \n )\n }\n}\n"],"names":["StepContext","createContext","body","Step","Component","onNavigate","children","mapChildren","func","context","index","React","child","StepRenderer","step","idx","activeStep","StepNavigatorContext","useStepNavigator","useContext","StepNavigator","props","prevProps","state","currentStep","totalSteps","trackingKey","key","name","path","history","newStep","jsx","MultiStepForm","initialValues","sessionData","data","e","hasInitialValues","stepName","id","dontPersist","stepData","values","navigatorContext","last","stepOnSubmit","resolve","reject","onSubmit","result","className","res","formClassName","Form","err","form","jsxs","FormSpy","initialStep","disableAutocomplete","MultiStepFormContext"],"mappings":"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"}