quasar 2.6.3 → 2.6.6

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 (143) hide show
  1. package/dist/api/Notify.json +1 -1
  2. package/dist/api/QBreadcrumbsEl.json +1 -1
  3. package/dist/api/QBtn.json +1 -1
  4. package/dist/api/QBtnDropdown.json +1 -1
  5. package/dist/api/QDialog.json +12 -1
  6. package/dist/api/QExpansionItem.json +1 -1
  7. package/dist/api/QImg.json +23 -0
  8. package/dist/api/QItem.json +1 -1
  9. package/dist/api/QRouteTab.json +1 -1
  10. package/dist/api/QVideo.json +43 -0
  11. package/dist/icon-set/bootstrap-icons.umd.prod.js +1 -1
  12. package/dist/icon-set/eva-icons.umd.prod.js +1 -1
  13. package/dist/icon-set/fontawesome-v5-pro.umd.prod.js +1 -1
  14. package/dist/icon-set/fontawesome-v5.umd.prod.js +1 -1
  15. package/dist/icon-set/fontawesome-v6-pro.umd.prod.js +1 -1
  16. package/dist/icon-set/fontawesome-v6.umd.prod.js +1 -1
  17. package/dist/icon-set/ionicons-v4.umd.prod.js +1 -1
  18. package/dist/icon-set/line-awesome.umd.prod.js +1 -1
  19. package/dist/icon-set/material-icons-outlined.umd.prod.js +1 -1
  20. package/dist/icon-set/material-icons-round.umd.prod.js +1 -1
  21. package/dist/icon-set/material-icons-sharp.umd.prod.js +1 -1
  22. package/dist/icon-set/material-icons.umd.prod.js +1 -1
  23. package/dist/icon-set/mdi-v3.umd.prod.js +1 -1
  24. package/dist/icon-set/mdi-v4.umd.prod.js +1 -1
  25. package/dist/icon-set/mdi-v5.umd.prod.js +1 -1
  26. package/dist/icon-set/mdi-v6.umd.prod.js +1 -1
  27. package/dist/icon-set/svg-bootstrap-icons.umd.prod.js +1 -1
  28. package/dist/icon-set/svg-eva-icons.umd.prod.js +1 -1
  29. package/dist/icon-set/svg-fontawesome-v5.umd.prod.js +1 -1
  30. package/dist/icon-set/svg-fontawesome-v6.umd.prod.js +1 -1
  31. package/dist/icon-set/svg-ionicons-v4.umd.prod.js +1 -1
  32. package/dist/icon-set/svg-ionicons-v5.umd.prod.js +1 -1
  33. package/dist/icon-set/svg-ionicons-v6.umd.prod.js +1 -1
  34. package/dist/icon-set/svg-line-awesome.umd.prod.js +1 -1
  35. package/dist/icon-set/svg-material-icons-outlined.umd.prod.js +1 -1
  36. package/dist/icon-set/svg-material-icons-round.umd.prod.js +1 -1
  37. package/dist/icon-set/svg-material-icons-sharp.umd.prod.js +1 -1
  38. package/dist/icon-set/svg-material-icons.umd.prod.js +1 -1
  39. package/dist/icon-set/svg-mdi-v6.umd.prod.js +1 -1
  40. package/dist/icon-set/svg-themify.umd.prod.js +1 -1
  41. package/dist/icon-set/themify.umd.prod.js +1 -1
  42. package/dist/lang/ar-TN.umd.prod.js +1 -1
  43. package/dist/lang/ar.umd.prod.js +1 -1
  44. package/dist/lang/az-Latn.umd.prod.js +1 -1
  45. package/dist/lang/bg.umd.prod.js +1 -1
  46. package/dist/lang/bn.umd.prod.js +1 -1
  47. package/dist/lang/ca.umd.prod.js +1 -1
  48. package/dist/lang/cs.umd.prod.js +1 -1
  49. package/dist/lang/da.umd.prod.js +1 -1
  50. package/dist/lang/de.umd.prod.js +1 -1
  51. package/dist/lang/el.umd.prod.js +1 -1
  52. package/dist/lang/en-GB.umd.prod.js +1 -1
  53. package/dist/lang/en-US.umd.prod.js +1 -1
  54. package/dist/lang/eo.umd.prod.js +1 -1
  55. package/dist/lang/es.umd.prod.js +1 -1
  56. package/dist/lang/et.umd.prod.js +1 -1
  57. package/dist/lang/eu.umd.prod.js +1 -1
  58. package/dist/lang/fa-IR.umd.prod.js +1 -1
  59. package/dist/lang/fa.umd.prod.js +1 -1
  60. package/dist/lang/fi.umd.prod.js +1 -1
  61. package/dist/lang/fr.umd.prod.js +1 -1
  62. package/dist/lang/gn.umd.prod.js +1 -1
  63. package/dist/lang/he.umd.prod.js +1 -1
  64. package/dist/lang/hr.umd.prod.js +1 -1
  65. package/dist/lang/hu.umd.prod.js +1 -1
  66. package/dist/lang/id.umd.prod.js +1 -1
  67. package/dist/lang/is.umd.prod.js +1 -1
  68. package/dist/lang/it.umd.prod.js +1 -1
  69. package/dist/lang/ja.umd.prod.js +1 -1
  70. package/dist/lang/km.umd.prod.js +1 -1
  71. package/dist/lang/ko-KR.umd.prod.js +1 -1
  72. package/dist/lang/kur-CKB.umd.prod.js +1 -1
  73. package/dist/lang/kz.umd.prod.js +1 -1
  74. package/dist/lang/lt.umd.prod.js +1 -1
  75. package/dist/lang/lu.umd.prod.js +1 -1
  76. package/dist/lang/lv.umd.prod.js +1 -1
  77. package/dist/lang/ml.umd.prod.js +1 -1
  78. package/dist/lang/ms.umd.prod.js +1 -1
  79. package/dist/lang/my.umd.prod.js +1 -1
  80. package/dist/lang/nb-NO.umd.prod.js +1 -1
  81. package/dist/lang/nl.umd.prod.js +1 -1
  82. package/dist/lang/pl.umd.prod.js +1 -1
  83. package/dist/lang/pt-BR.umd.prod.js +1 -1
  84. package/dist/lang/pt.umd.prod.js +1 -1
  85. package/dist/lang/ro.umd.prod.js +1 -1
  86. package/dist/lang/ru.umd.prod.js +1 -1
  87. package/dist/lang/sk.umd.prod.js +1 -1
  88. package/dist/lang/sl.umd.prod.js +1 -1
  89. package/dist/lang/sr-CYR.umd.prod.js +1 -1
  90. package/dist/lang/sr.umd.prod.js +1 -1
  91. package/dist/lang/sv.umd.prod.js +1 -1
  92. package/dist/lang/ta.umd.prod.js +1 -1
  93. package/dist/lang/th.umd.prod.js +1 -1
  94. package/dist/lang/tr.umd.prod.js +1 -1
  95. package/dist/lang/ug.umd.prod.js +1 -1
  96. package/dist/lang/uk.umd.prod.js +1 -1
  97. package/dist/lang/vi.umd.prod.js +1 -1
  98. package/dist/lang/zh-CN.umd.prod.js +1 -1
  99. package/dist/lang/zh-TW.umd.prod.js +1 -1
  100. package/dist/quasar.cjs.prod.js +2 -2
  101. package/dist/quasar.css +7 -4
  102. package/dist/quasar.esm.prod.js +2 -2
  103. package/dist/quasar.prod.css +1 -1
  104. package/dist/quasar.rtl.css +13 -10
  105. package/dist/quasar.rtl.prod.css +1 -1
  106. package/dist/quasar.sass +7 -5
  107. package/dist/quasar.umd.js +100 -53
  108. package/dist/quasar.umd.prod.js +2 -2
  109. package/dist/types/api/qnotify.d.ts +0 -1
  110. package/dist/types/api/validation.d.ts +1 -1
  111. package/dist/types/index.d.ts +43 -4
  112. package/dist/vetur/quasar-attributes.json +16 -0
  113. package/dist/vetur/quasar-tags.json +5 -1
  114. package/dist/web-types/web-types.json +48 -8
  115. package/package.json +1 -3
  116. package/src/components/btn/use-btn.json +1 -1
  117. package/src/components/dialog/QDialog.js +7 -7
  118. package/src/components/dialog/QDialog.json +10 -1
  119. package/src/components/dialog/QDialog.sass +2 -2
  120. package/src/components/dialog-plugin/DialogPlugin.js +4 -4
  121. package/src/components/editor/QEditor.js +10 -4
  122. package/src/components/icon/QIcon.js +1 -1
  123. package/src/components/img/QImg.js +5 -0
  124. package/src/components/img/QImg.json +19 -1
  125. package/src/components/menu/QMenu.js +2 -1
  126. package/src/components/table/QTable.js +1 -1
  127. package/src/components/tooltip/QTooltip.js +2 -1
  128. package/src/components/tree/QTree.sass +1 -1
  129. package/src/components/video/QVideo.js +17 -1
  130. package/src/components/video/QVideo.json +36 -0
  131. package/src/components/virtual-scroll/QVirtualScroll.sass +4 -1
  132. package/src/components/virtual-scroll/use-virtual-scroll.js +19 -21
  133. package/src/composables/private/use-portal.js +15 -2
  134. package/src/composables/private/use-router-link.json +1 -1
  135. package/src/history.js +2 -2
  136. package/src/plugins/Notify.json +1 -1
  137. package/src/utils/copy-to-clipboard.js +1 -1
  138. package/src/utils/patterns.js +8 -0
  139. package/src/utils/private/date-persian.js +0 -9
  140. package/src/utils/private/position-engine.js +0 -5
  141. package/src/utils/private/sort.js +0 -11
  142. package/src/utils/private/web-storage.js +1 -1
  143. package/src/utils/uid.js +1 -1
@@ -7,4 +7,3 @@ export type QNotifyUpdateOptions = Omit<QNotifyCreateOptions, 'group' | 'positio
7
7
  export type QNotifyOptions = Omit<QNotifyCreateOptions, 'ignoreDefaults'>;
8
8
 
9
9
  export type QNotifyAction = Omit<QBtnProps, 'onClick'> & ButtonHTMLAttributes & { noDismiss?: boolean; handler?: () => void };
10
- export type QNotifyActions = QNotifyAction[];
@@ -1,4 +1,4 @@
1
1
  // Keep in sync with ui/src/utils/patterns.js
2
- export type EmbeddedValidationRule = "date" | "time" | "fulltime" | "timeOrFulltime" | "hexColor" | "hexaColor" | "hexOrHexaColor" | "rgbColor" | "rgbaColor" | "rgbOrRgbaColor" | "hexOrRgbColor" | "hexaOrRgbaColor" | "anyColor";
2
+ export type EmbeddedValidationRule = "date" | "time" | "fulltime" | "timeOrFulltime" | "email" | "hexColor" | "hexaColor" | "hexOrHexaColor" | "rgbColor" | "rgbaColor" | "rgbOrRgbaColor" | "hexOrRgbColor" | "hexaOrRgbaColor" | "anyColor";
3
3
 
4
4
  export type ValidationRule<T = any> = EmbeddedValidationRule | ((value: T) => boolean | string | Promise<boolean | string>);
@@ -3119,8 +3119,9 @@ export interface QDialog extends ComponentPublicInstance<QDialogProps> {
3119
3119
  toggle: (evt?: Event) => void;
3120
3120
  /**
3121
3121
  * Focus dialog; if you have content with autofocus attribute, it will directly focus it
3122
+ * @param selector Optional CSS selector to override default focusable element
3122
3123
  */
3123
- focus: () => void;
3124
+ focus: (selector?: string) => void;
3124
3125
  /**
3125
3126
  * Shakes dialog
3126
3127
  */
@@ -4895,7 +4896,21 @@ export interface QImgProps {
4895
4896
  /**
4896
4897
  * Same syntax as <img> referrerpolicy attribute
4897
4898
  */
4898
- referrerpolicy?: string | undefined;
4899
+ referrerpolicy?:
4900
+ | "no-referrer"
4901
+ | "no-referrer-when-downgrade"
4902
+ | "origin"
4903
+ | "origin-when-cross-origin"
4904
+ | "same-origin"
4905
+ | "strict-origin"
4906
+ | "strict-origin-when-cross-origin"
4907
+ | "unsafe-url"
4908
+ | undefined;
4909
+ /**
4910
+ * Provides a hint of the relative priority to use when fetching the image
4911
+ * Default value: auto
4912
+ */
4913
+ fetchpriority?: "high" | "low" | "auto" | undefined;
4899
4914
  /**
4900
4915
  * How the image will fit into the container; Equivalent of the object-fit prop; Can be coordinated with 'position' prop
4901
4916
  * Default value: cover
@@ -12848,6 +12863,30 @@ export interface QVideoProps {
12848
12863
  * (Accessibility) Set the native 'title' attribute value of the inner iframe being used
12849
12864
  */
12850
12865
  title?: string | undefined;
12866
+ /**
12867
+ * Provides a hint of the relative priority to use when fetching the iframe document
12868
+ * Default value: auto
12869
+ */
12870
+ fetchpriority?: "high" | "low" | "auto" | undefined;
12871
+ /**
12872
+ * Indicates how the browser should load the iframe
12873
+ * Default value: eager
12874
+ */
12875
+ loading?: "eager" | "lazy" | undefined;
12876
+ /**
12877
+ * Indicates which referrer to send when fetching the frame's resource
12878
+ * Default value: strict-origin-when-cross-origin
12879
+ */
12880
+ referrerpolicy?:
12881
+ | "no-referrer"
12882
+ | "no-referrer-when-downgrade"
12883
+ | "origin"
12884
+ | "origin-when-cross-origin"
12885
+ | "same-origin"
12886
+ | "strict-origin"
12887
+ | "strict-origin-when-cross-origin"
12888
+ | "unsafe-url"
12889
+ | undefined;
12851
12890
  }
12852
12891
 
12853
12892
  export interface QVideoSlots {}
@@ -13265,7 +13304,7 @@ import { WebStorageGetItemMethodType } from "./api";
13265
13304
  import { WebStorageGetIndexMethodType } from "./api";
13266
13305
  import { WebStorageGetKeyMethodType } from "./api";
13267
13306
  import { WebStorageGetAllKeysMethodType } from "./api";
13268
- import { QNotifyActions } from "./api";
13307
+ import { QNotifyAction } from "./api";
13269
13308
  export interface QNotifyCreateOptions {
13270
13309
  /**
13271
13310
  * Optional type (that has been previously registered) or one of the out of the box ones ('positive', 'negative', 'warning', 'info', 'ongoing')
@@ -13383,7 +13422,7 @@ export interface QNotifyCreateOptions {
13383
13422
  /**
13384
13423
  * Notification actions (buttons); Unless 'noDismiss' is true, clicking/tapping on the button will close the notification; Also check 'closeBtn' convenience prop
13385
13424
  */
13386
- actions?: QNotifyActions[];
13425
+ actions?: QNotifyAction[];
13387
13426
  /**
13388
13427
  * Function to call when notification gets dismissed
13389
13428
  */
@@ -2291,6 +2291,10 @@
2291
2291
  "type": "string",
2292
2292
  "description": "Same syntax as <img> referrerpolicy attribute"
2293
2293
  },
2294
+ "q-img/fetchpriority": {
2295
+ "type": "string",
2296
+ "description": "Provides a hint of the relative priority to use when fetching the image"
2297
+ },
2294
2298
  "q-img/fit": {
2295
2299
  "type": "string",
2296
2300
  "description": "How the image will fit into the container; Equivalent of the object-fit prop; Can be coordinated with 'position' prop"
@@ -5751,6 +5755,18 @@
5751
5755
  "type": "string",
5752
5756
  "description": "(Accessibility) Set the native 'title' attribute value of the inner iframe being used"
5753
5757
  },
5758
+ "q-video/fetchpriority": {
5759
+ "type": "string",
5760
+ "description": "Provides a hint of the relative priority to use when fetching the iframe document"
5761
+ },
5762
+ "q-video/loading": {
5763
+ "type": "string",
5764
+ "description": "Indicates how the browser should load the iframe"
5765
+ },
5766
+ "q-video/referrerpolicy": {
5767
+ "type": "string",
5768
+ "description": "Indicates which referrer to send when fetching the frame's resource"
5769
+ },
5754
5770
  "q-virtual-scroll/virtual-scroll-horizontal": {
5755
5771
  "type": "boolean",
5756
5772
  "description": "Make virtual list work in horizontal mode"
@@ -753,6 +753,7 @@
753
753
  "crossorigin",
754
754
  "decoding",
755
755
  "referrerpolicy",
756
+ "fetchpriority",
756
757
  "fit",
757
758
  "position",
758
759
  "alt",
@@ -2038,7 +2039,10 @@
2038
2039
  "attributes": [
2039
2040
  "ratio",
2040
2041
  "src",
2041
- "title"
2042
+ "title",
2043
+ "fetchpriority",
2044
+ "loading",
2045
+ "referrerpolicy"
2042
2046
  ],
2043
2047
  "description": ""
2044
2048
  },
@@ -2,7 +2,7 @@
2
2
  "$schema": "",
3
3
  "framework": "vue",
4
4
  "name": "quasar",
5
- "version": "2.6.3",
5
+ "version": "2.6.6",
6
6
  "contributions": {
7
7
  "html": {
8
8
  "types-syntax": "typescript",
@@ -514,7 +514,7 @@
514
514
  "kind": "expression",
515
515
  "type": "string"
516
516
  },
517
- "description": "Native <a> link href attribute; Has priority over the 'to'/'exact'/'replace'/'active-class'/'exact-active-class' props\n\nExamples:\nhttp://quasar.dev",
517
+ "description": "Native <a> link href attribute; Has priority over the 'to'/'exact'/'replace'/'active-class'/'exact-active-class' props\n\nExamples:\nhttps://quasar.dev",
518
518
  "doc-url": "https://v2.quasar.dev/vue-components/breadcrumbs"
519
519
  },
520
520
  {
@@ -646,7 +646,7 @@
646
646
  "kind": "expression",
647
647
  "type": "string"
648
648
  },
649
- "description": "Native <a> link href attribute; Has priority over the 'to' and 'replace' props\n\nExamples:\nhttp://quasar.dev\nhref=\"https://quasar.dev\" target=\"_blank\"",
649
+ "description": "Native <a> link href attribute; Has priority over the 'to' and 'replace' props\n\nExamples:\nhttps://quasar.dev\nhref=\"https://quasar.dev\" target=\"_blank\"",
650
650
  "doc-url": "https://v2.quasar.dev/vue-components/button-dropdown"
651
651
  },
652
652
  {
@@ -1559,7 +1559,7 @@
1559
1559
  "kind": "expression",
1560
1560
  "type": "string"
1561
1561
  },
1562
- "description": "Native <a> link href attribute; Has priority over the 'to' and 'replace' props\n\nExamples:\nhttp://quasar.dev\nhref=\"https://quasar.dev\" target=\"_blank\"",
1562
+ "description": "Native <a> link href attribute; Has priority over the 'to' and 'replace' props\n\nExamples:\nhttps://quasar.dev\nhref=\"https://quasar.dev\" target=\"_blank\"",
1563
1563
  "doc-url": "https://v2.quasar.dev/vue-components/button"
1564
1564
  },
1565
1565
  {
@@ -4758,7 +4758,7 @@
4758
4758
  "kind": "expression",
4759
4759
  "type": "string"
4760
4760
  },
4761
- "description": "Native <a> link href attribute; Has priority over the 'to'/'exact'/'replace'/'active-class'/'exact-active-class' props\n\nExamples:\nhttp://quasar.dev",
4761
+ "description": "Native <a> link href attribute; Has priority over the 'to'/'exact'/'replace'/'active-class'/'exact-active-class' props\n\nExamples:\nhttps://quasar.dev",
4762
4762
  "doc-url": "https://v2.quasar.dev/vue-components/expansion-item"
4763
4763
  },
4764
4764
  {
@@ -7248,11 +7248,21 @@
7248
7248
  "name": "referrerpolicy",
7249
7249
  "value": {
7250
7250
  "kind": "expression",
7251
- "type": "string"
7251
+ "type": "'no-referrer'|'no-referrer-when-downgrade'|'origin'|'origin-when-cross-origin'|'same-origin'|'strict-origin'|'strict-origin-when-cross-origin'|'unsafe-url'"
7252
7252
  },
7253
7253
  "description": "Same syntax as <img> referrerpolicy attribute",
7254
7254
  "doc-url": "https://v2.quasar.dev/vue-components/img"
7255
7255
  },
7256
+ {
7257
+ "name": "fetchpriority",
7258
+ "value": {
7259
+ "kind": "expression",
7260
+ "type": "'high'|'low'|'auto'"
7261
+ },
7262
+ "description": "Provides a hint of the relative priority to use when fetching the image",
7263
+ "doc-url": "https://v2.quasar.dev/vue-components/img",
7264
+ "default": "\"auto\""
7265
+ },
7256
7266
  {
7257
7267
  "name": "fit",
7258
7268
  "value": {
@@ -8378,7 +8388,7 @@
8378
8388
  "kind": "expression",
8379
8389
  "type": "string"
8380
8390
  },
8381
- "description": "Native <a> link href attribute; Has priority over the 'to'/'exact'/'replace'/'active-class'/'exact-active-class' props\n\nExamples:\nhttp://quasar.dev",
8391
+ "description": "Native <a> link href attribute; Has priority over the 'to'/'exact'/'replace'/'active-class'/'exact-active-class' props\n\nExamples:\nhttps://quasar.dev",
8382
8392
  "doc-url": "https://v2.quasar.dev/vue-components/list-and-list-items"
8383
8393
  },
8384
8394
  {
@@ -16477,7 +16487,7 @@
16477
16487
  "kind": "expression",
16478
16488
  "type": "string"
16479
16489
  },
16480
- "description": "Native <a> link href attribute; Has priority over the 'to'/'exact'/'replace'/'active-class'/'exact-active-class' props\n\nExamples:\nhttp://quasar.dev",
16490
+ "description": "Native <a> link href attribute; Has priority over the 'to'/'exact'/'replace'/'active-class'/'exact-active-class' props\n\nExamples:\nhttps://quasar.dev",
16481
16491
  "doc-url": "https://v2.quasar.dev/vue-components/tabs"
16482
16492
  },
16483
16493
  {
@@ -18662,6 +18672,36 @@
18662
18672
  },
18663
18673
  "description": "(Accessibility) Set the native 'title' attribute value of the inner iframe being used\n\nExamples:\nMy Daily Marathon",
18664
18674
  "doc-url": "https://v2.quasar.dev/vue-components/video"
18675
+ },
18676
+ {
18677
+ "name": "fetchpriority",
18678
+ "value": {
18679
+ "kind": "expression",
18680
+ "type": "'high'|'low'|'auto'"
18681
+ },
18682
+ "description": "Provides a hint of the relative priority to use when fetching the iframe document",
18683
+ "doc-url": "https://v2.quasar.dev/vue-components/video",
18684
+ "default": "\"auto\""
18685
+ },
18686
+ {
18687
+ "name": "loading",
18688
+ "value": {
18689
+ "kind": "expression",
18690
+ "type": "'eager'|'lazy'"
18691
+ },
18692
+ "description": "Indicates how the browser should load the iframe",
18693
+ "doc-url": "https://v2.quasar.dev/vue-components/video",
18694
+ "default": "\"eager\""
18695
+ },
18696
+ {
18697
+ "name": "referrerpolicy",
18698
+ "value": {
18699
+ "kind": "expression",
18700
+ "type": "'no-referrer'|'no-referrer-when-downgrade'|'origin'|'origin-when-cross-origin'|'same-origin'|'strict-origin'|'strict-origin-when-cross-origin'|'unsafe-url'"
18701
+ },
18702
+ "description": "Indicates which referrer to send when fetching the frame's resource",
18703
+ "doc-url": "https://v2.quasar.dev/vue-components/video",
18704
+ "default": "\"strict-origin-when-cross-origin\""
18665
18705
  }
18666
18706
  ],
18667
18707
  "slots": [],
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "quasar",
3
- "version": "2.6.3",
3
+ "version": "2.6.6",
4
4
  "description": "Build high-performance VueJS user interfaces (SPA, PWA, SSR, Mobile and Desktop) in record time",
5
5
  "main": "dist/quasar.cjs.prod.js",
6
6
  "module": "dist/quasar.esm.prod.js",
@@ -86,7 +86,6 @@
86
86
  "eslint-plugin-promise": "^4.2.1",
87
87
  "eslint-plugin-vue": "^7.0.0",
88
88
  "fast-glob": "^3.2.7",
89
- "json-beautify": "^1.1.1",
90
89
  "module-alias": "^2.2.2",
91
90
  "postcss-rtlcss": "^3.5.3",
92
91
  "prettier": "^2.4.1",
@@ -95,7 +94,6 @@
95
94
  "rimraf": "^3.0.1",
96
95
  "rollup": "^2.34.0",
97
96
  "table": "^6.0.4",
98
- "tslib": "^2.0.3",
99
97
  "uglify-es": "^3.3.9",
100
98
  "vue": "^3.0.0",
101
99
  "vue-router": "^4.0.0",
@@ -33,7 +33,7 @@
33
33
  "href": {
34
34
  "type": "String",
35
35
  "desc": "Native <a> link href attribute; Has priority over the 'to' and 'replace' props",
36
- "examples": [ "http://quasar.dev", "href=\"https://quasar.dev\" target=\"_blank\"" ],
36
+ "examples": [ "https://quasar.dev", "href=\"https://quasar.dev\" target=\"_blank\"" ],
37
37
  "category": "navigation",
38
38
  "addedIn": "v2.4"
39
39
  },
@@ -96,7 +96,7 @@ export default createComponent({
96
96
  const { registerTimeout, removeTimeout } = useTimeout()
97
97
  const { registerTick, removeTick } = useTick()
98
98
 
99
- const { showPortal, hidePortal, portalIsActive, renderPortal } = usePortal(
99
+ const { showPortal, hidePortal, portalIsAccessible, renderPortal } = usePortal(
100
100
  vm, innerRef, renderPortalContent, /* pls do check if on a global dialog */ true
101
101
  )
102
102
 
@@ -235,6 +235,7 @@ export default createComponent({
235
235
  removeFromHistory()
236
236
  cleanup(true)
237
237
  animating.value = true
238
+ hidePortal()
238
239
 
239
240
  if (refocusTarget !== null) {
240
241
  refocusTarget.focus()
@@ -242,13 +243,13 @@ export default createComponent({
242
243
  }
243
244
 
244
245
  registerTimeout(() => {
245
- hidePortal()
246
+ hidePortal(true) // done hiding, now destroy
246
247
  animating.value = false
247
248
  emit('hide', evt)
248
249
  }, props.transitionDuration)
249
250
  }
250
251
 
251
- function focus () {
252
+ function focus (selector) {
252
253
  addFocusFn(() => {
253
254
  let node = innerRef.value
254
255
 
@@ -256,7 +257,7 @@ export default createComponent({
256
257
  return
257
258
  }
258
259
 
259
- node = node.querySelector('[autofocus], [data-autofocus]') || node
260
+ node = node.querySelector(selector || '[autofocus], [data-autofocus]') || node
260
261
  node.focus({ preventScroll: true })
261
262
  })
262
263
  }
@@ -350,11 +351,10 @@ export default createComponent({
350
351
  function onFocusChange (evt) {
351
352
  // the focus is not in a vue child component
352
353
  if (
353
- showing.value === true
354
- && portalIsActive.value === true
354
+ portalIsAccessible.value === true
355
355
  && childHasFocus(innerRef.value, evt.target) !== true
356
356
  ) {
357
- focus()
357
+ focus('[tabindex]:not([tabindex="-1"])')
358
358
  }
359
359
  }
360
360
 
@@ -107,7 +107,16 @@
107
107
 
108
108
  "methods": {
109
109
  "focus": {
110
- "desc": "Focus dialog; if you have content with autofocus attribute, it will directly focus it"
110
+ "desc": "Focus dialog; if you have content with autofocus attribute, it will directly focus it",
111
+ "params": {
112
+ "selector": {
113
+ "type": "String",
114
+ "required": false,
115
+ "desc": "Optional CSS selector to override default focusable element",
116
+ "examples": [ "[tabindex]:not([tabindex=\"-1\"])" ],
117
+ "addedIn": "v2.6.5"
118
+ }
119
+ }
111
120
  },
112
121
 
113
122
  "shake": {
@@ -39,8 +39,8 @@
39
39
  max-height: 100vh
40
40
  max-width: 100vw
41
41
  border-radius: 0 !important
42
- top: 0px !important
43
- left: 0px !important
42
+ top: 0 !important
43
+ left: 0 !important
44
44
 
45
45
  &--top, &--bottom
46
46
  padding-top: 0 !important
@@ -239,14 +239,14 @@ export default createComponent({
239
239
  function getButtons () {
240
240
  const child = []
241
241
 
242
- props.ok && child.push(
243
- h(QBtn, okProps.value)
244
- )
245
-
246
242
  props.cancel && child.push(
247
243
  h(QBtn, cancelProps.value)
248
244
  )
249
245
 
246
+ props.ok && child.push(
247
+ h(QBtn, okProps.value)
248
+ )
249
+
250
250
  return h(QCardActions, {
251
251
  class: props.stackButtons === true ? 'items-end' : '',
252
252
  vertical: props.stackButtons,
@@ -368,11 +368,14 @@ export default createComponent({
368
368
  }
369
369
 
370
370
  function onFocusin (e) {
371
+ const root = rootRef.value
372
+
371
373
  if (
372
- rootRef.value.contains(e.target) === true
374
+ root !== null
375
+ && root.contains(e.target) === true
373
376
  && (
374
377
  e.relatedTarget === null
375
- || rootRef.value.contains(e.relatedTarget) !== true
378
+ || root.contains(e.relatedTarget) !== true
376
379
  )
377
380
  ) {
378
381
  const prop = `inner${ isViewingSource.value === true ? 'Text' : 'HTML' }`
@@ -382,11 +385,14 @@ export default createComponent({
382
385
  }
383
386
 
384
387
  function onFocusout (e) {
388
+ const root = rootRef.value
389
+
385
390
  if (
386
- rootRef.value.contains(e.target) === true
391
+ root !== null
392
+ && root.contains(e.target) === true
387
393
  && (
388
394
  e.relatedTarget === null
389
- || rootRef.value.contains(e.relatedTarget) !== true
395
+ || root.contains(e.relatedTarget) !== true
390
396
  )
391
397
  ) {
392
398
  eVm.caret.savePosition()
@@ -133,7 +133,7 @@ export default createComponent({
133
133
  cls = icon
134
134
  }
135
135
  else if (ionRE.test(icon) === true) {
136
- cls = `ionicons ion-${ $q.platform.is.ios === true ? 'ios' : 'md' }${ icon.substr(3) }`
136
+ cls = `ionicons ion-${ $q.platform.is.ios === true ? 'ios' : 'md' }${ icon.substring(3) }`
137
137
  }
138
138
  else {
139
139
  // "notranslate" class is for Google Translate
@@ -31,6 +31,10 @@ export default createComponent({
31
31
  type: String,
32
32
  default: 'lazy'
33
33
  },
34
+ fetchpriority: {
35
+ type: String,
36
+ default: 'auto'
37
+ },
34
38
  width: String,
35
39
  height: String,
36
40
  initialRatio: {
@@ -193,6 +197,7 @@ export default createComponent({
193
197
  height: props.height,
194
198
  width: props.width,
195
199
  loading: props.loading,
200
+ fetchpriority: props.fetchpriority,
196
201
  'aria-hidden': 'true',
197
202
  draggable: props.draggable,
198
203
  ...img
@@ -116,8 +116,26 @@
116
116
  "referrerpolicy": {
117
117
  "type": "String",
118
118
  "desc": "Same syntax as <img> referrerpolicy attribute",
119
+ "values": [
120
+ "no-referrer",
121
+ "no-referrer-when-downgrade",
122
+ "origin",
123
+ "origin-when-cross-origin",
124
+ "same-origin",
125
+ "strict-origin",
126
+ "strict-origin-when-cross-origin",
127
+ "unsafe-url"
128
+ ],
129
+ "category": "behavior"
130
+ },
131
+
132
+ "fetchpriority": {
133
+ "type": "String",
134
+ "desc": "Provides a hint of the relative priority to use when fetching the image",
135
+ "default": "auto",
136
+ "values": [ "high", "low", "auto" ],
119
137
  "category": "behavior",
120
- "__exemption": [ "examples" ]
138
+ "addedIn": "v2.6.6"
121
139
  },
122
140
 
123
141
  "fit": {
@@ -244,6 +244,7 @@ export default createComponent({
244
244
  function handleHide (evt) {
245
245
  removeTick()
246
246
  removeTimeout()
247
+ hidePortal()
247
248
 
248
249
  anchorCleanup(true)
249
250
 
@@ -261,7 +262,7 @@ export default createComponent({
261
262
  }
262
263
 
263
264
  registerTimeout(() => {
264
- hidePortal()
265
+ hidePortal(true) // done hiding, now destroy
265
266
  emit('hide', evt)
266
267
  }, props.transitionDuration)
267
268
  }
@@ -978,7 +978,7 @@ export default createComponent({
978
978
 
979
979
  return h('div', {
980
980
  class: 'q-table__grid-item col-xs-12 col-sm-6 col-md-4 col-lg-3'
981
- + (scope.selected === true ? 'q-table__grid-item--selected' : '')
981
+ + (scope.selected === true ? ' q-table__grid-item--selected' : '')
982
982
  }, [
983
983
  h('div', data, child)
984
984
  ])
@@ -175,11 +175,12 @@ export default createComponent({
175
175
  function handleHide (evt) {
176
176
  removeTick()
177
177
  removeTimeout()
178
+ hidePortal()
178
179
 
179
180
  anchorCleanup()
180
181
 
181
182
  registerTimeout(() => {
182
- hidePortal()
183
+ hidePortal(true) // done hiding, now destroy
183
184
  emit('hide', evt)
184
185
  }, props.transitionDuration)
185
186
  }
@@ -101,10 +101,10 @@
101
101
  &__arrow,
102
102
  &__spinner
103
103
  font-size: 16px
104
+ margin-right: 4px
104
105
 
105
106
  &__arrow
106
107
  transition: transform .3s
107
- margin-right: 4px
108
108
 
109
109
  &--rotate
110
110
  transform: rotate3d(0, 0, 1, 90deg)
@@ -15,7 +15,20 @@ export default createComponent({
15
15
  required: true
16
16
  },
17
17
 
18
- title: String
18
+ title: String,
19
+
20
+ fetchpriority: {
21
+ type: String,
22
+ default: 'auto'
23
+ },
24
+ loading: {
25
+ type: String,
26
+ default: 'eager'
27
+ },
28
+ referrerpolicy: {
29
+ type: String,
30
+ default: 'strict-origin-when-cross-origin'
31
+ }
19
32
  },
20
33
 
21
34
  setup (props) {
@@ -33,6 +46,9 @@ export default createComponent({
33
46
  h('iframe', {
34
47
  src: props.src,
35
48
  title: props.title,
49
+ fetchpriority: props.fetchpriority,
50
+ loading: props.loading,
51
+ referrerpolicy: props.referrerpolicy,
36
52
  frameborder: '0',
37
53
  allowfullscreen: true
38
54
  })
@@ -25,6 +25,42 @@
25
25
  ],
26
26
  "category": "accessibility",
27
27
  "addedIn": "v2.4.3"
28
+ },
29
+
30
+ "fetchpriority": {
31
+ "type": "String",
32
+ "desc": "Provides a hint of the relative priority to use when fetching the iframe document",
33
+ "default": "auto",
34
+ "values": [ "high", "low", "auto" ],
35
+ "category": "behavior",
36
+ "addedIn": "v2.6.6"
37
+ },
38
+
39
+ "loading": {
40
+ "type": "String",
41
+ "desc": "Indicates how the browser should load the iframe",
42
+ "default": "eager",
43
+ "values": [ "eager", "lazy" ],
44
+ "category": "behavior",
45
+ "addedIn": "v2.6.6"
46
+ },
47
+
48
+ "referrerpolicy": {
49
+ "type": "String",
50
+ "desc": "Indicates which referrer to send when fetching the frame's resource",
51
+ "default": "strict-origin-when-cross-origin",
52
+ "values": [
53
+ "no-referrer",
54
+ "no-referrer-when-downgrade",
55
+ "origin",
56
+ "origin-when-cross-origin",
57
+ "same-origin",
58
+ "strict-origin",
59
+ "strict-origin-when-cross-origin",
60
+ "unsafe-url"
61
+ ],
62
+ "category": "behavior",
63
+ "addedIn": "v2.6.6"
28
64
  }
29
65
  }
30
66
  }
@@ -6,9 +6,12 @@
6
6
  outline: none
7
7
  contain: content
8
8
 
9
- *
9
+ > *
10
10
  overflow-anchor: none
11
11
 
12
+ > [data-q-vs-anchor]
13
+ overflow-anchor: auto
14
+
12
15
  &__padding
13
16
  background: linear-gradient(rgba(255,255,255,0), rgba(255,255,255,0) 20%, rgba(128, 128, 128, .03) 20%, rgba(128, 128, 128, .08) 50%, rgba(128, 128, 128, .03) 80%, rgba(255,255,255,0) 80%, rgba(255,255,255,0)) #{"/* rtl:ignore */"}
14
17
  background-size: var(--q-virtual-scroll-item-width, 100%) var(--q-virtual-scroll-item-height, 50px) #{"/* rtl:ignore */"}