parent
							
								
									c9014d0338
								
							
						
					
					
						commit
						9379093a4f
					
				| 
						 | 
					@ -167,6 +167,23 @@ vxeUI.renderer.add('CellLink', {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
当启用了表单搜索时,可以在toolbarConfig中配置`search`为`true`来让表格在工具栏区域显示一个搜索表单控制按钮。表格的所有以`form-`开头的命名插槽都会被传递给搜索表单。
 | 
					当启用了表单搜索时,可以在toolbarConfig中配置`search`为`true`来让表格在工具栏区域显示一个搜索表单控制按钮。表格的所有以`form-`开头的命名插槽都会被传递给搜索表单。
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					### 定制分隔条
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					当你启用表单搜索时,在表单和表格之间会显示一个分隔条。这个分隔条使用了默认的组件背景色,并且横向贯穿整个Vben Vxe Table在视觉上融入了页面的默认背景中。如果你在Vben Vxe Table的外层包裹了一个不同背景色的容器(如将其放在一个Card内),默认的表单和表格之间的分隔条可能就显得格格不入了,下面的代码演示了如何定制这个分隔条。
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```ts
 | 
				
			||||||
 | 
					const [Grid] = useVbenVxeGrid({
 | 
				
			||||||
 | 
					  formOptions: {},
 | 
				
			||||||
 | 
					  gridOptions: {},
 | 
				
			||||||
 | 
					  // 完全移除分隔条
 | 
				
			||||||
 | 
					  separator: false,
 | 
				
			||||||
 | 
					  // 你也可以使用下面的代码来移除分隔条
 | 
				
			||||||
 | 
					  // separator: { show: false },
 | 
				
			||||||
 | 
					  // 或者使用下面的代码来改变分隔条的颜色
 | 
				
			||||||
 | 
					  // separator: { backgroundColor: 'rgba(100,100,0,0.5)' },
 | 
				
			||||||
 | 
					});
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
<DemoPreview dir="demos/vben-vxe-table/form" />
 | 
					<DemoPreview dir="demos/vben-vxe-table/form" />
 | 
				
			||||||
 | 
					
 | 
				
			||||||
## 单元格编辑
 | 
					## 单元格编辑
 | 
				
			||||||
| 
						 | 
					@ -231,15 +248,16 @@ useVbenVxeGrid 返回的第二个参数,是一个对象,包含了一些表
 | 
				
			||||||
 | 
					
 | 
				
			||||||
所有属性都可以传入 `useVbenVxeGrid` 的第一个参数中。
 | 
					所有属性都可以传入 `useVbenVxeGrid` 的第一个参数中。
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 属性名         | 描述                 | 类型                |
 | 
					| 属性名 | 描述 | 类型 | 版本要求 |
 | 
				
			||||||
| -------------- | -------------------- | ------------------- |
 | 
					| --- | --- | --- | --- |
 | 
				
			||||||
| tableTitle     | 表格标题             | `string`            |
 | 
					| tableTitle | 表格标题 | `string` | - |
 | 
				
			||||||
| tableTitleHelp | 表格标题帮助信息     | `string`            |
 | 
					| tableTitleHelp | 表格标题帮助信息 | `string` | - |
 | 
				
			||||||
| gridClass      | grid组件的class      | `string`            |
 | 
					| gridClass | grid组件的class | `string` | - |
 | 
				
			||||||
| gridOptions    | grid组件的参数       | `VxeTableGridProps` |
 | 
					| gridOptions | grid组件的参数 | `VxeTableGridProps` | - |
 | 
				
			||||||
| gridEvents     | grid组件的触发的事件 | `VxeGridListeners`  |
 | 
					| gridEvents | grid组件的触发的事件 | `VxeGridListeners` | - |
 | 
				
			||||||
| formOptions    | 表单参数             | `VbenFormProps`     |
 | 
					| formOptions | 表单参数 | `VbenFormProps` | - |
 | 
				
			||||||
| showSearchForm | 是否显示搜索表单     | `boolean`           |
 | 
					| showSearchForm | 是否显示搜索表单 | `boolean` | - |
 | 
				
			||||||
 | 
					| separator | 搜索表单与表格主体之间的分隔条 | `boolean\|SeparatorOptions` | >5.5.4 |
 | 
				
			||||||
 | 
					
 | 
				
			||||||
## Slots
 | 
					## Slots
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -31,6 +31,10 @@ export interface VxeTableGridOptions<T = any> extends VxeTableGridProps<T> {
 | 
				
			||||||
  toolbarConfig?: ToolbarConfigOptions;
 | 
					  toolbarConfig?: ToolbarConfigOptions;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					export interface SeparatorOptions {
 | 
				
			||||||
 | 
					  show?: boolean;
 | 
				
			||||||
 | 
					  backgroundColor?: string;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
export interface VxeGridProps {
 | 
					export interface VxeGridProps {
 | 
				
			||||||
  /**
 | 
					  /**
 | 
				
			||||||
   * 标题
 | 
					   * 标题
 | 
				
			||||||
| 
						 | 
					@ -64,6 +68,10 @@ export interface VxeGridProps {
 | 
				
			||||||
   * 显示搜索表单
 | 
					   * 显示搜索表单
 | 
				
			||||||
   */
 | 
					   */
 | 
				
			||||||
  showSearchForm?: boolean;
 | 
					  showSearchForm?: boolean;
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * 搜索表单与表格主体之间的分隔条
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  separator?: boolean | SeparatorOptions;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export type ExtendedVxeGridApi = VxeGridApi & {
 | 
					export type ExtendedVxeGridApi = VxeGridApi & {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -29,7 +29,13 @@ import { usePriorityValues } from '@vben/hooks';
 | 
				
			||||||
import { EmptyIcon } from '@vben/icons';
 | 
					import { EmptyIcon } from '@vben/icons';
 | 
				
			||||||
import { $t } from '@vben/locales';
 | 
					import { $t } from '@vben/locales';
 | 
				
			||||||
import { usePreferences } from '@vben/preferences';
 | 
					import { usePreferences } from '@vben/preferences';
 | 
				
			||||||
import { cloneDeep, cn, isEqual, mergeWithArrayOverride } from '@vben/utils';
 | 
					import {
 | 
				
			||||||
 | 
					  cloneDeep,
 | 
				
			||||||
 | 
					  cn,
 | 
				
			||||||
 | 
					  isBoolean,
 | 
				
			||||||
 | 
					  isEqual,
 | 
				
			||||||
 | 
					  mergeWithArrayOverride,
 | 
				
			||||||
 | 
					} from '@vben/utils';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import { VbenHelpTooltip, VbenLoading } from '@vben-core/shadcn-ui';
 | 
					import { VbenHelpTooltip, VbenLoading } from '@vben-core/shadcn-ui';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -67,10 +73,30 @@ const {
 | 
				
			||||||
  tableTitle,
 | 
					  tableTitle,
 | 
				
			||||||
  tableTitleHelp,
 | 
					  tableTitleHelp,
 | 
				
			||||||
  showSearchForm,
 | 
					  showSearchForm,
 | 
				
			||||||
 | 
					  separator,
 | 
				
			||||||
} = usePriorityValues(props, state);
 | 
					} = usePriorityValues(props, state);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const { isMobile } = usePreferences();
 | 
					const { isMobile } = usePreferences();
 | 
				
			||||||
 | 
					const isSeparator = computed(() => {
 | 
				
			||||||
 | 
					  if (
 | 
				
			||||||
 | 
					    !formOptions.value ||
 | 
				
			||||||
 | 
					    showSearchForm.value === false ||
 | 
				
			||||||
 | 
					    separator.value === false
 | 
				
			||||||
 | 
					  ) {
 | 
				
			||||||
 | 
					    return false;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					  if (separator.value === true || separator.value === undefined) {
 | 
				
			||||||
 | 
					    return true;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					  return separator.value.show !== false;
 | 
				
			||||||
 | 
					});
 | 
				
			||||||
 | 
					const separatorBg = computed(() => {
 | 
				
			||||||
 | 
					  return !separator.value ||
 | 
				
			||||||
 | 
					    isBoolean(separator.value) ||
 | 
				
			||||||
 | 
					    !separator.value.backgroundColor
 | 
				
			||||||
 | 
					    ? undefined
 | 
				
			||||||
 | 
					    : separator.value.backgroundColor;
 | 
				
			||||||
 | 
					});
 | 
				
			||||||
const slots: SetupContext['slots'] = useSlots();
 | 
					const slots: SetupContext['slots'] = useSlots();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const [Form, formApi] = useTableForm({
 | 
					const [Form, formApi] = useTableForm({
 | 
				
			||||||
| 
						 | 
					@ -375,7 +401,18 @@ onUnmounted(() => {
 | 
				
			||||||
        <div
 | 
					        <div
 | 
				
			||||||
          v-if="formOptions"
 | 
					          v-if="formOptions"
 | 
				
			||||||
          v-show="showSearchForm !== false"
 | 
					          v-show="showSearchForm !== false"
 | 
				
			||||||
          :class="cn('relative rounded py-3', isCompactForm ? 'pb-8' : 'pb-4')"
 | 
					          :class="
 | 
				
			||||||
 | 
					            cn(
 | 
				
			||||||
 | 
					              'relative rounded py-3',
 | 
				
			||||||
 | 
					              isCompactForm
 | 
				
			||||||
 | 
					                ? isSeparator
 | 
				
			||||||
 | 
					                  ? 'pb-8'
 | 
				
			||||||
 | 
					                  : 'pb-4'
 | 
				
			||||||
 | 
					                : isSeparator
 | 
				
			||||||
 | 
					                  ? 'pb-4'
 | 
				
			||||||
 | 
					                  : 'pb-0',
 | 
				
			||||||
 | 
					            )
 | 
				
			||||||
 | 
					          "
 | 
				
			||||||
        >
 | 
					        >
 | 
				
			||||||
          <slot name="form">
 | 
					          <slot name="form">
 | 
				
			||||||
            <Form>
 | 
					            <Form>
 | 
				
			||||||
| 
						 | 
					@ -404,6 +441,10 @@ onUnmounted(() => {
 | 
				
			||||||
            </Form>
 | 
					            </Form>
 | 
				
			||||||
          </slot>
 | 
					          </slot>
 | 
				
			||||||
          <div
 | 
					          <div
 | 
				
			||||||
 | 
					            v-if="isSeparator"
 | 
				
			||||||
 | 
					            :style="{
 | 
				
			||||||
 | 
					              ...(separatorBg ? { backgroundColor: separatorBg } : undefined),
 | 
				
			||||||
 | 
					            }"
 | 
				
			||||||
            class="bg-background-deep z-100 absolute -left-2 bottom-1 h-2 w-[calc(100%+1rem)] overflow-hidden md:bottom-2 md:h-3"
 | 
					            class="bg-background-deep z-100 absolute -left-2 bottom-1 h-2 w-[calc(100%+1rem)] overflow-hidden md:bottom-2 md:h-3"
 | 
				
			||||||
          ></div>
 | 
					          ></div>
 | 
				
			||||||
        </div>
 | 
					        </div>
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue