UNPKG

vue-admin-core

Version:
1 lines 10.5 kB
{"version":3,"file":"index.mjs","sources":["../../../../../../package/formily/form-step/src/index.ts"],"sourcesContent":["import { defineComponent } from \"vue\";\nimport type { PropType } from \"vue\";\nimport { action, model, observable } from \"@formily/reactive\";\nimport { VoidField, Form } from \"@formily/core\";\nimport { observer } from \"@formily/reactive-vue\";\nimport { h, useField, useFieldSchema, RecursionField, Fragment } from \"@formily/vue\";\nimport { Schema, SchemaKey } from \"@formily/json-schema\";\nimport { ElSteps, ElStep } from \"element-plus\";\nimport { stylePrefix, composeExport } from \"../../__builtins__\";\n\nexport interface IFormStep {\n connect: (steps: SchemaStep[], field: VoidField) => void;\n current: number;\n allowNext: boolean;\n allowBack: boolean;\n setCurrent(key: number): void;\n submit: Form[\"submit\"];\n next(): void;\n back(): void;\n}\n\nexport interface IFormStepProps {\n formStep?: IFormStep;\n}\n\ntype SchemaStep = {\n name: SchemaKey;\n props: any;\n schema: Schema;\n};\n\ntype FormStepEnv = {\n form: Form;\n field: VoidField;\n steps: SchemaStep[];\n};\n\nconst parseSteps = (schema: Schema) => {\n const steps: SchemaStep[] = [];\n schema.mapProperties((schema, name) => {\n if (schema[\"x-component\"]?.indexOf(\"StepPane\") > -1) {\n steps.push({\n name,\n props: schema[\"x-component-props\"],\n schema\n });\n }\n });\n return steps;\n};\n\nconst createFormStep = (defaultCurrent = 0): IFormStep => {\n // @ts-ignore\n const env: FormStepEnv = observable({\n form: null,\n field: null,\n steps: []\n });\n\n const setDisplay = action?.bound?.((target: number) => {\n const currentStep = env.steps[target];\n env.steps.forEach(({ name }) => {\n env.form.query(`${env.field.address}.${name}`).take((field) => {\n if (name === currentStep.name) {\n field.setDisplay(\"visible\");\n } else {\n field.setDisplay(\"hidden\");\n }\n });\n });\n });\n\n const next = action?.bound?.(() => {\n if (formStep.allowNext) {\n setDisplay && setDisplay(formStep.current + 1);\n formStep.setCurrent(formStep.current + 1);\n }\n });\n\n const back = action?.bound?.(() => {\n if (formStep.allowBack) {\n setDisplay && setDisplay(formStep.current - 1);\n formStep.setCurrent(formStep.current - 1);\n }\n });\n\n const formStep: IFormStep = model({\n connect(steps, field) {\n env.steps = steps;\n env.form = field?.form;\n env.field = field;\n },\n current: defaultCurrent,\n setCurrent(key: number) {\n formStep.current = key;\n },\n get allowNext() {\n return formStep.current < env.steps.length - 1;\n },\n get allowBack() {\n return formStep.current > 0;\n },\n async next() {\n try {\n await env.form.validate();\n next && next();\n } catch {}\n },\n async back() {\n back && back();\n },\n async submit(onSubmit) {\n return env.form?.submit?.(onSubmit);\n }\n });\n return formStep;\n};\n\nconst FormStepInner = observer(\n defineComponent({\n name: \"FFormStep\",\n props: {\n formStep: {\n type: Object as PropType<IFormStep>,\n default() {\n return {\n current: 0\n };\n }\n }\n },\n setup(props: any, { attrs }) {\n const field = useField<VoidField>().value;\n const prefixCls = `${stylePrefix}-form-step`;\n const fieldSchemaRef = useFieldSchema();\n\n const steps = parseSteps(fieldSchemaRef.value);\n\n props.formStep.connect?.(steps, field);\n\n return () => {\n const current = props.active || props.formStep?.current || 0;\n\n const renderSteps = (\n steps: SchemaStep[],\n callback: (step: SchemaStep, key: number) => any\n ) => {\n return steps.map(callback);\n };\n\n return h(\n \"div\",\n {\n class: [prefixCls]\n },\n {\n default: () => [\n h(\n ElSteps,\n {\n ...attrs,\n active: current,\n style: [{ marginBottom: \"10px\" }, attrs.style]\n },\n {\n default: () =>\n renderSteps(steps, ({ props }, key) => {\n return h(ElStep, { props, key }, {});\n })\n }\n ),\n\n renderSteps(steps, ({ name, schema }, key) => {\n if (key !== current) return;\n return h(RecursionField, { props: { name, schema }, key }, {});\n })\n ]\n }\n );\n };\n }\n })\n);\n\nconst StepPane = defineComponent({\n name: \"FFormStepPane\",\n inheritAttrs: false,\n setup(_props, { slots }) {\n return () => h(Fragment, {}, slots);\n }\n});\n\nexport const FormStep = composeExport(FormStepInner, {\n StepPane,\n createFormStep\n});\n\nexport default FormStep;\n"],"names":["schema","_a","_b","steps","props"],"mappings":"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"}