quasar 2.5.1 → 2.5.5
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 +1 -1
- 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 +18 -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 +19 -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/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 +1 -1
- package/dist/icon-set/svg-eva-icons.umd.prod.js +1 -1
- package/dist/icon-set/svg-fontawesome-v5.umd.prod.js +1 -1
- 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 +1 -1
- 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 +1 -1
- package/dist/icon-set/svg-themify.umd.prod.js +1 -1
- 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/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/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 +1 -1
- 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 +2 -2
- package/dist/quasar.esm.prod.js +2 -2
- package/dist/quasar.prod.css +1 -1
- package/dist/quasar.rtl.css +2 -2
- package/dist/quasar.rtl.prod.css +1 -1
- package/dist/quasar.sass +2 -1
- package/dist/quasar.umd.js +358 -343
- package/dist/quasar.umd.prod.js +2 -2
- package/dist/ssr-directives/Morph.js +1 -1
- package/dist/types/index.d.ts +245 -135
- package/dist/vetur/quasar-attributes.json +46 -38
- package/dist/vetur/quasar-tags.json +2 -0
- package/dist/web-types/web-types.json +119 -93
- 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.json +3 -6
- 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-plugin/DialogPlugin.js +9 -8
- package/src/components/fab/QFabAction.json +1 -3
- package/src/components/field/QField.json +2 -6
- package/src/components/form/QForm.json +10 -7
- package/src/components/icon/QIcon.js +4 -1
- package/src/components/icon/QIcon.json +1 -3
- package/src/components/input/QInput.json +2 -6
- package/src/components/input/use-mask.js +2 -2
- package/src/components/knob/QKnob.js +46 -40
- package/src/components/knob/QKnob.json +16 -0
- package/src/components/radio/QRadio.json +2 -4
- package/src/components/select/QSelect.js +4 -3
- package/src/components/select/QSelect.json +17 -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.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-sort.js +2 -2
- package/src/components/tabs/QRouteTab.json +2 -3
- package/src/components/tabs/use-tab.js +11 -8
- package/src/components/time/QTime.js +5 -5
- package/src/components/tree/QTree.js +39 -41
- package/src/composables/private/use-file.json +1 -3
- package/src/composables/private/use-router-link.js +1 -1
- 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/Loading.js +3 -2
- package/src/plugins/LoadingBar.js +2 -1
- package/src/plugins/Notify.js +11 -4
- package/src/plugins/Notify.json +102 -2
- package/src/plugins/Screen.js +9 -5
- package/src/utils/create-uploader-component.js +2 -1
- package/src/utils/extend.js +6 -34
- package/src/utils/morph.js +19 -17
- package/src/utils/private/is.js +2 -15
- package/src/utils/private/web-storage.js +3 -2
|
@@ -17,7 +17,7 @@ import { useFormProps, useFormInputNameAttr } from '../../composables/private/us
|
|
|
17
17
|
import useKeyComposition from '../../composables/private/use-key-composition.js'
|
|
18
18
|
|
|
19
19
|
import { createComponent } from '../../utils/private/create.js'
|
|
20
|
-
import { isDeepEqual } from '../../utils/private/is.js'
|
|
20
|
+
import { isDeepEqual, isPlainObject } from '../../utils/private/is.js'
|
|
21
21
|
import { stop, prevent, stopAndPrevent } from '../../utils/event.js'
|
|
22
22
|
import { normalizeToInterval } from '../../utils/format.js'
|
|
23
23
|
import { shouldIgnoreKey, isKeyCode } from '../../utils/private/key-composition.js'
|
|
@@ -337,7 +337,7 @@ export default createComponent({
|
|
|
337
337
|
itemProps[ 'aria-selected' ] = itemProps.active === true ? 'true' : 'false'
|
|
338
338
|
|
|
339
339
|
if ($q.platform.is.desktop === true) {
|
|
340
|
-
itemProps.onMousemove = () => { setOptionIndex(index) }
|
|
340
|
+
itemProps.onMousemove = () => { menu.value === true && setOptionIndex(index) }
|
|
341
341
|
}
|
|
342
342
|
}
|
|
343
343
|
|
|
@@ -602,7 +602,7 @@ export default createComponent({
|
|
|
602
602
|
|
|
603
603
|
return typeof val === 'function'
|
|
604
604
|
? val
|
|
605
|
-
: opt => (
|
|
605
|
+
: opt => (isPlainObject(opt) === true && val in opt ? opt[ val ] : opt)
|
|
606
606
|
}
|
|
607
607
|
|
|
608
608
|
function isOptionSelected (opt) {
|
|
@@ -1385,6 +1385,7 @@ export default createComponent({
|
|
|
1385
1385
|
Object.assign(proxy, {
|
|
1386
1386
|
showPopup, hidePopup,
|
|
1387
1387
|
removeAtIndex, add, toggleOption,
|
|
1388
|
+
getOptionIndex: () => optionIndex.value,
|
|
1388
1389
|
setOptionIndex, moveOptionSelection,
|
|
1389
1390
|
filter, updateMenuPosition, updateInputValue,
|
|
1390
1391
|
isOptionSelected,
|
|
@@ -628,9 +628,7 @@
|
|
|
628
628
|
"desc": "Emitted when the select options menu or dialog is shown.",
|
|
629
629
|
"params": {
|
|
630
630
|
"evt": {
|
|
631
|
-
"
|
|
632
|
-
"desc": "JS event object",
|
|
633
|
-
"__exemption": [ "examples" ]
|
|
631
|
+
"extends": "evt"
|
|
634
632
|
}
|
|
635
633
|
}
|
|
636
634
|
},
|
|
@@ -639,9 +637,7 @@
|
|
|
639
637
|
"desc": "Emitted when the select options menu or dialog is hidden.",
|
|
640
638
|
"params": {
|
|
641
639
|
"evt": {
|
|
642
|
-
"
|
|
643
|
-
"desc": "JS event object",
|
|
644
|
-
"__exemption": [ "examples" ]
|
|
640
|
+
"extends": "evt"
|
|
645
641
|
}
|
|
646
642
|
}
|
|
647
643
|
},
|
|
@@ -718,13 +714,26 @@
|
|
|
718
714
|
}
|
|
719
715
|
},
|
|
720
716
|
|
|
717
|
+
"getOptionIndex": {
|
|
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
|
+
}
|
|
726
|
+
},
|
|
727
|
+
"addedIn": "v2.5.4"
|
|
728
|
+
},
|
|
729
|
+
|
|
721
730
|
"setOptionIndex": {
|
|
722
|
-
"desc": "Sets option from menu as 'focused'",
|
|
731
|
+
"desc": "Sets option from menu as 'focused'; -1 to focus none",
|
|
723
732
|
"params": {
|
|
724
733
|
"index": {
|
|
725
734
|
"type": "Number",
|
|
726
735
|
"required": true,
|
|
727
|
-
"desc": "Index of option from menu",
|
|
736
|
+
"desc": "Index of option from menu; -1 to focus none",
|
|
728
737
|
"examples": [ 10 ]
|
|
729
738
|
}
|
|
730
739
|
}
|
|
@@ -65,8 +65,8 @@ export default createComponent({
|
|
|
65
65
|
|
|
66
66
|
timer = setTimeout(() => {
|
|
67
67
|
el.style.height = `${ el.scrollHeight }px`
|
|
68
|
-
animListener =
|
|
69
|
-
if (Object(
|
|
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 =
|
|
95
|
-
if (Object(
|
|
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, isPlainObject } 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
|
|
343
|
+
return isPlainObject(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 => (
|
|
351
|
+
.map(item => (isPlainObject(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
|
|
358
|
+
return isPlainObject(item) === true ? { ...item, value } : { value, label: item }
|
|
359
359
|
}).filter(filterFn)
|
|
360
360
|
}
|
|
361
361
|
|
|
@@ -29,7 +29,7 @@
|
|
|
29
29
|
"inner-max": {
|
|
30
30
|
"type": "Number",
|
|
31
31
|
"desc": "Inner maximum value of the model; Use in case you need the model value to be inside of the track's min-max values; Needs to be lower or equal to 'max' prop; Defaults to 'max' prop",
|
|
32
|
-
"examples": [ ":max
|
|
32
|
+
"examples": [ ":inner-max=\"100\"" ],
|
|
33
33
|
"category": "model",
|
|
34
34
|
"addedIn": "v2.4"
|
|
35
35
|
},
|
|
@@ -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
|
|
|
@@ -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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
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
|
|
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' : '')
|
|
@@ -1867,9 +1867,7 @@
|
|
|
1867
1867
|
"desc": "Emitted when user clicks/taps on a row; Is not emitted when using body/row/item scoped slots",
|
|
1868
1868
|
"params": {
|
|
1869
1869
|
"evt": {
|
|
1870
|
-
"
|
|
1871
|
-
"desc": "JS event object",
|
|
1872
|
-
"__exemption": [ "examples" ]
|
|
1870
|
+
"extends": "evt"
|
|
1873
1871
|
},
|
|
1874
1872
|
|
|
1875
1873
|
"row": {
|
|
@@ -1890,9 +1888,7 @@
|
|
|
1890
1888
|
"desc": "Emitted when user quickly double clicks/taps on a row; Is not emitted when using body/row/item scoped slots; Please check JS dblclick event support before using",
|
|
1891
1889
|
"params": {
|
|
1892
1890
|
"evt": {
|
|
1893
|
-
"
|
|
1894
|
-
"desc": "JS event object",
|
|
1895
|
-
"__exemption": [ "examples" ]
|
|
1891
|
+
"extends": "evt"
|
|
1896
1892
|
},
|
|
1897
1893
|
|
|
1898
1894
|
"row": {
|
|
@@ -1913,9 +1909,7 @@
|
|
|
1913
1909
|
"desc": "Emitted when user right clicks/long taps on a row; Is not emitted when using body/row/item scoped slots",
|
|
1914
1910
|
"params": {
|
|
1915
1911
|
"evt": {
|
|
1916
|
-
"
|
|
1917
|
-
"desc": "JS event object",
|
|
1918
|
-
"__exemption": [ "examples" ]
|
|
1912
|
+
"extends": "evt"
|
|
1919
1913
|
},
|
|
1920
1914
|
|
|
1921
1915
|
"row": {
|
|
@@ -2075,10 +2069,8 @@
|
|
|
2075
2069
|
"desc": "Were the rows added to selection (true) or removed from selection (false)"
|
|
2076
2070
|
},
|
|
2077
2071
|
"evt": {
|
|
2078
|
-
"
|
|
2079
|
-
"required": true
|
|
2080
|
-
"desc": "JS event object",
|
|
2081
|
-
"__exemption": [ "examples" ]
|
|
2072
|
+
"extends": "evt",
|
|
2073
|
+
"required": true
|
|
2082
2074
|
}
|
|
2083
2075
|
}
|
|
2084
2076
|
}
|
|
@@ -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, isPlainObject } 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 ===
|
|
76
|
+
if (isPlainObject(col) === true) {
|
|
77
77
|
if (col.sortOrder) {
|
|
78
78
|
sortOrder = col.sortOrder
|
|
79
79
|
}
|
|
@@ -10,9 +10,8 @@
|
|
|
10
10
|
"desc": "Emitted when component is clicked (activated)",
|
|
11
11
|
"params": {
|
|
12
12
|
"evt": {
|
|
13
|
-
"
|
|
14
|
-
"desc": "JS event object; If you want to cancel navigation set synchronously 'evt.navigate' to false"
|
|
15
|
-
"__exemption": [ "examples" ]
|
|
13
|
+
"extends": "evt",
|
|
14
|
+
"desc": "JS event object; If you want to cancel navigation set synchronously 'evt.navigate' to false"
|
|
16
15
|
},
|
|
17
16
|
"navigateFn": {
|
|
18
17
|
"type": "Function",
|
|
@@ -108,9 +108,12 @@ export default function (props, slots, emit, routerProps) {
|
|
|
108
108
|
$tabs.avoidRouteWatcher = false
|
|
109
109
|
}
|
|
110
110
|
else {
|
|
111
|
-
res.then(
|
|
111
|
+
res.then(err => {
|
|
112
112
|
$tabs.avoidRouteWatcher = false
|
|
113
|
-
|
|
113
|
+
|
|
114
|
+
if (err === void 0) {
|
|
115
|
+
$tabs.updateModel({ name: props.name, fromRoute: true })
|
|
116
|
+
}
|
|
114
117
|
})
|
|
115
118
|
}
|
|
116
119
|
}
|
|
@@ -167,12 +170,12 @@ export default function (props, slots, emit, routerProps) {
|
|
|
167
170
|
props.alert !== false && content.push(
|
|
168
171
|
props.alertIcon !== void 0
|
|
169
172
|
? h(QIcon, {
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
173
|
+
class: 'q-tab__alert-icon',
|
|
174
|
+
color: props.alert !== true
|
|
175
|
+
? props.alert
|
|
176
|
+
: void 0,
|
|
177
|
+
name: props.alertIcon
|
|
178
|
+
})
|
|
176
179
|
: h('div', {
|
|
177
180
|
class: 'q-tab__alert'
|
|
178
181
|
+ (props.alert !== true ? ` text-${ props.alert }` : '')
|
|
@@ -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
|
-
|
|
92
|
-
|
|
93
|
+
mask.value, // initial mask
|
|
94
|
+
locale.value, // initial locale
|
|
93
95
|
props.calendar,
|
|
94
|
-
|
|
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
|
|
@@ -542,34 +542,34 @@ export default createComponent({
|
|
|
542
542
|
|
|
543
543
|
m.lazy === 'loading'
|
|
544
544
|
? h(QSpinner, {
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
545
|
+
class: 'q-tree__spinner',
|
|
546
|
+
color: computedControlColor.value
|
|
547
|
+
})
|
|
548
548
|
: (
|
|
549
549
|
isParent === true
|
|
550
550
|
? h(QIcon, {
|
|
551
|
-
|
|
551
|
+
class: 'q-tree__arrow'
|
|
552
552
|
+ (m.expanded === true ? ' q-tree__arrow--rotate' : ''),
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
|
|
553
|
+
name: computedIcon.value,
|
|
554
|
+
onClick (e) { onExpandClick(node, m, e) }
|
|
555
|
+
})
|
|
556
556
|
: null
|
|
557
557
|
),
|
|
558
558
|
|
|
559
559
|
m.hasTicking === true && m.noTick !== true
|
|
560
560
|
? h(QCheckbox, {
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
|
|
561
|
+
class: 'q-tree__tickbox',
|
|
562
|
+
modelValue: m.indeterminate === true ? null : m.ticked,
|
|
563
|
+
color: computedControlColor.value,
|
|
564
|
+
dark: isDark.value,
|
|
565
|
+
dense: true,
|
|
566
|
+
keepColor: true,
|
|
567
|
+
disable: m.tickable !== true,
|
|
568
|
+
onKeydown: stopAndPrevent,
|
|
569
|
+
'onUpdate:modelValue': v => {
|
|
570
|
+
onTickedClick(m, v)
|
|
571
|
+
}
|
|
572
|
+
})
|
|
573
573
|
: null,
|
|
574
574
|
|
|
575
575
|
h('div', {
|
|
@@ -587,22 +587,22 @@ export default createComponent({
|
|
|
587
587
|
|
|
588
588
|
isParent === true
|
|
589
589
|
? h(QSlideTransition, {
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
|
|
593
|
-
|
|
590
|
+
duration: props.duration,
|
|
591
|
+
onShow,
|
|
592
|
+
onHide
|
|
593
|
+
}, () => withDirectives(
|
|
594
|
+
h('div', {
|
|
595
|
+
class: 'q-tree__node-collapsible' + textColorClass.value,
|
|
596
|
+
key: `${ key }__q`
|
|
597
|
+
}, [
|
|
598
|
+
body,
|
|
594
599
|
h('div', {
|
|
595
|
-
class: 'q-
|
|
596
|
-
key: `${ key }__q`
|
|
597
|
-
}, [
|
|
598
|
-
body,
|
|
599
|
-
h('div', {
|
|
600
|
-
class: 'q-tree__children'
|
|
600
|
+
class: 'q-tree__children'
|
|
601
601
|
+ (m.disabled === true ? ' q-tree__node--disabled' : '')
|
|
602
|
-
|
|
603
|
-
|
|
604
|
-
|
|
605
|
-
|
|
602
|
+
}, children)
|
|
603
|
+
]),
|
|
604
|
+
[ [ vShow, m.expanded ] ]
|
|
605
|
+
))
|
|
606
606
|
: body
|
|
607
607
|
])
|
|
608
608
|
}
|
|
@@ -615,14 +615,12 @@ export default createComponent({
|
|
|
615
615
|
function onClick (node, meta, e, keyboard) {
|
|
616
616
|
keyboard !== true && blur(meta.key)
|
|
617
617
|
|
|
618
|
-
if (hasSelection.value) {
|
|
619
|
-
if (
|
|
620
|
-
|
|
621
|
-
|
|
622
|
-
|
|
623
|
-
|
|
624
|
-
emit('update:selected', meta.key || null)
|
|
625
|
-
}
|
|
618
|
+
if (hasSelection.value && meta.selectable) {
|
|
619
|
+
if (props.noSelectionUnset === false) {
|
|
620
|
+
emit('update:selected', meta.key !== props.selected ? meta.key : null)
|
|
621
|
+
}
|
|
622
|
+
else if (meta.key !== props.selected) {
|
|
623
|
+
emit('update:selected', meta.key || null)
|
|
626
624
|
}
|
|
627
625
|
}
|
|
628
626
|
else {
|
|
@@ -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
|
},
|