@hybridly/vue 0.1.0-alpha.4 → 0.1.0-alpha.5
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/index.cjs +14 -2
- package/dist/index.d.ts +9 -7
- package/dist/index.mjs +15 -3
- package/package.json +5 -5
package/dist/index.cjs
CHANGED
|
@@ -56,6 +56,8 @@ const dialogStore = {
|
|
|
56
56
|
}
|
|
57
57
|
};
|
|
58
58
|
|
|
59
|
+
const onMountedCallbacks = [];
|
|
60
|
+
|
|
59
61
|
const state = {
|
|
60
62
|
context: vue.ref(),
|
|
61
63
|
view: vue.shallowRef(),
|
|
@@ -119,10 +121,17 @@ const wrapper = vue.defineComponent({
|
|
|
119
121
|
function renderView() {
|
|
120
122
|
utils.debug.adapter("vue:render:view", "Rendering view.");
|
|
121
123
|
state.view.value.inheritAttrs = !!state.view.value.inheritAttrs;
|
|
122
|
-
return vue.h(state.view.value, {
|
|
124
|
+
return vue.withDirectives(vue.h(state.view.value, {
|
|
123
125
|
...state.properties.value,
|
|
124
126
|
key: state.viewKey.value
|
|
125
|
-
})
|
|
127
|
+
}), [[{
|
|
128
|
+
mounted: () => {
|
|
129
|
+
vue.nextTick(() => {
|
|
130
|
+
utils.debug.adapter("vue:render:view", "Calling mounted callbacks.");
|
|
131
|
+
onMountedCallbacks.pop()?.();
|
|
132
|
+
});
|
|
133
|
+
}
|
|
134
|
+
}]]);
|
|
126
135
|
}
|
|
127
136
|
function renderDialog() {
|
|
128
137
|
if (dialogStore.state.component.value && dialogStore.state.properties.value) {
|
|
@@ -279,6 +288,9 @@ async function initializeHybridly(options = {}) {
|
|
|
279
288
|
responseErrorModals: resolved.responseErrorModals ?? process.env.NODE_ENV === "development",
|
|
280
289
|
adapter: {
|
|
281
290
|
resolveComponent: resolve,
|
|
291
|
+
onWaitingForMount: (callback) => {
|
|
292
|
+
onMountedCallbacks.push(callback);
|
|
293
|
+
},
|
|
282
294
|
onDialogClose: async () => {
|
|
283
295
|
dialogStore.hide();
|
|
284
296
|
},
|
package/dist/index.d.ts
CHANGED
|
@@ -182,7 +182,7 @@ declare const RouterLink: vue.DefineComponent<{
|
|
|
182
182
|
/** Accesses all current properties. */
|
|
183
183
|
declare function useProperties<T extends object, Global extends GlobalHybridlyProperties>(): vue.DeepReadonly<vue.UnwrapNestedRefs<T & Global>>;
|
|
184
184
|
/** Accesses a property with a dot notation. */
|
|
185
|
-
declare function useProperty<F = never, T = GlobalHybridlyProperties, P extends Path<T> = Path<T>>(path: [F] extends [never] ? [P] extends [never] ? string : P : string): ComputedRef<[F] extends [never] ? [PathValue<T, P>] extends [never] ? never : PathValue<T, P> : F>;
|
|
185
|
+
declare function useProperty<F = never, T = GlobalHybridlyProperties, P extends Path<T> = Path<T>>(path: [F] extends [never] ? ([P] extends [never] ? string : P) : string): ComputedRef<[F] extends [never] ? ([PathValue<T, P>] extends [never] ? never : PathValue<T, P>) : F>;
|
|
186
186
|
type PathImpl<T, K extends keyof T> = K extends string ? T[K] extends undefined ? undefined : NonNullable<T[K]> extends Record<string, any> ? NonNullable<T[K]> extends ArrayLike<any> ? K | `${K}.${PathImpl<NonNullable<T[K]>, Exclude<keyof NonNullable<T[K]>, keyof any[]>>}` : K | `${K}.${PathImpl<NonNullable<T[K]>, keyof NonNullable<T[K]>>}` : K : never;
|
|
187
187
|
type Path<T> = PathImpl<T, keyof T> | keyof T;
|
|
188
188
|
type PathValue<T, P extends Path<T>> = P extends `${infer K}.${infer Rest}` ? K extends keyof T ? T[K] extends undefined ? undefined : Rest extends Path<T[K]> ? PathValue<T[K], Rest> : Rest extends Path<NonNullable<T[K]>> ? PathValue<NonNullable<T[K]>, Rest> | undefined : never : never : P extends keyof T ? T[P] extends undefined ? undefined : T[P] : never;
|
|
@@ -280,7 +280,7 @@ type BaseUrlTransformable = Partial<Omit<URL, 'searchParams' | 'toJSON' | 'toStr
|
|
|
280
280
|
trailingSlash?: boolean;
|
|
281
281
|
};
|
|
282
282
|
|
|
283
|
-
type ConditionalNavigationOption
|
|
283
|
+
type ConditionalNavigationOption<T extends boolean | string> = T | ((payload: NavigationOptions) => T);
|
|
284
284
|
interface NavigationOptions {
|
|
285
285
|
/** View to navigate to. */
|
|
286
286
|
payload?: HybridPayload;
|
|
@@ -288,13 +288,13 @@ interface NavigationOptions {
|
|
|
288
288
|
* Whether to replace the current history state instead of adding
|
|
289
289
|
* one. This affects the browser's "back" and "forward" features.
|
|
290
290
|
*/
|
|
291
|
-
replace?: ConditionalNavigationOption
|
|
292
|
-
/** Whether to preserve the
|
|
293
|
-
preserveScroll?: ConditionalNavigationOption
|
|
291
|
+
replace?: ConditionalNavigationOption<boolean>;
|
|
292
|
+
/** Whether to preserve the scrollbars positions on the page. */
|
|
293
|
+
preserveScroll?: ConditionalNavigationOption<boolean>;
|
|
294
294
|
/** Whether to preserve the current page component's state. */
|
|
295
|
-
preserveState?: ConditionalNavigationOption
|
|
295
|
+
preserveState?: ConditionalNavigationOption<boolean>;
|
|
296
296
|
/** Whether to preserve the current URL. */
|
|
297
|
-
preserveUrl?: ConditionalNavigationOption
|
|
297
|
+
preserveUrl?: ConditionalNavigationOption<boolean>;
|
|
298
298
|
/**
|
|
299
299
|
* Properties of the given URL to override.
|
|
300
300
|
* @example
|
|
@@ -458,6 +458,8 @@ interface Adapter {
|
|
|
458
458
|
onContextUpdate?: (context: InternalRouterContext) => void;
|
|
459
459
|
/** Called when a dialog is closed. */
|
|
460
460
|
onDialogClose?: (context: InternalRouterContext) => void;
|
|
461
|
+
/** Called when Hybridly is waiting for a component to be mounted. The given callback should be executed after the view component is mounted. */
|
|
462
|
+
onWaitingForMount: (callback: Function) => void;
|
|
461
463
|
}
|
|
462
464
|
interface ResolvedAdapter extends Adapter {
|
|
463
465
|
updateRoutingConfiguration: (routing?: RoutingConfiguration) => void;
|
package/dist/index.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { shallowRef, ref, unref, triggerRef, defineComponent, toRaw, h, createApp, isRef, reactive, readonly, computed, watch, getCurrentInstance, onUnmounted } from 'vue';
|
|
1
|
+
import { shallowRef, ref, unref, triggerRef, defineComponent, toRaw, h, withDirectives, nextTick, createApp, isRef, reactive, readonly, computed, watch, getCurrentInstance, onUnmounted } from 'vue';
|
|
2
2
|
import { registerHook as registerHook$1, createRouter, makeUrl, router } from '@hybridly/core';
|
|
3
3
|
export { can, route, router } from '@hybridly/core';
|
|
4
4
|
import { debug, random, showDomainsDisabledErrorModal, showPageComponentErrorModal, merge, clone } from '@hybridly/utils';
|
|
@@ -48,6 +48,8 @@ const dialogStore = {
|
|
|
48
48
|
}
|
|
49
49
|
};
|
|
50
50
|
|
|
51
|
+
const onMountedCallbacks = [];
|
|
52
|
+
|
|
51
53
|
const state = {
|
|
52
54
|
context: ref(),
|
|
53
55
|
view: shallowRef(),
|
|
@@ -111,10 +113,17 @@ const wrapper = defineComponent({
|
|
|
111
113
|
function renderView() {
|
|
112
114
|
debug.adapter("vue:render:view", "Rendering view.");
|
|
113
115
|
state.view.value.inheritAttrs = !!state.view.value.inheritAttrs;
|
|
114
|
-
return h(state.view.value, {
|
|
116
|
+
return withDirectives(h(state.view.value, {
|
|
115
117
|
...state.properties.value,
|
|
116
118
|
key: state.viewKey.value
|
|
117
|
-
})
|
|
119
|
+
}), [[{
|
|
120
|
+
mounted: () => {
|
|
121
|
+
nextTick(() => {
|
|
122
|
+
debug.adapter("vue:render:view", "Calling mounted callbacks.");
|
|
123
|
+
onMountedCallbacks.pop()?.();
|
|
124
|
+
});
|
|
125
|
+
}
|
|
126
|
+
}]]);
|
|
118
127
|
}
|
|
119
128
|
function renderDialog() {
|
|
120
129
|
if (dialogStore.state.component.value && dialogStore.state.properties.value) {
|
|
@@ -271,6 +280,9 @@ async function initializeHybridly(options = {}) {
|
|
|
271
280
|
responseErrorModals: resolved.responseErrorModals ?? process.env.NODE_ENV === "development",
|
|
272
281
|
adapter: {
|
|
273
282
|
resolveComponent: resolve,
|
|
283
|
+
onWaitingForMount: (callback) => {
|
|
284
|
+
onMountedCallbacks.push(callback);
|
|
285
|
+
},
|
|
274
286
|
onDialogClose: async () => {
|
|
275
287
|
dialogStore.hide();
|
|
276
288
|
},
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hybridly/vue",
|
|
3
|
-
"version": "0.1.0-alpha.
|
|
3
|
+
"version": "0.1.0-alpha.5",
|
|
4
4
|
"description": "Vue adapter for Hybridly",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"hybridly",
|
|
@@ -43,10 +43,10 @@
|
|
|
43
43
|
"lodash.isequal": "^4.5.0",
|
|
44
44
|
"nprogress": "^0.2.0",
|
|
45
45
|
"qs": "^6.11.0",
|
|
46
|
-
"@hybridly/config": "0.1.0-alpha.
|
|
47
|
-
"@hybridly/core": "0.1.0-alpha.
|
|
48
|
-
"@hybridly/progress-plugin": "0.1.0-alpha.
|
|
49
|
-
"@hybridly/utils": "0.1.0-alpha.
|
|
46
|
+
"@hybridly/config": "0.1.0-alpha.5",
|
|
47
|
+
"@hybridly/core": "0.1.0-alpha.5",
|
|
48
|
+
"@hybridly/progress-plugin": "0.1.0-alpha.5",
|
|
49
|
+
"@hybridly/utils": "0.1.0-alpha.5"
|
|
50
50
|
},
|
|
51
51
|
"devDependencies": {
|
|
52
52
|
"@types/lodash": "^4.14.191",
|