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
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
import { Component, Input, Output, EventEmitter } from '@angular/core';
|
|
2
|
+
import { IonCard, IonCardContent, IonIcon, IonSkeletonText } from '@ionic/angular/standalone';
|
|
3
|
+
import { CommonModule } from '@angular/common';
|
|
4
|
+
import { addIcons } from 'ionicons';
|
|
5
|
+
import { trendingUp, trendingDown, remove, analytics, people, cash, cart, eye, heart, star } from 'ionicons/icons';
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
addIcons({ trendingUp, trendingDown, remove, analytics, people, cash, cart, eye, heart, star });
|
|
8
|
+
/**
|
|
9
|
+
* val-stats-card
|
|
10
|
+
*
|
|
11
|
+
* A card component for displaying statistics and KPIs.
|
|
12
|
+
* Supports trends, icons, and various styling options.
|
|
13
|
+
*
|
|
14
|
+
* @example Basic usage
|
|
15
|
+
* <val-stats-card [props]="{
|
|
16
|
+
* title: 'Total Users',
|
|
17
|
+
* value: 12500,
|
|
18
|
+
* icon: 'people',
|
|
19
|
+
* color: 'primary'
|
|
20
|
+
* }"></val-stats-card>
|
|
21
|
+
*
|
|
22
|
+
* @example With trend
|
|
23
|
+
* <val-stats-card [props]="{
|
|
24
|
+
* title: 'Revenue',
|
|
25
|
+
* value: 45200,
|
|
26
|
+
* prefix: '$',
|
|
27
|
+
* icon: 'cash',
|
|
28
|
+
* color: 'success',
|
|
29
|
+
* background: 'gradient',
|
|
30
|
+
* trend: { value: 12.5, direction: 'up', label: 'vs last month' }
|
|
31
|
+
* }"></val-stats-card>
|
|
32
|
+
*
|
|
33
|
+
* @input props: StatsCardMetadata - Configuration for the stats card
|
|
34
|
+
* @output cardClick: void - Emits when card is clicked
|
|
35
|
+
*/
|
|
36
|
+
export class StatsCardComponent {
|
|
37
|
+
constructor() {
|
|
38
|
+
this.cardClick = new EventEmitter();
|
|
39
|
+
this.Math = Math;
|
|
40
|
+
}
|
|
41
|
+
getCardColor() {
|
|
42
|
+
const color = this.props.color || 'primary';
|
|
43
|
+
return `var(--ion-color-${color})`;
|
|
44
|
+
}
|
|
45
|
+
getBackgroundClass() {
|
|
46
|
+
const bg = this.props.background || 'light';
|
|
47
|
+
return `background-${bg}`;
|
|
48
|
+
}
|
|
49
|
+
getTrendClass() {
|
|
50
|
+
const direction = this.props.trend?.direction || 'neutral';
|
|
51
|
+
const invert = this.props.trend?.invertColors;
|
|
52
|
+
if (direction === 'neutral')
|
|
53
|
+
return 'trend-neutral';
|
|
54
|
+
if (direction === 'up')
|
|
55
|
+
return invert ? 'trend-down' : 'trend-up';
|
|
56
|
+
return invert ? 'trend-up' : 'trend-down';
|
|
57
|
+
}
|
|
58
|
+
getTrendIcon() {
|
|
59
|
+
const direction = this.props.trend?.direction || 'neutral';
|
|
60
|
+
if (direction === 'up')
|
|
61
|
+
return 'trending-up';
|
|
62
|
+
if (direction === 'down')
|
|
63
|
+
return 'trending-down';
|
|
64
|
+
return 'remove';
|
|
65
|
+
}
|
|
66
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: StatsCardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
67
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: StatsCardComponent, isStandalone: true, selector: "val-stats-card", inputs: { props: "props" }, outputs: { cardClick: "cardClick" }, ngImport: i0, template: `
|
|
68
|
+
<ion-card
|
|
69
|
+
class="stats-card"
|
|
70
|
+
[class]="getBackgroundClass()"
|
|
71
|
+
[style.--card-color]="getCardColor()"
|
|
72
|
+
(click)="cardClick.emit()"
|
|
73
|
+
>
|
|
74
|
+
<ion-card-content>
|
|
75
|
+
<div class="stats-header">
|
|
76
|
+
<span class="stats-title">{{ props.title }}</span>
|
|
77
|
+
@if (props.icon) {
|
|
78
|
+
<ion-icon [name]="props.icon" class="stats-icon"></ion-icon>
|
|
79
|
+
}
|
|
80
|
+
</div>
|
|
81
|
+
|
|
82
|
+
<div class="stats-value">
|
|
83
|
+
@if (props.loading) {
|
|
84
|
+
<ion-skeleton-text [animated]="true" style="width: 60%; height: 32px;"></ion-skeleton-text>
|
|
85
|
+
} @else {
|
|
86
|
+
@if (props.prefix) {
|
|
87
|
+
<span class="prefix">{{ props.prefix }}</span>
|
|
88
|
+
}
|
|
89
|
+
<span class="value">{{ props.value }}</span>
|
|
90
|
+
@if (props.suffix) {
|
|
91
|
+
<span class="suffix">{{ props.suffix }}</span>
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
</div>
|
|
95
|
+
|
|
96
|
+
@if (props.trend && !props.loading) {
|
|
97
|
+
<div class="stats-trend" [class]="getTrendClass()">
|
|
98
|
+
<ion-icon [name]="getTrendIcon()"></ion-icon>
|
|
99
|
+
<span class="trend-value">{{ Math.abs(props.trend.value) }}%</span>
|
|
100
|
+
@if (props.trend.label) {
|
|
101
|
+
<span class="trend-label">{{ props.trend.label }}</span>
|
|
102
|
+
}
|
|
103
|
+
</div>
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
@if (props.footer && !props.loading) {
|
|
107
|
+
<div class="stats-footer">{{ props.footer }}</div>
|
|
108
|
+
}
|
|
109
|
+
</ion-card-content>
|
|
110
|
+
</ion-card>
|
|
111
|
+
`, isInline: true, styles: [":host{display:block}.stats-card{margin:0;border-radius:12px;cursor:pointer;transition:transform .2s,box-shadow .2s}.stats-card:hover{transform:translateY(-2px);box-shadow:0 8px 24px #0000001f}.stats-card.background-light{--background: var(--ion-color-light)}.stats-card.background-light .stats-title,.stats-card.background-light .stats-footer{color:var(--ion-color-medium)}.stats-card.background-light .stats-value{color:var(--ion-text-color)}.stats-card.background-light .stats-icon{color:var(--card-color);opacity:.8}.stats-card.background-solid{--background: var(--card-color)}.stats-card.background-solid .stats-title,.stats-card.background-solid .stats-footer,.stats-card.background-solid .stats-value,.stats-card.background-solid .stats-icon{color:#fff}.stats-card.background-solid .stats-title,.stats-card.background-solid .stats-footer{opacity:.9}.stats-card.background-gradient{--background: linear-gradient(135deg, var(--card-color), var(--card-color-shade, var(--card-color)))}.stats-card.background-gradient .stats-title,.stats-card.background-gradient .stats-footer,.stats-card.background-gradient .stats-value,.stats-card.background-gradient .stats-icon{color:#fff}.stats-card.background-gradient .stats-title,.stats-card.background-gradient .stats-footer{opacity:.9}ion-card-content{padding:16px}.stats-header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:8px}.stats-title{font-size:13px;font-weight:500;text-transform:uppercase;letter-spacing:.5px}.stats-icon{font-size:24px}.stats-value{font-size:28px;font-weight:700;line-height:1.2;margin-bottom:8px}.stats-value .prefix,.stats-value .suffix{font-size:18px;font-weight:500;opacity:.8}.stats-value .prefix{margin-right:2px}.stats-value .suffix{margin-left:4px}.stats-trend{display:inline-flex;align-items:center;gap:4px;font-size:13px;font-weight:500;padding:4px 8px;border-radius:12px;margin-bottom:8px}.stats-trend ion-icon{font-size:16px}.stats-trend.trend-up{background-color:rgba(var(--ion-color-success-rgb),.15);color:var(--ion-color-success)}.stats-trend.trend-down{background-color:rgba(var(--ion-color-danger-rgb),.15);color:var(--ion-color-danger)}.stats-trend.trend-neutral{background-color:rgba(var(--ion-color-medium-rgb),.15);color:var(--ion-color-medium)}.stats-trend .trend-label{font-weight:400;opacity:.8;margin-left:4px}.stats-footer{font-size:12px;margin-top:4px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: IonCard, selector: "ion-card", inputs: ["button", "color", "disabled", "download", "href", "mode", "rel", "routerAnimation", "routerDirection", "target", "type"] }, { kind: "component", type: IonCardContent, selector: "ion-card-content", inputs: ["mode"] }, { kind: "component", type: IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: IonSkeletonText, selector: "ion-skeleton-text", inputs: ["animated"] }] }); }
|
|
112
|
+
}
|
|
113
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: StatsCardComponent, decorators: [{
|
|
114
|
+
type: Component,
|
|
115
|
+
args: [{ selector: 'val-stats-card', standalone: true, imports: [CommonModule, IonCard, IonCardContent, IonIcon, IonSkeletonText], template: `
|
|
116
|
+
<ion-card
|
|
117
|
+
class="stats-card"
|
|
118
|
+
[class]="getBackgroundClass()"
|
|
119
|
+
[style.--card-color]="getCardColor()"
|
|
120
|
+
(click)="cardClick.emit()"
|
|
121
|
+
>
|
|
122
|
+
<ion-card-content>
|
|
123
|
+
<div class="stats-header">
|
|
124
|
+
<span class="stats-title">{{ props.title }}</span>
|
|
125
|
+
@if (props.icon) {
|
|
126
|
+
<ion-icon [name]="props.icon" class="stats-icon"></ion-icon>
|
|
127
|
+
}
|
|
128
|
+
</div>
|
|
129
|
+
|
|
130
|
+
<div class="stats-value">
|
|
131
|
+
@if (props.loading) {
|
|
132
|
+
<ion-skeleton-text [animated]="true" style="width: 60%; height: 32px;"></ion-skeleton-text>
|
|
133
|
+
} @else {
|
|
134
|
+
@if (props.prefix) {
|
|
135
|
+
<span class="prefix">{{ props.prefix }}</span>
|
|
136
|
+
}
|
|
137
|
+
<span class="value">{{ props.value }}</span>
|
|
138
|
+
@if (props.suffix) {
|
|
139
|
+
<span class="suffix">{{ props.suffix }}</span>
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
</div>
|
|
143
|
+
|
|
144
|
+
@if (props.trend && !props.loading) {
|
|
145
|
+
<div class="stats-trend" [class]="getTrendClass()">
|
|
146
|
+
<ion-icon [name]="getTrendIcon()"></ion-icon>
|
|
147
|
+
<span class="trend-value">{{ Math.abs(props.trend.value) }}%</span>
|
|
148
|
+
@if (props.trend.label) {
|
|
149
|
+
<span class="trend-label">{{ props.trend.label }}</span>
|
|
150
|
+
}
|
|
151
|
+
</div>
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
@if (props.footer && !props.loading) {
|
|
155
|
+
<div class="stats-footer">{{ props.footer }}</div>
|
|
156
|
+
}
|
|
157
|
+
</ion-card-content>
|
|
158
|
+
</ion-card>
|
|
159
|
+
`, styles: [":host{display:block}.stats-card{margin:0;border-radius:12px;cursor:pointer;transition:transform .2s,box-shadow .2s}.stats-card:hover{transform:translateY(-2px);box-shadow:0 8px 24px #0000001f}.stats-card.background-light{--background: var(--ion-color-light)}.stats-card.background-light .stats-title,.stats-card.background-light .stats-footer{color:var(--ion-color-medium)}.stats-card.background-light .stats-value{color:var(--ion-text-color)}.stats-card.background-light .stats-icon{color:var(--card-color);opacity:.8}.stats-card.background-solid{--background: var(--card-color)}.stats-card.background-solid .stats-title,.stats-card.background-solid .stats-footer,.stats-card.background-solid .stats-value,.stats-card.background-solid .stats-icon{color:#fff}.stats-card.background-solid .stats-title,.stats-card.background-solid .stats-footer{opacity:.9}.stats-card.background-gradient{--background: linear-gradient(135deg, var(--card-color), var(--card-color-shade, var(--card-color)))}.stats-card.background-gradient .stats-title,.stats-card.background-gradient .stats-footer,.stats-card.background-gradient .stats-value,.stats-card.background-gradient .stats-icon{color:#fff}.stats-card.background-gradient .stats-title,.stats-card.background-gradient .stats-footer{opacity:.9}ion-card-content{padding:16px}.stats-header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:8px}.stats-title{font-size:13px;font-weight:500;text-transform:uppercase;letter-spacing:.5px}.stats-icon{font-size:24px}.stats-value{font-size:28px;font-weight:700;line-height:1.2;margin-bottom:8px}.stats-value .prefix,.stats-value .suffix{font-size:18px;font-weight:500;opacity:.8}.stats-value .prefix{margin-right:2px}.stats-value .suffix{margin-left:4px}.stats-trend{display:inline-flex;align-items:center;gap:4px;font-size:13px;font-weight:500;padding:4px 8px;border-radius:12px;margin-bottom:8px}.stats-trend ion-icon{font-size:16px}.stats-trend.trend-up{background-color:rgba(var(--ion-color-success-rgb),.15);color:var(--ion-color-success)}.stats-trend.trend-down{background-color:rgba(var(--ion-color-danger-rgb),.15);color:var(--ion-color-danger)}.stats-trend.trend-neutral{background-color:rgba(var(--ion-color-medium-rgb),.15);color:var(--ion-color-medium)}.stats-trend .trend-label{font-weight:400;opacity:.8;margin-left:4px}.stats-footer{font-size:12px;margin-top:4px}\n"] }]
|
|
160
|
+
}], propDecorators: { props: [{
|
|
161
|
+
type: Input
|
|
162
|
+
}], cardClick: [{
|
|
163
|
+
type: Output
|
|
164
|
+
}] } });
|
|
165
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhdHMtY2FyZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvbW9sZWN1bGVzL3N0YXRzLWNhcmQvc3RhdHMtY2FyZC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2RSxPQUFPLEVBQUUsT0FBTyxFQUFFLGNBQWMsRUFBRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDOUYsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRS9DLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDcEMsT0FBTyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxNQUFNLGdCQUFnQixDQUFDOztBQUVuSCxRQUFRLENBQUMsRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0FBcURoRzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBMkJHO0FBQ0gsTUFBTSxPQUFPLGtCQUFrQjtJQS9FL0I7UUFrRlksY0FBUyxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFFL0MsU0FBSSxHQUFHLElBQUksQ0FBQztLQTJCYjtJQXpCQyxZQUFZO1FBQ1YsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLElBQUksU0FBUyxDQUFDO1FBQzVDLE9BQU8sbUJBQW1CLEtBQUssR0FBRyxDQUFDO0lBQ3JDLENBQUM7SUFFRCxrQkFBa0I7UUFDaEIsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLElBQUksT0FBTyxDQUFDO1FBQzVDLE9BQU8sY0FBYyxFQUFFLEVBQUUsQ0FBQztJQUM1QixDQUFDO0lBRUQsYUFBYTtRQUNYLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLFNBQVMsSUFBSSxTQUFTLENBQUM7UUFDM0QsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsWUFBWSxDQUFDO1FBRTlDLElBQUksU0FBUyxLQUFLLFNBQVM7WUFBRSxPQUFPLGVBQWUsQ0FBQztRQUNwRCxJQUFJLFNBQVMsS0FBSyxJQUFJO1lBQUUsT0FBTyxNQUFNLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDO1FBQ2xFLE9BQU8sTUFBTSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQztJQUM1QyxDQUFDO0lBRUQsWUFBWTtRQUNWLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLFNBQVMsSUFBSSxTQUFTLENBQUM7UUFDM0QsSUFBSSxTQUFTLEtBQUssSUFBSTtZQUFFLE9BQU8sYUFBYSxDQUFDO1FBQzdDLElBQUksU0FBUyxLQUFLLE1BQU07WUFBRSxPQUFPLGVBQWUsQ0FBQztRQUNqRCxPQUFPLFFBQVEsQ0FBQztJQUNsQixDQUFDOytHQS9CVSxrQkFBa0I7bUdBQWxCLGtCQUFrQiwySUEzRW5COzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTRDVCw2NUVBN0NTLFlBQVksK0JBQUUsT0FBTyx5TEFBRSxjQUFjLCtFQUFFLE9BQU8sMkpBQUUsZUFBZTs7NEZBNEU5RCxrQkFBa0I7a0JBL0U5QixTQUFTOytCQUNFLGdCQUFnQixjQUNkLElBQUksV0FDUCxDQUFDLFlBQVksRUFBRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE9BQU8sRUFBRSxlQUFlLENBQUMsWUFDaEU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBNENUOzhCQWdDUSxLQUFLO3NCQUFiLEtBQUs7Z0JBRUksU0FBUztzQkFBbEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJb25DYXJkLCBJb25DYXJkQ29udGVudCwgSW9uSWNvbiwgSW9uU2tlbGV0b25UZXh0IH0gZnJvbSAnQGlvbmljL2FuZ3VsYXIvc3RhbmRhbG9uZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgU3RhdHNDYXJkTWV0YWRhdGEgfSBmcm9tICcuL3R5cGVzJztcbmltcG9ydCB7IGFkZEljb25zIH0gZnJvbSAnaW9uaWNvbnMnO1xuaW1wb3J0IHsgdHJlbmRpbmdVcCwgdHJlbmRpbmdEb3duLCByZW1vdmUsIGFuYWx5dGljcywgcGVvcGxlLCBjYXNoLCBjYXJ0LCBleWUsIGhlYXJ0LCBzdGFyIH0gZnJvbSAnaW9uaWNvbnMvaWNvbnMnO1xuXG5hZGRJY29ucyh7IHRyZW5kaW5nVXAsIHRyZW5kaW5nRG93biwgcmVtb3ZlLCBhbmFseXRpY3MsIHBlb3BsZSwgY2FzaCwgY2FydCwgZXllLCBoZWFydCwgc3RhciB9KTtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmFsLXN0YXRzLWNhcmQnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBJb25DYXJkLCBJb25DYXJkQ29udGVudCwgSW9uSWNvbiwgSW9uU2tlbGV0b25UZXh0XSxcbiAgdGVtcGxhdGU6IGBcbiAgICA8aW9uLWNhcmRcbiAgICAgIGNsYXNzPVwic3RhdHMtY2FyZFwiXG4gICAgICBbY2xhc3NdPVwiZ2V0QmFja2dyb3VuZENsYXNzKClcIlxuICAgICAgW3N0eWxlLi0tY2FyZC1jb2xvcl09XCJnZXRDYXJkQ29sb3IoKVwiXG4gICAgICAoY2xpY2spPVwiY2FyZENsaWNrLmVtaXQoKVwiXG4gICAgPlxuICAgICAgPGlvbi1jYXJkLWNvbnRlbnQ+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJzdGF0cy1oZWFkZXJcIj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInN0YXRzLXRpdGxlXCI+e3sgcHJvcHMudGl0bGUgfX08L3NwYW4+XG4gICAgICAgICAgQGlmIChwcm9wcy5pY29uKSB7XG4gICAgICAgICAgICA8aW9uLWljb24gW25hbWVdPVwicHJvcHMuaWNvblwiIGNsYXNzPVwic3RhdHMtaWNvblwiPjwvaW9uLWljb24+XG4gICAgICAgICAgfVxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwic3RhdHMtdmFsdWVcIj5cbiAgICAgICAgICBAaWYgKHByb3BzLmxvYWRpbmcpIHtcbiAgICAgICAgICAgIDxpb24tc2tlbGV0b24tdGV4dCBbYW5pbWF0ZWRdPVwidHJ1ZVwiIHN0eWxlPVwid2lkdGg6IDYwJTsgaGVpZ2h0OiAzMnB4O1wiPjwvaW9uLXNrZWxldG9uLXRleHQ+XG4gICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICBAaWYgKHByb3BzLnByZWZpeCkge1xuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInByZWZpeFwiPnt7IHByb3BzLnByZWZpeCB9fTwvc3Bhbj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidmFsdWVcIj57eyBwcm9wcy52YWx1ZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgIEBpZiAocHJvcHMuc3VmZml4KSB7XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3VmZml4XCI+e3sgcHJvcHMuc3VmZml4IH19PC9zcGFuPlxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgQGlmIChwcm9wcy50cmVuZCAmJiAhcHJvcHMubG9hZGluZykge1xuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdGF0cy10cmVuZFwiIFtjbGFzc109XCJnZXRUcmVuZENsYXNzKClcIj5cbiAgICAgICAgICAgIDxpb24taWNvbiBbbmFtZV09XCJnZXRUcmVuZEljb24oKVwiPjwvaW9uLWljb24+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRyZW5kLXZhbHVlXCI+e3sgTWF0aC5hYnMocHJvcHMudHJlbmQudmFsdWUpIH19JTwvc3Bhbj5cbiAgICAgICAgICAgIEBpZiAocHJvcHMudHJlbmQubGFiZWwpIHtcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0cmVuZC1sYWJlbFwiPnt7IHByb3BzLnRyZW5kLmxhYmVsIH19PC9zcGFuPlxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICB9XG5cbiAgICAgICAgQGlmIChwcm9wcy5mb290ZXIgJiYgIXByb3BzLmxvYWRpbmcpIHtcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic3RhdHMtZm9vdGVyXCI+e3sgcHJvcHMuZm9vdGVyIH19PC9kaXY+XG4gICAgICAgIH1cbiAgICAgIDwvaW9uLWNhcmQtY29udGVudD5cbiAgICA8L2lvbi1jYXJkPlxuICBgLFxuICBzdHlsZVVybHM6IFsnLi9zdGF0cy1jYXJkLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuLyoqXG4gKiB2YWwtc3RhdHMtY2FyZFxuICpcbiAqIEEgY2FyZCBjb21wb25lbnQgZm9yIGRpc3BsYXlpbmcgc3RhdGlzdGljcyBhbmQgS1BJcy5cbiAqIFN1cHBvcnRzIHRyZW5kcywgaWNvbnMsIGFuZCB2YXJpb3VzIHN0eWxpbmcgb3B0aW9ucy5cbiAqXG4gKiBAZXhhbXBsZSBCYXNpYyB1c2FnZVxuICogPHZhbC1zdGF0cy1jYXJkIFtwcm9wc109XCJ7XG4gKiAgIHRpdGxlOiAnVG90YWwgVXNlcnMnLFxuICogICB2YWx1ZTogMTI1MDAsXG4gKiAgIGljb246ICdwZW9wbGUnLFxuICogICBjb2xvcjogJ3ByaW1hcnknXG4gKiB9XCI+PC92YWwtc3RhdHMtY2FyZD5cbiAqXG4gKiBAZXhhbXBsZSBXaXRoIHRyZW5kXG4gKiA8dmFsLXN0YXRzLWNhcmQgW3Byb3BzXT1cIntcbiAqICAgdGl0bGU6ICdSZXZlbnVlJyxcbiAqICAgdmFsdWU6IDQ1MjAwLFxuICogICBwcmVmaXg6ICckJyxcbiAqICAgaWNvbjogJ2Nhc2gnLFxuICogICBjb2xvcjogJ3N1Y2Nlc3MnLFxuICogICBiYWNrZ3JvdW5kOiAnZ3JhZGllbnQnLFxuICogICB0cmVuZDogeyB2YWx1ZTogMTIuNSwgZGlyZWN0aW9uOiAndXAnLCBsYWJlbDogJ3ZzIGxhc3QgbW9udGgnIH1cbiAqIH1cIj48L3ZhbC1zdGF0cy1jYXJkPlxuICpcbiAqIEBpbnB1dCBwcm9wczogU3RhdHNDYXJkTWV0YWRhdGEgLSBDb25maWd1cmF0aW9uIGZvciB0aGUgc3RhdHMgY2FyZFxuICogQG91dHB1dCBjYXJkQ2xpY2s6IHZvaWQgLSBFbWl0cyB3aGVuIGNhcmQgaXMgY2xpY2tlZFxuICovXG5leHBvcnQgY2xhc3MgU3RhdHNDYXJkQ29tcG9uZW50IHtcbiAgQElucHV0KCkgcHJvcHM6IFN0YXRzQ2FyZE1ldGFkYXRhO1xuXG4gIEBPdXRwdXQoKSBjYXJkQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgTWF0aCA9IE1hdGg7XG5cbiAgZ2V0Q2FyZENvbG9yKCk6IHN0cmluZyB7XG4gICAgY29uc3QgY29sb3IgPSB0aGlzLnByb3BzLmNvbG9yIHx8ICdwcmltYXJ5JztcbiAgICByZXR1cm4gYHZhcigtLWlvbi1jb2xvci0ke2NvbG9yfSlgO1xuICB9XG5cbiAgZ2V0QmFja2dyb3VuZENsYXNzKCk6IHN0cmluZyB7XG4gICAgY29uc3QgYmcgPSB0aGlzLnByb3BzLmJhY2tncm91bmQgfHwgJ2xpZ2h0JztcbiAgICByZXR1cm4gYGJhY2tncm91bmQtJHtiZ31gO1xuICB9XG5cbiAgZ2V0VHJlbmRDbGFzcygpOiBzdHJpbmcge1xuICAgIGNvbnN0IGRpcmVjdGlvbiA9IHRoaXMucHJvcHMudHJlbmQ/LmRpcmVjdGlvbiB8fCAnbmV1dHJhbCc7XG4gICAgY29uc3QgaW52ZXJ0ID0gdGhpcy5wcm9wcy50cmVuZD8uaW52ZXJ0Q29sb3JzO1xuXG4gICAgaWYgKGRpcmVjdGlvbiA9PT0gJ25ldXRyYWwnKSByZXR1cm4gJ3RyZW5kLW5ldXRyYWwnO1xuICAgIGlmIChkaXJlY3Rpb24gPT09ICd1cCcpIHJldHVybiBpbnZlcnQgPyAndHJlbmQtZG93bicgOiAndHJlbmQtdXAnO1xuICAgIHJldHVybiBpbnZlcnQgPyAndHJlbmQtdXAnIDogJ3RyZW5kLWRvd24nO1xuICB9XG5cbiAgZ2V0VHJlbmRJY29uKCk6IHN0cmluZyB7XG4gICAgY29uc3QgZGlyZWN0aW9uID0gdGhpcy5wcm9wcy50cmVuZD8uZGlyZWN0aW9uIHx8ICduZXV0cmFsJztcbiAgICBpZiAoZGlyZWN0aW9uID09PSAndXAnKSByZXR1cm4gJ3RyZW5kaW5nLXVwJztcbiAgICBpZiAoZGlyZWN0aW9uID09PSAnZG93bicpIHJldHVybiAndHJlbmRpbmctZG93bic7XG4gICAgcmV0dXJuICdyZW1vdmUnO1xuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvbW9sZWN1bGVzL3N0YXRzLWNhcmQvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbG9yIH0gZnJvbSAnQGlvbmljL2NvcmUnO1xuXG4vKipcbiAqIFRyZW5kIGNvbmZpZ3VyYXRpb24gZm9yIHN0YXRzIGNhcmQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU3RhdHNUcmVuZCB7XG4gIC8qKiBUcmVuZCB2YWx1ZSAocGVyY2VudGFnZSBvciBhYnNvbHV0ZSkgKi9cbiAgdmFsdWU6IG51bWJlcjtcbiAgLyoqIFRyZW5kIGRpcmVjdGlvbiAqL1xuICBkaXJlY3Rpb246ICd1cCcgfCAnZG93bicgfCAnbmV1dHJhbCc7XG4gIC8qKiBUcmVuZCBsYWJlbCAoZS5nLiwgXCJ2cyBsYXN0IG1vbnRoXCIpICovXG4gIGxhYmVsPzogc3RyaW5nO1xuICAvKiogSW52ZXJ0IGNvbG9ycyAodXA9YmFkLCBkb3duPWdvb2QpICovXG4gIGludmVydENvbG9ycz86IGJvb2xlYW47XG59XG5cbi8qKlxuICogTWV0YWRhdGEgZm9yIHRoZSBzdGF0cyBjYXJkIGNvbXBvbmVudC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTdGF0c0NhcmRNZXRhZGF0YSB7XG4gIC8qKiBTdGF0IHRpdGxlL2xhYmVsICovXG4gIHRpdGxlOiBzdHJpbmc7XG4gIC8qKiBNYWluIHN0YXQgdmFsdWUgKi9cbiAgdmFsdWU6IHN0cmluZyB8IG51bWJlcjtcbiAgLyoqIFZhbHVlIHByZWZpeCAoZS5nLiwgXCIkXCIsIFwi4oKsXCIpICovXG4gIHByZWZpeD86IHN0cmluZztcbiAgLyoqIFZhbHVlIHN1ZmZpeCAoZS5nLiwgXCIlXCIsIFwidXNlcnNcIikgKi9cbiAgc3VmZml4Pzogc3RyaW5nO1xuICAvKiogSWNvbiBuYW1lICovXG4gIGljb24/OiBzdHJpbmc7XG4gIC8qKiBDYXJkIGNvbG9yICovXG4gIGNvbG9yPzogQ29sb3I7XG4gIC8qKiBCYWNrZ3JvdW5kIHN0eWxlICovXG4gIGJhY2tncm91bmQ/OiAnc29saWQnIHwgJ2dyYWRpZW50JyB8ICdsaWdodCc7XG4gIC8qKiBUcmVuZCBpbmRpY2F0b3IgKi9cbiAgdHJlbmQ/OiBTdGF0c1RyZW5kO1xuICAvKiogRm9vdGVyIHRleHQgKi9cbiAgZm9vdGVyPzogc3RyaW5nO1xuICAvKiogTG9hZGluZyBzdGF0ZSAqL1xuICBsb2FkaW5nPzogYm9vbGVhbjtcbiAgLyoqIFVuaXF1ZSB0b2tlbiBpZGVudGlmaWVyICovXG4gIHRva2VuPzogc3RyaW5nO1xufVxuIl19
|
|
@@ -0,0 +1,239 @@
|
|
|
1
|
+
import { Component, Input, inject, Output, EventEmitter } from '@angular/core';
|
|
2
|
+
import { IonIcon } from '@ionic/angular/standalone';
|
|
3
|
+
import { CommonModule } from '@angular/common';
|
|
4
|
+
import { LangService } from '../../../services/lang-provider/lang-provider.service';
|
|
5
|
+
import { addIcons } from 'ionicons';
|
|
6
|
+
import { checkmark, close, ellipse } from 'ionicons/icons';
|
|
7
|
+
import * as i0 from "@angular/core";
|
|
8
|
+
addIcons({ checkmark, close, ellipse });
|
|
9
|
+
/**
|
|
10
|
+
* val-stepper
|
|
11
|
+
*
|
|
12
|
+
* A stepper component for multi-step processes.
|
|
13
|
+
* Supports horizontal and vertical orientations.
|
|
14
|
+
*
|
|
15
|
+
* @example Basic usage
|
|
16
|
+
* <val-stepper [props]="{
|
|
17
|
+
* steps: [
|
|
18
|
+
* { value: 'info', label: 'Personal Info' },
|
|
19
|
+
* { value: 'address', label: 'Address' },
|
|
20
|
+
* { value: 'payment', label: 'Payment' },
|
|
21
|
+
* { value: 'confirm', label: 'Confirm' }
|
|
22
|
+
* ],
|
|
23
|
+
* currentIndex: 1
|
|
24
|
+
* }" (stepChange)="onStepChange($event)"></val-stepper>
|
|
25
|
+
*
|
|
26
|
+
* @example Vertical with descriptions
|
|
27
|
+
* <val-stepper [props]="{
|
|
28
|
+
* steps: [
|
|
29
|
+
* { value: 'step1', label: 'Step 1', description: 'Description here' },
|
|
30
|
+
* { value: 'step2', label: 'Step 2', optional: true }
|
|
31
|
+
* ],
|
|
32
|
+
* orientation: 'vertical',
|
|
33
|
+
* currentIndex: 0
|
|
34
|
+
* }"></val-stepper>
|
|
35
|
+
*
|
|
36
|
+
* @input props: StepperMetadata - Configuration for the stepper
|
|
37
|
+
* @output stepChange: StepChangeEvent - Emits when step changes
|
|
38
|
+
*/
|
|
39
|
+
export class StepperComponent {
|
|
40
|
+
constructor() {
|
|
41
|
+
this.stepChange = new EventEmitter();
|
|
42
|
+
this.langService = inject(LangService);
|
|
43
|
+
this.subscriptions = [];
|
|
44
|
+
this.stepLabels = new Map();
|
|
45
|
+
}
|
|
46
|
+
ngOnInit() {
|
|
47
|
+
this.setupLabels();
|
|
48
|
+
}
|
|
49
|
+
ngOnDestroy() {
|
|
50
|
+
this.subscriptions.forEach((sub) => sub.unsubscribe());
|
|
51
|
+
}
|
|
52
|
+
getCurrentIndex() {
|
|
53
|
+
if (this.props.currentIndex !== undefined) {
|
|
54
|
+
return this.props.currentIndex;
|
|
55
|
+
}
|
|
56
|
+
if (this.props.currentStep) {
|
|
57
|
+
return this.props.steps.findIndex((s) => s.value === this.props.currentStep);
|
|
58
|
+
}
|
|
59
|
+
return 0;
|
|
60
|
+
}
|
|
61
|
+
getStepStatus(step, index) {
|
|
62
|
+
if (step.status)
|
|
63
|
+
return step.status;
|
|
64
|
+
const currentIndex = this.getCurrentIndex();
|
|
65
|
+
if (index < currentIndex)
|
|
66
|
+
return 'completed';
|
|
67
|
+
if (index === currentIndex)
|
|
68
|
+
return 'current';
|
|
69
|
+
return 'pending';
|
|
70
|
+
}
|
|
71
|
+
getStepColor(step, index) {
|
|
72
|
+
const status = this.getStepStatus(step, index);
|
|
73
|
+
const color = this.props.color || 'primary';
|
|
74
|
+
switch (status) {
|
|
75
|
+
case 'completed':
|
|
76
|
+
return `var(--ion-color-${color})`;
|
|
77
|
+
case 'current':
|
|
78
|
+
return `var(--ion-color-${color})`;
|
|
79
|
+
case 'error':
|
|
80
|
+
return 'var(--ion-color-danger)';
|
|
81
|
+
default:
|
|
82
|
+
return 'var(--ion-color-medium)';
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
isStepClickable(step, index) {
|
|
86
|
+
if (step.disabled)
|
|
87
|
+
return false;
|
|
88
|
+
if (!this.props.linear)
|
|
89
|
+
return true;
|
|
90
|
+
const currentIndex = this.getCurrentIndex();
|
|
91
|
+
// In linear mode, can only go to completed steps or next step
|
|
92
|
+
return index <= currentIndex || (step.editable && index < currentIndex);
|
|
93
|
+
}
|
|
94
|
+
onStepClick(step, index) {
|
|
95
|
+
if (!this.isStepClickable(step, index))
|
|
96
|
+
return;
|
|
97
|
+
const currentIndex = this.getCurrentIndex();
|
|
98
|
+
if (index === currentIndex)
|
|
99
|
+
return;
|
|
100
|
+
this.stepChange.emit({
|
|
101
|
+
step,
|
|
102
|
+
index,
|
|
103
|
+
previousIndex: currentIndex,
|
|
104
|
+
});
|
|
105
|
+
}
|
|
106
|
+
getStepLabel(step) {
|
|
107
|
+
if (step.label)
|
|
108
|
+
return step.label;
|
|
109
|
+
return this.stepLabels.get(step.value) || step.contentFallback || '';
|
|
110
|
+
}
|
|
111
|
+
setupLabels() {
|
|
112
|
+
this.props.steps.forEach((step) => {
|
|
113
|
+
if (step.label) {
|
|
114
|
+
this.stepLabels.set(step.value, step.label);
|
|
115
|
+
}
|
|
116
|
+
else if (step.contentKey && step.contentClass) {
|
|
117
|
+
const sub = this.langService
|
|
118
|
+
.getContent(step.contentClass, step.contentKey, step.contentFallback)
|
|
119
|
+
.subscribe((content) => this.stepLabels.set(step.value, content));
|
|
120
|
+
this.subscriptions.push(sub);
|
|
121
|
+
}
|
|
122
|
+
});
|
|
123
|
+
}
|
|
124
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: StepperComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
125
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: StepperComponent, isStandalone: true, selector: "val-stepper", inputs: { props: "props" }, outputs: { stepChange: "stepChange" }, ngImport: i0, template: `
|
|
126
|
+
<div
|
|
127
|
+
class="stepper-container"
|
|
128
|
+
[class.horizontal]="props.orientation !== 'vertical'"
|
|
129
|
+
[class.vertical]="props.orientation === 'vertical'"
|
|
130
|
+
>
|
|
131
|
+
@for (step of props.steps; track step.value; let i = $index; let isLast = $last) {
|
|
132
|
+
<div
|
|
133
|
+
class="step"
|
|
134
|
+
[class.current]="getStepStatus(step, i) === 'current'"
|
|
135
|
+
[class.completed]="getStepStatus(step, i) === 'completed'"
|
|
136
|
+
[class.error]="getStepStatus(step, i) === 'error'"
|
|
137
|
+
[class.disabled]="step.disabled"
|
|
138
|
+
[class.clickable]="isStepClickable(step, i)"
|
|
139
|
+
(click)="onStepClick(step, i)"
|
|
140
|
+
>
|
|
141
|
+
<div class="step-indicator">
|
|
142
|
+
<div class="step-circle" [style.--step-color]="getStepColor(step, i)">
|
|
143
|
+
@if (getStepStatus(step, i) === 'completed') {
|
|
144
|
+
<ion-icon name="checkmark"></ion-icon>
|
|
145
|
+
} @else if (getStepStatus(step, i) === 'error') {
|
|
146
|
+
<ion-icon name="close"></ion-icon>
|
|
147
|
+
} @else if (step.icon) {
|
|
148
|
+
<ion-icon [name]="step.icon"></ion-icon>
|
|
149
|
+
} @else if (props.showNumbers !== false) {
|
|
150
|
+
<span class="step-number">{{ i + 1 }}</span>
|
|
151
|
+
} @else {
|
|
152
|
+
<ion-icon name="ellipse"></ion-icon>
|
|
153
|
+
}
|
|
154
|
+
</div>
|
|
155
|
+
@if (!isLast && props.connectorStyle !== 'none') {
|
|
156
|
+
<div
|
|
157
|
+
class="step-connector"
|
|
158
|
+
[class.dashed]="props.connectorStyle === 'dashed'"
|
|
159
|
+
[class.completed]="getStepStatus(step, i) === 'completed'"
|
|
160
|
+
></div>
|
|
161
|
+
}
|
|
162
|
+
</div>
|
|
163
|
+
<div class="step-content">
|
|
164
|
+
<div class="step-label">
|
|
165
|
+
{{ getStepLabel(step) }}
|
|
166
|
+
@if (step.optional) {
|
|
167
|
+
<span class="optional-text">(Optional)</span>
|
|
168
|
+
}
|
|
169
|
+
</div>
|
|
170
|
+
@if (step.description) {
|
|
171
|
+
<div class="step-description">{{ step.description }}</div>
|
|
172
|
+
}
|
|
173
|
+
</div>
|
|
174
|
+
</div>
|
|
175
|
+
}
|
|
176
|
+
</div>
|
|
177
|
+
`, isInline: true, styles: [":host{display:block}.stepper-container{display:flex}.stepper-container.horizontal{flex-direction:row;align-items:flex-start}.stepper-container.horizontal .step{flex:1;flex-direction:column;align-items:center;text-align:center}.stepper-container.horizontal .step .step-indicator{flex-direction:row;width:100%;justify-content:center}.stepper-container.horizontal .step .step-connector{flex:1;height:2px;margin:0 8px;align-self:center}.stepper-container.vertical{flex-direction:column}.stepper-container.vertical .step{flex-direction:row;align-items:flex-start}.stepper-container.vertical .step .step-indicator{flex-direction:column;align-items:center}.stepper-container.vertical .step .step-connector{width:2px;flex:1;min-height:24px;margin:8px 0}.stepper-container.vertical .step .step-content{margin-left:12px;padding-bottom:24px}.step{display:flex;cursor:default}.step.clickable{cursor:pointer}.step.clickable:hover .step-circle{transform:scale(1.1)}.step.disabled{opacity:.5;pointer-events:none}.step.current .step-circle{box-shadow:0 0 0 4px rgba(var(--ion-color-primary-rgb),.2)}.step-indicator{display:flex;position:relative}.step-circle{width:32px;height:32px;border-radius:50%;display:flex;align-items:center;justify-content:center;background-color:var(--step-color, var(--ion-color-medium));color:#fff;font-weight:600;font-size:14px;transition:transform .2s,box-shadow .2s;flex-shrink:0}.step-circle ion-icon{font-size:18px}.step-connector{background-color:var(--ion-color-light-shade);transition:background-color .3s}.step-connector.completed{background-color:var(--ion-color-primary)}.step-connector.dashed{background:repeating-linear-gradient(90deg,var(--ion-color-light-shade),var(--ion-color-light-shade) 4px,transparent 4px,transparent 8px)}.step-connector.dashed.completed{background:repeating-linear-gradient(90deg,var(--ion-color-primary),var(--ion-color-primary) 4px,transparent 4px,transparent 8px)}.step-content{margin-top:8px}.step-label{font-weight:500;font-size:14px;color:var(--ion-text-color)}.step-label .optional-text{font-weight:400;font-size:12px;color:var(--ion-color-medium);margin-left:4px}.step-description{font-size:12px;color:var(--ion-color-medium);margin-top:4px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }] }); }
|
|
178
|
+
}
|
|
179
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: StepperComponent, decorators: [{
|
|
180
|
+
type: Component,
|
|
181
|
+
args: [{ selector: 'val-stepper', standalone: true, imports: [CommonModule, IonIcon], template: `
|
|
182
|
+
<div
|
|
183
|
+
class="stepper-container"
|
|
184
|
+
[class.horizontal]="props.orientation !== 'vertical'"
|
|
185
|
+
[class.vertical]="props.orientation === 'vertical'"
|
|
186
|
+
>
|
|
187
|
+
@for (step of props.steps; track step.value; let i = $index; let isLast = $last) {
|
|
188
|
+
<div
|
|
189
|
+
class="step"
|
|
190
|
+
[class.current]="getStepStatus(step, i) === 'current'"
|
|
191
|
+
[class.completed]="getStepStatus(step, i) === 'completed'"
|
|
192
|
+
[class.error]="getStepStatus(step, i) === 'error'"
|
|
193
|
+
[class.disabled]="step.disabled"
|
|
194
|
+
[class.clickable]="isStepClickable(step, i)"
|
|
195
|
+
(click)="onStepClick(step, i)"
|
|
196
|
+
>
|
|
197
|
+
<div class="step-indicator">
|
|
198
|
+
<div class="step-circle" [style.--step-color]="getStepColor(step, i)">
|
|
199
|
+
@if (getStepStatus(step, i) === 'completed') {
|
|
200
|
+
<ion-icon name="checkmark"></ion-icon>
|
|
201
|
+
} @else if (getStepStatus(step, i) === 'error') {
|
|
202
|
+
<ion-icon name="close"></ion-icon>
|
|
203
|
+
} @else if (step.icon) {
|
|
204
|
+
<ion-icon [name]="step.icon"></ion-icon>
|
|
205
|
+
} @else if (props.showNumbers !== false) {
|
|
206
|
+
<span class="step-number">{{ i + 1 }}</span>
|
|
207
|
+
} @else {
|
|
208
|
+
<ion-icon name="ellipse"></ion-icon>
|
|
209
|
+
}
|
|
210
|
+
</div>
|
|
211
|
+
@if (!isLast && props.connectorStyle !== 'none') {
|
|
212
|
+
<div
|
|
213
|
+
class="step-connector"
|
|
214
|
+
[class.dashed]="props.connectorStyle === 'dashed'"
|
|
215
|
+
[class.completed]="getStepStatus(step, i) === 'completed'"
|
|
216
|
+
></div>
|
|
217
|
+
}
|
|
218
|
+
</div>
|
|
219
|
+
<div class="step-content">
|
|
220
|
+
<div class="step-label">
|
|
221
|
+
{{ getStepLabel(step) }}
|
|
222
|
+
@if (step.optional) {
|
|
223
|
+
<span class="optional-text">(Optional)</span>
|
|
224
|
+
}
|
|
225
|
+
</div>
|
|
226
|
+
@if (step.description) {
|
|
227
|
+
<div class="step-description">{{ step.description }}</div>
|
|
228
|
+
}
|
|
229
|
+
</div>
|
|
230
|
+
</div>
|
|
231
|
+
}
|
|
232
|
+
</div>
|
|
233
|
+
`, styles: [":host{display:block}.stepper-container{display:flex}.stepper-container.horizontal{flex-direction:row;align-items:flex-start}.stepper-container.horizontal .step{flex:1;flex-direction:column;align-items:center;text-align:center}.stepper-container.horizontal .step .step-indicator{flex-direction:row;width:100%;justify-content:center}.stepper-container.horizontal .step .step-connector{flex:1;height:2px;margin:0 8px;align-self:center}.stepper-container.vertical{flex-direction:column}.stepper-container.vertical .step{flex-direction:row;align-items:flex-start}.stepper-container.vertical .step .step-indicator{flex-direction:column;align-items:center}.stepper-container.vertical .step .step-connector{width:2px;flex:1;min-height:24px;margin:8px 0}.stepper-container.vertical .step .step-content{margin-left:12px;padding-bottom:24px}.step{display:flex;cursor:default}.step.clickable{cursor:pointer}.step.clickable:hover .step-circle{transform:scale(1.1)}.step.disabled{opacity:.5;pointer-events:none}.step.current .step-circle{box-shadow:0 0 0 4px rgba(var(--ion-color-primary-rgb),.2)}.step-indicator{display:flex;position:relative}.step-circle{width:32px;height:32px;border-radius:50%;display:flex;align-items:center;justify-content:center;background-color:var(--step-color, var(--ion-color-medium));color:#fff;font-weight:600;font-size:14px;transition:transform .2s,box-shadow .2s;flex-shrink:0}.step-circle ion-icon{font-size:18px}.step-connector{background-color:var(--ion-color-light-shade);transition:background-color .3s}.step-connector.completed{background-color:var(--ion-color-primary)}.step-connector.dashed{background:repeating-linear-gradient(90deg,var(--ion-color-light-shade),var(--ion-color-light-shade) 4px,transparent 4px,transparent 8px)}.step-connector.dashed.completed{background:repeating-linear-gradient(90deg,var(--ion-color-primary),var(--ion-color-primary) 4px,transparent 4px,transparent 8px)}.step-content{margin-top:8px}.step-label{font-weight:500;font-size:14px;color:var(--ion-text-color)}.step-label .optional-text{font-weight:400;font-size:12px;color:var(--ion-color-medium);margin-left:4px}.step-description{font-size:12px;color:var(--ion-color-medium);margin-top:4px}\n"] }]
|
|
234
|
+
}], propDecorators: { props: [{
|
|
235
|
+
type: Input
|
|
236
|
+
}], stepChange: [{
|
|
237
|
+
type: Output
|
|
238
|
+
}] } });
|
|
239
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RlcHBlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvbW9sZWN1bGVzL3N0ZXBwZXIvc3RlcHBlci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQXFCLE1BQU0sRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2xHLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFHL0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHVEQUF1RCxDQUFDO0FBQ3BGLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDcEMsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7O0FBRTNELFFBQVEsQ0FBQyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQztBQTZEeEM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBNkJHO0FBQ0gsTUFBTSxPQUFPLGdCQUFnQjtJQXpGN0I7UUE0RlksZUFBVSxHQUFHLElBQUksWUFBWSxFQUFtQixDQUFDO1FBRW5ELGdCQUFXLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ2xDLGtCQUFhLEdBQW1CLEVBQUUsQ0FBQztRQUNuQyxlQUFVLEdBQXdCLElBQUksR0FBRyxFQUFFLENBQUM7S0FvRnJEO0lBbEZDLFFBQVE7UUFDTixJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDckIsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7SUFDekQsQ0FBQztJQUVELGVBQWU7UUFDYixJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQzFDLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUM7UUFDakMsQ0FBQztRQUNELElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUMzQixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssS0FBSyxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQy9FLENBQUM7UUFDRCxPQUFPLENBQUMsQ0FBQztJQUNYLENBQUM7SUFFRCxhQUFhLENBQUMsSUFBa0IsRUFBRSxLQUFhO1FBQzdDLElBQUksSUFBSSxDQUFDLE1BQU07WUFBRSxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUM7UUFFcEMsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQzVDLElBQUksS0FBSyxHQUFHLFlBQVk7WUFBRSxPQUFPLFdBQVcsQ0FBQztRQUM3QyxJQUFJLEtBQUssS0FBSyxZQUFZO1lBQUUsT0FBTyxTQUFTLENBQUM7UUFDN0MsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQztJQUVELFlBQVksQ0FBQyxJQUFrQixFQUFFLEtBQWE7UUFDNUMsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDL0MsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLElBQUksU0FBUyxDQUFDO1FBRTVDLFFBQVEsTUFBTSxFQUFFLENBQUM7WUFDZixLQUFLLFdBQVc7Z0JBQ2QsT0FBTyxtQkFBbUIsS0FBSyxHQUFHLENBQUM7WUFDckMsS0FBSyxTQUFTO2dCQUNaLE9BQU8sbUJBQW1CLEtBQUssR0FBRyxDQUFDO1lBQ3JDLEtBQUssT0FBTztnQkFDVixPQUFPLHlCQUF5QixDQUFDO1lBQ25DO2dCQUNFLE9BQU8seUJBQXlCLENBQUM7UUFDckMsQ0FBQztJQUNILENBQUM7SUFFRCxlQUFlLENBQUMsSUFBa0IsRUFBRSxLQUFhO1FBQy9DLElBQUksSUFBSSxDQUFDLFFBQVE7WUFBRSxPQUFPLEtBQUssQ0FBQztRQUNoQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNO1lBQUUsT0FBTyxJQUFJLENBQUM7UUFFcEMsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQzVDLDhEQUE4RDtRQUM5RCxPQUFPLEtBQUssSUFBSSxZQUFZLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxJQUFJLEtBQUssR0FBRyxZQUFZLENBQUMsQ0FBQztJQUMxRSxDQUFDO0lBRUQsV0FBVyxDQUFDLElBQWtCLEVBQUUsS0FBYTtRQUMzQyxJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDO1lBQUUsT0FBTztRQUUvQyxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDNUMsSUFBSSxLQUFLLEtBQUssWUFBWTtZQUFFLE9BQU87UUFFbkMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUM7WUFDbkIsSUFBSTtZQUNKLEtBQUs7WUFDTCxhQUFhLEVBQUUsWUFBWTtTQUM1QixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsWUFBWSxDQUFDLElBQWtCO1FBQzdCLElBQUksSUFBSSxDQUFDLEtBQUs7WUFBRSxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUM7UUFDbEMsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksSUFBSSxDQUFDLGVBQWUsSUFBSSxFQUFFLENBQUM7SUFDdkUsQ0FBQztJQUVPLFdBQVc7UUFDakIsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDaEMsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7Z0JBQ2YsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDOUMsQ0FBQztpQkFBTSxJQUFJLElBQUksQ0FBQyxVQUFVLElBQUksSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO2dCQUNoRCxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsV0FBVztxQkFDekIsVUFBVSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsZUFBZSxDQUFDO3FCQUNwRSxTQUFTLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQztnQkFDcEUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDL0IsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzsrR0ExRlUsZ0JBQWdCO21HQUFoQixnQkFBZ0IsMElBckZqQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW9EVCxtdUVBckRTLFlBQVksK0JBQUUsT0FBTzs7NEZBc0ZwQixnQkFBZ0I7a0JBekY1QixTQUFTOytCQUNFLGFBQWEsY0FDWCxJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsT0FBTyxDQUFDLFlBQ3RCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBb0RUOzhCQWtDUSxLQUFLO3NCQUFiLEtBQUs7Z0JBRUksVUFBVTtzQkFBbkIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uSW5pdCwgT25EZXN0cm95LCBpbmplY3QsIE91dHB1dCwgRXZlbnRFbWl0dGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJb25JY29uIH0gZnJvbSAnQGlvbmljL2FuZ3VsYXIvc3RhbmRhbG9uZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBTdGVwcGVyTWV0YWRhdGEsIFN0ZXBNZXRhZGF0YSwgU3RlcENoYW5nZUV2ZW50LCBTdGVwU3RhdHVzIH0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQgeyBMYW5nU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2xhbmctcHJvdmlkZXIvbGFuZy1wcm92aWRlci5zZXJ2aWNlJztcbmltcG9ydCB7IGFkZEljb25zIH0gZnJvbSAnaW9uaWNvbnMnO1xuaW1wb3J0IHsgY2hlY2ttYXJrLCBjbG9zZSwgZWxsaXBzZSB9IGZyb20gJ2lvbmljb25zL2ljb25zJztcblxuYWRkSWNvbnMoeyBjaGVja21hcmssIGNsb3NlLCBlbGxpcHNlIH0pO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWwtc3RlcHBlcicsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIElvbkljb25dLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwic3RlcHBlci1jb250YWluZXJcIlxuICAgICAgW2NsYXNzLmhvcml6b250YWxdPVwicHJvcHMub3JpZW50YXRpb24gIT09ICd2ZXJ0aWNhbCdcIlxuICAgICAgW2NsYXNzLnZlcnRpY2FsXT1cInByb3BzLm9yaWVudGF0aW9uID09PSAndmVydGljYWwnXCJcbiAgICA+XG4gICAgICBAZm9yIChzdGVwIG9mIHByb3BzLnN0ZXBzOyB0cmFjayBzdGVwLnZhbHVlOyBsZXQgaSA9ICRpbmRleDsgbGV0IGlzTGFzdCA9ICRsYXN0KSB7XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cInN0ZXBcIlxuICAgICAgICAgIFtjbGFzcy5jdXJyZW50XT1cImdldFN0ZXBTdGF0dXMoc3RlcCwgaSkgPT09ICdjdXJyZW50J1wiXG4gICAgICAgICAgW2NsYXNzLmNvbXBsZXRlZF09XCJnZXRTdGVwU3RhdHVzKHN0ZXAsIGkpID09PSAnY29tcGxldGVkJ1wiXG4gICAgICAgICAgW2NsYXNzLmVycm9yXT1cImdldFN0ZXBTdGF0dXMoc3RlcCwgaSkgPT09ICdlcnJvcidcIlxuICAgICAgICAgIFtjbGFzcy5kaXNhYmxlZF09XCJzdGVwLmRpc2FibGVkXCJcbiAgICAgICAgICBbY2xhc3MuY2xpY2thYmxlXT1cImlzU3RlcENsaWNrYWJsZShzdGVwLCBpKVwiXG4gICAgICAgICAgKGNsaWNrKT1cIm9uU3RlcENsaWNrKHN0ZXAsIGkpXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdGVwLWluZGljYXRvclwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0ZXAtY2lyY2xlXCIgW3N0eWxlLi0tc3RlcC1jb2xvcl09XCJnZXRTdGVwQ29sb3Ioc3RlcCwgaSlcIj5cbiAgICAgICAgICAgICAgQGlmIChnZXRTdGVwU3RhdHVzKHN0ZXAsIGkpID09PSAnY29tcGxldGVkJykge1xuICAgICAgICAgICAgICAgIDxpb24taWNvbiBuYW1lPVwiY2hlY2ttYXJrXCI+PC9pb24taWNvbj5cbiAgICAgICAgICAgICAgfSBAZWxzZSBpZiAoZ2V0U3RlcFN0YXR1cyhzdGVwLCBpKSA9PT0gJ2Vycm9yJykge1xuICAgICAgICAgICAgICAgIDxpb24taWNvbiBuYW1lPVwiY2xvc2VcIj48L2lvbi1pY29uPlxuICAgICAgICAgICAgICB9IEBlbHNlIGlmIChzdGVwLmljb24pIHtcbiAgICAgICAgICAgICAgICA8aW9uLWljb24gW25hbWVdPVwic3RlcC5pY29uXCI+PC9pb24taWNvbj5cbiAgICAgICAgICAgICAgfSBAZWxzZSBpZiAocHJvcHMuc2hvd051bWJlcnMgIT09IGZhbHNlKSB7XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzdGVwLW51bWJlclwiPnt7IGkgKyAxIH19PC9zcGFuPlxuICAgICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICA8aW9uLWljb24gbmFtZT1cImVsbGlwc2VcIj48L2lvbi1pY29uPlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIEBpZiAoIWlzTGFzdCAmJiBwcm9wcy5jb25uZWN0b3JTdHlsZSAhPT0gJ25vbmUnKSB7XG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjbGFzcz1cInN0ZXAtY29ubmVjdG9yXCJcbiAgICAgICAgICAgICAgICBbY2xhc3MuZGFzaGVkXT1cInByb3BzLmNvbm5lY3RvclN0eWxlID09PSAnZGFzaGVkJ1wiXG4gICAgICAgICAgICAgICAgW2NsYXNzLmNvbXBsZXRlZF09XCJnZXRTdGVwU3RhdHVzKHN0ZXAsIGkpID09PSAnY29tcGxldGVkJ1wiXG4gICAgICAgICAgICAgID48L2Rpdj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic3RlcC1jb250ZW50XCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3RlcC1sYWJlbFwiPlxuICAgICAgICAgICAgICB7eyBnZXRTdGVwTGFiZWwoc3RlcCkgfX1cbiAgICAgICAgICAgICAgQGlmIChzdGVwLm9wdGlvbmFsKSB7XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJvcHRpb25hbC10ZXh0XCI+KE9wdGlvbmFsKTwvc3Bhbj5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICBAaWYgKHN0ZXAuZGVzY3JpcHRpb24pIHtcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0ZXAtZGVzY3JpcHRpb25cIj57eyBzdGVwLmRlc2NyaXB0aW9uIH19PC9kaXY+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgfVxuICAgIDwvZGl2PlxuICBgLFxuICBzdHlsZVVybHM6IFsnLi9zdGVwcGVyLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuLyoqXG4gKiB2YWwtc3RlcHBlclxuICpcbiAqIEEgc3RlcHBlciBjb21wb25lbnQgZm9yIG11bHRpLXN0ZXAgcHJvY2Vzc2VzLlxuICogU3VwcG9ydHMgaG9yaXpvbnRhbCBhbmQgdmVydGljYWwgb3JpZW50YXRpb25zLlxuICpcbiAqIEBleGFtcGxlIEJhc2ljIHVzYWdlXG4gKiA8dmFsLXN0ZXBwZXIgW3Byb3BzXT1cIntcbiAqICAgc3RlcHM6IFtcbiAqICAgICB7IHZhbHVlOiAnaW5mbycsIGxhYmVsOiAnUGVyc29uYWwgSW5mbycgfSxcbiAqICAgICB7IHZhbHVlOiAnYWRkcmVzcycsIGxhYmVsOiAnQWRkcmVzcycgfSxcbiAqICAgICB7IHZhbHVlOiAncGF5bWVudCcsIGxhYmVsOiAnUGF5bWVudCcgfSxcbiAqICAgICB7IHZhbHVlOiAnY29uZmlybScsIGxhYmVsOiAnQ29uZmlybScgfVxuICogICBdLFxuICogICBjdXJyZW50SW5kZXg6IDFcbiAqIH1cIiAoc3RlcENoYW5nZSk9XCJvblN0ZXBDaGFuZ2UoJGV2ZW50KVwiPjwvdmFsLXN0ZXBwZXI+XG4gKlxuICogQGV4YW1wbGUgVmVydGljYWwgd2l0aCBkZXNjcmlwdGlvbnNcbiAqIDx2YWwtc3RlcHBlciBbcHJvcHNdPVwie1xuICogICBzdGVwczogW1xuICogICAgIHsgdmFsdWU6ICdzdGVwMScsIGxhYmVsOiAnU3RlcCAxJywgZGVzY3JpcHRpb246ICdEZXNjcmlwdGlvbiBoZXJlJyB9LFxuICogICAgIHsgdmFsdWU6ICdzdGVwMicsIGxhYmVsOiAnU3RlcCAyJywgb3B0aW9uYWw6IHRydWUgfVxuICogICBdLFxuICogICBvcmllbnRhdGlvbjogJ3ZlcnRpY2FsJyxcbiAqICAgY3VycmVudEluZGV4OiAwXG4gKiB9XCI+PC92YWwtc3RlcHBlcj5cbiAqXG4gKiBAaW5wdXQgcHJvcHM6IFN0ZXBwZXJNZXRhZGF0YSAtIENvbmZpZ3VyYXRpb24gZm9yIHRoZSBzdGVwcGVyXG4gKiBAb3V0cHV0IHN0ZXBDaGFuZ2U6IFN0ZXBDaGFuZ2VFdmVudCAtIEVtaXRzIHdoZW4gc3RlcCBjaGFuZ2VzXG4gKi9cbmV4cG9ydCBjbGFzcyBTdGVwcGVyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBASW5wdXQoKSBwcm9wczogU3RlcHBlck1ldGFkYXRhO1xuXG4gIEBPdXRwdXQoKSBzdGVwQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxTdGVwQ2hhbmdlRXZlbnQ+KCk7XG5cbiAgcHJpdmF0ZSBsYW5nU2VydmljZSA9IGluamVjdChMYW5nU2VydmljZSk7XG4gIHByaXZhdGUgc3Vic2NyaXB0aW9uczogU3Vic2NyaXB0aW9uW10gPSBbXTtcbiAgcHJpdmF0ZSBzdGVwTGFiZWxzOiBNYXA8c3RyaW5nLCBzdHJpbmc+ID0gbmV3IE1hcCgpO1xuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuc2V0dXBMYWJlbHMoKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5mb3JFYWNoKChzdWIpID0+IHN1Yi51bnN1YnNjcmliZSgpKTtcbiAgfVxuXG4gIGdldEN1cnJlbnRJbmRleCgpOiBudW1iZXIge1xuICAgIGlmICh0aGlzLnByb3BzLmN1cnJlbnRJbmRleCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gdGhpcy5wcm9wcy5jdXJyZW50SW5kZXg7XG4gICAgfVxuICAgIGlmICh0aGlzLnByb3BzLmN1cnJlbnRTdGVwKSB7XG4gICAgICByZXR1cm4gdGhpcy5wcm9wcy5zdGVwcy5maW5kSW5kZXgoKHMpID0+IHMudmFsdWUgPT09IHRoaXMucHJvcHMuY3VycmVudFN0ZXApO1xuICAgIH1cbiAgICByZXR1cm4gMDtcbiAgfVxuXG4gIGdldFN0ZXBTdGF0dXMoc3RlcDogU3RlcE1ldGFkYXRhLCBpbmRleDogbnVtYmVyKTogU3RlcFN0YXR1cyB7XG4gICAgaWYgKHN0ZXAuc3RhdHVzKSByZXR1cm4gc3RlcC5zdGF0dXM7XG5cbiAgICBjb25zdCBjdXJyZW50SW5kZXggPSB0aGlzLmdldEN1cnJlbnRJbmRleCgpO1xuICAgIGlmIChpbmRleCA8IGN1cnJlbnRJbmRleCkgcmV0dXJuICdjb21wbGV0ZWQnO1xuICAgIGlmIChpbmRleCA9PT0gY3VycmVudEluZGV4KSByZXR1cm4gJ2N1cnJlbnQnO1xuICAgIHJldHVybiAncGVuZGluZyc7XG4gIH1cblxuICBnZXRTdGVwQ29sb3Ioc3RlcDogU3RlcE1ldGFkYXRhLCBpbmRleDogbnVtYmVyKTogc3RyaW5nIHtcbiAgICBjb25zdCBzdGF0dXMgPSB0aGlzLmdldFN0ZXBTdGF0dXMoc3RlcCwgaW5kZXgpO1xuICAgIGNvbnN0IGNvbG9yID0gdGhpcy5wcm9wcy5jb2xvciB8fCAncHJpbWFyeSc7XG5cbiAgICBzd2l0Y2ggKHN0YXR1cykge1xuICAgICAgY2FzZSAnY29tcGxldGVkJzpcbiAgICAgICAgcmV0dXJuIGB2YXIoLS1pb24tY29sb3ItJHtjb2xvcn0pYDtcbiAgICAgIGNhc2UgJ2N1cnJlbnQnOlxuICAgICAgICByZXR1cm4gYHZhcigtLWlvbi1jb2xvci0ke2NvbG9yfSlgO1xuICAgICAgY2FzZSAnZXJyb3InOlxuICAgICAgICByZXR1cm4gJ3ZhcigtLWlvbi1jb2xvci1kYW5nZXIpJztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiAndmFyKC0taW9uLWNvbG9yLW1lZGl1bSknO1xuICAgIH1cbiAgfVxuXG4gIGlzU3RlcENsaWNrYWJsZShzdGVwOiBTdGVwTWV0YWRhdGEsIGluZGV4OiBudW1iZXIpOiBib29sZWFuIHtcbiAgICBpZiAoc3RlcC5kaXNhYmxlZCkgcmV0dXJuIGZhbHNlO1xuICAgIGlmICghdGhpcy5wcm9wcy5saW5lYXIpIHJldHVybiB0cnVlO1xuXG4gICAgY29uc3QgY3VycmVudEluZGV4ID0gdGhpcy5nZXRDdXJyZW50SW5kZXgoKTtcbiAgICAvLyBJbiBsaW5lYXIgbW9kZSwgY2FuIG9ubHkgZ28gdG8gY29tcGxldGVkIHN0ZXBzIG9yIG5leHQgc3RlcFxuICAgIHJldHVybiBpbmRleCA8PSBjdXJyZW50SW5kZXggfHwgKHN0ZXAuZWRpdGFibGUgJiYgaW5kZXggPCBjdXJyZW50SW5kZXgpO1xuICB9XG5cbiAgb25TdGVwQ2xpY2soc3RlcDogU3RlcE1ldGFkYXRhLCBpbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmlzU3RlcENsaWNrYWJsZShzdGVwLCBpbmRleCkpIHJldHVybjtcblxuICAgIGNvbnN0IGN1cnJlbnRJbmRleCA9IHRoaXMuZ2V0Q3VycmVudEluZGV4KCk7XG4gICAgaWYgKGluZGV4ID09PSBjdXJyZW50SW5kZXgpIHJldHVybjtcblxuICAgIHRoaXMuc3RlcENoYW5nZS5lbWl0KHtcbiAgICAgIHN0ZXAsXG4gICAgICBpbmRleCxcbiAgICAgIHByZXZpb3VzSW5kZXg6IGN1cnJlbnRJbmRleCxcbiAgICB9KTtcbiAgfVxuXG4gIGdldFN0ZXBMYWJlbChzdGVwOiBTdGVwTWV0YWRhdGEpOiBzdHJpbmcge1xuICAgIGlmIChzdGVwLmxhYmVsKSByZXR1cm4gc3RlcC5sYWJlbDtcbiAgICByZXR1cm4gdGhpcy5zdGVwTGFiZWxzLmdldChzdGVwLnZhbHVlKSB8fCBzdGVwLmNvbnRlbnRGYWxsYmFjayB8fCAnJztcbiAgfVxuXG4gIHByaXZhdGUgc2V0dXBMYWJlbHMoKTogdm9pZCB7XG4gICAgdGhpcy5wcm9wcy5zdGVwcy5mb3JFYWNoKChzdGVwKSA9PiB7XG4gICAgICBpZiAoc3RlcC5sYWJlbCkge1xuICAgICAgICB0aGlzLnN0ZXBMYWJlbHMuc2V0KHN0ZXAudmFsdWUsIHN0ZXAubGFiZWwpO1xuICAgICAgfSBlbHNlIGlmIChzdGVwLmNvbnRlbnRLZXkgJiYgc3RlcC5jb250ZW50Q2xhc3MpIHtcbiAgICAgICAgY29uc3Qgc3ViID0gdGhpcy5sYW5nU2VydmljZVxuICAgICAgICAgIC5nZXRDb250ZW50KHN0ZXAuY29udGVudENsYXNzLCBzdGVwLmNvbnRlbnRLZXksIHN0ZXAuY29udGVudEZhbGxiYWNrKVxuICAgICAgICAgIC5zdWJzY3JpYmUoKGNvbnRlbnQpID0+IHRoaXMuc3RlcExhYmVscy5zZXQoc3RlcC52YWx1ZSwgY29udGVudCkpO1xuICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChzdWIpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvbW9sZWN1bGVzL3N0ZXBwZXIvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbG9yIH0gZnJvbSAnQGlvbmljL2NvcmUnO1xuXG4vKipcbiAqIFN0ZXAgc3RhdHVzLlxuICovXG5leHBvcnQgdHlwZSBTdGVwU3RhdHVzID0gJ3BlbmRpbmcnIHwgJ2N1cnJlbnQnIHwgJ2NvbXBsZXRlZCcgfCAnZXJyb3InO1xuXG4vKipcbiAqIFNpbmdsZSBzdGVwIGNvbmZpZ3VyYXRpb24uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU3RlcE1ldGFkYXRhIHtcbiAgLyoqIFVuaXF1ZSBzdGVwIGlkZW50aWZpZXIgKi9cbiAgdmFsdWU6IHN0cmluZztcbiAgLyoqIFN0ZXAgbGFiZWwgKi9cbiAgbGFiZWw/OiBzdHJpbmc7XG4gIC8qKiBTdGVwIGRlc2NyaXB0aW9uL3N1YnRpdGxlICovXG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICAvKiogU3RlcCBpY29uIChvdmVycmlkZXMgbnVtYmVyKSAqL1xuICBpY29uPzogc3RyaW5nO1xuICAvKiogU3RlcCBzdGF0dXMgKi9cbiAgc3RhdHVzPzogU3RlcFN0YXR1cztcbiAgLyoqIFdoZXRoZXIgc3RlcCBpcyBvcHRpb25hbCAqL1xuICBvcHRpb25hbD86IGJvb2xlYW47XG4gIC8qKiBXaGV0aGVyIHN0ZXAgaXMgZWRpdGFibGUgKGNhbiBnbyBiYWNrKSAqL1xuICBlZGl0YWJsZT86IGJvb2xlYW47XG4gIC8qKiBXaGV0aGVyIHN0ZXAgaXMgZGlzYWJsZWQgKi9cbiAgZGlzYWJsZWQ/OiBib29sZWFuO1xuICAvKiogUmVhY3RpdmUgY29udGVudCBrZXkgZm9yIGxhYmVsICovXG4gIGNvbnRlbnRLZXk/OiBzdHJpbmc7XG4gIC8qKiBDb21wb25lbnQgY2xhc3MgbmFtZSBmb3IgY29udGVudCBsb29rdXAgKi9cbiAgY29udGVudENsYXNzPzogc3RyaW5nO1xuICAvKiogRmFsbGJhY2sgZm9yIGxhYmVsICovXG4gIGNvbnRlbnRGYWxsYmFjaz86IHN0cmluZztcbn1cblxuLyoqXG4gKiBNZXRhZGF0YSBmb3IgdGhlIHN0ZXBwZXIgY29tcG9uZW50LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFN0ZXBwZXJNZXRhZGF0YSB7XG4gIC8qKiBTdGVwIGl0ZW1zICovXG4gIHN0ZXBzOiBTdGVwTWV0YWRhdGFbXTtcbiAgLyoqIEN1cnJlbnQgc3RlcCB2YWx1ZSAqL1xuICBjdXJyZW50U3RlcD86IHN0cmluZztcbiAgLyoqIEN1cnJlbnQgc3RlcCBpbmRleCAoYWx0ZXJuYXRpdmUgdG8gY3VycmVudFN0ZXApICovXG4gIGN1cnJlbnRJbmRleD86IG51bWJlcjtcbiAgLyoqIFN0ZXBwZXIgb3JpZW50YXRpb24gKi9cbiAgb3JpZW50YXRpb24/OiAnaG9yaXpvbnRhbCcgfCAndmVydGljYWwnO1xuICAvKiogTGluZWFyIG1vZGUgKG11c3QgY29tcGxldGUgaW4gb3JkZXIpICovXG4gIGxpbmVhcj86IGJvb2xlYW47XG4gIC8qKiBTdGVwcGVyIGNvbG9yICovXG4gIGNvbG9yPzogQ29sb3I7XG4gIC8qKiBTaG93IHN0ZXAgbnVtYmVycyAqL1xuICBzaG93TnVtYmVycz86IGJvb2xlYW47XG4gIC8qKiBDb25uZWN0b3IgbGluZSBzdHlsZSAqL1xuICBjb25uZWN0b3JTdHlsZT86ICdzb2xpZCcgfCAnZGFzaGVkJyB8ICdub25lJztcbiAgLyoqIFVuaXF1ZSB0b2tlbiBpZGVudGlmaWVyICovXG4gIHRva2VuPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIEV2ZW50IGVtaXR0ZWQgd2hlbiBzdGVwIGNoYW5nZXMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU3RlcENoYW5nZUV2ZW50IHtcbiAgLyoqIE5ldyBzdGVwICovXG4gIHN0ZXA6IFN0ZXBNZXRhZGF0YTtcbiAgLyoqIE5ldyBzdGVwIGluZGV4ICovXG4gIGluZGV4OiBudW1iZXI7XG4gIC8qKiBQcmV2aW91cyBzdGVwIGluZGV4ICovXG4gIHByZXZpb3VzSW5kZXg6IG51bWJlcjtcbn1cbiJdfQ==
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
import { Component, Input, inject, Output, EventEmitter } from '@angular/core';
|
|
2
|
+
import { IonTabBar, IonTabButton, IonIcon, IonLabel, IonBadge } from '@ionic/angular/standalone';
|
|
3
|
+
import { CommonModule } from '@angular/common';
|
|
4
|
+
import { LangService } from '../../../services/lang-provider/lang-provider.service';
|
|
5
|
+
import { addIcons } from 'ionicons';
|
|
6
|
+
import { home, settings, person, search, heart, star, notifications, mail, calendar, folder } from 'ionicons/icons';
|
|
7
|
+
import * as i0 from "@angular/core";
|
|
8
|
+
addIcons({ home, settings, person, search, heart, star, notifications, mail, calendar, folder });
|
|
9
|
+
/**
|
|
10
|
+
* val-tabs
|
|
11
|
+
*
|
|
12
|
+
* A tab bar component for navigation between views.
|
|
13
|
+
* Can be positioned at top or bottom of the screen.
|
|
14
|
+
*
|
|
15
|
+
* @example Basic usage
|
|
16
|
+
* <val-tabs [props]="{
|
|
17
|
+
* tabs: [
|
|
18
|
+
* { value: 'home', label: 'Home', icon: 'home' },
|
|
19
|
+
* { value: 'search', label: 'Search', icon: 'search' },
|
|
20
|
+
* { value: 'profile', label: 'Profile', icon: 'person' }
|
|
21
|
+
* ],
|
|
22
|
+
* selectedTab: 'home'
|
|
23
|
+
* }" (tabChange)="onTabChange($event)"></val-tabs>
|
|
24
|
+
*
|
|
25
|
+
* @example With badges
|
|
26
|
+
* <val-tabs [props]="{
|
|
27
|
+
* tabs: [
|
|
28
|
+
* { value: 'inbox', label: 'Inbox', icon: 'mail', badge: 5 },
|
|
29
|
+
* { value: 'notifications', label: 'Alerts', icon: 'notifications', badge: '99+' }
|
|
30
|
+
* ]
|
|
31
|
+
* }"></val-tabs>
|
|
32
|
+
*
|
|
33
|
+
* @input props: TabsMetadata - Configuration for the tabs
|
|
34
|
+
* @output tabChange: TabMetadata - Emits when a tab is selected
|
|
35
|
+
*/
|
|
36
|
+
export class TabsComponent {
|
|
37
|
+
constructor() {
|
|
38
|
+
this.tabChange = new EventEmitter();
|
|
39
|
+
this.langService = inject(LangService);
|
|
40
|
+
this.subscriptions = [];
|
|
41
|
+
this.tabLabels = new Map();
|
|
42
|
+
}
|
|
43
|
+
ngOnInit() {
|
|
44
|
+
this.setupLabels();
|
|
45
|
+
}
|
|
46
|
+
ngOnDestroy() {
|
|
47
|
+
this.subscriptions.forEach((sub) => sub.unsubscribe());
|
|
48
|
+
}
|
|
49
|
+
onTabClick(tab) {
|
|
50
|
+
if (!tab.disabled) {
|
|
51
|
+
this.tabChange.emit(tab);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
getTabLabel(tab) {
|
|
55
|
+
if (tab.label)
|
|
56
|
+
return tab.label;
|
|
57
|
+
return this.tabLabels.get(tab.value) || tab.contentFallback || '';
|
|
58
|
+
}
|
|
59
|
+
setupLabels() {
|
|
60
|
+
this.props.tabs.forEach((tab) => {
|
|
61
|
+
if (tab.label) {
|
|
62
|
+
this.tabLabels.set(tab.value, tab.label);
|
|
63
|
+
}
|
|
64
|
+
else if (tab.contentKey && tab.contentClass) {
|
|
65
|
+
const sub = this.langService
|
|
66
|
+
.getContent(tab.contentClass, tab.contentKey, tab.contentFallback)
|
|
67
|
+
.subscribe((content) => this.tabLabels.set(tab.value, content));
|
|
68
|
+
this.subscriptions.push(sub);
|
|
69
|
+
}
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: TabsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
73
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: TabsComponent, isStandalone: true, selector: "val-tabs", inputs: { props: "props" }, outputs: { tabChange: "tabChange" }, ngImport: i0, template: `
|
|
74
|
+
<ion-tab-bar
|
|
75
|
+
[color]="props.color"
|
|
76
|
+
[mode]="props.mode"
|
|
77
|
+
[translucent]="props.translucent ?? false"
|
|
78
|
+
[selectedTab]="props.selectedTab || props.tabs[0]?.value"
|
|
79
|
+
>
|
|
80
|
+
@for (tab of props.tabs; track tab.value) {
|
|
81
|
+
<ion-tab-button
|
|
82
|
+
[tab]="tab.value"
|
|
83
|
+
[disabled]="tab.disabled"
|
|
84
|
+
[layout]="props.layout || 'icon-top'"
|
|
85
|
+
(click)="onTabClick(tab)"
|
|
86
|
+
>
|
|
87
|
+
@if (tab.icon && props.layout !== 'icon-hide') {
|
|
88
|
+
<ion-icon [name]="tab.icon"></ion-icon>
|
|
89
|
+
}
|
|
90
|
+
@if (getTabLabel(tab) && props.layout !== 'label-hide') {
|
|
91
|
+
<ion-label>{{ getTabLabel(tab) }}</ion-label>
|
|
92
|
+
}
|
|
93
|
+
@if (tab.badge) {
|
|
94
|
+
<ion-badge [color]="tab.badgeColor || 'danger'">{{ tab.badge }}</ion-badge>
|
|
95
|
+
}
|
|
96
|
+
</ion-tab-button>
|
|
97
|
+
}
|
|
98
|
+
</ion-tab-bar>
|
|
99
|
+
`, isInline: true, styles: [":host{display:block}ion-tab-bar{--background: var(--ion-background-color);--border: 1px solid var(--ion-color-light-shade);border-radius:0}ion-tab-button{--color: var(--ion-color-medium);--color-selected: var(--ion-color-primary);--padding-top: 8px;--padding-bottom: 8px}ion-tab-button ion-icon{font-size:22px}ion-tab-button ion-label{font-size:12px;font-weight:500;text-transform:none}ion-tab-button ion-badge{position:absolute;top:4px;right:calc(50% - 20px);font-size:10px;padding:2px 6px;min-width:16px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: IonTabBar, selector: "ion-tab-bar", inputs: ["color", "mode", "selectedTab", "translucent"] }, { kind: "component", type: IonTabButton, selector: "ion-tab-button", inputs: ["disabled", "download", "href", "layout", "mode", "rel", "selected", "tab", "target"] }, { kind: "component", type: IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }, { kind: "component", type: IonBadge, selector: "ion-badge", inputs: ["color", "mode"] }] }); }
|
|
100
|
+
}
|
|
101
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: TabsComponent, decorators: [{
|
|
102
|
+
type: Component,
|
|
103
|
+
args: [{ selector: 'val-tabs', standalone: true, imports: [CommonModule, IonTabBar, IonTabButton, IonIcon, IonLabel, IonBadge], template: `
|
|
104
|
+
<ion-tab-bar
|
|
105
|
+
[color]="props.color"
|
|
106
|
+
[mode]="props.mode"
|
|
107
|
+
[translucent]="props.translucent ?? false"
|
|
108
|
+
[selectedTab]="props.selectedTab || props.tabs[0]?.value"
|
|
109
|
+
>
|
|
110
|
+
@for (tab of props.tabs; track tab.value) {
|
|
111
|
+
<ion-tab-button
|
|
112
|
+
[tab]="tab.value"
|
|
113
|
+
[disabled]="tab.disabled"
|
|
114
|
+
[layout]="props.layout || 'icon-top'"
|
|
115
|
+
(click)="onTabClick(tab)"
|
|
116
|
+
>
|
|
117
|
+
@if (tab.icon && props.layout !== 'icon-hide') {
|
|
118
|
+
<ion-icon [name]="tab.icon"></ion-icon>
|
|
119
|
+
}
|
|
120
|
+
@if (getTabLabel(tab) && props.layout !== 'label-hide') {
|
|
121
|
+
<ion-label>{{ getTabLabel(tab) }}</ion-label>
|
|
122
|
+
}
|
|
123
|
+
@if (tab.badge) {
|
|
124
|
+
<ion-badge [color]="tab.badgeColor || 'danger'">{{ tab.badge }}</ion-badge>
|
|
125
|
+
}
|
|
126
|
+
</ion-tab-button>
|
|
127
|
+
}
|
|
128
|
+
</ion-tab-bar>
|
|
129
|
+
`, styles: [":host{display:block}ion-tab-bar{--background: var(--ion-background-color);--border: 1px solid var(--ion-color-light-shade);border-radius:0}ion-tab-button{--color: var(--ion-color-medium);--color-selected: var(--ion-color-primary);--padding-top: 8px;--padding-bottom: 8px}ion-tab-button ion-icon{font-size:22px}ion-tab-button ion-label{font-size:12px;font-weight:500;text-transform:none}ion-tab-button ion-badge{position:absolute;top:4px;right:calc(50% - 20px);font-size:10px;padding:2px 6px;min-width:16px}\n"] }]
|
|
130
|
+
}], propDecorators: { props: [{
|
|
131
|
+
type: Input
|
|
132
|
+
}], tabChange: [{
|
|
133
|
+
type: Output
|
|
134
|
+
}] } });
|
|
135
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFicy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvbW9sZWN1bGVzL3RhYnMvdGFicy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQXFCLE1BQU0sRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2xHLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDakcsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRy9DLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx1REFBdUQsQ0FBQztBQUNwRixPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxhQUFhLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7QUFFcEgsUUFBUSxDQUFDLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsYUFBYSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztBQW1Dakc7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBMEJHO0FBQ0gsTUFBTSxPQUFPLGFBQWE7SUE1RDFCO1FBK0RZLGNBQVMsR0FBRyxJQUFJLFlBQVksRUFBZSxDQUFDO1FBRTlDLGdCQUFXLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ2xDLGtCQUFhLEdBQW1CLEVBQUUsQ0FBQztRQUNuQyxjQUFTLEdBQXdCLElBQUksR0FBRyxFQUFFLENBQUM7S0FpQ3BEO0lBL0JDLFFBQVE7UUFDTixJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDckIsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7SUFDekQsQ0FBQztJQUVELFVBQVUsQ0FBQyxHQUFnQjtRQUN6QixJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ2xCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzNCLENBQUM7SUFDSCxDQUFDO0lBRUQsV0FBVyxDQUFDLEdBQWdCO1FBQzFCLElBQUksR0FBRyxDQUFDLEtBQUs7WUFBRSxPQUFPLEdBQUcsQ0FBQyxLQUFLLENBQUM7UUFDaEMsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLElBQUksR0FBRyxDQUFDLGVBQWUsSUFBSSxFQUFFLENBQUM7SUFDcEUsQ0FBQztJQUVPLFdBQVc7UUFDakIsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7WUFDOUIsSUFBSSxHQUFHLENBQUMsS0FBSyxFQUFFLENBQUM7Z0JBQ2QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDM0MsQ0FBQztpQkFBTSxJQUFJLEdBQUcsQ0FBQyxVQUFVLElBQUksR0FBRyxDQUFDLFlBQVksRUFBRSxDQUFDO2dCQUM5QyxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsV0FBVztxQkFDekIsVUFBVSxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsR0FBRyxDQUFDLFVBQVUsRUFBRSxHQUFHLENBQUMsZUFBZSxDQUFDO3FCQUNqRSxTQUFTLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQztnQkFDbEUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDL0IsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzsrR0F2Q1UsYUFBYTttR0FBYixhQUFhLHFJQXhEZDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0EwQlQscWtCQTNCUyxZQUFZLCtCQUFFLFNBQVMsaUhBQUUsWUFBWSwySkFBRSxPQUFPLDJKQUFFLFFBQVEsNkZBQUUsUUFBUTs7NEZBeURqRSxhQUFhO2tCQTVEekIsU0FBUzsrQkFDRSxVQUFVLGNBQ1IsSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxRQUFRLENBQUMsWUFDbkU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBMEJUOzhCQStCUSxLQUFLO3NCQUFiLEtBQUs7Z0JBRUksU0FBUztzQkFBbEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uSW5pdCwgT25EZXN0cm95LCBpbmplY3QsIE91dHB1dCwgRXZlbnRFbWl0dGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJb25UYWJCYXIsIElvblRhYkJ1dHRvbiwgSW9uSWNvbiwgSW9uTGFiZWwsIElvbkJhZGdlIH0gZnJvbSAnQGlvbmljL2FuZ3VsYXIvc3RhbmRhbG9uZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBUYWJzTWV0YWRhdGEsIFRhYk1ldGFkYXRhIH0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQgeyBMYW5nU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2xhbmctcHJvdmlkZXIvbGFuZy1wcm92aWRlci5zZXJ2aWNlJztcbmltcG9ydCB7IGFkZEljb25zIH0gZnJvbSAnaW9uaWNvbnMnO1xuaW1wb3J0IHsgaG9tZSwgc2V0dGluZ3MsIHBlcnNvbiwgc2VhcmNoLCBoZWFydCwgc3Rhciwgbm90aWZpY2F0aW9ucywgbWFpbCwgY2FsZW5kYXIsIGZvbGRlciB9IGZyb20gJ2lvbmljb25zL2ljb25zJztcblxuYWRkSWNvbnMoeyBob21lLCBzZXR0aW5ncywgcGVyc29uLCBzZWFyY2gsIGhlYXJ0LCBzdGFyLCBub3RpZmljYXRpb25zLCBtYWlsLCBjYWxlbmRhciwgZm9sZGVyIH0pO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWwtdGFicycsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIElvblRhYkJhciwgSW9uVGFiQnV0dG9uLCBJb25JY29uLCBJb25MYWJlbCwgSW9uQmFkZ2VdLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxpb24tdGFiLWJhclxuICAgICAgW2NvbG9yXT1cInByb3BzLmNvbG9yXCJcbiAgICAgIFttb2RlXT1cInByb3BzLm1vZGVcIlxuICAgICAgW3RyYW5zbHVjZW50XT1cInByb3BzLnRyYW5zbHVjZW50ID8/IGZhbHNlXCJcbiAgICAgIFtzZWxlY3RlZFRhYl09XCJwcm9wcy5zZWxlY3RlZFRhYiB8fCBwcm9wcy50YWJzWzBdPy52YWx1ZVwiXG4gICAgPlxuICAgICAgQGZvciAodGFiIG9mIHByb3BzLnRhYnM7IHRyYWNrIHRhYi52YWx1ZSkge1xuICAgICAgICA8aW9uLXRhYi1idXR0b25cbiAgICAgICAgICBbdGFiXT1cInRhYi52YWx1ZVwiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cInRhYi5kaXNhYmxlZFwiXG4gICAgICAgICAgW2xheW91dF09XCJwcm9wcy5sYXlvdXQgfHwgJ2ljb24tdG9wJ1wiXG4gICAgICAgICAgKGNsaWNrKT1cIm9uVGFiQ2xpY2sodGFiKVwiXG4gICAgICAgID5cbiAgICAgICAgICBAaWYgKHRhYi5pY29uICYmIHByb3BzLmxheW91dCAhPT0gJ2ljb24taGlkZScpIHtcbiAgICAgICAgICAgIDxpb24taWNvbiBbbmFtZV09XCJ0YWIuaWNvblwiPjwvaW9uLWljb24+XG4gICAgICAgICAgfVxuICAgICAgICAgIEBpZiAoZ2V0VGFiTGFiZWwodGFiKSAmJiBwcm9wcy5sYXlvdXQgIT09ICdsYWJlbC1oaWRlJykge1xuICAgICAgICAgICAgPGlvbi1sYWJlbD57eyBnZXRUYWJMYWJlbCh0YWIpIH19PC9pb24tbGFiZWw+XG4gICAgICAgICAgfVxuICAgICAgICAgIEBpZiAodGFiLmJhZGdlKSB7XG4gICAgICAgICAgICA8aW9uLWJhZGdlIFtjb2xvcl09XCJ0YWIuYmFkZ2VDb2xvciB8fCAnZGFuZ2VyJ1wiPnt7IHRhYi5iYWRnZSB9fTwvaW9uLWJhZGdlPlxuICAgICAgICAgIH1cbiAgICAgICAgPC9pb24tdGFiLWJ1dHRvbj5cbiAgICAgIH1cbiAgICA8L2lvbi10YWItYmFyPlxuICBgLFxuICBzdHlsZVVybHM6IFsnLi90YWJzLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuLyoqXG4gKiB2YWwtdGFic1xuICpcbiAqIEEgdGFiIGJhciBjb21wb25lbnQgZm9yIG5hdmlnYXRpb24gYmV0d2VlbiB2aWV3cy5cbiAqIENhbiBiZSBwb3NpdGlvbmVkIGF0IHRvcCBvciBib3R0b20gb2YgdGhlIHNjcmVlbi5cbiAqXG4gKiBAZXhhbXBsZSBCYXNpYyB1c2FnZVxuICogPHZhbC10YWJzIFtwcm9wc109XCJ7XG4gKiAgIHRhYnM6IFtcbiAqICAgICB7IHZhbHVlOiAnaG9tZScsIGxhYmVsOiAnSG9tZScsIGljb246ICdob21lJyB9LFxuICogICAgIHsgdmFsdWU6ICdzZWFyY2gnLCBsYWJlbDogJ1NlYXJjaCcsIGljb246ICdzZWFyY2gnIH0sXG4gKiAgICAgeyB2YWx1ZTogJ3Byb2ZpbGUnLCBsYWJlbDogJ1Byb2ZpbGUnLCBpY29uOiAncGVyc29uJyB9XG4gKiAgIF0sXG4gKiAgIHNlbGVjdGVkVGFiOiAnaG9tZSdcbiAqIH1cIiAodGFiQ2hhbmdlKT1cIm9uVGFiQ2hhbmdlKCRldmVudClcIj48L3ZhbC10YWJzPlxuICpcbiAqIEBleGFtcGxlIFdpdGggYmFkZ2VzXG4gKiA8dmFsLXRhYnMgW3Byb3BzXT1cIntcbiAqICAgdGFiczogW1xuICogICAgIHsgdmFsdWU6ICdpbmJveCcsIGxhYmVsOiAnSW5ib3gnLCBpY29uOiAnbWFpbCcsIGJhZGdlOiA1IH0sXG4gKiAgICAgeyB2YWx1ZTogJ25vdGlmaWNhdGlvbnMnLCBsYWJlbDogJ0FsZXJ0cycsIGljb246ICdub3RpZmljYXRpb25zJywgYmFkZ2U6ICc5OSsnIH1cbiAqICAgXVxuICogfVwiPjwvdmFsLXRhYnM+XG4gKlxuICogQGlucHV0IHByb3BzOiBUYWJzTWV0YWRhdGEgLSBDb25maWd1cmF0aW9uIGZvciB0aGUgdGFic1xuICogQG91dHB1dCB0YWJDaGFuZ2U6IFRhYk1ldGFkYXRhIC0gRW1pdHMgd2hlbiBhIHRhYiBpcyBzZWxlY3RlZFxuICovXG5leHBvcnQgY2xhc3MgVGFic0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgQElucHV0KCkgcHJvcHM6IFRhYnNNZXRhZGF0YTtcblxuICBAT3V0cHV0KCkgdGFiQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxUYWJNZXRhZGF0YT4oKTtcblxuICBwcml2YXRlIGxhbmdTZXJ2aWNlID0gaW5qZWN0KExhbmdTZXJ2aWNlKTtcbiAgcHJpdmF0ZSBzdWJzY3JpcHRpb25zOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xuICBwcml2YXRlIHRhYkxhYmVsczogTWFwPHN0cmluZywgc3RyaW5nPiA9IG5ldyBNYXAoKTtcblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLnNldHVwTGFiZWxzKCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMuZm9yRWFjaCgoc3ViKSA9PiBzdWIudW5zdWJzY3JpYmUoKSk7XG4gIH1cblxuICBvblRhYkNsaWNrKHRhYjogVGFiTWV0YWRhdGEpOiB2b2lkIHtcbiAgICBpZiAoIXRhYi5kaXNhYmxlZCkge1xuICAgICAgdGhpcy50YWJDaGFuZ2UuZW1pdCh0YWIpO1xuICAgIH1cbiAgfVxuXG4gIGdldFRhYkxhYmVsKHRhYjogVGFiTWV0YWRhdGEpOiBzdHJpbmcge1xuICAgIGlmICh0YWIubGFiZWwpIHJldHVybiB0YWIubGFiZWw7XG4gICAgcmV0dXJuIHRoaXMudGFiTGFiZWxzLmdldCh0YWIudmFsdWUpIHx8IHRhYi5jb250ZW50RmFsbGJhY2sgfHwgJyc7XG4gIH1cblxuICBwcml2YXRlIHNldHVwTGFiZWxzKCk6IHZvaWQge1xuICAgIHRoaXMucHJvcHMudGFicy5mb3JFYWNoKCh0YWIpID0+IHtcbiAgICAgIGlmICh0YWIubGFiZWwpIHtcbiAgICAgICAgdGhpcy50YWJMYWJlbHMuc2V0KHRhYi52YWx1ZSwgdGFiLmxhYmVsKTtcbiAgICAgIH0gZWxzZSBpZiAodGFiLmNvbnRlbnRLZXkgJiYgdGFiLmNvbnRlbnRDbGFzcykge1xuICAgICAgICBjb25zdCBzdWIgPSB0aGlzLmxhbmdTZXJ2aWNlXG4gICAgICAgICAgLmdldENvbnRlbnQodGFiLmNvbnRlbnRDbGFzcywgdGFiLmNvbnRlbnRLZXksIHRhYi5jb250ZW50RmFsbGJhY2spXG4gICAgICAgICAgLnN1YnNjcmliZSgoY29udGVudCkgPT4gdGhpcy50YWJMYWJlbHMuc2V0KHRhYi52YWx1ZSwgY29udGVudCkpO1xuICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChzdWIpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvbW9sZWN1bGVzL3RhYnMvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbG9yIH0gZnJvbSAnQGlvbmljL2NvcmUnO1xuXG4vKipcbiAqIFNpbmdsZSB0YWIgY29uZmlndXJhdGlvbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUYWJNZXRhZGF0YSB7XG4gIC8qKiBVbmlxdWUgdGFiIGlkZW50aWZpZXIgKi9cbiAgdmFsdWU6IHN0cmluZztcbiAgLyoqIFRhYiBsYWJlbCAoc3RhdGljKSAqL1xuICBsYWJlbD86IHN0cmluZztcbiAgLyoqIFRhYiBpY29uIG5hbWUgKi9cbiAgaWNvbj86IHN0cmluZztcbiAgLyoqIEJhZGdlIHRleHQgb3IgbnVtYmVyICovXG4gIGJhZGdlPzogc3RyaW5nIHwgbnVtYmVyO1xuICAvKiogQmFkZ2UgY29sb3IgKi9cbiAgYmFkZ2VDb2xvcj86IENvbG9yO1xuICAvKiogV2hldGhlciB0aGUgdGFiIGlzIGRpc2FibGVkICovXG4gIGRpc2FibGVkPzogYm9vbGVhbjtcbiAgLyoqIFJlYWN0aXZlIGNvbnRlbnQga2V5IGZvciBsYWJlbCAqL1xuICBjb250ZW50S2V5Pzogc3RyaW5nO1xuICAvKiogQ29tcG9uZW50IGNsYXNzIG5hbWUgZm9yIGNvbnRlbnQgbG9va3VwICovXG4gIGNvbnRlbnRDbGFzcz86IHN0cmluZztcbiAgLyoqIEZhbGxiYWNrIGZvciBsYWJlbCAqL1xuICBjb250ZW50RmFsbGJhY2s/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogTWV0YWRhdGEgZm9yIHRoZSB0YWJzIGNvbXBvbmVudC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUYWJzTWV0YWRhdGEge1xuICAvKiogVGFiIGl0ZW1zICovXG4gIHRhYnM6IFRhYk1ldGFkYXRhW107XG4gIC8qKiBDdXJyZW50bHkgc2VsZWN0ZWQgdGFiIHZhbHVlICovXG4gIHNlbGVjdGVkVGFiPzogc3RyaW5nO1xuICAvKiogVGFicyBjb2xvciAqL1xuICBjb2xvcj86IENvbG9yO1xuICAvKiogVGFiIGJhciBwb3NpdGlvbiAqL1xuICBwb3NpdGlvbj86ICd0b3AnIHwgJ2JvdHRvbSc7XG4gIC8qKiBUYWIgbGF5b3V0ICovXG4gIGxheW91dD86ICdpY29uLXRvcCcgfCAnaWNvbi1zdGFydCcgfCAnaWNvbi1lbmQnIHwgJ2ljb24tYm90dG9tJyB8ICdpY29uLWhpZGUnIHwgJ2xhYmVsLWhpZGUnO1xuICAvKiogVW5pcXVlIHRva2VuIGlkZW50aWZpZXIgKi9cbiAgdG9rZW4/OiBzdHJpbmc7XG4gIC8qKiBNb2RlIHN0eWxlICovXG4gIG1vZGU/OiAnaW9zJyB8ICdtZCc7XG4gIC8qKiBUcmFuc2x1Y2VudCBiYWNrZ3JvdW5kICovXG4gIHRyYW5zbHVjZW50PzogYm9vbGVhbjtcbn1cbiJdfQ==
|