UNPKG

ivue-material-plus

Version:

A high quality UI components Library with Vue.js

1 lines 3.93 kB
{"version":3,"file":"utils.mjs","sources":["../../../../../src/components/ivue-form/utils.ts"],"sourcesContent":["import { computed, ref } from 'vue';\r\n\r\nimport { ensureArray } from '../../utils/arrays';\r\nimport { debugWarn } from '../../utils/error';\r\n\r\n// types\r\nimport type {\r\n FormItemProp,\r\n Arrayable,\r\n FormItemContext,\r\n} from './types/form-item';\r\n\r\n// 过滤字段\r\nexport const filterFields = (\r\n fields: FormItemContext[],\r\n props: Arrayable<FormItemProp>\r\n) => {\r\n // 如果 value 不是数组, 那么强制转为数组\r\n const normalized = ensureArray(props);\r\n\r\n return normalized.length > 0\r\n ? fields.filter((field) => field.prop && normalized.includes(field.prop))\r\n : fields;\r\n};\r\n\r\n// 表单宽度\r\nexport function useFormLabelWidth() {\r\n // 标签宽度数组\r\n const potentialLabelWidthArr = ref<number[]>([]);\r\n\r\n // 是否使用 auto 宽度\r\n const autoLabelWidth = computed(() => {\r\n if (!potentialLabelWidthArr.value.length) {\r\n return '0';\r\n }\r\n\r\n // 取最大的表单宽度\r\n const max = Math.max(...potentialLabelWidthArr.value);\r\n\r\n return max ? `${max}px` : '';\r\n });\r\n\r\n // 获取当前标签宽度\r\n const getLabelWidthIndex = (width: number) => {\r\n const index = potentialLabelWidthArr.value.indexOf(width);\r\n\r\n // 没有宽度\r\n if (index === -1 && autoLabelWidth.value === '0') {\r\n debugWarn('ivue-form', `unexpected width ${width}`);\r\n }\r\n\r\n return index;\r\n };\r\n\r\n // 注册标签宽度\r\n const registerLabelWidth = (value: number, oldValue: number) => {\r\n // 改变了标签宽度\r\n if (value && oldValue) {\r\n // 获取当前标签宽度\r\n const index = getLabelWidthIndex(oldValue);\r\n potentialLabelWidthArr.value.splice(index, 1, value);\r\n }\r\n // 有当前标签宽度\r\n else if (value) {\r\n potentialLabelWidthArr.value.push(value);\r\n }\r\n };\r\n\r\n // 销毁标签宽度\r\n const deregisterLabelWidth = (value: number) => {\r\n const index = getLabelWidthIndex(value);\r\n\r\n if (index > -1) {\r\n potentialLabelWidthArr.value.splice(index, 1);\r\n }\r\n };\r\n\r\n return {\r\n autoLabelWidth,\r\n registerLabelWidth,\r\n deregisterLabelWidth,\r\n };\r\n}\r\n"],"names":[],"mappings":";;;;AAaa,MAAA,YAAA,GAAe,CAC1B,MAAA,EACA,KACG,KAAA;AAEH,EAAM,MAAA,UAAA,GAAa,YAAY,KAAK,CAAA,CAAA;AAEpC,EAAA,OAAO,UAAW,CAAA,MAAA,GAAS,CACvB,GAAA,MAAA,CAAO,OAAO,CAAC,KAAA,KAAU,KAAM,CAAA,IAAA,IAAQ,UAAW,CAAA,QAAA,CAAS,KAAM,CAAA,IAAI,CAAC,CACtE,GAAA,MAAA,CAAA;AACN,EAAA;AAGO,SAAS,iBAAoB,GAAA;AAElC,EAAM,MAAA,sBAAA,GAAyB,GAAc,CAAA,EAAE,CAAA,CAAA;AAG/C,EAAM,MAAA,cAAA,GAAiB,SAAS,MAAM;AACpC,IAAI,IAAA,CAAC,sBAAuB,CAAA,KAAA,CAAM,MAAQ,EAAA;AACxC,MAAO,OAAA,GAAA,CAAA;AAAA,KACT;AAGA,IAAA,MAAM,GAAM,GAAA,IAAA,CAAK,GAAI,CAAA,GAAG,uBAAuB,KAAK,CAAA,CAAA;AAEpD,IAAO,OAAA,GAAA,GAAM,GAAG,GAAU,CAAA,EAAA,CAAA,GAAA,EAAA,CAAA;AAAA,GAC3B,CAAA,CAAA;AAGD,EAAM,MAAA,kBAAA,GAAqB,CAAC,KAAkB,KAAA;AAC5C,IAAA,MAAM,KAAQ,GAAA,sBAAA,CAAuB,KAAM,CAAA,OAAA,CAAQ,KAAK,CAAA,CAAA;AAGxD,IAAA,IAAI,KAAU,KAAA,CAAA,CAAA,IAAM,cAAe,CAAA,KAAA,KAAU,GAAK,EAAA;AAChD,MAAU,SAAA,CAAA,WAAA,EAAa,oBAAoB,KAAO,CAAA,CAAA,CAAA,CAAA;AAAA,KACpD;AAEA,IAAO,OAAA,KAAA,CAAA;AAAA,GACT,CAAA;AAGA,EAAM,MAAA,kBAAA,GAAqB,CAAC,KAAA,EAAe,QAAqB,KAAA;AAE9D,IAAA,IAAI,SAAS,QAAU,EAAA;AAErB,MAAM,MAAA,KAAA,GAAQ,mBAAmB,QAAQ,CAAA,CAAA;AACzC,MAAA,sBAAA,CAAuB,KAAM,CAAA,MAAA,CAAO,KAAO,EAAA,CAAA,EAAG,KAAK,CAAA,CAAA;AAAA,eAG5C,KAAO,EAAA;AACd,MAAuB,sBAAA,CAAA,KAAA,CAAM,KAAK,KAAK,CAAA,CAAA;AAAA,KACzC;AAAA,GACF,CAAA;AAGA,EAAM,MAAA,oBAAA,GAAuB,CAAC,KAAkB,KAAA;AAC9C,IAAM,MAAA,KAAA,GAAQ,mBAAmB,KAAK,CAAA,CAAA;AAEtC,IAAA,IAAI,QAAQ,CAAI,CAAA,EAAA;AACd,MAAuB,sBAAA,CAAA,KAAA,CAAM,MAAO,CAAA,KAAA,EAAO,CAAC,CAAA,CAAA;AAAA,KAC9C;AAAA,GACF,CAAA;AAEA,EAAO,OAAA;AAAA,IACL,cAAA;AAAA,IACA,kBAAA;AAAA,IACA,oBAAA;AAAA,GACF,CAAA;AACF;;;;"}