valtech-components 2.0.408 → 2.0.410
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/esm2022/lib/components/atoms/horizontal-scroll/horizontal-scroll.component.mjs +82 -0
- package/esm2022/lib/components/atoms/horizontal-scroll/types.mjs +2 -0
- package/esm2022/lib/components/atoms/rights-footer/rights-footer.component.mjs +82 -0
- package/esm2022/lib/components/atoms/rights-footer/types.mjs +2 -0
- package/esm2022/lib/components/molecules/check-input/check-input.component.mjs +55 -11
- package/esm2022/lib/components/molecules/email-input/email-input.component.mjs +13 -4
- package/esm2022/lib/components/molecules/expandable-text/expandable-text.component.mjs +27 -23
- package/esm2022/lib/components/molecules/footer-links/footer-links.component.mjs +277 -0
- package/esm2022/lib/components/molecules/footer-links/types.mjs +2 -0
- package/esm2022/lib/components/molecules/links-accordion/links-accordion.component.mjs +157 -0
- package/esm2022/lib/components/molecules/links-accordion/types.mjs +2 -0
- package/esm2022/lib/components/molecules/password-input/password-input.component.mjs +12 -2
- package/esm2022/lib/components/molecules/prompter/prompter.component.mjs +21 -9
- package/esm2022/lib/components/molecules/prompter/types.mjs +1 -1
- package/esm2022/lib/components/molecules/radio-input/radio-input.component.mjs +13 -4
- package/esm2022/lib/components/molecules/recap-card/recap-card.component.mjs +78 -0
- package/esm2022/lib/components/molecules/recap-card/types.mjs +2 -0
- package/esm2022/lib/components/molecules/select-input/select-input.component.mjs +31 -14
- package/esm2022/lib/components/molecules/swipe-carousel/swipe-carousel.component.mjs +206 -0
- package/esm2022/lib/components/molecules/swipe-carousel/types.mjs +2 -0
- package/esm2022/lib/components/molecules/testimonial-card/testimonial-card.component.mjs +138 -0
- package/esm2022/lib/components/molecules/testimonial-card/types.mjs +2 -0
- package/esm2022/lib/components/molecules/text-input/text-input.component.mjs +14 -4
- package/esm2022/lib/components/organisms/cards-carousel/cards-carousel.component.mjs +61 -0
- package/esm2022/lib/components/organisms/cards-carousel/types.mjs +2 -0
- package/esm2022/lib/components/organisms/company-footer/company-footer.component.mjs +72 -0
- package/esm2022/lib/components/organisms/company-footer/types.mjs +2 -0
- package/esm2022/lib/components/organisms/data-table/data-table.component.mjs +175 -3
- package/esm2022/lib/components/organisms/data-table/types.mjs +1 -1
- package/esm2022/lib/components/organisms/form/form.component.mjs +2 -2
- package/esm2022/lib/components/organisms/fun-header/fun-header.component.mjs +225 -0
- package/esm2022/lib/components/organisms/fun-header/types.mjs +2 -0
- package/esm2022/lib/components/organisms/menu/menu.component.mjs +197 -0
- package/esm2022/lib/components/organisms/menu/types.mjs +2 -0
- package/esm2022/lib/components/organisms/testimonial-carousel/testimonial-carousel.component.mjs +72 -0
- package/esm2022/lib/components/organisms/testimonial-carousel/types.mjs +2 -0
- package/esm2022/lib/components/templates/page-content/page-content.component.mjs +156 -0
- package/esm2022/lib/components/templates/page-content/types.mjs +2 -0
- package/esm2022/lib/components/templates/page-template/page-template.component.mjs +181 -0
- package/esm2022/lib/components/templates/page-template/types.mjs +2 -0
- package/esm2022/lib/components/templates/page-wrapper/page-wrapper.component.mjs +195 -0
- package/esm2022/lib/components/templates/page-wrapper/types.mjs +2 -0
- package/esm2022/lib/components/types.mjs +1 -1
- package/esm2022/lib/services/firebase/config.mjs +103 -0
- package/esm2022/lib/services/firebase/firebase.service.mjs +285 -0
- package/esm2022/lib/services/firebase/firestore-collection.mjs +266 -0
- package/esm2022/lib/services/firebase/firestore.service.mjs +508 -0
- package/esm2022/lib/services/firebase/index.mjs +46 -0
- package/esm2022/lib/services/firebase/messaging.service.mjs +503 -0
- package/esm2022/lib/services/firebase/storage.service.mjs +421 -0
- package/esm2022/lib/services/firebase/types.mjs +8 -0
- package/esm2022/lib/services/firebase/utils/path-builder.mjs +195 -0
- package/esm2022/lib/services/firebase/utils/query-builder.mjs +302 -0
- package/esm2022/public-api.mjs +33 -1
- package/fesm2022/valtech-components.mjs +5821 -868
- package/fesm2022/valtech-components.mjs.map +1 -1
- package/lib/components/atoms/horizontal-scroll/horizontal-scroll.component.d.ts +41 -0
- package/lib/components/atoms/horizontal-scroll/types.d.ts +13 -0
- package/lib/components/atoms/rights-footer/rights-footer.component.d.ts +39 -0
- package/lib/components/atoms/rights-footer/types.d.ts +13 -0
- package/lib/components/molecules/check-input/check-input.component.d.ts +17 -2
- package/lib/components/molecules/email-input/email-input.component.d.ts +1 -2
- package/lib/components/molecules/footer-links/footer-links.component.d.ts +47 -0
- package/lib/components/molecules/footer-links/types.d.ts +37 -0
- package/lib/components/molecules/links-accordion/links-accordion.component.d.ts +48 -0
- package/lib/components/molecules/links-accordion/types.d.ts +33 -0
- package/lib/components/molecules/password-input/password-input.component.d.ts +1 -1
- package/lib/components/molecules/prompter/prompter.component.d.ts +8 -1
- package/lib/components/molecules/prompter/types.d.ts +7 -1
- package/lib/components/molecules/radio-input/radio-input.component.d.ts +1 -2
- package/lib/components/molecules/recap-card/recap-card.component.d.ts +36 -0
- package/lib/components/molecules/recap-card/types.d.ts +30 -0
- package/lib/components/molecules/select-input/select-input.component.d.ts +6 -1
- package/lib/components/molecules/swipe-carousel/swipe-carousel.component.d.ts +66 -0
- package/lib/components/molecules/swipe-carousel/types.d.ts +35 -0
- package/lib/components/molecules/testimonial-card/testimonial-card.component.d.ts +41 -0
- package/lib/components/molecules/testimonial-card/types.d.ts +25 -0
- package/lib/components/molecules/text-input/text-input.component.d.ts +13 -4
- package/lib/components/organisms/cards-carousel/cards-carousel.component.d.ts +30 -0
- package/lib/components/organisms/cards-carousel/types.d.ts +11 -0
- package/lib/components/organisms/company-footer/company-footer.component.d.ts +32 -0
- package/lib/components/organisms/company-footer/types.d.ts +15 -0
- package/lib/components/organisms/data-table/data-table.component.d.ts +1 -1
- package/lib/components/organisms/data-table/types.d.ts +6 -0
- package/lib/components/organisms/fun-header/fun-header.component.d.ts +72 -0
- package/lib/components/organisms/fun-header/types.d.ts +28 -0
- package/lib/components/organisms/menu/menu.component.d.ts +39 -0
- package/lib/components/organisms/menu/types.d.ts +23 -0
- package/lib/components/organisms/testimonial-carousel/testimonial-carousel.component.d.ts +33 -0
- package/lib/components/organisms/testimonial-carousel/types.d.ts +8 -0
- package/lib/components/templates/page-content/page-content.component.d.ts +55 -0
- package/lib/components/templates/page-content/types.d.ts +14 -0
- package/lib/components/templates/page-template/page-template.component.d.ts +49 -0
- package/lib/components/templates/page-template/types.d.ts +17 -0
- package/lib/components/templates/page-wrapper/page-wrapper.component.d.ts +61 -0
- package/lib/components/templates/page-wrapper/types.d.ts +19 -0
- package/lib/components/types.d.ts +14 -0
- package/lib/services/firebase/config.d.ts +49 -0
- package/lib/services/firebase/firebase.service.d.ts +140 -0
- package/lib/services/firebase/firestore-collection.d.ts +195 -0
- package/lib/services/firebase/firestore.service.d.ts +303 -0
- package/lib/services/firebase/index.d.ts +38 -0
- package/lib/services/firebase/messaging.service.d.ts +254 -0
- package/lib/services/firebase/storage.service.d.ts +204 -0
- package/lib/services/firebase/types.d.ts +279 -0
- package/lib/services/firebase/utils/path-builder.d.ts +132 -0
- package/lib/services/firebase/utils/query-builder.d.ts +210 -0
- package/package.json +3 -1
- package/public-api.d.ts +31 -0
package/esm2022/lib/components/organisms/testimonial-carousel/testimonial-carousel.component.mjs
ADDED
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import { CommonModule } from '@angular/common';
|
|
2
|
+
import { Component, Input } from '@angular/core';
|
|
3
|
+
import { SwipeCarouselComponent } from '../../molecules/swipe-carousel/swipe-carousel.component';
|
|
4
|
+
import { TestimonialCardComponent } from '../../molecules/testimonial-card/testimonial-card.component';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
/**
|
|
7
|
+
* val-testimonial-carousel
|
|
8
|
+
*
|
|
9
|
+
* A carousel of testimonial cards using Swiper.js with centered slides
|
|
10
|
+
* and responsive breakpoints for optimal viewing on all devices.
|
|
11
|
+
*
|
|
12
|
+
* @example
|
|
13
|
+
* <val-testimonial-carousel
|
|
14
|
+
* [props]="{
|
|
15
|
+
* cards: [
|
|
16
|
+
* { title: 'John Doe', image: '/john.jpg', link: { text: 'CEO', route: ['/team'] } },
|
|
17
|
+
* { title: 'Jane Smith', image: '/jane.jpg', link: { text: 'CTO', route: ['/team'] } }
|
|
18
|
+
* ]
|
|
19
|
+
* }"
|
|
20
|
+
* ></val-testimonial-carousel>
|
|
21
|
+
*
|
|
22
|
+
* @input props - Carousel configuration with testimonial cards
|
|
23
|
+
*/
|
|
24
|
+
export class TestimonialCarouselComponent {
|
|
25
|
+
constructor() {
|
|
26
|
+
/**
|
|
27
|
+
* Carousel configuration with testimonial cards.
|
|
28
|
+
*/
|
|
29
|
+
this.props = { cards: [] };
|
|
30
|
+
/**
|
|
31
|
+
* Swiper configuration optimized for testimonial cards.
|
|
32
|
+
*/
|
|
33
|
+
this.swiperProps = {
|
|
34
|
+
slidesPerView: 1.1,
|
|
35
|
+
spaceBetween: 40,
|
|
36
|
+
loop: true,
|
|
37
|
+
centeredSlides: true,
|
|
38
|
+
effect: 'slide',
|
|
39
|
+
pagination: true,
|
|
40
|
+
navigation: true,
|
|
41
|
+
breakpoints: {
|
|
42
|
+
768: {
|
|
43
|
+
slidesPerView: 1.5,
|
|
44
|
+
spaceBetween: 40,
|
|
45
|
+
},
|
|
46
|
+
1024: {
|
|
47
|
+
slidesPerView: 1.7,
|
|
48
|
+
spaceBetween: 50,
|
|
49
|
+
},
|
|
50
|
+
},
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: TestimonialCarouselComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
54
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: TestimonialCarouselComponent, isStandalone: true, selector: "val-testimonial-carousel", inputs: { props: "props" }, ngImport: i0, template: `
|
|
55
|
+
<val-swipe-carousel [items]="props.cards" [itemTemplate]="testimonialTemplate" [props]="swiperProps" />
|
|
56
|
+
<ng-template #testimonialTemplate let-card>
|
|
57
|
+
<val-testimonial-card [props]="card"></val-testimonial-card>
|
|
58
|
+
</ng-template>
|
|
59
|
+
`, isInline: true, styles: [":host{display:block}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: TestimonialCardComponent, selector: "val-testimonial-card", inputs: ["props"] }, { kind: "component", type: SwipeCarouselComponent, selector: "val-swipe-carousel", inputs: ["items", "itemTemplate", "props"] }] }); }
|
|
60
|
+
}
|
|
61
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: TestimonialCarouselComponent, decorators: [{
|
|
62
|
+
type: Component,
|
|
63
|
+
args: [{ selector: 'val-testimonial-carousel', standalone: true, imports: [CommonModule, TestimonialCardComponent, SwipeCarouselComponent], template: `
|
|
64
|
+
<val-swipe-carousel [items]="props.cards" [itemTemplate]="testimonialTemplate" [props]="swiperProps" />
|
|
65
|
+
<ng-template #testimonialTemplate let-card>
|
|
66
|
+
<val-testimonial-card [props]="card"></val-testimonial-card>
|
|
67
|
+
</ng-template>
|
|
68
|
+
`, styles: [":host{display:block}\n"] }]
|
|
69
|
+
}], propDecorators: { props: [{
|
|
70
|
+
type: Input
|
|
71
|
+
}] } });
|
|
72
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdGltb25pYWwtY2Fyb3VzZWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL29yZ2FuaXNtcy90ZXN0aW1vbmlhbC1jYXJvdXNlbC90ZXN0aW1vbmlhbC1jYXJvdXNlbC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHlEQUF5RCxDQUFDO0FBRWpHLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDZEQUE2RCxDQUFDOztBQUd2Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FpQkc7QUFpQkgsTUFBTSxPQUFPLDRCQUE0QjtJQWhCekM7UUFpQkU7O1dBRUc7UUFDTSxVQUFLLEdBQWdDLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxDQUFDO1FBRTVEOztXQUVHO1FBQ0gsZ0JBQVcsR0FBMEI7WUFDbkMsYUFBYSxFQUFFLEdBQUc7WUFDbEIsWUFBWSxFQUFFLEVBQUU7WUFDaEIsSUFBSSxFQUFFLElBQUk7WUFDVixjQUFjLEVBQUUsSUFBSTtZQUNwQixNQUFNLEVBQUUsT0FBTztZQUNmLFVBQVUsRUFBRSxJQUFJO1lBQ2hCLFVBQVUsRUFBRSxJQUFJO1lBQ2hCLFdBQVcsRUFBRTtnQkFDWCxHQUFHLEVBQUU7b0JBQ0gsYUFBYSxFQUFFLEdBQUc7b0JBQ2xCLFlBQVksRUFBRSxFQUFFO2lCQUNqQjtnQkFDRCxJQUFJLEVBQUU7b0JBQ0osYUFBYSxFQUFFLEdBQUc7b0JBQ2xCLFlBQVksRUFBRSxFQUFFO2lCQUNqQjthQUNGO1NBQ0YsQ0FBQztLQUNIOytHQTVCWSw0QkFBNEI7bUdBQTVCLDRCQUE0QixnSEFaN0I7Ozs7O0dBS1QsK0ZBTlMsWUFBWSwrQkFBRSx3QkFBd0Isb0ZBQUUsc0JBQXNCOzs0RkFhN0QsNEJBQTRCO2tCQWhCeEMsU0FBUzsrQkFDRSwwQkFBMEIsY0FDeEIsSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLHdCQUF3QixFQUFFLHNCQUFzQixDQUFDLFlBQy9EOzs7OztHQUtUOzhCQVdRLEtBQUs7c0JBQWIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDb21wb25lbnQsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTd2lwZUNhcm91c2VsQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vbW9sZWN1bGVzL3N3aXBlLWNhcm91c2VsL3N3aXBlLWNhcm91c2VsLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTd2lwZUNhcm91c2VsTWV0YWRhdGEgfSBmcm9tICcuLi8uLi9tb2xlY3VsZXMvc3dpcGUtY2Fyb3VzZWwvdHlwZXMnO1xuaW1wb3J0IHsgVGVzdGltb25pYWxDYXJkQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vbW9sZWN1bGVzL3Rlc3RpbW9uaWFsLWNhcmQvdGVzdGltb25pYWwtY2FyZC5jb21wb25lbnQnO1xuaW1wb3J0IHsgVGVzdGltb25pYWxDYXJvdXNlbE1ldGFkYXRhIH0gZnJvbSAnLi90eXBlcyc7XG5cbi8qKlxuICogdmFsLXRlc3RpbW9uaWFsLWNhcm91c2VsXG4gKlxuICogQSBjYXJvdXNlbCBvZiB0ZXN0aW1vbmlhbCBjYXJkcyB1c2luZyBTd2lwZXIuanMgd2l0aCBjZW50ZXJlZCBzbGlkZXNcbiAqIGFuZCByZXNwb25zaXZlIGJyZWFrcG9pbnRzIGZvciBvcHRpbWFsIHZpZXdpbmcgb24gYWxsIGRldmljZXMuXG4gKlxuICogQGV4YW1wbGVcbiAqIDx2YWwtdGVzdGltb25pYWwtY2Fyb3VzZWxcbiAqICAgW3Byb3BzXT1cIntcbiAqICAgICBjYXJkczogW1xuICogICAgICAgeyB0aXRsZTogJ0pvaG4gRG9lJywgaW1hZ2U6ICcvam9obi5qcGcnLCBsaW5rOiB7IHRleHQ6ICdDRU8nLCByb3V0ZTogWycvdGVhbSddIH0gfSxcbiAqICAgICAgIHsgdGl0bGU6ICdKYW5lIFNtaXRoJywgaW1hZ2U6ICcvamFuZS5qcGcnLCBsaW5rOiB7IHRleHQ6ICdDVE8nLCByb3V0ZTogWycvdGVhbSddIH0gfVxuICogICAgIF1cbiAqICAgfVwiXG4gKiA+PC92YWwtdGVzdGltb25pYWwtY2Fyb3VzZWw+XG4gKlxuICogQGlucHV0IHByb3BzIC0gQ2Fyb3VzZWwgY29uZmlndXJhdGlvbiB3aXRoIHRlc3RpbW9uaWFsIGNhcmRzXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZhbC10ZXN0aW1vbmlhbC1jYXJvdXNlbCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIFRlc3RpbW9uaWFsQ2FyZENvbXBvbmVudCwgU3dpcGVDYXJvdXNlbENvbXBvbmVudF0sXG4gIHRlbXBsYXRlOiBgXG4gICAgPHZhbC1zd2lwZS1jYXJvdXNlbCBbaXRlbXNdPVwicHJvcHMuY2FyZHNcIiBbaXRlbVRlbXBsYXRlXT1cInRlc3RpbW9uaWFsVGVtcGxhdGVcIiBbcHJvcHNdPVwic3dpcGVyUHJvcHNcIiAvPlxuICAgIDxuZy10ZW1wbGF0ZSAjdGVzdGltb25pYWxUZW1wbGF0ZSBsZXQtY2FyZD5cbiAgICAgIDx2YWwtdGVzdGltb25pYWwtY2FyZCBbcHJvcHNdPVwiY2FyZFwiPjwvdmFsLXRlc3RpbW9uaWFsLWNhcmQ+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgYCxcbiAgc3R5bGVzOiBgXG4gICAgOmhvc3Qge1xuICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgfVxuICBgLFxufSlcbmV4cG9ydCBjbGFzcyBUZXN0aW1vbmlhbENhcm91c2VsQ29tcG9uZW50IHtcbiAgLyoqXG4gICAqIENhcm91c2VsIGNvbmZpZ3VyYXRpb24gd2l0aCB0ZXN0aW1vbmlhbCBjYXJkcy5cbiAgICovXG4gIEBJbnB1dCgpIHByb3BzOiBUZXN0aW1vbmlhbENhcm91c2VsTWV0YWRhdGEgPSB7IGNhcmRzOiBbXSB9O1xuXG4gIC8qKlxuICAgKiBTd2lwZXIgY29uZmlndXJhdGlvbiBvcHRpbWl6ZWQgZm9yIHRlc3RpbW9uaWFsIGNhcmRzLlxuICAgKi9cbiAgc3dpcGVyUHJvcHM6IFN3aXBlQ2Fyb3VzZWxNZXRhZGF0YSA9IHtcbiAgICBzbGlkZXNQZXJWaWV3OiAxLjEsXG4gICAgc3BhY2VCZXR3ZWVuOiA0MCxcbiAgICBsb29wOiB0cnVlLFxuICAgIGNlbnRlcmVkU2xpZGVzOiB0cnVlLFxuICAgIGVmZmVjdDogJ3NsaWRlJyxcbiAgICBwYWdpbmF0aW9uOiB0cnVlLFxuICAgIG5hdmlnYXRpb246IHRydWUsXG4gICAgYnJlYWtwb2ludHM6IHtcbiAgICAgIDc2ODoge1xuICAgICAgICBzbGlkZXNQZXJWaWV3OiAxLjUsXG4gICAgICAgIHNwYWNlQmV0d2VlbjogNDAsXG4gICAgICB9LFxuICAgICAgMTAyNDoge1xuICAgICAgICBzbGlkZXNQZXJWaWV3OiAxLjcsXG4gICAgICAgIHNwYWNlQmV0d2VlbjogNTAsXG4gICAgICB9LFxuICAgIH0sXG4gIH07XG59XG4iXX0=
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvb3JnYW5pc21zL3Rlc3RpbW9uaWFsLWNhcm91c2VsL3R5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUZXN0aW1vbmlhbENhcmRNZXRhZGF0YSB9IGZyb20gJy4uLy4uL21vbGVjdWxlcy90ZXN0aW1vbmlhbC1jYXJkL3R5cGVzJztcblxuLyoqXG4gKiBDb25maWd1cmF0aW9uIGZvciB0aGUgdGVzdGltb25pYWwgY2Fyb3VzZWwgY29tcG9uZW50LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRlc3RpbW9uaWFsQ2Fyb3VzZWxNZXRhZGF0YSB7XG4gIC8qKiBBcnJheSBvZiB0ZXN0aW1vbmlhbCBjYXJkcyB0byBkaXNwbGF5ICovXG4gIGNhcmRzOiBUZXN0aW1vbmlhbENhcmRNZXRhZGF0YVtdO1xufVxuIl19
|
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
import { CommonModule } from '@angular/common';
|
|
2
|
+
import { Component, EventEmitter, inject, Input, Output } from '@angular/core';
|
|
3
|
+
import { IonContent } from '@ionic/angular/standalone';
|
|
4
|
+
import { HeaderComponent } from '../../organisms/header/header.component';
|
|
5
|
+
import { ThemeService } from '../../../services/theme.service';
|
|
6
|
+
import { NavigationService } from '../../../services/navigation.service';
|
|
7
|
+
import { resolveColor } from '../../../shared/utils/styles';
|
|
8
|
+
import * as i0 from "@angular/core";
|
|
9
|
+
import * as i1 from "@angular/common";
|
|
10
|
+
/**
|
|
11
|
+
* val-page-content
|
|
12
|
+
*
|
|
13
|
+
* A page content template with corporate header, main content area,
|
|
14
|
+
* and footer slots. Supports dark mode and customizable backgrounds.
|
|
15
|
+
*
|
|
16
|
+
* @example
|
|
17
|
+
* <val-page-content
|
|
18
|
+
* [props]="{
|
|
19
|
+
* header: { ... },
|
|
20
|
+
* background: '--main-background',
|
|
21
|
+
* homeRoute: '/'
|
|
22
|
+
* }"
|
|
23
|
+
* (onHeaderClick)="handleHeaderAction($event)"
|
|
24
|
+
* >
|
|
25
|
+
* <div content>
|
|
26
|
+
* <!-- Main page content -->
|
|
27
|
+
* </div>
|
|
28
|
+
* <div footer>
|
|
29
|
+
* <val-company-footer [props]="footerProps"></val-company-footer>
|
|
30
|
+
* </div>
|
|
31
|
+
* </val-page-content>
|
|
32
|
+
*
|
|
33
|
+
* @input props - Page content configuration
|
|
34
|
+
* @output onHeaderClick - Emits when a header action is clicked
|
|
35
|
+
*/
|
|
36
|
+
export class PageContentComponent {
|
|
37
|
+
constructor() {
|
|
38
|
+
this.theme = inject(ThemeService);
|
|
39
|
+
this.nav = inject(NavigationService);
|
|
40
|
+
/**
|
|
41
|
+
* Page content configuration.
|
|
42
|
+
*/
|
|
43
|
+
this.props = {};
|
|
44
|
+
/**
|
|
45
|
+
* Emits when a header action is clicked.
|
|
46
|
+
*/
|
|
47
|
+
this.onHeaderClick = new EventEmitter();
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Default header configuration.
|
|
51
|
+
*/
|
|
52
|
+
get headerProps() {
|
|
53
|
+
return (this.props.header || {
|
|
54
|
+
bordered: true,
|
|
55
|
+
translucent: true,
|
|
56
|
+
toolbar: {
|
|
57
|
+
withBack: false,
|
|
58
|
+
withActions: true,
|
|
59
|
+
textColor: 'dark',
|
|
60
|
+
withMenu: true,
|
|
61
|
+
title: '',
|
|
62
|
+
actions: [
|
|
63
|
+
{
|
|
64
|
+
token: 'header-logo',
|
|
65
|
+
description: '',
|
|
66
|
+
position: 'left',
|
|
67
|
+
type: 'IMAGE',
|
|
68
|
+
image: {
|
|
69
|
+
width: 10,
|
|
70
|
+
src: '--main-logo',
|
|
71
|
+
alt: 'header logo',
|
|
72
|
+
mode: 'box',
|
|
73
|
+
shaded: false,
|
|
74
|
+
bordered: false,
|
|
75
|
+
size: 'small',
|
|
76
|
+
limited: false,
|
|
77
|
+
flex: true,
|
|
78
|
+
},
|
|
79
|
+
},
|
|
80
|
+
],
|
|
81
|
+
},
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Gets the background color based on theme.
|
|
86
|
+
*/
|
|
87
|
+
getBackground() {
|
|
88
|
+
if (this.theme.IsDark) {
|
|
89
|
+
return 'var(--ion-background-color)';
|
|
90
|
+
}
|
|
91
|
+
const bg = this.props.background;
|
|
92
|
+
if (!bg) {
|
|
93
|
+
return 'var(--ion-background-color)';
|
|
94
|
+
}
|
|
95
|
+
return resolveColor(bg);
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Handles header action clicks.
|
|
99
|
+
*/
|
|
100
|
+
onHeaderClickHandler(token) {
|
|
101
|
+
this.onHeaderClick.emit(token);
|
|
102
|
+
// Navigate to home route if configured and logo was clicked
|
|
103
|
+
if (token === 'header-logo' && this.props.homeRoute) {
|
|
104
|
+
this.nav.navigateByUrl(this.props.homeRoute);
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PageContentComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
108
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: PageContentComponent, isStandalone: true, selector: "val-page-content", inputs: { props: "props" }, outputs: { onHeaderClick: "onHeaderClick" }, ngImport: i0, template: `
|
|
109
|
+
<div class="ion-page">
|
|
110
|
+
<val-header
|
|
111
|
+
[props]="headerProps"
|
|
112
|
+
(onClick)="onHeaderClickHandler($event)"
|
|
113
|
+
/>
|
|
114
|
+
<ion-content
|
|
115
|
+
[fullscreen]="true"
|
|
116
|
+
[ngStyle]="{
|
|
117
|
+
'--background': getBackground()
|
|
118
|
+
}"
|
|
119
|
+
>
|
|
120
|
+
<main>
|
|
121
|
+
<ng-content select="[content]"></ng-content>
|
|
122
|
+
</main>
|
|
123
|
+
<ng-content select="[footer]"></ng-content>
|
|
124
|
+
</ion-content>
|
|
125
|
+
<ng-content select="[extra-footer]"></ng-content>
|
|
126
|
+
</div>
|
|
127
|
+
`, isInline: true, styles: ["main{min-height:60vh}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: HeaderComponent, selector: "val-header", inputs: ["props"], outputs: ["onClick"] }, { kind: "component", type: IonContent, selector: "ion-content", inputs: ["color", "fixedSlotPlacement", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }] }); }
|
|
128
|
+
}
|
|
129
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PageContentComponent, decorators: [{
|
|
130
|
+
type: Component,
|
|
131
|
+
args: [{ selector: 'val-page-content', standalone: true, imports: [CommonModule, HeaderComponent, IonContent], template: `
|
|
132
|
+
<div class="ion-page">
|
|
133
|
+
<val-header
|
|
134
|
+
[props]="headerProps"
|
|
135
|
+
(onClick)="onHeaderClickHandler($event)"
|
|
136
|
+
/>
|
|
137
|
+
<ion-content
|
|
138
|
+
[fullscreen]="true"
|
|
139
|
+
[ngStyle]="{
|
|
140
|
+
'--background': getBackground()
|
|
141
|
+
}"
|
|
142
|
+
>
|
|
143
|
+
<main>
|
|
144
|
+
<ng-content select="[content]"></ng-content>
|
|
145
|
+
</main>
|
|
146
|
+
<ng-content select="[footer]"></ng-content>
|
|
147
|
+
</ion-content>
|
|
148
|
+
<ng-content select="[extra-footer]"></ng-content>
|
|
149
|
+
</div>
|
|
150
|
+
`, styles: ["main{min-height:60vh}\n"] }]
|
|
151
|
+
}], propDecorators: { props: [{
|
|
152
|
+
type: Input
|
|
153
|
+
}], onHeaderClick: [{
|
|
154
|
+
type: Output
|
|
155
|
+
}] } });
|
|
156
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnZS1jb250ZW50LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy90ZW1wbGF0ZXMvcGFnZS1jb250ZW50L3BhZ2UtY29udGVudC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9FLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDMUUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQy9ELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBRXpFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQzs7O0FBRTVEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBeUJHO0FBK0JILE1BQU0sT0FBTyxvQkFBb0I7SUE5QmpDO1FBK0JVLFVBQUssR0FBRyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDN0IsUUFBRyxHQUFHLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBRXhDOztXQUVHO1FBQ00sVUFBSyxHQUF3QixFQUFFLENBQUM7UUFFekM7O1dBRUc7UUFDTyxrQkFBYSxHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7S0FtRXREO0lBakVDOztPQUVHO0lBQ0gsSUFBSSxXQUFXO1FBQ2IsT0FBTyxDQUNMLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxJQUFJO1lBQ25CLFFBQVEsRUFBRSxJQUFJO1lBQ2QsV0FBVyxFQUFFLElBQUk7WUFDakIsT0FBTyxFQUFFO2dCQUNQLFFBQVEsRUFBRSxLQUFLO2dCQUNmLFdBQVcsRUFBRSxJQUFJO2dCQUNqQixTQUFTLEVBQUUsTUFBTTtnQkFDakIsUUFBUSxFQUFFLElBQUk7Z0JBQ2QsS0FBSyxFQUFFLEVBQUU7Z0JBQ1QsT0FBTyxFQUFFO29CQUNQO3dCQUNFLEtBQUssRUFBRSxhQUFhO3dCQUNwQixXQUFXLEVBQUUsRUFBRTt3QkFDZixRQUFRLEVBQUUsTUFBTTt3QkFDaEIsSUFBSSxFQUFFLE9BQU87d0JBQ2IsS0FBSyxFQUFFOzRCQUNMLEtBQUssRUFBRSxFQUFFOzRCQUNULEdBQUcsRUFBRSxhQUFhOzRCQUNsQixHQUFHLEVBQUUsYUFBYTs0QkFDbEIsSUFBSSxFQUFFLEtBQUs7NEJBQ1gsTUFBTSxFQUFFLEtBQUs7NEJBQ2IsUUFBUSxFQUFFLEtBQUs7NEJBQ2YsSUFBSSxFQUFFLE9BQU87NEJBQ2IsT0FBTyxFQUFFLEtBQUs7NEJBQ2QsSUFBSSxFQUFFLElBQUk7eUJBQ1g7cUJBQ0Y7aUJBQ0Y7YUFDRjtTQUNGLENBQ0YsQ0FBQztJQUNKLENBQUM7SUFFRDs7T0FFRztJQUNILGFBQWE7UUFDWCxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDdEIsT0FBTyw2QkFBNkIsQ0FBQztRQUN2QyxDQUFDO1FBRUQsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUM7UUFDakMsSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQ1IsT0FBTyw2QkFBNkIsQ0FBQztRQUN2QyxDQUFDO1FBRUQsT0FBTyxZQUFZLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDMUIsQ0FBQztJQUVEOztPQUVHO0lBQ0gsb0JBQW9CLENBQUMsS0FBYTtRQUNoQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUUvQiw0REFBNEQ7UUFDNUQsSUFBSSxLQUFLLEtBQUssYUFBYSxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDcEQsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUMvQyxDQUFDO0lBQ0gsQ0FBQzsrR0E5RVUsb0JBQW9CO21HQUFwQixvQkFBb0IscUpBMUJyQjs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW1CVCxnR0FwQlMsWUFBWSxvSEFBRSxlQUFlLGdHQUFFLFVBQVU7OzRGQTJCeEMsb0JBQW9CO2tCQTlCaEMsU0FBUzsrQkFDRSxrQkFBa0IsY0FDaEIsSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLGVBQWUsRUFBRSxVQUFVLENBQUMsWUFDMUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FtQlQ7OEJBY1EsS0FBSztzQkFBYixLQUFLO2dCQUtJLGFBQWE7c0JBQXRCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIGluamVjdCwgSW5wdXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSW9uQ29udGVudCB9IGZyb20gJ0Bpb25pYy9hbmd1bGFyL3N0YW5kYWxvbmUnO1xuaW1wb3J0IHsgSGVhZGVyQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vb3JnYW5pc21zL2hlYWRlci9oZWFkZXIuY29tcG9uZW50JztcbmltcG9ydCB7IFRoZW1lU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3RoZW1lLnNlcnZpY2UnO1xuaW1wb3J0IHsgTmF2aWdhdGlvblNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9uYXZpZ2F0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgUGFnZUNvbnRlbnRNZXRhZGF0YSB9IGZyb20gJy4vdHlwZXMnO1xuaW1wb3J0IHsgcmVzb2x2ZUNvbG9yIH0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL3V0aWxzL3N0eWxlcyc7XG5cbi8qKlxuICogdmFsLXBhZ2UtY29udGVudFxuICpcbiAqIEEgcGFnZSBjb250ZW50IHRlbXBsYXRlIHdpdGggY29ycG9yYXRlIGhlYWRlciwgbWFpbiBjb250ZW50IGFyZWEsXG4gKiBhbmQgZm9vdGVyIHNsb3RzLiBTdXBwb3J0cyBkYXJrIG1vZGUgYW5kIGN1c3RvbWl6YWJsZSBiYWNrZ3JvdW5kcy5cbiAqXG4gKiBAZXhhbXBsZVxuICogPHZhbC1wYWdlLWNvbnRlbnRcbiAqICAgW3Byb3BzXT1cIntcbiAqICAgICBoZWFkZXI6IHsgLi4uIH0sXG4gKiAgICAgYmFja2dyb3VuZDogJy0tbWFpbi1iYWNrZ3JvdW5kJyxcbiAqICAgICBob21lUm91dGU6ICcvJ1xuICogICB9XCJcbiAqICAgKG9uSGVhZGVyQ2xpY2spPVwiaGFuZGxlSGVhZGVyQWN0aW9uKCRldmVudClcIlxuICogPlxuICogICA8ZGl2IGNvbnRlbnQ+XG4gKiAgICAgPCEtLSBNYWluIHBhZ2UgY29udGVudCAtLT5cbiAqICAgPC9kaXY+XG4gKiAgIDxkaXYgZm9vdGVyPlxuICogICAgIDx2YWwtY29tcGFueS1mb290ZXIgW3Byb3BzXT1cImZvb3RlclByb3BzXCI+PC92YWwtY29tcGFueS1mb290ZXI+XG4gKiAgIDwvZGl2PlxuICogPC92YWwtcGFnZS1jb250ZW50PlxuICpcbiAqIEBpbnB1dCBwcm9wcyAtIFBhZ2UgY29udGVudCBjb25maWd1cmF0aW9uXG4gKiBAb3V0cHV0IG9uSGVhZGVyQ2xpY2sgLSBFbWl0cyB3aGVuIGEgaGVhZGVyIGFjdGlvbiBpcyBjbGlja2VkXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZhbC1wYWdlLWNvbnRlbnQnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBIZWFkZXJDb21wb25lbnQsIElvbkNvbnRlbnRdLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxkaXYgY2xhc3M9XCJpb24tcGFnZVwiPlxuICAgICAgPHZhbC1oZWFkZXJcbiAgICAgICAgW3Byb3BzXT1cImhlYWRlclByb3BzXCJcbiAgICAgICAgKG9uQ2xpY2spPVwib25IZWFkZXJDbGlja0hhbmRsZXIoJGV2ZW50KVwiXG4gICAgICAvPlxuICAgICAgPGlvbi1jb250ZW50XG4gICAgICAgIFtmdWxsc2NyZWVuXT1cInRydWVcIlxuICAgICAgICBbbmdTdHlsZV09XCJ7XG4gICAgICAgICAgJy0tYmFja2dyb3VuZCc6IGdldEJhY2tncm91bmQoKVxuICAgICAgICB9XCJcbiAgICAgID5cbiAgICAgICAgPG1haW4+XG4gICAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW2NvbnRlbnRdXCI+PC9uZy1jb250ZW50PlxuICAgICAgICA8L21haW4+XG4gICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltmb290ZXJdXCI+PC9uZy1jb250ZW50PlxuICAgICAgPC9pb24tY29udGVudD5cbiAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltleHRyYS1mb290ZXJdXCI+PC9uZy1jb250ZW50PlxuICAgIDwvZGl2PlxuICBgLFxuICBzdHlsZXM6IGBcbiAgICBtYWluIHtcbiAgICAgIG1pbi1oZWlnaHQ6IDYwdmg7XG4gICAgfVxuICBgLFxufSlcbmV4cG9ydCBjbGFzcyBQYWdlQ29udGVudENvbXBvbmVudCB7XG4gIHByaXZhdGUgdGhlbWUgPSBpbmplY3QoVGhlbWVTZXJ2aWNlKTtcbiAgcHJpdmF0ZSBuYXYgPSBpbmplY3QoTmF2aWdhdGlvblNlcnZpY2UpO1xuXG4gIC8qKlxuICAgKiBQYWdlIGNvbnRlbnQgY29uZmlndXJhdGlvbi5cbiAgICovXG4gIEBJbnB1dCgpIHByb3BzOiBQYWdlQ29udGVudE1ldGFkYXRhID0ge307XG5cbiAgLyoqXG4gICAqIEVtaXRzIHdoZW4gYSBoZWFkZXIgYWN0aW9uIGlzIGNsaWNrZWQuXG4gICAqL1xuICBAT3V0cHV0KCkgb25IZWFkZXJDbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuXG4gIC8qKlxuICAgKiBEZWZhdWx0IGhlYWRlciBjb25maWd1cmF0aW9uLlxuICAgKi9cbiAgZ2V0IGhlYWRlclByb3BzKCkge1xuICAgIHJldHVybiAoXG4gICAgICB0aGlzLnByb3BzLmhlYWRlciB8fCB7XG4gICAgICAgIGJvcmRlcmVkOiB0cnVlLFxuICAgICAgICB0cmFuc2x1Y2VudDogdHJ1ZSxcbiAgICAgICAgdG9vbGJhcjoge1xuICAgICAgICAgIHdpdGhCYWNrOiBmYWxzZSxcbiAgICAgICAgICB3aXRoQWN0aW9uczogdHJ1ZSxcbiAgICAgICAgICB0ZXh0Q29sb3I6ICdkYXJrJyxcbiAgICAgICAgICB3aXRoTWVudTogdHJ1ZSxcbiAgICAgICAgICB0aXRsZTogJycsXG4gICAgICAgICAgYWN0aW9uczogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICB0b2tlbjogJ2hlYWRlci1sb2dvJyxcbiAgICAgICAgICAgICAgZGVzY3JpcHRpb246ICcnLFxuICAgICAgICAgICAgICBwb3NpdGlvbjogJ2xlZnQnLFxuICAgICAgICAgICAgICB0eXBlOiAnSU1BR0UnLFxuICAgICAgICAgICAgICBpbWFnZToge1xuICAgICAgICAgICAgICAgIHdpZHRoOiAxMCxcbiAgICAgICAgICAgICAgICBzcmM6ICctLW1haW4tbG9nbycsXG4gICAgICAgICAgICAgICAgYWx0OiAnaGVhZGVyIGxvZ28nLFxuICAgICAgICAgICAgICAgIG1vZGU6ICdib3gnLFxuICAgICAgICAgICAgICAgIHNoYWRlZDogZmFsc2UsXG4gICAgICAgICAgICAgICAgYm9yZGVyZWQ6IGZhbHNlLFxuICAgICAgICAgICAgICAgIHNpemU6ICdzbWFsbCcsXG4gICAgICAgICAgICAgICAgbGltaXRlZDogZmFsc2UsXG4gICAgICAgICAgICAgICAgZmxleDogdHJ1ZSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgXSxcbiAgICAgICAgfSxcbiAgICAgIH1cbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIGJhY2tncm91bmQgY29sb3IgYmFzZWQgb24gdGhlbWUuXG4gICAqL1xuICBnZXRCYWNrZ3JvdW5kKCk6IHN0cmluZyB7XG4gICAgaWYgKHRoaXMudGhlbWUuSXNEYXJrKSB7XG4gICAgICByZXR1cm4gJ3ZhcigtLWlvbi1iYWNrZ3JvdW5kLWNvbG9yKSc7XG4gICAgfVxuXG4gICAgY29uc3QgYmcgPSB0aGlzLnByb3BzLmJhY2tncm91bmQ7XG4gICAgaWYgKCFiZykge1xuICAgICAgcmV0dXJuICd2YXIoLS1pb24tYmFja2dyb3VuZC1jb2xvciknO1xuICAgIH1cblxuICAgIHJldHVybiByZXNvbHZlQ29sb3IoYmcpO1xuICB9XG5cbiAgLyoqXG4gICAqIEhhbmRsZXMgaGVhZGVyIGFjdGlvbiBjbGlja3MuXG4gICAqL1xuICBvbkhlYWRlckNsaWNrSGFuZGxlcih0b2tlbjogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5vbkhlYWRlckNsaWNrLmVtaXQodG9rZW4pO1xuXG4gICAgLy8gTmF2aWdhdGUgdG8gaG9tZSByb3V0ZSBpZiBjb25maWd1cmVkIGFuZCBsb2dvIHdhcyBjbGlja2VkXG4gICAgaWYgKHRva2VuID09PSAnaGVhZGVyLWxvZ28nICYmIHRoaXMucHJvcHMuaG9tZVJvdXRlKSB7XG4gICAgICB0aGlzLm5hdi5uYXZpZ2F0ZUJ5VXJsKHRoaXMucHJvcHMuaG9tZVJvdXRlKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvdGVtcGxhdGVzL3BhZ2UtY29udGVudC90eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSGVhZGVyTWV0YWRhdGEgfSBmcm9tICcuLi8uLi9vcmdhbmlzbXMvaGVhZGVyL3R5cGVzJztcblxuLyoqXG4gKiBDb25maWd1cmF0aW9uIGZvciB0aGUgcGFnZSBjb250ZW50IGNvbXBvbmVudC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQYWdlQ29udGVudE1ldGFkYXRhIHtcbiAgLyoqIEhlYWRlciBjb25maWd1cmF0aW9uICovXG4gIGhlYWRlcj86IEhlYWRlck1ldGFkYXRhO1xuICAvKiogQmFja2dyb3VuZCBjb2xvciBvciBDU1MgdmFyaWFibGUgKi9cbiAgYmFja2dyb3VuZD86IHN0cmluZztcbiAgLyoqIEJhY2tncm91bmQgY29sb3IgZm9yIGRhcmsgbW9kZSAqL1xuICBiYWNrZ3JvdW5kRGFyaz86IHN0cmluZztcbiAgLyoqIFJvdXRlIHRvIG5hdmlnYXRlIHRvIHdoZW4gaGVhZGVyIGxvZ28gaXMgY2xpY2tlZCAqL1xuICBob21lUm91dGU/OiBzdHJpbmc7XG59XG4iXX0=
|
|
@@ -0,0 +1,181 @@
|
|
|
1
|
+
import { CommonModule } from '@angular/common';
|
|
2
|
+
import { Component, EventEmitter, inject, Input, Output } from '@angular/core';
|
|
3
|
+
import { NavController } from '@ionic/angular';
|
|
4
|
+
import { IonCol, IonGrid, IonHeader, IonRow, IonTitle, IonToolbar } from '@ionic/angular/standalone';
|
|
5
|
+
import { ExpandableTextComponent } from '../../molecules/expandable-text/expandable-text.component';
|
|
6
|
+
import { ButtonComponent } from '../../atoms/button/button.component';
|
|
7
|
+
import * as i0 from "@angular/core";
|
|
8
|
+
/**
|
|
9
|
+
* val-page-template
|
|
10
|
+
*
|
|
11
|
+
* A page template component with title, expandable description,
|
|
12
|
+
* content projection, and optional back navigation button.
|
|
13
|
+
*
|
|
14
|
+
* @example
|
|
15
|
+
* <val-page-template
|
|
16
|
+
* [props]="{
|
|
17
|
+
* pageTitle: 'Getting Started',
|
|
18
|
+
* pageDescription: 'Learn how to use our components...',
|
|
19
|
+
* showBackButton: true
|
|
20
|
+
* }"
|
|
21
|
+
* >
|
|
22
|
+
* <div extra-description>
|
|
23
|
+
* <p>Additional info here</p>
|
|
24
|
+
* </div>
|
|
25
|
+
*
|
|
26
|
+
* <!-- Main content -->
|
|
27
|
+
* <my-content></my-content>
|
|
28
|
+
*
|
|
29
|
+
* <div extra-footer>
|
|
30
|
+
* <p>Footer content</p>
|
|
31
|
+
* </div>
|
|
32
|
+
* </val-page-template>
|
|
33
|
+
*
|
|
34
|
+
* @input props - Page template configuration
|
|
35
|
+
* @output onBack - Emits when back button is clicked
|
|
36
|
+
*/
|
|
37
|
+
export class PageTemplateComponent {
|
|
38
|
+
constructor() {
|
|
39
|
+
this.nav = inject(NavController);
|
|
40
|
+
/**
|
|
41
|
+
* Page template configuration.
|
|
42
|
+
*/
|
|
43
|
+
this.props = {};
|
|
44
|
+
/**
|
|
45
|
+
* Emits when the back button is clicked.
|
|
46
|
+
*/
|
|
47
|
+
this.onBack = new EventEmitter();
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Handles back navigation.
|
|
51
|
+
*/
|
|
52
|
+
handleBack() {
|
|
53
|
+
this.onBack.emit();
|
|
54
|
+
this.nav.back();
|
|
55
|
+
}
|
|
56
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PageTemplateComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
57
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: PageTemplateComponent, isStandalone: true, selector: "val-page-template", inputs: { props: "props" }, outputs: { onBack: "onBack" }, ngImport: i0, template: `
|
|
58
|
+
@if (props.pageTitle) {
|
|
59
|
+
<ion-header [class.ion-no-border]="true">
|
|
60
|
+
<ion-toolbar style="--background: transparent;">
|
|
61
|
+
<ion-title class="page-title" size="large">{{ props.pageTitle }}</ion-title>
|
|
62
|
+
</ion-toolbar>
|
|
63
|
+
</ion-header>
|
|
64
|
+
}
|
|
65
|
+
<ion-grid>
|
|
66
|
+
<ion-row class="ion-justify-content-center description-row">
|
|
67
|
+
<ion-col size="12" size-md="10" size-lg="8">
|
|
68
|
+
@if (props.pageDescription) {
|
|
69
|
+
<div class="description-container">
|
|
70
|
+
<val-expandable-text
|
|
71
|
+
[props]="{
|
|
72
|
+
limit: props.descriptionLimit || 180,
|
|
73
|
+
content: props.pageDescription,
|
|
74
|
+
color: props.descriptionColor || 'dark',
|
|
75
|
+
expandText: 'more'
|
|
76
|
+
}"
|
|
77
|
+
/>
|
|
78
|
+
</div>
|
|
79
|
+
}
|
|
80
|
+
<ng-content select="[extra-description]"></ng-content>
|
|
81
|
+
</ion-col>
|
|
82
|
+
</ion-row>
|
|
83
|
+
<ng-content></ng-content>
|
|
84
|
+
<ng-content select="[extra-footer]"></ng-content>
|
|
85
|
+
@if (props.showBackButton) {
|
|
86
|
+
<ion-row class="ion-justify-content-center back-row">
|
|
87
|
+
<ion-col size="12" size-md="10" size-lg="8">
|
|
88
|
+
<val-button
|
|
89
|
+
class="back-button"
|
|
90
|
+
[props]="{
|
|
91
|
+
text: props.backButtonText || 'Back',
|
|
92
|
+
color: 'dark',
|
|
93
|
+
size: 'small',
|
|
94
|
+
type: 'button',
|
|
95
|
+
state: 'ENABLED',
|
|
96
|
+
fill: 'outline',
|
|
97
|
+
shape: 'round',
|
|
98
|
+
icon: {
|
|
99
|
+
name: 'arrow-back-outline',
|
|
100
|
+
slot: 'start'
|
|
101
|
+
}
|
|
102
|
+
}"
|
|
103
|
+
(onClick)="handleBack()"
|
|
104
|
+
/>
|
|
105
|
+
</ion-col>
|
|
106
|
+
</ion-row>
|
|
107
|
+
}
|
|
108
|
+
</ion-grid>
|
|
109
|
+
`, isInline: true, styles: [".page-title{margin-left:-4px;padding:0;font-size:2.5rem;font-weight:800}.description-row{margin-bottom:16px}.description-container{margin-top:1rem}.back-row{margin-bottom:16px}.back-button{display:block;margin:1rem 0}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: IonHeader, selector: "ion-header", inputs: ["collapse", "mode", "translucent"] }, { kind: "component", type: IonToolbar, selector: "ion-toolbar", inputs: ["color", "mode"] }, { kind: "component", type: IonTitle, selector: "ion-title", inputs: ["color", "size"] }, { kind: "component", type: ExpandableTextComponent, selector: "val-expandable-text", inputs: ["props"] }, { kind: "component", type: IonGrid, selector: "ion-grid", inputs: ["fixed"] }, { kind: "component", type: IonRow, selector: "ion-row" }, { kind: "component", type: IonCol, selector: "ion-col", inputs: ["offset", "offsetLg", "offsetMd", "offsetSm", "offsetXl", "offsetXs", "pull", "pullLg", "pullMd", "pullSm", "pullXl", "pullXs", "push", "pushLg", "pushMd", "pushSm", "pushXl", "pushXs", "size", "sizeLg", "sizeMd", "sizeSm", "sizeXl", "sizeXs"] }, { kind: "component", type: ButtonComponent, selector: "val-button", inputs: ["props"], outputs: ["onClick"] }] }); }
|
|
110
|
+
}
|
|
111
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PageTemplateComponent, decorators: [{
|
|
112
|
+
type: Component,
|
|
113
|
+
args: [{ selector: 'val-page-template', standalone: true, imports: [
|
|
114
|
+
CommonModule,
|
|
115
|
+
IonHeader,
|
|
116
|
+
IonToolbar,
|
|
117
|
+
IonTitle,
|
|
118
|
+
ExpandableTextComponent,
|
|
119
|
+
IonGrid,
|
|
120
|
+
IonRow,
|
|
121
|
+
IonCol,
|
|
122
|
+
ButtonComponent,
|
|
123
|
+
], template: `
|
|
124
|
+
@if (props.pageTitle) {
|
|
125
|
+
<ion-header [class.ion-no-border]="true">
|
|
126
|
+
<ion-toolbar style="--background: transparent;">
|
|
127
|
+
<ion-title class="page-title" size="large">{{ props.pageTitle }}</ion-title>
|
|
128
|
+
</ion-toolbar>
|
|
129
|
+
</ion-header>
|
|
130
|
+
}
|
|
131
|
+
<ion-grid>
|
|
132
|
+
<ion-row class="ion-justify-content-center description-row">
|
|
133
|
+
<ion-col size="12" size-md="10" size-lg="8">
|
|
134
|
+
@if (props.pageDescription) {
|
|
135
|
+
<div class="description-container">
|
|
136
|
+
<val-expandable-text
|
|
137
|
+
[props]="{
|
|
138
|
+
limit: props.descriptionLimit || 180,
|
|
139
|
+
content: props.pageDescription,
|
|
140
|
+
color: props.descriptionColor || 'dark',
|
|
141
|
+
expandText: 'more'
|
|
142
|
+
}"
|
|
143
|
+
/>
|
|
144
|
+
</div>
|
|
145
|
+
}
|
|
146
|
+
<ng-content select="[extra-description]"></ng-content>
|
|
147
|
+
</ion-col>
|
|
148
|
+
</ion-row>
|
|
149
|
+
<ng-content></ng-content>
|
|
150
|
+
<ng-content select="[extra-footer]"></ng-content>
|
|
151
|
+
@if (props.showBackButton) {
|
|
152
|
+
<ion-row class="ion-justify-content-center back-row">
|
|
153
|
+
<ion-col size="12" size-md="10" size-lg="8">
|
|
154
|
+
<val-button
|
|
155
|
+
class="back-button"
|
|
156
|
+
[props]="{
|
|
157
|
+
text: props.backButtonText || 'Back',
|
|
158
|
+
color: 'dark',
|
|
159
|
+
size: 'small',
|
|
160
|
+
type: 'button',
|
|
161
|
+
state: 'ENABLED',
|
|
162
|
+
fill: 'outline',
|
|
163
|
+
shape: 'round',
|
|
164
|
+
icon: {
|
|
165
|
+
name: 'arrow-back-outline',
|
|
166
|
+
slot: 'start'
|
|
167
|
+
}
|
|
168
|
+
}"
|
|
169
|
+
(onClick)="handleBack()"
|
|
170
|
+
/>
|
|
171
|
+
</ion-col>
|
|
172
|
+
</ion-row>
|
|
173
|
+
}
|
|
174
|
+
</ion-grid>
|
|
175
|
+
`, styles: [".page-title{margin-left:-4px;padding:0;font-size:2.5rem;font-weight:800}.description-row{margin-bottom:16px}.description-container{margin-top:1rem}.back-row{margin-bottom:16px}.back-button{display:block;margin:1rem 0}\n"] }]
|
|
176
|
+
}], propDecorators: { props: [{
|
|
177
|
+
type: Input
|
|
178
|
+
}], onBack: [{
|
|
179
|
+
type: Output
|
|
180
|
+
}] } });
|
|
181
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnZS10ZW1wbGF0ZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvdGVtcGxhdGVzL3BhZ2UtdGVtcGxhdGUvcGFnZS10ZW1wbGF0ZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9FLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMvQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNyRyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSwyREFBMkQsQ0FBQztBQUNwRyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUNBQXFDLENBQUM7O0FBR3RFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBNEJHO0FBOEZILE1BQU0sT0FBTyxxQkFBcUI7SUE3RmxDO1FBOEZVLFFBQUcsR0FBRyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUM7UUFFcEM7O1dBRUc7UUFDTSxVQUFLLEdBQXlCLEVBQUUsQ0FBQztRQUUxQzs7V0FFRztRQUNPLFdBQU0sR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO0tBUzdDO0lBUEM7O09BRUc7SUFDSCxVQUFVO1FBQ1IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNuQixJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ2xCLENBQUM7K0dBbkJVLHFCQUFxQjttR0FBckIscUJBQXFCLHdJQS9FdEI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FvRFQsb1NBOURDLFlBQVksK0JBQ1osU0FBUyxvR0FDVCxVQUFVLG1GQUNWLFFBQVEsaUZBQ1IsdUJBQXVCLG1GQUN2QixPQUFPLHdFQUNQLE1BQU0sb0RBQ04sTUFBTSxrVEFDTixlQUFlOzs0RkFpRk4scUJBQXFCO2tCQTdGakMsU0FBUzsrQkFDRSxtQkFBbUIsY0FDakIsSUFBSSxXQUNQO3dCQUNQLFlBQVk7d0JBQ1osU0FBUzt3QkFDVCxVQUFVO3dCQUNWLFFBQVE7d0JBQ1IsdUJBQXVCO3dCQUN2QixPQUFPO3dCQUNQLE1BQU07d0JBQ04sTUFBTTt3QkFDTixlQUFlO3FCQUNoQixZQUNTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBb0RUOzhCQWlDUSxLQUFLO3NCQUFiLEtBQUs7Z0JBS0ksTUFBTTtzQkFBZixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBpbmplY3QsIElucHV0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5hdkNvbnRyb2xsZXIgfSBmcm9tICdAaW9uaWMvYW5ndWxhcic7XG5pbXBvcnQgeyBJb25Db2wsIElvbkdyaWQsIElvbkhlYWRlciwgSW9uUm93LCBJb25UaXRsZSwgSW9uVG9vbGJhciB9IGZyb20gJ0Bpb25pYy9hbmd1bGFyL3N0YW5kYWxvbmUnO1xuaW1wb3J0IHsgRXhwYW5kYWJsZVRleHRDb21wb25lbnQgfSBmcm9tICcuLi8uLi9tb2xlY3VsZXMvZXhwYW5kYWJsZS10ZXh0L2V4cGFuZGFibGUtdGV4dC5jb21wb25lbnQnO1xuaW1wb3J0IHsgQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vYXRvbXMvYnV0dG9uL2J1dHRvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgUGFnZVRlbXBsYXRlTWV0YWRhdGEgfSBmcm9tICcuL3R5cGVzJztcblxuLyoqXG4gKiB2YWwtcGFnZS10ZW1wbGF0ZVxuICpcbiAqIEEgcGFnZSB0ZW1wbGF0ZSBjb21wb25lbnQgd2l0aCB0aXRsZSwgZXhwYW5kYWJsZSBkZXNjcmlwdGlvbixcbiAqIGNvbnRlbnQgcHJvamVjdGlvbiwgYW5kIG9wdGlvbmFsIGJhY2sgbmF2aWdhdGlvbiBidXR0b24uXG4gKlxuICogQGV4YW1wbGVcbiAqIDx2YWwtcGFnZS10ZW1wbGF0ZVxuICogICBbcHJvcHNdPVwie1xuICogICAgIHBhZ2VUaXRsZTogJ0dldHRpbmcgU3RhcnRlZCcsXG4gKiAgICAgcGFnZURlc2NyaXB0aW9uOiAnTGVhcm4gaG93IHRvIHVzZSBvdXIgY29tcG9uZW50cy4uLicsXG4gKiAgICAgc2hvd0JhY2tCdXR0b246IHRydWVcbiAqICAgfVwiXG4gKiA+XG4gKiAgIDxkaXYgZXh0cmEtZGVzY3JpcHRpb24+XG4gKiAgICAgPHA+QWRkaXRpb25hbCBpbmZvIGhlcmU8L3A+XG4gKiAgIDwvZGl2PlxuICpcbiAqICAgPCEtLSBNYWluIGNvbnRlbnQgLS0+XG4gKiAgIDxteS1jb250ZW50PjwvbXktY29udGVudD5cbiAqXG4gKiAgIDxkaXYgZXh0cmEtZm9vdGVyPlxuICogICAgIDxwPkZvb3RlciBjb250ZW50PC9wPlxuICogICA8L2Rpdj5cbiAqIDwvdmFsLXBhZ2UtdGVtcGxhdGU+XG4gKlxuICogQGlucHV0IHByb3BzIC0gUGFnZSB0ZW1wbGF0ZSBjb25maWd1cmF0aW9uXG4gKiBAb3V0cHV0IG9uQmFjayAtIEVtaXRzIHdoZW4gYmFjayBidXR0b24gaXMgY2xpY2tlZFxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWwtcGFnZS10ZW1wbGF0ZScsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgSW9uSGVhZGVyLFxuICAgIElvblRvb2xiYXIsXG4gICAgSW9uVGl0bGUsXG4gICAgRXhwYW5kYWJsZVRleHRDb21wb25lbnQsXG4gICAgSW9uR3JpZCxcbiAgICBJb25Sb3csXG4gICAgSW9uQ29sLFxuICAgIEJ1dHRvbkNvbXBvbmVudCxcbiAgXSxcbiAgdGVtcGxhdGU6IGBcbiAgICBAaWYgKHByb3BzLnBhZ2VUaXRsZSkge1xuICAgICAgPGlvbi1oZWFkZXIgW2NsYXNzLmlvbi1uby1ib3JkZXJdPVwidHJ1ZVwiPlxuICAgICAgICA8aW9uLXRvb2xiYXIgc3R5bGU9XCItLWJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1wiPlxuICAgICAgICAgIDxpb24tdGl0bGUgY2xhc3M9XCJwYWdlLXRpdGxlXCIgc2l6ZT1cImxhcmdlXCI+e3sgcHJvcHMucGFnZVRpdGxlIH19PC9pb24tdGl0bGU+XG4gICAgICAgIDwvaW9uLXRvb2xiYXI+XG4gICAgICA8L2lvbi1oZWFkZXI+XG4gICAgfVxuICAgIDxpb24tZ3JpZD5cbiAgICAgIDxpb24tcm93IGNsYXNzPVwiaW9uLWp1c3RpZnktY29udGVudC1jZW50ZXIgZGVzY3JpcHRpb24tcm93XCI+XG4gICAgICAgIDxpb24tY29sIHNpemU9XCIxMlwiIHNpemUtbWQ9XCIxMFwiIHNpemUtbGc9XCI4XCI+XG4gICAgICAgICAgQGlmIChwcm9wcy5wYWdlRGVzY3JpcHRpb24pIHtcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkZXNjcmlwdGlvbi1jb250YWluZXJcIj5cbiAgICAgICAgICAgICAgPHZhbC1leHBhbmRhYmxlLXRleHRcbiAgICAgICAgICAgICAgICBbcHJvcHNdPVwie1xuICAgICAgICAgICAgICAgICAgbGltaXQ6IHByb3BzLmRlc2NyaXB0aW9uTGltaXQgfHwgMTgwLFxuICAgICAgICAgICAgICAgICAgY29udGVudDogcHJvcHMucGFnZURlc2NyaXB0aW9uLFxuICAgICAgICAgICAgICAgICAgY29sb3I6IHByb3BzLmRlc2NyaXB0aW9uQ29sb3IgfHwgJ2RhcmsnLFxuICAgICAgICAgICAgICAgICAgZXhwYW5kVGV4dDogJ21vcmUnXG4gICAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICB9XG4gICAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW2V4dHJhLWRlc2NyaXB0aW9uXVwiPjwvbmctY29udGVudD5cbiAgICAgICAgPC9pb24tY29sPlxuICAgICAgPC9pb24tcm93PlxuICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW2V4dHJhLWZvb3Rlcl1cIj48L25nLWNvbnRlbnQ+XG4gICAgICBAaWYgKHByb3BzLnNob3dCYWNrQnV0dG9uKSB7XG4gICAgICAgIDxpb24tcm93IGNsYXNzPVwiaW9uLWp1c3RpZnktY29udGVudC1jZW50ZXIgYmFjay1yb3dcIj5cbiAgICAgICAgICA8aW9uLWNvbCBzaXplPVwiMTJcIiBzaXplLW1kPVwiMTBcIiBzaXplLWxnPVwiOFwiPlxuICAgICAgICAgICAgPHZhbC1idXR0b25cbiAgICAgICAgICAgICAgY2xhc3M9XCJiYWNrLWJ1dHRvblwiXG4gICAgICAgICAgICAgIFtwcm9wc109XCJ7XG4gICAgICAgICAgICAgICAgdGV4dDogcHJvcHMuYmFja0J1dHRvblRleHQgfHwgJ0JhY2snLFxuICAgICAgICAgICAgICAgIGNvbG9yOiAnZGFyaycsXG4gICAgICAgICAgICAgICAgc2l6ZTogJ3NtYWxsJyxcbiAgICAgICAgICAgICAgICB0eXBlOiAnYnV0dG9uJyxcbiAgICAgICAgICAgICAgICBzdGF0ZTogJ0VOQUJMRUQnLFxuICAgICAgICAgICAgICAgIGZpbGw6ICdvdXRsaW5lJyxcbiAgICAgICAgICAgICAgICBzaGFwZTogJ3JvdW5kJyxcbiAgICAgICAgICAgICAgICBpY29uOiB7XG4gICAgICAgICAgICAgICAgICBuYW1lOiAnYXJyb3ctYmFjay1vdXRsaW5lJyxcbiAgICAgICAgICAgICAgICAgIHNsb3Q6ICdzdGFydCdcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgICAob25DbGljayk9XCJoYW5kbGVCYWNrKClcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L2lvbi1jb2w+XG4gICAgICAgIDwvaW9uLXJvdz5cbiAgICAgIH1cbiAgICA8L2lvbi1ncmlkPlxuICBgLFxuICBzdHlsZXM6IGBcbiAgICAucGFnZS10aXRsZSB7XG4gICAgICBtYXJnaW4tbGVmdDogLTRweDtcbiAgICAgIHBhZGRpbmc6IDA7XG4gICAgICBmb250LXNpemU6IDIuNXJlbTtcbiAgICAgIGZvbnQtd2VpZ2h0OiA4MDA7XG4gICAgfVxuXG4gICAgLmRlc2NyaXB0aW9uLXJvdyB7XG4gICAgICBtYXJnaW4tYm90dG9tOiAxNnB4O1xuICAgIH1cblxuICAgIC5kZXNjcmlwdGlvbi1jb250YWluZXIge1xuICAgICAgbWFyZ2luLXRvcDogMXJlbTtcbiAgICB9XG5cbiAgICAuYmFjay1yb3cge1xuICAgICAgbWFyZ2luLWJvdHRvbTogMTZweDtcbiAgICB9XG5cbiAgICAuYmFjay1idXR0b24ge1xuICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICBtYXJnaW46IDFyZW0gMDtcbiAgICB9XG4gIGAsXG59KVxuZXhwb3J0IGNsYXNzIFBhZ2VUZW1wbGF0ZUNvbXBvbmVudCB7XG4gIHByaXZhdGUgbmF2ID0gaW5qZWN0KE5hdkNvbnRyb2xsZXIpO1xuXG4gIC8qKlxuICAgKiBQYWdlIHRlbXBsYXRlIGNvbmZpZ3VyYXRpb24uXG4gICAqL1xuICBASW5wdXQoKSBwcm9wczogUGFnZVRlbXBsYXRlTWV0YWRhdGEgPSB7fTtcblxuICAvKipcbiAgICogRW1pdHMgd2hlbiB0aGUgYmFjayBidXR0b24gaXMgY2xpY2tlZC5cbiAgICovXG4gIEBPdXRwdXQoKSBvbkJhY2sgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgLyoqXG4gICAqIEhhbmRsZXMgYmFjayBuYXZpZ2F0aW9uLlxuICAgKi9cbiAgaGFuZGxlQmFjaygpOiB2b2lkIHtcbiAgICB0aGlzLm9uQmFjay5lbWl0KCk7XG4gICAgdGhpcy5uYXYuYmFjaygpO1xuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvdGVtcGxhdGVzL3BhZ2UtdGVtcGxhdGUvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29uZmlndXJhdGlvbiBmb3IgdGhlIHBhZ2UgdGVtcGxhdGUgY29tcG9uZW50LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFBhZ2VUZW1wbGF0ZU1ldGFkYXRhIHtcbiAgLyoqIFBhZ2UgdGl0bGUgZGlzcGxheWVkIGluIGxhcmdlIGhlYWRlciBzdHlsZSAqL1xuICBwYWdlVGl0bGU/OiBzdHJpbmc7XG4gIC8qKiBQYWdlIGRlc2NyaXB0aW9uIChleHBhbmRhYmxlIHRleHQpICovXG4gIHBhZ2VEZXNjcmlwdGlvbj86IHN0cmluZztcbiAgLyoqIFNob3cgYSBiYWNrIGJ1dHRvbiBhdCB0aGUgYm90dG9tICovXG4gIHNob3dCYWNrQnV0dG9uPzogYm9vbGVhbjtcbiAgLyoqIEN1c3RvbSB0ZXh0IGZvciB0aGUgYmFjayBidXR0b24gKGRlZmF1bHQ6ICdCYWNrJykgKi9cbiAgYmFja0J1dHRvblRleHQ/OiBzdHJpbmc7XG4gIC8qKiBDaGFyYWN0ZXIgbGltaXQgZm9yIGRlc2NyaXB0aW9uIGJlZm9yZSBleHBhbmQgKGRlZmF1bHQ6IDE4MCkgKi9cbiAgZGVzY3JpcHRpb25MaW1pdD86IG51bWJlcjtcbiAgLyoqIFRleHQgY29sb3IgZm9yIHRoZSBkZXNjcmlwdGlvbiAoZGVmYXVsdDogJ2RhcmsnKSAqL1xuICBkZXNjcmlwdGlvbkNvbG9yPzogc3RyaW5nO1xufVxuIl19
|