index.ts 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. import { computed, ref, unref } from 'vue'
  2. // import { formContextKey, formItemContextKey } from '@kankan-components/tokens'
  3. import { buildProp } from '@kankan-components/utils'
  4. import { componentSizes } from '@kankan-components/constants'
  5. import { useProp } from '../use-prop'
  6. import { useGlobalConfig } from '../use-global-config'
  7. import type { ComponentSize } from '@kankan-components/constants'
  8. import type { MaybeRef } from '@vueuse/core'
  9. export const useSizeProp = buildProp({
  10. type: String,
  11. values: componentSizes,
  12. required: false,
  13. } as const)
  14. export const useSize = (
  15. fallback?: MaybeRef<ComponentSize | undefined>,
  16. ignore: Partial<Record<'prop' | 'form' | 'formItem' | 'global', boolean>> = {}
  17. ) => {
  18. const emptyRef = ref(undefined)
  19. const size = ignore.prop ? emptyRef : useProp<ComponentSize>('size')
  20. const globalConfig = ignore.global ? emptyRef : useGlobalConfig('size')
  21. // const form = ignore.form
  22. // ? { size: undefined }
  23. // : inject(formContextKey, undefined)
  24. // const formItem = ignore.formItem
  25. // ? { size: undefined }
  26. // : inject(formItemContextKey, undefined)
  27. return computed(
  28. (): ComponentSize =>
  29. size.value ||
  30. unref(fallback) ||
  31. // formItem?.size ||
  32. // form?.size ||
  33. globalConfig.value ||
  34. ''
  35. )
  36. }
  37. export const useDisabled = (fallback?: MaybeRef<boolean | undefined>) => {
  38. const disabled = useProp<boolean>('disabled')
  39. // const form = inject(formContextKey, undefined)
  40. return computed(() => disabled.value || unref(fallback) || false)
  41. }