quasar 2.6.6 → 2.7.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/QBtnDropdown.json +1 -0
- package/dist/api/QBtnToggle.json +1 -0
- package/dist/api/QCarousel.json +2 -1
- package/dist/api/QCheckbox.json +1 -0
- package/dist/api/QChip.json +3 -1
- package/dist/api/QColor.json +1 -0
- package/dist/api/QDate.json +1 -0
- package/dist/api/QDialog.json +6 -0
- package/dist/api/QEditor.json +3 -1
- package/dist/api/QExpansionItem.json +1 -0
- package/dist/api/QFab.json +1 -0
- package/dist/api/QFile.json +1 -0
- package/dist/api/QFooter.json +1 -0
- package/dist/api/QHeader.json +1 -0
- package/dist/api/QInput.json +1 -0
- package/dist/api/QItem.json +3 -1
- package/dist/api/QKnob.json +1 -0
- package/dist/api/QOptionGroup.json +1 -0
- package/dist/api/QPagination.json +2 -1
- package/dist/api/QPopupEdit.json +1 -0
- package/dist/api/QPopupProxy.json +1 -0
- package/dist/api/QRadio.json +1 -0
- package/dist/api/QRange.json +1 -0
- package/dist/api/QRating.json +1 -0
- package/dist/api/QSelect.json +1 -0
- package/dist/api/QSlider.json +1 -0
- package/dist/api/QSplitter.json +1 -0
- package/dist/api/QTable.json +5 -1
- package/dist/api/QTabs.json +1 -0
- package/dist/api/QTime.json +1 -0
- package/dist/api/QToggle.json +1 -0
- package/dist/api/QTree.json +6 -3
- 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 +6 -0
- package/dist/icon-set/material-symbols-rounded.umd.prod.js +6 -0
- package/dist/icon-set/material-symbols-sharp.umd.prod.js +6 -0
- package/dist/icon-set/mdi-v3.umd.prod.js +1 -1
- package/dist/icon-set/mdi-v4.umd.prod.js +1 -1
- package/dist/icon-set/mdi-v5.umd.prod.js +1 -1
- package/dist/icon-set/mdi-v6.umd.prod.js +1 -1
- package/dist/icon-set/svg-bootstrap-icons.umd.prod.js +1 -1
- package/dist/icon-set/svg-eva-icons.umd.prod.js +1 -1
- package/dist/icon-set/svg-fontawesome-v5.umd.prod.js +1 -1
- package/dist/icon-set/svg-fontawesome-v6.umd.prod.js +1 -1
- package/dist/icon-set/svg-ionicons-v4.umd.prod.js +1 -1
- package/dist/icon-set/svg-ionicons-v5.umd.prod.js +1 -1
- package/dist/icon-set/svg-ionicons-v6.umd.prod.js +1 -1
- package/dist/icon-set/svg-line-awesome.umd.prod.js +1 -1
- package/dist/icon-set/svg-material-icons-outlined.umd.prod.js +1 -1
- package/dist/icon-set/svg-material-icons-round.umd.prod.js +1 -1
- package/dist/icon-set/svg-material-icons-sharp.umd.prod.js +1 -1
- package/dist/icon-set/svg-material-icons.umd.prod.js +1 -1
- package/dist/icon-set/svg-material-symbols-outlined.umd.prod.js +6 -0
- package/dist/icon-set/svg-material-symbols-rounded.umd.prod.js +6 -0
- package/dist/icon-set/svg-material-symbols-sharp.umd.prod.js +6 -0
- package/dist/icon-set/svg-mdi-v6.umd.prod.js +1 -1
- package/dist/icon-set/svg-themify.umd.prod.js +1 -1
- package/dist/icon-set/themify.umd.prod.js +1 -1
- package/dist/lang/ar-TN.umd.prod.js +1 -1
- package/dist/lang/ar.umd.prod.js +1 -1
- package/dist/lang/az-Latn.umd.prod.js +1 -1
- package/dist/lang/bg.umd.prod.js +1 -1
- package/dist/lang/bn.umd.prod.js +1 -1
- package/dist/lang/ca.umd.prod.js +2 -2
- 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 +2 -2
- package/dist/lang/et.umd.prod.js +1 -1
- package/dist/lang/eu.umd.prod.js +1 -1
- package/dist/lang/fa-IR.umd.prod.js +1 -1
- package/dist/lang/fa.umd.prod.js +1 -1
- package/dist/lang/fi.umd.prod.js +1 -1
- package/dist/lang/fr.umd.prod.js +1 -1
- package/dist/lang/gn.umd.prod.js +1 -1
- package/dist/lang/he.umd.prod.js +1 -1
- package/dist/lang/hr.umd.prod.js +1 -1
- package/dist/lang/hu.umd.prod.js +1 -1
- package/dist/lang/id.umd.prod.js +1 -1
- package/dist/lang/is.umd.prod.js +1 -1
- package/dist/lang/it.umd.prod.js +1 -1
- package/dist/lang/ja.umd.prod.js +1 -1
- package/dist/lang/km.umd.prod.js +1 -1
- package/dist/lang/ko-KR.umd.prod.js +2 -2
- package/dist/lang/kur-CKB.umd.prod.js +1 -1
- package/dist/lang/kz.umd.prod.js +1 -1
- package/dist/lang/lt.umd.prod.js +1 -1
- package/dist/lang/lu.umd.prod.js +1 -1
- package/dist/lang/lv.umd.prod.js +1 -1
- package/dist/lang/ml.umd.prod.js +1 -1
- package/dist/lang/mm.umd.prod.js +6 -0
- 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 +6 -0
- 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.addon.rtl.css +251 -0
- package/dist/quasar.cjs.prod.js +2 -2
- package/dist/quasar.css +9 -9
- package/dist/quasar.esm.prod.js +2 -2
- package/dist/quasar.prod.css +1 -1
- package/dist/quasar.rtl.css +1229 -9
- package/dist/quasar.rtl.prod.css +1 -1
- package/dist/quasar.sass +10 -9
- package/dist/quasar.umd.js +182 -126
- package/dist/quasar.umd.prod.js +2 -2
- package/dist/types/api/quploader.d.ts +7 -7
- package/dist/types/extras/icon-set.d.ts +6 -0
- package/dist/types/index.d.ts +265 -255
- package/dist/types/utils/dom.d.ts +1 -1
- package/dist/types/utils.d.ts +11 -0
- package/dist/vetur/quasar-attributes.json +4 -0
- package/dist/vetur/quasar-tags.json +2 -1
- package/dist/web-types/web-types.json +12 -2
- package/icon-set/material-symbols-outlined.js +133 -0
- package/icon-set/material-symbols-outlined.mjs +128 -0
- package/icon-set/material-symbols-rounded.js +133 -0
- package/icon-set/material-symbols-rounded.mjs +128 -0
- package/icon-set/material-symbols-sharp.js +133 -0
- package/icon-set/material-symbols-sharp.mjs +128 -0
- package/icon-set/svg-material-symbols-outlined.js +201 -0
- package/icon-set/svg-material-symbols-outlined.mjs +201 -0
- package/icon-set/svg-material-symbols-rounded.js +201 -0
- package/icon-set/svg-material-symbols-rounded.mjs +201 -0
- package/icon-set/svg-material-symbols-sharp.js +201 -0
- package/icon-set/svg-material-symbols-sharp.mjs +201 -0
- package/lang/ca.js +31 -31
- package/lang/ca.mjs +31 -31
- package/lang/es.js +1 -1
- package/lang/es.mjs +1 -1
- package/lang/index.json +8 -0
- package/lang/ko-KR.js +21 -21
- package/lang/ko-KR.mjs +21 -21
- package/lang/mm.js +96 -0
- package/lang/mm.mjs +91 -0
- package/lang/sm.js +96 -0
- package/lang/sm.mjs +91 -0
- package/package.json +15 -15
- package/src/api.extends.json +1 -0
- package/src/components/avatar/__tests__/QAvatar.spec.js +1 -1
- package/src/components/badge/QBadge.js +2 -2
- package/src/components/badge/__tests__/QBadge.spec.js +1 -1
- package/src/components/btn/QBtn.js +2 -2
- package/src/components/checkbox/use-checkbox.js +8 -7
- package/src/components/dialog/QDialog.js +3 -1
- package/src/components/dialog/QDialog.json +7 -0
- package/src/components/editor/QEditor.js +11 -25
- package/src/components/file/QFile.js +6 -1
- package/src/components/icon/QIcon.js +24 -1
- package/src/components/icon/QIcon.sass +7 -3
- package/src/components/img/QImg.sass +1 -0
- package/src/components/infinite-scroll/QInfiniteScroll.js +10 -10
- package/src/components/input/QInput.js +6 -1
- package/src/components/item/QItem.js +5 -2
- package/src/components/item/QItem.json +2 -1
- package/src/components/layout/QLayout.js +2 -1
- package/src/components/menu/__tests__/QMenu.spec.js +23 -23
- package/src/components/pagination/QPagination.json +1 -1
- package/src/components/radio/QRadio.js +2 -2
- package/src/components/select/QSelect.js +28 -16
- package/src/components/select/__tests__/QSelect.spec.js +427 -451
- package/src/components/slider/use-slider.js +1 -1
- package/src/components/table/QTable.js +0 -1
- package/src/components/table/QTable.json +3 -0
- package/src/components/table/QTable.sass +1 -1
- package/src/components/tabs/QTabs.sass +0 -6
- package/src/components/uploader/uploader-core.js +23 -18
- package/src/components/virtual-scroll/use-virtual-scroll.js +9 -4
- package/src/composables/private/__tests__/use-anchor.spec.js +6 -6
- package/src/composables/private/__tests__/use-field.spec.js +7 -7
- package/src/composables/private/__tests__/use-model-toggle.spec.js +20 -19
- package/src/composables/private/__tests__/use-size.spec.js +2 -2
- package/src/composables/private/__tests__/use-transition.spec.js +5 -5
- package/src/composables/private/__tests__/use-validate.spec.js +5 -5
- package/src/composables/private/use-anchor.js +1 -1
- package/src/composables/private/use-field.js +2 -1
- package/src/composables/private/use-key-composition.js +16 -13
- package/src/directives/Ripple.js +2 -7
- package/src/utils/date.js +1 -1
- package/src/utils/private/global-dialog.js +22 -10
- package/src/components/select/__tests__/WrapperOne.vue +0 -28
package/dist/quasar.umd.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* Quasar Framework v2.
|
|
2
|
+
* Quasar Framework v2.7.2
|
|
3
3
|
* (c) 2015-present Razvan Stoenescu
|
|
4
4
|
* Released under the MIT License.
|
|
5
5
|
*/
|
|
@@ -1603,7 +1603,7 @@
|
|
|
1603
1603
|
}
|
|
1604
1604
|
|
|
1605
1605
|
var installQuasar = function (parentApp, opts = {}) {
|
|
1606
|
-
const $q = { version: '2.
|
|
1606
|
+
const $q = { version: '2.7.2' };
|
|
1607
1607
|
|
|
1608
1608
|
if (globalConfigIsFrozen === false) {
|
|
1609
1609
|
if (opts.config !== void 0) {
|
|
@@ -2059,8 +2059,15 @@
|
|
|
2059
2059
|
s_: '-sharp'
|
|
2060
2060
|
};
|
|
2061
2061
|
|
|
2062
|
+
const symMap = {
|
|
2063
|
+
sym_o_: '-outlined',
|
|
2064
|
+
sym_r_: '-rounded',
|
|
2065
|
+
sym_s_: '-sharp'
|
|
2066
|
+
};
|
|
2067
|
+
|
|
2062
2068
|
const libRE = new RegExp('^(' + Object.keys(libMap).join('|') + ')');
|
|
2063
2069
|
const matRE = new RegExp('^(' + Object.keys(matMap).join('|') + ')');
|
|
2070
|
+
const symRE = new RegExp('^(' + Object.keys(symMap).join('|') + ')');
|
|
2064
2071
|
const mRE = /^[Mm]\s?[-+]?\.?\d/;
|
|
2065
2072
|
const imgRE = /^img:/;
|
|
2066
2073
|
const svgUseRE = /^svguse:/;
|
|
@@ -2165,6 +2172,22 @@
|
|
|
2165
2172
|
else if (ionRE.test(icon) === true) {
|
|
2166
2173
|
cls = `ionicons ion-${ $q.platform.is.ios === true ? 'ios' : 'md' }${ icon.substring(3) }`;
|
|
2167
2174
|
}
|
|
2175
|
+
else if (symRE.test(icon) === true) {
|
|
2176
|
+
// "notranslate" class is for Google Translate
|
|
2177
|
+
// to avoid tampering with Material Symbols ligature font
|
|
2178
|
+
//
|
|
2179
|
+
// Caution: To be able to add suffix to the class name,
|
|
2180
|
+
// keep the 'material-symbols' at the end of the string.
|
|
2181
|
+
cls = 'notranslate material-symbols';
|
|
2182
|
+
|
|
2183
|
+
const matches = icon.match(symRE);
|
|
2184
|
+
if (matches !== null) {
|
|
2185
|
+
icon = icon.substring(6);
|
|
2186
|
+
cls += symMap[ matches[ 1 ] ];
|
|
2187
|
+
}
|
|
2188
|
+
|
|
2189
|
+
content = icon;
|
|
2190
|
+
}
|
|
2168
2191
|
else {
|
|
2169
2192
|
// "notranslate" class is for Google Translate
|
|
2170
2193
|
// to avoid tampering with Material Icons ligature font
|
|
@@ -2209,7 +2232,7 @@
|
|
|
2209
2232
|
if (type.value.svg === true) {
|
|
2210
2233
|
return vue.h('span', data, hMergeSlot(slots.default, [
|
|
2211
2234
|
vue.h('svg', {
|
|
2212
|
-
viewBox: type.value.viewBox
|
|
2235
|
+
viewBox: type.value.viewBox || '0 0 24 24'
|
|
2213
2236
|
}, type.value.nodes)
|
|
2214
2237
|
]))
|
|
2215
2238
|
}
|
|
@@ -2341,7 +2364,7 @@
|
|
|
2341
2364
|
style: style.value,
|
|
2342
2365
|
role: 'alert',
|
|
2343
2366
|
'aria-label': props.label
|
|
2344
|
-
}, props.label !== void 0 ? props.label :
|
|
2367
|
+
}, hMergeSlot(slots.default, props.label !== void 0 ? [ props.label ] : []))
|
|
2345
2368
|
}
|
|
2346
2369
|
});
|
|
2347
2370
|
|
|
@@ -3171,11 +3194,7 @@
|
|
|
3171
3194
|
if (
|
|
3172
3195
|
ctx.enabled === true
|
|
3173
3196
|
&& evt.qSkipRipple !== true
|
|
3174
|
-
&& (
|
|
3175
|
-
ctx.modifiers.early === true
|
|
3176
|
-
? [ 'mousedown', 'touchstart' ].includes(evt.type) === true
|
|
3177
|
-
: evt.type === 'click'
|
|
3178
|
-
)
|
|
3197
|
+
&& evt.type === (ctx.modifiers.early === true ? 'pointerdown' : 'click')
|
|
3179
3198
|
) {
|
|
3180
3199
|
showRipple(evt, el, ctx, evt.qKeyEvent === true);
|
|
3181
3200
|
}
|
|
@@ -3198,8 +3217,7 @@
|
|
|
3198
3217
|
el.__qripple = ctx;
|
|
3199
3218
|
|
|
3200
3219
|
addEvt(ctx, 'main', [
|
|
3201
|
-
[ el, '
|
|
3202
|
-
[ el, 'touchstart', 'start', 'passive' ],
|
|
3220
|
+
[ el, 'pointerdown', 'start', 'passive' ],
|
|
3203
3221
|
[ el, 'click', 'start', 'passive' ],
|
|
3204
3222
|
[ el, 'keydown', 'keystart', 'passive' ],
|
|
3205
3223
|
[ el, 'keyup', 'keystart', 'passive' ]
|
|
@@ -3740,10 +3758,10 @@
|
|
|
3740
3758
|
if (props.loading === true && props.percentage !== void 0) {
|
|
3741
3759
|
child.push(
|
|
3742
3760
|
vue.h('span', {
|
|
3743
|
-
class: 'q-btn__progress absolute-full overflow-hidden'
|
|
3761
|
+
class: 'q-btn__progress absolute-full overflow-hidden' + (props.darkPercentage === true ? ' q-btn__progress--dark' : '')
|
|
3744
3762
|
}, [
|
|
3745
3763
|
vue.h('span', {
|
|
3746
|
-
class: 'q-btn__progress-indicator fit block'
|
|
3764
|
+
class: 'q-btn__progress-indicator fit block',
|
|
3747
3765
|
style: percentageStyle.value
|
|
3748
3766
|
})
|
|
3749
3767
|
])
|
|
@@ -3965,7 +3983,7 @@
|
|
|
3965
3983
|
}
|
|
3966
3984
|
|
|
3967
3985
|
function pickAnchorEl () {
|
|
3968
|
-
if (props.target === false || props.target === '') {
|
|
3986
|
+
if (props.target === false || props.target === '' || proxy.$el.parentNode === null) {
|
|
3969
3987
|
anchorEl.value = null;
|
|
3970
3988
|
}
|
|
3971
3989
|
else if (props.target === true) {
|
|
@@ -7249,22 +7267,23 @@
|
|
|
7249
7267
|
props.val !== void 0 && Array.isArray(props.modelValue)
|
|
7250
7268
|
);
|
|
7251
7269
|
|
|
7252
|
-
const index = vue.computed(() =>
|
|
7253
|
-
|
|
7254
|
-
|
|
7270
|
+
const index = vue.computed(() => {
|
|
7271
|
+
const val = vue.toRaw(props.val);
|
|
7272
|
+
return modelIsArray.value === true
|
|
7273
|
+
? props.modelValue.findIndex(opt => vue.toRaw(opt) === val)
|
|
7255
7274
|
: -1
|
|
7256
|
-
)
|
|
7275
|
+
});
|
|
7257
7276
|
|
|
7258
7277
|
const isTrue = vue.computed(() => (
|
|
7259
7278
|
modelIsArray.value === true
|
|
7260
7279
|
? index.value > -1
|
|
7261
|
-
: props.modelValue === props.trueValue
|
|
7280
|
+
: vue.toRaw(props.modelValue) === vue.toRaw(props.trueValue)
|
|
7262
7281
|
));
|
|
7263
7282
|
|
|
7264
7283
|
const isFalse = vue.computed(() => (
|
|
7265
7284
|
modelIsArray.value === true
|
|
7266
7285
|
? index.value === -1
|
|
7267
|
-
: props.modelValue === props.falseValue
|
|
7286
|
+
: vue.toRaw(props.modelValue) === vue.toRaw(props.falseValue)
|
|
7268
7287
|
));
|
|
7269
7288
|
|
|
7270
7289
|
const isIndeterminate = vue.computed(() =>
|
|
@@ -8381,7 +8400,7 @@
|
|
|
8381
8400
|
&& innerMin.value < innerMax.value
|
|
8382
8401
|
));
|
|
8383
8402
|
|
|
8384
|
-
const decimals = vue.computed(() => (String(props.step).trim(
|
|
8403
|
+
const decimals = vue.computed(() => (String(props.step).trim().split('.')[ 1 ] || '').length);
|
|
8385
8404
|
const step = vue.computed(() => (props.step === 0 ? 1 : props.step));
|
|
8386
8405
|
const tabindex = vue.computed(() => (editable.value === true ? props.tabindex || 0 : -1));
|
|
8387
8406
|
|
|
@@ -11958,7 +11977,7 @@
|
|
|
11958
11977
|
const date = new Date(
|
|
11959
11978
|
d.year,
|
|
11960
11979
|
d.month === null ? null : d.month - 1,
|
|
11961
|
-
d.day,
|
|
11980
|
+
d.day === null ? 1 : d.day,
|
|
11962
11981
|
d.hour,
|
|
11963
11982
|
d.minute,
|
|
11964
11983
|
d.second,
|
|
@@ -14370,6 +14389,7 @@
|
|
|
14370
14389
|
|
|
14371
14390
|
persistent: Boolean,
|
|
14372
14391
|
autoClose: Boolean,
|
|
14392
|
+
allowFocusOutside: Boolean,
|
|
14373
14393
|
|
|
14374
14394
|
noEscDismiss: Boolean,
|
|
14375
14395
|
noBackdropDismiss: Boolean,
|
|
@@ -14674,7 +14694,8 @@
|
|
|
14674
14694
|
function onFocusChange (evt) {
|
|
14675
14695
|
// the focus is not in a vue child component
|
|
14676
14696
|
if (
|
|
14677
|
-
|
|
14697
|
+
props.allowFocusOutside !== true
|
|
14698
|
+
&& portalIsAccessible.value === true
|
|
14678
14699
|
&& childHasFocus(innerRef.value, evt.target) !== true
|
|
14679
14700
|
) {
|
|
14680
14701
|
focus('[tabindex]:not([tabindex="-1"])');
|
|
@@ -16088,7 +16109,10 @@
|
|
|
16088
16109
|
default: 'div'
|
|
16089
16110
|
},
|
|
16090
16111
|
|
|
16091
|
-
active:
|
|
16112
|
+
active: {
|
|
16113
|
+
type: Boolean,
|
|
16114
|
+
default: null
|
|
16115
|
+
},
|
|
16092
16116
|
|
|
16093
16117
|
clickable: Boolean,
|
|
16094
16118
|
dense: Boolean,
|
|
@@ -16126,7 +16150,7 @@
|
|
|
16126
16150
|
+ (props.dense === true ? ' q-item--dense' : '')
|
|
16127
16151
|
+ (isDark.value === true ? ' q-item--dark' : '')
|
|
16128
16152
|
+ (
|
|
16129
|
-
hasLink.value === true
|
|
16153
|
+
hasLink.value === true && props.active === null
|
|
16130
16154
|
? linkClass.value
|
|
16131
16155
|
: (
|
|
16132
16156
|
props.active === true
|
|
@@ -17029,27 +17053,12 @@
|
|
|
17029
17053
|
}
|
|
17030
17054
|
}
|
|
17031
17055
|
|
|
17032
|
-
function
|
|
17056
|
+
function onPointerStart () {
|
|
17033
17057
|
offsetBottom = void 0;
|
|
17034
17058
|
}
|
|
17035
17059
|
|
|
17036
|
-
function
|
|
17060
|
+
function onSelectionchange (e) {
|
|
17037
17061
|
eVm.caret.save();
|
|
17038
|
-
emit('mouseup', e);
|
|
17039
|
-
}
|
|
17040
|
-
|
|
17041
|
-
function onTouchstartPassive () {
|
|
17042
|
-
offsetBottom = void 0;
|
|
17043
|
-
}
|
|
17044
|
-
|
|
17045
|
-
function onKeyup (e) {
|
|
17046
|
-
eVm.caret.save();
|
|
17047
|
-
emit('keyup', e);
|
|
17048
|
-
}
|
|
17049
|
-
|
|
17050
|
-
function onTouchend (e) {
|
|
17051
|
-
eVm.caret.save();
|
|
17052
|
-
emit('touchend', e);
|
|
17053
17062
|
}
|
|
17054
17063
|
|
|
17055
17064
|
function setContent (v, restorePosition) {
|
|
@@ -17106,6 +17115,12 @@
|
|
|
17106
17115
|
eVm.caret = proxy.caret = new Caret(contentRef.value, eVm);
|
|
17107
17116
|
setContent(props.modelValue);
|
|
17108
17117
|
refreshToolbar();
|
|
17118
|
+
|
|
17119
|
+
document.addEventListener('selectionchange', onSelectionchange);
|
|
17120
|
+
});
|
|
17121
|
+
|
|
17122
|
+
vue.onBeforeUnmount(() => {
|
|
17123
|
+
document.removeEventListener('selectionchange', onSelectionchange);
|
|
17109
17124
|
});
|
|
17110
17125
|
|
|
17111
17126
|
return () => {
|
|
@@ -17159,13 +17174,8 @@
|
|
|
17159
17174
|
onFocus,
|
|
17160
17175
|
|
|
17161
17176
|
// clean saved scroll position
|
|
17162
|
-
onMousedown,
|
|
17163
|
-
onTouchstartPassive
|
|
17164
|
-
|
|
17165
|
-
// save caret
|
|
17166
|
-
onMouseup,
|
|
17167
|
-
onKeyup,
|
|
17168
|
-
onTouchend
|
|
17177
|
+
onMousedown: onPointerStart,
|
|
17178
|
+
onTouchstartPassive: onPointerStart
|
|
17169
17179
|
})
|
|
17170
17180
|
])
|
|
17171
17181
|
}
|
|
@@ -18819,6 +18829,7 @@
|
|
|
18819
18829
|
+ (props.square === true ? ' q-uploader--square no-border-radius' : '')
|
|
18820
18830
|
+ (props.flat === true ? ' q-uploader--flat no-shadow' : '')
|
|
18821
18831
|
+ (props.disable === true ? ' disabled q-uploader--disable' : '')
|
|
18832
|
+
+ (dnd.value === true ? ' q-uploader--dnd' : '')
|
|
18822
18833
|
);
|
|
18823
18834
|
|
|
18824
18835
|
const colorClass = vue.computed(() =>
|
|
@@ -19009,28 +19020,32 @@
|
|
|
19009
19020
|
|
|
19010
19021
|
return [
|
|
19011
19022
|
vue.h('div', {
|
|
19012
|
-
class: 'q-uploader__header-content
|
|
19023
|
+
class: 'q-uploader__header-content column'
|
|
19013
19024
|
}, [
|
|
19014
|
-
|
|
19015
|
-
|
|
19016
|
-
|
|
19017
|
-
|
|
19018
|
-
|
|
19019
|
-
: null,
|
|
19025
|
+
vue.h('div', {
|
|
19026
|
+
class: 'flex flex-center no-wrap q-gutter-xs'
|
|
19027
|
+
}, [
|
|
19028
|
+
getBtn(state.queuedFiles.value.length > 0, 'removeQueue', removeQueuedFiles),
|
|
19029
|
+
getBtn(state.uploadedFiles.value.length > 0, 'removeUploaded', removeUploadedFiles),
|
|
19020
19030
|
|
|
19021
|
-
|
|
19022
|
-
|
|
19023
|
-
? vue.h('div', { class: 'q-uploader__title' }, [ props.label ])
|
|
19031
|
+
state.isUploading.value === true
|
|
19032
|
+
? vue.h(QSpinner, { class: 'q-uploader__spinner' })
|
|
19024
19033
|
: null,
|
|
19025
19034
|
|
|
19026
|
-
vue.h('div', { class: '
|
|
19027
|
-
|
|
19028
|
-
|
|
19029
|
-
|
|
19035
|
+
vue.h('div', { class: 'col column justify-center' }, [
|
|
19036
|
+
props.label !== void 0
|
|
19037
|
+
? vue.h('div', { class: 'q-uploader__title' }, [ props.label ])
|
|
19038
|
+
: null,
|
|
19030
19039
|
|
|
19031
|
-
|
|
19032
|
-
|
|
19033
|
-
|
|
19040
|
+
vue.h('div', { class: 'q-uploader__subtitle' }, [
|
|
19041
|
+
uploadSizeLabel.value + ' / ' + uploadProgressLabel.value
|
|
19042
|
+
])
|
|
19043
|
+
]),
|
|
19044
|
+
|
|
19045
|
+
getBtn(canAddFiles.value, 'add'),
|
|
19046
|
+
getBtn(props.hideUploadBtn === false && canUpload.value === true, 'upload', state.upload),
|
|
19047
|
+
getBtn(state.isUploading.value, 'clear', state.abort)
|
|
19048
|
+
])
|
|
19034
19049
|
])
|
|
19035
19050
|
]
|
|
19036
19051
|
}
|
|
@@ -21005,6 +21020,7 @@
|
|
|
21005
21020
|
vue.h('div', {
|
|
21006
21021
|
ref: state.targetRef,
|
|
21007
21022
|
class: 'q-field__native row',
|
|
21023
|
+
tabindex: -1,
|
|
21008
21024
|
...state.splitAttrs.attributes.value,
|
|
21009
21025
|
'data-autofocus': props.autofocus === true || void 0
|
|
21010
21026
|
}, slots.control(controlSlotScope.value))
|
|
@@ -21115,7 +21131,7 @@
|
|
|
21115
21131
|
const labelAttrs = state.getControl === void 0 && slots.control === void 0
|
|
21116
21132
|
? {
|
|
21117
21133
|
...state.splitAttrs.attributes.value,
|
|
21118
|
-
'data-autofocus': props.autofocus,
|
|
21134
|
+
'data-autofocus': props.autofocus === true || void 0,
|
|
21119
21135
|
...attributes.value
|
|
21120
21136
|
}
|
|
21121
21137
|
: attributes.value;
|
|
@@ -21308,6 +21324,11 @@
|
|
|
21308
21324
|
disabled: state.editable.value !== true
|
|
21309
21325
|
}));
|
|
21310
21326
|
|
|
21327
|
+
const fieldClass = vue.computed(() =>
|
|
21328
|
+
'q-file q-field--auto-height'
|
|
21329
|
+
+ (dnd.value === true ? ' q-file--dnd' : '')
|
|
21330
|
+
);
|
|
21331
|
+
|
|
21311
21332
|
const isAppending = vue.computed(() =>
|
|
21312
21333
|
props.multiple === true && props.append === true
|
|
21313
21334
|
);
|
|
@@ -21440,7 +21461,7 @@
|
|
|
21440
21461
|
}
|
|
21441
21462
|
|
|
21442
21463
|
Object.assign(state, {
|
|
21443
|
-
fieldClass
|
|
21464
|
+
fieldClass,
|
|
21444
21465
|
emitValue,
|
|
21445
21466
|
hasValue,
|
|
21446
21467
|
inputRef,
|
|
@@ -22502,6 +22523,16 @@
|
|
|
22502
22523
|
|
|
22503
22524
|
if (isWorking.value === true) {
|
|
22504
22525
|
localScrollTarget.addEventListener('scroll', poll, passive$3);
|
|
22526
|
+
|
|
22527
|
+
if (props.reverse === true) {
|
|
22528
|
+
const
|
|
22529
|
+
scrollHeight = getScrollHeight(localScrollTarget),
|
|
22530
|
+
containerHeight = height(localScrollTarget);
|
|
22531
|
+
|
|
22532
|
+
setVerticalScrollPosition(localScrollTarget, scrollHeight - containerHeight);
|
|
22533
|
+
}
|
|
22534
|
+
|
|
22535
|
+
immediatePoll();
|
|
22505
22536
|
}
|
|
22506
22537
|
}
|
|
22507
22538
|
|
|
@@ -22572,16 +22603,6 @@
|
|
|
22572
22603
|
setDebounce(props.debounce);
|
|
22573
22604
|
|
|
22574
22605
|
updateScrollTarget();
|
|
22575
|
-
|
|
22576
|
-
if (props.reverse === true) {
|
|
22577
|
-
const
|
|
22578
|
-
scrollHeight = getScrollHeight(localScrollTarget),
|
|
22579
|
-
containerHeight = height(localScrollTarget);
|
|
22580
|
-
|
|
22581
|
-
setVerticalScrollPosition(localScrollTarget, scrollHeight - containerHeight);
|
|
22582
|
-
}
|
|
22583
|
-
|
|
22584
|
-
immediatePoll();
|
|
22585
22606
|
});
|
|
22586
22607
|
|
|
22587
22608
|
return () => {
|
|
@@ -23219,27 +23240,28 @@
|
|
|
23219
23240
|
const isJapanese = /[\u3000-\u303f\u3040-\u309f\u30a0-\u30ff\uff00-\uff9f\u4e00-\u9faf\u3400-\u4dbf]/;
|
|
23220
23241
|
const isChinese = /[\u4e00-\u9fff\u3400-\u4dbf\u{20000}-\u{2a6df}\u{2a700}-\u{2b73f}\u{2b740}-\u{2b81f}\u{2b820}-\u{2ceaf}\uf900-\ufaff\u3300-\u33ff\ufe30-\ufe4f\uf900-\ufaff\u{2f800}-\u{2fa1f}]/u;
|
|
23221
23242
|
const isKorean = /[\u3131-\u314e\u314f-\u3163\uac00-\ud7a3]/;
|
|
23243
|
+
const isPlainText = /[a-z0-9_ -]$/i;
|
|
23222
23244
|
|
|
23223
23245
|
function useKeyComposition (onInput) {
|
|
23224
23246
|
return function onComposition (e) {
|
|
23225
23247
|
if (e.type === 'compositionend' || e.type === 'change') {
|
|
23226
|
-
if (e.target.
|
|
23227
|
-
e.target.
|
|
23248
|
+
if (e.target.qComposing !== true) { return }
|
|
23249
|
+
e.target.qComposing = false;
|
|
23228
23250
|
onInput(e);
|
|
23229
23251
|
}
|
|
23230
|
-
else if (
|
|
23231
|
-
|
|
23232
|
-
|
|
23233
|
-
|
|
23234
|
-
|
|
23235
|
-
|
|
23236
|
-
|
|
23237
|
-
e.
|
|
23252
|
+
else if (
|
|
23253
|
+
e.type === 'compositionupdate'
|
|
23254
|
+
&& e.target.qComposing !== true
|
|
23255
|
+
&& typeof e.data === 'string'
|
|
23256
|
+
) {
|
|
23257
|
+
const isComposing = client.is.firefox === true
|
|
23258
|
+
? isPlainText.test(e.data) === false
|
|
23259
|
+
: isJapanese.test(e.data) === true || isChinese.test(e.data) === true || isKorean.test(e.data) === true;
|
|
23260
|
+
|
|
23261
|
+
if (isComposing === true) {
|
|
23262
|
+
e.target.qComposing = true;
|
|
23238
23263
|
}
|
|
23239
23264
|
}
|
|
23240
|
-
else {
|
|
23241
|
-
e.target.composing = true;
|
|
23242
|
-
}
|
|
23243
23265
|
}
|
|
23244
23266
|
}
|
|
23245
23267
|
|
|
@@ -23441,7 +23463,7 @@
|
|
|
23441
23463
|
}
|
|
23442
23464
|
|
|
23443
23465
|
function onInput (e) {
|
|
23444
|
-
if (!e || !e.target || e.target.
|
|
23466
|
+
if (!e || !e.target || e.target.qComposing === true) {
|
|
23445
23467
|
return
|
|
23446
23468
|
}
|
|
23447
23469
|
|
|
@@ -23486,6 +23508,8 @@
|
|
|
23486
23508
|
}
|
|
23487
23509
|
|
|
23488
23510
|
if (props.modelValue !== val && emitCachedValue !== val) {
|
|
23511
|
+
emitCachedValue = val;
|
|
23512
|
+
|
|
23489
23513
|
stopWatcher === true && (stopValueWatcher = true);
|
|
23490
23514
|
emit('update:modelValue', val);
|
|
23491
23515
|
|
|
@@ -23517,13 +23541,16 @@
|
|
|
23517
23541
|
const inp = inputRef.value;
|
|
23518
23542
|
if (inp !== null) {
|
|
23519
23543
|
const parentStyle = inp.parentNode.style;
|
|
23544
|
+
const { overflow } = inp.style;
|
|
23520
23545
|
|
|
23521
23546
|
// reset height of textarea to a small size to detect the real height
|
|
23522
23547
|
// but keep the total control size the same
|
|
23523
23548
|
parentStyle.marginBottom = (inp.scrollHeight - 1) + 'px';
|
|
23524
23549
|
inp.style.height = '1px';
|
|
23550
|
+
inp.style.overflow = 'hidden';
|
|
23525
23551
|
|
|
23526
23552
|
inp.style.height = inp.scrollHeight + 'px';
|
|
23553
|
+
inp.style.overflow = overflow;
|
|
23527
23554
|
parentStyle.marginBottom = '';
|
|
23528
23555
|
}
|
|
23529
23556
|
}
|
|
@@ -24485,7 +24512,8 @@
|
|
|
24485
24512
|
const layout = vue.h('div', {
|
|
24486
24513
|
class: classes.value,
|
|
24487
24514
|
style: style.value,
|
|
24488
|
-
ref: props.container === true ? void 0 : rootRef
|
|
24515
|
+
ref: props.container === true ? void 0 : rootRef,
|
|
24516
|
+
tabindex: -1
|
|
24489
24517
|
}, content);
|
|
24490
24518
|
|
|
24491
24519
|
if (props.container === true) {
|
|
@@ -24648,7 +24676,7 @@
|
|
|
24648
24676
|
const rootRef = vue.ref(null);
|
|
24649
24677
|
const { refocusTargetEl, refocusTarget } = useRefocusTarget(props, rootRef);
|
|
24650
24678
|
|
|
24651
|
-
const isTrue = vue.computed(() => props.modelValue === props.val);
|
|
24679
|
+
const isTrue = vue.computed(() => vue.toRaw(props.modelValue) === vue.toRaw(props.val));
|
|
24652
24680
|
|
|
24653
24681
|
const classes = vue.computed(() =>
|
|
24654
24682
|
'q-radio cursor-pointer no-outline row inline no-wrap items-center'
|
|
@@ -27490,8 +27518,13 @@
|
|
|
27490
27518
|
const setOverflowAnchor = window.getComputedStyle(document.body).overflowAnchor === void 0
|
|
27491
27519
|
? noop
|
|
27492
27520
|
: function (contentEl, index) {
|
|
27493
|
-
|
|
27494
|
-
|
|
27521
|
+
if (contentEl === null) {
|
|
27522
|
+
return
|
|
27523
|
+
}
|
|
27524
|
+
|
|
27525
|
+
cancelAnimationFrame(contentEl._qOverflowAnimationFrame);
|
|
27526
|
+
contentEl._qOverflowAnimationFrame = requestAnimationFrame(() => {
|
|
27527
|
+
if (contentEl === null) {
|
|
27495
27528
|
return
|
|
27496
27529
|
}
|
|
27497
27530
|
|
|
@@ -27885,7 +27918,7 @@
|
|
|
27885
27918
|
contentEl.addEventListener('focusout', onBlurRefocusFn);
|
|
27886
27919
|
|
|
27887
27920
|
setTimeout(() => {
|
|
27888
|
-
contentEl !==
|
|
27921
|
+
contentEl !== null && contentEl.removeEventListener('focusout', onBlurRefocusFn);
|
|
27889
27922
|
});
|
|
27890
27923
|
}
|
|
27891
27924
|
|
|
@@ -27998,7 +28031,7 @@
|
|
|
27998
28031
|
}
|
|
27999
28032
|
|
|
28000
28033
|
function onBlurRefocusFn () {
|
|
28001
|
-
contentRef.value !== void 0 && contentRef.value.focus();
|
|
28034
|
+
contentRef.value !== null && contentRef.value !== void 0 && contentRef.value.focus();
|
|
28002
28035
|
}
|
|
28003
28036
|
|
|
28004
28037
|
function localResetVirtualScroll (toIndex, fullReset) {
|
|
@@ -28314,7 +28347,7 @@
|
|
|
28314
28347
|
|
|
28315
28348
|
emits: [
|
|
28316
28349
|
...useFieldEmits,
|
|
28317
|
-
'add', 'remove', 'input-value',
|
|
28350
|
+
'add', 'remove', 'input-value', 'new-value',
|
|
28318
28351
|
'keyup', 'keypress', 'keydown',
|
|
28319
28352
|
'filter-abort'
|
|
28320
28353
|
],
|
|
@@ -28352,7 +28385,7 @@
|
|
|
28352
28385
|
|
|
28353
28386
|
const virtualScrollItemSizeComputed = vue.computed(() => (
|
|
28354
28387
|
props.virtualScrollItemSize === void 0
|
|
28355
|
-
? (props.
|
|
28388
|
+
? (props.optionsDense === true ? 24 : 48)
|
|
28356
28389
|
: props.virtualScrollItemSize
|
|
28357
28390
|
));
|
|
28358
28391
|
|
|
@@ -28362,7 +28395,6 @@
|
|
|
28362
28395
|
localResetVirtualScroll,
|
|
28363
28396
|
padVirtualScroll,
|
|
28364
28397
|
onVirtualScrollEvt,
|
|
28365
|
-
reset,
|
|
28366
28398
|
scrollTo,
|
|
28367
28399
|
setVirtualScrollSize
|
|
28368
28400
|
} = useVirtualScroll({
|
|
@@ -28456,15 +28488,23 @@
|
|
|
28456
28488
|
|
|
28457
28489
|
const tabindex = vue.computed(() => (state.focused.value === true ? props.tabindex : -1));
|
|
28458
28490
|
|
|
28459
|
-
const comboboxAttrs = vue.computed(() =>
|
|
28460
|
-
|
|
28461
|
-
|
|
28462
|
-
|
|
28463
|
-
|
|
28464
|
-
|
|
28465
|
-
|
|
28466
|
-
|
|
28467
|
-
|
|
28491
|
+
const comboboxAttrs = vue.computed(() => {
|
|
28492
|
+
const attrs = {
|
|
28493
|
+
tabindex: props.tabindex,
|
|
28494
|
+
role: 'combobox',
|
|
28495
|
+
'aria-label': props.label,
|
|
28496
|
+
'aria-autocomplete': props.useInput === true ? 'list' : 'none',
|
|
28497
|
+
'aria-expanded': menu.value === true ? 'true' : 'false',
|
|
28498
|
+
'aria-owns': `${ state.targetUid.value }_lb`,
|
|
28499
|
+
'aria-controls': `${ state.targetUid.value }_lb`
|
|
28500
|
+
};
|
|
28501
|
+
|
|
28502
|
+
if (optionIndex.value >= 0) {
|
|
28503
|
+
attrs[ 'aria-activedescendant' ] = `${ state.targetUid.value }_${ optionIndex.value }`;
|
|
28504
|
+
}
|
|
28505
|
+
|
|
28506
|
+
return attrs
|
|
28507
|
+
});
|
|
28468
28508
|
|
|
28469
28509
|
const listboxAttrs = vue.computed(() => {
|
|
28470
28510
|
const attrs = {
|
|
@@ -29200,7 +29240,7 @@
|
|
|
29200
29240
|
function onInput (e) {
|
|
29201
29241
|
clearTimeout(inputTimer);
|
|
29202
29242
|
|
|
29203
|
-
if (e && e.target && e.target.
|
|
29243
|
+
if (e && e.target && e.target.qComposing === true) {
|
|
29204
29244
|
return
|
|
29205
29245
|
}
|
|
29206
29246
|
|
|
@@ -29529,13 +29569,18 @@
|
|
|
29529
29569
|
setOptionIndex(optionIndex);
|
|
29530
29570
|
}
|
|
29531
29571
|
|
|
29532
|
-
function rerenderMenu () {
|
|
29572
|
+
function rerenderMenu (newLength, oldLength) {
|
|
29533
29573
|
if (menu.value === true && state.innerLoading.value === false) {
|
|
29534
|
-
|
|
29574
|
+
localResetVirtualScroll(-1, true);
|
|
29535
29575
|
|
|
29536
29576
|
vue.nextTick(() => {
|
|
29537
29577
|
if (menu.value === true && state.innerLoading.value === false) {
|
|
29538
|
-
|
|
29578
|
+
if (newLength > oldLength) {
|
|
29579
|
+
localResetVirtualScroll();
|
|
29580
|
+
}
|
|
29581
|
+
else {
|
|
29582
|
+
updateMenu(true);
|
|
29583
|
+
}
|
|
29539
29584
|
}
|
|
29540
29585
|
});
|
|
29541
29586
|
}
|
|
@@ -33579,7 +33624,6 @@
|
|
|
33579
33624
|
|
|
33580
33625
|
const __containerClass = vue.computed(() =>
|
|
33581
33626
|
`q-table__container q-table--${ props.separator }-separator column no-wrap`
|
|
33582
|
-
+ (props.loading === true ? ' q-table--loading' : '')
|
|
33583
33627
|
+ (props.grid === true ? ' q-table--grid' : cardDefaultClass.value)
|
|
33584
33628
|
+ (isDark.value === true ? ' q-table--dark' : '')
|
|
33585
33629
|
+ (props.dense === true ? ' q-table--dense' : '')
|
|
@@ -38060,19 +38104,31 @@
|
|
|
38060
38104
|
const applyState = cmd => {
|
|
38061
38105
|
if (dialogRef.value !== null && dialogRef.value[ cmd ] !== void 0) {
|
|
38062
38106
|
dialogRef.value[ cmd ]();
|
|
38107
|
+
return
|
|
38063
38108
|
}
|
|
38064
|
-
|
|
38109
|
+
|
|
38110
|
+
const target = vm.$.subTree;
|
|
38111
|
+
|
|
38112
|
+
if (target && target.component) {
|
|
38065
38113
|
// account for "script setup" way of declaring component
|
|
38066
|
-
|
|
38067
|
-
|
|
38068
|
-
|
|
38069
|
-
|
|
38070
|
-
|
|
38071
|
-
|
|
38072
|
-
|
|
38073
|
-
|
|
38074
|
-
|
|
38114
|
+
if (target.component.proxy && target.component.proxy[ cmd ]) {
|
|
38115
|
+
target.component.proxy[ cmd ]();
|
|
38116
|
+
return
|
|
38117
|
+
}
|
|
38118
|
+
|
|
38119
|
+
// account for "script setup" + async component way of declaring component
|
|
38120
|
+
if (
|
|
38121
|
+
target.component.subTree &&
|
|
38122
|
+
target.component.subTree.component &&
|
|
38123
|
+
target.component.subTree.component.proxy &&
|
|
38124
|
+
target.component.subTree.component.proxy[ cmd ]
|
|
38125
|
+
) {
|
|
38126
|
+
target.component.subTree.component.proxy[ cmd ]();
|
|
38127
|
+
return
|
|
38128
|
+
}
|
|
38075
38129
|
}
|
|
38130
|
+
|
|
38131
|
+
console.error('[Quasar] Incorrectly defined Dialog component');
|
|
38076
38132
|
};
|
|
38077
38133
|
|
|
38078
38134
|
const
|
|
@@ -39675,7 +39731,7 @@
|
|
|
39675
39731
|
});
|
|
39676
39732
|
|
|
39677
39733
|
var index_umd = {
|
|
39678
|
-
version: '2.
|
|
39734
|
+
version: '2.7.2',
|
|
39679
39735
|
install (app, opts) {
|
|
39680
39736
|
installQuasar(app, {
|
|
39681
39737
|
components,
|