File tree Expand file tree Collapse file tree 10 files changed +194
-117
lines changed
uni_modules/wot-design-uni/components Expand file tree Collapse file tree 10 files changed +194
-117
lines changed Load Diff Large diffs are not rendered by default.
Load Diff Large diffs are not rendered by default.
Original file line number Diff line number Diff line change 1414 <wd-picker label =" before-confirm" :columns =" columns0" v-model =" value7" :before-confirm =" beforeConfirm" />
1515 <wd-picker label =" 错误" v-model =" value10" error :columns =" columns0" />
1616 <wd-picker label =" 必填" v-model =" value11" :columns =" columns0" required />
17+ <wd-picker label =" 可清空" :clearable =" true" v-model =" value15" :columns =" columns5" :column-change =" onChangeDistrict" />
1718 </wd-cell-group >
1819 </demo-block >
1920 <demo-block title =" label 不传" transparent >
@@ -105,6 +106,7 @@ const columns4 = ref([
105106])
106107
107108const value5 = ref ([' 110000' , ' 110100' , ' 110102' ])
109+ const value15 = ref ([' 110000' , ' 110100' , ' 110102' ])
108110const columns5 = ref ([district [0 ], district [district [0 ][0 ].value ], district [district [district [0 ][0 ].value ][0 ].value ]])
109111
110112const value6 = ref ([' 中南大学' , ' 软件工程' ])
Original file line number Diff line number Diff line change 1414 <wd-select-picker label =" before-confirm" v-model =" value9" :columns =" columns1" @confirm =" handleConfirm9" :before-confirm =" beforeConfirm" />
1515 <wd-select-picker label =" 标题" v-model =" value10" title =" 多选" :columns =" columns1" @confirm =" handleConfirm10" />
1616 <wd-select-picker label =" 错误" error v-model =" value11" :columns =" columns1" @confirm =" handleConfirm11" />
17- <wd-select-picker label =" 必填" required v-model =" value12" :columns =" columns1" @confirm =" handleConfirm12" />
17+ <wd-select-picker clearable label =" 必填" required v-model =" value12" :columns =" columns1" @confirm =" handleConfirm12" />
1818 <wd-select-picker label =" 可搜索" filterable v-model =" value13" :columns =" columns1" @confirm =" handleConfirm13" />
1919 <wd-select-picker label =" 单选可搜索" filterable v-model =" value18" type =" radio" :columns =" columns1" @confirm =" handleConfirm13" />
2020 <wd-select-picker label =" 自动完成" type =" radio" :show-confirm =" false" v-model =" value19" :columns =" columns1" @confirm =" handleConfirm2" />
21+ <wd-select-picker
22+ label =" 可清空"
23+ clearable
24+ type =" radio"
25+ :show-confirm =" false"
26+ v-model =" value20"
27+ :columns =" columns1"
28+ @confirm =" handleConfirm2"
29+ />
2130 </wd-cell-group >
2231 </view >
2332 <demo-block title =" label不传" transparent >
@@ -128,6 +137,7 @@ const value16 = ref<string[]>(['103'])
128137const value17 = ref <string []>([' 102' ])
129138const value18 = ref <string >(' 102' )
130139const value19 = ref <string >(' 101' )
140+ const value20 = ref <string >(' 101' )
131141
132142const customShow = ref <string >(' 奢侈品' )
133143
Original file line number Diff line number Diff line change 2525 color : $-dark-color-gray ;
2626 }
2727
28- :deep (.wd-picker__arrow ){
28+ :deep (.wd-picker__arrow ),
29+ :deep (.wd-picker__clear ) {
2930 color : $-dark-color ;
3031 }
3132
7879 .wd-picker__cell {
7980 font-size : $-cell-title-fs-large ;
8081 }
81- :deep (.wd-picker__arrow ) {
82+ :deep (.wd-picker__arrow ),
83+ :deep (.wd-picker__clear ) {
8284 font-size : $-cell-icon-size-large ;
8385 }
8486 }
8587 @include when (error) {
8688 .wd-picker__value ,
87- :deep (.wd-picker__arrow ) {
89+ :deep (.wd-picker__arrow ),
90+ :deep (.wd-picker__clear ) {
8891 color : $-input-error-color ;
8992 }
9093 }
170173 color : $-input-placeholder-color ;
171174 }
172175
173- @include edeep (arrow) {
176+ @include edeep (arrow, clear ) {
174177 display : block ;
175178 font-size : $-cell-icon-size ;
176179 color : $-cell-arrow-color ;
Original file line number Diff line number Diff line change @@ -147,7 +147,11 @@ export const pickerProps = {
147147 /**
148148 * 是否在手指松开时立即触发 change 事件。若不开启则会在滚动动画结束后触发 change 事件,1.2.25版本起提供,仅微信小程序和支付宝小程序支持。
149149 */
150- immediateChange : makeBooleanProp ( false )
150+ immediateChange : makeBooleanProp ( false ) ,
151+ /**
152+ * 显示清空按钮
153+ */
154+ clearable : makeBooleanProp ( false )
151155}
152156
153157export type PickerProps = ExtractPropTypes < typeof pickerProps >
Original file line number Diff line number Diff line change 2121 <view :class =" `wd-picker__value ${ellipsis && 'is-ellipsis'} ${customValueClass} ${showValue ? '' : 'wd-picker__placeholder'}`" >
2222 {{ showValue ? showValue : placeholder || translate('placeholder') }}
2323 </view >
24- <wd-icon v-if =" !disabled && !readonly" custom-class =" wd-picker__arrow" name =" arrow-right" />
24+ <wd-icon v-if =" showArrow" custom-class =" wd-picker__arrow" name =" arrow-right" />
25+ <wd-icon v-else-if =" showClear" custom-class =" wd-picker__clear" name =" error-fill" @click.stop =" handleClear" />
2526 </view >
2627 <view v-if =" errorMessage" class =" wd-picker__error-message" >{{ errorMessage }}</view >
2728 </view >
@@ -384,6 +385,21 @@ function setLoading(loading: boolean) {
384385 innerLoading .value = loading
385386}
386387
388+ // 是否展示清除按钮
389+ const showClear = computed (() => {
390+ return props .clearable && ! props .disabled && ! props .readonly && showValue .value .length
391+ })
392+
393+ function handleClear() {
394+ const clearValue = isArray (pickerValue .value ) ? [] : ' '
395+ emit (' update:modelValue' , clearValue )
396+ }
397+
398+ // 是否展示箭头
399+ const showArrow = computed (() => {
400+ return ! props .disabled && ! props .readonly && ! showClear .value
401+ })
402+
387403defineExpose <PickerExpose >({
388404 close ,
389405 open ,
Original file line number Diff line number Diff line change 3030 }
3131
3232 :deep (.wd-select-picker__arrow ),
33- :deep (.wd-select-picker__close ) {
33+ :deep (.wd-select-picker__close ),
34+ :deep (.wd-select-picker__clear ) {
3435 color : $-dark-color ;
3536 }
3637
7172 .wd-select-picker__value {
7273 color : $-input-error-color ;
7374 }
74- :deep (.wd-select-picker__arrow ) {
75+ :deep (.wd-select-picker__arrow ),
76+ :deep (.wd-select-picker__clear ) {
7577 color : $-input-error-color ;
7678 }
7779 }
7880 @include when (large ) {
7981 font-size : $-cell-title-fs-large ;
8082
81- :deep (.wd-select-picker__arrow ){
83+ :deep (.wd-select-picker__arrow ),
84+ :deep (.wd-select-picker__clear ) {
8285 font-size : $-cell-icon-size-large ;
8386 }
8487 }
129132 @include e (body) {
130133 flex : 1 ;
131134 }
132- @include edeep (arrow) {
135+ @include edeep (arrow, clear ) {
133136 display : block ;
134137 font-size : $-cell-icon-size ;
135138 color : $-cell-arrow-color ;
Original file line number Diff line number Diff line change @@ -83,7 +83,11 @@ export const selectPickerProps = {
8383 /** 自定义值样式类 */
8484 customValueClass : makeStringProp ( '' ) ,
8585 /** 是否显示确认按钮(radio类型生效),默认值为:true */
86- showConfirm : makeBooleanProp ( true )
86+ showConfirm : makeBooleanProp ( true ) ,
87+ /**
88+ * 显示清空按钮
89+ */
90+ clearable : makeBooleanProp ( false )
8791}
8892export type SelectPickerProps = ExtractPropTypes < typeof selectPickerProps >
8993
Original file line number Diff line number Diff line change 2525 >
2626 {{ showValue || placeholder || translate('placeholder') }}
2727 </view >
28- <wd-icon v-if =" !disabled && !readonly" custom-class =" wd-select-picker__arrow" name =" arrow-right" />
28+ <wd-icon v-if =" showArrow" custom-class =" wd-select-picker__arrow" name =" arrow-right" />
29+ <wd-icon v-else-if =" showClear" custom-class =" wd-select-picker__clear" name =" error-fill" @click.stop =" handleClear" />
2930 </view >
3031
3132 <view v-if =" errorMessage" class =" wd-select-picker__error-message" >{{ errorMessage }}</view >
@@ -430,6 +431,20 @@ const showConfirm = computed(() => {
430431 return (props .type === ' radio' && props .showConfirm ) || props .type === ' checkbox'
431432})
432433
434+ // 是否展示清除按钮
435+ const showClear = computed (() => {
436+ return props .clearable && ! props .disabled && ! props .readonly && showValue .value .length
437+ })
438+
439+ function handleClear() {
440+ emit (' update:modelValue' , props .type === ' checkbox' ? [] : ' ' )
441+ }
442+
443+ // 是否展示箭头
444+ const showArrow = computed (() => {
445+ return ! props .disabled && ! props .readonly && ! showClear .value
446+ })
447+
433448defineExpose <SelectPickerExpose >({
434449 close ,
435450 open
You can’t perform that action at this time.
0 commit comments