Commit 154bb8226efbc006782aab2c75594a4fbe211e58
1 parent
4beb8e75
DatePicker&TimePicker add global setting, #5592
Showing
2 changed files
with
89 additions
and
11 deletions
Show diff stats
src/components/date-picker/picker.vue
| @@ -22,14 +22,13 @@ | @@ -22,14 +22,13 @@ | ||
| 22 | @on-input-change="handleInputChange" | 22 | @on-input-change="handleInputChange" |
| 23 | @on-focus="handleFocus" | 23 | @on-focus="handleFocus" |
| 24 | @on-blur="handleBlur" | 24 | @on-blur="handleBlur" |
| 25 | - @on-click="handleIconClick" | ||
| 26 | @click.native="handleFocus" | 25 | @click.native="handleFocus" |
| 27 | @keydown.native="handleKeydown" | 26 | @keydown.native="handleKeydown" |
| 28 | @mouseenter.native="handleInputMouseenter" | 27 | @mouseenter.native="handleInputMouseenter" |
| 29 | @mouseleave.native="handleInputMouseleave" | 28 | @mouseleave.native="handleInputMouseleave" |
| 30 | - | ||
| 31 | - :icon="iconType" | ||
| 32 | - ></i-input> | 29 | + > |
| 30 | + <Icon @click="handleIconClick" :type="arrowType" :custom="customArrowType" :size="arrowSize" slot="suffix" /> | ||
| 31 | + </i-input> | ||
| 33 | </slot> | 32 | </slot> |
| 34 | </div> | 33 | </div> |
| 35 | <transition name="transition-drop"> | 34 | <transition name="transition-drop"> |
| @@ -80,6 +79,7 @@ | @@ -80,6 +79,7 @@ | ||
| 80 | 79 | ||
| 81 | import iInput from '../../components/input/input.vue'; | 80 | import iInput from '../../components/input/input.vue'; |
| 82 | import Drop from '../../components/select/dropdown.vue'; | 81 | import Drop from '../../components/select/dropdown.vue'; |
| 82 | + import Icon from '../../components/icon/icon.vue'; | ||
| 83 | import {directive as clickOutside} from 'v-click-outside-x'; | 83 | import {directive as clickOutside} from 'v-click-outside-x'; |
| 84 | import TransferDom from '../../directives/transfer-dom'; | 84 | import TransferDom from '../../directives/transfer-dom'; |
| 85 | import { oneOf } from '../../utils/assist'; | 85 | import { oneOf } from '../../utils/assist'; |
| @@ -121,7 +121,7 @@ | @@ -121,7 +121,7 @@ | ||
| 121 | 121 | ||
| 122 | export default { | 122 | export default { |
| 123 | mixins: [ Emitter ], | 123 | mixins: [ Emitter ], |
| 124 | - components: { iInput, Drop }, | 124 | + components: { iInput, Drop, Icon }, |
| 125 | directives: { clickOutside, TransferDom }, | 125 | directives: { clickOutside, TransferDom }, |
| 126 | props: { | 126 | props: { |
| 127 | format: { | 127 | format: { |
| @@ -268,12 +268,6 @@ | @@ -268,12 +268,6 @@ | ||
| 268 | opened () { | 268 | opened () { |
| 269 | return this.open === null ? this.visible : this.open; | 269 | return this.open === null ? this.visible : this.open; |
| 270 | }, | 270 | }, |
| 271 | - iconType () { | ||
| 272 | - let icon = 'ios-calendar-outline'; | ||
| 273 | - if (this.type === 'time' || this.type === 'timerange') icon = 'ios-time-outline'; | ||
| 274 | - if (this.showClose) icon = 'ios-close-circle'; | ||
| 275 | - return icon; | ||
| 276 | - }, | ||
| 277 | transition () { | 271 | transition () { |
| 278 | const bottomPlaced = this.placement.match(/^bottom/); | 272 | const bottomPlaced = this.placement.match(/^bottom/); |
| 279 | return bottomPlaced ? 'slide-up' : 'slide-down'; | 273 | return bottomPlaced ? 'slide-up' : 'slide-down'; |
| @@ -283,6 +277,80 @@ | @@ -283,6 +277,80 @@ | ||
| 283 | }, | 277 | }, |
| 284 | isConfirm(){ | 278 | isConfirm(){ |
| 285 | return this.confirm || this.type === 'datetime' || this.type === 'datetimerange' || this.multiple; | 279 | return this.confirm || this.type === 'datetime' || this.type === 'datetimerange' || this.multiple; |
| 280 | + }, | ||
| 281 | + // 3.4.0, global setting customArrow 有值时,arrow 赋值空 | ||
| 282 | + arrowType () { | ||
| 283 | + let type = ''; | ||
| 284 | + | ||
| 285 | + if (this.type === 'time' || this.type === 'timerange') { | ||
| 286 | + type = 'ios-time-outline'; | ||
| 287 | + | ||
| 288 | + if (this.$IVIEW) { | ||
| 289 | + if (this.$IVIEW.timePicker.customIcon) { | ||
| 290 | + type = ''; | ||
| 291 | + } else if (this.$IVIEW.timePicker.icon) { | ||
| 292 | + type = this.$IVIEW.timePicker.icon; | ||
| 293 | + } | ||
| 294 | + } | ||
| 295 | + } else { | ||
| 296 | + type = 'ios-calendar-outline'; | ||
| 297 | + | ||
| 298 | + if (this.$IVIEW) { | ||
| 299 | + if (this.$IVIEW.datePicker.customIcon) { | ||
| 300 | + type = ''; | ||
| 301 | + } else if (this.$IVIEW.datePicker.icon) { | ||
| 302 | + type = this.$IVIEW.datePicker.icon; | ||
| 303 | + } | ||
| 304 | + } | ||
| 305 | + } | ||
| 306 | + | ||
| 307 | + if (this.showClose) type = 'ios-close-circle'; | ||
| 308 | + | ||
| 309 | + return type; | ||
| 310 | + }, | ||
| 311 | + // 3.4.0, global setting | ||
| 312 | + customArrowType () { | ||
| 313 | + let type = ''; | ||
| 314 | + | ||
| 315 | + if (!this.showClose) { | ||
| 316 | + if (this.type === 'time' || this.type === 'timerange') { | ||
| 317 | + if (this.$IVIEW) { | ||
| 318 | + if (this.$IVIEW.timePicker.customIcon) { | ||
| 319 | + type = this.$IVIEW.timePicker.customIcon; | ||
| 320 | + } | ||
| 321 | + } | ||
| 322 | + } else { | ||
| 323 | + if (this.$IVIEW) { | ||
| 324 | + if (this.$IVIEW.datePicker.customIcon) { | ||
| 325 | + type = this.$IVIEW.datePicker.customIcon; | ||
| 326 | + } | ||
| 327 | + } | ||
| 328 | + } | ||
| 329 | + } | ||
| 330 | + | ||
| 331 | + return type; | ||
| 332 | + }, | ||
| 333 | + // 3.4.0, global setting | ||
| 334 | + arrowSize () { | ||
| 335 | + let size = ''; | ||
| 336 | + | ||
| 337 | + if (!this.showClose) { | ||
| 338 | + if (this.type === 'time' || this.type === 'timerange') { | ||
| 339 | + if (this.$IVIEW) { | ||
| 340 | + if (this.$IVIEW.timePicker.iconSize) { | ||
| 341 | + size = this.$IVIEW.timePicker.iconSize; | ||
| 342 | + } | ||
| 343 | + } | ||
| 344 | + } else { | ||
| 345 | + if (this.$IVIEW) { | ||
| 346 | + if (this.$IVIEW.datePicker.iconSize) { | ||
| 347 | + size = this.$IVIEW.datePicker.iconSize; | ||
| 348 | + } | ||
| 349 | + } | ||
| 350 | + } | ||
| 351 | + } | ||
| 352 | + | ||
| 353 | + return size; | ||
| 286 | } | 354 | } |
| 287 | }, | 355 | }, |
| 288 | methods: { | 356 | methods: { |
src/index.js
| @@ -201,6 +201,16 @@ const install = function(Vue, opts = {}) { | @@ -201,6 +201,16 @@ const install = function(Vue, opts = {}) { | ||
| 201 | arrow: opts.colorPicker ? opts.colorPicker.arrow ? opts.colorPicker.arrow : '' : '', | 201 | arrow: opts.colorPicker ? opts.colorPicker.arrow ? opts.colorPicker.arrow : '' : '', |
| 202 | customArrow: opts.colorPicker ? opts.colorPicker.customArrow ? opts.colorPicker.customArrow : '' : '', | 202 | customArrow: opts.colorPicker ? opts.colorPicker.customArrow ? opts.colorPicker.customArrow : '' : '', |
| 203 | arrowSize: opts.colorPicker ? opts.colorPicker.arrowSize ? opts.colorPicker.arrowSize : '' : '' | 203 | arrowSize: opts.colorPicker ? opts.colorPicker.arrowSize ? opts.colorPicker.arrowSize : '' : '' |
| 204 | + }, | ||
| 205 | + datePicker: { | ||
| 206 | + icon: opts.datePicker ? opts.datePicker.icon ? opts.datePicker.icon : '' : '', | ||
| 207 | + customIcon: opts.datePicker ? opts.datePicker.customIcon ? opts.datePicker.customIcon : '' : '', | ||
| 208 | + iconSize: opts.datePicker ? opts.datePicker.iconSize ? opts.datePicker.iconSize : '' : '' | ||
| 209 | + }, | ||
| 210 | + timePicker: { | ||
| 211 | + icon: opts.timePicker ? opts.timePicker.icon ? opts.timePicker.icon : '' : '', | ||
| 212 | + customIcon: opts.timePicker ? opts.timePicker.customIcon ? opts.timePicker.customIcon : '' : '', | ||
| 213 | + iconSize: opts.timePicker ? opts.timePicker.iconSize ? opts.timePicker.iconSize : '' : '' | ||
| 204 | } | 214 | } |
| 205 | }; | 215 | }; |
| 206 | 216 |