@progressive-development/pd-spa-helper 0.9.1 → 1.0.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/PdSpaHelper.d.ts +83 -0
- package/dist/PdSpaHelper.d.ts.map +1 -0
- package/dist/PdSpaHelper.js +492 -0
- package/dist/defaultpage/default-confirm-popup.d.ts +19 -0
- package/dist/defaultpage/default-confirm-popup.d.ts.map +1 -0
- package/dist/defaultpage/default-confirm-popup.js +70 -0
- package/dist/defaultpage/default-dialog-popup.d.ts +19 -0
- package/dist/defaultpage/default-dialog-popup.d.ts.map +1 -0
- package/dist/defaultpage/default-dialog-popup.js +103 -0
- package/dist/defaultpage/default-login.d.ts +6 -0
- package/dist/defaultpage/default-login.d.ts.map +1 -0
- package/dist/defaultpage/default-login.js +33 -0
- package/dist/defaultpage/default-not-found.d.ts +6 -0
- package/dist/defaultpage/default-not-found.d.ts.map +1 -0
- package/dist/{components/default-not-found/DefaultNotFound.js → defaultpage/default-not-found.js} +3 -10
- package/dist/defaultpage/default-popup.d.ts +7 -0
- package/dist/defaultpage/default-popup.d.ts.map +1 -0
- package/dist/defaultpage/default-popup.js +24 -0
- package/dist/defaultpage/default-step-address.d.ts +14 -0
- package/dist/defaultpage/default-step-address.d.ts.map +1 -0
- package/dist/defaultpage/default-step-address.js +77 -0
- package/dist/defaultpage/default-step-summary.d.ts +28 -0
- package/dist/defaultpage/default-step-summary.d.ts.map +1 -0
- package/dist/defaultpage/default-step-summary.js +67 -0
- package/dist/defaultpage/default-view-page.d.ts +10 -0
- package/dist/defaultpage/default-view-page.d.ts.map +1 -0
- package/dist/defaultpage/default-view-page.js +70 -0
- package/dist/defaultpage/default-wizard.d.ts +37 -0
- package/dist/defaultpage/default-wizard.d.ts.map +1 -0
- package/dist/defaultpage/default-wizard.js +255 -0
- package/dist/defaultpage/pd-default-wizard-step.d.ts +60 -0
- package/dist/defaultpage/pd-default-wizard-step.d.ts.map +1 -0
- package/dist/defaultpage/pd-default-wizard-step.js +144 -0
- package/dist/generated/locale-wrapper/be-wrapper.d.ts +63 -0
- package/dist/generated/locale-wrapper/be-wrapper.d.ts.map +1 -0
- package/dist/generated/locale-wrapper/de-wrapper.d.ts +63 -0
- package/dist/generated/locale-wrapper/de-wrapper.d.ts.map +1 -0
- package/dist/generated/locale-wrapper/en-wrapper.d.ts +63 -0
- package/dist/generated/locale-wrapper/en-wrapper.d.ts.map +1 -0
- package/dist/generated/locales/be.d.ts +15 -1
- package/dist/generated/locales/be.d.ts.map +1 -1
- package/dist/generated/locales/be.js +15 -1
- package/dist/generated/locales/de.d.ts +15 -1
- package/dist/generated/locales/de.d.ts.map +1 -1
- package/dist/generated/locales/de.js +15 -1
- package/dist/generated/locales/en.d.ts +15 -1
- package/dist/generated/locales/en.d.ts.map +1 -1
- package/dist/generated/locales/en.js +15 -1
- package/dist/helper/blob-helper.d.ts +3 -0
- package/dist/helper/blob-helper.d.ts.map +1 -0
- package/dist/helper/blob-helper.js +35 -0
- package/dist/helper/date-helper.d.ts +27 -0
- package/dist/helper/date-helper.d.ts.map +1 -0
- package/dist/helper/date-helper.js +129 -0
- package/dist/helper/locale-format.d.ts +4 -0
- package/dist/helper/locale-format.d.ts.map +1 -0
- package/dist/helper/locale-format.js +16 -0
- package/dist/helper/logger.d.ts +12 -11
- package/dist/helper/logger.d.ts.map +1 -1
- package/dist/helper/logger.js +49 -10
- package/dist/helper/number-helper.d.ts +2 -0
- package/dist/helper/number-helper.d.ts.map +1 -0
- package/dist/helper/number-helper.js +13 -0
- package/dist/helper/price-helper.d.ts +5 -0
- package/dist/helper/price-helper.d.ts.map +1 -0
- package/dist/helper/price-helper.js +22 -0
- package/dist/helper/refresh-id-token.d.ts.map +1 -1
- package/dist/helper/refresh-id-token.js +4 -6
- package/dist/helper/text-helper.d.ts +3 -0
- package/dist/helper/text-helper.d.ts.map +1 -0
- package/dist/helper/text-helper.js +4 -0
- package/dist/index.d.ts +29 -31
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +50 -27
- package/dist/model/spa-model.d.ts +15 -14
- package/dist/model/spa-model.d.ts.map +1 -1
- package/dist/popup/wizard-close-popup.d.ts +11 -0
- package/dist/popup/wizard-close-popup.d.ts.map +1 -0
- package/dist/popup/wizard-close-popup.js +63 -0
- package/dist/popup/wizard-reload-popup.d.ts +14 -0
- package/dist/popup/wizard-reload-popup.d.ts.map +1 -0
- package/dist/popup/wizard-reload-popup.js +76 -0
- package/dist/router/PdRouterService.d.ts +1 -4
- package/dist/router/PdRouterService.d.ts.map +1 -1
- package/dist/router/PdRouterService.js +16 -40
- package/dist/service-provider/firebase/auth.d.ts +19 -0
- package/dist/service-provider/firebase/auth.d.ts.map +1 -0
- package/dist/service-provider/firebase/auth.js +62 -0
- package/dist/service-provider/firebase/firestorage-client.d.ts +22 -0
- package/dist/service-provider/firebase/firestorage-client.d.ts.map +1 -0
- package/dist/service-provider/firebase/firestorage-client.js +226 -0
- package/dist/service-provider/firebase/firestore-client.d.ts +12 -0
- package/dist/service-provider/firebase/firestore-client.d.ts.map +1 -0
- package/dist/service-provider/firebase/firestore-client.js +25 -0
- package/dist/service-provider/firebase/functions-client.d.ts +10 -0
- package/dist/service-provider/firebase/functions-client.d.ts.map +1 -0
- package/dist/service-provider/firebase/functions-client.js +63 -0
- package/dist/service-provider/firebase/messagingFirebaseClient.d.ts +9 -0
- package/dist/service-provider/firebase/messagingFirebaseClient.d.ts.map +1 -0
- package/dist/service-provider/firebase/messagingFirebaseClient.js +69 -0
- package/dist/service-provider/mock/auth.d.ts +6 -0
- package/dist/service-provider/mock/auth.d.ts.map +1 -0
- package/dist/service-provider/mock/auth.js +60 -0
- package/dist/service-provider/mock/function-client.d.ts +7 -0
- package/dist/service-provider/mock/function-client.d.ts.map +1 -0
- package/dist/service-provider/mock/function-client.js +30 -0
- package/dist/service-provider/mock/storage-client.d.ts +11 -0
- package/dist/service-provider/mock/storage-client.d.ts.map +1 -0
- package/dist/service-provider/mock/storage-client.js +106 -0
- package/dist/service-provider/service-provider-impl.d.ts +27 -0
- package/dist/service-provider/service-provider-impl.d.ts.map +1 -0
- package/dist/service-provider/service-provider-impl.js +222 -0
- package/dist/service-provider/service-provider-model.d.ts +7 -26
- package/dist/service-provider/service-provider-model.d.ts.map +1 -1
- package/dist/{db → store}/indexDB.d.ts +9 -9
- package/dist/store/indexDB.d.ts.map +1 -0
- package/dist/{db → store}/indexDB.js +12 -14
- package/dist/store/mini-rx.store.d.ts.map +1 -1
- package/dist/store/mini-rx.store.js +3 -1
- package/dist/store/spa-app-actions.d.ts +22 -5
- package/dist/store/spa-app-actions.d.ts.map +1 -1
- package/dist/store/spa-app-actions.js +8 -4
- package/dist/store/spa-app-effects.d.ts +17 -0
- package/dist/store/spa-app-effects.d.ts.map +1 -1
- package/dist/store/spa-app-effects.js +40 -2
- package/dist/store/spa-app-reducer.d.ts +10 -5
- package/dist/store/spa-app-reducer.d.ts.map +1 -1
- package/dist/store/spa-app-reducer.js +8 -17
- 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/address-edit.stories.d.ts +27 -0
- package/dist/stories/address-edit.stories.d.ts.map +1 -0
- package/dist/stories/address-new.stories.d.ts +33 -0
- package/dist/stories/address-new.stories.d.ts.map +1 -0
- package/dist/stories/default-confirm-popup.stories.d.ts +24 -0
- package/dist/stories/default-confirm-popup.stories.d.ts.map +1 -0
- package/dist/stories/default-dialog-popup.stories.d.ts +23 -0
- package/dist/stories/default-dialog-popup.stories.d.ts.map +1 -0
- package/dist/stories/default-login.stories.d.ts +10 -0
- package/dist/stories/default-login.stories.d.ts.map +1 -0
- package/dist/stories/default-popup.stories.d.ts +9 -0
- package/dist/stories/default-popup.stories.d.ts.map +1 -0
- package/dist/stories/pd-loading-state.stories.d.ts +30 -0
- package/dist/stories/pd-loading-state.stories.d.ts.map +1 -0
- package/dist/stories/pd-toast.stories.d.ts +27 -0
- package/dist/stories/pd-toast.stories.d.ts.map +1 -0
- package/dist/stories/routing.stories.d.ts +24 -0
- package/dist/stories/routing.stories.d.ts.map +1 -0
- package/dist/stories/test-impls/address-test.d.ts +6 -0
- package/dist/stories/test-impls/address-test.d.ts.map +1 -0
- package/dist/stories/test-impls/test-mock-app.d.ts +15 -0
- package/dist/stories/test-impls/test-mock-app.d.ts.map +1 -0
- package/dist/stories/test-impls/test-pages/test-home-page.d.ts +7 -0
- package/dist/stories/test-impls/test-pages/test-home-page.d.ts.map +1 -0
- package/dist/stories/test-impls/test-pages/test-not-found-page.d.ts +5 -0
- package/dist/stories/test-impls/test-pages/test-not-found-page.d.ts.map +1 -0
- package/dist/stories/test-impls/test-pages/test-wizard-step.d.ts +17 -0
- package/dist/stories/test-impls/test-pages/test-wizard-step.d.ts.map +1 -0
- package/dist/stories/test-impls/test-pages/test-wizard.d.ts +16 -0
- package/dist/stories/test-impls/test-pages/test-wizard.d.ts.map +1 -0
- package/dist/stories/test-impls/test-popups/default-confirm-popup-test-error.d.ts +8 -0
- package/dist/stories/test-impls/test-popups/default-confirm-popup-test-error.d.ts.map +1 -0
- package/dist/stories/test-impls/test-popups/default-confirm-popup-test-info.d.ts +8 -0
- package/dist/stories/test-impls/test-popups/default-confirm-popup-test-info.d.ts.map +1 -0
- package/dist/stories/test-impls/test-popups/default-confirm-popup-test-warn.d.ts +8 -0
- package/dist/stories/test-impls/test-popups/default-confirm-popup-test-warn.d.ts.map +1 -0
- package/dist/stories/test-impls/test-popups/default-dialog-popup-test.d.ts +13 -0
- package/dist/stories/test-impls/test-popups/default-dialog-popup-test.d.ts.map +1 -0
- package/dist/stories/test-impls/test-popups/default-popup-test.d.ts +5 -0
- package/dist/stories/test-impls/test-popups/default-popup-test.d.ts.map +1 -0
- package/dist/stories/test-wizard-step.stories.d.ts +11 -0
- package/dist/stories/test-wizard-step.stories.d.ts.map +1 -0
- package/dist/stories/test-wizard.stories.d.ts +9 -0
- package/dist/stories/test-wizard.stories.d.ts.map +1 -0
- package/dist/tmpown/pd-loading-state.d.ts +9 -0
- package/dist/tmpown/pd-loading-state.d.ts.map +1 -0
- package/dist/tmpown/pd-loading-state.js +196 -0
- package/dist/tmpown/pd-login.d.ts +13 -0
- package/dist/tmpown/pd-login.d.ts.map +1 -0
- package/dist/tmpown/pd-login.js +165 -0
- package/dist/tmpown/pd-toast.d.ts +13 -0
- package/dist/tmpown/pd-toast.d.ts.map +1 -0
- package/dist/tmpown/pd-toast.js +127 -0
- package/package.json +9 -13
- package/dist/auth/AuthController.d.ts +0 -37
- package/dist/auth/AuthController.d.ts.map +0 -1
- package/dist/auth/AuthController.js +0 -65
- package/dist/auth/auth-directives.d.ts +0 -59
- package/dist/auth/auth-directives.d.ts.map +0 -1
- package/dist/auth/auth-directives.js +0 -81
- package/dist/auth/auth-utils.d.ts +0 -45
- package/dist/auth/auth-utils.d.ts.map +0 -1
- package/dist/auth/auth-utils.js +0 -42
- package/dist/auth/index.d.ts +0 -7
- package/dist/auth/index.d.ts.map +0 -1
- package/dist/components/default-login/DefaultLogin.d.ts +0 -15
- package/dist/components/default-login/DefaultLogin.d.ts.map +0 -1
- package/dist/components/default-login/DefaultLogin.js +0 -120
- package/dist/components/default-not-found/DefaultNotFound.d.ts +0 -6
- package/dist/components/default-not-found/DefaultNotFound.d.ts.map +0 -1
- package/dist/components/pd-section-page/PdSectionPage.d.ts +0 -55
- package/dist/components/pd-section-page/PdSectionPage.d.ts.map +0 -1
- package/dist/components/pd-section-page/PdSectionPage.js +0 -40
- package/dist/components/pd-spa-helper/PdSpaHelper.d.ts +0 -160
- package/dist/components/pd-spa-helper/PdSpaHelper.d.ts.map +0 -1
- package/dist/components/pd-spa-helper/PdSpaHelper.js +0 -651
- package/dist/components/pd-spa-helper/controllers/ScrollController.d.ts +0 -77
- package/dist/components/pd-spa-helper/controllers/ScrollController.d.ts.map +0 -1
- package/dist/components/pd-spa-helper/controllers/ScrollController.js +0 -102
- package/dist/components/pd-spa-helper/spa-config.d.ts +0 -87
- package/dist/components/pd-spa-helper/spa-config.d.ts.map +0 -1
- package/dist/components/pd-spa-helper/spa-config.js +0 -167
- package/dist/components/pd-spa-helper/spa-events.d.ts +0 -121
- package/dist/components/pd-spa-helper/spa-events.d.ts.map +0 -1
- package/dist/components/pd-spa-helper/spa-events.js +0 -18
- package/dist/db/index.d.ts +0 -3
- package/dist/db/index.d.ts.map +0 -1
- package/dist/db/indexDB.d.ts.map +0 -1
- package/dist/model/index.d.ts +0 -4
- package/dist/model/index.d.ts.map +0 -1
- package/dist/router/index.d.ts +0 -3
- package/dist/router/index.d.ts.map +0 -1
- package/dist/screen-size/ScreenSizeController.d.ts +0 -34
- package/dist/screen-size/ScreenSizeController.d.ts.map +0 -1
- package/dist/screen-size/ScreenSizeController.js +0 -58
- package/dist/screen-size/ScreenSizeService.d.ts +0 -49
- package/dist/screen-size/ScreenSizeService.d.ts.map +0 -1
- package/dist/screen-size/ScreenSizeService.js +0 -107
- package/dist/screen-size/index.d.ts +0 -13
- package/dist/screen-size/index.d.ts.map +0 -1
- package/dist/screen-size/responsive-directives.d.ts +0 -59
- package/dist/screen-size/responsive-directives.d.ts.map +0 -1
- package/dist/screen-size/responsive-directives.js +0 -71
- package/dist/screen-size/types.d.ts +0 -44
- package/dist/screen-size/types.d.ts.map +0 -1
- package/dist/service-provider/ServiceRegistry.d.ts +0 -67
- package/dist/service-provider/ServiceRegistry.d.ts.map +0 -1
- package/dist/service-provider/ServiceRegistry.js +0 -76
- package/dist/service-provider/function-utils.d.ts +0 -55
- package/dist/service-provider/function-utils.d.ts.map +0 -1
- package/dist/service-provider/function-utils.js +0 -30
- package/dist/service-provider/index.d.ts +0 -10
- package/dist/service-provider/index.d.ts.map +0 -1
- package/dist/service-provider/interfaces/IAuthProvider.d.ts +0 -68
- package/dist/service-provider/interfaces/IAuthProvider.d.ts.map +0 -1
- package/dist/service-provider/interfaces/IDatabaseProvider.d.ts +0 -75
- package/dist/service-provider/interfaces/IDatabaseProvider.d.ts.map +0 -1
- package/dist/service-provider/interfaces/IFunctionProvider.d.ts +0 -49
- package/dist/service-provider/interfaces/IFunctionProvider.d.ts.map +0 -1
- package/dist/service-provider/interfaces/IStorageProvider.d.ts +0 -118
- package/dist/service-provider/interfaces/IStorageProvider.d.ts.map +0 -1
- package/dist/service-provider/interfaces/ServiceProvider.d.ts +0 -24
- package/dist/service-provider/interfaces/ServiceProvider.d.ts.map +0 -1
- package/dist/service-provider/interfaces/common.d.ts +0 -5
- package/dist/service-provider/interfaces/common.d.ts.map +0 -1
- package/dist/services/fire-once-service.d.ts +0 -35
- package/dist/services/fire-once-service.d.ts.map +0 -1
- package/dist/services/fire-once-service.js +0 -61
- package/dist/store/async-action-effects.d.ts +0 -179
- package/dist/store/async-action-effects.d.ts.map +0 -1
- package/dist/store/async-action-effects.js +0 -97
- package/dist/store/async-action-utils.d.ts +0 -151
- package/dist/store/async-action-utils.d.ts.map +0 -1
- package/dist/store/async-action-utils.js +0 -41
- package/dist/store/index.d.ts +0 -9
- package/dist/store/index.d.ts.map +0 -1
- package/dist/stories/introduction.stories.d.ts +0 -11
- package/dist/stories/introduction.stories.d.ts.map +0 -1
|
@@ -1,59 +0,0 @@
|
|
|
1
|
-
import { noChange, TemplateResult } from 'lit';
|
|
2
|
-
import { AsyncDirective } from 'lit/async-directive.js';
|
|
3
|
-
import { AppUser } from '../model/spa-model.js';
|
|
4
|
-
/**
|
|
5
|
-
* Base class for auth directives - handles store subscription
|
|
6
|
-
*/
|
|
7
|
-
declare abstract class AuthDirectiveBase extends AsyncDirective {
|
|
8
|
-
private subscription?;
|
|
9
|
-
protected user?: AppUser;
|
|
10
|
-
protected authCheckComplete: boolean;
|
|
11
|
-
disconnected(): void;
|
|
12
|
-
reconnected(): void;
|
|
13
|
-
protected subscribe(): void;
|
|
14
|
-
protected abstract computeValue(): TemplateResult | string | typeof noChange;
|
|
15
|
-
}
|
|
16
|
-
/**
|
|
17
|
-
* ifAuth - renders content only if user is logged in
|
|
18
|
-
*
|
|
19
|
-
* @example
|
|
20
|
-
* ${ifAuth(html`<user-menu></user-menu>`)}
|
|
21
|
-
* ${ifAuth(html`<profile-link></profile-link>`, html`<login-button></login-button>`)}
|
|
22
|
-
*/
|
|
23
|
-
declare class IfAuthDirective extends AuthDirectiveBase {
|
|
24
|
-
private content?;
|
|
25
|
-
private fallback?;
|
|
26
|
-
render(content: TemplateResult, fallback?: TemplateResult | string): string | TemplateResult;
|
|
27
|
-
protected computeValue(): TemplateResult | string;
|
|
28
|
-
}
|
|
29
|
-
/**
|
|
30
|
-
* ifRole - renders content only if user has at least one of the specified roles
|
|
31
|
-
*
|
|
32
|
-
* @example
|
|
33
|
-
* ${ifRole('admin', html`<admin-panel></admin-panel>`)}
|
|
34
|
-
* ${ifRole(['admin', 'editor'], html`<edit-btn></edit-btn>`, html`<span>Read only</span>`)}
|
|
35
|
-
*/
|
|
36
|
-
declare class IfRoleDirective extends AuthDirectiveBase {
|
|
37
|
-
private roles;
|
|
38
|
-
private content?;
|
|
39
|
-
private fallback?;
|
|
40
|
-
render(roles: string | string[], content: TemplateResult, fallback?: TemplateResult | string): string | TemplateResult;
|
|
41
|
-
protected computeValue(): TemplateResult | string;
|
|
42
|
-
}
|
|
43
|
-
/**
|
|
44
|
-
* ifNotAuth - renders content only if user is NOT logged in
|
|
45
|
-
*
|
|
46
|
-
* @example
|
|
47
|
-
* ${ifNotAuth(html`<login-button></login-button>`)}
|
|
48
|
-
*/
|
|
49
|
-
declare class IfNotAuthDirective extends AuthDirectiveBase {
|
|
50
|
-
private content?;
|
|
51
|
-
private fallback?;
|
|
52
|
-
render(content: TemplateResult, fallback?: TemplateResult | string): string | TemplateResult;
|
|
53
|
-
protected computeValue(): TemplateResult | string;
|
|
54
|
-
}
|
|
55
|
-
export declare const ifAuth: (content: TemplateResult, fallback?: string | TemplateResult | undefined) => import('lit/async-directive.js').DirectiveResult<typeof IfAuthDirective>;
|
|
56
|
-
export declare const ifRole: (roles: string | string[], content: TemplateResult, fallback?: string | TemplateResult | undefined) => import('lit/async-directive.js').DirectiveResult<typeof IfRoleDirective>;
|
|
57
|
-
export declare const ifNotAuth: (content: TemplateResult, fallback?: string | TemplateResult | undefined) => import('lit/async-directive.js').DirectiveResult<typeof IfNotAuthDirective>;
|
|
58
|
-
export {};
|
|
59
|
-
//# sourceMappingURL=auth-directives.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"auth-directives.d.ts","sourceRoot":"","sources":["../../src/auth/auth-directives.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,KAAK,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAa,MAAM,wBAAwB,CAAC;AAKnE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAErD;;GAEG;AACH,uBAAe,iBAAkB,SAAQ,cAAc;IACrD,OAAO,CAAC,YAAY,CAAC,CAAe;IACpC,SAAS,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC;IACzB,SAAS,CAAC,iBAAiB,UAAS;IAE3B,YAAY;IAIZ,WAAW;IAIpB,SAAS,CAAC,SAAS;IAgBnB,SAAS,CAAC,QAAQ,CAAC,YAAY,IAAI,cAAc,GAAG,MAAM,GAAG,OAAO,QAAQ;CAC7E;AAED;;;;;;GAMG;AACH,cAAM,eAAgB,SAAQ,iBAAiB;IAC7C,OAAO,CAAC,OAAO,CAAC,CAAiB;IACjC,OAAO,CAAC,QAAQ,CAAC,CAA0B;IAE3C,MAAM,CAAC,OAAO,EAAE,cAAc,EAAE,QAAQ,CAAC,EAAE,cAAc,GAAG,MAAM;cAO/C,YAAY,IAAI,cAAc,GAAG,MAAM;CAQ3D;AAED;;;;;;GAMG;AACH,cAAM,eAAgB,SAAQ,iBAAiB;IAC7C,OAAO,CAAC,KAAK,CAAgB;IAC7B,OAAO,CAAC,OAAO,CAAC,CAAiB;IACjC,OAAO,CAAC,QAAQ,CAAC,CAA0B;IAE3C,MAAM,CACJ,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,EACxB,OAAO,EAAE,cAAc,EACvB,QAAQ,CAAC,EAAE,cAAc,GAAG,MAAM;cASjB,YAAY,IAAI,cAAc,GAAG,MAAM;CAa3D;AAED;;;;;GAKG;AACH,cAAM,kBAAmB,SAAQ,iBAAiB;IAChD,OAAO,CAAC,OAAO,CAAC,CAAiB;IACjC,OAAO,CAAC,QAAQ,CAAC,CAA0B;IAE3C,MAAM,CAAC,OAAO,EAAE,cAAc,EAAE,QAAQ,CAAC,EAAE,cAAc,GAAG,MAAM;cAO/C,YAAY,IAAI,cAAc,GAAG,MAAM;CAQ3D;AAGD,eAAO,MAAM,MAAM,uJAA6B,CAAC;AACjD,eAAO,MAAM,MAAM,iLAA6B,CAAC;AACjD,eAAO,MAAM,SAAS,0JAAgC,CAAC"}
|
|
@@ -1,81 +0,0 @@
|
|
|
1
|
-
import { directive, AsyncDirective } from 'lit/async-directive.js';
|
|
2
|
-
import { pdStore } from '../store/mini-rx.store.js';
|
|
3
|
-
import { selectAuthUser } from '../store/spa-app-selector.js';
|
|
4
|
-
|
|
5
|
-
class AuthDirectiveBase extends AsyncDirective {
|
|
6
|
-
constructor() {
|
|
7
|
-
super(...arguments);
|
|
8
|
-
this.authCheckComplete = false;
|
|
9
|
-
}
|
|
10
|
-
disconnected() {
|
|
11
|
-
this.subscription?.unsubscribe();
|
|
12
|
-
}
|
|
13
|
-
reconnected() {
|
|
14
|
-
this.subscribe();
|
|
15
|
-
}
|
|
16
|
-
subscribe() {
|
|
17
|
-
if (this.subscription) return;
|
|
18
|
-
const store = pdStore();
|
|
19
|
-
if (!store) return;
|
|
20
|
-
this.subscription = store.select(selectAuthUser).subscribe(({ user, loginCheckFinish }) => {
|
|
21
|
-
this.user = user;
|
|
22
|
-
this.authCheckComplete = loginCheckFinish;
|
|
23
|
-
this.setValue(this.computeValue());
|
|
24
|
-
});
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
class IfAuthDirective extends AuthDirectiveBase {
|
|
28
|
-
render(content, fallback) {
|
|
29
|
-
this.content = content;
|
|
30
|
-
this.fallback = fallback ?? "";
|
|
31
|
-
this.subscribe();
|
|
32
|
-
return this.computeValue();
|
|
33
|
-
}
|
|
34
|
-
computeValue() {
|
|
35
|
-
if (!this.authCheckComplete) {
|
|
36
|
-
return this.fallback ?? "";
|
|
37
|
-
}
|
|
38
|
-
return this.user ? this.content ?? "" : this.fallback ?? "";
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
class IfRoleDirective extends AuthDirectiveBase {
|
|
42
|
-
constructor() {
|
|
43
|
-
super(...arguments);
|
|
44
|
-
this.roles = [];
|
|
45
|
-
}
|
|
46
|
-
render(roles, content, fallback) {
|
|
47
|
-
this.roles = Array.isArray(roles) ? roles : [roles];
|
|
48
|
-
this.content = content;
|
|
49
|
-
this.fallback = fallback ?? "";
|
|
50
|
-
this.subscribe();
|
|
51
|
-
return this.computeValue();
|
|
52
|
-
}
|
|
53
|
-
computeValue() {
|
|
54
|
-
if (!this.authCheckComplete) {
|
|
55
|
-
return this.fallback ?? "";
|
|
56
|
-
}
|
|
57
|
-
const hasRequiredRole = this.roles.some(
|
|
58
|
-
(role) => this.user?.claims?.[role] === true
|
|
59
|
-
);
|
|
60
|
-
return hasRequiredRole ? this.content ?? "" : this.fallback ?? "";
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
class IfNotAuthDirective extends AuthDirectiveBase {
|
|
64
|
-
render(content, fallback) {
|
|
65
|
-
this.content = content;
|
|
66
|
-
this.fallback = fallback ?? "";
|
|
67
|
-
this.subscribe();
|
|
68
|
-
return this.computeValue();
|
|
69
|
-
}
|
|
70
|
-
computeValue() {
|
|
71
|
-
if (!this.authCheckComplete) {
|
|
72
|
-
return this.fallback ?? "";
|
|
73
|
-
}
|
|
74
|
-
return !this.user ? this.content ?? "" : this.fallback ?? "";
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
const ifAuth = directive(IfAuthDirective);
|
|
78
|
-
const ifRole = directive(IfRoleDirective);
|
|
79
|
-
const ifNotAuth = directive(IfNotAuthDirective);
|
|
80
|
-
|
|
81
|
-
export { ifAuth, ifNotAuth, ifRole };
|
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
import { AppUser } from '../model/spa-model.js';
|
|
2
|
-
/**
|
|
3
|
-
* Get the current user from the store
|
|
4
|
-
* @returns The current AppUser or undefined if not logged in
|
|
5
|
-
*/
|
|
6
|
-
export declare function getCurrentUser(): Promise<AppUser | undefined>;
|
|
7
|
-
/**
|
|
8
|
-
* Check if a user is currently logged in
|
|
9
|
-
* @returns true if a user is logged in
|
|
10
|
-
*/
|
|
11
|
-
export declare function isLoggedIn(): Promise<boolean>;
|
|
12
|
-
/**
|
|
13
|
-
* Check if the current user has a specific role/claim
|
|
14
|
-
* @param role - The role to check (e.g., "admin", "editor")
|
|
15
|
-
* @returns true if the user has the role
|
|
16
|
-
*/
|
|
17
|
-
export declare function hasRole(role: string): Promise<boolean>;
|
|
18
|
-
/**
|
|
19
|
-
* Check if the current user has at least one of the specified roles (OR logic)
|
|
20
|
-
* @param roles - Array of roles to check
|
|
21
|
-
* @returns true if the user has at least one of the roles
|
|
22
|
-
*/
|
|
23
|
-
export declare function hasAnyRole(roles: string[]): Promise<boolean>;
|
|
24
|
-
/**
|
|
25
|
-
* Check if the current user has all of the specified roles (AND logic)
|
|
26
|
-
* @param roles - Array of roles to check
|
|
27
|
-
* @returns true if the user has all of the roles
|
|
28
|
-
*/
|
|
29
|
-
export declare function hasAllRoles(roles: string[]): Promise<boolean>;
|
|
30
|
-
/**
|
|
31
|
-
* Get the user's email
|
|
32
|
-
* @returns The user's email or null if not logged in
|
|
33
|
-
*/
|
|
34
|
-
export declare function getUserEmail(): Promise<string | null>;
|
|
35
|
-
/**
|
|
36
|
-
* Get the user's UID
|
|
37
|
-
* @returns The user's UID or null if not logged in
|
|
38
|
-
*/
|
|
39
|
-
export declare function getUserId(): Promise<string | null>;
|
|
40
|
-
/**
|
|
41
|
-
* Get all claims for the current user
|
|
42
|
-
* @returns Record of claims or empty object
|
|
43
|
-
*/
|
|
44
|
-
export declare function getUserClaims(): Promise<Record<string, unknown>>;
|
|
45
|
-
//# sourceMappingURL=auth-utils.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"auth-utils.d.ts","sourceRoot":"","sources":["../../src/auth/auth-utils.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAMH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAErD;;;GAGG;AACH,wBAAsB,cAAc,IAAI,OAAO,CAAC,OAAO,GAAG,SAAS,CAAC,CAKnE;AAED;;;GAGG;AACH,wBAAsB,UAAU,IAAI,OAAO,CAAC,OAAO,CAAC,CAGnD;AAED;;;;GAIG;AACH,wBAAsB,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAG5D;AAED;;;;GAIG;AACH,wBAAsB,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAIlE;AAED;;;;GAIG;AACH,wBAAsB,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAInE;AAED;;;GAGG;AACH,wBAAsB,YAAY,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAG3D;AAED;;;GAGG;AACH,wBAAsB,SAAS,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAGxD;AAED;;;GAGG;AACH,wBAAsB,aAAa,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAGtE"}
|
package/dist/auth/auth-utils.js
DELETED
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
import { firstValueFrom, first } from 'rxjs';
|
|
2
|
-
import { pdStore } from '../store/mini-rx.store.js';
|
|
3
|
-
import { selectAuthUser } from '../store/spa-app-selector.js';
|
|
4
|
-
|
|
5
|
-
async function getCurrentUser() {
|
|
6
|
-
const { user } = await firstValueFrom(
|
|
7
|
-
pdStore().select(selectAuthUser).pipe(first())
|
|
8
|
-
);
|
|
9
|
-
return user;
|
|
10
|
-
}
|
|
11
|
-
async function isLoggedIn() {
|
|
12
|
-
const user = await getCurrentUser();
|
|
13
|
-
return user !== void 0;
|
|
14
|
-
}
|
|
15
|
-
async function hasRole(role) {
|
|
16
|
-
const user = await getCurrentUser();
|
|
17
|
-
return user?.claims?.[role] === true;
|
|
18
|
-
}
|
|
19
|
-
async function hasAnyRole(roles) {
|
|
20
|
-
const user = await getCurrentUser();
|
|
21
|
-
if (!user?.claims) return false;
|
|
22
|
-
return roles.some((role) => user.claims?.[role] === true);
|
|
23
|
-
}
|
|
24
|
-
async function hasAllRoles(roles) {
|
|
25
|
-
const user = await getCurrentUser();
|
|
26
|
-
if (!user?.claims) return false;
|
|
27
|
-
return roles.every((role) => user.claims?.[role] === true);
|
|
28
|
-
}
|
|
29
|
-
async function getUserEmail() {
|
|
30
|
-
const user = await getCurrentUser();
|
|
31
|
-
return user?.email ?? null;
|
|
32
|
-
}
|
|
33
|
-
async function getUserId() {
|
|
34
|
-
const user = await getCurrentUser();
|
|
35
|
-
return user?.uid ?? null;
|
|
36
|
-
}
|
|
37
|
-
async function getUserClaims() {
|
|
38
|
-
const user = await getCurrentUser();
|
|
39
|
-
return user?.claims ?? {};
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
export { getCurrentUser, getUserClaims, getUserEmail, getUserId, hasAllRoles, hasAnyRole, hasRole, isLoggedIn };
|
package/dist/auth/index.d.ts
DELETED
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Auth module - Utilities, controllers and directives for authentication
|
|
3
|
-
*/
|
|
4
|
-
export { getCurrentUser, isLoggedIn, hasRole, hasAnyRole, hasAllRoles, getUserEmail, getUserId, getUserClaims, } from './auth-utils.js';
|
|
5
|
-
export { AuthController } from './AuthController.js';
|
|
6
|
-
export { ifAuth, ifRole, ifNotAuth } from './auth-directives.js';
|
|
7
|
-
//# sourceMappingURL=index.d.ts.map
|
package/dist/auth/index.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/auth/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EACL,cAAc,EACd,UAAU,EACV,OAAO,EACP,UAAU,EACV,WAAW,EACX,YAAY,EACZ,SAAS,EACT,aAAa,GACd,MAAM,iBAAiB,CAAC;AAGzB,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAGrD,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC"}
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import { LitElement } from 'lit';
|
|
2
|
-
export declare class DefaultLogin extends LitElement {
|
|
3
|
-
/**
|
|
4
|
-
* @event login-success fired when login was successful
|
|
5
|
-
*/
|
|
6
|
-
private _loading;
|
|
7
|
-
private _errorMessage;
|
|
8
|
-
private _successMessage;
|
|
9
|
-
static styles: import('lit').CSSResult[];
|
|
10
|
-
render(): import('lit').TemplateResult<1>;
|
|
11
|
-
private _handleLoginAttempt;
|
|
12
|
-
private _handleForgotPasswordAttempt;
|
|
13
|
-
private _mapErrorCode;
|
|
14
|
-
}
|
|
15
|
-
//# sourceMappingURL=DefaultLogin.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"DefaultLogin.d.ts","sourceRoot":"","sources":["../../../src/components/default-login/DefaultLogin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAa,MAAM,KAAK,CAAC;AAc5C,OAAO,2CAA2C,CAAC;AAKnD,qBACa,YAAa,SAAQ,UAAU;IAC1C;;OAEG;IAGH,OAAO,CAAC,QAAQ,CAAS;IAGzB,OAAO,CAAC,aAAa,CAAM;IAG3B,OAAO,CAAC,eAAe,CAAM;IAE7B,MAAM,CAAC,MAAM,4BASX;IAEF,MAAM;IAYN,OAAO,CAAC,mBAAmB;IAoC3B,OAAO,CAAC,4BAA4B;IA6BpC,OAAO,CAAC,aAAa;CAWtB"}
|
|
@@ -1,120 +0,0 @@
|
|
|
1
|
-
import { css, LitElement, html } from 'lit';
|
|
2
|
-
import { state, customElement } from 'lit/decorators.js';
|
|
3
|
-
import { services } from '../../service-provider/ServiceRegistry.js';
|
|
4
|
-
import { pdStore } from '../../store/mini-rx.store.js';
|
|
5
|
-
import { addLoadingState, removeLoadingState } from '../../store/spa-app-actions.js';
|
|
6
|
-
import '@progressive-development/pd-page/pd-login';
|
|
7
|
-
|
|
8
|
-
var __defProp = Object.defineProperty;
|
|
9
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
10
|
-
var __decorateClass = (decorators, target, key, kind) => {
|
|
11
|
-
var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc(target, key) : target;
|
|
12
|
-
for (var i = decorators.length - 1, decorator; i >= 0; i--)
|
|
13
|
-
if (decorator = decorators[i])
|
|
14
|
-
result = (kind ? decorator(target, key, result) : decorator(result)) || result;
|
|
15
|
-
if (kind && result) __defProp(target, key, result);
|
|
16
|
-
return result;
|
|
17
|
-
};
|
|
18
|
-
const LOGIN_LOADING_KEY = "login-attempt";
|
|
19
|
-
const PASSWORD_RESET_LOADING_KEY = "password-reset-attempt";
|
|
20
|
-
let DefaultLogin = class extends LitElement {
|
|
21
|
-
constructor() {
|
|
22
|
-
super(...arguments);
|
|
23
|
-
this._loading = false;
|
|
24
|
-
this._errorMessage = "";
|
|
25
|
-
this._successMessage = "";
|
|
26
|
-
}
|
|
27
|
-
render() {
|
|
28
|
-
return html`
|
|
29
|
-
<pd-login
|
|
30
|
-
?loading="${this._loading}"
|
|
31
|
-
errorMessage="${this._errorMessage}"
|
|
32
|
-
successMessage="${this._successMessage}"
|
|
33
|
-
@login-attempt="${this._handleLoginAttempt}"
|
|
34
|
-
@forgot-password-attempt="${this._handleForgotPasswordAttempt}"
|
|
35
|
-
></pd-login>
|
|
36
|
-
`;
|
|
37
|
-
}
|
|
38
|
-
_handleLoginAttempt(e) {
|
|
39
|
-
this._loading = true;
|
|
40
|
-
this._errorMessage = "";
|
|
41
|
-
this._successMessage = "";
|
|
42
|
-
pdStore().dispatch(
|
|
43
|
-
addLoadingState({
|
|
44
|
-
actionKey: LOGIN_LOADING_KEY,
|
|
45
|
-
isLoading: true,
|
|
46
|
-
modal: true,
|
|
47
|
-
loadingTxt: "Anmeldung..."
|
|
48
|
-
})
|
|
49
|
-
);
|
|
50
|
-
services.auth.login(e.detail.email, e.detail.password).then((user) => {
|
|
51
|
-
this.dispatchEvent(
|
|
52
|
-
new CustomEvent("login-success", {
|
|
53
|
-
detail: user,
|
|
54
|
-
bubbles: true,
|
|
55
|
-
composed: true
|
|
56
|
-
})
|
|
57
|
-
);
|
|
58
|
-
}).catch((error) => {
|
|
59
|
-
this._errorMessage = this._mapErrorCode(error.code || "unknown");
|
|
60
|
-
}).finally(() => {
|
|
61
|
-
this._loading = false;
|
|
62
|
-
pdStore().dispatch(removeLoadingState(LOGIN_LOADING_KEY));
|
|
63
|
-
});
|
|
64
|
-
}
|
|
65
|
-
_handleForgotPasswordAttempt(e) {
|
|
66
|
-
this._loading = true;
|
|
67
|
-
this._errorMessage = "";
|
|
68
|
-
this._successMessage = "";
|
|
69
|
-
pdStore().dispatch(
|
|
70
|
-
addLoadingState({
|
|
71
|
-
actionKey: PASSWORD_RESET_LOADING_KEY,
|
|
72
|
-
isLoading: true,
|
|
73
|
-
modal: false,
|
|
74
|
-
smallBackground: true,
|
|
75
|
-
loadingTxt: "E-Mail wird gesendet..."
|
|
76
|
-
})
|
|
77
|
-
);
|
|
78
|
-
services.auth.sendPasswordResetEmail(e.detail.email).then(() => {
|
|
79
|
-
this._successMessage = "Wir haben Ihnen eine E-Mail zum Zurücksetzen des Passworts gesendet.";
|
|
80
|
-
}).finally(() => {
|
|
81
|
-
this._loading = false;
|
|
82
|
-
pdStore().dispatch(removeLoadingState(PASSWORD_RESET_LOADING_KEY));
|
|
83
|
-
});
|
|
84
|
-
}
|
|
85
|
-
_mapErrorCode(code) {
|
|
86
|
-
switch (code) {
|
|
87
|
-
case "auth/invalid-email":
|
|
88
|
-
return "E-Mail Format für Benutzer ist ungültig.";
|
|
89
|
-
case "auth/wrong-password":
|
|
90
|
-
case "auth/user-not-found":
|
|
91
|
-
return "Anmeldung fehlgeschlagen, ungültige Benutzerdaten.";
|
|
92
|
-
default:
|
|
93
|
-
return "Technisches Problem aufgetreten, die Anmeldung kann leider aktuell nicht durchgeführt werden.";
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
};
|
|
97
|
-
DefaultLogin.styles = [
|
|
98
|
-
css`
|
|
99
|
-
:host {
|
|
100
|
-
padding-top: 3em;
|
|
101
|
-
display: flex;
|
|
102
|
-
align-items: center;
|
|
103
|
-
justify-content: center;
|
|
104
|
-
}
|
|
105
|
-
`
|
|
106
|
-
];
|
|
107
|
-
__decorateClass([
|
|
108
|
-
state()
|
|
109
|
-
], DefaultLogin.prototype, "_loading", 2);
|
|
110
|
-
__decorateClass([
|
|
111
|
-
state()
|
|
112
|
-
], DefaultLogin.prototype, "_errorMessage", 2);
|
|
113
|
-
__decorateClass([
|
|
114
|
-
state()
|
|
115
|
-
], DefaultLogin.prototype, "_successMessage", 2);
|
|
116
|
-
DefaultLogin = __decorateClass([
|
|
117
|
-
customElement("default-login")
|
|
118
|
-
], DefaultLogin);
|
|
119
|
-
|
|
120
|
-
export { DefaultLogin };
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"DefaultNotFound.d.ts","sourceRoot":"","sources":["../../../src/components/default-not-found/DefaultNotFound.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAa,MAAM,KAAK,CAAC;AAG5C,qBACa,eAAgB,SAAQ,UAAU;IAC7C,MAAM,CAAC,MAAM,4BAgBX;IAEF,MAAM;CAKP"}
|
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
import { LitElement, CSSResultGroup } from 'lit';
|
|
2
|
-
/**
|
|
3
|
-
* Map of section IDs to their DOM element references.
|
|
4
|
-
* Keys must match the `sec` property in MenuElement configuration.
|
|
5
|
-
*/
|
|
6
|
-
export type SectionRefs = Record<string, HTMLElement | null | undefined>;
|
|
7
|
-
/**
|
|
8
|
-
* Map of section IDs to action creator functions.
|
|
9
|
-
* Actions are dispatched when the section becomes visible (fired once per session).
|
|
10
|
-
*/
|
|
11
|
-
export type SectionActions = Record<string, () => any>;
|
|
12
|
-
/**
|
|
13
|
-
* Configuration for menu sections.
|
|
14
|
-
* Returned by _getMenuSections() to register section elements with the menu.
|
|
15
|
-
*/
|
|
16
|
-
export interface SectionConfig {
|
|
17
|
-
/** Page name - should match the route name in NavigationConfig */
|
|
18
|
-
name: string;
|
|
19
|
-
/** Map of section IDs to element references (keys match MenuElement.sec) */
|
|
20
|
-
menuRefs: SectionRefs;
|
|
21
|
-
/** Optional: Map of section IDs to action creators (dispatched when section becomes visible) */
|
|
22
|
-
sectionActions?: SectionActions;
|
|
23
|
-
}
|
|
24
|
-
/**
|
|
25
|
-
* Abstract base class for pages with section-based scroll navigation.
|
|
26
|
-
*
|
|
27
|
-
* Subclasses must implement _getMenuSections() to provide section references.
|
|
28
|
-
*/
|
|
29
|
-
export declare abstract class PdSectionPage extends LitElement {
|
|
30
|
-
/**
|
|
31
|
-
* Base styles providing scroll-margin-top for sections.
|
|
32
|
-
* Subclasses should include these styles:
|
|
33
|
-
*
|
|
34
|
-
* ```typescript
|
|
35
|
-
* static override styles = [
|
|
36
|
-
* PdSectionPage.styles,
|
|
37
|
-
* css`...own styles...`
|
|
38
|
-
* ];
|
|
39
|
-
* ```
|
|
40
|
-
*/
|
|
41
|
-
static styles: CSSResultGroup;
|
|
42
|
-
/**
|
|
43
|
-
* Must be implemented by subclass to provide section configuration.
|
|
44
|
-
* Called in firstUpdated() to register sections with the menu.
|
|
45
|
-
*
|
|
46
|
-
* @returns SectionConfig with page name and section element references
|
|
47
|
-
*/
|
|
48
|
-
protected abstract _getMenuSections(): SectionConfig;
|
|
49
|
-
/**
|
|
50
|
-
* Dispatches init-menu-sections event to register section elements.
|
|
51
|
-
* Subclasses can override but should call super.firstUpdated().
|
|
52
|
-
*/
|
|
53
|
-
firstUpdated(): void;
|
|
54
|
-
}
|
|
55
|
-
//# sourceMappingURL=PdSectionPage.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"PdSectionPage.d.ts","sourceRoot":"","sources":["../../../src/components/pd-section-page/PdSectionPage.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AAEH,OAAO,EAAE,UAAU,EAAO,cAAc,EAAE,MAAM,KAAK,CAAC;AAEtD;;;GAGG;AACH,MAAM,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,EAAE,WAAW,GAAG,IAAI,GAAG,SAAS,CAAC,CAAC;AAEzE;;;GAGG;AAEH,MAAM,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,CAAC,CAAC;AAEvD;;;GAGG;AACH,MAAM,WAAW,aAAa;IAC5B,kEAAkE;IAClE,IAAI,EAAE,MAAM,CAAC;IACb,4EAA4E;IAC5E,QAAQ,EAAE,WAAW,CAAC;IACtB,gGAAgG;IAChG,cAAc,CAAC,EAAE,cAAc,CAAC;CACjC;AAED;;;;GAIG;AACH,8BAAsB,aAAc,SAAQ,UAAU;IACpD;;;;;;;;;;OAUG;IACH,MAAM,CAAC,MAAM,EAAE,cAAc,CAO3B;IAEF;;;;;OAKG;IACH,SAAS,CAAC,QAAQ,CAAC,gBAAgB,IAAI,aAAa;IAEpD;;;OAGG;IACM,YAAY,IAAI,IAAI;CAS9B"}
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
import { LitElement, css } from 'lit';
|
|
2
|
-
|
|
3
|
-
class PdSectionPage extends LitElement {
|
|
4
|
-
static {
|
|
5
|
-
/**
|
|
6
|
-
* Base styles providing scroll-margin-top for sections.
|
|
7
|
-
* Subclasses should include these styles:
|
|
8
|
-
*
|
|
9
|
-
* ```typescript
|
|
10
|
-
* static override styles = [
|
|
11
|
-
* PdSectionPage.styles,
|
|
12
|
-
* css`...own styles...`
|
|
13
|
-
* ];
|
|
14
|
-
* ```
|
|
15
|
-
*/
|
|
16
|
-
this.styles = css`
|
|
17
|
-
section {
|
|
18
|
-
scroll-margin-top: calc(
|
|
19
|
-
var(--pd-menu-height, 60px) + var(--pd-top-menu-height, 30px) +
|
|
20
|
-
var(--pd-teaser-height, 0px) + 20px
|
|
21
|
-
);
|
|
22
|
-
}
|
|
23
|
-
`;
|
|
24
|
-
}
|
|
25
|
-
/**
|
|
26
|
-
* Dispatches init-menu-sections event to register section elements.
|
|
27
|
-
* Subclasses can override but should call super.firstUpdated().
|
|
28
|
-
*/
|
|
29
|
-
firstUpdated() {
|
|
30
|
-
this.dispatchEvent(
|
|
31
|
-
new CustomEvent("init-menu-sections", {
|
|
32
|
-
detail: this._getMenuSections(),
|
|
33
|
-
bubbles: true,
|
|
34
|
-
composed: true
|
|
35
|
-
})
|
|
36
|
-
);
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
export { PdSectionPage };
|
|
@@ -1,160 +0,0 @@
|
|
|
1
|
-
import { LitElement, CSSResultGroup, TemplateResult, PropertyValues } from 'lit';
|
|
2
|
-
import { ButtonData } from '@progressive-development/pd-forms';
|
|
3
|
-
import { AppConfiguration, Footer, NavigationPage } from '../../service-provider/service-provider-model.js';
|
|
4
|
-
import { LoadingState } from '@progressive-development/pd-content';
|
|
5
|
-
import { ScrollController } from './controllers/ScrollController.js';
|
|
6
|
-
/**
|
|
7
|
-
* Initialize the SPA framework.
|
|
8
|
-
*
|
|
9
|
-
* This function must be called before using PdSpaHelper components.
|
|
10
|
-
* It sets up:
|
|
11
|
-
* - Service provider (Firebase or Mock)
|
|
12
|
-
* - Redux store
|
|
13
|
-
* - Router with configured routes
|
|
14
|
-
*
|
|
15
|
-
* @param config - The application configuration
|
|
16
|
-
*
|
|
17
|
-
* @example
|
|
18
|
-
* ```typescript
|
|
19
|
-
* startInit({
|
|
20
|
-
* serviceProvider: "firebase",
|
|
21
|
-
* firebaseConfig: { ... },
|
|
22
|
-
* navigationConfigParam: {
|
|
23
|
-
* pages: [...],
|
|
24
|
-
* includeLogin: true,
|
|
25
|
-
* },
|
|
26
|
-
* storeConfigParam: {
|
|
27
|
-
* appName: "My App",
|
|
28
|
-
* reducer: [...],
|
|
29
|
-
* effects: [...],
|
|
30
|
-
* },
|
|
31
|
-
* });
|
|
32
|
-
* ```
|
|
33
|
-
*/
|
|
34
|
-
export declare const startInit: (config: AppConfiguration) => void;
|
|
35
|
-
/**
|
|
36
|
-
* Abstract base class for SPA applications.
|
|
37
|
-
*
|
|
38
|
-
* Extend this class to create your main application component.
|
|
39
|
-
* Override the abstract methods to customize the layout and content.
|
|
40
|
-
*
|
|
41
|
-
* Required abstract methods:
|
|
42
|
-
* - `_renderRoutePages(route)` - Render content for given route
|
|
43
|
-
* - `_getFooter()` - Return footer configuration
|
|
44
|
-
* - `_getAppLogo()` - Return app logo template
|
|
45
|
-
* - `_setLocale()` - Handle locale changes
|
|
46
|
-
* - `_getAppConfiguration()` - Return app-specific config
|
|
47
|
-
*/
|
|
48
|
-
export declare abstract class PdSpaHelper extends LitElement {
|
|
49
|
-
/** Controller for scroll threshold detection (teaser collapse) */
|
|
50
|
-
protected scrollController: ScrollController;
|
|
51
|
-
title: string;
|
|
52
|
-
/** Scroll threshold in pixels for teaser collapse. Default: 100px */
|
|
53
|
-
teaserCollapseThreshold: number;
|
|
54
|
-
/** Current loading states */
|
|
55
|
-
protected _loadingState: LoadingState[];
|
|
56
|
-
/** Current route name */
|
|
57
|
-
protected _route: string;
|
|
58
|
-
/** Route parameters */
|
|
59
|
-
protected _params: Record<string, string>;
|
|
60
|
-
/** Query parameters */
|
|
61
|
-
protected _query: Record<string, string>;
|
|
62
|
-
/** Whether the teaser is collapsed (scrolled past threshold) */
|
|
63
|
-
protected teaserCollapsed: boolean;
|
|
64
|
-
/**
|
|
65
|
-
* Skip teaser transition during navigate-and-scroll.
|
|
66
|
-
* Prevents the "teaser appears then collapses" visual glitch.
|
|
67
|
-
*/
|
|
68
|
-
private _skipTeaserTransition;
|
|
69
|
-
/** Pending section ID for navigate-and-scroll (stored until init-menu-sections fires) */
|
|
70
|
-
private _pendingScrollSectionId;
|
|
71
|
-
/** Currently selected locale - must be implemented by subclass */
|
|
72
|
-
abstract _selectedLocale: string;
|
|
73
|
-
private _claims;
|
|
74
|
-
/** Available locales with display text and value - must be implemented by subclass */
|
|
75
|
-
abstract _availableLocales: ButtonData[];
|
|
76
|
-
/** Whether to show locale selector in single menu only */
|
|
77
|
-
protected _singleLocaleMenu: boolean;
|
|
78
|
-
/** Store subscription for cleanup */
|
|
79
|
-
private _subscription?;
|
|
80
|
-
/** Track previous auth state to detect real transitions (not initial load) */
|
|
81
|
-
private _previousAuthState;
|
|
82
|
-
/** Map of section IDs to action creator functions */
|
|
83
|
-
private _sectionActions;
|
|
84
|
-
static styles: CSSResultGroup;
|
|
85
|
-
constructor();
|
|
86
|
-
connectedCallback(): void;
|
|
87
|
-
disconnectedCallback(): void;
|
|
88
|
-
protected willUpdate(changedProps: PropertyValues): void;
|
|
89
|
-
render(): TemplateResult;
|
|
90
|
-
/**
|
|
91
|
-
* Render the loading state while route is being resolved
|
|
92
|
-
* Can be overridden by subclass
|
|
93
|
-
*/
|
|
94
|
-
protected _renderLoading(): TemplateResult;
|
|
95
|
-
/**
|
|
96
|
-
* Render the main layout
|
|
97
|
-
* Can be overridden by subclass for custom layouts
|
|
98
|
-
*/
|
|
99
|
-
protected _renderLayout(pageConf: NavigationPage, showTeaser: boolean): TemplateResult;
|
|
100
|
-
/**
|
|
101
|
-
* Render the login modal popup
|
|
102
|
-
*/
|
|
103
|
-
private _renderLoginModal;
|
|
104
|
-
/**
|
|
105
|
-
* Handle login popup close (user aborted login via Escape or backdrop click)
|
|
106
|
-
*/
|
|
107
|
-
private _handleLoginPopupClose;
|
|
108
|
-
protected _renderMenu(pageConfig: NavigationPage, showTeaser: boolean): TemplateResult | string;
|
|
109
|
-
protected _renderTopMenu(pageConfig: NavigationPage, showTeaser: boolean): TemplateResult | string;
|
|
110
|
-
protected _renderTeaser(): TemplateResult | string;
|
|
111
|
-
protected _renderFooter(): TemplateResult;
|
|
112
|
-
/**
|
|
113
|
-
* Render the content for the given route
|
|
114
|
-
* @param route - The route to render (may differ from _route for modal scenarios)
|
|
115
|
-
*/
|
|
116
|
-
protected abstract _renderRoutePages(route: string): TemplateResult;
|
|
117
|
-
/**
|
|
118
|
-
* Get the footer configuration
|
|
119
|
-
*/
|
|
120
|
-
protected abstract _getFooter(): Footer;
|
|
121
|
-
/**
|
|
122
|
-
* Get the app logo template
|
|
123
|
-
*/
|
|
124
|
-
protected abstract _getAppLogo(): TemplateResult;
|
|
125
|
-
/**
|
|
126
|
-
* Set the locale
|
|
127
|
-
*/
|
|
128
|
-
protected abstract _setLocale(locale: string): void;
|
|
129
|
-
/**
|
|
130
|
-
* Get app-specific configuration
|
|
131
|
-
*/
|
|
132
|
-
protected abstract _getAppConfiguration(): unknown;
|
|
133
|
-
/**
|
|
134
|
-
* Get teaser content panels
|
|
135
|
-
* Override to provide teaser content, or return empty array for no teaser
|
|
136
|
-
*/
|
|
137
|
-
protected _getTeaserContent(): TemplateResult[];
|
|
138
|
-
private _handleRouteEvent;
|
|
139
|
-
private _handleFooterLink;
|
|
140
|
-
private _handleInitMenuSections;
|
|
141
|
-
/**
|
|
142
|
-
* Handle section-activated event from pd-menu.
|
|
143
|
-
* Dispatches the registered action for a section (once per session).
|
|
144
|
-
*/
|
|
145
|
-
private _handleSectionActivated;
|
|
146
|
-
private _handleLocaleChange;
|
|
147
|
-
private _handleAppConfigEvent;
|
|
148
|
-
private _activateLoginHandler;
|
|
149
|
-
private _getMainClass;
|
|
150
|
-
private _navigateToPage;
|
|
151
|
-
/**
|
|
152
|
-
* Scroll to a section element. Collapses teaser if expanded.
|
|
153
|
-
*/
|
|
154
|
-
private _scrollToSection;
|
|
155
|
-
/**
|
|
156
|
-
* Find section element by sectionId from current page's menu refs.
|
|
157
|
-
*/
|
|
158
|
-
private _findSectionElement;
|
|
159
|
-
}
|
|
160
|
-
//# sourceMappingURL=PdSpaHelper.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"PdSpaHelper.d.ts","sourceRoot":"","sources":["../../../src/components/pd-spa-helper/PdSpaHelper.ts"],"names":[],"mappings":"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"}
|