Commit c2b7fed05fc774d4f681625ee3f6a6759d818bd7
1 parent
15457562
Reset panel selectionMode and positioning on blur
Showing
3 changed files
with
21 additions
and
10 deletions
Show diff stats
src/components/date-picker/panel/Date/date-range.vue
| ... | ... | @@ -185,26 +185,31 @@ |
| 185 | 185 | const minDate = newVal[0] ? toDate(newVal[0]) : null; |
| 186 | 186 | const maxDate = newVal[1] ? toDate(newVal[1]) : null; |
| 187 | 187 | this.dates = [minDate, maxDate].sort(); |
| 188 | - if (JSON.stringify(this.dates) === '[null,null]') { | |
| 189 | - const leftPanelDate = this.startDate || new Date(); | |
| 190 | - this.leftPanelDate = leftPanelDate, | |
| 191 | - this.rightPanelDate = new Date(leftPanelDate.getFullYear(), leftPanelDate.getMonth() + 1, leftPanelDate.getDate()); | |
| 192 | - } | |
| 193 | 188 | |
| 194 | 189 | this.rangeState = { |
| 195 | 190 | from: this.dates[0], |
| 196 | 191 | to: this.dates[1], |
| 197 | 192 | selecting: false |
| 198 | 193 | }; |
| 194 | + | |
| 195 | + | |
| 196 | + // set panels positioning | |
| 197 | + const leftPanelDate = this.startDate || this.dates[0] || new Date(); | |
| 198 | + this.leftPanelDate = leftPanelDate; | |
| 199 | + const rightPanelDate = new Date(leftPanelDate.getFullYear(), leftPanelDate.getMonth() + 1, leftPanelDate.getDate()); | |
| 200 | + this.rightPanelDate = this.splitPanels ? new Date(Math.max(this.dates[1], rightPanelDate)) : rightPanelDate; | |
| 201 | + | |
| 202 | + // reset stuff | |
| 203 | + this.currentView = this.selectionMode || 'range'; | |
| 204 | + this.leftPickerTable = `${this.currentView}-table`; | |
| 205 | + this.rightPickerTable = `${this.currentView}-table`; | |
| 206 | + | |
| 199 | 207 | }, |
| 200 | 208 | currentView(currentView){ |
| 201 | 209 | const leftMonth = this.leftPanelDate.getMonth(); |
| 202 | 210 | const rightMonth = this.rightPanelDate.getMonth(); |
| 203 | 211 | const isSameYear = this.leftPanelDate.getFullYear() === this.rightPanelDate.getFullYear(); |
| 204 | 212 | |
| 205 | - this.leftPickerTable = `${currentView}-table`; | |
| 206 | - this.rightPickerTable = `${currentView}-table`; | |
| 207 | - | |
| 208 | 213 | if (currentView === 'date' && isSameYear && leftMonth === rightMonth){ |
| 209 | 214 | this.changePanelDate('right', 'Month', 1); |
| 210 | 215 | } |
| ... | ... | @@ -214,6 +219,10 @@ |
| 214 | 219 | if (currentView === 'year' && isSameYear){ |
| 215 | 220 | this.changePanelDate('right', 'FullYear', 10); |
| 216 | 221 | } |
| 222 | + }, | |
| 223 | + selectionMode(type){ | |
| 224 | + console.log('Selection type change!', type); | |
| 225 | + this.currentView = type || 'range'; | |
| 217 | 226 | } |
| 218 | 227 | }, |
| 219 | 228 | methods: { | ... | ... |
src/components/date-picker/panel/Date/date.vue
| ... | ... | @@ -139,9 +139,10 @@ |
| 139 | 139 | value (newVal) { |
| 140 | 140 | this.dates = newVal; |
| 141 | 141 | if (JSON.stringify(newVal) === '[null]') this.panelDate = this.startDate || new Date(); |
| 142 | - }, | |
| 143 | - selectionMode(){ | |
| 142 | + | |
| 143 | + // reset stuff | |
| 144 | 144 | this.currentView = this.selectionMode; |
| 145 | + this.pickerTable = this.getTableType(this.currentView); | |
| 145 | 146 | }, |
| 146 | 147 | currentView (currentView) { |
| 147 | 148 | this.$emit('on-selection-mode-change', currentView); | ... | ... |
src/components/date-picker/picker.vue
| ... | ... | @@ -237,6 +237,7 @@ |
| 237 | 237 | }, |
| 238 | 238 | handleBlur () { |
| 239 | 239 | this.visible = false; |
| 240 | + this.internalValue = this.internalValue.slice(); // trigger panel watchers to reset views | |
| 240 | 241 | }, |
| 241 | 242 | handleInputChange (event) { |
| 242 | 243 | const isArrayValue = this.type.includes('range') || this.multiple; | ... | ... |