quasar 1.16.3 → 1.17.3

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 (308) 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 +380 -227
  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 +512 -303
  137. package/dist/quasar.rtl.min.css +1 -1
  138. package/dist/quasar.sass +328 -210
  139. package/dist/quasar.styl +328 -210
  140. package/dist/quasar.umd.js +3244 -1894
  141. package/dist/quasar.umd.min.js +2 -2
  142. package/dist/quasar.umd.modern.js +3199 -1875
  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 +89 -75
  204. package/src/components/icon/QIcon.sass +2 -2
  205. package/src/components/icon/QIcon.styl +2 -2
  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 +12 -7
  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/variables.sass +4 -6
  274. package/src/css/variables.styl +4 -6
  275. package/src/directives/Scroll.js +2 -2
  276. package/src/directives/ScrollFire.js +1 -0
  277. package/src/ie-compat/ie.js +13 -13
  278. package/src/install.js +1 -1
  279. package/src/lang.js +7 -4
  280. package/src/mixins/anchor.js +3 -13
  281. package/src/mixins/btn.js +33 -38
  282. package/src/mixins/btn.json +26 -11
  283. package/src/mixins/file.js +27 -5
  284. package/src/mixins/fullscreen.js +16 -4
  285. package/src/mixins/portal.js +10 -10
  286. package/src/mixins/router-link.js +88 -14
  287. package/src/mixins/router-link.json +26 -10
  288. package/src/mixins/validate.js +33 -15
  289. package/src/mixins/virtual-scroll.js +40 -42
  290. package/src/plugins/AppFullscreen.js +41 -16
  291. package/src/plugins/BottomSheet.json +1 -1
  292. package/src/plugins/Cookies.js +1 -1
  293. package/src/plugins/Loading.js +8 -0
  294. package/src/plugins/LoadingBar.js +9 -0
  295. package/src/plugins/LoadingBar.json +1 -1
  296. package/src/plugins/Notify.js +351 -333
  297. package/src/plugins/Notify.json +20 -20
  298. package/src/plugins/Notify.sass +9 -3
  299. package/src/plugins/Notify.styl +9 -3
  300. package/src/utils/clone.js +53 -4
  301. package/src/utils/date.js +134 -69
  302. package/src/utils/dom.js +28 -9
  303. package/src/utils/extend.js +2 -2
  304. package/src/utils/focus-manager.js +8 -10
  305. package/src/utils/global-dialog.js +18 -1
  306. package/src/utils/is.js +2 -2
  307. package/src/utils/morph.js +2 -12
  308. package/src/utils/scroll.js +71 -35
@@ -71,6 +71,13 @@
71
71
  "category": "content"
72
72
  },
73
73
 
74
+ "no-header-tabs": {
75
+ "type": "Boolean",
76
+ "desc": "Do not render header tabs (only the input)",
77
+ "category": "content",
78
+ "addedIn": "v1.17"
79
+ },
80
+
74
81
  "no-footer": {
75
82
  "type": "Boolean",
76
83
  "desc": "Do not render footer; Useful when you want a specific view ('default-view' prop) and don't want the user to be able to switch it",
@@ -16,7 +16,11 @@
16
16
  border: 1px solid $separator-color
17
17
 
18
18
  &__header
19
- height: 68px
19
+
20
+ &-tabs
21
+ height: 32px
22
+ &-banner
23
+ height: 36px
20
24
 
21
25
  input
22
26
  line-height: 24px
@@ -93,47 +97,34 @@
93
97
  border-radius: 50%
94
98
  transform: translate(-5px, -5px)
95
99
 
96
- &__hue .q-slider__track-container
100
+ &__hue .q-slider__track
97
101
  background: linear-gradient(to right, #f00 0%, #ff0 17%, #0f0 33%, #0ff 50%, #00f 67%, #f0f 83%, #f00 100%) !important // @stylint ignore
98
102
  opacity: 1
99
103
 
100
- &__alpha .q-slider__track-container
101
- color: #fff
102
- opacity: 1
103
- height: 8px
104
- background-color: #fff !important
105
- background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAICAYAAADED76LAAAAH0lEQVQoU2NkYGAwZkAFZ5G5jPRRgOYEVDeB3EBjBQBOZwTVugIGyAAAAABJRU5ErkJggg==') !important
106
- &:after
104
+ &__alpha
105
+ .q-slider__track-container
106
+ padding-top: 0
107
+ .q-slider__track:before
107
108
  content: ''
108
109
  position: absolute
109
110
  top: 0
110
111
  right: 0
111
112
  bottom: 0
112
113
  left: 0
114
+ border-radius: inherit
113
115
  background: linear-gradient(90deg, rgba(255,255,255,0), $grey-7)
114
116
 
115
117
  &__sliders
116
- padding: 4px 16px 16px
117
-
118
- .q-slider__track-container
119
- height: 10px
120
- margin-top: -5px
121
-
122
- .q-slider__track
123
- display: none
118
+ padding: 0 16px
124
119
 
125
120
  .q-slider__thumb
121
+ color: $grey-9
126
122
  path
127
123
  stroke-width: 2px
128
124
  fill: transparent
129
125
  .q-slider--active path
130
126
  stroke-width: 3px
131
127
 
132
- .q-slider
133
- height: 16px
134
- margin-top: 8px
135
- color: $grey-9
136
-
137
128
  /* Tune Tab */
138
129
 
139
130
  &__tune-tab
@@ -180,9 +171,8 @@
180
171
  background: inherit
181
172
 
182
173
  &--dark
183
-
184
174
  .q-color-picker__tune-tab input
185
175
  border: 1px solid rgba(#fff, .3)
186
176
 
187
177
  .q-slider
188
- color: $grey-5
178
+ color: $grey-1
@@ -16,7 +16,11 @@
16
16
  border: 1px solid $separator-color
17
17
 
18
18
  &__header
19
- height: 68px
19
+
20
+ &-tabs
21
+ height: 32px
22
+ &-banner
23
+ height: 36px
20
24
 
21
25
  input
22
26
  line-height: 24px
@@ -93,47 +97,34 @@
93
97
  border-radius: 50%
94
98
  transform: translate(-5px, -5px)
95
99
 
96
- &__hue .q-slider__track-container
100
+ &__hue .q-slider__track
97
101
  background: linear-gradient(to right, #f00 0%, #ff0 17%, #0f0 33%, #0ff 50%, #00f 67%, #f0f 83%, #f00 100%) !important // @stylint ignore
98
102
  opacity: 1
99
103
 
100
- &__alpha .q-slider__track-container
101
- color: #fff
102
- opacity: 1
103
- height: 8px
104
- background-color: #fff !important
105
- background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAICAYAAADED76LAAAAH0lEQVQoU2NkYGAwZkAFZ5G5jPRRgOYEVDeB3EBjBQBOZwTVugIGyAAAAABJRU5ErkJggg==') !important
106
- &:after
104
+ &__alpha
105
+ .q-slider__track-container
106
+ padding-top: 0
107
+ .q-slider__track:before
107
108
  content: ''
108
109
  position: absolute
109
110
  top: 0
110
111
  right: 0
111
112
  bottom: 0
112
113
  left: 0
114
+ border-radius: inherit
113
115
  background: linear-gradient(90deg, rgba(255,255,255,0), $grey-7)
114
116
 
115
117
  &__sliders
116
- padding: 4px 16px 16px
117
-
118
- .q-slider__track-container
119
- height: 10px
120
- margin-top: -5px
121
-
122
- .q-slider__track
123
- display: none
118
+ padding: 0 16px
124
119
 
125
120
  .q-slider__thumb
121
+ color: $grey-9
126
122
  path
127
123
  stroke-width: 2px
128
124
  fill: transparent
129
125
  .q-slider--active path
130
126
  stroke-width: 3px
131
127
 
132
- .q-slider
133
- height: 16px
134
- margin-top: 8px
135
- color: $grey-9
136
-
137
128
  /* Tune Tab */
138
129
 
139
130
  &__tune-tab
@@ -180,9 +171,8 @@
180
171
  background: inherit
181
172
 
182
173
  &--dark
183
-
184
174
  .q-color-picker__tune-tab input
185
175
  border: 1px solid alpha(#fff, .3)
186
176
 
187
177
  .q-slider
188
- color: $grey-5
178
+ color: $grey-1
@@ -696,7 +696,13 @@ export default Vue.extend({
696
696
 
697
697
  methods: {
698
698
  setToday () {
699
- this.__toggleDate(this.today, this.__getMonthHash(this.today))
699
+ const date = this.today
700
+ const month = this.daysMap[this.__getMonthHash(date)]
701
+
702
+ if (month === void 0 || month.includes(date.day) === false) {
703
+ this.__addToModel(date)
704
+ }
705
+
700
706
  this.setCalendarTo(this.today.year, this.today.month)
701
707
  },
702
708
 
@@ -96,6 +96,8 @@
96
96
  > div
97
97
  line-height: 30px
98
98
  text-align: center
99
+ > button
100
+ line-height: 22px
99
101
 
100
102
  &--out
101
103
  opacity: .18
@@ -96,6 +96,8 @@
96
96
  > div
97
97
  line-height: 30px
98
98
  text-align: center
99
+ > button
100
+ line-height: 22px
99
101
 
100
102
  &--out
101
103
  opacity: .18
@@ -12,6 +12,7 @@ import { slot } from '../../utils/slot.js'
12
12
  import { create, stop } from '../../utils/event.js'
13
13
  import cache from '../../utils/cache.js'
14
14
  import { addFocusFn } from '../../utils/focus-manager.js'
15
+ import { client } from '../../plugins/Platform.js'
15
16
 
16
17
  let maximizedModals = 0
17
18
 
@@ -51,6 +52,7 @@ export default Vue.extend({
51
52
  noRouteDismiss: Boolean,
52
53
  noRefocus: Boolean,
53
54
  noFocus: Boolean,
55
+ noShake: Boolean,
54
56
 
55
57
  seamless: Boolean,
56
58
 
@@ -188,7 +190,7 @@ export default Vue.extend({
188
190
  this.__addHistory()
189
191
 
190
192
  // IE can have null document.activeElement
191
- this.__refocusTarget = this.noRefocus === false && document.activeElement !== null
193
+ this.__refocusTarget = client.is.mobile !== true && this.noRefocus === false && document.activeElement !== null
192
194
  ? document.activeElement
193
195
  : void 0
194
196
 
@@ -198,7 +200,7 @@ export default Vue.extend({
198
200
  EscapeKey.register(this, () => {
199
201
  if (this.seamless !== true) {
200
202
  if (this.persistent === true || this.noEscDismiss === true) {
201
- this.maximized !== true && this.shake()
203
+ this.maximized !== true && this.noShake !== true && this.shake()
202
204
  }
203
205
  else {
204
206
  this.$emit('escape-key')
@@ -255,7 +257,8 @@ export default Vue.extend({
255
257
 
256
258
  // check null for IE
257
259
  if (this.__refocusTarget !== void 0 && this.__refocusTarget !== null) {
258
- this.__refocusTarget.focus()
260
+ this.__refocusTarget.focus(evt)
261
+ this.__refocusTarget = void 0
259
262
  }
260
263
 
261
264
  this.$el.dispatchEvent(create('popup-hide', { bubbles: true }))
@@ -316,7 +319,7 @@ export default Vue.extend({
316
319
  if (this.persistent !== true && this.noBackdropDismiss !== true) {
317
320
  this.hide(e)
318
321
  }
319
- else {
322
+ else if (this.noShake !== true) {
320
323
  this.shake()
321
324
  }
322
325
  },
@@ -372,5 +375,6 @@ export default Vue.extend({
372
375
 
373
376
  beforeDestroy () {
374
377
  this.__cleanup()
378
+ this.__refocusTarget = void 0
375
379
  }
376
380
  })
@@ -101,12 +101,19 @@
101
101
  "type": "Boolean",
102
102
  "desc": "(Accessibility) When Dialog gets shown, do not switch focus on it",
103
103
  "category": "behavior"
104
+ },
105
+
106
+ "no-shake": {
107
+ "type": "Boolean",
108
+ "desc": "Do not shake up the Dialog to catch user's attention",
109
+ "category": "behavior",
110
+ "addedIn": "v1.17"
104
111
  }
105
112
  },
106
113
 
107
114
  "events": {
108
115
  "shake": {
109
- "desc": "Shakes up the Dialog in order to catch user's attention"
116
+ "desc": "Emitted when the Dialog shakes in order to catch user's attention, unless the 'no-shake' property is set"
110
117
  },
111
118
 
112
119
  "escape-key": {
@@ -114,11 +114,10 @@ export default Vue.extend({
114
114
  }
115
115
  },
116
116
 
117
- 'layout.totalWidth' (val) {
118
- this.__updateLocal('belowBreakpoint', (
119
- this.behavior === 'mobile' ||
120
- (this.behavior !== 'desktop' && val <= this.breakpoint)
121
- ))
117
+ 'layout.totalWidth' () {
118
+ if (this.layout.container === true || document.qScrollPrevented !== true) {
119
+ this.__updateBelowBreakpoint()
120
+ }
122
121
  },
123
122
 
124
123
  side (newSide, oldSide) {
@@ -134,22 +133,17 @@ export default Vue.extend({
134
133
  this.layout[newSide].offset = this.offset
135
134
  },
136
135
 
137
- behavior (val) {
138
- this.__updateLocal('belowBreakpoint', (
139
- val === 'mobile' ||
140
- (val !== 'desktop' && this.layout.totalWidth <= this.breakpoint)
141
- ))
136
+ behavior () {
137
+ this.__updateBelowBreakpoint()
142
138
  },
143
139
 
144
- breakpoint (val) {
145
- this.__updateLocal('belowBreakpoint', (
146
- this.behavior === 'mobile' ||
147
- (this.behavior !== 'desktop' && this.layout.totalWidth <= val)
148
- ))
140
+ breakpoint () {
141
+ this.__updateBelowBreakpoint()
149
142
  },
150
143
 
151
144
  'layout.container' (val) {
152
145
  this.showing === true && this.__preventScroll(val !== true)
146
+ val === true && this.__updateBelowBreakpoint()
153
147
  },
154
148
 
155
149
  'layout.scrollbarWidth' () {
@@ -583,6 +577,13 @@ export default Vue.extend({
583
577
 
584
578
  __updateSizeOnLayout (miniToOverlay, size) {
585
579
  this.__update('size', miniToOverlay === true ? this.miniWidth : size)
580
+ },
581
+
582
+ __updateBelowBreakpoint () {
583
+ this.__updateLocal('belowBreakpoint', (
584
+ this.behavior === 'mobile' ||
585
+ (this.behavior !== 'desktop' && this.layout.totalWidth <= this.breakpoint)
586
+ ))
586
587
  }
587
588
  },
588
589
 
@@ -516,7 +516,7 @@ export default Vue.extend({
516
516
 
517
517
  return h('div', {
518
518
  style: {
519
- height: this.inFullscreen === true ? '100vh' : null
519
+ height: this.inFullscreen === true ? '100%' : null
520
520
  },
521
521
  class: this.classes,
522
522
  attrs: this.attrs,
@@ -537,7 +537,7 @@ export default Vue.extend({
537
537
  },
538
538
  domProps: isSSR
539
539
  ? { innerHTML: this.value }
540
- : undefined,
540
+ : void 0,
541
541
  on
542
542
  }
543
543
  )
@@ -6,10 +6,18 @@
6
6
  &.disabled
7
7
  border-style: dashed
8
8
 
9
- > div:first-child, &__toolbars-container, &__toolbars-container > div:first-child
9
+ &.fullscreen
10
+ max-height: 100%
11
+
12
+ > div:first-child,
13
+ &__toolbars-container,
14
+ &__toolbars-container > div:first-child
10
15
  border-top-left-radius: inherit
11
16
  border-top-right-radius: inherit
12
17
 
18
+ &__toolbars-container
19
+ max-width: 100%
20
+
13
21
  &__content
14
22
  outline: 0
15
23
  padding: $editor-content-padding
@@ -17,14 +25,18 @@
17
25
  border-bottom-left-radius: inherit
18
26
  border-bottom-right-radius: inherit
19
27
  overflow: auto
28
+ max-width: 100%
29
+
20
30
  pre
21
31
  white-space: pre-wrap
32
+
22
33
  hr
23
34
  border: 0
24
35
  outline: 0
25
36
  margin: 1px
26
37
  height: 1px
27
38
  background: $editor-hr-color
39
+
28
40
  &:empty:not(:focus):before
29
41
  content: attr(placeholder)
30
42
  opacity: .7
@@ -6,10 +6,18 @@
6
6
  &.disabled
7
7
  border-style: dashed
8
8
 
9
- > div:first-child, &__toolbars-container, &__toolbars-container > div:first-child
9
+ &.fullscreen
10
+ max-height: 100%
11
+
12
+ > div:first-child,
13
+ &__toolbars-container,
14
+ &__toolbars-container > div:first-child
10
15
  border-top-left-radius: inherit
11
16
  border-top-right-radius: inherit
12
17
 
18
+ &__toolbars-container
19
+ max-width: 100%
20
+
13
21
  &__content
14
22
  outline: 0
15
23
  padding: $editor-content-padding
@@ -17,14 +25,18 @@
17
25
  border-bottom-left-radius: inherit
18
26
  border-bottom-right-radius: inherit
19
27
  overflow: auto
28
+ max-width: 100%
29
+
20
30
  pre
21
31
  white-space: pre-wrap
32
+
22
33
  hr
23
34
  border: 0
24
35
  outline: 0
25
36
  margin: 1px
26
37
  height: 1px
27
38
  background: $editor-hr-color
39
+
28
40
  &:empty:not(:focus):before
29
41
  content: attr(placeholder)
30
42
  opacity: .7
@@ -7,7 +7,7 @@ import QIcon from '../icon/QIcon.js'
7
7
  import QSlideTransition from '../slide-transition/QSlideTransition.js'
8
8
  import QSeparator from '../separator/QSeparator.js'
9
9
 
10
- import { RouterLinkMixin } from '../../mixins/router-link.js'
10
+ import RouterLinkMixin from '../../mixins/router-link.js'
11
11
  import ModelToggleMixin from '../../mixins/model-toggle.js'
12
12
  import DarkMixin from '../../mixins/dark.js'
13
13
 
@@ -92,7 +92,7 @@ export default Vue.extend({
92
92
  },
93
93
 
94
94
  isClickable () {
95
- return this.hasRouterLink === true || this.expandIconToggle !== true
95
+ return this.hasLink === true || this.expandIconToggle !== true
96
96
  },
97
97
 
98
98
  expansionIcon () {
@@ -102,13 +102,13 @@ export default Vue.extend({
102
102
  },
103
103
 
104
104
  activeToggleIcon () {
105
- return this.disable !== true && (this.hasRouterLink === true || this.expandIconToggle === true)
105
+ return this.disable !== true && (this.hasLink === true || this.expandIconToggle === true)
106
106
  }
107
107
  },
108
108
 
109
109
  methods: {
110
110
  __onHeaderClick (e) {
111
- this.hasRouterLink !== true && this.toggle(e)
111
+ this.hasLink !== true && this.toggle(e)
112
112
  this.$emit('click', e)
113
113
  },
114
114
 
@@ -219,18 +219,20 @@ export default Vue.extend({
219
219
  }
220
220
 
221
221
  if (this.isClickable === true) {
222
- const evtProp = this.hasRouterLink === true ? 'nativeOn' : 'on'
223
-
224
222
  data.props.clickable = true
225
- data[evtProp] = {
223
+ data[this.hasRouterLink === true ? 'nativeOn' : 'on'] = {
226
224
  ...this.qListeners,
227
225
  click: this.__onHeaderClick
228
226
  }
229
227
 
230
- this.hasRouterLink === true && Object.assign(
231
- data.props,
232
- this.routerLinkProps
233
- )
228
+ if (this.hasLink === true) {
229
+ Object.assign(
230
+ data.props,
231
+ this.linkProps.props
232
+ )
233
+
234
+ data.attrs = this.linkProps.attrs
235
+ }
234
236
  }
235
237
 
236
238
  return h(QItem, data, child)
@@ -80,6 +80,10 @@ export default Vue.extend({
80
80
  'aria-haspopup': 'true',
81
81
  ...this.qAttrs
82
82
  }
83
+ },
84
+
85
+ slotScope () {
86
+ return { opened: this.showing }
83
87
  }
84
88
  },
85
89
 
@@ -90,6 +94,15 @@ export default Vue.extend({
90
94
  if (this.$refs.trigger && this.$refs.trigger.$el) {
91
95
  this.$refs.trigger.$el.focus()
92
96
  }
97
+ },
98
+
99
+ __getIcon (h, kebab, camel) {
100
+ const slotFn = this.$scopedSlots[kebab]
101
+ const staticClass = `q-fab__${kebab} absolute-full`
102
+
103
+ return slotFn === void 0
104
+ ? h(QIcon, { staticClass, props: { name: this[kebab] || this.$q.iconSet.fab[camel] } })
105
+ : h('div', { staticClass }, slotFn(this.slotScope))
93
106
  }
94
107
  },
95
108
 
@@ -98,20 +111,16 @@ export default Vue.extend({
98
111
 
99
112
  this.hideIcon !== true && child.push(
100
113
  h('div', { staticClass: 'q-fab__icon-holder', class: this.iconHolderClasses }, [
101
- h(QIcon, {
102
- staticClass: 'q-fab__icon absolute-full',
103
- props: { name: this.icon || this.$q.iconSet.fab.icon }
104
- }),
105
- h(QIcon, {
106
- staticClass: 'q-fab__active-icon absolute-full',
107
- props: { name: this.activeIcon || this.$q.iconSet.fab.activeIcon }
108
- })
114
+ this.__getIcon(h, 'icon', 'icon'),
115
+ this.__getIcon(h, 'active-icon', 'activeIcon')
109
116
  ])
110
117
  )
111
118
 
112
- this.label !== '' && child[this.labelProps.action](
113
- h('div', this.labelProps.data, [ this.label ])
114
- )
119
+ if (this.label !== '' || this.$scopedSlots.label !== void 0) {
120
+ child[this.labelProps.action](
121
+ h('div', this.labelProps.data, this.$scopedSlots.label !== void 0 ? this.$scopedSlots.label(this.slotScope) : [ this.label ])
122
+ )
123
+ }
115
124
 
116
125
  return h('div', {
117
126
  staticClass: 'q-fab z-fab row inline justify-center',
@@ -57,6 +57,41 @@
57
57
  }
58
58
  },
59
59
 
60
+ "scopedSlots": {
61
+ "icon": {
62
+ "desc": "Slot for icon shown when FAB is closed; Suggestion: QIcon",
63
+ "scope": {
64
+ "opened": {
65
+ "type": "Boolean",
66
+ "desc": "FAB is opened"
67
+ }
68
+ },
69
+ "addedIn": "v1.17"
70
+ },
71
+
72
+ "active-icon": {
73
+ "desc": "Slot for icon shown when FAB is opened; Suggestion: QIcon",
74
+ "scope": {
75
+ "opened": {
76
+ "type": "Boolean",
77
+ "desc": "FAB is opened"
78
+ }
79
+ },
80
+ "addedIn": "v1.17"
81
+ },
82
+
83
+ "label": {
84
+ "desc": "Slot for label",
85
+ "scope": {
86
+ "opened": {
87
+ "type": "Boolean",
88
+ "desc": "FAB is opened"
89
+ }
90
+ },
91
+ "addedIn": "v1.17"
92
+ }
93
+ },
94
+
60
95
  "events": {
61
96
  "input": {
62
97
  "desc": "Emitted when fab actions are shown/hidden; Captured by v-model directive"
@@ -75,15 +75,22 @@ export default Vue.extend({
75
75
  render (h) {
76
76
  const child = []
77
77
 
78
- this.icon !== '' && child.push(
79
- h(QIcon, {
80
- props: { name: this.icon }
81
- })
82
- )
83
-
84
- this.label !== '' && child[this.labelProps.action](
85
- h('div', this.labelProps.data, [ this.label ])
86
- )
78
+ if (this.$scopedSlots.icon !== void 0) {
79
+ child.push(this.$scopedSlots.icon())
80
+ }
81
+ else if (this.icon !== '') {
82
+ child.push(
83
+ h(QIcon, {
84
+ props: { name: this.icon }
85
+ })
86
+ )
87
+ }
88
+
89
+ if (this.label !== '' || this.$scopedSlots.label !== void 0) {
90
+ child[this.labelProps.action](
91
+ h('div', this.labelProps.data, this.$scopedSlots.label !== void 0 ? this.$scopedSlots.label() : [ this.label ])
92
+ )
93
+ }
87
94
 
88
95
  return h(QBtn, {
89
96
  class: this.classes,
@@ -36,6 +36,16 @@
36
36
  "slots": {
37
37
  "default": {
38
38
  "desc": "Suggestion for this slot: QTooltip"
39
+ },
40
+
41
+ "icon": {
42
+ "desc": "Slot for icon; Suggestion: QIcon",
43
+ "addedIn": "v1.17"
44
+ },
45
+
46
+ "label": {
47
+ "desc": "Slot for label",
48
+ "addedIn": "v1.17"
39
49
  }
40
50
  },
41
51