quasar 2.2.0 → 2.2.4

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 (256) hide show
  1. package/dist/api/QOptionGroup.json +36 -1
  2. package/dist/api/QRange.json +10 -3
  3. package/dist/api/QSeparator.json +1 -1
  4. package/dist/api/QSlider.json +10 -3
  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 +51 -8
  92. package/dist/quasar.esm.prod.js +2 -2
  93. package/dist/quasar.prod.css +1 -1
  94. package/dist/quasar.rtl.css +118 -8
  95. package/dist/quasar.rtl.prod.css +1 -1
  96. package/dist/quasar.sass +43 -6
  97. package/dist/quasar.umd.js +341 -289
  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 +28 -8
  101. package/dist/vetur/quasar-attributes.json +10 -6
  102. package/dist/vetur/quasar-tags.json +1 -0
  103. package/dist/web-types/web-types.json +19 -11
  104. package/package.json +1 -1
  105. package/src/components/ajax-bar/QAjaxBar.js +3 -2
  106. package/src/components/avatar/QAvatar.js +3 -2
  107. package/src/components/badge/QBadge.js +3 -2
  108. package/src/components/banner/QBanner.js +3 -2
  109. package/src/components/bar/QBar.js +3 -2
  110. package/src/components/breadcrumbs/QBreadcrumbs.js +3 -2
  111. package/src/components/breadcrumbs/QBreadcrumbsEl.js +3 -2
  112. package/src/components/btn/QBtn.js +19 -21
  113. package/src/components/btn-dropdown/QBtnDropdown.js +3 -2
  114. package/src/components/btn-group/QBtnGroup.js +3 -2
  115. package/src/components/btn-toggle/QBtnToggle.js +3 -2
  116. package/src/components/card/QCard.js +3 -2
  117. package/src/components/card/QCardActions.js +3 -2
  118. package/src/components/card/QCardSection.js +3 -2
  119. package/src/components/carousel/QCarousel.js +3 -2
  120. package/src/components/carousel/QCarouselControl.js +3 -2
  121. package/src/components/carousel/QCarouselSlide.js +3 -2
  122. package/src/components/chat/QChatMessage.js +3 -2
  123. package/src/components/checkbox/QCheckbox.js +3 -2
  124. package/src/components/chip/QChip.js +3 -2
  125. package/src/components/circular-progress/QCircularProgress.js +3 -2
  126. package/src/components/color/QColor.js +3 -2
  127. package/src/components/date/QDate.js +5 -3
  128. package/src/components/dialog/QDialog.js +3 -2
  129. package/src/components/dialog-bottom-sheet/BottomSheet.js +3 -2
  130. package/src/components/dialog-plugin/DialogPlugin.js +3 -2
  131. package/src/components/drawer/QDrawer.js +6 -2
  132. package/src/components/editor/QEditor.js +3 -2
  133. package/src/components/expansion-item/QExpansionItem.js +3 -2
  134. package/src/components/fab/QFab.js +3 -2
  135. package/src/components/fab/QFabAction.js +3 -2
  136. package/src/components/field/QField.js +3 -3
  137. package/src/components/file/QFile.js +3 -2
  138. package/src/components/footer/QFooter.js +3 -2
  139. package/src/components/form/QForm.js +3 -2
  140. package/src/components/header/QHeader.js +3 -2
  141. package/src/components/icon/QIcon.js +4 -2
  142. package/src/components/img/QImg.js +5 -2
  143. package/src/components/infinite-scroll/QInfiniteScroll.js +3 -2
  144. package/src/components/inner-loading/QInnerLoading.js +3 -2
  145. package/src/components/input/QInput.js +3 -2
  146. package/src/components/intersection/QIntersection.js +3 -2
  147. package/src/components/item/QItem.js +3 -2
  148. package/src/components/item/QItemLabel.js +3 -2
  149. package/src/components/item/QItemSection.js +3 -2
  150. package/src/components/item/QList.js +3 -3
  151. package/src/components/knob/QKnob.js +3 -2
  152. package/src/components/layout/QLayout.js +3 -2
  153. package/src/components/linear-progress/QLinearProgress.js +3 -2
  154. package/src/components/markup-table/QMarkupTable.js +3 -2
  155. package/src/components/menu/QMenu.js +4 -3
  156. package/src/components/no-ssr/QNoSsr.js +3 -2
  157. package/src/components/option-group/QOptionGroup.js +4 -2
  158. package/src/components/option-group/QOptionGroup.json +24 -1
  159. package/src/components/page/QPage.js +3 -2
  160. package/src/components/page/QPageContainer.js +3 -2
  161. package/src/components/page-scroller/QPageScroller.js +4 -2
  162. package/src/components/page-sticky/QPageSticky.js +2 -3
  163. package/src/components/pagination/QPagination.js +3 -2
  164. package/src/components/parallax/QParallax.js +3 -2
  165. package/src/components/popup-edit/QPopupEdit.js +3 -2
  166. package/src/components/popup-proxy/QPopupProxy.js +4 -2
  167. package/src/components/pull-to-refresh/QPullToRefresh.js +3 -2
  168. package/src/components/radio/QRadio.js +3 -2
  169. package/src/components/range/QRange.js +4 -3
  170. package/src/components/range/QRange.json +7 -3
  171. package/src/components/rating/QRating.js +6 -5
  172. package/src/components/resize-observer/QResizeObserver.js +3 -2
  173. package/src/components/responsive/QResponsive.js +3 -2
  174. package/src/components/scroll-area/QScrollArea.js +3 -2
  175. package/src/components/scroll-observer/QScrollObserver.js +3 -2
  176. package/src/components/select/QSelect.js +11 -20
  177. package/src/components/separator/QSeparator.js +4 -2
  178. package/src/components/separator/QSeparator.json +1 -1
  179. package/src/components/skeleton/QSkeleton.js +3 -2
  180. package/src/components/slide-item/QSlideItem.js +3 -2
  181. package/src/components/slide-transition/QSlideTransition.js +4 -2
  182. package/src/components/slider/QSlider.js +4 -3
  183. package/src/components/slider/QSlider.json +7 -3
  184. package/src/components/slider/use-slider.js +7 -2
  185. package/src/components/space/QSpace.js +4 -2
  186. package/src/components/spinner/QSpinner.js +4 -2
  187. package/src/components/spinner/QSpinnerAudio.js +4 -2
  188. package/src/components/spinner/QSpinnerBall.js +4 -2
  189. package/src/components/spinner/QSpinnerBars.js +4 -2
  190. package/src/components/spinner/QSpinnerBox.js +4 -2
  191. package/src/components/spinner/QSpinnerClock.js +4 -2
  192. package/src/components/spinner/QSpinnerComment.js +4 -2
  193. package/src/components/spinner/QSpinnerCube.js +4 -2
  194. package/src/components/spinner/QSpinnerDots.js +4 -2
  195. package/src/components/spinner/QSpinnerFacebook.js +4 -2
  196. package/src/components/spinner/QSpinnerGears.js +4 -2
  197. package/src/components/spinner/QSpinnerGrid.js +4 -2
  198. package/src/components/spinner/QSpinnerHearts.js +4 -2
  199. package/src/components/spinner/QSpinnerHourglass.js +4 -2
  200. package/src/components/spinner/QSpinnerInfinity.js +4 -2
  201. package/src/components/spinner/QSpinnerIos.js +4 -2
  202. package/src/components/spinner/QSpinnerOrbit.js +4 -2
  203. package/src/components/spinner/QSpinnerOval.js +4 -2
  204. package/src/components/spinner/QSpinnerPie.js +4 -2
  205. package/src/components/spinner/QSpinnerPuff.js +4 -2
  206. package/src/components/spinner/QSpinnerRadio.js +4 -2
  207. package/src/components/spinner/QSpinnerRings.js +4 -2
  208. package/src/components/spinner/QSpinnerTail.js +4 -2
  209. package/src/components/splitter/QSplitter.js +3 -2
  210. package/src/components/stepper/QStep.js +3 -2
  211. package/src/components/stepper/QStepper.js +3 -2
  212. package/src/components/stepper/QStepperNavigation.js +3 -2
  213. package/src/components/stepper/StepHeader.js +12 -10
  214. package/src/components/tab-panels/QTabPanel.js +4 -2
  215. package/src/components/tab-panels/QTabPanels.js +3 -2
  216. package/src/components/table/QTable.js +4 -2
  217. package/src/components/table/QTable.json +1 -0
  218. package/src/components/table/QTd.js +3 -2
  219. package/src/components/table/QTh.js +3 -2
  220. package/src/components/table/QTr.js +3 -2
  221. package/src/components/tabs/QRouteTab.js +4 -2
  222. package/src/components/tabs/QTab.js +3 -3
  223. package/src/components/tabs/QTabs.js +4 -3
  224. package/src/components/tabs/use-tab.js +11 -9
  225. package/src/components/time/QTime.js +9 -9
  226. package/src/components/timeline/QTimeline.js +3 -2
  227. package/src/components/timeline/QTimelineEntry.js +3 -2
  228. package/src/components/toggle/QToggle.js +5 -2
  229. package/src/components/toolbar/QToolbar.js +3 -2
  230. package/src/components/toolbar/QToolbarTitle.js +3 -2
  231. package/src/components/tooltip/QTooltip.js +3 -2
  232. package/src/components/tree/QTree.js +12 -7
  233. package/src/components/tree/QTree.json +5 -0
  234. package/src/components/tree/QTree.sass +52 -4
  235. package/src/components/uploader/QUploaderAddTrigger.js +3 -2
  236. package/src/components/uploader/uploader-core.js +2 -7
  237. package/src/components/video/QVideo.js +4 -2
  238. package/src/components/virtual-scroll/QVirtualScroll.js +3 -2
  239. package/src/composables/private/use-file.js +8 -0
  240. package/src/composables/private/use-model-toggle.js +1 -1
  241. package/src/css/normalize.sass +0 -7
  242. package/src/directives/ClosePopup.js +3 -1
  243. package/src/directives/Intersection.js +3 -1
  244. package/src/directives/Morph.js +4 -1
  245. package/src/directives/Mutation.js +3 -1
  246. package/src/directives/Ripple.js +3 -1
  247. package/src/directives/Scroll.js +3 -1
  248. package/src/directives/ScrollFire.js +3 -1
  249. package/src/directives/TouchHold.js +4 -1
  250. package/src/directives/TouchPan.js +4 -1
  251. package/src/directives/TouchRepeat.js +4 -1
  252. package/src/directives/TouchSwipe.js +4 -1
  253. package/src/plugins/Notify.js +4 -3
  254. package/src/utils/create-uploader-component.js +3 -3
  255. package/src/utils/date.js +94 -61
  256. package/src/utils/private/create.js +4 -0
@@ -14,7 +14,30 @@
14
14
 
15
15
  "options": {
16
16
  "type": "Array",
17
- "desc": "Array of objects with value and label props. The binary components will be created according to this array; Props from QToggle, QCheckbox or QRadio can also be added as key/value pairs to control the components singularly",
17
+ "desc": "Array of objects with value, label, and disable (optional) props. The binary components will be created according to this array; Props from QToggle, QCheckbox or QRadio can also be added as key/value pairs to control the components singularly",
18
+ "definition": {
19
+ "label": {
20
+ "type": "String",
21
+ "desc": "Label to display along the component",
22
+ "required": true,
23
+ "examples": [ "Option 1", "Option 2", "Option 3" ]
24
+ },
25
+ "value": {
26
+ "type": "Any",
27
+ "desc": "Value of the option that will be used by the component model",
28
+ "required": true,
29
+ "examples": [ "op1", "op2", "op3" ]
30
+ },
31
+ "disable": {
32
+ "type": "Boolean",
33
+ "desc": "If true, the option will be disabled"
34
+ },
35
+ "...props": {
36
+ "type": "Any",
37
+ "desc": "Any other props from QToggle, QCheckbox, or QRadio",
38
+ "examples": [ "val=\"car\"", ":true-value=\"trueValue\"", "checked-icon=\"visibility\"" ]
39
+ }
40
+ },
18
41
  "examples": [
19
42
  ":options=\"[ { label: 'Option 1', value: 'op1' }, { label: 'Option 2', value: 'op2' }, { label: 'Option 3', value: 'op3', disable: true } ]\""
20
43
  ],
@@ -1,9 +1,10 @@
1
- import { h, defineComponent, computed, inject, getCurrentInstance } from 'vue'
1
+ import { h, computed, inject, getCurrentInstance } from 'vue'
2
2
 
3
+ import { createComponent } from '../../utils/private/create.js'
3
4
  import { hSlot } from '../../utils/private/render.js'
4
5
  import { pageContainerKey, layoutKey } from '../../utils/private/symbols.js'
5
6
 
6
- export default defineComponent({
7
+ export default createComponent({
7
8
  name: 'QPage',
8
9
 
9
10
  props: {
@@ -1,9 +1,10 @@
1
- import { h, defineComponent, computed, provide, inject, getCurrentInstance } from 'vue'
1
+ import { h, computed, provide, inject, getCurrentInstance } from 'vue'
2
2
 
3
+ import { createComponent } from '../../utils/private/create.js'
3
4
  import { hSlot } from '../../utils/private/render.js'
4
5
  import { pageContainerKey, layoutKey } from '../../utils/private/symbols.js'
5
6
 
6
- export default defineComponent({
7
+ export default createComponent({
7
8
  name: 'QPageContainer',
8
9
 
9
10
  setup (_, { slots }) {
@@ -1,9 +1,11 @@
1
- import { h, defineComponent, ref, computed, watch, onBeforeUnmount, getCurrentInstance, Transition } from 'vue'
1
+ import { h, ref, computed, watch, onBeforeUnmount, getCurrentInstance, Transition } from 'vue'
2
2
 
3
3
  import usePageSticky, { usePageStickyProps } from '../page-sticky/use-page-sticky.js'
4
4
  import { getScrollTarget, setVerticalScrollPosition } from '../../utils/scroll.js'
5
5
 
6
- export default defineComponent({
6
+ import { createComponent } from '../../utils/private/create.js'
7
+
8
+ export default createComponent({
7
9
  name: 'QPageScroller',
8
10
 
9
11
  props: {
@@ -1,8 +1,7 @@
1
- import { defineComponent } from 'vue'
2
-
1
+ import { createComponent } from '../../utils/private/create.js'
3
2
  import usePageSticky, { usePageStickyProps } from './use-page-sticky'
4
3
 
5
- export default defineComponent({
4
+ export default createComponent({
6
5
  name: 'QPageSticky',
7
6
 
8
7
  props: usePageStickyProps,
@@ -1,14 +1,15 @@
1
- import { h, defineComponent, ref, watch, computed, getCurrentInstance } from 'vue'
1
+ import { h, ref, watch, computed, getCurrentInstance } from 'vue'
2
2
 
3
3
  import QBtn from '../btn/QBtn.js'
4
4
  import QInput from '../input/QInput.js'
5
5
 
6
6
  import useDark, { useDarkProps } from '../../composables/private/use-dark.js'
7
7
 
8
+ import { createComponent } from '../../utils/private/create.js'
8
9
  import { between } from '../../utils/format.js'
9
10
  import { isKeyCode } from '../../utils/private/key-composition.js'
10
11
 
11
- export default defineComponent({
12
+ export default createComponent({
12
13
  name: 'QPagination',
13
14
 
14
15
  props: {
@@ -1,5 +1,6 @@
1
- import { h, defineComponent, ref, watch, onMounted, onBeforeUnmount } from 'vue'
1
+ import { h, ref, watch, onMounted, onBeforeUnmount } from 'vue'
2
2
 
3
+ import { createComponent } from '../../utils/private/create.js'
3
4
  import { height, offset } from '../../utils/dom.js'
4
5
  import frameDebounce from '../../utils/frame-debounce.js'
5
6
  import { getScrollTarget } from '../../utils/scroll.js'
@@ -8,7 +9,7 @@ import { listenOpts } from '../../utils/event.js'
8
9
 
9
10
  const { passive } = listenOpts
10
11
 
11
- export default defineComponent({
12
+ export default createComponent({
12
13
  name: 'QParallax',
13
14
 
14
15
  props: {
@@ -1,12 +1,13 @@
1
- import { h, defineComponent, ref, computed, nextTick, getCurrentInstance } from 'vue'
1
+ import { h, ref, computed, nextTick, getCurrentInstance } from 'vue'
2
2
 
3
3
  import QMenu from '../menu/QMenu.js'
4
4
  import QBtn from '../btn/QBtn.js'
5
5
 
6
+ import { createComponent } from '../../utils/private/create.js'
6
7
  import clone from '../../utils/clone.js'
7
8
  import { isDeepEqual } from '../../utils/private/is.js'
8
9
 
9
- export default defineComponent({
10
+ export default createComponent({
10
11
  name: 'QPopupEdit',
11
12
 
12
13
  props: {
@@ -1,12 +1,14 @@
1
- import { h, defineComponent, ref, computed, watch, getCurrentInstance } from 'vue'
1
+ import { h, ref, computed, watch, getCurrentInstance } from 'vue'
2
2
 
3
3
  import QDialog from '../dialog/QDialog.js'
4
4
  import QMenu from '../menu/QMenu.js'
5
5
 
6
6
  import useAnchor, { useAnchorProps } from '../../composables/private/use-anchor.js'
7
+
8
+ import { createComponent } from '../../utils/private/create.js'
7
9
  import { hSlot } from '../../utils/private/render.js'
8
10
 
9
- export default defineComponent({
11
+ export default createComponent({
10
12
  name: 'QPopupProxy',
11
13
 
12
14
  props: {
@@ -1,9 +1,10 @@
1
- import { h, defineComponent, ref, computed, watch, onMounted, onBeforeUnmount, getCurrentInstance } from 'vue'
1
+ import { h, ref, computed, watch, onMounted, onBeforeUnmount, getCurrentInstance } from 'vue'
2
2
 
3
3
  import QIcon from '../icon/QIcon.js'
4
4
  import QSpinner from '../spinner/QSpinner.js'
5
5
  import TouchPan from '../../directives/TouchPan.js'
6
6
 
7
+ import { createComponent } from '../../utils/private/create.js'
7
8
  import { getScrollTarget, getVerticalScrollPosition } from '../../utils/scroll.js'
8
9
  import { between } from '../../utils/format.js'
9
10
  import { prevent } from '../../utils/event.js'
@@ -13,7 +14,7 @@ const
13
14
  PULLER_HEIGHT = 40,
14
15
  OFFSET_TOP = 20
15
16
 
16
- export default defineComponent({
17
+ export default createComponent({
17
18
  name: 'QPullToRefresh',
18
19
 
19
20
  props: {
@@ -1,10 +1,11 @@
1
- import { h, defineComponent, ref, computed, getCurrentInstance } from 'vue'
1
+ import { h, ref, computed, getCurrentInstance } from 'vue'
2
2
 
3
3
  import useDark, { useDarkProps } from '../../composables/private/use-dark.js'
4
4
  import useSize, { useSizeProps } from '../../composables/private/use-size.js'
5
5
  import useRefocusTarget from '../../composables/private/use-refocus-target.js'
6
6
  import { useFormProps, useFormInject } from '../../composables/private/use-form.js'
7
7
 
8
+ import { createComponent } from '../../utils/private/create.js'
8
9
  import optionSizes from '../../utils/private/option-sizes.js'
9
10
  import { stopAndPrevent } from '../../utils/event.js'
10
11
  import { hSlot, hMergeSlot } from '../../utils/private/render.js'
@@ -24,7 +25,7 @@ const svg = h('svg', {
24
25
  })
25
26
  ])
26
27
 
27
- export default defineComponent({
28
+ export default createComponent({
28
29
  name: 'QRadio',
29
30
 
30
31
  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 { useFormInject, useFormProps } from '../../composables/private/use-form.js'
4
4
 
@@ -10,6 +10,7 @@ import useSlider, {
10
10
  keyCodes
11
11
  } from '../slider/use-slider.js'
12
12
 
13
+ import { createComponent } from '../../utils/private/create.js'
13
14
  import { stopAndPrevent } from '../../utils/event.js'
14
15
  import { between } from '../../utils/format.js'
15
16
  import { hDir } from '../../utils/private/render.js'
@@ -20,7 +21,7 @@ const dragType = {
20
21
  MAX: 2
21
22
  }
22
23
 
23
- export default defineComponent({
24
+ export default createComponent({
24
25
  name: 'QRange',
25
26
 
26
27
  props: {
@@ -488,7 +489,7 @@ export default defineComponent({
488
489
  })
489
490
  ]
490
491
 
491
- props.markers === true && track.push(
492
+ props.markers !== false && track.push(
492
493
  h('div', {
493
494
  class: `q-slider__track-markers q-slider__track-markers${ state.axis.value } absolute-full fit`,
494
495
  style: state.markerStyle.value
@@ -144,9 +144,13 @@
144
144
  },
145
145
 
146
146
  "markers": {
147
- "type": "Boolean",
148
- "desc": "Display markers on the track, one for each possible value for the model",
149
- "category": "content"
147
+ "type": [ "Boolean", "Number" ],
148
+ "desc": "Display markers on the track, one for each possible value for the model or using a custom step (when specifying a Number)",
149
+ "category": "content",
150
+ "examples": [
151
+ "markers",
152
+ ":markers=\"5\""
153
+ ]
150
154
  },
151
155
 
152
156
  "snap": {
@@ -1,15 +1,16 @@
1
- import { h, defineComponent, ref, computed, onBeforeUpdate, getCurrentInstance } from 'vue'
1
+ import { h, ref, computed, onBeforeUpdate, getCurrentInstance } from 'vue'
2
2
 
3
3
  import QIcon from '../icon/QIcon.js'
4
4
 
5
+ import useSize, { useSizeProps } from '../../composables/private/use-size.js'
6
+ import { useFormProps, useFormAttrs, useFormInject } from '../../composables/private/use-form.js'
7
+
8
+ import { createComponent } from '../../utils/private/create.js'
5
9
  import { stopAndPrevent } from '../../utils/event.js'
6
10
  import { between } from '../../utils/format.js'
7
11
  import { hMergeSlot } from '../../utils/private/render.js'
8
12
 
9
- import useSize, { useSizeProps } from '../../composables/private/use-size.js'
10
- import { useFormProps, useFormAttrs, useFormInject } from '../../composables/private/use-form.js'
11
-
12
- export default defineComponent({
13
+ export default createComponent({
13
14
  name: 'QRating',
14
15
 
15
16
  props: {
@@ -1,7 +1,8 @@
1
- import { h, defineComponent, onMounted, onBeforeUnmount, getCurrentInstance, nextTick } from 'vue'
1
+ import { h, onMounted, onBeforeUnmount, getCurrentInstance, nextTick } from 'vue'
2
2
 
3
3
  import useCanRender from '../../composables/private/use-can-render.js'
4
4
 
5
+ import { createComponent } from '../../utils/private/create.js'
5
6
  import { listenOpts, noop } from '../../utils/event.js'
6
7
 
7
8
  const hasObserver = typeof ResizeObserver !== 'undefined'
@@ -12,7 +13,7 @@ const resizeProps = hasObserver === true
12
13
  url: 'about:blank'
13
14
  }
14
15
 
15
- export default defineComponent({
16
+ export default createComponent({
16
17
  name: 'QResizeObserver',
17
18
 
18
19
  props: {
@@ -1,10 +1,11 @@
1
- import { h, defineComponent } from 'vue'
1
+ import { h } from 'vue'
2
2
 
3
3
  import useRatio, { useRatioProps } from '../../composables/private/use-ratio.js'
4
4
 
5
+ import { createComponent } from '../../utils/private/create.js'
5
6
  import { hSlot } from '../../utils/private/render.js'
6
7
 
7
- export default defineComponent({
8
+ export default createComponent({
8
9
  name: 'QResponsive',
9
10
 
10
11
  props: useRatioProps,
@@ -1,4 +1,4 @@
1
- import { h, defineComponent, ref, computed, withDirectives, getCurrentInstance } from 'vue'
1
+ import { h, ref, computed, withDirectives, getCurrentInstance } from 'vue'
2
2
 
3
3
  import useDark, { useDarkProps } from '../../composables/private/use-dark.js'
4
4
 
@@ -7,6 +7,7 @@ import QScrollObserver from '../scroll-observer/QScrollObserver.js'
7
7
 
8
8
  import TouchPan from '../../directives/TouchPan.js'
9
9
 
10
+ import { createComponent } from '../../utils/private/create.js'
10
11
  import { between } from '../../utils/format.js'
11
12
  import { setVerticalScrollPosition, setHorizontalScrollPosition } from '../../utils/scroll.js'
12
13
  import { hMergeSlot } from '../../utils/private/render.js'
@@ -18,7 +19,7 @@ const dirProps = {
18
19
  horizontal: { offset: 'offsetX', scroll: 'scrollLeft', dir: 'right', dist: 'x' }
19
20
  }
20
21
 
21
- export default defineComponent({
22
+ export default createComponent({
22
23
  name: 'QScrollArea',
23
24
 
24
25
  props: {
@@ -1,12 +1,13 @@
1
- import { defineComponent, watch, onMounted, onBeforeUnmount, getCurrentInstance } from 'vue'
1
+ import { watch, onMounted, onBeforeUnmount, getCurrentInstance } from 'vue'
2
2
 
3
+ import { createComponent } from '../../utils/private/create.js'
3
4
  import { getScrollTarget, getVerticalScrollPosition, getHorizontalScrollPosition } from '../../utils/scroll.js'
4
5
  import { listenOpts, noop } from '../../utils/event.js'
5
6
 
6
7
  const { passive } = listenOpts
7
8
  const axisValues = [ 'both', 'horizontal', 'vertical' ]
8
9
 
9
- export default defineComponent({
10
+ export default createComponent({
10
11
  name: 'QScrollObserver',
11
12
 
12
13
  props: {
@@ -1,4 +1,4 @@
1
- import { h, defineComponent, ref, computed, watch, onBeforeUpdate, onUpdated, onBeforeUnmount, nextTick, getCurrentInstance } from 'vue'
1
+ import { h, ref, computed, watch, onBeforeUpdate, onUpdated, onBeforeUnmount, nextTick, getCurrentInstance } from 'vue'
2
2
 
3
3
  import QField from '../field/QField.js'
4
4
  import QIcon from '../icon/QIcon.js'
@@ -16,6 +16,7 @@ import { useVirtualScroll, useVirtualScrollProps } from '../virtual-scroll/use-v
16
16
  import { useFormProps, useFormInputNameAttr } from '../../composables/private/use-form.js'
17
17
  import useKeyComposition from '../../composables/private/use-key-composition.js'
18
18
 
19
+ import { createComponent } from '../../utils/private/create.js'
19
20
  import { isDeepEqual } from '../../utils/private/is.js'
20
21
  import { stop, prevent, stopAndPrevent } from '../../utils/event.js'
21
22
  import { normalizeToInterval } from '../../utils/format.js'
@@ -26,7 +27,7 @@ const validateNewValueMode = v => [ 'add', 'add-unique', 'toggle' ].includes(v)
26
27
  const reEscapeList = '.*+?^${}()|[]\\'
27
28
  const fieldPropsList = Object.keys(useFieldProps)
28
29
 
29
- export default defineComponent({
30
+ export default createComponent({
30
31
  name: 'QSelect',
31
32
 
32
33
  inheritAttrs: false,
@@ -932,6 +933,12 @@ export default defineComponent({
932
933
  }
933
934
 
934
935
  function getAllOptions () {
936
+ if (noOptions.value === true) {
937
+ return slots[ 'no-option' ] !== void 0
938
+ ? slots[ 'no-option' ]({ inputValue: inputValue.value })
939
+ : void 0
940
+ }
941
+
935
942
  const fn = slots.option !== void 0
936
943
  ? slots.option
937
944
  : scope => {
@@ -1113,14 +1120,6 @@ export default defineComponent({
1113
1120
  }
1114
1121
 
1115
1122
  function getMenu () {
1116
- const child = noOptions.value === true
1117
- ? (
1118
- slots[ 'no-option' ] !== void 0
1119
- ? () => slots[ 'no-option' ]({ inputValue: inputValue.value })
1120
- : void 0
1121
- )
1122
- : getAllOptions
1123
-
1124
1123
  return h(QMenu, {
1125
1124
  ref: menuRef,
1126
1125
  class: menuContentClass.value,
@@ -1145,7 +1144,7 @@ export default defineComponent({
1145
1144
  onBeforeShow: onControlPopupShow,
1146
1145
  onBeforeHide: onMenuBeforeHide,
1147
1146
  onShow: onMenuShow
1148
- }, child)
1147
+ }, getAllOptions)
1149
1148
  }
1150
1149
 
1151
1150
  function onMenuBeforeHide (e) {
@@ -1202,15 +1201,7 @@ export default defineComponent({
1202
1201
  ...listboxAttrs.value,
1203
1202
  onClick: prevent,
1204
1203
  onScrollPassive: onVirtualScrollEvt
1205
- }, (
1206
- noOptions.value === true
1207
- ? (
1208
- slots[ 'no-option' ] !== void 0
1209
- ? slots[ 'no-option' ]({ inputValue: inputValue.value })
1210
- : null
1211
- )
1212
- : getAllOptions()
1213
- ))
1204
+ }, getAllOptions())
1214
1205
  )
1215
1206
 
1216
1207
  return h(QDialog, {
@@ -1,7 +1,9 @@
1
- import { h, defineComponent, computed, getCurrentInstance } from 'vue'
1
+ import { h, computed, 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'
6
+
5
7
  const insetMap = {
6
8
  true: 'inset',
7
9
  item: 'item-inset',
@@ -16,7 +18,7 @@ export const margins = {
16
18
  xl: 24
17
19
  }
18
20
 
19
- export default defineComponent({
21
+ export default createComponent({
20
22
  name: 'QSeparator',
21
23
 
22
24
  props: {
@@ -20,7 +20,7 @@
20
20
 
21
21
  "inset": {
22
22
  "type": [ "Boolean", "String" ],
23
- "desc": "if set to true, the left and right margins will be set to 16px. If set to item, the left and right margins will be set to 72px. If set to item-thumbnail, the left margin is set to 116px and right margin is set to 0px",
23
+ "desc": "If set to Boolean true, the left and right margins will be set to 16px. If set to 'item' then it will match a QItem's design. If set to 'item-thumbnail' then it will match the design of a QItem with a thumbnail on the left side",
24
24
  "examples": [ "item", "item-thumbnail" ],
25
25
  "category": "content"
26
26
  },
@@ -1,7 +1,8 @@
1
- import { h, defineComponent, computed, getCurrentInstance } from 'vue'
1
+ import { h, computed, 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
 
7
8
  export const skeletonTypes = [
@@ -16,7 +17,7 @@ export const skeletonAnimations = [
16
17
  'wave', 'pulse', 'pulse-x', 'pulse-y', 'fade', 'blink', 'none'
17
18
  ]
18
19
 
19
- export default defineComponent({
20
+ export default createComponent({
20
21
  name: 'QSkeleton',
21
22
 
22
23
  props: {
@@ -1,10 +1,11 @@
1
- import { h, defineComponent, ref, computed, withDirectives, onBeforeUnmount, onBeforeUpdate, getCurrentInstance } from 'vue'
1
+ import { h, ref, computed, withDirectives, onBeforeUnmount, onBeforeUpdate, getCurrentInstance } from 'vue'
2
2
 
3
3
  import TouchPan from '../../directives/TouchPan.js'
4
4
 
5
5
  import useDark, { useDarkProps } from '../../composables/private/use-dark.js'
6
6
  import useCache from '../../composables/private/use-cache.js'
7
7
 
8
+ import { createComponent } from '../../utils/private/create.js'
8
9
  import { hSlot } from '../../utils/private/render.js'
9
10
 
10
11
  const slotsDef = [
@@ -14,7 +15,7 @@ const slotsDef = [
14
15
  [ 'bottom', 'end', 'center', 'height' ]
15
16
  ]
16
17
 
17
- export default defineComponent({
18
+ export default createComponent({
18
19
  name: 'QSlideItem',
19
20
 
20
21
  props: {
@@ -1,6 +1,8 @@
1
- import { h, defineComponent, onBeforeUnmount, Transition } from 'vue'
1
+ import { h, onBeforeUnmount, Transition } from 'vue'
2
2
 
3
- export default defineComponent({
3
+ import { createComponent } from '../../utils/private/create.js'
4
+
5
+ export default createComponent({
4
6
  name: 'QSlideTransition',
5
7
 
6
8
  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 { useFormInject, useFormProps, useFormAttrs } from '../../composables/private/use-form.js'
4
4
 
@@ -10,11 +10,12 @@ import useSlider, {
10
10
  keyCodes
11
11
  } from './use-slider.js'
12
12
 
13
+ import { createComponent } from '../../utils/private/create.js'
13
14
  import { between } from '../../utils/format.js'
14
15
  import { stopAndPrevent } from '../../utils/event.js'
15
16
  import { hDir } from '../../utils/private/render.js'
16
17
 
17
- export default defineComponent({
18
+ export default createComponent({
18
19
  name: 'QSlider',
19
20
 
20
21
  props: {
@@ -206,7 +207,7 @@ export default defineComponent({
206
207
  })
207
208
  ]
208
209
 
209
- props.markers === true && track.push(
210
+ props.markers !== false && track.push(
210
211
  h('div', {
211
212
  class: `q-slider__track-markers q-slider__track-markers${ state.axis.value } absolute-full fit`,
212
213
  style: state.markerStyle.value
@@ -83,9 +83,13 @@
83
83
  },
84
84
 
85
85
  "markers": {
86
- "type": "Boolean",
87
- "desc": "Display markers on the track, one for each possible value for the model",
88
- "category": "content"
86
+ "type": [ "Boolean", "Number" ],
87
+ "desc": "Display markers on the track, one for each possible value for the model or using a custom step (when specifying a Number)",
88
+ "category": "content",
89
+ "examples": [
90
+ "markers",
91
+ ":markers=\"5\""
92
+ ]
89
93
  },
90
94
 
91
95
  "snap": {
@@ -6,6 +6,7 @@ import useDark, { useDarkProps } from '../../composables/private/use-dark.js'
6
6
 
7
7
  import { between } from '../../utils/format.js'
8
8
  import { position } from '../../utils/event.js'
9
+ import { isNumber } from '../../utils/private/is.js'
9
10
 
10
11
  // PGDOWN, LEFT, DOWN, PGUP, RIGHT, UP
11
12
  export const keyCodes = [ 34, 37, 40, 33, 39, 38 ]
@@ -60,7 +61,7 @@ export const useSliderProps = {
60
61
 
61
62
  label: Boolean,
62
63
  labelAlways: Boolean,
63
- markers: Boolean,
64
+ markers: [ Boolean, Number ],
64
65
  snap: Boolean,
65
66
 
66
67
  vertical: Boolean,
@@ -113,9 +114,13 @@ export default function ({ updateValue, updatePosition, getDragging }) {
113
114
  const step = computed(() => (props.step === 0 ? 1 : props.step))
114
115
  const minMaxDiff = computed(() => props.max - props.min)
115
116
 
117
+ const markerStep = computed(() => (
118
+ isNumber(props.markers) === true ? props.markers : step.value)
119
+ )
120
+
116
121
  const markerStyle = computed(() => {
117
122
  if (minMaxDiff.value !== 0) {
118
- const size = 100 * step.value / minMaxDiff.value
123
+ const size = 100 * markerStep.value / minMaxDiff.value
119
124
 
120
125
  return {
121
126
  backgroundSize: props.vertical === true
@@ -1,8 +1,10 @@
1
- import { h, defineComponent } from 'vue'
1
+ import { h } from 'vue'
2
+
3
+ import { createComponent } from '../../utils/private/create.js'
2
4
 
3
5
  const space = h('div', { class: 'q-space' })
4
6
 
5
- export default defineComponent({
7
+ export default createComponent({
6
8
  name: 'QSpace',
7
9
 
8
10
  setup () {
@@ -1,8 +1,10 @@
1
- import { h, defineComponent } from 'vue'
1
+ import { h } from 'vue'
2
2
 
3
3
  import useSpinner, { useSpinnerProps } from './use-spinner.js'
4
4
 
5
- export default defineComponent({
5
+ import { createComponent } from '../../utils/private/create.js'
6
+
7
+ export default createComponent({
6
8
  name: 'QSpinner',
7
9
 
8
10
  props: {
@@ -1,7 +1,9 @@
1
- import { h, defineComponent } from 'vue'
1
+ import { h } from 'vue'
2
2
 
3
3
  import useSpinner, { useSpinnerProps } from './use-spinner.js'
4
4
 
5
+ import { createComponent } from '../../utils/private/create.js'
6
+
5
7
  const svg = [
6
8
  h('g', {
7
9
  transform: 'matrix(1 0 0 -1 0 80)'
@@ -68,7 +70,7 @@ const svg = [
68
70
  ])
69
71
  ]
70
72
 
71
- export default defineComponent({
73
+ export default createComponent({
72
74
  name: 'QSpinnerAudio',
73
75
 
74
76
  props: useSpinnerProps,