valtech-components 2.0.404 → 2.0.407
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 +6 -6
- 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 +14848 -4293
- 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 +11 -4
- package/public-api.d.ts +72 -2
- package/LICENSE +0 -21
|
@@ -0,0 +1,484 @@
|
|
|
1
|
+
import { CommonModule } from '@angular/common';
|
|
2
|
+
import { Component, Input, Output, EventEmitter, inject } from '@angular/core';
|
|
3
|
+
import { IonIcon, IonBadge, IonProgressBar } from '@ionic/angular/standalone';
|
|
4
|
+
import { addIcons } from 'ionicons';
|
|
5
|
+
import { ticketOutline, calendarOutline, giftOutline, heartOutline, timeOutline, } from 'ionicons/icons';
|
|
6
|
+
import { LangService } from '../../../services/lang-provider/lang-provider.service';
|
|
7
|
+
import { ImageComponent } from '../../atoms/image/image.component';
|
|
8
|
+
import { ButtonComponent } from '../../atoms/button/button.component';
|
|
9
|
+
import { CountdownComponent } from '../../atoms/countdown/countdown.component';
|
|
10
|
+
import { PriceTagComponent } from '../../atoms/price-tag/price-tag.component';
|
|
11
|
+
import { DEFAULT_STATUS_LABELS, DEFAULT_STATUS_COLORS, } from './types';
|
|
12
|
+
import * as i0 from "@angular/core";
|
|
13
|
+
addIcons({
|
|
14
|
+
ticketOutline,
|
|
15
|
+
calendarOutline,
|
|
16
|
+
giftOutline,
|
|
17
|
+
heartOutline,
|
|
18
|
+
timeOutline,
|
|
19
|
+
});
|
|
20
|
+
/**
|
|
21
|
+
* val-raffle-status-card
|
|
22
|
+
*
|
|
23
|
+
* A card component for displaying raffle status and information.
|
|
24
|
+
*
|
|
25
|
+
* @example Basic usage
|
|
26
|
+
* ```html
|
|
27
|
+
* <val-raffle-status-card
|
|
28
|
+
* [props]="{
|
|
29
|
+
* title: 'Rifa Benéfica 2024',
|
|
30
|
+
* status: 'active',
|
|
31
|
+
* ticketPrice: 50,
|
|
32
|
+
* progress: {
|
|
33
|
+
* totalTickets: 1000,
|
|
34
|
+
* soldTickets: 450
|
|
35
|
+
* }
|
|
36
|
+
* }"
|
|
37
|
+
* ></val-raffle-status-card>
|
|
38
|
+
* ```
|
|
39
|
+
*
|
|
40
|
+
* @example Featured with prize
|
|
41
|
+
* ```html
|
|
42
|
+
* <val-raffle-status-card
|
|
43
|
+
* [props]="{
|
|
44
|
+
* title: 'Gran Sorteo iPhone 15',
|
|
45
|
+
* description: 'Participa y gana un iPhone 15 Pro Max',
|
|
46
|
+
* status: 'active',
|
|
47
|
+
* variant: 'featured',
|
|
48
|
+
* coverImage: { src: 'cover.jpg' },
|
|
49
|
+
* prize: {
|
|
50
|
+
* name: 'iPhone 15 Pro Max 256GB',
|
|
51
|
+
* value: 32000,
|
|
52
|
+
* image: { src: 'iphone.jpg' }
|
|
53
|
+
* },
|
|
54
|
+
* ticketPrice: 100,
|
|
55
|
+
* endDate: '2024-12-25',
|
|
56
|
+
* showCountdown: true,
|
|
57
|
+
* primaryAction: {
|
|
58
|
+
* label: 'Comprar boletos',
|
|
59
|
+
* color: 'success'
|
|
60
|
+
* }
|
|
61
|
+
* }"
|
|
62
|
+
* ></val-raffle-status-card>
|
|
63
|
+
* ```
|
|
64
|
+
*/
|
|
65
|
+
export class RaffleStatusCardComponent {
|
|
66
|
+
constructor() {
|
|
67
|
+
this.primaryActionClick = new EventEmitter();
|
|
68
|
+
this.secondaryActionClick = new EventEmitter();
|
|
69
|
+
this.langService = inject(LangService);
|
|
70
|
+
}
|
|
71
|
+
get isActiveOrUpcoming() {
|
|
72
|
+
return this.props.status === 'active' || this.props.status === 'upcoming';
|
|
73
|
+
}
|
|
74
|
+
get progressPercentage() {
|
|
75
|
+
if (!this.props.progress)
|
|
76
|
+
return 0;
|
|
77
|
+
const { soldTickets, totalTickets } = this.props.progress;
|
|
78
|
+
if (totalTickets === 0)
|
|
79
|
+
return 0;
|
|
80
|
+
return Math.round((soldTickets / totalTickets) * 100);
|
|
81
|
+
}
|
|
82
|
+
getStatusLabel() {
|
|
83
|
+
const labels = { ...DEFAULT_STATUS_LABELS, ...this.props.statusLabels };
|
|
84
|
+
return labels[this.props.status] || this.props.status;
|
|
85
|
+
}
|
|
86
|
+
getStatusColor() {
|
|
87
|
+
if (this.props.statusColor)
|
|
88
|
+
return this.props.statusColor;
|
|
89
|
+
return DEFAULT_STATUS_COLORS[this.props.status] || 'medium';
|
|
90
|
+
}
|
|
91
|
+
getProgressColor() {
|
|
92
|
+
if (this.progressPercentage >= 100)
|
|
93
|
+
return 'success';
|
|
94
|
+
if (this.progressPercentage >= 75)
|
|
95
|
+
return 'warning';
|
|
96
|
+
return 'primary';
|
|
97
|
+
}
|
|
98
|
+
getTitle() {
|
|
99
|
+
if (this.props.titleContentKey && this.props.contentClass) {
|
|
100
|
+
return this.langService.getText(this.props.contentClass, this.props.titleContentKey, this.props.title);
|
|
101
|
+
}
|
|
102
|
+
return this.props.title;
|
|
103
|
+
}
|
|
104
|
+
getDescription() {
|
|
105
|
+
if (this.props.descriptionContentKey && this.props.contentClass) {
|
|
106
|
+
return this.langService.getText(this.props.contentClass, this.props.descriptionContentKey, this.props.description || '');
|
|
107
|
+
}
|
|
108
|
+
return this.props.description || '';
|
|
109
|
+
}
|
|
110
|
+
formatCurrency(amount) {
|
|
111
|
+
const symbol = this.props.currencySymbol || '$';
|
|
112
|
+
return `${symbol}${amount.toLocaleString('es-MX')}`;
|
|
113
|
+
}
|
|
114
|
+
formatDate(date) {
|
|
115
|
+
const d = typeof date === 'string' ? new Date(date) : date;
|
|
116
|
+
return d.toLocaleDateString('es-MX', {
|
|
117
|
+
day: 'numeric',
|
|
118
|
+
month: 'short',
|
|
119
|
+
year: 'numeric',
|
|
120
|
+
});
|
|
121
|
+
}
|
|
122
|
+
onPrimaryAction() {
|
|
123
|
+
this.primaryActionClick.emit();
|
|
124
|
+
}
|
|
125
|
+
onSecondaryAction() {
|
|
126
|
+
this.secondaryActionClick.emit();
|
|
127
|
+
}
|
|
128
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: RaffleStatusCardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
129
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: RaffleStatusCardComponent, isStandalone: true, selector: "val-raffle-status-card", inputs: { props: "props" }, outputs: { primaryActionClick: "primaryActionClick", secondaryActionClick: "secondaryActionClick" }, ngImport: i0, template: `
|
|
130
|
+
<article
|
|
131
|
+
class="raffle-card"
|
|
132
|
+
[class]="props.cssClass"
|
|
133
|
+
[class.variant-default]="props.variant === 'default' || !props.variant"
|
|
134
|
+
[class.variant-featured]="props.variant === 'featured'"
|
|
135
|
+
[class.variant-compact]="props.variant === 'compact'"
|
|
136
|
+
[class.variant-horizontal]="props.variant === 'horizontal'"
|
|
137
|
+
[class.size-small]="props.size === 'small'"
|
|
138
|
+
[class.size-medium]="props.size === 'medium' || !props.size"
|
|
139
|
+
[class.size-large]="props.size === 'large'"
|
|
140
|
+
[class]="'status-' + props.status"
|
|
141
|
+
>
|
|
142
|
+
<!-- Cover image -->
|
|
143
|
+
@if (props.coverImage && props.variant !== 'compact') {
|
|
144
|
+
<div class="card-image">
|
|
145
|
+
<val-image [props]="props.coverImage"></val-image>
|
|
146
|
+
|
|
147
|
+
<!-- Status badge over image -->
|
|
148
|
+
@if (props.showStatusBadge !== false) {
|
|
149
|
+
<ion-badge [color]="getStatusColor()" class="status-badge">
|
|
150
|
+
{{ getStatusLabel() }}
|
|
151
|
+
</ion-badge>
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
<!-- Countdown overlay -->
|
|
155
|
+
@if (props.showCountdown && props.endDate && isActiveOrUpcoming) {
|
|
156
|
+
<div class="countdown-overlay">
|
|
157
|
+
<val-countdown
|
|
158
|
+
[props]="{
|
|
159
|
+
targetDate: props.endDate,
|
|
160
|
+
format: 'compact',
|
|
161
|
+
size: 'small',
|
|
162
|
+
color: 'light'
|
|
163
|
+
}"
|
|
164
|
+
></val-countdown>
|
|
165
|
+
</div>
|
|
166
|
+
}
|
|
167
|
+
</div>
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
<div class="card-content">
|
|
171
|
+
<!-- Header -->
|
|
172
|
+
<header class="card-header">
|
|
173
|
+
@if (props.showStatusBadge !== false && (props.variant === 'compact' || !props.coverImage)) {
|
|
174
|
+
<ion-badge [color]="getStatusColor()" class="status-badge inline">
|
|
175
|
+
{{ getStatusLabel() }}
|
|
176
|
+
</ion-badge>
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
<h3 class="card-title">{{ getTitle() }}</h3>
|
|
180
|
+
|
|
181
|
+
@if (props.description) {
|
|
182
|
+
<p class="card-description">{{ getDescription() }}</p>
|
|
183
|
+
}
|
|
184
|
+
</header>
|
|
185
|
+
|
|
186
|
+
<!-- Beneficiary -->
|
|
187
|
+
@if (props.beneficiary) {
|
|
188
|
+
<div class="beneficiary-info">
|
|
189
|
+
<ion-icon name="heart-outline"></ion-icon>
|
|
190
|
+
@if (props.beneficiaryImage) {
|
|
191
|
+
<val-image [props]="props.beneficiaryImage" class="beneficiary-image"></val-image>
|
|
192
|
+
}
|
|
193
|
+
<span>{{ props.beneficiary }}</span>
|
|
194
|
+
</div>
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
<!-- Prize preview -->
|
|
198
|
+
@if (props.prize && props.variant !== 'compact') {
|
|
199
|
+
<div class="prize-preview">
|
|
200
|
+
<div class="prize-header">
|
|
201
|
+
<ion-icon name="gift-outline"></ion-icon>
|
|
202
|
+
<span>Premio</span>
|
|
203
|
+
</div>
|
|
204
|
+
<div class="prize-name">{{ props.prize.name }}</div>
|
|
205
|
+
@if (props.prize.value) {
|
|
206
|
+
<div class="prize-value">
|
|
207
|
+
{{ formatCurrency(props.prize.value) }}
|
|
208
|
+
</div>
|
|
209
|
+
}
|
|
210
|
+
</div>
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
<!-- Progress -->
|
|
214
|
+
@if (props.showProgress !== false && props.progress) {
|
|
215
|
+
<div class="progress-section">
|
|
216
|
+
<div class="progress-header">
|
|
217
|
+
<span class="progress-label">Progreso</span>
|
|
218
|
+
<span class="progress-value">{{ progressPercentage }}%</span>
|
|
219
|
+
</div>
|
|
220
|
+
<ion-progress-bar
|
|
221
|
+
[value]="progressPercentage / 100"
|
|
222
|
+
[color]="getProgressColor()"
|
|
223
|
+
></ion-progress-bar>
|
|
224
|
+
</div>
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
<!-- Ticket stats -->
|
|
228
|
+
@if (props.showTicketStats !== false && props.progress) {
|
|
229
|
+
<div class="ticket-stats">
|
|
230
|
+
<div class="stat">
|
|
231
|
+
<ion-icon name="ticket-outline"></ion-icon>
|
|
232
|
+
<span class="stat-value">{{ props.progress.soldTickets }}</span>
|
|
233
|
+
<span class="stat-label">vendidos</span>
|
|
234
|
+
</div>
|
|
235
|
+
<div class="stat-divider"></div>
|
|
236
|
+
<div class="stat">
|
|
237
|
+
<span class="stat-value">{{ props.progress.totalTickets - props.progress.soldTickets }}</span>
|
|
238
|
+
<span class="stat-label">disponibles</span>
|
|
239
|
+
</div>
|
|
240
|
+
</div>
|
|
241
|
+
}
|
|
242
|
+
|
|
243
|
+
<!-- Price -->
|
|
244
|
+
@if (props.showPrice !== false && props.ticketPrice) {
|
|
245
|
+
<div class="price-section">
|
|
246
|
+
<val-price-tag
|
|
247
|
+
[props]="{
|
|
248
|
+
amount: props.ticketPrice,
|
|
249
|
+
currency: props.currency || 'MXN',
|
|
250
|
+
currencySymbol: props.currencySymbol,
|
|
251
|
+
period: 'por boleto',
|
|
252
|
+
size: props.size === 'large' ? 'large' : 'medium',
|
|
253
|
+
variant: 'highlight'
|
|
254
|
+
}"
|
|
255
|
+
></val-price-tag>
|
|
256
|
+
</div>
|
|
257
|
+
}
|
|
258
|
+
|
|
259
|
+
<!-- Dates -->
|
|
260
|
+
@if (props.showDates !== false && (props.startDate || props.endDate)) {
|
|
261
|
+
<div class="dates-section">
|
|
262
|
+
@if (props.startDate) {
|
|
263
|
+
<div class="date-item">
|
|
264
|
+
<ion-icon name="calendar-outline"></ion-icon>
|
|
265
|
+
<span>Inicia: {{ formatDate(props.startDate) }}</span>
|
|
266
|
+
</div>
|
|
267
|
+
}
|
|
268
|
+
@if (props.endDate) {
|
|
269
|
+
<div class="date-item">
|
|
270
|
+
<ion-icon name="time-outline"></ion-icon>
|
|
271
|
+
<span>Sorteo: {{ formatDate(props.endDate) }}</span>
|
|
272
|
+
</div>
|
|
273
|
+
}
|
|
274
|
+
</div>
|
|
275
|
+
}
|
|
276
|
+
|
|
277
|
+
<!-- Actions -->
|
|
278
|
+
@if (props.primaryAction || props.secondaryAction) {
|
|
279
|
+
<div class="card-actions">
|
|
280
|
+
@if (props.primaryAction) {
|
|
281
|
+
<val-button
|
|
282
|
+
[props]="props.primaryAction"
|
|
283
|
+
(click)="onPrimaryAction()"
|
|
284
|
+
></val-button>
|
|
285
|
+
}
|
|
286
|
+
@if (props.secondaryAction) {
|
|
287
|
+
<val-button
|
|
288
|
+
[props]="props.secondaryAction"
|
|
289
|
+
(click)="onSecondaryAction()"
|
|
290
|
+
></val-button>
|
|
291
|
+
}
|
|
292
|
+
</div>
|
|
293
|
+
}
|
|
294
|
+
</div>
|
|
295
|
+
</article>
|
|
296
|
+
`, isInline: true, styles: [":host{display:block}.raffle-card{display:flex;flex-direction:column;background:var(--ion-color-light);border-radius:12px;overflow:hidden;box-shadow:0 2px 8px #00000014;transition:transform .2s,box-shadow .2s}.raffle-card:hover{transform:translateY(-2px);box-shadow:0 4px 16px #0000001f}.card-image{position:relative;aspect-ratio:16/9;overflow:hidden}.card-image val-image{width:100%;height:100%}.card-image val-image ::ng-deep img{width:100%;height:100%;object-fit:cover}.status-badge{position:absolute;top:12px;left:12px;font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.5px;padding:4px 10px;border-radius:4px}.status-badge.inline{position:static;margin-bottom:8px}.countdown-overlay{position:absolute;bottom:0;left:0;right:0;padding:8px 12px;background:linear-gradient(transparent,#000000b3)}.card-content{display:flex;flex-direction:column;gap:12px;padding:16px}.card-header{display:flex;flex-direction:column;gap:4px}.card-title{font-size:18px;font-weight:600;color:var(--ion-color-dark);margin:0;line-height:1.3}.card-description{font-size:14px;color:var(--ion-color-medium-shade);margin:0;line-height:1.4;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.beneficiary-info{display:flex;align-items:center;gap:8px;font-size:13px;color:var(--ion-color-medium-shade)}.beneficiary-info ion-icon{font-size:16px;color:var(--ion-color-danger)}.beneficiary-info .beneficiary-image{width:24px;height:24px;border-radius:50%;overflow:hidden}.prize-preview{padding:12px;background:var(--ion-color-light-shade);border-radius:8px}.prize-header{display:flex;align-items:center;gap:4px;font-size:11px;text-transform:uppercase;letter-spacing:.5px;color:var(--ion-color-medium);margin-bottom:4px}.prize-header ion-icon{font-size:14px;color:var(--ion-color-warning)}.prize-name{font-size:15px;font-weight:600;color:var(--ion-color-dark)}.prize-value{font-size:18px;font-weight:700;color:var(--ion-color-success);margin-top:4px}.progress-section{display:flex;flex-direction:column;gap:6px}.progress-header{display:flex;justify-content:space-between;align-items:center}.progress-label{font-size:12px;color:var(--ion-color-medium-shade)}.progress-value{font-size:14px;font-weight:600;color:var(--ion-color-dark)}ion-progress-bar{height:8px;border-radius:4px;--background: var(--ion-color-light-shade)}.ticket-stats{display:flex;align-items:center;justify-content:center;gap:16px;padding:12px;background:var(--ion-color-light-shade);border-radius:8px}.stat{display:flex;align-items:center;gap:6px;font-size:13px}.stat ion-icon{font-size:18px;color:var(--ion-color-primary)}.stat-value{font-weight:700;color:var(--ion-color-dark);font-size:16px}.stat-label{color:var(--ion-color-medium-shade)}.stat-divider{width:1px;height:24px;background:var(--ion-color-medium-tint)}.price-section{display:flex;justify-content:center;padding:8px 0}.dates-section{display:flex;flex-direction:column;gap:6px;font-size:13px;color:var(--ion-color-medium-shade)}.date-item{display:flex;align-items:center;gap:6px}.date-item ion-icon{font-size:16px;color:var(--ion-color-primary)}.card-actions{display:flex;gap:8px;margin-top:4px}.card-actions val-button{flex:1}.variant-featured{border:2px solid var(--ion-color-warning)}.variant-featured .card-image{aspect-ratio:2/1}.variant-featured .card-title{font-size:22px}.variant-compact .card-content{padding:12px;gap:8px}.variant-compact .card-title{font-size:15px}.variant-compact .card-description{font-size:13px;-webkit-line-clamp:1}.variant-compact .ticket-stats,.variant-compact .dates-section{display:none}.variant-horizontal{flex-direction:row}.variant-horizontal .card-image{width:40%;min-width:150px;aspect-ratio:1}.variant-horizontal .card-content{flex:1;justify-content:center}.size-small .card-content{padding:12px;gap:8px}.size-small .card-title{font-size:15px}.size-small .card-description{font-size:12px}.size-small .ticket-stats{padding:8px}.size-small .stat-value{font-size:14px}.size-large .card-content{padding:24px;gap:16px}.size-large .card-title{font-size:24px}.size-large .card-description{font-size:16px}.size-large .prize-name{font-size:18px}.size-large .prize-value{font-size:22px}.status-upcoming{opacity:.9}.status-sold_out .card-image:after{content:\"\";position:absolute;inset:0;background:#0000004d}.status-completed .card-actions{opacity:.5;pointer-events:none}.status-cancelled{opacity:.6}.status-cancelled .card-image:after{content:\"\";position:absolute;inset:0;background:#0006}@media (max-width: 480px){.variant-horizontal{flex-direction:column}.variant-horizontal .card-image{width:100%;aspect-ratio:16/9}}\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"] }, { kind: "component", type: IonBadge, selector: "ion-badge", inputs: ["color", "mode"] }, { kind: "component", type: IonProgressBar, selector: "ion-progress-bar", inputs: ["buffer", "color", "mode", "reversed", "type", "value"] }, { kind: "component", type: ImageComponent, selector: "val-image", inputs: ["props"] }, { kind: "component", type: ButtonComponent, selector: "val-button", inputs: ["props"], outputs: ["onClick"] }, { kind: "component", type: CountdownComponent, selector: "val-countdown", inputs: ["props"], outputs: ["complete", "tick"] }, { kind: "component", type: PriceTagComponent, selector: "val-price-tag", inputs: ["props"] }] }); }
|
|
297
|
+
}
|
|
298
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: RaffleStatusCardComponent, decorators: [{
|
|
299
|
+
type: Component,
|
|
300
|
+
args: [{ selector: 'val-raffle-status-card', standalone: true, imports: [
|
|
301
|
+
CommonModule,
|
|
302
|
+
IonIcon,
|
|
303
|
+
IonBadge,
|
|
304
|
+
IonProgressBar,
|
|
305
|
+
ImageComponent,
|
|
306
|
+
ButtonComponent,
|
|
307
|
+
CountdownComponent,
|
|
308
|
+
PriceTagComponent,
|
|
309
|
+
], template: `
|
|
310
|
+
<article
|
|
311
|
+
class="raffle-card"
|
|
312
|
+
[class]="props.cssClass"
|
|
313
|
+
[class.variant-default]="props.variant === 'default' || !props.variant"
|
|
314
|
+
[class.variant-featured]="props.variant === 'featured'"
|
|
315
|
+
[class.variant-compact]="props.variant === 'compact'"
|
|
316
|
+
[class.variant-horizontal]="props.variant === 'horizontal'"
|
|
317
|
+
[class.size-small]="props.size === 'small'"
|
|
318
|
+
[class.size-medium]="props.size === 'medium' || !props.size"
|
|
319
|
+
[class.size-large]="props.size === 'large'"
|
|
320
|
+
[class]="'status-' + props.status"
|
|
321
|
+
>
|
|
322
|
+
<!-- Cover image -->
|
|
323
|
+
@if (props.coverImage && props.variant !== 'compact') {
|
|
324
|
+
<div class="card-image">
|
|
325
|
+
<val-image [props]="props.coverImage"></val-image>
|
|
326
|
+
|
|
327
|
+
<!-- Status badge over image -->
|
|
328
|
+
@if (props.showStatusBadge !== false) {
|
|
329
|
+
<ion-badge [color]="getStatusColor()" class="status-badge">
|
|
330
|
+
{{ getStatusLabel() }}
|
|
331
|
+
</ion-badge>
|
|
332
|
+
}
|
|
333
|
+
|
|
334
|
+
<!-- Countdown overlay -->
|
|
335
|
+
@if (props.showCountdown && props.endDate && isActiveOrUpcoming) {
|
|
336
|
+
<div class="countdown-overlay">
|
|
337
|
+
<val-countdown
|
|
338
|
+
[props]="{
|
|
339
|
+
targetDate: props.endDate,
|
|
340
|
+
format: 'compact',
|
|
341
|
+
size: 'small',
|
|
342
|
+
color: 'light'
|
|
343
|
+
}"
|
|
344
|
+
></val-countdown>
|
|
345
|
+
</div>
|
|
346
|
+
}
|
|
347
|
+
</div>
|
|
348
|
+
}
|
|
349
|
+
|
|
350
|
+
<div class="card-content">
|
|
351
|
+
<!-- Header -->
|
|
352
|
+
<header class="card-header">
|
|
353
|
+
@if (props.showStatusBadge !== false && (props.variant === 'compact' || !props.coverImage)) {
|
|
354
|
+
<ion-badge [color]="getStatusColor()" class="status-badge inline">
|
|
355
|
+
{{ getStatusLabel() }}
|
|
356
|
+
</ion-badge>
|
|
357
|
+
}
|
|
358
|
+
|
|
359
|
+
<h3 class="card-title">{{ getTitle() }}</h3>
|
|
360
|
+
|
|
361
|
+
@if (props.description) {
|
|
362
|
+
<p class="card-description">{{ getDescription() }}</p>
|
|
363
|
+
}
|
|
364
|
+
</header>
|
|
365
|
+
|
|
366
|
+
<!-- Beneficiary -->
|
|
367
|
+
@if (props.beneficiary) {
|
|
368
|
+
<div class="beneficiary-info">
|
|
369
|
+
<ion-icon name="heart-outline"></ion-icon>
|
|
370
|
+
@if (props.beneficiaryImage) {
|
|
371
|
+
<val-image [props]="props.beneficiaryImage" class="beneficiary-image"></val-image>
|
|
372
|
+
}
|
|
373
|
+
<span>{{ props.beneficiary }}</span>
|
|
374
|
+
</div>
|
|
375
|
+
}
|
|
376
|
+
|
|
377
|
+
<!-- Prize preview -->
|
|
378
|
+
@if (props.prize && props.variant !== 'compact') {
|
|
379
|
+
<div class="prize-preview">
|
|
380
|
+
<div class="prize-header">
|
|
381
|
+
<ion-icon name="gift-outline"></ion-icon>
|
|
382
|
+
<span>Premio</span>
|
|
383
|
+
</div>
|
|
384
|
+
<div class="prize-name">{{ props.prize.name }}</div>
|
|
385
|
+
@if (props.prize.value) {
|
|
386
|
+
<div class="prize-value">
|
|
387
|
+
{{ formatCurrency(props.prize.value) }}
|
|
388
|
+
</div>
|
|
389
|
+
}
|
|
390
|
+
</div>
|
|
391
|
+
}
|
|
392
|
+
|
|
393
|
+
<!-- Progress -->
|
|
394
|
+
@if (props.showProgress !== false && props.progress) {
|
|
395
|
+
<div class="progress-section">
|
|
396
|
+
<div class="progress-header">
|
|
397
|
+
<span class="progress-label">Progreso</span>
|
|
398
|
+
<span class="progress-value">{{ progressPercentage }}%</span>
|
|
399
|
+
</div>
|
|
400
|
+
<ion-progress-bar
|
|
401
|
+
[value]="progressPercentage / 100"
|
|
402
|
+
[color]="getProgressColor()"
|
|
403
|
+
></ion-progress-bar>
|
|
404
|
+
</div>
|
|
405
|
+
}
|
|
406
|
+
|
|
407
|
+
<!-- Ticket stats -->
|
|
408
|
+
@if (props.showTicketStats !== false && props.progress) {
|
|
409
|
+
<div class="ticket-stats">
|
|
410
|
+
<div class="stat">
|
|
411
|
+
<ion-icon name="ticket-outline"></ion-icon>
|
|
412
|
+
<span class="stat-value">{{ props.progress.soldTickets }}</span>
|
|
413
|
+
<span class="stat-label">vendidos</span>
|
|
414
|
+
</div>
|
|
415
|
+
<div class="stat-divider"></div>
|
|
416
|
+
<div class="stat">
|
|
417
|
+
<span class="stat-value">{{ props.progress.totalTickets - props.progress.soldTickets }}</span>
|
|
418
|
+
<span class="stat-label">disponibles</span>
|
|
419
|
+
</div>
|
|
420
|
+
</div>
|
|
421
|
+
}
|
|
422
|
+
|
|
423
|
+
<!-- Price -->
|
|
424
|
+
@if (props.showPrice !== false && props.ticketPrice) {
|
|
425
|
+
<div class="price-section">
|
|
426
|
+
<val-price-tag
|
|
427
|
+
[props]="{
|
|
428
|
+
amount: props.ticketPrice,
|
|
429
|
+
currency: props.currency || 'MXN',
|
|
430
|
+
currencySymbol: props.currencySymbol,
|
|
431
|
+
period: 'por boleto',
|
|
432
|
+
size: props.size === 'large' ? 'large' : 'medium',
|
|
433
|
+
variant: 'highlight'
|
|
434
|
+
}"
|
|
435
|
+
></val-price-tag>
|
|
436
|
+
</div>
|
|
437
|
+
}
|
|
438
|
+
|
|
439
|
+
<!-- Dates -->
|
|
440
|
+
@if (props.showDates !== false && (props.startDate || props.endDate)) {
|
|
441
|
+
<div class="dates-section">
|
|
442
|
+
@if (props.startDate) {
|
|
443
|
+
<div class="date-item">
|
|
444
|
+
<ion-icon name="calendar-outline"></ion-icon>
|
|
445
|
+
<span>Inicia: {{ formatDate(props.startDate) }}</span>
|
|
446
|
+
</div>
|
|
447
|
+
}
|
|
448
|
+
@if (props.endDate) {
|
|
449
|
+
<div class="date-item">
|
|
450
|
+
<ion-icon name="time-outline"></ion-icon>
|
|
451
|
+
<span>Sorteo: {{ formatDate(props.endDate) }}</span>
|
|
452
|
+
</div>
|
|
453
|
+
}
|
|
454
|
+
</div>
|
|
455
|
+
}
|
|
456
|
+
|
|
457
|
+
<!-- Actions -->
|
|
458
|
+
@if (props.primaryAction || props.secondaryAction) {
|
|
459
|
+
<div class="card-actions">
|
|
460
|
+
@if (props.primaryAction) {
|
|
461
|
+
<val-button
|
|
462
|
+
[props]="props.primaryAction"
|
|
463
|
+
(click)="onPrimaryAction()"
|
|
464
|
+
></val-button>
|
|
465
|
+
}
|
|
466
|
+
@if (props.secondaryAction) {
|
|
467
|
+
<val-button
|
|
468
|
+
[props]="props.secondaryAction"
|
|
469
|
+
(click)="onSecondaryAction()"
|
|
470
|
+
></val-button>
|
|
471
|
+
}
|
|
472
|
+
</div>
|
|
473
|
+
}
|
|
474
|
+
</div>
|
|
475
|
+
</article>
|
|
476
|
+
`, styles: [":host{display:block}.raffle-card{display:flex;flex-direction:column;background:var(--ion-color-light);border-radius:12px;overflow:hidden;box-shadow:0 2px 8px #00000014;transition:transform .2s,box-shadow .2s}.raffle-card:hover{transform:translateY(-2px);box-shadow:0 4px 16px #0000001f}.card-image{position:relative;aspect-ratio:16/9;overflow:hidden}.card-image val-image{width:100%;height:100%}.card-image val-image ::ng-deep img{width:100%;height:100%;object-fit:cover}.status-badge{position:absolute;top:12px;left:12px;font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.5px;padding:4px 10px;border-radius:4px}.status-badge.inline{position:static;margin-bottom:8px}.countdown-overlay{position:absolute;bottom:0;left:0;right:0;padding:8px 12px;background:linear-gradient(transparent,#000000b3)}.card-content{display:flex;flex-direction:column;gap:12px;padding:16px}.card-header{display:flex;flex-direction:column;gap:4px}.card-title{font-size:18px;font-weight:600;color:var(--ion-color-dark);margin:0;line-height:1.3}.card-description{font-size:14px;color:var(--ion-color-medium-shade);margin:0;line-height:1.4;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.beneficiary-info{display:flex;align-items:center;gap:8px;font-size:13px;color:var(--ion-color-medium-shade)}.beneficiary-info ion-icon{font-size:16px;color:var(--ion-color-danger)}.beneficiary-info .beneficiary-image{width:24px;height:24px;border-radius:50%;overflow:hidden}.prize-preview{padding:12px;background:var(--ion-color-light-shade);border-radius:8px}.prize-header{display:flex;align-items:center;gap:4px;font-size:11px;text-transform:uppercase;letter-spacing:.5px;color:var(--ion-color-medium);margin-bottom:4px}.prize-header ion-icon{font-size:14px;color:var(--ion-color-warning)}.prize-name{font-size:15px;font-weight:600;color:var(--ion-color-dark)}.prize-value{font-size:18px;font-weight:700;color:var(--ion-color-success);margin-top:4px}.progress-section{display:flex;flex-direction:column;gap:6px}.progress-header{display:flex;justify-content:space-between;align-items:center}.progress-label{font-size:12px;color:var(--ion-color-medium-shade)}.progress-value{font-size:14px;font-weight:600;color:var(--ion-color-dark)}ion-progress-bar{height:8px;border-radius:4px;--background: var(--ion-color-light-shade)}.ticket-stats{display:flex;align-items:center;justify-content:center;gap:16px;padding:12px;background:var(--ion-color-light-shade);border-radius:8px}.stat{display:flex;align-items:center;gap:6px;font-size:13px}.stat ion-icon{font-size:18px;color:var(--ion-color-primary)}.stat-value{font-weight:700;color:var(--ion-color-dark);font-size:16px}.stat-label{color:var(--ion-color-medium-shade)}.stat-divider{width:1px;height:24px;background:var(--ion-color-medium-tint)}.price-section{display:flex;justify-content:center;padding:8px 0}.dates-section{display:flex;flex-direction:column;gap:6px;font-size:13px;color:var(--ion-color-medium-shade)}.date-item{display:flex;align-items:center;gap:6px}.date-item ion-icon{font-size:16px;color:var(--ion-color-primary)}.card-actions{display:flex;gap:8px;margin-top:4px}.card-actions val-button{flex:1}.variant-featured{border:2px solid var(--ion-color-warning)}.variant-featured .card-image{aspect-ratio:2/1}.variant-featured .card-title{font-size:22px}.variant-compact .card-content{padding:12px;gap:8px}.variant-compact .card-title{font-size:15px}.variant-compact .card-description{font-size:13px;-webkit-line-clamp:1}.variant-compact .ticket-stats,.variant-compact .dates-section{display:none}.variant-horizontal{flex-direction:row}.variant-horizontal .card-image{width:40%;min-width:150px;aspect-ratio:1}.variant-horizontal .card-content{flex:1;justify-content:center}.size-small .card-content{padding:12px;gap:8px}.size-small .card-title{font-size:15px}.size-small .card-description{font-size:12px}.size-small .ticket-stats{padding:8px}.size-small .stat-value{font-size:14px}.size-large .card-content{padding:24px;gap:16px}.size-large .card-title{font-size:24px}.size-large .card-description{font-size:16px}.size-large .prize-name{font-size:18px}.size-large .prize-value{font-size:22px}.status-upcoming{opacity:.9}.status-sold_out .card-image:after{content:\"\";position:absolute;inset:0;background:#0000004d}.status-completed .card-actions{opacity:.5;pointer-events:none}.status-cancelled{opacity:.6}.status-cancelled .card-image:after{content:\"\";position:absolute;inset:0;background:#0006}@media (max-width: 480px){.variant-horizontal{flex-direction:column}.variant-horizontal .card-image{width:100%;aspect-ratio:16/9}}\n"] }]
|
|
477
|
+
}], propDecorators: { props: [{
|
|
478
|
+
type: Input
|
|
479
|
+
}], primaryActionClick: [{
|
|
480
|
+
type: Output
|
|
481
|
+
}], secondaryActionClick: [{
|
|
482
|
+
type: Output
|
|
483
|
+
}] } });
|
|
484
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFmZmxlLXN0YXR1cy1jYXJkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9tb2xlY3VsZXMvcmFmZmxlLXN0YXR1cy1jYXJkL3JhZmZsZS1zdGF0dXMtY2FyZC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9FLE9BQU8sRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLGNBQWMsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzlFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDcEMsT0FBTyxFQUNMLGFBQWEsRUFDYixlQUFlLEVBQ2YsV0FBVyxFQUNYLFlBQVksRUFDWixXQUFXLEdBQ1osTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sdURBQXVELENBQUM7QUFDcEYsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUN0RSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUMvRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUM5RSxPQUFPLEVBRUwscUJBQXFCLEVBQ3JCLHFCQUFxQixHQUN0QixNQUFNLFNBQVMsQ0FBQzs7QUFFakIsUUFBUSxDQUFDO0lBQ1AsYUFBYTtJQUNiLGVBQWU7SUFDZixXQUFXO0lBQ1gsWUFBWTtJQUNaLFdBQVc7Q0FDWixDQUFDLENBQUM7QUF5TEg7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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Q1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBdUtUOzhCQWlEUSxLQUFLO3NCQUFiLEtBQUs7Z0JBRUksa0JBQWtCO3NCQUEzQixNQUFNO2dCQUNHLG9CQUFvQjtzQkFBN0IsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJb25JY29uLCBJb25CYWRnZSwgSW9uUHJvZ3Jlc3NCYXIgfSBmcm9tICdAaW9uaWMvYW5ndWxhci9zdGFuZGFsb25lJztcbmltcG9ydCB7IGFkZEljb25zIH0gZnJvbSAnaW9uaWNvbnMnO1xuaW1wb3J0IHtcbiAgdGlja2V0T3V0bGluZSxcbiAgY2FsZW5kYXJPdXRsaW5lLFxuICBnaWZ0T3V0bGluZSxcbiAgaGVhcnRPdXRsaW5lLFxuICB0aW1lT3V0bGluZSxcbn0gZnJvbSAnaW9uaWNvbnMvaWNvbnMnO1xuaW1wb3J0IHsgTGFuZ1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9sYW5nLXByb3ZpZGVyL2xhbmctcHJvdmlkZXIuc2VydmljZSc7XG5pbXBvcnQgeyBJbWFnZUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2F0b21zL2ltYWdlL2ltYWdlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBCdXR0b25Db21wb25lbnQgfSBmcm9tICcuLi8uLi9hdG9tcy9idXR0b24vYnV0dG9uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDb3VudGRvd25Db21wb25lbnQgfSBmcm9tICcuLi8uLi9hdG9tcy9jb3VudGRvd24vY291bnRkb3duLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBQcmljZVRhZ0NvbXBvbmVudCB9IGZyb20gJy4uLy4uL2F0b21zL3ByaWNlLXRhZy9wcmljZS10YWcuY29tcG9uZW50JztcbmltcG9ydCB7XG4gIFJhZmZsZVN0YXR1c0NhcmRNZXRhZGF0YSxcbiAgREVGQVVMVF9TVEFUVVNfTEFCRUxTLFxuICBERUZBVUxUX1NUQVRVU19DT0xPUlMsXG59IGZyb20gJy4vdHlwZXMnO1xuXG5hZGRJY29ucyh7XG4gIHRpY2tldE91dGxpbmUsXG4gIGNhbGVuZGFyT3V0bGluZSxcbiAgZ2lmdE91dGxpbmUsXG4gIGhlYXJ0T3V0bGluZSxcbiAgdGltZU91dGxpbmUsXG59KTtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmFsLXJhZmZsZS1zdGF0dXMtY2FyZCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgSW9uSWNvbixcbiAgICBJb25CYWRnZSxcbiAgICBJb25Qcm9ncmVzc0JhcixcbiAgICBJbWFnZUNvbXBvbmVudCxcbiAgICBCdXR0b25Db21wb25lbnQsXG4gICAgQ291bnRkb3duQ29tcG9uZW50LFxuICAgIFByaWNlVGFnQ29tcG9uZW50LFxuICBdLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxhcnRpY2xlXG4gICAgICBjbGFzcz1cInJhZmZsZS1jYXJkXCJcbiAgICAgIFtjbGFzc109XCJwcm9wcy5jc3NDbGFzc1wiXG4gICAgICBbY2xhc3MudmFyaWFudC1kZWZhdWx0XT1cInByb3BzLnZhcmlhbnQgPT09ICdkZWZhdWx0JyB8fCAhcHJvcHMudmFyaWFudFwiXG4gICAgICBbY2xhc3MudmFyaWFudC1mZWF0dXJlZF09XCJwcm9wcy52YXJpYW50ID09PSAnZmVhdHVyZWQnXCJcbiAgICAgIFtjbGFzcy52YXJpYW50LWNvbXBhY3RdPVwicHJvcHMudmFyaWFudCA9PT0gJ2NvbXBhY3QnXCJcbiAgICAgIFtjbGFzcy52YXJpYW50LWhvcml6b250YWxdPVwicHJvcHMudmFyaWFudCA9PT0gJ2hvcml6b250YWwnXCJcbiAgICAgIFtjbGFzcy5zaXplLXNtYWxsXT1cInByb3BzLnNpemUgPT09ICdzbWFsbCdcIlxuICAgICAgW2NsYXNzLnNpemUtbWVkaXVtXT1cInByb3BzLnNpemUgPT09ICdtZWRpdW0nIHx8ICFwcm9wcy5zaXplXCJcbiAgICAgIFtjbGFzcy5zaXplLWxhcmdlXT1cInByb3BzLnNpemUgPT09ICdsYXJnZSdcIlxuICAgICAgW2NsYXNzXT1cIidzdGF0dXMtJyArIHByb3BzLnN0YXR1c1wiXG4gICAgPlxuICAgICAgPCEtLSBDb3ZlciBpbWFnZSAtLT5cbiAgICAgIEBpZiAocHJvcHMuY292ZXJJbWFnZSAmJiBwcm9wcy52YXJpYW50ICE9PSAnY29tcGFjdCcpIHtcbiAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtaW1hZ2VcIj5cbiAgICAgICAgICA8dmFsLWltYWdlIFtwcm9wc109XCJwcm9wcy5jb3ZlckltYWdlXCI+PC92YWwtaW1hZ2U+XG5cbiAgICAgICAgICA8IS0tIFN0YXR1cyBiYWRnZSBvdmVyIGltYWdlIC0tPlxuICAgICAgICAgIEBpZiAocHJvcHMuc2hvd1N0YXR1c0JhZGdlICE9PSBmYWxzZSkge1xuICAgICAgICAgICAgPGlvbi1iYWRnZSBbY29sb3JdPVwiZ2V0U3RhdHVzQ29sb3IoKVwiIGNsYXNzPVwic3RhdHVzLWJhZGdlXCI+XG4gICAgICAgICAgICAgIHt7IGdldFN0YXR1c0xhYmVsKCkgfX1cbiAgICAgICAgICAgIDwvaW9uLWJhZGdlPlxuICAgICAgICAgIH1cblxuICAgICAgICAgIDwhLS0gQ291bnRkb3duIG92ZXJsYXkgLS0+XG4gICAgICAgICAgQGlmIChwcm9wcy5zaG93Q291bnRkb3duICYmIHByb3BzLmVuZERhdGUgJiYgaXNBY3RpdmVPclVwY29taW5nKSB7XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY291bnRkb3duLW92ZXJsYXlcIj5cbiAgICAgICAgICAgICAgPHZhbC1jb3VudGRvd25cbiAgICAgICAgICAgICAgICBbcHJvcHNdPVwie1xuICAgICAgICAgICAgICAgICAgdGFyZ2V0RGF0ZTogcHJvcHMuZW5kRGF0ZSxcbiAgICAgICAgICAgICAgICAgIGZvcm1hdDogJ2NvbXBhY3QnLFxuICAgICAgICAgICAgICAgICAgc2l6ZTogJ3NtYWxsJyxcbiAgICAgICAgICAgICAgICAgIGNvbG9yOiAnbGlnaHQnXG4gICAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAgID48L3ZhbC1jb3VudGRvd24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuICAgICAgfVxuXG4gICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1jb250ZW50XCI+XG4gICAgICAgIDwhLS0gSGVhZGVyIC0tPlxuICAgICAgICA8aGVhZGVyIGNsYXNzPVwiY2FyZC1oZWFkZXJcIj5cbiAgICAgICAgICBAaWYgKHByb3BzLnNob3dTdGF0dXNCYWRnZSAhPT0gZmFsc2UgJiYgKHByb3BzLnZhcmlhbnQgPT09ICdjb21wYWN0JyB8fCAhcHJvcHMuY292ZXJJbWFnZSkpIHtcbiAgICAgICAgICAgIDxpb24tYmFkZ2UgW2NvbG9yXT1cImdldFN0YXR1c0NvbG9yKClcIiBjbGFzcz1cInN0YXR1cy1iYWRnZSBpbmxpbmVcIj5cbiAgICAgICAgICAgICAge3sgZ2V0U3RhdHVzTGFiZWwoKSB9fVxuICAgICAgICAgICAgPC9pb24tYmFkZ2U+XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgPGgzIGNsYXNzPVwiY2FyZC10aXRsZVwiPnt7IGdldFRpdGxlKCkgfX08L2gzPlxuXG4gICAgICAgICAgQGlmIChwcm9wcy5kZXNjcmlwdGlvbikge1xuICAgICAgICAgICAgPHAgY2xhc3M9XCJjYXJkLWRlc2NyaXB0aW9uXCI+e3sgZ2V0RGVzY3JpcHRpb24oKSB9fTwvcD5cbiAgICAgICAgICB9XG4gICAgICAgIDwvaGVhZGVyPlxuXG4gICAgICAgIDwhLS0gQmVuZWZpY2lhcnkgLS0+XG4gICAgICAgIEBpZiAocHJvcHMuYmVuZWZpY2lhcnkpIHtcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiYmVuZWZpY2lhcnktaW5mb1wiPlxuICAgICAgICAgICAgPGlvbi1pY29uIG5hbWU9XCJoZWFydC1vdXRsaW5lXCI+PC9pb24taWNvbj5cbiAgICAgICAgICAgIEBpZiAocHJvcHMuYmVuZWZpY2lhcnlJbWFnZSkge1xuICAgICAgICAgICAgICA8dmFsLWltYWdlIFtwcm9wc109XCJwcm9wcy5iZW5lZmljaWFyeUltYWdlXCIgY2xhc3M9XCJiZW5lZmljaWFyeS1pbWFnZVwiPjwvdmFsLWltYWdlPlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgPHNwYW4+e3sgcHJvcHMuYmVuZWZpY2lhcnkgfX08L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cblxuICAgICAgICA8IS0tIFByaXplIHByZXZpZXcgLS0+XG4gICAgICAgIEBpZiAocHJvcHMucHJpemUgJiYgcHJvcHMudmFyaWFudCAhPT0gJ2NvbXBhY3QnKSB7XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInByaXplLXByZXZpZXdcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwcml6ZS1oZWFkZXJcIj5cbiAgICAgICAgICAgICAgPGlvbi1pY29uIG5hbWU9XCJnaWZ0LW91dGxpbmVcIj48L2lvbi1pY29uPlxuICAgICAgICAgICAgICA8c3Bhbj5QcmVtaW88L3NwYW4+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwcml6ZS1uYW1lXCI+e3sgcHJvcHMucHJpemUubmFtZSB9fTwvZGl2PlxuICAgICAgICAgICAgQGlmIChwcm9wcy5wcml6ZS52YWx1ZSkge1xuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHJpemUtdmFsdWVcIj5cbiAgICAgICAgICAgICAgICB7eyBmb3JtYXRDdXJyZW5jeShwcm9wcy5wcml6ZS52YWx1ZSkgfX1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cblxuICAgICAgICA8IS0tIFByb2dyZXNzIC0tPlxuICAgICAgICBAaWYgKHByb3BzLnNob3dQcm9ncmVzcyAhPT0gZmFsc2UgJiYgcHJvcHMucHJvZ3Jlc3MpIHtcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicHJvZ3Jlc3Mtc2VjdGlvblwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInByb2dyZXNzLWhlYWRlclwiPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInByb2dyZXNzLWxhYmVsXCI+UHJvZ3Jlc288L3NwYW4+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicHJvZ3Jlc3MtdmFsdWVcIj57eyBwcm9ncmVzc1BlcmNlbnRhZ2UgfX0lPC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8aW9uLXByb2dyZXNzLWJhclxuICAgICAgICAgICAgICBbdmFsdWVdPVwicHJvZ3Jlc3NQZXJjZW50YWdlIC8gMTAwXCJcbiAgICAgICAgICAgICAgW2NvbG9yXT1cImdldFByb2dyZXNzQ29sb3IoKVwiXG4gICAgICAgICAgICA+PC9pb24tcHJvZ3Jlc3MtYmFyPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICB9XG5cbiAgICAgICAgPCEtLSBUaWNrZXQgc3RhdHMgLS0+XG4gICAgICAgIEBpZiAocHJvcHMuc2hvd1RpY2tldFN0YXRzICE9PSBmYWxzZSAmJiBwcm9wcy5wcm9ncmVzcykge1xuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aWNrZXQtc3RhdHNcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdGF0XCI+XG4gICAgICAgICAgICAgIDxpb24taWNvbiBuYW1lPVwidGlja2V0LW91dGxpbmVcIj48L2lvbi1pY29uPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInN0YXQtdmFsdWVcIj57eyBwcm9wcy5wcm9ncmVzcy5zb2xkVGlja2V0cyB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzdGF0LWxhYmVsXCI+dmVuZGlkb3M8L3NwYW4+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdGF0LWRpdmlkZXJcIj48L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdGF0XCI+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3RhdC12YWx1ZVwiPnt7IHByb3BzLnByb2dyZXNzLnRvdGFsVGlja2V0cyAtIHByb3BzLnByb2dyZXNzLnNvbGRUaWNrZXRzIH19PC9zcGFuPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInN0YXQtbGFiZWxcIj5kaXNwb25pYmxlczwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICB9XG5cbiAgICAgICAgPCEtLSBQcmljZSAtLT5cbiAgICAgICAgQGlmIChwcm9wcy5zaG93UHJpY2UgIT09IGZhbHNlICYmIHByb3BzLnRpY2tldFByaWNlKSB7XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInByaWNlLXNlY3Rpb25cIj5cbiAgICAgICAgICAgIDx2YWwtcHJpY2UtdGFnXG4gICAgICAgICAgICAgIFtwcm9wc109XCJ7XG4gICAgICAgICAgICAgICAgYW1vdW50OiBwcm9wcy50aWNrZXRQcmljZSxcbiAgICAgICAgICAgICAgICBjdXJyZW5jeTogcHJvcHMuY3VycmVuY3kgfHwgJ01YTicsXG4gICAgICAgICAgICAgICAgY3VycmVuY3lTeW1ib2w6IHByb3BzLmN1cnJlbmN5U3ltYm9sLFxuICAgICAgICAgICAgICAgIHBlcmlvZDogJ3BvciBib2xldG8nLFxuICAgICAgICAgICAgICAgIHNpemU6IHByb3BzLnNpemUgPT09ICdsYXJnZScgPyAnbGFyZ2UnIDogJ21lZGl1bScsXG4gICAgICAgICAgICAgICAgdmFyaWFudDogJ2hpZ2hsaWdodCdcbiAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICA+PC92YWwtcHJpY2UtdGFnPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICB9XG5cbiAgICAgICAgPCEtLSBEYXRlcyAtLT5cbiAgICAgICAgQGlmIChwcm9wcy5zaG93RGF0ZXMgIT09IGZhbHNlICYmIChwcm9wcy5zdGFydERhdGUgfHwgcHJvcHMuZW5kRGF0ZSkpIHtcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGF0ZXMtc2VjdGlvblwiPlxuICAgICAgICAgICAgQGlmIChwcm9wcy5zdGFydERhdGUpIHtcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRhdGUtaXRlbVwiPlxuICAgICAgICAgICAgICAgIDxpb24taWNvbiBuYW1lPVwiY2FsZW5kYXItb3V0bGluZVwiPjwvaW9uLWljb24+XG4gICAgICAgICAgICAgICAgPHNwYW4+SW5pY2lhOiB7eyBmb3JtYXREYXRlKHByb3BzLnN0YXJ0RGF0ZSkgfX08L3NwYW4+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgQGlmIChwcm9wcy5lbmREYXRlKSB7XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkYXRlLWl0ZW1cIj5cbiAgICAgICAgICAgICAgICA8aW9uLWljb24gbmFtZT1cInRpbWUtb3V0bGluZVwiPjwvaW9uLWljb24+XG4gICAgICAgICAgICAgICAgPHNwYW4+U29ydGVvOiB7eyBmb3JtYXREYXRlKHByb3BzLmVuZERhdGUpIH19PC9zcGFuPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgfVxuXG4gICAgICAgIDwhLS0gQWN0aW9ucyAtLT5cbiAgICAgICAgQGlmIChwcm9wcy5wcmltYXJ5QWN0aW9uIHx8IHByb3BzLnNlY29uZGFyeUFjdGlvbikge1xuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWFjdGlvbnNcIj5cbiAgICAgICAgICAgIEBpZiAocHJvcHMucHJpbWFyeUFjdGlvbikge1xuICAgICAgICAgICAgICA8dmFsLWJ1dHRvblxuICAgICAgICAgICAgICAgIFtwcm9wc109XCJwcm9wcy5wcmltYXJ5QWN0aW9uXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwib25QcmltYXJ5QWN0aW9uKClcIlxuICAgICAgICAgICAgICA+PC92YWwtYnV0dG9uPlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgQGlmIChwcm9wcy5zZWNvbmRhcnlBY3Rpb24pIHtcbiAgICAgICAgICAgICAgPHZhbC1idXR0b25cbiAgICAgICAgICAgICAgICBbcHJvcHNdPVwicHJvcHMuc2Vjb25kYXJ5QWN0aW9uXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwib25TZWNvbmRhcnlBY3Rpb24oKVwiXG4gICAgICAgICAgICAgID48L3ZhbC1idXR0b24+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cbiAgICAgIDwvZGl2PlxuICAgIDwvYXJ0aWNsZT5cbiAgYCxcbiAgc3R5bGVVcmxzOiBbJy4vcmFmZmxlLXN0YXR1cy1jYXJkLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuLyoqXG4gKiB2YWwtcmFmZmxlLXN0YXR1cy1jYXJkXG4gKlxuICogQSBjYXJkIGNvbXBvbmVudCBmb3IgZGlzcGxheWluZyByYWZmbGUgc3RhdHVzIGFuZCBpbmZvcm1hdGlvbi5cbiAqXG4gKiBAZXhhbXBsZSBCYXNpYyB1c2FnZVxuICogYGBgaHRtbFxuICogPHZhbC1yYWZmbGUtc3RhdHVzLWNhcmRcbiAqICAgW3Byb3BzXT1cIntcbiAqICAgICB0aXRsZTogJ1JpZmEgQmVuw6lmaWNhIDIwMjQnLFxuICogICAgIHN0YXR1czogJ2FjdGl2ZScsXG4gKiAgICAgdGlja2V0UHJpY2U6IDUwLFxuICogICAgIHByb2dyZXNzOiB7XG4gKiAgICAgICB0b3RhbFRpY2tldHM6IDEwMDAsXG4gKiAgICAgICBzb2xkVGlja2V0czogNDUwXG4gKiAgICAgfVxuICogICB9XCJcbiAqID48L3ZhbC1yYWZmbGUtc3RhdHVzLWNhcmQ+XG4gKiBgYGBcbiAqXG4gKiBAZXhhbXBsZSBGZWF0dXJlZCB3aXRoIHByaXplXG4gKiBgYGBodG1sXG4gKiA8dmFsLXJhZmZsZS1zdGF0dXMtY2FyZFxuICogICBbcHJvcHNdPVwie1xuICogICAgIHRpdGxlOiAnR3JhbiBTb3J0ZW8gaVBob25lIDE1JyxcbiAqICAgICBkZXNjcmlwdGlvbjogJ1BhcnRpY2lwYSB5IGdhbmEgdW4gaVBob25lIDE1IFBybyBNYXgnLFxuICogICAgIHN0YXR1czogJ2FjdGl2ZScsXG4gKiAgICAgdmFyaWFudDogJ2ZlYXR1cmVkJyxcbiAqICAgICBjb3ZlckltYWdlOiB7IHNyYzogJ2NvdmVyLmpwZycgfSxcbiAqICAgICBwcml6ZToge1xuICogICAgICAgbmFtZTogJ2lQaG9uZSAxNSBQcm8gTWF4IDI1NkdCJyxcbiAqICAgICAgIHZhbHVlOiAzMjAwMCxcbiAqICAgICAgIGltYWdlOiB7IHNyYzogJ2lwaG9uZS5qcGcnIH1cbiAqICAgICB9LFxuICogICAgIHRpY2tldFByaWNlOiAxMDAsXG4gKiAgICAgZW5kRGF0ZTogJzIwMjQtMTItMjUnLFxuICogICAgIHNob3dDb3VudGRvd246IHRydWUsXG4gKiAgICAgcHJpbWFyeUFjdGlvbjoge1xuICogICAgICAgbGFiZWw6ICdDb21wcmFyIGJvbGV0b3MnLFxuICogICAgICAgY29sb3I6ICdzdWNjZXNzJ1xuICogICAgIH1cbiAqICAgfVwiXG4gKiA+PC92YWwtcmFmZmxlLXN0YXR1cy1jYXJkPlxuICogYGBgXG4gKi9cbmV4cG9ydCBjbGFzcyBSYWZmbGVTdGF0dXNDYXJkQ29tcG9uZW50IHtcbiAgQElucHV0KCkgcHJvcHM6IFJhZmZsZVN0YXR1c0NhcmRNZXRhZGF0YTtcblxuICBAT3V0cHV0KCkgcHJpbWFyeUFjdGlvbkNsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuICBAT3V0cHV0KCkgc2Vjb25kYXJ5QWN0aW9uQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgcHJpdmF0ZSBsYW5nU2VydmljZSA9IGluamVjdChMYW5nU2VydmljZSk7XG5cbiAgZ2V0IGlzQWN0aXZlT3JVcGNvbWluZygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5wcm9wcy5zdGF0dXMgPT09ICdhY3RpdmUnIHx8IHRoaXMucHJvcHMuc3RhdHVzID09PSAndXBjb21pbmcnO1xuICB9XG5cbiAgZ2V0IHByb2dyZXNzUGVyY2VudGFnZSgpOiBudW1iZXIge1xuICAgIGlmICghdGhpcy5wcm9wcy5wcm9ncmVzcykgcmV0dXJuIDA7XG4gICAgY29uc3QgeyBzb2xkVGlja2V0cywgdG90YWxUaWNrZXRzIH0gPSB0aGlzLnByb3BzLnByb2dyZXNzO1xuICAgIGlmICh0b3RhbFRpY2tldHMgPT09IDApIHJldHVybiAwO1xuICAgIHJldHVybiBNYXRoLnJvdW5kKChzb2xkVGlja2V0cyAvIHRvdGFsVGlja2V0cykgKiAxMDApO1xuICB9XG5cbiAgZ2V0U3RhdHVzTGFiZWwoKTogc3RyaW5nIHtcbiAgICBjb25zdCBsYWJlbHMgPSB7IC4uLkRFRkFVTFRfU1RBVFVTX0xBQkVMUywgLi4udGhpcy5wcm9wcy5zdGF0dXNMYWJlbHMgfTtcbiAgICByZXR1cm4gbGFiZWxzW3RoaXMucHJvcHMuc3RhdHVzXSB8fCB0aGlzLnByb3BzLnN0YXR1cztcbiAgfVxuXG4gIGdldFN0YXR1c0NvbG9yKCk6IHN0cmluZyB7XG4gICAgaWYgKHRoaXMucHJvcHMuc3RhdHVzQ29sb3IpIHJldHVybiB0aGlzLnByb3BzLnN0YXR1c0NvbG9yO1xuICAgIHJldHVybiBERUZBVUxUX1NUQVRVU19DT0xPUlNbdGhpcy5wcm9wcy5zdGF0dXNdIHx8ICdtZWRpdW0nO1xuICB9XG5cbiAgZ2V0UHJvZ3Jlc3NDb2xvcigpOiBzdHJpbmcge1xuICAgIGlmICh0aGlzLnByb2dyZXNzUGVyY2VudGFnZSA+PSAxMDApIHJldHVybiAnc3VjY2Vzcyc7XG4gICAgaWYgKHRoaXMucHJvZ3Jlc3NQZXJjZW50YWdlID49IDc1KSByZXR1cm4gJ3dhcm5pbmcnO1xuICAgIHJldHVybiAncHJpbWFyeSc7XG4gIH1cblxuICBnZXRUaXRsZSgpOiBzdHJpbmcge1xuICAgIGlmICh0aGlzLnByb3BzLnRpdGxlQ29udGVudEtleSAmJiB0aGlzLnByb3BzLmNvbnRlbnRDbGFzcykge1xuICAgICAgcmV0dXJuIHRoaXMubGFuZ1NlcnZpY2UuZ2V0VGV4dChcbiAgICAgICAgdGhpcy5wcm9wcy5jb250ZW50Q2xhc3MsXG4gICAgICAgIHRoaXMucHJvcHMudGl0bGVDb250ZW50S2V5LFxuICAgICAgICB0aGlzLnByb3BzLnRpdGxlXG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5wcm9wcy50aXRsZTtcbiAgfVxuXG4gIGdldERlc2NyaXB0aW9uKCk6IHN0cmluZyB7XG4gICAgaWYgKHRoaXMucHJvcHMuZGVzY3JpcHRpb25Db250ZW50S2V5ICYmIHRoaXMucHJvcHMuY29udGVudENsYXNzKSB7XG4gICAgICByZXR1cm4gdGhpcy5sYW5nU2VydmljZS5nZXRUZXh0KFxuICAgICAgICB0aGlzLnByb3BzLmNvbnRlbnRDbGFzcyxcbiAgICAgICAgdGhpcy5wcm9wcy5kZXNjcmlwdGlvbkNvbnRlbnRLZXksXG4gICAgICAgIHRoaXMucHJvcHMuZGVzY3JpcHRpb24gfHwgJydcbiAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLnByb3BzLmRlc2NyaXB0aW9uIHx8ICcnO1xuICB9XG5cbiAgZm9ybWF0Q3VycmVuY3koYW1vdW50OiBudW1iZXIpOiBzdHJpbmcge1xuICAgIGNvbnN0IHN5bWJvbCA9IHRoaXMucHJvcHMuY3VycmVuY3lTeW1ib2wgfHwgJyQnO1xuICAgIHJldHVybiBgJHtzeW1ib2x9JHthbW91bnQudG9Mb2NhbGVTdHJpbmcoJ2VzLU1YJyl9YDtcbiAgfVxuXG4gIGZvcm1hdERhdGUoZGF0ZTogRGF0ZSB8IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY29uc3QgZCA9IHR5cGVvZiBkYXRlID09PSAnc3RyaW5nJyA/IG5ldyBEYXRlKGRhdGUpIDogZGF0ZTtcbiAgICByZXR1cm4gZC50b0xvY2FsZURhdGVTdHJpbmcoJ2VzLU1YJywge1xuICAgICAgZGF5OiAnbnVtZXJpYycsXG4gICAgICBtb250aDogJ3Nob3J0JyxcbiAgICAgIHllYXI6ICdudW1lcmljJyxcbiAgICB9KTtcbiAgfVxuXG4gIG9uUHJpbWFyeUFjdGlvbigpOiB2b2lkIHtcbiAgICB0aGlzLnByaW1hcnlBY3Rpb25DbGljay5lbWl0KCk7XG4gIH1cblxuICBvblNlY29uZGFyeUFjdGlvbigpOiB2b2lkIHtcbiAgICB0aGlzLnNlY29uZGFyeUFjdGlvbkNsaWNrLmVtaXQoKTtcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Default status labels.
|
|
3
|
+
*/
|
|
4
|
+
export const DEFAULT_STATUS_LABELS = {
|
|
5
|
+
upcoming: 'Próximamente',
|
|
6
|
+
active: 'Activo',
|
|
7
|
+
sold_out: 'Agotado',
|
|
8
|
+
drawing: 'Sorteando',
|
|
9
|
+
completed: 'Finalizado',
|
|
10
|
+
cancelled: 'Cancelado',
|
|
11
|
+
};
|
|
12
|
+
/**
|
|
13
|
+
* Default status colors.
|
|
14
|
+
*/
|
|
15
|
+
export const DEFAULT_STATUS_COLORS = {
|
|
16
|
+
upcoming: 'medium',
|
|
17
|
+
active: 'success',
|
|
18
|
+
sold_out: 'warning',
|
|
19
|
+
drawing: 'tertiary',
|
|
20
|
+
completed: 'primary',
|
|
21
|
+
cancelled: 'danger',
|
|
22
|
+
};
|
|
23
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvbW9sZWN1bGVzL3JhZmZsZS1zdGF0dXMtY2FyZC90eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUErSEE7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBaUM7SUFDakUsUUFBUSxFQUFFLGNBQWM7SUFDeEIsTUFBTSxFQUFFLFFBQVE7SUFDaEIsUUFBUSxFQUFFLFNBQVM7SUFDbkIsT0FBTyxFQUFFLFdBQVc7SUFDcEIsU0FBUyxFQUFFLFlBQVk7SUFDdkIsU0FBUyxFQUFFLFdBQVc7Q0FDdkIsQ0FBQztBQUVGOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQWdDO0lBQ2hFLFFBQVEsRUFBRSxRQUFRO0lBQ2xCLE1BQU0sRUFBRSxTQUFTO0lBQ2pCLFFBQVEsRUFBRSxTQUFTO0lBQ25CLE9BQU8sRUFBRSxVQUFVO0lBQ25CLFNBQVMsRUFBRSxTQUFTO0lBQ3BCLFNBQVMsRUFBRSxRQUFRO0NBQ3BCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb2xvciB9IGZyb20gJ0Bpb25pYy9jb3JlJztcbmltcG9ydCB7IEltYWdlTWV0YWRhdGEgfSBmcm9tICcuLi8uLi9hdG9tcy9pbWFnZS90eXBlcyc7XG5pbXBvcnQgeyBCdXR0b25NZXRhZGF0YSB9IGZyb20gJy4uLy4uL3R5cGVzJztcblxuLyoqXG4gKiBSYWZmbGUgc3RhdHVzIHR5cGUuXG4gKi9cbmV4cG9ydCB0eXBlIFJhZmZsZVN0YXR1cyA9XG4gIHwgJ3VwY29taW5nJyAgICAvLyBOb3Qgc3RhcnRlZCB5ZXRcbiAgfCAnYWN0aXZlJyAgICAgIC8vIEN1cnJlbnRseSBzZWxsaW5nIHRpY2tldHNcbiAgfCAnc29sZF9vdXQnICAgIC8vIEFsbCB0aWNrZXRzIHNvbGRcbiAgfCAnZHJhd2luZycgICAgIC8vIERyYXcgaW4gcHJvZ3Jlc3NcbiAgfCAnY29tcGxldGVkJyAgIC8vIFdpbm5lciBhbm5vdW5jZWRcbiAgfCAnY2FuY2VsbGVkJzsgIC8vIFJhZmZsZSBjYW5jZWxsZWRcblxuLyoqXG4gKiBSYWZmbGUgcHJvZ3Jlc3MgaW5mb3JtYXRpb24uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmFmZmxlUHJvZ3Jlc3Mge1xuICAvKiogVG90YWwgdGlja2V0cyBhdmFpbGFibGUgKi9cbiAgdG90YWxUaWNrZXRzOiBudW1iZXI7XG4gIC8qKiBUaWNrZXRzIHNvbGQgKi9cbiAgc29sZFRpY2tldHM6IG51bWJlcjtcbiAgLyoqIFRpY2tldHMgcmVzZXJ2ZWQgKG5vdCBwYWlkKSAqL1xuICByZXNlcnZlZFRpY2tldHM/OiBudW1iZXI7XG4gIC8qKiBHb2FsIGFtb3VudCAobW9uZXRhcnkpICovXG4gIGdvYWxBbW91bnQ/OiBudW1iZXI7XG4gIC8qKiBDdXJyZW50IGFtb3VudCByYWlzZWQgKi9cbiAgY3VycmVudEFtb3VudD86IG51bWJlcjtcbn1cblxuLyoqXG4gKiBQcml6ZSBpbmZvcm1hdGlvbiBmb3IgdGhlIHJhZmZsZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSYWZmbGVQcml6ZSB7XG4gIC8qKiBQcml6ZSBuYW1lICovXG4gIG5hbWU6IHN0cmluZztcbiAgLyoqIFByaXplIGRlc2NyaXB0aW9uICovXG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICAvKiogUHJpemUgaW1hZ2UgKi9cbiAgaW1hZ2U/OiBJbWFnZU1ldGFkYXRhO1xuICAvKiogUHJpemUgdmFsdWUgKi9cbiAgdmFsdWU/OiBudW1iZXI7XG4gIC8qKiBDdXJyZW5jeSBmb3IgdmFsdWUgKi9cbiAgY3VycmVuY3k/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogTWV0YWRhdGEgZm9yIHRoZSByYWZmbGUgc3RhdHVzIGNhcmQgY29tcG9uZW50LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJhZmZsZVN0YXR1c0NhcmRNZXRhZGF0YSB7XG4gIC8qKiBSYWZmbGUgdGl0bGUgKi9cbiAgdGl0bGU6IHN0cmluZztcbiAgLyoqIFJhZmZsZSBkZXNjcmlwdGlvbiAqL1xuICBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgLyoqIEN1cnJlbnQgc3RhdHVzICovXG4gIHN0YXR1czogUmFmZmxlU3RhdHVzO1xuICAvKiogUHJvZ3Jlc3MgaW5mb3JtYXRpb24gKi9cbiAgcHJvZ3Jlc3M/OiBSYWZmbGVQcm9ncmVzcztcbiAgLyoqIFByaXplIGluZm9ybWF0aW9uICovXG4gIHByaXplPzogUmFmZmxlUHJpemU7XG4gIC8qKiBDb3ZlciBpbWFnZSAqL1xuICBjb3ZlckltYWdlPzogSW1hZ2VNZXRhZGF0YTtcblxuICAvLyA9PT0gRGF0ZXMgPT09XG4gIC8qKiBSYWZmbGUgc3RhcnQgZGF0ZSAqL1xuICBzdGFydERhdGU/OiBEYXRlIHwgc3RyaW5nO1xuICAvKiogUmFmZmxlIGVuZCBkYXRlIC8gZHJhdyBkYXRlICovXG4gIGVuZERhdGU/OiBEYXRlIHwgc3RyaW5nO1xuICAvKiogU2hvdyBjb3VudGRvd24gdG8gZW5kIGRhdGUgKi9cbiAgc2hvd0NvdW50ZG93bj86IGJvb2xlYW47XG5cbiAgLy8gPT09IFByaWNpbmcgPT09XG4gIC8qKiBUaWNrZXQgcHJpY2UgKi9cbiAgdGlja2V0UHJpY2U/OiBudW1iZXI7XG4gIC8qKiBDdXJyZW5jeSAqL1xuICBjdXJyZW5jeT86IHN0cmluZztcbiAgLyoqIEN1cnJlbmN5IHN5bWJvbCAqL1xuICBjdXJyZW5jeVN5bWJvbD86IHN0cmluZztcblxuICAvLyA9PT0gRGlzcGxheSBvcHRpb25zID09PVxuICAvKiogQ2FyZCB2YXJpYW50ICovXG4gIHZhcmlhbnQ/OiAnZGVmYXVsdCcgfCAnZmVhdHVyZWQnIHwgJ2NvbXBhY3QnIHwgJ2hvcml6b250YWwnO1xuICAvKiogU2l6ZSAqL1xuICBzaXplPzogJ3NtYWxsJyB8ICdtZWRpdW0nIHwgJ2xhcmdlJztcbiAgLyoqIFNob3cgcHJvZ3Jlc3MgYmFyICovXG4gIHNob3dQcm9ncmVzcz86IGJvb2xlYW47XG4gIC8qKiBTaG93IHRpY2tldCBzdGF0cyAqL1xuICBzaG93VGlja2V0U3RhdHM/OiBib29sZWFuO1xuICAvKiogU2hvdyBwcmljZSAqL1xuICBzaG93UHJpY2U/OiBib29sZWFuO1xuICAvKiogU2hvdyBkYXRlcyAqL1xuICBzaG93RGF0ZXM/OiBib29sZWFuO1xuICAvKiogU2hvdyBzdGF0dXMgYmFkZ2UgKi9cbiAgc2hvd1N0YXR1c0JhZGdlPzogYm9vbGVhbjtcblxuICAvLyA9PT0gQWN0aW9ucyA9PT1cbiAgLyoqIFByaW1hcnkgYWN0aW9uIGJ1dHRvbiAqL1xuICBwcmltYXJ5QWN0aW9uPzogQnV0dG9uTWV0YWRhdGE7XG4gIC8qKiBTZWNvbmRhcnkgYWN0aW9uIGJ1dHRvbiAqL1xuICBzZWNvbmRhcnlBY3Rpb24/OiBCdXR0b25NZXRhZGF0YTtcblxuICAvLyA9PT0gU3R5bGluZyA9PT1cbiAgLyoqIEN1c3RvbSBDU1MgY2xhc3MgKi9cbiAgY3NzQ2xhc3M/OiBzdHJpbmc7XG4gIC8qKiBTdGF0dXMgY29sb3Igb3ZlcnJpZGUgKi9cbiAgc3RhdHVzQ29sb3I/OiBDb2xvcjtcblxuICAvLyA9PT0gQmVuZWZpY2lhcnkgPT09XG4gIC8qKiBCZW5lZmljaWFyeSBuYW1lICovXG4gIGJlbmVmaWNpYXJ5Pzogc3RyaW5nO1xuICAvKiogQmVuZWZpY2lhcnkgbG9nby9pbWFnZSAqL1xuICBiZW5lZmljaWFyeUltYWdlPzogSW1hZ2VNZXRhZGF0YTtcblxuICAvLyA9PT0gTGFiZWxzID09PVxuICAvKiogQ3VzdG9tIHN0YXR1cyBsYWJlbHMgKi9cbiAgc3RhdHVzTGFiZWxzPzogUGFydGlhbDxSZWNvcmQ8UmFmZmxlU3RhdHVzLCBzdHJpbmc+PjtcblxuICAvLyA9PT0gUmVhY3RpdmUgY29udGVudCA9PT1cbiAgLyoqIENvbnRlbnQgY2xhc3MgZm9yIHJlYWN0aXZlIGNvbnRlbnQgKi9cbiAgY29udGVudENsYXNzPzogc3RyaW5nO1xuICAvKiogQ29udGVudCBrZXkgZm9yIHRpdGxlICovXG4gIHRpdGxlQ29udGVudEtleT86IHN0cmluZztcbiAgLyoqIENvbnRlbnQga2V5IGZvciBkZXNjcmlwdGlvbiAqL1xuICBkZXNjcmlwdGlvbkNvbnRlbnRLZXk/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogRGVmYXVsdCBzdGF0dXMgbGFiZWxzLlxuICovXG5leHBvcnQgY29uc3QgREVGQVVMVF9TVEFUVVNfTEFCRUxTOiBSZWNvcmQ8UmFmZmxlU3RhdHVzLCBzdHJpbmc+ID0ge1xuICB1cGNvbWluZzogJ1Byw7N4aW1hbWVudGUnLFxuICBhY3RpdmU6ICdBY3Rpdm8nLFxuICBzb2xkX291dDogJ0Fnb3RhZG8nLFxuICBkcmF3aW5nOiAnU29ydGVhbmRvJyxcbiAgY29tcGxldGVkOiAnRmluYWxpemFkbycsXG4gIGNhbmNlbGxlZDogJ0NhbmNlbGFkbycsXG59O1xuXG4vKipcbiAqIERlZmF1bHQgc3RhdHVzIGNvbG9ycy5cbiAqL1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfU1RBVFVTX0NPTE9SUzogUmVjb3JkPFJhZmZsZVN0YXR1cywgQ29sb3I+ID0ge1xuICB1cGNvbWluZzogJ21lZGl1bScsXG4gIGFjdGl2ZTogJ3N1Y2Nlc3MnLFxuICBzb2xkX291dDogJ3dhcm5pbmcnLFxuICBkcmF3aW5nOiAndGVydGlhcnknLFxuICBjb21wbGV0ZWQ6ICdwcmltYXJ5JyxcbiAgY2FuY2VsbGVkOiAnZGFuZ2VyJyxcbn07XG4iXX0=
|