Skip to content

Commit 3f6acb0

Browse files
authored
feat: splitter增加updateCollapsed方法 feat: form新增hideRequiredMark参数
1 parent 612d6c2 commit 3f6acb0

File tree

6 files changed

+44
-2
lines changed

6 files changed

+44
-2
lines changed

packages/devui-vue/devui/form/src/components/form-label/form-label.scss

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,11 @@
4646
margin-right: 8px;
4747
margin-left: -12px;
4848
}
49+
&-hide {
50+
&::before {
51+
display: none;
52+
}
53+
}
4954
}
5055

5156
.#{$devui-prefix}-form__label-help {

packages/devui-vue/devui/form/src/components/form-label/use-form-label.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,10 @@ import { computed, inject } from 'vue';
22
import { FormItemContext, FORM_ITEM_TOKEN, LabelData, LABEL_DATA } from '../form-item/form-item-types';
33
import { UseFormLabel } from './form-label-types';
44
import { useNamespace } from '../../../../shared/hooks/use-namespace';
5+
import { FORM_TOKEN, FormContext } from '../../form-types';
56

67
export function useFormLabel(): UseFormLabel {
8+
const formContext = inject(FORM_TOKEN) as FormContext;
79
const formItemContext = inject(FORM_ITEM_TOKEN) as FormItemContext;
810
const labelData = inject(LABEL_DATA) as LabelData;
911
const ns = useNamespace('form');
@@ -18,6 +20,7 @@ export function useFormLabel(): UseFormLabel {
1820
const labelInnerClasses = computed(() => ({
1921
[`${ns.e('label-span')}`]: true,
2022
[`${ns.em('label', 'required')}`]: formItemContext.isRequired,
23+
[`${ns.em('label', 'required-hide')}`]: formItemContext.isRequired && formContext.hideRequiredMark,
2124
}));
2225

2326
return { labelClasses, labelInnerClasses };

packages/devui-vue/devui/form/src/form-types.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,10 @@ export const formProps = {
6464
size: {
6565
type: String as PropType<FormSize>,
6666
},
67+
hideRequiredMark: {
68+
type: Boolean,
69+
default: false,
70+
}
6771
} as const;
6872

6973
export interface UseFieldCollection {

packages/devui-vue/devui/splitter/src/components/splitter-pane.tsx

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { defineComponent, ref, watch, inject, onMounted, onUpdated } from 'vue';
1+
import { defineComponent, ref, watch, inject, onMounted, onUpdated, getCurrentInstance } from 'vue';
22
import { addClass, hasClass, removeClass } from '../../../shared/utils/class';
33
import { setStyle } from '../../../shared/utils/set-style';
44
import type { SplitterStore } from '../splitter-store';
@@ -15,6 +15,7 @@ export default defineComponent({
1515
const store = inject<SplitterStore>('splitterStore');
1616
const domRef = ref<null | HTMLElement>();
1717
const orderRef = ref();
18+
const currentVnode = getCurrentInstance()?.vnode;
1819
const ns = useNamespace('splitter');
1920
watch([orderRef, domRef], ([order, ele]) => {
2021
if (!ele) {
@@ -115,11 +116,20 @@ export default defineComponent({
115116
}
116117
};
117118

119+
const updateCollapsed = (collapsed?: boolean) => {
120+
if (typeof collapsed === 'boolean') {
121+
currentVnode!.component!.props.collapsed = collapsed;
122+
return;
123+
}
124+
currentVnode!.component!.props.collapsed = !currentVnode?.component?.props.collapsed;
125+
}
126+
118127
// 暴露给外部使用
119128
expose({
120129
order: orderRef,
121130
getPaneSize,
122131
toggleNearPaneFlexGrow,
132+
updateCollapsed,
123133
});
124134

125135
return () => {

packages/devui-vue/docs/components/form/index.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -663,6 +663,7 @@ export default defineComponent({
663663
| show-feedback | `boolean` | false | 可选,是否展示校验结果反馈图标 | |
664664
| disabled | `boolean` | false | 可选,是否禁用该表单内的所有组件。 | |
665665
| size | [FormSize](#formsize) | -- | 可选,用于控制该表单内组件的尺寸 | |
666+
| hide-required-mark | `boolean` | false | 可选,是否隐藏所有表单项的必选标记 | |
666667

667668
### Form 事件
668669

packages/devui-vue/docs/components/splitter/index.md

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -238,6 +238,7 @@ export default defineComponent({
238238
```vue
239239
<template>
240240
<section>
241+
<d-button variant="solid" @click="handleOperation" style="margin-bottom: 10px">{{buttonDesc}}</d-button>
241242
<d-splitter class="splitter-border" style="height: 300px">
242243
<template v-slot:DSplitterPane>
243244
<d-splitter-pane size="30%" minSize="20%" :sizeChange="sizeChange">
@@ -246,7 +247,7 @@ export default defineComponent({
246247
<div>width: 30%, min-width: 20%</div>
247248
</div>
248249
</d-splitter-pane>
249-
<d-splitter-pane minSize="15%" :collapsible="true" collapseDirection="before">
250+
<d-splitter-pane minSize="15%" :collapsible="true" collapseDirection="before" ref="splitterPane">
250251
<div class="pane-content">
251252
<h2>Center</h2>
252253
<div>Specify the folding and retracting direction to fold forward</div>
@@ -269,12 +270,24 @@ import { defineComponent, ref } from 'vue';
269270
export default defineComponent({
270271
name: 'DSplitterDemoDirection',
271272
setup() {
273+
const buttonDesc = ref('收起');
274+
const splitterPane = ref();
275+
const collapsed = ref(false);
272276
const sizeChange = (size) => {
273277
console.log(size);
274278
};
275279
280+
const handleOperation = () => {
281+
splitterPane.value.updateCollapsed();
282+
collapsed.value = !collapsed.value;
283+
buttonDesc.value = collapsed.value ? '展开' : '收起';
284+
};
285+
276286
return {
277287
sizeChange,
288+
buttonDesc,
289+
splitterPane,
290+
handleOperation,
278291
};
279292
},
280293
});
@@ -321,6 +334,12 @@ export default defineComponent({
321334
| size-change | `(size: string) => void` | 大小变动时,返回改变后的值,像素值或者百分比 | [基本用法](#基本用法) |
322335
| collapsed-change | `(collapsed: boolean>) => void` | 折叠和展开时,返回当前 pane 是否折叠 | [基本用法](#基本用法) |
323336

337+
### SplitterPane 方法
338+
339+
| 方法名 | 类型 | 描述 | 跳转 Demo |
340+
| :--------------- | :--------------------| :---------------------------- | :--------------------- |
341+
| updateCollapsed | `(collapsed?: boolean) => void` | 更新面板的折叠状态,传入参数可指定面板的折叠状态 | [指定折叠收起方向](#指定折叠收起方向) |
342+
324343
### Splitter 类型定义
325344

326345
#### SplitterOrientation

0 commit comments

Comments
 (0)