quasar 2.4.0 → 2.4.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/api/BottomSheet.json +6 -2
- package/dist/api/Notify.json +25 -25
- package/dist/api/QAvatar.json +1 -1
- package/dist/api/QBreadcrumbsEl.json +1 -1
- package/dist/api/QBtn.json +2 -2
- package/dist/api/QBtnDropdown.json +3 -3
- package/dist/api/QBtnToggle.json +1 -1
- package/dist/api/QCarousel.json +4 -4
- package/dist/api/QCarouselSlide.json +2 -2
- package/dist/api/QChatMessage.json +1 -1
- package/dist/api/QChip.json +4 -4
- package/dist/api/QExpansionItem.json +3 -3
- package/dist/api/QFab.json +2 -2
- package/dist/api/QFabAction.json +1 -1
- package/dist/api/QImg.json +2 -2
- package/dist/api/QLinearProgress.json +1 -1
- package/dist/api/QPagination.json +4 -4
- package/dist/api/QParallax.json +1 -1
- package/dist/api/QPullToRefresh.json +1 -1
- package/dist/api/QRating.json +3 -3
- package/dist/api/QRouteTab.json +1 -1
- package/dist/api/QSelect.json +2 -2
- package/dist/api/QStep.json +4 -4
- package/dist/api/QStepper.json +4 -4
- package/dist/api/QTab.json +1 -1
- package/dist/api/QTable.json +4 -4
- package/dist/api/QTimelineEntry.json +2 -2
- package/dist/api/QToggle.json +1 -1
- package/dist/api/QTree.json +1 -1
- package/dist/api/QVideo.json +11 -1
- package/dist/icon-set/bootstrap-icons.umd.prod.js +1 -1
- package/dist/icon-set/eva-icons.umd.prod.js +1 -1
- package/dist/icon-set/fontawesome-v5-pro.umd.prod.js +1 -1
- package/dist/icon-set/fontawesome-v5.umd.prod.js +1 -1
- package/dist/icon-set/ionicons-v4.umd.prod.js +1 -1
- package/dist/icon-set/line-awesome.umd.prod.js +1 -1
- package/dist/icon-set/material-icons-outlined.umd.prod.js +1 -1
- package/dist/icon-set/material-icons-round.umd.prod.js +1 -1
- package/dist/icon-set/material-icons-sharp.umd.prod.js +1 -1
- package/dist/icon-set/material-icons.umd.prod.js +1 -1
- package/dist/icon-set/mdi-v3.umd.prod.js +1 -1
- package/dist/icon-set/mdi-v4.umd.prod.js +1 -1
- package/dist/icon-set/mdi-v5.umd.prod.js +1 -1
- package/dist/icon-set/mdi-v6.umd.prod.js +1 -1
- package/dist/icon-set/svg-bootstrap-icons.umd.prod.js +1 -1
- package/dist/icon-set/svg-eva-icons.umd.prod.js +1 -1
- package/dist/icon-set/svg-fontawesome-v5.umd.prod.js +1 -1
- package/dist/icon-set/svg-ionicons-v4.umd.prod.js +1 -1
- package/dist/icon-set/svg-ionicons-v5.umd.prod.js +1 -1
- package/dist/icon-set/svg-ionicons-v6.umd.prod.js +1 -1
- package/dist/icon-set/svg-line-awesome.umd.prod.js +1 -1
- package/dist/icon-set/svg-material-icons-outlined.umd.prod.js +1 -1
- package/dist/icon-set/svg-material-icons-round.umd.prod.js +1 -1
- package/dist/icon-set/svg-material-icons-sharp.umd.prod.js +1 -1
- package/dist/icon-set/svg-material-icons.umd.prod.js +1 -1
- package/dist/icon-set/svg-mdi-v4.umd.prod.js +1 -1
- package/dist/icon-set/svg-mdi-v5.umd.prod.js +1 -1
- package/dist/icon-set/svg-mdi-v6.umd.prod.js +1 -1
- package/dist/icon-set/svg-themify.umd.prod.js +1 -1
- package/dist/icon-set/themify.umd.prod.js +1 -1
- package/dist/lang/ar.umd.prod.js +1 -1
- package/dist/lang/az-Latn.umd.prod.js +1 -1
- package/dist/lang/bg.umd.prod.js +1 -1
- package/dist/lang/bn.umd.prod.js +1 -1
- package/dist/lang/ca.umd.prod.js +1 -1
- package/dist/lang/cs.umd.prod.js +1 -1
- package/dist/lang/da.umd.prod.js +1 -1
- package/dist/lang/de.umd.prod.js +1 -1
- package/dist/lang/el.umd.prod.js +1 -1
- package/dist/lang/en-GB.umd.prod.js +1 -1
- package/dist/lang/en-US.umd.prod.js +1 -1
- package/dist/lang/eo.umd.prod.js +1 -1
- package/dist/lang/es.umd.prod.js +1 -1
- package/dist/lang/et.umd.prod.js +1 -1
- package/dist/lang/fa-IR.umd.prod.js +1 -1
- package/dist/lang/fa.umd.prod.js +1 -1
- package/dist/lang/fi.umd.prod.js +1 -1
- package/dist/lang/fr.umd.prod.js +1 -1
- package/dist/lang/gn.umd.prod.js +1 -1
- package/dist/lang/he.umd.prod.js +1 -1
- package/dist/lang/hr.umd.prod.js +1 -1
- package/dist/lang/hu.umd.prod.js +1 -1
- package/dist/lang/id.umd.prod.js +1 -1
- package/dist/lang/is.umd.prod.js +1 -1
- package/dist/lang/it.umd.prod.js +1 -1
- package/dist/lang/ja.umd.prod.js +1 -1
- package/dist/lang/km.umd.prod.js +1 -1
- package/dist/lang/ko-KR.umd.prod.js +1 -1
- package/dist/lang/kur-CKB.umd.prod.js +1 -1
- package/dist/lang/lt.umd.prod.js +1 -1
- package/dist/lang/lu.umd.prod.js +1 -1
- package/dist/lang/lv.umd.prod.js +1 -1
- package/dist/lang/ml.umd.prod.js +1 -1
- package/dist/lang/ms.umd.prod.js +1 -1
- package/dist/lang/nb-NO.umd.prod.js +1 -1
- package/dist/lang/nl.umd.prod.js +1 -1
- package/dist/lang/pl.umd.prod.js +1 -1
- package/dist/lang/pt-BR.umd.prod.js +1 -1
- package/dist/lang/pt.umd.prod.js +1 -1
- package/dist/lang/ro.umd.prod.js +1 -1
- package/dist/lang/ru.umd.prod.js +1 -1
- package/dist/lang/sk.umd.prod.js +1 -1
- package/dist/lang/sl.umd.prod.js +1 -1
- package/dist/lang/sr-CYR.umd.prod.js +1 -1
- package/dist/lang/sr.umd.prod.js +1 -1
- package/dist/lang/sv.umd.prod.js +1 -1
- package/dist/lang/ta.umd.prod.js +1 -1
- package/dist/lang/th.umd.prod.js +1 -1
- package/dist/lang/tr.umd.prod.js +1 -1
- package/dist/lang/ug.umd.prod.js +1 -1
- package/dist/lang/uk.umd.prod.js +1 -1
- package/dist/lang/vi.umd.prod.js +1 -1
- package/dist/lang/zh-CN.umd.prod.js +1 -1
- package/dist/lang/zh-TW.umd.prod.js +1 -1
- package/dist/quasar.cjs.prod.js +2 -2
- package/dist/quasar.css +15 -14
- package/dist/quasar.esm.prod.js +2 -2
- package/dist/quasar.prod.css +1 -1
- package/dist/quasar.rtl.css +15 -14
- package/dist/quasar.rtl.prod.css +1 -1
- package/dist/quasar.sass +11 -13
- package/dist/quasar.umd.js +279 -209
- package/dist/quasar.umd.prod.js +2 -2
- package/dist/ssr-directives/Morph.js +1 -1
- package/dist/types/api/slider.d.ts +6 -6
- package/dist/types/index.d.ts +20 -8
- package/dist/types/utils/date.d.ts +2 -1
- package/dist/vetur/quasar-attributes.json +5 -1
- package/dist/vetur/quasar-tags.json +2 -1
- package/dist/web-types/web-types.json +66 -57
- package/package.json +1 -1
- package/src/api.extends.json +1 -1
- package/src/components/btn/use-btn.js +5 -2
- package/src/components/btn-toggle/QBtnToggle.js +2 -0
- package/src/components/carousel/QCarouselSlide.json +2 -2
- package/src/components/chat/QChatMessage.json +1 -1
- package/src/components/dialog/QDialog.js +7 -5
- package/src/components/img/QImg.json +2 -2
- package/src/components/linear-progress/QLinearProgress.json +1 -1
- package/src/components/menu/QMenu.js +6 -2
- package/src/components/parallax/QParallax.json +1 -1
- package/src/components/range/QRange.js +67 -89
- package/src/components/rating/QRating.json +3 -3
- package/src/components/resize-observer/QResizeObserver.js +11 -10
- package/src/components/scroll-area/QScrollArea.js +5 -1
- package/src/components/scroll-area/QScrollArea.sass +1 -0
- package/src/components/scroll-observer/QScrollObserver.js +2 -0
- package/src/components/select/QSelect.js +4 -1
- package/src/components/select/QSelect.json +1 -1
- package/src/components/slider/QSlider.js +20 -10
- package/src/components/slider/QSlider.sass +5 -6
- package/src/components/slider/use-slider.js +19 -16
- package/src/components/tabs/QTabs.js +27 -11
- package/src/components/timeline/QTimeline.sass +1 -2
- package/src/components/timeline/QTimelineEntry.json +1 -1
- package/src/components/tooltip/QTooltip.js +1 -2
- package/src/components/video/QVideo.js +4 -1
- package/src/components/video/QVideo.json +12 -1
- package/src/composables/private/use-field.js +13 -15
- package/src/composables/private/use-model-toggle.js +1 -1
- package/src/composables/private/use-portal.js +9 -7
- package/src/composables/private/use-tick.js +7 -14
- package/src/css/variables.sass +4 -6
- package/src/plugins/BottomSheet.json +7 -1
- package/src/plugins/Notify.json +22 -22
- package/src/utils/clone.js +53 -4
- package/src/utils/private/focus-manager.js +8 -10
package/dist/quasar.umd.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* Quasar Framework v2.4.
|
|
2
|
+
* Quasar Framework v2.4.4
|
|
3
3
|
* (c) 2015-present Razvan Stoenescu
|
|
4
4
|
* Released under the MIT License.
|
|
5
5
|
*/
|
|
@@ -1447,7 +1447,7 @@
|
|
|
1447
1447
|
}
|
|
1448
1448
|
|
|
1449
1449
|
var installQuasar = function (parentApp, opts = {}) {
|
|
1450
|
-
const $q = { version: '2.4.
|
|
1450
|
+
const $q = { version: '2.4.4' };
|
|
1451
1451
|
|
|
1452
1452
|
if (globalConfigIsFrozen === false) {
|
|
1453
1453
|
if (opts.config !== void 0) {
|
|
@@ -3048,7 +3048,7 @@
|
|
|
3048
3048
|
xl: 24
|
|
3049
3049
|
};
|
|
3050
3050
|
|
|
3051
|
-
const formTypes = [ 'submit', 'reset' ];
|
|
3051
|
+
const formTypes = [ 'button', 'submit', 'reset' ];
|
|
3052
3052
|
const mediaTypeRE = /[^\s]\/[^\s]/;
|
|
3053
3053
|
|
|
3054
3054
|
const useBtnProps = {
|
|
@@ -3156,7 +3156,10 @@
|
|
|
3156
3156
|
}
|
|
3157
3157
|
|
|
3158
3158
|
if (linkTag.value === 'a') {
|
|
3159
|
-
if (
|
|
3159
|
+
if (props.disable === true) {
|
|
3160
|
+
acc[ 'aria-disabled' ] = 'true';
|
|
3161
|
+
}
|
|
3162
|
+
else if (acc.href === void 0) {
|
|
3160
3163
|
acc.role = 'button';
|
|
3161
3164
|
}
|
|
3162
3165
|
if (hasRouterLink.value !== true && mediaTypeRE.test(props.type) === true) {
|
|
@@ -3896,7 +3899,7 @@
|
|
|
3896
3899
|
'before-show', 'show', 'before-hide', 'hide'
|
|
3897
3900
|
];
|
|
3898
3901
|
|
|
3899
|
-
// handleShow/handleHide -> removeTick(), self (& emit show)
|
|
3902
|
+
// handleShow/handleHide -> removeTick(), self (& emit show)
|
|
3900
3903
|
|
|
3901
3904
|
function useModelToggle ({
|
|
3902
3905
|
showing,
|
|
@@ -4036,17 +4039,19 @@
|
|
|
4036
4039
|
}
|
|
4037
4040
|
|
|
4038
4041
|
let queue = [];
|
|
4039
|
-
|
|
4042
|
+
let waitFlags = [];
|
|
4043
|
+
|
|
4044
|
+
function clearFlag (flag) {
|
|
4045
|
+
waitFlags = waitFlags.filter(entry => entry !== flag);
|
|
4046
|
+
}
|
|
4040
4047
|
|
|
4041
4048
|
function addFocusWaitFlag (flag) {
|
|
4049
|
+
clearFlag(flag);
|
|
4042
4050
|
waitFlags.push(flag);
|
|
4043
4051
|
}
|
|
4044
4052
|
|
|
4045
4053
|
function removeFocusWaitFlag (flag) {
|
|
4046
|
-
|
|
4047
|
-
if (index !== -1) {
|
|
4048
|
-
waitFlags.splice(index, 1);
|
|
4049
|
-
}
|
|
4054
|
+
clearFlag(flag);
|
|
4050
4055
|
|
|
4051
4056
|
if (waitFlags.length === 0 && queue.length > 0) {
|
|
4052
4057
|
// only call last focus handler (can't focus multiple things at once)
|
|
@@ -4061,15 +4066,11 @@
|
|
|
4061
4066
|
}
|
|
4062
4067
|
else {
|
|
4063
4068
|
queue.push(fn);
|
|
4064
|
-
return fn
|
|
4065
4069
|
}
|
|
4066
4070
|
}
|
|
4067
4071
|
|
|
4068
4072
|
function removeFocusFn (fn) {
|
|
4069
|
-
|
|
4070
|
-
if (index !== -1) {
|
|
4071
|
-
queue.splice(index, 1);
|
|
4072
|
-
}
|
|
4073
|
+
queue = queue.filter(entry => entry !== fn);
|
|
4073
4074
|
}
|
|
4074
4075
|
|
|
4075
4076
|
const globalNodes = [];
|
|
@@ -4200,16 +4201,18 @@
|
|
|
4200
4201
|
return
|
|
4201
4202
|
}
|
|
4202
4203
|
|
|
4203
|
-
if (
|
|
4204
|
-
portalEl
|
|
4205
|
-
|
|
4204
|
+
if (portalIsActive.value === false) {
|
|
4205
|
+
if (onGlobalDialog === false && portalEl === null) {
|
|
4206
|
+
portalEl = createGlobalNode();
|
|
4207
|
+
}
|
|
4206
4208
|
|
|
4207
|
-
|
|
4209
|
+
portalIsActive.value = true;
|
|
4208
4210
|
|
|
4209
|
-
|
|
4210
|
-
|
|
4211
|
+
// register portal
|
|
4212
|
+
portalList.push(vm.proxy);
|
|
4211
4213
|
|
|
4212
|
-
|
|
4214
|
+
addFocusWaitFlag(focusObj);
|
|
4215
|
+
}
|
|
4213
4216
|
}
|
|
4214
4217
|
|
|
4215
4218
|
function hidePortal () {
|
|
@@ -4289,8 +4292,6 @@
|
|
|
4289
4292
|
* Usage:
|
|
4290
4293
|
* registerTick(fn)
|
|
4291
4294
|
* registerTick(fn)
|
|
4292
|
-
* ....
|
|
4293
|
-
* prepareTick()
|
|
4294
4295
|
*/
|
|
4295
4296
|
|
|
4296
4297
|
function useTick () {
|
|
@@ -4303,22 +4304,17 @@
|
|
|
4303
4304
|
return {
|
|
4304
4305
|
registerTick (fn) {
|
|
4305
4306
|
tickFn = fn;
|
|
4307
|
+
|
|
4308
|
+
vue.nextTick(() => {
|
|
4309
|
+
if (tickFn === fn) {
|
|
4310
|
+
tickFn();
|
|
4311
|
+
tickFn = void 0;
|
|
4312
|
+
}
|
|
4313
|
+
});
|
|
4306
4314
|
},
|
|
4307
4315
|
|
|
4308
4316
|
removeTick () {
|
|
4309
4317
|
tickFn = void 0;
|
|
4310
|
-
},
|
|
4311
|
-
|
|
4312
|
-
prepareTick () {
|
|
4313
|
-
if (tickFn !== void 0) {
|
|
4314
|
-
const fn = tickFn;
|
|
4315
|
-
vue.nextTick(() => {
|
|
4316
|
-
if (tickFn === fn) {
|
|
4317
|
-
tickFn();
|
|
4318
|
-
tickFn = void 0;
|
|
4319
|
-
}
|
|
4320
|
-
});
|
|
4321
|
-
}
|
|
4322
4318
|
}
|
|
4323
4319
|
}
|
|
4324
4320
|
}
|
|
@@ -5013,7 +5009,7 @@
|
|
|
5013
5009
|
);
|
|
5014
5010
|
|
|
5015
5011
|
const isDark = useDark(props, $q);
|
|
5016
|
-
const { registerTick, removeTick
|
|
5012
|
+
const { registerTick, removeTick } = useTick();
|
|
5017
5013
|
const { registerTimeout, removeTimeout } = useTimeout();
|
|
5018
5014
|
const { transition, transitionStyle } = useTransition(props, showing);
|
|
5019
5015
|
const { localScrollTarget, changeScrollEvent, unconfigureScrollTarget } = useScrollTarget(props, configureScrollTarget);
|
|
@@ -5140,7 +5136,6 @@
|
|
|
5140
5136
|
updatePosition();
|
|
5141
5137
|
props.noFocus !== true && focus();
|
|
5142
5138
|
});
|
|
5143
|
-
prepareTick();
|
|
5144
5139
|
|
|
5145
5140
|
registerTimeout(() => {
|
|
5146
5141
|
// required in order to avoid the "double-tap needed" issue
|
|
@@ -5173,6 +5168,7 @@
|
|
|
5173
5168
|
)
|
|
5174
5169
|
) {
|
|
5175
5170
|
refocusTarget.focus();
|
|
5171
|
+
refocusTarget = null;
|
|
5176
5172
|
}
|
|
5177
5173
|
|
|
5178
5174
|
registerTimeout(() => {
|
|
@@ -5195,6 +5191,10 @@
|
|
|
5195
5191
|
removeClickOutside(clickOutsideProps);
|
|
5196
5192
|
removeEscapeKey(onEscapeKey);
|
|
5197
5193
|
}
|
|
5194
|
+
|
|
5195
|
+
if (hiding !== true) {
|
|
5196
|
+
refocusTarget = null;
|
|
5197
|
+
}
|
|
5198
5198
|
}
|
|
5199
5199
|
|
|
5200
5200
|
function configureScrollTarget () {
|
|
@@ -5598,6 +5598,8 @@
|
|
|
5598
5598
|
key: i,
|
|
5599
5599
|
onClick (e) { set(value, item, e); },
|
|
5600
5600
|
|
|
5601
|
+
'aria-pressed': value === props.modelValue ? 'true' : 'false',
|
|
5602
|
+
|
|
5601
5603
|
...attrs,
|
|
5602
5604
|
...opt,
|
|
5603
5605
|
|
|
@@ -8278,7 +8280,7 @@
|
|
|
8278
8280
|
const positionProp = vue.computed(() => (
|
|
8279
8281
|
props.vertical === true
|
|
8280
8282
|
? (isReversed.value === true ? 'bottom' : 'top')
|
|
8281
|
-
: isReversed.value === true ? 'right' : 'left'
|
|
8283
|
+
: (isReversed.value === true ? 'right' : 'left')
|
|
8282
8284
|
));
|
|
8283
8285
|
|
|
8284
8286
|
const sizeProp = vue.computed(() => (props.vertical === true ? 'height' : 'width'));
|
|
@@ -8288,8 +8290,8 @@
|
|
|
8288
8290
|
const attributes = vue.computed(() => {
|
|
8289
8291
|
const acc = {
|
|
8290
8292
|
role: 'slider',
|
|
8291
|
-
'aria-valuemin':
|
|
8292
|
-
'aria-valuemax':
|
|
8293
|
+
'aria-valuemin': innerMin.value,
|
|
8294
|
+
'aria-valuemax': innerMax.value,
|
|
8293
8295
|
'aria-orientation': orientation.value,
|
|
8294
8296
|
'data-step': props.step
|
|
8295
8297
|
};
|
|
@@ -8480,15 +8482,19 @@
|
|
|
8480
8482
|
})
|
|
8481
8483
|
}
|
|
8482
8484
|
|
|
8485
|
+
const filterFn = ({ value }) => value >= props.min && value <= props.max;
|
|
8486
|
+
|
|
8483
8487
|
if (Array.isArray(def) === true) {
|
|
8484
|
-
return def
|
|
8488
|
+
return def
|
|
8489
|
+
.map(item => (Object(item) === item ? item : { value: item }))
|
|
8490
|
+
.filter(filterFn)
|
|
8485
8491
|
}
|
|
8486
8492
|
|
|
8487
8493
|
return Object.keys(def).map(key => {
|
|
8488
8494
|
const item = def[ key ];
|
|
8489
8495
|
const value = Number(key);
|
|
8490
8496
|
return Object(item) === item ? { ...item, value } : { value, label: item }
|
|
8491
|
-
})
|
|
8497
|
+
}).filter(filterFn)
|
|
8492
8498
|
}
|
|
8493
8499
|
|
|
8494
8500
|
function getMarkerLabelStyle (val) {
|
|
@@ -8543,6 +8549,7 @@
|
|
|
8543
8549
|
emit('pan', 'end');
|
|
8544
8550
|
}
|
|
8545
8551
|
active.value = false;
|
|
8552
|
+
focus.value = false;
|
|
8546
8553
|
}
|
|
8547
8554
|
else if (event.isFirst === true) {
|
|
8548
8555
|
dragging.value = getDragging(event.evt);
|
|
@@ -8603,7 +8610,7 @@
|
|
|
8603
8610
|
|
|
8604
8611
|
function getThumbRenderFn (thumb) {
|
|
8605
8612
|
const focusClass = vue.computed(() => (
|
|
8606
|
-
preventFocus.value === false && focus.value === thumb.focusValue
|
|
8613
|
+
preventFocus.value === false && (focus.value === thumb.focusValue || focus.value === 'both')
|
|
8607
8614
|
? ' q-slider--focus'
|
|
8608
8615
|
: ''
|
|
8609
8616
|
));
|
|
@@ -8618,9 +8625,7 @@
|
|
|
8618
8625
|
width: props.thumbSize,
|
|
8619
8626
|
height: props.thumbSize,
|
|
8620
8627
|
[ positionProp.value ]: `${ 100 * thumb.ratio.value }%`,
|
|
8621
|
-
|
|
8622
|
-
? thumb.nextFocus.value === 'min' ? 2 : void 0
|
|
8623
|
-
: void 0
|
|
8628
|
+
zIndex: focus.value === thumb.focusValue ? 2 : void 0
|
|
8624
8629
|
}));
|
|
8625
8630
|
|
|
8626
8631
|
const pinColor = vue.computed(() => (
|
|
@@ -8676,12 +8681,12 @@
|
|
|
8676
8681
|
return vue.h('div', {
|
|
8677
8682
|
class: classes.value,
|
|
8678
8683
|
style: style.value,
|
|
8679
|
-
...
|
|
8684
|
+
...thumb.getNodeData()
|
|
8680
8685
|
}, thumbContent)
|
|
8681
8686
|
}
|
|
8682
8687
|
}
|
|
8683
8688
|
|
|
8684
|
-
function getContent (selectionBarStyle,
|
|
8689
|
+
function getContent (selectionBarStyle, trackContainerTabindex, trackContainerEvents, injectThumb) {
|
|
8685
8690
|
const trackContent = [];
|
|
8686
8691
|
|
|
8687
8692
|
props.innerTrackColor !== 'transparent' && trackContent.push(
|
|
@@ -8716,15 +8721,14 @@
|
|
|
8716
8721
|
{
|
|
8717
8722
|
key: 'trackC',
|
|
8718
8723
|
class: trackContainerClass.value,
|
|
8719
|
-
tabindex:
|
|
8720
|
-
...
|
|
8724
|
+
tabindex: trackContainerTabindex.value,
|
|
8725
|
+
...trackContainerEvents.value
|
|
8721
8726
|
},
|
|
8722
8727
|
[
|
|
8723
8728
|
vue.h('div', {
|
|
8724
8729
|
class: trackClass.value,
|
|
8725
8730
|
style: trackStyle.value
|
|
8726
|
-
},
|
|
8727
|
-
trackContent)
|
|
8731
|
+
}, trackContent)
|
|
8728
8732
|
],
|
|
8729
8733
|
'slide',
|
|
8730
8734
|
editable.value, () => panDirective.value
|
|
@@ -8771,7 +8775,8 @@
|
|
|
8771
8775
|
innerMax,
|
|
8772
8776
|
innerMaxRatio,
|
|
8773
8777
|
positionProp,
|
|
8774
|
-
sizeProp
|
|
8778
|
+
sizeProp,
|
|
8779
|
+
isReversed
|
|
8775
8780
|
},
|
|
8776
8781
|
|
|
8777
8782
|
methods: {
|
|
@@ -8788,6 +8793,8 @@
|
|
|
8788
8793
|
}
|
|
8789
8794
|
}
|
|
8790
8795
|
|
|
8796
|
+
const getNodeData = () => ({});
|
|
8797
|
+
|
|
8791
8798
|
var QSlider = createComponent({
|
|
8792
8799
|
name: 'QSlider',
|
|
8793
8800
|
|
|
@@ -8815,8 +8822,20 @@
|
|
|
8815
8822
|
|
|
8816
8823
|
const rootRef = vue.ref(null);
|
|
8817
8824
|
const curRatio = vue.ref(0);
|
|
8825
|
+
const model = vue.ref(0);
|
|
8826
|
+
|
|
8827
|
+
function normalizeModel () {
|
|
8828
|
+
model.value = props.modelValue === null
|
|
8829
|
+
? state.innerMin.value
|
|
8830
|
+
: between(props.modelValue, state.innerMin.value, state.innerMax.value);
|
|
8831
|
+
}
|
|
8818
8832
|
|
|
8819
|
-
|
|
8833
|
+
vue.watch(
|
|
8834
|
+
() => `${ props.modelValue }|${ state.innerMin.value }|${ state.innerMax.value }`,
|
|
8835
|
+
normalizeModel
|
|
8836
|
+
);
|
|
8837
|
+
|
|
8838
|
+
normalizeModel();
|
|
8820
8839
|
|
|
8821
8840
|
const modelRatio = vue.computed(() => methods.convertModelToRatio(model.value));
|
|
8822
8841
|
const ratio = vue.computed(() => (state.active.value === true ? curRatio.value : modelRatio.value));
|
|
@@ -8834,6 +8853,7 @@
|
|
|
8834
8853
|
|
|
8835
8854
|
const getThumb = methods.getThumbRenderFn({
|
|
8836
8855
|
focusValue: true,
|
|
8856
|
+
getNodeData,
|
|
8837
8857
|
ratio,
|
|
8838
8858
|
label: vue.computed(() => (
|
|
8839
8859
|
props.labelValue !== void 0
|
|
@@ -8845,7 +8865,7 @@
|
|
|
8845
8865
|
labelTextColor: vue.computed(() => props.labelTextColor)
|
|
8846
8866
|
});
|
|
8847
8867
|
|
|
8848
|
-
const
|
|
8868
|
+
const trackContainerEvents = vue.computed(() => {
|
|
8849
8869
|
if (state.editable.value !== true) {
|
|
8850
8870
|
return {}
|
|
8851
8871
|
}
|
|
@@ -8861,12 +8881,6 @@
|
|
|
8861
8881
|
}
|
|
8862
8882
|
});
|
|
8863
8883
|
|
|
8864
|
-
vue.watch(() => props.modelValue + state.innerMin.value + state.innerMax.value, () => {
|
|
8865
|
-
model.value = props.modelValue === null
|
|
8866
|
-
? state.innerMin.value
|
|
8867
|
-
: between(props.modelValue, state.innerMin.value, state.innerMax.value);
|
|
8868
|
-
});
|
|
8869
|
-
|
|
8870
8884
|
function updateValue (change) {
|
|
8871
8885
|
if (model.value !== props.modelValue) {
|
|
8872
8886
|
emit('update:modelValue', model.value);
|
|
@@ -8901,7 +8915,7 @@
|
|
|
8901
8915
|
|
|
8902
8916
|
const
|
|
8903
8917
|
stepVal = ([ 34, 33 ].includes(evt.keyCode) ? 10 : 1) * state.step.value,
|
|
8904
|
-
offset = [ 34, 37, 40 ].includes(evt.keyCode) ? -
|
|
8918
|
+
offset = ([ 34, 37, 40 ].includes(evt.keyCode) ? -1 : 1) * (state.isReversed.value === true ? -1 : 1) * stepVal;
|
|
8905
8919
|
|
|
8906
8920
|
model.value = between(
|
|
8907
8921
|
parseFloat((model.value + offset).toFixed(state.decimals.value)),
|
|
@@ -8915,7 +8929,8 @@
|
|
|
8915
8929
|
return () => {
|
|
8916
8930
|
const content = methods.getContent(
|
|
8917
8931
|
selectionBarStyle,
|
|
8918
|
-
|
|
8932
|
+
state.tabindex,
|
|
8933
|
+
trackContainerEvents,
|
|
8919
8934
|
node => { node.push(getThumb()); }
|
|
8920
8935
|
);
|
|
8921
8936
|
|
|
@@ -8963,19 +8978,20 @@
|
|
|
8963
8978
|
|
|
8964
8979
|
setup (props, { emit }) {
|
|
8965
8980
|
|
|
8966
|
-
let timer, targetEl, size = { width: -1, height: -1 };
|
|
8981
|
+
let timer = null, targetEl, size = { width: -1, height: -1 };
|
|
8967
8982
|
|
|
8968
|
-
function trigger (
|
|
8969
|
-
if (
|
|
8970
|
-
|
|
8983
|
+
function trigger (immediately) {
|
|
8984
|
+
if (immediately === true || props.debounce === 0 || props.debounce === '0') {
|
|
8985
|
+
emitEvent();
|
|
8971
8986
|
}
|
|
8972
|
-
else if (
|
|
8973
|
-
timer = setTimeout(
|
|
8987
|
+
else if (timer === null) {
|
|
8988
|
+
timer = setTimeout(emitEvent, props.debounce);
|
|
8974
8989
|
}
|
|
8975
8990
|
}
|
|
8976
8991
|
|
|
8977
|
-
function
|
|
8978
|
-
timer
|
|
8992
|
+
function emitEvent () {
|
|
8993
|
+
clearTimeout(timer);
|
|
8994
|
+
timer = null;
|
|
8979
8995
|
|
|
8980
8996
|
if (targetEl) {
|
|
8981
8997
|
const { offsetWidth: width, offsetHeight: height } = targetEl;
|
|
@@ -9002,7 +9018,7 @@
|
|
|
9002
9018
|
if (targetEl) {
|
|
9003
9019
|
observer = new ResizeObserver(trigger);
|
|
9004
9020
|
observer.observe(targetEl);
|
|
9005
|
-
|
|
9021
|
+
emitEvent();
|
|
9006
9022
|
}
|
|
9007
9023
|
});
|
|
9008
9024
|
});
|
|
@@ -9045,7 +9061,7 @@
|
|
|
9045
9061
|
if (targetEl && targetEl.contentDocument) {
|
|
9046
9062
|
curDocView = targetEl.contentDocument.defaultView;
|
|
9047
9063
|
curDocView.addEventListener('resize', trigger, listenOpts.passive);
|
|
9048
|
-
|
|
9064
|
+
emitEvent();
|
|
9049
9065
|
}
|
|
9050
9066
|
}
|
|
9051
9067
|
|
|
@@ -9156,7 +9172,8 @@
|
|
|
9156
9172
|
const vm = vue.getCurrentInstance();
|
|
9157
9173
|
const { proxy: { $q } } = vm;
|
|
9158
9174
|
|
|
9159
|
-
const { registerTick
|
|
9175
|
+
const { registerTick: registerScrollTick } = useTick();
|
|
9176
|
+
const { registerTimeout: registerFocusTimeout, removeTimeout: removeFocusTimeout } = useTimeout();
|
|
9160
9177
|
const { registerTimeout } = useTimeout();
|
|
9161
9178
|
|
|
9162
9179
|
const rootRef = vue.ref(null);
|
|
@@ -9264,7 +9281,7 @@
|
|
|
9264
9281
|
}
|
|
9265
9282
|
|
|
9266
9283
|
function recalculateScroll () {
|
|
9267
|
-
|
|
9284
|
+
registerScrollTick(() => {
|
|
9268
9285
|
if (vm.isDeactivated !== true && vm.isUnmounted !== true) {
|
|
9269
9286
|
updateContainer({
|
|
9270
9287
|
width: rootRef.value.offsetWidth,
|
|
@@ -9272,8 +9289,6 @@
|
|
|
9272
9289
|
});
|
|
9273
9290
|
}
|
|
9274
9291
|
});
|
|
9275
|
-
|
|
9276
|
-
prepareTick();
|
|
9277
9292
|
}
|
|
9278
9293
|
|
|
9279
9294
|
function updateContainer (domSize) {
|
|
@@ -9432,11 +9447,8 @@
|
|
|
9432
9447
|
return true
|
|
9433
9448
|
}
|
|
9434
9449
|
|
|
9435
|
-
const dirPrev = (props.vertical === true
|
|
9436
|
-
|
|
9437
|
-
|
|
9438
|
-
const dirNext = (props.vertical === true && keyCode === 40 /* ArrowDown */)
|
|
9439
|
-
|| (props.vertical !== true && keyCode === 39 /* ArrowRight */);
|
|
9450
|
+
const dirPrev = keyCode === (props.vertical === true ? 38 /* ArrowUp */ : 37 /* ArrowLeft */);
|
|
9451
|
+
const dirNext = keyCode === (props.vertical === true ? 40 /* ArrowDown */ : 39 /* ArrowRight */);
|
|
9440
9452
|
|
|
9441
9453
|
const dir = dirPrev === true ? -1 : (dirNext === true ? 1 : void 0);
|
|
9442
9454
|
|
|
@@ -9570,8 +9582,28 @@
|
|
|
9570
9582
|
}
|
|
9571
9583
|
}
|
|
9572
9584
|
|
|
9573
|
-
function onFocusin () {
|
|
9574
|
-
|
|
9585
|
+
function onFocusin (e) {
|
|
9586
|
+
removeFocusTimeout();
|
|
9587
|
+
|
|
9588
|
+
if (
|
|
9589
|
+
hasFocus.value !== true
|
|
9590
|
+
&& rootRef.value !== null
|
|
9591
|
+
&& e.target
|
|
9592
|
+
&& typeof e.target.closest === 'function'
|
|
9593
|
+
) {
|
|
9594
|
+
const tab = e.target.closest('.q-tab');
|
|
9595
|
+
|
|
9596
|
+
// if the target is contained by a QTab/QRouteTab
|
|
9597
|
+
// (it might be other elements focused, like additional QBtn)
|
|
9598
|
+
if (tab && rootRef.value.contains(tab) === true) {
|
|
9599
|
+
hasFocus.value = true;
|
|
9600
|
+
}
|
|
9601
|
+
}
|
|
9602
|
+
}
|
|
9603
|
+
|
|
9604
|
+
function onFocusout () {
|
|
9605
|
+
registerFocusTimeout(() => { hasFocus.value = false; }, 30);
|
|
9606
|
+
}
|
|
9575
9607
|
|
|
9576
9608
|
function verifyRouteModel () {
|
|
9577
9609
|
if ($tabs.avoidRouteWatcher !== true) {
|
|
@@ -12381,7 +12413,7 @@
|
|
|
12381
12413
|
)
|
|
12382
12414
|
}
|
|
12383
12415
|
|
|
12384
|
-
function clone
|
|
12416
|
+
function clone (date) {
|
|
12385
12417
|
return isDate(date) === true
|
|
12386
12418
|
? new Date(date.getTime())
|
|
12387
12419
|
: date
|
|
@@ -12408,7 +12440,7 @@
|
|
|
12408
12440
|
isSameDate,
|
|
12409
12441
|
daysInMonth,
|
|
12410
12442
|
formatDate,
|
|
12411
|
-
clone
|
|
12443
|
+
clone
|
|
12412
12444
|
};
|
|
12413
12445
|
|
|
12414
12446
|
const yearsInterval = 20;
|
|
@@ -14170,7 +14202,7 @@
|
|
|
14170
14202
|
|
|
14171
14203
|
const { preventBodyScroll } = usePreventScroll();
|
|
14172
14204
|
const { registerTimeout, removeTimeout } = useTimeout();
|
|
14173
|
-
const { registerTick, removeTick
|
|
14205
|
+
const { registerTick, removeTick } = useTick();
|
|
14174
14206
|
|
|
14175
14207
|
const { showPortal, hidePortal, portalIsActive, renderPortal } = usePortal(
|
|
14176
14208
|
vm, innerRef, renderPortalContent, /* pls do check if on a global dialog */ true
|
|
@@ -14269,7 +14301,6 @@
|
|
|
14269
14301
|
if (props.noFocus !== true) {
|
|
14270
14302
|
document.activeElement !== null && document.activeElement.blur();
|
|
14271
14303
|
registerTick(focus);
|
|
14272
|
-
prepareTick();
|
|
14273
14304
|
}
|
|
14274
14305
|
|
|
14275
14306
|
registerTimeout(() => {
|
|
@@ -14315,6 +14346,7 @@
|
|
|
14315
14346
|
|
|
14316
14347
|
if (refocusTarget !== null) {
|
|
14317
14348
|
refocusTarget.focus();
|
|
14349
|
+
refocusTarget = null;
|
|
14318
14350
|
}
|
|
14319
14351
|
|
|
14320
14352
|
registerTimeout(() => {
|
|
@@ -14382,6 +14414,10 @@
|
|
|
14382
14414
|
removeEscapeKey(onEscapeKey);
|
|
14383
14415
|
}
|
|
14384
14416
|
}
|
|
14417
|
+
|
|
14418
|
+
if (hiding !== true) {
|
|
14419
|
+
refocusTarget = null;
|
|
14420
|
+
}
|
|
14385
14421
|
}
|
|
14386
14422
|
|
|
14387
14423
|
function updateMaximized (active) {
|
|
@@ -14440,9 +14476,7 @@
|
|
|
14440
14476
|
}
|
|
14441
14477
|
});
|
|
14442
14478
|
|
|
14443
|
-
vue.onBeforeUnmount(
|
|
14444
|
-
cleanup();
|
|
14445
|
-
});
|
|
14479
|
+
vue.onBeforeUnmount(cleanup);
|
|
14446
14480
|
|
|
14447
14481
|
function renderPortalContent () {
|
|
14448
14482
|
return vue.h('div', {
|
|
@@ -15607,7 +15641,7 @@
|
|
|
15607
15641
|
const selfOrigin = vue.computed(() => parsePosition(props.self, $q.lang.rtl));
|
|
15608
15642
|
const hideOnRouteChange = vue.computed(() => props.persistent !== true);
|
|
15609
15643
|
|
|
15610
|
-
const { registerTick, removeTick
|
|
15644
|
+
const { registerTick, removeTick } = useTick();
|
|
15611
15645
|
const { registerTimeout, removeTimeout } = useTimeout();
|
|
15612
15646
|
const { transition, transitionStyle } = useTransition(props, showing);
|
|
15613
15647
|
const { localScrollTarget, changeScrollEvent, unconfigureScrollTarget } = useScrollTarget(props, configureScrollTarget);
|
|
@@ -15673,7 +15707,6 @@
|
|
|
15673
15707
|
updatePosition();
|
|
15674
15708
|
configureScrollTarget();
|
|
15675
15709
|
});
|
|
15676
|
-
prepareTick();
|
|
15677
15710
|
|
|
15678
15711
|
if (unwatchPosition === void 0) {
|
|
15679
15712
|
unwatchPosition = vue.watch(
|
|
@@ -17892,11 +17925,60 @@
|
|
|
17892
17925
|
}
|
|
17893
17926
|
}
|
|
17894
17927
|
|
|
17895
|
-
|
|
17896
|
-
|
|
17897
|
-
|
|
17898
|
-
|
|
17928
|
+
// adapted from https://stackoverflow.com/a/40294058
|
|
17929
|
+
|
|
17930
|
+
function cloneDeep (data, hash = new WeakMap()) {
|
|
17931
|
+
if (Object(data) !== data) return data
|
|
17932
|
+
if (hash.has(data)) return hash.get(data)
|
|
17933
|
+
|
|
17934
|
+
const result = data instanceof Date
|
|
17935
|
+
? new Date(data)
|
|
17936
|
+
: (data instanceof RegExp
|
|
17937
|
+
? new RegExp(data.source, data.flags)
|
|
17938
|
+
: (data instanceof Set
|
|
17939
|
+
? new Set()
|
|
17940
|
+
: (data instanceof Map
|
|
17941
|
+
? new Map()
|
|
17942
|
+
: (typeof data.constructor !== 'function'
|
|
17943
|
+
? Object.create(null)
|
|
17944
|
+
: (data.prototype !== void 0 && typeof data.prototype.constructor === 'function'
|
|
17945
|
+
? data
|
|
17946
|
+
: new data.constructor()
|
|
17947
|
+
)
|
|
17948
|
+
)
|
|
17949
|
+
)
|
|
17950
|
+
)
|
|
17951
|
+
);
|
|
17952
|
+
|
|
17953
|
+
if (typeof data.constructor === 'function' && typeof data.valueOf === 'function') {
|
|
17954
|
+
const val = data.valueOf();
|
|
17955
|
+
|
|
17956
|
+
if (Object(val) !== val) {
|
|
17957
|
+
const result = new data.constructor(val);
|
|
17958
|
+
|
|
17959
|
+
hash.set(data, result);
|
|
17960
|
+
|
|
17961
|
+
return result
|
|
17962
|
+
}
|
|
17963
|
+
}
|
|
17964
|
+
|
|
17965
|
+
hash.set(data, result);
|
|
17966
|
+
|
|
17967
|
+
if (data instanceof Set) {
|
|
17968
|
+
data.forEach(val => {
|
|
17969
|
+
result.add(cloneDeep(val, hash));
|
|
17970
|
+
});
|
|
17971
|
+
}
|
|
17972
|
+
else if (data instanceof Map) {
|
|
17973
|
+
data.forEach((val, key) => {
|
|
17974
|
+
result.set(key, cloneDeep(val, hash));
|
|
17975
|
+
});
|
|
17899
17976
|
}
|
|
17977
|
+
|
|
17978
|
+
return Object.assign(
|
|
17979
|
+
result,
|
|
17980
|
+
...Object.keys(data).map(key => ({ [ key ]: cloneDeep(data[ key ], hash) }))
|
|
17981
|
+
)
|
|
17900
17982
|
}
|
|
17901
17983
|
|
|
17902
17984
|
function fallback (text) {
|
|
@@ -20025,7 +20107,7 @@
|
|
|
20025
20107
|
|
|
20026
20108
|
var utils = /*#__PURE__*/Object.freeze({
|
|
20027
20109
|
__proto__: null,
|
|
20028
|
-
clone:
|
|
20110
|
+
clone: cloneDeep,
|
|
20029
20111
|
colors: colors,
|
|
20030
20112
|
copyToClipboard: copyToClipboard,
|
|
20031
20113
|
createMetaMixin: createMetaMixin,
|
|
@@ -20513,26 +20595,24 @@
|
|
|
20513
20595
|
state.targetUid.value = getTargetUid(val);
|
|
20514
20596
|
});
|
|
20515
20597
|
|
|
20516
|
-
|
|
20517
|
-
|
|
20518
|
-
|
|
20519
|
-
focusFn !== void 0 && removeFocusFn(focusFn);
|
|
20520
|
-
focusFn = addFocusFn(() => {
|
|
20521
|
-
focusFn = void 0;
|
|
20522
|
-
const el = document.activeElement;
|
|
20523
|
-
let target = state.targetRef !== void 0 && state.targetRef.value;
|
|
20598
|
+
function focusHandler () {
|
|
20599
|
+
const el = document.activeElement;
|
|
20600
|
+
let target = state.targetRef !== void 0 && state.targetRef.value;
|
|
20524
20601
|
|
|
20525
|
-
|
|
20526
|
-
|
|
20527
|
-
|
|
20528
|
-
|
|
20529
|
-
}
|
|
20602
|
+
if (target && (el === null || el.id !== state.targetUid.value)) {
|
|
20603
|
+
target.hasAttribute('tabindex') === true || (target = target.querySelector('[tabindex]'));
|
|
20604
|
+
if (target && target !== el) {
|
|
20605
|
+
target.focus();
|
|
20530
20606
|
}
|
|
20531
|
-
}
|
|
20607
|
+
}
|
|
20608
|
+
}
|
|
20609
|
+
|
|
20610
|
+
function focus () {
|
|
20611
|
+
addFocusFn(focusHandler);
|
|
20532
20612
|
}
|
|
20533
20613
|
|
|
20534
20614
|
function blur () {
|
|
20535
|
-
|
|
20615
|
+
removeFocusFn(focusHandler);
|
|
20536
20616
|
const el = document.activeElement;
|
|
20537
20617
|
if (el !== null && state.rootRef.value.contains(el)) {
|
|
20538
20618
|
el.blur();
|
|
@@ -23814,6 +23894,8 @@
|
|
|
23814
23894
|
});
|
|
23815
23895
|
|
|
23816
23896
|
function emitEvent () {
|
|
23897
|
+
clearTimeout(timer);
|
|
23898
|
+
cancelAnimationFrame(timer);
|
|
23817
23899
|
timer = null;
|
|
23818
23900
|
|
|
23819
23901
|
const top = Math.max(0, getVerticalScrollPosition(localScrollTarget));
|
|
@@ -25464,8 +25546,8 @@
|
|
|
25464
25546
|
|
|
25465
25547
|
function onBeforeShow () {
|
|
25466
25548
|
validated = false;
|
|
25467
|
-
initialValue.value =
|
|
25468
|
-
currentModel.value =
|
|
25549
|
+
initialValue.value = cloneDeep(props.modelValue);
|
|
25550
|
+
currentModel.value = cloneDeep(props.modelValue);
|
|
25469
25551
|
emit('before-show');
|
|
25470
25552
|
}
|
|
25471
25553
|
|
|
@@ -25971,13 +26053,8 @@
|
|
|
25971
26053
|
|
|
25972
26054
|
modelValue: {
|
|
25973
26055
|
type: Object,
|
|
25974
|
-
default: () => ({
|
|
25975
|
-
|
|
25976
|
-
max: null
|
|
25977
|
-
}),
|
|
25978
|
-
validator (val) {
|
|
25979
|
-
return 'min' in val && 'max' in val
|
|
25980
|
-
}
|
|
26056
|
+
default: () => ({ min: null, max: null }),
|
|
26057
|
+
validator: v => 'min' in v && 'max' in v
|
|
25981
26058
|
},
|
|
25982
26059
|
|
|
25983
26060
|
dragRange: Boolean,
|
|
@@ -26012,13 +26089,24 @@
|
|
|
26012
26089
|
const rootRef = vue.ref(null);
|
|
26013
26090
|
const curMinRatio = vue.ref(0);
|
|
26014
26091
|
const curMaxRatio = vue.ref(0);
|
|
26092
|
+
const model = vue.ref({ min: 0, max: 0 });
|
|
26015
26093
|
|
|
26016
|
-
|
|
26017
|
-
min
|
|
26018
|
-
|
|
26019
|
-
|
|
26094
|
+
function normalizeModel () {
|
|
26095
|
+
model.value.min = props.modelValue.min === null
|
|
26096
|
+
? state.innerMin.value
|
|
26097
|
+
: between(props.modelValue.min, state.innerMin.value, state.innerMax.value);
|
|
26020
26098
|
|
|
26021
|
-
|
|
26099
|
+
model.value.max = props.modelValue.max === null
|
|
26100
|
+
? state.innerMax.value
|
|
26101
|
+
: between(props.modelValue.max, state.innerMin.value, state.innerMax.value);
|
|
26102
|
+
}
|
|
26103
|
+
|
|
26104
|
+
vue.watch(
|
|
26105
|
+
() => `${ props.modelValue.min }|${ props.modelValue.max }|${ state.innerMin.value }|${ state.innerMax.value }`,
|
|
26106
|
+
normalizeModel
|
|
26107
|
+
);
|
|
26108
|
+
|
|
26109
|
+
normalizeModel();
|
|
26022
26110
|
|
|
26023
26111
|
const modelMinRatio = vue.computed(() => methods.convertModelToRatio(model.value.min));
|
|
26024
26112
|
const modelMaxRatio = vue.computed(() => methods.convertModelToRatio(model.value.max));
|
|
@@ -26041,7 +26129,7 @@
|
|
|
26041
26129
|
return acc
|
|
26042
26130
|
});
|
|
26043
26131
|
|
|
26044
|
-
const
|
|
26132
|
+
const trackContainerEvents = vue.computed(() => {
|
|
26045
26133
|
if (state.editable.value !== true) {
|
|
26046
26134
|
return {}
|
|
26047
26135
|
}
|
|
@@ -26052,34 +26140,45 @@
|
|
|
26052
26140
|
|
|
26053
26141
|
const evt = { onMousedown: methods.onActivate };
|
|
26054
26142
|
|
|
26055
|
-
props.
|
|
26056
|
-
|
|
26057
|
-
|
|
26058
|
-
|
|
26059
|
-
|
|
26060
|
-
|
|
26143
|
+
if (props.dragRange === true || props.dragOnlyRange === true) {
|
|
26144
|
+
Object.assign(evt, {
|
|
26145
|
+
onFocus: () => { state.focus.value = 'both'; },
|
|
26146
|
+
onBlur: methods.onBlur,
|
|
26147
|
+
onKeydown,
|
|
26148
|
+
onKeyup: methods.onKeyup
|
|
26149
|
+
});
|
|
26150
|
+
}
|
|
26061
26151
|
|
|
26062
26152
|
return evt
|
|
26063
26153
|
});
|
|
26064
26154
|
|
|
26065
|
-
|
|
26066
|
-
|
|
26067
|
-
state.editable.value === true && $q.platform.is.mobile !== true && props.dragOnlyRange !== true
|
|
26155
|
+
function getEvents (side) {
|
|
26156
|
+
return $q.platform.is.mobile !== true && state.editable.value === true && props.dragOnlyRange !== true
|
|
26068
26157
|
? {
|
|
26069
|
-
onFocus: () => {
|
|
26158
|
+
onFocus: () => { state.focus.value = side; },
|
|
26070
26159
|
onBlur: methods.onBlur,
|
|
26071
26160
|
onKeydown,
|
|
26072
26161
|
onKeyup: methods.onKeyup
|
|
26073
26162
|
}
|
|
26074
26163
|
: {}
|
|
26164
|
+
}
|
|
26165
|
+
|
|
26166
|
+
const thumbTabindex = vue.computed(() => (props.dragOnlyRange !== true ? state.tabindex.value : null));
|
|
26167
|
+
const trackContainerTabindex = vue.computed(() => (
|
|
26168
|
+
$q.platform.is.mobile !== true && (props.dragRange || props.dragOnlyRange === true)
|
|
26169
|
+
? state.tabindex.value
|
|
26170
|
+
: null
|
|
26075
26171
|
));
|
|
26172
|
+
|
|
26173
|
+
const minThumbRef = vue.ref(null);
|
|
26174
|
+
const minEvents = vue.computed(() => getEvents('min'));
|
|
26076
26175
|
const getMinThumb = methods.getThumbRenderFn({
|
|
26077
26176
|
focusValue: 'min',
|
|
26078
|
-
nextFocus,
|
|
26079
26177
|
getNodeData: () => ({
|
|
26080
26178
|
ref: minThumbRef,
|
|
26179
|
+
key: 'tmin',
|
|
26081
26180
|
...minEvents.value,
|
|
26082
|
-
tabindex:
|
|
26181
|
+
tabindex: thumbTabindex.value
|
|
26083
26182
|
}),
|
|
26084
26183
|
ratio: ratioMin,
|
|
26085
26184
|
label: vue.computed(() => (
|
|
@@ -26092,22 +26191,13 @@
|
|
|
26092
26191
|
labelTextColor: vue.computed(() => props.leftLabelTextColor || props.labelTextColor)
|
|
26093
26192
|
});
|
|
26094
26193
|
|
|
26095
|
-
const maxEvents = vue.computed(() => (
|
|
26096
|
-
state.editable.value === true && $q.platform.is.mobile !== true && props.dragOnlyRange !== true
|
|
26097
|
-
? {
|
|
26098
|
-
onFocus: () => { onFocus('max'); },
|
|
26099
|
-
onBlur: methods.onBlur,
|
|
26100
|
-
onKeydown,
|
|
26101
|
-
onKeyup: methods.onKeyup
|
|
26102
|
-
}
|
|
26103
|
-
: {}
|
|
26104
|
-
));
|
|
26194
|
+
const maxEvents = vue.computed(() => getEvents('max'));
|
|
26105
26195
|
const getMaxThumb = methods.getThumbRenderFn({
|
|
26106
26196
|
focusValue: 'max',
|
|
26107
|
-
nextFocus,
|
|
26108
26197
|
getNodeData: () => ({
|
|
26109
26198
|
...maxEvents.value,
|
|
26110
|
-
|
|
26199
|
+
key: 'tmax',
|
|
26200
|
+
tabindex: thumbTabindex.value
|
|
26111
26201
|
}),
|
|
26112
26202
|
ratio: ratioMax,
|
|
26113
26203
|
label: vue.computed(() => (
|
|
@@ -26120,19 +26210,6 @@
|
|
|
26120
26210
|
labelTextColor: vue.computed(() => props.rightLabelTextColor || props.labelTextColor)
|
|
26121
26211
|
});
|
|
26122
26212
|
|
|
26123
|
-
vue.watch(
|
|
26124
|
-
() => props.modelValue.min + props.modelValue.max + state.innerMin.value + state.innerMax.value,
|
|
26125
|
-
() => {
|
|
26126
|
-
model.value.min = props.modelValue.min === null
|
|
26127
|
-
? state.innerMin.value
|
|
26128
|
-
: between(props.modelValue.min, state.innerMin.value, state.innerMax.value);
|
|
26129
|
-
|
|
26130
|
-
model.value.max = props.modelValue.max === null
|
|
26131
|
-
? state.innerMax.value
|
|
26132
|
-
: between(props.modelValue.max, state.innerMin.value, state.innerMax.value);
|
|
26133
|
-
}
|
|
26134
|
-
);
|
|
26135
|
-
|
|
26136
26213
|
function updateValue (change) {
|
|
26137
26214
|
if (model.value.min !== props.modelValue.min || model.value.max !== props.modelValue.max) {
|
|
26138
26215
|
emit('update:modelValue', { ...model.value });
|
|
@@ -26161,15 +26238,14 @@
|
|
|
26161
26238
|
ratioMax: modelMaxRatio.value
|
|
26162
26239
|
};
|
|
26163
26240
|
|
|
26164
|
-
let type;
|
|
26165
26241
|
const ratio = methods.getDraggingRatio(event, dragging);
|
|
26166
26242
|
|
|
26167
26243
|
if (props.dragOnlyRange !== true && ratio < dragging.ratioMin + sensitivity) {
|
|
26168
|
-
type = dragType.MIN;
|
|
26244
|
+
dragging.type = dragType.MIN;
|
|
26169
26245
|
}
|
|
26170
26246
|
else if (props.dragOnlyRange === true || ratio < dragging.ratioMax - sensitivity) {
|
|
26171
26247
|
if (props.dragRange === true || props.dragOnlyRange === true) {
|
|
26172
|
-
type = dragType.RANGE;
|
|
26248
|
+
dragging.type = dragType.RANGE;
|
|
26173
26249
|
Object.assign(dragging, {
|
|
26174
26250
|
offsetRatio: ratio,
|
|
26175
26251
|
offsetModel: methods.convertRatioToModel(ratio),
|
|
@@ -26178,18 +26254,15 @@
|
|
|
26178
26254
|
});
|
|
26179
26255
|
}
|
|
26180
26256
|
else {
|
|
26181
|
-
type = dragging.ratioMax - ratio < ratio - dragging.ratioMin
|
|
26257
|
+
dragging.type = dragging.ratioMax - ratio < ratio - dragging.ratioMin
|
|
26182
26258
|
? dragType.MAX
|
|
26183
26259
|
: dragType.MIN;
|
|
26184
26260
|
}
|
|
26185
26261
|
}
|
|
26186
26262
|
else {
|
|
26187
|
-
type = dragType.MAX;
|
|
26263
|
+
dragging.type = dragType.MAX;
|
|
26188
26264
|
}
|
|
26189
26265
|
|
|
26190
|
-
dragging.type = type;
|
|
26191
|
-
nextFocus.value = null;
|
|
26192
|
-
|
|
26193
26266
|
return dragging
|
|
26194
26267
|
}
|
|
26195
26268
|
|
|
@@ -26207,7 +26280,7 @@
|
|
|
26207
26280
|
min: localModel,
|
|
26208
26281
|
max: dragging.valueMax
|
|
26209
26282
|
};
|
|
26210
|
-
|
|
26283
|
+
state.focus.value = 'min';
|
|
26211
26284
|
}
|
|
26212
26285
|
else {
|
|
26213
26286
|
pos = {
|
|
@@ -26216,7 +26289,7 @@
|
|
|
26216
26289
|
min: dragging.valueMax,
|
|
26217
26290
|
max: localModel
|
|
26218
26291
|
};
|
|
26219
|
-
|
|
26292
|
+
state.focus.value = 'max';
|
|
26220
26293
|
}
|
|
26221
26294
|
break
|
|
26222
26295
|
|
|
@@ -26228,7 +26301,7 @@
|
|
|
26228
26301
|
min: dragging.valueMin,
|
|
26229
26302
|
max: localModel
|
|
26230
26303
|
};
|
|
26231
|
-
|
|
26304
|
+
state.focus.value = 'max';
|
|
26232
26305
|
}
|
|
26233
26306
|
else {
|
|
26234
26307
|
pos = {
|
|
@@ -26237,7 +26310,7 @@
|
|
|
26237
26310
|
min: localModel,
|
|
26238
26311
|
max: dragging.valueMin
|
|
26239
26312
|
};
|
|
26240
|
-
|
|
26313
|
+
state.focus.value = 'min';
|
|
26241
26314
|
}
|
|
26242
26315
|
break
|
|
26243
26316
|
|
|
@@ -26254,34 +26327,26 @@
|
|
|
26254
26327
|
min: parseFloat(min.toFixed(state.decimals.value)),
|
|
26255
26328
|
max: parseFloat((min + dragging.rangeValue).toFixed(state.decimals.value))
|
|
26256
26329
|
};
|
|
26330
|
+
|
|
26331
|
+
state.focus.value = 'both';
|
|
26257
26332
|
break
|
|
26258
26333
|
}
|
|
26259
26334
|
|
|
26260
|
-
model.value = {
|
|
26261
|
-
min: pos.min,
|
|
26262
|
-
max: pos.max
|
|
26263
|
-
};
|
|
26264
|
-
|
|
26265
26335
|
// If either of the values to be emitted are null, set them to the defaults the user has entered.
|
|
26266
|
-
|
|
26267
|
-
|
|
26268
|
-
|
|
26269
|
-
}
|
|
26336
|
+
model.value = model.value.min === null || model.value.max === null
|
|
26337
|
+
? { min: pos.min || props.min, max: pos.max || props.max }
|
|
26338
|
+
: { min: pos.min, max: pos.max };
|
|
26270
26339
|
|
|
26271
26340
|
if (props.snap !== true || props.step === 0) {
|
|
26272
26341
|
curMinRatio.value = pos.minR;
|
|
26273
26342
|
curMaxRatio.value = pos.maxR;
|
|
26274
26343
|
}
|
|
26275
26344
|
else {
|
|
26276
|
-
curMinRatio.value =
|
|
26277
|
-
curMaxRatio.value =
|
|
26345
|
+
curMinRatio.value = methods.convertModelToRatio(model.value.min);
|
|
26346
|
+
curMaxRatio.value = methods.convertModelToRatio(model.value.max);
|
|
26278
26347
|
}
|
|
26279
26348
|
}
|
|
26280
26349
|
|
|
26281
|
-
function onFocus (which) {
|
|
26282
|
-
state.focus.value = which;
|
|
26283
|
-
}
|
|
26284
|
-
|
|
26285
26350
|
function onKeydown (evt) {
|
|
26286
26351
|
if (!keyCodes$2.includes(evt.keyCode)) {
|
|
26287
26352
|
return
|
|
@@ -26290,14 +26355,11 @@
|
|
|
26290
26355
|
stopAndPrevent(evt);
|
|
26291
26356
|
|
|
26292
26357
|
const
|
|
26293
|
-
stepVal = ([ 34, 33 ].includes(evt.keyCode) ? 10 : 1) *
|
|
26294
|
-
offset = [ 34, 37, 40 ].includes(evt.keyCode) ? -
|
|
26295
|
-
|
|
26296
|
-
if (props.dragOnlyRange) {
|
|
26297
|
-
const interval = props.dragOnlyRange
|
|
26298
|
-
? model.value.max - model.value.min
|
|
26299
|
-
: 0;
|
|
26358
|
+
stepVal = ([ 34, 33 ].includes(evt.keyCode) ? 10 : 1) * state.step.value,
|
|
26359
|
+
offset = ([ 34, 37, 40 ].includes(evt.keyCode) ? -1 : 1) * (state.isReversed.value === true ? -1 : 1) * stepVal;
|
|
26300
26360
|
|
|
26361
|
+
if (state.focus.value === 'both') {
|
|
26362
|
+
const interval = model.value.max - model.value.min;
|
|
26301
26363
|
const min = between(
|
|
26302
26364
|
parseFloat((model.value.min + offset).toFixed(state.decimals.value)),
|
|
26303
26365
|
state.innerMin.value,
|
|
@@ -26331,7 +26393,8 @@
|
|
|
26331
26393
|
return () => {
|
|
26332
26394
|
const content = methods.getContent(
|
|
26333
26395
|
selectionBarStyle,
|
|
26334
|
-
|
|
26396
|
+
trackContainerTabindex,
|
|
26397
|
+
trackContainerEvents,
|
|
26335
26398
|
node => {
|
|
26336
26399
|
node.push(
|
|
26337
26400
|
getMinThumb(),
|
|
@@ -26348,10 +26411,7 @@
|
|
|
26348
26411
|
: ''
|
|
26349
26412
|
),
|
|
26350
26413
|
...state.attributes.value,
|
|
26351
|
-
'aria-valuenow': props.modelValue.min + '|' + props.modelValue.max
|
|
26352
|
-
tabindex: props.dragOnlyRange === true && $q.platform.is.mobile !== true
|
|
26353
|
-
? state.tabindex.value
|
|
26354
|
-
: null
|
|
26414
|
+
'aria-valuenow': props.modelValue.min + '|' + props.modelValue.max
|
|
26355
26415
|
}, content)
|
|
26356
26416
|
}
|
|
26357
26417
|
}
|
|
@@ -26987,6 +27047,7 @@
|
|
|
26987
27047
|
style: mainStyle.value
|
|
26988
27048
|
}, hMergeSlot(slots.default, [
|
|
26989
27049
|
vue.h(QResizeObserver, {
|
|
27050
|
+
debounce: 0,
|
|
26990
27051
|
onResize: updateScrollSize
|
|
26991
27052
|
})
|
|
26992
27053
|
])),
|
|
@@ -26997,7 +27058,10 @@
|
|
|
26997
27058
|
})
|
|
26998
27059
|
]),
|
|
26999
27060
|
|
|
27000
|
-
vue.h(QResizeObserver, {
|
|
27061
|
+
vue.h(QResizeObserver, {
|
|
27062
|
+
debounce: 0,
|
|
27063
|
+
onResize: updateContainer
|
|
27064
|
+
}),
|
|
27001
27065
|
|
|
27002
27066
|
vue.h('div', {
|
|
27003
27067
|
class: scroll.vertical.barClass.value,
|
|
@@ -28252,7 +28316,10 @@
|
|
|
28252
28316
|
|
|
28253
28317
|
targetRef.value !== null && targetRef.value.focus();
|
|
28254
28318
|
|
|
28255
|
-
if (
|
|
28319
|
+
if (
|
|
28320
|
+
innerValue.value.length === 0
|
|
28321
|
+
|| isDeepEqual(getOptionValue.value(innerValue.value[ 0 ]), optValue) !== true
|
|
28322
|
+
) {
|
|
28256
28323
|
emit('update:modelValue', props.emitValue === true ? optValue : opt);
|
|
28257
28324
|
}
|
|
28258
28325
|
return
|
|
@@ -36107,7 +36174,9 @@
|
|
|
36107
36174
|
src: {
|
|
36108
36175
|
type: String,
|
|
36109
36176
|
required: true
|
|
36110
|
-
}
|
|
36177
|
+
},
|
|
36178
|
+
|
|
36179
|
+
title: String
|
|
36111
36180
|
},
|
|
36112
36181
|
|
|
36113
36182
|
setup (props) {
|
|
@@ -36124,6 +36193,7 @@
|
|
|
36124
36193
|
}, [
|
|
36125
36194
|
vue.h('iframe', {
|
|
36126
36195
|
src: props.src,
|
|
36196
|
+
title: props.title,
|
|
36127
36197
|
frameborder: '0',
|
|
36128
36198
|
allowfullscreen: true
|
|
36129
36199
|
})
|
|
@@ -39124,7 +39194,7 @@
|
|
|
39124
39194
|
});
|
|
39125
39195
|
|
|
39126
39196
|
var index_umd = {
|
|
39127
|
-
version: '2.4.
|
|
39197
|
+
version: '2.4.4',
|
|
39128
39198
|
install (app, opts) {
|
|
39129
39199
|
installQuasar(app, {
|
|
39130
39200
|
components,
|