@afeefa/vue-app 0.0.166 → 0.0.168
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
|
|
1
|
-
0.0.
|
1
|
+
0.0.168
|
package/package.json
CHANGED
@@ -52,7 +52,7 @@ import { PositionConfig } from '../services/PositionService'
|
|
52
52
|
import { randomCssClass } from '../utils/random'
|
53
53
|
|
54
54
|
@Component({
|
55
|
-
props: ['value', 'validator', 'type', {dense: true, outlined: true}]
|
55
|
+
props: ['value', 'validator', 'type', {dense: true, outlined: true, focus: false}]
|
56
56
|
})
|
57
57
|
export default class ADatePicker extends Mixins(ComponentWidthMixin, UsesPositionServiceMixin, CancelOnEscMixin) {
|
58
58
|
value_ = null
|
@@ -65,6 +65,8 @@ export default class ADatePicker extends Mixins(ComponentWidthMixin, UsesPositio
|
|
65
65
|
}
|
66
66
|
|
67
67
|
mounted () {
|
68
|
+
this.setFocus()
|
69
|
+
|
68
70
|
this.validate()
|
69
71
|
}
|
70
72
|
|
@@ -74,6 +76,11 @@ export default class ADatePicker extends Mixins(ComponentWidthMixin, UsesPositio
|
|
74
76
|
this.validate()
|
75
77
|
}
|
76
78
|
|
79
|
+
@Watch('focus')
|
80
|
+
focusChanged () {
|
81
|
+
this.setFocus()
|
82
|
+
}
|
83
|
+
|
77
84
|
get clearable () {
|
78
85
|
if (this.validator && this.validator.getParam('filled')) {
|
79
86
|
return false
|
@@ -182,11 +189,15 @@ export default class ADatePicker extends Mixins(ComponentWidthMixin, UsesPositio
|
|
182
189
|
return null
|
183
190
|
}
|
184
191
|
|
192
|
+
return this.dateToString(this.value_).substr(0, this.type === 'month' ? 7 : 10)
|
193
|
+
}
|
194
|
+
|
195
|
+
dateToString (date) {
|
185
196
|
// format date to v-date-picker compatible string: https://stackoverflow.com/a/29774197
|
186
|
-
|
187
|
-
|
188
|
-
date = date.
|
189
|
-
return date
|
197
|
+
// respecting and adding local time zone time shift to the utc iso string
|
198
|
+
const offset = date.getTimezoneOffset()
|
199
|
+
date = new Date(date.getTime() - (offset * 60 * 1000))
|
200
|
+
return date.toISOString()
|
190
201
|
}
|
191
202
|
|
192
203
|
get label () {
|
@@ -208,15 +219,16 @@ export default class ADatePicker extends Mixins(ComponentWidthMixin, UsesPositio
|
|
208
219
|
this.dateChanged(null)
|
209
220
|
} else if (this.validateTextInput(value)) {
|
210
221
|
const [day, month, year] = value.split('.')
|
211
|
-
|
222
|
+
const date = new Date(year + '-' + month + '-' + day)
|
223
|
+
this.dateChanged(this.dateToString(date).split('T')[0])
|
212
224
|
}
|
213
225
|
}
|
214
226
|
|
215
|
-
dateChanged (date) {
|
227
|
+
dateChanged (date) { // date is a yyyy-mm or yyyy-mm-dd string
|
216
228
|
if (date) {
|
217
|
-
|
218
|
-
|
219
|
-
|
229
|
+
// take given date string an create a local time date object
|
230
|
+
// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date#date_time_string_format
|
231
|
+
// > When the time zone offset is absent, date-only forms are interpreted as a UTC time and date-time forms are interpreted as local time.
|
220
232
|
const dateStringThatGetsConvertedToLocalDate = date + 'T00:00'
|
221
233
|
this.value_ = new Date(dateStringThatGetsConvertedToLocalDate)
|
222
234
|
} else {
|
@@ -287,6 +299,17 @@ export default class ADatePicker extends Mixins(ComponentWidthMixin, UsesPositio
|
|
287
299
|
}
|
288
300
|
return []
|
289
301
|
}
|
302
|
+
|
303
|
+
setFocus (force = false) {
|
304
|
+
const focus = this.focus || force // set focus if this.focus or else if forced from outside
|
305
|
+
if (focus) {
|
306
|
+
// if run in a v-dialog, the dialog background would
|
307
|
+
// steal the focus without requestAnimationFrame
|
308
|
+
requestAnimationFrame(() => {
|
309
|
+
this.$el.querySelector('input').focus()
|
310
|
+
})
|
311
|
+
}
|
312
|
+
}
|
290
313
|
}
|
291
314
|
</script>
|
292
315
|
|
@@ -76,7 +76,6 @@ export default class FlyingContextContainer extends Vue {
|
|
76
76
|
|
77
77
|
this.visible = !!container.children.length
|
78
78
|
const isOpening = mutationRecords.length === 1 && mutationRecords[0].addedNodes.length === 1 // only 1 record ... and this one is 'added'
|
79
|
-
console.log(mutationRecords)
|
80
79
|
|
81
80
|
const el = document.documentElement
|
82
81
|
|