quasar 2.5.4 → 2.6.1

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 (374) hide show
  1. package/README.md +1 -1
  2. package/dist/api/BottomSheet.json +1 -1
  3. package/dist/api/Dialog.json +9 -2
  4. package/dist/api/Notify.json +205 -5
  5. package/dist/api/QAvatar.json +1 -1
  6. package/dist/api/QBreadcrumbsEl.json +1 -1
  7. package/dist/api/QBtn.json +2 -2
  8. package/dist/api/QBtnDropdown.json +3 -3
  9. package/dist/api/QCarousel.json +3 -3
  10. package/dist/api/QChip.json +4 -4
  11. package/dist/api/QExpansionItem.json +2 -2
  12. package/dist/api/QFab.json +2 -2
  13. package/dist/api/QFabAction.json +1 -1
  14. package/dist/api/QForm.json +4 -1
  15. package/dist/api/QIcon.json +4 -2
  16. package/dist/api/QKnob.json +5 -0
  17. package/dist/api/QPagination.json +4 -4
  18. package/dist/api/QRouteTab.json +1 -1
  19. package/dist/api/QSelect.json +9 -10
  20. package/dist/api/QStep.json +4 -4
  21. package/dist/api/QStepper.json +4 -4
  22. package/dist/api/QTab.json +1 -1
  23. package/dist/api/QTimelineEntry.json +1 -1
  24. package/dist/api/QToggle.json +1 -1
  25. package/dist/api/QTree.json +1 -1
  26. package/dist/icon-set/bootstrap-icons.umd.prod.js +1 -1
  27. package/dist/icon-set/eva-icons.umd.prod.js +1 -1
  28. package/dist/icon-set/fontawesome-v5-pro.umd.prod.js +1 -1
  29. package/dist/icon-set/fontawesome-v5.umd.prod.js +1 -1
  30. package/dist/icon-set/fontawesome-v6-pro.umd.prod.js +6 -0
  31. package/dist/icon-set/fontawesome-v6.umd.prod.js +6 -0
  32. package/dist/icon-set/ionicons-v4.umd.prod.js +1 -1
  33. package/dist/icon-set/line-awesome.umd.prod.js +1 -1
  34. package/dist/icon-set/material-icons-outlined.umd.prod.js +1 -1
  35. package/dist/icon-set/material-icons-round.umd.prod.js +1 -1
  36. package/dist/icon-set/material-icons-sharp.umd.prod.js +1 -1
  37. package/dist/icon-set/material-icons.umd.prod.js +1 -1
  38. package/dist/icon-set/mdi-v3.umd.prod.js +1 -1
  39. package/dist/icon-set/mdi-v4.umd.prod.js +1 -1
  40. package/dist/icon-set/mdi-v5.umd.prod.js +1 -1
  41. package/dist/icon-set/mdi-v6.umd.prod.js +1 -1
  42. package/dist/icon-set/svg-bootstrap-icons.umd.prod.js +2 -2
  43. package/dist/icon-set/svg-eva-icons.umd.prod.js +2 -2
  44. package/dist/icon-set/svg-fontawesome-v6.umd.prod.js +6 -0
  45. package/dist/icon-set/svg-ionicons-v4.umd.prod.js +1 -1
  46. package/dist/icon-set/svg-ionicons-v5.umd.prod.js +1 -1
  47. package/dist/icon-set/svg-ionicons-v6.umd.prod.js +2 -2
  48. package/dist/icon-set/svg-line-awesome.umd.prod.js +1 -1
  49. package/dist/icon-set/svg-material-icons-outlined.umd.prod.js +1 -1
  50. package/dist/icon-set/svg-material-icons-round.umd.prod.js +1 -1
  51. package/dist/icon-set/svg-material-icons-sharp.umd.prod.js +1 -1
  52. package/dist/icon-set/svg-material-icons.umd.prod.js +1 -1
  53. package/dist/icon-set/svg-mdi-v6.umd.prod.js +2 -2
  54. package/dist/icon-set/svg-themify.umd.prod.js +2 -2
  55. package/dist/icon-set/themify.umd.prod.js +1 -1
  56. package/dist/lang/ar.umd.prod.js +1 -1
  57. package/dist/lang/az-Latn.umd.prod.js +1 -1
  58. package/dist/lang/bg.umd.prod.js +1 -1
  59. package/dist/lang/bn.umd.prod.js +1 -1
  60. package/dist/lang/ca.umd.prod.js +1 -1
  61. package/dist/lang/cs.umd.prod.js +1 -1
  62. package/dist/lang/da.umd.prod.js +1 -1
  63. package/dist/lang/de.umd.prod.js +1 -1
  64. package/dist/lang/el.umd.prod.js +1 -1
  65. package/dist/lang/en-GB.umd.prod.js +1 -1
  66. package/dist/lang/en-US.umd.prod.js +1 -1
  67. package/dist/lang/eo.umd.prod.js +1 -1
  68. package/dist/lang/es.umd.prod.js +1 -1
  69. package/dist/lang/et.umd.prod.js +1 -1
  70. package/dist/lang/eu.umd.prod.js +6 -0
  71. package/dist/lang/fa-IR.umd.prod.js +1 -1
  72. package/dist/lang/fa.umd.prod.js +1 -1
  73. package/dist/lang/fi.umd.prod.js +1 -1
  74. package/dist/lang/fr.umd.prod.js +1 -1
  75. package/dist/lang/gn.umd.prod.js +1 -1
  76. package/dist/lang/he.umd.prod.js +1 -1
  77. package/dist/lang/hr.umd.prod.js +1 -1
  78. package/dist/lang/hu.umd.prod.js +1 -1
  79. package/dist/lang/id.umd.prod.js +1 -1
  80. package/dist/lang/is.umd.prod.js +1 -1
  81. package/dist/lang/it.umd.prod.js +1 -1
  82. package/dist/lang/ja.umd.prod.js +1 -1
  83. package/dist/lang/km.umd.prod.js +1 -1
  84. package/dist/lang/ko-KR.umd.prod.js +1 -1
  85. package/dist/lang/kur-CKB.umd.prod.js +1 -1
  86. package/dist/lang/kz.umd.prod.js +6 -0
  87. package/dist/lang/lt.umd.prod.js +1 -1
  88. package/dist/lang/lu.umd.prod.js +1 -1
  89. package/dist/lang/lv.umd.prod.js +1 -1
  90. package/dist/lang/ml.umd.prod.js +1 -1
  91. package/dist/lang/ms.umd.prod.js +1 -1
  92. package/dist/lang/my.umd.prod.js +1 -1
  93. package/dist/lang/nb-NO.umd.prod.js +1 -1
  94. package/dist/lang/nl.umd.prod.js +1 -1
  95. package/dist/lang/pl.umd.prod.js +1 -1
  96. package/dist/lang/pt-BR.umd.prod.js +1 -1
  97. package/dist/lang/pt.umd.prod.js +1 -1
  98. package/dist/lang/ro.umd.prod.js +1 -1
  99. package/dist/lang/ru.umd.prod.js +1 -1
  100. package/dist/lang/sk.umd.prod.js +1 -1
  101. package/dist/lang/sl.umd.prod.js +1 -1
  102. package/dist/lang/sr-CYR.umd.prod.js +1 -1
  103. package/dist/lang/sr.umd.prod.js +1 -1
  104. package/dist/lang/sv.umd.prod.js +1 -1
  105. package/dist/lang/ta.umd.prod.js +1 -1
  106. package/dist/lang/th.umd.prod.js +1 -1
  107. package/dist/lang/tr.umd.prod.js +1 -1
  108. package/dist/lang/ug.umd.prod.js +2 -2
  109. package/dist/lang/uk.umd.prod.js +1 -1
  110. package/dist/lang/vi.umd.prod.js +1 -1
  111. package/dist/lang/zh-CN.umd.prod.js +1 -1
  112. package/dist/lang/zh-TW.umd.prod.js +1 -1
  113. package/dist/quasar.cjs.prod.js +2 -2
  114. package/dist/quasar.css +4 -6
  115. package/dist/quasar.esm.prod.js +2 -2
  116. package/dist/quasar.prod.css +1 -1
  117. package/dist/quasar.rtl.css +4 -6
  118. package/dist/quasar.rtl.prod.css +1 -1
  119. package/dist/quasar.sass +3 -1
  120. package/dist/quasar.umd.js +501 -455
  121. package/dist/quasar.umd.prod.js +2 -2
  122. package/dist/types/extras/icon-set.d.ts +3 -0
  123. package/dist/types/globals.d.ts +2 -2
  124. package/dist/types/index.d.ts +154 -50
  125. package/dist/vetur/quasar-attributes.json +42 -38
  126. package/dist/vetur/quasar-tags.json +1 -0
  127. package/dist/web-types/web-types.json +50 -40
  128. package/icon-set/bootstrap-icons.js +11 -6
  129. package/icon-set/bootstrap-icons.mjs +136 -0
  130. package/icon-set/eva-icons.js +10 -5
  131. package/icon-set/{svg-mdi-v4.js → eva-icons.mjs} +62 -94
  132. package/icon-set/fontawesome-v5-pro.js +6 -1
  133. package/icon-set/fontawesome-v5-pro.mjs +128 -0
  134. package/icon-set/fontawesome-v5.js +6 -1
  135. package/icon-set/fontawesome-v5.mjs +128 -0
  136. package/icon-set/fontawesome-v6-pro.js +133 -0
  137. package/icon-set/fontawesome-v6-pro.mjs +128 -0
  138. package/icon-set/fontawesome-v6.js +133 -0
  139. package/icon-set/fontawesome-v6.mjs +128 -0
  140. package/icon-set/ionicons-v4.js +10 -5
  141. package/icon-set/ionicons-v4.mjs +180 -0
  142. package/icon-set/line-awesome.js +6 -1
  143. package/icon-set/line-awesome.mjs +128 -0
  144. package/icon-set/material-icons-outlined.js +6 -1
  145. package/icon-set/material-icons-outlined.mjs +128 -0
  146. package/icon-set/material-icons-round.js +6 -1
  147. package/icon-set/material-icons-round.mjs +128 -0
  148. package/icon-set/material-icons-sharp.js +6 -1
  149. package/icon-set/material-icons-sharp.mjs +128 -0
  150. package/icon-set/material-icons.js +6 -1
  151. package/icon-set/material-icons.mjs +128 -0
  152. package/icon-set/mdi-v3.js +6 -1
  153. package/icon-set/mdi-v3.mjs +141 -0
  154. package/icon-set/mdi-v4.js +6 -1
  155. package/icon-set/mdi-v4.mjs +141 -0
  156. package/icon-set/mdi-v5.js +6 -1
  157. package/icon-set/mdi-v5.mjs +141 -0
  158. package/icon-set/mdi-v6.js +6 -1
  159. package/icon-set/mdi-v6.mjs +141 -0
  160. package/icon-set/svg-bootstrap-icons.js +10 -11
  161. package/icon-set/svg-bootstrap-icons.mjs +210 -0
  162. package/icon-set/svg-eva-icons.js +9 -10
  163. package/icon-set/svg-eva-icons.mjs +233 -0
  164. package/icon-set/svg-fontawesome-v6.js +198 -0
  165. package/icon-set/{svg-fontawesome-v5.js → svg-fontawesome-v6.mjs} +42 -42
  166. package/icon-set/svg-ionicons-v4.js +9 -10
  167. package/icon-set/svg-ionicons-v4.mjs +234 -0
  168. package/icon-set/svg-ionicons-v5.js +7 -7
  169. package/icon-set/svg-ionicons-v5.mjs +225 -0
  170. package/icon-set/svg-ionicons-v6.js +7 -7
  171. package/icon-set/svg-ionicons-v6.mjs +225 -0
  172. package/icon-set/svg-line-awesome.js +5 -5
  173. package/icon-set/svg-line-awesome.mjs +198 -0
  174. package/icon-set/svg-material-icons-outlined.js +5 -5
  175. package/icon-set/svg-material-icons-outlined.mjs +203 -0
  176. package/icon-set/svg-material-icons-round.js +5 -5
  177. package/icon-set/svg-material-icons-round.mjs +203 -0
  178. package/icon-set/svg-material-icons-sharp.js +5 -5
  179. package/icon-set/svg-material-icons-sharp.mjs +203 -0
  180. package/icon-set/svg-material-icons.js +5 -5
  181. package/icon-set/svg-material-icons.mjs +203 -0
  182. package/icon-set/svg-mdi-v6.js +5 -5
  183. package/icon-set/{svg-mdi-v5.js → svg-mdi-v6.mjs} +6 -6
  184. package/icon-set/svg-themify.js +9 -10
  185. package/icon-set/svg-themify.mjs +231 -0
  186. package/icon-set/themify.js +10 -5
  187. package/icon-set/themify.mjs +169 -0
  188. package/lang/ar.js +6 -1
  189. package/lang/ar.mjs +96 -0
  190. package/lang/az-Latn.js +6 -1
  191. package/lang/az-Latn.mjs +91 -0
  192. package/lang/bg.js +6 -1
  193. package/lang/bg.mjs +91 -0
  194. package/lang/bn.js +6 -1
  195. package/lang/bn.mjs +91 -0
  196. package/lang/ca.js +6 -1
  197. package/lang/ca.mjs +91 -0
  198. package/lang/cs.js +6 -1
  199. package/lang/cs.mjs +102 -0
  200. package/lang/da.js +6 -1
  201. package/lang/da.mjs +91 -0
  202. package/lang/de.js +6 -1
  203. package/lang/de.mjs +91 -0
  204. package/lang/el.js +6 -1
  205. package/lang/el.mjs +91 -0
  206. package/lang/en-GB.js +6 -1
  207. package/lang/en-GB.mjs +91 -0
  208. package/lang/en-US.js +6 -1
  209. package/lang/en-US.mjs +91 -0
  210. package/lang/eo.js +6 -1
  211. package/lang/eo.mjs +91 -0
  212. package/lang/es.js +6 -1
  213. package/lang/es.mjs +91 -0
  214. package/lang/et.js +6 -1
  215. package/lang/et.mjs +91 -0
  216. package/lang/eu.js +96 -0
  217. package/lang/eu.mjs +91 -0
  218. package/lang/fa-IR.js +6 -1
  219. package/lang/fa-IR.mjs +92 -0
  220. package/lang/fa.js +6 -1
  221. package/lang/fa.mjs +92 -0
  222. package/lang/fi.js +6 -1
  223. package/lang/fi.mjs +92 -0
  224. package/lang/fr.js +6 -1
  225. package/lang/fr.mjs +94 -0
  226. package/lang/gn.js +6 -1
  227. package/lang/gn.mjs +91 -0
  228. package/lang/he.js +6 -1
  229. package/lang/he.mjs +92 -0
  230. package/lang/hr.js +6 -1
  231. package/lang/hr.mjs +91 -0
  232. package/lang/hu.js +6 -1
  233. package/lang/hu.mjs +91 -0
  234. package/lang/id.js +6 -1
  235. package/lang/id.mjs +91 -0
  236. package/lang/index.json +8 -0
  237. package/lang/is.js +6 -1
  238. package/lang/is.mjs +91 -0
  239. package/lang/it.js +6 -1
  240. package/lang/it.mjs +91 -0
  241. package/lang/ja.js +6 -1
  242. package/lang/ja.mjs +90 -0
  243. package/lang/km.js +6 -1
  244. package/lang/km.mjs +91 -0
  245. package/lang/ko-KR.js +6 -1
  246. package/lang/ko-KR.mjs +91 -0
  247. package/lang/kur-CKB.js +6 -1
  248. package/lang/kur-CKB.mjs +101 -0
  249. package/lang/kz.js +100 -0
  250. package/lang/kz.mjs +95 -0
  251. package/lang/lt.js +6 -1
  252. package/lang/lt.mjs +103 -0
  253. package/lang/lu.js +6 -1
  254. package/lang/lu.mjs +91 -0
  255. package/lang/lv.js +6 -1
  256. package/lang/lv.mjs +91 -0
  257. package/lang/ml.js +6 -1
  258. package/lang/ml.mjs +95 -0
  259. package/lang/ms.js +6 -1
  260. package/lang/ms.mjs +91 -0
  261. package/lang/my.js +6 -1
  262. package/lang/my.mjs +90 -0
  263. package/lang/nb-NO.js +6 -1
  264. package/lang/nb-NO.mjs +92 -0
  265. package/lang/nl.js +6 -1
  266. package/lang/nl.mjs +91 -0
  267. package/lang/pl.js +6 -1
  268. package/lang/pl.mjs +91 -0
  269. package/lang/pt-BR.js +6 -1
  270. package/lang/pt-BR.mjs +91 -0
  271. package/lang/pt.js +6 -1
  272. package/lang/pt.mjs +91 -0
  273. package/lang/ro.js +6 -1
  274. package/lang/ro.mjs +91 -0
  275. package/lang/ru.js +6 -1
  276. package/lang/ru.mjs +95 -0
  277. package/lang/sk.js +6 -1
  278. package/lang/sk.mjs +91 -0
  279. package/lang/sl.js +6 -1
  280. package/lang/sl.mjs +91 -0
  281. package/lang/sr-CYR.js +6 -1
  282. package/lang/sr-CYR.mjs +91 -0
  283. package/lang/sr.js +6 -1
  284. package/lang/sr.mjs +91 -0
  285. package/lang/sv.js +6 -1
  286. package/lang/sv.mjs +91 -0
  287. package/lang/ta.js +6 -1
  288. package/lang/ta.mjs +91 -0
  289. package/lang/th.js +6 -1
  290. package/lang/th.mjs +91 -0
  291. package/lang/tr.js +6 -1
  292. package/lang/tr.mjs +87 -0
  293. package/lang/ug.js +55 -51
  294. package/lang/ug.mjs +91 -0
  295. package/lang/uk.js +7 -2
  296. package/lang/uk.mjs +95 -0
  297. package/lang/vi.js +6 -1
  298. package/lang/vi.mjs +91 -0
  299. package/lang/zh-CN.js +6 -1
  300. package/lang/zh-CN.mjs +90 -0
  301. package/lang/zh-TW.js +6 -1
  302. package/lang/zh-TW.mjs +90 -0
  303. package/package.json +1 -1
  304. package/src/api.extends.json +1 -1
  305. package/src/components/btn/QBtn.js +16 -14
  306. package/src/components/btn/use-btn.js +7 -7
  307. package/src/components/date/QDate.js +20 -19
  308. package/src/components/date/use-datetime.js +3 -1
  309. package/src/components/dialog/QDialog.js +11 -11
  310. package/src/components/dialog-bottom-sheet/BottomSheet.js +11 -11
  311. package/src/components/dialog-plugin/DialogPlugin.js +9 -8
  312. package/src/components/editor/QEditor.js +10 -10
  313. package/src/components/editor/editor-utils.js +2 -2
  314. package/src/components/file/QFile.js +2 -1
  315. package/src/components/form/QForm.json +3 -2
  316. package/src/components/icon/QIcon.js +6 -2
  317. package/src/components/icon/QIcon.json +1 -3
  318. package/src/components/infinite-scroll/QInfiniteScroll.js +3 -1
  319. package/src/components/inner-loading/QInnerLoading.js +7 -7
  320. package/src/components/input/QInput.js +4 -1
  321. package/src/components/knob/QKnob.js +5 -2
  322. package/src/components/knob/QKnob.json +6 -0
  323. package/src/components/linear-progress/QLinearProgress.sass +1 -0
  324. package/src/components/menu/QMenu.js +13 -13
  325. package/src/components/page-scroller/QPageScroller.js +4 -4
  326. package/src/components/pull-to-refresh/QPullToRefresh.js +5 -5
  327. package/src/components/select/QSelect.js +12 -6
  328. package/src/components/select/QSelect.json +4 -7
  329. package/src/components/slide-transition/QSlideTransition.js +4 -4
  330. package/src/components/slider/use-slider.js +4 -4
  331. package/src/components/stepper/QStep.js +6 -6
  332. package/src/components/stepper/QStep.json +3 -0
  333. package/src/components/stepper/QStepper.json +3 -0
  334. package/src/components/stepper/QStepper.sass +1 -0
  335. package/src/components/stepper/StepHeader.js +23 -8
  336. package/src/components/table/table-column-selection.js +6 -6
  337. package/src/components/table/table-sort.js +2 -2
  338. package/src/components/tabs/QTabs.js +4 -4
  339. package/src/components/time/QTime.js +5 -5
  340. package/src/components/tooltip/QTooltip.js +12 -12
  341. package/src/components/uploader/uploader-core.js +11 -10
  342. package/src/components/virtual-scroll/QVirtualScroll.js +3 -3
  343. package/src/components/virtual-scroll/use-virtual-scroll.js +20 -20
  344. package/src/composables/private/use-field.js +25 -17
  345. package/src/composables/private/use-file-dom-props.js +5 -5
  346. package/src/composables/private/use-file.js +15 -12
  347. package/src/composables/private/use-router-link.js +2 -2
  348. package/src/directives/Morph.js +12 -3
  349. package/src/icon-set.js +2 -1
  350. package/src/install-quasar.js +37 -36
  351. package/src/lang.js +2 -1
  352. package/src/plugins/AddressbarColor.js +7 -7
  353. package/src/plugins/Cookies.js +5 -1
  354. package/src/plugins/Dialog.json +3 -2
  355. package/src/plugins/Loading.js +3 -2
  356. package/src/plugins/LoadingBar.js +12 -5
  357. package/src/plugins/Notify.js +11 -4
  358. package/src/plugins/Notify.json +102 -2
  359. package/src/utils/create-meta-mixin.js +4 -4
  360. package/src/utils/create-uploader-component.js +2 -1
  361. package/src/utils/event.js +3 -3
  362. package/src/utils/extend.js +6 -34
  363. package/src/utils/morph.js +19 -17
  364. package/src/utils/private/is.js +3 -14
  365. package/src/utils/private/noop-ssr-directive-transform.js +1 -1
  366. package/src/utils/private/web-storage.js +3 -2
  367. package/wrappers/index.js +33 -5
  368. package/wrappers/index.mjs +63 -0
  369. package/dist/icon-set/svg-fontawesome-v5.umd.prod.js +0 -6
  370. package/dist/icon-set/svg-mdi-v4.umd.prod.js +0 -6
  371. package/dist/icon-set/svg-mdi-v5.umd.prod.js +0 -6
  372. package/dist/ssr-directives/Morph.js +0 -55
  373. package/dist/ssr-directives/index.js +0 -14
  374. package/src/directives/Morph.ssr.js +0 -45
@@ -349,19 +349,19 @@ export default createComponent({
349
349
  () => (
350
350
  showing.value === true
351
351
  ? h('div', {
352
- ...attrs,
353
- ref: innerRef,
354
- tabindex: -1,
355
- class: [
356
- 'q-menu q-position-engine scroll' + menuClass.value,
357
- attrs.class
358
- ],
359
- style: [
360
- attrs.style,
361
- transitionStyle.value
362
- ],
363
- ...onEvents.value
364
- }, hSlot(slots.default))
352
+ ...attrs,
353
+ ref: innerRef,
354
+ tabindex: -1,
355
+ class: [
356
+ 'q-menu q-position-engine scroll' + menuClass.value,
357
+ attrs.class
358
+ ],
359
+ style: [
360
+ attrs.style,
361
+ transitionStyle.value
362
+ ],
363
+ ...onEvents.value
364
+ }, hSlot(slots.default))
365
365
  : null
366
366
  )
367
367
  )
@@ -98,10 +98,10 @@ export default createComponent({
98
98
  function getContent () {
99
99
  return showing.value === true
100
100
  ? h('div', {
101
- ref: rootRef,
102
- class: 'q-page-scroller',
103
- onClick
104
- }, getStickyContent(slots))
101
+ ref: rootRef,
102
+ class: 'q-page-scroller',
103
+ onClick
104
+ }, getStickyContent(slots))
105
105
  : null
106
106
  }
107
107
 
@@ -76,7 +76,7 @@ export default createComponent({
76
76
  }
77
77
 
78
78
  if (event.isFirst === true) {
79
- if (getVerticalScrollPosition(localScrollTarget) !== 0 || event.direction !== "down") {
79
+ if (getVerticalScrollPosition(localScrollTarget) !== 0 || event.direction !== 'down') {
80
80
  if (pulling.value === true) {
81
81
  pulling.value = false
82
82
  state.value = 'pull'
@@ -189,10 +189,10 @@ export default createComponent({
189
189
  }, [
190
190
  state.value !== 'refreshing'
191
191
  ? h(QIcon, {
192
- name: props.icon || $q.iconSet.pullToRefresh.icon,
193
- color: props.color,
194
- size: '32px'
195
- })
192
+ name: props.icon || $q.iconSet.pullToRefresh.icon,
193
+ color: props.color,
194
+ size: '32px'
195
+ })
196
196
  : h(QSpinner, {
197
197
  size: '24px',
198
198
  color: props.color
@@ -602,7 +602,7 @@ export default createComponent({
602
602
 
603
603
  return typeof val === 'function'
604
604
  ? val
605
- : opt => (Object(opt) === opt && val in opt ? opt[ val ] : opt)
605
+ : opt => (opt !== null && typeof opt === 'object' && val in opt ? opt[ val ] : opt)
606
606
  }
607
607
 
608
608
  function isOptionSelected (opt) {
@@ -975,6 +975,8 @@ export default createComponent({
975
975
  }
976
976
 
977
977
  function getInput (fromDialog, isTarget) {
978
+ const attrs = isTarget === true ? { ...comboboxAttrs.value, ...state.splitAttrs.attributes.value } : void 0
979
+
978
980
  const data = {
979
981
  ref: isTarget === true ? targetRef : void 0,
980
982
  key: 'i_t',
@@ -983,8 +985,7 @@ export default createComponent({
983
985
  value: inputValue.value !== void 0 ? inputValue.value : '',
984
986
  // required for Android in order to show ENTER key when in form
985
987
  type: 'search',
986
- ...comboboxAttrs.value,
987
- ...state.splitAttrs.attributes.value,
988
+ ...attrs,
988
989
  id: isTarget === true ? state.targetUid.value : void 0,
989
990
  maxlength: props.maxlength,
990
991
  autocomplete: props.autocomplete,
@@ -1464,13 +1465,16 @@ export default createComponent({
1464
1465
  }
1465
1466
  // there can be only one (when dialog is opened the control in dialog should be target)
1466
1467
  else if (state.editable.value === true) {
1468
+ const attrs = isTarget === true ? comboboxAttrs.value : void 0
1469
+
1467
1470
  child.push(
1468
- h('div', {
1471
+ h('input', {
1469
1472
  ref: isTarget === true ? targetRef : void 0,
1470
1473
  key: 'd_t',
1471
1474
  class: 'q-select__focus-target',
1472
1475
  id: isTarget === true ? state.targetUid.value : void 0,
1473
- ...comboboxAttrs.value,
1476
+ readonly: true,
1477
+ ...attrs,
1474
1478
  onKeydown: onTargetKeydown,
1475
1479
  onKeyup: onTargetKeyup,
1476
1480
  onKeypress: onTargetKeypress
@@ -1500,9 +1504,11 @@ export default createComponent({
1500
1504
  )
1501
1505
  }
1502
1506
 
1507
+ const attrs = props.useInput === true || isTarget !== true ? void 0 : state.splitAttrs.attributes.value
1508
+
1503
1509
  return h('div', {
1504
1510
  class: 'q-field__native row items-center',
1505
- ...state.splitAttrs.attributes.value
1511
+ ...attrs
1506
1512
  }, child)
1507
1513
  },
1508
1514
 
@@ -716,13 +716,10 @@
716
716
 
717
717
  "getOptionIndex": {
718
718
  "desc": "Gets current focused option index from menu; It's -1 if no option is focused",
719
- "params": {
720
- "index": {
721
- "type": "Number",
722
- "required": true,
723
- "desc": "Index of option from menu; -1 if no option is focused",
724
- "examples": [ 10 ]
725
- }
719
+ "returns": {
720
+ "type": "Number",
721
+ "desc": "Index of option from menu; It's -1 if no option is focused",
722
+ "examples": [ -1, 0, 10 ]
726
723
  },
727
724
  "addedIn": "v2.5.4"
728
725
  },
@@ -65,8 +65,8 @@ export default createComponent({
65
65
 
66
66
  timer = setTimeout(() => {
67
67
  el.style.height = `${ el.scrollHeight }px`
68
- animListener = ev => {
69
- if (Object(ev) !== ev || ev.target === el) {
68
+ animListener = evt => {
69
+ if (Object(evt) !== evt || evt.target === el) {
70
70
  end(el, 'show')
71
71
  }
72
72
  }
@@ -91,8 +91,8 @@ export default createComponent({
91
91
 
92
92
  timer = setTimeout(() => {
93
93
  el.style.height = 0
94
- animListener = ev => {
95
- if (Object(ev) !== ev || ev.target === el) {
94
+ animListener = evt => {
95
+ if (Object(evt) !== evt || evt.target === el) {
96
96
  end(el, 'hide')
97
97
  }
98
98
  }
@@ -7,7 +7,7 @@ import { useFormProps, useFormInject } from '../../composables/private/use-form.
7
7
 
8
8
  import { between } from '../../utils/format.js'
9
9
  import { position } from '../../utils/event.js'
10
- import { isNumber } from '../../utils/private/is.js'
10
+ import { isNumber, isObject } from '../../utils/private/is.js'
11
11
  import { hDir } from '../../utils/private/render.js'
12
12
 
13
13
  const markerPrefixClass = 'q-slider__marker-labels'
@@ -340,7 +340,7 @@ export default function ({ updateValue, updatePosition, getDragging, formAttrs }
340
340
  if (typeof def === 'function') {
341
341
  return markerTicks.value.map(value => {
342
342
  const item = def(value)
343
- return Object(item) === item ? { ...item, value } : { value, label: item }
343
+ return isObject(item) === true ? { ...item, value } : { value, label: item }
344
344
  })
345
345
  }
346
346
 
@@ -348,14 +348,14 @@ export default function ({ updateValue, updatePosition, getDragging, formAttrs }
348
348
 
349
349
  if (Array.isArray(def) === true) {
350
350
  return def
351
- .map(item => (Object(item) === item ? item : { value: item }))
351
+ .map(item => (isObject(item) === true ? item : { value: item }))
352
352
  .filter(filterFn)
353
353
  }
354
354
 
355
355
  return Object.keys(def).map(key => {
356
356
  const item = def[ key ]
357
357
  const value = Number(key)
358
- return Object(item) === item ? { ...item, value } : { value, label: item }
358
+ return isObject(item) === true ? { ...item, value } : { value, label: item }
359
359
  }).filter(filterFn)
360
360
  }
361
361
 
@@ -75,14 +75,14 @@ export default createComponent({
75
75
  || $stepper.value.vertical !== true
76
76
  ? {}
77
77
  : {
78
- onScroll (e) {
79
- const { target } = e
80
- if (target.scrollTop > 0) {
81
- target.scrollTop = 0
78
+ onScroll (e) {
79
+ const { target } = e
80
+ if (target.scrollTop > 0) {
81
+ target.scrollTop = 0
82
+ }
83
+ attrs.onScroll !== void 0 && attrs.onScroll(e)
82
84
  }
83
- attrs.onScroll !== void 0 && attrs.onScroll(e)
84
85
  }
85
- }
86
86
  ))
87
87
 
88
88
  const contentKey = computed(() => (
@@ -45,6 +45,7 @@
45
45
 
46
46
  "done-icon": {
47
47
  "extends": "icon",
48
+ "desc": "Icon name following Quasar convention; If 'none' (String) is used as value, then it will defer to prefix or the regular icon for this state; Make sure you have the icon library installed unless you are using 'img:' prefix",
48
49
  "category": "header"
49
50
  },
50
51
 
@@ -55,6 +56,7 @@
55
56
 
56
57
  "active-icon": {
57
58
  "extends": "icon",
59
+ "desc": "Icon name following Quasar convention; If 'none' (String) is used as value, then it will defer to prefix or the regular icon for this state; Make sure you have the icon library installed unless you are using 'img:' prefix",
58
60
  "category": "header"
59
61
  },
60
62
 
@@ -65,6 +67,7 @@
65
67
 
66
68
  "error-icon": {
67
69
  "extends": "icon",
70
+ "desc": "Icon name following Quasar convention; If 'none' (String) is used as value, then it will defer to prefix or the regular icon for this state; Make sure you have the icon library installed unless you are using 'img:' prefix",
68
71
  "category": "header"
69
72
  },
70
73
 
@@ -54,6 +54,7 @@
54
54
 
55
55
  "done-icon": {
56
56
  "extends": "icon",
57
+ "desc": "Icon name following Quasar convention; If 'none' (String) is used as value, then it will defer to prefix or the regular icon for this state; Make sure you have the icon library installed unless you are using 'img:' prefix",
57
58
  "category": "header"
58
59
  },
59
60
 
@@ -64,6 +65,7 @@
64
65
 
65
66
  "active-icon": {
66
67
  "extends": "icon",
68
+ "desc": "Icon name following Quasar convention; If 'none' (String) is used as value, then it will defer to prefix or the regular icon for this state; Make sure you have the icon library installed unless you are using 'img:' prefix",
67
69
  "category": "header"
68
70
  },
69
71
 
@@ -74,6 +76,7 @@
74
76
 
75
77
  "error-icon": {
76
78
  "extends": "icon",
79
+ "desc": "Icon name following Quasar convention; If 'none' (String) is used as value, then it will defer to prefix or the regular icon for this state; Make sure you have the icon library installed unless you are using 'img:' prefix",
77
80
  "category": "header"
78
81
  },
79
82
 
@@ -52,6 +52,7 @@
52
52
  &--error
53
53
  color: var(--q-negative)
54
54
 
55
+ &--error-with-icon
55
56
  .q-stepper__dot
56
57
  background: transparent !important
57
58
  span
@@ -47,23 +47,36 @@ export default createComponent({
47
47
 
48
48
  const hasPrefix = computed(() => {
49
49
  return props.step.prefix
50
- && isActive.value === false
51
- && isError.value === false
52
- && isDone.value === false
50
+ && (isActive.value === false || props.stepper.activeIcon === 'none')
51
+ && (isError.value === false || props.stepper.errorIcon === 'none')
52
+ && (isDone.value === false || props.stepper.doneIcon === 'none')
53
53
  })
54
54
 
55
55
  const icon = computed(() => {
56
+ const defaultIcon = props.step.icon || props.stepper.inactiveIcon
57
+
56
58
  if (isActive.value === true) {
57
- return props.step.activeIcon || props.stepper.activeIcon || $q.iconSet.stepper.active
59
+ const icon = props.step.activeIcon || props.stepper.activeIcon
60
+ return icon === 'none'
61
+ ? defaultIcon
62
+ : icon || $q.iconSet.stepper.active
58
63
  }
64
+
59
65
  if (isError.value === true) {
60
- return props.step.errorIcon || props.stepper.errorIcon || $q.iconSet.stepper.error
66
+ const icon = props.step.errorIcon || props.stepper.errorIcon
67
+ return icon === 'none'
68
+ ? defaultIcon
69
+ : icon || $q.iconSet.stepper.error
61
70
  }
71
+
62
72
  if (isDisable.value === false && isDone.value === true) {
63
- return props.step.doneIcon || props.stepper.doneIcon || $q.iconSet.stepper.done
73
+ const icon = props.step.doneIcon || props.stepper.doneIcon
74
+ return icon === 'none'
75
+ ? defaultIcon
76
+ : icon || $q.iconSet.stepper.done
64
77
  }
65
78
 
66
- return props.step.icon || props.stepper.inactiveIcon
79
+ return defaultIcon
67
80
  })
68
81
 
69
82
  const color = computed(() => {
@@ -90,7 +103,9 @@ export default createComponent({
90
103
  const classes = computed(() => {
91
104
  return 'q-stepper__tab col-grow flex items-center no-wrap relative-position'
92
105
  + (color.value !== void 0 ? ` text-${ color.value }` : '')
93
- + (isError.value === true ? ' q-stepper__tab--error' : '')
106
+ + (isError.value === true
107
+ ? ' q-stepper__tab--error q-stepper__tab--error-with-' + (hasPrefix.value === true ? 'prefix' : 'icon')
108
+ : '')
94
109
  + (isActive.value === true ? ' q-stepper__tab--active' : '')
95
110
  + (isDone.value === true ? ' q-stepper__tab--done' : '')
96
111
  + (headerNav.value === true ? ' q-stepper__tab--navigation q-focusable q-hoverable' : '')
@@ -17,12 +17,12 @@ export function useTableColumnSelection (props, computedPagination, hasSelection
17
17
 
18
18
  return row !== void 0
19
19
  ? Object.keys(row).map(name => ({
20
- name,
21
- label: name.toUpperCase(),
22
- field: name,
23
- align: isNumber(row[ name ]) ? 'right' : 'left',
24
- sortable: true
25
- }))
20
+ name,
21
+ label: name.toUpperCase(),
22
+ field: name,
23
+ align: isNumber(row[ name ]) ? 'right' : 'left',
24
+ sortable: true
25
+ }))
26
26
  : []
27
27
  })
28
28
 
@@ -1,7 +1,7 @@
1
1
  import { computed } from 'vue'
2
2
 
3
3
  import { sortDate } from '../../utils/private/sort.js'
4
- import { isNumber, isDate } from '../../utils/private/is.js'
4
+ import { isNumber, isDate, isObject } from '../../utils/private/is.js'
5
5
 
6
6
  export const useTableSortProps = {
7
7
  sortMethod: Function,
@@ -73,7 +73,7 @@ export function useTableSort (props, computedPagination, colList, setPagination)
73
73
  function sort (col /* String(col name) or Object(col definition) */) {
74
74
  let sortOrder = props.columnSortOrder
75
75
 
76
- if (col === Object(col)) {
76
+ if (isObject(col) === true) {
77
77
  if (col.sortOrder) {
78
78
  sortOrder = col.sortOrder
79
79
  }
@@ -423,11 +423,11 @@ export default createComponent({
423
423
  let wasItActive = wasActive === true
424
424
  ? emptyFn
425
425
  : tab => {
426
- if (model === tab.name.value) {
427
- wasActive = true
428
- wasItActive = emptyFn
429
- }
426
+ if (model === tab.name.value) {
427
+ wasActive = true
428
+ wasItActive = emptyFn
430
429
  }
430
+ }
431
431
 
432
432
  const tabList = getRouteList()
433
433
 
@@ -86,12 +86,14 @@ export default createComponent({
86
86
  const mask = computed(() => getMask())
87
87
  const locale = computed(() => getLocale())
88
88
 
89
+ const defaultDateModel = computed(() => getDefaultDateModel())
90
+
89
91
  const model = __splitDate(
90
92
  props.modelValue,
91
- getMask(),
92
- getLocale(),
93
+ mask.value, // initial mask
94
+ locale.value, // initial locale
93
95
  props.calendar,
94
- getDefaultDateModel()
96
+ defaultDateModel.value
95
97
  )
96
98
 
97
99
  const view = ref(getViewByModel(model))
@@ -131,8 +133,6 @@ export default createComponent({
131
133
  }
132
134
  })
133
135
 
134
- const defaultDateModel = computed(() => getDefaultDateModel())
135
-
136
136
  const computedFormat24h = computed(() => (
137
137
  props.format24h !== null
138
138
  ? props.format24h
@@ -280,18 +280,18 @@ export default createComponent({
280
280
  function getTooltipContent () {
281
281
  return showing.value === true
282
282
  ? h('div', {
283
- ...attrs,
284
- ref: innerRef,
285
- class: [
286
- 'q-tooltip q-tooltip--style q-position-engine no-pointer-events',
287
- attrs.class
288
- ],
289
- style: [
290
- attrs.style,
291
- transitionStyle.value
292
- ],
293
- role: 'complementary'
294
- }, hSlot(slots.default))
283
+ ...attrs,
284
+ ref: innerRef,
285
+ class: [
286
+ 'q-tooltip q-tooltip--style q-position-engine no-pointer-events',
287
+ attrs.class
288
+ ],
289
+ style: [
290
+ attrs.style,
291
+ transitionStyle.value
292
+ ],
293
+ role: 'complementary'
294
+ }, hSlot(slots.default))
295
295
  : null
296
296
  }
297
297
 
@@ -108,6 +108,7 @@ export function getRenderer (getPlugin) {
108
108
  pickFiles,
109
109
  addFiles,
110
110
  onDragover,
111
+ onDragleave,
111
112
  processFiles,
112
113
  getDndNode,
113
114
  maxFilesNumber,
@@ -387,10 +388,10 @@ export function getRenderer (getPlugin) {
387
388
  }, [
388
389
  file.__status === 'failed'
389
390
  ? h(QIcon, {
390
- class: 'q-uploader__file-status',
391
- name: $q.iconSet.type.negative,
392
- color: 'negative'
393
- })
391
+ class: 'q-uploader__file-status',
392
+ name: $q.iconSet.type.negative,
393
+ color: 'negative'
394
+ })
394
395
  : null,
395
396
 
396
397
  h('div', { class: 'q-uploader__file-header-content col' }, [
@@ -404,11 +405,11 @@ export function getRenderer (getPlugin) {
404
405
 
405
406
  file.__status === 'uploading'
406
407
  ? h(QCircularProgress, {
407
- value: file.__progress,
408
- min: 0,
409
- max: 1,
410
- indeterminate: file.__progress === 0
411
- })
408
+ value: file.__progress,
409
+ min: 0,
410
+ max: 1,
411
+ indeterminate: file.__progress === 0
412
+ })
412
413
  : h(QBtn, {
413
414
  round: true,
414
415
  dense: true,
@@ -477,7 +478,7 @@ export function getRenderer (getPlugin) {
477
478
  const data = { ref: rootRef, class: classes.value }
478
479
 
479
480
  if (canAddFiles.value === true) {
480
- data.onDragover = onDragover
481
+ Object.assign(data, { onDragover, onDragleave })
481
482
  }
482
483
 
483
484
  return h('div', data, children)
@@ -148,9 +148,9 @@ export default createComponent({
148
148
 
149
149
  return props.type === '__qtable'
150
150
  ? getTableMiddle(
151
- { ref: rootRef, class: 'q-table__middle ' + classes.value },
152
- __getVirtualChildren()
153
- )
151
+ { ref: rootRef, class: 'q-table__middle ' + classes.value },
152
+ __getVirtualChildren()
153
+ )
154
154
  : h(comps[ props.type ], {
155
155
  ...attrs,
156
156
  ref: rootRef,
@@ -622,17 +622,17 @@ export function useVirtualScroll ({
622
622
  return [
623
623
  tag === 'tbody'
624
624
  ? h(tag, {
625
- class: 'q-virtual-scroll__padding',
626
- key: 'before',
627
- ref: beforeRef
628
- }, [
629
- h('tr', [
630
- h('td', {
631
- style: { [ paddingSize ]: `${ virtualScrollPaddingBefore.value }px`, ...style },
632
- colspan: colspanAttr.value
633
- })
634
- ])
625
+ class: 'q-virtual-scroll__padding',
626
+ key: 'before',
627
+ ref: beforeRef
628
+ }, [
629
+ h('tr', [
630
+ h('td', {
631
+ style: { [ paddingSize ]: `${ virtualScrollPaddingBefore.value }px`, ...style },
632
+ colspan: colspanAttr.value
633
+ })
635
634
  ])
635
+ ])
636
636
  : h(tag, {
637
637
  class: 'q-virtual-scroll__padding',
638
638
  key: 'before',
@@ -650,17 +650,17 @@ export function useVirtualScroll ({
650
650
 
651
651
  tag === 'tbody'
652
652
  ? h(tag, {
653
- class: 'q-virtual-scroll__padding',
654
- key: 'after',
655
- ref: afterRef
656
- }, [
657
- h('tr', [
658
- h('td', {
659
- style: { [ paddingSize ]: `${ virtualScrollPaddingAfter.value }px`, ...style },
660
- colspan: colspanAttr.value
661
- })
662
- ])
653
+ class: 'q-virtual-scroll__padding',
654
+ key: 'after',
655
+ ref: afterRef
656
+ }, [
657
+ h('tr', [
658
+ h('td', {
659
+ style: { [ paddingSize ]: `${ virtualScrollPaddingAfter.value }px`, ...style },
660
+ colspan: colspanAttr.value
661
+ })
663
662
  ])
663
+ ])
664
664
  : h(tag, {
665
665
  class: 'q-virtual-scroll__padding',
666
666
  key: 'after',