quasar 1.20.2 → 1.21.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 (287) hide show
  1. package/dist/api/QBreadcrumbsEl.json +53 -0
  2. package/dist/api/QBtn.json +42 -5
  3. package/dist/api/QBtnDropdown.json +1 -1
  4. package/dist/api/QChip.json +1 -1
  5. package/dist/api/QDialog.json +6 -0
  6. package/dist/api/QExpansionItem.json +1 -1
  7. package/dist/api/QItem.json +53 -0
  8. package/dist/api/QRating.json +13 -0
  9. package/dist/api/QRouteTab.json +6 -2
  10. package/dist/babel-transforms/imports.js +2 -12
  11. package/dist/icon-set/bootstrap-icons.umd.min.js +1 -1
  12. package/dist/icon-set/eva-icons.umd.min.js +1 -1
  13. package/dist/icon-set/fontawesome-v5-pro.umd.min.js +1 -1
  14. package/dist/icon-set/fontawesome-v5.umd.min.js +1 -1
  15. package/dist/icon-set/fontawesome-v6-pro.umd.min.js +1 -1
  16. package/dist/icon-set/fontawesome-v6.umd.min.js +1 -1
  17. package/dist/icon-set/ionicons-v4.umd.min.js +1 -1
  18. package/dist/icon-set/line-awesome.umd.min.js +1 -1
  19. package/dist/icon-set/material-icons-outlined.umd.min.js +1 -1
  20. package/dist/icon-set/material-icons-round.umd.min.js +1 -1
  21. package/dist/icon-set/material-icons-sharp.umd.min.js +1 -1
  22. package/dist/icon-set/material-icons.umd.min.js +1 -1
  23. package/dist/icon-set/material-symbols-outlined.umd.min.js +1 -1
  24. package/dist/icon-set/material-symbols-rounded.umd.min.js +1 -1
  25. package/dist/icon-set/material-symbols-sharp.umd.min.js +1 -1
  26. package/dist/icon-set/mdi-v3.umd.min.js +1 -1
  27. package/dist/icon-set/mdi-v4.umd.min.js +1 -1
  28. package/dist/icon-set/mdi-v5.umd.min.js +1 -1
  29. package/dist/icon-set/mdi-v6.umd.min.js +1 -1
  30. package/dist/icon-set/svg-bootstrap-icons.umd.min.js +1 -1
  31. package/dist/icon-set/svg-eva-icons.umd.min.js +1 -1
  32. package/dist/icon-set/svg-fontawesome-v5.umd.min.js +1 -1
  33. package/dist/icon-set/svg-fontawesome-v6.umd.min.js +2 -2
  34. package/dist/icon-set/svg-ionicons-v4.umd.min.js +1 -1
  35. package/dist/icon-set/svg-ionicons-v5.umd.min.js +1 -1
  36. package/dist/icon-set/svg-ionicons-v6.umd.min.js +1 -1
  37. package/dist/icon-set/svg-line-awesome.umd.min.js +1 -1
  38. package/dist/icon-set/svg-material-icons-outlined.umd.min.js +1 -1
  39. package/dist/icon-set/svg-material-icons-round.umd.min.js +1 -1
  40. package/dist/icon-set/svg-material-icons-sharp.umd.min.js +1 -1
  41. package/dist/icon-set/svg-material-icons.umd.min.js +1 -1
  42. package/dist/icon-set/svg-material-symbols-outlined.umd.min.js +2 -2
  43. package/dist/icon-set/svg-material-symbols-rounded.umd.min.js +2 -2
  44. package/dist/icon-set/svg-material-symbols-sharp.umd.min.js +2 -2
  45. package/dist/icon-set/svg-mdi-v4.umd.min.js +1 -1
  46. package/dist/icon-set/svg-mdi-v5.umd.min.js +1 -1
  47. package/dist/icon-set/svg-mdi-v6.umd.min.js +1 -1
  48. package/dist/icon-set/svg-themify.umd.min.js +1 -1
  49. package/dist/icon-set/themify.umd.min.js +1 -1
  50. package/dist/lang/ar.umd.min.js +1 -1
  51. package/dist/lang/az-latn.umd.min.js +1 -1
  52. package/dist/lang/bg.umd.min.js +1 -1
  53. package/dist/lang/ca.umd.min.js +1 -1
  54. package/dist/lang/cs.umd.min.js +1 -1
  55. package/dist/lang/da.umd.min.js +1 -1
  56. package/dist/lang/de.umd.min.js +1 -1
  57. package/dist/lang/el.umd.min.js +1 -1
  58. package/dist/lang/en-gb.umd.min.js +1 -1
  59. package/dist/lang/en-us.umd.min.js +1 -1
  60. package/dist/lang/eo.umd.min.js +1 -1
  61. package/dist/lang/es.umd.min.js +1 -1
  62. package/dist/lang/et.umd.min.js +1 -1
  63. package/dist/lang/eu.umd.min.js +1 -1
  64. package/dist/lang/fa-ir.umd.min.js +1 -1
  65. package/dist/lang/fa.umd.min.js +1 -1
  66. package/dist/lang/fi.umd.min.js +1 -1
  67. package/dist/lang/fr.umd.min.js +1 -1
  68. package/dist/lang/gn.umd.min.js +1 -1
  69. package/dist/lang/he.umd.min.js +1 -1
  70. package/dist/lang/hr.umd.min.js +1 -1
  71. package/dist/lang/hu.umd.min.js +1 -1
  72. package/dist/lang/id.umd.min.js +1 -1
  73. package/dist/lang/is.umd.min.js +1 -1
  74. package/dist/lang/it.umd.min.js +1 -1
  75. package/dist/lang/ja.umd.min.js +1 -1
  76. package/dist/lang/km.umd.min.js +1 -1
  77. package/dist/lang/ko-kr.umd.min.js +1 -1
  78. package/dist/lang/kur-ckb.umd.min.js +1 -1
  79. package/dist/lang/kz.umd.min.js +1 -1
  80. package/dist/lang/lu.umd.min.js +1 -1
  81. package/dist/lang/lv.umd.min.js +1 -1
  82. package/dist/lang/ml.umd.min.js +1 -1
  83. package/dist/lang/mm.umd.min.js +1 -1
  84. package/dist/lang/ms.umd.min.js +1 -1
  85. package/dist/lang/my.umd.min.js +1 -1
  86. package/dist/lang/nb-no.umd.min.js +1 -1
  87. package/dist/lang/nl.umd.min.js +2 -2
  88. package/dist/lang/pl.umd.min.js +1 -1
  89. package/dist/lang/pt-br.umd.min.js +1 -1
  90. package/dist/lang/pt.umd.min.js +1 -1
  91. package/dist/lang/ro.umd.min.js +1 -1
  92. package/dist/lang/ru.umd.min.js +1 -1
  93. package/dist/lang/sk.umd.min.js +1 -1
  94. package/dist/lang/sl.umd.min.js +1 -1
  95. package/dist/lang/sm.umd.min.js +1 -1
  96. package/dist/lang/sr.umd.min.js +1 -1
  97. package/dist/lang/sv.umd.min.js +1 -1
  98. package/dist/lang/ta.umd.min.js +1 -1
  99. package/dist/lang/th.umd.min.js +1 -1
  100. package/dist/lang/tr.umd.min.js +1 -1
  101. package/dist/lang/ug.umd.min.js +1 -1
  102. package/dist/lang/uk.umd.min.js +1 -1
  103. package/dist/lang/uz-Cyrl.umd.min.js +1 -1
  104. package/dist/lang/uz-Latn.umd.min.js +1 -1
  105. package/dist/lang/vi.umd.min.js +1 -1
  106. package/dist/lang/zh-hans.umd.min.js +1 -1
  107. package/dist/lang/zh-hant.umd.min.js +1 -1
  108. package/dist/quasar.addon.css +1 -1
  109. package/dist/quasar.addon.rtl.css +1 -1
  110. package/dist/quasar.common.js +2 -2
  111. package/dist/quasar.css +43 -288
  112. package/dist/quasar.esm.js +2 -2
  113. package/dist/quasar.ie.polyfills.js +1 -1
  114. package/dist/quasar.ie.polyfills.umd.min.js +1 -1
  115. package/dist/quasar.min.css +1 -1
  116. package/dist/quasar.rtl.css +46 -408
  117. package/dist/quasar.rtl.min.css +1 -1
  118. package/dist/quasar.sass +3 -7
  119. package/dist/quasar.styl +3 -7
  120. package/dist/quasar.umd.js +1062 -867
  121. package/dist/quasar.umd.min.js +2 -2
  122. package/dist/quasar.umd.modern.js +1017 -854
  123. package/dist/quasar.umd.modern.min.js +2 -2
  124. package/dist/types/index.d.ts +8 -0
  125. package/dist/types/utils/run-sequential-promises.d.ts +1 -1
  126. package/dist/vetur/quasar-attributes.json +8 -0
  127. package/dist/vetur/quasar-tags.json +3 -1
  128. package/dist/web-types/web-types.json +66 -5
  129. package/lang/nl.js +2 -2
  130. package/package.json +1 -1
  131. package/src/body.js +1 -1
  132. package/src/components/avatar/QAvatar.js +1 -1
  133. package/src/components/badge/QBadge.js +1 -1
  134. package/src/components/banner/QBanner.js +1 -1
  135. package/src/components/bar/QBar.js +1 -1
  136. package/src/components/breadcrumbs/QBreadcrumbs.js +1 -1
  137. package/src/components/breadcrumbs/QBreadcrumbsEl.js +7 -4
  138. package/src/components/breadcrumbs/QBreadcrumbsEl.json +56 -0
  139. package/src/components/btn/QBtn.js +7 -29
  140. package/src/components/btn/QBtn.json +43 -5
  141. package/src/components/btn-dropdown/QBtnDropdown.js +2 -2
  142. package/src/components/btn-dropdown/QBtnDropdown.json +1 -1
  143. package/src/components/btn-group/QBtnGroup.js +1 -1
  144. package/src/components/btn-toggle/QBtnToggle.js +1 -1
  145. package/src/components/card/QCard.js +1 -1
  146. package/src/components/card/QCardActions.js +1 -1
  147. package/src/components/card/QCardSection.js +1 -1
  148. package/src/components/carousel/QCarousel.js +2 -2
  149. package/src/components/carousel/QCarouselControl.js +1 -1
  150. package/src/components/carousel/QCarouselSlide.js +1 -1
  151. package/src/components/checkbox/QCheckbox.js +1 -1
  152. package/src/components/chip/QChip.js +2 -2
  153. package/src/components/chip/QChip.json +1 -1
  154. package/src/components/circular-progress/QCircularProgress.js +1 -1
  155. package/src/components/color/QColor.js +1 -1
  156. package/src/components/date/QDate.js +3 -3
  157. package/src/components/dialog/QDialog.js +22 -7
  158. package/src/components/dialog/QDialog.json +7 -0
  159. package/src/components/dialog-bottom-sheet/BottomSheet.js +1 -1
  160. package/src/components/dialog-plugin/DialogPlugin.js +2 -2
  161. package/src/components/drawer/QDrawer.js +13 -7
  162. package/src/components/editor/QEditor.js +2 -2
  163. package/src/components/editor/editor-utils.js +2 -2
  164. package/src/components/expansion-item/QExpansionItem.js +29 -14
  165. package/src/components/expansion-item/QExpansionItem.json +1 -1
  166. package/src/components/fab/QFab.js +2 -2
  167. package/src/components/fab/QFabAction.js +1 -1
  168. package/src/components/field/QField.js +2 -2
  169. package/src/components/file/QFile.js +1 -1
  170. package/src/components/footer/QFooter.js +2 -2
  171. package/src/components/form/QForm.js +3 -3
  172. package/src/components/header/QHeader.js +2 -2
  173. package/src/components/icon/QIcon.js +1 -1
  174. package/src/components/img/QImg.js +1 -1
  175. package/src/components/infinite-scroll/QInfiniteScroll.js +1 -1
  176. package/src/components/input/QInput.js +1 -1
  177. package/src/components/intersection/QIntersection.js +1 -1
  178. package/src/components/item/QItem.js +39 -33
  179. package/src/components/item/QItem.json +56 -0
  180. package/src/components/item/QItemLabel.js +1 -1
  181. package/src/components/item/QItemSection.js +1 -1
  182. package/src/components/item/QList.js +1 -1
  183. package/src/components/knob/QKnob.js +2 -2
  184. package/src/components/layout/QLayout.js +2 -2
  185. package/src/components/linear-progress/QLinearProgress.js +1 -1
  186. package/src/components/markup-table/QMarkupTable.js +1 -1
  187. package/src/components/menu/ClickOutside.js +1 -1
  188. package/src/components/menu/QMenu.js +16 -7
  189. package/src/components/no-ssr/QNoSsr.js +1 -1
  190. package/src/components/option-group/QOptionGroup.js +1 -1
  191. package/src/components/page/QPage.js +1 -1
  192. package/src/components/page/QPageContainer.js +1 -1
  193. package/src/components/page-sticky/QPageSticky.js +1 -1
  194. package/src/components/pagination/QPagination.js +2 -2
  195. package/src/components/parallax/QParallax.js +1 -1
  196. package/src/components/popup-edit/QPopupEdit.js +6 -12
  197. package/src/components/popup-proxy/QPopupProxy.js +1 -1
  198. package/src/components/pull-to-refresh/QPullToRefresh.js +1 -1
  199. package/src/components/radio/QRadio.js +5 -4
  200. package/src/components/rating/QRating.js +46 -15
  201. package/src/components/rating/QRating.json +11 -0
  202. package/src/components/resize-observer/QResizeObserver.js +1 -1
  203. package/src/components/responsive/QResponsive.js +1 -1
  204. package/src/components/scroll-area/QScrollArea.js +2 -2
  205. package/src/components/select/QSelect.js +3 -3
  206. package/src/components/skeleton/QSkeleton.js +1 -1
  207. package/src/components/slide-item/QSlideItem.js +2 -2
  208. package/src/components/slide-transition/QSlideTransition.js +2 -2
  209. package/src/components/splitter/QSplitter.js +2 -2
  210. package/src/components/stepper/QStep.js +2 -2
  211. package/src/components/stepper/QStepper.js +2 -2
  212. package/src/components/stepper/QStepperNavigation.js +1 -1
  213. package/src/components/stepper/StepHeader.js +1 -1
  214. package/src/components/tab-panels/QTabPanel.js +1 -1
  215. package/src/components/table/QTable.js +1 -1
  216. package/src/components/table/QTd.js +1 -1
  217. package/src/components/table/QTh.js +1 -1
  218. package/src/components/table/QTr.js +1 -1
  219. package/src/components/table/table-body.js +21 -32
  220. package/src/components/table/table-bottom.js +1 -1
  221. package/src/components/table/table-header.js +9 -9
  222. package/src/components/table/table-sort.js +1 -1
  223. package/src/components/tabs/QRouteTab.js +10 -120
  224. package/src/components/tabs/QRouteTab.json +7 -2
  225. package/src/components/tabs/QTab.js +112 -75
  226. package/src/components/tabs/QTabs.js +411 -329
  227. package/src/components/tabs/QTabs.sass +2 -7
  228. package/src/components/tabs/QTabs.styl +2 -7
  229. package/src/components/time/QTime.js +2 -2
  230. package/src/components/timeline/QTimeline.js +1 -1
  231. package/src/components/timeline/QTimelineEntry.js +1 -1
  232. package/src/components/toolbar/QToolbar.js +1 -1
  233. package/src/components/toolbar/QToolbarTitle.js +1 -1
  234. package/src/components/tooltip/QTooltip.js +19 -15
  235. package/src/components/tree/QTree.js +17 -15
  236. package/src/components/uploader/QUploaderBase.js +1 -1
  237. package/src/components/virtual-scroll/QVirtualScroll.js +1 -1
  238. package/src/directives/ClosePopup.js +1 -1
  239. package/src/directives/GoBack.js +1 -1
  240. package/src/directives/Ripple.js +1 -1
  241. package/src/directives/TouchHold.js +2 -2
  242. package/src/directives/TouchPan.js +4 -4
  243. package/src/directives/TouchRepeat.js +3 -3
  244. package/src/directives/TouchSwipe.js +3 -3
  245. package/src/mixins/anchor.js +2 -2
  246. package/src/mixins/attrs.js +1 -1
  247. package/src/mixins/btn.js +4 -3
  248. package/src/mixins/checkbox.js +4 -3
  249. package/src/mixins/datetime.js +1 -1
  250. package/src/mixins/file.js +1 -1
  251. package/src/mixins/listeners.js +1 -1
  252. package/src/mixins/mask.js +1 -1
  253. package/src/mixins/model-toggle.js +5 -7
  254. package/src/mixins/panel.js +2 -2
  255. package/src/mixins/portal.js +1 -1
  256. package/src/mixins/router-link.js +164 -38
  257. package/src/mixins/timeout.js +57 -26
  258. package/src/plugins/BottomSheet.js +1 -1
  259. package/src/plugins/BottomSheet.json +1 -1
  260. package/src/plugins/Dialog.js +1 -1
  261. package/src/plugins/Dialog.json +1 -1
  262. package/src/plugins/Loading.js +1 -1
  263. package/src/plugins/LocalStorage.js +1 -1
  264. package/src/plugins/LocalStorage.json +1 -1
  265. package/src/plugins/SessionStorage.js +1 -1
  266. package/src/plugins/SessionStorage.json +1 -1
  267. package/src/utils/date.js +1 -1
  268. package/src/utils/extend.js +15 -19
  269. package/src/utils/{cache.js → private/cache.js} +1 -1
  270. package/src/utils/{date-persian.js → private/date-persian.js} +0 -0
  271. package/src/utils/{escape-key.js → private/escape-key.js} +0 -0
  272. package/src/utils/{focus-manager.js → private/focus-manager.js} +0 -0
  273. package/src/utils/{global-dialog.js → private/global-dialog.js} +1 -1
  274. package/src/utils/{global-dialog.json → private/global-dialog.json} +0 -0
  275. package/src/utils/private/inject-obj-prop.js +15 -0
  276. package/src/utils/{key-composition.js → private/key-composition.js} +0 -0
  277. package/src/utils/{position-engine.js → private/position-engine.js} +2 -2
  278. package/src/utils/{selection.js → private/selection.js} +1 -1
  279. package/src/utils/{slot.js → private/slot.js} +0 -0
  280. package/src/utils/{sort.js → private/sort.js} +0 -0
  281. package/src/utils/{touch.js → private/touch.js} +0 -0
  282. package/src/utils/{vm.js → private/vm.js} +0 -0
  283. package/src/utils/{web-storage.js → private/web-storage.js} +2 -2
  284. package/src/utils/{web-storage.json → private/web-storage.json} +0 -0
  285. package/src/utils/run-sequential-promises.js +1 -1
  286. package/src/utils.js +4 -4
  287. package/src/utils/router.js +0 -50
@@ -129,12 +129,12 @@
129
129
 
130
130
  &--start
131
131
  top: 0
132
- left: 0
132
+ left: 0 #{"/* rtl:ignore */"}
133
133
  bottom: 0
134
134
 
135
135
  &--end
136
136
  top: 0
137
- right: 0
137
+ right: 0 #{"/* rtl:ignore */"}
138
138
  bottom: 0
139
139
 
140
140
  &--vertical
@@ -181,8 +181,3 @@
181
181
  min-height: 36px
182
182
  &--full
183
183
  min-height: 52px
184
-
185
- @media (min-width: $breakpoint-lg-min)
186
- .q-header, .q-footer
187
- .q-tab__content
188
- min-width: 128px
@@ -129,12 +129,12 @@
129
129
 
130
130
  &--start
131
131
  top: 0
132
- left: 0
132
+ left: 0 /* rtl:ignore */
133
133
  bottom: 0
134
134
 
135
135
  &--end
136
136
  top: 0
137
- right: 0
137
+ right: 0 /* rtl:ignore */
138
138
  bottom: 0
139
139
 
140
140
  &--vertical
@@ -181,8 +181,3 @@
181
181
  min-height: 36px
182
182
  &--full
183
183
  min-height: 52px
184
-
185
- @media (min-width: $breakpoint-lg-min)
186
- .q-header, .q-footer
187
- .q-tab__content
188
- min-width: 128px
@@ -3,11 +3,11 @@ import Vue from 'vue'
3
3
  import QBtn from '../btn/QBtn.js'
4
4
  import TouchPan from '../../directives/TouchPan.js'
5
5
 
6
- import { slot } from '../../utils/slot.js'
6
+ import { slot } from '../../utils/private/slot.js'
7
7
  import { formatDate, __splitDate } from '../../utils/date.js'
8
8
  import { position } from '../../utils/event.js'
9
9
  import { pad } from '../../utils/format.js'
10
- import cache from '../../utils/cache.js'
10
+ import cache from '../../utils/private/cache.js'
11
11
  import DateTimeMixin from '../../mixins/datetime.js'
12
12
 
13
13
  export default Vue.extend({
@@ -3,7 +3,7 @@ import Vue from 'vue'
3
3
  import DarkMixin from '../../mixins/dark.js'
4
4
  import ListenersMixin from '../../mixins/listeners.js'
5
5
 
6
- import { slot } from '../../utils/slot.js'
6
+ import { slot } from '../../utils/private/slot.js'
7
7
 
8
8
  export default Vue.extend({
9
9
  name: 'QTimeline',
@@ -4,7 +4,7 @@ import QIcon from '../icon/QIcon.js'
4
4
 
5
5
  import ListenersMixin from '../../mixins/listeners.js'
6
6
 
7
- import { slot, uniqueSlot } from '../../utils/slot.js'
7
+ import { slot, uniqueSlot } from '../../utils/private/slot.js'
8
8
 
9
9
  export default Vue.extend({
10
10
  name: 'QTimelineEntry',
@@ -2,7 +2,7 @@ import Vue from 'vue'
2
2
 
3
3
  import ListenersMixin from '../../mixins/listeners.js'
4
4
 
5
- import { slot } from '../../utils/slot.js'
5
+ import { slot } from '../../utils/private/slot.js'
6
6
 
7
7
  export default Vue.extend({
8
8
  name: 'QToolbar',
@@ -2,7 +2,7 @@ import Vue from 'vue'
2
2
 
3
3
  import ListenersMixin from '../../mixins/listeners.js'
4
4
 
5
- import { slot } from '../../utils/slot.js'
5
+ import { slot } from '../../utils/private/slot.js'
6
6
 
7
7
  export default Vue.extend({
8
8
  name: 'QToolbarTitle',
@@ -1,22 +1,23 @@
1
1
  import Vue from 'vue'
2
2
 
3
3
  import AnchorMixin from '../../mixins/anchor.js'
4
+ import TimeoutMixin from '../../mixins/timeout.js'
4
5
  import ModelToggleMixin from '../../mixins/model-toggle.js'
5
6
  import PortalMixin from '../../mixins/portal.js'
6
7
  import TransitionMixin from '../../mixins/transition.js'
7
8
 
8
9
  import { getScrollTarget } from '../../utils/scroll.js'
9
10
  import { addEvt, cleanEvt } from '../../utils/event.js'
10
- import { clearSelection } from '../../utils/selection.js'
11
- import { slot } from '../../utils/slot.js'
11
+ import { clearSelection } from '../../utils/private/selection.js'
12
+ import { slot } from '../../utils/private/slot.js'
12
13
  import {
13
14
  validatePosition, validateOffset, setPosition, parsePosition
14
- } from '../../utils/position-engine.js'
15
+ } from '../../utils/private/position-engine.js'
15
16
 
16
17
  export default Vue.extend({
17
18
  name: 'QTooltip',
18
19
 
19
- mixins: [ AnchorMixin, ModelToggleMixin, PortalMixin, TransitionMixin ],
20
+ mixins: [ AnchorMixin, TimeoutMixin, ModelToggleMixin, PortalMixin, TransitionMixin ],
20
21
 
21
22
  props: {
22
23
  maxHeight: {
@@ -84,7 +85,7 @@ export default Vue.extend({
84
85
  __show (evt) {
85
86
  this.__showPortal()
86
87
 
87
- this.__nextTick(() => {
88
+ this.__registerTick(() => {
88
89
  this.observer = new MutationObserver(() => this.updatePosition())
89
90
  this.observer.observe(this.__portal.$el, { attributes: false, childList: true, characterData: true, subtree: true })
90
91
  this.updatePosition()
@@ -98,17 +99,20 @@ export default Vue.extend({
98
99
  )
99
100
  }
100
101
 
101
- this.__setTimeout(() => {
102
+ // should __removeTimeout() if this gets removed
103
+ this.__registerTimeout(() => {
102
104
  this.__showPortal(true)
103
105
  this.$emit('show', evt)
104
106
  }, 300)
105
107
  },
106
108
 
107
109
  __hide (evt) {
110
+ this.__removeTick()
108
111
  this.__anchorCleanup()
109
112
  this.__hidePortal()
110
113
 
111
- this.__setTimeout(() => {
114
+ // should __removeTimeout() if this gets removed
115
+ this.__registerTimeout(() => {
112
116
  this.__hidePortal(true) // done hiding, now destroy
113
117
  this.$emit('hide', evt)
114
118
  }, 300)
@@ -164,14 +168,10 @@ export default Vue.extend({
164
168
  addEvt(this, 'tooltipTemp', evts)
165
169
  }
166
170
 
167
- this.__setTimeout(() => {
168
- this.show(evt)
169
- }, this.delay)
171
+ this.__registerTimeout(() => { this.show(evt) }, this.delay)
170
172
  },
171
173
 
172
174
  __delayHide (evt) {
173
- this.__clearTimeout()
174
-
175
175
  if (this.$q.platform.is.mobile === true) {
176
176
  cleanEvt(this, 'tooltipTemp')
177
177
  clearSelection()
@@ -181,9 +181,8 @@ export default Vue.extend({
181
181
  }, 10)
182
182
  }
183
183
 
184
- this.__setTimeout(() => {
185
- this.hide(evt)
186
- }, this.hideDelay)
184
+ // should __removeTimeout() if this gets removed
185
+ this.__registerTimeout(() => { this.hide(evt) }, this.hideDelay)
187
186
  },
188
187
 
189
188
  __configureAnchorEl () {
@@ -235,6 +234,11 @@ export default Vue.extend({
235
234
  }
236
235
  },
237
236
 
237
+ created () {
238
+ this.__useTick('__registerTick', '__removeTick')
239
+ this.__useTimeout('__registerTimeout')
240
+ },
241
+
238
242
  mounted () {
239
243
  this.__processModelChange(this.value)
240
244
  }
@@ -7,8 +7,9 @@ import QSpinner from '../spinner/QSpinner.js'
7
7
  import DarkMixin from '../../mixins/dark.js'
8
8
 
9
9
  import { stopAndPrevent } from '../../utils/event.js'
10
- import { shouldIgnoreKey } from '../../utils/key-composition.js'
11
- import cache from '../../utils/cache.js'
10
+ import { shouldIgnoreKey } from '../../utils/private/key-composition.js'
11
+ import cache from '../../utils/private/cache.js'
12
+ import { injectProp } from '../../utils/private/inject-obj-prop.js'
12
13
 
13
14
  const tickStrategyOptions = [ 'none', 'strict', 'leaf', 'leaf-filtered' ]
14
15
 
@@ -422,18 +423,19 @@ export default Vue.extend({
422
423
  __getSlotScope (node, meta, key) {
423
424
  const scope = { tree: this, node, key, color: this.color, dark: this.isDark }
424
425
 
425
- Object.defineProperty(scope, 'expanded', {
426
- get: () => { return meta.expanded },
427
- set: val => { val !== meta.expanded && this.setExpanded(key, val) },
428
- configurable: true,
429
- enumerable: true
430
- })
431
- Object.defineProperty(scope, 'ticked', {
432
- get: () => { return meta.ticked },
433
- set: val => { val !== meta.ticked && this.setTicked([ key ], val) },
434
- configurable: true,
435
- enumerable: true
436
- })
426
+ injectProp(
427
+ scope,
428
+ 'expanded',
429
+ () => { return meta.expanded },
430
+ val => { val !== meta.expanded && this.setExpanded(key, val) }
431
+ )
432
+
433
+ injectProp(
434
+ scope,
435
+ 'ticked',
436
+ () => { return meta.ticked },
437
+ val => { val !== meta.ticked && this.setTicked([ key ], val) }
438
+ )
437
439
 
438
440
  return scope
439
441
  },
@@ -609,7 +611,7 @@ export default Vue.extend({
609
611
  this.$emit('update:selected', meta.key !== this.selected ? meta.key : null)
610
612
  }
611
613
  else if (meta.key !== this.selected) {
612
- this.$emit('update:selected', meta.key || null)
614
+ this.$emit('update:selected', meta.key === void 0 ? null : meta.key)
613
615
  }
614
616
  }
615
617
  else {
@@ -10,7 +10,7 @@ import DarkMixin from '../../mixins/dark.js'
10
10
 
11
11
  import { stop } from '../../utils/event.js'
12
12
  import { humanStorageSize } from '../../utils/format.js'
13
- import cache from '../../utils/cache.js'
13
+ import cache from '../../utils/private/cache.js'
14
14
 
15
15
  export default Vue.extend({
16
16
  name: 'QUploaderBase',
@@ -10,7 +10,7 @@ import ListenersMixin from '../../mixins/listeners.js'
10
10
 
11
11
  import { getScrollTarget } from '../../utils/scroll.js'
12
12
  import { listenOpts } from '../../utils/event.js'
13
- import { mergeSlot } from '../../utils/slot.js'
13
+ import { mergeSlot } from '../../utils/private/slot.js'
14
14
 
15
15
  const comps = {
16
16
  list: QList,
@@ -1,5 +1,5 @@
1
1
  import { closePortals } from '../mixins/portal.js'
2
- import { isKeyCode } from '../utils/key-composition.js'
2
+ import { isKeyCode } from '../utils/private/key-composition.js'
3
3
 
4
4
  /*
5
5
  * depth
@@ -1,5 +1,5 @@
1
1
  import { client } from '../plugins/Platform.js'
2
- import { isKeyCode } from '../utils/key-composition.js'
2
+ import { isKeyCode } from '../utils/private/key-composition.js'
3
3
 
4
4
  function destroy (el) {
5
5
  const ctx = el.__qgoback
@@ -1,6 +1,6 @@
1
1
  import { css } from '../utils/dom.js'
2
2
  import { position, stop, addEvt, cleanEvt } from '../utils/event.js'
3
- import { isKeyCode } from '../utils/key-composition.js'
3
+ import { isKeyCode } from '../utils/private/key-composition.js'
4
4
  import { client } from '../plugins/Platform.js'
5
5
  import throttle from '../utils/throttle.js'
6
6
  import { $q } from '../install.js'
@@ -1,6 +1,6 @@
1
1
  import { client } from '../plugins/Platform.js'
2
2
  import { addEvt, cleanEvt, position, leftClick, stopAndPrevent, noop } from '../utils/event.js'
3
- import { clearSelection } from '../utils/selection.js'
3
+ import { clearSelection } from '../utils/private/selection.js'
4
4
 
5
5
  function destroy (el) {
6
6
  const ctx = el.__qtouchhold
@@ -145,7 +145,7 @@ export default {
145
145
 
146
146
  client.has.touch === true && addEvt(ctx, 'main', [
147
147
  [ el, 'touchstart', 'touchStart', `passive${modifiers.capture === true ? 'Capture' : ''}` ],
148
- [ el, 'touchend', 'noop', 'notPassiveCapture' ]
148
+ [ el, 'touchend', 'noop', 'passiveCapture' ]
149
149
  ])
150
150
  },
151
151
 
@@ -1,7 +1,7 @@
1
1
  import { client } from '../plugins/Platform.js'
2
- import { getModifierDirections, shouldStart } from '../utils/touch.js'
2
+ import { getModifierDirections, shouldStart } from '../utils/private/touch.js'
3
3
  import { addEvt, cleanEvt, position, leftClick, prevent, stop, stopAndPrevent, preventDraggable, noop } from '../utils/event.js'
4
- import { clearSelection } from '../utils/selection.js'
4
+ import { clearSelection } from '../utils/private/selection.js'
5
5
 
6
6
  function getChanges (evt, ctx, isFinal) {
7
7
  const pos = position(evt)
@@ -208,7 +208,7 @@ export default {
208
208
  */
209
209
  if (
210
210
  ctx.direction.all !== true &&
211
- (mouseEvent !== true || ctx.direction.mouseAllDir !== true)
211
+ (mouseEvent !== true || ctx.modifiers.mouseAllDir !== true)
212
212
  ) {
213
213
  const clone = evt.type.indexOf('mouse') > -1
214
214
  ? new MouseEvent(evt.type, evt)
@@ -392,7 +392,7 @@ export default {
392
392
 
393
393
  client.has.touch === true && addEvt(ctx, 'main', [
394
394
  [ el, 'touchstart', 'touchStart', `passive${modifiers.capture === true ? 'Capture' : ''}` ],
395
- [ el, 'touchmove', 'noop', 'notPassiveCapture' ]
395
+ [ el, 'touchmove', 'noop', 'notPassiveCapture' ] // cannot be passive (ex: iOS scroll)
396
396
  ])
397
397
  },
398
398
 
@@ -1,7 +1,7 @@
1
1
  import { client } from '../plugins/Platform.js'
2
2
  import { addEvt, cleanEvt, position, leftClick, stopAndPrevent, noop } from '../utils/event.js'
3
- import { clearSelection } from '../utils/selection.js'
4
- import { isKeyCode } from '../utils/key-composition.js'
3
+ import { clearSelection } from '../utils/private/selection.js'
4
+ import { isKeyCode } from '../utils/private/key-composition.js'
5
5
 
6
6
  const
7
7
  keyCodes = {
@@ -223,7 +223,7 @@ export default {
223
223
 
224
224
  client.has.touch === true && addEvt(ctx, 'main', [
225
225
  [ el, 'touchstart', 'touchStart', `passive${modifiers.capture === true ? 'Capture' : ''}` ],
226
- [ el, 'touchend', 'noop', 'notPassiveCapture' ]
226
+ [ el, 'touchend', 'noop', 'passiveCapture' ]
227
227
  ])
228
228
 
229
229
  keyboard.length > 0 && addEvt(ctx, 'main', [
@@ -1,7 +1,7 @@
1
1
  import { client } from '../plugins/Platform.js'
2
- import { getModifierDirections, shouldStart } from '../utils/touch.js'
2
+ import { getModifierDirections, shouldStart } from '../utils/private/touch.js'
3
3
  import { addEvt, cleanEvt, position, leftClick, stopAndPrevent, preventDraggable, noop } from '../utils/event.js'
4
- import { clearSelection } from '../utils/selection.js'
4
+ import { clearSelection } from '../utils/private/selection.js'
5
5
 
6
6
  function parseArg (arg) {
7
7
  // delta (min velocity -- dist / time)
@@ -250,7 +250,7 @@ export default {
250
250
 
251
251
  client.has.touch === true && addEvt(ctx, 'main', [
252
252
  [ el, 'touchstart', 'touchStart', `passive${modifiers.capture === true ? 'Capture' : ''}` ],
253
- [ el, 'touchmove', 'noop', 'notPassiveCapture' ]
253
+ [ el, 'touchmove', 'noop', 'notPassiveCapture' ] // cannot be passive (ex: iOS scroll)
254
254
  ])
255
255
  },
256
256
 
@@ -1,7 +1,7 @@
1
- import { clearSelection } from '../utils/selection.js'
1
+ import { clearSelection } from '../utils/private/selection.js'
2
2
  import { addEvt, cleanEvt, prevent, listenOpts } from '../utils/event.js'
3
3
  import { getElement } from '../utils/dom.js'
4
- import { isKeyCode } from '../utils/key-composition.js'
4
+ import { isKeyCode } from '../utils/private/key-composition.js'
5
5
 
6
6
  export default {
7
7
  props: {
@@ -1,4 +1,4 @@
1
- import { getPropCacheMixin } from '../utils/cache.js'
1
+ import { getPropCacheMixin } from '../utils/private/cache.js'
2
2
 
3
3
  export const ariaHidden = { 'aria-hidden': 'true' }
4
4
 
package/src/mixins/btn.js CHANGED
@@ -107,20 +107,21 @@ export default {
107
107
  const acc = { tabindex: this.computedTabIndex }
108
108
 
109
109
  if (this.hasLink === true) {
110
- Object.assign(acc, this.linkProps.attrs)
110
+ Object.assign(acc, this.linkAttrs)
111
111
  }
112
112
  else if (formTypes.includes(this.type) === true) {
113
113
  acc.type = this.type
114
114
  }
115
115
 
116
- if (this.hasLink === true || this.type === 'a') {
116
+ if (this.linkTag === 'a') {
117
117
  if (this.disable === true) {
118
118
  acc['aria-disabled'] = 'true'
119
119
  }
120
120
  else if (acc.href === void 0) {
121
121
  acc.role = 'button'
122
122
  }
123
- if (mediaTypeRe.test(this.type) === true) {
123
+
124
+ if (this.hasRouterLink !== true && mediaTypeRe.test(this.type) === true) {
124
125
  acc.type = this.type
125
126
  }
126
127
  }
@@ -5,8 +5,8 @@ import FormMixin from './form.js'
5
5
  import OptionSizeMixin from './option-size.js'
6
6
  import RefocusTargetMixin from './refocus-target.js'
7
7
 
8
- import { slot, mergeSlot } from '../utils/slot.js'
9
- import cache from '../utils/cache.js'
8
+ import { slot, mergeSlot } from '../utils/private/slot.js'
9
+ import cache from '../utils/private/cache.js'
10
10
 
11
11
  export default {
12
12
  mixins: [ DarkMixin, OptionSizeMixin, FormMixin, RefocusTargetMixin ],
@@ -194,7 +194,8 @@ export default {
194
194
  h('div', {
195
195
  staticClass: `q-${this.type}__inner relative-position non-selectable`,
196
196
  class: this.innerClass,
197
- style: this.sizeStyle
197
+ style: this.sizeStyle,
198
+ attrs: { 'aria-hidden': 'true' }
198
199
  }, inner)
199
200
  ]
200
201
 
@@ -1,4 +1,4 @@
1
- import { toJalaali } from '../utils/date-persian.js'
1
+ import { toJalaali } from '../utils/private/date-persian.js'
2
2
 
3
3
  import DarkMixin from './dark.js'
4
4
  import FormMixin from './form.js'
@@ -1,5 +1,5 @@
1
1
  import { stop, stopAndPrevent } from '../utils/event.js'
2
- import cache from '../utils/cache.js'
2
+ import cache from '../utils/private/cache.js'
3
3
 
4
4
  function filterFiles (files, rejectedFiles, failedPropValidation, filterFn) {
5
5
  const acceptedFiles = []
@@ -1,2 +1,2 @@
1
- import { getPropCacheMixin } from '../utils/cache.js'
1
+ import { getPropCacheMixin } from '../utils/private/cache.js'
2
2
  export default getPropCacheMixin('$listeners', 'qListeners')
@@ -1,4 +1,4 @@
1
- import { shouldIgnoreKey } from '../utils/key-composition.js'
1
+ import { shouldIgnoreKey } from '../utils/private/key-composition.js'
2
2
 
3
3
  // leave NAMED_MASKS at top of file (code referenced from docs)
4
4
  const NAMED_MASKS = {
@@ -1,10 +1,9 @@
1
1
  import { isSSR } from '../plugins/Platform.js'
2
2
 
3
- import TimeoutMixin from './timeout.js'
4
3
  import ListenersMixin from './listeners.js'
5
4
 
6
5
  export default {
7
- mixins: [ TimeoutMixin, ListenersMixin ],
6
+ mixins: [ ListenersMixin ],
8
7
 
9
8
  props: {
10
9
  value: {
@@ -35,7 +34,10 @@ export default {
35
34
  },
36
35
 
37
36
  show (evt) {
38
- if (this.disable === true || (this.__showCondition !== void 0 && this.__showCondition(evt) !== true)) {
37
+ if (
38
+ this.disable === true ||
39
+ (this.__showCondition !== void 0 && this.__showCondition(evt) !== true)
40
+ ) {
39
41
  return
40
42
  }
41
43
 
@@ -68,9 +70,7 @@ export default {
68
70
  this.$emit('before-show', evt)
69
71
 
70
72
  if (this.__show !== void 0) {
71
- this.__clearTick()
72
73
  this.__show(evt)
73
- this.__prepareTick()
74
74
  }
75
75
  else {
76
76
  this.$emit('show', evt)
@@ -106,9 +106,7 @@ export default {
106
106
  this.$emit('before-hide', evt)
107
107
 
108
108
  if (this.__hide !== void 0) {
109
- this.__clearTick()
110
109
  this.__hide(evt)
111
- this.__prepareTick()
112
110
  }
113
111
  else {
114
112
  this.$emit('hide', evt)
@@ -5,8 +5,8 @@ import TouchSwipe from '../directives/TouchSwipe.js'
5
5
  import ListenersMixin from './listeners.js'
6
6
 
7
7
  import { stop } from '../utils/event.js'
8
- import { slot } from '../utils/slot.js'
9
- import cache, { cacheWithFn } from '../utils/cache.js'
8
+ import { slot } from '../utils/private/slot.js'
9
+ import cache, { cacheWithFn } from '../utils/private/cache.js'
10
10
 
11
11
  function getPanelWrapper (h) {
12
12
  return h('div', {
@@ -2,7 +2,7 @@ import Vue from 'vue'
2
2
 
3
3
  import { isSSR } from '../plugins/Platform.js'
4
4
  import { getBodyFullscreenElement } from '../utils/dom.js'
5
- import { addFocusWaitFlag, removeFocusWaitFlag } from '../utils/focus-manager.js'
5
+ import { addFocusWaitFlag, removeFocusWaitFlag } from '../utils/private/focus-manager.js'
6
6
  import debounce from '../utils/debounce.js'
7
7
 
8
8
  export function closePortalMenus (vm, evt) {