Commit 154bb8226efbc006782aab2c75594a4fbe211e58

Authored by 梁灏
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: {
@@ -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