hongluan-ui
Version:
Hongluan Component Library for Vue 3
1 lines • 3.36 kB
Source Map (JSON)
{"version":3,"file":"index.mjs","sources":["../../../../../packages/hooks/use-consistent-prop/index.ts"],"sourcesContent":["import { computed, getCurrentInstance, inject } from 'vue'\nimport { formItemContextKey, formContextKey } from '@hongluan-ui/tokens'\nimport { useGlobalConfig } from '../use-global-config'\n\nimport type { FormContext, FormItemContext } from '@hongluan-ui/tokens'\nimport type { ComponentSize, ComponentType } from '@hongluan-ui/constants'\n\nexport interface IConsistentProp {\n size?: ComponentSize\n disabled?: boolean\n type?: ComponentType\n fill?: boolean\n}\n/**\n * Searching order:\n * 1) component self prop value;\n * 2) Group component prop value;\n * 3) FormItem/Form component prop value;\n * 4) ConfigProvider props\n * @returns \\{ size, disabled, type, fill \\}\n */\nfunction useConsistentProp() {\n const { proxy } = getCurrentInstance()!\n\n const $props = proxy!.$props as IConsistentProp\n const $parentProps = proxy!.$parent!.$props as IConsistentProp\n const $parentOpts = proxy!.$parent!.$options\n\n const formItem = inject(formItemContextKey, {} as FormItemContext)\n const form = inject(formContextKey, {} as FormContext)\n\n const size = computed<ComponentSize>(() => {\n const configProviderSize = useGlobalConfig('size')\n return $props.size\n || $parentOpts.name === 'Group' && $parentProps.size\n || formItem?.size\n || configProviderSize.value\n })\n\n const disabled = computed(() => {\n return $props.disabled\n || $parentOpts.name === 'Group' && $parentProps.disabled\n || form?.disabled\n || false\n })\n\n const type = computed(() => {\n return $props.type\n || $parentOpts.name === 'Group' && $parentProps.type\n })\n\n const fill = computed(() => {\n return $props.fill\n || form?.fill\n || $parentOpts.name === 'Group' && $parentProps.fill\n || false\n })\n\n return {\n size,\n disabled,\n type,\n fill,\n }\n}\n\nexport { useConsistentProp }\n"],"names":[],"mappings":";;;;;AAGA,SAAS,iBAAiB,GAAG;AAC7B,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,kBAAkB,EAAE,CAAC;AACzC,EAAE,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;AAC9B,EAAE,MAAM,YAAY,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;AAC5C,EAAE,MAAM,WAAW,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC;AAC7C,EAAE,MAAM,QAAQ,GAAG,MAAM,CAAC,kBAAkB,EAAE,EAAE,CAAC,CAAC;AAClD,EAAE,MAAM,IAAI,GAAG,MAAM,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;AAC1C,EAAE,MAAM,IAAI,GAAG,QAAQ,CAAC,MAAM;AAC9B,IAAI,MAAM,kBAAkB,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;AACvD,IAAI,OAAO,MAAM,CAAC,IAAI,IAAI,WAAW,CAAC,IAAI,KAAK,OAAO,IAAI,YAAY,CAAC,IAAI,KAAK,QAAQ,IAAI,IAAI,GAAG,KAAK,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,kBAAkB,CAAC,KAAK,CAAC;AACvJ,GAAG,CAAC,CAAC;AACL,EAAE,MAAM,QAAQ,GAAG,QAAQ,CAAC,MAAM;AAClC,IAAI,OAAO,MAAM,CAAC,QAAQ,IAAI,WAAW,CAAC,IAAI,KAAK,OAAO,IAAI,YAAY,CAAC,QAAQ,KAAK,IAAI,IAAI,IAAI,GAAG,KAAK,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,CAAC;AACxI,GAAG,CAAC,CAAC;AACL,EAAE,MAAM,IAAI,GAAG,QAAQ,CAAC,MAAM;AAC9B,IAAI,OAAO,MAAM,CAAC,IAAI,IAAI,WAAW,CAAC,IAAI,KAAK,OAAO,IAAI,YAAY,CAAC,IAAI,CAAC;AAC5E,GAAG,CAAC,CAAC;AACL,EAAE,MAAM,IAAI,GAAG,QAAQ,CAAC,MAAM;AAC9B,IAAI,OAAO,MAAM,CAAC,IAAI,KAAK,IAAI,IAAI,IAAI,GAAG,KAAK,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,WAAW,CAAC,IAAI,KAAK,OAAO,IAAI,YAAY,CAAC,IAAI,IAAI,KAAK,CAAC;AAC5H,GAAG,CAAC,CAAC;AACL,EAAE,OAAO;AACT,IAAI,IAAI;AACR,IAAI,QAAQ;AACZ,IAAI,IAAI;AACR,IAAI,IAAI;AACR,GAAG,CAAC;AACJ;;;;"}