quasar 1.16.2 → 1.17.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (309) hide show
  1. package/dist/api/BottomSheet.json +2 -2
  2. package/dist/api/Loading.json +0 -2
  3. package/dist/api/LoadingBar.json +1 -1
  4. package/dist/api/Notify.json +25 -25
  5. package/dist/api/QAjaxBar.json +23 -4
  6. package/dist/api/QAvatar.json +1 -1
  7. package/dist/api/QBreadcrumbsEl.json +32 -11
  8. package/dist/api/QBtn.json +35 -14
  9. package/dist/api/QBtnDropdown.json +36 -15
  10. package/dist/api/QBtnToggle.json +1 -1
  11. package/dist/api/QCarousel.json +7 -7
  12. package/dist/api/QCarouselSlide.json +2 -2
  13. package/dist/api/QChatMessage.json +1 -5
  14. package/dist/api/QChip.json +4 -4
  15. package/dist/api/QColor.json +6 -0
  16. package/dist/api/QDialog.json +7 -1
  17. package/dist/api/QExpansionItem.json +34 -13
  18. package/dist/api/QFab.json +34 -2
  19. package/dist/api/QFabAction.json +9 -1
  20. package/dist/api/QField.json +80 -6
  21. package/dist/api/QFile.json +80 -6
  22. package/dist/api/QImg.json +2 -2
  23. package/dist/api/QInnerLoading.json +32 -0
  24. package/dist/api/QInput.json +82 -6
  25. package/dist/api/QItem.json +31 -10
  26. package/dist/api/QOptionGroup.json +58 -1
  27. package/dist/api/QPagination.json +4 -4
  28. package/dist/api/QParallax.json +1 -1
  29. package/dist/api/QPopupEdit.json +14 -7
  30. package/dist/api/QPullToRefresh.json +1 -1
  31. package/dist/api/QRange.json +581 -96
  32. package/dist/api/QRating.json +3 -3
  33. package/dist/api/QRouteTab.json +32 -12
  34. package/dist/api/QScrollArea.json +188 -20
  35. package/dist/api/QSelect.json +82 -10
  36. package/dist/api/QSeparator.json +1 -1
  37. package/dist/api/QSlider.json +499 -34
  38. package/dist/api/QStep.json +4 -4
  39. package/dist/api/QStepper.json +4 -4
  40. package/dist/api/QTab.json +1 -1
  41. package/dist/api/QTable.json +4 -4
  42. package/dist/api/QTabs.json +9 -0
  43. package/dist/api/QTimelineEntry.json +2 -2
  44. package/dist/api/QToggle.json +1 -1
  45. package/dist/api/QTree.json +7 -1
  46. package/dist/api/QVideo.json +10 -0
  47. package/dist/icon-set/bootstrap-icons.umd.min.js +1 -1
  48. package/dist/icon-set/eva-icons.umd.min.js +1 -1
  49. package/dist/icon-set/fontawesome-v5-pro.umd.min.js +1 -1
  50. package/dist/icon-set/fontawesome-v5.umd.min.js +1 -1
  51. package/dist/icon-set/ionicons-v4.umd.min.js +1 -1
  52. package/dist/icon-set/line-awesome.umd.min.js +1 -1
  53. package/dist/icon-set/material-icons-outlined.umd.min.js +1 -1
  54. package/dist/icon-set/material-icons-round.umd.min.js +1 -1
  55. package/dist/icon-set/material-icons-sharp.umd.min.js +1 -1
  56. package/dist/icon-set/material-icons.umd.min.js +1 -1
  57. package/dist/icon-set/mdi-v3.umd.min.js +1 -1
  58. package/dist/icon-set/mdi-v4.umd.min.js +1 -1
  59. package/dist/icon-set/mdi-v5.umd.min.js +1 -1
  60. package/dist/icon-set/mdi-v6.umd.min.js +1 -1
  61. package/dist/icon-set/svg-bootstrap-icons.umd.min.js +1 -1
  62. package/dist/icon-set/svg-eva-icons.umd.min.js +1 -1
  63. package/dist/icon-set/svg-fontawesome-v5.umd.min.js +1 -1
  64. package/dist/icon-set/svg-ionicons-v4.umd.min.js +1 -1
  65. package/dist/icon-set/svg-ionicons-v5.umd.min.js +1 -1
  66. package/dist/icon-set/svg-ionicons-v6.umd.min.js +6 -0
  67. package/dist/icon-set/svg-line-awesome.umd.min.js +1 -1
  68. package/dist/icon-set/svg-material-icons-outlined.umd.min.js +1 -1
  69. package/dist/icon-set/svg-material-icons-round.umd.min.js +1 -1
  70. package/dist/icon-set/svg-material-icons-sharp.umd.min.js +1 -1
  71. package/dist/icon-set/svg-material-icons.umd.min.js +1 -1
  72. package/dist/icon-set/svg-mdi-v4.umd.min.js +1 -1
  73. package/dist/icon-set/svg-mdi-v5.umd.min.js +1 -1
  74. package/dist/icon-set/svg-mdi-v6.umd.min.js +1 -1
  75. package/dist/icon-set/svg-themify.umd.min.js +1 -1
  76. package/dist/icon-set/themify.umd.min.js +1 -1
  77. package/dist/lang/ar.umd.min.js +2 -2
  78. package/dist/lang/az-latn.umd.min.js +1 -1
  79. package/dist/lang/bg.umd.min.js +1 -1
  80. package/dist/lang/ca.umd.min.js +1 -1
  81. package/dist/lang/cs.umd.min.js +1 -1
  82. package/dist/lang/da.umd.min.js +1 -1
  83. package/dist/lang/de.umd.min.js +1 -1
  84. package/dist/lang/el.umd.min.js +1 -1
  85. package/dist/lang/en-gb.umd.min.js +1 -1
  86. package/dist/lang/en-us.umd.min.js +1 -1
  87. package/dist/lang/eo.umd.min.js +1 -1
  88. package/dist/lang/es.umd.min.js +1 -1
  89. package/dist/lang/et.umd.min.js +1 -1
  90. package/dist/lang/fa-ir.umd.min.js +1 -1
  91. package/dist/lang/fa.umd.min.js +1 -1
  92. package/dist/lang/fi.umd.min.js +1 -1
  93. package/dist/lang/fr.umd.min.js +2 -2
  94. package/dist/lang/gn.umd.min.js +1 -1
  95. package/dist/lang/he.umd.min.js +1 -1
  96. package/dist/lang/hr.umd.min.js +1 -1
  97. package/dist/lang/hu.umd.min.js +1 -1
  98. package/dist/lang/id.umd.min.js +1 -1
  99. package/dist/lang/is.umd.min.js +1 -1
  100. package/dist/lang/it.umd.min.js +1 -1
  101. package/dist/lang/ja.umd.min.js +1 -1
  102. package/dist/lang/km.umd.min.js +1 -1
  103. package/dist/lang/ko-kr.umd.min.js +1 -1
  104. package/dist/lang/kur-ckb.umd.min.js +1 -1
  105. package/dist/lang/lu.umd.min.js +1 -1
  106. package/dist/lang/lv.umd.min.js +1 -1
  107. package/dist/lang/ml.umd.min.js +1 -1
  108. package/dist/lang/ms.umd.min.js +1 -1
  109. package/dist/lang/nb-no.umd.min.js +1 -1
  110. package/dist/lang/nl.umd.min.js +1 -1
  111. package/dist/lang/pl.umd.min.js +1 -1
  112. package/dist/lang/pt-br.umd.min.js +1 -1
  113. package/dist/lang/pt.umd.min.js +1 -1
  114. package/dist/lang/ro.umd.min.js +1 -1
  115. package/dist/lang/ru.umd.min.js +1 -1
  116. package/dist/lang/sk.umd.min.js +1 -1
  117. package/dist/lang/sl.umd.min.js +1 -1
  118. package/dist/lang/sr.umd.min.js +2 -2
  119. package/dist/lang/sv.umd.min.js +1 -1
  120. package/dist/lang/ta.umd.min.js +1 -1
  121. package/dist/lang/th.umd.min.js +1 -1
  122. package/dist/lang/tr.umd.min.js +1 -1
  123. package/dist/lang/ug.umd.min.js +2 -2
  124. package/dist/lang/uk.umd.min.js +1 -1
  125. package/dist/lang/vi.umd.min.js +1 -1
  126. package/dist/lang/zh-hans.umd.min.js +2 -2
  127. package/dist/lang/zh-hant.umd.min.js +2 -2
  128. package/dist/quasar.addon.css +1 -1
  129. package/dist/quasar.addon.rtl.css +1 -1
  130. package/dist/quasar.common.js +2 -2
  131. package/dist/quasar.css +378 -226
  132. package/dist/quasar.esm.js +2 -2
  133. package/dist/quasar.ie.polyfills.js +1 -1
  134. package/dist/quasar.ie.polyfills.umd.min.js +1 -1
  135. package/dist/quasar.min.css +1 -1
  136. package/dist/quasar.rtl.css +510 -302
  137. package/dist/quasar.rtl.min.css +1 -1
  138. package/dist/quasar.sass +326 -211
  139. package/dist/quasar.styl +326 -209
  140. package/dist/quasar.umd.js +3240 -1889
  141. package/dist/quasar.umd.min.js +2 -2
  142. package/dist/quasar.umd.modern.js +3199 -1870
  143. package/dist/quasar.umd.modern.min.js +2 -2
  144. package/dist/transform-asset-urls.json +20 -0
  145. package/dist/types/index.d.ts +427 -105
  146. package/dist/types/utils/scroll.d.ts +1 -0
  147. package/dist/vetur/quasar-attributes.json +320 -92
  148. package/dist/vetur/quasar-tags.json +76 -19
  149. package/dist/web-types/web-types.json +1296 -257
  150. package/icon-set/svg-ionicons-v6.js +225 -0
  151. package/lang/ar.js +1 -1
  152. package/lang/fa-ir.js +3 -1
  153. package/lang/fa.js +3 -1
  154. package/lang/fr.js +1 -1
  155. package/lang/index.json +1 -1
  156. package/lang/kur-ckb.js +2 -2
  157. package/lang/sr.js +4 -4
  158. package/lang/ug.js +48 -46
  159. package/lang/zh-hans.js +1 -1
  160. package/lang/zh-hant.js +18 -18
  161. package/package.json +1 -1
  162. package/src/api.extends.json +1 -2
  163. package/src/components/ajax-bar/QAjaxBar.js +48 -26
  164. package/src/components/ajax-bar/QAjaxBar.json +22 -4
  165. package/src/components/breadcrumbs/QBreadcrumbs.js +15 -11
  166. package/src/components/breadcrumbs/QBreadcrumbs.sass +0 -3
  167. package/src/components/breadcrumbs/QBreadcrumbs.styl +0 -3
  168. package/src/components/breadcrumbs/QBreadcrumbsEl.js +25 -9
  169. package/src/components/btn/QBtn.js +3 -3
  170. package/src/components/btn-dropdown/QBtnDropdown.sass +2 -0
  171. package/src/components/btn-dropdown/QBtnDropdown.styl +2 -0
  172. package/src/components/btn-toggle/QBtnToggle.js +4 -1
  173. package/src/components/carousel/QCarousel.js +6 -2
  174. package/src/components/carousel/QCarousel.json +9 -1
  175. package/src/components/carousel/QCarouselSlide.json +2 -2
  176. package/src/components/chat/QChatMessage.json +1 -1
  177. package/src/components/color/QColor.js +100 -85
  178. package/src/components/color/QColor.json +7 -0
  179. package/src/components/color/QColor.sass +14 -24
  180. package/src/components/color/QColor.styl +14 -24
  181. package/src/components/date/QDate.js +7 -1
  182. package/src/components/date/QDate.sass +2 -0
  183. package/src/components/date/QDate.styl +2 -0
  184. package/src/components/dialog/QDialog.js +8 -4
  185. package/src/components/dialog/QDialog.json +8 -1
  186. package/src/components/drawer/QDrawer.js +16 -15
  187. package/src/components/editor/QEditor.js +2 -2
  188. package/src/components/editor/QEditor.sass +13 -1
  189. package/src/components/editor/QEditor.styl +13 -1
  190. package/src/components/expansion-item/QExpansionItem.js +13 -11
  191. package/src/components/fab/QFab.js +20 -11
  192. package/src/components/fab/QFab.json +35 -0
  193. package/src/components/fab/QFabAction.js +16 -9
  194. package/src/components/fab/QFabAction.json +10 -0
  195. package/src/components/field/QField.js +28 -23
  196. package/src/components/field/__QField.json +72 -8
  197. package/src/components/file/QFile.js +12 -4
  198. package/src/components/file/QFile.sass +4 -3
  199. package/src/components/file/QFile.styl +4 -3
  200. package/src/components/footer/QFooter.js +1 -1
  201. package/src/components/form/QForm.js +1 -1
  202. package/src/components/header/QHeader.js +1 -1
  203. package/src/components/icon/QIcon.js +92 -75
  204. package/src/components/icon/QIcon.sass +0 -1
  205. package/src/components/icon/QIcon.styl +0 -1
  206. package/src/components/img/QImg.json +2 -2
  207. package/src/components/infinite-scroll/QInfiniteScroll.js +49 -36
  208. package/src/components/inner-loading/QInnerLoading.js +54 -22
  209. package/src/components/inner-loading/QInnerLoading.json +29 -0
  210. package/src/components/inner-loading/QInnerLoading.sass +3 -0
  211. package/src/components/inner-loading/QInnerLoading.styl +3 -0
  212. package/src/components/item/QItem.js +9 -15
  213. package/src/components/layout/QLayout.js +49 -0
  214. package/src/components/linear-progress/QLinearProgress.js +6 -2
  215. package/src/components/menu/QMenu.js +5 -1
  216. package/src/components/option-group/QOptionGroup.js +32 -22
  217. package/src/components/option-group/QOptionGroup.json +50 -1
  218. package/src/components/parallax/QParallax.js +3 -0
  219. package/src/components/parallax/QParallax.json +1 -1
  220. package/src/components/popup-edit/QPopupEdit.js +41 -16
  221. package/src/components/popup-edit/QPopupEdit.json +15 -8
  222. package/src/components/range/QRange.js +223 -278
  223. package/src/components/range/QRange.json +11 -122
  224. package/src/components/rating/QRating.js +56 -38
  225. package/src/components/rating/QRating.json +3 -3
  226. package/src/components/rating/QRating.sass +8 -6
  227. package/src/components/rating/QRating.styl +8 -6
  228. package/src/components/resize-observer/QResizeObserver.js +15 -10
  229. package/src/components/scroll-area/QScrollArea.js +342 -126
  230. package/src/components/scroll-area/QScrollArea.json +164 -20
  231. package/src/components/scroll-area/QScrollArea.sass +5 -0
  232. package/src/components/scroll-area/QScrollArea.styl +5 -0
  233. package/src/components/scroll-observer/QScrollObserver.js +9 -2
  234. package/src/components/select/QSelect.js +8 -2
  235. package/src/components/select/QSelect.json +1 -1
  236. package/src/components/separator/QSeparator.js +0 -1
  237. package/src/components/separator/QSeparator.json +1 -1
  238. package/src/components/slider/QSlider.js +97 -140
  239. package/src/components/slider/QSlider.json +1 -122
  240. package/src/components/slider/QSlider.sass +205 -139
  241. package/src/components/slider/QSlider.styl +205 -139
  242. package/src/components/slider/slider-utils.js +468 -123
  243. package/src/components/slider/slider-utils.json +546 -0
  244. package/src/components/stepper/QStepper.js +1 -1
  245. package/src/components/stepper/QStepper.sass +25 -26
  246. package/src/components/stepper/QStepper.styl +25 -26
  247. package/src/components/table/QTable.sass +3 -0
  248. package/src/components/table/QTable.styl +3 -0
  249. package/src/components/tabs/QRouteTab.js +13 -13
  250. package/src/components/tabs/QRouteTab.json +0 -7
  251. package/src/components/tabs/QTab.js +71 -20
  252. package/src/components/tabs/QTabs.js +237 -52
  253. package/src/components/tabs/QTabs.json +8 -0
  254. package/src/components/tabs/QTabs.sass +6 -6
  255. package/src/components/tabs/QTabs.styl +6 -6
  256. package/src/components/time/QTime.js +6 -2
  257. package/src/components/timeline/QTimeline.sass +1 -2
  258. package/src/components/timeline/QTimeline.styl +1 -2
  259. package/src/components/timeline/QTimelineEntry.json +1 -1
  260. package/src/components/tree/QTree.js +10 -6
  261. package/src/components/tree/QTree.json +5 -0
  262. package/src/components/tree/QTree.sass +58 -4
  263. package/src/components/tree/QTree.styl +58 -4
  264. package/src/components/uploader/QUploaderBase.js +15 -19
  265. package/src/components/video/QVideo.js +4 -1
  266. package/src/components/video/QVideo.json +11 -0
  267. package/src/components/virtual-scroll/QVirtualScroll.sass +1 -0
  268. package/src/components/virtual-scroll/QVirtualScroll.styl +1 -0
  269. package/src/css/core/helpers.sass +3 -0
  270. package/src/css/core/helpers.styl +3 -0
  271. package/src/css/core/positioning.sass +5 -0
  272. package/src/css/core/positioning.styl +5 -0
  273. package/src/css/normalize.sass +0 -7
  274. package/src/css/variables.sass +4 -6
  275. package/src/css/variables.styl +4 -6
  276. package/src/directives/Scroll.js +2 -2
  277. package/src/directives/ScrollFire.js +1 -0
  278. package/src/ie-compat/ie.js +13 -13
  279. package/src/install.js +1 -1
  280. package/src/lang.js +7 -4
  281. package/src/mixins/anchor.js +3 -13
  282. package/src/mixins/btn.js +33 -38
  283. package/src/mixins/btn.json +26 -11
  284. package/src/mixins/file.js +27 -5
  285. package/src/mixins/fullscreen.js +16 -4
  286. package/src/mixins/portal.js +10 -10
  287. package/src/mixins/router-link.js +88 -14
  288. package/src/mixins/router-link.json +26 -10
  289. package/src/mixins/validate.js +33 -15
  290. package/src/mixins/virtual-scroll.js +40 -42
  291. package/src/plugins/AppFullscreen.js +41 -16
  292. package/src/plugins/BottomSheet.json +1 -1
  293. package/src/plugins/Cookies.js +1 -1
  294. package/src/plugins/Loading.js +8 -0
  295. package/src/plugins/LoadingBar.js +9 -0
  296. package/src/plugins/LoadingBar.json +1 -1
  297. package/src/plugins/Notify.js +351 -333
  298. package/src/plugins/Notify.json +20 -20
  299. package/src/plugins/Notify.sass +9 -3
  300. package/src/plugins/Notify.styl +9 -3
  301. package/src/utils/clone.js +53 -4
  302. package/src/utils/date.js +134 -69
  303. package/src/utils/dom.js +28 -9
  304. package/src/utils/extend.js +2 -2
  305. package/src/utils/focus-manager.js +8 -10
  306. package/src/utils/global-dialog.js +18 -1
  307. package/src/utils/is.js +2 -2
  308. package/src/utils/morph.js +2 -12
  309. package/src/utils/scroll.js +71 -35
@@ -1,10 +1,8 @@
1
1
  import Vue from 'vue'
2
2
 
3
3
  import {
4
- getRatio,
5
- getModel,
6
- SliderMixin,
7
- keyCodes
4
+ keyCodes,
5
+ SliderMixin
8
6
  } from './slider-utils.js'
9
7
 
10
8
  import { between } from '../../utils/format.js'
@@ -26,90 +24,108 @@ export default Vue.extend({
26
24
  },
27
25
 
28
26
  data () {
27
+ const innerMin = this.__getInnerMin(this.innerMin)
28
+ const innerMax = this.__getInnerMax(this.innerMax)
29
29
  return {
30
- model: this.value === null ? this.min : this.value,
30
+ model: this.value === null ? innerMin : between(this.value, innerMin, innerMax),
31
31
  curRatio: 0
32
32
  }
33
33
  },
34
34
 
35
- watch: {
36
- value (v) {
37
- this.model = v === null
38
- ? 0
39
- : between(v, this.min, this.max)
40
- },
41
-
42
- min (v) {
43
- this.model = between(this.model, v, this.max)
35
+ computed: {
36
+ modelRatio () {
37
+ return this.__convertModelToRatio(this.model)
44
38
  },
45
39
 
46
- max (v) {
47
- this.model = between(this.model, this.min, v)
48
- }
49
- },
50
-
51
- computed: {
52
40
  ratio () {
53
41
  return this.active === true ? this.curRatio : this.modelRatio
54
42
  },
55
43
 
56
- modelRatio () {
57
- return this.minMaxDiff === 0 ? 0 : (this.model - this.min) / this.minMaxDiff
44
+ selectionBarStyle () {
45
+ const acc = {
46
+ [ this.positionProp ]: `${100 * this.innerMinRatio}%`,
47
+ [ this.sizeProp ]: `${100 * (this.ratio - this.innerMinRatio)}%`
48
+ }
49
+ if (this.selectionImg !== void 0) {
50
+ acc.backgroundImage = `url(${this.selectionImg}) !important`
51
+ }
52
+ return acc
58
53
  },
59
54
 
60
- trackStyle () {
61
- return {
62
- [ this.positionProp ]: 0,
63
- [ this.sizeProp ]: `${100 * this.ratio}%`
64
- }
55
+ thumbLabel () {
56
+ return this.labelValue !== void 0
57
+ ? this.labelValue
58
+ : this.model
59
+ },
60
+
61
+ thumbClasses () {
62
+ const color = this.thumbColor || this.color
63
+ return `q-slider__thumb q-slider__thumb${this.axis} q-slider__thumb${this.axis}-${this.isReversed === true ? 'rtl' : 'ltr'} absolute non-selectable` +
64
+ (
65
+ this.preventFocus === false && this.focus === true
66
+ ? ' q-slider--focus'
67
+ : ''
68
+ ) +
69
+ (color !== void 0 ? ` text-${color}` : '')
65
70
  },
66
71
 
67
72
  thumbStyle () {
68
73
  return {
74
+ width: this.thumbSize,
75
+ height: this.thumbSize,
69
76
  [ this.positionProp ]: `${100 * this.ratio}%`
70
77
  }
71
78
  },
72
79
 
73
- thumbClass () {
74
- if (this.preventFocus === false && this.focus === true) {
75
- return 'q-slider--focus'
76
- }
80
+ thumbPinColor () {
81
+ return this.labelColor !== void 0
82
+ ? ` text-${this.labelColor}`
83
+ : ''
77
84
  },
78
85
 
79
- pinClass () {
80
- if (this.labelColor !== void 0) {
81
- return `text-${this.labelColor}`
82
- }
86
+ thumbTextContainerStyle () {
87
+ return this.__getTextContainerStyle(this.ratio)
83
88
  },
84
89
 
85
- pinTextClass () {
86
- return 'q-slider__pin-value-marker-text' +
90
+ thumbTextClass () {
91
+ return 'q-slider__text' +
87
92
  (this.labelTextColor !== void 0 ? ` text-${this.labelTextColor}` : '')
88
93
  },
89
94
 
90
- events () {
91
- if (this.editable === true) {
92
- return this.$q.platform.is.mobile === true
93
- ? { click: this.__mobileClick }
94
- : {
95
- mousedown: this.__activate,
96
- focus: this.__focus,
97
- blur: this.__blur,
98
- keydown: this.__keydown,
99
- keyup: this.__keyup
100
- }
95
+ trackContainerEvents () {
96
+ if (this.editable !== true) {
97
+ return {}
101
98
  }
99
+
100
+ return this.$q.platform.is.mobile === true
101
+ ? { click: this.__onMobileClick }
102
+ : {
103
+ mousedown: this.__onActivate,
104
+ focus: this.__onFocus,
105
+ blur: this.__onBlur,
106
+ keydown: this.__onKeydown,
107
+ keyup: this.__onKeyup
108
+ }
102
109
  },
103
110
 
104
- computedLabel () {
105
- return this.labelValue !== void 0
106
- ? this.labelValue
107
- : this.model
111
+ trackContainerAttrs () {
112
+ return {
113
+ tabindex: this.$q.platform.is.mobile !== true
114
+ ? this.computedTabindex
115
+ : null
116
+ }
108
117
  },
109
118
 
110
- pinStyle () {
111
- const percent = (this.reverse === true ? -this.ratio : this.ratio - 1)
112
- return this.__getPinStyle(percent, this.ratio)
119
+ modelUpdate () {
120
+ return `${this.value}|${this.computedInnerMin}|${this.computedInnerMax}`
121
+ }
122
+ },
123
+
124
+ watch: {
125
+ modelUpdate () {
126
+ this.model = this.value === null
127
+ ? this.computedInnerMin
128
+ : between(this.value, this.computedInnerMin, this.computedInnerMax)
113
129
  }
114
130
  },
115
131
 
@@ -126,28 +142,19 @@ export default Vue.extend({
126
142
  },
127
143
 
128
144
  __updatePosition (event, dragging = this.dragging) {
129
- const ratio = getRatio(
130
- event,
131
- dragging,
132
- this.isReversed,
133
- this.vertical
134
- )
145
+ const ratio = this.__getDraggingRatio(event, dragging)
135
146
 
136
- this.model = getModel(ratio, this.min, this.max, this.step, this.decimals)
137
- this.curRatio = this.snap !== true || this.step === 0
147
+ this.model = this.__convertRatioToModel(ratio)
148
+ this.curRatio = this.snap !== true || this.computedStep === 0
138
149
  ? ratio
139
- : (
140
- this.minMaxDiff === 0
141
- ? 0
142
- : (this.model - this.min) / this.minMaxDiff
143
- )
150
+ : this.__convertModelToRatio(this.model)
144
151
  },
145
152
 
146
- __focus () {
153
+ __onFocus () {
147
154
  this.focus = true
148
155
  },
149
156
 
150
- __keydown (evt) {
157
+ __onKeydown (evt) {
151
158
  if (!keyCodes.includes(evt.keyCode)) {
152
159
  return
153
160
  }
@@ -156,12 +163,12 @@ export default Vue.extend({
156
163
 
157
164
  const
158
165
  step = ([34, 33].includes(evt.keyCode) ? 10 : 1) * this.computedStep,
159
- offset = [34, 37, 40].includes(evt.keyCode) ? -step : step
166
+ offset = ([ 34, 37, 40 ].includes(evt.keyCode) ? -1 : 1) * (this.isReversed === true ? -1 : 1) * step
160
167
 
161
168
  this.model = between(
162
- parseFloat((this.model + offset).toFixed(this.decimals)),
163
- this.min,
164
- this.max
169
+ parseFloat((this.model + offset).toFixed(this.computedDecimals)),
170
+ this.computedInnerMin,
171
+ this.computedInnerMax
165
172
  )
166
173
 
167
174
  this.__updateValue()
@@ -169,76 +176,26 @@ export default Vue.extend({
169
176
  },
170
177
 
171
178
  render (h) {
172
- const child = [
173
- this.__getThumbSvg(h),
174
- h('div', { staticClass: 'q-slider__focus-ring' })
175
- ]
176
-
177
- if (this.label === true || this.labelAlways === true) {
178
- child.push(
179
- h('div', {
180
- staticClass: `q-slider__pin q-slider__pin${this.axis} absolute`,
181
- style: this.pinStyle.pin,
182
- class: this.pinClass
183
- }, [
184
- h('div', {
185
- staticClass: `q-slider__pin-text-container q-slider__pin-text-container${this.axis}`,
186
- style: this.pinStyle.pinTextContainer
187
- }, [
188
- h('span', {
189
- staticClass: 'q-slider__pin-text',
190
- class: this.pinTextClass
191
- }, [
192
- this.computedLabel
193
- ])
194
- ])
195
- ]),
196
-
197
- h('div', {
198
- staticClass: `q-slider__arrow q-slider__arrow${this.axis}`,
199
- class: this.pinClass
179
+ const content = this.__getContent(h, node => {
180
+ node.push(
181
+ this.__getThumb(h, {
182
+ pinColor: this.thumbPinColor,
183
+ textContainerStyle: this.thumbTextContainerStyle,
184
+ textClass: this.thumbTextClass,
185
+ label: this.thumbLabel,
186
+ classes: this.thumbClasses,
187
+ style: this.thumbStyle,
188
+ nodeData: {}
200
189
  })
201
190
  )
202
- }
203
-
204
- if (this.name !== void 0 && this.disable !== true) {
205
- this.__injectFormInput(child, 'push')
206
- }
207
-
208
- const track = [
209
- h('div', {
210
- staticClass: `q-slider__track q-slider__track${this.axis} absolute`,
211
- style: this.trackStyle
212
- })
213
- ]
214
-
215
- this.markers === true && track.push(
216
- h('div', {
217
- staticClass: `q-slider__track-markers q-slider__track-markers${this.axis} absolute-full fit`,
218
- style: this.markerStyle
219
- })
220
- )
191
+ })
221
192
 
222
193
  return h('div', {
223
- staticClass: this.value === null ? ' q-slider--no-value' : '',
194
+ class: this.classes + (this.value === null ? ' q-slider--no-value' : ''),
224
195
  attrs: {
225
- ...this.attrs,
226
- 'aria-valuenow': this.value,
227
- tabindex: this.computedTabindex
228
- },
229
- class: this.classes,
230
- on: this.events,
231
- directives: this.panDirectives
232
- }, [
233
- h('div', {
234
- staticClass: `q-slider__track-container q-slider__track-container${this.axis} absolute`
235
- }, track),
236
-
237
- h('div', {
238
- staticClass: `q-slider__thumb-container q-slider__thumb-container${this.axis} absolute non-selectable`,
239
- class: this.thumbClass,
240
- style: this.thumbStyle
241
- }, child)
242
- ])
196
+ ...this.attributes,
197
+ 'aria-valuenow': this.value
198
+ }
199
+ }, content)
243
200
  }
244
201
  })
@@ -1,5 +1,5 @@
1
1
  {
2
- "mixins": [ "mixins/form" ],
2
+ "mixins": [ "components/slider/slider-utils" ],
3
3
 
4
4
  "meta": {
5
5
  "docsUrl": "https://v1.quasar.dev/vue-components/slider"
@@ -13,63 +13,6 @@
13
13
  "category": "model"
14
14
  },
15
15
 
16
- "min": {
17
- "type": "Number",
18
- "desc": "Minimum value of the model",
19
- "default": 0,
20
- "examples": [ ":min=\"0\"" ],
21
- "category": "model"
22
- },
23
-
24
- "max": {
25
- "type": "Number",
26
- "desc": "Maximum value of the model",
27
- "default": 100,
28
- "examples": [ ":max=\"100\"" ],
29
- "category": "model"
30
- },
31
-
32
- "step": {
33
- "type": "Number",
34
- "desc": "Specify step amount between valid values (> 0.0); When step equals to 0 it defines infinite granularity",
35
- "default": 1,
36
- "examples": [ ":step=\"1\"" ],
37
- "category": "model"
38
- },
39
-
40
- "reverse": {
41
- "type": "Boolean",
42
- "desc": "Work in reverse (changes direction)",
43
- "category": "behavior",
44
- "addedIn": "v1.5.0"
45
- },
46
-
47
- "vertical": {
48
- "type": "Boolean",
49
- "desc": "Display in vertical direction",
50
- "category": "behavior",
51
- "addedIn": "v1.10.0"
52
- },
53
-
54
- "color": {
55
- "extends": "color"
56
- },
57
-
58
- "label": {
59
- "type": "Boolean",
60
- "desc": "Popup a label when user clicks/taps on the slider thumb and moves it",
61
- "category": "content"
62
- },
63
-
64
- "label-color": {
65
- "extends": "color"
66
- },
67
-
68
- "label-text-color": {
69
- "extends": "color",
70
- "addedIn": "v1.1.0"
71
- },
72
-
73
16
  "label-value": {
74
17
  "type": [ "String", "Number" ],
75
18
  "desc": "Override default label value",
@@ -77,76 +20,12 @@
77
20
  ":label-value=\"model + 'px'\""
78
21
  ],
79
22
  "category": "content"
80
- },
81
-
82
- "label-always": {
83
- "type": "Boolean",
84
- "desc": "Always display the label",
85
- "category": "behavior|content"
86
- },
87
-
88
- "markers": {
89
- "type": "Boolean",
90
- "desc": "Display markers on the track, one for each possible value for the model",
91
- "category": "content"
92
- },
93
-
94
- "snap": {
95
- "type": "Boolean",
96
- "desc": "Snap on valid values, rather than sliding freely; Suggestion: use with 'step' prop",
97
- "category": "behavior"
98
- },
99
-
100
- "thumb-path": {
101
- "type": "String",
102
- "desc": "Set custom thumb svg path",
103
- "default": "M 4, 10 a 6,6 0 1,0 12,0 a 6,6 0 1,0 -12,0",
104
- "examples": [ "M5 5 h10 v10 h-10 v-10" ],
105
- "category": "style",
106
- "addedIn": "v1.5.10"
107
- },
108
-
109
- "dark": {
110
- "extends": "dark"
111
- },
112
-
113
- "dense": {
114
- "extends": "dense"
115
- },
116
-
117
- "disable": {
118
- "extends": "disable"
119
- },
120
-
121
- "readonly": {
122
- "extends": "readonly"
123
- },
124
-
125
- "tabindex": {
126
- "extends": "tabindex"
127
23
  }
128
24
  },
129
25
 
130
26
  "events": {
131
27
  "input": {
132
28
  "extends": "input"
133
- },
134
-
135
- "change": {
136
- "extends": "input",
137
- "desc": "Emitted on lazy model value change (after user slides then releases the thumb)"
138
- },
139
-
140
- "pan": {
141
- "desc": "Triggered when user starts panning on the component",
142
- "params": {
143
- "phase": {
144
- "type": "String",
145
- "desc": "Phase of panning",
146
- "values": [ "start", "end" ]
147
- }
148
- },
149
- "addedIn": "v1.14.0"
150
29
  }
151
30
  }
152
31
  }