diff --git a/src/field/README.md b/src/field/README.md index 736452319..ae18cff5c 100644 --- a/src/field/README.md +++ b/src/field/README.md @@ -268,10 +268,11 @@ Use [ref](https://vuejs.org/v2/api/#ref) to get Field instance and call instance ### Slots -| Name | Description | -| ---------- | ----------------- | -| label | Custom label | -| input | Custom input | -| left-icon | Custom left icon | -| right-icon | Custom right icon | -| button | Insert button | +| Name | Description | +| -------------- | --------------------------- | +| label | Custom label | +| input | Custom input | +| left-icon | Custom left icon | +| right-icon | Custom right icon | +| button | Insert button | +| extra `v2.8.2` | Custom content on the right | diff --git a/src/field/README.zh-CN.md b/src/field/README.zh-CN.md index 332792d7e..e1d71709a 100644 --- a/src/field/README.zh-CN.md +++ b/src/field/README.zh-CN.md @@ -293,13 +293,14 @@ export default { ### Slots -| 名称 | 说明 | -| ---------- | ---------------------------------------------------------- | -| label | 自定义输入框标签 | -| input | 自定义输入框,使用此插槽后,与输入框相关的属性和事件将失效 | -| left-icon | 自定义输入框头部图标 | -| right-icon | 自定义输入框尾部图标 | -| button | 自定义输入框尾部按钮 | +| 名称 | 说明 | +| -------------- | ---------------------------------------------------------- | +| label | 自定义输入框 label 标签 | +| input | 自定义输入框,使用此插槽后,与输入框相关的属性和事件将失效 | +| left-icon | 自定义输入框头部图标 | +| right-icon | 自定义输入框尾部图标 | +| button | 自定义输入框尾部按钮 | +| extra `v2.8.2` | 自定义输入框最右侧的额外内容 | ## 常见问题 diff --git a/src/field/index.js b/src/field/index.js index 6b33b71ac..59808aa0d 100644 --- a/src/field/index.js +++ b/src/field/index.js @@ -550,6 +550,11 @@ export default createComponent({ scopedSlots.title = () => Label; } + const extra = this.slots('extra'); + if (extra) { + scopedSlots.extra = () => extra; + } + return ( `; +exports[`render extra slot 1`] = ` +
+
+
+
Extra +
+`; + exports[`render input slot 1`] = `
diff --git a/src/field/test/index.spec.js b/src/field/test/index.spec.js index f1758019c..f44aca872 100644 --- a/src/field/test/index.spec.js +++ b/src/field/test/index.spec.js @@ -203,14 +203,9 @@ test('clearable', () => { }); test('render input slot', () => { - const wrapper = mount({ - template: ` - - - - `, - components: { - Field, + const wrapper = mount(Field, { + scopedSlots: { + input: () => 'Custom Input', }, }); @@ -218,14 +213,19 @@ test('render input slot', () => { }); test('render label slot', () => { - const wrapper = mount({ - template: ` - - - - `, - components: { - Field, + const wrapper = mount(Field, { + scopedSlots: { + label: () => 'Custom Label', + }, + }); + + expect(wrapper).toMatchSnapshot(); +}); + +test('render extra slot', () => { + const wrapper = mount(Field, { + scopedSlots: { + extra: () => 'Extra', }, }); diff --git a/src/form/demo/FieldTypeArea.vue b/src/form/demo/FieldTypeArea.vue index 0540a6db5..01731324c 100644 --- a/src/form/demo/FieldTypeArea.vue +++ b/src/form/demo/FieldTypeArea.vue @@ -1,23 +1,26 @@ - - diff --git a/src/form/test/__snapshots__/demo.spec.js.snap b/src/form/test/__snapshots__/demo.spec.js.snap index 57d86d5a2..341ad1e37 100644 --- a/src/form/test/__snapshots__/demo.spec.js.snap +++ b/src/form/test/__snapshots__/demo.spec.js.snap @@ -184,41 +184,29 @@ exports[`renders demo correctly 1`] = `
-
-
-
选择器
-
-
-
+
+
选择器
+
+
-
-
-
-
时间选择
-
-
-
+
+
时间选择
+
+
-
-
-
-
地区选择
-
-
-
+
+
地区选择
+
+
-
-
-
-
日历
-
-
-
+
+
日历
+
+
-