diff --git a/src/slider/README.md b/src/slider/README.md index 7e31578ed..ca16876bb 100644 --- a/src/slider/README.md +++ b/src/slider/README.md @@ -168,9 +168,11 @@ export default { ### Slots -| Name | Description | -| ------ | ------------- | -| button | Custom button | +| Name | Description | Arguments | +| ------------ | ------------------------------ | ----------------- | +| button | Custom button | - | +| left-button | Custom left button (in range) | { value: number } | +| right-button | Custom right button (in range) | { value: number } | ### Less Variables diff --git a/src/slider/README.zh-CN.md b/src/slider/README.zh-CN.md index d01ecab0a..829284e68 100644 --- a/src/slider/README.zh-CN.md +++ b/src/slider/README.zh-CN.md @@ -174,9 +174,11 @@ export default { ### Slots -| 名称 | 说明 | -| ------ | -------------- | -| button | 自定义滑动按钮 | +| 名称 | 说明 | 参数 | +| ------------ | ---------------------------------- | ----------------- | +| button | 自定义滑动按钮 | - | +| left-button | 自定义左侧滑块按钮(双滑块模式下) | { value: number } | +| right-button | 自定义右侧滑块按钮(双滑块模式下) | { value: number } | ### 样式变量 diff --git a/src/slider/demo/index.vue b/src/slider/demo/index.vue index 63e331ea7..cb29ad05e 100644 --- a/src/slider/demo/index.vue +++ b/src/slider/demo/index.vue @@ -44,7 +44,7 @@ v-model="value9" range vertical - style="margin-left: 100px;" + style="margin-left: 100px" @change="onChange" /> diff --git a/src/slider/index.js b/src/slider/index.js index fb14fe319..2213aa2e2 100644 --- a/src/slider/index.js +++ b/src/slider/index.js @@ -236,6 +236,7 @@ export default createComponent({ const renderButton = (i) => { const map = ['left', 'right']; const isNumber = typeof i === 'number'; + const current = isNumber ? this.value[i] : this.value const getClassName = () => { if (isNumber) { return `button-wrapper-${map[i]}`; @@ -248,6 +249,20 @@ export default createComponent({ } return `wrapper`; }; + const renderButtonContent = () => { + if (isNumber) { + const slot = this.slots(i === 0 ? 'left-button' : 'right-button', {value: current}) + if (slot) { + return slot + } + } + if (this.slots('button')) { + return this.slots('button') + } + return ( +
+ ) + } return (