UNPKG

tdesign-vue-next

Version:
1 lines 2.8 kB
{"version":3,"file":"useReadonly.mjs","sources":["../../../components/hooks/useReadonly.ts"],"sourcesContent":["import { Ref, inject, computed, getCurrentInstance } from 'vue';\nimport { isBoolean } from 'lodash-es';\nimport { TdFormProps } from '../form/type';\n\nexport interface FormReadonlyProvider {\n readonly: Ref<TdFormProps['readonly']>;\n}\n\nexport interface ReadonlyContext {\n beforeReadonly?: Ref<boolean>;\n afterReadonly?: Ref<boolean>;\n}\n\n/**\n * 用于实现组件全局只读状态的hook\n * 优先级:(beforeReadonly) > Component.readonly > ComponentGroup.readonly(afterReadonly) > Form.readonly\n * @returns\n */\nexport function useReadonly(context?: ReadonlyContext) {\n const currentInstance = getCurrentInstance();\n const componentReadonly = computed(() => currentInstance.props.readonly as boolean);\n\n const formReadonly = inject<FormReadonlyProvider>('formReadonly', Object.create(null));\n\n return computed(() => {\n if (isBoolean(context?.beforeReadonly?.value)) return context.beforeReadonly.value;\n // Component\n if (isBoolean(componentReadonly?.value)) return componentReadonly.value;\n // ComponentGroup\n if (isBoolean(context?.afterReadonly?.value)) return context.afterReadonly.value;\n // Form\n if (isBoolean(formReadonly.readonly?.value)) return formReadonly.readonly.value;\n\n return false;\n });\n}\n"],"names":["useReadonly","context","currentInstance","getCurrentInstance","componentReadonly","computed","props","readonly","formReadonly","inject","Object","create","_context$beforeReadon","_context$afterReadonl","_formReadonly$readonl","isBoolean","beforeReadonly","value","afterReadonly"],"mappings":";;;;;;;;;AAkBO,SAASA,YAAYC,OAA2B,EAAA;AACrD,EAAA,IAAMC,kBAAkBC,kBAAmB,EAAA,CAAA;EAC3C,IAAMC,iBAAoB,GAAAC,QAAA,CAAS,YAAA;AAAA,IAAA,OAAMH,eAAA,CAAgBI,MAAMC,QAAmB,CAAA;GAAA,CAAA,CAAA;AAElF,EAAA,IAAMC,eAAeC,MAA6B,CAAA,cAAA,iBAAuBC,MAAA,CAAAC,MAAA,CAAO,IAAI,CAAC,CAAA,CAAA;EAErF,OAAON,SAAS,YAAM;AAAA,IAAA,IAAAO,qBAAA,EAAAC,qBAAA,EAAAC,qBAAA,CAAA;IAChB,IAAAC,SAAA,CAAUd,OAAS,KAATA,IAAAA,IAAAA,OAAS,gBAAAW,qBAAA,GAATX,OAAS,CAAAe,cAAA,MAAA,IAAA,IAAAJ,qBAAA,KAATA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,qBAAA,CAAyBK,KAAK,CAAA,EAAG,OAAOhB,QAAQe,cAAe,CAAAC,KAAA,CAAA;AAEzE,IAAA,IAAAF,SAAA,CAAUX,8BAAAA,sBAAAA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,kBAAmBa,KAAK,CAAA,EAAG,OAAOb,iBAAkB,CAAAa,KAAA,CAAA;IAE9D,IAAAF,SAAA,CAAUd,OAAS,KAATA,IAAAA,IAAAA,OAAS,gBAAAY,qBAAA,GAATZ,OAAS,CAAAiB,aAAA,MAAA,IAAA,IAAAL,qBAAA,KAATA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,qBAAA,CAAwBI,KAAK,CAAA,EAAG,OAAOhB,QAAQiB,aAAc,CAAAD,KAAA,CAAA;IAEvE,IAAAF,SAAA,EAAAD,qBAAA,GAAUN,YAAa,CAAAD,QAAA,cAAAO,qBAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAbA,qBAAA,CAAuBG,KAAK,CAAA,EAAG,OAAOT,aAAaD,QAAS,CAAAU,KAAA,CAAA;AAEnE,IAAA,OAAA,KAAA,CAAA;AACT,GAAC,CAAA,CAAA;AACH;;;;"}