UNPKG

tav-ui

Version:
1 lines 9.09 kB
{"version":3,"file":"useAdvanced2.mjs","sources":["../../../../../../../../packages/components/form/src/hooks/useAdvanced.ts"],"sourcesContent":["import { computed, unref, watch } from 'vue'\nimport { useDebounceFn } from '@vueuse/core'\nimport { useBreakpoint } from '@tav-ui/hooks/event/useBreakpoint'\nimport { isBoolean, isFunction, isNumber, isObject } from '@tav-ui/utils/is'\nimport type { ComputedRef, Ref } from 'vue'\nimport type { FormEmitType, FormProps, FormSchema } from '../types/form'\nimport type { AdvanceState } from '../types/hooks'\nimport type { ColEx } from '../types/index'\n\nconst BASIC_COL_LEN = 24\n\ntype Recordable<T = any> = Record<string, T>\ninterface UseAdvancedContext {\n advanceState: AdvanceState\n emit: FormEmitType\n getProps: ComputedRef<FormProps>\n getSchema: ComputedRef<FormSchema[]>\n formModel: Recordable\n defaultValueRef: Ref<Recordable>\n}\n\nexport default function ({\n advanceState,\n emit,\n getProps,\n getSchema,\n formModel,\n defaultValueRef,\n}: UseAdvancedContext) {\n const { realWidthRef, screenEnum, screenRef } = useBreakpoint()\n\n const getEmptySpan = computed((): number => {\n if (!advanceState.isAdvanced) return 0\n\n // For some special cases, you need to manually specify additional blank lines\n const emptySpan = unref(getProps).emptySpan || 0\n\n if (isNumber(emptySpan)) return emptySpan\n\n if (isObject(emptySpan)) {\n const { span = 0 } = emptySpan\n const screen = unref(screenRef) as string\n\n const screenSpan = (emptySpan as any)[screen.toLowerCase()]\n return screenSpan || span || 0\n }\n return 0\n })\n\n const debounceUpdateAdvanced = useDebounceFn(updateAdvanced, 30)\n\n watch(\n [() => unref(getSchema), () => advanceState.isAdvanced, () => unref(realWidthRef)],\n () => {\n const { showAdvancedButton } = unref(getProps)\n if (showAdvancedButton) debounceUpdateAdvanced()\n },\n { immediate: true }\n )\n\n function getAdvanced(itemCol: Partial<ColEx>, itemColSum = 0, isLastAction = false) {\n const width = unref(realWidthRef)\n\n const mdWidth =\n parseInt(itemCol.md as string) ||\n parseInt(itemCol.xs as string) ||\n parseInt(itemCol.sm as string) ||\n (itemCol.span as number) ||\n BASIC_COL_LEN\n\n const lgWidth = parseInt(itemCol.lg as string) || mdWidth\n const xlWidth = parseInt(itemCol.xl as string) || lgWidth\n const xxlWidth = parseInt(itemCol.xxl as string) || xlWidth\n if (width <= screenEnum.LG) itemColSum += mdWidth\n else if (width < screenEnum.XL) itemColSum += lgWidth\n else if (width < screenEnum.XXL) itemColSum += xlWidth\n else itemColSum += xxlWidth\n\n if (isLastAction) {\n advanceState.hideAdvanceBtn = false\n if (itemColSum <= BASIC_COL_LEN * 2) {\n // When less than or equal to 2 lines, the collapse and expand buttons are not displayed\n advanceState.hideAdvanceBtn = true\n advanceState.isAdvanced = true\n } else if (\n itemColSum > BASIC_COL_LEN * 2 &&\n itemColSum <= BASIC_COL_LEN * (unref(getProps).autoAdvancedLine || 3)\n ) {\n advanceState.hideAdvanceBtn = false\n\n // More than 3 lines collapsed by default\n } else if (!advanceState.isLoad) {\n advanceState.isLoad = true\n advanceState.isAdvanced = !advanceState.isAdvanced\n }\n return { isAdvanced: advanceState.isAdvanced, itemColSum }\n }\n if (itemColSum > BASIC_COL_LEN * (unref(getProps).alwaysShowLines || 1)) {\n return { isAdvanced: advanceState.isAdvanced, itemColSum }\n } else {\n // The first line is always displayed\n return { isAdvanced: true, itemColSum }\n }\n }\n\n function updateAdvanced() {\n let itemColSum = 0\n let realItemColSum = 0\n const { baseColProps = {} } = unref(getProps)\n\n for (const schema of unref(getSchema)) {\n const { show, colProps } = schema\n let isShow = true\n\n if (isBoolean(show)) isShow = show\n\n if (isFunction(show)) {\n isShow = show({\n schema,\n model: formModel,\n field: schema.field,\n values: {\n ...unref(defaultValueRef),\n ...formModel,\n },\n })\n }\n\n if (isShow && (colProps || baseColProps)) {\n const { itemColSum: sum, isAdvanced } = getAdvanced(\n { ...baseColProps, ...colProps },\n itemColSum\n )\n\n itemColSum = sum || 0\n if (isAdvanced) realItemColSum = itemColSum\n\n schema.isAdvanced = isAdvanced\n }\n }\n\n advanceState.actionSpan = (realItemColSum % BASIC_COL_LEN) + unref(getEmptySpan)\n\n getAdvanced(unref(getProps).actionColOptions || { span: BASIC_COL_LEN }, itemColSum, true)\n\n emit('advanced-change')\n }\n\n function handleToggleAdvanced() {\n advanceState.isAdvanced = !advanceState.isAdvanced\n }\n\n return { handleToggleAdvanced }\n}\n"],"names":[],"mappings":"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"}