quasar 2.8.4 → 2.9.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/dist/api/QBreadcrumbsEl.json +52 -0
- package/dist/api/QBtn.json +41 -6
- package/dist/api/QBtnDropdown.json +1 -1
- package/dist/api/QChip.json +1 -1
- package/dist/api/QEditor.json +7 -0
- package/dist/api/QExpansionItem.json +1 -1
- package/dist/api/QItem.json +52 -0
- package/dist/api/QRating.json +13 -0
- package/dist/api/QRouteTab.json +42 -6
- 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 +1 -1
- package/dist/icon-set/fontawesome-v6.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/material-symbols-outlined.umd.prod.js +1 -1
- package/dist/icon-set/material-symbols-rounded.umd.prod.js +1 -1
- package/dist/icon-set/material-symbols-sharp.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-fontawesome-v6.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-material-symbols-outlined.umd.prod.js +1 -1
- package/dist/icon-set/svg-material-symbols-rounded.umd.prod.js +1 -1
- package/dist/icon-set/svg-material-symbols-sharp.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-TN.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 +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/kz.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/mm.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 +2 -2
- 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/sm.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/uz-Cyrl.umd.prod.js +1 -1
- package/dist/lang/uz-Latn.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.esm.js +533 -337
- package/dist/quasar.esm.prod.js +2 -2
- package/dist/quasar.sass +1 -1
- package/dist/quasar.umd.js +532 -336
- package/dist/quasar.umd.prod.js +2 -2
- package/dist/types/api/qeditor.d.ts +17 -0
- package/dist/types/api.d.ts +1 -0
- package/dist/types/index.d.ts +93 -8
- package/dist/types/utils/run-sequential-promises.d.ts +1 -1
- package/dist/vetur/quasar-attributes.json +4 -0
- package/dist/vetur/quasar-tags.json +1 -0
- package/dist/web-types/web-types.json +60 -9
- package/lang/nl.js +2 -2
- package/lang/nl.mjs +2 -2
- package/package.json +5 -3
- package/src/components/breadcrumbs/QBreadcrumbsEl.js +6 -7
- package/src/components/breadcrumbs/QBreadcrumbsEl.json +53 -0
- package/src/components/btn/QBtn.js +19 -19
- package/src/components/btn/QBtn.json +41 -6
- package/src/components/btn/use-btn.js +6 -4
- package/src/components/btn-dropdown/QBtnDropdown.json +1 -1
- package/src/components/checkbox/QCheckbox.js +1 -2
- package/src/components/checkbox/use-checkbox.js +2 -1
- package/src/components/chip/QChip.json +1 -1
- package/src/components/dialog/QDialog.js +6 -4
- package/src/components/drawer/QDrawer.js +7 -4
- package/src/components/editor/QEditor.json +9 -0
- package/src/components/expansion-item/QExpansionItem.json +1 -1
- package/src/components/item/QItem.js +4 -5
- package/src/components/item/QItem.json +53 -0
- package/src/components/menu/QMenu.js +4 -5
- package/src/components/menu/__tests__/QMenu.spec.js +7 -0
- package/src/components/popup-edit/QPopupEdit.js +2 -5
- package/src/components/radio/QRadio.js +3 -3
- package/src/components/rating/QRating.js +48 -10
- package/src/components/rating/QRating.json +11 -0
- package/src/components/stepper/QStep.js +5 -3
- package/src/components/table/QTable.js +3 -5
- package/src/components/tabs/QRouteTab.js +6 -4
- package/src/components/tabs/QRouteTab.json +42 -6
- package/src/components/tabs/QTabs.js +188 -108
- package/src/components/tabs/use-tab.js +62 -38
- package/src/components/tooltip/QTooltip.js +7 -13
- package/src/components/tree/QTree.js +1 -1
- package/src/composables/private/__tests__/use-model-toggle.spec.js +2 -0
- package/src/composables/private/__tests__/use-transition.spec.js +4 -0
- package/src/composables/private/use-router-link.js +80 -43
- package/src/composables/private/use-tick.js +15 -9
- package/src/composables/private/use-timeout.js +20 -7
- package/src/directives/TouchPan.js +1 -1
- package/src/directives/TouchRepeat.js +1 -1
- package/src/directives/TouchSwipe.js +1 -1
- package/src/utils/extend.js +19 -19
- package/src/utils/private/inject-obj-prop.js +2 -0
- package/src/utils/private/rtl.js +10 -7
- package/src/utils/run-sequential-promises.js +1 -1
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
// src/components/editor/editor-caret.js#Caret
|
|
2
|
+
// We are not exposing the whole API, just the ones that might be needed outside.
|
|
3
|
+
export interface QEditorCaret {
|
|
4
|
+
readonly selection: Selection | null;
|
|
5
|
+
readonly hasSelection: boolean;
|
|
6
|
+
readonly range: Range | null;
|
|
7
|
+
readonly parent: Element | null;
|
|
8
|
+
readonly blockParent: Element | null;
|
|
9
|
+
|
|
10
|
+
save(range: Range): void;
|
|
11
|
+
restore(range?: Range): void;
|
|
12
|
+
savePosition(): void;
|
|
13
|
+
restorePosition(length?: number): void;
|
|
14
|
+
is(commandId: string, param?: string): boolean;
|
|
15
|
+
can(commandId: string): boolean;
|
|
16
|
+
apply(commandId: string, param?: string, done?: () => void): boolean;
|
|
17
|
+
}
|
package/dist/types/api.d.ts
CHANGED
|
@@ -6,6 +6,7 @@ export * from "./api/qtable";
|
|
|
6
6
|
export * from "./api/qtree";
|
|
7
7
|
export * from "./api/quploader";
|
|
8
8
|
export * from "./api/qnotify";
|
|
9
|
+
export * from "./api/qeditor";
|
|
9
10
|
export * from "./api/qloading";
|
|
10
11
|
export * from "./api/touchswipe";
|
|
11
12
|
export * from "./api/web-storage";
|
package/dist/types/index.d.ts
CHANGED
|
@@ -1110,6 +1110,28 @@ export interface QBreadcrumbsElProps {
|
|
|
1110
1110
|
* Default value: true
|
|
1111
1111
|
*/
|
|
1112
1112
|
ripple?: boolean | any | undefined;
|
|
1113
|
+
/**
|
|
1114
|
+
* Emitted when the component is clicked
|
|
1115
|
+
* @param evt JS event object; If you are using route navigation ('to'/'replace' props) and you want to cancel navigation then call evt.preventDefault() synchronously in your event handler
|
|
1116
|
+
* @param go Available ONLY if you are using route navigation ('to'/'replace' props); When you need to control the time at which the component should trigger the route navigation then call evt.preventDefault() synchronously and then call this function at your convenience; Useful if you have async work to be done before the actual route navigation or if you want to redirect somewhere else
|
|
1117
|
+
*/
|
|
1118
|
+
onClick?: (
|
|
1119
|
+
evt: Event,
|
|
1120
|
+
go?: (opts?: {
|
|
1121
|
+
/**
|
|
1122
|
+
* Equivalent to Vue Router <router-link> 'to' property; Specify it explicitly otherwise it will be set with same value as component's 'to' prop
|
|
1123
|
+
*/
|
|
1124
|
+
to?: string | any;
|
|
1125
|
+
/**
|
|
1126
|
+
* Equivalent to Vue Router <router-link> 'replace' property; Specify it explicitly otherwise it will be set with same value as component's 'replace' prop
|
|
1127
|
+
*/
|
|
1128
|
+
replace?: boolean;
|
|
1129
|
+
/**
|
|
1130
|
+
* Return the router error, if any; Otherwise the returned Promise will always fulfill
|
|
1131
|
+
*/
|
|
1132
|
+
returnRouterError?: boolean;
|
|
1133
|
+
}) => Promise<any>
|
|
1134
|
+
) => void;
|
|
1113
1135
|
}
|
|
1114
1136
|
|
|
1115
1137
|
export interface QBreadcrumbsElSlots {
|
|
@@ -1769,11 +1791,27 @@ export interface QBtnProps {
|
|
|
1769
1791
|
*/
|
|
1770
1792
|
darkPercentage?: boolean | undefined;
|
|
1771
1793
|
/**
|
|
1772
|
-
* Emitted when component is clicked
|
|
1773
|
-
* @param evt JS event object; If you want to cancel navigation
|
|
1774
|
-
* @param
|
|
1794
|
+
* Emitted when the component is clicked
|
|
1795
|
+
* @param evt JS event object; If you are using route navigation ('to'/'replace' props) and you want to cancel navigation then call evt.preventDefault() synchronously in your event handler
|
|
1796
|
+
* @param go Available ONLY if you are using route navigation ('to'/'replace' props); When you need to control the time at which the component should trigger the route navigation then call evt.preventDefault() synchronously and then call this function at your convenience; Useful if you have async work to be done before the actual route navigation or if you want to redirect somewhere else
|
|
1775
1797
|
*/
|
|
1776
|
-
onClick?: (
|
|
1798
|
+
onClick?: (
|
|
1799
|
+
evt: Event,
|
|
1800
|
+
go?: (opts?: {
|
|
1801
|
+
/**
|
|
1802
|
+
* Equivalent to Vue Router <router-link> 'to' property; Specify it explicitly otherwise it will be set with same value as component's 'to' prop
|
|
1803
|
+
*/
|
|
1804
|
+
to?: string | any;
|
|
1805
|
+
/**
|
|
1806
|
+
* Equivalent to Vue Router <router-link> 'replace' property; Specify it explicitly otherwise it will be set with same value as component's 'replace' prop
|
|
1807
|
+
*/
|
|
1808
|
+
replace?: boolean;
|
|
1809
|
+
/**
|
|
1810
|
+
* Return the router error, if any; Otherwise the returned Promise will always fulfill
|
|
1811
|
+
*/
|
|
1812
|
+
returnRouterError?: boolean;
|
|
1813
|
+
}) => Promise<any>
|
|
1814
|
+
) => void;
|
|
1777
1815
|
}
|
|
1778
1816
|
|
|
1779
1817
|
export interface QBtnSlots {
|
|
@@ -3435,6 +3473,10 @@ export interface QEditor extends ComponentPublicInstance<QEditorProps> {
|
|
|
3435
3473
|
* @returns Provides the pure HTML within the editable area
|
|
3436
3474
|
*/
|
|
3437
3475
|
getContentEl: () => Element;
|
|
3476
|
+
/**
|
|
3477
|
+
* The current caret state
|
|
3478
|
+
*/
|
|
3479
|
+
readonly caret: QEditorCaret;
|
|
3438
3480
|
}
|
|
3439
3481
|
|
|
3440
3482
|
export interface QExpansionItemProps {
|
|
@@ -5538,6 +5580,28 @@ export interface QItemProps {
|
|
|
5538
5580
|
* Determines focus state, ONLY if 'manual-focus' is enabled / set to true
|
|
5539
5581
|
*/
|
|
5540
5582
|
focused?: boolean | undefined;
|
|
5583
|
+
/**
|
|
5584
|
+
* Emitted when the component is clicked
|
|
5585
|
+
* @param evt JS event object; If you are using route navigation ('to'/'replace' props) and you want to cancel navigation then call evt.preventDefault() synchronously in your event handler
|
|
5586
|
+
* @param go Available ONLY if you are using route navigation ('to'/'replace' props); When you need to control the time at which the component should trigger the route navigation then call evt.preventDefault() synchronously and then call this function at your convenience; Useful if you have async work to be done before the actual route navigation or if you want to redirect somewhere else
|
|
5587
|
+
*/
|
|
5588
|
+
onClick?: (
|
|
5589
|
+
evt: Event,
|
|
5590
|
+
go?: (opts?: {
|
|
5591
|
+
/**
|
|
5592
|
+
* Equivalent to Vue Router <router-link> 'to' property; Specify it explicitly otherwise it will be set with same value as component's 'to' prop
|
|
5593
|
+
*/
|
|
5594
|
+
to?: string | any;
|
|
5595
|
+
/**
|
|
5596
|
+
* Equivalent to Vue Router <router-link> 'replace' property; Specify it explicitly otherwise it will be set with same value as component's 'replace' prop
|
|
5597
|
+
*/
|
|
5598
|
+
replace?: boolean;
|
|
5599
|
+
/**
|
|
5600
|
+
* Return the router error, if any; Otherwise the returned Promise will always fulfill
|
|
5601
|
+
*/
|
|
5602
|
+
returnRouterError?: boolean;
|
|
5603
|
+
}) => Promise<any>
|
|
5604
|
+
) => void;
|
|
5541
5605
|
}
|
|
5542
5606
|
|
|
5543
5607
|
export interface QItemSlots {
|
|
@@ -7325,6 +7389,10 @@ export interface QRatingProps {
|
|
|
7325
7389
|
* Icon name following Quasar convention to be used when selected (optional); make sure you have the icon library installed unless you are using 'img:' prefix; If an array is provided each rating value will use the corresponding icon in the array (0 based)
|
|
7326
7390
|
*/
|
|
7327
7391
|
iconHalf?: string | readonly any[] | undefined;
|
|
7392
|
+
/**
|
|
7393
|
+
* Label to be set on aria-label for Icon; If an array is provided each rating value will use the corresponding aria-label in the array (0 based); If string value is provided the rating value will be appended; If not provided the name of the icon will be used
|
|
7394
|
+
*/
|
|
7395
|
+
iconAriaLabel?: string | readonly any[] | undefined;
|
|
7328
7396
|
/**
|
|
7329
7397
|
* Color name for component from the Quasar Color Palette; v1.5.0+: If an array is provided each rating value will use the corresponding color in the array (0 based)
|
|
7330
7398
|
*/
|
|
@@ -11490,11 +11558,27 @@ export interface QRouteTabProps {
|
|
|
11490
11558
|
*/
|
|
11491
11559
|
tabindex?: number | string | undefined;
|
|
11492
11560
|
/**
|
|
11493
|
-
* Emitted when component is clicked
|
|
11494
|
-
* @param evt JS event object; If you want to cancel navigation
|
|
11495
|
-
* @param
|
|
11561
|
+
* Emitted when the component is clicked
|
|
11562
|
+
* @param evt JS event object; If you want to cancel navigation then call evt.preventDefault() synchronously in your event handler
|
|
11563
|
+
* @param go When you need to control the time at which the component should trigger the route navigation then call evt.preventDefault() synchronously and then call this function at your convenience; Useful if you have async work to be done before the actual route navigation or if you want to redirect somewhere else
|
|
11496
11564
|
*/
|
|
11497
|
-
onClick?: (
|
|
11565
|
+
onClick?: (
|
|
11566
|
+
evt: Event,
|
|
11567
|
+
go?: (opts?: {
|
|
11568
|
+
/**
|
|
11569
|
+
* Equivalent to Vue Router <router-link> 'to' property; Specify it explicitly otherwise it will be set with same value as component's 'to' prop
|
|
11570
|
+
*/
|
|
11571
|
+
to?: string | any;
|
|
11572
|
+
/**
|
|
11573
|
+
* Equivalent to Vue Router <router-link> 'replace' property; Specify it explicitly otherwise it will be set with same value as component's 'replace' prop
|
|
11574
|
+
*/
|
|
11575
|
+
replace?: boolean;
|
|
11576
|
+
/**
|
|
11577
|
+
* Return the router error, if any; Otherwise the returned Promise will always fulfill
|
|
11578
|
+
*/
|
|
11579
|
+
returnRouterError?: boolean;
|
|
11580
|
+
}) => Promise<any>
|
|
11581
|
+
) => void;
|
|
11498
11582
|
}
|
|
11499
11583
|
|
|
11500
11584
|
export interface QRouteTabSlots {
|
|
@@ -13612,6 +13696,7 @@ export interface QEditorCommand {
|
|
|
13612
13696
|
}
|
|
13613
13697
|
|
|
13614
13698
|
import { VueStyleObjectProp } from "./api";
|
|
13699
|
+
import { QEditorCaret } from "./api";
|
|
13615
13700
|
import { ValidationRule } from "./api";
|
|
13616
13701
|
import { QRejectedEntry } from "./api";
|
|
13617
13702
|
import { SliderMarkerLabels } from "./api";
|
|
@@ -43,7 +43,7 @@ export type RunSequentialPromisesResult<TKey extends number | string, TValue> =
|
|
|
43
43
|
export interface RunSequentialPromisesOptions {
|
|
44
44
|
/**
|
|
45
45
|
* When making HTTP requests, be aware of the maximum threads that
|
|
46
|
-
* the hosting browser supports (usually
|
|
46
|
+
* the hosting browser supports (usually 5). Any number of threads
|
|
47
47
|
* above that won't add any real benefits.
|
|
48
48
|
*
|
|
49
49
|
* @default 1
|
|
@@ -3691,6 +3691,10 @@
|
|
|
3691
3691
|
"type": "string|array",
|
|
3692
3692
|
"description": "Icon name following Quasar convention to be used when selected (optional); make sure you have the icon library installed unless you are using 'img:' prefix; If an array is provided each rating value will use the corresponding icon in the array (0 based)"
|
|
3693
3693
|
},
|
|
3694
|
+
"q-rating/icon-aria-label": {
|
|
3695
|
+
"type": "string|array",
|
|
3696
|
+
"description": "Label to be set on aria-label for Icon; If an array is provided each rating value will use the corresponding aria-label in the array (0 based); If string value is provided the rating value will be appended; If not provided the name of the icon will be used"
|
|
3697
|
+
},
|
|
3694
3698
|
"q-rating/color": {
|
|
3695
3699
|
"type": "string|array",
|
|
3696
3700
|
"description": "Color name for component from the Quasar Color Palette; v1.5.0+: If an array is provided each rating value will use the corresponding color in the array (0 based)"
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"$schema": "",
|
|
3
3
|
"framework": "vue",
|
|
4
4
|
"name": "quasar",
|
|
5
|
-
"version": "2.
|
|
5
|
+
"version": "2.9.0",
|
|
6
6
|
"contributions": {
|
|
7
7
|
"html": {
|
|
8
8
|
"types-syntax": "typescript",
|
|
@@ -575,6 +575,27 @@
|
|
|
575
575
|
"default": "true"
|
|
576
576
|
}
|
|
577
577
|
],
|
|
578
|
+
"events": [
|
|
579
|
+
{
|
|
580
|
+
"name": "click",
|
|
581
|
+
"arguments": [
|
|
582
|
+
{
|
|
583
|
+
"name": "evt",
|
|
584
|
+
"type": "Event",
|
|
585
|
+
"description": "JS event object; If you are using route navigation ('to'/'replace' props) and you want to cancel navigation then call evt.preventDefault() synchronously in your event handler",
|
|
586
|
+
"doc-url": "https://v2.quasar.dev/vue-components/breadcrumbs"
|
|
587
|
+
},
|
|
588
|
+
{
|
|
589
|
+
"name": "go",
|
|
590
|
+
"type": "Function",
|
|
591
|
+
"description": "Available ONLY if you are using route navigation ('to'/'replace' props); When you need to control the time at which the component should trigger the route navigation then call evt.preventDefault() synchronously and then call this function at your convenience; Useful if you have async work to be done before the actual route navigation or if you want to redirect somewhere else",
|
|
592
|
+
"doc-url": "https://v2.quasar.dev/vue-components/breadcrumbs"
|
|
593
|
+
}
|
|
594
|
+
],
|
|
595
|
+
"description": "Emitted when the component is clicked",
|
|
596
|
+
"doc-url": "https://v2.quasar.dev/vue-components/breadcrumbs"
|
|
597
|
+
}
|
|
598
|
+
],
|
|
578
599
|
"slots": [
|
|
579
600
|
{
|
|
580
601
|
"name": "default",
|
|
@@ -1885,17 +1906,17 @@
|
|
|
1885
1906
|
{
|
|
1886
1907
|
"name": "evt",
|
|
1887
1908
|
"type": "Event",
|
|
1888
|
-
"description": "JS event object; If you want to cancel navigation
|
|
1909
|
+
"description": "JS event object; If you are using route navigation ('to'/'replace' props) and you want to cancel navigation then call evt.preventDefault() synchronously in your event handler",
|
|
1889
1910
|
"doc-url": "https://v2.quasar.dev/vue-components/button"
|
|
1890
1911
|
},
|
|
1891
1912
|
{
|
|
1892
|
-
"name": "
|
|
1913
|
+
"name": "go",
|
|
1893
1914
|
"type": "Function",
|
|
1894
|
-
"description": "When you need to control the time at which the
|
|
1915
|
+
"description": "Available ONLY if you are using route navigation ('to'/'replace' props); When you need to control the time at which the component should trigger the route navigation then call evt.preventDefault() synchronously and then call this function at your convenience; Useful if you have async work to be done before the actual route navigation or if you want to redirect somewhere else",
|
|
1895
1916
|
"doc-url": "https://v2.quasar.dev/vue-components/button"
|
|
1896
1917
|
}
|
|
1897
1918
|
],
|
|
1898
|
-
"description": "Emitted when component is clicked
|
|
1919
|
+
"description": "Emitted when the component is clicked",
|
|
1899
1920
|
"doc-url": "https://v2.quasar.dev/vue-components/button"
|
|
1900
1921
|
}
|
|
1901
1922
|
],
|
|
@@ -8591,6 +8612,27 @@
|
|
|
8591
8612
|
"type": "boolean"
|
|
8592
8613
|
}
|
|
8593
8614
|
],
|
|
8615
|
+
"events": [
|
|
8616
|
+
{
|
|
8617
|
+
"name": "click",
|
|
8618
|
+
"arguments": [
|
|
8619
|
+
{
|
|
8620
|
+
"name": "evt",
|
|
8621
|
+
"type": "Event",
|
|
8622
|
+
"description": "JS event object; If you are using route navigation ('to'/'replace' props) and you want to cancel navigation then call evt.preventDefault() synchronously in your event handler",
|
|
8623
|
+
"doc-url": "https://v2.quasar.dev/vue-components/list-and-list-items"
|
|
8624
|
+
},
|
|
8625
|
+
{
|
|
8626
|
+
"name": "go",
|
|
8627
|
+
"type": "Function",
|
|
8628
|
+
"description": "Available ONLY if you are using route navigation ('to'/'replace' props); When you need to control the time at which the component should trigger the route navigation then call evt.preventDefault() synchronously and then call this function at your convenience; Useful if you have async work to be done before the actual route navigation or if you want to redirect somewhere else",
|
|
8629
|
+
"doc-url": "https://v2.quasar.dev/vue-components/list-and-list-items"
|
|
8630
|
+
}
|
|
8631
|
+
],
|
|
8632
|
+
"description": "Emitted when the component is clicked",
|
|
8633
|
+
"doc-url": "https://v2.quasar.dev/vue-components/list-and-list-items"
|
|
8634
|
+
}
|
|
8635
|
+
],
|
|
8594
8636
|
"slots": [
|
|
8595
8637
|
{
|
|
8596
8638
|
"name": "default",
|
|
@@ -11720,6 +11762,15 @@
|
|
|
11720
11762
|
"description": "Icon name following Quasar convention to be used when selected (optional); make sure you have the icon library installed unless you are using 'img:' prefix; If an array is provided each rating value will use the corresponding icon in the array (0 based)\n\nExamples:\nmap\nion-add\nimg:https://cdn.quasar.dev/logo-v2/svg/logo.svg\nimg:path/to/some_image.png",
|
|
11721
11763
|
"doc-url": "https://v2.quasar.dev/vue-components/rating"
|
|
11722
11764
|
},
|
|
11765
|
+
{
|
|
11766
|
+
"name": "icon-aria-label",
|
|
11767
|
+
"value": {
|
|
11768
|
+
"kind": "expression",
|
|
11769
|
+
"type": "string|any[]"
|
|
11770
|
+
},
|
|
11771
|
+
"description": "Label to be set on aria-label for Icon; If an array is provided each rating value will use the corresponding aria-label in the array (0 based); If string value is provided the rating value will be appended; If not provided the name of the icon will be used\n\nExamples:\nRating\n[\"Bad\", \"Normal\", \"Good\"]",
|
|
11772
|
+
"doc-url": "https://v2.quasar.dev/vue-components/rating"
|
|
11773
|
+
},
|
|
11723
11774
|
{
|
|
11724
11775
|
"name": "color",
|
|
11725
11776
|
"value": {
|
|
@@ -16693,17 +16744,17 @@
|
|
|
16693
16744
|
{
|
|
16694
16745
|
"name": "evt",
|
|
16695
16746
|
"type": "Event",
|
|
16696
|
-
"description": "JS event object; If you want to cancel navigation
|
|
16747
|
+
"description": "JS event object; If you want to cancel navigation then call evt.preventDefault() synchronously in your event handler",
|
|
16697
16748
|
"doc-url": "https://v2.quasar.dev/vue-components/tabs"
|
|
16698
16749
|
},
|
|
16699
16750
|
{
|
|
16700
|
-
"name": "
|
|
16751
|
+
"name": "go",
|
|
16701
16752
|
"type": "Function",
|
|
16702
|
-
"description": "When you need to control the time at which the
|
|
16753
|
+
"description": "When you need to control the time at which the component should trigger the route navigation then call evt.preventDefault() synchronously and then call this function at your convenience; Useful if you have async work to be done before the actual route navigation or if you want to redirect somewhere else",
|
|
16703
16754
|
"doc-url": "https://v2.quasar.dev/vue-components/tabs"
|
|
16704
16755
|
}
|
|
16705
16756
|
],
|
|
16706
|
-
"description": "Emitted when component is clicked
|
|
16757
|
+
"description": "Emitted when the component is clicked",
|
|
16707
16758
|
"doc-url": "https://v2.quasar.dev/vue-components/tabs"
|
|
16708
16759
|
}
|
|
16709
16760
|
],
|
package/lang/nl.js
CHANGED
|
@@ -20,8 +20,8 @@ module.exports = {
|
|
|
20
20
|
search: 'Zoek',
|
|
21
21
|
filter: 'Filter',
|
|
22
22
|
refresh: 'Ververs',
|
|
23
|
-
expand: label => (label ? `
|
|
24
|
-
collapse: label => (label ? `"${ label }"
|
|
23
|
+
expand: label => (label ? `"${ label }" uitklappen` : 'Uitklappen'),
|
|
24
|
+
collapse: label => (label ? `"${ label }" inklappen` : 'Inklappen')
|
|
25
25
|
},
|
|
26
26
|
date: {
|
|
27
27
|
days: 'Zondag_Maandag_Dinsdag_Woensdag_Donderdag_Vrijdag_Zaterdag'.split('_'),
|
package/lang/nl.mjs
CHANGED
|
@@ -15,8 +15,8 @@ export default {
|
|
|
15
15
|
search: 'Zoek',
|
|
16
16
|
filter: 'Filter',
|
|
17
17
|
refresh: 'Ververs',
|
|
18
|
-
expand: label => (label ? `
|
|
19
|
-
collapse: label => (label ? `"${ label }"
|
|
18
|
+
expand: label => (label ? `"${ label }" uitklappen` : 'Uitklappen'),
|
|
19
|
+
collapse: label => (label ? `"${ label }" inklappen` : 'Inklappen')
|
|
20
20
|
},
|
|
21
21
|
date: {
|
|
22
22
|
days: 'Zondag_Maandag_Dinsdag_Woensdag_Donderdag_Vrijdag_Zaterdag'.split('_'),
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "quasar",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.9.0",
|
|
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",
|
|
@@ -29,8 +29,10 @@
|
|
|
29
29
|
"build": "node build/script.build.js",
|
|
30
30
|
"lint": "eslint --ext .js,.vue src dev",
|
|
31
31
|
"lint-fix": "eslint --ext .js,.vue src dev --fix",
|
|
32
|
-
"test:
|
|
33
|
-
"test:component
|
|
32
|
+
"test:build": "node build/script.build.js js api && node build/script.build.js js transforms",
|
|
33
|
+
"test:component": "yarn test:build && cd ./dev && cypress open-ct && cd ..",
|
|
34
|
+
"test:component:run": "yarn test:build && cd ./dev && cypress run-ct && cd ..",
|
|
35
|
+
"test:component:ci": "yarn test:build && cd ./dev && cypress run-ct --record --parallel && cd ..",
|
|
34
36
|
"test:create": "node ./test/cypress/helpers/create-spec.js -c"
|
|
35
37
|
},
|
|
36
38
|
"repository": {
|
|
@@ -21,20 +21,19 @@ export default createComponent({
|
|
|
21
21
|
}
|
|
22
22
|
},
|
|
23
23
|
|
|
24
|
+
emits: [ 'click' ],
|
|
25
|
+
|
|
24
26
|
setup (props, { slots }) {
|
|
25
|
-
const { linkTag,
|
|
27
|
+
const { linkTag, linkAttrs, linkClass, navigateOnClick } = useRouterLink()
|
|
26
28
|
|
|
27
29
|
const data = computed(() => {
|
|
28
|
-
|
|
30
|
+
return {
|
|
29
31
|
class: 'q-breadcrumbs__el q-link '
|
|
30
32
|
+ 'flex inline items-center relative-position '
|
|
31
33
|
+ (props.disable !== true ? 'q-link--focusable' + linkClass.value : 'q-breadcrumbs__el--disable'),
|
|
32
|
-
...
|
|
33
|
-
|
|
34
|
-
if (hasRouterLink.value === true) {
|
|
35
|
-
acc.onClick = navigateToRouterLink
|
|
34
|
+
...linkAttrs.value,
|
|
35
|
+
onClick: navigateOnClick
|
|
36
36
|
}
|
|
37
|
-
return acc
|
|
38
37
|
})
|
|
39
38
|
|
|
40
39
|
const iconClass = computed(() =>
|
|
@@ -32,5 +32,58 @@
|
|
|
32
32
|
"default": {
|
|
33
33
|
"desc": "This is where custom content goes, unless 'icon' and 'label' props are not enough"
|
|
34
34
|
}
|
|
35
|
+
},
|
|
36
|
+
|
|
37
|
+
"events": {
|
|
38
|
+
"click": {
|
|
39
|
+
"desc": "Emitted when the component is clicked",
|
|
40
|
+
"params": {
|
|
41
|
+
"evt": {
|
|
42
|
+
"extends": "evt",
|
|
43
|
+
"desc": "JS event object; If you are using route navigation ('to'/'replace' props) and you want to cancel navigation then call evt.preventDefault() synchronously in your event handler"
|
|
44
|
+
},
|
|
45
|
+
"go": {
|
|
46
|
+
"type": "Function",
|
|
47
|
+
"desc": "Available ONLY if you are using route navigation ('to'/'replace' props); When you need to control the time at which the component should trigger the route navigation then call evt.preventDefault() synchronously and then call this function at your convenience; Useful if you have async work to be done before the actual route navigation or if you want to redirect somewhere else",
|
|
48
|
+
"required": false,
|
|
49
|
+
"addedIn": "v2.9",
|
|
50
|
+
"params": {
|
|
51
|
+
"opts": {
|
|
52
|
+
"type": "Object",
|
|
53
|
+
"desc": "Optional options",
|
|
54
|
+
"required": false,
|
|
55
|
+
"definition": {
|
|
56
|
+
"to": {
|
|
57
|
+
"type": [ "String", "Object" ],
|
|
58
|
+
"desc": "Equivalent to Vue Router <router-link> 'to' property; Specify it explicitly otherwise it will be set with same value as component's 'to' prop",
|
|
59
|
+
"required": false,
|
|
60
|
+
"examples": [
|
|
61
|
+
"/home/dashboard",
|
|
62
|
+
"{ name: 'my-route-name' }"
|
|
63
|
+
]
|
|
64
|
+
},
|
|
65
|
+
|
|
66
|
+
"replace": {
|
|
67
|
+
"type": "Boolean",
|
|
68
|
+
"desc": "Equivalent to Vue Router <router-link> 'replace' property; Specify it explicitly otherwise it will be set with same value as component's 'replace' prop",
|
|
69
|
+
"required": false
|
|
70
|
+
},
|
|
71
|
+
|
|
72
|
+
"returnRouterError": {
|
|
73
|
+
"type": "Boolean",
|
|
74
|
+
"desc": "Return the router error, if any; Otherwise the returned Promise will always fulfill",
|
|
75
|
+
"required": false
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
},
|
|
80
|
+
"returns": {
|
|
81
|
+
"type": "Promise<any>",
|
|
82
|
+
"desc": "Returns the router's navigation promise",
|
|
83
|
+
"__exemption": [ "examples" ]
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
}
|
|
35
88
|
}
|
|
36
89
|
}
|
|
@@ -26,10 +26,12 @@ export default createComponent({
|
|
|
26
26
|
...useBtnProps,
|
|
27
27
|
|
|
28
28
|
percentage: Number,
|
|
29
|
-
darkPercentage: Boolean
|
|
29
|
+
darkPercentage: Boolean,
|
|
30
|
+
|
|
31
|
+
onTouchstart: [ Function, Array ]
|
|
30
32
|
},
|
|
31
33
|
|
|
32
|
-
emits: [ 'click', 'keydown', '
|
|
34
|
+
emits: [ 'click', 'keydown', 'mousedown', 'keyup' ],
|
|
33
35
|
|
|
34
36
|
setup (props, { slots, emit }) {
|
|
35
37
|
const { proxy } = getCurrentInstance()
|
|
@@ -37,7 +39,7 @@ export default createComponent({
|
|
|
37
39
|
const {
|
|
38
40
|
classes, style, innerClasses,
|
|
39
41
|
attributes,
|
|
40
|
-
|
|
42
|
+
hasLink, linkTag, navigateOnClick,
|
|
41
43
|
isActionable
|
|
42
44
|
} = useBtn(props)
|
|
43
45
|
|
|
@@ -72,7 +74,7 @@ export default createComponent({
|
|
|
72
74
|
if (props.loading === true) {
|
|
73
75
|
return {
|
|
74
76
|
onMousedown: onLoadingEvt,
|
|
75
|
-
|
|
77
|
+
onTouchstart: onLoadingEvt,
|
|
76
78
|
onClick: onLoadingEvt,
|
|
77
79
|
onKeydown: onLoadingEvt,
|
|
78
80
|
onKeyup: onLoadingEvt
|
|
@@ -80,12 +82,21 @@ export default createComponent({
|
|
|
80
82
|
}
|
|
81
83
|
|
|
82
84
|
if (isActionable.value === true) {
|
|
83
|
-
|
|
85
|
+
const acc = {
|
|
84
86
|
onClick,
|
|
85
87
|
onKeydown,
|
|
86
|
-
onMousedown
|
|
87
|
-
|
|
88
|
+
onMousedown
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
if (proxy.$q.platform.has.touch === true) {
|
|
92
|
+
const suffix = props.onTouchstart !== void 0
|
|
93
|
+
? ''
|
|
94
|
+
: 'Passive'
|
|
95
|
+
|
|
96
|
+
acc[ `onTouchstart${ suffix }` ] = onTouchstart
|
|
88
97
|
}
|
|
98
|
+
|
|
99
|
+
return acc
|
|
89
100
|
}
|
|
90
101
|
|
|
91
102
|
return {
|
|
@@ -135,18 +146,7 @@ export default createComponent({
|
|
|
135
146
|
}
|
|
136
147
|
}
|
|
137
148
|
|
|
138
|
-
|
|
139
|
-
const go = () => {
|
|
140
|
-
e.__qNavigate = true
|
|
141
|
-
navigateToRouterLink(e)
|
|
142
|
-
}
|
|
143
|
-
|
|
144
|
-
emit('click', e, go)
|
|
145
|
-
e.defaultPrevented !== true && go()
|
|
146
|
-
}
|
|
147
|
-
else {
|
|
148
|
-
emit('click', e)
|
|
149
|
-
}
|
|
149
|
+
navigateOnClick(e)
|
|
150
150
|
}
|
|
151
151
|
|
|
152
152
|
function onKeydown (e) {
|
|
@@ -49,17 +49,52 @@
|
|
|
49
49
|
|
|
50
50
|
"events": {
|
|
51
51
|
"click": {
|
|
52
|
-
"desc": "Emitted when component is clicked
|
|
52
|
+
"desc": "Emitted when the component is clicked",
|
|
53
53
|
"params": {
|
|
54
54
|
"evt": {
|
|
55
55
|
"extends": "evt",
|
|
56
|
-
"desc": "JS event object; If you want to cancel navigation
|
|
56
|
+
"desc": "JS event object; If you are using route navigation ('to'/'replace' props) and you want to cancel navigation then call evt.preventDefault() synchronously in your event handler"
|
|
57
57
|
},
|
|
58
|
-
"
|
|
58
|
+
"go": {
|
|
59
59
|
"type": "Function",
|
|
60
|
-
"desc": "When you need to control the time at which the
|
|
61
|
-
"
|
|
62
|
-
"
|
|
60
|
+
"desc": "Available ONLY if you are using route navigation ('to'/'replace' props); When you need to control the time at which the component should trigger the route navigation then call evt.preventDefault() synchronously and then call this function at your convenience; Useful if you have async work to be done before the actual route navigation or if you want to redirect somewhere else",
|
|
61
|
+
"required": false,
|
|
62
|
+
"addedIn": "v2.9",
|
|
63
|
+
"params": {
|
|
64
|
+
"opts": {
|
|
65
|
+
"type": "Object",
|
|
66
|
+
"desc": "Optional options",
|
|
67
|
+
"required": false,
|
|
68
|
+
"definition": {
|
|
69
|
+
"to": {
|
|
70
|
+
"type": [ "String", "Object" ],
|
|
71
|
+
"desc": "Equivalent to Vue Router <router-link> 'to' property; Specify it explicitly otherwise it will be set with same value as component's 'to' prop",
|
|
72
|
+
"required": false,
|
|
73
|
+
"examples": [
|
|
74
|
+
"/home/dashboard",
|
|
75
|
+
"{ name: 'my-route-name' }"
|
|
76
|
+
]
|
|
77
|
+
},
|
|
78
|
+
|
|
79
|
+
"replace": {
|
|
80
|
+
"type": "Boolean",
|
|
81
|
+
"desc": "Equivalent to Vue Router <router-link> 'replace' property; Specify it explicitly otherwise it will be set with same value as component's 'replace' prop",
|
|
82
|
+
"required": false
|
|
83
|
+
},
|
|
84
|
+
|
|
85
|
+
"returnRouterError": {
|
|
86
|
+
"type": "Boolean",
|
|
87
|
+
"desc": "Return the router error, if any; Otherwise the returned Promise will always fulfill",
|
|
88
|
+
"required": false
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
},
|
|
93
|
+
"returns": {
|
|
94
|
+
"type": "Promise<any>",
|
|
95
|
+
"desc": "Returns the router's navigation promise",
|
|
96
|
+
"__exemption": [ "examples" ]
|
|
97
|
+
}
|
|
63
98
|
}
|
|
64
99
|
}
|
|
65
100
|
}
|
|
@@ -80,7 +80,9 @@ export const useBtnProps = {
|
|
|
80
80
|
export default function (props) {
|
|
81
81
|
const sizeStyle = useSize(props, defaultSizes)
|
|
82
82
|
const alignClass = useAlign(props)
|
|
83
|
-
const { hasRouterLink, hasLink, linkTag,
|
|
83
|
+
const { hasRouterLink, hasLink, linkTag, linkAttrs, navigateOnClick } = useRouterLink({
|
|
84
|
+
fallbackTag: 'button'
|
|
85
|
+
})
|
|
84
86
|
|
|
85
87
|
const style = computed(() => {
|
|
86
88
|
const obj = props.fab === false && props.fabMini === false
|
|
@@ -123,7 +125,7 @@ export default function (props) {
|
|
|
123
125
|
const acc = { tabindex: tabIndex.value }
|
|
124
126
|
|
|
125
127
|
if (hasLink.value === true) {
|
|
126
|
-
Object.assign(acc,
|
|
128
|
+
Object.assign(acc, linkAttrs.value)
|
|
127
129
|
}
|
|
128
130
|
else if (formTypes.includes(props.type) === true) {
|
|
129
131
|
acc.type = props.type
|
|
@@ -136,6 +138,7 @@ export default function (props) {
|
|
|
136
138
|
else if (acc.href === void 0) {
|
|
137
139
|
acc.role = 'button'
|
|
138
140
|
}
|
|
141
|
+
|
|
139
142
|
if (hasRouterLink.value !== true && mediaTypeRE.test(props.type) === true) {
|
|
140
143
|
acc.type = props.type
|
|
141
144
|
}
|
|
@@ -198,10 +201,9 @@ export default function (props) {
|
|
|
198
201
|
style,
|
|
199
202
|
innerClasses,
|
|
200
203
|
attributes,
|
|
201
|
-
hasRouterLink,
|
|
202
204
|
hasLink,
|
|
203
205
|
linkTag,
|
|
204
|
-
|
|
206
|
+
navigateOnClick,
|
|
205
207
|
isActionable
|
|
206
208
|
}
|
|
207
209
|
}
|