UNPKG

tav-ui

Version:
109 lines (106 loc) 3.88 kB
import { computed, unref, watch } from 'vue'; import { useDebounceFn } from '@vueuse/core'; import { useBreakpoint } from '../../../../hooks/event/useBreakpoint2.mjs'; import { isNumber, isObject, isBoolean, isFunction } from '../../../../utils/is2.mjs'; const BASIC_COL_LEN = 24; function useAdvanced({ advanceState, emit, getProps, getSchema, formModel, defaultValueRef }) { const { realWidthRef, screenEnum, screenRef } = useBreakpoint(); const getEmptySpan = computed(() => { if (!advanceState.isAdvanced) return 0; const emptySpan = unref(getProps).emptySpan || 0; if (isNumber(emptySpan)) return emptySpan; if (isObject(emptySpan)) { const { span = 0 } = emptySpan; const screen = unref(screenRef); const screenSpan = emptySpan[screen.toLowerCase()]; return screenSpan || span || 0; } return 0; }); const debounceUpdateAdvanced = useDebounceFn(updateAdvanced, 30); watch([() => unref(getSchema), () => advanceState.isAdvanced, () => unref(realWidthRef)], () => { const { showAdvancedButton } = unref(getProps); if (showAdvancedButton) debounceUpdateAdvanced(); }, { immediate: true }); function getAdvanced(itemCol, itemColSum = 0, isLastAction = false) { const width = unref(realWidthRef); const mdWidth = parseInt(itemCol.md) || parseInt(itemCol.xs) || parseInt(itemCol.sm) || itemCol.span || BASIC_COL_LEN; const lgWidth = parseInt(itemCol.lg) || mdWidth; const xlWidth = parseInt(itemCol.xl) || lgWidth; const xxlWidth = parseInt(itemCol.xxl) || xlWidth; if (width <= screenEnum.LG) itemColSum += mdWidth; else if (width < screenEnum.XL) itemColSum += lgWidth; else if (width < screenEnum.XXL) itemColSum += xlWidth; else itemColSum += xxlWidth; if (isLastAction) { advanceState.hideAdvanceBtn = false; if (itemColSum <= BASIC_COL_LEN * 2) { advanceState.hideAdvanceBtn = true; advanceState.isAdvanced = true; } else if (itemColSum > BASIC_COL_LEN * 2 && itemColSum <= BASIC_COL_LEN * (unref(getProps).autoAdvancedLine || 3)) { advanceState.hideAdvanceBtn = false; } else if (!advanceState.isLoad) { advanceState.isLoad = true; advanceState.isAdvanced = !advanceState.isAdvanced; } return { isAdvanced: advanceState.isAdvanced, itemColSum }; } if (itemColSum > BASIC_COL_LEN * (unref(getProps).alwaysShowLines || 1)) { return { isAdvanced: advanceState.isAdvanced, itemColSum }; } else { return { isAdvanced: true, itemColSum }; } } function updateAdvanced() { let itemColSum = 0; let realItemColSum = 0; const { baseColProps = {} } = unref(getProps); for (const schema of unref(getSchema)) { const { show, colProps } = schema; let isShow = true; if (isBoolean(show)) isShow = show; if (isFunction(show)) { isShow = show({ schema, model: formModel, field: schema.field, values: { ...unref(defaultValueRef), ...formModel } }); } if (isShow && (colProps || baseColProps)) { const { itemColSum: sum, isAdvanced } = getAdvanced({ ...baseColProps, ...colProps }, itemColSum); itemColSum = sum || 0; if (isAdvanced) realItemColSum = itemColSum; schema.isAdvanced = isAdvanced; } } advanceState.actionSpan = realItemColSum % BASIC_COL_LEN + unref(getEmptySpan); getAdvanced(unref(getProps).actionColOptions || { span: BASIC_COL_LEN }, itemColSum, true); emit("advanced-change"); } function handleToggleAdvanced() { advanceState.isAdvanced = !advanceState.isAdvanced; } return { handleToggleAdvanced }; } export { useAdvanced as default }; //# sourceMappingURL=useAdvanced2.mjs.map