quasar 2.2.1 → 2.3.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 (261) hide show
  1. package/dist/api/QCircularProgress.json +14 -0
  2. package/dist/api/QLinearProgress.json +14 -0
  3. package/dist/api/QOptionGroup.json +36 -1
  4. package/dist/api/QSkeleton.json +1 -1
  5. package/dist/api/QTable.json +5 -0
  6. package/dist/api/QTree.json +6 -0
  7. package/dist/icon-set/bootstrap-icons.umd.prod.js +1 -1
  8. package/dist/icon-set/eva-icons.umd.prod.js +1 -1
  9. package/dist/icon-set/fontawesome-v5-pro.umd.prod.js +1 -1
  10. package/dist/icon-set/fontawesome-v5.umd.prod.js +1 -1
  11. package/dist/icon-set/ionicons-v4.umd.prod.js +1 -1
  12. package/dist/icon-set/line-awesome.umd.prod.js +1 -1
  13. package/dist/icon-set/material-icons-outlined.umd.prod.js +1 -1
  14. package/dist/icon-set/material-icons-round.umd.prod.js +1 -1
  15. package/dist/icon-set/material-icons-sharp.umd.prod.js +1 -1
  16. package/dist/icon-set/material-icons.umd.prod.js +1 -1
  17. package/dist/icon-set/mdi-v3.umd.prod.js +1 -1
  18. package/dist/icon-set/mdi-v4.umd.prod.js +1 -1
  19. package/dist/icon-set/mdi-v5.umd.prod.js +1 -1
  20. package/dist/icon-set/mdi-v6.umd.prod.js +1 -1
  21. package/dist/icon-set/svg-bootstrap-icons.umd.prod.js +1 -1
  22. package/dist/icon-set/svg-eva-icons.umd.prod.js +1 -1
  23. package/dist/icon-set/svg-fontawesome-v5.umd.prod.js +1 -1
  24. package/dist/icon-set/svg-ionicons-v4.umd.prod.js +1 -1
  25. package/dist/icon-set/svg-ionicons-v5.umd.prod.js +1 -1
  26. package/dist/icon-set/svg-line-awesome.umd.prod.js +1 -1
  27. package/dist/icon-set/svg-material-icons-outlined.umd.prod.js +1 -1
  28. package/dist/icon-set/svg-material-icons-round.umd.prod.js +1 -1
  29. package/dist/icon-set/svg-material-icons-sharp.umd.prod.js +1 -1
  30. package/dist/icon-set/svg-material-icons.umd.prod.js +1 -1
  31. package/dist/icon-set/svg-mdi-v4.umd.prod.js +1 -1
  32. package/dist/icon-set/svg-mdi-v5.umd.prod.js +1 -1
  33. package/dist/icon-set/svg-mdi-v6.umd.prod.js +1 -1
  34. package/dist/icon-set/svg-themify.umd.prod.js +1 -1
  35. package/dist/icon-set/themify.umd.prod.js +1 -1
  36. package/dist/lang/ar.umd.prod.js +1 -1
  37. package/dist/lang/az-Latn.umd.prod.js +1 -1
  38. package/dist/lang/bg.umd.prod.js +1 -1
  39. package/dist/lang/bn.umd.prod.js +1 -1
  40. package/dist/lang/ca.umd.prod.js +1 -1
  41. package/dist/lang/cs.umd.prod.js +1 -1
  42. package/dist/lang/da.umd.prod.js +1 -1
  43. package/dist/lang/de.umd.prod.js +1 -1
  44. package/dist/lang/el.umd.prod.js +1 -1
  45. package/dist/lang/en-GB.umd.prod.js +1 -1
  46. package/dist/lang/en-US.umd.prod.js +1 -1
  47. package/dist/lang/eo.umd.prod.js +1 -1
  48. package/dist/lang/es.umd.prod.js +1 -1
  49. package/dist/lang/et.umd.prod.js +1 -1
  50. package/dist/lang/fa-IR.umd.prod.js +1 -1
  51. package/dist/lang/fa.umd.prod.js +1 -1
  52. package/dist/lang/fi.umd.prod.js +1 -1
  53. package/dist/lang/fr.umd.prod.js +1 -1
  54. package/dist/lang/gn.umd.prod.js +1 -1
  55. package/dist/lang/he.umd.prod.js +1 -1
  56. package/dist/lang/hr.umd.prod.js +1 -1
  57. package/dist/lang/hu.umd.prod.js +1 -1
  58. package/dist/lang/id.umd.prod.js +1 -1
  59. package/dist/lang/is.umd.prod.js +1 -1
  60. package/dist/lang/it.umd.prod.js +1 -1
  61. package/dist/lang/ja.umd.prod.js +1 -1
  62. package/dist/lang/km.umd.prod.js +1 -1
  63. package/dist/lang/ko-KR.umd.prod.js +1 -1
  64. package/dist/lang/kur-CKB.umd.prod.js +1 -1
  65. package/dist/lang/lt.umd.prod.js +1 -1
  66. package/dist/lang/lu.umd.prod.js +1 -1
  67. package/dist/lang/lv.umd.prod.js +1 -1
  68. package/dist/lang/ml.umd.prod.js +1 -1
  69. package/dist/lang/ms.umd.prod.js +1 -1
  70. package/dist/lang/nb-NO.umd.prod.js +1 -1
  71. package/dist/lang/nl.umd.prod.js +1 -1
  72. package/dist/lang/pl.umd.prod.js +1 -1
  73. package/dist/lang/pt-BR.umd.prod.js +1 -1
  74. package/dist/lang/pt.umd.prod.js +1 -1
  75. package/dist/lang/ro.umd.prod.js +1 -1
  76. package/dist/lang/ru.umd.prod.js +1 -1
  77. package/dist/lang/sk.umd.prod.js +1 -1
  78. package/dist/lang/sl.umd.prod.js +1 -1
  79. package/dist/lang/sr-CYR.umd.prod.js +1 -1
  80. package/dist/lang/sr.umd.prod.js +1 -1
  81. package/dist/lang/sv.umd.prod.js +1 -1
  82. package/dist/lang/ta.umd.prod.js +1 -1
  83. package/dist/lang/th.umd.prod.js +1 -1
  84. package/dist/lang/tr.umd.prod.js +1 -1
  85. package/dist/lang/ug.umd.prod.js +1 -1
  86. package/dist/lang/uk.umd.prod.js +1 -1
  87. package/dist/lang/vi.umd.prod.js +1 -1
  88. package/dist/lang/zh-CN.umd.prod.js +1 -1
  89. package/dist/lang/zh-TW.umd.prod.js +1 -1
  90. package/dist/quasar.cjs.prod.js +2 -2
  91. package/dist/quasar.css +53 -9
  92. package/dist/quasar.esm.prod.js +2 -2
  93. package/dist/quasar.prod.css +1 -1
  94. package/dist/quasar.rtl.css +120 -9
  95. package/dist/quasar.rtl.prod.css +1 -1
  96. package/dist/quasar.sass +45 -7
  97. package/dist/quasar.umd.js +320 -254
  98. package/dist/quasar.umd.prod.js +2 -2
  99. package/dist/ssr-directives/Morph.js +1 -1
  100. package/dist/types/index.d.ts +33 -3
  101. package/dist/vetur/quasar-attributes.json +13 -1
  102. package/dist/vetur/quasar-tags.json +5 -2
  103. package/dist/web-types/web-types.json +32 -2
  104. package/package.json +1 -1
  105. package/src/api.extends.json +7 -0
  106. package/src/components/ajax-bar/QAjaxBar.js +3 -2
  107. package/src/components/avatar/QAvatar.js +3 -2
  108. package/src/components/badge/QBadge.js +3 -2
  109. package/src/components/banner/QBanner.js +3 -2
  110. package/src/components/bar/QBar.js +3 -2
  111. package/src/components/breadcrumbs/QBreadcrumbs.js +3 -2
  112. package/src/components/breadcrumbs/QBreadcrumbsEl.js +3 -2
  113. package/src/components/btn/QBtn.js +3 -2
  114. package/src/components/btn-dropdown/QBtnDropdown.js +3 -2
  115. package/src/components/btn-group/QBtnGroup.js +3 -2
  116. package/src/components/btn-toggle/QBtnToggle.js +3 -2
  117. package/src/components/card/QCard.js +3 -2
  118. package/src/components/card/QCardActions.js +3 -2
  119. package/src/components/card/QCardSection.js +3 -2
  120. package/src/components/carousel/QCarousel.js +3 -2
  121. package/src/components/carousel/QCarouselControl.js +3 -2
  122. package/src/components/carousel/QCarouselSlide.js +3 -2
  123. package/src/components/chat/QChatMessage.js +3 -2
  124. package/src/components/checkbox/QCheckbox.js +3 -2
  125. package/src/components/chip/QChip.js +3 -2
  126. package/src/components/circular-progress/QCircularProgress.js +9 -3
  127. package/src/components/circular-progress/QCircularProgress.json +6 -0
  128. package/src/components/color/QColor.js +3 -2
  129. package/src/components/date/QDate.js +5 -3
  130. package/src/components/dialog/QDialog.js +3 -2
  131. package/src/components/dialog-bottom-sheet/BottomSheet.js +3 -2
  132. package/src/components/dialog-plugin/DialogPlugin.js +3 -2
  133. package/src/components/drawer/QDrawer.js +3 -2
  134. package/src/components/editor/QEditor.js +3 -2
  135. package/src/components/expansion-item/QExpansionItem.js +3 -2
  136. package/src/components/fab/QFab.js +3 -2
  137. package/src/components/fab/QFabAction.js +3 -2
  138. package/src/components/field/QField.js +3 -3
  139. package/src/components/file/QFile.js +3 -2
  140. package/src/components/footer/QFooter.js +3 -2
  141. package/src/components/form/QForm.js +3 -2
  142. package/src/components/header/QHeader.js +3 -2
  143. package/src/components/icon/QIcon.js +4 -2
  144. package/src/components/img/QImg.js +5 -2
  145. package/src/components/infinite-scroll/QInfiniteScroll.js +50 -32
  146. package/src/components/inner-loading/QInnerLoading.js +3 -2
  147. package/src/components/input/QInput.js +3 -2
  148. package/src/components/intersection/QIntersection.js +3 -2
  149. package/src/components/item/QItem.js +3 -2
  150. package/src/components/item/QItemLabel.js +3 -2
  151. package/src/components/item/QItemSection.js +3 -2
  152. package/src/components/item/QList.js +3 -3
  153. package/src/components/knob/QKnob.js +3 -2
  154. package/src/components/layout/QLayout.js +3 -2
  155. package/src/components/linear-progress/QLinearProgress.js +13 -3
  156. package/src/components/linear-progress/QLinearProgress.json +6 -0
  157. package/src/components/linear-progress/QLinearProgress.sass +2 -1
  158. package/src/components/markup-table/QMarkupTable.js +3 -2
  159. package/src/components/menu/QMenu.js +4 -3
  160. package/src/components/no-ssr/QNoSsr.js +3 -2
  161. package/src/components/option-group/QOptionGroup.js +4 -2
  162. package/src/components/option-group/QOptionGroup.json +24 -1
  163. package/src/components/page/QPage.js +3 -2
  164. package/src/components/page/QPageContainer.js +3 -2
  165. package/src/components/page-scroller/QPageScroller.js +4 -2
  166. package/src/components/page-sticky/QPageSticky.js +2 -3
  167. package/src/components/pagination/QPagination.js +3 -2
  168. package/src/components/parallax/QParallax.js +3 -2
  169. package/src/components/popup-edit/QPopupEdit.js +3 -2
  170. package/src/components/popup-proxy/QPopupProxy.js +10 -17
  171. package/src/components/pull-to-refresh/QPullToRefresh.js +3 -2
  172. package/src/components/radio/QRadio.js +3 -2
  173. package/src/components/range/QRange.js +3 -2
  174. package/src/components/rating/QRating.js +6 -5
  175. package/src/components/resize-observer/QResizeObserver.js +3 -2
  176. package/src/components/responsive/QResponsive.js +3 -2
  177. package/src/components/scroll-area/QScrollArea.js +3 -2
  178. package/src/components/scroll-observer/QScrollObserver.js +3 -2
  179. package/src/components/select/QSelect.js +11 -20
  180. package/src/components/separator/QSeparator.js +4 -2
  181. package/src/components/skeleton/QSkeleton.js +3 -2
  182. package/src/components/skeleton/QSkeleton.json +1 -4
  183. package/src/components/slide-item/QSlideItem.js +3 -2
  184. package/src/components/slide-transition/QSlideTransition.js +4 -2
  185. package/src/components/slider/QSlider.js +3 -2
  186. package/src/components/space/QSpace.js +4 -2
  187. package/src/components/spinner/QSpinner.js +4 -2
  188. package/src/components/spinner/QSpinnerAudio.js +4 -2
  189. package/src/components/spinner/QSpinnerBall.js +4 -2
  190. package/src/components/spinner/QSpinnerBars.js +4 -2
  191. package/src/components/spinner/QSpinnerBox.js +4 -2
  192. package/src/components/spinner/QSpinnerClock.js +4 -2
  193. package/src/components/spinner/QSpinnerComment.js +4 -2
  194. package/src/components/spinner/QSpinnerCube.js +4 -2
  195. package/src/components/spinner/QSpinnerDots.js +4 -2
  196. package/src/components/spinner/QSpinnerFacebook.js +4 -2
  197. package/src/components/spinner/QSpinnerGears.js +4 -2
  198. package/src/components/spinner/QSpinnerGrid.js +4 -2
  199. package/src/components/spinner/QSpinnerHearts.js +4 -2
  200. package/src/components/spinner/QSpinnerHourglass.js +4 -2
  201. package/src/components/spinner/QSpinnerInfinity.js +4 -2
  202. package/src/components/spinner/QSpinnerIos.js +4 -2
  203. package/src/components/spinner/QSpinnerOrbit.js +4 -2
  204. package/src/components/spinner/QSpinnerOval.js +4 -2
  205. package/src/components/spinner/QSpinnerPie.js +4 -2
  206. package/src/components/spinner/QSpinnerPuff.js +4 -2
  207. package/src/components/spinner/QSpinnerRadio.js +4 -2
  208. package/src/components/spinner/QSpinnerRings.js +4 -2
  209. package/src/components/spinner/QSpinnerTail.js +4 -2
  210. package/src/components/splitter/QSplitter.js +3 -2
  211. package/src/components/stepper/QStep.js +3 -2
  212. package/src/components/stepper/QStepper.js +3 -2
  213. package/src/components/stepper/QStepperNavigation.js +3 -2
  214. package/src/components/stepper/StepHeader.js +4 -2
  215. package/src/components/tab-panels/QTabPanel.js +4 -2
  216. package/src/components/tab-panels/QTabPanels.js +3 -2
  217. package/src/components/table/QTable.js +4 -2
  218. package/src/components/table/QTable.json +1 -0
  219. package/src/components/table/QTd.js +3 -2
  220. package/src/components/table/QTh.js +3 -2
  221. package/src/components/table/QTr.js +3 -2
  222. package/src/components/table/table-pagination.js +2 -2
  223. package/src/components/tabs/QRouteTab.js +4 -2
  224. package/src/components/tabs/QTab.js +3 -3
  225. package/src/components/tabs/QTabs.js +4 -3
  226. package/src/components/time/QTime.js +9 -9
  227. package/src/components/timeline/QTimeline.js +3 -2
  228. package/src/components/timeline/QTimelineEntry.js +3 -2
  229. package/src/components/toggle/QToggle.js +5 -2
  230. package/src/components/toolbar/QToolbar.js +3 -2
  231. package/src/components/toolbar/QToolbarTitle.js +3 -2
  232. package/src/components/tooltip/QTooltip.js +3 -2
  233. package/src/components/tree/QTree.js +12 -7
  234. package/src/components/tree/QTree.json +5 -0
  235. package/src/components/tree/QTree.sass +52 -4
  236. package/src/components/uploader/QUploaderAddTrigger.js +3 -2
  237. package/src/components/uploader/uploader-core.js +2 -7
  238. package/src/components/video/QVideo.js +4 -2
  239. package/src/components/virtual-scroll/QVirtualScroll.js +3 -2
  240. package/src/components/virtual-scroll/use-virtual-scroll.js +17 -1
  241. package/src/composables/private/use-file.js +8 -0
  242. package/src/composables/private/use-model-toggle.js +1 -1
  243. package/src/composables/use-dialog-plugin-component.js +6 -1
  244. package/src/css/normalize.sass +0 -7
  245. package/src/directives/ClosePopup.js +3 -1
  246. package/src/directives/Intersection.js +3 -1
  247. package/src/directives/Morph.js +4 -1
  248. package/src/directives/Mutation.js +3 -1
  249. package/src/directives/Ripple.js +3 -1
  250. package/src/directives/Scroll.js +3 -1
  251. package/src/directives/ScrollFire.js +3 -1
  252. package/src/directives/TouchHold.js +4 -1
  253. package/src/directives/TouchPan.js +4 -1
  254. package/src/directives/TouchRepeat.js +4 -1
  255. package/src/directives/TouchSwipe.js +4 -1
  256. package/src/plugins/Notify.js +4 -3
  257. package/src/utils/create-uploader-component.js +9 -7
  258. package/src/utils/date.js +1 -1
  259. package/src/utils/private/create.js +4 -0
  260. package/src/utils/private/get-emits-object.js +11 -0
  261. package/src/utils/private/vm.js +3 -3
@@ -1,9 +1,11 @@
1
- import { h, defineComponent } from 'vue'
1
+ import { h } from 'vue'
2
2
 
3
3
  import { usePanelChildProps } from '../../composables/private/use-panel.js'
4
+
5
+ import { createComponent } from '../../utils/private/create.js'
4
6
  import { hSlot } from '../../utils/private/render.js'
5
7
 
6
- export default defineComponent({
8
+ export default createComponent({
7
9
  name: 'QTabPanel',
8
10
 
9
11
  props: usePanelChildProps,
@@ -1,11 +1,12 @@
1
- import { defineComponent, computed, getCurrentInstance } from 'vue'
1
+ import { computed, getCurrentInstance } from 'vue'
2
2
 
3
3
  import useDark, { useDarkProps } from '../../composables/private/use-dark.js'
4
4
  import usePanel, { usePanelProps, usePanelEmits } from '../../composables/private/use-panel.js'
5
5
 
6
+ import { createComponent } from '../../utils/private/create.js'
6
7
  import { hDir } from '../../utils/private/render.js'
7
8
 
8
- export default defineComponent({
9
+ export default createComponent({
9
10
  name: 'QTabPanels',
10
11
 
11
12
  props: {
@@ -1,4 +1,4 @@
1
- import { h, defineComponent, ref, computed, watch, getCurrentInstance } from 'vue'
1
+ import { h, ref, computed, watch, getCurrentInstance } from 'vue'
2
2
 
3
3
  import QTh from './QTh.js'
4
4
 
@@ -23,12 +23,14 @@ import { useTableRowSelection, useTableRowSelectionProps, useTableRowSelectionEm
23
23
  import { useTableRowExpand, useTableRowExpandProps, useTableRowExpandEmits } from './table-row-expand.js'
24
24
  import { useTableColumnSelection, useTableColumnSelectionProps } from './table-column-selection.js'
25
25
 
26
+ import { createComponent } from '../../utils/private/create.js'
27
+
26
28
  const bottomClass = 'q-table__bottom row items-center'
27
29
 
28
30
  const commonVirtPropsObj = {}
29
31
  commonVirtPropsList.forEach(p => { commonVirtPropsObj[ p ] = {} })
30
32
 
31
- export default defineComponent({
33
+ export default createComponent({
32
34
  name: 'QTable',
33
35
 
34
36
  props: {
@@ -156,6 +156,7 @@
156
156
  "align": {
157
157
  "type": "String",
158
158
  "desc": "Horizontal alignment of cells in this column",
159
+ "values": [ "left", "right", "center" ],
159
160
  "default": "right",
160
161
  "examples": [ "left", "right", "center" ]
161
162
  },
@@ -1,8 +1,9 @@
1
- import { h, defineComponent, computed, getCurrentInstance } from 'vue'
1
+ import { h, computed, getCurrentInstance } from 'vue'
2
2
 
3
+ import { createComponent } from '../../utils/private/create.js'
3
4
  import { hSlot } from '../../utils/private/render.js'
4
5
 
5
- export default defineComponent({
6
+ export default createComponent({
6
7
  name: 'QTd',
7
8
 
8
9
  props: {
@@ -1,10 +1,11 @@
1
- import { h, defineComponent, getCurrentInstance } from 'vue'
1
+ import { h, getCurrentInstance } from 'vue'
2
2
 
3
3
  import QIcon from '../icon/QIcon.js'
4
4
 
5
+ import { createComponent } from '../../utils/private/create.js'
5
6
  import { hSlot, hUniqueSlot } from '../../utils/private/render.js'
6
7
 
7
- export default defineComponent({
8
+ export default createComponent({
8
9
  name: 'QTh',
9
10
 
10
11
  props: {
@@ -1,8 +1,9 @@
1
- import { h, defineComponent, computed } from 'vue'
1
+ import { h, computed } from 'vue'
2
2
 
3
+ import { createComponent } from '../../utils/private/create.js'
3
4
  import { hSlot } from '../../utils/private/render.js'
4
5
 
5
- export default defineComponent({
6
+ export default createComponent({
6
7
  name: 'QTr',
7
8
 
8
9
  props: {
@@ -26,7 +26,7 @@ export const useTablePaginationProps = {
26
26
  default: () => [ 5, 7, 10, 15, 20, 25, 50, 0 ]
27
27
  },
28
28
 
29
- 'onUpdate:pagination': Function
29
+ 'onUpdate:pagination': [ Function, Array ]
30
30
  }
31
31
 
32
32
  export function useTablePaginationState (vm, getCellValue) {
@@ -76,7 +76,7 @@ export function useTablePaginationState (vm, getCellValue) {
76
76
  ...val
77
77
  })
78
78
 
79
- if (samePagination(computedPagination.value, newPagination)) {
79
+ if (samePagination(computedPagination.value, newPagination) === true) {
80
80
  if (isServerSide.value === true && forceServerRequest === true) {
81
81
  sendServerRequest(newPagination)
82
82
  }
@@ -1,9 +1,11 @@
1
- import { defineComponent, computed, watch } from 'vue'
1
+ import { computed, watch } from 'vue'
2
2
 
3
3
  import useRouterLink, { useRouterLinkProps } from '../../composables/private/use-router-link.js'
4
4
  import useTab, { useTabProps, useTabEmits } from './use-tab.js'
5
5
 
6
- export default defineComponent({
6
+ import { createComponent } from '../../utils/private/create.js'
7
+
8
+ export default createComponent({
7
9
  name: 'QRouteTab',
8
10
 
9
11
  props: {
@@ -1,8 +1,8 @@
1
- import { defineComponent } from 'vue'
2
-
3
1
  import useTab, { useTabProps, useTabEmits } from './use-tab.js'
4
2
 
5
- export default defineComponent({
3
+ import { createComponent } from '../../utils/private/create.js'
4
+
5
+ export default createComponent({
6
6
  name: 'QTab',
7
7
 
8
8
  props: useTabProps,
@@ -1,4 +1,4 @@
1
- import { h, defineComponent, ref, computed, watch, nextTick, onBeforeUnmount, onActivated, getCurrentInstance, provide } from 'vue'
1
+ import { h, ref, computed, watch, nextTick, onBeforeUnmount, onActivated, getCurrentInstance, provide } from 'vue'
2
2
 
3
3
  import QIcon from '../icon/QIcon.js'
4
4
  import QResizeObserver from '../resize-observer/QResizeObserver.js'
@@ -6,6 +6,7 @@ import QResizeObserver from '../resize-observer/QResizeObserver.js'
6
6
  import useTick from '../../composables/private/use-tick.js'
7
7
  import useTimeout from '../../composables/private/use-timeout.js'
8
8
 
9
+ import { createComponent } from '../../utils/private/create.js'
9
10
  import { noop } from '../../utils/event.js'
10
11
  import { hSlot } from '../../utils/private/render.js'
11
12
  import { tabsKey } from '../../utils/private/symbols.js'
@@ -22,7 +23,7 @@ function getIndicatorClass (color, top, vertical) {
22
23
  const alignValues = [ 'left', 'center', 'right', 'justify' ]
23
24
  const emptyFn = () => {}
24
25
 
25
- export default defineComponent({
26
+ export default createComponent({
26
27
  name: 'QTabs',
27
28
 
28
29
  props: {
@@ -62,7 +63,7 @@ export default defineComponent({
62
63
 
63
64
  contentClass: String,
64
65
 
65
- 'onUpdate:modelValue': Function
66
+ 'onUpdate:modelValue': [ Function, Array ]
66
67
  },
67
68
 
68
69
  setup (props, { slots, emit }) {
@@ -1,4 +1,4 @@
1
- import { h, defineComponent, ref, computed, watch, withDirectives, Transition, nextTick, getCurrentInstance } from 'vue'
1
+ import { h, ref, computed, watch, withDirectives, Transition, nextTick, getCurrentInstance } from 'vue'
2
2
 
3
3
  import QBtn from '../btn/QBtn.js'
4
4
  import TouchPan from '../../directives/TouchPan.js'
@@ -7,6 +7,7 @@ import useDark, { useDarkProps } from '../../composables/private/use-dark.js'
7
7
  import { useFormProps, useFormAttrs, useFormInject } from '../../composables/private/use-form.js'
8
8
  import useDatetime, { useDatetimeProps, useDatetimeEmits, getDayHash } from '../date/use-datetime.js'
9
9
 
10
+ import { createComponent } from '../../utils/private/create.js'
10
11
  import { hSlot } from '../../utils/private/render.js'
11
12
  import { formatDate, __splitDate } from '../../utils/date.js'
12
13
  import { position } from '../../utils/event.js'
@@ -36,7 +37,7 @@ function getCurrentTime () {
36
37
  }
37
38
  }
38
39
 
39
- export default defineComponent({
40
+ export default createComponent({
40
41
  name: 'QTime',
41
42
 
42
43
  props: {
@@ -288,8 +289,6 @@ export default defineComponent({
288
289
  defaultDateModel.value
289
290
  )
290
291
 
291
- console.log({ ...model })
292
-
293
292
  if (
294
293
  model.dateHash !== innerModel.value.dateHash
295
294
  || model.timeHash !== innerModel.value.timeHash
@@ -660,21 +659,22 @@ export default defineComponent({
660
659
  function setHour (hour) {
661
660
  if (innerModel.value.hour !== hour) {
662
661
  innerModel.value.hour = hour
663
- innerModel.value.minute = null
664
- innerModel.value.second = null
662
+ verifyAndUpdate()
665
663
  }
666
664
  }
667
665
 
668
666
  function setMinute (minute) {
669
667
  if (innerModel.value.minute !== minute) {
670
668
  innerModel.value.minute = minute
671
- innerModel.value.second = null
672
- props.withSeconds !== true && updateValue({ minute })
669
+ verifyAndUpdate()
673
670
  }
674
671
  }
675
672
 
676
673
  function setSecond (second) {
677
- innerModel.value.second !== second && updateValue({ second })
674
+ if (innerModel.value.second !== second) {
675
+ innerModel.value.second = second
676
+ verifyAndUpdate()
677
+ }
678
678
  }
679
679
 
680
680
  const setModel = {
@@ -1,11 +1,12 @@
1
- import { h, defineComponent, computed, provide, getCurrentInstance } from 'vue'
1
+ import { h, computed, provide, getCurrentInstance } from 'vue'
2
2
 
3
3
  import useDark, { useDarkProps } from '../../composables/private/use-dark.js'
4
4
 
5
+ import { createComponent } from '../../utils/private/create.js'
5
6
  import { hSlot } from '../../utils/private/render.js'
6
7
  import { timelineKey } from '../../utils/private/symbols.js'
7
8
 
8
- export default defineComponent({
9
+ export default createComponent({
9
10
  name: 'QTimeline',
10
11
 
11
12
  props: {
@@ -1,11 +1,12 @@
1
- import { h, defineComponent, computed, inject } from 'vue'
1
+ import { h, computed, inject } from 'vue'
2
2
 
3
3
  import QIcon from '../icon/QIcon.js'
4
4
 
5
+ import { createComponent } from '../../utils/private/create.js'
5
6
  import { hSlot, hUniqueSlot } from '../../utils/private/render.js'
6
7
  import { timelineKey } from '../../utils/private/symbols.js'
7
8
 
8
- export default defineComponent({
9
+ export default createComponent({
9
10
  name: 'QTimelineEntry',
10
11
 
11
12
  props: {
@@ -1,9 +1,12 @@
1
- import { h, defineComponent, computed } from 'vue'
1
+ import { h, computed } from 'vue'
2
2
 
3
3
  import QIcon from '../icon/QIcon.js'
4
+
4
5
  import useCheckbox, { useCheckboxProps, useCheckboxEmits } from '../checkbox/use-checkbox.js'
5
6
 
6
- export default defineComponent({
7
+ import { createComponent } from '../../utils/private/create.js'
8
+
9
+ export default createComponent({
7
10
  name: 'QToggle',
8
11
 
9
12
  props: {
@@ -1,8 +1,9 @@
1
- import { h, defineComponent, computed } from 'vue'
1
+ import { h, computed } from 'vue'
2
2
 
3
+ import { createComponent } from '../../utils/private/create.js'
3
4
  import { hSlot } from '../../utils/private/render.js'
4
5
 
5
- export default defineComponent({
6
+ export default createComponent({
6
7
  name: 'QToolbar',
7
8
 
8
9
  props: {
@@ -1,8 +1,9 @@
1
- import { h, defineComponent, computed } from 'vue'
1
+ import { h, computed } from 'vue'
2
2
 
3
+ import { createComponent } from '../../utils/private/create.js'
3
4
  import { hSlot } from '../../utils/private/render.js'
4
5
 
5
- export default defineComponent({
6
+ export default createComponent({
6
7
  name: 'QToolbarTitle',
7
8
 
8
9
  props: {
@@ -1,4 +1,4 @@
1
- import { h, defineComponent, ref, computed, watch, onBeforeUnmount, Transition, getCurrentInstance } from 'vue'
1
+ import { h, ref, computed, watch, onBeforeUnmount, Transition, getCurrentInstance } from 'vue'
2
2
 
3
3
  import useAnchor, { useAnchorProps } from '../../composables/private/use-anchor.js'
4
4
  import useScrollTarget from '../../composables/private/use-scroll-target.js'
@@ -8,6 +8,7 @@ import useTransition, { useTransitionProps } from '../../composables/private/use
8
8
  import useTick from '../../composables/private/use-tick.js'
9
9
  import useTimeout from '../../composables/private/use-timeout.js'
10
10
 
11
+ import { createComponent } from '../../utils/private/create.js'
11
12
  import { getScrollTarget } from '../../utils/scroll.js'
12
13
  import { stopAndPrevent, addEvt, cleanEvt } from '../../utils/event.js'
13
14
  import { clearSelection } from '../../utils/private/selection.js'
@@ -17,7 +18,7 @@ import {
17
18
  validatePosition, validateOffset, setPosition, parsePosition
18
19
  } from '../../utils/private/position-engine.js'
19
20
 
20
- export default defineComponent({
21
+ export default createComponent({
21
22
  name: 'QTooltip',
22
23
 
23
24
  inheritAttrs: false,
@@ -1,5 +1,5 @@
1
1
  import {
2
- h, defineComponent, ref, computed, watch,
2
+ h, ref, computed, watch,
3
3
  withDirectives, vShow, nextTick, getCurrentInstance, onBeforeUpdate
4
4
  } from 'vue'
5
5
 
@@ -10,10 +10,13 @@ import QSpinner from '../spinner/QSpinner.js'
10
10
 
11
11
  import useDark, { useDarkProps } from '../../composables/private/use-dark.js'
12
12
 
13
+ import { createComponent } from '../../utils/private/create.js'
13
14
  import { stopAndPrevent } from '../../utils/event.js'
14
15
  import { shouldIgnoreKey } from '../../utils/private/key-composition.js'
15
16
 
16
- export default defineComponent({
17
+ const tickStrategyOptions = [ 'none', 'strict', 'leaf', 'leaf-filtered' ]
18
+
19
+ export default createComponent({
17
20
  name: 'QTree',
18
21
 
19
22
  props: {
@@ -36,6 +39,8 @@ export default defineComponent({
36
39
  default: 'children'
37
40
  },
38
41
 
42
+ dense: Boolean,
43
+
39
44
  color: String,
40
45
  controlColor: String,
41
46
  textColor: String,
@@ -46,7 +51,7 @@ export default defineComponent({
46
51
  tickStrategy: {
47
52
  type: String,
48
53
  default: 'none',
49
- validator: v => [ 'none', 'strict', 'leaf', 'leaf-filtered' ].includes(v)
54
+ validator: v => tickStrategyOptions.includes(v)
50
55
  },
51
56
  ticked: Array, // v-model:ticked
52
57
  expanded: Array, // v-model:expanded
@@ -91,7 +96,7 @@ export default defineComponent({
91
96
  })
92
97
 
93
98
  const classes = computed(() =>
94
- 'q-tree'
99
+ `q-tree q-tree--${ props.dense === true ? 'dense' : 'standard' }`
95
100
  + (props.noConnectors === true ? ' q-tree--no-connectors' : '')
96
101
  + (isDark.value === true ? ' q-tree--dark' : '')
97
102
  + (props.color !== void 0 ? ` text-${ props.color }` : '')
@@ -533,13 +538,13 @@ export default defineComponent({
533
538
 
534
539
  m.lazy === 'loading'
535
540
  ? h(QSpinner, {
536
- class: 'q-tree__spinner q-mr-xs',
541
+ class: 'q-tree__spinner',
537
542
  color: computedControlColor.value
538
543
  })
539
544
  : (
540
545
  isParent === true
541
546
  ? h(QIcon, {
542
- class: 'q-tree__arrow q-mr-xs'
547
+ class: 'q-tree__arrow'
543
548
  + (m.expanded === true ? ' q-tree__arrow--rotate' : ''),
544
549
  name: computedIcon.value,
545
550
  onClick (e) { onExpandClick(node, m, e) }
@@ -549,7 +554,7 @@ export default defineComponent({
549
554
 
550
555
  m.hasTicking === true && m.noTick !== true
551
556
  ? h(QCheckbox, {
552
- class: 'q-mr-xs',
557
+ class: 'q-tree__tickbox',
553
558
  modelValue: m.indeterminate === true ? null : m.ticked,
554
559
  color: computedControlColor.value,
555
560
  dark: isDark.value,
@@ -61,6 +61,11 @@
61
61
  "desc": "Color name for selected nodes (from the Quasar Color Palette)"
62
62
  },
63
63
 
64
+ "dense": {
65
+ "extends": "dense",
66
+ "addedIn": "v2.2.4"
67
+ },
68
+
64
69
  "dark": {
65
70
  "extends": "dark"
66
71
  },
@@ -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,11 +84,13 @@
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
95
  &__avatar, &__node-header-content .q-avatar
94
96
  font-size: 28px
@@ -96,15 +98,20 @@
96
98
  width: 28px
97
99
  height: 28px
98
100
 
99
- &__arrow, &__spinner
101
+ &__arrow,
102
+ &__spinner
100
103
  font-size: 16px
101
104
 
102
105
  &__arrow
103
106
  transition: transform .3s
107
+ margin-right: 4px
104
108
 
105
109
  &--rotate
106
110
  transform: rotate3d(0, 0, 1, 90deg)
107
111
 
112
+ &__tickbox
113
+ margin-right: 4px
114
+
108
115
  // remove connectors before root
109
116
  > .q-tree__node
110
117
  padding: 0
@@ -123,10 +130,51 @@
123
130
  .q-tree__node-body:after
124
131
  display: none !important
125
132
 
133
+ &--dense .q-tree
134
+ &__arrow,
135
+ &__spinner
136
+ margin-right: 1px
137
+
138
+ &__img
139
+ height: 32px
140
+
141
+ &__tickbox
142
+ margin-right: 3px
143
+
144
+ &__node
145
+ padding: 0
146
+ &:after
147
+ top: 0
148
+ left: -8px
149
+
150
+ &__node-header
151
+ margin-top: 0
152
+ padding: 1px
153
+ &:before
154
+ top: 0
155
+ left: -8px
156
+ width: 8px
157
+
158
+ &__node--child
159
+ padding-left: 17px
160
+ > .q-tree__node-header:before
161
+ left: -25px
162
+ width: 21px
163
+
164
+ &__node-body
165
+ padding: 0 0 2px
166
+
167
+ &__node--parent > .q-tree__node-collapsible > .q-tree__node-body
168
+ padding: 0 0 2px 20px
169
+ &:after
170
+ left: 8px
171
+
172
+ &__children
173
+ padding-left: 16px
174
+
126
175
  [dir=rtl]
127
176
  .q-tree__arrow
128
177
  transform: rotate3d(0, 0, 1, 180deg) #{"/* rtl:ignore */"}
129
178
 
130
179
  &--rotate
131
180
  transform: rotate3d(0, 0, 1, 90deg) #{"/* rtl:ignore */"}
132
-
@@ -1,8 +1,9 @@
1
- import { defineComponent, inject } from 'vue'
1
+ import { inject } from 'vue'
2
2
 
3
+ import { createComponent } from '../../utils/private/create.js'
3
4
  import { uploaderKey } from '../../utils/private/symbols.js'
4
5
 
5
- export default defineComponent({
6
+ export default createComponent({
6
7
  name: 'QUploaderAddTrigger',
7
8
 
8
9
  setup () {
@@ -260,20 +260,15 @@ export function getRenderer (getPlugin) {
260
260
  }
261
261
 
262
262
  function addFilesToQueue (e, fileList) {
263
- const processedFiles = processFiles(e, fileList, state.files.value, true)
263
+ const localFiles = processFiles(e, fileList, state.files.value, true)
264
264
 
265
- if (processedFiles === void 0) { return }
266
-
267
- const localFiles = processedFiles
268
- .filter(file => state.files.value.findIndex(f => file.name === f.name) === -1)
265
+ if (localFiles === void 0) { return }
269
266
 
270
267
  const fileInput = getFileInput()
271
268
  if (fileInput !== void 0 && fileInput !== null) {
272
269
  fileInput.value = ''
273
270
  }
274
271
 
275
- if (localFiles === void 0) { return }
276
-
277
272
  localFiles.forEach(file => {
278
273
  state.updateFileStatus(file, 'idle')
279
274
  uploadSize.value += file.size
@@ -1,8 +1,10 @@
1
- import { h, defineComponent, computed } from 'vue'
1
+ import { h, computed } from 'vue'
2
2
 
3
3
  import useRatio, { useRatioProps } from '../../composables/private/use-ratio.js'
4
4
 
5
- export default defineComponent({
5
+ import { createComponent } from '../../utils/private/create.js'
6
+
7
+ export default createComponent({
6
8
  name: 'QVideo',
7
9
 
8
10
  props: {
@@ -1,4 +1,4 @@
1
- import { h, defineComponent, ref, computed, watch, onBeforeMount, onMounted, onBeforeUnmount } from 'vue'
1
+ import { h, ref, computed, watch, onBeforeMount, onMounted, onBeforeUnmount } from 'vue'
2
2
 
3
3
  import QList from '../item/QList.js'
4
4
  import QMarkupTable from '../markup-table/QMarkupTable.js'
@@ -6,6 +6,7 @@ import getTableMiddle from '../table/get-table-middle.js'
6
6
 
7
7
  import { useVirtualScroll, useVirtualScrollProps } from './use-virtual-scroll.js'
8
8
 
9
+ import { createComponent } from '../../utils/private/create.js'
9
10
  import { getScrollTarget } from '../../utils/scroll.js'
10
11
  import { listenOpts } from '../../utils/event.js'
11
12
  import { hMergeSlot } from '../../utils/private/render.js'
@@ -17,7 +18,7 @@ const comps = {
17
18
 
18
19
  const typeOptions = [ 'list', 'table', '__qtable' ]
19
20
 
20
- export default defineComponent({
21
+ export default createComponent({
21
22
  name: 'QVirtualScroll',
22
23
 
23
24
  props: {
@@ -1,4 +1,4 @@
1
- import { h, ref, computed, watch, onBeforeMount, onBeforeUnmount, nextTick, getCurrentInstance } from 'vue'
1
+ import { h, ref, computed, watch, onActivated, onBeforeMount, onBeforeUnmount, nextTick, getCurrentInstance } from 'vue'
2
2
 
3
3
  import debounce from '../../utils/debounce.js'
4
4
  import { noop } from '../../utils/event.js'
@@ -679,6 +679,22 @@ export function useVirtualScroll ({
679
679
  setVirtualScrollSize()
680
680
  })
681
681
 
682
+ onActivated(() => {
683
+ const scrollEl = getVirtualScrollTarget()
684
+
685
+ if (prevScrollStart !== void 0 && scrollEl !== void 0 && scrollEl !== null && scrollEl.nodeType !== 8) {
686
+ setScroll(
687
+ scrollEl,
688
+ prevScrollStart,
689
+ props.virtualScrollHorizontal,
690
+ $q.lang.rtl
691
+ )
692
+ }
693
+ else {
694
+ scrollTo(prevToIndex)
695
+ }
696
+ })
697
+
682
698
  setOverflowAnchor !== noop && onBeforeUnmount(() => {
683
699
  const styleSheet = document.getElementById(vsId + '_ss')
684
700
  styleSheet !== null && styleSheet.remove()
@@ -112,6 +112,14 @@ export default function ({
112
112
  files = [ files[ 0 ] ]
113
113
  }
114
114
 
115
+ // Avoid duplicate files
116
+ const filenameMap = currentFileList.map(entry => entry.name)
117
+ files = filterFiles(files, rejectedFiles, 'duplicate', file => {
118
+ return filenameMap.includes(file.name) === false
119
+ })
120
+
121
+ if (files.length === 0) { return done() }
122
+
115
123
  if (props.maxTotalSize !== void 0) {
116
124
  let size = append === true
117
125
  ? currentFileList.reduce((total, file) => total + file.size, 0)
@@ -8,7 +8,7 @@ export const useModelToggleProps = {
8
8
  default: null
9
9
  },
10
10
 
11
- 'onUpdate:modelValue': Function
11
+ 'onUpdate:modelValue': [ Function, Array ]
12
12
  }
13
13
 
14
14
  export const useModelToggleEmits = [