quasar 2.21.4 → 2.23.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/Mutation.json +1 -1
- package/dist/api/QLinearProgress.json +1 -1
- package/dist/api/QUploader.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 +1 -1
- package/dist/icon-set/fontawesome-v6.umd.prod.js +1 -1
- package/dist/icon-set/fontawesome-v7-pro.umd.prod.js +1 -1
- package/dist/icon-set/fontawesome-v7.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/mdi-v7.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-fontawesome-v7.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-ionicons-v7.umd.prod.js +1 -1
- package/dist/icon-set/svg-ionicons-v8.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-mdi-v7.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/bs-BA.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-CH.umd.prod.js +1 -1
- package/dist/lang/de-DE.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/hi.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/kk.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/lb.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/mk.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-MY.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/sm.umd.prod.js +1 -1
- package/dist/lang/sq.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/tl.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/ur-PK.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.client.js +654 -207
- package/dist/quasar.css +20 -11
- package/dist/quasar.prod.css +1 -1
- package/dist/quasar.rtl.css +25 -20
- package/dist/quasar.rtl.prod.css +1 -1
- package/dist/quasar.sass +21 -12
- package/dist/quasar.server.prod.cjs +35 -35
- package/dist/quasar.server.prod.js +25 -25
- package/dist/quasar.umd.js +654 -206
- package/dist/quasar.umd.prod.js +19 -19
- package/dist/transforms/import-map.json +1 -1
- package/dist/types/composables.d.ts +15 -5
- package/dist/types/index.d.ts +5 -5
- package/dist/web-types/web-types.json +1 -1
- package/package.json +6 -6
- package/src/components/btn/QBtn.js +1 -1
- package/src/components/carousel/QCarousel.js +2 -0
- package/src/components/chip/QChip.js +20 -4
- package/src/components/date/QDate.js +9 -2
- package/src/components/dialog/QDialog.js +9 -2
- package/src/components/editor/QEditor.js +18 -3
- package/src/components/expansion-item/QExpansionItem.js +6 -1
- package/src/components/fab/QFab.sass +11 -9
- package/src/components/input/QInput.js +42 -1
- package/src/components/input/QInput.json +7 -0
- package/src/components/input/use-mask.js +12 -4
- package/src/components/item/QItem.js +10 -1
- package/src/components/linear-progress/QLinearProgress.js +4 -11
- package/src/components/linear-progress/QLinearProgress.json +1 -1
- package/src/components/linear-progress/QLinearProgress.sass +7 -2
- package/src/components/menu/QMenu.js +9 -2
- package/src/components/range/QRange.js +2 -1
- package/src/components/rating/QRating.js +27 -8
- package/src/components/rating/QRating.sass +4 -0
- package/src/components/resize-observer/QResizeObserver.js +14 -3
- package/src/components/scroll-area/QScrollArea.js +69 -17
- package/src/components/slide-item/QSlideItem.js +3 -2
- package/src/components/slider/use-slider.js +7 -3
- package/src/components/stepper/StepHeader.js +11 -2
- package/src/components/table/QTable.js +11 -9
- package/src/components/table/QTh.js +20 -1
- package/src/components/table/table-column-selection.js +9 -1
- package/src/components/table/table-pagination.js +5 -2
- package/src/components/table/table-row-selection.js +10 -10
- package/src/components/tabs/QTabs.js +5 -6
- package/src/components/time/QTime.js +35 -10
- package/src/components/tooltip/QTooltip.js +112 -6
- package/src/components/tree/QTree.js +124 -4
- package/src/components/uploader/uploader-core.js +19 -4
- package/src/components/uploader/xhr-uploader-plugin.js +93 -43
- package/src/components/uploader/xhr-uploader-plugin.json +4 -4
- package/src/composables/private.use-field/use-field.js +2 -0
- package/src/composables/private.use-file/use-file.js +21 -12
- package/src/composables/private.use-fullscreen/use-fullscreen.js +71 -11
- package/src/composables/private.use-fullscreen/use-fullscreen.test.js +158 -0
- package/src/composables/private.use-model-toggle/use-model-toggle.js +2 -0
- package/src/composables/private.use-panel/use-panel.js +6 -2
- package/src/composables/use-animation-frame/use-animation-frame.js +47 -0
- package/src/composables/use-animation-frame/use-animation-frame.test.js +122 -0
- package/src/composables/use-interval/use-interval.js +8 -0
- package/src/composables/use-render-cache/use-render-cache.js +15 -10
- package/src/composables/use-timeout/use-timeout.js +8 -0
- package/src/composables.js +1 -1
- package/src/directives/intersection/Intersection.js +2 -2
- package/src/directives/mutation/Mutation.json +1 -1
- package/src/directives/touch-repeat/TouchRepeat.js +3 -1
- package/src/plugins/cookies/Cookies.js +29 -13
- package/src/plugins/meta/Meta.js +57 -9
- package/src/utils/extend/extend.js +4 -0
- package/src/utils/extend/extend.test.js +29 -0
- package/src/utils/private.click-outside/click-outside.js +27 -12
- package/src/utils/private.click-outside/click-outside.test.js +132 -0
- package/src/utils/scroll/prevent-scroll.js +4 -4
package/dist/quasar.client.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* Quasar Framework v2.
|
|
2
|
+
* Quasar Framework v2.23.0
|
|
3
3
|
* (c) 2015-present Razvan Stoenescu
|
|
4
4
|
* Released under the MIT License.
|
|
5
5
|
*/
|
|
@@ -1103,7 +1103,7 @@ function prepareApp(app, uiOpts, pluginOpts) {
|
|
|
1103
1103
|
};
|
|
1104
1104
|
}
|
|
1105
1105
|
var install_quasar_default = function installQuasar(parentApp, opts = {}) {
|
|
1106
|
-
const $q = { version: "2.
|
|
1106
|
+
const $q = { version: "2.23.0" };
|
|
1107
1107
|
if (!globalConfigIsFrozen) {
|
|
1108
1108
|
if (opts.config !== void 0) Object.assign(globalConfig, opts.config);
|
|
1109
1109
|
$q.config = { ...globalConfig };
|
|
@@ -2443,7 +2443,7 @@ var QBtn_default = createComponent({
|
|
|
2443
2443
|
const blurTarget = blurTargetRef.value;
|
|
2444
2444
|
if (!destroying && (touchTarget === rootRef.value || mouseTarget === rootRef.value) && blurTarget !== null && blurTarget !== document.activeElement) {
|
|
2445
2445
|
blurTarget.setAttribute("tabindex", -1);
|
|
2446
|
-
blurTarget.focus();
|
|
2446
|
+
blurTarget.focus({ preventScroll: true });
|
|
2447
2447
|
}
|
|
2448
2448
|
if (touchTarget === rootRef.value) {
|
|
2449
2449
|
if (localTouchTargetEl !== null) {
|
|
@@ -2773,7 +2773,7 @@ const useModelToggleEmits = [
|
|
|
2773
2773
|
"beforeHide",
|
|
2774
2774
|
"hide"
|
|
2775
2775
|
];
|
|
2776
|
-
function useModelToggle({ showing, canShow, hideOnRouteChange, handleShow, handleHide, processOnMount }) {
|
|
2776
|
+
function useModelToggle({ showing, canShow, hideOnRouteChange, handleShow, handleHide, handleRouteChange, processOnMount }) {
|
|
2777
2777
|
const vm = getCurrentInstance();
|
|
2778
2778
|
const { props, emit, proxy } = vm;
|
|
2779
2779
|
let payload;
|
|
@@ -2826,7 +2826,10 @@ function useModelToggle({ showing, canShow, hideOnRouteChange, handleShow, handl
|
|
|
2826
2826
|
}
|
|
2827
2827
|
watch(() => props.modelValue, processModelChange);
|
|
2828
2828
|
if (hideOnRouteChange !== void 0 && vmHasRouter(vm)) watch(() => proxy.$route.fullPath, () => {
|
|
2829
|
-
if (hideOnRouteChange.value && showing.value)
|
|
2829
|
+
if (hideOnRouteChange.value && showing.value) {
|
|
2830
|
+
handleRouteChange?.();
|
|
2831
|
+
hide();
|
|
2832
|
+
}
|
|
2830
2833
|
});
|
|
2831
2834
|
if (processOnMount) onMounted(() => {
|
|
2832
2835
|
processModelChange(props.modelValue);
|
|
@@ -3284,19 +3287,25 @@ function globalHandler(evt) {
|
|
|
3284
3287
|
}
|
|
3285
3288
|
const target = evt.target;
|
|
3286
3289
|
if (target === void 0 || target.nodeType === 8 || target.classList.contains("no-pointer-events")) return;
|
|
3287
|
-
let
|
|
3288
|
-
|
|
3289
|
-
|
|
3290
|
-
|
|
3291
|
-
|
|
3290
|
+
let closableContentEls = null;
|
|
3291
|
+
let sawClosablePortal = false;
|
|
3292
|
+
for (let i = portalProxyList.length - 1; i >= 0; i--) {
|
|
3293
|
+
const proxy = portalProxyList[i].$;
|
|
3294
|
+
const name = proxy.type.name;
|
|
3295
|
+
if (name === "QTooltip") continue;
|
|
3296
|
+
if (name === "QDialog") {
|
|
3297
|
+
if (proxy.props.seamless !== true) {
|
|
3298
|
+
if (sawClosablePortal === false) return;
|
|
3299
|
+
closableContentEls = new Set(portalProxyList.slice(i + 1).map((vm) => vm.contentEl));
|
|
3300
|
+
break;
|
|
3301
|
+
}
|
|
3292
3302
|
continue;
|
|
3293
3303
|
}
|
|
3294
|
-
|
|
3295
|
-
if (!proxy.props.seamless) return;
|
|
3296
|
-
portalIndex--;
|
|
3304
|
+
sawClosablePortal = true;
|
|
3297
3305
|
}
|
|
3298
3306
|
for (let i = registeredList.length - 1; i >= 0; i--) {
|
|
3299
3307
|
const state = registeredList[i];
|
|
3308
|
+
if (closableContentEls !== null && !closableContentEls.has(state.innerRef.value)) return;
|
|
3300
3309
|
if ((state.anchorEl.value === null || !state.anchorEl.value.contains(target)) && (target === document.body || state.innerRef.value !== null && !state.innerRef.value.contains(target))) {
|
|
3301
3310
|
evt.qClickOutside = true;
|
|
3302
3311
|
state.onClickOutside(evt);
|
|
@@ -3627,6 +3636,7 @@ var QMenu_default = createComponent({
|
|
|
3627
3636
|
canShow,
|
|
3628
3637
|
handleShow,
|
|
3629
3638
|
handleHide,
|
|
3639
|
+
handleRouteChange,
|
|
3630
3640
|
hideOnRouteChange,
|
|
3631
3641
|
processOnMount: true
|
|
3632
3642
|
});
|
|
@@ -3702,14 +3712,20 @@ var QMenu_default = createComponent({
|
|
|
3702
3712
|
hidePortal();
|
|
3703
3713
|
anchorCleanup(true);
|
|
3704
3714
|
if (refocusTarget !== null && (evt === void 0 || !evt.qClickOutside)) {
|
|
3705
|
-
(
|
|
3715
|
+
const target = (evt?.type.indexOf("key") === 0 ? refocusTarget.closest("[tabindex]:not([tabindex^=\"-\"])") : void 0) || refocusTarget;
|
|
3706
3716
|
refocusTarget = null;
|
|
3717
|
+
addFocusFn(() => {
|
|
3718
|
+
if (target.isConnected) target.focus();
|
|
3719
|
+
});
|
|
3707
3720
|
}
|
|
3708
3721
|
registerTimeout(() => {
|
|
3709
3722
|
hidePortal(true);
|
|
3710
3723
|
emit("hide", evt);
|
|
3711
3724
|
}, props.transitionDuration);
|
|
3712
3725
|
}
|
|
3726
|
+
function handleRouteChange() {
|
|
3727
|
+
refocusTarget = null;
|
|
3728
|
+
}
|
|
3713
3729
|
function anchorCleanup(hiding) {
|
|
3714
3730
|
absoluteOffset = void 0;
|
|
3715
3731
|
if (unwatchPosition !== void 0) {
|
|
@@ -4423,7 +4439,7 @@ var TouchSwipe_default = createDirective({
|
|
|
4423
4439
|
function useRenderCache() {
|
|
4424
4440
|
let cache = Object.create(null);
|
|
4425
4441
|
return {
|
|
4426
|
-
getCache: (key, defaultValue) => cache[key]
|
|
4442
|
+
getCache: (key, defaultValue) => Object.hasOwn(cache, key) ? cache[key] : cache[key] = typeof defaultValue === "function" ? defaultValue() : defaultValue,
|
|
4427
4443
|
setCache(key, obj) {
|
|
4428
4444
|
cache[key] = obj;
|
|
4429
4445
|
},
|
|
@@ -4502,8 +4518,8 @@ function usePanel() {
|
|
|
4502
4518
|
mouse: true
|
|
4503
4519
|
}
|
|
4504
4520
|
]]);
|
|
4505
|
-
const transitionPrev = computed(() => props.transitionPrev || `slide-${props.vertical ? "down" : "right"}`);
|
|
4506
|
-
const transitionNext = computed(() => props.transitionNext || `slide-${props.vertical ? "up" : "left"}`);
|
|
4521
|
+
const transitionPrev = computed(() => props.transitionPrev || `slide-${props.vertical ? "down" : proxy.$q.lang.rtl ? "left" : "right"}`);
|
|
4522
|
+
const transitionNext = computed(() => props.transitionNext || `slide-${props.vertical ? "up" : proxy.$q.lang.rtl ? "right" : "left"}`);
|
|
4507
4523
|
const transitionStyle = computed(() => `--q-transition-duration: ${props.transitionDuration}ms`);
|
|
4508
4524
|
const contentKey = computed(() => typeof props.modelValue === "string" || typeof props.modelValue === "number" ? props.modelValue : String(props.modelValue));
|
|
4509
4525
|
const keepAliveProps = computed(() => ({
|
|
@@ -4613,8 +4629,33 @@ function usePanel() {
|
|
|
4613
4629
|
};
|
|
4614
4630
|
}
|
|
4615
4631
|
//#endregion
|
|
4632
|
+
//#region src/composables/use-animation-frame/use-animation-frame.js
|
|
4633
|
+
function useAnimationFrame() {
|
|
4634
|
+
let frameId = null;
|
|
4635
|
+
const vm = getCurrentInstance();
|
|
4636
|
+
function removeAnimationFrame() {
|
|
4637
|
+
if (frameId !== null) {
|
|
4638
|
+
cancelAnimationFrame(frameId);
|
|
4639
|
+
frameId = null;
|
|
4640
|
+
}
|
|
4641
|
+
}
|
|
4642
|
+
onDeactivated(removeAnimationFrame);
|
|
4643
|
+
onBeforeUnmount(removeAnimationFrame);
|
|
4644
|
+
return {
|
|
4645
|
+
removeAnimationFrame,
|
|
4646
|
+
registerAnimationFrame(fn) {
|
|
4647
|
+
removeAnimationFrame();
|
|
4648
|
+
if (!vmIsDestroyed(vm)) frameId = requestAnimationFrame(() => {
|
|
4649
|
+
frameId = null;
|
|
4650
|
+
fn();
|
|
4651
|
+
});
|
|
4652
|
+
}
|
|
4653
|
+
};
|
|
4654
|
+
}
|
|
4655
|
+
//#endregion
|
|
4616
4656
|
//#region src/composables/private.use-fullscreen/use-fullscreen.js
|
|
4617
4657
|
let counter = 0;
|
|
4658
|
+
let restoreState = null;
|
|
4618
4659
|
const useFullscreenProps = {
|
|
4619
4660
|
fullscreen: Boolean,
|
|
4620
4661
|
noRouteFullscreenExit: Boolean
|
|
@@ -4625,6 +4666,8 @@ function useFullscreen() {
|
|
|
4625
4666
|
const { props, emit, proxy } = vm;
|
|
4626
4667
|
let historyEntry, fullscreenFillerNode;
|
|
4627
4668
|
const inFullscreen = ref(false);
|
|
4669
|
+
const { registerTick, removeTick } = useTick();
|
|
4670
|
+
const { registerAnimationFrame, removeAnimationFrame } = useAnimationFrame();
|
|
4628
4671
|
if (vmHasRouter(vm)) watch(() => proxy.$route.fullPath, () => {
|
|
4629
4672
|
if (!props.noRouteFullscreenExit) exitFullscreen();
|
|
4630
4673
|
});
|
|
@@ -4640,7 +4683,15 @@ function useFullscreen() {
|
|
|
4640
4683
|
else setFullscreen();
|
|
4641
4684
|
}
|
|
4642
4685
|
function setFullscreen() {
|
|
4643
|
-
if (inFullscreen.value) return;
|
|
4686
|
+
if (vmIsDestroyed(vm) || inFullscreen.value) return;
|
|
4687
|
+
removeAnimationFrame();
|
|
4688
|
+
removeTick();
|
|
4689
|
+
if (counter === 0) restoreState = {
|
|
4690
|
+
left: getHorizontalScrollPosition(window),
|
|
4691
|
+
top: getVerticalScrollPosition(window),
|
|
4692
|
+
width: window.innerWidth,
|
|
4693
|
+
height: window.innerHeight
|
|
4694
|
+
};
|
|
4644
4695
|
inFullscreen.value = true;
|
|
4645
4696
|
proxy.$el.replaceWith(fullscreenFillerNode);
|
|
4646
4697
|
document.body.append(proxy.$el);
|
|
@@ -4649,21 +4700,40 @@ function useFullscreen() {
|
|
|
4649
4700
|
historyEntry = { handler: exitFullscreen };
|
|
4650
4701
|
History_default.add(historyEntry);
|
|
4651
4702
|
}
|
|
4652
|
-
function
|
|
4703
|
+
function exitFullscreenImpl(shouldRestoreElement) {
|
|
4653
4704
|
if (!inFullscreen.value) return;
|
|
4654
4705
|
if (historyEntry !== void 0) {
|
|
4655
4706
|
History_default.remove(historyEntry);
|
|
4656
4707
|
historyEntry = void 0;
|
|
4657
4708
|
}
|
|
4658
|
-
fullscreenFillerNode.replaceWith(proxy.$el);
|
|
4709
|
+
if (shouldRestoreElement === true) fullscreenFillerNode.replaceWith(proxy.$el);
|
|
4710
|
+
else fullscreenFillerNode.remove();
|
|
4659
4711
|
inFullscreen.value = false;
|
|
4660
4712
|
counter = Math.max(0, counter - 1);
|
|
4661
|
-
if (counter
|
|
4662
|
-
|
|
4663
|
-
|
|
4713
|
+
if (counter !== 0) return;
|
|
4714
|
+
document.body.classList.remove("q-body--fullscreen-mixin");
|
|
4715
|
+
if (restoreState === null) return;
|
|
4716
|
+
const { left, top, width, height } = restoreState;
|
|
4717
|
+
restoreState = null;
|
|
4718
|
+
if (vmIsDestroyed(vm)) return;
|
|
4719
|
+
registerTick(() => {
|
|
4720
|
+
if (counter !== 0) return;
|
|
4721
|
+
registerAnimationFrame(() => {
|
|
4722
|
+
if (counter !== 0) return;
|
|
4723
|
+
if (window.innerWidth !== width || window.innerHeight !== height)
|
|
4724
|
+
/**
|
|
4725
|
+
* If user has resized the window while in fullscreen mode,
|
|
4726
|
+
* we cannot restore the scroll position because it will be wrong.
|
|
4727
|
+
* So we just scroll the element into view instead,
|
|
4728
|
+
* which is the best we can do.
|
|
4729
|
+
*/
|
|
4664
4730
|
proxy.$el.scrollIntoView();
|
|
4665
|
-
|
|
4666
|
-
|
|
4731
|
+
else window.scrollTo(left, top);
|
|
4732
|
+
});
|
|
4733
|
+
});
|
|
4734
|
+
}
|
|
4735
|
+
function exitFullscreen() {
|
|
4736
|
+
exitFullscreenImpl(true);
|
|
4667
4737
|
}
|
|
4668
4738
|
onBeforeMount(() => {
|
|
4669
4739
|
fullscreenFillerNode = document.createElement("span");
|
|
@@ -4671,6 +4741,12 @@ function useFullscreen() {
|
|
|
4671
4741
|
onMounted(() => {
|
|
4672
4742
|
if (props.fullscreen) setFullscreen();
|
|
4673
4743
|
});
|
|
4744
|
+
onDeactivated(() => {
|
|
4745
|
+
exitFullscreenImpl(proxy.$el.isConnected);
|
|
4746
|
+
});
|
|
4747
|
+
onActivated(() => {
|
|
4748
|
+
if (props.fullscreen) setFullscreen();
|
|
4749
|
+
});
|
|
4674
4750
|
onBeforeUnmount(exitFullscreen);
|
|
4675
4751
|
Object.assign(proxy, {
|
|
4676
4752
|
toggleFullscreen,
|
|
@@ -4738,7 +4814,7 @@ var QCarousel_default = createComponent({
|
|
|
4738
4814
|
const { proxy: { $q } } = getCurrentInstance();
|
|
4739
4815
|
const isDark = useDark(props, $q);
|
|
4740
4816
|
let timer = null, panelsLen;
|
|
4741
|
-
const { updatePanelsList, getPanelContent, panelDirectives, goToPanel, previousPanel, nextPanel, getEnabledPanels, panelIndex } = usePanel();
|
|
4817
|
+
const { updatePanelsList, updatePanelIndex, getPanelContent, panelDirectives, goToPanel, previousPanel, nextPanel, getEnabledPanels, panelIndex } = usePanel();
|
|
4742
4818
|
const { inFullscreen } = useFullscreen();
|
|
4743
4819
|
const style = computed(() => !inFullscreen.value && props.height !== void 0 ? { height: props.height } : {});
|
|
4744
4820
|
const direction = computed(() => props.vertical ? "vertical" : "horizontal");
|
|
@@ -4849,6 +4925,7 @@ var QCarousel_default = createComponent({
|
|
|
4849
4925
|
}
|
|
4850
4926
|
return () => {
|
|
4851
4927
|
panelsLen = updatePanelsList(slots);
|
|
4928
|
+
updatePanelIndex();
|
|
4852
4929
|
return h("div", {
|
|
4853
4930
|
class: classes.value,
|
|
4854
4931
|
style: style.value
|
|
@@ -5173,6 +5250,9 @@ var QCheckbox_default = createComponent({
|
|
|
5173
5250
|
});
|
|
5174
5251
|
//#endregion
|
|
5175
5252
|
//#region src/components/chip/QChip.js
|
|
5253
|
+
function preventSpace$3(e) {
|
|
5254
|
+
if (e.keyCode === 32) stopAndPrevent(e);
|
|
5255
|
+
}
|
|
5176
5256
|
const defaultSizes$1 = {
|
|
5177
5257
|
xs: 8,
|
|
5178
5258
|
sm: 10,
|
|
@@ -5235,7 +5315,11 @@ var QChip_default = createComponent({
|
|
|
5235
5315
|
const chip = props.disable ? {
|
|
5236
5316
|
tabindex: -1,
|
|
5237
5317
|
"aria-disabled": "true"
|
|
5238
|
-
} : {
|
|
5318
|
+
} : {
|
|
5319
|
+
tabindex: props.tabindex || 0,
|
|
5320
|
+
role: "button",
|
|
5321
|
+
"aria-pressed": props.selected ? "true" : "false"
|
|
5322
|
+
};
|
|
5239
5323
|
return {
|
|
5240
5324
|
chip,
|
|
5241
5325
|
remove: {
|
|
@@ -5247,7 +5331,10 @@ var QChip_default = createComponent({
|
|
|
5247
5331
|
};
|
|
5248
5332
|
});
|
|
5249
5333
|
function onKeyup(e) {
|
|
5250
|
-
if (e.keyCode
|
|
5334
|
+
if ([13, 32].includes(e.keyCode)) {
|
|
5335
|
+
onClick(e);
|
|
5336
|
+
stopAndPrevent(e);
|
|
5337
|
+
}
|
|
5251
5338
|
}
|
|
5252
5339
|
function onClick(e) {
|
|
5253
5340
|
if (!props.disable) {
|
|
@@ -5256,7 +5343,7 @@ var QChip_default = createComponent({
|
|
|
5256
5343
|
}
|
|
5257
5344
|
}
|
|
5258
5345
|
function onRemove(e) {
|
|
5259
|
-
if (e.keyCode === void 0 || e.keyCode
|
|
5346
|
+
if (e.keyCode === void 0 || [13, 32].includes(e.keyCode)) {
|
|
5260
5347
|
stopAndPrevent(e);
|
|
5261
5348
|
if (!props.disable) {
|
|
5262
5349
|
emit("update:modelValue", false);
|
|
@@ -5282,6 +5369,7 @@ var QChip_default = createComponent({
|
|
|
5282
5369
|
name: removeIcon.value,
|
|
5283
5370
|
...attributes.value.remove,
|
|
5284
5371
|
onClick: onRemove,
|
|
5372
|
+
onKeydown: preventSpace$3,
|
|
5285
5373
|
onKeyup: onRemove
|
|
5286
5374
|
}));
|
|
5287
5375
|
return child;
|
|
@@ -5294,6 +5382,7 @@ var QChip_default = createComponent({
|
|
|
5294
5382
|
};
|
|
5295
5383
|
if (isClickable.value) Object.assign(data, attributes.value.chip, {
|
|
5296
5384
|
onClick,
|
|
5385
|
+
onKeydown: preventSpace$3,
|
|
5297
5386
|
onKeyup
|
|
5298
5387
|
});
|
|
5299
5388
|
return hDir("div", data, getContent(), "ripple", props.ripple !== false && !props.disable, () => [[Ripple_default, props.ripple]]);
|
|
@@ -6056,16 +6145,14 @@ function useSlider({ updateValue, updatePosition, getDragging, formAttrs }) {
|
|
|
6056
6145
|
viewBox: "0 0 20 20",
|
|
6057
6146
|
"aria-hidden": "true"
|
|
6058
6147
|
}, [h("path", { d: props.thumbPath })]), h("div", { class: "q-slider__focus-ring fit" })];
|
|
6059
|
-
if (props.label || props.labelAlways) {
|
|
6060
|
-
|
|
6061
|
-
|
|
6062
|
-
|
|
6063
|
-
|
|
6064
|
-
|
|
6065
|
-
|
|
6066
|
-
|
|
6067
|
-
if (props.name !== void 0 && !props.disable) injectFormInput(thumbContent, "push");
|
|
6068
|
-
}
|
|
6148
|
+
if (props.label || props.labelAlways) thumbContent.push(h("div", { class: pinClass.value + " absolute fit no-pointer-events" + pinColor.value }, [h("div", {
|
|
6149
|
+
class: labelClass.value,
|
|
6150
|
+
style: { minWidth: props.thumbSize }
|
|
6151
|
+
}, [h("div", {
|
|
6152
|
+
class: textContainerClass.value,
|
|
6153
|
+
style: textContainerStyle.value
|
|
6154
|
+
}, [h("span", { class: textClass.value }, thumb.label.value)])])]));
|
|
6155
|
+
if (thumb.injectFormInput !== false && props.name !== void 0 && !props.disable) injectFormInput(thumbContent, "push");
|
|
6069
6156
|
return h("div", {
|
|
6070
6157
|
class: thumbClasses.value,
|
|
6071
6158
|
style: style.value,
|
|
@@ -6292,8 +6379,9 @@ var QResizeObserver_default = createComponent({
|
|
|
6292
6379
|
const { proxy } = getCurrentInstance();
|
|
6293
6380
|
proxy.trigger = trigger;
|
|
6294
6381
|
if (hasObserver) {
|
|
6295
|
-
let observer;
|
|
6382
|
+
let observer, isDestroyed = false;
|
|
6296
6383
|
const init = (stop) => {
|
|
6384
|
+
if (isDestroyed) return;
|
|
6297
6385
|
targetEl = proxy.$el.parentNode;
|
|
6298
6386
|
if (targetEl) {
|
|
6299
6387
|
observer = new ResizeObserver(trigger);
|
|
@@ -6307,6 +6395,7 @@ var QResizeObserver_default = createComponent({
|
|
|
6307
6395
|
init();
|
|
6308
6396
|
});
|
|
6309
6397
|
onBeforeUnmount(() => {
|
|
6398
|
+
isDestroyed = true;
|
|
6310
6399
|
if (timer !== null) clearTimeout(timer);
|
|
6311
6400
|
if (observer !== void 0) {
|
|
6312
6401
|
if (observer.disconnect !== void 0) observer.disconnect();
|
|
@@ -6316,7 +6405,7 @@ var QResizeObserver_default = createComponent({
|
|
|
6316
6405
|
return noop;
|
|
6317
6406
|
}
|
|
6318
6407
|
const { isHydrated } = useHydration();
|
|
6319
|
-
let curDocView;
|
|
6408
|
+
let curDocView, isDestroyed = false;
|
|
6320
6409
|
const cleanup = () => {
|
|
6321
6410
|
if (timer !== null) {
|
|
6322
6411
|
clearTimeout(timer);
|
|
@@ -6337,11 +6426,15 @@ var QResizeObserver_default = createComponent({
|
|
|
6337
6426
|
};
|
|
6338
6427
|
onMounted(() => {
|
|
6339
6428
|
nextTick(() => {
|
|
6429
|
+
if (isDestroyed) return;
|
|
6340
6430
|
targetEl = proxy.$el;
|
|
6341
6431
|
if (targetEl) onObjLoad();
|
|
6342
6432
|
});
|
|
6343
6433
|
});
|
|
6344
|
-
onBeforeUnmount(
|
|
6434
|
+
onBeforeUnmount(() => {
|
|
6435
|
+
isDestroyed = true;
|
|
6436
|
+
cleanup();
|
|
6437
|
+
});
|
|
6345
6438
|
return () => {
|
|
6346
6439
|
if (isHydrated.value) return h("object", {
|
|
6347
6440
|
class: "q--avoid-card-border",
|
|
@@ -6594,12 +6687,10 @@ var QTabs_default = createComponent({
|
|
|
6594
6687
|
const dirNext = keyCode === (props.vertical ? 40 : 39);
|
|
6595
6688
|
const dir = dirPrev ? -1 : dirNext ? 1 : void 0;
|
|
6596
6689
|
if (dir !== void 0) {
|
|
6597
|
-
const rtlDir = isRTL.value ? -1 : 1;
|
|
6598
|
-
const index = tabs.indexOf(fromEl) + dir * rtlDir;
|
|
6599
|
-
|
|
6600
|
-
|
|
6601
|
-
tabs[index].focus({ preventScroll: true });
|
|
6602
|
-
}
|
|
6690
|
+
const rtlDir = props.vertical !== true && isRTL.value ? -1 : 1;
|
|
6691
|
+
const index = (tabs.indexOf(fromEl) + dir * rtlDir + len) % len;
|
|
6692
|
+
scrollToTabEl(tabs[index]);
|
|
6693
|
+
tabs[index].focus({ preventScroll: true });
|
|
6603
6694
|
return true;
|
|
6604
6695
|
}
|
|
6605
6696
|
}
|
|
@@ -6774,6 +6865,7 @@ var QTabs_default = createComponent({
|
|
|
6774
6865
|
ref: rootRef,
|
|
6775
6866
|
class: classes.value,
|
|
6776
6867
|
role: "tablist",
|
|
6868
|
+
"aria-orientation": props.vertical ? "vertical" : "horizontal",
|
|
6777
6869
|
onFocusin,
|
|
6778
6870
|
onFocusout
|
|
6779
6871
|
}, [
|
|
@@ -8730,6 +8822,7 @@ var QDate_default = createComponent({
|
|
|
8730
8822
|
const { $q } = proxy;
|
|
8731
8823
|
const isDark = useDark(props, $q);
|
|
8732
8824
|
const { getCache } = useRenderCache();
|
|
8825
|
+
const { isHydrated } = useHydration();
|
|
8733
8826
|
const { tabindex, headerClass, getLocale, getCurrentDate } = useDatetime(props, $q);
|
|
8734
8827
|
let lastEmitValue;
|
|
8735
8828
|
const injectFormInput = useFormInject(useFormAttrs(props));
|
|
@@ -9043,7 +9136,7 @@ var QDate_default = createComponent({
|
|
|
9043
9136
|
if (rangeView.value.includeFrom) res[from].editRangeFrom = true;
|
|
9044
9137
|
if (rangeView.value.includeTo) res[to].editRangeTo = true;
|
|
9045
9138
|
}
|
|
9046
|
-
if (viewModel.value.year === today.value.year && viewModel.value.month === today.value.month) res[index + today.value.day - 1].today = true;
|
|
9139
|
+
if (isHydrated.value && viewModel.value.year === today.value.year && viewModel.value.month === today.value.month) res[index + today.value.day - 1].today = true;
|
|
9047
9140
|
const left = res.length % 7;
|
|
9048
9141
|
if (left > 0) {
|
|
9049
9142
|
const afterDays = 7 - left;
|
|
@@ -9434,7 +9527,7 @@ var QDate_default = createComponent({
|
|
|
9434
9527
|
}, day.event ? () => h("div", { class: "q-date__event bg-" + day.event }) : null) : h("div", String(day.i))]))))])
|
|
9435
9528
|
])],
|
|
9436
9529
|
Months() {
|
|
9437
|
-
const currentYear = viewModel.value.year === today.value.year;
|
|
9530
|
+
const currentYear = isHydrated.value && viewModel.value.year === today.value.year;
|
|
9438
9531
|
const isDisabled = (month) => minNav.value !== null && viewModel.value.year === minNav.value.year && minNav.value.month > month || maxNav.value !== null && viewModel.value.year === maxNav.value.year && maxNav.value.month < month;
|
|
9439
9532
|
const content = innerLocale.value.monthsShort.map((month, i) => {
|
|
9440
9533
|
const active = viewModel.value.month === i + 1;
|
|
@@ -9473,7 +9566,7 @@ var QDate_default = createComponent({
|
|
|
9473
9566
|
const active = viewModel.value.year === i;
|
|
9474
9567
|
years.push(h("div", { class: "q-date__years-item flex flex-center" }, [h(QBtn_default, {
|
|
9475
9568
|
key: "yr" + i,
|
|
9476
|
-
class: today.value.year === i ? "q-date__today" : null,
|
|
9569
|
+
class: isHydrated.value && today.value.year === i ? "q-date__today" : null,
|
|
9477
9570
|
flat: !active,
|
|
9478
9571
|
label: i,
|
|
9479
9572
|
dense: true,
|
|
@@ -9634,7 +9727,7 @@ let maxScrollTop;
|
|
|
9634
9727
|
let vpPendingUpdate = false;
|
|
9635
9728
|
let bodyLeft;
|
|
9636
9729
|
let bodyTop;
|
|
9637
|
-
let
|
|
9730
|
+
let routePath;
|
|
9638
9731
|
let closeTimer = null;
|
|
9639
9732
|
function onAppleScroll(e) {
|
|
9640
9733
|
if (e.target === document) document.scrollingElement.scrollTop = document.scrollingElement.scrollTop;
|
|
@@ -9660,7 +9753,7 @@ function apply$1(action) {
|
|
|
9660
9753
|
scrollPositionY = getVerticalScrollPosition(window);
|
|
9661
9754
|
bodyLeft = body.style.left;
|
|
9662
9755
|
bodyTop = body.style.top;
|
|
9663
|
-
|
|
9756
|
+
routePath = window.location.pathname;
|
|
9664
9757
|
body.style.left = `-${scrollPositionX}px`;
|
|
9665
9758
|
body.style.top = `-${scrollPositionY}px`;
|
|
9666
9759
|
if (overflowX !== "hidden" && (overflowX === "scroll" || body.scrollWidth > window.innerWidth)) body.classList.add("q-body--force-scrollbar-x");
|
|
@@ -9683,7 +9776,7 @@ function apply$1(action) {
|
|
|
9683
9776
|
document.qScrollPrevented = false;
|
|
9684
9777
|
body.style.left = bodyLeft;
|
|
9685
9778
|
body.style.top = bodyTop;
|
|
9686
|
-
if (window.location.
|
|
9779
|
+
if (window.location.pathname === routePath) window.scrollTo(scrollPositionX, scrollPositionY);
|
|
9687
9780
|
maxScrollTop = void 0;
|
|
9688
9781
|
}
|
|
9689
9782
|
}
|
|
@@ -9800,6 +9893,7 @@ var QDialog_default = createComponent({
|
|
|
9800
9893
|
hideOnRouteChange,
|
|
9801
9894
|
handleShow,
|
|
9802
9895
|
handleHide,
|
|
9896
|
+
handleRouteChange,
|
|
9803
9897
|
processOnMount: true
|
|
9804
9898
|
});
|
|
9805
9899
|
const { addToHistory, removeFromHistory } = useHistory(showing, hide, hideOnRouteChange);
|
|
@@ -9854,8 +9948,11 @@ var QDialog_default = createComponent({
|
|
|
9854
9948
|
animating.value = true;
|
|
9855
9949
|
hidePortal();
|
|
9856
9950
|
if (refocusTarget !== null) {
|
|
9857
|
-
(
|
|
9951
|
+
const target = (evt?.type.indexOf("key") === 0 ? refocusTarget.closest("[tabindex]:not([tabindex^=\"-\"])") : void 0) || refocusTarget;
|
|
9858
9952
|
refocusTarget = null;
|
|
9953
|
+
addFocusFn(() => {
|
|
9954
|
+
if (target.isConnected) target.focus();
|
|
9955
|
+
});
|
|
9859
9956
|
}
|
|
9860
9957
|
registerTimeout(() => {
|
|
9861
9958
|
hidePortal(true);
|
|
@@ -9863,6 +9960,9 @@ var QDialog_default = createComponent({
|
|
|
9863
9960
|
emit("hide", evt);
|
|
9864
9961
|
}, props.transitionDuration);
|
|
9865
9962
|
}
|
|
9963
|
+
function handleRouteChange() {
|
|
9964
|
+
refocusTarget = null;
|
|
9965
|
+
}
|
|
9866
9966
|
function focus(selector) {
|
|
9867
9967
|
addFocusFn(() => {
|
|
9868
9968
|
let node = innerRef.value;
|
|
@@ -10590,6 +10690,7 @@ var Caret = class {
|
|
|
10590
10690
|
};
|
|
10591
10691
|
//#endregion
|
|
10592
10692
|
//#region src/components/tooltip/QTooltip.js
|
|
10693
|
+
let nonSelectableCount = 0;
|
|
10593
10694
|
var QTooltip_default = createComponent({
|
|
10594
10695
|
name: "QTooltip",
|
|
10595
10696
|
inheritAttrs: false,
|
|
@@ -10641,11 +10742,13 @@ var QTooltip_default = createComponent({
|
|
|
10641
10742
|
},
|
|
10642
10743
|
emits: [...useModelToggleEmits],
|
|
10643
10744
|
setup(props, { slots, emit, attrs }) {
|
|
10644
|
-
let unwatchPosition, observer;
|
|
10745
|
+
let unwatchPosition, observer, removeNonSelectableTimer, hasNonSelectable = false, describedBy;
|
|
10645
10746
|
const vm = getCurrentInstance();
|
|
10646
10747
|
const { proxy: { $q } } = vm;
|
|
10647
10748
|
const innerRef = ref(null);
|
|
10648
10749
|
const showing = ref(false);
|
|
10750
|
+
const targetUid = useId();
|
|
10751
|
+
const tooltipId = computed(() => attrs.id || targetUid.value);
|
|
10649
10752
|
const anchorOrigin = computed(() => parsePosition(props.anchor, $q.lang.rtl));
|
|
10650
10753
|
const selfOrigin = computed(() => parsePosition(props.self, $q.lang.rtl));
|
|
10651
10754
|
const hideOnRouteChange = computed(() => !props.persistent);
|
|
@@ -10667,7 +10770,8 @@ var QTooltip_default = createComponent({
|
|
|
10667
10770
|
});
|
|
10668
10771
|
Object.assign(anchorEvents, {
|
|
10669
10772
|
delayShow,
|
|
10670
|
-
delayHide
|
|
10773
|
+
delayHide,
|
|
10774
|
+
onFocusin
|
|
10671
10775
|
});
|
|
10672
10776
|
const { showPortal, hidePortal, renderPortal } = usePortal(vm, innerRef, renderPortalContent, "tooltip");
|
|
10673
10777
|
if ($q.platform.is.mobile) {
|
|
@@ -10686,9 +10790,12 @@ var QTooltip_default = createComponent({
|
|
|
10686
10790
|
onBeforeUnmount(() => {
|
|
10687
10791
|
removeClickOutside(clickOutsideProps);
|
|
10688
10792
|
});
|
|
10689
|
-
}
|
|
10793
|
+
} else watch(() => (props.modelValue === null || props["onUpdate:modelValue"]) && showing.value === true && props.persistent !== true, (val) => {
|
|
10794
|
+
(val === true ? addEscapeKey : removeEscapeKey)(onEscapeKey);
|
|
10795
|
+
});
|
|
10690
10796
|
function handleShow(evt) {
|
|
10691
10797
|
showPortal();
|
|
10798
|
+
addAriaDescription();
|
|
10692
10799
|
registerTick(() => {
|
|
10693
10800
|
observer?.disconnect();
|
|
10694
10801
|
if (innerRef.value === null) {
|
|
@@ -10730,7 +10837,10 @@ var QTooltip_default = createComponent({
|
|
|
10730
10837
|
unwatchPosition = void 0;
|
|
10731
10838
|
}
|
|
10732
10839
|
unconfigureScrollTarget();
|
|
10840
|
+
removeEscapeKey(onEscapeKey);
|
|
10733
10841
|
cleanEvt(anchorEvents, "tooltipTemp");
|
|
10842
|
+
removeAriaDescription();
|
|
10843
|
+
setNonSelectable(false);
|
|
10734
10844
|
}
|
|
10735
10845
|
function updatePosition() {
|
|
10736
10846
|
setPosition({
|
|
@@ -10745,8 +10855,12 @@ var QTooltip_default = createComponent({
|
|
|
10745
10855
|
}
|
|
10746
10856
|
function delayShow(evt) {
|
|
10747
10857
|
if ($q.platform.is.mobile) {
|
|
10858
|
+
if (removeNonSelectableTimer !== void 0) {
|
|
10859
|
+
clearTimeout(removeNonSelectableTimer);
|
|
10860
|
+
removeNonSelectableTimer = void 0;
|
|
10861
|
+
}
|
|
10748
10862
|
clearSelection();
|
|
10749
|
-
|
|
10863
|
+
setNonSelectable(true);
|
|
10750
10864
|
const target = anchorEl.value;
|
|
10751
10865
|
const evts = [
|
|
10752
10866
|
"touchmove",
|
|
@@ -10769,14 +10883,26 @@ var QTooltip_default = createComponent({
|
|
|
10769
10883
|
if ($q.platform.is.mobile) {
|
|
10770
10884
|
cleanEvt(anchorEvents, "tooltipTemp");
|
|
10771
10885
|
clearSelection();
|
|
10772
|
-
setTimeout(() => {
|
|
10773
|
-
|
|
10886
|
+
removeNonSelectableTimer = setTimeout(() => {
|
|
10887
|
+
removeNonSelectableTimer = void 0;
|
|
10888
|
+
setNonSelectable(false);
|
|
10774
10889
|
}, 10);
|
|
10775
10890
|
}
|
|
10776
10891
|
registerTimeout(() => {
|
|
10777
10892
|
hide(evt);
|
|
10778
10893
|
}, props.hideDelay);
|
|
10779
10894
|
}
|
|
10895
|
+
function onFocusin(evt) {
|
|
10896
|
+
const el = evt.target;
|
|
10897
|
+
if (!el) return;
|
|
10898
|
+
try {
|
|
10899
|
+
if (el.matches(":focus-visible") === false) return;
|
|
10900
|
+
} catch {}
|
|
10901
|
+
delayShow(evt);
|
|
10902
|
+
}
|
|
10903
|
+
function onEscapeKey(evt) {
|
|
10904
|
+
hide(evt);
|
|
10905
|
+
}
|
|
10780
10906
|
function configureAnchorEl() {
|
|
10781
10907
|
if (props.noParentEvent || anchorEl.value === null) return;
|
|
10782
10908
|
const evts = $q.platform.is.mobile ? [[
|
|
@@ -10784,19 +10910,66 @@ var QTooltip_default = createComponent({
|
|
|
10784
10910
|
"touchstart",
|
|
10785
10911
|
"delayShow",
|
|
10786
10912
|
"passive"
|
|
10787
|
-
]] : [
|
|
10788
|
-
|
|
10789
|
-
|
|
10790
|
-
|
|
10791
|
-
|
|
10792
|
-
|
|
10793
|
-
|
|
10794
|
-
|
|
10795
|
-
|
|
10796
|
-
|
|
10797
|
-
|
|
10913
|
+
]] : [
|
|
10914
|
+
[
|
|
10915
|
+
anchorEl.value,
|
|
10916
|
+
"mouseenter",
|
|
10917
|
+
"delayShow",
|
|
10918
|
+
"passive"
|
|
10919
|
+
],
|
|
10920
|
+
[
|
|
10921
|
+
anchorEl.value,
|
|
10922
|
+
"mouseleave",
|
|
10923
|
+
"delayHide",
|
|
10924
|
+
"passive"
|
|
10925
|
+
],
|
|
10926
|
+
[
|
|
10927
|
+
anchorEl.value,
|
|
10928
|
+
"focusin",
|
|
10929
|
+
"onFocusin",
|
|
10930
|
+
"passive"
|
|
10931
|
+
],
|
|
10932
|
+
[
|
|
10933
|
+
anchorEl.value,
|
|
10934
|
+
"focusout",
|
|
10935
|
+
"delayHide",
|
|
10936
|
+
"passive"
|
|
10937
|
+
]
|
|
10938
|
+
];
|
|
10798
10939
|
addEvt(anchorEvents, "anchor", evts);
|
|
10799
10940
|
}
|
|
10941
|
+
function setNonSelectable(state) {
|
|
10942
|
+
if (hasNonSelectable === state) return;
|
|
10943
|
+
hasNonSelectable = state;
|
|
10944
|
+
nonSelectableCount += state ? 1 : -1;
|
|
10945
|
+
document.body.classList.toggle("non-selectable", nonSelectableCount > 0);
|
|
10946
|
+
if (!state && removeNonSelectableTimer !== void 0) {
|
|
10947
|
+
clearTimeout(removeNonSelectableTimer);
|
|
10948
|
+
removeNonSelectableTimer = void 0;
|
|
10949
|
+
}
|
|
10950
|
+
}
|
|
10951
|
+
function addAriaDescription() {
|
|
10952
|
+
const el = anchorEl.value, id = tooltipId.value;
|
|
10953
|
+
if (el === null || id === void 0) return;
|
|
10954
|
+
const ids = (el.getAttribute("aria-describedby") || "").split(/\s+/).filter(Boolean);
|
|
10955
|
+
describedBy = {
|
|
10956
|
+
el,
|
|
10957
|
+
id,
|
|
10958
|
+
added: !ids.includes(id)
|
|
10959
|
+
};
|
|
10960
|
+
if (describedBy.added) {
|
|
10961
|
+
ids.push(id);
|
|
10962
|
+
el.setAttribute("aria-describedby", ids.join(" "));
|
|
10963
|
+
}
|
|
10964
|
+
}
|
|
10965
|
+
function removeAriaDescription() {
|
|
10966
|
+
if (describedBy?.added === true) {
|
|
10967
|
+
const { el, id } = describedBy, value = (el.getAttribute("aria-describedby") || "").split(/\s+/).filter((entry) => entry !== "" && entry !== id);
|
|
10968
|
+
if (value.length === 0) el.removeAttribute("aria-describedby");
|
|
10969
|
+
else el.setAttribute("aria-describedby", value.join(" "));
|
|
10970
|
+
}
|
|
10971
|
+
describedBy = void 0;
|
|
10972
|
+
}
|
|
10800
10973
|
function configureScrollTarget() {
|
|
10801
10974
|
if (anchorEl.value !== null || props.scrollTarget !== void 0) {
|
|
10802
10975
|
localScrollTarget.value = getScrollTarget(anchorEl.value, props.scrollTarget);
|
|
@@ -10807,6 +10980,7 @@ var QTooltip_default = createComponent({
|
|
|
10807
10980
|
function getTooltipContent() {
|
|
10808
10981
|
return showing.value ? h("div", {
|
|
10809
10982
|
...attrs,
|
|
10983
|
+
id: tooltipId.value,
|
|
10810
10984
|
ref: innerRef,
|
|
10811
10985
|
class: ["q-tooltip q-tooltip--style q-position-engine no-pointer-events", attrs.class],
|
|
10812
10986
|
style: [attrs.style, transitionStyle.value],
|
|
@@ -10876,6 +11050,9 @@ var QItem_default = createComponent({
|
|
|
10876
11050
|
}
|
|
10877
11051
|
emit("keyup", e);
|
|
10878
11052
|
}
|
|
11053
|
+
function onKeydown(e) {
|
|
11054
|
+
if (isClickable.value && e.keyCode === 32) stopAndPrevent(e);
|
|
11055
|
+
}
|
|
10879
11056
|
function getContent() {
|
|
10880
11057
|
const child = hUniqueSlot(slots.default, []);
|
|
10881
11058
|
if (isClickable.value) child.unshift(h("div", {
|
|
@@ -10890,8 +11067,9 @@ var QItem_default = createComponent({
|
|
|
10890
11067
|
ref: rootRef,
|
|
10891
11068
|
class: classes.value,
|
|
10892
11069
|
style: style.value,
|
|
10893
|
-
role: "listitem",
|
|
11070
|
+
role: hasLink.value ? void 0 : isClickable.value ? "button" : "listitem",
|
|
10894
11071
|
onClick,
|
|
11072
|
+
onKeydown,
|
|
10895
11073
|
onKeyup
|
|
10896
11074
|
};
|
|
10897
11075
|
if (isClickable.value) {
|
|
@@ -11154,6 +11332,7 @@ function extend(...args) {
|
|
|
11154
11332
|
i--;
|
|
11155
11333
|
}
|
|
11156
11334
|
for (; i < length; i++) if ((options = args[i]) !== null) for (name in options) {
|
|
11335
|
+
if (name === "__proto__") continue;
|
|
11157
11336
|
src = target[name];
|
|
11158
11337
|
copy = options[name];
|
|
11159
11338
|
if (target === copy) continue;
|
|
@@ -11256,8 +11435,9 @@ var QEditor_default = createComponent({
|
|
|
11256
11435
|
const editLinkUrl = ref(null);
|
|
11257
11436
|
const isViewingSource = ref(false);
|
|
11258
11437
|
const editable = computed(() => !props.readonly && !props.disable);
|
|
11259
|
-
let defaultFont, offsetBottom;
|
|
11438
|
+
let defaultFont, offsetBottom, refreshToolbarTimer = null;
|
|
11260
11439
|
let lastEmit = props.modelValue;
|
|
11440
|
+
const renderInitialContent = isRuntimeSsrPreHydration.value;
|
|
11261
11441
|
document.execCommand("defaultParagraphSeparator", false, props.paragraphTag);
|
|
11262
11442
|
defaultFont = window.getComputedStyle(document.body).fontFamily;
|
|
11263
11443
|
const toolbarBackgroundClass = computed(() => props.toolbarBg ? ` bg-${props.toolbarBg}` : "");
|
|
@@ -11688,7 +11868,9 @@ var QEditor_default = createComponent({
|
|
|
11688
11868
|
});
|
|
11689
11869
|
}
|
|
11690
11870
|
function refreshToolbar() {
|
|
11691
|
-
|
|
11871
|
+
if (refreshToolbarTimer !== null) clearTimeout(refreshToolbarTimer);
|
|
11872
|
+
refreshToolbarTimer = setTimeout(() => {
|
|
11873
|
+
refreshToolbarTimer = null;
|
|
11692
11874
|
editLinkUrl.value = null;
|
|
11693
11875
|
proxy.$forceUpdate();
|
|
11694
11876
|
}, 1);
|
|
@@ -11708,6 +11890,7 @@ var QEditor_default = createComponent({
|
|
|
11708
11890
|
document.addEventListener("selectionchange", onSelectionchange);
|
|
11709
11891
|
});
|
|
11710
11892
|
onBeforeUnmount(() => {
|
|
11893
|
+
if (refreshToolbarTimer !== null) clearTimeout(refreshToolbarTimer);
|
|
11711
11894
|
document.removeEventListener("selectionchange", onSelectionchange);
|
|
11712
11895
|
});
|
|
11713
11896
|
Object.assign(proxy, {
|
|
@@ -11745,6 +11928,7 @@ var QEditor_default = createComponent({
|
|
|
11745
11928
|
class: innerClass.value,
|
|
11746
11929
|
contenteditable: editable.value,
|
|
11747
11930
|
placeholder: props.placeholder,
|
|
11931
|
+
...renderInitialContent ? { innerHTML: props.modelValue } : {},
|
|
11748
11932
|
...splitAttrs.listeners.value,
|
|
11749
11933
|
onInput,
|
|
11750
11934
|
onKeydown,
|
|
@@ -11929,6 +12113,9 @@ var QSeparator_default = createComponent({
|
|
|
11929
12113
|
//#endregion
|
|
11930
12114
|
//#region src/components/expansion-item/QExpansionItem.js
|
|
11931
12115
|
const itemGroups = shallowReactive({});
|
|
12116
|
+
function preventSpace$2(e) {
|
|
12117
|
+
if (e.keyCode === 32) stopAndPrevent(e);
|
|
12118
|
+
}
|
|
11932
12119
|
const LINK_PROPS = Object.keys(useRouterLinkProps);
|
|
11933
12120
|
var QExpansionItem_default = createComponent({
|
|
11934
12121
|
name: "QExpansionItem",
|
|
@@ -12027,7 +12214,7 @@ var QExpansionItem_default = createComponent({
|
|
|
12027
12214
|
emit("click", e);
|
|
12028
12215
|
}
|
|
12029
12216
|
function toggleIconKeyboard(e) {
|
|
12030
|
-
if (e.keyCode
|
|
12217
|
+
if ([13, 32].includes(e.keyCode)) toggleIcon(e, true);
|
|
12031
12218
|
}
|
|
12032
12219
|
function toggleIcon(e, keyboard) {
|
|
12033
12220
|
if (!keyboard && !e.qAvoidFocus) blurTargetRef.value?.focus();
|
|
@@ -12072,6 +12259,7 @@ var QExpansionItem_default = createComponent({
|
|
|
12072
12259
|
tabindex: 0,
|
|
12073
12260
|
...toggleAriaAttrs.value,
|
|
12074
12261
|
onClick: toggleIcon,
|
|
12262
|
+
onKeydown: preventSpace$2,
|
|
12075
12263
|
onKeyup: toggleIconKeyboard
|
|
12076
12264
|
});
|
|
12077
12265
|
child.unshift(h("div", {
|
|
@@ -12707,6 +12895,7 @@ function useField(state) {
|
|
|
12707
12895
|
if (!$q.platform.is.mobile) (state.targetRef?.value || state.rootRef.value).focus();
|
|
12708
12896
|
else if (state.rootRef.value.contains(document.activeElement)) document.activeElement.blur();
|
|
12709
12897
|
if (props.type === "file") state.inputRef.value.value = null;
|
|
12898
|
+
state.onClear?.();
|
|
12710
12899
|
emit("update:modelValue", null);
|
|
12711
12900
|
if (state.changeEvent) emit("change", null);
|
|
12712
12901
|
emit("clear", props.modelValue);
|
|
@@ -12917,7 +13106,7 @@ function useFile({ editable, dnd, getFileInput, addFilesToQueue }) {
|
|
|
12917
13106
|
if (rejectedFiles.length !== 0) emit("rejected", rejectedFiles);
|
|
12918
13107
|
};
|
|
12919
13108
|
if (props.accept !== void 0 && !extensions.value.includes("*/")) {
|
|
12920
|
-
files = filterFiles(files, rejectedFiles, "accept", (file) => extensions.value.some((ext) => file.type.toUpperCase().startsWith(ext) || file.name.toUpperCase().endsWith(ext)));
|
|
13109
|
+
files = filterFiles(files, rejectedFiles, "accept", (file) => extensions.value.some((ext) => (ext.endsWith("/") ? file.type.toUpperCase().startsWith(ext) : file.type.toUpperCase() === ext) || file.name.toUpperCase().endsWith(ext)));
|
|
12921
13110
|
if (files.length === 0) return done();
|
|
12922
13111
|
}
|
|
12923
13112
|
if (props.maxFileSize !== void 0) {
|
|
@@ -12927,18 +13116,29 @@ function useFile({ editable, dnd, getFileInput, addFilesToQueue }) {
|
|
|
12927
13116
|
}
|
|
12928
13117
|
if (!props.multiple && files.length !== 0) files = [files[0]];
|
|
12929
13118
|
files.forEach((file) => {
|
|
12930
|
-
file.__key =
|
|
13119
|
+
file.__key = JSON.stringify([
|
|
13120
|
+
file.webkitRelativePath,
|
|
13121
|
+
file.lastModified,
|
|
13122
|
+
file.name,
|
|
13123
|
+
file.size
|
|
13124
|
+
]);
|
|
12931
13125
|
});
|
|
12932
13126
|
if (append) {
|
|
12933
|
-
const
|
|
12934
|
-
files = filterFiles(files, rejectedFiles, "duplicate", (file) =>
|
|
13127
|
+
const filenameSet = new Set(currentFileList.map((entry) => entry.__key));
|
|
13128
|
+
files = filterFiles(files, rejectedFiles, "duplicate", (file) => {
|
|
13129
|
+
if (filenameSet.has(file.__key)) return false;
|
|
13130
|
+
filenameSet.add(file.__key);
|
|
13131
|
+
return true;
|
|
13132
|
+
});
|
|
12935
13133
|
}
|
|
12936
13134
|
if (files.length === 0) return done();
|
|
12937
13135
|
if (props.maxTotalSize !== void 0) {
|
|
12938
13136
|
let size = append ? currentFileList.reduce((total, file) => total + file.size, 0) : 0;
|
|
12939
13137
|
files = filterFiles(files, rejectedFiles, "max-total-size", (file) => {
|
|
12940
|
-
size
|
|
12941
|
-
|
|
13138
|
+
const newSize = size + file.size;
|
|
13139
|
+
if (newSize > maxTotalSizeNumber.value) return false;
|
|
13140
|
+
size = newSize;
|
|
13141
|
+
return true;
|
|
12942
13142
|
});
|
|
12943
13143
|
if (files.length === 0) return done();
|
|
12944
13144
|
}
|
|
@@ -14106,6 +14306,9 @@ function useMask(props, emit, emitValue, inputRef) {
|
|
|
14106
14306
|
watch(() => props.unmaskedValue, () => {
|
|
14107
14307
|
if (hasMask.value) updateMaskValue(innerValue.value);
|
|
14108
14308
|
});
|
|
14309
|
+
watch(() => props.maskTokens, () => {
|
|
14310
|
+
if (hasMask.value) updateMaskValue(innerValue.value, true);
|
|
14311
|
+
}, { deep: true });
|
|
14109
14312
|
function getInitialMaskedValue() {
|
|
14110
14313
|
updateMaskInternals();
|
|
14111
14314
|
if (hasMask.value) {
|
|
@@ -14179,12 +14382,12 @@ function useMask(props, emit, emitValue, inputRef) {
|
|
|
14179
14382
|
maskReplaced = maskMarked.split(MARKER).join(fillChar);
|
|
14180
14383
|
}
|
|
14181
14384
|
function updateMaskValue(rawVal, updateMaskInternalsFlag, inputType) {
|
|
14182
|
-
const inp = inputRef.value, end = inp
|
|
14385
|
+
const inp = inputRef.value, end = inp?.selectionEnd ?? 0, endReverse = inp === null ? 0 : inp.value.length - end, unmasked = unmaskValue(rawVal);
|
|
14183
14386
|
if (updateMaskInternalsFlag === true) updateMaskInternals();
|
|
14184
14387
|
const preMasked = maskValue(unmasked, updateMaskInternalsFlag), masked = props.fillMask !== false ? fillWithMask(preMasked) : preMasked, changed = innerValue.value !== masked;
|
|
14185
|
-
if (inp.value !== masked) inp.value = masked;
|
|
14388
|
+
if (inp !== null && inp.value !== masked) inp.value = masked;
|
|
14186
14389
|
if (changed) innerValue.value = masked;
|
|
14187
|
-
if (document.activeElement === inp) nextTick(() => {
|
|
14390
|
+
if (inp !== null && document.activeElement === inp) nextTick(() => {
|
|
14188
14391
|
if (masked === maskReplaced) {
|
|
14189
14392
|
const cursor = props.reverseFillMask ? maskReplaced.length : 0;
|
|
14190
14393
|
inp.setSelectionRange(cursor, cursor, "forward");
|
|
@@ -14382,6 +14585,7 @@ var QInput_default = createComponent({
|
|
|
14382
14585
|
Number,
|
|
14383
14586
|
FileList
|
|
14384
14587
|
],
|
|
14588
|
+
modelModifiers: Object,
|
|
14385
14589
|
shadowText: String,
|
|
14386
14590
|
type: {
|
|
14387
14591
|
type: String,
|
|
@@ -14466,6 +14670,12 @@ var QInput_default = createComponent({
|
|
|
14466
14670
|
if (inputRef.value) inputRef.value.value = props.modelValue;
|
|
14467
14671
|
});
|
|
14468
14672
|
watch(() => props.modelValue, (v) => {
|
|
14673
|
+
if (emitTimer !== null) {
|
|
14674
|
+
cancelPendingValueEmission();
|
|
14675
|
+
typedNumber = false;
|
|
14676
|
+
stopValueWatcher = false;
|
|
14677
|
+
delete temp.value;
|
|
14678
|
+
}
|
|
14469
14679
|
if (hasMask.value) {
|
|
14470
14680
|
if (stopValueWatcher) {
|
|
14471
14681
|
stopValueWatcher = false;
|
|
@@ -14476,6 +14686,7 @@ var QInput_default = createComponent({
|
|
|
14476
14686
|
innerValue.value = v;
|
|
14477
14687
|
if (props.type === "number" && Object.hasOwn(temp, "value")) if (typedNumber) typedNumber = false;
|
|
14478
14688
|
else delete temp.value;
|
|
14689
|
+
if (props.modelModifiers?.trim === true && Object.hasOwn(temp, "value") && (typeof temp.value !== "string" || temp.value.trim() !== v)) delete temp.value;
|
|
14479
14690
|
}
|
|
14480
14691
|
if (props.autogrow) nextTick(adjustHeight);
|
|
14481
14692
|
});
|
|
@@ -14515,6 +14726,7 @@ var QInput_default = createComponent({
|
|
|
14515
14726
|
}
|
|
14516
14727
|
if (hasMask.value) updateMaskValue(val, false, e.inputType);
|
|
14517
14728
|
else {
|
|
14729
|
+
if (props.modelModifiers?.trim === true) temp.value = val;
|
|
14518
14730
|
emitValue(val);
|
|
14519
14731
|
if (isTypeText.value && e.target === document.activeElement) {
|
|
14520
14732
|
const { selectionStart, selectionEnd } = e.target;
|
|
@@ -14532,7 +14744,7 @@ var QInput_default = createComponent({
|
|
|
14532
14744
|
function emitValue(val, stopWatcher) {
|
|
14533
14745
|
emitValueFn = () => {
|
|
14534
14746
|
emitTimer = null;
|
|
14535
|
-
if (props.type !== "number" && Object.hasOwn(temp, "value")) delete temp.value;
|
|
14747
|
+
if (props.type !== "number" && (props.modelModifiers?.trim !== true || hasMask.value) && Object.hasOwn(temp, "value")) delete temp.value;
|
|
14536
14748
|
if (props.modelValue !== val && emitCachedValue !== val) {
|
|
14537
14749
|
emitCachedValue = val;
|
|
14538
14750
|
if (stopWatcher === true) stopValueWatcher = true;
|
|
@@ -14553,6 +14765,19 @@ var QInput_default = createComponent({
|
|
|
14553
14765
|
emitTimer = setTimeout(emitValueFn, props.debounce);
|
|
14554
14766
|
} else emitValueFn();
|
|
14555
14767
|
}
|
|
14768
|
+
function cancelPendingValueEmission() {
|
|
14769
|
+
if (emitTimer !== null) {
|
|
14770
|
+
clearTimeout(emitTimer);
|
|
14771
|
+
emitTimer = null;
|
|
14772
|
+
}
|
|
14773
|
+
emitValueFn = void 0;
|
|
14774
|
+
}
|
|
14775
|
+
function onClear() {
|
|
14776
|
+
cancelPendingValueEmission();
|
|
14777
|
+
typedNumber = false;
|
|
14778
|
+
stopValueWatcher = false;
|
|
14779
|
+
delete temp.value;
|
|
14780
|
+
}
|
|
14556
14781
|
function adjustHeight() {
|
|
14557
14782
|
requestAnimationFrame(() => {
|
|
14558
14783
|
const inp = inputRef.value;
|
|
@@ -14609,6 +14834,7 @@ var QInput_default = createComponent({
|
|
|
14609
14834
|
hasShadow: computed(() => props.type !== "file" && typeof props.shadowText === "string" && props.shadowText.length !== 0),
|
|
14610
14835
|
inputRef,
|
|
14611
14836
|
emitValue,
|
|
14837
|
+
onClear,
|
|
14612
14838
|
hasValue,
|
|
14613
14839
|
floatingLabel: computed(() => hasValue.value && (props.type !== "number" || Number.isFinite(Number(innerValue.value))) || fieldValueIsFilled(props.displayValue)),
|
|
14614
14840
|
getControl: () => h(isTextarea.value ? "textarea" : "input", {
|
|
@@ -14655,7 +14881,7 @@ function update$3(el, ctx, value) {
|
|
|
14655
14881
|
if (ctx.handler !== handler) ctx.handler = handler;
|
|
14656
14882
|
if (changed) {
|
|
14657
14883
|
ctx.cfg = cfg;
|
|
14658
|
-
ctx.observer?.
|
|
14884
|
+
ctx.observer?.disconnect();
|
|
14659
14885
|
ctx.observer = new IntersectionObserver(([entry]) => {
|
|
14660
14886
|
if (typeof ctx.handler === "function") {
|
|
14661
14887
|
if (entry.rootBounds === null && document.body.contains(el)) {
|
|
@@ -14672,7 +14898,7 @@ function update$3(el, ctx, value) {
|
|
|
14672
14898
|
function destroy$1(el) {
|
|
14673
14899
|
const ctx = el.__qvisible;
|
|
14674
14900
|
if (ctx !== void 0) {
|
|
14675
|
-
ctx.observer?.
|
|
14901
|
+
ctx.observer?.disconnect();
|
|
14676
14902
|
delete el.__qvisible;
|
|
14677
14903
|
}
|
|
14678
14904
|
}
|
|
@@ -15234,8 +15460,8 @@ const defaultSizes = {
|
|
|
15234
15460
|
lg: 10,
|
|
15235
15461
|
xl: 14
|
|
15236
15462
|
};
|
|
15237
|
-
function width(val
|
|
15238
|
-
return { transform:
|
|
15463
|
+
function width(val) {
|
|
15464
|
+
return { transform: `scale3d(${val},1,1)` };
|
|
15239
15465
|
}
|
|
15240
15466
|
var QLinearProgress_default = createComponent({
|
|
15241
15467
|
name: "QLinearProgress",
|
|
@@ -15265,16 +15491,15 @@ var QLinearProgress_default = createComponent({
|
|
|
15265
15491
|
const isDark = useDark(props, proxy.$q);
|
|
15266
15492
|
const sizeStyle = useSize(props, defaultSizes);
|
|
15267
15493
|
const motion = computed(() => props.indeterminate || props.query);
|
|
15268
|
-
const widthReverse = computed(() => props.reverse !== props.query);
|
|
15269
15494
|
const style = computed(() => ({
|
|
15270
15495
|
...sizeStyle.value !== null ? sizeStyle.value : {},
|
|
15271
15496
|
"--q-linear-progress-speed": `${props.animationSpeed}ms`
|
|
15272
15497
|
}));
|
|
15273
15498
|
const classes = computed(() => "q-linear-progress" + (props.color !== void 0 ? ` text-${props.color}` : "") + (props.reverse || props.query ? " q-linear-progress--reverse" : "") + (props.rounded ? " rounded-borders" : ""));
|
|
15274
|
-
const trackStyle = computed(() => width(props.buffer !== void 0 ? props.buffer : 1
|
|
15499
|
+
const trackStyle = computed(() => width(props.buffer !== void 0 ? props.buffer : 1));
|
|
15275
15500
|
const transitionSuffix = computed(() => `with${props.instantFeedback ? "out" : ""}-transition`);
|
|
15276
15501
|
const trackClass = computed(() => `q-linear-progress__track absolute-full q-linear-progress__track--${transitionSuffix.value} q-linear-progress__track--${isDark.value ? "dark" : "light"}` + (props.trackColor !== void 0 ? ` bg-${props.trackColor}` : ""));
|
|
15277
|
-
const modelStyle = computed(() => width(motion.value ? 1 : props.value
|
|
15502
|
+
const modelStyle = computed(() => width(motion.value ? 1 : props.value));
|
|
15278
15503
|
const modelClass = computed(() => `q-linear-progress__model absolute-full q-linear-progress__model--${transitionSuffix.value} q-linear-progress__model--${motion.value ? "in" : ""}determinate`);
|
|
15279
15504
|
const stripeStyle = computed(() => ({ width: `${props.value * 100}%` }));
|
|
15280
15505
|
const stripeClass = computed(() => `q-linear-progress__stripe absolute-${props.reverse ? "right" : "left"} q-linear-progress__stripe--${transitionSuffix.value}`);
|
|
@@ -16734,6 +16959,7 @@ var QRange_default = createComponent({
|
|
|
16734
16959
|
});
|
|
16735
16960
|
const maxEvents = computed(() => getEvents("max"));
|
|
16736
16961
|
const getMaxThumb = methods.getThumbRenderFn({
|
|
16962
|
+
injectFormInput: false,
|
|
16737
16963
|
focusValue: "max",
|
|
16738
16964
|
getNodeData: () => ({
|
|
16739
16965
|
...maxEvents.value,
|
|
@@ -16832,8 +17058,8 @@ var QRange_default = createComponent({
|
|
|
16832
17058
|
}
|
|
16833
17059
|
}
|
|
16834
17060
|
model.value = model.value.min === null || model.value.max === null ? {
|
|
16835
|
-
min: pos.min
|
|
16836
|
-
max: pos.max
|
|
17061
|
+
min: pos.min ?? props.min,
|
|
17062
|
+
max: pos.max ?? props.max
|
|
16837
17063
|
} : {
|
|
16838
17064
|
min: pos.min,
|
|
16839
17065
|
max: pos.max
|
|
@@ -16928,7 +17154,7 @@ var QRating_default = createComponent({
|
|
|
16928
17154
|
selIconLen,
|
|
16929
17155
|
selIcon: selIconLen > 0 ? props.iconSelected[selIconLen - 1] : props.iconSelected,
|
|
16930
17156
|
halfIconLen,
|
|
16931
|
-
halfIcon: halfIconLen > 0 ? props.iconHalf[
|
|
17157
|
+
halfIcon: halfIconLen > 0 ? props.iconHalf[halfIconLen - 1] : props.iconHalf,
|
|
16932
17158
|
colorLen,
|
|
16933
17159
|
color: colorLen > 0 ? props.color[colorLen - 1] : props.color,
|
|
16934
17160
|
selColorLen,
|
|
@@ -16949,14 +17175,14 @@ var QRating_default = createComponent({
|
|
|
16949
17175
|
return (i, label) => `${label} ${i}`;
|
|
16950
17176
|
});
|
|
16951
17177
|
const stars = computed(() => {
|
|
16952
|
-
const acc = [], icons = iconData.value, ceil = Math.ceil(props.modelValue),
|
|
17178
|
+
const acc = [], icons = iconData.value, ceil = Math.ceil(props.modelValue), tabIndex = Number.isInteger(props.modelValue) && props.modelValue >= 1 && props.modelValue <= props.max ? props.modelValue : 1;
|
|
16953
17179
|
const halfIndex = props.iconHalf === void 0 || ceil === props.modelValue ? -1 : ceil;
|
|
16954
17180
|
for (let i = 1; i <= props.max; i++) {
|
|
16955
17181
|
const active = mouseModel.value === 0 && props.modelValue >= i || mouseModel.value > 0 && mouseModel.value >= i, half = halfIndex === i && mouseModel.value < i, exSelected = mouseModel.value > 0 && (half ? ceil : props.modelValue) >= i && mouseModel.value < i, color = half ? i <= icons.halfColorLen ? props.colorHalf[i - 1] : icons.halfColor : icons.selColor !== void 0 && active ? i <= icons.selColorLen ? props.colorSelected[i - 1] : icons.selColor : i <= icons.colorLen ? props.color[i - 1] : icons.color, name = (half ? i <= icons.halfIconLen ? props.iconHalf[i - 1] : icons.halfIcon : icons.selIcon !== void 0 && (active || exSelected) ? i <= icons.selIconLen ? props.iconSelected[i - 1] : icons.selIcon : i <= icons.iconLen ? props.icon[i - 1] : icons.icon) || $q.iconSet.rating.icon;
|
|
16956
17182
|
acc.push({
|
|
16957
17183
|
name: (half ? i <= icons.halfIconLen ? props.iconHalf[i - 1] : icons.halfIcon : icons.selIcon !== void 0 && (active || exSelected) ? i <= icons.selIconLen ? props.iconSelected[i - 1] : icons.selIcon : i <= icons.iconLen ? props.icon[i - 1] : icons.icon) || $q.iconSet.rating.icon,
|
|
16958
17184
|
attrs: {
|
|
16959
|
-
tabindex,
|
|
17185
|
+
tabindex: editable.value ? i === tabIndex ? 0 : -1 : null,
|
|
16960
17186
|
role: "radio",
|
|
16961
17187
|
"aria-checked": props.modelValue === i ? "true" : "false",
|
|
16962
17188
|
"aria-label": iconLabel.value(i, name)
|
|
@@ -16982,17 +17208,25 @@ var QRating_default = createComponent({
|
|
|
16982
17208
|
function setHoverValue(value) {
|
|
16983
17209
|
if (editable.value) mouseModel.value = value;
|
|
16984
17210
|
}
|
|
16985
|
-
function
|
|
17211
|
+
function onKeydown(e, i) {
|
|
16986
17212
|
switch (e.keyCode) {
|
|
16987
17213
|
case 13:
|
|
16988
17214
|
case 32:
|
|
16989
17215
|
set(i);
|
|
16990
17216
|
return stopAndPrevent(e);
|
|
16991
|
-
case 37:
|
|
17217
|
+
case 37: {
|
|
17218
|
+
const index = i + ($q.lang.rtl ? 1 : -1);
|
|
17219
|
+
if (iconRefs[`rt${index}`]) iconRefs[`rt${index}`].focus();
|
|
17220
|
+
return stopAndPrevent(e);
|
|
17221
|
+
}
|
|
17222
|
+
case 39: {
|
|
17223
|
+
const index = i + ($q.lang.rtl ? -1 : 1);
|
|
17224
|
+
if (iconRefs[`rt${index}`]) iconRefs[`rt${index}`].focus();
|
|
17225
|
+
return stopAndPrevent(e);
|
|
17226
|
+
}
|
|
16992
17227
|
case 40:
|
|
16993
17228
|
if (iconRefs[`rt${i - 1}`]) iconRefs[`rt${i - 1}`].focus();
|
|
16994
17229
|
return stopAndPrevent(e);
|
|
16995
|
-
case 39:
|
|
16996
17230
|
case 38:
|
|
16997
17231
|
if (iconRefs[`rt${i + 1}`]) iconRefs[`rt${i + 1}`].focus();
|
|
16998
17232
|
return stopAndPrevent(e);
|
|
@@ -17026,8 +17260,8 @@ var QRating_default = createComponent({
|
|
|
17026
17260
|
setHoverValue(i);
|
|
17027
17261
|
},
|
|
17028
17262
|
onBlur: resetMouseModel,
|
|
17029
|
-
|
|
17030
|
-
|
|
17263
|
+
onKeydown(e) {
|
|
17264
|
+
onKeydown(e, i);
|
|
17031
17265
|
}
|
|
17032
17266
|
}, hMergeSlot(slots[`tip-${i}`], [h(QIcon_default, {
|
|
17033
17267
|
class: iconClass,
|
|
@@ -17142,11 +17376,11 @@ var QScrollArea_default = createComponent({
|
|
|
17142
17376
|
],
|
|
17143
17377
|
verticalOffset: {
|
|
17144
17378
|
type: Array,
|
|
17145
|
-
default: [0, 0]
|
|
17379
|
+
default: () => [0, 0]
|
|
17146
17380
|
},
|
|
17147
17381
|
horizontalOffset: {
|
|
17148
17382
|
type: Array,
|
|
17149
|
-
default: [0, 0]
|
|
17383
|
+
default: () => [0, 0]
|
|
17150
17384
|
},
|
|
17151
17385
|
contentStyle: [
|
|
17152
17386
|
Array,
|
|
@@ -17219,11 +17453,11 @@ var QScrollArea_default = createComponent({
|
|
|
17219
17453
|
scroll.horizontal.percentage = computed(() => {
|
|
17220
17454
|
const diff = scroll.horizontal.size.value - container.horizontal.value;
|
|
17221
17455
|
if (diff <= 0) return 0;
|
|
17222
|
-
const p = between(
|
|
17456
|
+
const p = between(getHorizontalLogicalPosition(scroll.horizontal.position.value) / diff, 0, 1);
|
|
17223
17457
|
return Math.round(p * 1e4) / 1e4;
|
|
17224
17458
|
});
|
|
17225
17459
|
scroll.horizontal.thumbHidden = computed(() => !(props.visible === null ? hover.value : props.visible) && !tempShowing.value && !panning.value || scroll.horizontal.size.value <= container.horizontal.value + 1);
|
|
17226
|
-
scroll.horizontal.thumbStart = computed(() => props.horizontalOffset[0] + scroll.horizontal.percentage.value * (container.horizontalInner.value - scroll.horizontal.thumbSize.value));
|
|
17460
|
+
scroll.horizontal.thumbStart = computed(() => props.horizontalOffset[proxy.$q.lang.rtl ? 1 : 0] + scroll.horizontal.percentage.value * (container.horizontalInner.value - scroll.horizontal.thumbSize.value));
|
|
17227
17461
|
scroll.horizontal.thumbSize = computed(() => Math.round(between(container.horizontalInner.value * container.horizontalInner.value / scroll.horizontal.size.value, getMinThumbSize(container.horizontalInner.value), container.horizontalInner.value)));
|
|
17228
17462
|
scroll.horizontal.style = computed(() => ({
|
|
17229
17463
|
...props.thumbStyle,
|
|
@@ -17299,22 +17533,28 @@ var QScrollArea_default = createComponent({
|
|
|
17299
17533
|
const data = scroll[axis];
|
|
17300
17534
|
if (e.isFirst) {
|
|
17301
17535
|
if (data.thumbHidden.value) return;
|
|
17302
|
-
panRefPos = data.position.value;
|
|
17536
|
+
panRefPos = axis === "horizontal" ? getHorizontalLogicalPosition(data.position.value) : data.position.value;
|
|
17303
17537
|
panning.value = true;
|
|
17304
17538
|
} else if (!panning.value) return;
|
|
17305
17539
|
if (e.isFinal) panning.value = false;
|
|
17306
17540
|
const dProp = dirProps[axis];
|
|
17307
17541
|
const multiplier = (data.size.value - container[axis].value) / (container[axis + "Inner"].value - data.thumbSize.value);
|
|
17308
17542
|
const distance = e.distance[dProp.dist];
|
|
17309
|
-
|
|
17543
|
+
const direction = (e.direction === dProp.dir ? 1 : -1) * (axis === "horizontal" && proxy.$q.lang.rtl ? -1 : 1);
|
|
17544
|
+
const pos = panRefPos + direction * distance * multiplier;
|
|
17545
|
+
setScroll(axis === "horizontal" ? getHorizontalNativePosition(pos) : pos, axis);
|
|
17310
17546
|
}
|
|
17311
17547
|
function onMousedown(evt, axis) {
|
|
17312
17548
|
const data = scroll[axis];
|
|
17313
17549
|
if (!data.thumbHidden.value) {
|
|
17314
|
-
const
|
|
17315
|
-
const
|
|
17550
|
+
const isHorizontalRtl = axis === "horizontal" && proxy.$q.lang.rtl;
|
|
17551
|
+
const startOffset = axis === "vertical" ? props.verticalOffset[0] : props.horizontalOffset[isHorizontalRtl ? 1 : 0];
|
|
17552
|
+
const offset = (isHorizontalRtl ? container.horizontal.value - evt.offsetX : evt[dirProps[axis].offset]) - startOffset;
|
|
17316
17553
|
const thumbStart = data.thumbStart.value - startOffset;
|
|
17317
|
-
if (offset < thumbStart || offset > thumbStart + data.thumbSize.value)
|
|
17554
|
+
if (offset < thumbStart || offset > thumbStart + data.thumbSize.value) {
|
|
17555
|
+
const percentage = between((offset - data.thumbSize.value / 2) / (container[axis + "Inner"].value - data.thumbSize.value), 0, 1);
|
|
17556
|
+
setScroll(isHorizontalRtl ? getHorizontalNativePosition(percentage * Math.max(0, data.size.value - container[axis].value)) : percentage * Math.max(0, data.size.value - container[axis].value), axis);
|
|
17557
|
+
}
|
|
17318
17558
|
if (data.ref.value !== null) data.ref.value.dispatchEvent(new MouseEvent(evt.type, evt));
|
|
17319
17559
|
}
|
|
17320
17560
|
}
|
|
@@ -17330,6 +17570,14 @@ var QScrollArea_default = createComponent({
|
|
|
17330
17570
|
function setScroll(offset, axis) {
|
|
17331
17571
|
targetRef.value[dirProps[axis].scroll] = offset;
|
|
17332
17572
|
}
|
|
17573
|
+
function getHorizontalLogicalPosition(position, rtl = proxy.$q.lang.rtl) {
|
|
17574
|
+
if (!rtl) return position;
|
|
17575
|
+
return rtlHasScrollBug ? Math.max(0, scroll.horizontal.size.value - container.horizontal.value) - position : -position;
|
|
17576
|
+
}
|
|
17577
|
+
function getHorizontalNativePosition(position, rtl = proxy.$q.lang.rtl) {
|
|
17578
|
+
if (!rtl) return position;
|
|
17579
|
+
return rtlHasScrollBug ? Math.max(0, scroll.horizontal.size.value - container.horizontal.value) - position : -position;
|
|
17580
|
+
}
|
|
17333
17581
|
let mouseEventTimer = null;
|
|
17334
17582
|
function onMouseenter() {
|
|
17335
17583
|
if (mouseEventTimer !== null) clearTimeout(mouseEventTimer);
|
|
@@ -17346,8 +17594,8 @@ var QScrollArea_default = createComponent({
|
|
|
17346
17594
|
hover.value = false;
|
|
17347
17595
|
}
|
|
17348
17596
|
let scrollPosition = null;
|
|
17349
|
-
watch(() => proxy.$q.lang.rtl, (rtl) => {
|
|
17350
|
-
if (targetRef.value !== null) setHorizontalScrollPosition(targetRef.value,
|
|
17597
|
+
watch(() => proxy.$q.lang.rtl, (rtl, oldRtl) => {
|
|
17598
|
+
if (targetRef.value !== null) setHorizontalScrollPosition(targetRef.value, getHorizontalNativePosition(getHorizontalLogicalPosition(scroll.horizontal.position.value, oldRtl), rtl));
|
|
17351
17599
|
});
|
|
17352
17600
|
onDeactivated(() => {
|
|
17353
17601
|
scrollPosition = {
|
|
@@ -17377,7 +17625,8 @@ var QScrollArea_default = createComponent({
|
|
|
17377
17625
|
}),
|
|
17378
17626
|
setScrollPosition: localSetScrollPosition,
|
|
17379
17627
|
setScrollPercentage(axis, percentage, duration) {
|
|
17380
|
-
|
|
17628
|
+
const offset = percentage * (scroll[axis].size.value - container[axis].value);
|
|
17629
|
+
localSetScrollPosition(axis, axis === "horizontal" ? getHorizontalNativePosition(offset) : offset, duration);
|
|
17381
17630
|
}
|
|
17382
17631
|
});
|
|
17383
17632
|
const store = {
|
|
@@ -18968,11 +19217,12 @@ var QSlideItem_default = createComponent({
|
|
|
18968
19217
|
if (pan.scale === 1) {
|
|
18969
19218
|
node.style.transform = `translate${pan.axis}(${pan.dir * 100}%)`;
|
|
18970
19219
|
if (timer !== null) clearTimeout(timer);
|
|
19220
|
+
const showing = pan.showing;
|
|
18971
19221
|
timer = setTimeout(() => {
|
|
18972
19222
|
timer = null;
|
|
18973
|
-
emit(
|
|
19223
|
+
emit(showing, { reset });
|
|
18974
19224
|
emit("action", {
|
|
18975
|
-
side:
|
|
19225
|
+
side: showing,
|
|
18976
19226
|
reset
|
|
18977
19227
|
});
|
|
18978
19228
|
}, 230);
|
|
@@ -19629,6 +19879,9 @@ var QSplitter_default = createComponent({
|
|
|
19629
19879
|
});
|
|
19630
19880
|
//#endregion
|
|
19631
19881
|
//#region src/components/stepper/StepHeader.js
|
|
19882
|
+
function preventSpace$1(e) {
|
|
19883
|
+
if (e.keyCode === 32) stopAndPrevent(e);
|
|
19884
|
+
}
|
|
19632
19885
|
var StepHeader_default = createComponent({
|
|
19633
19886
|
name: "StepHeader",
|
|
19634
19887
|
props: {
|
|
@@ -19690,13 +19943,19 @@ var StepHeader_default = createComponent({
|
|
|
19690
19943
|
if (!isActive.value) props.goToPanel(props.step.name);
|
|
19691
19944
|
}
|
|
19692
19945
|
function onKeyup(e) {
|
|
19693
|
-
if (
|
|
19946
|
+
if ([13, 32].includes(e.keyCode)) {
|
|
19947
|
+
if (!isActive.value) props.goToPanel(props.step.name);
|
|
19948
|
+
stopAndPrevent(e);
|
|
19949
|
+
}
|
|
19694
19950
|
}
|
|
19695
19951
|
return () => {
|
|
19696
19952
|
const data = { class: classes.value };
|
|
19697
19953
|
if (headerNav.value) {
|
|
19698
19954
|
data.onClick = onActivate;
|
|
19955
|
+
data.onKeydown = preventSpace$1;
|
|
19699
19956
|
data.onKeyup = onKeyup;
|
|
19957
|
+
data.role = "button";
|
|
19958
|
+
data["aria-current"] = isActive.value ? "step" : void 0;
|
|
19700
19959
|
Object.assign(data, isDisable.value ? {
|
|
19701
19960
|
tabindex: -1,
|
|
19702
19961
|
"aria-disabled": "true"
|
|
@@ -19879,6 +20138,13 @@ var QTh_default = createComponent({
|
|
|
19879
20138
|
const onClick = (evt) => {
|
|
19880
20139
|
emit("click", evt);
|
|
19881
20140
|
};
|
|
20141
|
+
const onKeyup = (evt, col) => {
|
|
20142
|
+
if (evt.key === "Enter" || evt.key === " ") {
|
|
20143
|
+
props.props.sort(col);
|
|
20144
|
+
onClick(evt);
|
|
20145
|
+
evt.preventDefault();
|
|
20146
|
+
}
|
|
20147
|
+
};
|
|
19882
20148
|
return () => {
|
|
19883
20149
|
if (props.props === void 0) return h("th", {
|
|
19884
20150
|
class: props.autoWidth ? "q-table--col-auto-width" : "",
|
|
@@ -19886,7 +20152,7 @@ var QTh_default = createComponent({
|
|
|
19886
20152
|
}, hSlot(slots.default));
|
|
19887
20153
|
let col, child;
|
|
19888
20154
|
const name = vm.vnode.key;
|
|
19889
|
-
if (name) {
|
|
20155
|
+
if (name !== null) {
|
|
19890
20156
|
col = props.props.colsMap[name];
|
|
19891
20157
|
if (col === void 0) return;
|
|
19892
20158
|
} else col = props.props.col;
|
|
@@ -19898,14 +20164,25 @@ var QTh_default = createComponent({
|
|
|
19898
20164
|
name: $q.iconSet.table.arrowUp
|
|
19899
20165
|
}));
|
|
19900
20166
|
} else child = hSlot(slots.default);
|
|
19901
|
-
|
|
20167
|
+
const data = {
|
|
19902
20168
|
class: col.__thClass + (props.autoWidth ? " q-table--col-auto-width" : ""),
|
|
19903
20169
|
style: col.headerStyle,
|
|
19904
20170
|
onClick: (evt) => {
|
|
19905
20171
|
if (col.sortable) props.props.sort(col);
|
|
19906
20172
|
onClick(evt);
|
|
19907
20173
|
}
|
|
19908
|
-
}
|
|
20174
|
+
};
|
|
20175
|
+
if (col.sortable) {
|
|
20176
|
+
data.tabindex = 0;
|
|
20177
|
+
data["aria-sort"] = col.__ariaSort;
|
|
20178
|
+
data.onKeydown = (evt) => {
|
|
20179
|
+
if (evt.key === " ") evt.preventDefault();
|
|
20180
|
+
};
|
|
20181
|
+
data.onKeyup = (evt) => {
|
|
20182
|
+
onKeyup(evt, col);
|
|
20183
|
+
};
|
|
20184
|
+
}
|
|
20185
|
+
return h("th", data, child);
|
|
19909
20186
|
};
|
|
19910
20187
|
}
|
|
19911
20188
|
});
|
|
@@ -20163,8 +20440,8 @@ function useTablePaginationState(vm, getCellValue) {
|
|
|
20163
20440
|
function requestServerInteraction(prop = {}) {
|
|
20164
20441
|
nextTick(() => {
|
|
20165
20442
|
emit("request", {
|
|
20166
|
-
pagination: prop.pagination
|
|
20167
|
-
filter: prop.filter
|
|
20443
|
+
pagination: prop.pagination === void 0 ? computedPagination.value : prop.pagination,
|
|
20444
|
+
filter: prop.filter === void 0 ? props.filter : prop.filter,
|
|
20168
20445
|
getCellValue
|
|
20169
20446
|
});
|
|
20170
20447
|
});
|
|
@@ -20267,21 +20544,15 @@ const useTableRowSelectionProps = {
|
|
|
20267
20544
|
};
|
|
20268
20545
|
const useTableRowSelectionEmits = ["update:selected", "selection"];
|
|
20269
20546
|
function useTableRowSelection(props, emit, computedRows, getRowKey) {
|
|
20270
|
-
const selectedKeys = computed(() =>
|
|
20271
|
-
const keys = {};
|
|
20272
|
-
props.selected.map(getRowKey.value).forEach((key) => {
|
|
20273
|
-
keys[key] = true;
|
|
20274
|
-
});
|
|
20275
|
-
return keys;
|
|
20276
|
-
});
|
|
20547
|
+
const selectedKeys = computed(() => new Set(props.selected.map(getRowKey.value)));
|
|
20277
20548
|
const hasSelectionMode = computed(() => props.selection !== "none");
|
|
20278
20549
|
const singleSelection = computed(() => props.selection === "single");
|
|
20279
20550
|
const multipleSelection = computed(() => props.selection === "multiple");
|
|
20280
|
-
const allRowsSelected = computed(() => computedRows.value.length !== 0 && computedRows.value.every((row) => selectedKeys.value
|
|
20281
|
-
const someRowsSelected = computed(() => !allRowsSelected.value && computedRows.value.some((row) => selectedKeys.value
|
|
20551
|
+
const allRowsSelected = computed(() => computedRows.value.length !== 0 && computedRows.value.every((row) => selectedKeys.value.has(getRowKey.value(row))));
|
|
20552
|
+
const someRowsSelected = computed(() => !allRowsSelected.value && computedRows.value.some((row) => selectedKeys.value.has(getRowKey.value(row))));
|
|
20282
20553
|
const rowsSelectedNumber = computed(() => props.selected.length);
|
|
20283
20554
|
function isRowSelected(key) {
|
|
20284
|
-
return selectedKeys.value
|
|
20555
|
+
return selectedKeys.value.has(key);
|
|
20285
20556
|
}
|
|
20286
20557
|
function clearSelection() {
|
|
20287
20558
|
emit("update:selected", []);
|
|
@@ -20369,6 +20640,7 @@ function useTableColumnSelection(props, computedPagination, hasSelectionMode) {
|
|
|
20369
20640
|
...col,
|
|
20370
20641
|
align,
|
|
20371
20642
|
__iconClass: `q-table__sort-icon q-table__sort-icon--${align}`,
|
|
20643
|
+
__ariaSort: col.sortable === true ? col.name === sortBy ? descending ? "descending" : "ascending" : "none" : void 0,
|
|
20372
20644
|
__thClass: alignClass + (col.headerClasses !== void 0 ? " " + col.headerClasses : "") + (col.sortable ? " sortable" : "") + (col.name === sortBy ? ` sorted ${descending ? "sort-desc" : ""}` : ""),
|
|
20373
20645
|
__tdStyle: col.style !== void 0 ? typeof col.style !== "function" ? () => col.style : col.style : () => null,
|
|
20374
20646
|
__tdClass: col.classes !== void 0 ? typeof col.classes !== "function" ? () => alignClass + " " + col.classes : (row) => alignClass + " " + col.classes(row) : () => alignClass
|
|
@@ -20379,7 +20651,7 @@ function useTableColumnSelection(props, computedPagination, hasSelectionMode) {
|
|
|
20379
20651
|
colList,
|
|
20380
20652
|
computedCols,
|
|
20381
20653
|
computedColsMap: computed(() => {
|
|
20382
|
-
const names =
|
|
20654
|
+
const names = Object.create(null);
|
|
20383
20655
|
computedCols.value.forEach((col) => {
|
|
20384
20656
|
names[col.name] = col;
|
|
20385
20657
|
});
|
|
@@ -20532,9 +20804,15 @@ var QTable_default = createComponent({
|
|
|
20532
20804
|
const cardDefaultClass = computed(() => " q-table__card" + (isDark.value ? " q-table__card--dark q-dark" : "") + (props.square ? " q-table--square" : "") + (props.flat ? " q-table--flat" : "") + (props.bordered ? " q-table--bordered" : ""));
|
|
20533
20805
|
const containerClass = computed(() => `q-table__container q-table--${props.separator}-separator column no-wrap` + (props.grid ? " q-table--grid" : cardDefaultClass.value) + (isDark.value ? " q-table--dark" : "") + (props.dense ? " q-table--dense" : "") + (props.wrapCells ? "" : " q-table--no-wrap") + (inFullscreen.value ? " fullscreen scroll" : ""));
|
|
20534
20806
|
const rootContainerClass = computed(() => containerClass.value + (props.loading ? " q-table--loading" : ""));
|
|
20535
|
-
watch(
|
|
20807
|
+
watch([
|
|
20808
|
+
() => props.tableStyle,
|
|
20809
|
+
() => props.tableClass,
|
|
20810
|
+
() => props.tableHeaderStyle,
|
|
20811
|
+
() => props.tableHeaderClass,
|
|
20812
|
+
containerClass
|
|
20813
|
+
], () => {
|
|
20536
20814
|
if (hasVirtScroll.value) virtScrollRef.value?.reset();
|
|
20537
|
-
});
|
|
20815
|
+
}, { deep: true });
|
|
20538
20816
|
const { innerPagination, computedPagination, isServerSide, requestServerInteraction, setPagination } = useTablePaginationState(vm, getCellValue);
|
|
20539
20817
|
const { computedFilterMethod } = useTableFilter(props, setPagination);
|
|
20540
20818
|
const { isRowExpanded, setExpanded, updateExpanded } = useTableRowExpand(props, emit);
|
|
@@ -20958,10 +21236,10 @@ var QTable_default = createComponent({
|
|
|
20958
21236
|
if (props.onRowClick !== void 0 || props.onRowDblclick !== void 0 || props.onRowContextmenu !== void 0) {
|
|
20959
21237
|
data.class[0] += " cursor-pointer";
|
|
20960
21238
|
if (props.onRowClick !== void 0) data.onClick = (evt) => {
|
|
20961
|
-
emit("
|
|
21239
|
+
emit("rowClick", evt, scope.row, scope.pageIndex);
|
|
20962
21240
|
};
|
|
20963
21241
|
if (props.onRowDblclick !== void 0) data.onDblclick = (evt) => {
|
|
20964
|
-
emit("
|
|
21242
|
+
emit("rowDblclick", evt, scope.row, scope.pageIndex);
|
|
20965
21243
|
};
|
|
20966
21244
|
if (props.onRowContextmenu !== void 0) data.onContextmenu = (evt) => {
|
|
20967
21245
|
emit("rowContextmenu", evt, scope.row, scope.pageIndex);
|
|
@@ -21098,6 +21376,9 @@ function getCurrentTime() {
|
|
|
21098
21376
|
millisecond: d.getMilliseconds()
|
|
21099
21377
|
};
|
|
21100
21378
|
}
|
|
21379
|
+
function preventSpace(e) {
|
|
21380
|
+
if (e.keyCode === 32) stopAndPrevent(e);
|
|
21381
|
+
}
|
|
21101
21382
|
function getWheelDist(a, b, threshold) {
|
|
21102
21383
|
const diff = Math.abs(a - b);
|
|
21103
21384
|
return Math.min(diff, threshold - diff);
|
|
@@ -21338,10 +21619,16 @@ var QTime_default = createComponent({
|
|
|
21338
21619
|
}
|
|
21339
21620
|
};
|
|
21340
21621
|
function setAmOnKey(e) {
|
|
21341
|
-
if (e.keyCode
|
|
21622
|
+
if ([13, 32].includes(e.keyCode)) {
|
|
21623
|
+
setAm();
|
|
21624
|
+
stopAndPrevent(e);
|
|
21625
|
+
}
|
|
21342
21626
|
}
|
|
21343
21627
|
function setPmOnKey(e) {
|
|
21344
|
-
if (e.keyCode
|
|
21628
|
+
if ([13, 32].includes(e.keyCode)) {
|
|
21629
|
+
setPm();
|
|
21630
|
+
stopAndPrevent(e);
|
|
21631
|
+
}
|
|
21345
21632
|
}
|
|
21346
21633
|
function onClick(evt) {
|
|
21347
21634
|
if (!shouldAbortInteraction()) {
|
|
@@ -21353,8 +21640,10 @@ var QTime_default = createComponent({
|
|
|
21353
21640
|
if (!shouldAbortInteraction()) updateClock(evt, getClockRect());
|
|
21354
21641
|
}
|
|
21355
21642
|
function onKeyupHour(e) {
|
|
21356
|
-
if (e.keyCode
|
|
21357
|
-
|
|
21643
|
+
if ([13, 32].includes(e.keyCode)) {
|
|
21644
|
+
view.value = "hour";
|
|
21645
|
+
stopAndPrevent(e);
|
|
21646
|
+
} else if ([37, 39].includes(e.keyCode)) {
|
|
21358
21647
|
const payload = e.keyCode === 37 ? -1 : 1;
|
|
21359
21648
|
if (validHours.value !== null) {
|
|
21360
21649
|
const values = computedFormat24h.value ? validHours.value.values : validHours.value[isAM.value ? "am" : "pm"].values;
|
|
@@ -21368,8 +21657,10 @@ var QTime_default = createComponent({
|
|
|
21368
21657
|
}
|
|
21369
21658
|
}
|
|
21370
21659
|
function onKeyupMinute(e) {
|
|
21371
|
-
if (e.keyCode
|
|
21372
|
-
|
|
21660
|
+
if ([13, 32].includes(e.keyCode)) {
|
|
21661
|
+
view.value = "minute";
|
|
21662
|
+
stopAndPrevent(e);
|
|
21663
|
+
} else if ([37, 39].includes(e.keyCode)) {
|
|
21373
21664
|
const payload = e.keyCode === 37 ? -1 : 1;
|
|
21374
21665
|
if (validMinutes.value !== null) {
|
|
21375
21666
|
const values = validMinutes.value.values;
|
|
@@ -21380,13 +21671,15 @@ var QTime_default = createComponent({
|
|
|
21380
21671
|
}
|
|
21381
21672
|
}
|
|
21382
21673
|
function onKeyupSecond(e) {
|
|
21383
|
-
if (e.keyCode
|
|
21384
|
-
|
|
21674
|
+
if ([13, 32].includes(e.keyCode)) {
|
|
21675
|
+
view.value = "second";
|
|
21676
|
+
stopAndPrevent(e);
|
|
21677
|
+
} else if ([37, 39].includes(e.keyCode)) {
|
|
21385
21678
|
const payload = e.keyCode === 37 ? -1 : 1;
|
|
21386
21679
|
if (validSeconds.value !== null) {
|
|
21387
21680
|
const values = validSeconds.value.values;
|
|
21388
21681
|
if (values.length === 0) return;
|
|
21389
|
-
if (innerModel.value.
|
|
21682
|
+
if (innerModel.value.second === null) setSecond(values[0]);
|
|
21390
21683
|
else setSecond(values[(values.length + values.indexOf(innerModel.value.second) + payload) % values.length]);
|
|
21391
21684
|
} else setSecond((60 + (innerModel.value.second === null ? -payload : innerModel.value.second) + payload) % 60);
|
|
21392
21685
|
}
|
|
@@ -21470,13 +21763,19 @@ var QTime_default = createComponent({
|
|
|
21470
21763
|
h("div", {
|
|
21471
21764
|
class: "q-time__link " + (view.value === "hour" ? "q-time__link--active" : "cursor-pointer"),
|
|
21472
21765
|
tabindex: tabindex.value,
|
|
21766
|
+
role: "button",
|
|
21767
|
+
"aria-pressed": view.value === "hour" ? "true" : "false",
|
|
21473
21768
|
onClick: setView.hour,
|
|
21769
|
+
onKeydown: preventSpace,
|
|
21474
21770
|
onKeyup: onKeyupHour
|
|
21475
21771
|
}, stringModel.value.hour),
|
|
21476
21772
|
h("div", ":"),
|
|
21477
21773
|
h("div", minLink.value ? {
|
|
21478
21774
|
class: "q-time__link " + (view.value === "minute" ? "q-time__link--active" : "cursor-pointer"),
|
|
21479
21775
|
tabindex: tabindex.value,
|
|
21776
|
+
role: "button",
|
|
21777
|
+
"aria-pressed": view.value === "minute" ? "true" : "false",
|
|
21778
|
+
onKeydown: preventSpace,
|
|
21480
21779
|
onKeyup: onKeyupMinute,
|
|
21481
21780
|
onClick: setView.minute
|
|
21482
21781
|
} : { class: "q-time__link" }, stringModel.value.minute)
|
|
@@ -21484,6 +21783,9 @@ var QTime_default = createComponent({
|
|
|
21484
21783
|
if (props.withSeconds) label.push(h("div", ":"), h("div", secLink.value ? {
|
|
21485
21784
|
class: "q-time__link " + (view.value === "second" ? "q-time__link--active" : "cursor-pointer"),
|
|
21486
21785
|
tabindex: tabindex.value,
|
|
21786
|
+
role: "button",
|
|
21787
|
+
"aria-pressed": view.value === "second" ? "true" : "false",
|
|
21788
|
+
onKeydown: preventSpace,
|
|
21487
21789
|
onKeyup: onKeyupSecond,
|
|
21488
21790
|
onClick: setView.second
|
|
21489
21791
|
} : { class: "q-time__link" }, stringModel.value.second));
|
|
@@ -21494,12 +21796,18 @@ var QTime_default = createComponent({
|
|
|
21494
21796
|
if (!computedFormat24h.value) child.push(h("div", { class: "q-time__header-ampm column items-between no-wrap" }, [h("div", {
|
|
21495
21797
|
class: "q-time__link " + (isAM.value ? "q-time__link--active" : "cursor-pointer"),
|
|
21496
21798
|
tabindex: tabindex.value,
|
|
21799
|
+
role: "button",
|
|
21800
|
+
"aria-pressed": isAM.value ? "true" : "false",
|
|
21497
21801
|
onClick: setAm,
|
|
21802
|
+
onKeydown: preventSpace,
|
|
21498
21803
|
onKeyup: setAmOnKey
|
|
21499
21804
|
}, "AM"), h("div", {
|
|
21500
21805
|
class: "q-time__link " + (isAM.value ? "cursor-pointer" : "q-time__link--active"),
|
|
21501
21806
|
tabindex: tabindex.value,
|
|
21807
|
+
role: "button",
|
|
21808
|
+
"aria-pressed": isAM.value ? "false" : "true",
|
|
21502
21809
|
onClick: setPm,
|
|
21810
|
+
onKeydown: preventSpace,
|
|
21503
21811
|
onKeyup: setPmOnKey
|
|
21504
21812
|
}, "PM")]));
|
|
21505
21813
|
return h("div", { class: "q-time__header flex flex-center no-wrap " + headerClass.value }, child);
|
|
@@ -21741,9 +22049,11 @@ var QTree_default = createComponent({
|
|
|
21741
22049
|
const lazy = ref({});
|
|
21742
22050
|
const innerTicked = ref(props.ticked || []);
|
|
21743
22051
|
const innerExpanded = ref(props.expanded || []);
|
|
21744
|
-
|
|
22052
|
+
const focusedKey = ref(null);
|
|
22053
|
+
let blurTargets = {}, headerTargets = {};
|
|
21745
22054
|
onBeforeUpdate(() => {
|
|
21746
22055
|
blurTargets = {};
|
|
22056
|
+
headerTargets = {};
|
|
21747
22057
|
});
|
|
21748
22058
|
const classes = computed(() => `q-tree q-tree--${props.dense ? "dense" : "standard"}` + (props.noConnectors ? " q-tree--no-connectors" : "") + (isDark.value ? " q-tree--dark" : "") + (props.color !== void 0 ? ` text-${props.color}` : ""));
|
|
21749
22059
|
const hasSelection = computed(() => props.selected !== void 0);
|
|
@@ -21816,6 +22126,25 @@ var QTree_default = createComponent({
|
|
|
21816
22126
|
props.nodes.forEach((node) => travel(node, null));
|
|
21817
22127
|
return acc;
|
|
21818
22128
|
});
|
|
22129
|
+
const focusableKeys = computed(() => {
|
|
22130
|
+
const acc = [];
|
|
22131
|
+
function travel(nodes) {
|
|
22132
|
+
nodes.forEach((node) => {
|
|
22133
|
+
const localMeta = meta.value[node[props.nodeKey]];
|
|
22134
|
+
if (props.filter && localMeta.matchesFilter !== true) return;
|
|
22135
|
+
if (localMeta.link === true) acc.push(localMeta.key);
|
|
22136
|
+
if (localMeta.expanded === true && Array.isArray(node[props.childrenKey])) travel(node[props.childrenKey]);
|
|
22137
|
+
});
|
|
22138
|
+
}
|
|
22139
|
+
travel(props.nodes);
|
|
22140
|
+
return acc;
|
|
22141
|
+
});
|
|
22142
|
+
const tabKey = computed(() => {
|
|
22143
|
+
const keys = focusableKeys.value;
|
|
22144
|
+
if (keys.includes(focusedKey.value)) return focusedKey.value;
|
|
22145
|
+
const selected = keys.find((key) => meta.value[key].selected === true);
|
|
22146
|
+
return selected !== void 0 ? selected : keys[0];
|
|
22147
|
+
});
|
|
21819
22148
|
watch(() => props.ticked, (val) => {
|
|
21820
22149
|
innerTicked.value = val;
|
|
21821
22150
|
});
|
|
@@ -21946,16 +22275,25 @@ var QTree_default = createComponent({
|
|
|
21946
22275
|
class: `q-tree__node relative-position q-tree__node--${isParent ? "parent" : "child"}`
|
|
21947
22276
|
}, [h("div", {
|
|
21948
22277
|
class: "q-tree__node-header relative-position row no-wrap items-center" + (m.link === true ? " q-tree__node--link q-hoverable q-focusable" : "") + (m.selected === true ? " q-tree__node--selected" : "") + (m.disabled === true ? " q-tree__node--disabled" : ""),
|
|
21949
|
-
|
|
21950
|
-
|
|
22278
|
+
ref: (el) => {
|
|
22279
|
+
headerTargets[m.key] = el;
|
|
22280
|
+
},
|
|
22281
|
+
tabindex: m.link === true && m.key === tabKey.value ? 0 : -1,
|
|
22282
|
+
"aria-expanded": isParent ? m.expanded ? "true" : "false" : null,
|
|
22283
|
+
"aria-selected": m.selectable ? m.selected ? "true" : "false" : null,
|
|
22284
|
+
"aria-disabled": m.disabled === true ? "true" : null,
|
|
21951
22285
|
role: "treeitem",
|
|
22286
|
+
onFocus() {
|
|
22287
|
+
if (m.link === true) focusedKey.value = m.key;
|
|
22288
|
+
},
|
|
21952
22289
|
onClick: (e) => {
|
|
21953
22290
|
onClick(node, m, e);
|
|
21954
22291
|
},
|
|
21955
|
-
|
|
22292
|
+
onKeydown(e) {
|
|
21956
22293
|
if (shouldIgnoreKey(e) !== true) {
|
|
21957
22294
|
if (e.keyCode === 13) onClick(node, m, e, true);
|
|
21958
22295
|
else if (e.keyCode === 32) onExpandClick(node, m, e, true);
|
|
22296
|
+
else if (onNavigationKey(m, e.keyCode)) stopAndPrevent(e);
|
|
21959
22297
|
}
|
|
21960
22298
|
}
|
|
21961
22299
|
}, [
|
|
@@ -22011,7 +22349,59 @@ var QTree_default = createComponent({
|
|
|
22011
22349
|
function blur(key) {
|
|
22012
22350
|
blurTargets[key]?.focus();
|
|
22013
22351
|
}
|
|
22352
|
+
function focusNode(key) {
|
|
22353
|
+
if (key !== void 0) {
|
|
22354
|
+
focusedKey.value = key;
|
|
22355
|
+
headerTargets[key]?.focus();
|
|
22356
|
+
}
|
|
22357
|
+
}
|
|
22358
|
+
function getFirstFocusableChild(children) {
|
|
22359
|
+
for (const child of children) {
|
|
22360
|
+
if (props.filter && child.matchesFilter !== true) continue;
|
|
22361
|
+
if (child.link === true) return child.key;
|
|
22362
|
+
if (child.expanded === true) {
|
|
22363
|
+
const key = getFirstFocusableChild(child.children);
|
|
22364
|
+
if (key !== void 0) return key;
|
|
22365
|
+
}
|
|
22366
|
+
}
|
|
22367
|
+
}
|
|
22368
|
+
function onNavigationKey(localMeta, keyCode) {
|
|
22369
|
+
const keys = focusableKeys.value, index = keys.indexOf(localMeta.key);
|
|
22370
|
+
if (keyCode === 36) {
|
|
22371
|
+
focusNode(keys[0]);
|
|
22372
|
+
return true;
|
|
22373
|
+
}
|
|
22374
|
+
if (keyCode === 35) {
|
|
22375
|
+
focusNode(keys.at(-1));
|
|
22376
|
+
return true;
|
|
22377
|
+
}
|
|
22378
|
+
if (keyCode === 38) {
|
|
22379
|
+
focusNode(keys[index - 1]);
|
|
22380
|
+
return true;
|
|
22381
|
+
}
|
|
22382
|
+
if (keyCode === 40) {
|
|
22383
|
+
focusNode(keys[index + 1]);
|
|
22384
|
+
return true;
|
|
22385
|
+
}
|
|
22386
|
+
if (keyCode === 39) {
|
|
22387
|
+
if (localMeta.isParent !== true && !localMeta.lazy) return true;
|
|
22388
|
+
if (localMeta.expanded !== true) setExpanded(localMeta.key, true);
|
|
22389
|
+
else focusNode(getFirstFocusableChild(localMeta.children));
|
|
22390
|
+
return true;
|
|
22391
|
+
}
|
|
22392
|
+
if (keyCode === 37) {
|
|
22393
|
+
if (localMeta.expanded === true) setExpanded(localMeta.key, false);
|
|
22394
|
+
else {
|
|
22395
|
+
let parent = localMeta.parent;
|
|
22396
|
+
while (parent !== null && parent.link !== true) parent = parent.parent;
|
|
22397
|
+
focusNode(parent?.key);
|
|
22398
|
+
}
|
|
22399
|
+
return true;
|
|
22400
|
+
}
|
|
22401
|
+
return false;
|
|
22402
|
+
}
|
|
22014
22403
|
function onClick(node, localMeta, e, keyboard) {
|
|
22404
|
+
if (localMeta.link === true) focusedKey.value = localMeta.key;
|
|
22015
22405
|
if (keyboard !== true && localMeta.selectable !== false) blur(localMeta.key);
|
|
22016
22406
|
if (hasSelection.value && localMeta.selectable) {
|
|
22017
22407
|
if (!props.noSelectionUnset) emit("update:selected", localMeta.key !== props.selected ? localMeta.key : null);
|
|
@@ -22020,6 +22410,7 @@ var QTree_default = createComponent({
|
|
|
22020
22410
|
if (typeof node.handler === "function") node.handler(node);
|
|
22021
22411
|
}
|
|
22022
22412
|
function onExpandClick(node, localMeta, e, keyboard) {
|
|
22413
|
+
if (localMeta.link === true) focusedKey.value = localMeta.key;
|
|
22023
22414
|
if (e !== void 0) stopAndPrevent(e);
|
|
22024
22415
|
if (keyboard !== true && localMeta.selectable !== false) blur(localMeta.key);
|
|
22025
22416
|
setExpanded(localMeta.key, !localMeta.expanded, node, localMeta);
|
|
@@ -22110,7 +22501,7 @@ function getRenderer(getPlugin, expose) {
|
|
|
22110
22501
|
return;
|
|
22111
22502
|
}
|
|
22112
22503
|
file.__uploaded = status === "uploaded" ? file.size : uploadedSize;
|
|
22113
|
-
file.__progress = status === "uploaded" ? 1 : Math.min(.9999, file.__uploaded / file.size);
|
|
22504
|
+
file.__progress = status === "uploaded" ? 1 : file.size === 0 ? 0 : Math.min(.9999, file.__uploaded / file.size);
|
|
22114
22505
|
file.__progressLabel = getProgressLabel(file.__progress);
|
|
22115
22506
|
proxy.$forceUpdate();
|
|
22116
22507
|
}
|
|
@@ -22167,7 +22558,9 @@ function getRenderer(getPlugin, expose) {
|
|
|
22167
22558
|
}
|
|
22168
22559
|
}
|
|
22169
22560
|
function removeUploadedFiles() {
|
|
22170
|
-
if (!props.disable) batchRemoveFiles(["uploaded"], () => {
|
|
22561
|
+
if (!props.disable) batchRemoveFiles(["uploaded"], ({ size }) => {
|
|
22562
|
+
state.uploadedSize.value -= size;
|
|
22563
|
+
uploadSize.value -= size;
|
|
22171
22564
|
state.uploadedFiles.value = [];
|
|
22172
22565
|
});
|
|
22173
22566
|
}
|
|
@@ -22198,8 +22591,12 @@ function getRenderer(getPlugin, expose) {
|
|
|
22198
22591
|
}
|
|
22199
22592
|
function removeFile(file) {
|
|
22200
22593
|
if (props.disable) return;
|
|
22201
|
-
|
|
22202
|
-
|
|
22594
|
+
const isUploading = file.__status === "uploading";
|
|
22595
|
+
if (file.__status === "uploaded") {
|
|
22596
|
+
state.uploadedSize.value -= file.size;
|
|
22597
|
+
uploadSize.value -= file.size;
|
|
22598
|
+
state.uploadedFiles.value = state.uploadedFiles.value.filter((f) => f.__key !== file.__key);
|
|
22599
|
+
} else if (isUploading) uploadSize.value -= file.size;
|
|
22203
22600
|
else uploadSize.value -= file.size;
|
|
22204
22601
|
state.files.value = state.files.value.filter((f) => {
|
|
22205
22602
|
if (f.__key !== file.__key) return true;
|
|
@@ -22207,6 +22604,7 @@ function getRenderer(getPlugin, expose) {
|
|
|
22207
22604
|
return false;
|
|
22208
22605
|
});
|
|
22209
22606
|
state.queuedFiles.value = state.queuedFiles.value.filter((f) => f.__key !== file.__key);
|
|
22607
|
+
if (isUploading) file.__abort();
|
|
22210
22608
|
emit("removed", [file]);
|
|
22211
22609
|
}
|
|
22212
22610
|
function revokeImgURLs() {
|
|
@@ -22431,6 +22829,7 @@ function injectPlugin({ props, emit, helpers }) {
|
|
|
22431
22829
|
const xhrs = ref([]);
|
|
22432
22830
|
const promises = ref([]);
|
|
22433
22831
|
const workingThreads = ref(0);
|
|
22832
|
+
const abortedPromises = /* @__PURE__ */ new WeakSet();
|
|
22434
22833
|
const xhrProps = computed(() => ({
|
|
22435
22834
|
url: getFn(props.url),
|
|
22436
22835
|
method: getFn(props.method),
|
|
@@ -22443,12 +22842,14 @@ function injectPlugin({ props, emit, helpers }) {
|
|
|
22443
22842
|
}));
|
|
22444
22843
|
const isUploading = computed(() => workingThreads.value > 0);
|
|
22445
22844
|
const isBusy = computed(() => promises.value.length !== 0);
|
|
22446
|
-
|
|
22845
|
+
const getLiveFiles = (files) => files.filter((file) => helpers.files.value.includes(file));
|
|
22447
22846
|
function abort() {
|
|
22448
22847
|
xhrs.value.forEach((x) => {
|
|
22449
22848
|
x.abort();
|
|
22450
22849
|
});
|
|
22451
|
-
|
|
22850
|
+
promises.value.forEach((promise) => {
|
|
22851
|
+
abortedPromises.add(promise);
|
|
22852
|
+
});
|
|
22452
22853
|
}
|
|
22453
22854
|
function upload() {
|
|
22454
22855
|
const queue = [...helpers.queuedFiles.value];
|
|
@@ -22460,36 +22861,57 @@ function injectPlugin({ props, emit, helpers }) {
|
|
|
22460
22861
|
}
|
|
22461
22862
|
function runFactory(files) {
|
|
22462
22863
|
workingThreads.value++;
|
|
22864
|
+
const failed = (err, promise) => {
|
|
22865
|
+
if (helpers.isAlive()) {
|
|
22866
|
+
if (promise !== void 0) promises.value = promises.value.filter((p) => p !== promise);
|
|
22867
|
+
const liveFiles = getLiveFiles(files);
|
|
22868
|
+
if (liveFiles.length !== 0) {
|
|
22869
|
+
helpers.queuedFiles.value.push(...liveFiles);
|
|
22870
|
+
liveFiles.forEach((f) => {
|
|
22871
|
+
helpers.updateFileStatus(f, "failed");
|
|
22872
|
+
});
|
|
22873
|
+
emit("factoryFailed", err, liveFiles);
|
|
22874
|
+
}
|
|
22875
|
+
workingThreads.value--;
|
|
22876
|
+
}
|
|
22877
|
+
};
|
|
22463
22878
|
if (typeof props.factory !== "function") {
|
|
22464
|
-
|
|
22879
|
+
startUpload({});
|
|
22465
22880
|
return;
|
|
22466
22881
|
}
|
|
22467
|
-
|
|
22468
|
-
|
|
22469
|
-
|
|
22470
|
-
|
|
22471
|
-
|
|
22882
|
+
let res;
|
|
22883
|
+
try {
|
|
22884
|
+
res = props.factory(files);
|
|
22885
|
+
} catch (err) {
|
|
22886
|
+
failed(err);
|
|
22887
|
+
return;
|
|
22888
|
+
}
|
|
22889
|
+
if (Object(res) !== res) failed(/* @__PURE__ */ new Error("QUploader: factory() does not return properly"));
|
|
22890
|
+
else if (typeof res.catch === "function" && typeof res.then === "function") {
|
|
22472
22891
|
promises.value.push(res);
|
|
22473
|
-
const failed = (err) => {
|
|
22474
|
-
if (helpers.isAlive()) {
|
|
22475
|
-
promises.value = promises.value.filter((p) => p !== res);
|
|
22476
|
-
if (promises.value.length === 0) abortPromises = false;
|
|
22477
|
-
helpers.queuedFiles.value.push(...files);
|
|
22478
|
-
files.forEach((f) => {
|
|
22479
|
-
helpers.updateFileStatus(f, "failed");
|
|
22480
|
-
});
|
|
22481
|
-
emit("factoryFailed", err, files);
|
|
22482
|
-
workingThreads.value--;
|
|
22483
|
-
}
|
|
22484
|
-
};
|
|
22485
22892
|
res.then((factory) => {
|
|
22486
|
-
if (
|
|
22893
|
+
if (abortedPromises.has(res)) failed(/* @__PURE__ */ new Error("Aborted"), res);
|
|
22894
|
+
else if (Object(factory) !== factory) failed(/* @__PURE__ */ new Error("QUploader: factory() does not return properly"), res);
|
|
22487
22895
|
else if (helpers.isAlive()) {
|
|
22488
22896
|
promises.value = promises.value.filter((p) => p !== res);
|
|
22489
|
-
|
|
22897
|
+
startUpload(factory);
|
|
22490
22898
|
}
|
|
22491
|
-
}).catch(
|
|
22492
|
-
|
|
22899
|
+
}).catch((err) => {
|
|
22900
|
+
failed(err, res);
|
|
22901
|
+
});
|
|
22902
|
+
} else startUpload(res);
|
|
22903
|
+
function startUpload(factory) {
|
|
22904
|
+
const liveFiles = getLiveFiles(files);
|
|
22905
|
+
if (liveFiles.length === 0) {
|
|
22906
|
+
workingThreads.value--;
|
|
22907
|
+
return;
|
|
22908
|
+
}
|
|
22909
|
+
try {
|
|
22910
|
+
performUpload(liveFiles, factory);
|
|
22911
|
+
} catch (err) {
|
|
22912
|
+
failed(err);
|
|
22913
|
+
}
|
|
22914
|
+
}
|
|
22493
22915
|
}
|
|
22494
22916
|
function performUpload(files, factory) {
|
|
22495
22917
|
const form = new FormData(), xhr = new XMLHttpRequest();
|
|
@@ -22497,6 +22919,10 @@ function injectPlugin({ props, emit, helpers }) {
|
|
|
22497
22919
|
const url = getProp("url", files);
|
|
22498
22920
|
if (!url) {
|
|
22499
22921
|
console.error("q-uploader: invalid or no URL specified");
|
|
22922
|
+
helpers.queuedFiles.value.push(...files);
|
|
22923
|
+
files.forEach((f) => {
|
|
22924
|
+
helpers.updateFileStatus(f, "failed");
|
|
22925
|
+
});
|
|
22500
22926
|
workingThreads.value--;
|
|
22501
22927
|
return;
|
|
22502
22928
|
}
|
|
@@ -22513,7 +22939,7 @@ function injectPlugin({ props, emit, helpers }) {
|
|
|
22513
22939
|
let size = localUploadedSize - uploadIndexSize;
|
|
22514
22940
|
for (let i = uploadIndex; size > 0 && i < files.length; i++) {
|
|
22515
22941
|
const file = files[i];
|
|
22516
|
-
if (size
|
|
22942
|
+
if (size >= file.size) {
|
|
22517
22943
|
size -= file.size;
|
|
22518
22944
|
uploadIndex++;
|
|
22519
22945
|
uploadIndexSize += file.size;
|
|
@@ -22527,25 +22953,33 @@ function injectPlugin({ props, emit, helpers }) {
|
|
|
22527
22953
|
xhr.addEventListener("readystatechange", () => {
|
|
22528
22954
|
if (xhr.readyState < 4) return;
|
|
22529
22955
|
if (xhr.status && xhr.status < 400) {
|
|
22530
|
-
|
|
22531
|
-
|
|
22532
|
-
|
|
22533
|
-
|
|
22534
|
-
|
|
22535
|
-
|
|
22536
|
-
|
|
22537
|
-
|
|
22956
|
+
const liveFiles = getLiveFiles(files);
|
|
22957
|
+
const liveUploadSize = liveFiles.reduce((total, file) => total + file.size, 0);
|
|
22958
|
+
helpers.uploadedSize.value += liveUploadSize - localUploadedSize;
|
|
22959
|
+
if (liveFiles.length !== 0) {
|
|
22960
|
+
helpers.uploadedFiles.value.push(...liveFiles);
|
|
22961
|
+
liveFiles.forEach((f) => {
|
|
22962
|
+
helpers.updateFileStatus(f, "uploaded");
|
|
22963
|
+
});
|
|
22964
|
+
emit("uploaded", {
|
|
22965
|
+
files: liveFiles,
|
|
22966
|
+
xhr
|
|
22967
|
+
});
|
|
22968
|
+
}
|
|
22538
22969
|
} else {
|
|
22539
22970
|
aborted = true;
|
|
22540
22971
|
helpers.uploadedSize.value -= localUploadedSize;
|
|
22541
|
-
|
|
22542
|
-
|
|
22543
|
-
helpers.
|
|
22544
|
-
|
|
22545
|
-
|
|
22546
|
-
|
|
22547
|
-
|
|
22548
|
-
|
|
22972
|
+
const liveFiles = getLiveFiles(files);
|
|
22973
|
+
if (liveFiles.length !== 0) {
|
|
22974
|
+
helpers.queuedFiles.value.push(...liveFiles);
|
|
22975
|
+
liveFiles.forEach((f) => {
|
|
22976
|
+
helpers.updateFileStatus(f, "failed");
|
|
22977
|
+
});
|
|
22978
|
+
emit("failed", {
|
|
22979
|
+
files: liveFiles,
|
|
22980
|
+
xhr
|
|
22981
|
+
});
|
|
22982
|
+
}
|
|
22549
22983
|
}
|
|
22550
22984
|
workingThreads.value--;
|
|
22551
22985
|
xhrs.value = xhrs.value.filter((x) => x !== xhr);
|
|
@@ -23820,7 +24254,7 @@ var TouchRepeat_default = createDirective({
|
|
|
23820
24254
|
if (keyRegex.test(key)) {
|
|
23821
24255
|
const parsedKey = Number.parseInt(key, 10);
|
|
23822
24256
|
const keyCode = Number.isNaN(parsedKey) ? keyCodes[key.toLowerCase()] : parsedKey;
|
|
23823
|
-
if (keyCode
|
|
24257
|
+
if (keyCode !== void 0) acc.push(...[keyCode].flat());
|
|
23824
24258
|
}
|
|
23825
24259
|
return acc;
|
|
23826
24260
|
}, []);
|
|
@@ -24386,7 +24820,11 @@ function stringifyCookieValue(value) {
|
|
|
24386
24820
|
function read(string) {
|
|
24387
24821
|
if (string === "") return string;
|
|
24388
24822
|
if (string.indexOf("\"") === 0) string = string.slice(1, -1).replaceAll(String.raw`\"`, "\"").replaceAll(String.raw`\\`, "\\");
|
|
24389
|
-
|
|
24823
|
+
try {
|
|
24824
|
+
string = decodeURIComponent(string.replaceAll("+", " "));
|
|
24825
|
+
} catch {
|
|
24826
|
+
return;
|
|
24827
|
+
}
|
|
24390
24828
|
try {
|
|
24391
24829
|
const parsed = JSON.parse(string);
|
|
24392
24830
|
if (parsed === Object(parsed) || Array.isArray(parsed)) string = parsed;
|
|
@@ -24410,15 +24848,19 @@ function parseExpireToSeconds(str) {
|
|
|
24410
24848
|
const unit = match[2];
|
|
24411
24849
|
totalSeconds += value * numberUnitMultiplierMap[unit];
|
|
24412
24850
|
}
|
|
24413
|
-
|
|
24851
|
+
if (hasMatch) return totalSeconds;
|
|
24852
|
+
const timestamp = Date.parse(str);
|
|
24853
|
+
return Number.isNaN(timestamp) ? void 0 : Math.round((timestamp - Date.now()) / 1e3);
|
|
24414
24854
|
}
|
|
24415
24855
|
function set(key, val, opts = {}, ssr) {
|
|
24416
24856
|
let maxAge;
|
|
24417
24857
|
let isDeletion = false;
|
|
24418
24858
|
if (opts.expires !== void 0) {
|
|
24419
24859
|
if (Number.isFinite(opts.expires)) maxAge = Math.round(opts.expires * 86400);
|
|
24420
|
-
else if (opts.expires instanceof Date)
|
|
24421
|
-
|
|
24860
|
+
else if (opts.expires instanceof Date) {
|
|
24861
|
+
const timestamp = opts.expires.getTime();
|
|
24862
|
+
if (Number.isFinite(timestamp)) maxAge = Math.round((timestamp - Date.now()) / 1e3);
|
|
24863
|
+
} else if (typeof opts.expires === "string") maxAge = parseExpireToSeconds(opts.expires);
|
|
24422
24864
|
if (maxAge !== void 0) isDeletion = maxAge <= 0;
|
|
24423
24865
|
}
|
|
24424
24866
|
const keyValue = `${encodeURIComponent(key)}=${stringifyCookieValue(val)}`;
|
|
@@ -24438,8 +24880,8 @@ function set(key, val, opts = {}, ssr) {
|
|
|
24438
24880
|
ssr.res.setHeader("Set-Cookie", ssr.req.qCookies);
|
|
24439
24881
|
let all = ssr.req.headers.cookie || "";
|
|
24440
24882
|
if (maxAge !== void 0 && isDeletion) {
|
|
24441
|
-
const
|
|
24442
|
-
|
|
24883
|
+
const encodedKey = encodeURIComponent(key);
|
|
24884
|
+
all = all.split("; ").filter((entry) => entry.split("=", 1)[0] !== encodedKey).join("; ");
|
|
24443
24885
|
} else all = all ? `${keyValue}; ${all}` : keyValue;
|
|
24444
24886
|
ssr.req.headers.cookie = all;
|
|
24445
24887
|
} else document.cookie = cookie;
|
|
@@ -24449,11 +24891,15 @@ function get(key, ssr) {
|
|
|
24449
24891
|
let result = key ? null : {}, i = 0, parts, name, cookie;
|
|
24450
24892
|
for (; i < l; i++) {
|
|
24451
24893
|
parts = cookies[i].split("=");
|
|
24452
|
-
|
|
24894
|
+
try {
|
|
24895
|
+
name = decodeURIComponent(parts.shift());
|
|
24896
|
+
} catch {
|
|
24897
|
+
continue;
|
|
24898
|
+
}
|
|
24453
24899
|
cookie = parts.join("=");
|
|
24454
24900
|
if (!key) result[name] = cookie;
|
|
24455
24901
|
else if (key === name) {
|
|
24456
|
-
result = read(cookie);
|
|
24902
|
+
result = read(cookie) ?? null;
|
|
24457
24903
|
break;
|
|
24458
24904
|
}
|
|
24459
24905
|
}
|
|
@@ -24852,6 +25298,7 @@ const Plugin$7 = createReactivePlugin({ isActive: false }, {
|
|
|
24852
25298
|
//#region src/plugins/meta/Meta.js
|
|
24853
25299
|
let updateId = null;
|
|
24854
25300
|
let currentClientMeta;
|
|
25301
|
+
String.raw`\u003C`, String.raw`\u003E`, String.raw`\u0026`, String.raw`\u2028`, String.raw`\u2029`;
|
|
24855
25302
|
const clientList = [];
|
|
24856
25303
|
function normalize(meta) {
|
|
24857
25304
|
if (meta.title) {
|
|
@@ -25796,10 +26243,10 @@ function runSequentialPromises(sequentialPromises, { threadsNumber = 1, abortOnF
|
|
|
25796
26243
|
//#endregion
|
|
25797
26244
|
//#region src/index.dev.js
|
|
25798
26245
|
const Quasar = {
|
|
25799
|
-
version: "2.
|
|
26246
|
+
version: "2.23.0",
|
|
25800
26247
|
install: install_quasar_default,
|
|
25801
26248
|
lang: Plugin$5,
|
|
25802
26249
|
iconSet: Plugin$4
|
|
25803
26250
|
};
|
|
25804
26251
|
//#endregion
|
|
25805
|
-
export { AddressbarColor_default as AddressbarColor, Plugin as AppFullscreen, Plugin$1 as AppVisibility, BottomSheet_default as BottomSheet, ClosePopup_default as ClosePopup, Plugin$2 as Cookies, Plugin$3 as Dark, Dialog_default as Dialog, EventBus, Plugin$4 as IconSet, Intersection_default as Intersection, Plugin$5 as Lang, Plugin$6 as Loading, Plugin$7 as LoadingBar, Plugin$8 as LocalStorage, Meta_default as Meta, Morph_default as Morph, Mutation_default as Mutation, Notify_default as Notify, Platform, QAjaxBar_default as QAjaxBar, QAvatar_default as QAvatar, QBadge_default as QBadge, QBanner_default as QBanner, QBar_default as QBar, QBreadcrumbs_default as QBreadcrumbs, QBreadcrumbsEl_default as QBreadcrumbsEl, QBtn_default as QBtn, QBtnDropdown_default as QBtnDropdown, QBtnGroup_default as QBtnGroup, QBtnToggle_default as QBtnToggle, QCard_default as QCard, QCardActions_default as QCardActions, QCardSection_default as QCardSection, QCarousel_default as QCarousel, QCarouselControl_default as QCarouselControl, QCarouselSlide_default as QCarouselSlide, QChatMessage_default as QChatMessage, QCheckbox_default as QCheckbox, QChip_default as QChip, QCircularProgress_default as QCircularProgress, QColor_default as QColor, QDate_default as QDate, QDialog_default as QDialog, QDrawer_default as QDrawer, QEditor_default as QEditor, QExpansionItem_default as QExpansionItem, QFab_default as QFab, QFabAction_default as QFabAction, QField_default as QField, QFile_default as QFile, QFooter_default as QFooter, QForm_default as QForm, QFormChildMixin_default as QFormChildMixin, QHeader_default as QHeader, QIcon_default as QIcon, QImg_default as QImg, QInfiniteScroll_default as QInfiniteScroll, QInnerLoading_default as QInnerLoading, QInput_default as QInput, QIntersection_default as QIntersection, QItem_default as QItem, QItemLabel_default as QItemLabel, QItemSection_default as QItemSection, QKnob_default as QKnob, QLayout_default as QLayout, QLinearProgress_default as QLinearProgress, QList_default as QList, QMarkupTable_default as QMarkupTable, QMenu_default as QMenu, QNoSsr_default as QNoSsr, QOptionGroup_default as QOptionGroup, QPage_default as QPage, QPageContainer_default as QPageContainer, QPageScroller_default as QPageScroller, QPageSticky_default as QPageSticky, QPagination_default as QPagination, QParallax_default as QParallax, QPopupEdit_default as QPopupEdit, QPopupProxy_default as QPopupProxy, QPullToRefresh_default as QPullToRefresh, QRadio_default as QRadio, QRange_default as QRange, QRating_default as QRating, QResizeObserver_default as QResizeObserver, QResponsive_default as QResponsive, QRouteTab_default as QRouteTab, QScrollArea_default as QScrollArea, QScrollObserver_default as QScrollObserver, QSelect_default as QSelect, QSeparator_default as QSeparator, QSkeleton_default as QSkeleton, QSlideItem_default as QSlideItem, QSlideTransition_default as QSlideTransition, QSlider_default as QSlider, QSpace_default as QSpace, QSpinner_default as QSpinner, QSpinnerAudio_default as QSpinnerAudio, QSpinnerBall_default as QSpinnerBall, QSpinnerBars_default as QSpinnerBars, QSpinnerBox_default as QSpinnerBox, QSpinnerClock_default as QSpinnerClock, QSpinnerComment_default as QSpinnerComment, QSpinnerCube_default as QSpinnerCube, QSpinnerDots_default as QSpinnerDots, QSpinnerFacebook_default as QSpinnerFacebook, QSpinnerGears_default as QSpinnerGears, QSpinnerGrid_default as QSpinnerGrid, QSpinnerHearts_default as QSpinnerHearts, QSpinnerHourglass_default as QSpinnerHourglass, QSpinnerInfinity_default as QSpinnerInfinity, QSpinnerIos_default as QSpinnerIos, QSpinnerOrbit_default as QSpinnerOrbit, QSpinnerOval_default as QSpinnerOval, QSpinnerPie_default as QSpinnerPie, QSpinnerPuff_default as QSpinnerPuff, QSpinnerRadio_default as QSpinnerRadio, QSpinnerRings_default as QSpinnerRings, QSpinnerTail_default as QSpinnerTail, QSplitter_default as QSplitter, QStep_default as QStep, QStepper_default as QStepper, QStepperNavigation_default as QStepperNavigation, QTab_default as QTab, QTabPanel_default as QTabPanel, QTabPanels_default as QTabPanels, QTable_default as QTable, QTabs_default as QTabs, QTd_default as QTd, QTh_default as QTh, QTime_default as QTime, QTimeline_default as QTimeline, QTimelineEntry_default as QTimelineEntry, QToggle_default as QToggle, QToolbar_default as QToolbar, QToolbarTitle_default as QToolbarTitle, QTooltip_default as QTooltip, QTr_default as QTr, QTree_default as QTree, QUploader_default as QUploader, QUploaderAddTrigger_default as QUploaderAddTrigger, QVideo_default as QVideo, QVirtualScroll_default as QVirtualScroll, Quasar, Ripple_default as Ripple, Screen_default as Screen, Scroll_default as Scroll, ScrollFire_default as ScrollFire, Plugin$9 as SessionStorage, TouchHold_default as TouchHold, TouchPan_default as TouchPan, TouchRepeat_default as TouchRepeat, TouchSwipe_default as TouchSwipe, cloneDeep as clone, colors_default as colors, copyToClipboard, createMetaMixin, createUploaderComponent, date_default as date, debounce, dom_default as dom, event_default as event, exportFile, extend, format_default as format, frameDebounce, getCssVar, is_default as is, morph, noop, openUrl as openURL, patterns_default as patterns, runSequentialPromises, scroll_default as scroll, setCssVar, throttle, uid_default as uid, useDialogPluginComponent, useFormChild, useHydration, useId, useInterval, useMeta, useQuasar, useRenderCache, useSplitAttrs, useTick, useTimeout };
|
|
26252
|
+
export { AddressbarColor_default as AddressbarColor, Plugin as AppFullscreen, Plugin$1 as AppVisibility, BottomSheet_default as BottomSheet, ClosePopup_default as ClosePopup, Plugin$2 as Cookies, Plugin$3 as Dark, Dialog_default as Dialog, EventBus, Plugin$4 as IconSet, Intersection_default as Intersection, Plugin$5 as Lang, Plugin$6 as Loading, Plugin$7 as LoadingBar, Plugin$8 as LocalStorage, Meta_default as Meta, Morph_default as Morph, Mutation_default as Mutation, Notify_default as Notify, Platform, QAjaxBar_default as QAjaxBar, QAvatar_default as QAvatar, QBadge_default as QBadge, QBanner_default as QBanner, QBar_default as QBar, QBreadcrumbs_default as QBreadcrumbs, QBreadcrumbsEl_default as QBreadcrumbsEl, QBtn_default as QBtn, QBtnDropdown_default as QBtnDropdown, QBtnGroup_default as QBtnGroup, QBtnToggle_default as QBtnToggle, QCard_default as QCard, QCardActions_default as QCardActions, QCardSection_default as QCardSection, QCarousel_default as QCarousel, QCarouselControl_default as QCarouselControl, QCarouselSlide_default as QCarouselSlide, QChatMessage_default as QChatMessage, QCheckbox_default as QCheckbox, QChip_default as QChip, QCircularProgress_default as QCircularProgress, QColor_default as QColor, QDate_default as QDate, QDialog_default as QDialog, QDrawer_default as QDrawer, QEditor_default as QEditor, QExpansionItem_default as QExpansionItem, QFab_default as QFab, QFabAction_default as QFabAction, QField_default as QField, QFile_default as QFile, QFooter_default as QFooter, QForm_default as QForm, QFormChildMixin_default as QFormChildMixin, QHeader_default as QHeader, QIcon_default as QIcon, QImg_default as QImg, QInfiniteScroll_default as QInfiniteScroll, QInnerLoading_default as QInnerLoading, QInput_default as QInput, QIntersection_default as QIntersection, QItem_default as QItem, QItemLabel_default as QItemLabel, QItemSection_default as QItemSection, QKnob_default as QKnob, QLayout_default as QLayout, QLinearProgress_default as QLinearProgress, QList_default as QList, QMarkupTable_default as QMarkupTable, QMenu_default as QMenu, QNoSsr_default as QNoSsr, QOptionGroup_default as QOptionGroup, QPage_default as QPage, QPageContainer_default as QPageContainer, QPageScroller_default as QPageScroller, QPageSticky_default as QPageSticky, QPagination_default as QPagination, QParallax_default as QParallax, QPopupEdit_default as QPopupEdit, QPopupProxy_default as QPopupProxy, QPullToRefresh_default as QPullToRefresh, QRadio_default as QRadio, QRange_default as QRange, QRating_default as QRating, QResizeObserver_default as QResizeObserver, QResponsive_default as QResponsive, QRouteTab_default as QRouteTab, QScrollArea_default as QScrollArea, QScrollObserver_default as QScrollObserver, QSelect_default as QSelect, QSeparator_default as QSeparator, QSkeleton_default as QSkeleton, QSlideItem_default as QSlideItem, QSlideTransition_default as QSlideTransition, QSlider_default as QSlider, QSpace_default as QSpace, QSpinner_default as QSpinner, QSpinnerAudio_default as QSpinnerAudio, QSpinnerBall_default as QSpinnerBall, QSpinnerBars_default as QSpinnerBars, QSpinnerBox_default as QSpinnerBox, QSpinnerClock_default as QSpinnerClock, QSpinnerComment_default as QSpinnerComment, QSpinnerCube_default as QSpinnerCube, QSpinnerDots_default as QSpinnerDots, QSpinnerFacebook_default as QSpinnerFacebook, QSpinnerGears_default as QSpinnerGears, QSpinnerGrid_default as QSpinnerGrid, QSpinnerHearts_default as QSpinnerHearts, QSpinnerHourglass_default as QSpinnerHourglass, QSpinnerInfinity_default as QSpinnerInfinity, QSpinnerIos_default as QSpinnerIos, QSpinnerOrbit_default as QSpinnerOrbit, QSpinnerOval_default as QSpinnerOval, QSpinnerPie_default as QSpinnerPie, QSpinnerPuff_default as QSpinnerPuff, QSpinnerRadio_default as QSpinnerRadio, QSpinnerRings_default as QSpinnerRings, QSpinnerTail_default as QSpinnerTail, QSplitter_default as QSplitter, QStep_default as QStep, QStepper_default as QStepper, QStepperNavigation_default as QStepperNavigation, QTab_default as QTab, QTabPanel_default as QTabPanel, QTabPanels_default as QTabPanels, QTable_default as QTable, QTabs_default as QTabs, QTd_default as QTd, QTh_default as QTh, QTime_default as QTime, QTimeline_default as QTimeline, QTimelineEntry_default as QTimelineEntry, QToggle_default as QToggle, QToolbar_default as QToolbar, QToolbarTitle_default as QToolbarTitle, QTooltip_default as QTooltip, QTr_default as QTr, QTree_default as QTree, QUploader_default as QUploader, QUploaderAddTrigger_default as QUploaderAddTrigger, QVideo_default as QVideo, QVirtualScroll_default as QVirtualScroll, Quasar, Ripple_default as Ripple, Screen_default as Screen, Scroll_default as Scroll, ScrollFire_default as ScrollFire, Plugin$9 as SessionStorage, TouchHold_default as TouchHold, TouchPan_default as TouchPan, TouchRepeat_default as TouchRepeat, TouchSwipe_default as TouchSwipe, cloneDeep as clone, colors_default as colors, copyToClipboard, createMetaMixin, createUploaderComponent, date_default as date, debounce, dom_default as dom, event_default as event, exportFile, extend, format_default as format, frameDebounce, getCssVar, is_default as is, morph, noop, openUrl as openURL, patterns_default as patterns, runSequentialPromises, scroll_default as scroll, setCssVar, throttle, uid_default as uid, useAnimationFrame, useDialogPluginComponent, useFormChild, useHydration, useId, useInterval, useMeta, useQuasar, useRenderCache, useSplitAttrs, useTick, useTimeout };
|