quasar 2.14.7 → 2.15.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/api/QDialog.json +1 -1
- package/dist/api/QImg.json +1 -1
- package/dist/api/QSelect.json +1 -1
- package/dist/icon-set/bootstrap-icons.umd.prod.js +1 -1
- package/dist/icon-set/eva-icons.umd.prod.js +1 -1
- package/dist/icon-set/fontawesome-v5-pro.umd.prod.js +1 -1
- package/dist/icon-set/fontawesome-v5.umd.prod.js +1 -1
- package/dist/icon-set/fontawesome-v6-pro.umd.prod.js +1 -1
- package/dist/icon-set/fontawesome-v6.umd.prod.js +1 -1
- package/dist/icon-set/ionicons-v4.umd.prod.js +1 -1
- package/dist/icon-set/line-awesome.umd.prod.js +1 -1
- package/dist/icon-set/material-icons-outlined.umd.prod.js +1 -1
- package/dist/icon-set/material-icons-round.umd.prod.js +1 -1
- package/dist/icon-set/material-icons-sharp.umd.prod.js +1 -1
- package/dist/icon-set/material-icons.umd.prod.js +1 -1
- package/dist/icon-set/material-symbols-outlined.umd.prod.js +1 -1
- package/dist/icon-set/material-symbols-rounded.umd.prod.js +1 -1
- package/dist/icon-set/material-symbols-sharp.umd.prod.js +1 -1
- package/dist/icon-set/mdi-v3.umd.prod.js +1 -1
- package/dist/icon-set/mdi-v4.umd.prod.js +1 -1
- package/dist/icon-set/mdi-v5.umd.prod.js +1 -1
- package/dist/icon-set/mdi-v6.umd.prod.js +1 -1
- package/dist/icon-set/mdi-v7.umd.prod.js +1 -1
- package/dist/icon-set/svg-bootstrap-icons.umd.prod.js +1 -1
- package/dist/icon-set/svg-eva-icons.umd.prod.js +1 -1
- package/dist/icon-set/svg-fontawesome-v5.umd.prod.js +1 -1
- package/dist/icon-set/svg-fontawesome-v6.umd.prod.js +1 -1
- package/dist/icon-set/svg-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-MY.umd.prod.js +1 -1
- package/dist/lang/ms.umd.prod.js +1 -1
- package/dist/lang/my.umd.prod.js +1 -1
- package/dist/lang/nb-NO.umd.prod.js +1 -1
- package/dist/lang/nl.umd.prod.js +1 -1
- package/dist/lang/pl.umd.prod.js +1 -1
- package/dist/lang/pt-BR.umd.prod.js +1 -1
- package/dist/lang/pt.umd.prod.js +1 -1
- package/dist/lang/ro.umd.prod.js +1 -1
- package/dist/lang/ru.umd.prod.js +1 -1
- package/dist/lang/sk.umd.prod.js +1 -1
- package/dist/lang/sl.umd.prod.js +1 -1
- package/dist/lang/sm.umd.prod.js +1 -1
- package/dist/lang/sr-CYR.umd.prod.js +1 -1
- package/dist/lang/sr.umd.prod.js +1 -1
- package/dist/lang/sv.umd.prod.js +1 -1
- package/dist/lang/ta.umd.prod.js +1 -1
- package/dist/lang/th.umd.prod.js +1 -1
- package/dist/lang/tl.umd.prod.js +1 -1
- package/dist/lang/tr.umd.prod.js +1 -1
- package/dist/lang/ug.umd.prod.js +1 -1
- package/dist/lang/uk.umd.prod.js +1 -1
- package/dist/lang/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 +59 -59
- package/dist/quasar.esm.js +959 -930
- package/dist/quasar.esm.prod.js +53 -53
- package/dist/quasar.sass +1 -1
- package/dist/quasar.umd.js +146 -117
- package/dist/quasar.umd.prod.js +55 -55
- package/dist/transforms/import-map.json +1 -1
- package/dist/transforms/loader-asset-urls.json +1 -1
- package/dist/types/composables.d.ts +33 -0
- package/dist/types/index.d.ts +12 -0
- package/dist/vetur/quasar-attributes.json +1 -1
- package/dist/vetur/quasar-tags.json +1 -1
- package/dist/web-types/web-types.json +1 -1
- package/package.json +1 -1
- package/src/components/btn-dropdown/QBtnDropdown.js +1 -1
- package/src/components/color/QColor.js +19 -13
- package/src/components/date/QDate.js +2 -2
- package/src/components/dialog/QDialog.js +15 -3
- package/src/components/dialog/QDialog.json +19 -0
- package/src/components/drawer/QDrawer.js +1 -1
- package/src/components/editor/QEditor.js +4 -4
- package/src/components/expansion-item/QExpansionItem.js +1 -1
- package/src/components/fab/QFab.js +1 -1
- package/src/components/img/QImg.js +76 -56
- package/src/components/img/QImg.json +20 -6
- package/src/components/menu/QMenu.js +2 -2
- package/src/components/no-ssr/QNoSsr.js +3 -3
- package/src/components/resize-observer/QResizeObserver.js +3 -3
- package/src/components/select/QSelect.js +3 -0
- package/src/components/select/QSelect.json +7 -0
- package/src/components/slide-item/QSlideItem.js +3 -3
- package/src/components/stepper/QStep.js +3 -3
- package/src/components/tabs/QTabs.js +2 -2
- package/src/components/tooltip/QTooltip.js +2 -2
- package/src/composables/private/use-field.js +9 -12
- package/src/composables/private/use-panel.js +3 -3
- package/src/composables/use-hydration.js +16 -0
- package/src/composables/use-id.js +50 -0
- package/src/composables/use-render-cache.js +40 -0
- package/src/composables/{private/use-split-attrs.js → use-split-attrs.js} +4 -2
- package/src/composables/{private/use-tick.js → use-tick.js} +1 -1
- package/src/composables/{private/use-timeout.js → use-timeout.js} +1 -1
- package/src/composables.js +15 -1
- package/src/composables/private/use-cache.js +0 -21
- package/src/composables/private/use-can-render.js +0 -16
- package/src/composables/private/use-id.js +0 -34
|
@@ -4,7 +4,7 @@ import QSlideTransition from '../slide-transition/QSlideTransition.js'
|
|
|
4
4
|
import StepHeader from './StepHeader.js'
|
|
5
5
|
|
|
6
6
|
import { usePanelChildProps } from '../../composables/private/use-panel.js'
|
|
7
|
-
import
|
|
7
|
+
import useRenderCache from '../../composables/use-render-cache.js'
|
|
8
8
|
|
|
9
9
|
import { createComponent } from '../../utils/private/create.js'
|
|
10
10
|
import { stepperKey, emptyRenderFn } from '../../utils/private/symbols.js'
|
|
@@ -67,7 +67,7 @@ export default createComponent({
|
|
|
67
67
|
return emptyRenderFn
|
|
68
68
|
}
|
|
69
69
|
|
|
70
|
-
const {
|
|
70
|
+
const { getCache } = useRenderCache()
|
|
71
71
|
|
|
72
72
|
const rootRef = ref(null)
|
|
73
73
|
|
|
@@ -106,7 +106,7 @@ export default createComponent({
|
|
|
106
106
|
? [
|
|
107
107
|
h(
|
|
108
108
|
$stepper.value.needsUniqueKeepAliveWrapper.value === true
|
|
109
|
-
?
|
|
109
|
+
? getCache(contentKey.value, () => ({ ...PanelWrapper, name: contentKey.value }))
|
|
110
110
|
: PanelWrapper,
|
|
111
111
|
{ key: contentKey.value },
|
|
112
112
|
slots.default
|
|
@@ -3,8 +3,8 @@ import { h, ref, computed, watch, onBeforeUnmount, onActivated, onDeactivated, g
|
|
|
3
3
|
import QIcon from '../icon/QIcon.js'
|
|
4
4
|
import QResizeObserver from '../resize-observer/QResizeObserver.js'
|
|
5
5
|
|
|
6
|
-
import useTick from '../../composables/
|
|
7
|
-
import useTimeout from '../../composables/
|
|
6
|
+
import useTick from '../../composables/use-tick.js'
|
|
7
|
+
import useTimeout from '../../composables/use-timeout.js'
|
|
8
8
|
|
|
9
9
|
import { createComponent } from '../../utils/private/create.js'
|
|
10
10
|
import { hSlot } from '../../utils/private/render.js'
|
|
@@ -5,8 +5,8 @@ import useScrollTarget from '../../composables/private/use-scroll-target.js'
|
|
|
5
5
|
import useModelToggle, { useModelToggleProps, useModelToggleEmits } from '../../composables/private/use-model-toggle.js'
|
|
6
6
|
import usePortal from '../../composables/private/use-portal.js'
|
|
7
7
|
import useTransition, { useTransitionProps } from '../../composables/private/use-transition.js'
|
|
8
|
-
import useTick from '../../composables/
|
|
9
|
-
import useTimeout from '../../composables/
|
|
8
|
+
import useTick from '../../composables/use-tick.js'
|
|
9
|
+
import useTimeout from '../../composables/use-timeout.js'
|
|
10
10
|
|
|
11
11
|
import { createComponent } from '../../utils/private/create.js'
|
|
12
12
|
import { getScrollTarget } from '../../utils/scroll.js'
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import { h, ref, computed,
|
|
1
|
+
import { h, ref, computed, Transition, nextTick, onActivated, onDeactivated, onBeforeUnmount, onMounted, getCurrentInstance } from 'vue'
|
|
2
2
|
|
|
3
3
|
import QIcon from '../../components/icon/QIcon.js'
|
|
4
4
|
import QSpinner from '../../components/spinner/QSpinner.js'
|
|
5
5
|
|
|
6
6
|
import useDark, { useDarkProps } from '../../composables/private/use-dark.js'
|
|
7
|
-
import useId
|
|
7
|
+
import useId from '../use-id.js'
|
|
8
8
|
import useValidate, { useValidateProps } from './use-validate.js'
|
|
9
|
-
import useSplitAttrs from '
|
|
9
|
+
import useSplitAttrs from '../use-split-attrs.js'
|
|
10
10
|
|
|
11
11
|
import { hSlot } from '../../utils/private/render.js'
|
|
12
12
|
import { prevent, stopAndPrevent } from '../../utils/event.js'
|
|
@@ -69,10 +69,13 @@ export const useFieldProps = {
|
|
|
69
69
|
export const useFieldEmits = [ 'update:modelValue', 'clear', 'focus', 'blur', 'popupShow', 'popupHide' ]
|
|
70
70
|
|
|
71
71
|
export function useFieldState ({ requiredForAttr = true, tagProp } = {}) {
|
|
72
|
-
const { props,
|
|
72
|
+
const { props, proxy } = getCurrentInstance()
|
|
73
73
|
|
|
74
74
|
const isDark = useDark(props, proxy.$q)
|
|
75
|
-
const targetUid = useId(
|
|
75
|
+
const targetUid = useId({
|
|
76
|
+
required: requiredForAttr,
|
|
77
|
+
getValue: () => props.for
|
|
78
|
+
})
|
|
76
79
|
|
|
77
80
|
return {
|
|
78
81
|
requiredForAttr,
|
|
@@ -90,7 +93,7 @@ export function useFieldState ({ requiredForAttr = true, tagProp } = {}) {
|
|
|
90
93
|
focused: ref(false),
|
|
91
94
|
hasPopupOpen: false,
|
|
92
95
|
|
|
93
|
-
splitAttrs: useSplitAttrs(
|
|
96
|
+
splitAttrs: useSplitAttrs(),
|
|
94
97
|
targetUid,
|
|
95
98
|
|
|
96
99
|
rootRef: ref(null),
|
|
@@ -256,12 +259,6 @@ export default function (state) {
|
|
|
256
259
|
return acc
|
|
257
260
|
})
|
|
258
261
|
|
|
259
|
-
watch(() => props.for, val => {
|
|
260
|
-
// don't transform targetUid into a computed
|
|
261
|
-
// prop as it will break SSR
|
|
262
|
-
state.targetUid.value = getId(val, state.requiredForAttr)
|
|
263
|
-
})
|
|
264
|
-
|
|
265
262
|
function focusHandler () {
|
|
266
263
|
const el = document.activeElement
|
|
267
264
|
let target = state.targetRef !== void 0 && state.targetRef.value
|
|
@@ -2,7 +2,7 @@ import { h, ref, computed, watch, nextTick, getCurrentInstance, Transition, Keep
|
|
|
2
2
|
|
|
3
3
|
import TouchSwipe from '../../directives/TouchSwipe.js'
|
|
4
4
|
|
|
5
|
-
import
|
|
5
|
+
import useRenderCache from '../../composables/use-render-cache.js'
|
|
6
6
|
|
|
7
7
|
import { hSlot } from '../../utils/private/render.js'
|
|
8
8
|
import { getNormalizedVNodes } from '../../utils/private/vm.js'
|
|
@@ -48,7 +48,7 @@ export const usePanelEmits = [ 'update:modelValue', 'beforeTransition', 'transit
|
|
|
48
48
|
|
|
49
49
|
export default function () {
|
|
50
50
|
const { props, emit, proxy } = getCurrentInstance()
|
|
51
|
-
const {
|
|
51
|
+
const { getCache } = useRenderCache()
|
|
52
52
|
|
|
53
53
|
let panels, forcedPanelTransition
|
|
54
54
|
|
|
@@ -207,7 +207,7 @@ export default function () {
|
|
|
207
207
|
h(KeepAlive, keepAliveProps.value, [
|
|
208
208
|
h(
|
|
209
209
|
needsUniqueKeepAliveWrapper.value === true
|
|
210
|
-
?
|
|
210
|
+
? getCache(contentKey.value, () => ({ ...PanelWrapper, name: contentKey.value }))
|
|
211
211
|
: PanelWrapper,
|
|
212
212
|
{ key: contentKey.value, style: transitionStyle.value },
|
|
213
213
|
() => panel
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { ref, onMounted } from 'vue'
|
|
2
|
+
|
|
3
|
+
// using it to manage SSR rendering with best performance
|
|
4
|
+
import { isRuntimeSsrPreHydration } from '../plugins/Platform.js'
|
|
5
|
+
|
|
6
|
+
export default function () {
|
|
7
|
+
const isHydrated = ref(!isRuntimeSsrPreHydration.value)
|
|
8
|
+
|
|
9
|
+
if (isHydrated.value === false) {
|
|
10
|
+
onMounted(() => {
|
|
11
|
+
isHydrated.value = true
|
|
12
|
+
})
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
return { isHydrated }
|
|
16
|
+
}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { ref, computed, watch, onMounted } from 'vue'
|
|
2
|
+
|
|
3
|
+
import uid from '../utils/uid.js'
|
|
4
|
+
|
|
5
|
+
import { isRuntimeSsrPreHydration } from '../plugins/Platform.js'
|
|
6
|
+
|
|
7
|
+
function parseValue (val) {
|
|
8
|
+
return val === void 0 || val === null
|
|
9
|
+
? null
|
|
10
|
+
: val
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
function getId (val, required) {
|
|
14
|
+
return val === void 0 || val === null
|
|
15
|
+
? (required === true ? `f_${ uid() }` : null)
|
|
16
|
+
: val
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* Returns an "id" which is a ref() that can be used as
|
|
21
|
+
* a unique identifier to apply to a DOM node attribute.
|
|
22
|
+
*
|
|
23
|
+
* On SSR, it takes care of generating the id on the client side (only) to
|
|
24
|
+
* avoid hydration errors.
|
|
25
|
+
*/
|
|
26
|
+
export default function ({ getValue, required = true } = {}) {
|
|
27
|
+
if (isRuntimeSsrPreHydration.value === true) {
|
|
28
|
+
const id = getValue !== void 0
|
|
29
|
+
? ref(parseValue(getValue()))
|
|
30
|
+
: ref(null)
|
|
31
|
+
|
|
32
|
+
if (required === true && id.value === null) {
|
|
33
|
+
onMounted(() => {
|
|
34
|
+
id.value = `f_${ uid() }` // getId(null, true)
|
|
35
|
+
})
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
if (getValue !== void 0) {
|
|
39
|
+
watch(getValue, newId => {
|
|
40
|
+
id.value = getId(newId, required)
|
|
41
|
+
})
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
return id
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
return getValue !== void 0
|
|
48
|
+
? computed(() => getId(getValue(), required))
|
|
49
|
+
: ref(`f_${ uid() }`) // getId(null, true)
|
|
50
|
+
}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
export default function () {
|
|
2
|
+
let cache = Object.create(null)
|
|
3
|
+
|
|
4
|
+
return {
|
|
5
|
+
getCache: __QUASAR_SSR_SERVER__
|
|
6
|
+
? (_, defaultValue) => (
|
|
7
|
+
typeof defaultValue === 'function'
|
|
8
|
+
? defaultValue()
|
|
9
|
+
: defaultValue
|
|
10
|
+
)
|
|
11
|
+
: (key, defaultValue) => (
|
|
12
|
+
cache[ key ] === void 0
|
|
13
|
+
? (
|
|
14
|
+
cache[ key ] = (
|
|
15
|
+
typeof defaultValue === 'function'
|
|
16
|
+
? defaultValue()
|
|
17
|
+
: defaultValue
|
|
18
|
+
)
|
|
19
|
+
)
|
|
20
|
+
: cache[ key ]
|
|
21
|
+
),
|
|
22
|
+
|
|
23
|
+
setCache (key, obj) {
|
|
24
|
+
cache[ key ] = obj
|
|
25
|
+
},
|
|
26
|
+
|
|
27
|
+
hasCache (key) {
|
|
28
|
+
return cache.hasOwnProperty(key)
|
|
29
|
+
},
|
|
30
|
+
|
|
31
|
+
clearCache (key) {
|
|
32
|
+
if (key !== void 0) {
|
|
33
|
+
delete cache[ key ]
|
|
34
|
+
}
|
|
35
|
+
else {
|
|
36
|
+
cache = {}
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
}
|
|
@@ -1,8 +1,10 @@
|
|
|
1
|
-
import { ref, onBeforeUpdate } from 'vue'
|
|
1
|
+
import { ref, onBeforeUpdate, getCurrentInstance } from 'vue'
|
|
2
2
|
|
|
3
3
|
const listenerRE = /^on[A-Z]/
|
|
4
4
|
|
|
5
|
-
export default function (
|
|
5
|
+
export default function () {
|
|
6
|
+
const { attrs, vnode } = getCurrentInstance()
|
|
7
|
+
|
|
6
8
|
const acc = {
|
|
7
9
|
listeners: ref({}),
|
|
8
10
|
attributes: ref({})
|
package/src/composables.js
CHANGED
|
@@ -3,9 +3,23 @@ import useFormChild from './composables/use-form-child.js'
|
|
|
3
3
|
import useMeta from './composables/use-meta.js'
|
|
4
4
|
import useQuasar from './composables/use-quasar.js'
|
|
5
5
|
|
|
6
|
+
import useHydration from './composables/use-hydration.js'
|
|
7
|
+
import useId from './composables/use-id.js'
|
|
8
|
+
import useRenderCache from './composables/use-render-cache.js'
|
|
9
|
+
import useSplitAttrs from './composables/use-split-attrs.js'
|
|
10
|
+
import useTick from './composables/use-tick.js'
|
|
11
|
+
import useTimeout from './composables/use-timeout.js'
|
|
12
|
+
|
|
6
13
|
export {
|
|
7
14
|
useDialogPluginComponent,
|
|
8
15
|
useFormChild,
|
|
9
16
|
useMeta,
|
|
10
|
-
useQuasar
|
|
17
|
+
useQuasar,
|
|
18
|
+
|
|
19
|
+
useHydration,
|
|
20
|
+
useId,
|
|
21
|
+
useRenderCache,
|
|
22
|
+
useSplitAttrs,
|
|
23
|
+
useTick,
|
|
24
|
+
useTimeout
|
|
11
25
|
}
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
export default function () {
|
|
2
|
-
const cache = new Map()
|
|
3
|
-
|
|
4
|
-
return {
|
|
5
|
-
getCache: __QUASAR_SSR_SERVER__
|
|
6
|
-
? function (_, obj) { return obj }
|
|
7
|
-
: function (key, obj) {
|
|
8
|
-
return cache[ key ] === void 0
|
|
9
|
-
? (cache[ key ] = obj)
|
|
10
|
-
: cache[ key ]
|
|
11
|
-
},
|
|
12
|
-
|
|
13
|
-
getCacheWithFn: __QUASAR_SSR_SERVER__
|
|
14
|
-
? function (_, fn) { return fn() }
|
|
15
|
-
: function (key, fn) {
|
|
16
|
-
return cache[ key ] === void 0
|
|
17
|
-
? (cache[ key ] = fn())
|
|
18
|
-
: cache[ key ]
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
}
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import { ref, onMounted } from 'vue'
|
|
2
|
-
|
|
3
|
-
// using it to manage SSR rendering with best performance
|
|
4
|
-
import { isRuntimeSsrPreHydration } from '../../plugins/Platform.js'
|
|
5
|
-
|
|
6
|
-
export default function () {
|
|
7
|
-
const canRender = ref(!isRuntimeSsrPreHydration.value)
|
|
8
|
-
|
|
9
|
-
if (canRender.value === false) {
|
|
10
|
-
onMounted(() => {
|
|
11
|
-
canRender.value = true
|
|
12
|
-
})
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
return canRender
|
|
16
|
-
}
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
import { ref, onMounted } from 'vue'
|
|
2
|
-
|
|
3
|
-
import uid from '../../utils/uid.js'
|
|
4
|
-
|
|
5
|
-
import { isRuntimeSsrPreHydration } from '../../plugins/Platform.js'
|
|
6
|
-
|
|
7
|
-
export function getId (val, requiredId) {
|
|
8
|
-
return val === void 0
|
|
9
|
-
? (requiredId === true ? `f_${ uid() }` : void 0)
|
|
10
|
-
: val
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
/**
|
|
14
|
-
* Returns an "id" which is a ref() that can be used as a unique identifier.
|
|
15
|
-
* On SSR, it takes care of generating the id on the client side (only) to
|
|
16
|
-
* avoid hydration errors.
|
|
17
|
-
*/
|
|
18
|
-
export default function (initialId, requiredId = true) {
|
|
19
|
-
if (isRuntimeSsrPreHydration.value === true) {
|
|
20
|
-
const id = ref(initialId)
|
|
21
|
-
|
|
22
|
-
if (requiredId === true && initialId === void 0) {
|
|
23
|
-
onMounted(() => {
|
|
24
|
-
id.value = `f_${ uid() }` // getId(void 0, true)
|
|
25
|
-
})
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
return id
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
return ref(
|
|
32
|
-
getId(initialId, requiredId)
|
|
33
|
-
)
|
|
34
|
-
}
|