1234567891011121314151617181920212223242526272829303132333435 |
- import type { Ref } from 'vue';
- import type { FormProps, FormSchema } from '../types/form';
- import { computed, unref } from 'vue';
- import { isNumber } from '/@/utils/is';
- export function useItemLabelWidth(schemaItemRef: Ref<FormSchema>, propsRef: Ref<FormProps>) {
- return computed(() => {
- const schemaItem = unref(schemaItemRef);
- const { labelCol = {}, wrapperCol = {} } = schemaItem.itemProps || {};
- const { labelWidth, disabledLabelWidth } = schemaItem;
- const {
- labelWidth: globalLabelWidth,
- labelCol: globalLabelCol,
- wrapperCol: globWrapperCol,
- } = unref(propsRef);
- // If labelWidth is set globally, all items setting
- if ((!globalLabelWidth && !labelWidth && !globalLabelCol) || disabledLabelWidth) {
- return { labelCol, wrapperCol };
- }
- let width = labelWidth || globalLabelWidth;
- const col = { ...globalLabelCol, ...labelCol };
- const wrapCol = { ...globWrapperCol, ...wrapperCol };
- if (width) {
- width = isNumber(width) ? `${width}px` : width;
- }
- return {
- labelCol: { style: { width }, ...col },
- wrapperCol: { style: { width: `calc(100% - ${width})` }, ...wrapCol },
- };
- });
- }
|