vue-admin-core
Version:
A Component Library for Vue 3
1 lines • 9.91 kB
Source Map (JSON)
{"version":3,"file":"index.mjs","sources":["../../../../../../package/formily/form-tab/src/index.tsx"],"sourcesContent":["import { defineComponent, reactive, computed } from \"vue\";\nimport type { PropType } from \"vue\";\nimport { observer } from \"@formily/reactive-vue\";\nimport { model } from \"@formily/reactive\";\nimport { h, useField, useFieldSchema, RecursionField, Fragment } from \"@formily/vue\";\nimport { Schema, SchemaKey } from \"@formily/json-schema\";\nimport { ElTabs, ElTabPane, ElBadge } from \"element-plus\";\nimport { stylePrefix, composeExport } from \"../../__builtins__\";\n\nexport interface IFormTab {\n activeKey: string;\n setActiveKey(key: string): void;\n}\n\nexport interface IFormTabProps {\n formTab?: IFormTab;\n}\n\nexport interface IFormTabPaneProps {\n key: string | number;\n}\n\ntype Tabs = { name: SchemaKey; props: any; schema: Schema }[];\n\nElTabPane.props.label = {\n default: \"\",\n type: Object\n};\n\nconst useTabs = () => {\n const tabsField = useField();\n const schema = useFieldSchema();\n const tabs: Tabs = reactive([]);\n schema.value.mapProperties((schema, name) => {\n const field = tabsField.value.query(tabsField.value.address.concat(name)).take();\n if (field?.display === \"none\" || field?.display === \"hidden\") return;\n\n if (schema[\"x-component\"]?.indexOf(\"TabPane\") > -1) {\n tabs.push({\n name,\n props: {\n name: schema?.[\"x-component-props\"]?.name || name,\n ...schema?.[\"x-component-props\"]\n },\n schema\n });\n }\n });\n return tabs;\n};\n\nconst createFormTab = (defaultActiveKey?: string) => {\n const formTab = model({\n activeKey: defaultActiveKey,\n setActiveKey(key: string) {\n formTab.activeKey = key;\n }\n });\n return formTab;\n};\n\nconst FormTab = observer(\n defineComponent({\n inheritAttrs: false,\n props: {\n formTab: { type: Object as PropType<IFormTab> },\n value: {\n type: String\n }\n },\n emits: [\"input\"],\n setup(props, { attrs, emit }: any) {\n const field = useField();\n const prefixCls = `${stylePrefix}-form-tab`;\n const formTabRef = computed(() => props.formTab ?? createFormTab());\n\n const takeActiveKey = (tabs: Tabs) => {\n return props?.value || formTabRef.value?.activeKey || tabs?.[0]?.name;\n };\n const badgedHeader = (key: SchemaKey, props: any) => {\n const errors = field.value.form.queryFeedbacks({\n type: \"error\",\n address: `${field.value.address.concat(key)}.*`\n });\n\n if (errors.length) {\n return h(\n ElBadge,\n {\n class: [`${prefixCls}-errors-badge`],\n value: errors.length\n },\n { default: () => props.label }\n );\n }\n return props.label;\n };\n\n return () => {\n const tabs = useTabs();\n const activeKey = takeActiveKey(tabs);\n\n return h(\n ElTabs,\n {\n ...attrs,\n class: [prefixCls],\n modelValue: activeKey,\n onTabChange: (key: string) => {\n if (typeof key !== \"string\") return;\n emit(\"input\", key);\n formTabRef.value.setActiveKey?.(key);\n }\n },\n {\n default: () =>\n tabs.map(({ props, schema, name }, key) => {\n const IElTabPane = h(\n ElTabPane,\n {\n key,\n ...props\n },\n {\n default: () => h(RecursionField, { schema, name }, {})\n }\n );\n IElTabPane.props.label = h(\n \"div\",\n {},\n { default: () => [badgedHeader(name, props)] }\n );\n return IElTabPane;\n })\n }\n );\n };\n }\n })\n);\n\nconst FormTabPane = defineComponent<IFormTabPaneProps>({\n name: \"FFormTabPane\",\n inheritAttrs: false,\n setup(_props, { slots }) {\n return () => h(Fragment, {}, slots);\n }\n});\n\nexport const composeFormTab = composeExport(FormTab, {\n TabPane: FormTabPane,\n createFormTab\n});\n\nexport { composeFormTab as FormTab };\nexport default composeFormTab;\n"],"names":["ElTabPane","props","label","default","type","Object","useTabs","tabsField","useField","schema","useFieldSchema","tabs","reactive","value","mapProperties","name","field","query","address","concat","take","display","indexOf","push","createFormTab","defaultActiveKey","formTab","model","activeKey","setActiveKey","key","FormTab","observer","defineComponent","inheritAttrs","String","emits","setup","attrs","emit","prefixCls","stylePrefix","formTabRef","computed","takeActiveKey","badgedHeader","errors","form","queryFeedbacks","length","h","ElBadge","class","ElTabs","modelValue","onTabChange","map","IElTabPane","RecursionField","FormTabPane","_props","slots","Fragment","composeFormTab","composeExport","TabPane"],"mappings":"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"}