quasar 2.3.2 → 2.4.1
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/AppFullscreen.json +15 -8
- package/dist/api/BottomSheet.json +6 -0
- package/dist/api/Cookies.json +4 -3
- package/dist/api/Dialog.json +24 -10
- package/dist/api/Loading.json +0 -2
- package/dist/api/LoadingBar.json +8 -3
- package/dist/api/Morph.json +14 -7
- package/dist/api/Mutation.json +1 -1
- package/dist/api/Notify.json +41 -27
- package/dist/api/QAjaxBar.json +6 -3
- package/dist/api/QBreadcrumbs.json +8 -4
- package/dist/api/QBreadcrumbsEl.json +35 -12
- package/dist/api/QBtn.json +36 -17
- package/dist/api/QBtnDropdown.json +41 -20
- package/dist/api/QBtnToggle.json +7 -2
- package/dist/api/QCard.json +2 -1
- package/dist/api/QCardActions.json +2 -1
- package/dist/api/QCardSection.json +2 -1
- package/dist/api/QCarousel.json +10 -5
- package/dist/api/QCarouselControl.json +4 -2
- package/dist/api/QChatMessage.json +0 -4
- package/dist/api/QCheckbox.json +8 -4
- package/dist/api/QChip.json +2 -1
- package/dist/api/QCircularProgress.json +14 -7
- package/dist/api/QColor.json +6 -3
- package/dist/api/QDate.json +33 -5
- package/dist/api/QDialog.json +8 -4
- package/dist/api/QDrawer.json +10 -5
- package/dist/api/QEditor.json +10 -5
- package/dist/api/QExpansionItem.json +36 -13
- package/dist/api/QFab.json +41 -6
- package/dist/api/QFabAction.json +12 -2
- package/dist/api/QField.json +3 -1
- package/dist/api/QFile.json +8 -2
- package/dist/api/QFooter.json +2 -1
- package/dist/api/QForm.json +1 -1
- package/dist/api/QHeader.json +4 -2
- package/dist/api/QIcon.json +2 -1
- package/dist/api/QImg.json +8 -4
- package/dist/api/QInfiniteScroll.json +6 -3
- package/dist/api/QInnerLoading.json +8 -4
- package/dist/api/QInput.json +3 -1
- package/dist/api/QIntersection.json +4 -2
- package/dist/api/QItem.json +33 -11
- package/dist/api/QKnob.json +8 -4
- package/dist/api/QLayout.json +9 -1
- package/dist/api/QLinearProgress.json +4 -2
- package/dist/api/QMarkupTable.json +2 -1
- package/dist/api/QMenu.json +8 -4
- package/dist/api/QNoSsr.json +2 -1
- package/dist/api/QOptionGroup.json +76 -5
- package/dist/api/QPage.json +2 -1
- package/dist/api/QPageScroller.json +8 -4
- package/dist/api/QPageSticky.json +2 -1
- package/dist/api/QPagination.json +10 -6
- package/dist/api/QParallax.json +2 -1
- package/dist/api/QPopupEdit.json +5 -2
- package/dist/api/QPopupProxy.json +7 -4
- package/dist/api/QRange.json +600 -111
- package/dist/api/QRating.json +5 -2
- package/dist/api/QResizeObserver.json +4 -1
- package/dist/api/QRouteTab.json +35 -13
- package/dist/api/QScrollArea.json +29 -6
- package/dist/api/QScrollObserver.json +13 -1
- package/dist/api/QSelect.json +76 -47
- package/dist/api/QSeparator.json +2 -1
- package/dist/api/QSkeleton.json +8 -4
- package/dist/api/QSlideItem.json +9 -0
- package/dist/api/QSlideTransition.json +2 -1
- package/dist/api/QSlider.json +512 -43
- package/dist/api/QSpinner.json +2 -1
- package/dist/api/QSplitter.json +4 -2
- package/dist/api/QStep.json +2 -1
- package/dist/api/QStepper.json +6 -3
- package/dist/api/QTab.json +4 -2
- package/dist/api/QTabPanels.json +6 -3
- package/dist/api/QTable.json +154 -88
- package/dist/api/QTabs.json +4 -2
- package/dist/api/QTime.json +16 -4
- package/dist/api/QTimeline.json +4 -2
- package/dist/api/QTimelineEntry.json +4 -2
- package/dist/api/QToggle.json +8 -4
- package/dist/api/QTooltip.json +18 -9
- package/dist/api/QTree.json +34 -19
- package/dist/api/QUploader.json +28 -6
- package/dist/api/QVirtualScroll.json +26 -11
- package/dist/api/ScrollFire.json +1 -1
- package/dist/api/TouchHold.json +2 -1
- package/dist/api/TouchRepeat.json +2 -1
- package/dist/api/TouchSwipe.json +2 -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 +268 -184
- package/dist/quasar.esm.prod.js +2 -2
- package/dist/quasar.prod.css +1 -1
- package/dist/quasar.rtl.css +340 -263
- package/dist/quasar.rtl.prod.css +1 -1
- package/dist/quasar.sass +272 -212
- package/dist/quasar.umd.js +16522 -16213
- package/dist/quasar.umd.prod.js +2 -2
- package/dist/ssr-directives/Morph.js +1 -1
- package/dist/transforms/loader-asset-urls.json +20 -0
- package/dist/types/api/cookies.d.ts +1 -1
- package/dist/types/api/slider.d.ts +46 -0
- package/dist/types/api/validation.d.ts +4 -0
- package/dist/types/api.d.ts +2 -0
- package/dist/types/composables.d.ts +3 -3
- package/dist/types/index.d.ts +759 -177
- package/dist/vetur/quasar-attributes.json +251 -83
- package/dist/vetur/quasar-tags.json +59 -17
- package/dist/web-types/web-types.json +587 -155
- package/package.json +1 -1
- package/src/api.extends.json +0 -1
- package/src/components/breadcrumbs/QBreadcrumbs.js +7 -2
- package/src/components/breadcrumbs/QBreadcrumbs.sass +0 -3
- package/src/components/breadcrumbs/QBreadcrumbsEl.js +14 -8
- package/src/components/btn/QBtn.js +6 -5
- package/src/components/btn/use-btn.js +21 -21
- package/src/components/btn/use-btn.json +22 -13
- package/src/components/btn-dropdown/QBtnDropdown.json +1 -0
- package/src/components/btn-toggle/QBtnToggle.json +3 -0
- package/src/components/checkbox/use-checkbox.js +1 -1
- package/src/components/chip/QChip.json +1 -2
- package/src/components/color/QColor.js +32 -26
- package/src/components/color/QColor.sass +10 -23
- package/src/components/date/QDate.json +25 -1
- package/src/components/date/QDate.sass +2 -0
- package/src/components/drawer/QDrawer.js +18 -15
- package/src/components/editor/QEditor.js +1 -1
- package/src/components/editor/QEditor.sass +10 -1
- package/src/components/expansion-item/QExpansionItem.js +4 -1
- package/src/components/expansion-item/QExpansionItem.json +2 -1
- package/src/components/fab/QFab.js +18 -12
- package/src/components/fab/QFab.json +36 -1
- package/src/components/fab/QFab.sass +1 -1
- package/src/components/fab/QFabAction.js +14 -7
- package/src/components/fab/QFabAction.json +10 -0
- package/src/components/field/QField.json +3 -3
- package/src/components/file/QFile.js +12 -5
- package/src/components/file/QFile.json +9 -6
- package/src/components/file/QFile.sass +4 -2
- package/src/components/footer/QFooter.js +1 -1
- package/src/components/form/QForm.json +2 -3
- package/src/components/header/QHeader.js +1 -1
- package/src/components/icon/QIcon.js +2 -2
- package/src/components/infinite-scroll/QInfiniteScroll.js +4 -5
- package/src/components/item/QItem.js +2 -3
- package/src/components/layout/QLayout.json +8 -1
- package/src/components/linear-progress/QLinearProgress.js +3 -2
- package/src/components/linear-progress/QLinearProgress.sass +1 -1
- package/src/components/option-group/QOptionGroup.js +3 -0
- package/src/components/option-group/QOptionGroup.json +48 -2
- package/src/components/pagination/QPagination.json +0 -1
- package/src/components/parallax/QParallax.js +4 -2
- package/src/components/popup-edit/QPopupEdit.js +2 -5
- package/src/components/popup-edit/QPopupEdit.json +1 -0
- package/src/components/popup-proxy/QPopupProxy.json +2 -1
- package/src/components/radio/QRadio.js +2 -7
- package/src/components/range/QRange.js +103 -222
- package/src/components/range/QRange.json +11 -121
- package/src/components/rating/QRating.json +1 -1
- package/src/components/resize-observer/QResizeObserver.json +2 -0
- package/src/components/scroll-area/QScrollArea.js +10 -13
- package/src/components/scroll-area/QScrollArea.json +29 -9
- package/src/components/scroll-observer/QScrollObserver.json +11 -0
- package/src/components/select/QSelect.json +41 -15
- package/src/components/slide-item/QSlideItem.json +9 -0
- package/src/components/slider/QSlider.js +46 -132
- package/src/components/slider/QSlider.json +1 -121
- package/src/components/slider/QSlider.sass +198 -132
- package/src/components/slider/use-slider.js +453 -109
- package/src/components/slider/use-slider.json +546 -0
- package/src/components/stepper/QStepper.js +3 -3
- package/src/components/stepper/QStepper.sass +24 -26
- package/src/components/table/QTable.js +27 -47
- package/src/components/table/QTable.json +104 -55
- package/src/components/table/table-pagination.js +4 -0
- package/src/components/tabs/QRouteTab.js +1 -2
- package/src/components/tabs/QRouteTab.json +0 -7
- package/src/components/tabs/QTabs.js +71 -20
- package/src/components/tabs/use-tab.js +26 -13
- package/src/components/time/QTime.json +8 -0
- package/src/components/tree/QTree.js +14 -12
- package/src/components/tree/QTree.json +26 -21
- package/src/components/tree/QTree.sass +45 -41
- package/src/components/uploader/QUploader.json +14 -2
- package/src/components/uploader/uploader-core.js +16 -9
- package/src/components/uploader/xhr-uploader-plugin.json +8 -3
- package/src/components/virtual-scroll/QVirtualScroll.json +15 -0
- package/src/components/virtual-scroll/QVirtualScroll.sass +1 -0
- package/src/components/virtual-scroll/use-virtual-scroll.js +30 -17
- package/src/components/virtual-scroll/use-virtual-scroll.json +7 -5
- package/src/composables/private/use-field.js +5 -5
- package/src/composables/private/use-file.js +20 -5
- package/src/composables/private/use-form.js +2 -3
- package/src/composables/private/use-fullscreen.js +15 -4
- package/src/composables/private/use-router-link.js +44 -23
- package/src/composables/private/use-router-link.json +26 -10
- package/src/composables/private/use-split-attrs.js +7 -10
- package/src/composables/private/use-validate.js +21 -15
- package/src/composables/private/use-validate.json +1 -0
- package/src/css/core/helpers.sass +3 -0
- package/src/css/core/positioning.sass +5 -0
- package/src/directives/Mutation.json +2 -3
- package/src/directives/ScrollFire.js +1 -0
- package/src/directives/ScrollFire.json +2 -3
- package/src/icon-set.js +2 -4
- package/src/plugins/AppFullscreen.js +70 -53
- package/src/plugins/AppFullscreen.json +8 -8
- package/src/plugins/AppVisibility.js +2 -3
- package/src/plugins/BottomSheet.js +3 -5
- package/src/plugins/Cookies.json +2 -2
- package/src/plugins/Dialog.js +3 -5
- package/src/plugins/Dialog.json +6 -5
- package/src/plugins/LoadingBar.js +17 -18
- package/src/plugins/LoadingBar.json +4 -3
- package/src/plugins/Notify.js +296 -295
- package/src/plugins/Notify.json +13 -19
- package/src/plugins/Platform.js +14 -14
- package/src/utils/date.js +4 -4
- package/src/utils/dom.js +2 -2
- package/src/utils/open-url.js +2 -2
- package/src/utils/patterns.js +1 -0
- package/src/utils/private/define-reactive-plugin.js +10 -8
- package/src/utils/private/global-dialog.js +6 -8
- package/src/utils/private/global-dialog.json +6 -0
- package/src/utils/private/inject-obj-prop.js +13 -0
- package/src/utils/private/is.js +2 -2
|
@@ -330,6 +330,13 @@ export default createComponent({
|
|
|
330
330
|
] ]
|
|
331
331
|
})
|
|
332
332
|
|
|
333
|
+
function updateBelowBreakpoint () {
|
|
334
|
+
updateLocal(belowBreakpoint, (
|
|
335
|
+
props.behavior === 'mobile'
|
|
336
|
+
|| (props.behavior !== 'desktop' && $layout.totalWidth.value <= props.breakpoint)
|
|
337
|
+
))
|
|
338
|
+
}
|
|
339
|
+
|
|
333
340
|
watch(belowBreakpoint, val => {
|
|
334
341
|
if (val === true) { // from lg to xs
|
|
335
342
|
lastDesktopState = showing.value
|
|
@@ -351,13 +358,6 @@ export default createComponent({
|
|
|
351
358
|
}
|
|
352
359
|
})
|
|
353
360
|
|
|
354
|
-
watch($layout.totalWidth, val => {
|
|
355
|
-
updateLocal(belowBreakpoint, (
|
|
356
|
-
props.behavior === 'mobile'
|
|
357
|
-
|| (props.behavior !== 'desktop' && val <= props.breakpoint)
|
|
358
|
-
))
|
|
359
|
-
})
|
|
360
|
-
|
|
361
361
|
watch(() => props.side, (newSide, oldSide) => {
|
|
362
362
|
if ($layout.instances[ oldSide ] === instance) {
|
|
363
363
|
$layout.instances[ oldSide ] = void 0
|
|
@@ -371,10 +371,20 @@ export default createComponent({
|
|
|
371
371
|
$layout[ newSide ].offset = offset.value
|
|
372
372
|
})
|
|
373
373
|
|
|
374
|
-
watch(() =>
|
|
374
|
+
watch($layout.totalWidth, () => {
|
|
375
|
+
if ($layout.isContainer.value === true || document.qScrollPrevented !== true) {
|
|
376
|
+
updateBelowBreakpoint()
|
|
377
|
+
}
|
|
378
|
+
})
|
|
379
|
+
|
|
380
|
+
watch(
|
|
381
|
+
() => props.behavior + props.breakpoint,
|
|
382
|
+
updateBelowBreakpoint
|
|
383
|
+
)
|
|
375
384
|
|
|
376
385
|
watch($layout.isContainer, val => {
|
|
377
386
|
showing.value === true && preventBodyScroll(val !== true)
|
|
387
|
+
val === true && updateBelowBreakpoint()
|
|
378
388
|
})
|
|
379
389
|
|
|
380
390
|
watch($layout.scrollbarWidth, () => {
|
|
@@ -430,13 +440,6 @@ export default createComponent({
|
|
|
430
440
|
}
|
|
431
441
|
}
|
|
432
442
|
|
|
433
|
-
function updateBelowBreakpoint () {
|
|
434
|
-
updateLocal(belowBreakpoint, (
|
|
435
|
-
props.behavior === 'mobile'
|
|
436
|
-
|| (props.behavior !== 'desktop' && $layout.totalWidth.value <= props.breakpoint)
|
|
437
|
-
))
|
|
438
|
-
}
|
|
439
|
-
|
|
440
443
|
function applyBackdrop (x) {
|
|
441
444
|
flagBackdropBg.value = x
|
|
442
445
|
}
|
|
@@ -502,7 +502,7 @@ export default createComponent({
|
|
|
502
502
|
return h('div', {
|
|
503
503
|
ref: rootRef,
|
|
504
504
|
class: classes.value,
|
|
505
|
-
style: { height: inFullscreen.value === true ? '
|
|
505
|
+
style: { height: inFullscreen.value === true ? '100%' : null },
|
|
506
506
|
...attributes.value,
|
|
507
507
|
onFocusin,
|
|
508
508
|
onFocusout
|
|
@@ -6,7 +6,9 @@
|
|
|
6
6
|
&.disabled
|
|
7
7
|
border-style: dashed
|
|
8
8
|
|
|
9
|
-
> div:first-child,
|
|
9
|
+
> div:first-child,
|
|
10
|
+
&__toolbars-container,
|
|
11
|
+
&__toolbars-container > div:first-child
|
|
10
12
|
border-top-left-radius: inherit
|
|
11
13
|
border-top-right-radius: inherit
|
|
12
14
|
|
|
@@ -17,14 +19,18 @@
|
|
|
17
19
|
border-bottom-left-radius: inherit
|
|
18
20
|
border-bottom-right-radius: inherit
|
|
19
21
|
overflow: auto
|
|
22
|
+
max-width: 100%
|
|
23
|
+
|
|
20
24
|
pre
|
|
21
25
|
white-space: pre-wrap
|
|
26
|
+
|
|
22
27
|
hr
|
|
23
28
|
border: 0
|
|
24
29
|
outline: 0
|
|
25
30
|
margin: 1px
|
|
26
31
|
height: 1px
|
|
27
32
|
background: $editor-hr-color
|
|
33
|
+
|
|
28
34
|
&:empty:not(:focus):before
|
|
29
35
|
content: attr(placeholder)
|
|
30
36
|
opacity: .7
|
|
@@ -33,6 +39,9 @@
|
|
|
33
39
|
border-bottom: 1px solid $editor-border-color
|
|
34
40
|
min-height: 32px
|
|
35
41
|
|
|
42
|
+
&__toolbars-container
|
|
43
|
+
max-width: 100%
|
|
44
|
+
|
|
36
45
|
.q-btn
|
|
37
46
|
margin: $editor-button-gutter
|
|
38
47
|
|
|
@@ -96,7 +96,10 @@ export default createComponent({
|
|
|
96
96
|
})
|
|
97
97
|
|
|
98
98
|
const hasLink = computed(() =>
|
|
99
|
-
props.disable !== true &&
|
|
99
|
+
props.disable !== true && (
|
|
100
|
+
props.href !== void 0
|
|
101
|
+
|| (props.to !== void 0 && props.to !== null && props.to !== '')
|
|
102
|
+
)
|
|
100
103
|
)
|
|
101
104
|
|
|
102
105
|
const linkProps = computed(() => {
|
|
@@ -7,8 +7,9 @@
|
|
|
7
7
|
|
|
8
8
|
"props": {
|
|
9
9
|
"model-value": {
|
|
10
|
+
"extends": "model-value",
|
|
10
11
|
"desc": "Model of the component defining 'open' state; Either use this property (along with a listener for 'update:modelValue' event) OR use v-model directive",
|
|
11
|
-
"
|
|
12
|
+
"required": false
|
|
12
13
|
},
|
|
13
14
|
|
|
14
15
|
"icon": {
|
|
@@ -59,6 +59,8 @@ export default createComponent({
|
|
|
59
59
|
hideOnRouteChange
|
|
60
60
|
})
|
|
61
61
|
|
|
62
|
+
const slotScope = computed(() => ({ opened: showing.value }))
|
|
63
|
+
|
|
62
64
|
const classes = computed(() =>
|
|
63
65
|
'q-fab z-fab row inline justify-center'
|
|
64
66
|
+ ` q-fab--align-${ props.verticalActionsAlign } ${ formClass.value }`
|
|
@@ -76,26 +78,30 @@ export default createComponent({
|
|
|
76
78
|
+ ` q-fab__icon-holder--${ showing.value === true ? 'opened' : 'closed' }`
|
|
77
79
|
)
|
|
78
80
|
|
|
81
|
+
function getIcon (kebab, camel) {
|
|
82
|
+
const slotFn = slots[ kebab ]
|
|
83
|
+
const classes = `q-fab__${ kebab } absolute-full`
|
|
84
|
+
|
|
85
|
+
return slotFn === void 0
|
|
86
|
+
? h(QIcon, { class: classes, name: props[ kebab ] || $q.iconSet.fab[ camel ] })
|
|
87
|
+
: h('div', { class: classes }, slotFn(slotScope.value))
|
|
88
|
+
}
|
|
89
|
+
|
|
79
90
|
function getTriggerContent () {
|
|
80
91
|
const child = []
|
|
81
92
|
|
|
82
93
|
props.hideIcon !== true && child.push(
|
|
83
94
|
h('div', { class: iconHolderClass.value }, [
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
name: props.icon || $q.iconSet.fab.icon
|
|
87
|
-
}),
|
|
88
|
-
|
|
89
|
-
h(QIcon, {
|
|
90
|
-
class: 'q-fab__active-icon absolute-full',
|
|
91
|
-
name: props.activeIcon || $q.iconSet.fab.activeIcon
|
|
92
|
-
})
|
|
95
|
+
getIcon('icon', 'icon'),
|
|
96
|
+
getIcon('active-icon', 'activeIcon')
|
|
93
97
|
])
|
|
94
98
|
)
|
|
95
99
|
|
|
96
|
-
props.label !== ''
|
|
97
|
-
|
|
98
|
-
|
|
100
|
+
if (props.label !== '' || slots.label !== void 0) {
|
|
101
|
+
child[ labelProps.value.action ](
|
|
102
|
+
h('div', labelProps.value.data, slots.label !== void 0 ? slots.label(slotScope.value) : [ props.label ])
|
|
103
|
+
)
|
|
104
|
+
}
|
|
99
105
|
|
|
100
106
|
return hMergeSlot(slots.tooltip, child)
|
|
101
107
|
}
|
|
@@ -3,8 +3,10 @@
|
|
|
3
3
|
|
|
4
4
|
"props": {
|
|
5
5
|
"model-value": {
|
|
6
|
+
"extends": "model-value",
|
|
6
7
|
"desc": "Controls state of fab actions (showing/hidden); Works best with v-model directive, otherwise use along listening to 'update:modelValue' event",
|
|
7
|
-
"category": "model"
|
|
8
|
+
"category": "model",
|
|
9
|
+
"required": false
|
|
8
10
|
},
|
|
9
11
|
|
|
10
12
|
"icon": {
|
|
@@ -52,6 +54,39 @@
|
|
|
52
54
|
|
|
53
55
|
"tooltip": {
|
|
54
56
|
"desc": "Slot specifically designed for a QTooltip"
|
|
57
|
+
},
|
|
58
|
+
|
|
59
|
+
"icon": {
|
|
60
|
+
"desc": "Slot for icon shown when FAB is closed; Suggestion: QIcon",
|
|
61
|
+
"scope": {
|
|
62
|
+
"opened": {
|
|
63
|
+
"type": "Boolean",
|
|
64
|
+
"desc": "FAB is opened"
|
|
65
|
+
}
|
|
66
|
+
},
|
|
67
|
+
"addedIn": "v2.4"
|
|
68
|
+
},
|
|
69
|
+
|
|
70
|
+
"active-icon": {
|
|
71
|
+
"desc": "Slot for icon shown when FAB is opened; Suggestion: QIcon",
|
|
72
|
+
"scope": {
|
|
73
|
+
"opened": {
|
|
74
|
+
"type": "Boolean",
|
|
75
|
+
"desc": "FAB is opened"
|
|
76
|
+
}
|
|
77
|
+
},
|
|
78
|
+
"addedIn": "v2.4"
|
|
79
|
+
},
|
|
80
|
+
|
|
81
|
+
"label": {
|
|
82
|
+
"desc": "Slot for label",
|
|
83
|
+
"scope": {
|
|
84
|
+
"opened": {
|
|
85
|
+
"type": "Boolean",
|
|
86
|
+
"desc": "FAB is opened"
|
|
87
|
+
}
|
|
88
|
+
},
|
|
89
|
+
"addedIn": "v2.4"
|
|
55
90
|
}
|
|
56
91
|
},
|
|
57
92
|
|
|
@@ -66,13 +66,20 @@ export default createComponent({
|
|
|
66
66
|
function getContent () {
|
|
67
67
|
const child = []
|
|
68
68
|
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
69
|
+
if (slots.icon !== void 0) {
|
|
70
|
+
child.push(slots.icon())
|
|
71
|
+
}
|
|
72
|
+
else if (props.icon !== '') {
|
|
73
|
+
child.push(
|
|
74
|
+
h(QIcon, { name: props.icon })
|
|
75
|
+
)
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
if (props.label !== '' || slots.label !== void 0) {
|
|
79
|
+
child[ labelProps.value.action ](
|
|
80
|
+
h('div', labelProps.value.data, slots.label !== void 0 ? slots.label() : [ props.label ])
|
|
81
|
+
)
|
|
82
|
+
}
|
|
76
83
|
|
|
77
84
|
return hMergeSlot(slots.default, child)
|
|
78
85
|
}
|
|
@@ -35,6 +35,16 @@
|
|
|
35
35
|
"slots": {
|
|
36
36
|
"default": {
|
|
37
37
|
"desc": "Suggestion for this slot: QTooltip"
|
|
38
|
+
},
|
|
39
|
+
|
|
40
|
+
"icon": {
|
|
41
|
+
"desc": "Slot for icon; Suggestion: QIcon",
|
|
42
|
+
"addedIn": "v2.4"
|
|
43
|
+
},
|
|
44
|
+
|
|
45
|
+
"label": {
|
|
46
|
+
"desc": "Slot for label",
|
|
47
|
+
"addedIn": "v2.4"
|
|
38
48
|
}
|
|
39
49
|
},
|
|
40
50
|
|
|
@@ -30,9 +30,8 @@
|
|
|
30
30
|
"examples": [ "qf_363270c0-7a83-62b1-8dcf-6dfd64ee38fa" ]
|
|
31
31
|
},
|
|
32
32
|
"field": {
|
|
33
|
-
"type": "
|
|
34
|
-
"desc": "DOM element of the field"
|
|
35
|
-
"__exemption": [ "examples" ]
|
|
33
|
+
"type": "Element",
|
|
34
|
+
"desc": "DOM element of the field"
|
|
36
35
|
},
|
|
37
36
|
"editable": {
|
|
38
37
|
"type": "Boolean",
|
|
@@ -57,6 +56,7 @@
|
|
|
57
56
|
"params": {
|
|
58
57
|
"value": {
|
|
59
58
|
"type": "Any",
|
|
59
|
+
"required": true,
|
|
60
60
|
"desc": "Value to be emitted",
|
|
61
61
|
"examples": [ 0, "Changed text" ]
|
|
62
62
|
}
|
|
@@ -9,6 +9,7 @@ import useFileFormDomProps from '../../composables/private/use-file-dom-props.js
|
|
|
9
9
|
|
|
10
10
|
import { createComponent } from '../../utils/private/create.js'
|
|
11
11
|
import { humanStorageSize } from '../../utils/format.js'
|
|
12
|
+
import { prevent } from '../../utils/event.js'
|
|
12
13
|
|
|
13
14
|
export default createComponent({
|
|
14
15
|
name: 'QFile',
|
|
@@ -122,9 +123,16 @@ export default createComponent({
|
|
|
122
123
|
emit('update:modelValue', props.multiple === true ? files : files[ 0 ])
|
|
123
124
|
}
|
|
124
125
|
|
|
126
|
+
function onKeydown (e) {
|
|
127
|
+
// prevent form submit if ENTER is pressed
|
|
128
|
+
e.keyCode === 13 && prevent(e)
|
|
129
|
+
}
|
|
130
|
+
|
|
125
131
|
function onKeyup (e) {
|
|
126
|
-
// only on ENTER
|
|
127
|
-
e.keyCode === 13
|
|
132
|
+
// only on ENTER and SPACE to match native input field
|
|
133
|
+
if (e.keyCode === 13 || e.keyCode === 32) {
|
|
134
|
+
pickFiles(e)
|
|
135
|
+
}
|
|
128
136
|
}
|
|
129
137
|
|
|
130
138
|
function getFileInput () {
|
|
@@ -158,8 +166,7 @@ export default createComponent({
|
|
|
158
166
|
return [
|
|
159
167
|
h('input', {
|
|
160
168
|
class: [ props.inputClass, 'q-file__filler' ],
|
|
161
|
-
style: props.inputStyle
|
|
162
|
-
tabindex: -1
|
|
169
|
+
style: props.inputStyle
|
|
163
170
|
})
|
|
164
171
|
]
|
|
165
172
|
}
|
|
@@ -256,7 +263,7 @@ export default createComponent({
|
|
|
256
263
|
}
|
|
257
264
|
|
|
258
265
|
if (state.editable.value === true) {
|
|
259
|
-
Object.assign(data, { onDragover, onKeyup })
|
|
266
|
+
Object.assign(data, { onDragover, onKeydown, onKeyup })
|
|
260
267
|
}
|
|
261
268
|
|
|
262
269
|
return h('div', data, [ getInput() ].concat(getSelection()))
|
|
@@ -42,16 +42,19 @@
|
|
|
42
42
|
"definition": {
|
|
43
43
|
"totalSize": {
|
|
44
44
|
"type": "String",
|
|
45
|
+
"required": true,
|
|
45
46
|
"desc": "The total size of files in human readable format",
|
|
46
47
|
"examples": [ "1.42MB" ]
|
|
47
48
|
},
|
|
48
49
|
"filesNumber": {
|
|
49
50
|
"type": "Number",
|
|
51
|
+
"required": true,
|
|
50
52
|
"desc": "Number of picked files",
|
|
51
53
|
"examples": [ 5 ]
|
|
52
54
|
},
|
|
53
55
|
"maxFiles": {
|
|
54
56
|
"type": [ "Number", "String" ],
|
|
57
|
+
"required": true,
|
|
55
58
|
"desc": "Maximum number of files (same as 'max-files' prop, if specified); When 'max-files' is not specified, this has 'void 0' as value",
|
|
56
59
|
"examples": [ 5 ]
|
|
57
60
|
}
|
|
@@ -111,9 +114,9 @@
|
|
|
111
114
|
},
|
|
112
115
|
|
|
113
116
|
"ref": {
|
|
114
|
-
"type": "
|
|
115
|
-
"
|
|
116
|
-
"
|
|
117
|
+
"type": "Component",
|
|
118
|
+
"tsType": "QFile",
|
|
119
|
+
"desc": "Reference to the QFile component"
|
|
117
120
|
}
|
|
118
121
|
}
|
|
119
122
|
},
|
|
@@ -128,9 +131,9 @@
|
|
|
128
131
|
},
|
|
129
132
|
|
|
130
133
|
"ref": {
|
|
131
|
-
"type": "
|
|
132
|
-
"
|
|
133
|
-
"
|
|
134
|
+
"type": "Component",
|
|
135
|
+
"tsType": "QFile",
|
|
136
|
+
"desc": "Reference to the QFile component"
|
|
134
137
|
}
|
|
135
138
|
}
|
|
136
139
|
}
|
|
@@ -46,7 +46,7 @@ export default createComponent({
|
|
|
46
46
|
const fixed = computed(() =>
|
|
47
47
|
props.reveal === true
|
|
48
48
|
|| $layout.view.value.indexOf('F') > -1
|
|
49
|
-
|| $layout.isContainer.value === true
|
|
49
|
+
|| ($q.platform.is.ios && $layout.isContainer.value === true)
|
|
50
50
|
)
|
|
51
51
|
|
|
52
52
|
const containerHeight = computed(() => (
|
|
@@ -52,9 +52,8 @@
|
|
|
52
52
|
"desc": "Emitted after a validation was triggered and at least one of the inner Quasar components models are NOT valid",
|
|
53
53
|
"params": {
|
|
54
54
|
"ref": {
|
|
55
|
-
"type": "
|
|
56
|
-
"desc": "Vue reference to the first component that triggered the validation error"
|
|
57
|
-
"__exemption": [ "examples" ]
|
|
55
|
+
"type": "Component",
|
|
56
|
+
"desc": "Vue reference to the first component that triggered the validation error"
|
|
58
57
|
}
|
|
59
58
|
}
|
|
60
59
|
}
|
|
@@ -43,7 +43,7 @@ export default createComponent({
|
|
|
43
43
|
const fixed = computed(() =>
|
|
44
44
|
props.reveal === true
|
|
45
45
|
|| $layout.view.value.indexOf('H') > -1
|
|
46
|
-
|| $layout.isContainer.value === true
|
|
46
|
+
|| ($q.platform.is.ios && $layout.isContainer.value === true)
|
|
47
47
|
)
|
|
48
48
|
|
|
49
49
|
const offset = computed(() => {
|
|
@@ -29,11 +29,11 @@ const matMap = {
|
|
|
29
29
|
|
|
30
30
|
const libRE = new RegExp('^(' + Object.keys(libMap).join('|') + ')')
|
|
31
31
|
const matRE = new RegExp('^(' + Object.keys(matMap).join('|') + ')')
|
|
32
|
-
const mRE = /^
|
|
32
|
+
const mRE = /^[Mm]\s?[-+]?\.?\d/
|
|
33
33
|
const imgRE = /^img:/
|
|
34
34
|
const svgUseRE = /^svguse:/
|
|
35
35
|
const ionRE = /^ion-/
|
|
36
|
-
const faLaRE = /^[
|
|
36
|
+
const faLaRE = /^[lf]a[srlbdk]? /
|
|
37
37
|
|
|
38
38
|
export default createComponent({
|
|
39
39
|
name: 'QIcon',
|
|
@@ -60,14 +60,12 @@ export default createComponent({
|
|
|
60
60
|
containerHeight = height(localScrollTarget)
|
|
61
61
|
|
|
62
62
|
if (props.reverse === false) {
|
|
63
|
-
if (scrollPosition + containerHeight + props.offset >= scrollHeight) {
|
|
63
|
+
if (Math.round(scrollPosition + containerHeight + props.offset) >= Math.round(scrollHeight)) {
|
|
64
64
|
trigger()
|
|
65
65
|
}
|
|
66
66
|
}
|
|
67
|
-
else {
|
|
68
|
-
|
|
69
|
-
trigger()
|
|
70
|
-
}
|
|
67
|
+
else if (Math.round(scrollPosition) <= props.offset) {
|
|
68
|
+
trigger()
|
|
71
69
|
}
|
|
72
70
|
}
|
|
73
71
|
|
|
@@ -123,6 +121,7 @@ export default createComponent({
|
|
|
123
121
|
isWorking.value = false
|
|
124
122
|
isFetching.value = false
|
|
125
123
|
localScrollTarget.removeEventListener('scroll', poll, passive)
|
|
124
|
+
poll !== void 0 && poll.cancel()
|
|
126
125
|
}
|
|
127
126
|
}
|
|
128
127
|
|
|
@@ -38,7 +38,7 @@ export default createComponent({
|
|
|
38
38
|
const { proxy: { $q } } = getCurrentInstance()
|
|
39
39
|
|
|
40
40
|
const isDark = useDark(props, $q)
|
|
41
|
-
const { hasLink, linkProps, linkClass, linkTag,
|
|
41
|
+
const { hasRouterLink, hasLink, linkProps, linkClass, linkTag, navigateToRouterLink } = useRouterLink()
|
|
42
42
|
|
|
43
43
|
const rootRef = ref(null)
|
|
44
44
|
const blurTargetRef = ref(null)
|
|
@@ -46,7 +46,6 @@ export default createComponent({
|
|
|
46
46
|
const isActionable = computed(() =>
|
|
47
47
|
props.clickable === true
|
|
48
48
|
|| hasLink.value === true
|
|
49
|
-
|| props.tag === 'a'
|
|
50
49
|
|| props.tag === 'label'
|
|
51
50
|
)
|
|
52
51
|
|
|
@@ -99,7 +98,7 @@ export default createComponent({
|
|
|
99
98
|
}
|
|
100
99
|
}
|
|
101
100
|
|
|
102
|
-
|
|
101
|
+
hasRouterLink.value === true && navigateToRouterLink(e)
|
|
103
102
|
emit('click', e)
|
|
104
103
|
}
|
|
105
104
|
}
|
|
@@ -37,11 +37,13 @@
|
|
|
37
37
|
"definition": {
|
|
38
38
|
"height": {
|
|
39
39
|
"type": "Number",
|
|
40
|
+
"required": true,
|
|
40
41
|
"desc": "Layout height",
|
|
41
42
|
"examples": [ 575 ]
|
|
42
43
|
},
|
|
43
44
|
"width": {
|
|
44
45
|
"type": "Number",
|
|
46
|
+
"required": true,
|
|
45
47
|
"desc": "Layout height",
|
|
46
48
|
"examples": [ 575 ]
|
|
47
49
|
}
|
|
@@ -59,27 +61,32 @@
|
|
|
59
61
|
"definition": {
|
|
60
62
|
"position": {
|
|
61
63
|
"type": "Number",
|
|
64
|
+
"required": true,
|
|
62
65
|
"desc": "Scroll offset from top (vertical)",
|
|
63
66
|
"examples": [ 120 ]
|
|
64
67
|
},
|
|
65
68
|
|
|
66
69
|
"direction": {
|
|
67
70
|
"type": "String",
|
|
71
|
+
"required": true,
|
|
68
72
|
"desc": "Direction of scroll",
|
|
69
73
|
"values": [ "up", "down" ]
|
|
70
74
|
},
|
|
71
75
|
"directionChanged": {
|
|
72
76
|
"type": "Boolean",
|
|
77
|
+
"required": true,
|
|
73
78
|
"desc": "Has scroll direction changed since event was last emitted?"
|
|
74
79
|
},
|
|
75
80
|
"delta": {
|
|
76
81
|
"type": "Number",
|
|
82
|
+
"required": true,
|
|
77
83
|
"desc": "Vertical delta distance since event was last emitted",
|
|
78
84
|
"examples": [ 120 ]
|
|
79
85
|
},
|
|
80
86
|
|
|
81
87
|
"inflectionPoint": {
|
|
82
88
|
"type": "Number",
|
|
89
|
+
"required": true,
|
|
83
90
|
"desc": "Scroll offset from top (vertical)",
|
|
84
91
|
"examples": [ 120 ]
|
|
85
92
|
}
|
|
@@ -94,7 +101,7 @@
|
|
|
94
101
|
"height": {
|
|
95
102
|
"type": "Number",
|
|
96
103
|
"desc": "New scroll height of layout",
|
|
97
|
-
"examples": [1442]
|
|
104
|
+
"examples": [ 1442 ]
|
|
98
105
|
}
|
|
99
106
|
}
|
|
100
107
|
}
|
|
@@ -58,6 +58,7 @@ export default createComponent({
|
|
|
58
58
|
const sizeStyle = useSize(props, defaultSizes)
|
|
59
59
|
|
|
60
60
|
const motion = computed(() => props.indeterminate === true || props.query === true)
|
|
61
|
+
const widthReverse = computed(() => props.reverse !== props.query)
|
|
61
62
|
const style = computed(() => ({
|
|
62
63
|
...(sizeStyle.value !== null ? sizeStyle.value : {}),
|
|
63
64
|
'--q-linear-progress-speed': `${ props.animationSpeed }ms`
|
|
@@ -70,7 +71,7 @@ export default createComponent({
|
|
|
70
71
|
+ (props.rounded === true ? ' rounded-borders' : '')
|
|
71
72
|
)
|
|
72
73
|
|
|
73
|
-
const trackStyle = computed(() => width(props.buffer !== void 0 ? props.buffer : 1,
|
|
74
|
+
const trackStyle = computed(() => width(props.buffer !== void 0 ? props.buffer : 1, widthReverse.value, proxy.$q))
|
|
74
75
|
const trackClass = computed(() =>
|
|
75
76
|
'q-linear-progress__track absolute-full'
|
|
76
77
|
+ ` q-linear-progress__track--with${ props.instantFeedback === true ? 'out' : '' }-transition`
|
|
@@ -78,7 +79,7 @@ export default createComponent({
|
|
|
78
79
|
+ (props.trackColor !== void 0 ? ` bg-${ props.trackColor }` : '')
|
|
79
80
|
)
|
|
80
81
|
|
|
81
|
-
const modelStyle = computed(() => width(motion.value === true ? 1 : props.value,
|
|
82
|
+
const modelStyle = computed(() => width(motion.value === true ? 1 : props.value, widthReverse.value, proxy.$q))
|
|
82
83
|
const modelClass = computed(() =>
|
|
83
84
|
'q-linear-progress__model absolute-full'
|
|
84
85
|
+ ` q-linear-progress__model--with${ props.instantFeedback === true ? 'out' : '' }-transition`
|
|
@@ -51,7 +51,7 @@
|
|
|
51
51
|
background: rgba(255,255,255,.6)
|
|
52
52
|
|
|
53
53
|
&__stripe
|
|
54
|
-
transition: width
|
|
54
|
+
transition: width var(--q-linear-progress-speed)
|
|
55
55
|
background-image: linear-gradient(45deg, rgba(255,255,255,.15) 25%, rgba(255,255,255,0) 25%, rgba(255,255,255,0) 50%, rgba(255,255,255,.15) 50%, rgba(255,255,255,.15) 75%, rgba(255,255,255,0) 75%, rgba(255,255,255,0)) !important
|
|
56
56
|
background-size: 40px 40px !important
|
|
57
57
|
|
|
@@ -95,6 +95,9 @@ export default createComponent({
|
|
|
95
95
|
class: classes.value,
|
|
96
96
|
...attrs.value
|
|
97
97
|
}, props.options.map((opt, i) => {
|
|
98
|
+
// TODO: (Qv3) Make the 'opt' a separate property instead of
|
|
99
|
+
// the whole scope for consistency and flexibility
|
|
100
|
+
// (e.g. { opt } instead of opt)
|
|
98
101
|
const child = slots[ 'label-' + i ] !== void 0
|
|
99
102
|
? () => slots[ 'label-' + i ](opt)
|
|
100
103
|
: (
|