valtech-components 2.0.404 → 2.0.406
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/README.md +71 -0
- package/esm2022/lib/components/atoms/avatar/avatar.component.mjs +4 -4
- package/esm2022/lib/components/atoms/avatar/types.mjs +1 -1
- package/esm2022/lib/components/atoms/box/box.component.mjs +4 -4
- package/esm2022/lib/components/atoms/box/types.mjs +1 -1
- package/esm2022/lib/components/atoms/button/button.component.mjs +4 -4
- package/esm2022/lib/components/atoms/button/factory.mjs +1 -1
- package/esm2022/lib/components/atoms/countdown/countdown.component.mjs +343 -0
- package/esm2022/lib/components/atoms/countdown/types.mjs +27 -0
- package/esm2022/lib/components/atoms/display/display.component.mjs +4 -4
- package/esm2022/lib/components/atoms/display/types.mjs +1 -1
- package/esm2022/lib/components/atoms/divider/divider.component.mjs +4 -4
- package/esm2022/lib/components/atoms/divider/types.mjs +1 -1
- package/esm2022/lib/components/atoms/fab/fab.component.mjs +152 -0
- package/esm2022/lib/components/atoms/fab/types.mjs +2 -0
- package/esm2022/lib/components/atoms/href/href.component.mjs +4 -4
- package/esm2022/lib/components/atoms/href/types.mjs +1 -1
- package/esm2022/lib/components/atoms/icon/icon.component.mjs +4 -4
- package/esm2022/lib/components/atoms/icon/types.mjs +1 -1
- package/esm2022/lib/components/atoms/image/image.component.mjs +6 -6
- package/esm2022/lib/components/atoms/image/types.mjs +1 -1
- package/esm2022/lib/components/atoms/price-tag/price-tag.component.mjs +245 -0
- package/esm2022/lib/components/atoms/price-tag/types.mjs +15 -0
- package/esm2022/lib/components/atoms/progress-bar/progress-bar.component.mjs +4 -4
- package/esm2022/lib/components/atoms/progress-bar/types.mjs +1 -1
- package/esm2022/lib/components/atoms/progress-ring/progress-ring.component.mjs +149 -0
- package/esm2022/lib/components/atoms/progress-ring/types.mjs +2 -0
- package/esm2022/lib/components/atoms/qr-code/qr-code.component.mjs +417 -0
- package/esm2022/lib/components/atoms/qr-code/types.mjs +2 -0
- package/esm2022/lib/components/atoms/skeleton/skeleton.component.mjs +193 -0
- package/esm2022/lib/components/atoms/skeleton/types.mjs +13 -0
- package/esm2022/lib/components/atoms/text/text.component.mjs +4 -4
- package/esm2022/lib/components/atoms/text/types.mjs +1 -1
- package/esm2022/lib/components/atoms/title/title.component.mjs +4 -4
- package/esm2022/lib/components/atoms/title/types.mjs +1 -1
- package/esm2022/lib/components/molecules/accordion/accordion.component.mjs +139 -0
- package/esm2022/lib/components/molecules/accordion/types.mjs +2 -0
- package/esm2022/lib/components/molecules/action-header/action-header.component.mjs +4 -4
- package/esm2022/lib/components/molecules/action-header/types.mjs +1 -1
- package/esm2022/lib/components/molecules/alert-box/alert-box.component.mjs +4 -4
- package/esm2022/lib/components/molecules/alert-box/types.mjs +1 -1
- package/esm2022/lib/components/molecules/breadcrumb/breadcrumb.component.mjs +137 -0
- package/esm2022/lib/components/molecules/breadcrumb/types.mjs +2 -0
- package/esm2022/lib/components/molecules/button-group/button-group.component.mjs +4 -4
- package/esm2022/lib/components/molecules/button-group/types.mjs +1 -1
- package/esm2022/lib/components/molecules/card/card.component.mjs +5 -5
- package/esm2022/lib/components/molecules/card/types.mjs +1 -1
- package/esm2022/lib/components/molecules/check-input/check-input.component.mjs +4 -4
- package/esm2022/lib/components/molecules/chip-group/chip-group.component.mjs +174 -0
- package/esm2022/lib/components/molecules/chip-group/types.mjs +2 -0
- package/esm2022/lib/components/molecules/code-display/code-display.component.mjs +4 -4
- package/esm2022/lib/components/molecules/code-display/types.mjs +1 -1
- package/esm2022/lib/components/molecules/command-display/command-display.component.mjs +4 -4
- package/esm2022/lib/components/molecules/command-display/types.mjs +1 -1
- package/esm2022/lib/components/molecules/comment/comment.component.mjs +634 -0
- package/esm2022/lib/components/molecules/comment/types.mjs +2 -0
- package/esm2022/lib/components/molecules/comment-input/comment-input.component.mjs +4 -4
- package/esm2022/lib/components/molecules/content-loader/content-loader.component.mjs +4 -4
- package/esm2022/lib/components/molecules/content-loader/types.mjs +1 -1
- package/esm2022/lib/components/molecules/currency-input/currency-input.component.mjs +368 -0
- package/esm2022/lib/components/molecules/currency-input/types.mjs +18 -0
- package/esm2022/lib/components/molecules/date-input/date-input.component.mjs +5 -5
- package/esm2022/lib/components/molecules/date-range-input/date-range-input.component.mjs +418 -0
- package/esm2022/lib/components/molecules/date-range-input/types.mjs +2 -0
- package/esm2022/lib/components/molecules/email-input/email-input.component.mjs +4 -4
- package/esm2022/lib/components/molecules/expandable-text/expandable-text.component.mjs +4 -4
- package/esm2022/lib/components/molecules/expandable-text/types.mjs +1 -1
- package/esm2022/lib/components/molecules/file-input/file-input.component.mjs +4 -4
- package/esm2022/lib/components/molecules/glow-card/glow-card.component.mjs +279 -0
- package/esm2022/lib/components/molecules/glow-card/types.mjs +11 -0
- package/esm2022/lib/components/molecules/hint/hint.component.mjs +4 -4
- package/esm2022/lib/components/molecules/hour-input/hour-input.component.mjs +4 -4
- package/esm2022/lib/components/molecules/info/info.component.mjs +4 -4
- package/esm2022/lib/components/molecules/info/types.mjs +1 -1
- package/esm2022/lib/components/molecules/language-selector/language-selector.component.mjs +4 -4
- package/esm2022/lib/components/molecules/language-selector/types.mjs +1 -1
- package/esm2022/lib/components/molecules/layered-card/layered-card.component.mjs +4 -4
- package/esm2022/lib/components/molecules/layered-card/types.mjs +1 -1
- package/esm2022/lib/components/molecules/link/link.component.mjs +4 -4
- package/esm2022/lib/components/molecules/link/types.mjs +1 -1
- package/esm2022/lib/components/molecules/links-cake/links-cake.component.mjs +4 -4
- package/esm2022/lib/components/molecules/links-cake/types.mjs +1 -1
- package/esm2022/lib/components/molecules/multi-select-search/multi-select-search.component.mjs +5 -5
- package/esm2022/lib/components/molecules/notes-box/notes-box.component.mjs +4 -4
- package/esm2022/lib/components/molecules/notes-box/types.mjs +1 -1
- package/esm2022/lib/components/molecules/number-from-to/number-from-to.component.mjs +4 -4
- package/esm2022/lib/components/molecules/number-input/number-input.component.mjs +4 -4
- package/esm2022/lib/components/molecules/number-stepper/number-stepper.component.mjs +377 -0
- package/esm2022/lib/components/molecules/number-stepper/types.mjs +2 -0
- package/esm2022/lib/components/molecules/pagination/pagination.component.mjs +253 -0
- package/esm2022/lib/components/molecules/pagination/types.mjs +2 -0
- package/esm2022/lib/components/molecules/participant-card/participant-card.component.mjs +486 -0
- package/esm2022/lib/components/molecules/participant-card/types.mjs +21 -0
- package/esm2022/lib/components/molecules/password-input/password-input.component.mjs +4 -4
- package/esm2022/lib/components/molecules/phone-input/phone-input.component.mjs +336 -0
- package/esm2022/lib/components/molecules/phone-input/types.mjs +19 -0
- package/esm2022/lib/components/molecules/pill/pill.component.mjs +4 -4
- package/esm2022/lib/components/molecules/pill/types.mjs +1 -1
- package/esm2022/lib/components/molecules/pin-input/pin-input.component.mjs +4 -4
- package/esm2022/lib/components/molecules/plain-code-box/plain-code-box.component.mjs +4 -4
- package/esm2022/lib/components/molecules/plain-code-box/types.mjs +1 -1
- package/esm2022/lib/components/molecules/popover-selector/popover-selector.component.mjs +5 -5
- package/esm2022/lib/components/molecules/popover-selector/types.mjs +1 -1
- package/esm2022/lib/components/molecules/progress-status/progress-status.component.mjs +4 -4
- package/esm2022/lib/components/molecules/progress-status/types.mjs +1 -1
- package/esm2022/lib/components/molecules/prompter/prompter.component.mjs +4 -4
- package/esm2022/lib/components/molecules/prompter/types.mjs +1 -1
- package/esm2022/lib/components/molecules/quote-box/quote-box.component.mjs +155 -0
- package/esm2022/lib/components/molecules/radio-input/radio-input.component.mjs +5 -5
- package/esm2022/lib/components/molecules/raffle-status-card/raffle-status-card.component.mjs +484 -0
- package/esm2022/lib/components/molecules/raffle-status-card/types.mjs +23 -0
- package/esm2022/lib/components/molecules/range-input/range-input.component.mjs +148 -0
- package/esm2022/lib/components/molecules/range-input/types.mjs +2 -0
- package/esm2022/lib/components/molecules/rating/rating.component.mjs +149 -0
- package/esm2022/lib/components/molecules/rating/types.mjs +2 -0
- package/esm2022/lib/components/molecules/searchbar/searchbar.component.mjs +4 -4
- package/esm2022/lib/components/molecules/segment-control/segment-control.component.mjs +145 -0
- package/esm2022/lib/components/molecules/segment-control/types.mjs +2 -0
- package/esm2022/lib/components/molecules/select-input/select-input.component.mjs +5 -5
- package/esm2022/lib/components/molecules/select-search/select-search.component.mjs +5 -5
- package/esm2022/lib/components/molecules/share-buttons/share-buttons.component.mjs +277 -0
- package/esm2022/lib/components/molecules/share-buttons/types.mjs +88 -0
- package/esm2022/lib/components/molecules/stats-card/stats-card.component.mjs +165 -0
- package/esm2022/lib/components/molecules/stats-card/types.mjs +2 -0
- package/esm2022/lib/components/molecules/stepper/stepper.component.mjs +239 -0
- package/esm2022/lib/components/molecules/stepper/types.mjs +2 -0
- package/esm2022/lib/components/molecules/tabs/tabs.component.mjs +135 -0
- package/esm2022/lib/components/molecules/tabs/types.mjs +2 -0
- package/esm2022/lib/components/molecules/text-input/text-input.component.mjs +4 -4
- package/esm2022/lib/components/molecules/textarea-input/textarea-input.component.mjs +204 -0
- package/esm2022/lib/components/molecules/textarea-input/types.mjs +2 -0
- package/esm2022/lib/components/molecules/ticket-grid/ticket-grid.component.mjs +497 -0
- package/esm2022/lib/components/molecules/ticket-grid/types.mjs +11 -0
- package/esm2022/lib/components/molecules/timeline/timeline.component.mjs +140 -0
- package/esm2022/lib/components/molecules/timeline/types.mjs +2 -0
- package/esm2022/lib/components/molecules/title-block/title-block.component.mjs +4 -4
- package/esm2022/lib/components/molecules/title-block/types.mjs +1 -1
- package/esm2022/lib/components/molecules/toggle-input/toggle-input.component.mjs +89 -0
- package/esm2022/lib/components/molecules/toggle-input/types.mjs +2 -0
- package/esm2022/lib/components/molecules/winner-display/types.mjs +9 -0
- package/esm2022/lib/components/molecules/winner-display/winner-display.component.mjs +370 -0
- package/esm2022/lib/components/organisms/article/article.component.mjs +4 -4
- package/esm2022/lib/components/organisms/article/types.mjs +1 -1
- package/esm2022/lib/components/organisms/banner/banner.component.mjs +4 -4
- package/esm2022/lib/components/organisms/banner/types.mjs +1 -1
- package/esm2022/lib/components/organisms/comment-section/comment-section.component.mjs +578 -0
- package/esm2022/lib/components/organisms/comment-section/types.mjs +2 -0
- package/esm2022/lib/components/organisms/data-table/data-table.component.mjs +853 -0
- package/esm2022/lib/components/organisms/data-table/types.mjs +13 -0
- package/esm2022/lib/components/organisms/footer/footer.component.mjs +4 -4
- package/esm2022/lib/components/organisms/footer/types.mjs +1 -1
- package/esm2022/lib/components/organisms/form/factory.mjs +1 -1
- package/esm2022/lib/components/organisms/form/form-footer/form-footer.component.mjs +4 -4
- package/esm2022/lib/components/organisms/form/form.component.mjs +4 -4
- package/esm2022/lib/components/organisms/header/header.component.mjs +4 -4
- package/esm2022/lib/components/organisms/header/types.mjs +1 -1
- package/esm2022/lib/components/organisms/item-list/item-list.component.mjs +4 -4
- package/esm2022/lib/components/organisms/item-list/types.mjs +1 -1
- package/esm2022/lib/components/organisms/no-content/no-content.component.mjs +4 -4
- package/esm2022/lib/components/organisms/no-content/types.mjs +1 -1
- package/esm2022/lib/components/organisms/toolbar/toolbar.component.mjs +4 -4
- package/esm2022/lib/components/organisms/toolbar/types.mjs +1 -1
- package/esm2022/lib/components/organisms/wizard/types.mjs +1 -1
- package/esm2022/lib/components/organisms/wizard/wizard-footer/wizard-footer.component.mjs +4 -4
- package/esm2022/lib/components/organisms/wizard/wizard.component.mjs +4 -4
- package/esm2022/lib/components/templates/layout/layout.component.mjs +4 -4
- package/esm2022/lib/components/templates/simple/simple.component.mjs +5 -5
- package/esm2022/lib/components/templates/simple/types.mjs +1 -1
- package/esm2022/lib/components/types.mjs +22 -16
- package/esm2022/lib/services/confirmation-dialog/confirmation-dialog.service.mjs +180 -0
- package/esm2022/lib/services/confirmation-dialog/types.mjs +14 -0
- package/esm2022/lib/services/download.service.mjs +4 -4
- package/esm2022/lib/services/icons.service.mjs +4 -4
- package/esm2022/lib/services/in-app-browser.service.mjs +4 -4
- package/esm2022/lib/services/lang-provider/components/lang-settings.mjs +1 -1
- package/esm2022/lib/services/lang-provider/content.mjs +1 -1
- package/esm2022/lib/services/lang-provider/lang-provider.service.mjs +4 -4
- package/esm2022/lib/services/lang-provider/types.mjs +1 -1
- package/esm2022/lib/services/link-processor.service.mjs +4 -4
- package/esm2022/lib/services/local-storage.service.mjs +1 -1
- package/esm2022/lib/services/modal/modal.service.mjs +213 -0
- package/esm2022/lib/services/modal/simple-modal-content.component.mjs +133 -0
- package/esm2022/lib/services/modal/types.mjs +26 -0
- package/esm2022/lib/services/navigation.service.mjs +4 -4
- package/esm2022/lib/services/qr-generator/qr-generator.service.mjs +341 -0
- package/esm2022/lib/services/qr-generator/types.mjs +46 -0
- package/esm2022/lib/services/theme.service.mjs +4 -4
- package/esm2022/lib/services/toast.service.mjs +4 -4
- package/esm2022/lib/services/types.mjs +1 -1
- package/esm2022/lib/shared/constants/storage.mjs +1 -1
- package/esm2022/lib/shared/pipes/process-links.pipe.mjs +4 -4
- package/esm2022/lib/shared/utils/content.mjs +1 -1
- package/esm2022/lib/shared/utils/dom.mjs +1 -1
- package/esm2022/lib/shared/utils/form-defaults.mjs +1 -1
- package/esm2022/lib/shared/utils/simple-content.mjs +1 -1
- package/esm2022/lib/shared/utils/styles.mjs +1 -1
- package/esm2022/lib/shared/utils/text.mjs +1 -1
- package/esm2022/public-api.mjs +73 -3
- package/esm2022/valtech-components.mjs +1 -1
- package/fesm2022/valtech-components-simple-modal-content.component-DQhEgUmS.mjs +136 -0
- package/fesm2022/valtech-components-simple-modal-content.component-DQhEgUmS.mjs.map +1 -0
- package/fesm2022/valtech-components.mjs +14847 -4292
- package/fesm2022/valtech-components.mjs.map +1 -1
- package/lib/components/atoms/countdown/countdown.component.d.ts +38 -0
- package/lib/components/atoms/countdown/types.d.ts +108 -0
- package/lib/components/atoms/fab/fab.component.d.ts +16 -0
- package/lib/components/atoms/fab/types.d.ts +45 -0
- package/lib/components/atoms/price-tag/price-tag.component.d.ts +16 -0
- package/lib/components/atoms/price-tag/types.d.ts +59 -0
- package/lib/components/atoms/progress-ring/progress-ring.component.d.ts +20 -0
- package/lib/components/atoms/progress-ring/types.d.ts +24 -0
- package/lib/components/atoms/qr-code/qr-code.component.d.ts +36 -0
- package/lib/components/atoms/qr-code/types.d.ts +124 -0
- package/lib/components/atoms/skeleton/skeleton.component.d.ts +12 -0
- package/lib/components/atoms/skeleton/types.d.ts +29 -0
- package/lib/components/molecules/accordion/accordion.component.d.ts +19 -0
- package/lib/components/molecules/accordion/types.d.ts +47 -0
- package/lib/components/molecules/breadcrumb/breadcrumb.component.d.ts +22 -0
- package/lib/components/molecules/breadcrumb/types.d.ts +45 -0
- package/lib/components/molecules/chip-group/chip-group.component.d.ts +22 -0
- package/lib/components/molecules/chip-group/types.d.ts +65 -0
- package/lib/components/molecules/comment/comment.component.d.ts +42 -0
- package/lib/components/molecules/comment/types.d.ts +171 -0
- package/lib/components/molecules/currency-input/currency-input.component.d.ts +43 -0
- package/lib/components/molecules/currency-input/types.d.ts +96 -0
- package/lib/components/molecules/date-range-input/date-range-input.component.d.ts +42 -0
- package/lib/components/molecules/date-range-input/types.d.ts +109 -0
- package/lib/components/molecules/glow-card/glow-card.component.d.ts +51 -0
- package/lib/components/molecules/glow-card/types.d.ts +92 -0
- package/lib/components/molecules/number-stepper/number-stepper.component.d.ts +34 -0
- package/lib/components/molecules/number-stepper/types.d.ts +88 -0
- package/lib/components/molecules/pagination/pagination.component.d.ts +15 -0
- package/lib/components/molecules/pagination/types.d.ts +41 -0
- package/lib/components/molecules/participant-card/participant-card.component.d.ts +26 -0
- package/lib/components/molecules/participant-card/types.d.ts +132 -0
- package/lib/components/molecules/phone-input/phone-input.component.d.ts +38 -0
- package/lib/components/molecules/phone-input/types.d.ts +98 -0
- package/lib/components/molecules/quote-box/quote-box.component.d.ts +26 -0
- package/lib/components/molecules/raffle-status-card/raffle-status-card.component.d.ts +22 -0
- package/lib/components/molecules/raffle-status-card/types.d.ts +108 -0
- package/lib/components/molecules/range-input/range-input.component.d.ts +30 -0
- package/lib/components/molecules/range-input/types.d.ts +59 -0
- package/lib/components/molecules/rating/rating.component.d.ts +17 -0
- package/lib/components/molecules/rating/types.d.ts +41 -0
- package/lib/components/molecules/segment-control/segment-control.component.d.ts +30 -0
- package/lib/components/molecules/segment-control/types.d.ts +46 -0
- package/lib/components/molecules/share-buttons/share-buttons.component.d.ts +22 -0
- package/lib/components/molecules/share-buttons/types.d.ts +108 -0
- package/lib/components/molecules/stats-card/stats-card.component.d.ts +14 -0
- package/lib/components/molecules/stats-card/types.d.ts +41 -0
- package/lib/components/molecules/stepper/stepper.component.d.ts +21 -0
- package/lib/components/molecules/stepper/types.d.ts +66 -0
- package/lib/components/molecules/tabs/tabs.component.d.ts +17 -0
- package/lib/components/molecules/tabs/types.d.ts +45 -0
- package/lib/components/molecules/textarea-input/textarea-input.component.d.ts +27 -0
- package/lib/components/molecules/textarea-input/types.d.ts +74 -0
- package/lib/components/molecules/ticket-grid/ticket-grid.component.d.ts +41 -0
- package/lib/components/molecules/ticket-grid/types.d.ts +122 -0
- package/lib/components/molecules/timeline/timeline.component.d.ts +14 -0
- package/lib/components/molecules/timeline/types.d.ts +39 -0
- package/lib/components/molecules/toggle-input/toggle-input.component.d.ts +24 -0
- package/lib/components/molecules/toggle-input/types.d.ts +30 -0
- package/lib/components/molecules/winner-display/types.d.ts +103 -0
- package/lib/components/molecules/winner-display/winner-display.component.d.ts +37 -0
- package/lib/components/organisms/article/article.component.d.ts +1 -1
- package/lib/components/organisms/comment-section/comment-section.component.d.ts +52 -0
- package/lib/components/organisms/comment-section/types.d.ts +144 -0
- package/lib/components/organisms/data-table/data-table.component.d.ts +46 -0
- package/lib/components/organisms/data-table/types.d.ts +205 -0
- package/lib/components/types.d.ts +21 -15
- package/lib/services/confirmation-dialog/confirmation-dialog.service.d.ts +71 -0
- package/lib/services/confirmation-dialog/types.d.ts +61 -0
- package/lib/services/modal/modal.service.d.ts +98 -0
- package/lib/services/modal/simple-modal-content.component.d.ts +19 -0
- package/lib/services/modal/types.d.ts +155 -0
- package/lib/services/qr-generator/qr-generator.service.d.ts +115 -0
- package/lib/services/qr-generator/types.d.ts +141 -0
- package/package.json +9 -2
- package/public-api.d.ts +72 -2
- package/LICENSE +0 -21
|
@@ -23,8 +23,8 @@ export class DateInputComponent {
|
|
|
23
23
|
applyDefaultValueToControl(this.props);
|
|
24
24
|
}
|
|
25
25
|
}
|
|
26
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
27
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
26
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: DateInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
27
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: DateInputComponent, isStandalone: true, selector: "val-date-input", inputs: { props: "props" }, ngImport: i0, template: `
|
|
28
28
|
<div class="button-container">
|
|
29
29
|
<ion-datetime-button class="action" [datetime]="props.token"></ion-datetime-button>
|
|
30
30
|
</div>
|
|
@@ -48,9 +48,9 @@ export class DateInputComponent {
|
|
|
48
48
|
</ion-datetime>
|
|
49
49
|
</ng-template>
|
|
50
50
|
</ion-modal>
|
|
51
|
-
`, isInline: true, styles: [":root{--ion-color-primary: #7026df;--ion-color-primary-rgb: 112, 38, 223;--ion-color-primary-contrast: #ffffff;--ion-color-primary-contrast-rgb: 255, 255, 255;--ion-color-primary-shade: #6321c4;--ion-color-primary-tint: #7e3ce2;--ion-color-secondary: #e2ccff;--ion-color-secondary-rgb: 226, 204, 255;--ion-color-secondary-contrast: #000000;--ion-color-secondary-contrast-rgb: 0, 0, 0;--ion-color-secondary-shade: #c7b4e0;--ion-color-secondary-tint: #e5d1ff;--ion-color-texti: #354c69;--ion-color-texti-rgb: 53, 76, 105;--ion-color-texti-contrast: #ffffff;--ion-color-texti-contrast-rgb: 255, 255, 255;--ion-color-texti-shade: #2f435c;--ion-color-texti-tint: #495e78;--ion-color-darki: #090f1b;--ion-color-darki-rgb: 9, 15, 27;--ion-color-darki-contrast: #ffffff;--ion-color-darki-contrast-rgb: 255, 255, 255;--ion-color-darki-shade: #080d18;--ion-color-darki-tint: #222732;--ion-color-medium: #9e9e9e;--ion-color-medium-rgb: 158, 158, 158;--ion-color-medium-contrast: #000000;--ion-color-medium-contrast-rgb: 0, 0, 0;--ion-color-medium-shade: #8b8b8b;--ion-color-medium-tint: #a8a8a8;--swiper-pagination-color: var(--ion-color-primary);--swiper-navigation-color: var(--ion-color-primary);--swiper-pagination-bullet-inactive-color: var(--ion-color-medium)}@media (prefers-color-scheme: dark){:root{--ion-color-texti: #8fc1ff;--ion-color-texti-rgb: 143, 193, 255;--ion-color-texti-contrast: #000000;--ion-color-texti-contrast-rgb: 0, 0, 0;--ion-color-texti-shade: #7eaae0;--ion-color-texti-tint: #9ac7ff;--ion-color-darki: #ffffff;--ion-color-darki-rgb: 255, 255, 255;--ion-color-darki-contrast: #000000;--ion-color-darki-contrast-rgb: 0, 0, 0;--ion-color-darki-shade: #e0e0e0;--ion-color-darki-tint: #ffffff;--ion-color-primary: #8f49f8;--ion-color-primary-rgb: 143, 73, 248;--ion-color-primary-contrast: #ffffff;--ion-color-primary-contrast-rgb: 255, 255, 255;--ion-color-primary-shade: #7e40da;--ion-color-primary-tint: #9a5bf9}}.ion-color-texti{--ion-color-base: var(--ion-color-texti);--ion-color-base-rgb: var(--ion-color-texti-rgb);--ion-color-contrast: var(--ion-color-texti-contrast);--ion-color-contrast-rgb: var(--ion-color-texti-contrast-rgb);--ion-color-shade: var(--ion-color-texti-shade);--ion-color-tint: var(--ion-color-texti-tint)}.ion-color-darki{--ion-color-base: var(--ion-color-darki);--ion-color-base-rgb: var(--ion-color-darki-rgb);--ion-color-contrast: var(--ion-color-darki-contrast);--ion-color-contrast-rgb: var(--ion-color-darki-contrast-rgb);--ion-color-shade: var(--ion-color-darki-shade);--ion-color-tint: var(--ion-color-darki-tint)}.section{margin-top:1rem}.input{margin:.5rem 0}@media (min-width: 768px){.input{margin:.75rem 0}}.button-container{display:flex;flex-direction:column;align-items:flex-start}.action{margin-top:.25rem}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: IonDatetime, selector: "ion-datetime", inputs: ["cancelText", "clearText", "color", "dayValues", "disabled", "doneText", "firstDayOfWeek", "highlightedDates", "hourCycle", "hourValues", "isDateEnabled", "locale", "max", "min", "minuteValues", "mode", "monthValues", "multiple", "name", "preferWheel", "presentation", "readonly", "showClearButton", "showDefaultButtons", "showDefaultTimeLabel", "showDefaultTitle", "size", "titleSelectedDatesFormatter", "value", "yearValues"] }, { kind: "component", type: IonDatetimeButton, selector: "ion-datetime-button", inputs: ["color", "datetime", "disabled", "mode"] }, { kind: "component", type: IonModal, selector: "ion-modal" }] }); }
|
|
51
|
+
`, isInline: true, styles: [":root{--ion-color-primary: #7026df;--ion-color-primary-rgb: 112, 38, 223;--ion-color-primary-contrast: #ffffff;--ion-color-primary-contrast-rgb: 255, 255, 255;--ion-color-primary-shade: #6321c4;--ion-color-primary-tint: #7e3ce2;--ion-color-secondary: #e2ccff;--ion-color-secondary-rgb: 226, 204, 255;--ion-color-secondary-contrast: #000000;--ion-color-secondary-contrast-rgb: 0, 0, 0;--ion-color-secondary-shade: #c7b4e0;--ion-color-secondary-tint: #e5d1ff;--ion-color-texti: #354c69;--ion-color-texti-rgb: 53, 76, 105;--ion-color-texti-contrast: #ffffff;--ion-color-texti-contrast-rgb: 255, 255, 255;--ion-color-texti-shade: #2f435c;--ion-color-texti-tint: #495e78;--ion-color-darki: #090f1b;--ion-color-darki-rgb: 9, 15, 27;--ion-color-darki-contrast: #ffffff;--ion-color-darki-contrast-rgb: 255, 255, 255;--ion-color-darki-shade: #080d18;--ion-color-darki-tint: #222732;--ion-color-medium: #9e9e9e;--ion-color-medium-rgb: 158, 158, 158;--ion-color-medium-contrast: #000000;--ion-color-medium-contrast-rgb: 0, 0, 0;--ion-color-medium-shade: #8b8b8b;--ion-color-medium-tint: #a8a8a8;--swiper-pagination-color: var(--ion-color-primary);--swiper-navigation-color: var(--ion-color-primary);--swiper-pagination-bullet-inactive-color: var(--ion-color-medium)}@media (prefers-color-scheme: dark){:root{--ion-color-texti: #8fc1ff;--ion-color-texti-rgb: 143, 193, 255;--ion-color-texti-contrast: #000000;--ion-color-texti-contrast-rgb: 0, 0, 0;--ion-color-texti-shade: #7eaae0;--ion-color-texti-tint: #9ac7ff;--ion-color-darki: #ffffff;--ion-color-darki-rgb: 255, 255, 255;--ion-color-darki-contrast: #000000;--ion-color-darki-contrast-rgb: 0, 0, 0;--ion-color-darki-shade: #e0e0e0;--ion-color-darki-tint: #ffffff;--ion-color-primary: #8f49f8;--ion-color-primary-rgb: 143, 73, 248;--ion-color-primary-contrast: #ffffff;--ion-color-primary-contrast-rgb: 255, 255, 255;--ion-color-primary-shade: #7e40da;--ion-color-primary-tint: #9a5bf9}}.ion-color-texti{--ion-color-base: var(--ion-color-texti);--ion-color-base-rgb: var(--ion-color-texti-rgb);--ion-color-contrast: var(--ion-color-texti-contrast);--ion-color-contrast-rgb: var(--ion-color-texti-contrast-rgb);--ion-color-shade: var(--ion-color-texti-shade);--ion-color-tint: var(--ion-color-texti-tint)}.ion-color-darki{--ion-color-base: var(--ion-color-darki);--ion-color-base-rgb: var(--ion-color-darki-rgb);--ion-color-contrast: var(--ion-color-darki-contrast);--ion-color-contrast-rgb: var(--ion-color-darki-contrast-rgb);--ion-color-shade: var(--ion-color-darki-shade);--ion-color-tint: var(--ion-color-darki-tint)}.section{margin-top:1rem}.input{margin:.5rem 0}@media (min-width: 768px){.input{margin:.75rem 0}}.button-container{display:flex;flex-direction:column;align-items:flex-start}.action{margin-top:.25rem}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: IonDatetime, selector: "ion-datetime", inputs: ["cancelText", "clearText", "color", "dayValues", "disabled", "doneText", "firstDayOfWeek", "formatOptions", "highlightedDates", "hourCycle", "hourValues", "isDateEnabled", "locale", "max", "min", "minuteValues", "mode", "monthValues", "multiple", "name", "preferWheel", "presentation", "readonly", "showAdjacentDays", "showClearButton", "showDefaultButtons", "showDefaultTimeLabel", "showDefaultTitle", "size", "titleSelectedDatesFormatter", "value", "yearValues"] }, { kind: "component", type: IonDatetimeButton, selector: "ion-datetime-button", inputs: ["color", "datetime", "disabled", "mode"] }, { kind: "component", type: IonModal, selector: "ion-modal" }] }); }
|
|
52
52
|
}
|
|
53
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
53
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: DateInputComponent, decorators: [{
|
|
54
54
|
type: Component,
|
|
55
55
|
args: [{ selector: 'val-date-input', standalone: true, imports: [CommonModule, ReactiveFormsModule, IonDatetime, IonDatetimeButton, IonModal], template: `
|
|
56
56
|
<div class="button-container">
|
|
@@ -80,4 +80,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
80
80
|
}], ctorParameters: () => [], propDecorators: { props: [{
|
|
81
81
|
type: Input
|
|
82
82
|
}] } });
|
|
83
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
83
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1pbnB1dC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvbW9sZWN1bGVzL2RhdGUtaW5wdXQvZGF0ZS1pbnB1dC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQ3pELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxXQUFXLEVBQUUsaUJBQWlCLEVBQUUsUUFBUSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDckYsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0scUNBQXFDLENBQUM7OztBQWtDakY7Ozs7Ozs7OztHQVNHO0FBQ0gsTUFBTSxPQUFPLGtCQUFrQjtJQVM3QixnQkFBZSxDQUFDO0lBRWhCLFFBQVE7UUFDTix5Q0FBeUM7UUFDekMsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFLFdBQVcsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxDQUFDO1lBQ2pELDBCQUEwQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN6QyxDQUFDO0lBQ0gsQ0FBQzsrR0FoQlUsa0JBQWtCO21HQUFsQixrQkFBa0Isc0dBckNuQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBd0JULHN4RkF6QlMsWUFBWSw4QkFBRSxtQkFBbUIsMFRBQUUsV0FBVyxvaEJBQUUsaUJBQWlCLG1IQUFFLFFBQVE7OzRGQXNDMUUsa0JBQWtCO2tCQXpDOUIsU0FBUzsrQkFDRSxnQkFBZ0IsY0FDZCxJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsbUJBQW1CLEVBQUUsV0FBVyxFQUFFLGlCQUFpQixFQUFFLFFBQVEsQ0FBQyxZQUM1RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBd0JUO3dEQW9CUSxLQUFLO3NCQUFiLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgSW9uRGF0ZXRpbWUsIElvbkRhdGV0aW1lQnV0dG9uLCBJb25Nb2RhbCB9IGZyb20gJ0Bpb25pYy9hbmd1bGFyL3N0YW5kYWxvbmUnO1xuaW1wb3J0IHsgYXBwbHlEZWZhdWx0VmFsdWVUb0NvbnRyb2wgfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvdXRpbHMvZm9ybS1kZWZhdWx0cyc7XG5pbXBvcnQgeyBJbnB1dE1ldGFkYXRhIH0gZnJvbSAnLi4vLi4vdHlwZXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWwtZGF0ZS1pbnB1dCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUsIElvbkRhdGV0aW1lLCBJb25EYXRldGltZUJ1dHRvbiwgSW9uTW9kYWxdLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxkaXYgY2xhc3M9XCJidXR0b24tY29udGFpbmVyXCI+XG4gICAgICA8aW9uLWRhdGV0aW1lLWJ1dHRvbiBjbGFzcz1cImFjdGlvblwiIFtkYXRldGltZV09XCJwcm9wcy50b2tlblwiPjwvaW9uLWRhdGV0aW1lLWJ1dHRvbj5cbiAgICA8L2Rpdj5cbiAgICA8aW9uLW1vZGFsIFtrZWVwQ29udGVudHNNb3VudGVkXT1cInRydWVcIj5cbiAgICAgIDxuZy10ZW1wbGF0ZT5cbiAgICAgICAgPGlvbi1kYXRldGltZVxuICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJwcm9wcy5jb250cm9sXCJcbiAgICAgICAgICBbaWRdPVwicHJvcHMudG9rZW5cIlxuICAgICAgICAgIHByZXNlbnRhdGlvbj1cImRhdGVcIlxuICAgICAgICAgIGxvY2FsZT1cImVzLUVTXCJcbiAgICAgICAgICBbZmlyc3REYXlPZldlZWtdPVwiMVwiXG4gICAgICAgICAgW3Nob3dEZWZhdWx0QnV0dG9uc109XCJ0cnVlXCJcbiAgICAgICAgICBkb25lVGV4dD1cIkFjZXB0YXJcIlxuICAgICAgICAgIGNhbmNlbFRleHQ9XCJDYW5jZWxhclwiXG4gICAgICAgICAgZm9ybWF0T3B0aW9ucz1cIntcbiAgICAgICAgICAgIGRhdGU6IHsgZGF0ZVN0eWxlOiAnbWVkaXVtJyB9LFxuICAgICAgICAgICAgdGltZTogeyB0aW1lU3R5bGU6ICdzaG9ydCcgfVxuICAgICAgICAgIH1cIlxuICAgICAgICA+XG4gICAgICAgICAgPHNwYW4gc2xvdD1cInRpdGxlXCI+e3sgcHJvcHMuaGludCB9fTwvc3Bhbj5cbiAgICAgICAgPC9pb24tZGF0ZXRpbWU+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvaW9uLW1vZGFsPlxuICBgLFxuICBzdHlsZVVybHM6IFsnLi9kYXRlLWlucHV0LmNvbXBvbmVudC5zY3NzJ10sXG59KVxuLyoqXG4gKiB2YWwtZGF0ZS1pbnB1dFxuICpcbiAqIEEgZGF0ZSBwaWNrZXIgaW5wdXQgaW50ZWdyYXRlZCB3aXRoIEFuZ3VsYXIgZm9ybXMsIHVzaW5nIElvbmljJ3MgZGF0ZXRpbWUgY29tcG9uZW50LlxuICpcbiAqIEBleGFtcGxlXG4gKiA8dmFsLWRhdGUtaW5wdXQgW3Byb3BzXT1cInsgY29udHJvbDogbXlDb250cm9sLCBoaW50OiAnU2VsZWN0IGEgZGF0ZScgfVwiPjwvdmFsLWRhdGUtaW5wdXQ+XG4gKlxuICogQGlucHV0IHByb3BzOiBJbnB1dE1ldGFkYXRhIC0gQ29uZmlndXJhdGlvbiBmb3IgdGhlIGRhdGUgaW5wdXQgKGZvcm0gY29udHJvbCwgaGludCwgZXRjLilcbiAqL1xuZXhwb3J0IGNsYXNzIERhdGVJbnB1dENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIC8qKlxuICAgKiBJbnB1dCBjb25maWd1cmF0aW9uIG9iamVjdC5cbiAgICogQHR5cGUge0lucHV0TWV0YWRhdGF9XG4gICAqIEBwcm9wZXJ0eSBjb250cm9sIC0gVGhlIEFuZ3VsYXIgRm9ybUNvbnRyb2wgZm9yIHRoZSBkYXRlIGlucHV0LlxuICAgKiBAcHJvcGVydHkgaGludCAtIFRoZSBoaW50IHRleHQgZm9yIHRoZSBpbnB1dC5cbiAgICovXG4gIEBJbnB1dCgpIHByb3BzOiBJbnB1dE1ldGFkYXRhO1xuXG4gIGNvbnN0cnVjdG9yKCkge31cblxuICBuZ09uSW5pdCgpIHtcbiAgICAvLyBBcHBseSBkZWZhdWx0IHZhbHVlcyBvbiBpbml0aWFsaXphdGlvblxuICAgIGlmICh0aGlzLnByb3BzPy53aXRoRGVmYXVsdCB8fCB0aGlzLnByb3BzPy52YWx1ZSkge1xuICAgICAgYXBwbHlEZWZhdWx0VmFsdWVUb0NvbnRyb2wodGhpcy5wcm9wcyk7XG4gICAgfVxuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,418 @@
|
|
|
1
|
+
import { CommonModule } from '@angular/common';
|
|
2
|
+
import { Component, Input, Output, EventEmitter, inject } from '@angular/core';
|
|
3
|
+
import { ReactiveFormsModule, FormControl } from '@angular/forms';
|
|
4
|
+
import { IonDatetime, IonDatetimeButton, IonModal, IonNote, IonIcon, } from '@ionic/angular/standalone';
|
|
5
|
+
import { addIcons } from 'ionicons';
|
|
6
|
+
import { arrowForwardOutline, calendarOutline } from 'ionicons/icons';
|
|
7
|
+
import { LangService } from '../../../services/lang-provider/lang-provider.service';
|
|
8
|
+
import { ComponentStates } from '../../types';
|
|
9
|
+
import * as i0 from "@angular/core";
|
|
10
|
+
import * as i1 from "@angular/forms";
|
|
11
|
+
addIcons({ arrowForwardOutline, calendarOutline });
|
|
12
|
+
/**
|
|
13
|
+
* val-date-range-input
|
|
14
|
+
*
|
|
15
|
+
* A date range picker with start and end date selection.
|
|
16
|
+
*
|
|
17
|
+
* @example Basic usage
|
|
18
|
+
* ```html
|
|
19
|
+
* <val-date-range-input
|
|
20
|
+
* [props]="{
|
|
21
|
+
* control: dateRangeControl,
|
|
22
|
+
* startLabel: 'Check-in',
|
|
23
|
+
* endLabel: 'Check-out'
|
|
24
|
+
* }"
|
|
25
|
+
* ></val-date-range-input>
|
|
26
|
+
* ```
|
|
27
|
+
*
|
|
28
|
+
* @example With validation
|
|
29
|
+
* ```html
|
|
30
|
+
* <val-date-range-input
|
|
31
|
+
* [props]="{
|
|
32
|
+
* control: rangeControl,
|
|
33
|
+
* label: 'Trip dates',
|
|
34
|
+
* requireBoth: true,
|
|
35
|
+
* minRangeDays: 2,
|
|
36
|
+
* maxRangeDays: 30,
|
|
37
|
+
* disablePastDates: true,
|
|
38
|
+
* showErrors: true
|
|
39
|
+
* }"
|
|
40
|
+
* (rangeChange)="onRangeChange($event)"
|
|
41
|
+
* ></val-date-range-input>
|
|
42
|
+
* ```
|
|
43
|
+
*/
|
|
44
|
+
export class DateRangeInputComponent {
|
|
45
|
+
constructor() {
|
|
46
|
+
this.rangeChange = new EventEmitter();
|
|
47
|
+
this.states = ComponentStates;
|
|
48
|
+
this.internalStartControl = new FormControl(null);
|
|
49
|
+
this.internalEndControl = new FormControl(null);
|
|
50
|
+
this.startDatetimeId = `start-datetime-${Math.random().toString(36).substr(2, 9)}`;
|
|
51
|
+
this.endDatetimeId = `end-datetime-${Math.random().toString(36).substr(2, 9)}`;
|
|
52
|
+
this.showDayCount = true;
|
|
53
|
+
this.langSubscription = null;
|
|
54
|
+
this.valueSubscription = null;
|
|
55
|
+
this.langService = inject(LangService);
|
|
56
|
+
}
|
|
57
|
+
ngOnInit() {
|
|
58
|
+
// Use provided controls or internal ones
|
|
59
|
+
if (this.props.startControl) {
|
|
60
|
+
this.internalStartControl = this.props.startControl;
|
|
61
|
+
}
|
|
62
|
+
if (this.props.endControl) {
|
|
63
|
+
this.internalEndControl = this.props.endControl;
|
|
64
|
+
}
|
|
65
|
+
// Initialize from main control
|
|
66
|
+
if (this.props.control?.value) {
|
|
67
|
+
const value = this.props.control.value;
|
|
68
|
+
if (value.start) {
|
|
69
|
+
this.internalStartControl.setValue(value.start);
|
|
70
|
+
}
|
|
71
|
+
if (value.end) {
|
|
72
|
+
this.internalEndControl.setValue(value.end);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
// Subscribe to main control changes
|
|
76
|
+
this.valueSubscription = this.props.control?.valueChanges.subscribe(value => {
|
|
77
|
+
if (value) {
|
|
78
|
+
if (value.start !== this.internalStartControl.value) {
|
|
79
|
+
this.internalStartControl.setValue(value.start);
|
|
80
|
+
}
|
|
81
|
+
if (value.end !== this.internalEndControl.value) {
|
|
82
|
+
this.internalEndControl.setValue(value.end);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
});
|
|
86
|
+
// Subscribe to language changes
|
|
87
|
+
if (this.hasReactiveContent()) {
|
|
88
|
+
this.langSubscription = this.langService.currentLang$.subscribe(() => { });
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
ngOnDestroy() {
|
|
92
|
+
this.langSubscription?.unsubscribe();
|
|
93
|
+
this.valueSubscription?.unsubscribe();
|
|
94
|
+
}
|
|
95
|
+
hasReactiveContent() {
|
|
96
|
+
return !!(this.props.contentClass &&
|
|
97
|
+
(this.props.labelContentKey ||
|
|
98
|
+
this.props.startLabelContentKey ||
|
|
99
|
+
this.props.endLabelContentKey ||
|
|
100
|
+
this.props.hintContentKey));
|
|
101
|
+
}
|
|
102
|
+
getLabel() {
|
|
103
|
+
if (this.props.labelContentKey && this.props.contentClass) {
|
|
104
|
+
return this.langService.getText(this.props.contentClass, this.props.labelContentKey, this.props.label || '');
|
|
105
|
+
}
|
|
106
|
+
return this.props.label || '';
|
|
107
|
+
}
|
|
108
|
+
getStartLabel() {
|
|
109
|
+
if (this.props.startLabelContentKey && this.props.contentClass) {
|
|
110
|
+
return this.langService.getText(this.props.contentClass, this.props.startLabelContentKey, this.props.startLabel || '');
|
|
111
|
+
}
|
|
112
|
+
return this.props.startLabel || '';
|
|
113
|
+
}
|
|
114
|
+
getEndLabel() {
|
|
115
|
+
if (this.props.endLabelContentKey && this.props.contentClass) {
|
|
116
|
+
return this.langService.getText(this.props.contentClass, this.props.endLabelContentKey, this.props.endLabel || '');
|
|
117
|
+
}
|
|
118
|
+
return this.props.endLabel || '';
|
|
119
|
+
}
|
|
120
|
+
getHint() {
|
|
121
|
+
if (this.props.hintContentKey && this.props.contentClass) {
|
|
122
|
+
return this.langService.getText(this.props.contentClass, this.props.hintContentKey, this.props.hint || '');
|
|
123
|
+
}
|
|
124
|
+
return this.props.hint || '';
|
|
125
|
+
}
|
|
126
|
+
getMinDate() {
|
|
127
|
+
if (this.props.disablePastDates) {
|
|
128
|
+
return new Date().toISOString();
|
|
129
|
+
}
|
|
130
|
+
return this.props.min;
|
|
131
|
+
}
|
|
132
|
+
getMaxDate() {
|
|
133
|
+
if (this.props.disableFutureDates) {
|
|
134
|
+
return new Date().toISOString();
|
|
135
|
+
}
|
|
136
|
+
return this.props.max;
|
|
137
|
+
}
|
|
138
|
+
getMaxStartDate() {
|
|
139
|
+
// Start date cannot be after end date
|
|
140
|
+
const endDate = this.internalEndControl.value;
|
|
141
|
+
if (endDate) {
|
|
142
|
+
return endDate;
|
|
143
|
+
}
|
|
144
|
+
return this.getMaxDate();
|
|
145
|
+
}
|
|
146
|
+
getMinEndDate() {
|
|
147
|
+
// End date cannot be before start date
|
|
148
|
+
const startDate = this.internalStartControl.value;
|
|
149
|
+
if (startDate) {
|
|
150
|
+
return startDate;
|
|
151
|
+
}
|
|
152
|
+
return this.getMinDate();
|
|
153
|
+
}
|
|
154
|
+
get hasError() {
|
|
155
|
+
return !!(this.props.control?.touched && this.props.control?.invalid);
|
|
156
|
+
}
|
|
157
|
+
getErrorMessage() {
|
|
158
|
+
if (!this.props.control?.errors || !this.props.errors) {
|
|
159
|
+
return '';
|
|
160
|
+
}
|
|
161
|
+
const errorKeys = Object.keys(this.props.control.errors);
|
|
162
|
+
for (const key of errorKeys) {
|
|
163
|
+
if (this.props.errors[key]) {
|
|
164
|
+
return this.props.errors[key];
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
return '';
|
|
168
|
+
}
|
|
169
|
+
get dayCount() {
|
|
170
|
+
const start = this.internalStartControl.value;
|
|
171
|
+
const end = this.internalEndControl.value;
|
|
172
|
+
if (!start || !end) {
|
|
173
|
+
return null;
|
|
174
|
+
}
|
|
175
|
+
const startDate = new Date(start);
|
|
176
|
+
const endDate = new Date(end);
|
|
177
|
+
const diffTime = endDate.getTime() - startDate.getTime();
|
|
178
|
+
const diffDays = Math.ceil(diffTime / (1000 * 60 * 60 * 24));
|
|
179
|
+
return Math.max(0, diffDays);
|
|
180
|
+
}
|
|
181
|
+
onStartDateChange(event) {
|
|
182
|
+
this.updateMainControl();
|
|
183
|
+
}
|
|
184
|
+
onEndDateChange(event) {
|
|
185
|
+
this.updateMainControl();
|
|
186
|
+
}
|
|
187
|
+
updateMainControl() {
|
|
188
|
+
const value = {
|
|
189
|
+
start: this.internalStartControl.value,
|
|
190
|
+
end: this.internalEndControl.value,
|
|
191
|
+
};
|
|
192
|
+
this.props.control?.setValue(value);
|
|
193
|
+
this.props.control?.markAsTouched();
|
|
194
|
+
// Validate and emit
|
|
195
|
+
const isValid = this.validateRange(value);
|
|
196
|
+
this.rangeChange.emit({
|
|
197
|
+
value,
|
|
198
|
+
isValid,
|
|
199
|
+
dayCount: this.dayCount,
|
|
200
|
+
});
|
|
201
|
+
}
|
|
202
|
+
validateRange(value) {
|
|
203
|
+
// Check required
|
|
204
|
+
if (this.props.requireBoth && (!value.start || !value.end)) {
|
|
205
|
+
return false;
|
|
206
|
+
}
|
|
207
|
+
// Check day count constraints
|
|
208
|
+
const days = this.dayCount;
|
|
209
|
+
if (days !== null) {
|
|
210
|
+
if (this.props.minRangeDays !== undefined && days < this.props.minRangeDays) {
|
|
211
|
+
return false;
|
|
212
|
+
}
|
|
213
|
+
if (this.props.maxRangeDays !== undefined && days > this.props.maxRangeDays) {
|
|
214
|
+
return false;
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
return true;
|
|
218
|
+
}
|
|
219
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: DateRangeInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
220
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: DateRangeInputComponent, isStandalone: true, selector: "val-date-range-input", inputs: { props: "props" }, outputs: { rangeChange: "rangeChange" }, ngImport: i0, template: `
|
|
221
|
+
<div
|
|
222
|
+
class="date-range-container"
|
|
223
|
+
[class]="props.cssClass"
|
|
224
|
+
[class.has-error]="hasError"
|
|
225
|
+
[class.horizontal]="props.layout !== 'vertical'"
|
|
226
|
+
[class.vertical]="props.layout === 'vertical'"
|
|
227
|
+
[class.disabled]="props.state === states.DISABLED"
|
|
228
|
+
>
|
|
229
|
+
@if (props.label) {
|
|
230
|
+
<label class="range-label">{{ getLabel() }}</label>
|
|
231
|
+
}
|
|
232
|
+
|
|
233
|
+
<div class="date-inputs-wrapper">
|
|
234
|
+
<!-- Start Date -->
|
|
235
|
+
<div class="date-input start-date">
|
|
236
|
+
@if (props.startLabel || props.startLabelContentKey) {
|
|
237
|
+
<span class="date-label">{{ getStartLabel() }}</span>
|
|
238
|
+
}
|
|
239
|
+
<div class="button-container">
|
|
240
|
+
<ion-datetime-button [datetime]="startDatetimeId"></ion-datetime-button>
|
|
241
|
+
</div>
|
|
242
|
+
<ion-modal [keepContentsMounted]="true">
|
|
243
|
+
<ng-template>
|
|
244
|
+
<ion-datetime
|
|
245
|
+
[id]="startDatetimeId"
|
|
246
|
+
[formControl]="internalStartControl"
|
|
247
|
+
[presentation]="props.presentation || 'date'"
|
|
248
|
+
[locale]="props.locale || 'es-ES'"
|
|
249
|
+
[firstDayOfWeek]="props.firstDayOfWeek ?? 1"
|
|
250
|
+
[min]="getMinDate()"
|
|
251
|
+
[max]="getMaxStartDate()"
|
|
252
|
+
[showDefaultButtons]="true"
|
|
253
|
+
[doneText]="props.doneText || 'Aceptar'"
|
|
254
|
+
[cancelText]="props.cancelText || 'Cancelar'"
|
|
255
|
+
(ionChange)="onStartDateChange($event)"
|
|
256
|
+
>
|
|
257
|
+
<span slot="title">{{ getStartLabel() || 'Fecha inicio' }}</span>
|
|
258
|
+
</ion-datetime>
|
|
259
|
+
</ng-template>
|
|
260
|
+
</ion-modal>
|
|
261
|
+
</div>
|
|
262
|
+
|
|
263
|
+
<!-- Separator -->
|
|
264
|
+
<div class="date-separator">
|
|
265
|
+
<ion-icon name="arrow-forward-outline"></ion-icon>
|
|
266
|
+
</div>
|
|
267
|
+
|
|
268
|
+
<!-- End Date -->
|
|
269
|
+
<div class="date-input end-date">
|
|
270
|
+
@if (props.endLabel || props.endLabelContentKey) {
|
|
271
|
+
<span class="date-label">{{ getEndLabel() }}</span>
|
|
272
|
+
}
|
|
273
|
+
<div class="button-container">
|
|
274
|
+
<ion-datetime-button [datetime]="endDatetimeId"></ion-datetime-button>
|
|
275
|
+
</div>
|
|
276
|
+
<ion-modal [keepContentsMounted]="true">
|
|
277
|
+
<ng-template>
|
|
278
|
+
<ion-datetime
|
|
279
|
+
[id]="endDatetimeId"
|
|
280
|
+
[formControl]="internalEndControl"
|
|
281
|
+
[presentation]="props.presentation || 'date'"
|
|
282
|
+
[locale]="props.locale || 'es-ES'"
|
|
283
|
+
[firstDayOfWeek]="props.firstDayOfWeek ?? 1"
|
|
284
|
+
[min]="getMinEndDate()"
|
|
285
|
+
[max]="getMaxDate()"
|
|
286
|
+
[showDefaultButtons]="true"
|
|
287
|
+
[doneText]="props.doneText || 'Aceptar'"
|
|
288
|
+
[cancelText]="props.cancelText || 'Cancelar'"
|
|
289
|
+
(ionChange)="onEndDateChange($event)"
|
|
290
|
+
>
|
|
291
|
+
<span slot="title">{{ getEndLabel() || 'Fecha fin' }}</span>
|
|
292
|
+
</ion-datetime>
|
|
293
|
+
</ng-template>
|
|
294
|
+
</ion-modal>
|
|
295
|
+
</div>
|
|
296
|
+
</div>
|
|
297
|
+
|
|
298
|
+
@if (showDayCount && dayCount !== null) {
|
|
299
|
+
<div class="day-count">
|
|
300
|
+
{{ dayCount }} {{ dayCount === 1 ? 'día' : 'días' }}
|
|
301
|
+
</div>
|
|
302
|
+
}
|
|
303
|
+
|
|
304
|
+
@if (props.hint && !hasError) {
|
|
305
|
+
<ion-note class="hint">{{ getHint() }}</ion-note>
|
|
306
|
+
}
|
|
307
|
+
|
|
308
|
+
@if (hasError && props.showErrors) {
|
|
309
|
+
<ion-note class="error-message" color="danger">
|
|
310
|
+
{{ getErrorMessage() }}
|
|
311
|
+
</ion-note>
|
|
312
|
+
}
|
|
313
|
+
</div>
|
|
314
|
+
`, isInline: true, styles: [":host{display:block;width:100%}.date-range-container.disabled{opacity:.5;pointer-events:none}.date-range-container.has-error .date-inputs-wrapper{border-color:var(--ion-color-danger)}.range-label{display:block;font-size:14px;font-weight:500;color:var(--ion-color-dark);margin-bottom:8px}.date-inputs-wrapper{display:flex;align-items:center;gap:8px;padding:8px 12px;border:1px solid var(--ion-color-medium-shade);border-radius:8px;background:var(--ion-background-color, #fff);transition:border-color .2s}.date-inputs-wrapper:focus-within{border-color:var(--ion-color-primary)}.horizontal .date-inputs-wrapper{flex-direction:row}.vertical .date-inputs-wrapper{flex-direction:column;align-items:stretch}.vertical .date-inputs-wrapper .date-separator{transform:rotate(90deg);align-self:center}.date-input{flex:1;display:flex;flex-direction:column;gap:4px}.date-input .date-label{font-size:12px;color:var(--ion-color-medium);font-weight:500}.date-input .button-container ion-datetime-button{--background: var(--ion-color-light);--border-radius: 6px}.date-input .button-container ion-datetime-button::part(native){padding:8px 12px;font-size:14px}.date-separator{display:flex;align-items:center;justify-content:center;color:var(--ion-color-medium);padding:0 4px}.date-separator ion-icon{font-size:18px}.day-count{margin-top:8px;font-size:13px;color:var(--ion-color-primary);font-weight:500;text-align:center}.hint{display:block;font-size:12px;color:var(--ion-color-medium);margin-top:4px;padding-left:4px}.error-message{display:block;font-size:12px;margin-top:4px;padding-left:4px}ion-datetime{--background: var(--ion-background-color, #fff)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: IonDatetime, selector: "ion-datetime", inputs: ["cancelText", "clearText", "color", "dayValues", "disabled", "doneText", "firstDayOfWeek", "formatOptions", "highlightedDates", "hourCycle", "hourValues", "isDateEnabled", "locale", "max", "min", "minuteValues", "mode", "monthValues", "multiple", "name", "preferWheel", "presentation", "readonly", "showAdjacentDays", "showClearButton", "showDefaultButtons", "showDefaultTimeLabel", "showDefaultTitle", "size", "titleSelectedDatesFormatter", "value", "yearValues"] }, { kind: "component", type: IonDatetimeButton, selector: "ion-datetime-button", inputs: ["color", "datetime", "disabled", "mode"] }, { kind: "component", type: IonModal, selector: "ion-modal" }, { kind: "component", type: IonNote, selector: "ion-note", inputs: ["color", "mode"] }, { kind: "component", type: IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }] }); }
|
|
315
|
+
}
|
|
316
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: DateRangeInputComponent, decorators: [{
|
|
317
|
+
type: Component,
|
|
318
|
+
args: [{ selector: 'val-date-range-input', standalone: true, imports: [CommonModule, ReactiveFormsModule, IonDatetime, IonDatetimeButton, IonModal, IonNote, IonIcon], template: `
|
|
319
|
+
<div
|
|
320
|
+
class="date-range-container"
|
|
321
|
+
[class]="props.cssClass"
|
|
322
|
+
[class.has-error]="hasError"
|
|
323
|
+
[class.horizontal]="props.layout !== 'vertical'"
|
|
324
|
+
[class.vertical]="props.layout === 'vertical'"
|
|
325
|
+
[class.disabled]="props.state === states.DISABLED"
|
|
326
|
+
>
|
|
327
|
+
@if (props.label) {
|
|
328
|
+
<label class="range-label">{{ getLabel() }}</label>
|
|
329
|
+
}
|
|
330
|
+
|
|
331
|
+
<div class="date-inputs-wrapper">
|
|
332
|
+
<!-- Start Date -->
|
|
333
|
+
<div class="date-input start-date">
|
|
334
|
+
@if (props.startLabel || props.startLabelContentKey) {
|
|
335
|
+
<span class="date-label">{{ getStartLabel() }}</span>
|
|
336
|
+
}
|
|
337
|
+
<div class="button-container">
|
|
338
|
+
<ion-datetime-button [datetime]="startDatetimeId"></ion-datetime-button>
|
|
339
|
+
</div>
|
|
340
|
+
<ion-modal [keepContentsMounted]="true">
|
|
341
|
+
<ng-template>
|
|
342
|
+
<ion-datetime
|
|
343
|
+
[id]="startDatetimeId"
|
|
344
|
+
[formControl]="internalStartControl"
|
|
345
|
+
[presentation]="props.presentation || 'date'"
|
|
346
|
+
[locale]="props.locale || 'es-ES'"
|
|
347
|
+
[firstDayOfWeek]="props.firstDayOfWeek ?? 1"
|
|
348
|
+
[min]="getMinDate()"
|
|
349
|
+
[max]="getMaxStartDate()"
|
|
350
|
+
[showDefaultButtons]="true"
|
|
351
|
+
[doneText]="props.doneText || 'Aceptar'"
|
|
352
|
+
[cancelText]="props.cancelText || 'Cancelar'"
|
|
353
|
+
(ionChange)="onStartDateChange($event)"
|
|
354
|
+
>
|
|
355
|
+
<span slot="title">{{ getStartLabel() || 'Fecha inicio' }}</span>
|
|
356
|
+
</ion-datetime>
|
|
357
|
+
</ng-template>
|
|
358
|
+
</ion-modal>
|
|
359
|
+
</div>
|
|
360
|
+
|
|
361
|
+
<!-- Separator -->
|
|
362
|
+
<div class="date-separator">
|
|
363
|
+
<ion-icon name="arrow-forward-outline"></ion-icon>
|
|
364
|
+
</div>
|
|
365
|
+
|
|
366
|
+
<!-- End Date -->
|
|
367
|
+
<div class="date-input end-date">
|
|
368
|
+
@if (props.endLabel || props.endLabelContentKey) {
|
|
369
|
+
<span class="date-label">{{ getEndLabel() }}</span>
|
|
370
|
+
}
|
|
371
|
+
<div class="button-container">
|
|
372
|
+
<ion-datetime-button [datetime]="endDatetimeId"></ion-datetime-button>
|
|
373
|
+
</div>
|
|
374
|
+
<ion-modal [keepContentsMounted]="true">
|
|
375
|
+
<ng-template>
|
|
376
|
+
<ion-datetime
|
|
377
|
+
[id]="endDatetimeId"
|
|
378
|
+
[formControl]="internalEndControl"
|
|
379
|
+
[presentation]="props.presentation || 'date'"
|
|
380
|
+
[locale]="props.locale || 'es-ES'"
|
|
381
|
+
[firstDayOfWeek]="props.firstDayOfWeek ?? 1"
|
|
382
|
+
[min]="getMinEndDate()"
|
|
383
|
+
[max]="getMaxDate()"
|
|
384
|
+
[showDefaultButtons]="true"
|
|
385
|
+
[doneText]="props.doneText || 'Aceptar'"
|
|
386
|
+
[cancelText]="props.cancelText || 'Cancelar'"
|
|
387
|
+
(ionChange)="onEndDateChange($event)"
|
|
388
|
+
>
|
|
389
|
+
<span slot="title">{{ getEndLabel() || 'Fecha fin' }}</span>
|
|
390
|
+
</ion-datetime>
|
|
391
|
+
</ng-template>
|
|
392
|
+
</ion-modal>
|
|
393
|
+
</div>
|
|
394
|
+
</div>
|
|
395
|
+
|
|
396
|
+
@if (showDayCount && dayCount !== null) {
|
|
397
|
+
<div class="day-count">
|
|
398
|
+
{{ dayCount }} {{ dayCount === 1 ? 'día' : 'días' }}
|
|
399
|
+
</div>
|
|
400
|
+
}
|
|
401
|
+
|
|
402
|
+
@if (props.hint && !hasError) {
|
|
403
|
+
<ion-note class="hint">{{ getHint() }}</ion-note>
|
|
404
|
+
}
|
|
405
|
+
|
|
406
|
+
@if (hasError && props.showErrors) {
|
|
407
|
+
<ion-note class="error-message" color="danger">
|
|
408
|
+
{{ getErrorMessage() }}
|
|
409
|
+
</ion-note>
|
|
410
|
+
}
|
|
411
|
+
</div>
|
|
412
|
+
`, styles: [":host{display:block;width:100%}.date-range-container.disabled{opacity:.5;pointer-events:none}.date-range-container.has-error .date-inputs-wrapper{border-color:var(--ion-color-danger)}.range-label{display:block;font-size:14px;font-weight:500;color:var(--ion-color-dark);margin-bottom:8px}.date-inputs-wrapper{display:flex;align-items:center;gap:8px;padding:8px 12px;border:1px solid var(--ion-color-medium-shade);border-radius:8px;background:var(--ion-background-color, #fff);transition:border-color .2s}.date-inputs-wrapper:focus-within{border-color:var(--ion-color-primary)}.horizontal .date-inputs-wrapper{flex-direction:row}.vertical .date-inputs-wrapper{flex-direction:column;align-items:stretch}.vertical .date-inputs-wrapper .date-separator{transform:rotate(90deg);align-self:center}.date-input{flex:1;display:flex;flex-direction:column;gap:4px}.date-input .date-label{font-size:12px;color:var(--ion-color-medium);font-weight:500}.date-input .button-container ion-datetime-button{--background: var(--ion-color-light);--border-radius: 6px}.date-input .button-container ion-datetime-button::part(native){padding:8px 12px;font-size:14px}.date-separator{display:flex;align-items:center;justify-content:center;color:var(--ion-color-medium);padding:0 4px}.date-separator ion-icon{font-size:18px}.day-count{margin-top:8px;font-size:13px;color:var(--ion-color-primary);font-weight:500;text-align:center}.hint{display:block;font-size:12px;color:var(--ion-color-medium);margin-top:4px;padding-left:4px}.error-message{display:block;font-size:12px;margin-top:4px;padding-left:4px}ion-datetime{--background: var(--ion-background-color, #fff)}\n"] }]
|
|
413
|
+
}], propDecorators: { props: [{
|
|
414
|
+
type: Input
|
|
415
|
+
}], rangeChange: [{
|
|
416
|
+
type: Output
|
|
417
|
+
}] } });
|
|
418
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1yYW5nZS1pbnB1dC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvbW9sZWN1bGVzL2RhdGUtcmFuZ2UtaW5wdXQvZGF0ZS1yYW5nZS1pbnB1dC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQXFCLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNsRyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbEUsT0FBTyxFQUNMLFdBQVcsRUFDWCxpQkFBaUIsRUFDakIsUUFBUSxFQUNSLE9BQU8sRUFDUCxPQUFPLEdBQ1IsTUFBTSwyQkFBMkIsQ0FBQztBQUVuQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxlQUFlLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN0RSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sdURBQXVELENBQUM7QUFDcEYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGFBQWEsQ0FBQzs7O0FBRzlDLFFBQVEsQ0FBQyxFQUFFLG1CQUFtQixFQUFFLGVBQWUsRUFBRSxDQUFDLENBQUM7QUF1R25EOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBK0JHO0FBQ0gsTUFBTSxPQUFPLHVCQUF1QjtJQXJJcEM7UUF3SVksZ0JBQVcsR0FBRyxJQUFJLFlBQVksRUFBd0IsQ0FBQztRQUVqRSxXQUFNLEdBQUcsZUFBZSxDQUFDO1FBRXpCLHlCQUFvQixHQUFHLElBQUksV0FBVyxDQUFnQixJQUFJLENBQUMsQ0FBQztRQUM1RCx1QkFBa0Is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RkFBRSxPQUFPOzs0RkFrSTVGLHVCQUF1QjtrQkFySW5DLFNBQVM7K0JBQ0Usc0JBQXNCLGNBQ3BCLElBQUksV0FDUCxDQUFDLFlBQVksRUFBRSxtQkFBbUIsRUFBRSxXQUFXLEVBQUUsaUJBQWlCLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxPQUFPLENBQUMsWUFDOUY7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0E4RlQ7OEJBb0NRLEtBQUs7c0JBQWIsS0FBSztnQkFFSSxXQUFXO3NCQUFwQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBPbkluaXQsIE9uRGVzdHJveSwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSZWFjdGl2ZUZvcm1zTW9kdWxlLCBGb3JtQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7XG4gIElvbkRhdGV0aW1lLFxuICBJb25EYXRldGltZUJ1dHRvbixcbiAgSW9uTW9kYWwsXG4gIElvbk5vdGUsXG4gIElvbkljb24sXG59IGZyb20gJ0Bpb25pYy9hbmd1bGFyL3N0YW5kYWxvbmUnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBhZGRJY29ucyB9IGZyb20gJ2lvbmljb25zJztcbmltcG9ydCB7IGFycm93Rm9yd2FyZE91dGxpbmUsIGNhbGVuZGFyT3V0bGluZSB9IGZyb20gJ2lvbmljb25zL2ljb25zJztcbmltcG9ydCB7IExhbmdTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvbGFuZy1wcm92aWRlci9sYW5nLXByb3ZpZGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ29tcG9uZW50U3RhdGVzIH0gZnJvbSAnLi4vLi4vdHlwZXMnO1xuaW1wb3J0IHsgRGF0ZVJhbmdlSW5wdXRNZXRhZGF0YSwgRGF0ZVJhbmdlQ2hhbmdlRXZlbnQsIERhdGVSYW5nZVZhbHVlIH0gZnJvbSAnLi90eXBlcyc7XG5cbmFkZEljb25zKHsgYXJyb3dGb3J3YXJkT3V0bGluZSwgY2FsZW5kYXJPdXRsaW5lIH0pO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWwtZGF0ZS1yYW5nZS1pbnB1dCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUsIElvbkRhdGV0aW1lLCBJb25EYXRldGltZUJ1dHRvbiwgSW9uTW9kYWwsIElvbk5vdGUsIElvbkljb25dLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwiZGF0ZS1yYW5nZS1jb250YWluZXJcIlxuICAgICAgW2NsYXNzXT1cInByb3BzLmNzc0NsYXNzXCJcbiAgICAgIFtjbGFzcy5oYXMtZXJyb3JdPVwiaGFzRXJyb3JcIlxuICAgICAgW2NsYXNzLmhvcml6b250YWxdPVwicHJvcHMubGF5b3V0ICE9PSAndmVydGljYWwnXCJcbiAgICAgIFtjbGFzcy52ZXJ0aWNhbF09XCJwcm9wcy5sYXlvdXQgPT09ICd2ZXJ0aWNhbCdcIlxuICAgICAgW2NsYXNzLmRpc2FibGVkXT1cInByb3BzLnN0YXRlID09PSBzdGF0ZXMuRElTQUJMRURcIlxuICAgID5cbiAgICAgIEBpZiAocHJvcHMubGFiZWwpIHtcbiAgICAgICAgPGxhYmVsIGNsYXNzPVwicmFuZ2UtbGFiZWxcIj57eyBnZXRMYWJlbCgpIH19PC9sYWJlbD5cbiAgICAgIH1cblxuICAgICAgPGRpdiBjbGFzcz1cImRhdGUtaW5wdXRzLXdyYXBwZXJcIj5cbiAgICAgICAgPCEtLSBTdGFydCBEYXRlIC0tPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZGF0ZS1pbnB1dCBzdGFydC1kYXRlXCI+XG4gICAgICAgICAgQGlmIChwcm9wcy5zdGFydExhYmVsIHx8IHByb3BzLnN0YXJ0TGFiZWxDb250ZW50S2V5KSB7XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImRhdGUtbGFiZWxcIj57eyBnZXRTdGFydExhYmVsKCkgfX08L3NwYW4+XG4gICAgICAgICAgfVxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJidXR0b24tY29udGFpbmVyXCI+XG4gICAgICAgICAgICA8aW9uLWRhdGV0aW1lLWJ1dHRvbiBbZGF0ZXRpbWVdPVwic3RhcnREYXRldGltZUlkXCI+PC9pb24tZGF0ZXRpbWUtYnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxpb24tbW9kYWwgW2tlZXBDb250ZW50c01vdW50ZWRdPVwidHJ1ZVwiPlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICA8aW9uLWRhdGV0aW1lXG4gICAgICAgICAgICAgICAgW2lkXT1cInN0YXJ0RGF0ZXRpbWVJZFwiXG4gICAgICAgICAgICAgICAgW2Zvcm1Db250cm9sXT1cImludGVybmFsU3RhcnRDb250cm9sXCJcbiAgICAgICAgICAgICAgICBbcHJlc2VudGF0aW9uXT1cInByb3BzLnByZXNlbnRhdGlvbiB8fCAnZGF0ZSdcIlxuICAgICAgICAgICAgICAgIFtsb2NhbGVdPVwicHJvcHMubG9jYWxlIHx8ICdlcy1FUydcIlxuICAgICAgICAgICAgICAgIFtmaXJzdERheU9mV2Vla109XCJwcm9wcy5maXJzdERheU9mV2VlayA/PyAxXCJcbiAgICAgICAgICAgICAgICBbbWluXT1cImdldE1pbkRhdGUoKVwiXG4gICAgICAgICAgICAgICAgW21heF09XCJnZXRNYXhTdGFydERhdGUoKVwiXG4gICAgICAgICAgICAgICAgW3Nob3dEZWZhdWx0QnV0dG9uc109XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICBbZG9uZVRleHRdPVwicHJvcHMuZG9uZVRleHQgfHwgJ0FjZXB0YXInXCJcbiAgICAgICAgICAgICAgICBbY2FuY2VsVGV4dF09XCJwcm9wcy5jYW5jZWxUZXh0IHx8ICdDYW5jZWxhcidcIlxuICAgICAgICAgICAgICAgIChpb25DaGFuZ2UpPVwib25TdGFydERhdGVDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8c3BhbiBzbG90PVwidGl0bGVcIj57eyBnZXRTdGFydExhYmVsKCkgfHwgJ0ZlY2hhIGluaWNpbycgfX08L3NwYW4+XG4gICAgICAgICAgICAgIDwvaW9uLWRhdGV0aW1lPlxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICA8L2lvbi1tb2RhbD5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPCEtLSBTZXBhcmF0b3IgLS0+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJkYXRlLXNlcGFyYXRvclwiPlxuICAgICAgICAgIDxpb24taWNvbiBuYW1lPVwiYXJyb3ctZm9yd2FyZC1vdXRsaW5lXCI+PC9pb24taWNvbj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPCEtLSBFbmQgRGF0ZSAtLT5cbiAgICAgICAgPGRpdiBjbGFzcz1cImRhdGUtaW5wdXQgZW5kLWRhdGVcIj5cbiAgICAgICAgICBAaWYgKHByb3BzLmVuZExhYmVsIHx8IHByb3BzLmVuZExhYmVsQ29udGVudEtleSkge1xuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkYXRlLWxhYmVsXCI+e3sgZ2V0RW5kTGFiZWwoKSB9fTwvc3Bhbj5cbiAgICAgICAgICB9XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImJ1dHRvbi1jb250YWluZXJcIj5cbiAgICAgICAgICAgIDxpb24tZGF0ZXRpbWUtYnV0dG9uIFtkYXRldGltZV09XCJlbmREYXRldGltZUlkXCI+PC9pb24tZGF0ZXRpbWUtYnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxpb24tbW9kYWwgW2tlZXBDb250ZW50c01vdW50ZWRdPVwidHJ1ZVwiPlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICA8aW9uLWRhdGV0aW1lXG4gICAgICAgICAgICAgICAgW2lkXT1cImVuZERhdGV0aW1lSWRcIlxuICAgICAgICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJpbnRlcm5hbEVuZENvbnRyb2xcIlxuICAgICAgICAgICAgICAgIFtwcmVzZW50YXRpb25dPVwicHJvcHMucHJlc2VudGF0aW9uIHx8ICdkYXRlJ1wiXG4gICAgICAgICAgICAgICAgW2xvY2FsZV09XCJwcm9wcy5sb2NhbGUgfHwgJ2VzLUVTJ1wiXG4gICAgICAgICAgICAgICAgW2ZpcnN0RGF5T2ZXZWVrXT1cInByb3BzLmZpcnN0RGF5T2ZXZWVrID8/IDFcIlxuICAgICAgICAgICAgICAgIFttaW5dPVwiZ2V0TWluRW5kRGF0ZSgpXCJcbiAgICAgICAgICAgICAgICBbbWF4XT1cImdldE1heERhdGUoKVwiXG4gICAgICAgICAgICAgICAgW3Nob3dEZWZhdWx0QnV0dG9uc109XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICBbZG9uZVRleHRdPVwicHJvcHMuZG9uZVRleHQgfHwgJ0FjZXB0YXInXCJcbiAgICAgICAgICAgICAgICBbY2FuY2VsVGV4dF09XCJwcm9wcy5jYW5jZWxUZXh0IHx8ICdDYW5jZWxhcidcIlxuICAgICAgICAgICAgICAgIChpb25DaGFuZ2UpPVwib25FbmREYXRlQ2hhbmdlKCRldmVudClcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPHNwYW4gc2xvdD1cInRpdGxlXCI+e3sgZ2V0RW5kTGFiZWwoKSB8fCAnRmVjaGEgZmluJyB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9pb24tZGF0ZXRpbWU+XG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgIDwvaW9uLW1vZGFsPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICBAaWYgKHNob3dEYXlDb3VudCAmJiBkYXlDb3VudCAhPT0gbnVsbCkge1xuICAgICAgICA8ZGl2IGNsYXNzPVwiZGF5LWNvdW50XCI+XG4gICAgICAgICAge3sgZGF5Q291bnQgfX0ge3sgZGF5Q291bnQgPT09IDEgPyAnZMOtYScgOiAnZMOtYXMnIH19XG4gICAgICAgIDwvZGl2PlxuICAgICAgfVxuXG4gICAgICBAaWYgKHByb3BzLmhpbnQgJiYgIWhhc0Vycm9yKSB7XG4gICAgICAgIDxpb24tbm90ZSBjbGFzcz1cImhpbnRcIj57eyBnZXRIaW50KCkgfX08L2lvbi1ub3RlPlxuICAgICAgfVxuXG4gICAgICBAaWYgKGhhc0Vycm9yICYmIHByb3BzLnNob3dFcnJvcnMpIHtcbiAgICAgICAgPGlvbi1ub3RlIGNsYXNzPVwiZXJyb3ItbWVzc2FnZVwiIGNvbG9yPVwiZGFuZ2VyXCI+XG4gICAgICAgICAge3sgZ2V0RXJyb3JNZXNzYWdlKCkgfX1cbiAgICAgICAgPC9pb24tbm90ZT5cbiAgICAgIH1cbiAgICA8L2Rpdj5cbiAgYCxcbiAgc3R5bGVVcmxzOiBbJy4vZGF0ZS1yYW5nZS1pbnB1dC5jb21wb25lbnQuc2NzcyddLFxufSlcbi8qKlxuICogdmFsLWRhdGUtcmFuZ2UtaW5wdXRcbiAqXG4gKiBBIGRhdGUgcmFuZ2UgcGlja2VyIHdpdGggc3RhcnQgYW5kIGVuZCBkYXRlIHNlbGVjdGlvbi5cbiAqXG4gKiBAZXhhbXBsZSBCYXNpYyB1c2FnZVxuICogYGBgaHRtbFxuICogPHZhbC1kYXRlLXJhbmdlLWlucHV0XG4gKiAgIFtwcm9wc109XCJ7XG4gKiAgICAgY29udHJvbDogZGF0ZVJhbmdlQ29udHJvbCxcbiAqICAgICBzdGFydExhYmVsOiAnQ2hlY2staW4nLFxuICogICAgIGVuZExhYmVsOiAnQ2hlY2stb3V0J1xuICogICB9XCJcbiAqID48L3ZhbC1kYXRlLXJhbmdlLWlucHV0PlxuICogYGBgXG4gKlxuICogQGV4YW1wbGUgV2l0aCB2YWxpZGF0aW9uXG4gKiBgYGBodG1sXG4gKiA8dmFsLWRhdGUtcmFuZ2UtaW5wdXRcbiAqICAgW3Byb3BzXT1cIntcbiAqICAgICBjb250cm9sOiByYW5nZUNvbnRyb2wsXG4gKiAgICAgbGFiZWw6ICdUcmlwIGRhdGVzJyxcbiAqICAgICByZXF1aXJlQm90aDogdHJ1ZSxcbiAqICAgICBtaW5SYW5nZURheXM6IDIsXG4gKiAgICAgbWF4UmFuZ2VEYXlzOiAzMCxcbiAqICAgICBkaXNhYmxlUGFzdERhdGVzOiB0cnVlLFxuICogICAgIHNob3dFcnJvcnM6IHRydWVcbiAqICAgfVwiXG4gKiAgIChyYW5nZUNoYW5nZSk9XCJvblJhbmdlQ2hhbmdlKCRldmVudClcIlxuICogPjwvdmFsLWRhdGUtcmFuZ2UtaW5wdXQ+XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGNsYXNzIERhdGVSYW5nZUlucHV0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBASW5wdXQoKSBwcm9wczogRGF0ZVJhbmdlSW5wdXRNZXRhZGF0YTtcblxuICBAT3V0cHV0KCkgcmFuZ2VDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPERhdGVSYW5nZUNoYW5nZUV2ZW50PigpO1xuXG4gIHN0YXRlcyA9IENvbXBvbmVudFN0YXRlcztcblxuICBpbnRlcm5hbFN0YXJ0Q29udHJvbCA9IG5ldyBGb3JtQ29udHJvbDxzdHJpbmcgfCBudWxsPihudWxsKTtcbiAgaW50ZXJuYWxFbmRDb250cm9sID0gbmV3IEZvcm1Db250cm9sPHN0cmluZyB8IG51bGw+KG51bGwpO1xuXG4gIHN0YXJ0RGF0ZXRpbWVJZCA9IGBzdGFydC1kYXRldGltZS0ke01hdGgucmFuZG9tKCkudG9TdHJpbmcoMzYpLnN1YnN0cigyLCA5KX1gO1xuICBlbmREYXRldGltZUlkID0gYGVuZC1kYXRldGltZS0ke01hdGgucmFuZG9tKCkudG9TdHJpbmcoMzYpLnN1YnN0cigyLCA5KX1gO1xuXG4gIHNob3dEYXlDb3VudCA9IHRydWU7XG5cbiAgcHJpdmF0ZSBsYW5nU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb24gfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSB2YWx1ZVN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uIHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgbGFuZ1NlcnZpY2UgPSBpbmplY3QoTGFuZ1NlcnZpY2UpO1xuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIC8vIFVzZSBwcm92aWRlZCBjb250cm9scyBvciBpbnRlcm5hbCBvbmVzXG4gICAgaWYgKHRoaXMucHJvcHMuc3RhcnRDb250cm9sKSB7XG4gICAgICB0aGlzLmludGVybmFsU3RhcnRDb250cm9sID0gdGhpcy5wcm9wcy5zdGFydENvbnRyb2w7XG4gICAgfVxuICAgIGlmICh0aGlzLnByb3BzLmVuZENvbnRyb2wpIHtcbiAgICAgIHRoaXMuaW50ZXJuYWxFbmRDb250cm9sID0gdGhpcy5wcm9wcy5lbmRDb250cm9sO1xuICAgIH1cblxuICAgIC8vIEluaXRpYWxpemUgZnJvbSBtYWluIGNvbnRyb2xcbiAgICBpZiAodGhpcy5wcm9wcy5jb250cm9sPy52YWx1ZSkge1xuICAgICAgY29uc3QgdmFsdWUgPSB0aGlzLnByb3BzLmNvbnRyb2wudmFsdWU7XG4gICAgICBpZiAodmFsdWUuc3RhcnQpIHtcbiAgICAgICAgdGhpcy5pbnRlcm5hbFN0YXJ0Q29udHJvbC5zZXRWYWx1ZSh2YWx1ZS5zdGFydCk7XG4gICAgICB9XG4gICAgICBpZiAodmFsdWUuZW5kKSB7XG4gICAgICAgIHRoaXMuaW50ZXJuYWxFbmRDb250cm9sLnNldFZhbHVlKHZhbHVlLmVuZCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gU3Vic2NyaWJlIHRvIG1haW4gY29udHJvbCBjaGFuZ2VzXG4gICAgdGhpcy52YWx1ZVN1YnNjcmlwdGlvbiA9IHRoaXMucHJvcHMuY29udHJvbD8udmFsdWVDaGFuZ2VzLnN1YnNjcmliZSh2YWx1ZSA9PiB7XG4gICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgaWYgKHZhbHVlLnN0YXJ0ICE9PSB0aGlzLmludGVybmFsU3RhcnRDb250cm9sLnZhbHVlKSB7XG4gICAgICAgICAgdGhpcy5pbnRlcm5hbFN0YXJ0Q29udHJvbC5zZXRWYWx1ZSh2YWx1ZS5zdGFydCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHZhbHVlLmVuZCAhPT0gdGhpcy5pbnRlcm5hbEVuZENvbnRyb2wudmFsdWUpIHtcbiAgICAgICAgICB0aGlzLmludGVybmFsRW5kQ29udHJvbC5zZXRWYWx1ZSh2YWx1ZS5lbmQpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICAvLyBTdWJzY3JpYmUgdG8gbGFuZ3VhZ2UgY2hhbmdlc1xuICAgIGlmICh0aGlzLmhhc1JlYWN0aXZlQ29udGVudCgpKSB7XG4gICAgICB0aGlzLmxhbmdTdWJzY3JpcHRpb24gPSB0aGlzLmxhbmdTZXJ2aWNlLmN1cnJlbnRMYW5nJC5zdWJzY3JpYmUoKCkgPT4ge30pO1xuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMubGFuZ1N1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLnZhbHVlU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBoYXNSZWFjdGl2ZUNvbnRlbnQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhKFxuICAgICAgdGhpcy5wcm9wcy5jb250ZW50Q2xhc3MgJiZcbiAgICAgICh0aGlzLnByb3BzLmxhYmVsQ29udGVudEtleSB8fFxuICAgICAgICB0aGlzLnByb3BzLnN0YXJ0TGFiZWxDb250ZW50S2V5IHx8XG4gICAgICAgIHRoaXMucHJvcHMuZW5kTGFiZWxDb250ZW50S2V5IHx8XG4gICAgICAgIHRoaXMucHJvcHMuaGludENvbnRlbnRLZXkpXG4gICAgKTtcbiAgfVxuXG4gIGdldExhYmVsKCk6IHN0cmluZyB7XG4gICAgaWYgKHRoaXMucHJvcHMubGFiZWxDb250ZW50S2V5ICYmIHRoaXMucHJvcHMuY29udGVudENsYXNzKSB7XG4gICAgICByZXR1cm4gdGhpcy5sYW5nU2VydmljZS5nZXRUZXh0KHRoaXMucHJvcHMuY29udGVudENsYXNzLCB0aGlzLnByb3BzLmxhYmVsQ29udGVudEtleSwgdGhpcy5wcm9wcy5sYWJlbCB8fCAnJyk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLnByb3BzLmxhYmVsIHx8ICcnO1xuICB9XG5cbiAgZ2V0U3RhcnRMYWJlbCgpOiBzdHJpbmcge1xuICAgIGlmICh0aGlzLnByb3BzLnN0YXJ0TGFiZWxDb250ZW50S2V5ICYmIHRoaXMucHJvcHMuY29udGVudENsYXNzKSB7XG4gICAgICByZXR1cm4gdGhpcy5sYW5nU2VydmljZS5nZXRUZXh0KFxuICAgICAgICB0aGlzLnByb3BzLmNvbnRlbnRDbGFzcyxcbiAgICAgICAgdGhpcy5wcm9wcy5zdGFydExhYmVsQ29udGVudEtleSxcbiAgICAgICAgdGhpcy5wcm9wcy5zdGFydExhYmVsIHx8ICcnXG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5wcm9wcy5zdGFydExhYmVsIHx8ICcnO1xuICB9XG5cbiAgZ2V0RW5kTGFiZWwoKTogc3RyaW5nIHtcbiAgICBpZiAodGhpcy5wcm9wcy5lbmRMYWJlbENvbnRlbnRLZXkgJiYgdGhpcy5wcm9wcy5jb250ZW50Q2xhc3MpIHtcbiAgICAgIHJldHVybiB0aGlzLmxhbmdTZXJ2aWNlLmdldFRleHQodGhpcy5wcm9wcy5jb250ZW50Q2xhc3MsIHRoaXMucHJvcHMuZW5kTGFiZWxDb250ZW50S2V5LCB0aGlzLnByb3BzLmVuZExhYmVsIHx8ICcnKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMucHJvcHMuZW5kTGFiZWwgfHwgJyc7XG4gIH1cblxuICBnZXRIaW50KCk6IHN0cmluZyB7XG4gICAgaWYgKHRoaXMucHJvcHMuaGludENvbnRlbnRLZXkgJiYgdGhpcy5wcm9wcy5jb250ZW50Q2xhc3MpIHtcbiAgICAgIHJldHVybiB0aGlzLmxhbmdTZXJ2aWNlLmdldFRleHQodGhpcy5wcm9wcy5jb250ZW50Q2xhc3MsIHRoaXMucHJvcHMuaGludENvbnRlbnRLZXksIHRoaXMucHJvcHMuaGludCB8fCAnJyk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLnByb3BzLmhpbnQgfHwgJyc7XG4gIH1cblxuICBnZXRNaW5EYXRlKCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKHRoaXMucHJvcHMuZGlzYWJsZVBhc3REYXRlcykge1xuICAgICAgcmV0dXJuIG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMucHJvcHMubWluO1xuICB9XG5cbiAgZ2V0TWF4RGF0ZSgpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIGlmICh0aGlzLnByb3BzLmRpc2FibGVGdXR1cmVEYXRlcykge1xuICAgICAgcmV0dXJuIG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMucHJvcHMubWF4O1xuICB9XG5cbiAgZ2V0TWF4U3RhcnREYXRlKCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgLy8gU3RhcnQgZGF0ZSBjYW5ub3QgYmUgYWZ0ZXIgZW5kIGRhdGVcbiAgICBjb25zdCBlbmREYXRlID0gdGhpcy5pbnRlcm5hbEVuZENvbnRyb2wudmFsdWU7XG4gICAgaWYgKGVuZERhdGUpIHtcbiAgICAgIHJldHVybiBlbmREYXRlO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5nZXRNYXhEYXRlKCk7XG4gIH1cblxuICBnZXRNaW5FbmREYXRlKCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgLy8gRW5kIGRhdGUgY2Fubm90IGJlIGJlZm9yZSBzdGFydCBkYXRlXG4gICAgY29uc3Qgc3RhcnREYXRlID0gdGhpcy5pbnRlcm5hbFN0YXJ0Q29udHJvbC52YWx1ZTtcbiAgICBpZiAoc3RhcnREYXRlKSB7XG4gICAgICByZXR1cm4gc3RhcnREYXRlO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5nZXRNaW5EYXRlKCk7XG4gIH1cblxuICBnZXQgaGFzRXJyb3IoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhKHRoaXMucHJvcHMuY29udHJvbD8udG91Y2hlZCAmJiB0aGlzLnByb3BzLmNvbnRyb2w/LmludmFsaWQpO1xuICB9XG5cbiAgZ2V0RXJyb3JNZXNzYWdlKCk6IHN0cmluZyB7XG4gICAgaWYgKCF0aGlzLnByb3BzLmNvbnRyb2w/LmVycm9ycyB8fCAhdGhpcy5wcm9wcy5lcnJvcnMpIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG5cbiAgICBjb25zdCBlcnJvcktleXMgPSBPYmplY3Qua2V5cyh0aGlzLnByb3BzLmNvbnRyb2wuZXJyb3JzKTtcbiAgICBmb3IgKGNvbnN0IGtleSBvZiBlcnJvcktleXMpIHtcbiAgICAgIGlmICh0aGlzLnByb3BzLmVycm9yc1trZXldKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnByb3BzLmVycm9yc1trZXldO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiAnJztcbiAgfVxuXG4gIGdldCBkYXlDb3VudCgpOiBudW1iZXIgfCBudWxsIHtcbiAgICBjb25zdCBzdGFydCA9IHRoaXMuaW50ZXJuYWxTdGFydENvbnRyb2wudmFsdWU7XG4gICAgY29uc3QgZW5kID0gdGhpcy5pbnRlcm5hbEVuZENvbnRyb2wudmFsdWU7XG5cbiAgICBpZiAoIXN0YXJ0IHx8ICFlbmQpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGNvbnN0IHN0YXJ0RGF0ZSA9IG5ldyBEYXRlKHN0YXJ0KTtcbiAgICBjb25zdCBlbmREYXRlID0gbmV3IERhdGUoZW5kKTtcbiAgICBjb25zdCBkaWZmVGltZSA9IGVuZERhdGUuZ2V0VGltZSgpIC0gc3RhcnREYXRlLmdldFRpbWUoKTtcbiAgICBjb25zdCBkaWZmRGF5cyA9IE1hdGguY2VpbChkaWZmVGltZSAvICgxMDAwICogNjAgKiA2MCAqIDI0KSk7XG5cbiAgICByZXR1cm4gTWF0aC5tYXgoMCwgZGlmZkRheXMpO1xuICB9XG5cbiAgb25TdGFydERhdGVDaGFuZ2UoZXZlbnQ6IEN1c3RvbUV2ZW50KTogdm9pZCB7XG4gICAgdGhpcy51cGRhdGVNYWluQ29udHJvbCgpO1xuICB9XG5cbiAgb25FbmREYXRlQ2hhbmdlKGV2ZW50OiBDdXN0b21FdmVudCk6IHZvaWQge1xuICAgIHRoaXMudXBkYXRlTWFpbkNvbnRyb2woKTtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlTWFpbkNvbnRyb2woKTogdm9pZCB7XG4gICAgY29uc3QgdmFsdWU6IERhdGVSYW5nZVZhbHVlID0ge1xuICAgICAgc3RhcnQ6IHRoaXMuaW50ZXJuYWxTdGFydENvbnRyb2wudmFsdWUsXG4gICAgICBlbmQ6IHRoaXMuaW50ZXJuYWxFbmRDb250cm9sLnZhbHVlLFxuICAgIH07XG5cbiAgICB0aGlzLnByb3BzLmNvbnRyb2w/LnNldFZhbHVlKHZhbHVlKTtcbiAgICB0aGlzLnByb3BzLmNvbnRyb2w/Lm1hcmtBc1RvdWNoZWQoKTtcblxuICAgIC8vIFZhbGlkYXRlIGFuZCBlbWl0XG4gICAgY29uc3QgaXNWYWxpZCA9IHRoaXMudmFsaWRhdGVSYW5nZSh2YWx1ZSk7XG4gICAgdGhpcy5yYW5nZUNoYW5nZS5lbWl0KHtcbiAgICAgIHZhbHVlLFxuICAgICAgaXNWYWxpZCxcbiAgICAgIGRheUNvdW50OiB0aGlzLmRheUNvdW50LFxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSB2YWxpZGF0ZVJhbmdlKHZhbHVlOiBEYXRlUmFuZ2VWYWx1ZSk6IGJvb2xlYW4ge1xuICAgIC8vIENoZWNrIHJlcXVpcmVkXG4gICAgaWYgKHRoaXMucHJvcHMucmVxdWlyZUJvdGggJiYgKCF2YWx1ZS5zdGFydCB8fCAhdmFsdWUuZW5kKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIC8vIENoZWNrIGRheSBjb3VudCBjb25zdHJhaW50c1xuICAgIGNvbnN0IGRheXMgPSB0aGlzLmRheUNvdW50O1xuICAgIGlmIChkYXlzICE9PSBudWxsKSB7XG4gICAgICBpZiAodGhpcy5wcm9wcy5taW5SYW5nZURheXMgIT09IHVuZGVmaW5lZCAmJiBkYXlzIDwgdGhpcy5wcm9wcy5taW5SYW5nZURheXMpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMucHJvcHMubWF4UmFuZ2VEYXlzICE9PSB1bmRlZmluZWQgJiYgZGF5cyA+IHRoaXMucHJvcHMubWF4UmFuZ2VEYXlzKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvbW9sZWN1bGVzL2RhdGUtcmFuZ2UtaW5wdXQvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEZvcm1Db250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQ29sb3IgfSBmcm9tICdAaW9uaWMvY29yZSc7XG5pbXBvcnQgeyBDb21wb25lbnRTdGF0ZSB9IGZyb20gJy4uLy4uL3R5cGVzJztcblxuLyoqXG4gKiBEYXRlIHJhbmdlIHZhbHVlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIERhdGVSYW5nZVZhbHVlIHtcbiAgLyoqIFN0YXJ0IGRhdGUgKElTTyBzdHJpbmcpICovXG4gIHN0YXJ0OiBzdHJpbmcgfCBudWxsO1xuICAvKiogRW5kIGRhdGUgKElTTyBzdHJpbmcpICovXG4gIGVuZDogc3RyaW5nIHwgbnVsbDtcbn1cblxuLyoqXG4gKiBNZXRhZGF0YSBmb3IgdGhlIGRhdGUgcmFuZ2UgaW5wdXQgY29tcG9uZW50LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIERhdGVSYW5nZUlucHV0TWV0YWRhdGEge1xuICAvKiogRm9ybSBjb250cm9sIGZvciB0aGUgZGF0ZSByYW5nZSAoc3RvcmVzIERhdGVSYW5nZVZhbHVlKSAqL1xuICBjb250cm9sOiBGb3JtQ29udHJvbDxEYXRlUmFuZ2VWYWx1ZSB8IG51bGw+O1xuICAvKiogU2VwYXJhdGUgY29udHJvbCBmb3Igc3RhcnQgZGF0ZSAqL1xuICBzdGFydENvbnRyb2w/OiBGb3JtQ29udHJvbDxzdHJpbmcgfCBudWxsPjtcbiAgLyoqIFNlcGFyYXRlIGNvbnRyb2wgZm9yIGVuZCBkYXRlICovXG4gIGVuZENvbnRyb2w/OiBGb3JtQ29udHJvbDxzdHJpbmcgfCBudWxsPjtcbiAgLyoqIFVuaXF1ZSB0b2tlbiBmb3IgdGhlIGlucHV0ICovXG4gIHRva2VuPzogc3RyaW5nO1xuICAvKiogRGlzcGxheSBsYWJlbCAqL1xuICBsYWJlbD86IHN0cmluZztcbiAgLyoqIEZpZWxkIG5hbWUgKi9cbiAgbmFtZT86IHN0cmluZztcbiAgLyoqIEhlbHAgdGV4dCAqL1xuICBoaW50Pzogc3RyaW5nO1xuICAvKiogRmllbGQgc3RhdGUgKi9cbiAgc3RhdGU/OiBDb21wb25lbnRTdGF0ZTtcblxuICAvLyA9PT0gRGF0ZSBjb25maWd1cmF0aW9uID09PVxuICAvKiogTWluaW11bSBzZWxlY3RhYmxlIGRhdGUgKElTTyBzdHJpbmcpICovXG4gIG1pbj86IHN0cmluZztcbiAgLyoqIE1heGltdW0gc2VsZWN0YWJsZSBkYXRlIChJU08gc3RyaW5nKSAqL1xuICBtYXg/OiBzdHJpbmc7XG4gIC8qKiBMb2NhbGUgZm9yIGRhdGUgZGlzcGxheSAqL1xuICBsb2NhbGU/OiBzdHJpbmc7XG4gIC8qKiBGaXJzdCBkYXkgb2Ygd2VlayAoMCA9IFN1bmRheSwgMSA9IE1vbmRheSkgKi9cbiAgZmlyc3REYXlPZldlZWs/OiBudW1iZXI7XG4gIC8qKiBEYXRlIHByZXNlbnRhdGlvbiBmb3JtYXQgKi9cbiAgcHJlc2VudGF0aW9uPzogJ2RhdGUnIHwgJ2RhdGUtdGltZScgfCAnbW9udGgnIHwgJ21vbnRoLXllYXInIHwgJ3llYXInO1xuICAvKiogQ3VzdG9tIGZvcm1hdCBvcHRpb25zICovXG4gIGZvcm1hdE9wdGlvbnM/OiB7XG4gICAgZGF0ZT86IHsgZGF0ZVN0eWxlPzogJ2Z1bGwnIHwgJ2xvbmcnIHwgJ21lZGl1bScgfCAnc2hvcnQnIH07XG4gICAgdGltZT86IHsgdGltZVN0eWxlPzogJ2Z1bGwnIHwgJ2xvbmcnIHwgJ21lZGl1bScgfCAnc2hvcnQnIH07XG4gIH07XG5cbiAgLy8gPT09IExhYmVscyA9PT1cbiAgLyoqIFN0YXJ0IGRhdGUgbGFiZWwgKi9cbiAgc3RhcnRMYWJlbD86IHN0cmluZztcbiAgLyoqIEVuZCBkYXRlIGxhYmVsICovXG4gIGVuZExhYmVsPzogc3RyaW5nO1xuICAvKiogU3RhcnQgZGF0ZSBwbGFjZWhvbGRlciAqL1xuICBzdGFydFBsYWNlaG9sZGVyPzogc3RyaW5nO1xuICAvKiogRW5kIGRhdGUgcGxhY2Vob2xkZXIgKi9cbiAgZW5kUGxhY2Vob2xkZXI/OiBzdHJpbmc7XG4gIC8qKiBEb25lIGJ1dHRvbiB0ZXh0ICovXG4gIGRvbmVUZXh0Pzogc3RyaW5nO1xuICAvKiogQ2FuY2VsIGJ1dHRvbiB0ZXh0ICovXG4gIGNhbmNlbFRleHQ/OiBzdHJpbmc7XG5cbiAgLy8gPT09IFZhbGlkYXRpb24gPT09XG4gIC8qKiBSZXF1aXJlIGJvdGggZGF0ZXMgKi9cbiAgcmVxdWlyZUJvdGg/OiBib29sZWFuO1xuICAvKiogTWluaW11bSByYW5nZSBpbiBkYXlzICovXG4gIG1pblJhbmdlRGF5cz86IG51bWJlcjtcbiAgLyoqIE1heGltdW0gcmFuZ2UgaW4gZGF5cyAqL1xuICBtYXhSYW5nZURheXM/OiBudW1iZXI7XG4gIC8qKiBEaXNhYmxlIHBhc3QgZGF0ZXMgKi9cbiAgZGlzYWJsZVBhc3REYXRlcz86IGJvb2xlYW47XG4gIC8qKiBEaXNhYmxlIGZ1dHVyZSBkYXRlcyAqL1xuICBkaXNhYmxlRnV0dXJlRGF0ZXM/OiBib29sZWFuO1xuICAvKiogU3BlY2lmaWMgZGF0ZXMgdG8gZGlzYWJsZSAqL1xuICBkaXNhYmxlZERhdGVzPzogc3RyaW5nW107XG5cbiAgLy8gPT09IERpc3BsYXkgbW9kZSA9PT1cbiAgLyoqIERpc3BsYXkgbW9kZTogJ2lubGluZScgc2hvd3MgYm90aCBwaWNrZXJzLCAnbW9kYWwnIHVzZXMgbW9kYWxzICovXG4gIGRpc3BsYXlNb2RlPzogJ2lubGluZScgfCAnbW9kYWwnO1xuICAvKiogTGF5b3V0IGRpcmVjdGlvbiAqL1xuICBsYXlvdXQ/OiAnaG9yaXpvbnRhbCcgfCAndmVydGljYWwnO1xuXG4gIC8vID09PSBTdHlsaW5nID09PVxuICAvKiogQ29tcG9uZW50IGNvbG9yICovXG4gIGNvbG9yPzogQ29sb3I7XG4gIC8qKiBDdXN0b20gQ1NTIGNsYXNzICovXG4gIGNzc0NsYXNzPzogc3RyaW5nO1xuXG4gIC8vID09PSBSZWFjdGl2ZSBjb250ZW50ID09PVxuICAvKiogQ29udGVudCBrZXkgZm9yIHJlYWN0aXZlIGxhYmVsICovXG4gIGxhYmVsQ29udGVudEtleT86IHN0cmluZztcbiAgLyoqIENvbnRlbnQga2V5IGZvciByZWFjdGl2ZSBzdGFydCBsYWJlbCAqL1xuICBzdGFydExhYmVsQ29udGVudEtleT86IHN0cmluZztcbiAgLyoqIENvbnRlbnQga2V5IGZvciByZWFjdGl2ZSBlbmQgbGFiZWwgKi9cbiAgZW5kTGFiZWxDb250ZW50S2V5Pzogc3RyaW5nO1xuICAvKiogQ29udGVudCBrZXkgZm9yIHJlYWN0aXZlIGhpbnQgKi9cbiAgaGludENvbnRlbnRLZXk/OiBzdHJpbmc7XG4gIC8qKiBDb21wb25lbnQgY2xhc3MgbmFtZSBmb3IgY29udGVudCBsb29rdXAgKi9cbiAgY29udGVudENsYXNzPzogc3RyaW5nO1xuXG4gIC8vID09PSBWYWxpZGF0aW9uIGRpc3BsYXkgPT09XG4gIC8qKiBDdXN0b20gZXJyb3IgbWVzc2FnZXMgKi9cbiAgZXJyb3JzPzogUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcbiAgLyoqIFNob3cgdmFsaWRhdGlvbiBlcnJvcnMgKi9cbiAgc2hvd0Vycm9ycz86IGJvb2xlYW47XG59XG5cbi8qKlxuICogRXZlbnQgZW1pdHRlZCB3aGVuIGRhdGUgcmFuZ2UgY2hhbmdlcy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBEYXRlUmFuZ2VDaGFuZ2VFdmVudCB7XG4gIC8qKiBEYXRlIHJhbmdlIHZhbHVlICovXG4gIHZhbHVlOiBEYXRlUmFuZ2VWYWx1ZTtcbiAgLyoqIFdoZXRoZXIgdGhlIHJhbmdlIGlzIHZhbGlkICovXG4gIGlzVmFsaWQ6IGJvb2xlYW47XG4gIC8qKiBOdW1iZXIgb2YgZGF5cyBpbiB0aGUgcmFuZ2UgKi9cbiAgZGF5Q291bnQ6IG51bWJlciB8IG51bGw7XG59XG4iXX0=
|
|
@@ -17,13 +17,13 @@ import * as i1 from "@angular/forms";
|
|
|
17
17
|
export class EmailInputComponent {
|
|
18
18
|
constructor() { }
|
|
19
19
|
ngOnInit() { }
|
|
20
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
21
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
20
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: EmailInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
21
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: EmailInputComponent, isStandalone: true, selector: "val-email-input", inputs: { props: "props" }, ngImport: i0, template: ` <ion-input [formControl]="props.control" type="email" [placeholder]="props.placeholder"></ion-input> `, isInline: true, styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: IonInput, selector: "ion-input", inputs: ["accept", "autocapitalize", "autocomplete", "autocorrect", "autofocus", "clearInput", "clearOnEdit", "color", "counter", "counterFormatter", "debounce", "disabled", "enterkeyhint", "errorText", "fill", "helperText", "inputmode", "label", "labelPlacement", "max", "maxlength", "min", "minlength", "mode", "multiple", "name", "pattern", "placeholder", "readonly", "required", "shape", "size", "spellcheck", "step", "type", "value"] }] }); }
|
|
22
22
|
}
|
|
23
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
23
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: EmailInputComponent, decorators: [{
|
|
24
24
|
type: Component,
|
|
25
25
|
args: [{ selector: 'val-email-input', standalone: true, imports: [CommonModule, ReactiveFormsModule, IonInput], template: ` <ion-input [formControl]="props.control" type="email" [placeholder]="props.placeholder"></ion-input> ` }]
|
|
26
26
|
}], ctorParameters: () => [], propDecorators: { props: [{
|
|
27
27
|
type: Input
|
|
28
28
|
}] } });
|
|
29
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
29
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW1haWwtaW5wdXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL21vbGVjdWxlcy9lbWFpbC1pbnB1dC9lbWFpbC1pbnB1dC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQ3pELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQzs7O0FBVXJEOzs7Ozs7Ozs7R0FTRztBQUNILE1BQU0sT0FBTyxtQkFBbUI7SUFTOUIsZ0JBQWUsQ0FBQztJQUVoQixRQUFRLEtBQUksQ0FBQzsrR0FYRixtQkFBbUI7bUdBQW5CLG1CQUFtQix1R0FicEIsd0dBQXdHLHlFQUR4RyxZQUFZLDhCQUFFLG1CQUFtQiwwVEFBRSxRQUFROzs0RkFjMUMsbUJBQW1CO2tCQWpCL0IsU0FBUzsrQkFDRSxpQkFBaUIsY0FDZixJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsbUJBQW1CLEVBQUUsUUFBUSxDQUFDLFlBQzVDLHdHQUF3Rzt3REFvQnpHLEtBQUs7c0JBQWIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBJb25JbnB1dCB9IGZyb20gJ0Bpb25pYy9hbmd1bGFyL3N0YW5kYWxvbmUnO1xuaW1wb3J0IHsgSW5wdXRNZXRhZGF0YSB9IGZyb20gJy4uLy4uL3R5cGVzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmFsLWVtYWlsLWlucHV0JyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZSwgSW9uSW5wdXRdLFxuICB0ZW1wbGF0ZTogYCA8aW9uLWlucHV0IFtmb3JtQ29udHJvbF09XCJwcm9wcy5jb250cm9sXCIgdHlwZT1cImVtYWlsXCIgW3BsYWNlaG9sZGVyXT1cInByb3BzLnBsYWNlaG9sZGVyXCI+PC9pb24taW5wdXQ+IGAsXG4gIHN0eWxlVXJsczogWycuL2VtYWlsLWlucHV0LmNvbXBvbmVudC5zY3NzJ10sXG59KVxuLyoqXG4gKiB2YWwtZW1haWwtaW5wdXRcbiAqXG4gKiBBbiBlbWFpbCBpbnB1dCBmaWVsZCBpbnRlZ3JhdGVkIHdpdGggQW5ndWxhciBmb3Jtcy5cbiAqXG4gKiBAZXhhbXBsZVxuICogPHZhbC1lbWFpbC1pbnB1dCBbcHJvcHNdPVwieyBjb250cm9sOiBteUNvbnRyb2wsIHBsYWNlaG9sZGVyOiAnRW50ZXIgeW91ciBlbWFpbCcgfVwiPjwvdmFsLWVtYWlsLWlucHV0PlxuICpcbiAqIEBpbnB1dCBwcm9wczogSW5wdXRNZXRhZGF0YSAtIENvbmZpZ3VyYXRpb24gZm9yIHRoZSBpbnB1dCAoZm9ybSBjb250cm9sLCBwbGFjZWhvbGRlciwgZXRjLilcbiAqL1xuZXhwb3J0IGNsYXNzIEVtYWlsSW5wdXRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICAvKipcbiAgICogSW5wdXQgY29uZmlndXJhdGlvbiBvYmplY3QuXG4gICAqIEB0eXBlIHtJbnB1dE1ldGFkYXRhfVxuICAgKiBAcHJvcGVydHkgY29udHJvbCAtIFRoZSBBbmd1bGFyIEZvcm1Db250cm9sIGZvciB0aGUgaW5wdXQuXG4gICAqIEBwcm9wZXJ0eSBwbGFjZWhvbGRlciAtIFRoZSBwbGFjZWhvbGRlciB0ZXh0LlxuICAgKi9cbiAgQElucHV0KCkgcHJvcHM6IElucHV0TWV0YWRhdGE7XG5cbiAgY29uc3RydWN0b3IoKSB7fVxuXG4gIG5nT25Jbml0KCkge31cbn1cbiJdfQ==
|