quasar 1.22.0 → 1.22.2

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 (147) 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/mdi-v7.umd.min.js +6 -0
  23. package/dist/icon-set/svg-bootstrap-icons.umd.min.js +1 -1
  24. package/dist/icon-set/svg-eva-icons.umd.min.js +1 -1
  25. package/dist/icon-set/svg-fontawesome-v5.umd.min.js +1 -1
  26. package/dist/icon-set/svg-fontawesome-v6.umd.min.js +1 -1
  27. package/dist/icon-set/svg-ionicons-v4.umd.min.js +1 -1
  28. package/dist/icon-set/svg-ionicons-v5.umd.min.js +1 -1
  29. package/dist/icon-set/svg-ionicons-v6.umd.min.js +1 -1
  30. package/dist/icon-set/svg-line-awesome.umd.min.js +1 -1
  31. package/dist/icon-set/svg-material-icons-outlined.umd.min.js +1 -1
  32. package/dist/icon-set/svg-material-icons-round.umd.min.js +1 -1
  33. package/dist/icon-set/svg-material-icons-sharp.umd.min.js +1 -1
  34. package/dist/icon-set/svg-material-icons.umd.min.js +1 -1
  35. package/dist/icon-set/svg-material-symbols-outlined.umd.min.js +1 -1
  36. package/dist/icon-set/svg-material-symbols-rounded.umd.min.js +1 -1
  37. package/dist/icon-set/svg-material-symbols-sharp.umd.min.js +1 -1
  38. package/dist/icon-set/svg-mdi-v4.umd.min.js +1 -1
  39. package/dist/icon-set/svg-mdi-v5.umd.min.js +1 -1
  40. package/dist/icon-set/svg-mdi-v6.umd.min.js +1 -1
  41. package/dist/icon-set/svg-mdi-v7.umd.min.js +6 -0
  42. package/dist/icon-set/svg-themify.umd.min.js +1 -1
  43. package/dist/icon-set/themify.umd.min.js +1 -1
  44. package/dist/lang/ar.umd.min.js +1 -1
  45. package/dist/lang/az-latn.umd.min.js +1 -1
  46. package/dist/lang/bg.umd.min.js +1 -1
  47. package/dist/lang/ca.umd.min.js +1 -1
  48. package/dist/lang/cs.umd.min.js +1 -1
  49. package/dist/lang/da.umd.min.js +1 -1
  50. package/dist/lang/de.umd.min.js +1 -1
  51. package/dist/lang/el.umd.min.js +1 -1
  52. package/dist/lang/en-gb.umd.min.js +1 -1
  53. package/dist/lang/en-us.umd.min.js +1 -1
  54. package/dist/lang/eo.umd.min.js +1 -1
  55. package/dist/lang/es.umd.min.js +1 -1
  56. package/dist/lang/et.umd.min.js +1 -1
  57. package/dist/lang/eu.umd.min.js +1 -1
  58. package/dist/lang/fa-ir.umd.min.js +1 -1
  59. package/dist/lang/fa.umd.min.js +1 -1
  60. package/dist/lang/fi.umd.min.js +1 -1
  61. package/dist/lang/fr.umd.min.js +1 -1
  62. package/dist/lang/gn.umd.min.js +1 -1
  63. package/dist/lang/he.umd.min.js +1 -1
  64. package/dist/lang/hr.umd.min.js +1 -1
  65. package/dist/lang/hu.umd.min.js +1 -1
  66. package/dist/lang/id.umd.min.js +1 -1
  67. package/dist/lang/is.umd.min.js +1 -1
  68. package/dist/lang/it.umd.min.js +1 -1
  69. package/dist/lang/ja.umd.min.js +1 -1
  70. package/dist/lang/km.umd.min.js +1 -1
  71. package/dist/lang/ko-kr.umd.min.js +1 -1
  72. package/dist/lang/kur-ckb.umd.min.js +1 -1
  73. package/dist/lang/kz.umd.min.js +1 -1
  74. package/dist/lang/lu.umd.min.js +1 -1
  75. package/dist/lang/lv.umd.min.js +1 -1
  76. package/dist/lang/ml.umd.min.js +1 -1
  77. package/dist/lang/mm.umd.min.js +1 -1
  78. package/dist/lang/ms.umd.min.js +1 -1
  79. package/dist/lang/my.umd.min.js +1 -1
  80. package/dist/lang/nb-no.umd.min.js +1 -1
  81. package/dist/lang/nl.umd.min.js +1 -1
  82. package/dist/lang/pl.umd.min.js +1 -1
  83. package/dist/lang/pt-br.umd.min.js +1 -1
  84. package/dist/lang/pt.umd.min.js +1 -1
  85. package/dist/lang/ro.umd.min.js +1 -1
  86. package/dist/lang/ru.umd.min.js +1 -1
  87. package/dist/lang/sk.umd.min.js +1 -1
  88. package/dist/lang/sl.umd.min.js +1 -1
  89. package/dist/lang/sm.umd.min.js +1 -1
  90. package/dist/lang/sr.umd.min.js +1 -1
  91. package/dist/lang/sv.umd.min.js +1 -1
  92. package/dist/lang/ta.umd.min.js +1 -1
  93. package/dist/lang/th.umd.min.js +1 -1
  94. package/dist/lang/tr.umd.min.js +1 -1
  95. package/dist/lang/ug.umd.min.js +1 -1
  96. package/dist/lang/uk.umd.min.js +1 -1
  97. package/dist/lang/uz-Cyrl.umd.min.js +1 -1
  98. package/dist/lang/uz-Latn.umd.min.js +1 -1
  99. package/dist/lang/vi.umd.min.js +1 -1
  100. package/dist/lang/zh-hans.umd.min.js +1 -1
  101. package/dist/lang/zh-hant.umd.min.js +1 -1
  102. package/dist/quasar.addon.css +1 -1
  103. package/dist/quasar.addon.rtl.css +1 -1
  104. package/dist/quasar.common.js +2 -2
  105. package/dist/quasar.css +4 -4
  106. package/dist/quasar.esm.js +2 -2
  107. package/dist/quasar.ie.polyfills.js +1 -1
  108. package/dist/quasar.ie.polyfills.umd.min.js +1 -1
  109. package/dist/quasar.min.css +1 -1
  110. package/dist/quasar.rtl.css +8 -5
  111. package/dist/quasar.rtl.min.css +1 -1
  112. package/dist/quasar.sass +5 -4
  113. package/dist/quasar.styl +5 -4
  114. package/dist/quasar.umd.js +124 -101
  115. package/dist/quasar.umd.min.js +2 -2
  116. package/dist/quasar.umd.modern.js +123 -96
  117. package/dist/quasar.umd.modern.min.js +2 -2
  118. package/dist/types/index.d.ts +6 -1
  119. package/dist/vetur/quasar-attributes.json +4 -0
  120. package/dist/vetur/quasar-tags.json +1 -0
  121. package/dist/web-types/web-types.json +11 -1
  122. package/icon-set/mdi-v7.js +141 -0
  123. package/icon-set/svg-mdi-v7.js +225 -0
  124. package/package.json +2 -2
  125. package/src/components/btn-dropdown/QBtnDropdown.js +0 -1
  126. package/src/components/date/QDate.js +3 -1
  127. package/src/components/dialog/QDialog.js +35 -30
  128. package/src/components/dialog/QDialog.json +9 -1
  129. package/src/components/dialog-bottom-sheet/BottomSheet.js +5 -4
  130. package/src/components/expansion-item/QExpansionItem.js +0 -1
  131. package/src/components/fab/QFab.js +3 -6
  132. package/src/components/fab/QFab.sass +2 -1
  133. package/src/components/fab/QFab.styl +2 -1
  134. package/src/components/form/QForm.js +3 -1
  135. package/src/components/inner-loading/QInnerLoading.js +1 -6
  136. package/src/components/input/QInput.js +6 -1
  137. package/src/components/item/QList.js +7 -5
  138. package/src/components/item/QList.json +8 -0
  139. package/src/components/menu/QMenu.js +11 -5
  140. package/src/components/scroll-area/QScrollArea.js +9 -3
  141. package/src/components/scroll-observer/QScrollObserver.js +4 -0
  142. package/src/components/select/QSelect.js +12 -8
  143. package/src/components/select/QSelect.sass +2 -2
  144. package/src/components/select/QSelect.styl +2 -2
  145. package/src/components/tooltip/QTooltip.js +1 -1
  146. package/src/mixins/mask.js +3 -1
  147. package/src/mixins/transition.js +14 -15
@@ -73,13 +73,11 @@ export default Vue.extend({
73
73
 
74
74
  actionsAttrs () {
75
75
  const attrs = {
76
- id: this.targetUid
76
+ id: this.targetUid,
77
+ role: 'menu'
77
78
  }
78
79
 
79
- if (this.showing === true) {
80
- attrs.role = 'menu'
81
- }
82
- else {
80
+ if (this.showing !== true) {
83
81
  attrs['aria-hidden'] = 'true'
84
82
  }
85
83
 
@@ -95,7 +93,6 @@ export default Vue.extend({
95
93
  'aria-expanded': this.showing === true ? 'true' : 'false',
96
94
  'aria-haspopup': 'true',
97
95
  'aria-controls': this.targetUid,
98
- 'aria-owns': this.targetUid,
99
96
  ...this.qAttrs
100
97
  }
101
98
  },
@@ -137,7 +137,8 @@
137
137
 
138
138
  &--opened
139
139
  opacity: 1
140
- transform: scale(1) translate(0, 0)
140
+ // needed when rtlcss is enabled
141
+ transform: scale(1) translate(0.1px, 0)
141
142
  pointer-events: all
142
143
 
143
144
  &--align-left
@@ -137,7 +137,8 @@
137
137
 
138
138
  &--opened
139
139
  opacity: 1
140
- transform: scale(1) translate(0, 0)
140
+ // needed when rtlcss is enabled
141
+ transform: scale(1) translate(0.1px, 0)
141
142
  pointer-events: all
142
143
 
143
144
  &--align-left
@@ -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
  })
@@ -145,7 +145,7 @@ export default Vue.extend({
145
145
  }
146
146
 
147
147
  if (this.autogrow === true) {
148
- on.animationend = this.__adjustHeight
148
+ on.animationend = this.__onAnimationend
149
149
  }
150
150
 
151
151
  return on
@@ -242,6 +242,11 @@ export default Vue.extend({
242
242
  this.autogrow === true && this.__adjustHeight()
243
243
  },
244
244
 
245
+ __onAnimationend (e) {
246
+ this.qListeners.animationend !== void 0 && this.$emit('animationend', e)
247
+ this.__adjustHeight()
248
+ },
249
+
245
250
  __emitValue (val, stopWatcher) {
246
251
  this.emitValueFn = () => {
247
252
  if (
@@ -5,8 +5,6 @@ import ListenersMixin from '../../mixins/listeners.js'
5
5
 
6
6
  import { slot } from '../../utils/private/slot.js'
7
7
 
8
- const attrs = { role: 'list' }
9
-
10
8
  export default Vue.extend({
11
9
  name: 'QList',
12
10
 
@@ -16,7 +14,12 @@ export default Vue.extend({
16
14
  bordered: Boolean,
17
15
  dense: Boolean,
18
16
  separator: Boolean,
19
- padding: Boolean
17
+ padding: Boolean,
18
+
19
+ tag: {
20
+ type: String,
21
+ default: 'div'
22
+ }
20
23
  },
21
24
 
22
25
  computed: {
@@ -31,9 +34,8 @@ export default Vue.extend({
31
34
  },
32
35
 
33
36
  render (h) {
34
- return h('div', {
37
+ return h(this.tag, {
35
38
  class: this.classes,
36
- attrs,
37
39
  on: { ...this.qListeners }
38
40
  }, slot(this, 'default'))
39
41
  }
@@ -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
  })
@@ -152,10 +155,10 @@ export default Vue.extend({
152
155
  ? document.activeElement
153
156
  : void 0
154
157
 
155
- EscapeKey.register(this, () => {
158
+ EscapeKey.register(this, escEvt => {
156
159
  if (this.persistent !== true) {
157
160
  this.$emit('escape-key')
158
- this.hide()
161
+ this.hide(escEvt)
159
162
  }
160
163
  })
161
164
 
@@ -223,7 +226,10 @@ export default Vue.extend({
223
226
  evt.qClickOutside !== true
224
227
  )
225
228
  ) {
226
- this.__refocusTarget.focus()
229
+ ((evt && evt.type.indexOf('key') === 0
230
+ ? this.__refocusTarget.closest('[tabindex]:not([tabindex^="-"])')
231
+ : void 0
232
+ ) || this.__refocusTarget).focus()
227
233
  this.__refocusTarget = void 0
228
234
  }
229
235
 
@@ -321,7 +327,7 @@ export default Vue.extend({
321
327
 
322
328
  __renderPortal (h) {
323
329
  return h('transition', {
324
- props: { name: this.transition }
330
+ props: { ...this.transitionProps }
325
331
  }, [
326
332
  this.showing === true ? h('div', {
327
333
  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
 
@@ -246,6 +246,12 @@ export default Vue.extend({
246
246
  .join(', ')
247
247
  },
248
248
 
249
+ ariaCurrentValue () {
250
+ return this.displayValue !== void 0
251
+ ? this.displayValue
252
+ : this.selectedString
253
+ },
254
+
249
255
  sanitizeFn () {
250
256
  return this.optionsSanitize === true
251
257
  ? () => true
@@ -424,7 +430,6 @@ export default Vue.extend({
424
430
  'aria-readonly': this.readonly === true ? 'true' : 'false',
425
431
  'aria-autocomplete': this.useInput === true ? 'list' : 'none',
426
432
  'aria-expanded': this.menu === true ? 'true' : 'false',
427
- 'aria-owns': `${this.targetUid}_lb`,
428
433
  'aria-controls': `${this.targetUid}_lb`
429
434
  }
430
435
 
@@ -436,13 +441,11 @@ export default Vue.extend({
436
441
  },
437
442
 
438
443
  listboxAttrs () {
439
- const attrs = {
444
+ return {
440
445
  id: `${this.targetUid}_lb`,
441
446
  role: 'listbox',
442
447
  'aria-multiselectable': this.multiple === true ? 'true' : 'false'
443
448
  }
444
-
445
- return attrs
446
449
  }
447
450
  },
448
451
 
@@ -805,7 +808,9 @@ export default Vue.extend({
805
808
  this.useInput !== true &&
806
809
  e.key !== void 0 &&
807
810
  e.key.length === 1 && // printable char
808
- e.altKey === e.ctrlKey && // not kbd shortcut
811
+ e.altKey === false && // not kbd shortcut
812
+ e.ctrlKey === false && // not kbd shortcut
813
+ e.metaKey === false && // not kbd shortcut, especially on macOS with Command key
809
814
  (e.keyCode !== 32 || this.searchBuffer.length > 0) // space in middle of search
810
815
  ) {
811
816
  this.menu !== true && this.showPopup(e)
@@ -963,9 +968,7 @@ export default Vue.extend({
963
968
  return [
964
969
  h('span', {
965
970
  domProps: {
966
- [this.displayAsText ? 'textContent' : 'innerHTML']: this.displayValue !== void 0
967
- ? this.displayValue
968
- : this.selectedString
971
+ [this.displayAsText ? 'textContent' : 'innerHTML']: this.ariaCurrentValue
969
972
  }
970
973
  })
971
974
  ]
@@ -1006,6 +1009,7 @@ export default Vue.extend({
1006
1009
  h('input', {
1007
1010
  key: 'autoinp',
1008
1011
  staticClass: 'q-select__autocomplete-input',
1012
+ domProps: { value: this.ariaCurrentValue },
1009
1013
  attrs: { autocomplete: this.autocomplete, tabindex: -1 },
1010
1014
  on: cache(this, 'autoinp', {
1011
1015
  keyup: this.__onTargetAutocomplete
@@ -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
  }
@@ -422,6 +422,8 @@ export default {
422
422
  },
423
423
 
424
424
  __onMaskedKeydown (e) {
425
+ this.qListeners.keydown !== void 0 && this.$emit('keydown', e)
426
+
425
427
  if (shouldIgnoreKey(e) === true) {
426
428
  return
427
429
  }
@@ -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
  }