quasar 1.22.4 → 1.22.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.
- package/dist/api/BottomSheet.json +12 -0
- package/dist/api/QCarouselSlide.json +1 -1
- package/dist/api/QChatMessage.json +1 -1
- package/dist/api/QImg.json +8 -2
- package/dist/api/QTimelineEntry.json +1 -1
- package/dist/icon-set/bootstrap-icons.umd.min.js +1 -1
- package/dist/icon-set/eva-icons.umd.min.js +1 -1
- package/dist/icon-set/fontawesome-v5-pro.umd.min.js +1 -1
- package/dist/icon-set/fontawesome-v5.umd.min.js +1 -1
- package/dist/icon-set/fontawesome-v6-pro.umd.min.js +1 -1
- package/dist/icon-set/fontawesome-v6.umd.min.js +1 -1
- package/dist/icon-set/ionicons-v4.umd.min.js +1 -1
- package/dist/icon-set/line-awesome.umd.min.js +1 -1
- package/dist/icon-set/material-icons-outlined.umd.min.js +1 -1
- package/dist/icon-set/material-icons-round.umd.min.js +1 -1
- package/dist/icon-set/material-icons-sharp.umd.min.js +1 -1
- package/dist/icon-set/material-icons.umd.min.js +1 -1
- package/dist/icon-set/material-symbols-outlined.umd.min.js +1 -1
- package/dist/icon-set/material-symbols-rounded.umd.min.js +1 -1
- package/dist/icon-set/material-symbols-sharp.umd.min.js +1 -1
- package/dist/icon-set/mdi-v3.umd.min.js +1 -1
- package/dist/icon-set/mdi-v4.umd.min.js +1 -1
- package/dist/icon-set/mdi-v5.umd.min.js +1 -1
- package/dist/icon-set/mdi-v6.umd.min.js +1 -1
- package/dist/icon-set/mdi-v7.umd.min.js +1 -1
- package/dist/icon-set/svg-bootstrap-icons.umd.min.js +1 -1
- package/dist/icon-set/svg-eva-icons.umd.min.js +1 -1
- package/dist/icon-set/svg-fontawesome-v5.umd.min.js +1 -1
- package/dist/icon-set/svg-fontawesome-v6.umd.min.js +1 -1
- package/dist/icon-set/svg-ionicons-v4.umd.min.js +1 -1
- package/dist/icon-set/svg-ionicons-v5.umd.min.js +1 -1
- package/dist/icon-set/svg-ionicons-v6.umd.min.js +1 -1
- package/dist/icon-set/svg-line-awesome.umd.min.js +1 -1
- package/dist/icon-set/svg-material-icons-outlined.umd.min.js +1 -1
- package/dist/icon-set/svg-material-icons-round.umd.min.js +1 -1
- package/dist/icon-set/svg-material-icons-sharp.umd.min.js +1 -1
- package/dist/icon-set/svg-material-icons.umd.min.js +1 -1
- package/dist/icon-set/svg-material-symbols-outlined.umd.min.js +1 -1
- package/dist/icon-set/svg-material-symbols-rounded.umd.min.js +1 -1
- package/dist/icon-set/svg-material-symbols-sharp.umd.min.js +1 -1
- package/dist/icon-set/svg-mdi-v4.umd.min.js +1 -1
- package/dist/icon-set/svg-mdi-v5.umd.min.js +1 -1
- package/dist/icon-set/svg-mdi-v6.umd.min.js +1 -1
- package/dist/icon-set/svg-mdi-v7.umd.min.js +1 -1
- package/dist/icon-set/svg-themify.umd.min.js +1 -1
- package/dist/icon-set/themify.umd.min.js +1 -1
- package/dist/lang/ar.umd.min.js +1 -1
- package/dist/lang/az-latn.umd.min.js +1 -1
- package/dist/lang/bg.umd.min.js +1 -1
- package/dist/lang/ca.umd.min.js +1 -1
- package/dist/lang/cs.umd.min.js +1 -1
- package/dist/lang/da.umd.min.js +1 -1
- package/dist/lang/de.umd.min.js +1 -1
- package/dist/lang/el.umd.min.js +1 -1
- package/dist/lang/en-gb.umd.min.js +1 -1
- package/dist/lang/en-us.umd.min.js +1 -1
- package/dist/lang/eo.umd.min.js +1 -1
- package/dist/lang/es.umd.min.js +1 -1
- package/dist/lang/et.umd.min.js +1 -1
- package/dist/lang/eu.umd.min.js +1 -1
- package/dist/lang/fa-ir.umd.min.js +1 -1
- package/dist/lang/fa.umd.min.js +1 -1
- package/dist/lang/fi.umd.min.js +1 -1
- package/dist/lang/fr.umd.min.js +1 -1
- package/dist/lang/gn.umd.min.js +1 -1
- package/dist/lang/he.umd.min.js +1 -1
- package/dist/lang/hr.umd.min.js +1 -1
- package/dist/lang/hu.umd.min.js +1 -1
- package/dist/lang/id.umd.min.js +1 -1
- package/dist/lang/is.umd.min.js +1 -1
- package/dist/lang/it.umd.min.js +1 -1
- package/dist/lang/ja.umd.min.js +1 -1
- package/dist/lang/km.umd.min.js +1 -1
- package/dist/lang/ko-kr.umd.min.js +1 -1
- package/dist/lang/kur-ckb.umd.min.js +1 -1
- package/dist/lang/kz.umd.min.js +1 -1
- package/dist/lang/lu.umd.min.js +1 -1
- package/dist/lang/lv.umd.min.js +1 -1
- package/dist/lang/ml.umd.min.js +1 -1
- package/dist/lang/mm.umd.min.js +1 -1
- package/dist/lang/ms.umd.min.js +1 -1
- package/dist/lang/my.umd.min.js +1 -1
- package/dist/lang/nb-no.umd.min.js +1 -1
- package/dist/lang/nl.umd.min.js +1 -1
- package/dist/lang/pl.umd.min.js +1 -1
- package/dist/lang/pt-br.umd.min.js +1 -1
- package/dist/lang/pt.umd.min.js +1 -1
- package/dist/lang/ro.umd.min.js +1 -1
- package/dist/lang/ru.umd.min.js +1 -1
- package/dist/lang/sk.umd.min.js +1 -1
- package/dist/lang/sl.umd.min.js +2 -2
- package/dist/lang/sm.umd.min.js +1 -1
- package/dist/lang/sr.umd.min.js +1 -1
- package/dist/lang/sv.umd.min.js +1 -1
- package/dist/lang/ta.umd.min.js +1 -1
- package/dist/lang/th.umd.min.js +1 -1
- package/dist/lang/tr.umd.min.js +1 -1
- package/dist/lang/ug.umd.min.js +1 -1
- package/dist/lang/uk.umd.min.js +1 -1
- package/dist/lang/uz-Cyrl.umd.min.js +1 -1
- package/dist/lang/uz-Latn.umd.min.js +1 -1
- package/dist/lang/vi.umd.min.js +1 -1
- package/dist/lang/zh-hans.umd.min.js +1 -1
- package/dist/lang/zh-hant.umd.min.js +1 -1
- package/dist/quasar.addon.css +1 -1
- package/dist/quasar.addon.rtl.css +1 -1
- package/dist/quasar.common.js +2 -2
- package/dist/quasar.css +2 -4
- package/dist/quasar.esm.js +2 -2
- package/dist/quasar.ie.polyfills.js +1 -1
- package/dist/quasar.ie.polyfills.umd.min.js +1 -1
- package/dist/quasar.min.css +1 -1
- package/dist/quasar.rtl.css +2 -4
- package/dist/quasar.rtl.min.css +1 -1
- package/dist/quasar.sass +2 -3
- package/dist/quasar.styl +2 -3
- package/dist/quasar.umd.js +95 -20
- package/dist/quasar.umd.min.js +2 -2
- package/dist/quasar.umd.modern.js +88 -18
- package/dist/quasar.umd.modern.min.js +2 -2
- package/dist/types/index.d.ts +12 -0
- package/dist/vetur/quasar-attributes.json +4 -0
- package/dist/vetur/quasar-tags.json +2 -1
- package/dist/web-types/web-types.json +16 -6
- package/lang/sl.js +1 -1
- package/package.json +1 -1
- package/src/components/carousel/QCarouselSlide.json +1 -1
- package/src/components/chat/QChatMessage.json +1 -1
- package/src/components/date/QDate.js +8 -3
- package/src/components/dialog/QDialog.js +2 -1
- package/src/components/dialog-bottom-sheet/BottomSheet.js +2 -0
- package/src/components/img/QImg.js +10 -1
- package/src/components/img/QImg.json +9 -2
- package/src/components/infinite-scroll/QInfiniteScroll.js +37 -2
- package/src/components/layout/QLayout.sass +1 -0
- package/src/components/layout/QLayout.styl +1 -0
- package/src/components/slide-transition/QSlideTransition.js +6 -1
- package/src/components/timeline/QTimelineEntry.json +1 -1
- package/src/css/core/visibility.sass +0 -3
- package/src/css/core/visibility.styl +0 -3
- package/src/mixins/mask.js +1 -1
- package/src/mixins/prevent-scroll.js +9 -1
- package/src/plugins/BottomSheet.json +7 -0
- package/src/utils/is.js +11 -6
package/dist/types/index.d.ts
CHANGED
|
@@ -81,6 +81,10 @@ export interface BottomSheet {
|
|
|
81
81
|
* CSS classes for this action
|
|
82
82
|
*/
|
|
83
83
|
classes? : string | any[] | LooseDictionary
|
|
84
|
+
/**
|
|
85
|
+
* Style definitions to be attributed to this action element
|
|
86
|
+
*/
|
|
87
|
+
style? : string | any[] | LooseDictionary
|
|
84
88
|
/**
|
|
85
89
|
* Icon name following Quasar convention; Make sure you have the icon library installed unless you are using 'img:' prefix; If 'none' (String) is used as value then no icon is rendered (but screen real estate will still be used for it)
|
|
86
90
|
*/
|
|
@@ -3905,6 +3909,10 @@ export interface QImg extends Vue {
|
|
|
3905
3909
|
* Enable the native context menu of the image
|
|
3906
3910
|
*/
|
|
3907
3911
|
nativeContextMenu? : boolean
|
|
3912
|
+
/**
|
|
3913
|
+
* Make the native img not-draggable (to allow swipe in QCarousel) - only has meaning when `native-context-menu` is used
|
|
3914
|
+
*/
|
|
3915
|
+
notDraggable? : boolean
|
|
3908
3916
|
}
|
|
3909
3917
|
|
|
3910
3918
|
export interface QInfiniteScroll extends Vue {
|
|
@@ -8792,6 +8800,10 @@ export interface QVueGlobals {
|
|
|
8792
8800
|
* CSS classes for this action
|
|
8793
8801
|
*/
|
|
8794
8802
|
classes? : string | any[] | LooseDictionary
|
|
8803
|
+
/**
|
|
8804
|
+
* Style definitions to be attributed to this action element
|
|
8805
|
+
*/
|
|
8806
|
+
style? : string | any[] | LooseDictionary
|
|
8795
8807
|
/**
|
|
8796
8808
|
* Icon name following Quasar convention; Make sure you have the icon library installed unless you are using 'img:' prefix; If 'none' (String) is used as value then no icon is rendered (but screen real estate will still be used for it)
|
|
8797
8809
|
*/
|
|
@@ -2367,6 +2367,10 @@
|
|
|
2367
2367
|
"type": "boolean",
|
|
2368
2368
|
"description": "Enable the native context menu of the image"
|
|
2369
2369
|
},
|
|
2370
|
+
"q-img/not-draggable": {
|
|
2371
|
+
"type": "boolean",
|
|
2372
|
+
"description": "Make the native img not-draggable (to allow swipe in QCarousel) - only has meaning when `native-context-menu` is used"
|
|
2373
|
+
},
|
|
2370
2374
|
"q-infinite-scroll/offset": {
|
|
2371
2375
|
"type": "number",
|
|
2372
2376
|
"description": "Offset (pixels) to bottom of Infinite Scroll container from which the component should start loading more content in advance"
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"$schema": "",
|
|
3
3
|
"framework": "vue",
|
|
4
4
|
"name": "quasar",
|
|
5
|
-
"version": "1.22.
|
|
5
|
+
"version": "1.22.6",
|
|
6
6
|
"contributions": {
|
|
7
7
|
"html": {
|
|
8
8
|
"types-syntax": "typescript",
|
|
@@ -2573,7 +2573,7 @@
|
|
|
2573
2573
|
"kind": "expression",
|
|
2574
2574
|
"type": "string"
|
|
2575
2575
|
},
|
|
2576
|
-
"description": "URL pointing to a slide background image (use public folder)\n\nExamples:\n(public folder) src=\"img/my-bg.png\"\n(assets folder) src=\"~assets/my-img.png\"\n(relative path format) :src=\"require('./my_img.jpg')\"\n(URL) src=\"https://
|
|
2576
|
+
"description": "URL pointing to a slide background image (use public folder)\n\nExamples:\n(public folder) src=\"img/my-bg.png\"\n(assets folder) src=\"~assets/my-img.png\"\n(relative path format) :src=\"require('./my_img.jpg')\"\n(URL) src=\"https://picsum.photos/500/300\"",
|
|
2577
2577
|
"doc-url": "https://v1.quasar.dev/vue-components/carousel"
|
|
2578
2578
|
}
|
|
2579
2579
|
],
|
|
@@ -2646,7 +2646,7 @@
|
|
|
2646
2646
|
"kind": "expression",
|
|
2647
2647
|
"type": "string"
|
|
2648
2648
|
},
|
|
2649
|
-
"description": "URL to the avatar image of the author\n\nExamples:\n(public folder) src=\"boy-avatar.png\"\n(assets folder) src=\"~assets/boy-avatar.png\"\n(relative path format) :src=\"require('./my_img.jpg')\"\n(URL) src=\"https://
|
|
2649
|
+
"description": "URL to the avatar image of the author\n\nExamples:\n(public folder) src=\"boy-avatar.png\"\n(assets folder) src=\"~assets/boy-avatar.png\"\n(relative path format) :src=\"require('./my_img.jpg')\"\n(URL) src=\"https://picsum.photos/500/300\"",
|
|
2650
2650
|
"doc-url": "https://v1.quasar.dev/vue-components/chat"
|
|
2651
2651
|
},
|
|
2652
2652
|
{
|
|
@@ -7663,7 +7663,7 @@
|
|
|
7663
7663
|
"kind": "expression",
|
|
7664
7664
|
"type": "string"
|
|
7665
7665
|
},
|
|
7666
|
-
"description": "Path to image\n\nExamples:\n(public folder) src=\"img/something.png\"\n(assets folder) src=\"~assets/my-img.gif\"\n(relative path format) :src=\"require('./my_img.jpg')\"\n(URL) src=\"https://
|
|
7666
|
+
"description": "Path to image\n\nExamples:\n(public folder) src=\"img/something.png\"\n(assets folder) src=\"~assets/my-img.gif\"\n(relative path format) :src=\"require('./my_img.jpg')\"\n(URL) src=\"https://picsum.photos/500/300\"",
|
|
7667
7667
|
"doc-url": "https://v1.quasar.dev/vue-components/img"
|
|
7668
7668
|
},
|
|
7669
7669
|
{
|
|
@@ -7717,7 +7717,7 @@
|
|
|
7717
7717
|
"kind": "expression",
|
|
7718
7718
|
"type": "string"
|
|
7719
7719
|
},
|
|
7720
|
-
"description": "While waiting for your image to load, you can use a placeholder image\n\nExamples:\n(public folder) src=\"img/some-placeholder.png\"\n(assets folder) src=\"~assets/my-placeholder.gif\"\n(relative path format) :src=\"require('./placeholder.jpg')\"\n(URL) src=\"https://
|
|
7720
|
+
"description": "While waiting for your image to load, you can use a placeholder image\n\nExamples:\n(public folder) src=\"img/some-placeholder.png\"\n(assets folder) src=\"~assets/my-placeholder.gif\"\n(relative path format) :src=\"require('./placeholder.jpg')\"\n(URL) src=\"https://picsum.photos/500/300\"",
|
|
7721
7721
|
"doc-url": "https://v1.quasar.dev/vue-components/img"
|
|
7722
7722
|
},
|
|
7723
7723
|
{
|
|
@@ -7815,6 +7815,16 @@
|
|
|
7815
7815
|
"description": "Enable the native context menu of the image",
|
|
7816
7816
|
"doc-url": "https://v1.quasar.dev/vue-components/img",
|
|
7817
7817
|
"type": "boolean"
|
|
7818
|
+
},
|
|
7819
|
+
{
|
|
7820
|
+
"name": "not-draggable",
|
|
7821
|
+
"value": {
|
|
7822
|
+
"kind": "expression",
|
|
7823
|
+
"type": "boolean"
|
|
7824
|
+
},
|
|
7825
|
+
"description": "Make the native img not-draggable (to allow swipe in QCarousel) - only has meaning when `native-context-menu` is used",
|
|
7826
|
+
"doc-url": "https://v1.quasar.dev/vue-components/img",
|
|
7827
|
+
"type": "boolean"
|
|
7818
7828
|
}
|
|
7819
7829
|
],
|
|
7820
7830
|
"events": [
|
|
@@ -19308,7 +19318,7 @@
|
|
|
19308
19318
|
"kind": "expression",
|
|
19309
19319
|
"type": "string"
|
|
19310
19320
|
},
|
|
19311
|
-
"description": "URL to the avatar image; Icon takes precedence if used, so it replaces avatar\n\nExamples:\n(public folder) src=\"img/my-bg.png\"\n(assets folder) src=\"~assets/my-img.png\"\n(relative path format) :src=\"require('./my_img.jpg')\"\n(URL) src=\"https://
|
|
19321
|
+
"description": "URL to the avatar image; Icon takes precedence if used, so it replaces avatar\n\nExamples:\n(public folder) src=\"img/my-bg.png\"\n(assets folder) src=\"~assets/my-img.png\"\n(relative path format) :src=\"require('./my_img.jpg')\"\n(URL) src=\"https://picsum.photos/500/300\"",
|
|
19312
19322
|
"doc-url": "https://v1.quasar.dev/vue-components/timeline"
|
|
19313
19323
|
},
|
|
19314
19324
|
{
|
package/lang/sl.js
CHANGED
package/package.json
CHANGED
|
@@ -26,7 +26,7 @@
|
|
|
26
26
|
"(public folder) src=\"img/my-bg.png\"",
|
|
27
27
|
"(assets folder) src=\"~assets/my-img.png\"",
|
|
28
28
|
"(relative path format) :src=\"require('./my_img.jpg')\"",
|
|
29
|
-
"(URL) src=\"https://
|
|
29
|
+
"(URL) src=\"https://picsum.photos/500/300\""
|
|
30
30
|
],
|
|
31
31
|
"category": "model"
|
|
32
32
|
}
|
|
@@ -48,7 +48,7 @@
|
|
|
48
48
|
"(public folder) src=\"boy-avatar.png\"",
|
|
49
49
|
"(assets folder) src=\"~assets/boy-avatar.png\"",
|
|
50
50
|
"(relative path format) :src=\"require('./my_img.jpg')\"",
|
|
51
|
-
"(URL) src=\"https://
|
|
51
|
+
"(URL) src=\"https://picsum.photos/500/300\""
|
|
52
52
|
],
|
|
53
53
|
"category": "content"
|
|
54
54
|
},
|
|
@@ -96,8 +96,8 @@ export default Vue.extend({
|
|
|
96
96
|
this.lastEmitValue = 0
|
|
97
97
|
}
|
|
98
98
|
else {
|
|
99
|
-
const
|
|
100
|
-
this.__updateViewModel(year, month)
|
|
99
|
+
const model = this.__getViewModel(this.innerMask, this.innerLocale)
|
|
100
|
+
this.__updateViewModel(model.year, model.month, model)
|
|
101
101
|
}
|
|
102
102
|
},
|
|
103
103
|
|
|
@@ -1265,7 +1265,7 @@ export default Vue.extend({
|
|
|
1265
1265
|
}
|
|
1266
1266
|
},
|
|
1267
1267
|
|
|
1268
|
-
__updateViewModel (year, month) {
|
|
1268
|
+
__updateViewModel (year, month, time) {
|
|
1269
1269
|
if (this.minNav !== void 0 && year <= this.minNav.year) {
|
|
1270
1270
|
year = this.minNav.year
|
|
1271
1271
|
if (month < this.minNav.month) {
|
|
@@ -1280,6 +1280,11 @@ export default Vue.extend({
|
|
|
1280
1280
|
}
|
|
1281
1281
|
}
|
|
1282
1282
|
|
|
1283
|
+
if (time !== void 0) {
|
|
1284
|
+
const { hour, minute, second, millisecond, timezoneOffset, timeHash } = time
|
|
1285
|
+
Object.assign(this.viewModel, { hour, minute, second, millisecond, timezoneOffset, timeHash })
|
|
1286
|
+
}
|
|
1287
|
+
|
|
1283
1288
|
const newHash = year + '/' + pad(month) + '/01'
|
|
1284
1289
|
|
|
1285
1290
|
if (newHash !== this.viewModel.dateHash) {
|
|
@@ -372,7 +372,7 @@ export default Vue.extend({
|
|
|
372
372
|
staticClass: 'q-dialog__backdrop fixed-full',
|
|
373
373
|
attrs: backdropAttrs,
|
|
374
374
|
on: cache(this, 'bkdrop', {
|
|
375
|
-
[ this
|
|
375
|
+
[ this.backdropEvt ]: this.__onBackdropClick
|
|
376
376
|
})
|
|
377
377
|
})
|
|
378
378
|
] : null),
|
|
@@ -395,6 +395,7 @@ export default Vue.extend({
|
|
|
395
395
|
created () {
|
|
396
396
|
this.__useTick('__registerTick', '__removeTick')
|
|
397
397
|
this.__useTimeout('__registerTimeout')
|
|
398
|
+
this.backdropEvt = this.$q.platform.is.ios === true || this.$q.platform.is.safari ? 'click' : 'focusin'
|
|
398
399
|
},
|
|
399
400
|
|
|
400
401
|
mounted () {
|
|
@@ -76,6 +76,7 @@ export default Vue.extend({
|
|
|
76
76
|
: h('div', {
|
|
77
77
|
staticClass: 'q-bottom-sheet__item q-hoverable q-focusable cursor-pointer relative-position',
|
|
78
78
|
class: action.classes,
|
|
79
|
+
style: action.style,
|
|
79
80
|
attrs: attrsGridItem,
|
|
80
81
|
on: {
|
|
81
82
|
click: () => {
|
|
@@ -113,6 +114,7 @@ export default Vue.extend({
|
|
|
113
114
|
: h(QItem, {
|
|
114
115
|
staticClass: 'q-bottom-sheet__item',
|
|
115
116
|
class: action.classes,
|
|
117
|
+
style: action.style,
|
|
116
118
|
props: {
|
|
117
119
|
tabindex: 0,
|
|
118
120
|
clickable: true,
|
|
@@ -38,6 +38,7 @@ export default Vue.extend({
|
|
|
38
38
|
imgStyle: Object,
|
|
39
39
|
|
|
40
40
|
nativeContextMenu: Boolean,
|
|
41
|
+
notDraggable: Boolean,
|
|
41
42
|
|
|
42
43
|
noDefaultSpinner: Boolean,
|
|
43
44
|
spinnerColor: String,
|
|
@@ -77,6 +78,14 @@ export default Vue.extend({
|
|
|
77
78
|
return att
|
|
78
79
|
},
|
|
79
80
|
|
|
81
|
+
imgAttrs () {
|
|
82
|
+
const att = { src: this.url, 'aria-hidden': 'true' }
|
|
83
|
+
if (this.notDraggable === true) {
|
|
84
|
+
att.draggable = false
|
|
85
|
+
}
|
|
86
|
+
return att
|
|
87
|
+
},
|
|
88
|
+
|
|
80
89
|
imgContainerStyle () {
|
|
81
90
|
return Object.assign(
|
|
82
91
|
{
|
|
@@ -228,7 +237,7 @@ export default Vue.extend({
|
|
|
228
237
|
? [
|
|
229
238
|
h('img', {
|
|
230
239
|
staticClass: 'absolute-full fit',
|
|
231
|
-
attrs:
|
|
240
|
+
attrs: this.imgAttrs
|
|
232
241
|
})
|
|
233
242
|
]
|
|
234
243
|
: void 0
|
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
"(public folder) src=\"img/something.png\"",
|
|
19
19
|
"(assets folder) src=\"~assets/my-img.gif\"",
|
|
20
20
|
"(relative path format) :src=\"require('./my_img.jpg')\"",
|
|
21
|
-
"(URL) src=\"https://
|
|
21
|
+
"(URL) src=\"https://picsum.photos/500/300\""
|
|
22
22
|
],
|
|
23
23
|
"category": "model"
|
|
24
24
|
},
|
|
@@ -80,7 +80,7 @@
|
|
|
80
80
|
"(public folder) src=\"img/some-placeholder.png\"",
|
|
81
81
|
"(assets folder) src=\"~assets/my-placeholder.gif\"",
|
|
82
82
|
"(relative path format) :src=\"require('./placeholder.jpg')\"",
|
|
83
|
-
"(URL) src=\"https://
|
|
83
|
+
"(URL) src=\"https://picsum.photos/500/300\""
|
|
84
84
|
],
|
|
85
85
|
"category": "model"
|
|
86
86
|
},
|
|
@@ -163,6 +163,13 @@
|
|
|
163
163
|
"desc": "Enable the native context menu of the image",
|
|
164
164
|
"category": "behavior",
|
|
165
165
|
"addedIn": "v1.8.4"
|
|
166
|
+
},
|
|
167
|
+
|
|
168
|
+
"not-draggable": {
|
|
169
|
+
"type": "Boolean",
|
|
170
|
+
"desc": "Make the native img not-draggable (to allow swipe in QCarousel) - only has meaning when `native-context-menu` is used",
|
|
171
|
+
"category": "behavior",
|
|
172
|
+
"addedIn": "v1.22.6"
|
|
166
173
|
}
|
|
167
174
|
},
|
|
168
175
|
|
|
@@ -44,6 +44,12 @@ export default Vue.extend({
|
|
|
44
44
|
}
|
|
45
45
|
},
|
|
46
46
|
|
|
47
|
+
computed: {
|
|
48
|
+
renderLoadingSlot () {
|
|
49
|
+
return this.disable !== true && this.isWorking === true
|
|
50
|
+
}
|
|
51
|
+
},
|
|
52
|
+
|
|
47
53
|
watch: {
|
|
48
54
|
disable (val) {
|
|
49
55
|
if (val === true) { this.stop() }
|
|
@@ -62,6 +68,14 @@ export default Vue.extend({
|
|
|
62
68
|
|
|
63
69
|
debounce (val) {
|
|
64
70
|
this.__setDebounce(val)
|
|
71
|
+
},
|
|
72
|
+
|
|
73
|
+
isFetching () {
|
|
74
|
+
this.__updateSvgAnimations()
|
|
75
|
+
},
|
|
76
|
+
|
|
77
|
+
renderLoadingSlot () {
|
|
78
|
+
this.__updateSvgAnimations()
|
|
65
79
|
}
|
|
66
80
|
},
|
|
67
81
|
|
|
@@ -183,14 +197,34 @@ export default Vue.extend({
|
|
|
183
197
|
|
|
184
198
|
this.__scrollTarget.addEventListener('scroll', this.poll, passive)
|
|
185
199
|
}
|
|
200
|
+
},
|
|
201
|
+
|
|
202
|
+
__updateSvgAnimations (isRetry) {
|
|
203
|
+
if (this.renderLoadingSlot === true) {
|
|
204
|
+
const el = this.$refs.loading
|
|
205
|
+
|
|
206
|
+
if (!el) {
|
|
207
|
+
isRetry !== true && this.$nextTick(() => {
|
|
208
|
+
this.__updateSvgAnimations(true)
|
|
209
|
+
})
|
|
210
|
+
return
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
// we need to pause svg animations (if any) when hiding
|
|
214
|
+
// otherwise the browser will keep on recalculating the style
|
|
215
|
+
const action = `${ this.isFetching === true ? 'un' : '' }pauseAnimations`
|
|
216
|
+
Array.from(el.getElementsByTagName('svg')).forEach(el => {
|
|
217
|
+
el[ action ]()
|
|
218
|
+
})
|
|
219
|
+
}
|
|
186
220
|
}
|
|
187
221
|
},
|
|
188
222
|
|
|
189
223
|
mounted () {
|
|
190
224
|
this.immediatePoll = this.poll
|
|
191
225
|
this.__setDebounce(this.debounce)
|
|
192
|
-
|
|
193
226
|
this.updateScrollTarget()
|
|
227
|
+
this.isFetching === false && this.__updateSvgAnimations()
|
|
194
228
|
},
|
|
195
229
|
|
|
196
230
|
activated () {
|
|
@@ -212,9 +246,10 @@ export default Vue.extend({
|
|
|
212
246
|
render (h) {
|
|
213
247
|
const child = uniqueSlot(this, 'default', [])
|
|
214
248
|
|
|
215
|
-
if (this.
|
|
249
|
+
if (this.renderLoadingSlot === true) {
|
|
216
250
|
child[this.reverse === false ? 'push' : 'unshift'](
|
|
217
251
|
h('div', {
|
|
252
|
+
ref: 'loading',
|
|
218
253
|
staticClass: 'q-infinite-scroll__loading',
|
|
219
254
|
class: this.isFetching === true ? '' : 'invisible'
|
|
220
255
|
}, slot(this, 'loading'))
|
|
@@ -16,7 +16,7 @@ export default Vue.extend({
|
|
|
16
16
|
|
|
17
17
|
methods: {
|
|
18
18
|
__begin (el, height, done) {
|
|
19
|
-
|
|
19
|
+
// here overflowY is 'hidden'
|
|
20
20
|
if (height !== void 0) {
|
|
21
21
|
el.style.height = `${height}px`
|
|
22
22
|
}
|
|
@@ -61,12 +61,14 @@ export default Vue.extend({
|
|
|
61
61
|
let pos = 0
|
|
62
62
|
this.el = el
|
|
63
63
|
|
|
64
|
+
// if animationg overflowY is already 'hidden'
|
|
64
65
|
if (this.animating === true) {
|
|
65
66
|
this.__cleanup()
|
|
66
67
|
pos = el.offsetHeight === el.scrollHeight ? 0 : void 0
|
|
67
68
|
}
|
|
68
69
|
else {
|
|
69
70
|
this.lastEvent = 'hide'
|
|
71
|
+
el.style.overflowY = 'hidden'
|
|
70
72
|
}
|
|
71
73
|
|
|
72
74
|
this.__begin(el, pos, done)
|
|
@@ -92,6 +94,9 @@ export default Vue.extend({
|
|
|
92
94
|
}
|
|
93
95
|
else {
|
|
94
96
|
this.lastEvent = 'show'
|
|
97
|
+
// we need to set overflowY 'hidden' before calculating the height
|
|
98
|
+
// or else we get small differences
|
|
99
|
+
el.style.overflowY = 'hidden'
|
|
95
100
|
pos = el.scrollHeight
|
|
96
101
|
}
|
|
97
102
|
|
|
@@ -42,7 +42,7 @@
|
|
|
42
42
|
"(public folder) src=\"img/my-bg.png\"",
|
|
43
43
|
"(assets folder) src=\"~assets/my-img.png\"",
|
|
44
44
|
"(relative path format) :src=\"require('./my_img.jpg')\"",
|
|
45
|
-
"(URL) src=\"https://
|
|
45
|
+
"(URL) src=\"https://picsum.photos/500/300\""
|
|
46
46
|
],
|
|
47
47
|
"category": "content"
|
|
48
48
|
},
|
|
@@ -40,8 +40,6 @@
|
|
|
40
40
|
visibility: hidden !important
|
|
41
41
|
transition: none !important
|
|
42
42
|
animation: none !important
|
|
43
|
-
.invisible svg *
|
|
44
|
-
display: none
|
|
45
43
|
.transparent
|
|
46
44
|
background: transparent !important
|
|
47
45
|
|
|
@@ -164,4 +162,3 @@ body.desktop
|
|
|
164
162
|
.q-focusable:focus, .q-manual-focusable--focused
|
|
165
163
|
> .q-focus-helper
|
|
166
164
|
opacity: .22
|
|
167
|
-
|
|
@@ -40,8 +40,6 @@
|
|
|
40
40
|
visibility: hidden !important
|
|
41
41
|
transition: none !important
|
|
42
42
|
animation: none !important
|
|
43
|
-
.invisible svg *
|
|
44
|
-
display: none
|
|
45
43
|
.transparent
|
|
46
44
|
background: transparent !important
|
|
47
45
|
|
|
@@ -163,4 +161,3 @@ body.desktop
|
|
|
163
161
|
.q-focusable:focus, .q-manual-focusable--focused
|
|
164
162
|
> .q-focus-helper
|
|
165
163
|
opacity: .22
|
|
166
|
-
|
package/src/mixins/mask.js
CHANGED
|
@@ -190,7 +190,7 @@ export default {
|
|
|
190
190
|
|
|
191
191
|
this.computedMask = mask
|
|
192
192
|
this.computedUnmask = val => {
|
|
193
|
-
const unmaskMatch = unmaskMatcher.exec(this.reverseFillMask === true ? val : val.slice(0, mask.length))
|
|
193
|
+
const unmaskMatch = unmaskMatcher.exec(this.reverseFillMask === true ? val : val.slice(0, mask.length + 1))
|
|
194
194
|
if (unmaskMatch !== null) {
|
|
195
195
|
val = unmaskMatch.slice(1).join('')
|
|
196
196
|
}
|
|
@@ -10,6 +10,7 @@ let
|
|
|
10
10
|
vpPendingUpdate = false,
|
|
11
11
|
bodyLeft,
|
|
12
12
|
bodyTop,
|
|
13
|
+
href,
|
|
13
14
|
closeTimer
|
|
14
15
|
|
|
15
16
|
function onWheel (e) {
|
|
@@ -96,6 +97,8 @@ function apply (action) {
|
|
|
96
97
|
bodyLeft = body.style.left
|
|
97
98
|
bodyTop = body.style.top
|
|
98
99
|
|
|
100
|
+
href = window.location.href
|
|
101
|
+
|
|
99
102
|
body.style.left = `-${scrollPositionX}px`
|
|
100
103
|
body.style.top = `-${scrollPositionY}px`
|
|
101
104
|
if (overflowY !== 'hidden' && (overflowY === 'scroll' || body.scrollHeight > window.innerHeight)) {
|
|
@@ -104,6 +107,7 @@ function apply (action) {
|
|
|
104
107
|
|
|
105
108
|
body.classList.add('q-body--prevent-scroll')
|
|
106
109
|
document.qScrollPrevented = true
|
|
110
|
+
|
|
107
111
|
if (client.is.ios === true) {
|
|
108
112
|
if (hasViewport === true) {
|
|
109
113
|
window.scrollTo(0, 0)
|
|
@@ -140,7 +144,11 @@ function apply (action) {
|
|
|
140
144
|
body.style.left = bodyLeft
|
|
141
145
|
body.style.top = bodyTop
|
|
142
146
|
|
|
143
|
-
|
|
147
|
+
// scroll back only if route has not changed
|
|
148
|
+
if (window.location.href === href) {
|
|
149
|
+
window.scrollTo(scrollPositionX, scrollPositionY)
|
|
150
|
+
}
|
|
151
|
+
|
|
144
152
|
maxScrollTop = void 0
|
|
145
153
|
}
|
|
146
154
|
}
|
|
@@ -37,6 +37,13 @@
|
|
|
37
37
|
"examples": [ "my-class" ]
|
|
38
38
|
},
|
|
39
39
|
|
|
40
|
+
"style": {
|
|
41
|
+
"type": [ "String", "Array", "Object" ],
|
|
42
|
+
"desc": "Style definitions to be attributed to this action element",
|
|
43
|
+
"examples": [ "border: 2px solid black" ],
|
|
44
|
+
"addedIn": "v1.22.6"
|
|
45
|
+
},
|
|
46
|
+
|
|
40
47
|
"icon": {
|
|
41
48
|
"extends": "icon"
|
|
42
49
|
},
|
package/src/utils/is.js
CHANGED
|
@@ -36,20 +36,23 @@ export function isDeepEqual (a, b) {
|
|
|
36
36
|
return false
|
|
37
37
|
}
|
|
38
38
|
|
|
39
|
-
|
|
39
|
+
let iter = a.entries()
|
|
40
|
+
|
|
41
|
+
i = iter.next()
|
|
40
42
|
while (i.done !== true) {
|
|
41
43
|
if (b.has(i.value[0]) !== true) {
|
|
42
44
|
return false
|
|
43
45
|
}
|
|
44
|
-
i =
|
|
46
|
+
i = iter.next()
|
|
45
47
|
}
|
|
46
48
|
|
|
47
|
-
|
|
49
|
+
iter = a.entries()
|
|
50
|
+
i = iter.next()
|
|
48
51
|
while (i.done !== true) {
|
|
49
52
|
if (isDeepEqual(i.value[1], b.get(i.value[0])) !== true) {
|
|
50
53
|
return false
|
|
51
54
|
}
|
|
52
|
-
i =
|
|
55
|
+
i = iter.next()
|
|
53
56
|
}
|
|
54
57
|
|
|
55
58
|
return true
|
|
@@ -60,12 +63,14 @@ export function isDeepEqual (a, b) {
|
|
|
60
63
|
return false
|
|
61
64
|
}
|
|
62
65
|
|
|
63
|
-
|
|
66
|
+
const iter = a.entries()
|
|
67
|
+
|
|
68
|
+
i = iter.next()
|
|
64
69
|
while (i.done !== true) {
|
|
65
70
|
if (b.has(i.value[0]) !== true) {
|
|
66
71
|
return false
|
|
67
72
|
}
|
|
68
|
-
i =
|
|
73
|
+
i = iter.next()
|
|
69
74
|
}
|
|
70
75
|
|
|
71
76
|
return true
|