@afeefa/vue-app 0.0.165 → 0.0.167

Sign up to get free protection for your applications and to get access to all the features.
@@ -1 +1 @@
1
- 0.0.165
1
+ 0.0.167
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@afeefa/vue-app",
3
- "version": "0.0.165",
3
+ "version": "0.0.167",
4
4
  "description": "",
5
5
  "author": "Afeefa Kollektiv <kollektiv@afeefa.de>",
6
6
  "license": "MIT",
@@ -178,9 +178,19 @@ export default class ADatePicker extends Mixins(ComponentWidthMixin, UsesPositio
178
178
  }
179
179
 
180
180
  get date () {
181
- return this.value_
182
- ? this.value_.toISOString().substr(0, this.type === 'month' ? 7 : 10)
183
- : null
181
+ if (!this.value_) {
182
+ return null
183
+ }
184
+
185
+ return this.dateToString(this.value_).substr(0, this.type === 'month' ? 7 : 10)
186
+ }
187
+
188
+ dateToString (date) {
189
+ // format date to v-date-picker compatible string: https://stackoverflow.com/a/29774197
190
+ // respecting and adding local time zone time shift to the utc iso string
191
+ const offset = date.getTimezoneOffset()
192
+ date = new Date(date.getTime() - (offset * 60 * 1000))
193
+ return date.toISOString()
184
194
  }
185
195
 
186
196
  get label () {
@@ -202,12 +212,22 @@ export default class ADatePicker extends Mixins(ComponentWidthMixin, UsesPositio
202
212
  this.dateChanged(null)
203
213
  } else if (this.validateTextInput(value)) {
204
214
  const [day, month, year] = value.split('.')
205
- this.dateChanged(new Date(year + '-' + month + '-' + day))
215
+ const date = new Date(year + '-' + month + '-' + day)
216
+ this.dateChanged(this.dateToString(date).split('T')[0])
206
217
  }
207
218
  }
208
219
 
209
- dateChanged (date) {
210
- this.value_ = date ? new Date(date) : null
220
+ dateChanged (date) { // date is a yyyy-mm or yyyy-mm-dd string
221
+ if (date) {
222
+ // take given date string an create a local time date object
223
+ // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date#date_time_string_format
224
+ // > 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.
225
+ const dateStringThatGetsConvertedToLocalDate = date + 'T00:00'
226
+ this.value_ = new Date(dateStringThatGetsConvertedToLocalDate)
227
+ } else {
228
+ this.value_ = null
229
+ }
230
+
211
231
  this.validate()
212
232
 
213
233
  this.close()
@@ -223,7 +243,7 @@ export default class ADatePicker extends Mixins(ComponentWidthMixin, UsesPositio
223
243
  const monthName = date.toLocaleString('default', { month: 'long' })
224
244
  return monthName + ' ' + date.getFullYear()
225
245
  }
226
- return formatDate(new Date(date))
246
+ return formatDate(date)
227
247
  }
228
248
 
229
249
  validate () {
@@ -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