UNPKG

vue-admin-core

Version:
1 lines 13.2 kB
{"version":3,"file":"index.mjs","sources":["../../../../../../package/formily/editable/src/index.ts"],"sourcesContent":["import { defineComponent, ref, onBeforeUnmount, Ref, h } from \"vue\";\nimport { observer } from \"@formily/reactive-vue\";\nimport { reaction } from \"@formily/reactive\";\nimport { isVoidField, Field } from \"@formily/core\";\nimport { useField } from \"@formily/vue\";\nimport { ElPopover } from \"element-plus\";\nimport { Edit, ChatDotRound, Close } from \"@element-plus/icons-vue\";\n\nimport { stylePrefix } from \"../../__builtins__/configs\";\nimport { FormBaseItem, FormItemProps } from \"../../form-item\";\nimport { composeExport } from \"../../__builtins__/shared\";\n\nexport type EditableProps = FormItemProps;\nexport type EditablePopoverProps = typeof ElPopover;\n\nconst getParentPattern = (fieldRef: Ref<Field>) => {\n const field = fieldRef.value;\n return field?.parent?.pattern || field?.form?.pattern;\n};\n\nconst getFormItemProps = (fieldRef: Ref<Field>): FormItemProps => {\n const field = fieldRef.value;\n\n if (isVoidField(field)) return {};\n if (!field) return {};\n const takeMessage = () => {\n if (field.selfErrors.length) return field.selfErrors[0];\n if (field.selfWarnings.length) return field.selfWarnings[0];\n if (field.selfSuccesses.length) return field.selfSuccesses[0];\n };\n\n return {\n feedbackStatus: field.validateStatus === \"validating\" ? \"pending\" : field.validateStatus,\n feedbackText: takeMessage(),\n extra: field.description\n };\n};\n\nconst EditableInner = observer(\n defineComponent({\n name: \"FEditable\",\n setup(props, { attrs, slots }) {\n const fieldRef = useField<Field>();\n const innerRef = ref(document.body);\n\n const prefixCls = `${stylePrefix}-editable`;\n const setEditable = (payload: boolean) => {\n const pattern = getParentPattern(fieldRef);\n\n if (pattern !== \"editable\") return;\n fieldRef.value.setPattern(payload ? \"editable\" : \"readPretty\");\n };\n\n const dispose = reaction(\n () => {\n const pattern = getParentPattern(fieldRef);\n\n return pattern;\n },\n (pattern) => {\n if (pattern === \"editable\") {\n fieldRef.value.setPattern(\"readPretty\");\n }\n },\n {\n fireImmediately: true\n }\n );\n\n onBeforeUnmount(dispose);\n\n return () => {\n const field = fieldRef.value;\n const editable = field.pattern === \"editable\";\n const pattern = getParentPattern(fieldRef);\n const itemProps = getFormItemProps(fieldRef);\n\n const recover = () => {\n if (editable && !fieldRef.value?.errors?.length) {\n setEditable(false);\n }\n };\n\n const onClick = (e: MouseEvent) => {\n const target = e.target as HTMLElement;\n const close = innerRef.value.querySelector(`.${prefixCls}-close-btn`);\n\n if (target?.contains(close) || close?.contains(target)) {\n recover();\n } else if (!editable) {\n setTimeout(() => {\n setEditable(true);\n setTimeout(() => {\n innerRef.value.querySelector(\"input\")?.focus();\n });\n });\n }\n };\n\n const renderEditHelper = () => {\n if (editable) return null;\n\n return h(\n FormBaseItem,\n {\n hasIcon: true,\n ...attrs,\n ...itemProps\n },\n {\n default: () => {\n return h(\n pattern === \"editable\" ? Edit : ChatDotRound,\n {\n class: [`${prefixCls}-edit-btn`]\n },\n {}\n );\n }\n }\n );\n };\n\n const renderCloseHelper = () => {\n if (!editable) return null;\n return h(\n FormBaseItem,\n {\n hasIcon: true,\n ...attrs\n },\n {\n default: () => {\n return h(\n Close,\n {\n class: [`${prefixCls}-close-btn`]\n },\n {}\n );\n }\n }\n );\n };\n\n return h(\n \"div\",\n {\n class: prefixCls,\n ref: innerRef,\n onClick\n },\n h(\n \"div\",\n {\n class: `${prefixCls}-content`\n },\n [\n h(\n FormBaseItem,\n {\n ...attrs,\n ...itemProps\n },\n slots\n ),\n renderEditHelper(),\n renderCloseHelper()\n ]\n )\n );\n };\n }\n })\n);\n\nconst EditablePopover = observer(\n defineComponent({\n name: \"FEditablePopover\",\n setup(props, { attrs, slots }) {\n const fieldRef = useField<Field>();\n\n const prefixCls = `${stylePrefix}-editable`;\n\n const visible = ref(false);\n\n return () => {\n const field = fieldRef.value;\n const pattern = getParentPattern(fieldRef);\n return h(\n ElPopover as any,\n {\n ...attrs,\n class: [prefixCls].concat(attrs.class as string[]),\n title: attrs.title || field.title,\n value: visible.value,\n trigger: \"click\",\n onInput: (value: any) => {\n visible.value = value;\n }\n },\n {\n default: slots.default,\n reference: () =>\n h(\n \"div\",\n { class: prefixCls },\n h(\n FormBaseItem,\n { class: [`${prefixCls}-trigger`] },\n {\n default: () =>\n h(\n \"div\",\n {\n class: [`${prefixCls}-content`]\n },\n [\n h(\n \"span\",\n {\n class: [`${prefixCls}-preview`]\n },\n attrs.title || field.title\n ),\n h(\n pattern === \"editable\" ? Edit : ChatDotRound,\n {\n class: [`${prefixCls}-edit-btn`]\n },\n {}\n )\n ]\n )\n }\n )\n )\n }\n );\n };\n }\n })\n);\n\nexport const Editable = composeExport(EditableInner, {\n Popover: EditablePopover\n});\n\nexport default Editable;\n"],"names":[],"mappings":"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"}