quasar 2.9.1 → 2.9.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 (124) hide show
  1. package/dist/api/QTree.json +6 -0
  2. package/dist/api/TouchPan.json +0 -4
  3. package/dist/icon-set/bootstrap-icons.umd.prod.js +1 -1
  4. package/dist/icon-set/eva-icons.umd.prod.js +1 -1
  5. package/dist/icon-set/fontawesome-v5-pro.umd.prod.js +1 -1
  6. package/dist/icon-set/fontawesome-v5.umd.prod.js +1 -1
  7. package/dist/icon-set/fontawesome-v6-pro.umd.prod.js +1 -1
  8. package/dist/icon-set/fontawesome-v6.umd.prod.js +1 -1
  9. package/dist/icon-set/ionicons-v4.umd.prod.js +1 -1
  10. package/dist/icon-set/line-awesome.umd.prod.js +1 -1
  11. package/dist/icon-set/material-icons-outlined.umd.prod.js +1 -1
  12. package/dist/icon-set/material-icons-round.umd.prod.js +1 -1
  13. package/dist/icon-set/material-icons-sharp.umd.prod.js +1 -1
  14. package/dist/icon-set/material-icons.umd.prod.js +1 -1
  15. package/dist/icon-set/material-symbols-outlined.umd.prod.js +1 -1
  16. package/dist/icon-set/material-symbols-rounded.umd.prod.js +1 -1
  17. package/dist/icon-set/material-symbols-sharp.umd.prod.js +1 -1
  18. package/dist/icon-set/mdi-v3.umd.prod.js +1 -1
  19. package/dist/icon-set/mdi-v4.umd.prod.js +1 -1
  20. package/dist/icon-set/mdi-v5.umd.prod.js +1 -1
  21. package/dist/icon-set/mdi-v6.umd.prod.js +1 -1
  22. package/dist/icon-set/svg-bootstrap-icons.umd.prod.js +1 -1
  23. package/dist/icon-set/svg-eva-icons.umd.prod.js +1 -1
  24. package/dist/icon-set/svg-fontawesome-v5.umd.prod.js +1 -1
  25. package/dist/icon-set/svg-fontawesome-v6.umd.prod.js +1 -1
  26. package/dist/icon-set/svg-ionicons-v4.umd.prod.js +1 -1
  27. package/dist/icon-set/svg-ionicons-v5.umd.prod.js +1 -1
  28. package/dist/icon-set/svg-ionicons-v6.umd.prod.js +1 -1
  29. package/dist/icon-set/svg-line-awesome.umd.prod.js +1 -1
  30. package/dist/icon-set/svg-material-icons-outlined.umd.prod.js +1 -1
  31. package/dist/icon-set/svg-material-icons-round.umd.prod.js +1 -1
  32. package/dist/icon-set/svg-material-icons-sharp.umd.prod.js +1 -1
  33. package/dist/icon-set/svg-material-icons.umd.prod.js +1 -1
  34. package/dist/icon-set/svg-material-symbols-outlined.umd.prod.js +1 -1
  35. package/dist/icon-set/svg-material-symbols-rounded.umd.prod.js +1 -1
  36. package/dist/icon-set/svg-material-symbols-sharp.umd.prod.js +1 -1
  37. package/dist/icon-set/svg-mdi-v6.umd.prod.js +1 -1
  38. package/dist/icon-set/svg-themify.umd.prod.js +1 -1
  39. package/dist/icon-set/themify.umd.prod.js +1 -1
  40. package/dist/lang/ar-TN.umd.prod.js +1 -1
  41. package/dist/lang/ar.umd.prod.js +1 -1
  42. package/dist/lang/az-Latn.umd.prod.js +1 -1
  43. package/dist/lang/bg.umd.prod.js +1 -1
  44. package/dist/lang/bn.umd.prod.js +1 -1
  45. package/dist/lang/ca.umd.prod.js +1 -1
  46. package/dist/lang/cs.umd.prod.js +1 -1
  47. package/dist/lang/da.umd.prod.js +1 -1
  48. package/dist/lang/de.umd.prod.js +1 -1
  49. package/dist/lang/el.umd.prod.js +1 -1
  50. package/dist/lang/en-GB.umd.prod.js +1 -1
  51. package/dist/lang/en-US.umd.prod.js +1 -1
  52. package/dist/lang/eo.umd.prod.js +1 -1
  53. package/dist/lang/es.umd.prod.js +1 -1
  54. package/dist/lang/et.umd.prod.js +1 -1
  55. package/dist/lang/eu.umd.prod.js +1 -1
  56. package/dist/lang/fa-IR.umd.prod.js +1 -1
  57. package/dist/lang/fa.umd.prod.js +1 -1
  58. package/dist/lang/fi.umd.prod.js +1 -1
  59. package/dist/lang/fr.umd.prod.js +1 -1
  60. package/dist/lang/gn.umd.prod.js +1 -1
  61. package/dist/lang/he.umd.prod.js +1 -1
  62. package/dist/lang/hr.umd.prod.js +1 -1
  63. package/dist/lang/hu.umd.prod.js +1 -1
  64. package/dist/lang/id.umd.prod.js +1 -1
  65. package/dist/lang/is.umd.prod.js +1 -1
  66. package/dist/lang/it.umd.prod.js +1 -1
  67. package/dist/lang/ja.umd.prod.js +1 -1
  68. package/dist/lang/km.umd.prod.js +1 -1
  69. package/dist/lang/ko-KR.umd.prod.js +1 -1
  70. package/dist/lang/kur-CKB.umd.prod.js +1 -1
  71. package/dist/lang/kz.umd.prod.js +1 -1
  72. package/dist/lang/lt.umd.prod.js +1 -1
  73. package/dist/lang/lu.umd.prod.js +1 -1
  74. package/dist/lang/lv.umd.prod.js +1 -1
  75. package/dist/lang/ml.umd.prod.js +1 -1
  76. package/dist/lang/mm.umd.prod.js +1 -1
  77. package/dist/lang/ms.umd.prod.js +1 -1
  78. package/dist/lang/my.umd.prod.js +1 -1
  79. package/dist/lang/nb-NO.umd.prod.js +1 -1
  80. package/dist/lang/nl.umd.prod.js +1 -1
  81. package/dist/lang/pl.umd.prod.js +1 -1
  82. package/dist/lang/pt-BR.umd.prod.js +1 -1
  83. package/dist/lang/pt.umd.prod.js +1 -1
  84. package/dist/lang/ro.umd.prod.js +1 -1
  85. package/dist/lang/ru.umd.prod.js +1 -1
  86. package/dist/lang/sk.umd.prod.js +1 -1
  87. package/dist/lang/sl.umd.prod.js +1 -1
  88. package/dist/lang/sm.umd.prod.js +1 -1
  89. package/dist/lang/sr-CYR.umd.prod.js +1 -1
  90. package/dist/lang/sr.umd.prod.js +1 -1
  91. package/dist/lang/sv.umd.prod.js +1 -1
  92. package/dist/lang/ta.umd.prod.js +1 -1
  93. package/dist/lang/th.umd.prod.js +1 -1
  94. package/dist/lang/tr.umd.prod.js +1 -1
  95. package/dist/lang/ug.umd.prod.js +1 -1
  96. package/dist/lang/uk.umd.prod.js +1 -1
  97. package/dist/lang/uz-Cyrl.umd.prod.js +1 -1
  98. package/dist/lang/uz-Latn.umd.prod.js +1 -1
  99. package/dist/lang/vi.umd.prod.js +1 -1
  100. package/dist/lang/zh-CN.umd.prod.js +1 -1
  101. package/dist/lang/zh-TW.umd.prod.js +1 -1
  102. package/dist/quasar.cjs.prod.js +2 -2
  103. package/dist/quasar.esm.js +108 -53
  104. package/dist/quasar.esm.prod.js +2 -2
  105. package/dist/quasar.sass +1 -1
  106. package/dist/quasar.umd.js +108 -53
  107. package/dist/quasar.umd.prod.js +2 -2
  108. package/dist/types/index.d.ts +4 -0
  109. package/dist/vetur/quasar-attributes.json +4 -0
  110. package/dist/vetur/quasar-tags.json +1 -0
  111. package/dist/web-types/web-types.json +11 -6
  112. package/package.json +1 -1
  113. package/src/components/badge/__tests__/QBadge.spec.js +98 -23
  114. package/src/components/input/use-mask.js +1 -1
  115. package/src/components/pull-to-refresh/QPullToRefresh.js +1 -4
  116. package/src/components/tabs/QTabs.js +2 -2
  117. package/src/components/tree/QTree.js +33 -20
  118. package/src/components/tree/QTree.json +7 -0
  119. package/src/directives/TouchHold.js +10 -3
  120. package/src/directives/TouchPan.js +21 -8
  121. package/src/directives/TouchPan.json +0 -5
  122. package/src/directives/TouchRepeat.js +20 -6
  123. package/src/directives/TouchSwipe.js +10 -3
  124. package/src/utils/morph.js +7 -3
@@ -12385,6 +12385,10 @@ export interface QTreeProps {
12385
12385
  * Allows the tree to be set in accordion mode
12386
12386
  */
12387
12387
  accordion?: boolean | undefined;
12388
+ /**
12389
+ * Turn off transition effects when expanding/collapsing nodes; Also enhances perf by a lot as a side-effect; Recommended for big trees
12390
+ */
12391
+ noTransition?: boolean | undefined;
12388
12392
  /**
12389
12393
  * The text value to be used for filtering nodes
12390
12394
  */
@@ -5651,6 +5651,10 @@
5651
5651
  "type": "boolean",
5652
5652
  "description": "Allows the tree to be set in accordion mode"
5653
5653
  },
5654
+ "q-tree/no-transition": {
5655
+ "type": "boolean",
5656
+ "description": "Turn off transition effects when expanding/collapsing nodes; Also enhances perf by a lot as a side-effect; Recommended for big trees"
5657
+ },
5654
5658
  "q-tree/filter": {
5655
5659
  "type": "string",
5656
5660
  "description": "The text value to be used for filtering nodes"
@@ -2000,6 +2000,7 @@
2000
2000
  "no-selection-unset",
2001
2001
  "default-expand-all",
2002
2002
  "accordion",
2003
+ "no-transition",
2003
2004
  "filter",
2004
2005
  "filter-method",
2005
2006
  "duration",
@@ -2,7 +2,7 @@
2
2
  "$schema": "",
3
3
  "framework": "vue",
4
4
  "name": "quasar",
5
- "version": "2.9.1",
5
+ "version": "2.9.2",
6
6
  "contributions": {
7
7
  "html": {
8
8
  "types-syntax": "typescript",
@@ -18237,6 +18237,16 @@
18237
18237
  "doc-url": "https://v2.quasar.dev/vue-components/tree",
18238
18238
  "type": "boolean"
18239
18239
  },
18240
+ {
18241
+ "name": "no-transition",
18242
+ "value": {
18243
+ "kind": "expression",
18244
+ "type": "boolean"
18245
+ },
18246
+ "description": "Turn off transition effects when expanding/collapsing nodes; Also enhances perf by a lot as a side-effect; Recommended for big trees",
18247
+ "doc-url": "https://v2.quasar.dev/vue-components/tree",
18248
+ "type": "boolean"
18249
+ },
18240
18250
  {
18241
18251
  "name": "filter",
18242
18252
  "value": {
@@ -19260,11 +19270,6 @@
19260
19270
  "description": "Calls event.preventDefault() for touch events",
19261
19271
  "doc-url": "https://v2.quasar.dev/vue-directives/touch-pan"
19262
19272
  },
19263
- {
19264
- "name": "mightPrevent",
19265
- "description": "Required when you might call event.preventDefault() in your handler for touch events",
19266
- "doc-url": "https://v2.quasar.dev/vue-directives/touch-pan"
19267
- },
19268
19273
  {
19269
19274
  "name": "capture",
19270
19275
  "description": "Use capture for touchstart event",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "quasar",
3
- "version": "2.9.1",
3
+ "version": "2.9.2",
4
4
  "description": "Build high-performance VueJS user interfaces (SPA, PWA, SSR, Mobile and Desktop) in record time",
5
5
  "main": "dist/quasar.cjs.prod.js",
6
6
  "module": "dist/quasar.esm.prod.js",
@@ -1,64 +1,126 @@
1
- // import { mount } from '@cypress/vue'
2
- // import QBadge from '../QBadge.js'
1
+ import { mount } from '@cypress/vue'
2
+ import QBadge from '../QBadge.js'
3
3
 
4
- // const snapshotOptions = { customSnapshotsDir: '../src/components/badge/__tests__' }
4
+ const defaultOptions = {
5
+ label: 'simple badge'
6
+ }
7
+
8
+ const alignValues = [ 'top', 'middle', 'bottom' ]
9
+
10
+ function mountQBadge (options = {}) {
11
+ options.props = {
12
+ ...defaultOptions,
13
+ ...options.props
14
+ }
15
+
16
+ return mount(QBadge, options)
17
+ }
5
18
 
6
19
  describe('Badge API', () => {
7
20
  describe('Props', () => {
8
21
  describe('Category: content', () => {
9
22
  describe('(prop): floating', () => {
10
- it.skip(' ', () => {
11
- //
23
+ it('should render a floating badge', () => {
24
+ mountQBadge({
25
+ props: { floating: true }
26
+ })
27
+
28
+ cy.get('.q-badge')
29
+ .should('have.class', 'q-badge--floating')
12
30
  })
13
31
  })
14
32
 
15
33
  describe('(prop): multi-line', () => {
16
- it.skip(' ', () => {
17
- //
34
+ it('should render a content with multiple lines', () => {
35
+ mountQBadge({
36
+ props: { multiLine: true }
37
+ })
38
+
39
+ cy.get('.q-badge')
40
+ .should('have.class', 'q-badge--multi-line')
18
41
  })
19
42
  })
20
43
 
21
44
  describe('(prop): label', () => {
22
- it.skip(' ', () => {
23
- //
45
+ it('should render a label inside the badge', () => {
46
+ const label = 'Badge label'
47
+
48
+ mountQBadge({
49
+ props: { label }
50
+ })
51
+
52
+ cy.get('.q-badge')
53
+ .should('contain', label)
24
54
  })
25
55
  })
26
56
 
27
57
  describe('(prop): align', () => {
28
- it.skip(' ', () => {
29
- //
58
+ it(`should render a badge aligned based on defined values: ${ alignValues.join(', ') }`, () => {
59
+ mountQBadge()
60
+
61
+ // loop over alignValues
62
+ for (const align of alignValues) {
63
+ cy.get('.q-badge')
64
+ .then(() => Cypress.vueWrapper.setProps({ align }))
65
+ .should('have.css', 'vertical-align', align)
66
+ }
30
67
  })
31
68
  })
32
69
  })
33
70
 
34
71
  describe('Category: style', () => {
35
72
  describe('(prop): color', () => {
36
- it.skip(' ', () => {
37
- //
73
+ it('should change color based on Quasar Color Palette', () => {
74
+ mountQBadge({
75
+ props: { color: 'red' }
76
+ })
77
+
78
+ cy.get('.q-badge')
79
+ .should('have.class', 'bg-red')
38
80
  })
39
81
  })
40
82
 
41
83
  describe('(prop): text-color', () => {
42
- it.skip(' ', () => {
43
- //
84
+ it('should change text color based on Quasar Color Palette', () => {
85
+ mountQBadge({
86
+ props: { textColor: 'red' }
87
+ })
88
+
89
+ cy.get('.q-badge')
90
+ .should('have.class', 'text-red')
44
91
  })
45
92
  })
46
93
 
47
94
  describe('(prop): transparent', () => {
48
- it.skip(' ', () => {
49
- //
95
+ it('should have opacity style when "transparent" prop is true', () => {
96
+ mountQBadge({
97
+ props: { transparent: true }
98
+ })
99
+
100
+ cy.get('.q-badge')
101
+ .should('have.class', 'q-badge--transparent')
50
102
  })
51
103
  })
52
104
 
53
105
  describe('(prop): outline', () => {
54
- it.skip(' ', () => {
55
- //
106
+ it('should have a outline style when "outline" prop is true', () => {
107
+ mountQBadge({
108
+ props: { outline: true }
109
+ })
110
+
111
+ cy.get('.q-badge')
112
+ .should('have.class', 'q-badge--outline')
56
113
  })
57
114
  })
58
115
 
59
116
  describe('(prop): rounded', () => {
60
- it.skip(' ', () => {
61
- //
117
+ it('should have a rounded style when "rounded" prop is true', () => {
118
+ mountQBadge({
119
+ props: { rounded: true }
120
+ })
121
+
122
+ cy.get('.q-badge')
123
+ .should('have.class', 'q-badge--rounded')
62
124
  })
63
125
  })
64
126
  })
@@ -66,8 +128,21 @@ describe('Badge API', () => {
66
128
 
67
129
  describe('Slots', () => {
68
130
  describe('(slot): default', () => {
69
- it.skip(' ', () => {
70
- //
131
+ it('should display the default slot content', () => {
132
+ const label = 'Badge label'
133
+
134
+ mountQBadge({
135
+ props: {
136
+ label: undefined
137
+ },
138
+
139
+ slots: {
140
+ default: label
141
+ }
142
+ })
143
+
144
+ cy.get('.q-badge')
145
+ .should('have.text', label)
71
146
  })
72
147
  })
73
148
  })
@@ -166,7 +166,7 @@ export default function (props, emit, emitValue, inputRef) {
166
166
  '^'
167
167
  + unmask.join('')
168
168
  + '(' + (unmaskChar === '' ? '.' : '[^' + unmaskChar + ']') + '+)?'
169
- + '$'
169
+ + '[' + unmaskChar + ']*$'
170
170
  ),
171
171
  extractLast = extract.length - 1,
172
172
  extractMatcher = extract.map((re, index) => {
@@ -111,10 +111,7 @@ export default createComponent({
111
111
 
112
112
  const directives = computed(() => {
113
113
  // if props.disable === false
114
- const modifiers = {
115
- down: true,
116
- mightPrevent: true
117
- }
114
+ const modifiers = { down: true }
118
115
 
119
116
  if (props.noMouse !== true) {
120
117
  modifiers.mouse = true
@@ -572,8 +572,8 @@ export default createComponent({
572
572
 
573
573
  recalculateScroll()
574
574
 
575
- // if it's a QTab
576
- if (tabData.routeData === void 0) {
575
+ // if it's a QTab or we don't have Vue Router
576
+ if (tabData.routeData === void 0 || proxy.$route === void 0) {
577
577
  // we should position to the currently active tab (if any)
578
578
  registerScrollToTabTimeout(() => {
579
579
  if (scrollable.value === true) {
@@ -68,6 +68,7 @@ export default createComponent({
68
68
 
69
69
  duration: Number,
70
70
  noConnectors: Boolean,
71
+ noTransition: Boolean,
71
72
 
72
73
  noNodesLabel: String,
73
74
  noResultsLabel: String
@@ -140,7 +141,6 @@ export default createComponent({
140
141
  const
141
142
  key = node[ props.nodeKey ],
142
143
  isParent = node[ props.childrenKey ] && node[ props.childrenKey ].length > 0,
143
- isLeaf = isParent !== true,
144
144
  selectable = node.disabled !== true && hasSelection.value === true && node.selectable !== false,
145
145
  expandable = node.disabled !== true && node.expandable !== false,
146
146
  hasTicking = tickStrategy !== 'none',
@@ -166,7 +166,6 @@ export default createComponent({
166
166
  key,
167
167
  parent,
168
168
  isParent,
169
- isLeaf,
170
169
  lazy: localLazy,
171
170
  disabled: node.disabled,
172
171
  link: node.disabled !== true && (selectable === true || (expandable === true && (isParent === true || localLazy === true))),
@@ -186,7 +185,7 @@ export default createComponent({
186
185
  leafTicking,
187
186
  ticked: strictTicking === true
188
187
  ? innerTicked.value.includes(key)
189
- : (isLeaf === true ? innerTicked.value.includes(key) : false)
188
+ : (isParent === true ? false : innerTicked.value.includes(key))
190
189
  }
191
190
 
192
191
  meta[ key ] = m
@@ -586,23 +585,37 @@ export default createComponent({
586
585
  ]),
587
586
 
588
587
  isParent === true
589
- ? h(QSlideTransition, {
590
- duration: props.duration,
591
- onShow,
592
- onHide
593
- }, () => withDirectives(
594
- h('div', {
595
- class: 'q-tree__node-collapsible' + textColorClass.value,
596
- key: `${ key }__q`
597
- }, [
598
- body,
599
- h('div', {
600
- class: 'q-tree__children'
601
- + (m.disabled === true ? ' q-tree__node--disabled' : '')
602
- }, children)
603
- ]),
604
- [ [ vShow, m.expanded ] ]
605
- ))
588
+ ? (
589
+ props.noTransition === true
590
+ ? h('div', {
591
+ class: 'q-tree__node-collapsible' + textColorClass.value,
592
+ key: `${ key }__q`
593
+ }, [
594
+ body,
595
+ h('div', {
596
+ class: 'q-tree__children'
597
+ + (m.disabled === true ? ' q-tree__node--disabled' : '')
598
+ }, m.expanded ? children : null)
599
+ ])
600
+
601
+ : h(QSlideTransition, {
602
+ duration: props.duration,
603
+ onShow,
604
+ onHide
605
+ }, () => withDirectives(
606
+ h('div', {
607
+ class: 'q-tree__node-collapsible' + textColorClass.value,
608
+ key: `${ key }__q`
609
+ }, [
610
+ body,
611
+ h('div', {
612
+ class: 'q-tree__children'
613
+ + (m.disabled === true ? ' q-tree__node--disabled' : '')
614
+ }, children)
615
+ ]),
616
+ [ [ vShow, m.expanded ] ]
617
+ ))
618
+ )
606
619
  : body
607
620
  ])
608
621
  }
@@ -126,6 +126,13 @@
126
126
  "category": "behavior"
127
127
  },
128
128
 
129
+ "no-transition": {
130
+ "type": "Boolean",
131
+ "desc": "Turn off transition effects when expanding/collapsing nodes; Also enhances perf by a lot as a side-effect; Recommended for big trees",
132
+ "category": "behavior",
133
+ "addedIn": "v2.9.2"
134
+ },
135
+
129
136
  "filter": {
130
137
  "type": "String",
131
138
  "desc": "The text value to be used for filtering nodes",
@@ -126,9 +126,16 @@ export default createDirective(__QUASAR_SSR_SERVER__
126
126
 
127
127
  el.__qtouchhold = ctx
128
128
 
129
- modifiers.mouse === true && addEvt(ctx, 'main', [
130
- [ el, 'mousedown', 'mouseStart', `passive${ modifiers.mouseCapture === true ? 'Capture' : '' }` ]
131
- ])
129
+ if (modifiers.mouse === true) {
130
+ // account for UMD too where modifiers will be lowercased to work
131
+ const capture = modifiers.mouseCapture === true || modifiers.mousecapture === true
132
+ ? 'Capture'
133
+ : ''
134
+
135
+ addEvt(ctx, 'main', [
136
+ [ el, 'mousedown', 'mouseStart', `passive${ capture }` ]
137
+ ])
138
+ }
132
139
 
133
140
  client.has.touch === true && addEvt(ctx, 'main', [
134
141
  [ el, 'touchstart', 'touchStart', `passive${ modifiers.capture === true ? 'Capture' : '' }` ],
@@ -188,7 +188,8 @@ export default createDirective(__QUASAR_SSR_SERVER__
188
188
  */
189
189
  if (
190
190
  ctx.direction.all !== true
191
- && (mouseEvent !== true || ctx.modifiers.mouseAllDir !== true)
191
+ // account for UMD too where modifiers will be lowercased to work
192
+ && (mouseEvent !== true || (ctx.modifiers.mouseAllDir !== true && ctx.modifiers.mousealldir !== true))
192
193
  ) {
193
194
  const clone = evt.type.indexOf('mouse') > -1
194
195
  ? new MouseEvent(evt.type, evt)
@@ -255,9 +256,12 @@ export default createDirective(__QUASAR_SSR_SERVER__
255
256
  const start = () => {
256
257
  handleEvent(evt, isMouseEvt)
257
258
 
258
- if (modifiers.preserveCursor !== true) {
259
+ let cursor
260
+ if (modifiers.preserveCursor !== true && modifiers.preservecursor !== true) {
261
+ cursor = document.documentElement.style.cursor || ''
259
262
  document.documentElement.style.cursor = 'grabbing'
260
263
  }
264
+
261
265
  isMouseEvt === true && document.body.classList.add('no-pointer-events--children')
262
266
  document.body.classList.add('non-selectable')
263
267
  clearSelection()
@@ -265,9 +269,10 @@ export default createDirective(__QUASAR_SSR_SERVER__
265
269
  ctx.styleCleanup = withDelayedFn => {
266
270
  ctx.styleCleanup = void 0
267
271
 
268
- if (modifiers.preserveCursor !== true) {
269
- document.documentElement.style.cursor = ''
272
+ if (cursor !== void 0) {
273
+ document.documentElement.style.cursor = cursor
270
274
  }
275
+
271
276
  document.body.classList.remove('non-selectable')
272
277
 
273
278
  if (isMouseEvt === true) {
@@ -315,7 +320,8 @@ export default createDirective(__QUASAR_SSR_SERVER__
315
320
 
316
321
  if (
317
322
  ctx.direction.all === true
318
- || (isMouseEvt === true && ctx.modifiers.mouseAllDir === true)
323
+ // account for UMD too where modifiers will be lowercased to work
324
+ || (isMouseEvt === true && (ctx.modifiers.mouseAllDir === true || ctx.modifiers.mousealldir === true))
319
325
  ) {
320
326
  start()
321
327
  ctx.event.detected = true
@@ -382,9 +388,16 @@ export default createDirective(__QUASAR_SSR_SERVER__
382
388
 
383
389
  el.__qtouchpan = ctx
384
390
 
385
- modifiers.mouse === true && addEvt(ctx, 'main', [
386
- [ el, 'mousedown', 'mouseStart', `passive${ modifiers.mouseCapture === true ? 'Capture' : '' }` ]
387
- ])
391
+ if (modifiers.mouse === true) {
392
+ // account for UMD too where modifiers will be lowercased to work
393
+ const capture = modifiers.mouseCapture === true || modifiers.mousecapture === true
394
+ ? 'Capture'
395
+ : ''
396
+
397
+ addEvt(ctx, 'main', [
398
+ [ el, 'mousedown', 'mouseStart', `passive${ capture }` ]
399
+ ])
400
+ }
388
401
 
389
402
  client.has.touch === true && addEvt(ctx, 'main', [
390
403
  [ el, 'touchstart', 'touchStart', `passive${ modifiers.capture === true ? 'Capture' : '' }` ],
@@ -123,11 +123,6 @@
123
123
  "desc": "Calls event.preventDefault() for touch events"
124
124
  },
125
125
 
126
- "mightPrevent": {
127
- "type": "Boolean",
128
- "desc": "Required when you might call event.preventDefault() in your handler for touch events"
129
- },
130
-
131
126
  "capture": {
132
127
  "type": "Boolean",
133
128
  "desc": "Use capture for touchstart event"
@@ -203,18 +203,32 @@ export default createDirective(__QUASAR_SSR_SERVER__
203
203
 
204
204
  el.__qtouchrepeat = ctx
205
205
 
206
- modifiers.mouse === true && addEvt(ctx, 'main', [
207
- [ el, 'mousedown', 'mouseStart', `passive${ modifiers.mouseCapture === true ? 'Capture' : '' }` ]
208
- ])
206
+ if (modifiers.mouse === true) {
207
+ // account for UMD too where modifiers will be lowercased to work
208
+ const capture = modifiers.mouseCapture === true || modifiers.mousecapture === true
209
+ ? 'Capture'
210
+ : ''
211
+
212
+ addEvt(ctx, 'main', [
213
+ [ el, 'mousedown', 'mouseStart', `passive${ capture }` ]
214
+ ])
215
+ }
209
216
 
210
217
  client.has.touch === true && addEvt(ctx, 'main', [
211
218
  [ el, 'touchstart', 'touchStart', `passive${ modifiers.capture === true ? 'Capture' : '' }` ],
212
219
  [ el, 'touchend', 'noop', 'passiveCapture' ]
213
220
  ])
214
221
 
215
- keyboard.length > 0 && addEvt(ctx, 'main', [
216
- [ el, 'keydown', 'keyboardStart', `notPassive${ modifiers.keyCapture === true ? 'Capture' : '' }` ]
217
- ])
222
+ if (keyboard.length !== 0) {
223
+ // account for UMD too where modifiers will be lowercased to work
224
+ const capture = modifiers.keyCapture === true || modifiers.keycapture === true
225
+ ? 'Capture'
226
+ : ''
227
+
228
+ addEvt(ctx, 'main', [
229
+ [ el, 'keydown', 'keyboardStart', `notPassive${ capture }` ]
230
+ ])
231
+ }
218
232
  },
219
233
 
220
234
  updated (el, { oldValue, value }) {
@@ -228,9 +228,16 @@ export default createDirective(__QUASAR_SSR_SERVER__
228
228
 
229
229
  el.__qtouchswipe = ctx
230
230
 
231
- modifiers.mouse === true && addEvt(ctx, 'main', [
232
- [ el, 'mousedown', 'mouseStart', `passive${ mouseCapture }` ]
233
- ])
231
+ if (modifiers.mouse === true) {
232
+ // account for UMD too where modifiers will be lowercased to work
233
+ const capture = modifiers.mouseCapture === true || modifiers.mousecapture === true
234
+ ? 'Capture'
235
+ : ''
236
+
237
+ addEvt(ctx, 'main', [
238
+ [ el, 'mousedown', 'mouseStart', `passive${ capture }` ]
239
+ ])
240
+ }
234
241
 
235
242
  client.has.touch === true && addEvt(ctx, 'main', [
236
243
  [ el, 'touchstart', 'touchStart', `passive${ modifiers.capture === true ? 'Capture' : '' }` ],
@@ -154,9 +154,13 @@ function normalizeOptions (options) {
154
154
  fill: typeof options.fill === 'string' && options.fill.length > 0 ? options.fill : 'none',
155
155
 
156
156
  resize: options.resize === true,
157
- useCSS: options.useCSS === true,
158
- hideFromClone: options.hideFromClone === true,
159
- keepToClone: options.keepToClone === true,
157
+
158
+ // account for UMD too where modifiers will be lowercased to work
159
+ useCSS: options.useCSS === true || options.usecss === true,
160
+ // account for UMD too where modifiers will be lowercased to work
161
+ hideFromClone: options.hideFromClone === true || options.hidefromclone === true,
162
+ // account for UMD too where modifiers will be lowercased to work
163
+ keepToClone: options.keepToClone === true || options.keeptoclone === true,
160
164
 
161
165
  tween: options.tween === true,
162
166
  tweenFromOpacity: isNaN(options.tweenFromOpacity) === true ? 0.6 : parseFloat(options.tweenFromOpacity),