quasar 1.22.0 → 1.22.1

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.
Files changed (135) hide show
  1. package/dist/api/QDialog.json +11 -1
  2. package/dist/api/QList.json +12 -0
  3. package/dist/icon-set/bootstrap-icons.umd.min.js +1 -1
  4. package/dist/icon-set/eva-icons.umd.min.js +1 -1
  5. package/dist/icon-set/fontawesome-v5-pro.umd.min.js +1 -1
  6. package/dist/icon-set/fontawesome-v5.umd.min.js +1 -1
  7. package/dist/icon-set/fontawesome-v6-pro.umd.min.js +1 -1
  8. package/dist/icon-set/fontawesome-v6.umd.min.js +1 -1
  9. package/dist/icon-set/ionicons-v4.umd.min.js +1 -1
  10. package/dist/icon-set/line-awesome.umd.min.js +1 -1
  11. package/dist/icon-set/material-icons-outlined.umd.min.js +1 -1
  12. package/dist/icon-set/material-icons-round.umd.min.js +1 -1
  13. package/dist/icon-set/material-icons-sharp.umd.min.js +1 -1
  14. package/dist/icon-set/material-icons.umd.min.js +1 -1
  15. package/dist/icon-set/material-symbols-outlined.umd.min.js +1 -1
  16. package/dist/icon-set/material-symbols-rounded.umd.min.js +1 -1
  17. package/dist/icon-set/material-symbols-sharp.umd.min.js +1 -1
  18. package/dist/icon-set/mdi-v3.umd.min.js +1 -1
  19. package/dist/icon-set/mdi-v4.umd.min.js +1 -1
  20. package/dist/icon-set/mdi-v5.umd.min.js +1 -1
  21. package/dist/icon-set/mdi-v6.umd.min.js +1 -1
  22. package/dist/icon-set/svg-bootstrap-icons.umd.min.js +1 -1
  23. package/dist/icon-set/svg-eva-icons.umd.min.js +1 -1
  24. package/dist/icon-set/svg-fontawesome-v5.umd.min.js +1 -1
  25. package/dist/icon-set/svg-fontawesome-v6.umd.min.js +1 -1
  26. package/dist/icon-set/svg-ionicons-v4.umd.min.js +1 -1
  27. package/dist/icon-set/svg-ionicons-v5.umd.min.js +1 -1
  28. package/dist/icon-set/svg-ionicons-v6.umd.min.js +1 -1
  29. package/dist/icon-set/svg-line-awesome.umd.min.js +1 -1
  30. package/dist/icon-set/svg-material-icons-outlined.umd.min.js +1 -1
  31. package/dist/icon-set/svg-material-icons-round.umd.min.js +1 -1
  32. package/dist/icon-set/svg-material-icons-sharp.umd.min.js +1 -1
  33. package/dist/icon-set/svg-material-icons.umd.min.js +1 -1
  34. package/dist/icon-set/svg-material-symbols-outlined.umd.min.js +1 -1
  35. package/dist/icon-set/svg-material-symbols-rounded.umd.min.js +1 -1
  36. package/dist/icon-set/svg-material-symbols-sharp.umd.min.js +1 -1
  37. package/dist/icon-set/svg-mdi-v4.umd.min.js +1 -1
  38. package/dist/icon-set/svg-mdi-v5.umd.min.js +1 -1
  39. package/dist/icon-set/svg-mdi-v6.umd.min.js +1 -1
  40. package/dist/icon-set/svg-themify.umd.min.js +1 -1
  41. package/dist/icon-set/themify.umd.min.js +1 -1
  42. package/dist/lang/ar.umd.min.js +1 -1
  43. package/dist/lang/az-latn.umd.min.js +1 -1
  44. package/dist/lang/bg.umd.min.js +1 -1
  45. package/dist/lang/ca.umd.min.js +1 -1
  46. package/dist/lang/cs.umd.min.js +1 -1
  47. package/dist/lang/da.umd.min.js +1 -1
  48. package/dist/lang/de.umd.min.js +1 -1
  49. package/dist/lang/el.umd.min.js +1 -1
  50. package/dist/lang/en-gb.umd.min.js +1 -1
  51. package/dist/lang/en-us.umd.min.js +1 -1
  52. package/dist/lang/eo.umd.min.js +1 -1
  53. package/dist/lang/es.umd.min.js +1 -1
  54. package/dist/lang/et.umd.min.js +1 -1
  55. package/dist/lang/eu.umd.min.js +1 -1
  56. package/dist/lang/fa-ir.umd.min.js +1 -1
  57. package/dist/lang/fa.umd.min.js +1 -1
  58. package/dist/lang/fi.umd.min.js +1 -1
  59. package/dist/lang/fr.umd.min.js +1 -1
  60. package/dist/lang/gn.umd.min.js +1 -1
  61. package/dist/lang/he.umd.min.js +1 -1
  62. package/dist/lang/hr.umd.min.js +1 -1
  63. package/dist/lang/hu.umd.min.js +1 -1
  64. package/dist/lang/id.umd.min.js +1 -1
  65. package/dist/lang/is.umd.min.js +1 -1
  66. package/dist/lang/it.umd.min.js +1 -1
  67. package/dist/lang/ja.umd.min.js +1 -1
  68. package/dist/lang/km.umd.min.js +1 -1
  69. package/dist/lang/ko-kr.umd.min.js +1 -1
  70. package/dist/lang/kur-ckb.umd.min.js +1 -1
  71. package/dist/lang/kz.umd.min.js +1 -1
  72. package/dist/lang/lu.umd.min.js +1 -1
  73. package/dist/lang/lv.umd.min.js +1 -1
  74. package/dist/lang/ml.umd.min.js +1 -1
  75. package/dist/lang/mm.umd.min.js +1 -1
  76. package/dist/lang/ms.umd.min.js +1 -1
  77. package/dist/lang/my.umd.min.js +1 -1
  78. package/dist/lang/nb-no.umd.min.js +1 -1
  79. package/dist/lang/nl.umd.min.js +1 -1
  80. package/dist/lang/pl.umd.min.js +1 -1
  81. package/dist/lang/pt-br.umd.min.js +1 -1
  82. package/dist/lang/pt.umd.min.js +1 -1
  83. package/dist/lang/ro.umd.min.js +1 -1
  84. package/dist/lang/ru.umd.min.js +1 -1
  85. package/dist/lang/sk.umd.min.js +1 -1
  86. package/dist/lang/sl.umd.min.js +1 -1
  87. package/dist/lang/sm.umd.min.js +1 -1
  88. package/dist/lang/sr.umd.min.js +1 -1
  89. package/dist/lang/sv.umd.min.js +1 -1
  90. package/dist/lang/ta.umd.min.js +1 -1
  91. package/dist/lang/th.umd.min.js +1 -1
  92. package/dist/lang/tr.umd.min.js +1 -1
  93. package/dist/lang/ug.umd.min.js +1 -1
  94. package/dist/lang/uk.umd.min.js +1 -1
  95. package/dist/lang/uz-Cyrl.umd.min.js +1 -1
  96. package/dist/lang/uz-Latn.umd.min.js +1 -1
  97. package/dist/lang/vi.umd.min.js +1 -1
  98. package/dist/lang/zh-hans.umd.min.js +1 -1
  99. package/dist/lang/zh-hant.umd.min.js +1 -1
  100. package/dist/quasar.addon.css +1 -1
  101. package/dist/quasar.addon.rtl.css +1 -1
  102. package/dist/quasar.common.js +2 -2
  103. package/dist/quasar.css +3 -3
  104. package/dist/quasar.esm.js +2 -2
  105. package/dist/quasar.ie.polyfills.js +1 -1
  106. package/dist/quasar.ie.polyfills.umd.min.js +1 -1
  107. package/dist/quasar.min.css +1 -1
  108. package/dist/quasar.rtl.css +3 -3
  109. package/dist/quasar.rtl.min.css +1 -1
  110. package/dist/quasar.sass +3 -3
  111. package/dist/quasar.styl +3 -3
  112. package/dist/quasar.umd.js +80 -68
  113. package/dist/quasar.umd.min.js +2 -2
  114. package/dist/quasar.umd.modern.js +80 -64
  115. package/dist/quasar.umd.modern.min.js +2 -2
  116. package/dist/types/index.d.ts +6 -1
  117. package/dist/vetur/quasar-attributes.json +4 -0
  118. package/dist/vetur/quasar-tags.json +1 -0
  119. package/dist/web-types/web-types.json +11 -1
  120. package/package.json +1 -1
  121. package/src/components/dialog/QDialog.js +29 -27
  122. package/src/components/dialog/QDialog.json +9 -1
  123. package/src/components/dialog-bottom-sheet/BottomSheet.js +5 -4
  124. package/src/components/form/QForm.js +3 -1
  125. package/src/components/inner-loading/QInnerLoading.js +1 -6
  126. package/src/components/item/QList.js +7 -2
  127. package/src/components/item/QList.json +8 -0
  128. package/src/components/menu/QMenu.js +5 -2
  129. package/src/components/scroll-area/QScrollArea.js +9 -3
  130. package/src/components/scroll-observer/QScrollObserver.js +4 -0
  131. package/src/components/select/QSelect.sass +2 -2
  132. package/src/components/select/QSelect.styl +2 -2
  133. package/src/components/tooltip/QTooltip.js +1 -1
  134. package/src/mixins/mask.js +1 -1
  135. package/src/mixins/transition.js +14 -15
@@ -2635,8 +2635,9 @@ export interface QDialog extends Vue {
2635
2635
  focus (selector? : string): void
2636
2636
  /**
2637
2637
  * Shakes dialog
2638
+ * @param focusTarget Optional DOM Element to be focused after shake
2638
2639
  */
2639
- shake (): void
2640
+ shake (focusTarget? : Element): void
2640
2641
  }
2641
2642
 
2642
2643
  export interface QDrawer extends Vue {
@@ -4375,6 +4376,10 @@ export interface QItemSection extends Vue {
4375
4376
  }
4376
4377
 
4377
4378
  export interface QList extends Vue {
4379
+ /**
4380
+ * HTML tag to render
4381
+ */
4382
+ tag? : string
4378
4383
  /**
4379
4384
  * Applies a default border to the component
4380
4385
  */
@@ -2759,6 +2759,10 @@
2759
2759
  "type": "boolean",
2760
2760
  "description": "Do not wrap text (useful for item's main content)"
2761
2761
  },
2762
+ "q-list/tag": {
2763
+ "type": "string",
2764
+ "description": "HTML tag to render"
2765
+ },
2762
2766
  "q-list/bordered": {
2763
2767
  "type": "boolean",
2764
2768
  "description": "Applies a default border to the component"
@@ -906,6 +906,7 @@
906
906
  },
907
907
  "q-list": {
908
908
  "attributes": [
909
+ "tag",
909
910
  "bordered",
910
911
  "dense",
911
912
  "separator",
@@ -2,7 +2,7 @@
2
2
  "$schema": "",
3
3
  "framework": "vue",
4
4
  "name": "quasar",
5
- "version": "1.22.0",
5
+ "version": "1.22.1",
6
6
  "contributions": {
7
7
  "html": {
8
8
  "types-syntax": "typescript",
@@ -9180,6 +9180,16 @@
9180
9180
  "symbol": "QList"
9181
9181
  },
9182
9182
  "attributes": [
9183
+ {
9184
+ "name": "tag",
9185
+ "value": {
9186
+ "kind": "expression",
9187
+ "type": "string"
9188
+ },
9189
+ "description": "HTML tag to render\n\nExamples:\ndiv\nul\nol",
9190
+ "doc-url": "https://v1.quasar.dev/vue-components/list-and-list-items",
9191
+ "default": "\"div\""
9192
+ },
9183
9193
  {
9184
9194
  "name": "bordered",
9185
9195
  "value": {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "quasar",
3
- "version": "1.22.0",
3
+ "version": "1.22.1",
4
4
  "description": "Build high-performance VueJS user interfaces (SPA, PWA, SSR, Mobile and Desktop) in record time",
5
5
  "module": "src/index.esm.js",
6
6
  "typings": "dist/types/index.d.ts",
@@ -6,6 +6,7 @@ import ModelToggleMixin from '../../mixins/model-toggle.js'
6
6
  import PortalMixin from '../../mixins/portal.js'
7
7
  import PreventScrollMixin from '../../mixins/prevent-scroll.js'
8
8
  import AttrsMixin, { ariaHidden } from '../../mixins/attrs.js'
9
+ import TransitionMixin from '../../mixins/transition.js'
9
10
 
10
11
  import { childHasFocus } from '../../utils/dom.js'
11
12
  import EscapeKey from '../../utils/private/escape-key.js'
@@ -25,7 +26,7 @@ const positionClass = {
25
26
  left: 'fixed-left items-center'
26
27
  }
27
28
 
28
- const transitions = {
29
+ const defaultTransitions = {
29
30
  standard: ['scale', 'scale'],
30
31
  top: ['slide-down', 'slide-up'],
31
32
  bottom: ['slide-up', 'slide-down'],
@@ -33,11 +34,17 @@ const transitions = {
33
34
  left: ['slide-right', 'slide-left']
34
35
  }
35
36
 
37
+ const backdropAttrs = {
38
+ ...ariaHidden,
39
+ tabindex: -1
40
+ }
41
+
36
42
  export default Vue.extend({
37
43
  name: 'QDialog',
38
44
 
39
45
  mixins: [
40
46
  AttrsMixin,
47
+ TransitionMixin,
41
48
  HistoryMixin,
42
49
  TimeoutMixin,
43
50
  ModelToggleMixin,
@@ -78,20 +85,11 @@ export default Vue.extend({
78
85
 
79
86
  data () {
80
87
  return {
81
- transitionState: this.showing,
82
88
  animating: false
83
89
  }
84
90
  },
85
91
 
86
92
  watch: {
87
- showing (val) {
88
- if (this.transitionShowComputed !== this.transitionHideComputed) {
89
- this.$nextTick(() => {
90
- this.transitionState = val
91
- })
92
- }
93
- },
94
-
95
93
  maximized (state) {
96
94
  this.showing === true && this.__updateMaximized(state)
97
95
  },
@@ -112,18 +110,12 @@ export default Vue.extend({
112
110
  (this.square === true ? ' q-dialog__inner--square' : '')
113
111
  },
114
112
 
115
- transitionShowComputed () {
116
- return 'q-transition--' + (this.transitionShow === void 0 ? transitions[this.position][0] : this.transitionShow)
113
+ defaultTransitionShow () {
114
+ return defaultTransitions[this.position][0]
117
115
  },
118
116
 
119
- transitionHideComputed () {
120
- return 'q-transition--' + (this.transitionHide === void 0 ? transitions[this.position][1] : this.transitionHide)
121
- },
122
-
123
- transition () {
124
- return this.transitionState === true
125
- ? this.transitionHideComputed
126
- : this.transitionShowComputed
117
+ defaultTransitionHide () {
118
+ return defaultTransitions[this.position][1]
127
119
  },
128
120
 
129
121
  useBackdrop () {
@@ -170,13 +162,23 @@ export default Vue.extend({
170
162
  return
171
163
  }
172
164
 
173
- node = node.querySelector(selector || '[autofocus], [data-autofocus]') || node
165
+ node = (selector !== '' ? node.querySelector(selector) : null) ||
166
+ node.querySelector('[autofocus][tabindex], [data-autofocus][tabindex]') ||
167
+ node.querySelector('[autofocus] [tabindex], [data-autofocus] [tabindex]') ||
168
+ node.querySelector('[autofocus], [data-autofocus]') ||
169
+ node
174
170
  node.focus({ preventScroll: true })
175
171
  })
176
172
  },
177
173
 
178
- shake () {
179
- this.focus()
174
+ shake (refocusTarget) {
175
+ if (refocusTarget && typeof refocusTarget.focus === 'function') {
176
+ refocusTarget.focus({ preventScroll: true })
177
+ }
178
+ else {
179
+ this.focus()
180
+ }
181
+
180
182
  this.$emit('shake')
181
183
 
182
184
  const node = this.__getInnerNode()
@@ -338,7 +340,7 @@ export default Vue.extend({
338
340
  this.hide(e)
339
341
  }
340
342
  else if (this.noShake !== true) {
341
- this.shake()
343
+ this.shake(e.relatedTarget)
342
344
  }
343
345
  },
344
346
 
@@ -365,15 +367,15 @@ export default Vue.extend({
365
367
  }, this.useBackdrop === true ? [
366
368
  h('div', {
367
369
  staticClass: 'q-dialog__backdrop fixed-full',
368
- attrs: ariaHidden,
370
+ attrs: backdropAttrs,
369
371
  on: cache(this, 'bkdrop', {
370
- click: this.__onBackdropClick
372
+ focusin: this.__onBackdropClick
371
373
  })
372
374
  })
373
375
  ] : null),
374
376
 
375
377
  h('transition', {
376
- props: { name: this.transition }
378
+ props: { ...this.transitionProps }
377
379
  }, [
378
380
  this.showing === true ? h('div', {
379
381
  ref: 'inner',
@@ -143,7 +143,15 @@
143
143
  },
144
144
 
145
145
  "shake": {
146
- "desc": "Shakes dialog"
146
+ "desc": "Shakes dialog",
147
+ "params": {
148
+ "focusTarget": {
149
+ "type": "Element",
150
+ "desc": "Optional DOM Element to be focused after shake",
151
+ "examples": [ "document.getElementById('example')" ],
152
+ "addedIn": "v1.22.1"
153
+ }
154
+ }
147
155
  }
148
156
  },
149
157
 
@@ -78,7 +78,9 @@ export default Vue.extend({
78
78
  class: action.classes,
79
79
  attrs: attrsGridItem,
80
80
  on: {
81
- click: () => this.onOk(action),
81
+ click: () => {
82
+ this.onOk(action)
83
+ },
82
84
  keyup: e => {
83
85
  e.keyCode === 13 && this.onOk(action)
84
86
  }
@@ -117,9 +119,8 @@ export default Vue.extend({
117
119
  dark: this.isDark
118
120
  },
119
121
  on: {
120
- click: () => this.onOk(action),
121
- keyup: e => {
122
- e.keyCode === 13 && this.onOk(action)
122
+ click: () => {
123
+ this.onOk(action)
123
124
  }
124
125
  }
125
126
  }, [
@@ -156,7 +156,9 @@ export default Vue.extend({
156
156
  addFocusFn(() => {
157
157
  if (!this.$el) { return }
158
158
 
159
- const target = this.$el.querySelector('[autofocus], [data-autofocus]') ||
159
+ const target = this.$el.querySelector('[autofocus][tabindex], [data-autofocus][tabindex]') ||
160
+ this.$el.querySelector('[autofocus] [tabindex], [data-autofocus] [tabindex]') ||
161
+ this.$el.querySelector('[autofocus], [data-autofocus]') ||
160
162
  Array.prototype.find.call(this.$el.querySelectorAll('[tabindex]'), el => el.tabIndex > -1)
161
163
 
162
164
  target !== null && target !== void 0 && target.focus({ preventScroll: true })
@@ -78,11 +78,6 @@ export default Vue.extend({
78
78
  },
79
79
 
80
80
  render (h) {
81
- return h('transition', {
82
- props: {
83
- name: this.transition,
84
- appear: true
85
- }
86
- }, this.__getContent(h))
81
+ return h('transition', { props: { ...this.transitionProps } }, this.__getContent(h))
87
82
  }
88
83
  })
@@ -16,7 +16,12 @@ export default Vue.extend({
16
16
  bordered: Boolean,
17
17
  dense: Boolean,
18
18
  separator: Boolean,
19
- padding: Boolean
19
+ padding: Boolean,
20
+
21
+ tag: {
22
+ type: String,
23
+ default: 'div'
24
+ }
20
25
  },
21
26
 
22
27
  computed: {
@@ -31,7 +36,7 @@ export default Vue.extend({
31
36
  },
32
37
 
33
38
  render (h) {
34
- return h('div', {
39
+ return h(this.tag, {
35
40
  class: this.classes,
36
41
  attrs,
37
42
  on: { ...this.qListeners }
@@ -1,4 +1,6 @@
1
1
  {
2
+ "mixins": [ "mixins/tag" ],
3
+
2
4
  "meta": {
3
5
  "docsUrl": "https://v1.quasar.dev/vue-components/list-and-list-items"
4
6
  },
@@ -30,6 +32,12 @@
30
32
  "type": "Boolean",
31
33
  "desc": "Applies a material design-like padding on top and bottom",
32
34
  "category": "content"
35
+ },
36
+
37
+ "tag": {
38
+ "default": "div",
39
+ "examples": [ "div", "ul", "ol" ],
40
+ "addedIn": "v1.22.1"
33
41
  }
34
42
  },
35
43
 
@@ -140,7 +140,10 @@ export default Vue.extend({
140
140
  : void 0
141
141
 
142
142
  if (node !== void 0 && node.contains(document.activeElement) !== true) {
143
- node = node.querySelector('[autofocus], [data-autofocus]') || node
143
+ node = node.querySelector('[autofocus][tabindex], [data-autofocus][tabindex]') ||
144
+ node.querySelector('[autofocus] [tabindex], [data-autofocus] [tabindex]') ||
145
+ node.querySelector('[autofocus], [data-autofocus]') ||
146
+ node
144
147
  node.focus({ preventScroll: true })
145
148
  }
146
149
  })
@@ -321,7 +324,7 @@ export default Vue.extend({
321
324
 
322
325
  __renderPortal (h) {
323
326
  return h('transition', {
324
- props: { name: this.transition }
327
+ props: { ...this.transitionProps }
325
328
  }, [
326
329
  this.showing === true ? h('div', {
327
330
  ref: 'inner',
@@ -101,7 +101,7 @@ export default Vue.extend({
101
101
  horizontalScrollPercentage () {
102
102
  const diff = this.scroll.horizontal.size - this.container.horizontal
103
103
  if (diff <= 0) { return 0 }
104
- const p = between(this.scroll.horizontal.position / diff, 0, 1)
104
+ const p = between(Math.abs(this.scroll.horizontal.position) / diff, 0, 1)
105
105
  return Math.round(p * 10000) / 10000
106
106
  },
107
107
 
@@ -162,7 +162,7 @@ export default Vue.extend({
162
162
  return {
163
163
  ...this.thumbStyle,
164
164
  ...this.horizontalThumbStyle,
165
- left: `${this.horizontalThumbStart}px`,
165
+ [ this.$q.lang.rtl === true ? 'right' : 'left' ]: `${this.horizontalThumbStart}px`,
166
166
  width: `${this.horizontalThumbSize}px`
167
167
  }
168
168
  },
@@ -251,6 +251,12 @@ export default Vue.extend({
251
251
  }
252
252
  },
253
253
 
254
+ watch: {
255
+ '$q.lang.rtl' (rtl) {
256
+ this.setScrollPosition('horizontal', Math.abs(this.scroll.horizontal.position) * (rtl === true ? -1 : 1))
257
+ }
258
+ },
259
+
254
260
  methods: {
255
261
  getScrollTarget () {
256
262
  return this.$refs.target
@@ -330,7 +336,7 @@ export default Vue.extend({
330
336
 
331
337
  this.setScrollPosition(
332
338
  axis,
333
- percentage * (this.scroll[axis].size - this.container[axis]),
339
+ percentage * (this.scroll[axis].size - this.container[axis]) * (axis === 'horizontal' && this.$q.lang.rtl === true ? -1 : 1),
334
340
  duration
335
341
  )
336
342
  },
@@ -32,6 +32,10 @@ export default Vue.extend({
32
32
  scrollTarget () {
33
33
  this.__unconfigureScrollTarget()
34
34
  this.__configureScrollTarget()
35
+ },
36
+
37
+ '$q.lang.rtl' () {
38
+ this.__emit()
35
39
  }
36
40
  },
37
41
 
@@ -17,8 +17,8 @@
17
17
  &__autocomplete-input
18
18
  position: absolute
19
19
  outline: 0 !important
20
- width: 0
21
- height: 0
20
+ width: 1px // Safari scrolls on top if 0
21
+ height: 1px // Safari scrolls on top if 0
22
22
  padding: 0
23
23
  border: 0
24
24
  opacity: 0
@@ -17,8 +17,8 @@
17
17
  &__autocomplete-input
18
18
  position: absolute
19
19
  outline: 0 !important
20
- width: 0
21
- height: 0
20
+ width: 1px // Safari scrolls on top if 0
21
+ height: 1px // Safari scrolls on top if 0
22
22
  padding: 0
23
23
  border: 0
24
24
  opacity: 0
@@ -222,7 +222,7 @@ export default Vue.extend({
222
222
 
223
223
  __renderPortal (h) {
224
224
  return h('transition', {
225
- props: { name: this.transition }
225
+ props: { ...this.transitionProps }
226
226
  }, [
227
227
  this.showing === true ? h('div', {
228
228
  staticClass: 'q-tooltip q-tooltip--style q-position-engine no-pointer-events',
@@ -190,7 +190,7 @@ export default {
190
190
 
191
191
  this.computedMask = mask
192
192
  this.computedUnmask = val => {
193
- const unmaskMatch = unmaskMatcher.exec(val)
193
+ const unmaskMatch = unmaskMatcher.exec(this.reverseFillMask === true ? val : val.slice(0, mask.length))
194
194
  if (unmaskMatch !== null) {
195
195
  val = unmaskMatch.slice(1).join('')
196
196
  }
@@ -11,23 +11,22 @@ export default {
11
11
  }
12
12
  },
13
13
 
14
- data () {
15
- return {
16
- transitionState: this.showing
17
- }
18
- },
14
+ computed: {
15
+ transitionProps () {
16
+ const show = `q-transition--${this.transitionShow || this.defaultTransitionShow}`
17
+ const hide = `q-transition--${this.transitionHide || this.defaultTransitionHide}`
19
18
 
20
- watch: {
21
- showing (val) {
22
- this.transitionShow !== this.transitionHide && this.$nextTick(() => {
23
- this.transitionState = val
24
- })
25
- }
26
- },
19
+ return {
20
+ appear: true,
27
21
 
28
- computed: {
29
- transition () {
30
- return 'q-transition--' + (this.transitionState === true ? this.transitionHide : this.transitionShow)
22
+ enterClass: `${show}-enter`,
23
+ enterActiveClass: `${show}-enter-active`,
24
+ enterToClass: `${show}-enter-to`,
25
+
26
+ leaveClass: `${hide}-leave`,
27
+ leaveActiveClass: `${hide}-leave-active`,
28
+ leaveToClass: `${hide}-leave-to`
29
+ }
31
30
  }
32
31
  }
33
32
  }