quasar 1.16.3 → 1.17.0

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 (296) hide show
  1. package/dist/api/BottomSheet.json +2 -2
  2. package/dist/api/Loading.json +0 -2
  3. package/dist/api/Notify.json +15 -15
  4. package/dist/api/QAvatar.json +1 -1
  5. package/dist/api/QBreadcrumbsEl.json +32 -11
  6. package/dist/api/QBtn.json +35 -14
  7. package/dist/api/QBtnDropdown.json +36 -15
  8. package/dist/api/QBtnToggle.json +1 -1
  9. package/dist/api/QCarousel.json +7 -7
  10. package/dist/api/QCarouselSlide.json +2 -2
  11. package/dist/api/QChatMessage.json +1 -5
  12. package/dist/api/QChip.json +4 -4
  13. package/dist/api/QColor.json +6 -0
  14. package/dist/api/QDialog.json +7 -1
  15. package/dist/api/QExpansionItem.json +34 -13
  16. package/dist/api/QFab.json +34 -2
  17. package/dist/api/QFabAction.json +9 -1
  18. package/dist/api/QField.json +80 -6
  19. package/dist/api/QFile.json +80 -6
  20. package/dist/api/QImg.json +2 -2
  21. package/dist/api/QInnerLoading.json +32 -0
  22. package/dist/api/QInput.json +82 -6
  23. package/dist/api/QItem.json +31 -10
  24. package/dist/api/QOptionGroup.json +58 -1
  25. package/dist/api/QPagination.json +4 -4
  26. package/dist/api/QParallax.json +1 -1
  27. package/dist/api/QPopupEdit.json +14 -7
  28. package/dist/api/QPullToRefresh.json +1 -1
  29. package/dist/api/QRange.json +581 -96
  30. package/dist/api/QRating.json +3 -3
  31. package/dist/api/QRouteTab.json +32 -12
  32. package/dist/api/QScrollArea.json +188 -20
  33. package/dist/api/QSelect.json +81 -9
  34. package/dist/api/QSeparator.json +1 -1
  35. package/dist/api/QSlider.json +499 -34
  36. package/dist/api/QStep.json +4 -4
  37. package/dist/api/QStepper.json +4 -4
  38. package/dist/api/QTab.json +1 -1
  39. package/dist/api/QTable.json +4 -4
  40. package/dist/api/QTabs.json +9 -0
  41. package/dist/api/QTimelineEntry.json +2 -2
  42. package/dist/api/QToggle.json +1 -1
  43. package/dist/api/QTree.json +7 -1
  44. package/dist/api/QVideo.json +10 -0
  45. package/dist/icon-set/bootstrap-icons.umd.min.js +1 -1
  46. package/dist/icon-set/eva-icons.umd.min.js +1 -1
  47. package/dist/icon-set/fontawesome-v5-pro.umd.min.js +1 -1
  48. package/dist/icon-set/fontawesome-v5.umd.min.js +1 -1
  49. package/dist/icon-set/ionicons-v4.umd.min.js +1 -1
  50. package/dist/icon-set/line-awesome.umd.min.js +1 -1
  51. package/dist/icon-set/material-icons-outlined.umd.min.js +1 -1
  52. package/dist/icon-set/material-icons-round.umd.min.js +1 -1
  53. package/dist/icon-set/material-icons-sharp.umd.min.js +1 -1
  54. package/dist/icon-set/material-icons.umd.min.js +1 -1
  55. package/dist/icon-set/mdi-v3.umd.min.js +1 -1
  56. package/dist/icon-set/mdi-v4.umd.min.js +1 -1
  57. package/dist/icon-set/mdi-v5.umd.min.js +1 -1
  58. package/dist/icon-set/mdi-v6.umd.min.js +1 -1
  59. package/dist/icon-set/svg-bootstrap-icons.umd.min.js +1 -1
  60. package/dist/icon-set/svg-eva-icons.umd.min.js +1 -1
  61. package/dist/icon-set/svg-fontawesome-v5.umd.min.js +1 -1
  62. package/dist/icon-set/svg-ionicons-v4.umd.min.js +1 -1
  63. package/dist/icon-set/svg-ionicons-v5.umd.min.js +1 -1
  64. package/dist/icon-set/svg-ionicons-v6.umd.min.js +6 -0
  65. package/dist/icon-set/svg-line-awesome.umd.min.js +1 -1
  66. package/dist/icon-set/svg-material-icons-outlined.umd.min.js +1 -1
  67. package/dist/icon-set/svg-material-icons-round.umd.min.js +1 -1
  68. package/dist/icon-set/svg-material-icons-sharp.umd.min.js +1 -1
  69. package/dist/icon-set/svg-material-icons.umd.min.js +1 -1
  70. package/dist/icon-set/svg-mdi-v4.umd.min.js +1 -1
  71. package/dist/icon-set/svg-mdi-v5.umd.min.js +1 -1
  72. package/dist/icon-set/svg-mdi-v6.umd.min.js +1 -1
  73. package/dist/icon-set/svg-themify.umd.min.js +1 -1
  74. package/dist/icon-set/themify.umd.min.js +1 -1
  75. package/dist/lang/ar.umd.min.js +2 -2
  76. package/dist/lang/az-latn.umd.min.js +1 -1
  77. package/dist/lang/bg.umd.min.js +1 -1
  78. package/dist/lang/ca.umd.min.js +1 -1
  79. package/dist/lang/cs.umd.min.js +1 -1
  80. package/dist/lang/da.umd.min.js +1 -1
  81. package/dist/lang/de.umd.min.js +1 -1
  82. package/dist/lang/el.umd.min.js +1 -1
  83. package/dist/lang/en-gb.umd.min.js +1 -1
  84. package/dist/lang/en-us.umd.min.js +1 -1
  85. package/dist/lang/eo.umd.min.js +1 -1
  86. package/dist/lang/es.umd.min.js +1 -1
  87. package/dist/lang/et.umd.min.js +1 -1
  88. package/dist/lang/fa-ir.umd.min.js +1 -1
  89. package/dist/lang/fa.umd.min.js +1 -1
  90. package/dist/lang/fi.umd.min.js +1 -1
  91. package/dist/lang/fr.umd.min.js +2 -2
  92. package/dist/lang/gn.umd.min.js +1 -1
  93. package/dist/lang/he.umd.min.js +1 -1
  94. package/dist/lang/hr.umd.min.js +1 -1
  95. package/dist/lang/hu.umd.min.js +1 -1
  96. package/dist/lang/id.umd.min.js +1 -1
  97. package/dist/lang/is.umd.min.js +1 -1
  98. package/dist/lang/it.umd.min.js +1 -1
  99. package/dist/lang/ja.umd.min.js +1 -1
  100. package/dist/lang/km.umd.min.js +1 -1
  101. package/dist/lang/ko-kr.umd.min.js +1 -1
  102. package/dist/lang/kur-ckb.umd.min.js +1 -1
  103. package/dist/lang/lu.umd.min.js +1 -1
  104. package/dist/lang/lv.umd.min.js +1 -1
  105. package/dist/lang/ml.umd.min.js +1 -1
  106. package/dist/lang/ms.umd.min.js +1 -1
  107. package/dist/lang/nb-no.umd.min.js +1 -1
  108. package/dist/lang/nl.umd.min.js +1 -1
  109. package/dist/lang/pl.umd.min.js +1 -1
  110. package/dist/lang/pt-br.umd.min.js +1 -1
  111. package/dist/lang/pt.umd.min.js +1 -1
  112. package/dist/lang/ro.umd.min.js +1 -1
  113. package/dist/lang/ru.umd.min.js +1 -1
  114. package/dist/lang/sk.umd.min.js +1 -1
  115. package/dist/lang/sl.umd.min.js +1 -1
  116. package/dist/lang/sr.umd.min.js +2 -2
  117. package/dist/lang/sv.umd.min.js +1 -1
  118. package/dist/lang/ta.umd.min.js +1 -1
  119. package/dist/lang/th.umd.min.js +1 -1
  120. package/dist/lang/tr.umd.min.js +1 -1
  121. package/dist/lang/ug.umd.min.js +2 -2
  122. package/dist/lang/uk.umd.min.js +1 -1
  123. package/dist/lang/vi.umd.min.js +1 -1
  124. package/dist/lang/zh-hans.umd.min.js +2 -2
  125. package/dist/lang/zh-hant.umd.min.js +2 -2
  126. package/dist/quasar.addon.css +1 -1
  127. package/dist/quasar.addon.rtl.css +1 -1
  128. package/dist/quasar.common.js +2 -2
  129. package/dist/quasar.css +376 -225
  130. package/dist/quasar.esm.js +2 -2
  131. package/dist/quasar.ie.polyfills.js +1 -1
  132. package/dist/quasar.ie.polyfills.umd.min.js +1 -1
  133. package/dist/quasar.min.css +1 -1
  134. package/dist/quasar.rtl.css +508 -301
  135. package/dist/quasar.rtl.min.css +1 -1
  136. package/dist/quasar.sass +324 -208
  137. package/dist/quasar.styl +324 -208
  138. package/dist/quasar.umd.js +3098 -1836
  139. package/dist/quasar.umd.min.js +2 -2
  140. package/dist/quasar.umd.modern.js +3057 -1817
  141. package/dist/quasar.umd.modern.min.js +2 -2
  142. package/dist/transform-asset-urls.json +20 -0
  143. package/dist/types/index.d.ts +421 -103
  144. package/dist/types/utils/scroll.d.ts +1 -0
  145. package/dist/vetur/quasar-attributes.json +313 -89
  146. package/dist/vetur/quasar-tags.json +74 -18
  147. package/dist/web-types/web-types.json +1289 -259
  148. package/icon-set/svg-ionicons-v6.js +225 -0
  149. package/lang/ar.js +1 -1
  150. package/lang/fa-ir.js +3 -1
  151. package/lang/fa.js +3 -1
  152. package/lang/fr.js +1 -1
  153. package/lang/index.json +1 -1
  154. package/lang/kur-ckb.js +2 -2
  155. package/lang/sr.js +4 -4
  156. package/lang/ug.js +48 -46
  157. package/lang/zh-hans.js +1 -1
  158. package/lang/zh-hant.js +18 -18
  159. package/package.json +1 -1
  160. package/src/api.extends.json +1 -2
  161. package/src/components/breadcrumbs/QBreadcrumbs.js +15 -11
  162. package/src/components/breadcrumbs/QBreadcrumbs.sass +0 -3
  163. package/src/components/breadcrumbs/QBreadcrumbs.styl +0 -3
  164. package/src/components/breadcrumbs/QBreadcrumbsEl.js +25 -9
  165. package/src/components/btn/QBtn.js +3 -3
  166. package/src/components/btn-dropdown/QBtnDropdown.sass +2 -0
  167. package/src/components/btn-dropdown/QBtnDropdown.styl +2 -0
  168. package/src/components/carousel/QCarousel.js +6 -2
  169. package/src/components/carousel/QCarousel.json +9 -1
  170. package/src/components/carousel/QCarouselSlide.json +2 -2
  171. package/src/components/chat/QChatMessage.json +1 -1
  172. package/src/components/color/QColor.js +100 -85
  173. package/src/components/color/QColor.json +7 -0
  174. package/src/components/color/QColor.sass +14 -24
  175. package/src/components/color/QColor.styl +14 -24
  176. package/src/components/date/QDate.js +7 -1
  177. package/src/components/date/QDate.sass +2 -0
  178. package/src/components/date/QDate.styl +2 -0
  179. package/src/components/dialog/QDialog.js +8 -4
  180. package/src/components/dialog/QDialog.json +8 -1
  181. package/src/components/drawer/QDrawer.js +16 -15
  182. package/src/components/editor/QEditor.js +2 -2
  183. package/src/components/editor/QEditor.sass +13 -1
  184. package/src/components/editor/QEditor.styl +13 -1
  185. package/src/components/expansion-item/QExpansionItem.js +13 -11
  186. package/src/components/fab/QFab.js +20 -11
  187. package/src/components/fab/QFab.json +35 -0
  188. package/src/components/fab/QFabAction.js +16 -9
  189. package/src/components/fab/QFabAction.json +10 -0
  190. package/src/components/field/QField.js +28 -23
  191. package/src/components/field/__QField.json +72 -8
  192. package/src/components/file/QFile.js +12 -4
  193. package/src/components/file/QFile.sass +4 -3
  194. package/src/components/file/QFile.styl +4 -3
  195. package/src/components/footer/QFooter.js +1 -1
  196. package/src/components/form/QForm.js +1 -1
  197. package/src/components/header/QHeader.js +1 -1
  198. package/src/components/icon/QIcon.js +54 -49
  199. package/src/components/img/QImg.json +2 -2
  200. package/src/components/infinite-scroll/QInfiniteScroll.js +49 -36
  201. package/src/components/inner-loading/QInnerLoading.js +54 -22
  202. package/src/components/inner-loading/QInnerLoading.json +29 -0
  203. package/src/components/inner-loading/QInnerLoading.sass +3 -0
  204. package/src/components/inner-loading/QInnerLoading.styl +3 -0
  205. package/src/components/item/QItem.js +9 -15
  206. package/src/components/linear-progress/QLinearProgress.js +6 -2
  207. package/src/components/menu/QMenu.js +5 -1
  208. package/src/components/option-group/QOptionGroup.js +32 -22
  209. package/src/components/option-group/QOptionGroup.json +50 -1
  210. package/src/components/parallax/QParallax.js +3 -0
  211. package/src/components/parallax/QParallax.json +1 -1
  212. package/src/components/popup-edit/QPopupEdit.js +41 -16
  213. package/src/components/popup-edit/QPopupEdit.json +15 -8
  214. package/src/components/range/QRange.js +223 -278
  215. package/src/components/range/QRange.json +11 -122
  216. package/src/components/rating/QRating.js +56 -38
  217. package/src/components/rating/QRating.json +3 -3
  218. package/src/components/rating/QRating.sass +8 -6
  219. package/src/components/rating/QRating.styl +8 -6
  220. package/src/components/resize-observer/QResizeObserver.js +15 -10
  221. package/src/components/scroll-area/QScrollArea.js +342 -126
  222. package/src/components/scroll-area/QScrollArea.json +164 -20
  223. package/src/components/scroll-area/QScrollArea.sass +4 -0
  224. package/src/components/scroll-area/QScrollArea.styl +4 -0
  225. package/src/components/scroll-observer/QScrollObserver.js +9 -2
  226. package/src/components/select/QSelect.js +8 -2
  227. package/src/components/separator/QSeparator.js +0 -1
  228. package/src/components/separator/QSeparator.json +1 -1
  229. package/src/components/slider/QSlider.js +97 -140
  230. package/src/components/slider/QSlider.json +1 -122
  231. package/src/components/slider/QSlider.sass +205 -139
  232. package/src/components/slider/QSlider.styl +205 -139
  233. package/src/components/slider/slider-utils.js +468 -123
  234. package/src/components/slider/slider-utils.json +546 -0
  235. package/src/components/stepper/QStepper.js +1 -1
  236. package/src/components/stepper/QStepper.sass +25 -26
  237. package/src/components/stepper/QStepper.styl +25 -26
  238. package/src/components/table/QTable.sass +3 -0
  239. package/src/components/table/QTable.styl +3 -0
  240. package/src/components/tabs/QRouteTab.js +13 -13
  241. package/src/components/tabs/QRouteTab.json +0 -7
  242. package/src/components/tabs/QTab.js +71 -20
  243. package/src/components/tabs/QTabs.js +237 -52
  244. package/src/components/tabs/QTabs.json +8 -0
  245. package/src/components/tabs/QTabs.sass +6 -6
  246. package/src/components/tabs/QTabs.styl +6 -6
  247. package/src/components/time/QTime.js +6 -2
  248. package/src/components/timeline/QTimelineEntry.json +1 -1
  249. package/src/components/tree/QTree.js +10 -6
  250. package/src/components/tree/QTree.json +5 -0
  251. package/src/components/tree/QTree.sass +58 -4
  252. package/src/components/tree/QTree.styl +58 -4
  253. package/src/components/uploader/QUploaderBase.js +15 -19
  254. package/src/components/video/QVideo.js +4 -1
  255. package/src/components/video/QVideo.json +11 -0
  256. package/src/components/virtual-scroll/QVirtualScroll.sass +1 -0
  257. package/src/components/virtual-scroll/QVirtualScroll.styl +1 -0
  258. package/src/css/core/helpers.sass +3 -0
  259. package/src/css/core/helpers.styl +3 -0
  260. package/src/css/core/positioning.sass +5 -0
  261. package/src/css/core/positioning.styl +5 -0
  262. package/src/css/variables.sass +4 -6
  263. package/src/css/variables.styl +4 -6
  264. package/src/directives/Scroll.js +2 -2
  265. package/src/directives/ScrollFire.js +1 -0
  266. package/src/ie-compat/ie.js +13 -13
  267. package/src/install.js +1 -1
  268. package/src/lang.js +7 -4
  269. package/src/mixins/anchor.js +3 -13
  270. package/src/mixins/btn.js +30 -38
  271. package/src/mixins/btn.json +26 -11
  272. package/src/mixins/file.js +27 -5
  273. package/src/mixins/fullscreen.js +16 -4
  274. package/src/mixins/portal.js +10 -10
  275. package/src/mixins/router-link.js +88 -14
  276. package/src/mixins/router-link.json +26 -10
  277. package/src/mixins/validate.js +33 -15
  278. package/src/mixins/virtual-scroll.js +40 -42
  279. package/src/plugins/AppFullscreen.js +41 -16
  280. package/src/plugins/BottomSheet.json +1 -1
  281. package/src/plugins/Cookies.js +1 -1
  282. package/src/plugins/Loading.js +8 -0
  283. package/src/plugins/LoadingBar.js +9 -0
  284. package/src/plugins/Notify.js +351 -333
  285. package/src/plugins/Notify.json +10 -10
  286. package/src/plugins/Notify.sass +9 -3
  287. package/src/plugins/Notify.styl +9 -3
  288. package/src/utils/clone.js +53 -4
  289. package/src/utils/date.js +134 -69
  290. package/src/utils/dom.js +28 -9
  291. package/src/utils/extend.js +2 -2
  292. package/src/utils/focus-manager.js +8 -10
  293. package/src/utils/global-dialog.js +18 -1
  294. package/src/utils/is.js +2 -2
  295. package/src/utils/morph.js +2 -12
  296. package/src/utils/scroll.js +71 -35
@@ -39,7 +39,7 @@
39
39
  position: absolute
40
40
  top: -3px
41
41
  bottom: 50%
42
- width: 35px
42
+ width: 31px
43
43
  left: -35px
44
44
  border-left: 1px solid currentColor
45
45
  border-bottom: 1px solid currentColor
@@ -84,27 +84,35 @@
84
84
  &__node--selected .q-tree__node-header-content
85
85
  color: $grey
86
86
 
87
- &__icon, &__node-header-content .q-icon, &__spinner
87
+ &__icon,
88
+ &__node-header-content .q-icon
88
89
  font-size: 21px
89
90
 
90
91
  &__img
91
92
  height: 42px
93
+ border-radius: 2px
92
94
 
93
- &__avatar, &__node-header-content .q-avatar
95
+ &__avatar,
96
+ &__node-header-content .q-avatar
94
97
  font-size: 28px
95
98
  border-radius: 50%
96
99
  width: 28px
97
100
  height: 28px
98
101
 
99
- &__arrow, &__spinner
102
+ &__arrow,
103
+ &__spinner
100
104
  font-size: 16px
101
105
 
102
106
  &__arrow
103
107
  transition: transform .3s
108
+ margin-right: 4px
104
109
 
105
110
  &--rotate
106
111
  transform: rotate3d(0, 0, 1, 90deg)
107
112
 
113
+ &__tickbox
114
+ margin-right: 4px
115
+
108
116
  // remove connectors before root
109
117
  > .q-tree__node
110
118
  padding: 0
@@ -123,6 +131,52 @@
123
131
  .q-tree__node-body:after
124
132
  display: none !important
125
133
 
134
+ &--dense
135
+ > .q-tree__node--child > .q-tree__node-header
136
+ padding-left: 1px
137
+
138
+ .q-tree
139
+ &__arrow,
140
+ &__spinner
141
+ margin-right: 1px
142
+
143
+ &__img
144
+ height: 32px
145
+
146
+ &__tickbox
147
+ margin-right: 3px
148
+
149
+ &__node
150
+ padding: 0
151
+ &:after
152
+ top: 0
153
+ left: -8px
154
+
155
+ &__node-header
156
+ margin-top: 0
157
+ padding: 1px
158
+ &:before
159
+ top: 0
160
+ left: -8px
161
+ width: 8px
162
+
163
+ &__node--child
164
+ padding-left: 17px
165
+ > .q-tree__node-header:before
166
+ left: -25px
167
+ width: 21px
168
+
169
+ &__node-body
170
+ padding: 0 0 2px
171
+
172
+ &__node--parent > .q-tree__node-collapsible > .q-tree__node-body
173
+ padding: 0 0 2px 20px
174
+ &:after
175
+ left: 8px
176
+
177
+ &__children
178
+ padding-left: 16px
179
+
126
180
  [dir=rtl]
127
181
  .q-tree__arrow
128
182
  transform: rotate3d(0, 0, 1, 180deg) #{"/* rtl:ignore */"}
@@ -39,7 +39,7 @@
39
39
  position: absolute
40
40
  top: -3px
41
41
  bottom: 50%
42
- width: 35px
42
+ width: 31px
43
43
  left: -35px
44
44
  border-left: 1px solid currentColor
45
45
  border-bottom: 1px solid currentColor
@@ -84,27 +84,35 @@
84
84
  &__node--selected .q-tree__node-header-content
85
85
  color: $grey
86
86
 
87
- &__icon, &__node-header-content .q-icon, &__spinner
87
+ &__icon,
88
+ &__node-header-content .q-icon
88
89
  font-size: 21px
89
90
 
90
91
  &__img
91
92
  height: 42px
93
+ border-radius: 2px
92
94
 
93
- &__avatar, &__node-header-content .q-avatar
95
+ &__avatar,
96
+ &__node-header-content .q-avatar
94
97
  font-size: 28px
95
98
  border-radius: 50%
96
99
  width: 28px
97
100
  height: 28px
98
101
 
99
- &__arrow, &__spinner
102
+ &__arrow,
103
+ &__spinner
100
104
  font-size: 16px
101
105
 
102
106
  &__arrow
103
107
  transition: transform .3s
108
+ margin-right: 4px
104
109
 
105
110
  &--rotate
106
111
  transform: rotate3d(0, 0, 1, 90deg)
107
112
 
113
+ &__tickbox
114
+ margin-right: 4px
115
+
108
116
  // remove connectors before root
109
117
  > .q-tree__node
110
118
  padding: 0
@@ -123,6 +131,52 @@
123
131
  .q-tree__node-body:after
124
132
  display: none !important
125
133
 
134
+ &--dense
135
+ > .q-tree__node--child > .q-tree__node-header
136
+ padding-left: 1px
137
+
138
+ .q-tree
139
+ &__arrow,
140
+ &__spinner
141
+ margin-right: 1px
142
+
143
+ &__img
144
+ height: 32px
145
+
146
+ &__tickbox
147
+ margin-right: 3px
148
+
149
+ &__node
150
+ padding: 0
151
+ &:after
152
+ top: 0
153
+ left: -8px
154
+
155
+ &__node-header
156
+ margin-top: 0
157
+ padding: 1px
158
+ &:before
159
+ top: 0
160
+ left: -8px
161
+ width: 8px
162
+
163
+ &__node--child
164
+ padding-left: 17px
165
+ > .q-tree__node-header:before
166
+ left: -25px
167
+ width: 21px
168
+
169
+ &__node-body
170
+ padding: 0 0 2px
171
+
172
+ &__node--parent > .q-tree__node-collapsible > .q-tree__node-body
173
+ padding: 0 0 2px 20px
174
+ &:after
175
+ left: 8px
176
+
177
+ &__children
178
+ padding-left: 16px
179
+
126
180
  [dir=rtl]
127
181
  .q-tree__arrow
128
182
  transform: rotate3d(0, 0, 1, 180deg) /* rtl:ignore */
@@ -166,7 +166,7 @@ export default Vue.extend({
166
166
  removed.size += f.size
167
167
  removed.files.push(f)
168
168
 
169
- f._img !== void 0 && window.URL.revokeObjectURL(f._img.src)
169
+ f.__img !== void 0 && window.URL.revokeObjectURL(f.__img.src)
170
170
 
171
171
  return false
172
172
  })
@@ -182,7 +182,7 @@ export default Vue.extend({
182
182
  if (this.disable) { return }
183
183
 
184
184
  if (file.__status === 'uploaded') {
185
- this.uploadedFiles = this.uploadedFiles.filter(f => f.name !== file.name)
185
+ this.uploadedFiles = this.uploadedFiles.filter(f => f.__key !== file.__key)
186
186
  }
187
187
  else if (file.__status === 'uploading') {
188
188
  file.__abort()
@@ -192,21 +192,21 @@ export default Vue.extend({
192
192
  }
193
193
 
194
194
  this.files = this.files.filter(f => {
195
- if (f.name !== file.name) {
195
+ if (f.__key !== file.__key) {
196
196
  return true
197
197
  }
198
198
 
199
- f._img !== void 0 && window.URL.revokeObjectURL(f._img.src)
199
+ f.__img !== void 0 && window.URL.revokeObjectURL(f.__img.src)
200
200
 
201
201
  return false
202
202
  })
203
- this.queuedFiles = this.queuedFiles.filter(f => f.name !== file.name)
203
+ this.queuedFiles = this.queuedFiles.filter(f => f.__key !== file.__key)
204
204
  this.$emit('removed', [ file ])
205
205
  },
206
206
 
207
207
  __revokeImgURLs () {
208
208
  this.files.forEach(f => {
209
- f._img !== void 0 && window.URL.revokeObjectURL(f._img.src)
209
+ f.__img !== void 0 && window.URL.revokeObjectURL(f.__img.src)
210
210
  })
211
211
  },
212
212
 
@@ -247,21 +247,16 @@ export default Vue.extend({
247
247
  },
248
248
 
249
249
  __addFiles (e, fileList) {
250
- const processedFiles = this.__processFiles(e, fileList, this.files, true)
250
+ const localFiles = this.__processFiles(e, fileList, this.files, true)
251
251
 
252
- if (processedFiles === void 0) { return }
253
-
254
- const files = processedFiles
255
- .filter(file => this.files.findIndex(f => file.name === f.name) === -1)
256
-
257
- if (files === void 0) { return }
252
+ if (localFiles === void 0) { return }
258
253
 
259
254
  const fileInput = this.__getFileInput()
260
255
  if (fileInput !== void 0) {
261
256
  fileInput.value = ''
262
257
  }
263
258
 
264
- files.forEach(file => {
259
+ localFiles.forEach(file => {
265
260
  this.__updateFile(file, 'idle')
266
261
  this.uploadSize += file.size
267
262
 
@@ -272,9 +267,9 @@ export default Vue.extend({
272
267
  }
273
268
  })
274
269
 
275
- this.files = this.files.concat(files)
276
- this.queuedFiles = this.queuedFiles.concat(files)
277
- this.$emit('added', files)
270
+ this.files = this.files.concat(localFiles)
271
+ this.queuedFiles = this.queuedFiles.concat(localFiles)
272
+ this.$emit('added', localFiles)
278
273
  this.autoUpload === true && this.upload()
279
274
  },
280
275
 
@@ -287,7 +282,7 @@ export default Vue.extend({
287
282
  flat: true,
288
283
  dense: true
289
284
  },
290
- on: icon === 'add' ? null : { click: fn }
285
+ on: { click: icon === 'add' ? this.pickFiles : fn }
291
286
  }, icon === 'add' ? this.__getInputControl(h) : null)
292
287
  }
293
288
  },
@@ -307,6 +302,7 @@ export default Vue.extend({
307
302
  },
308
303
  on: cache(this, 'input', {
309
304
  mousedown: stop, // need to stop refocus from QBtn
305
+ click: this.pickFiles,
310
306
  change: this.__addFiles
311
307
  })
312
308
  })
@@ -352,7 +348,7 @@ export default Vue.extend({
352
348
  }
353
349
 
354
350
  return this.files.map(file => h('div', {
355
- key: file.name,
351
+ key: file.__key,
356
352
  staticClass: 'q-uploader__file relative-position',
357
353
  class: {
358
354
  'q-uploader__file--img': this.noThumbnails !== true && file.__img !== void 0,
@@ -12,7 +12,9 @@ export default Vue.extend({
12
12
  src: {
13
13
  type: String,
14
14
  required: true
15
- }
15
+ },
16
+
17
+ title: String
16
18
  },
17
19
 
18
20
  computed: {
@@ -21,6 +23,7 @@ export default Vue.extend({
21
23
  attrs: {
22
24
  src: this.src,
23
25
  frameborder: '0',
26
+ title: this.title,
24
27
  allowfullscreen: true
25
28
  }
26
29
  }
@@ -22,6 +22,17 @@
22
22
 
23
23
  "ratio": {
24
24
  "addedIn": "v1.7.0"
25
+ },
26
+
27
+ "title": {
28
+ "type": "String",
29
+ "desc": "(Accessibility) Set the native 'title' attribute value of the inner iframe being used",
30
+ "required": false,
31
+ "examples": [
32
+ "My Daily Marathon"
33
+ ],
34
+ "category": "accessibility",
35
+ "addedIn": "v1.17.0"
25
36
  }
26
37
  }
27
38
  }
@@ -4,6 +4,7 @@
4
4
 
5
5
  &__content
6
6
  outline: none
7
+ contain: content
7
8
 
8
9
  *
9
10
  overflow-anchor: none
@@ -4,6 +4,7 @@
4
4
 
5
5
  &__content
6
6
  outline: none
7
+ contain: content
7
8
 
8
9
  *
9
10
  overflow-anchor: none
@@ -47,6 +47,9 @@
47
47
  outline: 0
48
48
  text-decoration: none
49
49
 
50
+ &--focusable:focus-visible
51
+ text-decoration: underline dashed currentColor 1px
52
+
50
53
  body.electron
51
54
  .q-electron-drag
52
55
  -webkit-user-select: none
@@ -47,6 +47,9 @@
47
47
  outline: 0
48
48
  text-decoration: none
49
49
 
50
+ &--focusable:focus-visible
51
+ text-decoration: underline dashed currentColor 1px
52
+
50
53
  body.electron
51
54
  .q-electron-drag
52
55
  -webkit-user-select: none
@@ -69,6 +69,11 @@
69
69
  max-width: 100vw
70
70
  max-height: 100vh
71
71
 
72
+ body.q-ios-padding .fullscreen
73
+ padding-top: $ios-statusbar-height !important
74
+ padding-top: env(safe-area-inset-top) !important
75
+ padding-bottom: env(safe-area-inset-bottom) !important
76
+
72
77
  .absolute-full, .fullscreen, .fixed-full
73
78
  top: 0
74
79
  right: 0
@@ -69,6 +69,11 @@
69
69
  max-width: 100vw
70
70
  max-height: 100vh
71
71
 
72
+ body.q-ios-padding .fullscreen
73
+ padding-top: $ios-statusbar-height !important
74
+ padding-top: env(safe-area-inset-top) !important
75
+ padding-bottom: env(safe-area-inset-bottom) !important
76
+
72
77
  .absolute-full, .fullscreen, .fixed-full
73
78
  top: 0
74
79
  right: 0
@@ -39,20 +39,18 @@ $flex-gutter: ('none': 0, 'xs': $flex-gutter-xs, 'sm': $flex-gutter-sm, 'md': $f
39
39
  // sorry for long line; we need .sass and it doesn't support multi-line list
40
40
  $sizes: ('xs': 0, 'sm': ($breakpoint-xs + 1), 'md': ($breakpoint-sm + 1), 'lg': ($breakpoint-md + 1), 'xl': ($breakpoint-lg + 1)) !default
41
41
 
42
- $breakpoint-xs-min: 0 !default
43
- $breakpoint-xs-max: $breakpoint-xs !default
42
+ $breakpoint-xs-max: (map-get($sizes, "sm") - 0.02) !default
44
43
 
45
44
  $breakpoint-sm-min: map-get($sizes, "sm") !default
46
- $breakpoint-sm-max: $breakpoint-sm !default
45
+ $breakpoint-sm-max: (map-get($sizes, "md") - 0.02) !default
47
46
 
48
47
  $breakpoint-md-min: map-get($sizes, "md") !default
49
- $breakpoint-md-max: $breakpoint-md !default
48
+ $breakpoint-md-max: (map-get($sizes, "lg") - 0.02) !default
50
49
 
51
50
  $breakpoint-lg-min: map-get($sizes, "lg") !default
52
- $breakpoint-lg-max: $breakpoint-lg !default
51
+ $breakpoint-lg-max: (map-get($sizes, "xl") - 0.02) !default
53
52
 
54
53
  $breakpoint-xl-min: map-get($sizes, "xl") !default
55
- $breakpoint-xl-max: 9999px !default
56
54
 
57
55
  $h1: (size: 6rem, line-height: 6rem, letter-spacing: -.01562em, weight: 300) !default
58
56
  $h2: (size: 3.75rem, line-height: 3.75rem, letter-spacing: -.00833em, weight: 300) !default
@@ -55,20 +55,18 @@ $sizes ?= {
55
55
  xl: $breakpoint-lg + 1 // Extra large screen
56
56
  }
57
57
 
58
- $breakpoint-xs-min ?= 0
59
- $breakpoint-xs-max ?= $breakpoint-xs
58
+ $breakpoint-xs-max ?= ($sizes.sm - 0.02)
60
59
 
61
60
  $breakpoint-sm-min ?= $sizes.sm
62
- $breakpoint-sm-max ?= $breakpoint-sm
61
+ $breakpoint-sm-max ?= ($sizes.md - 0.02)
63
62
 
64
63
  $breakpoint-md-min ?= $sizes.md
65
- $breakpoint-md-max ?= $breakpoint-md
64
+ $breakpoint-md-max ?= ($sizes.lg - 0.02)
66
65
 
67
66
  $breakpoint-lg-min ?= $sizes.lg
68
- $breakpoint-lg-max ?= $breakpoint-lg
67
+ $breakpoint-lg-max ?= ($sizes.xl - 0.02)
69
68
 
70
69
  $breakpoint-xl-min ?= $sizes.xl
71
- $breakpoint-xl-max ?= 9999px
72
70
 
73
71
  $headings ?= {
74
72
  h1: {
@@ -1,4 +1,4 @@
1
- import { getScrollPosition, getScrollTarget, getHorizontalScrollPosition } from '../utils/scroll.js'
1
+ import { getScrollTarget, getVerticalScrollPosition, getHorizontalScrollPosition } from '../utils/scroll.js'
2
2
  import { listenOpts } from '../utils/event.js'
3
3
 
4
4
  function update (ctx, { value, oldValue }) {
@@ -34,7 +34,7 @@ export default {
34
34
  scrollTarget: getScrollTarget(el),
35
35
  scroll () {
36
36
  ctx.handler(
37
- getScrollPosition(ctx.scrollTarget),
37
+ getVerticalScrollPosition(ctx.scrollTarget),
38
38
  getHorizontalScrollPosition(ctx.scrollTarget)
39
39
  )
40
40
  }
@@ -20,6 +20,7 @@ function destroy (el) {
20
20
  const ctx = el.__qscrollfire
21
21
  if (ctx !== void 0) {
22
22
  ctx.scrollTarget.removeEventListener('scroll', ctx.scroll, listenOpts.passive)
23
+ ctx.scroll.cancel()
23
24
  delete el.__qscrollfire
24
25
  }
25
26
  }
@@ -59,7 +59,7 @@ typeof window !== 'undefined' && (function (window) {
59
59
  Object.defineProperty(Object, 'assign', {
60
60
  value: function assign (target, varArgs) { // .length of function is 2
61
61
  'use strict'
62
- if (target === null || target === undefined) {
62
+ if (target === null || target === void 0) {
63
63
  throw new TypeError('Cannot convert undefined or null to object')
64
64
  }
65
65
 
@@ -67,7 +67,7 @@ typeof window !== 'undefined' && (function (window) {
67
67
 
68
68
  for (var index = 1; index < arguments.length; index++) {
69
69
  var nextSource = arguments[index]
70
- if (nextSource !== null && nextSource !== undefined) {
70
+ if (nextSource !== null && nextSource !== void 0) {
71
71
  for (var nextKey in nextSource) {
72
72
  // Avoid bugs when hasOwnProperty is shadowed
73
73
  if (Object.prototype.hasOwnProperty.call(nextSource, nextKey)) {
@@ -302,7 +302,7 @@ function setAsap(asapFn) {
302
302
  asap = asapFn;
303
303
  }
304
304
 
305
- var browserWindow = typeof window !== 'undefined' ? window : undefined;
305
+ var browserWindow = typeof window !== 'undefined' ? window : void 0;
306
306
  var browserGlobal = browserWindow || {};
307
307
  var BrowserMutationObserver = browserGlobal.MutationObserver || browserGlobal.WebKitMutationObserver;
308
308
  var isNode = typeof self === 'undefined' && typeof process !== 'undefined' && {}.toString.call(process) === '[object process]';
@@ -367,8 +367,8 @@ function flush() {
367
367
 
368
368
  callback(arg);
369
369
 
370
- queue[i] = undefined;
371
- queue[i + 1] = undefined;
370
+ queue[i] = void 0;
371
+ queue[i + 1] = void 0;
372
372
  }
373
373
 
374
374
  len = 0;
@@ -392,7 +392,7 @@ if (isNode) {
392
392
  scheduleFlush = useMutationObserver();
393
393
  } else if (isWorker) {
394
394
  scheduleFlush = useMessageChannel();
395
- } else if (browserWindow === undefined && typeof require === 'function') {
395
+ } else if (browserWindow === void 0 && typeof require === 'function') {
396
396
  scheduleFlush = attemptVertx();
397
397
  } else {
398
398
  scheduleFlush = useSetTimeout();
@@ -403,7 +403,7 @@ function then(onFulfillment, onRejection) {
403
403
 
404
404
  var child = new this.constructor(noop);
405
405
 
406
- if (child[PROMISE_ID] === undefined) {
406
+ if (child[PROMISE_ID] === void 0) {
407
407
  makePromise(child);
408
408
  }
409
409
 
@@ -536,7 +536,7 @@ function handleOwnThenable(promise, thenable) {
536
536
  } else if (thenable._state === REJECTED) {
537
537
  reject(promise, thenable._result);
538
538
  } else {
539
- subscribe(thenable, undefined, function (value) {
539
+ subscribe(thenable, void 0, function (value) {
540
540
  return resolve(promise, value);
541
541
  }, function (reason) {
542
542
  return reject(promise, reason);
@@ -551,7 +551,7 @@ function handleMaybeThenable(promise, maybeThenable, then$$1) {
551
551
  if (then$$1 === TRY_CATCH_ERROR) {
552
552
  reject(promise, TRY_CATCH_ERROR.error);
553
553
  TRY_CATCH_ERROR.error = null;
554
- } else if (then$$1 === undefined) {
554
+ } else if (then$$1 === void 0) {
555
555
  fulfill(promise, maybeThenable);
556
556
  } else if (isFunction(then$$1)) {
557
557
  handleForeignThenable(promise, maybeThenable, then$$1);
@@ -712,8 +712,8 @@ function nextId() {
712
712
 
713
713
  function makePromise(promise) {
714
714
  promise[PROMISE_ID] = id++;
715
- promise._state = undefined;
716
- promise._result = undefined;
715
+ promise._state = void 0;
716
+ promise._result = void 0;
717
717
  promise._subscribers = [];
718
718
  }
719
719
 
@@ -805,7 +805,7 @@ var Enumerator = function () {
805
805
  Enumerator.prototype._willSettleAt = function _willSettleAt(promise, i) {
806
806
  var enumerator = this;
807
807
 
808
- subscribe(promise, undefined, function (value) {
808
+ subscribe(promise, void 0, function (value) {
809
809
  return enumerator._settledAt(FULFILLED, i, value);
810
810
  }, function (reason) {
811
811
  return enumerator._settledAt(REJECTED, i, reason);
@@ -1106,7 +1106,7 @@ function needsNew() {
1106
1106
  var Promise$2 = function () {
1107
1107
  function Promise(resolver) {
1108
1108
  this[PROMISE_ID] = nextId();
1109
- this._result = this._state = undefined;
1109
+ this._result = this._state = void 0;
1110
1110
  this._subscribers = [];
1111
1111
 
1112
1112
  if (noop !== resolver) {
package/src/install.js CHANGED
@@ -56,7 +56,7 @@ export default function (Vue, opts = {}) {
56
56
 
57
57
  opts.directives && Object.keys(opts.directives).forEach(key => {
58
58
  const d = opts.directives[key]
59
- if (d.name !== undefined && d.unbind !== void 0) {
59
+ if (d.name !== void 0 && d.unbind !== void 0) {
60
60
  Vue.directive(d.name, d)
61
61
  }
62
62
  })
package/src/lang.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import Vue from 'vue'
2
2
 
3
- import langEn from '../lang/en-us.js'
3
+ import defaultLang from '../lang/en-us.js'
4
4
  import { isSSR, fromSSR } from './plugins/Platform.js'
5
5
 
6
6
  function getLocale () {
@@ -18,13 +18,13 @@ function getLocale () {
18
18
  }
19
19
  }
20
20
 
21
- export default {
21
+ const Plugin = {
22
22
  getLocale,
23
23
 
24
24
  install ($q, queues, lang) {
25
- const initialLang = lang || langEn
25
+ const initialLang = lang || defaultLang
26
26
 
27
- this.set = (langObject = langEn, ssrContext) => {
27
+ this.set = (langObject = defaultLang, ssrContext) => {
28
28
  const lang = {
29
29
  ...langObject,
30
30
  rtl: langObject.rtl === true,
@@ -83,3 +83,6 @@ export default {
83
83
  }
84
84
  }
85
85
  }
86
+
87
+ export default Plugin
88
+ export { defaultLang }
@@ -1,5 +1,6 @@
1
1
  import { clearSelection } from '../utils/selection.js'
2
2
  import { addEvt, cleanEvt, prevent, listenOpts } from '../utils/event.js'
3
+ import { getElement } from '../utils/dom.js'
3
4
  import { isKeyCode } from '../utils/key-composition.js'
4
5
 
5
6
  export default {
@@ -145,23 +146,12 @@ export default {
145
146
  this.__setAnchorEl(this.parentEl)
146
147
  }
147
148
  else {
148
- let el = this.target
149
-
150
- if (typeof this.target === 'string') {
151
- try {
152
- el = document.querySelector(this.target)
153
- }
154
- catch (err) {
155
- el = void 0
156
- }
157
- }
149
+ this.anchorEl = getElement(this.target) || void 0
158
150
 
159
- if (el !== void 0 && el !== null) {
160
- this.anchorEl = el._isVue === true && el.$el !== void 0 ? el.$el : el
151
+ if (this.anchorEl !== void 0) {
161
152
  this.__configureAnchorEl()
162
153
  }
163
154
  else {
164
- this.anchorEl = void 0
165
155
  console.error(`Anchor: target "${this.target}" not found`, this)
166
156
  }
167
157
  }