@progressive-development/pd-spa-helper 1.0.0 → 1.0.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/auth/AuthController.d.ts +37 -0
- package/dist/auth/AuthController.d.ts.map +1 -0
- package/dist/auth/AuthController.js +65 -0
- package/dist/auth/auth-directives.d.ts +59 -0
- package/dist/auth/auth-directives.d.ts.map +1 -0
- package/dist/auth/auth-directives.js +81 -0
- package/dist/auth/auth-utils.d.ts +45 -0
- package/dist/auth/auth-utils.d.ts.map +1 -0
- package/dist/auth/auth-utils.js +42 -0
- package/dist/auth/index.d.ts +7 -0
- package/dist/auth/index.d.ts.map +1 -0
- package/dist/components/default-login/DefaultLogin.d.ts +15 -0
- package/dist/components/default-login/DefaultLogin.d.ts.map +1 -0
- package/dist/components/default-login/DefaultLogin.js +120 -0
- package/dist/components/default-not-found/DefaultNotFound.d.ts +6 -0
- package/dist/components/default-not-found/DefaultNotFound.d.ts.map +1 -0
- package/dist/{defaultpage/default-not-found.js → components/default-not-found/DefaultNotFound.js} +10 -3
- package/dist/components/pd-section-page/PdSectionPage.d.ts +55 -0
- package/dist/components/pd-section-page/PdSectionPage.d.ts.map +1 -0
- package/dist/components/pd-section-page/PdSectionPage.js +37 -0
- package/dist/components/pd-spa-helper/PdSpaHelper.d.ts +196 -0
- package/dist/components/pd-spa-helper/PdSpaHelper.d.ts.map +1 -0
- package/dist/components/pd-spa-helper/PdSpaHelper.js +603 -0
- package/dist/components/pd-spa-helper/controllers/ScrollController.d.ts +77 -0
- package/dist/components/pd-spa-helper/controllers/ScrollController.d.ts.map +1 -0
- package/dist/components/pd-spa-helper/controllers/ScrollController.js +102 -0
- package/dist/components/pd-spa-helper/spa-config.d.ts +95 -0
- package/dist/components/pd-spa-helper/spa-config.d.ts.map +1 -0
- package/dist/components/pd-spa-helper/spa-config.js +175 -0
- package/dist/components/pd-spa-helper/spa-events.d.ts +132 -0
- package/dist/components/pd-spa-helper/spa-events.d.ts.map +1 -0
- package/dist/components/pd-spa-helper/spa-events.js +18 -0
- package/dist/db/index.d.ts +3 -0
- package/dist/db/index.d.ts.map +1 -0
- package/dist/{store → db}/indexDB.d.ts +9 -9
- package/dist/db/indexDB.d.ts.map +1 -0
- package/dist/{store → db}/indexDB.js +14 -12
- package/dist/generated/locales/be.d.ts +1 -15
- package/dist/generated/locales/be.d.ts.map +1 -1
- package/dist/generated/locales/be.js +1 -15
- package/dist/generated/locales/de.d.ts +1 -15
- package/dist/generated/locales/de.d.ts.map +1 -1
- package/dist/generated/locales/de.js +1 -15
- package/dist/generated/locales/en.d.ts +1 -15
- package/dist/generated/locales/en.d.ts.map +1 -1
- package/dist/generated/locales/en.js +1 -15
- package/dist/helper/logger.d.ts +11 -12
- package/dist/helper/logger.d.ts.map +1 -1
- package/dist/helper/logger.js +10 -49
- package/dist/helper/refresh-id-token.d.ts.map +1 -1
- package/dist/helper/refresh-id-token.js +6 -4
- package/dist/index.d.ts +31 -29
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +27 -50
- package/dist/model/index.d.ts +4 -0
- package/dist/model/index.d.ts.map +1 -0
- package/dist/model/spa-model.d.ts +14 -15
- package/dist/model/spa-model.d.ts.map +1 -1
- package/dist/router/PdRouterService.d.ts +4 -1
- package/dist/router/PdRouterService.d.ts.map +1 -1
- package/dist/router/PdRouterService.js +40 -16
- package/dist/router/index.d.ts +3 -0
- package/dist/router/index.d.ts.map +1 -0
- package/dist/screen-size/ScreenSizeController.d.ts +34 -0
- package/dist/screen-size/ScreenSizeController.d.ts.map +1 -0
- package/dist/screen-size/ScreenSizeController.js +58 -0
- package/dist/screen-size/ScreenSizeService.d.ts +49 -0
- package/dist/screen-size/ScreenSizeService.d.ts.map +1 -0
- package/dist/screen-size/ScreenSizeService.js +107 -0
- package/dist/screen-size/index.d.ts +13 -0
- package/dist/screen-size/index.d.ts.map +1 -0
- package/dist/screen-size/responsive-directives.d.ts +59 -0
- package/dist/screen-size/responsive-directives.d.ts.map +1 -0
- package/dist/screen-size/responsive-directives.js +71 -0
- package/dist/screen-size/types.d.ts +44 -0
- package/dist/screen-size/types.d.ts.map +1 -0
- package/dist/service-provider/ServiceRegistry.d.ts +67 -0
- package/dist/service-provider/ServiceRegistry.d.ts.map +1 -0
- package/dist/service-provider/ServiceRegistry.js +76 -0
- package/dist/service-provider/function-utils.d.ts +55 -0
- package/dist/service-provider/function-utils.d.ts.map +1 -0
- package/dist/service-provider/function-utils.js +30 -0
- package/dist/service-provider/index.d.ts +10 -0
- package/dist/service-provider/index.d.ts.map +1 -0
- package/dist/service-provider/interfaces/IAuthProvider.d.ts +68 -0
- package/dist/service-provider/interfaces/IAuthProvider.d.ts.map +1 -0
- package/dist/service-provider/interfaces/IDatabaseProvider.d.ts +75 -0
- package/dist/service-provider/interfaces/IDatabaseProvider.d.ts.map +1 -0
- package/dist/service-provider/interfaces/IFunctionProvider.d.ts +49 -0
- package/dist/service-provider/interfaces/IFunctionProvider.d.ts.map +1 -0
- package/dist/service-provider/interfaces/IStorageProvider.d.ts +118 -0
- package/dist/service-provider/interfaces/IStorageProvider.d.ts.map +1 -0
- package/dist/service-provider/interfaces/ServiceProvider.d.ts +24 -0
- package/dist/service-provider/interfaces/ServiceProvider.d.ts.map +1 -0
- package/dist/service-provider/interfaces/common.d.ts +5 -0
- package/dist/service-provider/interfaces/common.d.ts.map +1 -0
- package/dist/service-provider/service-provider-model.d.ts +55 -10
- package/dist/service-provider/service-provider-model.d.ts.map +1 -1
- package/dist/services/fire-once-service.d.ts +35 -0
- package/dist/services/fire-once-service.d.ts.map +1 -0
- package/dist/services/fire-once-service.js +61 -0
- package/dist/store/async-action-effects.d.ts +179 -0
- package/dist/store/async-action-effects.d.ts.map +1 -0
- package/dist/store/async-action-effects.js +98 -0
- package/dist/store/async-action-utils.d.ts +154 -0
- package/dist/store/async-action-utils.d.ts.map +1 -0
- package/dist/store/async-action-utils.js +42 -0
- package/dist/store/index.d.ts +9 -0
- package/dist/store/index.d.ts.map +1 -0
- package/dist/store/mini-rx.store.d.ts.map +1 -1
- package/dist/store/mini-rx.store.js +1 -3
- package/dist/store/spa-app-actions.d.ts +5 -22
- package/dist/store/spa-app-actions.d.ts.map +1 -1
- package/dist/store/spa-app-actions.js +4 -8
- package/dist/store/spa-app-effects.d.ts +0 -17
- package/dist/store/spa-app-effects.d.ts.map +1 -1
- package/dist/store/spa-app-effects.js +2 -40
- package/dist/store/spa-app-reducer.d.ts +5 -10
- package/dist/store/spa-app-reducer.d.ts.map +1 -1
- package/dist/store/spa-app-reducer.js +13 -8
- package/dist/store/spa-app-selector.d.ts +2 -2
- package/dist/store/spa-app-selector.d.ts.map +1 -1
- package/dist/store/spa-app-selector.js +1 -1
- package/dist/stories/introduction.stories.d.ts +11 -0
- package/dist/stories/introduction.stories.d.ts.map +1 -0
- package/package.json +14 -9
- package/dist/PdSpaHelper.d.ts +0 -83
- package/dist/PdSpaHelper.d.ts.map +0 -1
- package/dist/PdSpaHelper.js +0 -492
- package/dist/defaultpage/default-confirm-popup.d.ts +0 -19
- package/dist/defaultpage/default-confirm-popup.d.ts.map +0 -1
- package/dist/defaultpage/default-confirm-popup.js +0 -70
- package/dist/defaultpage/default-dialog-popup.d.ts +0 -19
- package/dist/defaultpage/default-dialog-popup.d.ts.map +0 -1
- package/dist/defaultpage/default-dialog-popup.js +0 -103
- package/dist/defaultpage/default-login.d.ts +0 -6
- package/dist/defaultpage/default-login.d.ts.map +0 -1
- package/dist/defaultpage/default-login.js +0 -33
- package/dist/defaultpage/default-not-found.d.ts +0 -6
- package/dist/defaultpage/default-not-found.d.ts.map +0 -1
- package/dist/defaultpage/default-popup.d.ts +0 -7
- package/dist/defaultpage/default-popup.d.ts.map +0 -1
- package/dist/defaultpage/default-popup.js +0 -24
- package/dist/defaultpage/default-step-address.d.ts +0 -14
- package/dist/defaultpage/default-step-address.d.ts.map +0 -1
- package/dist/defaultpage/default-step-address.js +0 -77
- package/dist/defaultpage/default-step-summary.d.ts +0 -28
- package/dist/defaultpage/default-step-summary.d.ts.map +0 -1
- package/dist/defaultpage/default-step-summary.js +0 -67
- package/dist/defaultpage/default-view-page.d.ts +0 -10
- package/dist/defaultpage/default-view-page.d.ts.map +0 -1
- package/dist/defaultpage/default-view-page.js +0 -70
- package/dist/defaultpage/default-wizard.d.ts +0 -37
- package/dist/defaultpage/default-wizard.d.ts.map +0 -1
- package/dist/defaultpage/default-wizard.js +0 -255
- package/dist/defaultpage/pd-default-wizard-step.d.ts +0 -60
- package/dist/defaultpage/pd-default-wizard-step.d.ts.map +0 -1
- package/dist/defaultpage/pd-default-wizard-step.js +0 -144
- package/dist/generated/locale-wrapper/be-wrapper.d.ts +0 -63
- package/dist/generated/locale-wrapper/be-wrapper.d.ts.map +0 -1
- package/dist/generated/locale-wrapper/de-wrapper.d.ts +0 -63
- package/dist/generated/locale-wrapper/de-wrapper.d.ts.map +0 -1
- package/dist/generated/locale-wrapper/en-wrapper.d.ts +0 -63
- package/dist/generated/locale-wrapper/en-wrapper.d.ts.map +0 -1
- package/dist/helper/blob-helper.d.ts +0 -3
- package/dist/helper/blob-helper.d.ts.map +0 -1
- package/dist/helper/blob-helper.js +0 -35
- package/dist/helper/date-helper.d.ts +0 -27
- package/dist/helper/date-helper.d.ts.map +0 -1
- package/dist/helper/date-helper.js +0 -129
- package/dist/helper/locale-format.d.ts +0 -4
- package/dist/helper/locale-format.d.ts.map +0 -1
- package/dist/helper/locale-format.js +0 -16
- package/dist/helper/number-helper.d.ts +0 -2
- package/dist/helper/number-helper.d.ts.map +0 -1
- package/dist/helper/number-helper.js +0 -13
- package/dist/helper/price-helper.d.ts +0 -5
- package/dist/helper/price-helper.d.ts.map +0 -1
- package/dist/helper/price-helper.js +0 -22
- package/dist/helper/text-helper.d.ts +0 -3
- package/dist/helper/text-helper.d.ts.map +0 -1
- package/dist/helper/text-helper.js +0 -4
- package/dist/popup/wizard-close-popup.d.ts +0 -11
- package/dist/popup/wizard-close-popup.d.ts.map +0 -1
- package/dist/popup/wizard-close-popup.js +0 -63
- package/dist/popup/wizard-reload-popup.d.ts +0 -14
- package/dist/popup/wizard-reload-popup.d.ts.map +0 -1
- package/dist/popup/wizard-reload-popup.js +0 -76
- package/dist/service-provider/firebase/auth.d.ts +0 -19
- package/dist/service-provider/firebase/auth.d.ts.map +0 -1
- package/dist/service-provider/firebase/auth.js +0 -62
- package/dist/service-provider/firebase/firestorage-client.d.ts +0 -22
- package/dist/service-provider/firebase/firestorage-client.d.ts.map +0 -1
- package/dist/service-provider/firebase/firestorage-client.js +0 -226
- package/dist/service-provider/firebase/firestore-client.d.ts +0 -12
- package/dist/service-provider/firebase/firestore-client.d.ts.map +0 -1
- package/dist/service-provider/firebase/firestore-client.js +0 -25
- package/dist/service-provider/firebase/functions-client.d.ts +0 -10
- package/dist/service-provider/firebase/functions-client.d.ts.map +0 -1
- package/dist/service-provider/firebase/functions-client.js +0 -63
- package/dist/service-provider/firebase/messagingFirebaseClient.d.ts +0 -9
- package/dist/service-provider/firebase/messagingFirebaseClient.d.ts.map +0 -1
- package/dist/service-provider/firebase/messagingFirebaseClient.js +0 -69
- package/dist/service-provider/mock/auth.d.ts +0 -6
- package/dist/service-provider/mock/auth.d.ts.map +0 -1
- package/dist/service-provider/mock/auth.js +0 -60
- package/dist/service-provider/mock/function-client.d.ts +0 -7
- package/dist/service-provider/mock/function-client.d.ts.map +0 -1
- package/dist/service-provider/mock/function-client.js +0 -30
- package/dist/service-provider/mock/storage-client.d.ts +0 -11
- package/dist/service-provider/mock/storage-client.d.ts.map +0 -1
- package/dist/service-provider/mock/storage-client.js +0 -106
- package/dist/service-provider/service-provider-impl.d.ts +0 -27
- package/dist/service-provider/service-provider-impl.d.ts.map +0 -1
- package/dist/service-provider/service-provider-impl.js +0 -222
- package/dist/store/indexDB.d.ts.map +0 -1
- package/dist/stories/address-edit.stories.d.ts +0 -27
- package/dist/stories/address-edit.stories.d.ts.map +0 -1
- package/dist/stories/address-new.stories.d.ts +0 -33
- package/dist/stories/address-new.stories.d.ts.map +0 -1
- package/dist/stories/default-confirm-popup.stories.d.ts +0 -24
- package/dist/stories/default-confirm-popup.stories.d.ts.map +0 -1
- package/dist/stories/default-dialog-popup.stories.d.ts +0 -23
- package/dist/stories/default-dialog-popup.stories.d.ts.map +0 -1
- package/dist/stories/default-login.stories.d.ts +0 -10
- package/dist/stories/default-login.stories.d.ts.map +0 -1
- package/dist/stories/default-popup.stories.d.ts +0 -9
- package/dist/stories/default-popup.stories.d.ts.map +0 -1
- package/dist/stories/pd-loading-state.stories.d.ts +0 -30
- package/dist/stories/pd-loading-state.stories.d.ts.map +0 -1
- package/dist/stories/pd-toast.stories.d.ts +0 -27
- package/dist/stories/pd-toast.stories.d.ts.map +0 -1
- package/dist/stories/routing.stories.d.ts +0 -24
- package/dist/stories/routing.stories.d.ts.map +0 -1
- package/dist/stories/test-impls/address-test.d.ts +0 -6
- package/dist/stories/test-impls/address-test.d.ts.map +0 -1
- package/dist/stories/test-impls/test-mock-app.d.ts +0 -15
- package/dist/stories/test-impls/test-mock-app.d.ts.map +0 -1
- package/dist/stories/test-impls/test-pages/test-home-page.d.ts +0 -7
- package/dist/stories/test-impls/test-pages/test-home-page.d.ts.map +0 -1
- package/dist/stories/test-impls/test-pages/test-not-found-page.d.ts +0 -5
- package/dist/stories/test-impls/test-pages/test-not-found-page.d.ts.map +0 -1
- package/dist/stories/test-impls/test-pages/test-wizard-step.d.ts +0 -17
- package/dist/stories/test-impls/test-pages/test-wizard-step.d.ts.map +0 -1
- package/dist/stories/test-impls/test-pages/test-wizard.d.ts +0 -16
- package/dist/stories/test-impls/test-pages/test-wizard.d.ts.map +0 -1
- package/dist/stories/test-impls/test-popups/default-confirm-popup-test-error.d.ts +0 -8
- package/dist/stories/test-impls/test-popups/default-confirm-popup-test-error.d.ts.map +0 -1
- package/dist/stories/test-impls/test-popups/default-confirm-popup-test-info.d.ts +0 -8
- package/dist/stories/test-impls/test-popups/default-confirm-popup-test-info.d.ts.map +0 -1
- package/dist/stories/test-impls/test-popups/default-confirm-popup-test-warn.d.ts +0 -8
- package/dist/stories/test-impls/test-popups/default-confirm-popup-test-warn.d.ts.map +0 -1
- package/dist/stories/test-impls/test-popups/default-dialog-popup-test.d.ts +0 -13
- package/dist/stories/test-impls/test-popups/default-dialog-popup-test.d.ts.map +0 -1
- package/dist/stories/test-impls/test-popups/default-popup-test.d.ts +0 -5
- package/dist/stories/test-impls/test-popups/default-popup-test.d.ts.map +0 -1
- package/dist/stories/test-wizard-step.stories.d.ts +0 -11
- package/dist/stories/test-wizard-step.stories.d.ts.map +0 -1
- package/dist/stories/test-wizard.stories.d.ts +0 -9
- package/dist/stories/test-wizard.stories.d.ts.map +0 -1
- package/dist/tmpown/pd-loading-state.d.ts +0 -9
- package/dist/tmpown/pd-loading-state.d.ts.map +0 -1
- package/dist/tmpown/pd-loading-state.js +0 -196
- package/dist/tmpown/pd-login.d.ts +0 -13
- package/dist/tmpown/pd-login.d.ts.map +0 -1
- package/dist/tmpown/pd-login.js +0 -165
- package/dist/tmpown/pd-toast.d.ts +0 -13
- package/dist/tmpown/pd-toast.d.ts.map +0 -1
- package/dist/tmpown/pd-toast.js +0 -127
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
import { ActionCreator, Action } from 'ts-action';
|
|
2
|
+
import { LoaderStyle } from '@progressive-development/pd-content';
|
|
3
|
+
/**
|
|
4
|
+
* Configuration for loading state and toast messages.
|
|
5
|
+
*/
|
|
6
|
+
export interface AsyncActionConfig {
|
|
7
|
+
/** Unique key for identifying the loading state */
|
|
8
|
+
actionKey: string;
|
|
9
|
+
/** Text shown during loading */
|
|
10
|
+
loadingTxt: string;
|
|
11
|
+
/** Text shown on success (empty string = no toast) */
|
|
12
|
+
successTxt?: string;
|
|
13
|
+
/** Show modal overlay during loading */
|
|
14
|
+
modal?: boolean;
|
|
15
|
+
/** Show small background loader */
|
|
16
|
+
smallBackground?: boolean;
|
|
17
|
+
/** Duration for success toast in ms */
|
|
18
|
+
successDuration?: number;
|
|
19
|
+
/** Override loader style for this action (overrides app default) */
|
|
20
|
+
loaderStyle?: LoaderStyle;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Typed action creator that preserves payload type for ts-action compatibility.
|
|
24
|
+
* This enables proper type inference with on() and ofType().
|
|
25
|
+
*/
|
|
26
|
+
type TypedActionCreator<P> = ActionCreator<string, (payload: P) => {
|
|
27
|
+
type: string;
|
|
28
|
+
payload: P;
|
|
29
|
+
}>;
|
|
30
|
+
/**
|
|
31
|
+
* Action creator without payload.
|
|
32
|
+
*/
|
|
33
|
+
type TypedActionCreatorVoid = ActionCreator<string, () => {
|
|
34
|
+
type: string;
|
|
35
|
+
}>;
|
|
36
|
+
/**
|
|
37
|
+
* Base interface for async action groups.
|
|
38
|
+
* Use this type for arrays containing groups with different payload types.
|
|
39
|
+
*
|
|
40
|
+
* @example
|
|
41
|
+
* ```typescript
|
|
42
|
+
* const allGroups: AsyncActionGroupBase[] = [
|
|
43
|
+
* loadProfile, // AsyncActionGroup<void, ProfileData>
|
|
44
|
+
* sendRequest, // AsyncActionGroup<RequestData, void>
|
|
45
|
+
* ];
|
|
46
|
+
* ```
|
|
47
|
+
*/
|
|
48
|
+
export interface AsyncActionGroupBase {
|
|
49
|
+
/** Loading state and toast configuration */
|
|
50
|
+
config: AsyncActionConfig;
|
|
51
|
+
/** Base action type (e.g., "LOAD_PROFILE") */
|
|
52
|
+
baseType: string;
|
|
53
|
+
/** All action types for this group */
|
|
54
|
+
types: {
|
|
55
|
+
action: string;
|
|
56
|
+
success: string;
|
|
57
|
+
fail: string;
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* An async action group containing action, success, and fail action creators
|
|
62
|
+
* plus the associated configuration.
|
|
63
|
+
*
|
|
64
|
+
* The action creators preserve their full ts-action types for compatibility
|
|
65
|
+
* with on() and ofType().
|
|
66
|
+
*/
|
|
67
|
+
export interface AsyncActionGroup<TPayload = void, TResult = unknown, TError = Error> extends AsyncActionGroupBase {
|
|
68
|
+
/** The initiating action creator - typed for ts-action compatibility */
|
|
69
|
+
action: TPayload extends void ? TypedActionCreatorVoid : TypedActionCreator<TPayload>;
|
|
70
|
+
/** The success action creator - typed for ts-action compatibility */
|
|
71
|
+
success: TypedActionCreator<TResult>;
|
|
72
|
+
/** The fail action creator - typed for ts-action compatibility */
|
|
73
|
+
fail: TypedActionCreator<TError>;
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Options for creating an async action group.
|
|
77
|
+
* actionKey is derived from baseType if not provided.
|
|
78
|
+
*/
|
|
79
|
+
export type AsyncActionOptions = Omit<AsyncActionConfig, "actionKey"> & {
|
|
80
|
+
actionKey?: string;
|
|
81
|
+
};
|
|
82
|
+
/**
|
|
83
|
+
* Creates an async action group with action/success/fail creators and config.
|
|
84
|
+
*
|
|
85
|
+
* @param baseType - Base action type (e.g., "LOAD_PROFILE")
|
|
86
|
+
* @param options - Loading state and toast configuration
|
|
87
|
+
* @returns AsyncActionGroup with all creators and config
|
|
88
|
+
*
|
|
89
|
+
* @example
|
|
90
|
+
* ```typescript
|
|
91
|
+
* // Without payload on action
|
|
92
|
+
* export const loadProfile = createAsyncAction<ProfileData>("LOAD_PROFILE", {
|
|
93
|
+
* loadingTxt: msg("Loading profile...", { id: "..." }),
|
|
94
|
+
* modal: true,
|
|
95
|
+
* });
|
|
96
|
+
*
|
|
97
|
+
* // With typed payloads
|
|
98
|
+
* export const updateProfile = createAsyncActionGroup<
|
|
99
|
+
* UpdateData, // Action payload
|
|
100
|
+
* ProfileData, // Success payload
|
|
101
|
+
* >("UPDATE_PROFILE", {
|
|
102
|
+
* loadingTxt: "Updating...",
|
|
103
|
+
* successTxt: "Profile updated!",
|
|
104
|
+
* modal: true,
|
|
105
|
+
* });
|
|
106
|
+
*
|
|
107
|
+
* // Usage in effect with ofType():
|
|
108
|
+
* actions$.pipe(
|
|
109
|
+
* ofType(loadProfile.action),
|
|
110
|
+
* mergeMap(() => profileService.load().pipe(
|
|
111
|
+
* map((data) => loadProfile.success(data)),
|
|
112
|
+
* catchError((err) => of(loadProfile.fail(err)))
|
|
113
|
+
* ))
|
|
114
|
+
* );
|
|
115
|
+
*
|
|
116
|
+
* // Usage in reducer with on():
|
|
117
|
+
* reducer(
|
|
118
|
+
* initialState,
|
|
119
|
+
* on(loadProfile.success, (state, { payload }) => ({
|
|
120
|
+
* ...state,
|
|
121
|
+
* profile: payload
|
|
122
|
+
* }))
|
|
123
|
+
* );
|
|
124
|
+
* ```
|
|
125
|
+
*/
|
|
126
|
+
export declare function createAsyncActionGroup<TPayload = void, TResult = unknown, TError = Error>(baseType: string, options: AsyncActionOptions): AsyncActionGroup<TPayload, TResult, TError>;
|
|
127
|
+
/**
|
|
128
|
+
* Creates an async action group without payload on the initiating action.
|
|
129
|
+
* This is a convenience wrapper for the common case.
|
|
130
|
+
*
|
|
131
|
+
* @example
|
|
132
|
+
* ```typescript
|
|
133
|
+
* export const loadProfile = createAsyncAction<ProfileData>("LOAD_PROFILE", {
|
|
134
|
+
* loadingTxt: "Loading...",
|
|
135
|
+
* modal: true,
|
|
136
|
+
* });
|
|
137
|
+
*
|
|
138
|
+
* // loadProfile.action() - no payload
|
|
139
|
+
* // loadProfile.success(data) - ProfileData payload
|
|
140
|
+
* // loadProfile.fail(error) - Error payload
|
|
141
|
+
* ```
|
|
142
|
+
*/
|
|
143
|
+
export declare function createAsyncAction<TResult = unknown, TError = Error>(baseType: string, options: AsyncActionOptions): AsyncActionGroup<void, TResult, TError>;
|
|
144
|
+
/**
|
|
145
|
+
* Type guard to check if an action belongs to an async action group.
|
|
146
|
+
*/
|
|
147
|
+
export declare function isActionFromGroup(actionObj: Action, group: AsyncActionGroupBase): boolean;
|
|
148
|
+
/**
|
|
149
|
+
* Gets the config for an action from a list of groups.
|
|
150
|
+
* Returns undefined if no matching group is found.
|
|
151
|
+
*/
|
|
152
|
+
export declare function getConfigForAction(actionObj: Action, groups: AsyncActionGroupBase[]): AsyncActionConfig | undefined;
|
|
153
|
+
export {};
|
|
154
|
+
//# sourceMappingURL=async-action-utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"async-action-utils.d.ts","sourceRoot":"","sources":["../../src/store/async-action-utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { action, payload } from 'ts-action';
|
|
2
|
+
|
|
3
|
+
function createAsyncActionGroup(baseType, options) {
|
|
4
|
+
const types = {
|
|
5
|
+
action: baseType,
|
|
6
|
+
success: `${baseType}_SUCCESS`,
|
|
7
|
+
fail: `${baseType}_FAIL`
|
|
8
|
+
};
|
|
9
|
+
const actionKey = options.actionKey || baseType.toLowerCase().replace(/_([a-z])/g, (_, letter) => letter.toUpperCase());
|
|
10
|
+
const config = {
|
|
11
|
+
actionKey,
|
|
12
|
+
loadingTxt: options.loadingTxt,
|
|
13
|
+
successTxt: options.successTxt,
|
|
14
|
+
modal: options.modal,
|
|
15
|
+
smallBackground: options.smallBackground,
|
|
16
|
+
successDuration: options.successDuration,
|
|
17
|
+
loaderStyle: options.loaderStyle
|
|
18
|
+
};
|
|
19
|
+
const actionCreator = action(types.action, payload());
|
|
20
|
+
const successCreator = action(types.success, payload());
|
|
21
|
+
const failCreator = action(types.fail, payload());
|
|
22
|
+
return {
|
|
23
|
+
action: actionCreator,
|
|
24
|
+
success: successCreator,
|
|
25
|
+
fail: failCreator,
|
|
26
|
+
config,
|
|
27
|
+
baseType,
|
|
28
|
+
types
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
function createAsyncAction(baseType, options) {
|
|
32
|
+
return createAsyncActionGroup(baseType, options);
|
|
33
|
+
}
|
|
34
|
+
function isActionFromGroup(actionObj, group) {
|
|
35
|
+
return actionObj.type === group.types.action || actionObj.type === group.types.success || actionObj.type === group.types.fail;
|
|
36
|
+
}
|
|
37
|
+
function getConfigForAction(actionObj, groups) {
|
|
38
|
+
const group = groups.find((g) => isActionFromGroup(actionObj, g));
|
|
39
|
+
return group?.config;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
export { createAsyncAction, createAsyncActionGroup, getConfigForAction, isActionFromGroup };
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export { pdStore, initializeStore } from './mini-rx.store.js';
|
|
2
|
+
export { initIndexDBSuccess, loginSuccess, logoutSuccess, nologin, routeAction, updateInternetOffline, addLoadingState, changeSubTask, removeLoadingState, updateNewNotificationToken, updateNewNotificationTokenSuccess, updateNewNotificationTokenFail, } from './spa-app-actions.js';
|
|
3
|
+
export { getLoadingSelector, getOfflineSelector, getInitStatusSelector, selectAuthUser, } from './spa-app-selector.js';
|
|
4
|
+
export { setRouteElement } from './spa-app-effects.js';
|
|
5
|
+
export { spaAppReducer } from './spa-app-reducer.js';
|
|
6
|
+
export type { SpaAppState } from './spa-app-reducer.js';
|
|
7
|
+
export * as SpaActions from './spa-app-actions.js';
|
|
8
|
+
export * as SpaSelectors from './spa-app-selector.js';
|
|
9
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/store/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAG9D,OAAO,EACL,kBAAkB,EAClB,YAAY,EACZ,aAAa,EACb,OAAO,EACP,WAAW,EACX,qBAAqB,EACrB,eAAe,EACf,aAAa,EACb,kBAAkB,EAClB,0BAA0B,EAC1B,iCAAiC,EACjC,8BAA8B,GAC/B,MAAM,sBAAsB,CAAC;AAG9B,OAAO,EACL,kBAAkB,EAClB,kBAAkB,EAClB,qBAAqB,EACrB,cAAc,GACf,MAAM,uBAAuB,CAAC;AAG/B,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAGvD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,YAAY,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAGxD,OAAO,KAAK,UAAU,MAAM,sBAAsB,CAAC;AACnD,OAAO,KAAK,YAAY,MAAM,uBAAuB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mini-rx.store.d.ts","sourceRoot":"","sources":["../../src/store/mini-rx.store.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,EAIN,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,WAAW,EAAE,MAAM,+CAA+C,CAAC;
|
|
1
|
+
{"version":3,"file":"mini-rx.store.d.ts","sourceRoot":"","sources":["../../src/store/mini-rx.store.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,EAIN,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,WAAW,EAAE,MAAM,+CAA+C,CAAC;AAmB5E,eAAO,MAAM,eAAe,GAAI,OAAO,WAAW,SA0BjD,CAAC;AAEF,eAAO,MAAM,OAAO,QAAO,KAAc,CAAC"}
|
|
@@ -1,14 +1,12 @@
|
|
|
1
1
|
import { configureStore, LoggerExtension, ReduxDevtoolsExtension, ImmutableStateExtension } from 'mini-rx-store';
|
|
2
2
|
import { spaAppReducer } from './spa-app-reducer.js';
|
|
3
|
-
import { appRouteEffect
|
|
3
|
+
import { appRouteEffect } from './spa-app-effects.js';
|
|
4
4
|
import { defaultLogger } from '../helper/logger.js';
|
|
5
5
|
|
|
6
6
|
let store;
|
|
7
7
|
const registerEffects = (effects) => {
|
|
8
8
|
if (store) {
|
|
9
9
|
store.effect(appRouteEffect);
|
|
10
|
-
store.effect(appToastEffect);
|
|
11
|
-
store.effect(registerNotificationTokenSuccessEffect);
|
|
12
10
|
effects.forEach((effect) => store.effect(effect));
|
|
13
11
|
} else {
|
|
14
12
|
defaultLogger.error("Store is not initialized. Cannot register effects.");
|
|
@@ -1,18 +1,18 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
export declare const
|
|
1
|
+
import { AppUser } from '../model/spa-model.js';
|
|
2
|
+
import { LoadingState, LoadingSubTask } from '@progressive-development/pd-content';
|
|
3
|
+
export declare const initIndexDBSuccess: (() => {
|
|
4
4
|
type: "SPA_INIT_INDEX_DB_SUCCESS";
|
|
5
5
|
}) & {
|
|
6
6
|
type: "SPA_INIT_INDEX_DB_SUCCESS";
|
|
7
7
|
};
|
|
8
|
-
export declare const
|
|
8
|
+
export declare const loginSuccess: ((payload: AppUser) => {
|
|
9
9
|
payload: AppUser;
|
|
10
10
|
} & {
|
|
11
11
|
type: "SPA_LOGIN_SUCCESS";
|
|
12
12
|
}) & {
|
|
13
13
|
type: "SPA_LOGIN_SUCCESS";
|
|
14
14
|
};
|
|
15
|
-
export declare const
|
|
15
|
+
export declare const logoutSuccess: (() => {
|
|
16
16
|
type: "SPA_LOGOUT_SUCCESS";
|
|
17
17
|
}) & {
|
|
18
18
|
type: "SPA_LOGOUT_SUCCESS";
|
|
@@ -29,23 +29,6 @@ export declare const routeAction: ((payload: string) => {
|
|
|
29
29
|
}) & {
|
|
30
30
|
type: "SPA_APP_ROUTE";
|
|
31
31
|
};
|
|
32
|
-
export declare const toastAction: ((payload: {
|
|
33
|
-
txt: string | TemplateResult;
|
|
34
|
-
isError: boolean;
|
|
35
|
-
isSuccess: boolean;
|
|
36
|
-
duration?: number;
|
|
37
|
-
}) => {
|
|
38
|
-
payload: {
|
|
39
|
-
txt: string | TemplateResult;
|
|
40
|
-
isError: boolean;
|
|
41
|
-
isSuccess: boolean;
|
|
42
|
-
duration?: number;
|
|
43
|
-
};
|
|
44
|
-
} & {
|
|
45
|
-
type: "SPA_APP_TOAST";
|
|
46
|
-
}) & {
|
|
47
|
-
type: "SPA_APP_TOAST";
|
|
48
|
-
};
|
|
49
32
|
export declare const updateInternetOffline: ((payload: boolean) => {
|
|
50
33
|
payload: boolean;
|
|
51
34
|
} & {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spa-app-actions.d.ts","sourceRoot":"","sources":["../../src/store/spa-app-actions.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"spa-app-actions.d.ts","sourceRoot":"","sources":["../../src/store/spa-app-actions.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAChD,OAAO,KAAK,EACV,YAAY,EACZ,cAAc,EACf,MAAM,qCAAqC,CAAC;AAE7C,eAAO,MAAM,kBAAkB;;;;CAAsC,CAAC;AACtE,eAAO,MAAM,YAAY;;;;;;CAAkD,CAAC;AAC5E,eAAO,MAAM,aAAa;;;;CAA+B,CAAC;AAC1D,eAAO,MAAM,OAAO;;;;CAAyB,CAAC;AAE9C,eAAO,MAAM,WAAW;;;;;;CAA6C,CAAC;AAEtE,eAAO,MAAM,qBAAqB;;;;;;CAGjC,CAAC;AAEF,eAAO,MAAM,eAAe;;;;;;CAG3B,CAAC;AACF,eAAO,MAAM,aAAa;qBAGL,MAAM;kBACT,cAAc;;;yBADX,MAAM;sBACT,cAAc;;;;;;CAE/B,CAAC;AACF,eAAO,MAAM,kBAAkB;;;;;;CAG9B,CAAC;AAEF,eAAO,MAAM,0BAA0B;oBAGnB,MAAM;;;wBAAN,MAAM;;;;;;CAEzB,CAAC;AACF,eAAO,MAAM,iCAAiC;oBAG1B,MAAM;;;wBAAN,MAAM;;;;;;CAEzB,CAAC;AACF,eAAO,MAAM,8BAA8B;;;;;;CAG1C,CAAC"}
|
|
@@ -1,14 +1,10 @@
|
|
|
1
1
|
import { action, payload } from 'ts-action';
|
|
2
2
|
|
|
3
|
-
const
|
|
4
|
-
const
|
|
5
|
-
const
|
|
3
|
+
const initIndexDBSuccess = action("SPA_INIT_INDEX_DB_SUCCESS");
|
|
4
|
+
const loginSuccess = action("SPA_LOGIN_SUCCESS", payload());
|
|
5
|
+
const logoutSuccess = action("SPA_LOGOUT_SUCCESS");
|
|
6
6
|
const nologin = action("SPA_NO_LOGIN");
|
|
7
7
|
const routeAction = action("SPA_APP_ROUTE", payload());
|
|
8
|
-
const toastAction = action(
|
|
9
|
-
"SPA_APP_TOAST",
|
|
10
|
-
payload()
|
|
11
|
-
);
|
|
12
8
|
const updateInternetOffline = action(
|
|
13
9
|
"SPA_APP_UPDATE_INTERNET_OFFLINE",
|
|
14
10
|
payload()
|
|
@@ -38,4 +34,4 @@ const updateNewNotificationTokenFail = action(
|
|
|
38
34
|
payload()
|
|
39
35
|
);
|
|
40
36
|
|
|
41
|
-
export { addLoadingState, changeSubTask,
|
|
37
|
+
export { addLoadingState, changeSubTask, initIndexDBSuccess, loginSuccess, logoutSuccess, nologin, removeLoadingState, routeAction, updateInternetOffline, updateNewNotificationToken, updateNewNotificationTokenFail, updateNewNotificationTokenSuccess };
|
|
@@ -4,21 +4,4 @@ export declare const appRouteEffect: import('rxjs').Observable<{
|
|
|
4
4
|
} & {
|
|
5
5
|
type: "SPA_APP_ROUTE";
|
|
6
6
|
}> & import('mini-rx-store/lib/models.js').HasEffectMetadata;
|
|
7
|
-
export declare const appToastEffect: import('rxjs').Observable<{
|
|
8
|
-
payload: {
|
|
9
|
-
txt: string | import('lit').TemplateResult;
|
|
10
|
-
isError: boolean;
|
|
11
|
-
isSuccess: boolean;
|
|
12
|
-
duration?: number;
|
|
13
|
-
};
|
|
14
|
-
} & {
|
|
15
|
-
type: "SPA_APP_TOAST";
|
|
16
|
-
}> & import('mini-rx-store/lib/models.js').HasEffectMetadata;
|
|
17
|
-
export declare const registerNotificationTokenSuccessEffect: import('rxjs').Observable<{
|
|
18
|
-
payload: {
|
|
19
|
-
messagingToken: string;
|
|
20
|
-
};
|
|
21
|
-
} & {
|
|
22
|
-
type: "UPDATE_NOTIFICATION_TOKEN_SUCCESS";
|
|
23
|
-
}> & import('mini-rx-store/lib/models.js').HasEffectMetadata;
|
|
24
7
|
//# sourceMappingURL=spa-app-effects.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spa-app-effects.d.ts","sourceRoot":"","sources":["../../src/store/spa-app-effects.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"spa-app-effects.d.ts","sourceRoot":"","sources":["../../src/store/spa-app-effects.ts"],"names":[],"mappings":"AAWA,eAAO,MAAM,eAAe,GAAI,OAAO,WAAW,SAEjD,CAAC;AAEF,eAAO,MAAM,cAAc;;;;4DAoB1B,CAAC"}
|
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
import { createEffect, actions$ } from 'mini-rx-store';
|
|
2
2
|
import { tap } from 'rxjs/operators';
|
|
3
3
|
import { ofType } from 'ts-action-operators';
|
|
4
|
-
import { routeAction
|
|
5
|
-
import { NOTIFICATION_TOKEN } from '../service-provider/firebase/messagingFirebaseClient.js';
|
|
4
|
+
import { routeAction } from './spa-app-actions.js';
|
|
6
5
|
import { defaultLogger } from '../helper/logger.js';
|
|
7
6
|
|
|
8
7
|
let routeElement;
|
|
@@ -30,42 +29,5 @@ const appRouteEffect = createEffect(
|
|
|
30
29
|
dispatch: false
|
|
31
30
|
}
|
|
32
31
|
);
|
|
33
|
-
const appToastEffect = createEffect(
|
|
34
|
-
actions$.pipe(
|
|
35
|
-
ofType(toastAction),
|
|
36
|
-
tap((action) => {
|
|
37
|
-
if (!routeElement) {
|
|
38
|
-
defaultLogger.error("No route element set for appToastEffect");
|
|
39
|
-
} else {
|
|
40
|
-
routeElement.dispatchEvent(
|
|
41
|
-
new CustomEvent("toast-event", {
|
|
42
|
-
detail: {
|
|
43
|
-
txt: action.payload.txt,
|
|
44
|
-
isSuccess: action.payload.isSuccess,
|
|
45
|
-
isError: action.payload.isError,
|
|
46
|
-
duration: action.payload.duration
|
|
47
|
-
},
|
|
48
|
-
bubbles: true,
|
|
49
|
-
composed: true
|
|
50
|
-
})
|
|
51
|
-
);
|
|
52
|
-
}
|
|
53
|
-
})
|
|
54
|
-
),
|
|
55
|
-
{
|
|
56
|
-
dispatch: false
|
|
57
|
-
}
|
|
58
|
-
);
|
|
59
|
-
const registerNotificationTokenSuccessEffect = createEffect(
|
|
60
|
-
actions$.pipe(
|
|
61
|
-
ofType(updateNewNotificationTokenSuccess),
|
|
62
|
-
tap((action) => {
|
|
63
|
-
localStorage.setItem(NOTIFICATION_TOKEN, action.payload.messagingToken);
|
|
64
|
-
})
|
|
65
|
-
),
|
|
66
|
-
{
|
|
67
|
-
dispatch: false
|
|
68
|
-
}
|
|
69
|
-
);
|
|
70
32
|
|
|
71
|
-
export { appRouteEffect,
|
|
33
|
+
export { appRouteEffect, setRouteElement };
|
|
@@ -1,18 +1,13 @@
|
|
|
1
|
-
import { AppUser
|
|
1
|
+
import { AppUser } from '../model/spa-model.js';
|
|
2
|
+
import { LoadingState } from '@progressive-development/pd-content';
|
|
2
3
|
export interface SpaAppState {
|
|
3
4
|
offline?: boolean;
|
|
4
5
|
loadingState: LoadingState[];
|
|
5
|
-
|
|
6
|
+
/** History of visited route names */
|
|
7
|
+
lastRoutes?: string[];
|
|
6
8
|
initIndexDB?: boolean;
|
|
7
9
|
userLoginDone: boolean;
|
|
8
10
|
user: AppUser | undefined;
|
|
9
11
|
}
|
|
10
|
-
export declare const spaAppReducer: import('ts-action').Reducer<
|
|
11
|
-
userLoginDone: boolean;
|
|
12
|
-
offline?: boolean;
|
|
13
|
-
loadingState: LoadingState[];
|
|
14
|
-
lastRoutes?: any[];
|
|
15
|
-
initIndexDB?: boolean;
|
|
16
|
-
user: AppUser | undefined;
|
|
17
|
-
}>;
|
|
12
|
+
export declare const spaAppReducer: import('ts-action').Reducer<SpaAppState>;
|
|
18
13
|
//# sourceMappingURL=spa-app-reducer.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spa-app-reducer.d.ts","sourceRoot":"","sources":["../../src/store/spa-app-reducer.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"spa-app-reducer.d.ts","sourceRoot":"","sources":["../../src/store/spa-app-reducer.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAChD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qCAAqC,CAAC;AAExE,MAAM,WAAW,WAAW;IAC1B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,YAAY,EAAE,YAAY,EAAE,CAAC;IAC7B,qCAAqC;IACrC,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,aAAa,EAAE,OAAO,CAAC;IACvB,IAAI,EAAE,OAAO,GAAG,SAAS,CAAC;CAC3B;AAQD,eAAO,MAAM,aAAa,0CAgEzB,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { reducer, on } from 'ts-action';
|
|
2
|
-
import { updateInternetOffline, addLoadingState, changeSubTask, removeLoadingState, routeAction,
|
|
2
|
+
import { updateInternetOffline, addLoadingState, changeSubTask, removeLoadingState, routeAction, initIndexDBSuccess, loginSuccess, nologin, logoutSuccess } from './spa-app-actions.js';
|
|
3
3
|
|
|
4
4
|
const initialState = {
|
|
5
5
|
loadingState: [],
|
|
@@ -38,23 +38,28 @@ const spaAppReducer = reducer(
|
|
|
38
38
|
...state,
|
|
39
39
|
lastRoutes: [...state.lastRoutes || [], payload]
|
|
40
40
|
})),
|
|
41
|
-
on(
|
|
41
|
+
on(initIndexDBSuccess, (state) => ({
|
|
42
42
|
...state,
|
|
43
43
|
initIndexDB: true
|
|
44
44
|
})),
|
|
45
|
-
on(
|
|
45
|
+
on(loginSuccess, (state, { payload }) => ({
|
|
46
46
|
...state,
|
|
47
47
|
userLoginDone: true,
|
|
48
48
|
user: payload
|
|
49
49
|
})),
|
|
50
50
|
on(nologin, (state) => ({
|
|
51
51
|
...state,
|
|
52
|
-
userLoginDone: true
|
|
52
|
+
userLoginDone: true,
|
|
53
|
+
user: void 0
|
|
53
54
|
})),
|
|
54
|
-
on(
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
55
|
+
on(
|
|
56
|
+
logoutSuccess,
|
|
57
|
+
() => ({
|
|
58
|
+
...initialState,
|
|
59
|
+
userLoginDone: true,
|
|
60
|
+
user: void 0
|
|
61
|
+
})
|
|
62
|
+
)
|
|
58
63
|
);
|
|
59
64
|
|
|
60
65
|
export { spaAppReducer };
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
export declare const getLoadingSelector: import('mini-rx-store/lib/selector.js').Selector<object, import('
|
|
1
|
+
export declare const getLoadingSelector: import('mini-rx-store/lib/selector.js').Selector<object, import('@progressive-development/pd-content').LoadingState[]>;
|
|
2
2
|
export declare const getOfflineSelector: import('mini-rx-store/lib/selector.js').Selector<object, boolean>;
|
|
3
3
|
export declare const getInitStatusSelector: import('mini-rx-store/lib/selector.js').Selector<object, {
|
|
4
4
|
login: boolean;
|
|
5
5
|
indexedDB: boolean | undefined;
|
|
6
6
|
}>;
|
|
7
7
|
export declare const selectAuthUser: import('mini-rx-store/lib/selector.js').Selector<object, {
|
|
8
|
-
user: import('../
|
|
8
|
+
user: import('../index.js').AppUser | undefined;
|
|
9
9
|
loginCheckFinish: boolean;
|
|
10
10
|
}>;
|
|
11
11
|
//# sourceMappingURL=spa-app-selector.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spa-app-selector.d.ts","sourceRoot":"","sources":["../../src/store/spa-app-selector.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,kBAAkB,
|
|
1
|
+
{"version":3,"file":"spa-app-selector.d.ts","sourceRoot":"","sources":["../../src/store/spa-app-selector.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,kBAAkB,wHAqB9B,CAAC;AAEF,eAAO,MAAM,kBAAkB,mEAG9B,CAAC;AAEF,eAAO,MAAM,qBAAqB;;;EAMjC,CAAC;AAEF,eAAO,MAAM,cAAc;;;EAM1B,CAAC"}
|
|
@@ -5,7 +5,7 @@ const getLoadingSelector = createSelector(
|
|
|
5
5
|
getSpaAppFeatureState,
|
|
6
6
|
(state) => {
|
|
7
7
|
const orderByCreation = [...state.loadingState].sort(
|
|
8
|
-
(a, b) => (a.creation?.
|
|
8
|
+
(a, b) => (a.creation?.getTime() || 0) - (b.creation?.getTime() || 0)
|
|
9
9
|
);
|
|
10
10
|
const loadings = [];
|
|
11
11
|
const mainLoading = orderByCreation.filter((a) => !a.smallBackground);
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { Meta, StoryObj } from '@storybook/web-components';
|
|
2
|
+
declare const meta: Meta;
|
|
3
|
+
export default meta;
|
|
4
|
+
type Story = StoryObj;
|
|
5
|
+
/**
|
|
6
|
+
* Welcome to pd-spa-helper Storybook
|
|
7
|
+
*
|
|
8
|
+
* This library provides the core SPA framework for Lit-based applications.
|
|
9
|
+
*/
|
|
10
|
+
export declare const Welcome: Story;
|
|
11
|
+
//# sourceMappingURL=introduction.stories.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"introduction.stories.d.ts","sourceRoot":"","sources":["../../src/stories/introduction.stories.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAEhE,QAAA,MAAM,IAAI,EAAE,IAKX,CAAC;AAEF,eAAe,IAAI,CAAC;AACpB,KAAK,KAAK,GAAG,QAAQ,CAAC;AAEtB;;;;GAIG;AACH,eAAO,MAAM,OAAO,EAAE,KAqCrB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@progressive-development/pd-spa-helper",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.1",
|
|
4
4
|
"description": "Webcomponent pd-spa-helper following open-wc recommendations",
|
|
5
5
|
"author": "PD Progressive Development",
|
|
6
6
|
"license": "SEE LICENSE IN LICENSE",
|
|
@@ -17,10 +17,12 @@
|
|
|
17
17
|
"README.md",
|
|
18
18
|
"LICENSE"
|
|
19
19
|
],
|
|
20
|
+
"devDependencies": {
|
|
21
|
+
"@progressive-development/pd-shared-styles": "0.4.4"
|
|
22
|
+
},
|
|
20
23
|
"dependencies": {
|
|
21
24
|
"lit": "^3.3.1",
|
|
22
25
|
"@lit/localize": "^0.12.2",
|
|
23
|
-
"date-fns": "^2.30.0",
|
|
24
26
|
"firebase": "^10.14.1",
|
|
25
27
|
"mini-rx-store": "^5.1.0",
|
|
26
28
|
"rxjs": "^7.8.2",
|
|
@@ -28,13 +30,16 @@
|
|
|
28
30
|
"ts-action-operators": "^9.1.2",
|
|
29
31
|
"universal-router": "^10.0.0",
|
|
30
32
|
"tslib": "^2.8.1",
|
|
31
|
-
"@progressive-development/pd-
|
|
32
|
-
"@progressive-development/pd-
|
|
33
|
-
"@progressive-development/pd-dialog": "
|
|
34
|
-
"@progressive-development/pd-
|
|
35
|
-
"@progressive-development/pd-icon": "
|
|
36
|
-
"@progressive-development/pd-
|
|
37
|
-
"@progressive-development/pd-
|
|
33
|
+
"@progressive-development/pd-provider-interfaces": "1.0.1",
|
|
34
|
+
"@progressive-development/pd-model": "1.2.4",
|
|
35
|
+
"@progressive-development/pd-dialog": "1.1.4",
|
|
36
|
+
"@progressive-development/pd-content": "1.1.4",
|
|
37
|
+
"@progressive-development/pd-icon": "1.1.4",
|
|
38
|
+
"@progressive-development/pd-forms": "1.1.4",
|
|
39
|
+
"@progressive-development/pd-page": "1.2.2",
|
|
40
|
+
"@progressive-development/pd-order": "1.1.8",
|
|
41
|
+
"@progressive-development/pd-wizard": "1.1.4",
|
|
42
|
+
"@progressive-development/pd-utils": "1.1.4"
|
|
38
43
|
},
|
|
39
44
|
"customElements": "custom-elements.json",
|
|
40
45
|
"keywords": [
|
package/dist/PdSpaHelper.d.ts
DELETED
|
@@ -1,83 +0,0 @@
|
|
|
1
|
-
import { LitElement, CSSResultGroup, TemplateResult } from 'lit';
|
|
2
|
-
import { Subscription } from 'rxjs';
|
|
3
|
-
import { AppConfiguration, Footer, NavigationPage } from './service-provider/service-provider-model.js';
|
|
4
|
-
import { LoadingState } from './model/spa-model.js';
|
|
5
|
-
export declare const POST_LOGIN_REDIRECT_KEY = "postLoginRedirect";
|
|
6
|
-
/**
|
|
7
|
-
* Init the firebase app and application services like
|
|
8
|
-
* functions and firestore. Generate routes from navigationConfig.
|
|
9
|
-
*
|
|
10
|
-
* @param navigationConfig
|
|
11
|
-
* @param firebaseConfig
|
|
12
|
-
* @param functionsConfig
|
|
13
|
-
*/
|
|
14
|
-
export declare const startInit: (config: AppConfiguration) => void;
|
|
15
|
-
/**
|
|
16
|
-
* Abstract class for SPAs. Extend within the app main class.
|
|
17
|
-
*/
|
|
18
|
-
export declare abstract class PdSpaHelper extends LitElement {
|
|
19
|
-
title: string;
|
|
20
|
-
/**
|
|
21
|
-
* Properties needed for login/profile data.
|
|
22
|
-
*/
|
|
23
|
-
_user: unknown | undefined;
|
|
24
|
-
_profile: any | undefined;
|
|
25
|
-
_loadingState: LoadingState[];
|
|
26
|
-
/**
|
|
27
|
-
* Der aktuelle Routenname (z.B. 'home', 'profile', 'not-found')
|
|
28
|
-
* Wird bei jeder Navigation automatisch aktualisiert.
|
|
29
|
-
*/
|
|
30
|
-
protected _route: string;
|
|
31
|
-
/**
|
|
32
|
-
* Extrahierte Parameter aus der aktuellen Route (z.B. :id → { id: '123' })
|
|
33
|
-
*/
|
|
34
|
-
protected _params: Record<string, string>;
|
|
35
|
-
/**
|
|
36
|
-
* Extrahierte Query-Parameter aus der URL (z.B. ?edit=true → { edit: 'true' })
|
|
37
|
-
*/
|
|
38
|
-
protected _query: Record<string, string>;
|
|
39
|
-
/**
|
|
40
|
-
* Indicates if the teaser should closed (depends on scroll position).
|
|
41
|
-
*/
|
|
42
|
-
private _teaserClosed;
|
|
43
|
-
abstract _selectedLocale: string;
|
|
44
|
-
abstract _availableLocales: string[];
|
|
45
|
-
protected _singleLocaleMenu: boolean;
|
|
46
|
-
_subscription?: Subscription;
|
|
47
|
-
static styles: CSSResultGroup;
|
|
48
|
-
constructor();
|
|
49
|
-
connectedCallback(): void;
|
|
50
|
-
disconnectedCallback(): void;
|
|
51
|
-
_setConfInDetail(event: Event): void;
|
|
52
|
-
/**
|
|
53
|
-
* Non reactive private property for the index db class.
|
|
54
|
-
*/
|
|
55
|
-
/**
|
|
56
|
-
* Call to activate onAuthState change with profile request callbacks.
|
|
57
|
-
* Only implemented for firebase provider.
|
|
58
|
-
*/
|
|
59
|
-
activateLoginHandler(): void;
|
|
60
|
-
render(): TemplateResult<1>;
|
|
61
|
-
private _getMainClass;
|
|
62
|
-
_renderMenu(pageConfig: NavigationPage, hideTeaser: boolean): "" | TemplateResult<1>;
|
|
63
|
-
_renderTopMenu(pageConfig: NavigationPage, hideTeaser: boolean): "" | TemplateResult<1>;
|
|
64
|
-
_renderTeaser(): TemplateResult | string;
|
|
65
|
-
_renderFooter(): TemplateResult<1>;
|
|
66
|
-
protected abstract _getTeaserContent(): Array<TemplateResult>;
|
|
67
|
-
protected abstract _getFooter(): Footer;
|
|
68
|
-
protected abstract _getAppLogo(): TemplateResult;
|
|
69
|
-
protected abstract _renderRoutePages(): any;
|
|
70
|
-
protected abstract _setLocale(locale: string): void;
|
|
71
|
-
protected abstract _getAppConfiguration(): any;
|
|
72
|
-
protected abstract _getHeaderSize(hideTeaser: boolean): number;
|
|
73
|
-
protected _loginSuccess(e: CustomEvent): void;
|
|
74
|
-
_localeChange(e: CustomEvent): void;
|
|
75
|
-
_handleMenuRouteEvent(e: any): void;
|
|
76
|
-
_handleFooterRouteEvent(e: CustomEvent): void;
|
|
77
|
-
_initMenuSections(e: any): void;
|
|
78
|
-
_createTemporaryToast(e: any): void;
|
|
79
|
-
static _scrollToTop(): void;
|
|
80
|
-
_scrollToContent(el: HTMLElement): void;
|
|
81
|
-
private _navigateToPage;
|
|
82
|
-
}
|
|
83
|
-
//# sourceMappingURL=PdSpaHelper.d.ts.map
|