quasar 2.14.0 → 2.14.2
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/Notify.json +2 -2
- package/dist/api/QTime.json +8 -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/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 +2 -2
- package/dist/icon-set/svg-eva-icons.umd.prod.js +1 -1
- package/dist/icon-set/svg-fontawesome-v5.umd.prod.js +1 -1
- package/dist/icon-set/svg-fontawesome-v6.umd.prod.js +1 -1
- package/dist/icon-set/svg-ionicons-v4.umd.prod.js +1 -1
- package/dist/icon-set/svg-ionicons-v5.umd.prod.js +1 -1
- package/dist/icon-set/svg-ionicons-v6.umd.prod.js +1 -1
- package/dist/icon-set/svg-line-awesome.umd.prod.js +1 -1
- package/dist/icon-set/svg-material-icons-outlined.umd.prod.js +1 -1
- package/dist/icon-set/svg-material-icons-round.umd.prod.js +1 -1
- package/dist/icon-set/svg-material-icons-sharp.umd.prod.js +1 -1
- package/dist/icon-set/svg-material-icons.umd.prod.js +1 -1
- package/dist/icon-set/svg-material-symbols-outlined.umd.prod.js +1 -1
- package/dist/icon-set/svg-material-symbols-rounded.umd.prod.js +1 -1
- package/dist/icon-set/svg-material-symbols-sharp.umd.prod.js +1 -1
- package/dist/icon-set/svg-mdi-v6.umd.prod.js +1 -1
- package/dist/icon-set/svg-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/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/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.umd.prod.js +2 -2
- 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/sr-CYR.umd.prod.js +1 -1
- package/dist/lang/sr.umd.prod.js +1 -1
- package/dist/lang/sv.umd.prod.js +1 -1
- package/dist/lang/ta.umd.prod.js +1 -1
- package/dist/lang/th.umd.prod.js +1 -1
- package/dist/lang/tr.umd.prod.js +1 -1
- package/dist/lang/ug.umd.prod.js +1 -1
- package/dist/lang/uk.umd.prod.js +1 -1
- package/dist/lang/uz-Cyrl.umd.prod.js +1 -1
- package/dist/lang/uz-Latn.umd.prod.js +1 -1
- package/dist/lang/vi.umd.prod.js +1 -1
- package/dist/lang/zh-CN.umd.prod.js +1 -1
- package/dist/lang/zh-TW.umd.prod.js +1 -1
- package/dist/quasar.cjs.prod.js +2 -2
- package/dist/quasar.esm.js +120 -85
- package/dist/quasar.esm.prod.js +2 -2
- package/dist/quasar.sass +1 -1
- package/dist/quasar.umd.js +120 -85
- package/dist/quasar.umd.prod.js +2 -2
- package/dist/types/index.d.ts +8 -5
- package/dist/web-types/web-types.json +1 -1
- package/lang/ms.js +1 -1
- package/lang/ms.mjs +1 -1
- package/package.json +1 -1
- package/src/components/btn/QBtn.js +2 -2
- package/src/components/circular-progress/QCircularProgress.js +9 -4
- package/src/components/color/QColor.js +5 -9
- package/src/components/date/QDate.js +16 -4
- package/src/components/editor/QEditor.js +1 -1
- package/src/components/range/QRange.js +8 -8
- package/src/components/resize-observer/QResizeObserver.js +3 -3
- package/src/components/select/QSelect.js +3 -4
- package/src/components/slider/QSlider.js +2 -2
- package/src/components/slider/use-slider.js +15 -9
- package/src/components/time/QTime.json +4 -1
- package/src/composables/private/use-field.js +0 -3
- package/src/composables/private/use-validate.js +49 -30
- package/src/plugins/Notify.js +4 -3
- package/src/plugins/Notify.json +2 -2
package/dist/quasar.sass
CHANGED
package/dist/quasar.umd.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* Quasar Framework v2.14.
|
|
2
|
+
* Quasar Framework v2.14.2
|
|
3
3
|
* (c) 2015-present Razvan Stoenescu
|
|
4
4
|
* Released under the MIT License.
|
|
5
5
|
*/
|
|
@@ -1653,7 +1653,7 @@
|
|
|
1653
1653
|
}
|
|
1654
1654
|
|
|
1655
1655
|
var installQuasar = function (parentApp, opts = {}) {
|
|
1656
|
-
const $q = { version: '2.14.
|
|
1656
|
+
const $q = { version: '2.14.2' };
|
|
1657
1657
|
|
|
1658
1658
|
if (globalConfigIsFrozen === false) {
|
|
1659
1659
|
if (opts.config !== void 0) {
|
|
@@ -3850,7 +3850,7 @@
|
|
|
3850
3850
|
props.icon !== void 0 && inner.push(
|
|
3851
3851
|
vue.h(QIcon, {
|
|
3852
3852
|
name: props.icon,
|
|
3853
|
-
left: props.stack
|
|
3853
|
+
left: props.stack !== true && hasLabel.value === true,
|
|
3854
3854
|
role: 'img',
|
|
3855
3855
|
'aria-hidden': 'true'
|
|
3856
3856
|
})
|
|
@@ -3866,7 +3866,7 @@
|
|
|
3866
3866
|
inner.push(
|
|
3867
3867
|
vue.h(QIcon, {
|
|
3868
3868
|
name: props.iconRight,
|
|
3869
|
-
right: props.stack
|
|
3869
|
+
right: props.stack !== true && hasLabel.value === true,
|
|
3870
3870
|
role: 'img',
|
|
3871
3871
|
'aria-hidden': 'true'
|
|
3872
3872
|
})
|
|
@@ -8200,11 +8200,16 @@
|
|
|
8200
8200
|
|
|
8201
8201
|
const normalized = vue.computed(() => between(props.value, props.min, props.max));
|
|
8202
8202
|
|
|
8203
|
-
const
|
|
8204
|
-
1 - (normalized.value - props.min) / (props.max - props.min)
|
|
8205
|
-
));
|
|
8206
|
-
|
|
8203
|
+
const range = vue.computed(() => props.max - props.min);
|
|
8207
8204
|
const strokeWidth = vue.computed(() => props.thickness / 2 * viewBox.value);
|
|
8205
|
+
const strokeDashOffset = vue.computed(() => {
|
|
8206
|
+
const dashRatio = (props.max - normalized.value) / range.value;
|
|
8207
|
+
const dashGap = props.rounded === true && normalized.value < props.max && dashRatio < 0.25
|
|
8208
|
+
? strokeWidth.value / 2 * (1 - dashRatio / 0.25)
|
|
8209
|
+
: 0;
|
|
8210
|
+
|
|
8211
|
+
return circumference * dashRatio + dashGap
|
|
8212
|
+
});
|
|
8208
8213
|
|
|
8209
8214
|
function getCircle ({ thickness, offset, color, cls, rounded }) {
|
|
8210
8215
|
return vue.h('circle', {
|
|
@@ -8832,8 +8837,16 @@
|
|
|
8832
8837
|
&& innerMin.value < innerMax.value
|
|
8833
8838
|
));
|
|
8834
8839
|
|
|
8835
|
-
const
|
|
8836
|
-
|
|
8840
|
+
const roundValueFn = vue.computed(() => {
|
|
8841
|
+
if (props.step === 0) {
|
|
8842
|
+
return v => v
|
|
8843
|
+
}
|
|
8844
|
+
|
|
8845
|
+
const decimals = (String(props.step).trim().split('.')[ 1 ] || '').length;
|
|
8846
|
+
return v => parseFloat(v.toFixed(decimals))
|
|
8847
|
+
});
|
|
8848
|
+
|
|
8849
|
+
const keyStep = vue.computed(() => (props.step === 0 ? 1 : props.step));
|
|
8837
8850
|
const tabindex = vue.computed(() => (editable.value === true ? props.tabindex || 0 : -1));
|
|
8838
8851
|
|
|
8839
8852
|
const trackLen = vue.computed(() => props.max - props.min);
|
|
@@ -8941,13 +8954,11 @@
|
|
|
8941
8954
|
let model = min + ratio * (max - min);
|
|
8942
8955
|
|
|
8943
8956
|
if (step > 0) {
|
|
8944
|
-
const modulo = (model -
|
|
8957
|
+
const modulo = (model - innerMin.value) % step;
|
|
8945
8958
|
model += (Math.abs(modulo) >= step / 2 ? (modulo < 0 ? -1 : 1) * step : 0) - modulo;
|
|
8946
8959
|
}
|
|
8947
8960
|
|
|
8948
|
-
|
|
8949
|
-
model = parseFloat(model.toFixed(decimals.value));
|
|
8950
|
-
}
|
|
8961
|
+
model = roundValueFn.value(model);
|
|
8951
8962
|
|
|
8952
8963
|
return between(model, innerMin.value, innerMax.value)
|
|
8953
8964
|
}
|
|
@@ -8973,7 +8984,7 @@
|
|
|
8973
8984
|
}
|
|
8974
8985
|
|
|
8975
8986
|
const markerStep = vue.computed(() => (
|
|
8976
|
-
isNumber(props.markers) === true ? props.markers :
|
|
8987
|
+
isNumber(props.markers) === true ? props.markers : keyStep.value)
|
|
8977
8988
|
);
|
|
8978
8989
|
|
|
8979
8990
|
const markerTicks = vue.computed(() => {
|
|
@@ -9333,8 +9344,8 @@
|
|
|
9333
9344
|
tabindex,
|
|
9334
9345
|
attributes,
|
|
9335
9346
|
|
|
9336
|
-
|
|
9337
|
-
|
|
9347
|
+
roundValueFn,
|
|
9348
|
+
keyStep,
|
|
9338
9349
|
trackLen,
|
|
9339
9350
|
innerMin,
|
|
9340
9351
|
innerMinRatio,
|
|
@@ -9480,7 +9491,7 @@
|
|
|
9480
9491
|
stopAndPrevent(evt);
|
|
9481
9492
|
|
|
9482
9493
|
const
|
|
9483
|
-
stepVal = ([ 34, 33 ].includes(evt.keyCode) ? 10 : 1) * state.
|
|
9494
|
+
stepVal = ([ 34, 33 ].includes(evt.keyCode) ? 10 : 1) * state.keyStep.value,
|
|
9484
9495
|
offset = (
|
|
9485
9496
|
([ 34, 37, 40 ].includes(evt.keyCode) ? -1 : 1)
|
|
9486
9497
|
* (state.isReversed.value === true ? -1 : 1)
|
|
@@ -9488,7 +9499,7 @@
|
|
|
9488
9499
|
);
|
|
9489
9500
|
|
|
9490
9501
|
model.value = between(
|
|
9491
|
-
|
|
9502
|
+
state.roundValueFn.value(model.value + offset),
|
|
9492
9503
|
state.innerMin.value,
|
|
9493
9504
|
state.innerMax.value
|
|
9494
9505
|
);
|
|
@@ -9577,6 +9588,9 @@
|
|
|
9577
9588
|
|
|
9578
9589
|
const { proxy } = vue.getCurrentInstance();
|
|
9579
9590
|
|
|
9591
|
+
// expose public method
|
|
9592
|
+
proxy.trigger = trigger;
|
|
9593
|
+
|
|
9580
9594
|
if (hasObserver === true) {
|
|
9581
9595
|
let observer;
|
|
9582
9596
|
|
|
@@ -9650,9 +9664,6 @@
|
|
|
9650
9664
|
|
|
9651
9665
|
vue.onBeforeUnmount(cleanup);
|
|
9652
9666
|
|
|
9653
|
-
// expose public method
|
|
9654
|
-
proxy.trigger = trigger;
|
|
9655
|
-
|
|
9656
9667
|
return () => {
|
|
9657
9668
|
if (canRender.value === true) {
|
|
9658
9669
|
return vue.h('object', {
|
|
@@ -11174,15 +11185,11 @@
|
|
|
11174
11185
|
+ (isDark.value === true ? ' q-color-picker--dark q-dark' : '')
|
|
11175
11186
|
);
|
|
11176
11187
|
|
|
11177
|
-
const attributes = vue.computed(() =>
|
|
11178
|
-
|
|
11179
|
-
|
|
11180
|
-
|
|
11181
|
-
|
|
11182
|
-
return { 'aria-readonly': 'true' }
|
|
11183
|
-
}
|
|
11184
|
-
return {}
|
|
11185
|
-
});
|
|
11188
|
+
const attributes = vue.computed(() => (
|
|
11189
|
+
props.disable === true
|
|
11190
|
+
? { 'aria-disabled': 'true' }
|
|
11191
|
+
: {}
|
|
11192
|
+
));
|
|
11186
11193
|
|
|
11187
11194
|
const spectrumDirective = vue.computed(() => {
|
|
11188
11195
|
// if editable.value === true
|
|
@@ -13892,7 +13899,7 @@
|
|
|
13892
13899
|
const attributes = vue.computed(() => (
|
|
13893
13900
|
props.disable === true
|
|
13894
13901
|
? { 'aria-disabled': 'true' }
|
|
13895
|
-
:
|
|
13902
|
+
: {}
|
|
13896
13903
|
));
|
|
13897
13904
|
|
|
13898
13905
|
vue.watch(() => props.modelValue, v => {
|
|
@@ -13926,10 +13933,22 @@
|
|
|
13926
13933
|
});
|
|
13927
13934
|
|
|
13928
13935
|
function setToday () {
|
|
13929
|
-
const
|
|
13930
|
-
|
|
13936
|
+
const { year, month, day } = today.value;
|
|
13937
|
+
|
|
13938
|
+
const date = {
|
|
13939
|
+
// contains more props than needed (hour, minute, second, millisecond)
|
|
13940
|
+
// but those aren't used in the processing of this "date" variable
|
|
13941
|
+
...viewModel.value,
|
|
13931
13942
|
|
|
13932
|
-
|
|
13943
|
+
// overwriting with today's date
|
|
13944
|
+
year,
|
|
13945
|
+
month,
|
|
13946
|
+
day
|
|
13947
|
+
};
|
|
13948
|
+
|
|
13949
|
+
const monthMap = daysMap.value[ getMonthHash(date) ];
|
|
13950
|
+
|
|
13951
|
+
if (monthMap === void 0 || monthMap.includes(date.day) === false) {
|
|
13933
13952
|
addToModel(date);
|
|
13934
13953
|
}
|
|
13935
13954
|
|
|
@@ -17528,7 +17547,7 @@
|
|
|
17528
17547
|
const attributes = vue.computed(() => (
|
|
17529
17548
|
props.disable === true
|
|
17530
17549
|
? { 'aria-disabled': 'true' }
|
|
17531
|
-
:
|
|
17550
|
+
: {}
|
|
17532
17551
|
));
|
|
17533
17552
|
|
|
17534
17553
|
function onInput () {
|
|
@@ -18727,6 +18746,7 @@
|
|
|
18727
18746
|
reactiveRules: Boolean,
|
|
18728
18747
|
lazyRules: {
|
|
18729
18748
|
type: [ Boolean, String ],
|
|
18749
|
+
default: false, // statement unneeded but avoids future vue implementation changes
|
|
18730
18750
|
validator: v => lazyRulesValues.includes(v)
|
|
18731
18751
|
}
|
|
18732
18752
|
};
|
|
@@ -18748,10 +18768,14 @@
|
|
|
18748
18768
|
&& props.rules.length !== 0
|
|
18749
18769
|
);
|
|
18750
18770
|
|
|
18751
|
-
const
|
|
18771
|
+
const canDebounceValidate = vue.computed(() => (
|
|
18752
18772
|
props.disable !== true
|
|
18753
18773
|
&& hasRules.value === true
|
|
18754
|
-
|
|
18774
|
+
// Should not have a validation in progress already;
|
|
18775
|
+
// It might mean that focus switched to submit btn and
|
|
18776
|
+
// QForm's submit() has been called already (ENTER key)
|
|
18777
|
+
&& innerLoading.value === false
|
|
18778
|
+
));
|
|
18755
18779
|
|
|
18756
18780
|
const hasError = vue.computed(() =>
|
|
18757
18781
|
props.error === true || innerError.value === true
|
|
@@ -18764,15 +18788,29 @@
|
|
|
18764
18788
|
));
|
|
18765
18789
|
|
|
18766
18790
|
vue.watch(() => props.modelValue, () => {
|
|
18767
|
-
|
|
18791
|
+
isDirtyModel.value = true;
|
|
18792
|
+
|
|
18793
|
+
if (
|
|
18794
|
+
canDebounceValidate.value === true
|
|
18795
|
+
// trigger validation if not using any kind of lazy-rules
|
|
18796
|
+
&& props.lazyRules === false
|
|
18797
|
+
) {
|
|
18798
|
+
debouncedValidate();
|
|
18799
|
+
}
|
|
18768
18800
|
});
|
|
18769
18801
|
|
|
18770
18802
|
vue.watch(() => props.reactiveRules, val => {
|
|
18771
18803
|
if (val === true) {
|
|
18772
18804
|
if (unwatchRules === void 0) {
|
|
18773
18805
|
unwatchRules = vue.watch(() => props.rules, () => {
|
|
18774
|
-
|
|
18775
|
-
|
|
18806
|
+
if (
|
|
18807
|
+
canDebounceValidate.value === true
|
|
18808
|
+
&& isDirtyModel.value === true
|
|
18809
|
+
&& props.lazyRules !== 'ondemand'
|
|
18810
|
+
) {
|
|
18811
|
+
debouncedValidate();
|
|
18812
|
+
}
|
|
18813
|
+
}, { immediate: true });
|
|
18776
18814
|
}
|
|
18777
18815
|
}
|
|
18778
18816
|
else if (unwatchRules !== void 0) {
|
|
@@ -18781,25 +18819,32 @@
|
|
|
18781
18819
|
}
|
|
18782
18820
|
}, { immediate: true });
|
|
18783
18821
|
|
|
18822
|
+
vue.watch(() => props.lazyRules, val => {
|
|
18823
|
+
if (
|
|
18824
|
+
val === false
|
|
18825
|
+
&& canDebounceValidate.value === true
|
|
18826
|
+
&& isDirtyModel.value === true
|
|
18827
|
+
) {
|
|
18828
|
+
debouncedValidate();
|
|
18829
|
+
}
|
|
18830
|
+
});
|
|
18831
|
+
|
|
18784
18832
|
vue.watch(focused, val => {
|
|
18785
18833
|
if (val === true) {
|
|
18786
18834
|
if (isDirtyModel.value === null) {
|
|
18787
|
-
isDirtyModel.value =
|
|
18835
|
+
isDirtyModel.value = props.lazyRules === true;
|
|
18788
18836
|
}
|
|
18789
18837
|
}
|
|
18790
|
-
else if (
|
|
18791
|
-
|
|
18792
|
-
|
|
18793
|
-
|
|
18794
|
-
|
|
18795
|
-
|
|
18796
|
-
|
|
18797
|
-
|
|
18798
|
-
|
|
18799
|
-
|
|
18800
|
-
) {
|
|
18801
|
-
debouncedValidate();
|
|
18802
|
-
}
|
|
18838
|
+
else if (
|
|
18839
|
+
canDebounceValidate.value === true
|
|
18840
|
+
&& (
|
|
18841
|
+
// props.lazyRules can also be 'ondemand',
|
|
18842
|
+
// hence the following form:
|
|
18843
|
+
props.lazyRules === false
|
|
18844
|
+
|| (props.lazyRules === true && isDirtyModel.value === true)
|
|
18845
|
+
)
|
|
18846
|
+
) {
|
|
18847
|
+
debouncedValidate();
|
|
18803
18848
|
}
|
|
18804
18849
|
});
|
|
18805
18850
|
|
|
@@ -18819,7 +18864,10 @@
|
|
|
18819
18864
|
* - Promise (pending async validation)
|
|
18820
18865
|
*/
|
|
18821
18866
|
function validate (val = props.modelValue) {
|
|
18822
|
-
if (
|
|
18867
|
+
if (
|
|
18868
|
+
props.disable === true
|
|
18869
|
+
|| hasRules.value === false
|
|
18870
|
+
) {
|
|
18823
18871
|
return true
|
|
18824
18872
|
}
|
|
18825
18873
|
|
|
@@ -18888,16 +18936,6 @@
|
|
|
18888
18936
|
)
|
|
18889
18937
|
}
|
|
18890
18938
|
|
|
18891
|
-
function validateIfNeeded (changedRules) {
|
|
18892
|
-
if (
|
|
18893
|
-
hasActiveRules.value === true
|
|
18894
|
-
&& props.lazyRules !== 'ondemand'
|
|
18895
|
-
&& (isDirtyModel.value === true || (props.lazyRules !== true && changedRules !== true))
|
|
18896
|
-
) {
|
|
18897
|
-
debouncedValidate();
|
|
18898
|
-
}
|
|
18899
|
-
}
|
|
18900
|
-
|
|
18901
18939
|
const debouncedValidate = debounce(validate, 0);
|
|
18902
18940
|
|
|
18903
18941
|
vue.onBeforeUnmount(() => {
|
|
@@ -19165,9 +19203,6 @@
|
|
|
19165
19203
|
if (props.disable === true) {
|
|
19166
19204
|
acc[ 'aria-disabled' ] = 'true';
|
|
19167
19205
|
}
|
|
19168
|
-
else if (props.readonly === true) {
|
|
19169
|
-
acc[ 'aria-readonly' ] = 'true';
|
|
19170
|
-
}
|
|
19171
19206
|
|
|
19172
19207
|
return acc
|
|
19173
19208
|
});
|
|
@@ -25596,15 +25631,15 @@
|
|
|
25596
25631
|
case dragType.RANGE:
|
|
25597
25632
|
const
|
|
25598
25633
|
ratioDelta = ratio - dragging.offsetRatio,
|
|
25599
|
-
minR = between(dragging.ratioMin + ratioDelta,
|
|
25634
|
+
minR = between(dragging.ratioMin + ratioDelta, state.innerMinRatio.value, state.innerMaxRatio.value - dragging.rangeRatio),
|
|
25600
25635
|
modelDelta = localModel - dragging.offsetModel,
|
|
25601
|
-
min = between(dragging.valueMin + modelDelta,
|
|
25636
|
+
min = between(dragging.valueMin + modelDelta, state.innerMin.value, state.innerMax.value - dragging.rangeValue);
|
|
25602
25637
|
|
|
25603
25638
|
pos = {
|
|
25604
25639
|
minR,
|
|
25605
25640
|
maxR: minR + dragging.rangeRatio,
|
|
25606
|
-
min:
|
|
25607
|
-
max:
|
|
25641
|
+
min: state.roundValueFn.value(min),
|
|
25642
|
+
max: state.roundValueFn.value(min + dragging.rangeValue)
|
|
25608
25643
|
};
|
|
25609
25644
|
|
|
25610
25645
|
state.focus.value = 'both';
|
|
@@ -25634,7 +25669,7 @@
|
|
|
25634
25669
|
stopAndPrevent(evt);
|
|
25635
25670
|
|
|
25636
25671
|
const
|
|
25637
|
-
stepVal = ([ 34, 33 ].includes(evt.keyCode) ? 10 : 1) * state.
|
|
25672
|
+
stepVal = ([ 34, 33 ].includes(evt.keyCode) ? 10 : 1) * state.keyStep.value,
|
|
25638
25673
|
offset = (
|
|
25639
25674
|
([ 34, 37, 40 ].includes(evt.keyCode) ? -1 : 1)
|
|
25640
25675
|
* (state.isReversed.value === true ? -1 : 1)
|
|
@@ -25644,14 +25679,14 @@
|
|
|
25644
25679
|
if (state.focus.value === 'both') {
|
|
25645
25680
|
const interval = model.value.max - model.value.min;
|
|
25646
25681
|
const min = between(
|
|
25647
|
-
|
|
25682
|
+
state.roundValueFn.value(model.value.min + offset),
|
|
25648
25683
|
state.innerMin.value,
|
|
25649
25684
|
state.innerMax.value - interval
|
|
25650
25685
|
);
|
|
25651
25686
|
|
|
25652
25687
|
model.value = {
|
|
25653
25688
|
min,
|
|
25654
|
-
max:
|
|
25689
|
+
max: state.roundValueFn.value(min + interval)
|
|
25655
25690
|
};
|
|
25656
25691
|
}
|
|
25657
25692
|
else if (state.focus.value === false) {
|
|
@@ -25663,7 +25698,7 @@
|
|
|
25663
25698
|
model.value = {
|
|
25664
25699
|
...model.value,
|
|
25665
25700
|
[ which ]: between(
|
|
25666
|
-
|
|
25701
|
+
state.roundValueFn.value(model.value[ which ] + offset),
|
|
25667
25702
|
which === 'min' ? state.innerMin.value : model.value.min,
|
|
25668
25703
|
which === 'max' ? state.innerMax.value : model.value.max
|
|
25669
25704
|
)
|
|
@@ -27516,11 +27551,12 @@
|
|
|
27516
27551
|
|
|
27517
27552
|
return props.options.slice(from, to).map((opt, i) => {
|
|
27518
27553
|
const disable = isOptionDisabled.value(opt) === true;
|
|
27554
|
+
const active = isOptionSelected(opt) === true;
|
|
27519
27555
|
const index = from + i;
|
|
27520
27556
|
|
|
27521
27557
|
const itemProps = {
|
|
27522
27558
|
clickable: true,
|
|
27523
|
-
active
|
|
27559
|
+
active,
|
|
27524
27560
|
activeClass: computedOptionsSelectedClass.value,
|
|
27525
27561
|
manualFocus: true,
|
|
27526
27562
|
focused: false,
|
|
@@ -27529,16 +27565,14 @@
|
|
|
27529
27565
|
dense: props.optionsDense,
|
|
27530
27566
|
dark: isOptionsDark.value,
|
|
27531
27567
|
role: 'option',
|
|
27568
|
+
'aria-selected': active === true ? 'true' : 'false',
|
|
27532
27569
|
id: `${ state.targetUid.value }_${ index }`,
|
|
27533
27570
|
onClick: () => { toggleOption(opt); }
|
|
27534
27571
|
};
|
|
27535
27572
|
|
|
27536
27573
|
if (disable !== true) {
|
|
27537
|
-
isOptionSelected(opt) === true && (itemProps.active = true);
|
|
27538
27574
|
optionIndex.value === index && (itemProps.focused = true);
|
|
27539
27575
|
|
|
27540
|
-
itemProps[ 'aria-selected' ] = itemProps.active === true ? 'true' : 'false';
|
|
27541
|
-
|
|
27542
27576
|
if ($q.platform.is.desktop === true) {
|
|
27543
27577
|
itemProps.onMousemove = () => { menu.value === true && setOptionIndex(index); };
|
|
27544
27578
|
}
|
|
@@ -39800,6 +39834,7 @@
|
|
|
39800
39834
|
const positionClass = {};
|
|
39801
39835
|
const emptyRE = /^\s*$/;
|
|
39802
39836
|
const notifRefs = [];
|
|
39837
|
+
const invalidTimeoutValues = [ void 0, null, true, false, '' ];
|
|
39803
39838
|
|
|
39804
39839
|
const positionList = [
|
|
39805
39840
|
'top-left', 'top-right',
|
|
@@ -39893,15 +39928,15 @@
|
|
|
39893
39928
|
notif.position = 'bottom';
|
|
39894
39929
|
}
|
|
39895
39930
|
|
|
39896
|
-
if (notif.timeout ===
|
|
39931
|
+
if (invalidTimeoutValues.includes(notif.timeout) === true) {
|
|
39897
39932
|
notif.timeout = 5000;
|
|
39898
39933
|
}
|
|
39899
39934
|
else {
|
|
39900
|
-
const t =
|
|
39935
|
+
const t = Number(notif.timeout); // we catch exponential notation too with Number() casting
|
|
39901
39936
|
if (isNaN(t) || t < 0) {
|
|
39902
39937
|
return logError('wrong timeout', config)
|
|
39903
39938
|
}
|
|
39904
|
-
notif.timeout = t;
|
|
39939
|
+
notif.timeout = Number.isFinite(t) ? t : 0;
|
|
39905
39940
|
}
|
|
39906
39941
|
|
|
39907
39942
|
if (notif.timeout === 0) {
|
|
@@ -41025,7 +41060,7 @@
|
|
|
41025
41060
|
*/
|
|
41026
41061
|
|
|
41027
41062
|
var index_umd = {
|
|
41028
|
-
version: '2.14.
|
|
41063
|
+
version: '2.14.2',
|
|
41029
41064
|
install (app, opts) {
|
|
41030
41065
|
installQuasar(app, {
|
|
41031
41066
|
components,
|