quasar 2.5.3 → 2.6.0
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/README.md +1 -1
- package/dist/api/BottomSheet.json +1 -1
- package/dist/api/Dialog.json +9 -2
- package/dist/api/Notify.json +205 -5
- package/dist/api/QAvatar.json +1 -1
- package/dist/api/QBreadcrumbsEl.json +1 -1
- package/dist/api/QBtn.json +4 -4
- package/dist/api/QBtnDropdown.json +17 -17
- package/dist/api/QCarousel.json +4 -4
- package/dist/api/QCheckbox.json +1 -1
- package/dist/api/QChip.json +5 -5
- package/dist/api/QDialog.json +13 -13
- package/dist/api/QDrawer.json +16 -16
- package/dist/api/QExpansionItem.json +15 -15
- package/dist/api/QFab.json +15 -15
- package/dist/api/QFabAction.json +3 -3
- package/dist/api/QField.json +2 -2
- package/dist/api/QFile.json +1 -1
- package/dist/api/QForm.json +12 -3
- package/dist/api/QIcon.json +4 -2
- package/dist/api/QInput.json +2 -2
- package/dist/api/QKnob.json +23 -0
- package/dist/api/QMenu.json +13 -13
- package/dist/api/QPagination.json +4 -4
- package/dist/api/QPopupEdit.json +6 -6
- package/dist/api/QPopupProxy.json +13 -13
- package/dist/api/QRadio.json +1 -1
- package/dist/api/QRange.json +1 -1
- package/dist/api/QRouteTab.json +2 -2
- package/dist/api/QSelect.json +18 -5
- package/dist/api/QSlider.json +1 -1
- package/dist/api/QStep.json +4 -4
- package/dist/api/QStepper.json +4 -4
- package/dist/api/QTab.json +1 -1
- package/dist/api/QTable.json +6 -6
- package/dist/api/QTimelineEntry.json +1 -1
- package/dist/api/QToggle.json +2 -2
- package/dist/api/QTooltip.json +13 -13
- package/dist/api/QTree.json +1 -1
- package/dist/api/QUploader.json +1 -1
- package/dist/api/TouchHold.json +1 -1
- package/dist/api/TouchPan.json +1 -1
- package/dist/api/TouchRepeat.json +1 -1
- package/dist/api/TouchSwipe.json +1 -1
- package/dist/icon-set/bootstrap-icons.umd.prod.js +1 -1
- package/dist/icon-set/eva-icons.umd.prod.js +1 -1
- package/dist/icon-set/fontawesome-v5-pro.umd.prod.js +1 -1
- package/dist/icon-set/fontawesome-v5.umd.prod.js +1 -1
- package/dist/icon-set/fontawesome-v6-pro.umd.prod.js +6 -0
- package/dist/icon-set/fontawesome-v6.umd.prod.js +6 -0
- package/dist/icon-set/ionicons-v4.umd.prod.js +1 -1
- package/dist/icon-set/line-awesome.umd.prod.js +1 -1
- package/dist/icon-set/material-icons-outlined.umd.prod.js +1 -1
- package/dist/icon-set/material-icons-round.umd.prod.js +1 -1
- package/dist/icon-set/material-icons-sharp.umd.prod.js +1 -1
- package/dist/icon-set/material-icons.umd.prod.js +1 -1
- package/dist/icon-set/mdi-v3.umd.prod.js +1 -1
- package/dist/icon-set/mdi-v4.umd.prod.js +1 -1
- package/dist/icon-set/mdi-v5.umd.prod.js +1 -1
- package/dist/icon-set/mdi-v6.umd.prod.js +1 -1
- package/dist/icon-set/svg-bootstrap-icons.umd.prod.js +2 -2
- package/dist/icon-set/svg-eva-icons.umd.prod.js +2 -2
- package/dist/icon-set/svg-fontawesome-v5.umd.prod.js +2 -2
- package/dist/icon-set/svg-fontawesome-v6.umd.prod.js +6 -0
- package/dist/icon-set/svg-ionicons-v4.umd.prod.js +1 -1
- package/dist/icon-set/svg-ionicons-v5.umd.prod.js +1 -1
- package/dist/icon-set/svg-ionicons-v6.umd.prod.js +2 -2
- package/dist/icon-set/svg-line-awesome.umd.prod.js +1 -1
- package/dist/icon-set/svg-material-icons-outlined.umd.prod.js +1 -1
- package/dist/icon-set/svg-material-icons-round.umd.prod.js +1 -1
- package/dist/icon-set/svg-material-icons-sharp.umd.prod.js +1 -1
- package/dist/icon-set/svg-material-icons.umd.prod.js +1 -1
- package/dist/icon-set/svg-mdi-v4.umd.prod.js +1 -1
- package/dist/icon-set/svg-mdi-v5.umd.prod.js +1 -1
- package/dist/icon-set/svg-mdi-v6.umd.prod.js +2 -2
- package/dist/icon-set/svg-themify.umd.prod.js +2 -2
- package/dist/icon-set/themify.umd.prod.js +1 -1
- package/dist/lang/ar.umd.prod.js +1 -1
- package/dist/lang/az-Latn.umd.prod.js +1 -1
- package/dist/lang/bg.umd.prod.js +1 -1
- package/dist/lang/bn.umd.prod.js +1 -1
- package/dist/lang/ca.umd.prod.js +1 -1
- package/dist/lang/cs.umd.prod.js +1 -1
- package/dist/lang/da.umd.prod.js +1 -1
- package/dist/lang/de.umd.prod.js +1 -1
- package/dist/lang/el.umd.prod.js +1 -1
- package/dist/lang/en-GB.umd.prod.js +1 -1
- package/dist/lang/en-US.umd.prod.js +1 -1
- package/dist/lang/eo.umd.prod.js +1 -1
- package/dist/lang/es.umd.prod.js +1 -1
- package/dist/lang/et.umd.prod.js +1 -1
- package/dist/lang/eu.umd.prod.js +6 -0
- package/dist/lang/fa-IR.umd.prod.js +1 -1
- package/dist/lang/fa.umd.prod.js +1 -1
- package/dist/lang/fi.umd.prod.js +1 -1
- package/dist/lang/fr.umd.prod.js +1 -1
- package/dist/lang/gn.umd.prod.js +1 -1
- package/dist/lang/he.umd.prod.js +1 -1
- package/dist/lang/hr.umd.prod.js +1 -1
- package/dist/lang/hu.umd.prod.js +1 -1
- package/dist/lang/id.umd.prod.js +1 -1
- package/dist/lang/is.umd.prod.js +1 -1
- package/dist/lang/it.umd.prod.js +1 -1
- package/dist/lang/ja.umd.prod.js +1 -1
- package/dist/lang/km.umd.prod.js +1 -1
- package/dist/lang/ko-KR.umd.prod.js +1 -1
- package/dist/lang/kur-CKB.umd.prod.js +1 -1
- package/dist/lang/kz.umd.prod.js +6 -0
- package/dist/lang/lt.umd.prod.js +1 -1
- package/dist/lang/lu.umd.prod.js +1 -1
- package/dist/lang/lv.umd.prod.js +1 -1
- package/dist/lang/ml.umd.prod.js +1 -1
- package/dist/lang/ms.umd.prod.js +1 -1
- package/dist/lang/my.umd.prod.js +1 -1
- package/dist/lang/nb-NO.umd.prod.js +1 -1
- package/dist/lang/nl.umd.prod.js +1 -1
- package/dist/lang/pl.umd.prod.js +1 -1
- package/dist/lang/pt-BR.umd.prod.js +1 -1
- package/dist/lang/pt.umd.prod.js +1 -1
- package/dist/lang/ro.umd.prod.js +1 -1
- package/dist/lang/ru.umd.prod.js +1 -1
- package/dist/lang/sk.umd.prod.js +1 -1
- package/dist/lang/sl.umd.prod.js +1 -1
- package/dist/lang/sr-CYR.umd.prod.js +1 -1
- package/dist/lang/sr.umd.prod.js +1 -1
- package/dist/lang/sv.umd.prod.js +1 -1
- package/dist/lang/ta.umd.prod.js +1 -1
- package/dist/lang/th.umd.prod.js +1 -1
- package/dist/lang/tr.umd.prod.js +1 -1
- package/dist/lang/ug.umd.prod.js +2 -2
- package/dist/lang/uk.umd.prod.js +1 -1
- package/dist/lang/vi.umd.prod.js +1 -1
- package/dist/lang/zh-CN.umd.prod.js +1 -1
- package/dist/lang/zh-TW.umd.prod.js +1 -1
- package/dist/quasar.cjs.prod.js +2 -2
- package/dist/quasar.css +4 -6
- package/dist/quasar.esm.prod.js +2 -2
- package/dist/quasar.prod.css +1 -1
- package/dist/quasar.rtl.css +4 -6
- package/dist/quasar.rtl.prod.css +1 -1
- package/dist/quasar.sass +3 -1
- package/dist/quasar.umd.js +560 -505
- package/dist/quasar.umd.prod.js +2 -2
- package/dist/types/extras/icon-set.d.ts +3 -0
- package/dist/types/globals.d.ts +2 -2
- package/dist/types/index.d.ts +254 -136
- package/dist/vetur/quasar-attributes.json +50 -38
- package/dist/vetur/quasar-tags.json +3 -0
- package/dist/web-types/web-types.json +129 -93
- package/icon-set/fontawesome-v6-pro.js +128 -0
- package/icon-set/fontawesome-v6.js +128 -0
- package/icon-set/svg-fontawesome-v6.js +198 -0
- package/lang/eu.js +91 -0
- package/lang/index.json +8 -0
- package/lang/kz.js +95 -0
- package/lang/ug.js +49 -50
- package/package.json +1 -1
- package/src/api-file-example.json +2 -2
- package/src/api.extends.json +22 -33
- package/src/components/btn/QBtn.js +16 -14
- package/src/components/btn/QBtn.json +3 -6
- package/src/components/btn/use-btn.js +7 -7
- package/src/components/carousel/QCarousel.json +2 -4
- package/src/components/checkbox/use-checkbox.json +2 -4
- package/src/components/chip/QChip.json +1 -3
- package/src/components/date/QDate.js +20 -19
- package/src/components/date/use-datetime.js +3 -1
- package/src/components/dialog/QDialog.js +11 -11
- package/src/components/dialog-bottom-sheet/BottomSheet.js +11 -11
- package/src/components/dialog-plugin/DialogPlugin.js +9 -8
- package/src/components/editor/QEditor.js +10 -10
- package/src/components/editor/editor-utils.js +2 -2
- package/src/components/fab/QFabAction.json +1 -3
- package/src/components/field/QField.json +2 -6
- package/src/components/file/QFile.js +2 -1
- package/src/components/form/QForm.json +10 -7
- package/src/components/icon/QIcon.js +6 -2
- package/src/components/icon/QIcon.json +1 -3
- package/src/components/infinite-scroll/QInfiniteScroll.js +3 -1
- package/src/components/inner-loading/QInnerLoading.js +7 -7
- package/src/components/input/QInput.js +4 -1
- package/src/components/input/QInput.json +2 -6
- package/src/components/input/use-mask.js +2 -2
- package/src/components/knob/QKnob.js +51 -42
- package/src/components/knob/QKnob.json +22 -0
- package/src/components/linear-progress/QLinearProgress.sass +1 -0
- package/src/components/menu/QMenu.js +13 -13
- package/src/components/page-scroller/QPageScroller.js +4 -4
- package/src/components/pull-to-refresh/QPullToRefresh.js +5 -5
- package/src/components/radio/QRadio.json +2 -4
- package/src/components/select/QSelect.js +14 -7
- package/src/components/select/QSelect.json +14 -8
- package/src/components/slide-transition/QSlideTransition.js +4 -4
- package/src/components/slider/use-slider.js +4 -4
- package/src/components/slider/use-slider.json +1 -1
- package/src/components/stepper/QStep.js +6 -6
- package/src/components/stepper/QStep.json +3 -0
- package/src/components/stepper/QStepper.json +3 -0
- package/src/components/stepper/QStepper.sass +1 -0
- package/src/components/stepper/StepHeader.js +23 -8
- package/src/components/table/QTable.json +5 -13
- package/src/components/table/table-column-selection.js +6 -6
- package/src/components/table/table-sort.js +2 -2
- package/src/components/tabs/QRouteTab.json +2 -3
- package/src/components/tabs/QTabs.js +4 -4
- package/src/components/tabs/use-tab.js +11 -8
- package/src/components/time/QTime.js +5 -5
- package/src/components/tooltip/QTooltip.js +12 -12
- package/src/components/uploader/uploader-core.js +11 -10
- package/src/components/virtual-scroll/QVirtualScroll.js +3 -3
- package/src/components/virtual-scroll/use-virtual-scroll.js +20 -20
- package/src/composables/private/use-field.js +25 -17
- package/src/composables/private/use-file-dom-props.js +5 -5
- package/src/composables/private/use-file.js +15 -12
- package/src/composables/private/use-file.json +1 -3
- package/src/composables/private/use-router-link.js +3 -3
- package/src/directives/Morph.js +12 -3
- package/src/directives/TouchHold.json +2 -3
- package/src/directives/TouchPan.json +2 -3
- package/src/directives/TouchRepeat.json +2 -3
- package/src/directives/TouchSwipe.json +2 -3
- package/src/install-quasar.js +37 -36
- package/src/plugins/AddressbarColor.js +7 -7
- package/src/plugins/Cookies.js +5 -1
- package/src/plugins/Dialog.json +3 -2
- package/src/plugins/Loading.js +3 -2
- package/src/plugins/LoadingBar.js +12 -5
- package/src/plugins/Notify.js +11 -4
- package/src/plugins/Notify.json +102 -2
- package/src/utils/create-meta-mixin.js +4 -4
- package/src/utils/create-uploader-component.js +2 -1
- package/src/utils/event.js +3 -3
- package/src/utils/extend.js +6 -34
- package/src/utils/morph.js +19 -17
- package/src/utils/private/is.js +3 -14
- package/src/utils/private/noop-ssr-directive-transform.js +1 -1
- package/src/utils/private/web-storage.js +3 -2
- package/wrappers/index.js +33 -5
- package/wrappers/index.mjs +63 -0
- package/dist/ssr-directives/Morph.js +0 -55
- package/dist/ssr-directives/index.js +0 -14
- package/src/directives/Morph.ssr.js +0 -45
|
@@ -366,14 +366,6 @@ export default function (state) {
|
|
|
366
366
|
}, getControlContainer())
|
|
367
367
|
)
|
|
368
368
|
|
|
369
|
-
slots.append !== void 0 && node.push(
|
|
370
|
-
h('div', {
|
|
371
|
-
class: 'q-field__append q-field__marginal row no-wrap items-center',
|
|
372
|
-
key: 'append',
|
|
373
|
-
onClick: prevent
|
|
374
|
-
}, slots.append())
|
|
375
|
-
)
|
|
376
|
-
|
|
377
369
|
hasError.value === true && props.noErrorIcon === false && node.push(
|
|
378
370
|
getInnerAppendNode('error', [
|
|
379
371
|
h(QIcon, { name: $q.iconSet.field.error, color: 'negative' })
|
|
@@ -407,6 +399,14 @@ export default function (state) {
|
|
|
407
399
|
)
|
|
408
400
|
}
|
|
409
401
|
|
|
402
|
+
slots.append !== void 0 && node.push(
|
|
403
|
+
h('div', {
|
|
404
|
+
class: 'q-field__append q-field__marginal row no-wrap items-center',
|
|
405
|
+
key: 'append',
|
|
406
|
+
onClick: prevent
|
|
407
|
+
}, slots.append())
|
|
408
|
+
)
|
|
409
|
+
|
|
410
410
|
state.getInnerAppend !== void 0 && node.push(
|
|
411
411
|
getInnerAppendNode('inner-append', state.getInnerAppend())
|
|
412
412
|
)
|
|
@@ -511,8 +511,8 @@ export default function (state) {
|
|
|
511
511
|
|
|
512
512
|
hasCounter === true
|
|
513
513
|
? h('div', {
|
|
514
|
-
|
|
515
|
-
|
|
514
|
+
class: 'q-field__counter'
|
|
515
|
+
}, slots.counter !== void 0 ? slots.counter() : state.computedCounter.value)
|
|
516
516
|
: null
|
|
517
517
|
])
|
|
518
518
|
}
|
|
@@ -552,6 +552,14 @@ export default function (state) {
|
|
|
552
552
|
})
|
|
553
553
|
|
|
554
554
|
return function renderField () {
|
|
555
|
+
const labelAttrs = state.getControl === void 0 && slots.control === void 0
|
|
556
|
+
? {
|
|
557
|
+
...state.splitAttrs.attributes.value,
|
|
558
|
+
'data-autofocus': props.autofocus,
|
|
559
|
+
...attributes.value
|
|
560
|
+
}
|
|
561
|
+
: attributes.value
|
|
562
|
+
|
|
555
563
|
return h('label', {
|
|
556
564
|
ref: state.rootRef,
|
|
557
565
|
class: [
|
|
@@ -559,13 +567,13 @@ export default function (state) {
|
|
|
559
567
|
attrs.class
|
|
560
568
|
],
|
|
561
569
|
style: attrs.style,
|
|
562
|
-
...
|
|
570
|
+
...labelAttrs
|
|
563
571
|
}, [
|
|
564
572
|
slots.before !== void 0
|
|
565
573
|
? h('div', {
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
|
|
574
|
+
class: 'q-field__before q-field__marginal row no-wrap items-center',
|
|
575
|
+
onClick: prevent
|
|
576
|
+
}, slots.before())
|
|
569
577
|
: null,
|
|
570
578
|
|
|
571
579
|
h('div', {
|
|
@@ -585,9 +593,9 @@ export default function (state) {
|
|
|
585
593
|
|
|
586
594
|
slots.after !== void 0
|
|
587
595
|
? h('div', {
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
|
|
596
|
+
class: 'q-field__after q-field__marginal row no-wrap items-center',
|
|
597
|
+
onClick: prevent
|
|
598
|
+
}, slots.after())
|
|
591
599
|
: null
|
|
592
600
|
])
|
|
593
601
|
}
|
|
@@ -34,11 +34,11 @@ export default function (props, typeGuard) {
|
|
|
34
34
|
|
|
35
35
|
return typeGuard === true
|
|
36
36
|
? computed(() => {
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
37
|
+
if (props.type !== 'file') {
|
|
38
|
+
return
|
|
39
|
+
}
|
|
40
40
|
|
|
41
|
-
|
|
42
|
-
|
|
41
|
+
return getFormDomProps()
|
|
42
|
+
})
|
|
43
43
|
: computed(getFormDomProps)
|
|
44
44
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { h, computed, getCurrentInstance } from 'vue'
|
|
1
|
+
import { h, ref, computed, getCurrentInstance } from 'vue'
|
|
2
2
|
|
|
3
3
|
import { stop, stopAndPrevent } from '../../utils/event.js'
|
|
4
4
|
|
|
@@ -42,18 +42,20 @@ export default function ({
|
|
|
42
42
|
}) {
|
|
43
43
|
const { props, emit, proxy } = getCurrentInstance()
|
|
44
44
|
|
|
45
|
+
const dndRef = ref(null)
|
|
46
|
+
|
|
45
47
|
const extensions = computed(() => (
|
|
46
48
|
props.accept !== void 0
|
|
47
49
|
? props.accept.split(',').map(ext => {
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
50
|
+
ext = ext.trim()
|
|
51
|
+
if (ext === '*') { // support "*"
|
|
52
|
+
return '*/'
|
|
53
|
+
}
|
|
54
|
+
else if (ext.endsWith('/*')) { // support "image/*" or "*/*"
|
|
55
|
+
ext = ext.slice(0, ext.length - 1)
|
|
56
|
+
}
|
|
57
|
+
return ext.toUpperCase()
|
|
58
|
+
})
|
|
57
59
|
: null
|
|
58
60
|
))
|
|
59
61
|
|
|
@@ -118,7 +120,7 @@ export default function ({
|
|
|
118
120
|
// Cordova/iOS allows selecting multiple files even when the
|
|
119
121
|
// multiple attribute is not specified. We also normalize drag'n'dropped
|
|
120
122
|
// files here:
|
|
121
|
-
if (props.multiple !== true) {
|
|
123
|
+
if (props.multiple !== true && files.length > 0) {
|
|
122
124
|
files = [ files[ 0 ] ]
|
|
123
125
|
}
|
|
124
126
|
|
|
@@ -183,7 +185,7 @@ export default function ({
|
|
|
183
185
|
|
|
184
186
|
function onDragleave (e) {
|
|
185
187
|
stopAndPrevent(e)
|
|
186
|
-
dnd.value = false
|
|
188
|
+
e.relatedTarget !== dndRef.value && (dnd.value = false)
|
|
187
189
|
}
|
|
188
190
|
|
|
189
191
|
function onDrop (e) {
|
|
@@ -200,6 +202,7 @@ export default function ({
|
|
|
200
202
|
function getDndNode (type) {
|
|
201
203
|
if (dnd.value === true) {
|
|
202
204
|
return h('div', {
|
|
205
|
+
ref: dndRef,
|
|
203
206
|
class: `q-${ type }__dnd absolute-full`,
|
|
204
207
|
onDragenter: stopAndPreventDrag,
|
|
205
208
|
onDragover: stopAndPreventDrag,
|
|
@@ -85,9 +85,7 @@
|
|
|
85
85
|
"desc": "Trigger file pick; Must be called as a direct consequence of user interaction (eg. in a click handler), due to browsers security policy",
|
|
86
86
|
"params": {
|
|
87
87
|
"evt": {
|
|
88
|
-
"
|
|
89
|
-
"desc": "JS event object",
|
|
90
|
-
"__exemption": [ "examples" ]
|
|
88
|
+
"extends": "evt"
|
|
91
89
|
}
|
|
92
90
|
}
|
|
93
91
|
},
|
|
@@ -191,8 +191,8 @@ export default function (fallbackTag) {
|
|
|
191
191
|
// avoid comparing the child with its parent
|
|
192
192
|
&& currentMatched[ currentMatched.length - 1 ].path !== parentRecordPath
|
|
193
193
|
? currentMatched.findIndex(
|
|
194
|
-
|
|
195
|
-
|
|
194
|
+
isSameRouteRecord.bind(null, matched[ length - 2 ])
|
|
195
|
+
)
|
|
196
196
|
: index
|
|
197
197
|
)
|
|
198
198
|
})
|
|
@@ -248,7 +248,7 @@ export default function (fallbackTag) {
|
|
|
248
248
|
prevent(e)
|
|
249
249
|
|
|
250
250
|
return proxy.$router[ props.replace === true ? 'replace' : 'push' ](props.to)
|
|
251
|
-
.catch(
|
|
251
|
+
.catch(err => err)
|
|
252
252
|
}
|
|
253
253
|
|
|
254
254
|
return {
|
package/src/directives/Morph.js
CHANGED
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
import { createDirective } from '../utils/private/create.js'
|
|
2
2
|
import morph from '../utils/morph.js'
|
|
3
3
|
|
|
4
|
-
import getSSRProps from './Morph.ssr.js'
|
|
5
|
-
|
|
6
4
|
const morphGroups = {}
|
|
7
5
|
const props = [
|
|
8
6
|
'duration', 'delay', 'easing', 'fill',
|
|
@@ -164,7 +162,18 @@ function updateValue (ctx, value) {
|
|
|
164
162
|
}
|
|
165
163
|
|
|
166
164
|
export default createDirective(__QUASAR_SSR_SERVER__
|
|
167
|
-
? {
|
|
165
|
+
? {
|
|
166
|
+
name: 'morph',
|
|
167
|
+
getSSRProps: binding => {
|
|
168
|
+
const name = binding.arg
|
|
169
|
+
? binding.arg.split(':')[ 0 ]
|
|
170
|
+
: false
|
|
171
|
+
|
|
172
|
+
return {
|
|
173
|
+
class: name === binding.value ? '' : 'q-morph--invisible'
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
}
|
|
168
177
|
: {
|
|
169
178
|
name: 'morph',
|
|
170
179
|
|
package/src/install-quasar.js
CHANGED
|
@@ -10,6 +10,7 @@ import IconSet from './icon-set.js'
|
|
|
10
10
|
|
|
11
11
|
import { quasarKey } from './utils/private/symbols.js'
|
|
12
12
|
import { globalConfig, globalConfigIsFrozen, freezeGlobalConfig } from './utils/private/global-config.js'
|
|
13
|
+
import { isObject } from './utils/private/is.js'
|
|
13
14
|
|
|
14
15
|
const autoInstalledPlugins = [
|
|
15
16
|
Platform,
|
|
@@ -46,13 +47,13 @@ function prepareApp (app, uiOpts, pluginOpts) {
|
|
|
46
47
|
installPlugins(pluginOpts, autoInstalledPlugins)
|
|
47
48
|
|
|
48
49
|
uiOpts.components !== void 0 && Object.values(uiOpts.components).forEach(c => {
|
|
49
|
-
if (
|
|
50
|
+
if (isObject(c) === true && c.name !== void 0) {
|
|
50
51
|
app.component(c.name, c)
|
|
51
52
|
}
|
|
52
53
|
})
|
|
53
54
|
|
|
54
55
|
uiOpts.directives !== void 0 && Object.values(uiOpts.directives).forEach(d => {
|
|
55
|
-
if (
|
|
56
|
+
if (isObject(d) === true && d.name !== void 0) {
|
|
56
57
|
app.directive(d.name, d)
|
|
57
58
|
}
|
|
58
59
|
})
|
|
@@ -74,45 +75,45 @@ function prepareApp (app, uiOpts, pluginOpts) {
|
|
|
74
75
|
|
|
75
76
|
export default __QUASAR_SSR_SERVER__
|
|
76
77
|
? function (parentApp, opts = {}, ssrContext) {
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
Object.assign(ssrContext, {
|
|
83
|
-
$q,
|
|
84
|
-
_meta: {
|
|
85
|
-
htmlAttrs: '',
|
|
86
|
-
headTags: '',
|
|
87
|
-
endingHeadTags: '',
|
|
88
|
-
bodyClasses: '',
|
|
89
|
-
bodyAttrs: 'data-server-rendered',
|
|
90
|
-
bodyTags: ''
|
|
91
|
-
}
|
|
92
|
-
})
|
|
93
|
-
|
|
94
|
-
if (ssrContext._modules === void 0) {
|
|
95
|
-
// not OK. means the SSR build is not using @quasar/ssr-helpers,
|
|
96
|
-
// but we shouldn't crash the app
|
|
97
|
-
ssrContext._modules = []
|
|
98
|
-
}
|
|
78
|
+
const $q = {
|
|
79
|
+
version: __QUASAR_VERSION__,
|
|
80
|
+
config: opts.config || {}
|
|
81
|
+
}
|
|
99
82
|
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
83
|
+
Object.assign(ssrContext, {
|
|
84
|
+
$q,
|
|
85
|
+
_meta: {
|
|
86
|
+
htmlAttrs: '',
|
|
87
|
+
headTags: '',
|
|
88
|
+
endingHeadTags: '',
|
|
89
|
+
bodyClasses: '',
|
|
90
|
+
bodyAttrs: 'data-server-rendered',
|
|
91
|
+
bodyTags: ''
|
|
104
92
|
}
|
|
93
|
+
})
|
|
105
94
|
|
|
106
|
-
|
|
95
|
+
if (ssrContext._modules === void 0) {
|
|
96
|
+
// not OK. means the SSR build is not using @quasar/ssr-helpers,
|
|
97
|
+
// but we shouldn't crash the app
|
|
98
|
+
ssrContext._modules = []
|
|
99
|
+
}
|
|
107
100
|
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
iconSet: opts.iconSet,
|
|
113
|
-
ssrContext
|
|
114
|
-
})
|
|
101
|
+
if (ssrContext.onRendered === void 0) {
|
|
102
|
+
// not OK. means the SSR build is not using @quasar/ssr-helpers,
|
|
103
|
+
// but we shouldn't crash the app
|
|
104
|
+
ssrContext.onRendered = () => {}
|
|
115
105
|
}
|
|
106
|
+
|
|
107
|
+
parentApp.config.globalProperties.ssrContext = ssrContext
|
|
108
|
+
|
|
109
|
+
prepareApp(parentApp, opts, {
|
|
110
|
+
parentApp,
|
|
111
|
+
$q,
|
|
112
|
+
lang: opts.lang,
|
|
113
|
+
iconSet: opts.iconSet,
|
|
114
|
+
ssrContext
|
|
115
|
+
})
|
|
116
|
+
}
|
|
116
117
|
: function (parentApp, opts = {}) {
|
|
117
118
|
const $q = { version: __QUASAR_VERSION__ }
|
|
118
119
|
|
|
@@ -51,15 +51,15 @@ export default {
|
|
|
51
51
|
|| client.is.webkit === true || client.is.vivaldi === true
|
|
52
52
|
)
|
|
53
53
|
? hexColor => {
|
|
54
|
-
|
|
54
|
+
const val = hexColor || getCssVar('primary')
|
|
55
55
|
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
}
|
|
59
|
-
else {
|
|
60
|
-
setColor(val)
|
|
61
|
-
}
|
|
56
|
+
if (client.is.nativeMobile === true && window.StatusBar) {
|
|
57
|
+
window.StatusBar.backgroundColorByHexString(val)
|
|
62
58
|
}
|
|
59
|
+
else {
|
|
60
|
+
setColor(val)
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
63
|
: noop,
|
|
64
64
|
|
|
65
65
|
install ({ $q }) {
|
package/src/plugins/Cookies.js
CHANGED
|
@@ -26,7 +26,11 @@ function read (string) {
|
|
|
26
26
|
string = decode(string.replace(/\+/g, ' '))
|
|
27
27
|
|
|
28
28
|
try {
|
|
29
|
-
|
|
29
|
+
const parsed = JSON.parse(string)
|
|
30
|
+
|
|
31
|
+
if (parsed === Object(parsed) || Array.isArray(parsed) === true) {
|
|
32
|
+
string = parsed
|
|
33
|
+
}
|
|
30
34
|
}
|
|
31
35
|
catch (e) {}
|
|
32
36
|
|
package/src/plugins/Dialog.json
CHANGED
|
@@ -307,8 +307,9 @@
|
|
|
307
307
|
},
|
|
308
308
|
|
|
309
309
|
"component": {
|
|
310
|
-
"type": "Component",
|
|
311
|
-
"desc": "Use custom dialog component; use along with 'componentProps' prop where possible"
|
|
310
|
+
"type": [ "Component", "String" ],
|
|
311
|
+
"desc": "Use custom dialog component; use along with 'componentProps' prop where possible",
|
|
312
|
+
"examples": [ "CustomComponent", "'custom-component'" ]
|
|
312
313
|
},
|
|
313
314
|
|
|
314
315
|
"componentProps": {
|
package/src/plugins/Loading.js
CHANGED
|
@@ -5,6 +5,7 @@ import QSpinner from '../components/spinner/QSpinner.js'
|
|
|
5
5
|
import defineReactivePlugin from '../utils/private/define-reactive-plugin.js'
|
|
6
6
|
import { createGlobalNode, removeGlobalNode } from '../utils/private/global-nodes.js'
|
|
7
7
|
import preventScroll from '../utils/prevent-scroll.js'
|
|
8
|
+
import { isObject } from '../utils/private/is.js'
|
|
8
9
|
|
|
9
10
|
let
|
|
10
11
|
app,
|
|
@@ -34,7 +35,7 @@ const Plugin = defineReactivePlugin({
|
|
|
34
35
|
show (opts) {
|
|
35
36
|
if (__QUASAR_SSR_SERVER__) { return }
|
|
36
37
|
|
|
37
|
-
props = opts ===
|
|
38
|
+
props = isObject(opts) === true && opts.ignoreDefaults === true
|
|
38
39
|
? { ...originalDefaults, ...opts }
|
|
39
40
|
: { ...defaults, ...opts }
|
|
40
41
|
|
|
@@ -135,7 +136,7 @@ const Plugin = defineReactivePlugin({
|
|
|
135
136
|
|
|
136
137
|
setDefaults (opts) {
|
|
137
138
|
if (__QUASAR_SSR_SERVER__ !== true) {
|
|
138
|
-
opts ===
|
|
139
|
+
isObject(opts) === true && Object.assign(defaults, opts)
|
|
139
140
|
}
|
|
140
141
|
},
|
|
141
142
|
|
|
@@ -6,6 +6,7 @@ import { createGlobalNode } from '../utils/private/global-nodes.js'
|
|
|
6
6
|
import { createChildApp } from '../install-quasar.js'
|
|
7
7
|
|
|
8
8
|
import QAjaxBar from '../components/ajax-bar/QAjaxBar.js'
|
|
9
|
+
import { isObject } from '../utils/private/is.js'
|
|
9
10
|
|
|
10
11
|
const barRef = ref(null)
|
|
11
12
|
|
|
@@ -35,6 +36,14 @@ const Plugin = defineReactivePlugin({
|
|
|
35
36
|
: {}
|
|
36
37
|
)
|
|
37
38
|
|
|
39
|
+
function onStart () {
|
|
40
|
+
Plugin.isActive = true
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
function onStop () {
|
|
44
|
+
Plugin.isActive = false
|
|
45
|
+
}
|
|
46
|
+
|
|
38
47
|
const el = createGlobalNode('q-loading-bar')
|
|
39
48
|
|
|
40
49
|
createChildApp({
|
|
@@ -43,23 +52,21 @@ const Plugin = defineReactivePlugin({
|
|
|
43
52
|
// hide App from Vue devtools
|
|
44
53
|
devtools: { hide: true },
|
|
45
54
|
|
|
46
|
-
setup: () => () => h(QAjaxBar, { ...props.value, ref: barRef })
|
|
55
|
+
setup: () => () => h(QAjaxBar, { ...props.value, onStart, onStop, ref: barRef })
|
|
47
56
|
}, parentApp).mount(el)
|
|
48
57
|
|
|
49
58
|
Object.assign(this, {
|
|
50
59
|
start (speed) {
|
|
51
60
|
barRef.value.start(speed)
|
|
52
|
-
Plugin.isActive = true
|
|
53
61
|
},
|
|
54
62
|
stop () {
|
|
55
|
-
|
|
56
|
-
Plugin.isActive = sessions > 0
|
|
63
|
+
barRef.value.stop()
|
|
57
64
|
},
|
|
58
65
|
increment () {
|
|
59
66
|
barRef.value.increment.apply(null, arguments)
|
|
60
67
|
},
|
|
61
68
|
setDefaults (opts) {
|
|
62
|
-
if (opts ===
|
|
69
|
+
if (isObject(opts) === true) {
|
|
63
70
|
Object.assign(props.value, opts)
|
|
64
71
|
}
|
|
65
72
|
}
|
package/src/plugins/Notify.js
CHANGED
|
@@ -9,6 +9,7 @@ import { createComponent } from '../utils/private/create.js'
|
|
|
9
9
|
import { noop } from '../utils/event.js'
|
|
10
10
|
import { createGlobalNode } from '../utils/private/global-nodes.js'
|
|
11
11
|
import { createChildApp } from '../install-quasar.js'
|
|
12
|
+
import { isObject } from '../utils/private/is.js'
|
|
12
13
|
|
|
13
14
|
let uid = 0
|
|
14
15
|
|
|
@@ -72,7 +73,7 @@ function addNotification (config, $q, originalApi) {
|
|
|
72
73
|
Object.assign(notif, defaults)
|
|
73
74
|
}
|
|
74
75
|
|
|
75
|
-
if (
|
|
76
|
+
if (isObject(config) === false) {
|
|
76
77
|
if (notif.type) {
|
|
77
78
|
Object.assign(notif, notifTypes[ notif.type ])
|
|
78
79
|
}
|
|
@@ -396,7 +397,11 @@ function getComponent () {
|
|
|
396
397
|
if (meta.hasMedia === true) {
|
|
397
398
|
if (notif.spinner !== false) {
|
|
398
399
|
mainChild.push(
|
|
399
|
-
h(notif.spinner, {
|
|
400
|
+
h(notif.spinner, {
|
|
401
|
+
class: 'q-notification__spinner q-notification__spinner--' + meta.leftClass,
|
|
402
|
+
color: notif.spinnerColor,
|
|
403
|
+
size: notif.spinnerSize
|
|
404
|
+
})
|
|
400
405
|
)
|
|
401
406
|
}
|
|
402
407
|
else if (notif.icon) {
|
|
@@ -404,6 +409,8 @@ function getComponent () {
|
|
|
404
409
|
h(QIcon, {
|
|
405
410
|
class: 'q-notification__icon q-notification__icon--' + meta.leftClass,
|
|
406
411
|
name: notif.icon,
|
|
412
|
+
color: notif.iconColor,
|
|
413
|
+
size: notif.iconSize,
|
|
407
414
|
role: 'img'
|
|
408
415
|
})
|
|
409
416
|
)
|
|
@@ -484,12 +491,12 @@ function getComponent () {
|
|
|
484
491
|
export default {
|
|
485
492
|
setDefaults (opts) {
|
|
486
493
|
if (__QUASAR_SSR_SERVER__ !== true) {
|
|
487
|
-
opts ===
|
|
494
|
+
isObject(opts) === true && Object.assign(defaults, opts)
|
|
488
495
|
}
|
|
489
496
|
},
|
|
490
497
|
|
|
491
498
|
registerType (typeName, typeOpts) {
|
|
492
|
-
if (__QUASAR_SSR_SERVER__ !== true && typeOpts ===
|
|
499
|
+
if (__QUASAR_SSR_SERVER__ !== true && isObject(typeOpts) === true) {
|
|
493
500
|
notifTypes[ typeName ] = typeOpts
|
|
494
501
|
}
|
|
495
502
|
},
|