quasar 1.22.6 → 1.22.7
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.
- package/dist/icon-set/bootstrap-icons.umd.min.js +1 -1
- package/dist/icon-set/eva-icons.umd.min.js +1 -1
- package/dist/icon-set/fontawesome-v5-pro.umd.min.js +1 -1
- package/dist/icon-set/fontawesome-v5.umd.min.js +1 -1
- package/dist/icon-set/fontawesome-v6-pro.umd.min.js +1 -1
- package/dist/icon-set/fontawesome-v6.umd.min.js +1 -1
- package/dist/icon-set/ionicons-v4.umd.min.js +1 -1
- package/dist/icon-set/line-awesome.umd.min.js +1 -1
- package/dist/icon-set/material-icons-outlined.umd.min.js +1 -1
- package/dist/icon-set/material-icons-round.umd.min.js +1 -1
- package/dist/icon-set/material-icons-sharp.umd.min.js +1 -1
- package/dist/icon-set/material-icons.umd.min.js +1 -1
- package/dist/icon-set/material-symbols-outlined.umd.min.js +1 -1
- package/dist/icon-set/material-symbols-rounded.umd.min.js +1 -1
- package/dist/icon-set/material-symbols-sharp.umd.min.js +1 -1
- package/dist/icon-set/mdi-v3.umd.min.js +1 -1
- package/dist/icon-set/mdi-v4.umd.min.js +1 -1
- package/dist/icon-set/mdi-v5.umd.min.js +1 -1
- package/dist/icon-set/mdi-v6.umd.min.js +1 -1
- package/dist/icon-set/mdi-v7.umd.min.js +1 -1
- package/dist/icon-set/svg-bootstrap-icons.umd.min.js +1 -1
- package/dist/icon-set/svg-eva-icons.umd.min.js +1 -1
- package/dist/icon-set/svg-fontawesome-v5.umd.min.js +1 -1
- package/dist/icon-set/svg-fontawesome-v6.umd.min.js +1 -1
- package/dist/icon-set/svg-ionicons-v4.umd.min.js +1 -1
- package/dist/icon-set/svg-ionicons-v5.umd.min.js +1 -1
- package/dist/icon-set/svg-ionicons-v6.umd.min.js +1 -1
- package/dist/icon-set/svg-line-awesome.umd.min.js +1 -1
- package/dist/icon-set/svg-material-icons-outlined.umd.min.js +1 -1
- package/dist/icon-set/svg-material-icons-round.umd.min.js +1 -1
- package/dist/icon-set/svg-material-icons-sharp.umd.min.js +1 -1
- package/dist/icon-set/svg-material-icons.umd.min.js +1 -1
- package/dist/icon-set/svg-material-symbols-outlined.umd.min.js +1 -1
- package/dist/icon-set/svg-material-symbols-rounded.umd.min.js +1 -1
- package/dist/icon-set/svg-material-symbols-sharp.umd.min.js +1 -1
- package/dist/icon-set/svg-mdi-v4.umd.min.js +1 -1
- package/dist/icon-set/svg-mdi-v5.umd.min.js +1 -1
- package/dist/icon-set/svg-mdi-v6.umd.min.js +1 -1
- package/dist/icon-set/svg-mdi-v7.umd.min.js +1 -1
- package/dist/icon-set/svg-themify.umd.min.js +1 -1
- package/dist/icon-set/themify.umd.min.js +1 -1
- package/dist/lang/ar.umd.min.js +1 -1
- package/dist/lang/az-latn.umd.min.js +1 -1
- package/dist/lang/bg.umd.min.js +1 -1
- package/dist/lang/ca.umd.min.js +1 -1
- package/dist/lang/cs.umd.min.js +1 -1
- package/dist/lang/da.umd.min.js +1 -1
- package/dist/lang/de.umd.min.js +1 -1
- package/dist/lang/el.umd.min.js +1 -1
- package/dist/lang/en-gb.umd.min.js +1 -1
- package/dist/lang/en-us.umd.min.js +1 -1
- package/dist/lang/eo.umd.min.js +1 -1
- package/dist/lang/es.umd.min.js +1 -1
- package/dist/lang/et.umd.min.js +1 -1
- package/dist/lang/eu.umd.min.js +1 -1
- package/dist/lang/fa-ir.umd.min.js +1 -1
- package/dist/lang/fa.umd.min.js +1 -1
- package/dist/lang/fi.umd.min.js +1 -1
- package/dist/lang/fr.umd.min.js +1 -1
- package/dist/lang/gn.umd.min.js +1 -1
- package/dist/lang/he.umd.min.js +1 -1
- package/dist/lang/hr.umd.min.js +1 -1
- package/dist/lang/hu.umd.min.js +1 -1
- package/dist/lang/id.umd.min.js +1 -1
- package/dist/lang/is.umd.min.js +1 -1
- package/dist/lang/it.umd.min.js +1 -1
- package/dist/lang/ja.umd.min.js +2 -2
- package/dist/lang/km.umd.min.js +1 -1
- package/dist/lang/ko-kr.umd.min.js +1 -1
- package/dist/lang/kur-ckb.umd.min.js +1 -1
- package/dist/lang/kz.umd.min.js +1 -1
- package/dist/lang/lu.umd.min.js +1 -1
- package/dist/lang/lv.umd.min.js +1 -1
- package/dist/lang/ml.umd.min.js +1 -1
- package/dist/lang/mm.umd.min.js +1 -1
- package/dist/lang/ms.umd.min.js +1 -1
- package/dist/lang/my.umd.min.js +1 -1
- package/dist/lang/nb-no.umd.min.js +1 -1
- package/dist/lang/nl.umd.min.js +1 -1
- package/dist/lang/pl.umd.min.js +1 -1
- package/dist/lang/pt-br.umd.min.js +1 -1
- package/dist/lang/pt.umd.min.js +1 -1
- package/dist/lang/ro.umd.min.js +1 -1
- package/dist/lang/ru.umd.min.js +1 -1
- package/dist/lang/sk.umd.min.js +1 -1
- package/dist/lang/sl.umd.min.js +1 -1
- package/dist/lang/sm.umd.min.js +1 -1
- package/dist/lang/sr.umd.min.js +1 -1
- package/dist/lang/sv.umd.min.js +1 -1
- package/dist/lang/ta.umd.min.js +1 -1
- package/dist/lang/th.umd.min.js +1 -1
- package/dist/lang/tr.umd.min.js +1 -1
- package/dist/lang/ug.umd.min.js +1 -1
- package/dist/lang/uk.umd.min.js +1 -1
- package/dist/lang/uz-Cyrl.umd.min.js +1 -1
- package/dist/lang/uz-Latn.umd.min.js +1 -1
- package/dist/lang/vi.umd.min.js +1 -1
- package/dist/lang/zh-hans.umd.min.js +1 -1
- package/dist/lang/zh-hant.umd.min.js +1 -1
- package/dist/quasar.addon.css +1 -1
- package/dist/quasar.addon.rtl.css +1 -1
- package/dist/quasar.common.js +2 -2
- package/dist/quasar.css +25 -5
- package/dist/quasar.esm.js +2 -2
- package/dist/quasar.ie.polyfills.js +1 -1
- package/dist/quasar.ie.polyfills.umd.min.js +1 -1
- package/dist/quasar.min.css +1 -1
- package/dist/quasar.rtl.css +3 -3
- package/dist/quasar.rtl.min.css +1 -1
- package/dist/quasar.sass +17 -5
- package/dist/quasar.styl +17 -5
- package/dist/quasar.umd.js +96 -56
- package/dist/quasar.umd.min.js +2 -2
- package/dist/quasar.umd.modern.js +95 -56
- package/dist/quasar.umd.modern.min.js +2 -2
- package/dist/web-types/web-types.json +1 -1
- package/lang/ja.js +1 -1
- package/package.json +1 -1
- package/src/components/field/QField.js +5 -1
- package/src/components/field/QField.sass +18 -4
- package/src/components/field/QField.styl +18 -4
- package/src/components/input/QInput.js +17 -4
- package/src/components/table/table-top.js +1 -1
- package/src/mixins/mask.js +70 -48
package/lang/ja.js
CHANGED
package/package.json
CHANGED
|
@@ -122,7 +122,11 @@ export default Vue.extend({
|
|
|
122
122
|
this.focused === true ||
|
|
123
123
|
typeof this.inputValue === 'number' ||
|
|
124
124
|
(typeof this.inputValue === 'string' && this.inputValue.length > 0) ||
|
|
125
|
-
(
|
|
125
|
+
(
|
|
126
|
+
this.hideSelected !== true &&
|
|
127
|
+
this.hasValue === true &&
|
|
128
|
+
(this.type !== 'number' || isNaN(this.value) === false)
|
|
129
|
+
) ||
|
|
126
130
|
(
|
|
127
131
|
this.displayValue !== void 0 &&
|
|
128
132
|
this.displayValue !== null &&
|
|
@@ -134,8 +134,15 @@ $field-transition-label-right-up: .324s cubic-bezier(.4,0,.2,1)
|
|
|
134
134
|
|
|
135
135
|
&:-webkit-autofill + .q-field__label
|
|
136
136
|
transform: translateY(-40%) scale(.75)
|
|
137
|
-
|
|
138
|
-
|
|
137
|
+
|
|
138
|
+
&[type="color"],
|
|
139
|
+
&[type="date"],
|
|
140
|
+
&[type="datetime-local"],
|
|
141
|
+
&[type="month"],
|
|
142
|
+
&[type="time"],
|
|
143
|
+
&[type="week"]
|
|
144
|
+
+ .q-field__label
|
|
145
|
+
transform: translateY(-40%) scale(.75)
|
|
139
146
|
|
|
140
147
|
&:invalid
|
|
141
148
|
box-shadow: none
|
|
@@ -439,8 +446,15 @@ $field-transition-label-right-up: .324s cubic-bezier(.4,0,.2,1)
|
|
|
439
446
|
.q-field__native, .q-field__input
|
|
440
447
|
&:-webkit-autofill + .q-field__label
|
|
441
448
|
transform: translateY(-30%) scale(.75)
|
|
442
|
-
|
|
443
|
-
|
|
449
|
+
|
|
450
|
+
&[type="color"],
|
|
451
|
+
&[type="date"],
|
|
452
|
+
&[type="datetime-local"],
|
|
453
|
+
&[type="month"],
|
|
454
|
+
&[type="time"],
|
|
455
|
+
&[type="week"]
|
|
456
|
+
+ .q-field__label
|
|
457
|
+
transform: translateY(-30%) scale(.75)
|
|
444
458
|
|
|
445
459
|
&--borderless, &--standard
|
|
446
460
|
|
|
@@ -134,8 +134,15 @@ $field-transition-label-right-up = .324s cubic-bezier(.4,0,.2,1)
|
|
|
134
134
|
|
|
135
135
|
&:-webkit-autofill + .q-field__label
|
|
136
136
|
transform: translateY(-40%) scale(.75)
|
|
137
|
-
|
|
138
|
-
|
|
137
|
+
|
|
138
|
+
&[type="color"],
|
|
139
|
+
&[type="date"],
|
|
140
|
+
&[type="datetime-local"],
|
|
141
|
+
&[type="month"],
|
|
142
|
+
&[type="time"],
|
|
143
|
+
&[type="week"]
|
|
144
|
+
+ .q-field__label
|
|
145
|
+
transform: translateY(-40%) scale(.75)
|
|
139
146
|
|
|
140
147
|
&:invalid
|
|
141
148
|
box-shadow: none
|
|
@@ -439,8 +446,15 @@ $field-transition-label-right-up = .324s cubic-bezier(.4,0,.2,1)
|
|
|
439
446
|
.q-field__native, .q-field__input
|
|
440
447
|
&:-webkit-autofill + .q-field__label
|
|
441
448
|
transform: translateY(-30%) scale(.75)
|
|
442
|
-
|
|
443
|
-
|
|
449
|
+
|
|
450
|
+
&[type="color"],
|
|
451
|
+
&[type="date"],
|
|
452
|
+
&[type="datetime-local"],
|
|
453
|
+
&[type="month"],
|
|
454
|
+
&[type="time"],
|
|
455
|
+
&[type="week"]
|
|
456
|
+
+ .q-field__label
|
|
457
|
+
transform: translateY(-30%) scale(.75)
|
|
444
458
|
|
|
445
459
|
&--borderless, &--standard
|
|
446
460
|
|
|
@@ -142,6 +142,8 @@ export default Vue.extend({
|
|
|
142
142
|
|
|
143
143
|
if (this.hasMask === true) {
|
|
144
144
|
on.keydown = this.__onMaskedKeydown
|
|
145
|
+
// reset selection anchor on pointer selection
|
|
146
|
+
on.click = this.__onMaskedClick
|
|
145
147
|
}
|
|
146
148
|
|
|
147
149
|
if (this.autogrow === true) {
|
|
@@ -291,18 +293,29 @@ export default Vue.extend({
|
|
|
291
293
|
const inp = this.$refs.input
|
|
292
294
|
if (inp !== void 0) {
|
|
293
295
|
const parentStyle = inp.parentNode.style
|
|
294
|
-
|
|
296
|
+
// chrome does not keep scroll #15498
|
|
297
|
+
const { scrollTop } = inp
|
|
298
|
+
// chrome calculates a smaller scrollHeight when in a .column container
|
|
299
|
+
const { overflowY, maxHeight } = this.$q.platform.is.firefox === true
|
|
300
|
+
? {}
|
|
301
|
+
: window.getComputedStyle(inp)
|
|
302
|
+
// on firefox or if overflowY is specified as scroll #14263, #14344
|
|
303
|
+
// we don't touch overflow
|
|
304
|
+
// firefox is not so bad in the end
|
|
305
|
+
const changeOverflow = overflowY !== void 0 && overflowY !== 'scroll'
|
|
295
306
|
|
|
296
307
|
// reset height of textarea to a small size to detect the real height
|
|
297
308
|
// but keep the total control size the same
|
|
298
|
-
|
|
299
|
-
this.$q.platform.is.firefox !== true && (inp.style.overflow = 'hidden')
|
|
309
|
+
changeOverflow === true && (inp.style.overflowY = 'hidden')
|
|
300
310
|
parentStyle.marginBottom = (inp.scrollHeight - 1) + 'px'
|
|
301
311
|
inp.style.height = '1px'
|
|
302
312
|
|
|
303
313
|
inp.style.height = inp.scrollHeight + 'px'
|
|
304
|
-
|
|
314
|
+
// we should allow scrollbars only
|
|
315
|
+
// if there is maxHeight and content is taller than maxHeight
|
|
316
|
+
changeOverflow === true && (inp.style.overflowY = parseInt(maxHeight, 10) < inp.scrollHeight ? 'auto' : 'hidden')
|
|
305
317
|
parentStyle.marginBottom = ''
|
|
318
|
+
inp.scrollTop = scrollTop
|
|
306
319
|
}
|
|
307
320
|
})
|
|
308
321
|
},
|
package/src/mixins/mask.js
CHANGED
|
@@ -250,8 +250,15 @@ export default {
|
|
|
250
250
|
}
|
|
251
251
|
|
|
252
252
|
if (inputType === 'insertFromPaste' && this.reverseFillMask !== true) {
|
|
253
|
-
const
|
|
254
|
-
|
|
253
|
+
const maxEnd = inp.selectionEnd
|
|
254
|
+
let cursor = end - 1
|
|
255
|
+
// each non-marker char means we move once to right
|
|
256
|
+
for (let i = this.__pastedTextStart; i <= cursor && i < maxEnd; i++) {
|
|
257
|
+
if (this.maskMarked[i] !== MARKER) {
|
|
258
|
+
cursor++
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
this.__moveCursorRight(inp, cursor)
|
|
255
262
|
|
|
256
263
|
return
|
|
257
264
|
}
|
|
@@ -277,7 +284,7 @@ export default {
|
|
|
277
284
|
inp.setSelectionRange(cursor, cursor, 'forward')
|
|
278
285
|
}
|
|
279
286
|
else {
|
|
280
|
-
this.__moveCursorRightReverse(inp, cursor
|
|
287
|
+
this.__moveCursorRightReverse(inp, cursor)
|
|
281
288
|
}
|
|
282
289
|
}
|
|
283
290
|
else {
|
|
@@ -288,11 +295,11 @@ export default {
|
|
|
288
295
|
else {
|
|
289
296
|
if (changed === true) {
|
|
290
297
|
const cursor = Math.max(0, this.maskMarked.indexOf(MARKER), Math.min(preMasked.length, end) - 1)
|
|
291
|
-
this.__moveCursorRight(inp, cursor
|
|
298
|
+
this.__moveCursorRight(inp, cursor)
|
|
292
299
|
}
|
|
293
300
|
else {
|
|
294
301
|
const cursor = end - 1
|
|
295
|
-
this.__moveCursorRight(inp, cursor
|
|
302
|
+
this.__moveCursorRight(inp, cursor)
|
|
296
303
|
}
|
|
297
304
|
}
|
|
298
305
|
})
|
|
@@ -308,73 +315,71 @@ export default {
|
|
|
308
315
|
const preMasked = this.__mask(this.__unmask(inp.value))
|
|
309
316
|
|
|
310
317
|
start = Math.max(0, this.maskMarked.indexOf(MARKER), Math.min(preMasked.length, start))
|
|
318
|
+
this.__pastedTextStart = start
|
|
311
319
|
|
|
312
320
|
inp.setSelectionRange(start, end, 'forward')
|
|
313
321
|
},
|
|
314
322
|
|
|
315
|
-
__moveCursorLeft (inp,
|
|
316
|
-
const noMarkBefore = this.maskMarked.slice(
|
|
317
|
-
let i = Math.max(0,
|
|
323
|
+
__moveCursorLeft (inp, cursor) {
|
|
324
|
+
const noMarkBefore = this.maskMarked.slice(cursor - 1).indexOf(MARKER) === -1
|
|
325
|
+
let i = Math.max(0, cursor - 1)
|
|
318
326
|
|
|
319
327
|
for (; i >= 0; i--) {
|
|
320
328
|
if (this.maskMarked[i] === MARKER) {
|
|
321
|
-
|
|
322
|
-
noMarkBefore === true &&
|
|
329
|
+
cursor = i
|
|
330
|
+
noMarkBefore === true && cursor++
|
|
323
331
|
break
|
|
324
332
|
}
|
|
325
333
|
}
|
|
326
334
|
|
|
327
335
|
if (
|
|
328
336
|
i < 0 &&
|
|
329
|
-
this.maskMarked[
|
|
330
|
-
this.maskMarked[
|
|
337
|
+
this.maskMarked[cursor] !== void 0 &&
|
|
338
|
+
this.maskMarked[cursor] !== MARKER
|
|
331
339
|
) {
|
|
332
|
-
return this.__moveCursorRight(inp, 0
|
|
340
|
+
return this.__moveCursorRight(inp, 0)
|
|
333
341
|
}
|
|
334
342
|
|
|
335
|
-
|
|
336
|
-
start,
|
|
337
|
-
selection === true ? end : start, 'backward'
|
|
338
|
-
)
|
|
343
|
+
cursor >= 0 && inp.setSelectionRange(cursor, cursor, 'backward')
|
|
339
344
|
},
|
|
340
345
|
|
|
341
|
-
__moveCursorRight (inp,
|
|
346
|
+
__moveCursorRight (inp, cursor) {
|
|
342
347
|
const limit = inp.value.length
|
|
343
|
-
let i = Math.min(limit,
|
|
348
|
+
let i = Math.min(limit, cursor + 1)
|
|
344
349
|
|
|
345
350
|
for (; i <= limit; i++) {
|
|
346
351
|
if (this.maskMarked[i] === MARKER) {
|
|
347
|
-
|
|
352
|
+
cursor = i
|
|
348
353
|
break
|
|
349
354
|
}
|
|
350
355
|
else if (this.maskMarked[i - 1] === MARKER) {
|
|
351
|
-
|
|
356
|
+
cursor = i
|
|
352
357
|
}
|
|
353
358
|
}
|
|
354
359
|
|
|
355
360
|
if (
|
|
356
361
|
i > limit &&
|
|
357
|
-
this.maskMarked[
|
|
358
|
-
this.maskMarked[
|
|
362
|
+
this.maskMarked[cursor - 1] !== void 0 &&
|
|
363
|
+
this.maskMarked[cursor - 1] !== MARKER
|
|
359
364
|
) {
|
|
360
|
-
return this.__moveCursorLeft(inp, limit
|
|
365
|
+
return this.__moveCursorLeft(inp, limit)
|
|
361
366
|
}
|
|
362
367
|
|
|
363
|
-
inp.setSelectionRange(
|
|
368
|
+
inp.setSelectionRange(cursor, cursor, 'forward')
|
|
364
369
|
},
|
|
365
370
|
|
|
366
|
-
__moveCursorLeftReverse (inp,
|
|
371
|
+
__moveCursorLeftReverse (inp, cursor) {
|
|
367
372
|
const
|
|
368
373
|
maskMarked = this.__getPaddedMaskMarked(inp.value.length)
|
|
369
|
-
let i = Math.max(0,
|
|
374
|
+
let i = Math.max(0, cursor - 1)
|
|
370
375
|
|
|
371
376
|
for (; i >= 0; i--) {
|
|
372
377
|
if (maskMarked[i - 1] === MARKER) {
|
|
373
|
-
|
|
378
|
+
cursor = i
|
|
374
379
|
break
|
|
375
380
|
}
|
|
376
381
|
else if (maskMarked[i] === MARKER) {
|
|
377
|
-
|
|
382
|
+
cursor = i
|
|
378
383
|
if (i === 0) {
|
|
379
384
|
break
|
|
380
385
|
}
|
|
@@ -383,42 +388,45 @@ export default {
|
|
|
383
388
|
|
|
384
389
|
if (
|
|
385
390
|
i < 0 &&
|
|
386
|
-
maskMarked[
|
|
387
|
-
maskMarked[
|
|
391
|
+
maskMarked[cursor] !== void 0 &&
|
|
392
|
+
maskMarked[cursor] !== MARKER
|
|
388
393
|
) {
|
|
389
|
-
return this.__moveCursorRightReverse(inp, 0
|
|
394
|
+
return this.__moveCursorRightReverse(inp, 0)
|
|
390
395
|
}
|
|
391
396
|
|
|
392
|
-
|
|
393
|
-
start,
|
|
394
|
-
selection === true ? end : start, 'backward'
|
|
395
|
-
)
|
|
397
|
+
cursor >= 0 && inp.setSelectionRange(cursor, cursor, 'backward')
|
|
396
398
|
},
|
|
397
399
|
|
|
398
|
-
__moveCursorRightReverse (inp,
|
|
400
|
+
__moveCursorRightReverse (inp, cursor) {
|
|
399
401
|
const
|
|
400
402
|
limit = inp.value.length,
|
|
401
403
|
maskMarked = this.__getPaddedMaskMarked(limit),
|
|
402
|
-
noMarkBefore = maskMarked.slice(0,
|
|
403
|
-
let i = Math.min(limit,
|
|
404
|
+
noMarkBefore = maskMarked.slice(0, cursor + 1).indexOf(MARKER) === -1
|
|
405
|
+
let i = Math.min(limit, cursor + 1)
|
|
404
406
|
|
|
405
407
|
for (; i <= limit; i++) {
|
|
406
408
|
if (maskMarked[i - 1] === MARKER) {
|
|
407
|
-
|
|
408
|
-
|
|
409
|
+
cursor = i
|
|
410
|
+
cursor > 0 && noMarkBefore === true && cursor--
|
|
409
411
|
break
|
|
410
412
|
}
|
|
411
413
|
}
|
|
412
414
|
|
|
413
415
|
if (
|
|
414
416
|
i > limit &&
|
|
415
|
-
maskMarked[
|
|
416
|
-
maskMarked[
|
|
417
|
+
maskMarked[cursor - 1] !== void 0 &&
|
|
418
|
+
maskMarked[cursor - 1] !== MARKER
|
|
417
419
|
) {
|
|
418
|
-
return this.__moveCursorLeftReverse(inp, limit
|
|
420
|
+
return this.__moveCursorLeftReverse(inp, limit)
|
|
419
421
|
}
|
|
420
422
|
|
|
421
|
-
inp.setSelectionRange(
|
|
423
|
+
inp.setSelectionRange(cursor, cursor, 'forward')
|
|
424
|
+
},
|
|
425
|
+
|
|
426
|
+
__onMaskedClick (e) {
|
|
427
|
+
this.qListeners.click !== void 0 && this.$emit('click', e)
|
|
428
|
+
|
|
429
|
+
this.__selectionAnchor = void 0
|
|
422
430
|
},
|
|
423
431
|
|
|
424
432
|
__onMaskedKeydown (e) {
|
|
@@ -433,25 +441,39 @@ export default {
|
|
|
433
441
|
start = inp.selectionStart,
|
|
434
442
|
end = inp.selectionEnd
|
|
435
443
|
|
|
444
|
+
if (!e.shiftKey) {
|
|
445
|
+
this.__selectionAnchor = void 0
|
|
446
|
+
}
|
|
447
|
+
|
|
436
448
|
if (e.keyCode === 37 || e.keyCode === 39) { // Left / Right
|
|
449
|
+
if (e.shiftKey && this.__selectionAnchor === void 0) {
|
|
450
|
+
this.__selectionAnchor = inp.selectionDirection === 'forward' ? start : end
|
|
451
|
+
}
|
|
452
|
+
|
|
437
453
|
const fn = this['__moveCursor' + (e.keyCode === 39 ? 'Right' : 'Left') + (this.reverseFillMask === true ? 'Reverse' : '')]
|
|
438
454
|
|
|
439
455
|
e.preventDefault()
|
|
440
|
-
fn(inp, start
|
|
456
|
+
fn(inp, this.__selectionAnchor === start ? end : start)
|
|
457
|
+
|
|
458
|
+
if (e.shiftKey) {
|
|
459
|
+
const anchor = this.__selectionAnchor
|
|
460
|
+
const cursor = inp.selectionStart
|
|
461
|
+
inp.setSelectionRange(Math.min(anchor, cursor), Math.max(anchor, cursor), 'forward')
|
|
462
|
+
}
|
|
441
463
|
}
|
|
442
464
|
else if (
|
|
443
465
|
e.keyCode === 8 && // Backspace
|
|
444
466
|
this.reverseFillMask !== true &&
|
|
445
467
|
start === end
|
|
446
468
|
) {
|
|
447
|
-
this.__moveCursorLeft(inp, start
|
|
469
|
+
this.__moveCursorLeft(inp, start)
|
|
448
470
|
}
|
|
449
471
|
else if (
|
|
450
472
|
e.keyCode === 46 && // Delete
|
|
451
473
|
this.reverseFillMask === true &&
|
|
452
474
|
start === end
|
|
453
475
|
) {
|
|
454
|
-
this.__moveCursorRightReverse(inp,
|
|
476
|
+
this.__moveCursorRightReverse(inp, end)
|
|
455
477
|
}
|
|
456
478
|
|
|
457
479
|
this.$emit('keydown', e)
|