@progressio_resources/gravity-design-system 3.6.20 → 3.7.1

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.
Files changed (27) hide show
  1. package/esm2022/lib/components/gravity-currency-dropdown-short/gravity-currency-dropdown-short.component.mjs +77 -0
  2. package/esm2022/lib/components/gravity-dropdown-list-display/gravity-dropdown-list-display.component.mjs +15 -3
  3. package/esm2022/lib/components/gravity-icon-button/gravity-icon-button.component.mjs +3 -3
  4. package/esm2022/lib/components/gravity-text-field-amount-only/gravity-text-field-amount-only.component.mjs +148 -0
  5. package/esm2022/lib/components/gravity-tooltip-container/gravity-tooltip-container.component.mjs +44 -0
  6. package/esm2022/lib/gravity-design-system.module.mjs +18 -3
  7. package/esm2022/lib/vendor/gravity-tooltip/gravity-tooltip.component.mjs +11 -9
  8. package/esm2022/lib/vendor/gravity-tooltip/gravity-tooltip.directive.mjs +22 -6
  9. package/esm2022/lib/vendor/gravity-tooltip/options.interface.mjs +1 -1
  10. package/esm2022/public-api.mjs +4 -1
  11. package/fesm2022/progressio_resources-gravity-design-system.mjs +326 -34
  12. package/fesm2022/progressio_resources-gravity-design-system.mjs.map +1 -1
  13. package/lib/components/gravity-currency-dropdown-short/gravity-currency-dropdown-short.component.d.ts +31 -0
  14. package/lib/components/gravity-dropdown-list-display/gravity-dropdown-list-display.component.d.ts +7 -1
  15. package/lib/components/gravity-text-field-amount-only/gravity-text-field-amount-only.component.d.ts +40 -0
  16. package/lib/components/gravity-tooltip-container/gravity-tooltip-container.component.d.ts +40 -0
  17. package/lib/gravity-design-system.module.d.ts +72 -69
  18. package/lib/vendor/gravity-tooltip/gravity-tooltip.component.d.ts +2 -1
  19. package/lib/vendor/gravity-tooltip/gravity-tooltip.directive.d.ts +3 -1
  20. package/lib/vendor/gravity-tooltip/options.interface.d.ts +1 -0
  21. package/package.json +1 -1
  22. package/public-api.d.ts +3 -0
  23. package/src/lib/vendor/gravity-tooltip/gravity-tooltip.component.html +1 -0
  24. package/src/lib/vendor/gravity-tooltip/gravity-tooltip.component.sass +12 -14
  25. package/src/lib/vendor/gravity-tooltip/gravity-tooltip.component.ts +7 -7
  26. package/src/lib/vendor/gravity-tooltip/gravity-tooltip.directive.ts +21 -4
  27. package/src/lib/vendor/gravity-tooltip/options.interface.ts +1 -0
@@ -1 +1 @@
1
- {"version":3,"file":"progressio_resources-gravity-design-system.mjs","sources":["../../../projects/gravity-design-system/src/lib/components/gravity-icon/gravity-icon.component.ts","../../../projects/gravity-design-system/src/lib/components/gravity-icon/gravity-icon.component.html","../../../projects/gravity-design-system/src/lib/components/gravity-button/gravity-button.component.ts","../../../projects/gravity-design-system/src/lib/components/gravity-button/gravity-button.component.html","../../../projects/gravity-design-system/src/lib/components/gravity-dropdown-list/filter-by.pipe.ts","../../../projects/gravity-design-system/src/lib/services/gravity-dropdown-manager.service.ts","../../../projects/gravity-design-system/src/lib/components/gravity-checkbox/gravity-checkbox.component.ts","../../../projects/gravity-design-system/src/lib/components/gravity-checkbox/gravity-checkbox.component.html","../../../projects/gravity-design-system/src/lib/components/gravity-currency/gravity-currency.component.ts","../../../projects/gravity-design-system/src/lib/components/gravity-currency/gravity-currency.component.html","../../../projects/gravity-design-system/src/lib/components/gravity-network-pill/gravity-network-pill.component.ts","../../../projects/gravity-design-system/src/lib/components/gravity-network-pill/gravity-network-pill.component.html","../../../projects/gravity-design-system/src/lib/components/gravity-link/gravity-link.component.ts","../../../projects/gravity-design-system/src/lib/components/gravity-link/gravity-link.component.html","../../../projects/gravity-design-system/src/lib/components/gravity-dropdown-label/gravity-dropdown-label.component.ts","../../../projects/gravity-design-system/src/lib/components/gravity-dropdown-label/gravity-dropdown-label.component.html","../../../projects/gravity-design-system/src/lib/components/gravity-currency-display-v2/gravity-currency-display-v2.component.ts","../../../projects/gravity-design-system/src/lib/components/gravity-currency-display-v2/gravity-currency-display-v2.component.html","../../../projects/gravity-design-system/src/lib/components/gravity-dropdown-list/gravity-dropdown-list.component.ts","../../../projects/gravity-design-system/src/lib/components/gravity-dropdown-list/gravity-dropdown-list.component.html","../../../projects/gravity-design-system/src/lib/components/gravity-dropdown-list-display/gravity-dropdown-list-display.component.ts","../../../projects/gravity-design-system/src/lib/components/gravity-dropdown-list-display/gravity-dropdown-list-display.component.html","../../../projects/gravity-design-system/src/lib/components/gravity-text-field/gravity-text-field.component.ts","../../../projects/gravity-design-system/src/lib/components/gravity-text-field/gravity-text-field.component.html","../../../projects/gravity-design-system/src/lib/vendor/gravity-tooltip/gravity-tooltip.component.ts","../../../projects/gravity-design-system/src/lib/vendor/gravity-tooltip/gravity-tooltip.component.html","../../../projects/gravity-design-system/src/lib/vendor/gravity-tooltip/options.service.ts","../../../projects/gravity-design-system/src/lib/vendor/gravity-tooltip/options.ts","../../../projects/gravity-design-system/src/lib/vendor/gravity-tooltip/gravity-tooltip.directive.ts","../../../projects/gravity-design-system/src/lib/vendor/gravity-tooltip/gravity-tooltip.module.ts","../../../projects/gravity-design-system/src/lib/components/gravity-calendar-v2/datepicker/services/header-type.service.ts","../../../projects/gravity-design-system/src/lib/components/gravity-calendar-v2/datepicker/bs-datepicker.config.ts","../../../projects/gravity-design-system/src/lib/components/gravity-calendar-v2/datepicker/datepicker-animations.ts","../../../projects/gravity-design-system/src/lib/components/gravity-calendar-v2/datepicker/base/bs-datepicker-container.ts","../../../projects/gravity-design-system/src/lib/components/gravity-calendar-v2/datepicker/reducer/bs-datepicker.actions.ts","../../../projects/gravity-design-system/src/lib/components/gravity-calendar-v2/datepicker/reducer/bs-datepicker.effects.ts","../../../projects/gravity-design-system/src/lib/components/gravity-calendar-v2/datepicker/reducer/_defaults.ts","../../../projects/gravity-design-system/src/lib/components/gravity-calendar-v2/datepicker/reducer/bs-datepicker.state.ts","../../../projects/gravity-design-system/src/lib/components/gravity-calendar-v2/datepicker/utils/bs-calendar-utils.ts","../../../projects/gravity-design-system/src/lib/components/gravity-calendar-v2/datepicker/utils/matrix-utils.ts","../../../projects/gravity-design-system/src/lib/components/gravity-calendar-v2/datepicker/engine/calc-days-calendar.ts","../../../projects/gravity-design-system/src/lib/components/gravity-calendar-v2/datepicker/engine/format-days-calendar.ts","../../../projects/gravity-design-system/src/lib/components/gravity-calendar-v2/datepicker/engine/flag-days-calendar.ts","../../../projects/gravity-design-system/src/lib/components/gravity-calendar-v2/datepicker/engine/view-mode.ts","../../../projects/gravity-design-system/src/lib/components/gravity-calendar-v2/datepicker/engine/format-months-calendar.ts","../../../projects/gravity-design-system/src/lib/components/gravity-calendar-v2/datepicker/engine/flag-months-calendar.ts","../../../projects/gravity-design-system/src/lib/components/gravity-calendar-v2/datepicker/engine/format-years-calendar.ts","../../../projects/gravity-design-system/src/lib/components/gravity-calendar-v2/datepicker/engine/flag-years-calendar.ts","../../../projects/gravity-design-system/src/lib/components/gravity-calendar-v2/datepicker/reducer/bs-datepicker.reducer.ts","../../../projects/gravity-design-system/src/lib/components/gravity-calendar-v2/datepicker/reducer/bs-datepicker.store.ts","../../../projects/gravity-design-system/src/lib/components/gravity-calendar-v2/datepicker/bs-datepicker.callbacks.ts","../../../projects/gravity-design-system/src/lib/components/gravity-calendar-v2/datepicker/models/index.ts","../../../projects/gravity-design-system/src/lib/components/gravity-calendar-v2/datepicker/components/bs-days-calendar-view/bs-datepicker-day-decorator.directive.ts","../../../projects/gravity-design-system/src/lib/components/gravity-calendar-v2/datepicker/components/bs-datepicker-navigation-view/bs-datepicker-navigation-view.component.ts","../../../projects/gravity-design-system/src/lib/components/gravity-calendar-v2/datepicker/components/bs-datepicker-navigation-view/bs-datepicker-navigation-view.component.html","../../../projects/gravity-design-system/src/lib/components/gravity-calendar-v2/datepicker/components/bs-days-calendar-view/bs-days-calendar-view.component.ts","../../../projects/gravity-design-system/src/lib/components/gravity-calendar-v2/datepicker/components/bs-days-calendar-view/bs-days-calendar-view.component.html","../../../projects/gravity-design-system/src/lib/components/gravity-calendar-v2/datepicker/utils/date-abbreviation.pipe.ts","../../../projects/gravity-design-system/src/lib/components/gravity-calendar-v2/datepicker/components/bs-months-calendar-view/bs-months-calendar-view.component.ts","../../../projects/gravity-design-system/src/lib/components/gravity-calendar-v2/datepicker/components/bs-months-calendar-view/bs-months-calendar-view.component.html","../../../projects/gravity-design-system/src/lib/components/gravity-calendar-v2/datepicker/components/bs-years-calendar-view/bs-years-calendar-view.component.ts","../../../projects/gravity-design-system/src/lib/components/gravity-calendar-v2/datepicker/components/bs-years-calendar-view/bs-years-calendar-view.component.html","../../../projects/gravity-design-system/src/lib/components/gravity-calendar-v2/datepicker/components/bs-datepicker-container.component.ts","../../../projects/gravity-design-system/src/lib/components/gravity-calendar-v2/datepicker/components/bs-datepicker-view.html","../../../projects/gravity-design-system/src/lib/components/gravity-calendar-v2/datepicker/bs-datepicker.component.ts","../../../projects/gravity-design-system/src/lib/components/gravity-calendar-v2/datepicker/components/bs-datepicker-inline-container.component.ts","../../../projects/gravity-design-system/src/lib/components/gravity-calendar-v2/datepicker/bs-datepicker-inline.config.ts","../../../projects/gravity-design-system/src/lib/components/gravity-calendar-v2/datepicker/bs-datepicker-inline.component.ts","../../../projects/gravity-design-system/src/lib/components/gravity-calendar-v2/datepicker/components/bs-daterangepicker-container.component.ts","../../../projects/gravity-design-system/src/lib/components/gravity-calendar-v2/datepicker/bs-daterangepicker.config.ts","../../../projects/gravity-design-system/src/lib/components/gravity-calendar-v2/datepicker/bs-daterangepicker.component.ts","../../../projects/gravity-design-system/src/lib/components/gravity-calendar-v2/datepicker/components/bs-daterangepicker-inline-container.component.ts","../../../projects/gravity-design-system/src/lib/components/gravity-calendar-v2/datepicker/bs-daterangepicker-inline.config.ts","../../../projects/gravity-design-system/src/lib/components/gravity-calendar-v2/datepicker/bs-daterangepicker-inline.component.ts","../../../projects/gravity-design-system/src/lib/components/gravity-calendar-v2/gravity-calendar-v2.component.ts","../../../projects/gravity-design-system/src/lib/components/gravity-calendar-v2/gravity-calendar-v2.component.html","../../../projects/gravity-design-system/src/lib/components/gravity-radio-button/gravity-radio-button.component.ts","../../../projects/gravity-design-system/src/lib/components/gravity-radio-button/gravity-radio-button.component.html","../../../projects/gravity-design-system/src/lib/components/gravity-switch/gravity-switch.component.ts","../../../projects/gravity-design-system/src/lib/components/gravity-switch/gravity-switch.component.html","../../../projects/gravity-design-system/src/lib/components/gravity-dialog/gravity-dialog.component.ts","../../../projects/gravity-design-system/src/lib/components/gravity-dialog/gravity-dialog.component.html","../../../projects/gravity-design-system/src/lib/components/gravity-notification/gravity-notification.component.ts","../../../projects/gravity-design-system/src/lib/components/gravity-notification/gravity-notification.component.html","../../../projects/gravity-design-system/src/lib/services/gravity-instant-notifications.service.ts","../../../projects/gravity-design-system/src/lib/components/gravity-notification-instant/gravity-notification-instant-container.component.ts","../../../projects/gravity-design-system/src/lib/components/gravity-notification-instant/gravity-notification-instant-container.component.html","../../../projects/gravity-design-system/src/lib/components/gravity-attach-file/gravity-attach-file.component.ts","../../../projects/gravity-design-system/src/lib/components/gravity-attach-file/gravity-attach-file.component.html","../../../projects/gravity-design-system/src/lib/components/gravity-table/gravity-table.component.ts","../../../projects/gravity-design-system/src/lib/components/gravity-table/gravity-table.component.html","../../../projects/gravity-design-system/src/lib/components/gravity-tree-view/models/node-selected-state.ts","../../../projects/gravity-design-system/src/lib/components/gravity-tree-view/service/tree-service.ts","../../../projects/gravity-design-system/src/lib/components/gravity-tree-view/node/node-toggle/node-toggle.component.ts","../../../projects/gravity-design-system/src/lib/components/gravity-tree-view/node/node-toggle/node-toggle.component.html","../../../projects/gravity-design-system/src/lib/components/gravity-tree-view/node/node-checkbox/node-checkbox.component.ts","../../../projects/gravity-design-system/src/lib/components/gravity-tree-view/node/node-checkbox/node-checkbox.component.html","../../../projects/gravity-design-system/src/lib/components/gravity-tree-view/node/node-name/node-name.component.ts","../../../projects/gravity-design-system/src/lib/components/gravity-tree-view/node/node-name/node-name.component.html","../../../projects/gravity-design-system/src/lib/components/gravity-tree-view/node/node.component.ts","../../../projects/gravity-design-system/src/lib/components/gravity-tree-view/node/node.component.html","../../../projects/gravity-design-system/src/lib/components/gravity-tree-view/gravity-tree-view.component.ts","../../../projects/gravity-design-system/src/lib/components/gravity-tree-view/gravity-tree-view.component.html","../../../projects/gravity-design-system/src/lib/components/gravity-stepper/gravity-stepper.component.ts","../../../projects/gravity-design-system/src/lib/components/gravity-stepper/gravity-stepper.component.html","../../../projects/gravity-design-system/src/lib/components/gravity-text-field-number-only/gravity-text-field-number-only.component.ts","../../../projects/gravity-design-system/src/lib/components/gravity-text-field-number-only/gravity-text-field-number-only.component.html","../../../projects/gravity-design-system/src/lib/components/gravity-icon-button/gravity-icon-button.component.ts","../../../projects/gravity-design-system/src/lib/components/gravity-icon-button/gravity-icon-button.component.html","../../../projects/gravity-design-system/src/lib/components/gravity-status-indicator/gravity-status-indicator.component.ts","../../../projects/gravity-design-system/src/lib/components/gravity-status-indicator/gravity-status-indicator.component.html","../../../projects/gravity-design-system/src/lib/components/gravity-avatar-stack/gravity-avatar-stack.component.ts","../../../projects/gravity-design-system/src/lib/components/gravity-avatar-stack/gravity-avatar-stack.component.html","../../../projects/gravity-design-system/src/lib/components/gravity-generic-avatar/gravity-generic-avatar.component.ts","../../../projects/gravity-design-system/src/lib/components/gravity-generic-avatar/gravity-generic-avatar.component.html","../../../projects/gravity-design-system/src/lib/components/gravity-multi-language/gravity-multi-language.component.ts","../../../projects/gravity-design-system/src/lib/components/gravity-multi-language/gravity-multi-language.component.html","../../../projects/gravity-design-system/src/lib/components/gravity-modal/gravity-modal.component.ts","../../../projects/gravity-design-system/src/lib/components/gravity-modal/gravity-modal.component.html","../../../projects/gravity-design-system/src/lib/components/gravity-tab-primary/gravity-tab-primary.component.ts","../../../projects/gravity-design-system/src/lib/components/gravity-tab-primary/gravity-tab-primary.component.html","../../../projects/gravity-design-system/src/lib/components/gravity-tab-secondary/gravity-tab-secondary.component.ts","../../../projects/gravity-design-system/src/lib/components/gravity-tab-secondary/gravity-tab-secondary.component.html","../../../projects/gravity-design-system/src/lib/components/gravity-editable-input/gravity-editable-input.component.ts","../../../projects/gravity-design-system/src/lib/components/gravity-editable-input/gravity-editable-input.component.html","../../../projects/gravity-design-system/src/lib/components/gravity-card-button/gravity-card-button.component.ts","../../../projects/gravity-design-system/src/lib/components/gravity-card-button/gravity-card-button.component.html","../../../projects/gravity-design-system/src/lib/components/gravity-navigation-card/gravity-navigation-card.component.ts","../../../projects/gravity-design-system/src/lib/components/gravity-navigation-card/gravity-navigation-card.component.html","../../../projects/gravity-design-system/src/lib/components/gravity-generic-avatar-secondary/gravity-generic-avatar-secondary.component.ts","../../../projects/gravity-design-system/src/lib/components/gravity-generic-avatar-secondary/gravity-generic-avatar-secondary.component.html","../../../projects/gravity-design-system/src/lib/components/gravity-backdrop/gravity-backdrop.component.ts","../../../projects/gravity-design-system/src/lib/components/gravity-backdrop/gravity-backdrop.component.html","../../../projects/gravity-design-system/src/lib/components/gravity-date-picker/shared/date-picker.utils.ts","../../../projects/gravity-design-system/src/lib/components/gravity-date-picker/shared/date-picker.constants.ts","../../../projects/gravity-design-system/src/lib/components/gravity-date-picker/components/day-calendar/range-days-calendar.utils.ts","../../../projects/gravity-design-system/src/lib/components/gravity-date-picker/components/month-calendar/month-calendar.component.ts","../../../projects/gravity-design-system/src/lib/components/gravity-date-picker/components/month-calendar/month-calendar.component.html","../../../projects/gravity-design-system/src/lib/components/gravity-date-picker/components/year-calendar/year-calendar.component.ts","../../../projects/gravity-design-system/src/lib/components/gravity-date-picker/components/year-calendar/year-calendar.component.html","../../../projects/gravity-design-system/src/lib/components/gravity-date-picker/components/day-calendar/day-calendar.component.ts","../../../projects/gravity-design-system/src/lib/components/gravity-date-picker/components/day-calendar/day-calendar.component.html","../../../projects/gravity-design-system/src/lib/components/gravity-date-picker/gravity-date-picker.component.ts","../../../projects/gravity-design-system/src/lib/components/gravity-date-picker/gravity-date-picker.component.html","../../../projects/gravity-design-system/src/lib/components/gravity-segmented-button/gravity-segmented-button.component.ts","../../../projects/gravity-design-system/src/lib/components/gravity-segmented-button/gravity-segmented-button.component.html","../../../projects/gravity-design-system/src/lib/components/gravity-chip-group/gravity-chip-group.component.ts","../../../projects/gravity-design-system/src/lib/components/gravity-chip-group/gravity-chip-group.component.html","../../../projects/gravity-design-system/src/lib/components/gravity-tables-v2/gravity-tables-v2.component.ts","../../../projects/gravity-design-system/src/lib/components/gravity-tables-v2/gravity-tables-v2.component.html","../../../projects/gravity-design-system/src/lib/components/gravity-data-views-v2/gravity-data-views-v2.component.ts","../../../projects/gravity-design-system/src/lib/components/gravity-data-views-v2/gravity-data-views-v2.component.html","../../../projects/gravity-design-system/src/lib/services/gravity-responsive.service.ts","../../../projects/gravity-design-system/src/lib/components/gravity-detail-container/gravity-detail-container.component.ts","../../../projects/gravity-design-system/src/lib/components/gravity-detail-container/gravity-detail-container.component.html","../../../projects/gravity-design-system/src/lib/services/gravity-push-notifications-service.service.ts","../../../projects/gravity-design-system/src/lib/components/gravity-push-notifications/gravity-push-notifications.component.ts","../../../projects/gravity-design-system/src/lib/components/gravity-push-notifications/gravity-push-notifications.component.html","../../../projects/gravity-design-system/src/lib/layout/gravity-header/gravity-header.component.ts","../../../projects/gravity-design-system/src/lib/layout/gravity-header/gravity-header.component.html","../../../projects/gravity-design-system/src/lib/layout/gravity-menu/gravity-menu.component.ts","../../../projects/gravity-design-system/src/lib/layout/gravity-menu/gravity-menu.component.html","../../../projects/gravity-design-system/src/lib/components/gravity-pagination/gravity-pagination.component.ts","../../../projects/gravity-design-system/src/lib/components/gravity-pagination/gravity-pagination.component.html","../../../projects/gravity-design-system/src/lib/gravity-design-system.module.ts","../../../projects/gravity-design-system/src/lib/services/gravity-dialog-manager.service.ts","../../../projects/gravity-design-system/src/public-api.ts","../../../projects/gravity-design-system/src/progressio_resources-gravity-design-system.ts"],"sourcesContent":["import {Component, Input} from '@angular/core';\nimport {SvgIconRegistryService} from \"angular-svg-icon\";\n\n@Component({\n selector: 'gravity-icon',\n templateUrl: './gravity-icon.component.html',\n styleUrls: ['./gravity-icon.component.scss']\n})\nexport class GravityIconComponent {\n @Input() public customIconColorVariable: string;\n @Input() public iconName: string;\n @Input() public iconSize: 'lg-24' | 'md-16' | 'sm-12' | 'xl-32';\n @Input() public hoverIcon: boolean;\n @Input() public size: 'sm' | 'md' | 'lg';\n @Input() public isCoin: boolean;\n\n constructor(private iconRegistry: SvgIconRegistryService) {}\n\n public static isOldIcon(iconName: string): boolean {\n return OLD_ICONS[iconName] != undefined;\n }\n\n public static isNewIcon(iconName: string): boolean {\n return ICONS[iconName] != undefined;\n }\n\n public get iconExists(): boolean {\n const fullIconName = this.getFullIconName();\n\n const iconsMap = (this.iconRegistry as any).iconsByUrl;\n\n if (iconsMap && iconsMap instanceof Map) {\n return iconsMap.has(fullIconName);\n }\n\n return true;\n }\n\n private getFullIconName(): string {\n if (this.isCoin) {\n return 'gt-icon-' + this.iconName;\n }\n if (this.iconSize) {\n return 'gt-icon-' + this.iconName + '-' + this.iconSize;\n }\n return this.iconName;\n }\n}\n\nexport enum OLD_ICONS {\n 'uncheck',\n 'arrow-back'\n}\n\nexport enum ICONS {\n 'add-update',\n 'addressbook',\n 'arrow-down',\n 'arrow-left',\n 'arrow-right',\n 'arrow-up',\n 'bell',\n 'calendar',\n 'check',\n 'checkbox-dash',\n 'clock',\n 'chevron-double-down',\n 'chevron-double-up',\n 'copy',\n 'deposit',\n 'download',\n 'eye-closed',\n 'eye-open',\n 'exchange-provider',\n 'graphics',\n 'happy-face',\n 'home',\n 'information-circle',\n 'internal-processing',\n 'language',\n 'mail',\n 'menu',\n 'money-in',\n 'monitor',\n 'more-options',\n 'new-tab',\n 'news',\n 'off',\n 'on',\n 'payout',\n 'plus',\n 'question-circle',\n 'queue',\n 'rates',\n 'report',\n 'right-angle-arrow',\n 'search',\n 'security',\n 'settings',\n 'sign-out',\n 'stop',\n 'success-circle',\n 'swaps',\n 'swaps-arrow-left',\n 'swaps-arrow-right',\n 'switch',\n 'tool',\n 'trash',\n 'unlock',\n 'unsuccess',\n 'update',\n 'user',\n 'wallet',\n 'warning-circle'\n}\n","<svg-icon [attr.data-cy]=\"'icon_' + iconName\" *ngIf=\"iconExists\" [class.with-hover]=\"hoverIcon\" class=\"{{size}} {{iconSize}}\" [style.--icon-color]=\"customIconColorVariable\"\n [name]=\"isCoin ? 'gt-icon-' + iconName : iconSize ? 'gt-icon-' + iconName + '-' + iconSize : iconName\"></svg-icon>\n","import {Component, Input} from '@angular/core';\nimport {GravityIconComponent} from \"../gravity-icon/gravity-icon.component\";\n\n@Component({\n selector: 'gravity-button',\n templateUrl: './gravity-button.component.html',\n styleUrls: ['./gravity-button.component.scss'],\n})\nexport class GravityButtonComponent {\n @Input() public cypressTag: string;\n @Input() public disabled: boolean;\n @Input() public iconName: string | undefined;\n @Input() public isLoading: boolean = false;\n @Input() public showContent: boolean = true;\n @Input() public size: 'sm' | 'md' | 'lg' = \"md\";\n @Input() public iconPosition: 'left' | 'right' = 'left';\n @Input() public customState: 'active' | 'hover' | 'pressed' | null;\n @Input() public type: 'primary' | 'secondary' | 'tertiary' | 'positive' | 'negative';\n\n public isNewIcon(iconName: string): boolean {\n return GravityIconComponent.isNewIcon(iconName);\n }\n\n public getSizeClass(size: string) {\n if (size === 'sm' || size === 'md') {\n return 'sm';\n } else if (size === 'lg') {\n return 'md';\n }\n }\n\n public getIconSizeClass(size: string) {\n if (size === 'sm' || size === 'md') {\n return 'sm-12';\n } else if (size === 'lg') {\n return 'md-16';\n }\n }\n\n}\n","<button [attr.data-cy]=\"cypressTag ? 'button_' + cypressTag : null\" [disabled]=\"disabled\" [style]=\"isLoading ? {'pointer-events': 'none'} : {}\"\n class=\"border-radius-sm gravity-button-{{type}} gravity-size-{{size}} hr-label {{size}}-bold {{customState}}\">\n <ng-container *ngIf=\"!isLoading\">\n <gravity-icon [style.--icon-color]=\"'var(--button-text-color)'\" [size]=\"isNewIcon(iconName) ? null : getSizeClass(size)\"\n [hoverIcon]=\"false\" [iconName]=\"iconName\" *ngIf=\"iconName && iconPosition == 'left'\"\n [iconSize]=\"isNewIcon(iconName) ? getIconSizeClass(size) : null\" class=\"icon-{{iconPosition}}\"></gravity-icon>\n <span class=\"button-content-wrapper\" *ngIf=\"showContent\">\n <ng-content></ng-content>\n </span>\n <gravity-icon [style.--icon-color]=\"'var(--button-text-color)'\" [size]=\"isNewIcon(iconName) ? null : getSizeClass(size)\"\n [hoverIcon]=\"false\" [iconName]=\"iconName\" *ngIf=\"iconName && iconPosition == 'right'\"\n [iconSize]=\"isNewIcon(iconName) ? getIconSizeClass(size) : null\" class=\"icon-{{iconPosition}}\"></gravity-icon>\n </ng-container>\n <ng-container *ngIf=\"isLoading\">\n <ngb-progressbar [animated]=\"true\" [striped]=\"true\" [value]=\"100\"></ngb-progressbar>\n </ng-container>\n</button>\n","import { Pipe, PipeTransform } from '@angular/core';\n\n/**\n * filters an array based on searctext\n */\n@Pipe({\n name: 'filterBy'\n})\nexport class FilterByPipe implements PipeTransform {\n public transform(array: any[], searchText?: string, keyName?: string) {\n if (!array || !searchText || !Array.isArray(array)) {\n return array;\n }\n if (typeof array[0] === 'string') {\n return array.filter((item) => item.toLowerCase().indexOf(searchText.trim().toLowerCase()) > -1);\n }\n // filter array, items which match and return true will be\n // kept, false will be filtered out\n if (!keyName) {\n return array.filter((item: any) => {\n for (const key in item) {\n if (typeof item[key] !== 'object' && item[key].toString().toLowerCase().indexOf(searchText.trim().toLowerCase()) > -1) {\n return true;\n }\n }\n return false;\n });\n } else {\n return array.filter((item: any) => {\n if (typeof item[keyName] !== 'object' && item[keyName].toString().toLowerCase().indexOf(searchText.trim().toLowerCase()) > -1) {\n return true;\n }\n return false;\n });\n }\n\n }\n}\n","import {Subject} from \"rxjs\";\nimport { Injectable } from '@angular/core';\nimport {GravityDropdownListComponent} from \"../components/gravity-dropdown-list/gravity-dropdown-list.component\";\nimport {GravityDropdownListDisplayComponent} from \"../components/gravity-dropdown-list-display/gravity-dropdown-list-display.component\"; // ¡Importa el nuevo componente!\n\ntype DropdownComponent = GravityDropdownListComponent | GravityDropdownListDisplayComponent;\n\n@Injectable({\n\tprovidedIn: 'root'\n})\nexport class GravityDropdownManagerService {\n\n\tprivate dropdownOpenedSource = new Subject<DropdownComponent>();\n\tdropdownOpened$ = this.dropdownOpenedSource.asObservable();\n\n\tnotifyDropdownOpened(dropdown: DropdownComponent) {\n\t\tthis.dropdownOpenedSource.next(dropdown);\n\t}\n}","import {AfterViewInit, Component, EventEmitter, Input, OnChanges, Output, SimpleChanges} from '@angular/core';\n\n@Component({\n selector: 'gravity-checkbox',\n templateUrl: './gravity-checkbox.component.html',\n styleUrls: ['./gravity-checkbox.component.scss']\n})\nexport class GravityCheckboxComponent implements AfterViewInit, OnChanges {\n @Input() public cypressTag: string;\n @Input() public checked: boolean = false;\n @Input() public disabled: boolean = false;\n @Input() public name: string;\n @Input() public size: 'md' | 'sm' = 'sm';\n @Input() public value: string;\n @Input() public isPartial: boolean = false;\n @Output() public change: EventEmitter<{ value: string, checked: boolean }> = new EventEmitter<{\n value: string,\n checked: boolean\n }>();\n\n public isCheckboxChecked: boolean = false;\n\n ngAfterViewInit() {\n this.isCheckboxChecked = this.checked;\n this.change.emit({value: this.value, checked: this.isCheckboxChecked});\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes['checked']) {\n this.isCheckboxChecked = changes['checked'].currentValue;\n }\n }\n\n toggleCheckbox(): void {\n if (!this.disabled) {\n this.isCheckboxChecked = !this.isCheckboxChecked;\n this.change.emit({value: this.value, checked: this.isCheckboxChecked});\n }\n }\n}\n","<div class=\"gravity-checkbox-field size-{{size}}\" [class.disabled]=\"disabled\" [attr.data-cy]=\"cypressTag ? 'checkbox_' + cypressTag : null\">\n <input [checked]=\"isCheckboxChecked || isPartial\"\n [disabled]=\"disabled\"\n [name]=\"name\"\n [value]=\"value\"\n\n type=\"checkbox\">\n <span class=\"checkmark\" (click)=\"toggleCheckbox()\">\n <gravity-icon [iconName]=\"isPartial ? 'checkbox-dash' : 'check'\" [iconSize]=\"'sm-12'\"\n *ngIf=\"isCheckboxChecked || isPartial\"></gravity-icon>\n </span>\n <label>\n <ng-content></ng-content>\n </label>\n</div>\n","import {Component, Input} from '@angular/core';\n\n@Component({\n selector: 'gravity-currency',\n templateUrl: './gravity-currency.component.html',\n styleUrls: ['./gravity-currency.component.scss'],\n})\nexport class GravityCurrencyComponent {\n @Input() public cypressTag: string;\n @Input() public disabled: boolean;\n @Input() public size: 'xs-12' | 'sm-16' | 'md-24' | 'lg-32' | 'xl-40' = 'md-24';\n @Input() public currency: { currency_id: number, currency_iso?: string, network_id?: number };\n @Input() public showLayers: boolean;\n}\n","<div class=\"gravity-currency\" [attr.data-cy]=\"cypressTag ? 'currency_' + cypressTag: null\">\n <div class=\"main-currency {{size}}\">\n <gravity-icon class=\"currency {{showLayers ? 'show-layers' : null}}\"\n [iconName]=\"disabled ? 'coin-id-'+ currency.currency_id + '-disabled' : 'coin-id-' + currency.currency_id\"\n *ngIf=\"currency.currency_id\" [iconSize]=\"'sm-12'\" [isCoin]=\"true\"></gravity-icon>\n <gravity-icon class=\"bg-2\"\n [iconName]=\"disabled ? 'coin-id-'+ currency.currency_id + '-disabled' : 'coin-id-' + currency.currency_id\"\n *ngIf=\"currency.currency_id && showLayers && !disabled\" [iconSize]=\"'sm-12'\"\n [isCoin]=\"true\"></gravity-icon>\n <gravity-icon class=\"bg-3\"\n [iconName]=\"disabled ? 'coin-id-'+ currency.currency_id + '-disabled' : 'coin-id-' + currency.currency_id\"\n *ngIf=\"currency.currency_id && showLayers && !disabled\" [iconSize]=\"'sm-12'\"\n [isCoin]=\"true\"></gravity-icon>\n </div>\n <gravity-icon class=\"network {{showLayers ? 'show-layers' : null}} {{size}}\"\n [iconName]=\"disabled ? 'network-id-'+ currency.network_id + '-disabled' : 'network-id-' + currency.network_id\"\n *ngIf=\"currency?.network_id && size != 'xs-12'\" [iconSize]=\"'sm-12'\" [isCoin]=\"true\"></gravity-icon>\n</div>","import {Component, Input} from '@angular/core';\n\n@Component({\n selector: 'gravity-network-pill',\n templateUrl: './gravity-network-pill.component.html',\n styleUrls: ['./gravity-network-pill.component.scss'],\n})\nexport class GravityNetworkPillComponent {\n @Input() public cypressTag: string;\n @Input() public disabled: boolean;\n @Input() public showNetworkIcon: boolean = true;\n @Input() public network: { iso: string, id?: number };\n @Input() public type: 'primary' | 'secondary' = 'primary';\n}\n","<div class=\"gravity-network-pill {{type}}\" [class.disabled]=\"disabled\" [attr.data-cy]=\"cypressTag ? 'networkPill_' + cypressTag : null\">\n <div class=\"currency-info\">\n <span class=\"hr-body sm-regular\">{{ network.iso }}</span>\n <gravity-icon *ngIf=\"network?.id && showNetworkIcon\"\n [iconSize]=\"'sm-12'\" [isCoin]=\"true\"\n [iconName]=\"disabled ? 'network-id-' + network.id + '-disabled' : 'network-id-' + network.id\">\n </gravity-icon>\n </div>\n</div>","import {Component, Input} from '@angular/core';\n\n@Component({\n selector: 'gravity-link',\n templateUrl: './gravity-link.component.html',\n styleUrls: ['./gravity-link.component.scss']\n})\nexport class GravityLinkComponent {\n @Input() public linkText: string;\n @Input() public fontClass: string;\n @Input() public link: string = '';\n @Input() public cypressTag: string;\n @Input() public iconName: string | undefined;\n @Input() public target : '_blank' | '_self' = '_self';\n @Input() public iconPosition: 'left' | 'right' = 'left';\n @Input() public iconSize : 'sm-12' | 'md-16' | 'lg-24' | 'xl-32' = 'md-16';\n @Input() public state: 'active' | 'visited' | 'pressed' | 'disabled' = 'active';\n}\n","<div class=\"gravity-link-container {{iconPosition}} {{state}}\" [attr.data-cy]=\"cypressTag ? 'link_' + cypressTag : null\">\n\n <a *ngIf=\"!link || !(link.startsWith('http') || link.startsWith('https'))\"\n [routerLink]=\"!link || state === 'disabled' ? null : link\"\n class=\"{{ fontClass ? (fontClass !== '' ? fontClass : 'hr-body sm-regular') : 'hr-body sm-regular' }}\"> \n {{linkText}}\n </a>\n\n <a *ngIf=\"link && (link.startsWith('http') || link.startsWith('https'))\"\n [href]=\"state === 'disabled' || link === '' ? null : link\" [target]=\"target\"\n class=\"{{ fontClass ? (fontClass !== '' ? fontClass : 'hr-body sm-regular') : 'hr-body sm-regular' }}\">\n {{linkText}}\n </a>\n\n <gravity-icon [style.--icon-color]=\"'var(--link-text-color)'\" [size]=\"'md'\"\n [hoverIcon]=\"false\" [iconName]=\"iconName\" *ngIf=\"iconName\"\n [iconSize]=\"iconSize\" class=\"icon-{{iconPosition}}\">\n </gravity-icon>\n</div>","import {Component, EventEmitter, Input, Output} from '@angular/core';\n\n@Component({\n selector: 'gravity-dropdown-label',\n templateUrl: './gravity-dropdown-label.component.html',\n styleUrls: ['./gravity-dropdown-label.component.scss']\n})\nexport class GravityDropdownLabelComponent {\n\n @Input() public label: string;\n @Input() public fontClass: string;\n @Input() public isOpen: boolean = false;\n @Input() public stopPropagation: boolean = true;\n @Input() public size: 'sm' | 'md' | 'lg' = 'sm';\n @Input() public state: 'active' | 'inactive' = 'active';\n\n @Output() public onClickLabel = new EventEmitter<void>();\n\n public getLabelClass() {\n switch (this.size) {\n case \"sm\": return 'hr-title md-bold';\n case \"md\": return 'hr-headline sm-bold';\n case \"lg\": return 'hr-headline md-bold';\n }\n }\n\n public onClick(event: MouseEvent): void {\n if(this.stopPropagation) {event.stopPropagation();}\n if(this.state !== 'inactive') {this.onClickLabel.emit();}\n }\n\n public getIconSize() {\n let newIconsSize: 'sm' | 'md' | 'lg';\n let oldIconsSize: 'sm-12' | 'md-16' | 'lg-24' | 'xl-32';\n switch (this.size) {\n case \"lg\":\n case \"md\":\n newIconsSize = 'lg';\n oldIconsSize = 'lg-24';\n break;\n case \"sm\":\n newIconsSize = 'md';\n oldIconsSize = 'md-16';\n break;\n }\n return {newIconsSize, oldIconsSize};\n }\n\n}\n","<div class=\"gravity-dropdown-label {{state}}\" [class.open]=\"isOpen\" (click)=\"onClick($event)\">\n <p [ngClass]=\"fontClass && fontClass !== '' ? fontClass : getLabelClass()\">{{label}}</p>\n <gravity-icon *ngIf=\"state === 'active'\" [style.--icon-color]=\"'var(--label-icon-color)'\"\n [iconName]=\"isOpen ? 'arrow-up' : 'arrow-down'\" [size]=\"getIconSize().newIconsSize\"\n [iconSize]=\"getIconSize().oldIconsSize\">\n </gravity-icon>\n</div>","import {Component, Input} from '@angular/core';\n\n@Component({\n selector: 'gravity-currency-display-v2',\n templateUrl: './gravity-currency-display-v2.component.html',\n styleUrls: ['./gravity-currency-display-v2.component.scss']\n})\nexport class GravityCurrencyDisplayV2Component {\n @Input() public cypressTag: string;\n @Input() public disabled: boolean = false;\n @Input() public type: 'full' | 'short-hrz' | 'short-vrt' |'fiat-short' = 'full';\n @Input() public currency: { currency_name?: string,\n currency_id?: number, currency_iso: string,\n network_id?: number, network_iso?: string,\n pill_type?: 'primary' | 'secondary'\n }\n}\n","<section class=\"gravity-currency-display\" [attr.data-cy]=\"cypressTag ? 'currencyDisplay_' + cypressTag: null\">\n <gravity-currency *ngIf=\" currency.currency_id && type === 'full'\"\n [disabled]=\"disabled\" [size]=\"'md-24'\"\n [currency]=\"{ currency_id: currency.currency_id}\">\n </gravity-currency>\n\n <section class=\"currency-info {{type}}\" [class.disabled]=\"disabled\">\n <div class=\"iso-and-network\">\n <div class=\"currency-iso\">\n <gravity-currency *ngIf=\" currency.currency_id && type !== 'full'\"\n [disabled]=\"disabled\" [size]=\"'sm-16'\"\n [currency]=\"{ currency_id: currency.currency_id}\" >\n </gravity-currency>\n\n <span class=\"hr-body sm-bold\">{{currency.currency_iso}}</span>\n </div>\n\n <gravity-network-pill *ngIf=\"type !== 'fiat-short' && (currency?.network_iso && currency?.network_id)\"\n [disabled]=\"disabled\"\n [type]=\"currency?.pill_type || 'primary'\"\n [network]=\"{ iso: currency?.network_iso, id: currency?.network_id }\" >\n </gravity-network-pill>\n </div>\n\n <span *ngIf=\"!type.startsWith('short')\" class=\"hr-body sm-regular\">{{currency?.currency_name}}</span>\n </section>\n</section>\n","import {Subscription} from \"rxjs\";\nimport {FilterByPipe} from \"./filter-by.pipe\";\nimport {GravityIconComponent} from \"../gravity-icon/gravity-icon.component\";\nimport {GravityDropdownManagerService} from \"../../services/gravity-dropdown-manager.service\";\nimport {Component, ElementRef, EventEmitter, HostListener, Input, OnChanges, OnDestroy, OnInit, Output, SimpleChange, SimpleChanges, ViewChild} from '@angular/core';\n\n@Component({\n selector: 'gravity-dropdown-list',\n templateUrl: './gravity-dropdown-list.component.html',\n styleUrls: ['./gravity-dropdown-list.component.scss'],\n providers: [FilterByPipe]\n})\nexport class GravityDropdownListComponent implements OnChanges, OnInit, OnDestroy {\n // Component features\n @Input() public label: string;\n @Input() public iconLeft: string;\n @Input() public items: Array<any>;\n @Input() public cypressTag: string;\n @Input() public placeholder: string;\n @Input() public supportText: string;\n @Input() public hasError: boolean = false;\n @Input() public clearable: boolean = true;\n @Input() public multiple: boolean = false;\n @Input() public required: boolean = false;\n @Input() public currentLang: string = 'en';\n @Input() public isCurrency: boolean = false;\n @Input() public isDisabled: boolean = false;\n @Input() public isReadonly: boolean = false;\n @Input() public customValues: Array<any> | any;\n @Input() public config?: { label: string; value: string; };\n\n // Appearance settings\n @Input() public labelSize: 'sm' | 'md' | 'lg' = 'sm';\n @Input() public size: 'sm' | 'md' | 'lg' | 'xl' = 'md';\n @Input() public inputType: 'field' | 'label' = 'field';\n @Input() public width: 'short' | 'medium' | 'full' | 'fit' = 'short';\n\n @Input()\n get dropdownState(): boolean {\n return this.dropdownOpened;\n }\n\n set dropdownState(value: boolean) {\n this.dropdownOpened = value;\n }\n\n @Output() dropdownStateChange = new EventEmitter<boolean>();\n @Output('response') public selectedItemsResponse: EventEmitter<any[] | any> = new EventEmitter();\n\n @ViewChild('searchInput')\n set watch(searchInput: ElementRef<HTMLInputElement>) {\n if (searchInput) {\n searchInput.nativeElement.focus({preventScroll: true});\n }\n };\n\n @ViewChild('containerRef') containerRef!: ElementRef<HTMLDivElement>;\n\n public searchText: string = '';\n public selectedItems: any[] = [];\n public isoConfig: string = 'iso';\n\tpublic nameConfig: string = 'name';\n public availableOptions: any[] = [];\n public dropdownOpened: boolean = false;\n public openChildrenMap = new Map<any, boolean>();\n public networkConfig: { label: string; iso: string; id: number; } = null;\n\n\tprivate dropdownManagerSubscription!: Subscription;\n\n\tconstructor(private dropdownService: GravityDropdownManagerService, private _eref: ElementRef) { }\n\n\tngOnInit() {\n\t\tthis.dropdownManagerSubscription = this.dropdownService.dropdownOpened$.subscribe(openedDropdown => {\n\t\t\tif (openedDropdown !== this && this.dropdownOpened) {\n\t\t\t\tthis.closeDropdown();\n\t\t\t}\n\t\t});\n\t}\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes['items']?.currentValue) {\n this.availableOptions = this.items;\n }\n\n if (changes['customValues']) {\n const changeItem: SimpleChange = changes['customValues'];\n const currentValue = changeItem?.currentValue;\n\n const findOptionRecursively = (items: any[], value: any): any | null => {\n for (const item of items) {\n const itemValue = this.config ? item[this.config.value] : item;\n if (itemValue == value) {\n return item;\n }\n\n if (item.children) {\n const foundChild = findOptionRecursively(item.children, value);\n if (foundChild) return foundChild;\n }\n }\n return null;\n };\n\n this.selectedItems = [];\n\n if (Array.isArray(currentValue)) {\n currentValue.forEach((val: any) => {\n const found = findOptionRecursively(this.items, val);\n if (found && !this.selectedItems.includes(found)) {\n this.selectedItems.push(found);\n }\n });\n } else if (currentValue != null && currentValue !== '') {\n const found = findOptionRecursively(this.items, currentValue);\n if (found) {\n this.selectedItems = [found];\n }\n } else if (!currentValue && !changeItem.firstChange) {\n this.clearSelection();\n }\n }\n }\n\n\tngOnDestroy() {\n\t\tif (this.dropdownManagerSubscription) {\n\t\t\tthis.dropdownManagerSubscription.unsubscribe();\n\t\t}\n\t}\n\n\tpublic getStatus(): string {\n if (this.isDisabled) {\n return 'disabled';\n } else if (this.isReadonly) {\n return 'readonly';\n } else if (this.hasError) {\n return 'error';\n } else if (this.dropdownOpened) {\n return 'open';\n } else if (this.selectedItems.length > 0) {\n return 'selected';\n } else {\n return 'active';\n }\n }\n\n public isIconLeftNew(): boolean {\n if (this.iconLeft) {\n return GravityIconComponent.isNewIcon(this.iconLeft);\n }\n\n return false;\n }\n\n\tpublic toggleDropdown(): void {\n\t\tevent.stopPropagation();\n\t\tthis.networkConfig = null;\n\n\t\tif (!this.isDisabled && !this.isReadonly) {\n\t\t\tif (this.dropdownOpened) {\n\t\t\t\tthis.emitSelection();\n\t\t\t\tthis.searchText = '';\n\t\t\t\tthis.closeDropdown();\n\t\t\t} else {\n\t\t\t\tthis.openDropdown();\n\t\t\t\tthis.selectedItems?.forEach(sel => {\n\t\t\t\t\tthis.items?.forEach(parent => {\n\t\t\t\t\t\tif (parent.children?.includes(sel)) {\n\t\t\t\t\t\t\tthis.openChildrenMap.set(parent, true);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate emitSelection(): void {\n\t\tif (this.multiple) {\n\t\t\tif (this.selectedItems?.length > 0) {\n\t\t\t\tthis.selectedItemsResponse.emit(this.selectedItems);\n\t\t\t}\n\t\t} else {\n\t\t\tif (this.selectedItems[0]) {\n\t\t\t\tthis.selectedItemsResponse.emit(this.selectedItems[0]);\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic selectItem(itemToAdd: any): void {\n const isParent = !!itemToAdd.children;\n\n if (this.multiple) {\n const isSelected = this.checkIfSelected(itemToAdd);\n\n if (isSelected) {\n this.selectedItems = this.selectedItems.filter(i =>\n (this.config ? i[this.config.value] : i) !==\n (this.config ? itemToAdd[this.config.value] : itemToAdd)\n );\n\n if (isParent) {\n itemToAdd.children.forEach(child => {\n this.selectedItems = this.selectedItems.filter(i => i !== child);\n });\n } else {\n this.items.forEach(parent => {\n if (parent.children?.includes(itemToAdd)) {\n const anySelected = parent.children.some(child => this.checkIfSelected(child));\n const allSelected = parent.children.every(child => this.checkIfSelected(child));\n if (!anySelected) {\n this.selectedItems = this.selectedItems.filter(i => i !== parent);\n } else if (allSelected && !this.checkIfSelected(parent)) {\n this.selectedItems.push(parent);\n }\n }\n });\n }\n\n } else {\n this.selectedItems.push(itemToAdd);\n\n if (isParent) {\n itemToAdd.children.forEach(child => {\n if (!this.checkIfSelected(child)) {\n this.selectedItems.push(child);\n }\n });\n } else {\n this.items.forEach(parent => {\n if (parent.children?.includes(itemToAdd)) {\n const allSelected = parent.children.every(child => this.checkIfSelected(child));\n if (allSelected && !this.checkIfSelected(parent)) {\n this.selectedItems.push(parent);\n }\n }\n });\n }\n }\n } else {\n this.selectedItems = [itemToAdd];\n this.toggleDropdown();\n }\n\n this.refocusSearchInput();\n }\n\n private refocusSearchInput(): void {\n setTimeout(() => {\n const inputEl = this._eref.nativeElement.querySelector('input');\n if (inputEl) {\n inputEl.focus({ preventScroll: true });\n }\n }, 0);\n }\n\n public isPartiallySelected(item: any): boolean {\n if (!item.children?.length) return false;\n\n const selectedChildren = item.children.filter(child => this.checkIfSelected(child));\n return selectedChildren.length > 0 && selectedChildren.length < item.children.length;\n }\n\n public checkIfSelected(item?: any): boolean {\n const getValue = (el: any) => this.config ? el[this.config.value] : el;\n\n if (item) {\n return this.selectedItems.some(selected => getValue(selected) === getValue(item));\n }\n\n const flatten = this.flattenItems(this.availableOptions);\n return flatten.length > 0 && flatten.every(option =>\n this.selectedItems.some(selected => getValue(selected) === getValue(option))\n );\n }\n\n public selectAllItems(event: MouseEvent): void {\n event.stopPropagation();\n const flatten = this.flattenItems(this.availableOptions);\n const getValue = (el: any) => this.config ? el[this.config.value] : el;\n\n const allSelected = flatten.every(option =>\n this.selectedItems.some(selected => getValue(selected) === getValue(option))\n );\n\n if (allSelected) {\n this.selectedItems = this.selectedItems.filter(selected =>\n !flatten.some(option => getValue(selected) === getValue(option))\n );\n } else {\n flatten.forEach(option => {\n if (!this.selectedItems.some(selected => getValue(selected) === getValue(option))) {\n this.selectedItems.push(option);\n }\n });\n }\n }\n\n private flattenItems(items: any[]): any[] {\n return items.reduce((acc, item) => {\n acc.push(item);\n if (item.children?.length) {\n acc.push(...this.flattenItems(item.children));\n }\n return acc;\n }, []);\n }\n\n public clearSelection(): void {\n this.selectedItems = [];\n\t\tthis.networkConfig = null;\n\n if (this.multiple) {\n this.selectedItemsResponse.emit(this.selectedItems);\n } else {\n this.selectedItemsResponse.emit(null);\n }\n }\n\n\tpublic filterItems(): void {\n\t\tconst search = this.searchText?.toLowerCase();\n\t\tthis.openChildrenMap.clear();\n\n\t\tif (!search) {\n\t\t\tthis.availableOptions = JSON.parse(JSON.stringify(this.items));\n\t\t\treturn;\n\t\t}\n\n\t\tconst filterRecursive = (items: any[]): any[] => {\n\t\t\tconst result = [];\n\n\t\t\titems.forEach(item => {\n\t\t\t\tconst hasChildren = !!item.children?.length;\n\n\t\t\t\tconst fieldsToSearch: any[] = [];\n\t\t\t\tif (this.config) {\n\t\t\t\t\tfieldsToSearch.push(item[this.isoConfig]);\n\t\t\t\t\tfieldsToSearch.push(item[this.nameConfig]);\n\n\t\t\t\t\tif(this.config.label) {\n\t\t\t\t\t\tfieldsToSearch.push(item[this.config.label]);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tconst match = fieldsToSearch.some(field =>\n\t\t\t\t\tfield?.toString().toLowerCase().includes(search)\n\t\t\t\t);\n\n\t\t\t\tlet filteredChildren: any[] = [];\n\t\t\t\tif (hasChildren) {\n\t\t\t\t\tfilteredChildren = filterRecursive(item.children);\n\t\t\t\t}\n\n\t\t\t\tconst includeItem = hasChildren ? filteredChildren.length > 0 : match;\n\n\t\t\t\tif (includeItem) {\n\t\t\t\t\tconst newItem = { ...item };\n\t\t\t\t\tif (filteredChildren.length > 0) {\n\t\t\t\t\t\tnewItem.children = filteredChildren;\n\t\t\t\t\t\tthis.openChildrenMap.set(newItem, true);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tdelete newItem.children;\n\t\t\t\t\t}\n\t\t\t\t\tresult.push(newItem);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\treturn result;\n\t\t};\n\n\t\tthis.availableOptions = filterRecursive(this.items);\n\t}\n\n\t@HostListener('document:click', ['$event']) onDocumentClick($event: PointerEvent): void {\n if (!this._eref.nativeElement.contains($event.target) && this.dropdownOpened) {\n if (this.multiple) {\n this.selectedItemsResponse.emit(this.selectedItems);\n } else {\n if (this.selectedItems[0]) {\n this.selectedItemsResponse.emit(this.selectedItems[0]);\n }\n }\n\n this.closeDropdown();\n }\n }\n\n\tpublic openDropdown(): void {\n\t\tthis.dropdownOpened = true;\n\t\tthis.dropdownService.notifyDropdownOpened(this);\n\t\tthis.dropdownStateChange.emit(this.dropdownOpened);\n\n setTimeout(() => {\n this.scrollToSelected();\n }, 50);\n\t}\n\n\tpublic closeDropdown(): void {\n\t\tthis.searchText = '';\n\t\tthis.dropdownOpened = false;\n\t\tthis.availableOptions = this.items;\n\t\tthis.dropdownStateChange.emit(this.dropdownOpened);\n\t}\n\n public getCurrencyIconSize(size: string) {\n switch (size) {\n case 'sm':\n return 'sm-16';\n case 'lg':\n return 'lg-32';\n case 'xl':\n return 'xl-40';\n default:\n return 'md-24';\n }\n }\n\n public getSpacingClass(size: string) {\n switch (size) {\n case 'sm':\n return 'gravity-margin-right-xxs';\n case 'md':\n return 'gravity-margin-right-xs';\n case 'lg':\n return 'gravity-margin-right-sm';\n case 'xl':\n return 'gravity-margin-right-md';\n default:\n return '';\n }\n }\n\n public getMultilevelSpacingClass(size: string) {\n switch (size) {\n case 'sm':\n return 'gravity-margin-right-md';\n case 'md':\n return 'gravity-margin-right-lg';\n default:\n return '';\n }\n }\n\n public getLabelText(): string {\n let result: string = '';\n if (this.selectedItems.length === 0) {\n result = this.label;\n } else {\n this.selectedItems.forEach((item, i) => {\n let displayValue = this.config ? item[this.config.label] : item;\n let separator = i !== this.selectedItems.length - 1 ? ',' : '';\n result = result + displayValue + separator;\n });\n }\n return result;\n }\n\n public isChildrenOpen(item: any): boolean {\n return this.openChildrenMap.get(item) === true;\n }\n\n public toggleChildren(item: any, event: MouseEvent): void {\n event.stopPropagation();\n const current = this.openChildrenMap.get(item) || false;\n this.openChildrenMap.set(item, !current);\n }\n\n public getDisplayValue(child: any, config?: { label: string }): string {\n if (config?.label && typeof child === 'object' && child !== null) {\n return child[config.label] ?? '';\n }\n return child ?? '';\n }\n\n public inputDisplayValue(): string {\n if (!this.selectedItems?.length) return '';\n\n const getValue = (item: any) => this.config ? item[this.config.value] : item;\n\n const getLabel = (item: any): string => {\n const baseLabel = this.config ? item[this.config.label] : item;\n\n if (!this.multiple && item.network?.code && (item.network_id !== item.currency_id || item.children || item.is_ERC20)) {\n this.networkConfig = {label: baseLabel, iso: item.network?.code, id: item.network_id}\n }\n\n return baseLabel;\n };\n\n if (!this.items?.length) {\n return this.selectedItems.map(getLabel).join(', ');\n }\n\n const labels: string[] = [];\n\n for (const parent of this.items) {\n if (parent.children?.length) {\n const allChildrenSelected = parent.children.every(child =>\n this.selectedItems.some(sel => getValue(sel) === getValue(child))\n );\n\n if (allChildrenSelected) {\n labels.push(getLabel(parent));\n } else {\n for (const child of parent.children) {\n if (this.selectedItems.some(sel => getValue(sel) === getValue(child))) {\n labels.push(getLabel(child));\n }\n }\n }\n } else if (this.selectedItems.some(sel => getValue(sel) === getValue(parent))) {\n labels.push(getLabel(parent));\n }\n }\n\n return this.truncate(labels);\n }\n\n private truncate(labels: string[]): string {\n const maxItems = this.width === 'short' ? 3 : this.width === 'medium' ? 6 : 12;\n if (labels.length <= maxItems) return labels.join(', ');\n return labels.slice(0, maxItems).join(', ') + '...';\n }\n\n public clearSearch(): void {\n this.searchText = '';\n this.availableOptions = JSON.parse(JSON.stringify(this.items));\n }\n\n public preventTypingWhenLocked(event: KeyboardEvent, input: HTMLInputElement) {\n const isLocked = !this.dropdownOpened || !this.items;\n\n if (isLocked) {\n if (event.key.length === 1 || event.key === 'Backspace' || event.key === 'Delete') {\n event.preventDefault();\n }\n\n input.blur();\n }\n }\n\n private scrollToSelected(): void {\n if (!this.containerRef || !this.selectedItems.length) return;\n\n const container = this.containerRef.nativeElement;\n\n const selectedElement = container.querySelector('.item.selected');\n\n if (selectedElement) {\n setTimeout(() => {\n selectedElement.scrollIntoView({\n behavior: 'smooth',\n block: 'nearest',\n inline: 'start'\n });\n }, 0);\n }\n }\n}\n","<ng-container *ngIf=\"inputType === 'field'\">\n <label class=\"hr-label sm-bold {{getStatus()}}\" *ngIf=\"label\">\n {{ label }} <span *ngIf=\"required || hasError\">*</span>\n </label>\n</ng-container>\n\n<div class=\"gravity-input-field {{inputType}}-{{labelSize}} {{size}} {{width}}-width {{getStatus()}}\"\n [attr.data-cy]=\"cypressTag ? 'dropdown_'+cypressTag : null\" (click)=\"toggleDropdown();\">\n\n <ng-container *ngIf=\"inputType === 'field'\">\n <gravity-icon class=\"left\" [iconName]=\"iconLeft\" [iconSize]=\"isIconLeftNew() ? 'md-16' : null\"\n *ngIf=\"(iconLeft && !dropdownOpened) || (iconLeft && !items)\"></gravity-icon>\n\n <gravity-icon class=\"search-icon\" [iconName]=\"'search'\" [iconSize]=\"'sm-12'\"\n *ngIf=\"(dropdownOpened && items)\"></gravity-icon>\n\n <div *ngIf=\"!dropdownOpened && networkConfig\" class=\"network-pill\">\n <span class=\"hr-label {{size}}-regular\">{{ networkConfig.label }}</span>\n <gravity-network-pill [disabled]=\"isDisabled\"\n [network]=\"{iso: networkConfig.iso, id: networkConfig.id}\"></gravity-network-pill>\n </div>\n\n <input *ngIf=\"!networkConfig || dropdownOpened\" autocomplete=\"off\"\n class=\"hr-label {{size}}-regular {{getStatus()}}\"\n (focus)=\"searchText = ''\" [class.locked]=\"!dropdownOpened || !items\"\n (keydown)=\"preventTypingWhenLocked($event, searchInput)\"\n (input)=\"filterItems(); dropdownOpened = true\"\n [attr.data-cy]=\"'dropdown_searchInput'\"\n #searchInput\n [ngModel]=\"(dropdownOpened && items) ? searchText : inputDisplayValue()\"\n (ngModelChange)=\"searchText = $event\"\n placeholder=\"{{(dropdownOpened && items) ? (currentLang == 'es' ? 'Buscar' : 'Search input') : (placeholder ? placeholder : label)}}\">\n\n <gravity-icon class=\"right\" [iconName]=\"dropdownOpened ? 'arrow-up': 'arrow-down'\"\n [iconSize]=\"'md-16'\" *ngIf=\"!isReadonly && searchText.length == 0\"></gravity-icon>\n\n <gravity-icon class=\"right\" [iconName]=\"'unsuccess'\" (click)=\"clearSearch()\"\n [iconSize]=\"'md-16'\" *ngIf=\"dropdownOpened && searchText.length > 0\"></gravity-icon>\n </ng-container>\n\n <ng-container *ngIf=\"inputType === 'label'\">\n <gravity-dropdown-label (onClickLabel)=\"toggleDropdown()\" [label]=\"getLabelText()\"\n [size]=\"labelSize\" [isOpen]=\"dropdownOpened\">\n </gravity-dropdown-label>\n </ng-container>\n\n <div class=\"dropdown-panel {{getStatus()}}\" (click)=\"$event.stopPropagation()\" *ngIf=\"items && dropdownOpened\"\n [attr.data-cy]=\"'dropdown_panel'\">\n <div class=\"search-input\" *ngIf=\"inputType === 'label'\">\n <gravity-icon class=\"search-icon\" [iconName]=\"'search'\" [iconSize]=\"'sm-12'\"></gravity-icon>\n <input autocomplete=\"off\" class=\"hr-label {{size}}-regular\" (input)=\"filterItems()\"\n [attr.data-cy]=\"'dropdown_searchInput'\" #searchInput\n [(ngModel)]=\"searchText\" placeholder=\"{{currentLang == 'es' ? 'Buscar' : 'Search input'}}\">\n <gravity-icon class=\"pointer reset-icon\" (click)=\"searchText = ''; filterItems()\" [iconName]=\"'unsuccess'\"\n [iconSize]=\"'sm-12'\" *ngIf=\"searchText?.length > 0\"></gravity-icon>\n </div>\n\n <div class=\"select-all\" *ngIf=\"multiple && availableOptions.length != 0\">\n <gravity-checkbox [ngClass]=\"getSpacingClass(size)\"\n (click)=\"selectAllItems($event)\"\n [checked]=\"checkIfSelected()\"></gravity-checkbox>\n <p class=\"hr-label {{size}}-regular\">{{ currentLang == 'es' ? 'Seleccionar todo' : 'Select all' }}</p>\n </div>\n\n <div class=\"items-container\" #containerRef>\n <div class=\"items\">\n <div class=\"item-container\" *ngFor=\"let item of availableOptions\"\n [attr.data-cy]=\"isCurrency ? 'dropdown_currencyId' + item.currency_id : 'dropdown_option' + getDisplayValue(item, config)\">\n <div class=\"hr-label item {{size}}-regular pointer\"\n [class.selected]=\"checkIfSelected(item)\"\n [class.partial]=\"isPartiallySelected(item)\"\n (click)=\"item.children?.length ? multiple ? selectItem(item) : toggleChildren(item, $event) : selectItem(item)\">\n\n <gravity-checkbox *ngIf=\"multiple\" [ngClass]=\"getSpacingClass(size)\"\n [isPartial]=\"isPartiallySelected(item)\"\n [checked]=\"checkIfSelected(item)\">\n </gravity-checkbox>\n\n <gravity-currency-display-v2 *ngIf=\"isCurrency\"\n [ngClass]=\"getSpacingClass(size)\"\n [type]=\"item.type === 'FIAT' ? 'fiat-short' : 'short-hrz'\"\n [currency]=\"{\n currency_name: item.name,\n currency_id: item.currency_id, currency_iso: item.iso,\n network_id: item.network?.id, network_iso: item.network?.code,\n pill_type: checkIfSelected(item) ? 'secondary' : 'primary'}\">\n </gravity-currency-display-v2>\n\n <div *ngIf=\"!isCurrency\" [ngClass]=\"getSpacingClass(size)\">{{ getDisplayValue(item, config) }}</div>\n\n <gravity-icon style=\"margin-left: auto\" (click)=\"toggleChildren(item, $event)\"\n [iconName]=\"isChildrenOpen(item) ? 'arrow-up' : 'arrow-down'\"\n [iconSize]=\"'md-16'\" *ngIf=\"item.children?.length\"></gravity-icon>\n </div>\n\n <div class=\"item-children\" *ngIf=\"item.children?.length && isChildrenOpen(item)\">\n <ng-container *ngFor=\"let child of item.children\">\n <div class=\"hr-label item {{size}}-regular pointer\" [ngClass]=\"{'multiple' : multiple}\"\n [class.selected]=\"checkIfSelected(child)\"\n (click)=\"selectItem(child)\">\n <gravity-checkbox *ngIf=\"multiple\" [ngClass]=\"getMultilevelSpacingClass(size)\"\n [checked]=\"checkIfSelected(child)\"></gravity-checkbox>\n <gravity-currency *ngIf=\"isCurrency\" [ngClass]=\"getSpacingClass(size)\"\n [size]=\"getCurrencyIconSize(size)\"\n [currency]=\"{currency_id: child.currency_id}\"></gravity-currency>\n <div [ngClass]=\"getSpacingClass(size)\">{{ getDisplayValue(child, config) }}</div>\n <gravity-network-pill *ngIf=\"isCurrency\" [type]=\"checkIfSelected(child) ? 'secondary' : 'primary'\"\n [network]=\"{ iso: child.network?.code, id: child.network?.id }\"></gravity-network-pill>\n </div>\n </ng-container>\n </div>\n </div>\n <div class=\"item-container\" *ngIf=\"availableOptions.length === 0\">\n <div class=\"hr-label item {{size}}-bold no-results\">\n {{ currentLang == 'es' ? 'Sin resultados encontrados' : 'No results found.' }}\n </div>\n </div>\n </div>\n </div>\n\n <div class=\"dropdown-footer\" *ngIf=\"selectedItems.length > 0 && availableOptions.length !== 0\"\n [class.not-clearable]=\"!clearable\">\n <gravity-link *ngIf=\"clearable\"\n (click)=\"clearSelection()\"\n [fontClass]=\"'hr-label sm-regular'\"\n [attr.data-cy]=\"'dropdown_clear'\"\n [linkText]=\"currentLang == 'es' ? 'Limpiar' : 'Clear selection'\">\n </gravity-link>\n\n <gravity-link *ngIf=\"availableOptions.length != 0\"\n [fontClass]=\"'hr-label sm-bold'\"\n [attr.data-cy]=\"'dropdown_apply'\"\n (click)=\"$event.stopPropagation(); toggleDropdown()\"\n [linkText]=\"currentLang == 'es' ? 'Aplicar' : 'Apply'\">\n </gravity-link>\n </div>\n <div class=\"dropdown-footer no-results\" *ngIf=\"availableOptions.length === 0\" [class.not-clearable]=\"!clearable\">\n <gravity-link *ngIf=\"clearable\"\n (click)=\"clearSearch()\"\n [fontClass]=\"'hr-label sm-regular'\"\n [attr.data-cy]=\"'dropdown_clearSearch'\"\n [linkText]=\"currentLang == 'es' ? 'Limpiar búsqueda' : 'Clear search'\">\n </gravity-link>\n </div>\n </div>\n\n <section class=\"external-content\" *ngIf=\"!items && dropdownOpened\" (click)=\"$event.stopPropagation()\">\n <ng-content></ng-content>\n </section>\n</div>\n\n<ng-container *ngIf=\"inputType === 'field'\">\n <p class=\"hr-label sm-regular supporting-text {{getStatus()}} {{size}}\" *ngIf=\"supportText\">\n {{ supportText }}\n </p>\n <p class=\"hr-label sm-regular supporting-text {{getStatus()}} {{size}}\"\n *ngIf=\"!supportText && getStatus() == 'active' && selectedItems.length == 0 && required\">\n {{ currentLang == 'es' ? 'Requerido' : 'Required' }}\n </p>\n</ng-container>","import {DisplayCurrencyItems} from \"./display-currency-items\";\nimport {FilterByPipe} from \"../gravity-dropdown-list/filter-by.pipe\";\nimport {\n Component, ElementRef, EventEmitter, HostListener, Input, Output, ViewChild, OnChanges, SimpleChanges, OnInit,\n OnDestroy\n} from '@angular/core';\nimport {Subscription} from \"rxjs\";\nimport {GravityDropdownManagerService} from \"../../services/gravity-dropdown-manager.service\";\n\n@Component({\n selector: 'gravity-dropdown-list-display',\n templateUrl: './gravity-dropdown-list-display.component.html',\n styleUrls: ['./gravity-dropdown-list-display.component.scss'],\n providers: [FilterByPipe]\n})\nexport class GravityDropdownListDisplayComponent implements OnInit, OnChanges, OnDestroy {\n @Output('response') public selectedItemsResponse: EventEmitter<any[] | any> = new EventEmitter();\n\n @Input() public cypressTag: string;\n @Input() public placeholder: string;\n @Input() public currentLang: string = 'en';\n @Input() public isReadonly: boolean = false;\n @Input() public isDisabled: boolean = false;\n @Input() public customValues: Array<any> | any;\n @Input() public disableSearch: boolean = false;\n @Input() public defaultSelectedItemIndex: number;\n @Input() public items: DisplayCurrencyItems[] = [];\n\n // Size and Width\n @Input() public size: 'md' = 'md';\n @Input() public width: 'standard' = 'standard';\n\n @ViewChild('searchInput')\n set watch(searchInput: ElementRef<HTMLInputElement>) {\n if (searchInput) {\n searchInput.nativeElement.focus();\n }\n };\n\n @ViewChild('containerRef') containerRef!: ElementRef<HTMLDivElement>;\n\n public searchText: string = '';\n public selectedItems: any[] = [];\n public availableOptions: any[] = [];\n public dropdownOpened: boolean = false;\n public selectedItem: DisplayCurrencyItems;\n\n private dropdownManagerSubscription!: Subscription;\n\n constructor(private dropdownService: GravityDropdownManagerService, private readonly filterByPipe: FilterByPipe, private _eref: ElementRef) {\n }\n\n ngOnInit() {\n this.dropdownManagerSubscription = this.dropdownService.dropdownOpened$.subscribe(openedDropdown => {\n if (openedDropdown !== this && this.dropdownOpened) {\n this.closeDropdown();\n }\n });\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['items'] && changes['items'].currentValue) {\n this.availableOptions = [...changes['items'].currentValue];\n this.loadItems();\n\n if (this.defaultSelectedItemIndex != null && this.items[this.defaultSelectedItemIndex]) {\n this.selectedItem = this.items[this.defaultSelectedItemIndex];\n this.selectedItems = [this.selectedItem];\n }\n }\n }\n\n ngOnDestroy() {\n this.dropdownManagerSubscription.unsubscribe();\n }\n\n private loadItems() {\n this.availableOptions.forEach(item => {\n item.is_expanded = false;\n if (item.sub_items) {\n item.sub_items.forEach(subItem => {\n subItem.is_expanded = false;\n });\n }\n });\n }\n\n public getStatus(): string {\n if (this.isReadonly) {\n return 'readonly';\n } else if (this.isDisabled) {\n return 'disabled'\n } else if (this.dropdownOpened) {\n return 'open';\n } else if (this.selectedItems.length > 0) {\n return 'selected';\n } else {\n return 'closed';\n }\n }\n\n public toggleDropdown(): void {\n if (!this.isReadonly) {\n if (this.dropdownOpened) {\n this.closeDropdown();\n } else {\n this.openDropdown();\n }\n }\n }\n\n public openDropdown(): void {\n if (!this.isReadonly && !this.dropdownOpened) {\n this.dropdownOpened = true;\n }\n\n setTimeout(() => {\n this.scrollToSelected();\n }, 50);\n }\n\n public closeDropdown(): void {\n if (this.dropdownOpened) {\n this.dropdownOpened = false;\n\n if (this.selectedItems[0]) {\n this.selectedItemsResponse.emit(this.selectedItems[0]);\n }\n\n this.searchText = '';\n this.availableOptions = [...this.items];\n this.loadItems();\n }\n }\n\n public selectItem(itemToAdd: any): void {\n this.selectedItem = itemToAdd;\n this.selectedItems = [itemToAdd];\n setTimeout(() => {\n this.selectedItem.isHovered = false;\n }, 0);\n this.toggleDropdown();\n }\n\n public checkIfSelected(itemToFind: any): boolean {\n return !!this.selectedItems.find((item: any) => itemToFind == item);\n }\n\n public filterItems(): void {\n this.availableOptions = this.filterByPipe.transform(this.items, this.searchText);\n }\n\n @HostListener('document:click', ['$event']) onDocumentClick($event: PointerEvent): void {\n if (!this._eref.nativeElement.contains($event.target) && this.dropdownOpened) {\n this.dropdownOpened = false;\n if (this.selectedItems[0]) {\n this.selectedItemsResponse.emit(this.selectedItems[0]);\n }\n this.searchText = '';\n this.availableOptions = this.items;\n }\n }\n\n private scrollToSelected(): void {\n if (!this.containerRef || !this.selectedItems.length) return;\n\n const container = this.containerRef.nativeElement;\n\n const selectedElement = container.querySelector('.item.selected');\n\n if (selectedElement) {\n setTimeout(() => {\n selectedElement.scrollIntoView({\n behavior: 'smooth',\n block: 'nearest',\n inline: 'start'\n });\n }, 0);\n }\n }\n}","<div [attr.data-cy]=\"cypressTag? 'currencyDropdown_' + cypressTag : null\" class=\"gravity-input-field {{size}} {{width}}-width {{getStatus()}}\"\n (mouseenter)=\"selectedItem ? selectedItem.isHovered = true : null\"\n (mouseleave)=\"selectedItem ? selectedItem.isHovered = false : null\"\n (click)=\"toggleDropdown()\">\n\n <div class=\"value\">\n <div *ngIf=\"selectedItems.length == 0\">{{ placeholder }}</div>\n <div *ngIf=\"selectedItems.length > 0\">\n <gravity-currency-display-v2\n [currency]=\"{ currency_name: selectedItem.currency_name,\n currency_id: selectedItem.currency_id, currency_iso: selectedItem.currency_iso,\n network_id: selectedItem.network_id, network_iso: selectedItem.network_iso,\n pill_type: isReadonly || selectedItem.isHovered ? 'primary' : (getStatus() === 'selected' ? 'secondary' : 'primary')}\">\n </gravity-currency-display-v2>\n </div>\n </div>\n\n <gravity-icon class=\"right\" [iconName]=\"dropdownOpened ? 'arrow-up': 'arrow-down'\" [iconSize]=\"'md-16'\"\n *ngIf=\"!isReadonly\"></gravity-icon>\n <div class=\"dropdown-panel\" (click)=\"$event.stopPropagation()\" *ngIf=\"dropdownOpened\"\n [attr.data-cy]=\"'currencyDropdown_panel'\">\n\n <div class=\"search-input\" [class.disabled]=\"disableSearch\">\n <gravity-icon [style.--icon-color]=\"disableSearch ? 'var(--on-bg-disabled)' : null\"\n class=\"search-icon\" [iconName]=\"'search'\" [iconSize]=\"'sm-12'\">\n </gravity-icon>\n <input autocomplete=\"off\" class=\"hr-label {{size}}-regular\" (input)=\"filterItems()\"\n [attr.data-cy]=\"'currencyDropdown_searchInput'\" #searchInput [disabled]=\"disableSearch\"\n [(ngModel)]=\"searchText\" placeholder=\"{{currentLang == 'es' ? 'Buscar moneda' : 'Search currency'}}\">\n <gravity-icon class=\"pointer reset-icon\" (click)=\"searchText = ''; filterItems()\" [iconName]=\"'unsuccess'\"\n [iconSize]=\"'sm-12'\" *ngIf=\"searchText?.length > 0\">\n </gravity-icon>\n </div>\n\n <div class=\"items-container\" #containerRef>\n <div class=\"items\">\n <div class=\"item-container\" *ngFor=\"let item of availableOptions\" [class.expanded]=\"item.is_expanded\">\n <div class=\"hr-label item {{size}}-regular pointer\" [class.disabled]=\"item?.disabled\"\n [class.selected]=\"item.sub_items?.length > 0 ? null : checkIfSelected(item)\"\n (click)=\"item.sub_items?.length > 0 ? item.is_expanded = !item.is_expanded : selectItem(item)\"\n (mouseenter)=\"item.isHovered = true\" (mouseleave)=\"item.isHovered = false\" [attr.data-cy]=\"'currencyDropdown_currencyId'+item.currency_id\">\n\n <gravity-currency-display-v2\n [disabled]=\"item?.disabled\"\n [currency]=\"{ currency_name: item.currency_name,\n currency_iso: item.currency_iso, currency_id: item.currency_id,\n network_id: item.network_id, network_iso: item.network_iso,\n pill_type: (checkIfSelected(item) || item.isHovered) ? 'secondary' : 'primary' }\">\n </gravity-currency-display-v2>\n\n <span *ngIf=\"!item.sub_items\" class=\"hr-body sm-regular gravity-margin-right-sm currency-info\">\n {{ item?.balance_amount }} {{ item?.balance_currency }}\n </span>\n\n <gravity-icon *ngIf=\"item.sub_items?.length > 0 && item?.disabled !== true\" class=\"pointer expand-icon\"\n [iconSize]=\"'sm-12'\" [iconName]=\"item.is_expanded ? 'arrow-up' : 'arrow-down'\">\n </gravity-icon>\n </div>\n\n <ng-container *ngIf=\"item.is_expanded && item.sub_items\">\n <div class=\"hr-label item {{size}}-regular pointer\" *ngFor=\"let subItem of item.sub_items\"\n [class.selected]=\"checkIfSelected(subItem)\" (click)=\"selectItem(subItem)\" [class.disabled]=\"subItem?.disabled\"\n (mouseenter)=\"subItem.isHovered = true\" (mouseleave)=\"subItem.isHovered = false\">\n\n <div class=\"subitem-line\"></div>\n <gravity-currency-display-v2\n [disabled]=\"subItem?.disabled\"\n [currency]=\"{ currency_name: subItem.currency_name,\n currency_iso: subItem.currency_iso, currency_id: subItem.currency_id,\n network_id: subItem.network_id, network_iso: subItem.network_iso,\n pill_type: (checkIfSelected(subItem) || subItem.isHovered) ? 'secondary' : 'primary' }\" >\n </gravity-currency-display-v2>\n\n <span class=\"hr-body sm-regular gravity-margin-right-sm currency-info\">\n {{ subItem.balance_amount }} {{ subItem.balance_currency }}\n </span>\n </div>\n </ng-container>\n </div>\n\n <div class=\"hr-label item {{size}}-bold no-results\" *ngIf=\"availableOptions.length === 0\">\n {{ currentLang == 'es' ? 'Sin resultados' : 'No results' }}\n </div>\n </div>\n </div>\n </div>\n</div>\n\n<div class=\"wallet-balance-info\" *ngIf=\"selectedItems.length > 0\">\n <p class=\"hr-label sm-regular\">{{ currentLang == 'es' ? 'Saldo de cartera' : 'Wallet balance' }}\n : {{ selectedItem.balance_amount }} {{ selectedItem.balance_currency }}</p>\n</div>\n\n","import {GravityIconComponent} from \"../gravity-icon/gravity-icon.component\";\nimport {Component, ElementRef, EventEmitter, Input, OnChanges, OnInit, Output, SimpleChanges, ViewChild} from '@angular/core';\n\n@Component({\n selector: 'gravity-text-field',\n templateUrl: './gravity-text-field.component.html',\n styleUrls: ['./gravity-text-field.component.scss']\n})\nexport class GravityTextFieldComponent implements OnInit, OnChanges {\n @Output('clickIconLeft') public leftIconResponse: EventEmitter<void> = new EventEmitter();\n @Output('clickIconRight') public rightIconResponse: EventEmitter<void> = new EventEmitter();\n @Output('response') public textFieldValueResponse: EventEmitter<string> = new EventEmitter();\n\n\t@ViewChild('inputElement', {static: false}) public inputElement!: ElementRef<HTMLInputElement>;\n\t@ViewChild('textAreaElement', {static: false}) public textAreaElement!: ElementRef<HTMLInputElement>;\n\n\t// Component\n @Input() public currentLang: string = 'en';\n @Input() public customInputValue: string;\n @Input() public customState: 'default' | 'active' | 'hover' | 'typing' | 'typed' | 'typed-error' | 'typed-positive' | 'disabled' | 'readonly' | 'autofill' = 'default';\n @Input() public cypressTag: string;\n @Input() public label: string;\n @Input() public prefix: string = \"\";\n @Input() public required: boolean;\n @Input() public supportText: string;\n @Input() public textFieldType: 'input' | 'textarea' = \"input\";\n\n // Icons\n @Input() public clickOnLeftIcon: boolean = false;\n @Input() public clickOnRightIcon: boolean = false;\n @Input() public iconColor: string;\n @Input() public iconLeft: string;\n @Input() public iconRight: string;\n\n // Input | Textarea\n @Input() public autocomplete: string = 'off';\n @Input() public inputContentType: 'email' | 'number' | 'password' | 'tel' | 'date' | 'text' = \"text\";\n @Input() public placeholder: string;\n @Input() public validations: { maxLength?: number; minLength?: number };\n\n // Sizes\n @Input() public size: 'sm' | 'md' = 'md';\n @Input() public width: 'short' | 'medium' | 'full' | 'fit' = 'short';\n\n public focusInput: boolean = false;\n public inputValue: string = '';\n\n ngOnInit(): void {\n this.inputValue = this.customInputValue ? this.customInputValue : '';\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes['customInputValue']) {\n this.inputValue = changes['customInputValue'].currentValue ? changes['customInputValue'].currentValue : '';\n }\n }\n\n\tpublic focus() {\n\t\tthis.inputElement.nativeElement.focus();\n\t}\n\n\tpublic isFocused(): boolean {\n\t\treturn document.activeElement === this.inputElement.nativeElement;\n\t}\n\n public getPlaceholder(): string {\n if (this.placeholder && this.placeholder != '') {\n return this.placeholder;\n } else {\n return this.label;\n }\n }\n\n public clearInput(): void {\n this.changeInputValue(true);\n }\n\n public changeInputValue(clearInput: boolean = false): void {\n if (clearInput) {\n this.inputValue = '';\n } else if (this.textFieldType == 'input') {\n this.inputValue = this.inputElement.nativeElement.value;\n } else {\n this.inputValue = this.textAreaElement.nativeElement.value;\n }\n\n if (this.inputValue == '') {\n this.textFieldValueResponse.emit('');\n } else {\n this.textFieldValueResponse.emit(this.prefix + this.inputValue);\n }\n }\n\n public handleIconClick(iconPosition: 'left' | 'right'): void {\n if (iconPosition == 'left' && this.clickOnLeftIcon) {\n this.leftIconResponse.emit();\n }\n\n if (iconPosition == 'right' && this.clickOnRightIcon) {\n this.rightIconResponse.emit();\n }\n }\n\n public getTextFieldStatus(): string {\n if (this.customState == 'default') {\n if (!this.focusInput && !this.inputValue) {\n return 'active';\n } else if (!this.focusInput && this.inputValue) {\n return 'typed';\n } else {\n return 'typing';\n }\n } else {\n return this.customState;\n }\n }\n\n public getTextFieldInputFontSize(): string {\n return 'hr-label ' + this.size + '-regular';\n }\n\n public isNewIcon(iconPosition: 'left' | 'right'): boolean {\n if (iconPosition == 'left') {\n return GravityIconComponent.isNewIcon(this.iconLeft);\n } else {\n return GravityIconComponent.isNewIcon(this.iconRight);\n }\n }\n\n public onKeyDownEvent($event: KeyboardEvent): void {\n if (this.inputContentType == 'number') {\n let navigationKeys = ['Backspace', 'Delete', 'Tab', 'Escape', 'Enter', 'Home', 'End', 'ArrowLeft', 'ArrowRight', 'Clear', 'Copy', 'Paste'];\n\n if (\n navigationKeys.indexOf($event.key) > -1 || // Allow: navigation keys: backspace, delete, arrows etc.\n ($event.key === 'a' && $event.ctrlKey === true) || // Allow: Ctrl+A\n ($event.key === 'c' && $event.ctrlKey === true) || // Allow: Ctrl+C\n ($event.key === 'v' && $event.ctrlKey === true) || // Allow: Ctrl+V\n ($event.key === 'x' && $event.ctrlKey === true) || // Allow: Ctrl+X\n ($event.key === 'a' && $event.metaKey === true) || // Allow: Cmd+A (Mac)\n ($event.key === 'c' && $event.metaKey === true) || // Allow: Cmd+C (Mac)\n ($event.key === 'v' && $event.metaKey === true) || // Allow: Cmd+V (Mac)\n ($event.key === 'x' && $event.metaKey === true) ||// Allow: Cmd+X (Mac)\n ($event.key === '.') || ($event.key === ',') // Allow: dot and comma for decimal\n ) {\n // let it happen, don't do anything\n return;\n }\n\n // Ensure that it is a number and stop the keypress\n if (\n ($event.shiftKey || ($event.keyCode < 48 || $event.keyCode > 57)) &&\n ($event.keyCode < 96 || $event.keyCode > 105)\n ) {\n $event.preventDefault();\n }\n }\n\n\t if (this.inputContentType == 'date') {\n\t\t const allowedKeys = [\n\t\t\t 'Backspace', 'Delete', 'Tab', 'Escape', 'Enter',\n\t\t\t 'ArrowLeft', 'ArrowRight', 'ArrowUp', 'ArrowDown'\n\t\t ];\n\n\t\t if (allowedKeys.includes($event.key) || $event.metaKey || $event.ctrlKey) {\n\t\t\t return;\n\t\t }\n\n\t\t if (/\\D/.test($event.key) && $event.key !== '/') {\n\t\t\t $event.preventDefault();\n\t\t }\n\t }\n }\n\n\tpublic formatDateInput(event: any): void {\n\t\tconst el = event.target as HTMLInputElement;\n\t\tlet value = el.value;\n\t\tlet formatted = '';\n\n\t\tlet cursorPosition = el.selectionStart || 0;\n\t\tconst isDeleting = event.inputType === 'deleteContentBackward' ||\n\t\t\t event.inputType === 'deleteContentForward';\n\n\t\tif ((value.length === 3 && value[2] === '/') ||\n\t\t\t (value.length === 6 && value[5] === '/')) {\n\t\t\tformatted = value;\n\t\t}\n\n\t\telse if (/\\D/.test(value[value.length - 1])) {\n\t\t\tformatted = value.slice(0, -1);\n\t\t\tcursorPosition = Math.max(0, cursorPosition - 1);\n\n\t\t\tif(formatted.length === 1 || formatted.length === 4) {\n\t\t\t\tcursorPosition++;\n\t\t\t}\n\t\t}\n\n\t\telse {\n\t\t\tconst numbers = value.replace(/\\//g, '');\n\n\t\t\tlet day = numbers.slice(0, 2);\n\t\t\tlet month = numbers.slice(2, 4);\n\t\t\tlet year = numbers.slice(4, 8);\n\n\t\t\tif (day.length > 0) formatted += day;\n\t\t\tif (day.length === 2 && month.length > 0) formatted += '/';\n\t\t\tif (month.length > 0) formatted += month;\n\t\t\tif (month.length === 2 && year.length > 0) formatted += '/';\n\t\t\tif (year.length > 0) formatted += year;\n\n\t\t\tconst currentLength = value.length;\n\t\t\tconst newLength = formatted.length;\n\n\t\t\tif (newLength > currentLength && !isDeleting) { cursorPosition++ }\n\t\t}\n\n\t\tel.value = formatted;\n\t\tthis.inputValue = formatted;\n\t\tel.setSelectionRange(cursorPosition, cursorPosition);\n\n\t\tthis.changeInputValue();\n\t}\n}\n","<label class=\"hr-label sm-bold {{getTextFieldStatus()}}\" [class.custom-label-size]=\"size == 'sm'\" *ngIf=\"label\">\n {{label}} <span *ngIf=\"required || getTextFieldStatus() == 'typed-error'\">*</span>\n</label>\n<div class=\"gravity-input-field {{size}} {{width}}-width {{getTextFieldStatus()}}\">\n <ng-container *ngIf=\"iconLeft\">\n <ng-container [ngTemplateOutlet]=\"icons\" [ngTemplateOutletContext]=\"{iconPosition: 'left'}\"></ng-container>\n </ng-container>\n <span class=\"{{getTextFieldInputFontSize()}} prefix\">{{prefix}}</span>\n <input [attr.data-cy]=\"cypressTag ? 'textField_' + cypressTag : null\"\n [attr.disabled]=\"customState == 'disabled' ? true : null\"\n [attr.readonly]=\"customState == 'readonly' ? true : null\"\n [autocomplete]=\"autocomplete\"\n [maxLength]=\"inputContentType === 'date' ? 10 : (validations?.maxLength || 100)\"\n [minLength]=\"validations?.minLength ? validations?.minLength : 0\"\n [placeholder]=\"getPlaceholder()\"\n [type]=\"inputContentType === 'date' ? 'text' : (inputContentType !== 'number' ? inputContentType : 'text')\"\n [value]=\"inputValue\"\n\n (blur)=\"focusInput = false\"\n (change)=\"changeInputValue()\"\n (focus)=\"focusInput = true\"\n (keydown)=\" onKeyDownEvent($event)\"\n (keyup)=\"inputContentType === 'date' ?\n formatDateInput($event) : changeInputValue()\"\n\n class=\"{{getTextFieldInputFontSize()}}\"\n\t\t\t\t #inputElement\n *ngIf=\"textFieldType == 'input'\">\n\n <textarea [attr.data-cy]=\"cypressTag ? 'textField_' + cypressTag : null\"\n [attr.disabled]=\"customState == 'disabled' ? true : null\"\n [attr.readonly]=\"customState == 'readonly' ? true : null\"\n [maxLength]=\"validations?.maxLength ? validations?.maxLength : 200\"\n [minLength]=\"validations?.minLength ? validations?.minLength : 0\"\n [placeholder]=\"getPlaceholder()\"\n [value]=\"inputValue\"\n\n (blur)=\"focusInput = false\"\n (change)=\"changeInputValue()\"\n (focus)=\"focusInput = true\"\n (keydown)=\"onKeyDownEvent($event)\"\n (keyup)=\"changeInputValue()\"\n\n class=\"{{getTextFieldInputFontSize()}}\"\n rows=\"1\"\n\n #textAreaElement\n\n *ngIf=\"textFieldType == 'textarea'\"></textarea>\n <ng-container *ngIf=\"iconRight\">\n <ng-container [ngTemplateOutlet]=\"icons\" [ngTemplateOutletContext]=\"{iconPosition: 'right'}\"></ng-container>\n </ng-container>\n</div>\n<p class=\"hr-label sm-regular supporting-text {{getTextFieldStatus()}} {{size}}\"\n [class.custom-label-size]=\"size == 'sm'\" *ngIf=\"supportText\">\n <gravity-icon [iconName]=\"'question-circle'\" *ngIf=\"getTextFieldStatus() == 'typed-error'\"\n [iconSize]=\"'md-16'\"></gravity-icon>\n {{supportText}}\n</p>\n<p class=\"hr-label sm-regular supporting-text {{getTextFieldStatus()}} {{size}}\"\n [class.custom-label-size]=\"size == 'sm'\"\n *ngIf=\"!supportText && getTextFieldStatus() == 'active' && inputValue == '' && required\">\n {{currentLang == 'es' ? 'Requerido' : 'Required'}}\n</p>\n\n<ng-template #icons let-iconPosition=\"iconPosition\">\n <gravity-icon (click)=\"$event.stopPropagation(); handleIconClick(iconPosition)\" class=\"{{iconPosition}}\"\n [class.pointer]=\"(iconPosition == 'left' && clickOnLeftIcon) || (iconPosition == 'right' && clickOnRightIcon)\"\n [iconName]=\"iconPosition == 'left' ? iconLeft : iconRight\" [style.--icon-color]=\"iconColor\"\n [iconSize]=\"isNewIcon(iconPosition) ? 'md-16' : null\" [attr.data-cy]=\"'textField_icon'\"></gravity-icon>\n</ng-template>\n","import {Component, ElementRef, EventEmitter, HostBinding, HostListener, Input, OnInit, Renderer2} from '@angular/core';\n\n@Component({\n selector: 'tooltip',\n templateUrl: './gravity-tooltip.component.html',\n host: {'class': 'tooltip'},\n styleUrls: ['./gravity-tooltip.component.sass']\n})\n\nexport class GravityTooltipComponent implements OnInit {\n _show: boolean = false;\n events = new EventEmitter();\n\n @Input() data: any;\n\n @HostBinding('style.top') hostStyleTop!: string;\n @HostBinding('style.left') hostStyleLeft!: string;\n @HostBinding('style.z-index') hostStyleZIndex!: number;\n @HostBinding('style.transition') hostStyleTransition!: string;\n @HostBinding('style.width') hostStyleWidth!: string;\n @HostBinding('style.max-width') hostStyleMaxWidth!: string;\n @HostBinding('style.pointer-events') hostStylePointerEvents!: string;\n @HostBinding('class.tooltip-show') hostClassShow!: boolean;\n @HostBinding('class.tooltip-shadow') hostClassShadow!: boolean;\n @HostBinding('class.tooltip-light') hostClassLight!: boolean;\n\n @HostListener('transitionend', ['$event'])\n transitionEnd() {\n if (this.show) {\n this.events.emit({\n type: 'shown'\n });\n }\n }\n\n @Input() set show(value: boolean) {\n if (value) {\n this.setPosition();\n }\n this._show = this.hostClassShow = value;\n }\n\n get show(): boolean {\n return this._show;\n }\n\n get placement() {\n return this.data.options.placement;\n }\n\n get autoPlacement() {\n return this.data.options.autoPlacement;\n }\n\n get element() {\n return this.data.element;\n }\n\n get elementPosition() {\n return this.data.elementPosition;\n }\n\n get options() {\n return this.data.options;\n }\n\n get value() {\n return this.data.value;\n }\n\n get tooltipOffset(): number {\n return Number(this.data.options.offset);\n }\n\n get isThemeLight() {\n return this.options['theme'] === 'light';\n }\n\n constructor(private elementRef: ElementRef, private renderer: Renderer2) {\n }\n\n ngOnInit() {\n this.setCustomClass();\n this.setStyles();\n }\n\n setPosition(): void {\n if (this.setHostStyle(this.placement)) {\n this.setPlacementClass(this.placement);\n return;\n } else {\n /* Is tooltip outside the visible area */\n const placements = ['top', 'top-left', 'top-right', 'right', 'right-top', 'right-bottom', 'bottom', 'bottom-right', 'bottom-left', 'left', 'left-top', 'left-bottom'];\n let isPlacementSet;\n\n for (const placement of placements) {\n if (this.setHostStyle(placement)) {\n this.setPlacementClass(placement);\n isPlacementSet = true;\n return;\n }\n }\n\n /* Set original placement */\n if (!isPlacementSet) {\n this.setHostStyle(this.placement, true);\n this.setPlacementClass(this.placement);\n }\n }\n }\n\n\n setPlacementClass(placement: string): void {\n this.renderer.addClass(this.elementRef.nativeElement, 'tooltip-' + placement);\n }\n\n setHostStyle(placement: string, disableAutoPlacement: boolean = false): boolean {\n const isSvg = this.element instanceof SVGElement;\n const tooltip = this.elementRef.nativeElement;\n const isCustomPosition = !this.elementPosition.right;\n\n let elementHeight = isSvg ? this.element.getBoundingClientRect().height : this.element.offsetHeight;\n let elementWidth = isSvg ? this.element.getBoundingClientRect().width : this.element.offsetWidth;\n const tooltipHeight = tooltip.clientHeight;\n const tooltipWidth = tooltip.clientWidth;\n const scrollY = window.pageYOffset;\n\n if (isCustomPosition) {\n elementHeight = 0;\n elementWidth = 0;\n }\n\n let topStyle;\n let leftStyle;\n\n switch (placement) {\n case 'top':\n topStyle = (this.elementPosition.top + scrollY) - (tooltipHeight + this.tooltipOffset);\n leftStyle = (this.elementPosition.left + elementWidth / 2) - tooltipWidth / 2;\n break;\n case 'top-left':\n topStyle = (this.elementPosition.top + scrollY) - (tooltipHeight + this.tooltipOffset);\n leftStyle = (this.elementPosition.left + elementWidth / 2) - (tooltipWidth * 0.1);\n break;\n case 'top-right':\n topStyle = (this.elementPosition.top + scrollY) - (tooltipHeight + this.tooltipOffset);\n leftStyle = (this.elementPosition.left + elementWidth / 2) - (tooltipWidth * 0.9);\n break;\n case 'bottom':\n topStyle = (this.elementPosition.top + scrollY) + elementHeight + this.tooltipOffset;\n leftStyle = (this.elementPosition.left + elementWidth / 2) - tooltipWidth / 2;\n break;\n case 'bottom-left':\n topStyle = (this.elementPosition.top + scrollY) + elementHeight + this.tooltipOffset;\n leftStyle = (this.elementPosition.left + elementWidth / 2) - (tooltipWidth * 0.1);\n break;\n case 'bottom-right':\n topStyle = (this.elementPosition.top + scrollY) + elementHeight + this.tooltipOffset;\n leftStyle = (this.elementPosition.left + elementWidth / 2) - (tooltipWidth * 0.9);\n break;\n case 'left':\n leftStyle = this.elementPosition.left - tooltipWidth - this.tooltipOffset;\n topStyle = (this.elementPosition.top + scrollY) + elementHeight / 2 - tooltipHeight / 2;\n break;\n case 'left-top':\n leftStyle = this.elementPosition.left - tooltipWidth - this.tooltipOffset;\n topStyle = (this.elementPosition.top + scrollY + elementHeight / 2) - (tooltipHeight * 0.1);\n break;\n case 'left-bottom':\n leftStyle = this.elementPosition.left - tooltipWidth - this.tooltipOffset;\n topStyle = (this.elementPosition.top + scrollY + elementHeight / 2) - (tooltipHeight * 0.9);\n break;\n case 'right':\n leftStyle = this.elementPosition.left + elementWidth + this.tooltipOffset;\n topStyle = (this.elementPosition.top + scrollY) + elementHeight / 2 - tooltipHeight / 2;\n break;\n case 'right-top':\n leftStyle = this.elementPosition.left + elementWidth + this.tooltipOffset;\n topStyle = (this.elementPosition.top + scrollY + elementHeight / 2) - (tooltipHeight * 0.1);\n break;\n case 'right-bottom':\n leftStyle = this.elementPosition.left + elementWidth + this.tooltipOffset;\n topStyle = (this.elementPosition.top + scrollY + elementHeight / 2) - (tooltipHeight * 0.9);\n break;\n default:\n return false;\n }\n\n /* Is tooltip outside the visible area */\n if (this.autoPlacement && !disableAutoPlacement) {\n const topEdge = topStyle;\n const bottomEdge = topStyle + tooltipHeight;\n const leftEdge = leftStyle;\n const rightEdge = leftStyle + tooltipWidth;\n const bodyHeight = window.innerHeight + scrollY;\n const bodyWidth = document.body.clientWidth;\n\n if (topEdge < 0 || bottomEdge > bodyHeight || leftEdge < 0 || rightEdge > bodyWidth) {\n return false;\n }\n }\n\n this.hostStyleTop = topStyle + 'px';\n this.hostStyleLeft = leftStyle + 'px';\n return true;\n }\n\n setZIndex(): void {\n if (this.options['zIndex'] !== 0) {\n this.hostStyleZIndex = this.options['zIndex'];\n }\n }\n\n setPointerEvents(): void {\n if (this.options['pointerEvents']) {\n this.hostStylePointerEvents = this.options['pointerEvents'];\n }\n }\n\n setCustomClass() {\n if (this.options['tooltipClass']) {\n this.options['tooltipClass'].split(' ').forEach((className: any) => {\n this.renderer.addClass(this.elementRef.nativeElement, className);\n });\n }\n }\n\n setAnimationDuration() {\n if (Number(this.options['animationDuration']) != this.options['animationDurationDefault']) {\n this.hostStyleTransition = 'opacity ' + this.options['animationDuration'] + 'ms';\n }\n }\n\n setStyles() {\n this.setZIndex();\n this.setPointerEvents();\n this.setAnimationDuration();\n\n this.hostClassShadow = this.options['shadow'];\n this.hostClassLight = this.isThemeLight;\n this.hostStyleMaxWidth = this.options['maxWidth'];\n this.hostStyleWidth = this.options['width'] ? this.options['width'] : '';\n }\n}\n","<div *ngIf=\"isThemeLight\" class=\"tooltip-arrow\"></div>\n\n<div *ngIf=\"options['contentType'] === 'template' else htmlOrStringTemplate\">\n <ng-container *ngTemplateOutlet=\"value\"></ng-container>\n</div>\n\n<ng-template #htmlOrStringTemplate>\n <div [innerHTML]=\"value\"></div>\n</ng-template>\n","import { InjectionToken } from '@angular/core';\nimport { TooltipOptions } from './options.interface';\n\n/**\n * This is not a real service, but it looks like it from the outside.\n * It's just an InjectionToken used to import the config (initOptions) object, provided from the outside\n */\nexport const TooltipOptionsService = new InjectionToken<TooltipOptions>('TooltipOptions');\n","export const defaultOptions = {\n 'placement': 'top',\n 'autoPlacement': true,\n 'contentType': 'string',\n 'showDelay': 0,\n 'hideDelay': 300,\n 'hideDelayMobile': 0,\n 'hideDelayTouchscreen': 0,\n 'zIndex': 0,\n 'animationDuration': 300,\n 'animationDurationDefault': 300,\n 'trigger': 'hover',\n 'tooltipClass': '',\n 'display': true,\n 'displayMobile': true,\n 'displayTouchscreen': true,\n 'shadow': true,\n 'theme': 'dark',\n 'offset': 8,\n 'maxWidth': '',\n 'id': false,\n 'hideDelayAfterClick': 2000\n}\n\nexport const backwardCompatibilityOptions: any = {\n 'delay': 'showDelay',\n 'show-delay': 'showDelay',\n 'hide-delay': 'hideDelay',\n 'hide-delay-mobile': 'hideDelayTouchscreen',\n 'hideDelayMobile': 'hideDelayTouchscreen',\n 'z-index': 'zIndex',\n 'animation-duration': 'animationDuration',\n 'animation-duration-default': 'animationDurationDefault',\n 'tooltip-class': 'tooltipClass',\n 'display-mobile': 'displayTouchscreen',\n 'displayMobile': 'displayTouchscreen',\n 'max-width': 'maxWidth'\n}\n","import {\n ApplicationRef,\n ComponentFactoryResolver,\n Directive,\n ElementRef,\n EmbeddedViewRef,\n EventEmitter,\n HostListener,\n Inject,\n Injector,\n Input,\n OnChanges,\n Optional,\n Output,\n SimpleChanges,\n TemplateRef\n} from '@angular/core';\nimport {GravityTooltipComponent} from './gravity-tooltip.component';\nimport {TooltipOptionsService} from './options.service';\nimport {backwardCompatibilityOptions, defaultOptions} from './options';\nimport {TooltipOptions} from './options.interface';\n\nexport interface AdComponent {\n data: any;\n show: boolean;\n close: boolean;\n events: any;\n}\n\n@Directive({\n selector: '[tooltip]',\n exportAs: 'tooltip',\n})\n\nexport class GravityTooltipDirective implements OnChanges {\n\n hideTimeoutId!: number;\n destroyTimeoutId!: number;\n hideAfterClickTimeoutId!: number;\n createTimeoutId!: number;\n showTimeoutId!: number;\n componentRef: any;\n elementPosition: any;\n _id: any;\n _options: any = {};\n _defaultOptions: any;\n _destroyDelay!: number;\n componentSubscribe: any;\n _contentType: \"string\" | \"html\" | \"template\" = \"string\";\n _showDelay!: number;\n _hideDelay!: number;\n _zIndex!: number;\n _tooltipClass!: string;\n _animationDuration!: number;\n _maxWidth!: string;\n\n @Input('options') set options(value: TooltipOptions) {\n if (value && defaultOptions) {\n this._options = value;\n }\n }\n\n get options() {\n return this._options;\n }\n\n @Input('tooltip') tooltipValue!: string | TemplateRef<any>;\n @Input('placement') placement!: string;\n @Input('autoPlacement') autoPlacement!: boolean;\n\n // Content type\n @Input('content-type') set contentTypeBackwardCompatibility(value: \"string\" | \"html\" | \"template\") {\n if (value) {\n this._contentType = value;\n }\n }\n\n @Input('contentType') set contentType(value: \"string\" | \"html\" | \"template\") {\n if (value) {\n this._contentType = value;\n }\n }\n\n get contentType() {\n return this._contentType;\n }\n\n @Input('hide-delay-mobile') hideDelayMobile!: number;\n @Input('hideDelayTouchscreen') hideDelayTouchscreen!: number;\n\n // z-index\n @Input('z-index') set zIndexBackwardCompatibility(value: number) {\n if (value) {\n this._zIndex = value;\n }\n }\n\n @Input('zIndex') set zIndex(value: number) {\n if (value) {\n this._zIndex = value;\n }\n }\n\n get zIndex() {\n return this._zIndex;\n }\n\n // Animation duration\n @Input('animation-duration') set animationDurationBackwardCompatibility(value: number) {\n if (value) {\n this._animationDuration = value;\n }\n }\n\n @Input('animationDuration') set animationDuration(value: number) {\n if (value) {\n this._animationDuration = value;\n }\n }\n\n get animationDuration() {\n return this._animationDuration;\n }\n\n\n @Input('trigger') trigger!: string;\n\n // Tooltip class\n @Input('tooltip-class') set tooltipClassBackwardCompatibility(value: string) {\n if (value) {\n this._tooltipClass = value;\n }\n }\n\n @Input('tooltipClass') set tooltipClass(value: string) {\n if (value) {\n this._tooltipClass = value;\n }\n }\n\n get tooltipClass() {\n return this._tooltipClass;\n }\n\n @Input('display') display!: boolean;\n @Input('display-mobile') displayMobile!: boolean;\n @Input('displayTouchscreen') displayTouchscreen!: boolean;\n @Input('shadow') shadow!: boolean;\n @Input('theme') theme!: \"dark\" | \"light\";\n @Input('offset') offset!: number;\n @Input('width') width!: string;\n\n // Max width\n @Input('max-width') set maxWidthBackwardCompatibility(value: string) {\n if (value) {\n this._maxWidth = value;\n }\n }\n\n @Input('maxWidth') set maxWidth(value: string) {\n if (value) {\n this._maxWidth = value;\n }\n }\n\n get maxWidth() {\n return this._maxWidth;\n }\n\n\n @Input('id') id: any;\n\n // Show delay\n @Input('show-delay') set showDelayBackwardCompatibility(value: number) {\n if (value) {\n this._showDelay = value;\n }\n }\n\n @Input('showDelay') set showDelay(value: number) {\n if (value) {\n this._showDelay = value;\n }\n }\n\n get showDelay() {\n return this._showDelay;\n }\n\n // Hide delay\n @Input('hide-delay') set hideDelayBackwardCompatibility(value: number) {\n if (value) {\n this._hideDelay = value;\n }\n }\n\n @Input('hideDelay') set hideDelay(value: number) {\n if (value) {\n this._hideDelay = value;\n }\n }\n\n get hideDelay() {\n return this._hideDelay;\n }\n\n @Input('hideDelayAfterClick') hideDelayAfterClick!: number;\n @Input('pointerEvents') pointerEvents!: 'auto' | 'none';\n @Input('position') position!: { top: number, left: number };\n\n get isTooltipDestroyed() {\n return this.componentRef && this.componentRef.hostView.destroyed;\n }\n\n get destroyDelay() {\n if (this._destroyDelay) {\n return this._destroyDelay;\n } else {\n return Number(this.getHideDelay()) + Number(this.options['animationDuration']);\n }\n }\n\n set destroyDelay(value: number) {\n this._destroyDelay = value;\n }\n\n get tooltipPosition() {\n if (this.options['position']) {\n return this.options['position'];\n } else {\n return this.elementPosition;\n }\n }\n\n @Output() events: EventEmitter<any> = new EventEmitter<any>();\n\n constructor(\n @Optional() @Inject(TooltipOptionsService) private initOptions: any,\n private elementRef: ElementRef,\n private componentFactoryResolver: ComponentFactoryResolver,\n private appRef: ApplicationRef,\n private injector: Injector) {\n }\n\n @HostListener('focusin')\n @HostListener('mouseenter')\n onMouseEnter() {\n if (this.isDisplayOnHover == false) {\n return;\n }\n\n this.show();\n }\n\n @HostListener('focusout')\n @HostListener('mouseleave')\n onMouseLeave() {\n if (this.options['trigger'] === 'hover') {\n this.destroyTooltip();\n }\n }\n\n @HostListener('click')\n onClick() {\n if (this.isDisplayOnClick == false) {\n return;\n }\n\n this.show();\n this.hideAfterClickTimeoutId = window.setTimeout(() => {\n this.destroyTooltip();\n }, this.options['hideDelayAfterClick'])\n }\n\n ngOnChanges(changes: SimpleChanges) {\n this.initOptions = this.renameProperties(this.initOptions);\n let changedOptions = this.getProperties(changes);\n changedOptions = this.renameProperties(changedOptions);\n\n this.applyOptionsDefault(defaultOptions, changedOptions);\n }\n\n ngOnDestroy(): void {\n this.destroyTooltip({\n fast: true\n });\n\n if (this.componentSubscribe) {\n this.componentSubscribe.unsubscribe();\n }\n }\n\n getShowDelay() {\n return this.options['showDelay'];\n }\n\n getHideDelay() {\n const hideDelay = this.options['hideDelay'];\n const hideDelayTouchscreen = this.options['hideDelayTouchscreen'];\n\n return this.isTouchScreen ? hideDelayTouchscreen : hideDelay;\n }\n\n getProperties(changes: SimpleChanges) {\n let directiveProperties: any = {};\n let customProperties: any = {};\n let allProperties: any;\n\n for (var prop in changes) {\n if (prop !== 'options' && prop !== 'tooltipValue') {\n directiveProperties[prop] = changes[prop].currentValue;\n }\n if (prop === 'options') {\n customProperties = changes[prop].currentValue;\n }\n }\n\n allProperties = Object.assign({}, customProperties, directiveProperties);\n return allProperties;\n }\n\n renameProperties(options: any) {\n for (var prop in options) {\n if (backwardCompatibilityOptions[prop]) {\n options[backwardCompatibilityOptions[prop]] = options[prop];\n delete options[prop];\n }\n }\n\n return options;\n }\n\n getElementPosition(): void {\n this.elementPosition = this.elementRef.nativeElement.getBoundingClientRect();\n }\n\n createTooltip(): void {\n this.clearTimeouts();\n this.getElementPosition();\n\n this.createTimeoutId = window.setTimeout(() => {\n this.appendComponentToBody(GravityTooltipComponent);\n }, this.getShowDelay());\n\n this.showTimeoutId = window.setTimeout(() => {\n this.showTooltipElem();\n }, this.getShowDelay());\n }\n\n destroyTooltip(options = {\n fast: false\n }): void {\n this.clearTimeouts();\n\n if (this.isTooltipDestroyed == false) {\n this.hideTimeoutId = window.setTimeout(() => {\n this.hideTooltip();\n }, options.fast ? 0 : this.getHideDelay());\n\n this.destroyTimeoutId = window.setTimeout(() => {\n if (!this.componentRef || this.isTooltipDestroyed) {\n return;\n }\n\n this.appRef.detachView(this.componentRef.hostView);\n this.componentRef.destroy();\n this.events.emit({\n type: 'hidden',\n position: this.tooltipPosition\n });\n }, options.fast ? 0 : this.destroyDelay);\n }\n }\n\n showTooltipElem(): void {\n this.clearTimeouts();\n (<AdComponent>this.componentRef.instance).show = true;\n this.events.emit({\n type: 'show',\n position: this.tooltipPosition\n });\n }\n\n hideTooltip(): void {\n if (!this.componentRef || this.isTooltipDestroyed) {\n return;\n }\n (<AdComponent>this.componentRef.instance).show = false;\n this.events.emit({\n type: 'hide',\n position: this.tooltipPosition\n });\n }\n\n appendComponentToBody(component: any): void {\n this.componentRef = this.componentFactoryResolver\n .resolveComponentFactory(component)\n .create(this.injector);\n\n (<AdComponent>this.componentRef.instance).data = {\n value: this.tooltipValue,\n element: this.elementRef.nativeElement,\n elementPosition: this.tooltipPosition,\n options: this.options\n }\n this.appRef.attachView(this.componentRef.hostView);\n const domElem = (this.componentRef.hostView as EmbeddedViewRef<any>).rootNodes[0] as HTMLElement;\n document.body.appendChild(domElem);\n\n this.componentSubscribe = (<AdComponent>this.componentRef.instance).events.subscribe((event: any) => {\n this.handleEvents(event);\n });\n }\n\n clearTimeouts(): void {\n if (this.createTimeoutId) {\n clearTimeout(this.createTimeoutId);\n }\n\n if (this.showTimeoutId) {\n clearTimeout(this.showTimeoutId);\n }\n\n if (this.hideTimeoutId) {\n clearTimeout(this.hideTimeoutId);\n }\n\n if (this.destroyTimeoutId) {\n clearTimeout(this.destroyTimeoutId);\n }\n }\n\n get isDisplayOnHover(): boolean {\n if (this.options['display'] == false) {\n return false;\n }\n\n if (this.options['displayTouchscreen'] == false && this.isTouchScreen) {\n return false;\n }\n\n return this.options['trigger'] === 'hover';\n }\n\n get isDisplayOnClick(): boolean {\n if (this.options['display'] == false) {\n return false;\n }\n\n if (this.options['displayTouchscreen'] == false && this.isTouchScreen) {\n return false;\n }\n\n return this.options['trigger'] == 'click';\n\n\n }\n\n get isTouchScreen() {\n var prefixes = ' -webkit- -moz- -o- -ms- '.split(' ');\n var mq = function (query: any) {\n return window.matchMedia(query).matches;\n }\n\n if (('ontouchstart' in window)) {\n return true;\n }\n\n // include the 'heartz' as a way to have a non matching MQ to help terminate the join\n // https://git.io/vznFH\n var query = ['(', prefixes.join('touch-enabled),('), 'heartz', ')'].join('');\n return mq(query);\n }\n\n applyOptionsDefault(defaultOptions: any, options: any): void {\n this.options = Object.assign({}, defaultOptions, this.initOptions || {}, this.options, options);\n }\n\n handleEvents(event: any) {\n if (event.type === 'shown') {\n this.events.emit({\n type: 'shown',\n position: this.tooltipPosition\n });\n }\n }\n\n public show() {\n if (!this.tooltipValue) {\n return;\n }\n\n if (!this.componentRef || this.isTooltipDestroyed) {\n this.createTooltip();\n } else if (!this.isTooltipDestroyed) {\n this.showTooltipElem();\n }\n }\n\n public hide() {\n this.destroyTooltip();\n }\n}\n","import {ModuleWithProviders, NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {GravityTooltipDirective} from './gravity-tooltip.directive';\nimport {GravityTooltipComponent} from './gravity-tooltip.component';\nimport {TooltipOptions} from './options.interface';\nimport {TooltipOptionsService} from './options.service';\n\n@NgModule({\n declarations: [\n GravityTooltipDirective,\n GravityTooltipComponent\n ],\n imports: [\n CommonModule\n ],\n exports: [\n GravityTooltipDirective,\n GravityTooltipComponent\n ]\n})\nexport class GravityTooltipModule {\n static forRoot(initOptions: TooltipOptions): ModuleWithProviders<GravityTooltipModule> {\n return {\n ngModule: GravityTooltipModule,\n providers: [\n {\n provide: TooltipOptionsService,\n useValue: initOptions\n }\n ]\n };\n }\n}\n","import { Injectable } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class HeaderTypeService {\n\n private isMobileSubject: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(false);\n private calendarTypeSubject: BehaviorSubject<string> = new BehaviorSubject<string>('days');\n private headerTypeSubject: BehaviorSubject<'self' | 'integrate'> = new BehaviorSubject<'self'>('self');\n\n getCalendarType$() {return this.calendarTypeSubject.asObservable();}\n setCalendarType(value: string) {this.calendarTypeSubject.next(value);}\n getCalendarType(): string {return this.calendarTypeSubject.value;}\n getHeaderType$() {return this.headerTypeSubject.asObservable();}\n setHeaderType(value: 'self' | 'integrate') {this.headerTypeSubject.next(value);}\n getHeaderType(): 'self' | 'integrate' {return this.headerTypeSubject.value;}\n getIsMobile$() {return this.isMobileSubject.asObservable();}\n setIsMobile(value: boolean) {this.isMobileSubject.next(value);}\n getIsMobile(): boolean {return this.isMobileSubject.value;}\n}\n","import {Injectable} from '@angular/core';\nimport {BsDatepickerViewMode, DatepickerRenderOptions,} from './models';\nimport {BsCustomDates} from \"./utils/bs-calendar-utils\";\n\n/**\n * For date range picker there are `BsDaterangepickerConfig` which inherits all properties,\n * except `displayMonths`, for range picker it default to `2`\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class BsDatepickerConfig implements DatepickerRenderOptions {\n /** Sets use adaptive position */\n adaptivePosition: boolean = true;\n\n calendarLang: string = 'en';\n calendarSize: 'md' | 'sm' = 'md';\n clearable: boolean = true;\n displayMonths: number = 1;\n\n /** turn on/off animation */\n isAnimated: boolean = false;\n isDisabled?: boolean;\n isMobile: boolean = false;\n\n /**\n * Set rule for datepicker closing.\n * If value is true datepicker closes only if date is changed, if user changes only time datepicker doesn't close.\n * It is available only if property withTimepicker is set true\n */\n keepDatepickerOpened: boolean = false;\n\n /** Default max date for all date/range pickers */\n maxDate?: Date;\n\n /** Default min date for all date/range pickers */\n minDate?: Date;\n\n /** Default mode for all date pickers */\n minMode?: BsDatepickerViewMode;\n\n /** Prevents change to next month for right calendar in two calendars view (dateRangePicker only) */\n preventChangeToNextMonth: boolean = true;\n\n /** Makes dates from other months active */\n selectFromOtherMonth: boolean = true;\n\n /** The view that the datepicker should start in */\n startView: BsDatepickerViewMode = 'day';\n\n value?: Date | Date[];\n\n // DatepickerFormatOptions\n dayLabel: string = 'D';\n monthLabel: string = 'MMMM';\n monthTitle: string = 'MMMM';\n yearLabel: string = 'YYYY';\n yearTitle: string = 'YYYY';\n\n /**\n * Predefined ranges\n */\n ranges?: BsCustomDates[];\n\n /**\n * Max Date Range in days\n */\n maxDateRange?: number;\n}\n","import {\n animate,\n style,\n AnimationTriggerMetadata,\n state,\n transition,\n trigger\n} from '@angular/animations';\n\nexport const DATEPICKER_ANIMATION_TIMING = '220ms cubic-bezier(0, 0, 0.2, 1)';\n\nexport const datepickerAnimation: AnimationTriggerMetadata =\n trigger('datepickerAnimation', [\n state('animated-down', style({ height: '*', overflow: 'hidden'})),\n transition('* => animated-down', [\n style({ height: 0, overflow: 'hidden' }),\n animate(DATEPICKER_ANIMATION_TIMING)\n ]),\n state('animated-up', style({ height: '*', overflow: 'hidden'})),\n transition('* => animated-up', [\n style({ height: '*', overflow: 'hidden' }),\n animate(DATEPICKER_ANIMATION_TIMING)\n ]),\n transition('* => unanimated', animate('0s'))\n ]);\n","import {BsCustomDates} from \"../utils/bs-calendar-utils\";\nimport {BsDatepickerEffects} from '../reducer/bs-datepicker.effects';\nimport {Observable, Subscription} from 'rxjs';\nimport {\n BsDatepickerViewMode,\n BsNavigationEvent,\n CalendarCellViewModel,\n CellHoverEvent,\n DatepickerRenderOptions,\n DaysCalendarViewModel,\n DayViewModel,\n MonthsCalendarViewModel,\n YearsCalendarViewModel\n} from '../models';\nimport {BsDatepickerConfig} from \"../bs-datepicker.config\";\n\nexport abstract class BsDatepickerAbstractComponent {\n readonly _subs: Subscription[] = [];\n\n _daysCalendarSub: Subscription = new Subscription();\n _daysCalendar$!: Observable<DaysCalendarViewModel[] | undefined>;\n _effects?: BsDatepickerEffects;\n\n animationState: string = 'void';\n chosenRange: Date[] = [];\n isOtherMonthsActive?: boolean;\n isRangePicker?: boolean;\n\n monthsCalendar?: Observable<MonthsCalendarViewModel[] | undefined>;\n options$!: Observable<DatepickerRenderOptions | undefined>;\n viewMode?: Observable<BsDatepickerViewMode | undefined>;\n yearsCalendar?: Observable<YearsCalendarViewModel[] | undefined>;\n\n get calendarSize(): 'sm' | 'md' {\n if (!this._config.isMobile && (!this.isRangePicker || this._config.displayMonths == 1)) {\n return this._config.calendarSize;\n } else {\n return 'sm';\n }\n }\n\n get calendarSpacing(): any {\n if (!this._config.isMobile && (!this.isRangePicker || this._config.displayMonths == 1)) {\n return 'spacing-' + this._config.calendarSize;\n } else if (this.isRangePicker || this._config.displayMonths != 1) {\n return 'spacing-' + this._config.calendarSize;\n } else {\n return 'spacing-sm';\n }\n }\n\n get daysCalendar$(): Observable<DaysCalendarViewModel[] | undefined> {\n return this._daysCalendar$;\n }\n\n get isDisabled(): boolean {\n return !!this._config.isDisabled;\n }\n\n get isEmpty(): boolean {\n return !this._config.value;\n }\n\n get showNavigationArrows(): boolean {\n return !this.isRangePicker || (this.isRangePicker && this._config.displayMonths == 1);\n }\n\n set daysCalendar$(value: Observable<DaysCalendarViewModel[] | undefined>) {\n this._daysCalendar$ = value;\n this._daysCalendarSub.unsubscribe();\n }\n\n set isDisabled(value: boolean | undefined) {\n this._effects?.setDisabled(value);\n }\n\n set maxDate(value: Date | undefined) {\n this._effects?.setMaxDate(value);\n }\n\n set minDate(value: Date | undefined) {\n this._effects?.setMinDate(value);\n }\n\n protected constructor(public _config: BsDatepickerConfig) {\n }\n\n setViewMode(event: BsDatepickerViewMode): void {\n }\n\n navigateTo(event: BsNavigationEvent): void {\n }\n\n dayHoverHandler(event: CellHoverEvent): void {\n }\n\n monthHoverHandler(event: CellHoverEvent): void {\n }\n\n yearHoverHandler(event: CellHoverEvent): void {\n }\n\n daySelectHandler(day: DayViewModel): void {\n }\n\n monthSelectHandler(event: CalendarCellViewModel): void {\n }\n\n yearSelectHandler(event: CalendarCellViewModel): void {\n }\n\n setRangeOnCalendar(dates: BsCustomDates): void {\n }\n\n clearDate(): void {\n }\n\n apply(): void {\n }\n}\n","import {Injectable} from '@angular/core';\nimport {TimeUnit} from 'ngx-bootstrap/chronos';\nimport {Action} from 'ngx-bootstrap/mini-ngrx';\nimport {BsDatepickerViewMode, BsViewNavigationEvent, CellHoverEvent, DatepickerRenderOptions} from '../models';\n\n@Injectable({providedIn: 'platform'})\nexport class BsDatepickerActions {\n static readonly CALCULATE: string = '[datepicker] calculate dates matrix';\n static readonly CHANGE_VIEWMODE: string = '[datepicker] switch view mode';\n static readonly FLAG: string = '[datepicker] set flags';\n static readonly FORMAT: string = '[datepicker] format datepicker values';\n static readonly HOVER: string = '[datepicker] hover date';\n static readonly NAVIGATE_OFFSET: string = '[datepicker] shift view date';\n static readonly NAVIGATE_TO: string = '[datepicker] change view date';\n static readonly SELECT: string = '[datepicker] select date';\n static readonly SELECT_RANGE: string = '[daterangepicker] select dates range';\n static readonly SET_IS_DISABLED: string = '[datepicker] set is disabled';\n static readonly SET_MAX_DATE: string = '[datepicker] set max date';\n static readonly SET_MIN_DATE: string = '[datepicker] set min date';\n static readonly SET_OPTIONS: string = '[datepicker] update render options';\n\n calculate(): Action {\n return {type: BsDatepickerActions.CALCULATE};\n }\n\n format(): Action {\n return {type: BsDatepickerActions.FORMAT};\n }\n\n flag(): Action {\n return {type: BsDatepickerActions.FLAG};\n }\n\n select(date?: Date): Action {\n return {type: BsDatepickerActions.SELECT, payload: date};\n }\n\n changeViewMode(event: BsDatepickerViewMode): Action {\n return {type: BsDatepickerActions.CHANGE_VIEWMODE, payload: event};\n }\n\n navigateTo(event: BsViewNavigationEvent): Action {\n return {type: BsDatepickerActions.NAVIGATE_TO, payload: event};\n }\n\n navigateStep(step?: TimeUnit): Action {\n return {type: BsDatepickerActions.NAVIGATE_OFFSET, payload: step};\n }\n\n setOptions(options: DatepickerRenderOptions): Action {\n return {type: BsDatepickerActions.SET_OPTIONS, payload: options};\n }\n\n // date range picker\n selectRange(value?: (Date | undefined)[] | undefined): Action {\n return {type: BsDatepickerActions.SELECT_RANGE, payload: value};\n }\n\n hoverDay(event: CellHoverEvent): Action {\n return {type: BsDatepickerActions.HOVER, payload: event.isHovered ? event.cell.date : null};\n }\n\n minDate(date?: Date): Action {\n return {type: BsDatepickerActions.SET_MIN_DATE, payload: date};\n }\n\n maxDate(date?: Date): Action {\n return {type: BsDatepickerActions.SET_MAX_DATE, payload: date};\n }\n\n isDisabled(value?: boolean): Action {\n return {type: BsDatepickerActions.SET_IS_DISABLED, payload: value};\n }\n}\n","import {Injectable} from '@angular/core';\n\nimport {combineLatest, Observable, Subscription} from 'rxjs';\nimport {filter, map} from 'rxjs/operators';\n\nimport {BsDatepickerAbstractComponent} from '../base/bs-datepicker-container';\nimport {BsDatepickerConfig} from '../bs-datepicker.config';\n\nimport {\n BsDatepickerViewMode,\n BsNavigationEvent,\n CellHoverEvent,\n DatepickerRenderOptions,\n DaysCalendarViewModel,\n DayViewModel,\n MonthsCalendarViewModel,\n YearsCalendarViewModel\n} from '../models';\nimport {BsDatepickerActions} from './bs-datepicker.actions';\nimport {BsDatepickerStore} from './bs-datepicker.store';\n\n\n@Injectable({providedIn: 'platform'})\nexport class BsDatepickerEffects {\n viewMode?: Observable<BsDatepickerViewMode>;\n daysCalendar?: Observable<DaysCalendarViewModel[]>;\n monthsCalendar?: Observable<MonthsCalendarViewModel[]>;\n yearsCalendar?: Observable<YearsCalendarViewModel[]>;\n options?: Observable<DatepickerRenderOptions>;\n\n private _store?: BsDatepickerStore;\n private _subs: Subscription[] = [];\n\n constructor(private _actions: BsDatepickerActions) {\n }\n\n init(_bsDatepickerStore: BsDatepickerStore): BsDatepickerEffects {\n this._store = _bsDatepickerStore;\n return this;\n }\n\n /** setters */\n\n setValue(value?: Date): void {\n this._store?.dispatch(this._actions.select(value));\n }\n\n setRangeValue(value?: (Date | undefined)[] | undefined): void {\n this._store?.dispatch(this._actions.selectRange(value));\n }\n\n setMinDate(value?: Date): BsDatepickerEffects {\n this._store?.dispatch(this._actions.minDate(value));\n return this;\n }\n\n setMaxDate(value?: Date): BsDatepickerEffects {\n this._store?.dispatch(this._actions.maxDate(value));\n return this;\n }\n\n setDisabled(value?: boolean): BsDatepickerEffects {\n this._store?.dispatch(this._actions.isDisabled(value));\n return this;\n }\n\n /* Set rendering options */\n setOptions(_config: BsDatepickerConfig): BsDatepickerEffects {\n const _options = Object.assign({locale: 'en'}, _config);\n this._store?.dispatch(this._actions.setOptions(_options));\n return this;\n }\n\n /** view to mode bindings */\n setBindings(container: BsDatepickerAbstractComponent): BsDatepickerEffects {\n if (!this._store) return this;\n\n container.daysCalendar$ = this._store.select(state => state.flaggedMonths).pipe(filter(months => !!months));\n container.monthsCalendar = this._store.select(state => state.flaggedMonthsCalendar).pipe(filter(months => !!months));\n container.yearsCalendar = this._store.select(state => state.yearsCalendarFlagged).pipe(filter(years => !!years));\n container.viewMode = this._store.select(state => state.view?.mode);\n container.options$ = combineLatest([this._store.select(state => state.displayMonths)]).pipe(map((latest) => ({displayMonths: latest[0]})));\n\n return this;\n }\n\n /** event handlers */\n setEventHandlers(container: BsDatepickerAbstractComponent): BsDatepickerEffects {\n container.setViewMode = (event: BsDatepickerViewMode): void => {\n this._store?.dispatch(this._actions.changeViewMode(event));\n };\n\n container.navigateTo = (event: BsNavigationEvent): void => {\n this._store?.dispatch(this._actions.navigateStep(event.step));\n };\n\n container.dayHoverHandler = (event: CellHoverEvent): void => {\n const _cell = event.cell as DayViewModel;\n\n if (_cell.isOtherMonth || _cell.isDisabled) return;\n\n this._store?.dispatch(this._actions.hoverDay(event));\n _cell.isHovered = event.isHovered;\n };\n\n container.monthHoverHandler = (event: CellHoverEvent): void => {\n event.cell.isHovered = event.isHovered;\n };\n\n container.yearHoverHandler = (event: CellHoverEvent): void => {\n event.cell.isHovered = event.isHovered;\n };\n\n return this;\n }\n\n registerDatepickerSideEffects(): BsDatepickerEffects {\n if (!this._store) return this;\n\n this._subs.push(\n this._store.select(state => state.view).subscribe(() => {\n this._store?.dispatch(this._actions.calculate());\n })\n );\n\n // format calendar values on month model change\n this._subs.push(\n this._store\n .select(state => state.monthsModel)\n .pipe(filter(monthModel => !!monthModel))\n .subscribe(() => this._store?.dispatch(this._actions.format()))\n );\n\n // flag day values\n this._subs.push(\n this._store\n .select(state => state.formattedMonths)\n .pipe(filter(month => !!month))\n .subscribe(() => this._store?.dispatch(this._actions.flag()))\n );\n\n // flag day values\n this._subs.push(\n this._store\n .select(state => state.selectedDate)\n .pipe(filter(selectedDate => !!selectedDate))\n .subscribe(() => this._store?.dispatch(this._actions.flag()))\n );\n\n // flag for date range picker\n this._subs.push(\n this._store\n .select(state => state.selectedRange)\n .pipe(filter(selectedRange => !!selectedRange))\n .subscribe(() => this._store?.dispatch(this._actions.flag()))\n );\n\n // monthsCalendar\n this._subs.push(\n this._store\n .select(state => state.monthsCalendar)\n .subscribe(() => this._store?.dispatch(this._actions.flag()))\n );\n\n // years calendar\n this._subs.push(\n this._store\n .select(state => state.yearsCalendarModel)\n .pipe(filter(state => !!state))\n .subscribe(() => this._store?.dispatch(this._actions.flag()))\n );\n\n // on hover\n this._subs.push(\n this._store\n .select(state => state.hoveredDate)\n .pipe(filter(hoveredDate => !!hoveredDate))\n .subscribe(() => this._store?.dispatch(this._actions.flag()))\n );\n\n return this;\n }\n\n destroy(): void {\n for (const sub of this._subs) {\n sub.unsubscribe();\n }\n }\n}\n","import {\n MonthViewOptions\n} from '../models';\n\nexport const defaultMonthOptions: MonthViewOptions = {\n width: 7,\n height: 6\n};\n\nexport const dayInMilliseconds: number = 24 * 60 * 60 * 1000;\n","import {\n BsDatepickerViewMode,\n DatepickerFormatOptions,\n DatepickerRenderOptions,\n DaysCalendarModel,\n DaysCalendarViewModel,\n MonthsCalendarViewModel,\n MonthViewOptions,\n YearsCalendarViewModel\n} from '../models';\nimport {defaultMonthOptions} from './_defaults';\nimport {BsDatepickerConfig} from '../bs-datepicker.config';\n\nexport interface BsDatepickerViewState {\n date: Date;\n mode: BsDatepickerViewMode;\n}\n\nexport class BsDatepickerState implements DatepickerRenderOptions, DatepickerFormatOptions {\n // date picker\n selectedDate?: Date;\n // daterange picker\n selectedRange?: Date[];\n\n // initial date of calendar, today by default\n view?: BsDatepickerViewState;\n\n isDisabled?: boolean;\n // bounds\n minDate?: Date;\n maxDate?: Date;\n minMode?: BsDatepickerViewMode;\n\n hoveredDate?: Date;\n hoveredMonth?: Date;\n hoveredYear?: Date;\n\n // days calendar\n monthsModel?: DaysCalendarModel[];\n formattedMonths?: DaysCalendarViewModel[];\n flaggedMonths?: DaysCalendarViewModel[];\n preventChangeToNextMonth?: boolean; // dateRangePicker only;\n\n // months calendar\n monthsCalendar?: MonthsCalendarViewModel[];\n flaggedMonthsCalendar?: MonthsCalendarViewModel[];\n\n // years calendar\n yearsCalendarModel?: YearsCalendarViewModel[];\n yearsCalendarFlagged?: YearsCalendarViewModel[];\n\n // options\n monthViewOptions?: MonthViewOptions;\n\n // DatepickerRenderOptions\n displayMonths: number = 1;\n\n // DatepickerFormatOptions\n locale?: string;\n\n monthTitle?: string;\n yearTitle?: string;\n\n dayLabel?: string;\n monthLabel?: string;\n yearLabel?: string;\n}\n\nconst _initialView: BsDatepickerViewState = {date: new Date(), mode: 'day'};\n\nexport const initialDatepickerState: BsDatepickerState = Object.assign(\n new BsDatepickerConfig(),\n {\n locale: 'en',\n view: _initialView,\n selectedRange: [],\n monthViewOptions: defaultMonthOptions\n }\n);\n","import {endOf, getDay, isAfter, isBefore, isFirstDayOfWeek, shiftDate, startOf} from 'ngx-bootstrap/chronos';\nimport {BsDatepickerState} from '../reducer/bs-datepicker.state';\n\nexport function getStartingDayOfCalendar(date: Date, options: { firstDayOfWeek?: number }): Date {\n if (isFirstDayOfWeek(date, options.firstDayOfWeek)) return date;\n\n const weekDay: number = getDay(date);\n const offset: number = calculateDateOffset(weekDay, options.firstDayOfWeek);\n\n return shiftDate(date, {day: -offset});\n}\n\nexport function calculateDateOffset(weekday: number, startingDayOffset?: number): number {\n const _startingDayOffset: number = Number(startingDayOffset);\n\n if (isNaN(_startingDayOffset)) return 0;\n if (_startingDayOffset === 0) return weekday;\n\n const offset: number = weekday - _startingDayOffset % 7;\n return offset < 0 ? offset + 7 : offset;\n}\n\nexport function isMonthDisabled(date: Date, min?: Date, max?: Date): boolean {\n const minBound: boolean = min && isBefore(endOf(date, 'month'), min, 'day');\n const maxBound: boolean = max && isAfter(startOf(date, 'month'), max, 'day');\n\n return minBound || maxBound;\n}\n\nexport function isYearDisabled(date: Date, min?: Date, max?: Date): boolean {\n const minBound: boolean = min && isBefore(endOf(date, 'year'), min, 'day');\n const maxBound: boolean = max && isAfter(startOf(date, 'year'), max, 'day');\n\n return minBound || maxBound;\n}\n\nexport function getYearsCalendarInitialDate(state: BsDatepickerState, calendarIndex = 0): Date | undefined {\n const model = state && state.yearsCalendarModel && state.yearsCalendarModel[calendarIndex];\n\n return model?.years[0] && model.years[0][0] && model.years[0][0].date;\n}\n\nexport function checkRangesWithMaxDate(ranges?: BsCustomDates[], maxDate?: Date): BsCustomDates[] | undefined {\n if (!ranges) return ranges;\n if (!maxDate) return ranges;\n if (!ranges.length && !ranges[0].value) return ranges;\n\n ranges.forEach((item: BsCustomDates) => {\n if (!item || !item.value) return ranges;\n if (item.value instanceof Date) return ranges;\n if (!(item.value instanceof Array && item.value.length)) return ranges;\n\n item.value = compareDateWithMaxDateHelper(item.value, maxDate);\n return ranges;\n });\n\n return ranges;\n}\n\nexport function checkBsValue(date?: Array<Date> | Date | (Date | undefined)[], maxDate?: Date): Array<Date> | Date | (Date | undefined)[] | undefined {\n if (!date) return date;\n if (!maxDate) return date;\n if (date instanceof Array && !date.length) return date;\n if (date instanceof Date) return date;\n\n return compareDateWithMaxDateHelper(date, maxDate);\n}\n\nfunction compareDateWithMaxDateHelper<T>(date: T, maxDate: Date): T | Date[] {\n if (date instanceof Array) {\n return date.map(item => {\n if (!item) return item;\n if (isAfter(item, maxDate, 'date')) item = maxDate;\n\n return item;\n });\n }\n\n return date;\n}\n\nexport interface BsCustomDates {\n value: Date | Date[];\n}\n","import {shiftDate, TimeUnit} from 'ngx-bootstrap/chronos';\n\nexport type CreateMatrixCb<T> = (date: Date) => T;\n\nexport interface MatrixOptions {\n height: number;\n width: number;\n initialDate: Date;\n shift: TimeUnit;\n}\n\nexport function createMatrix<T>(options: MatrixOptions, fn: CreateMatrixCb<T>): T[][] {\n let prevValue: Date = options.initialDate;\n const matrix: T[][] = new Array(options.height);\n\n for (let i: number = 0; i < options.height; i++) {\n matrix[i] = new Array(options.width);\n\n for (let j: number = 0; j < options.width; j++) {\n matrix[i][j] = fn(prevValue);\n prevValue = shiftDate(prevValue, options.shift);\n }\n }\n\n return matrix;\n}\n","import {getFirstDayOfMonth} from 'ngx-bootstrap/chronos';\nimport {DaysCalendarModel, MonthViewOptions} from '../models';\nimport {getStartingDayOfCalendar} from '../utils/bs-calendar-utils';\nimport {createMatrix, MatrixOptions} from '../utils/matrix-utils';\n\nexport function calcDaysCalendar(startingDate: Date, options: MonthViewOptions): DaysCalendarModel {\n const firstDay: Date = getFirstDayOfMonth(startingDate);\n const initialDate: Date = getStartingDayOfCalendar(firstDay, options);\n\n const matrixOptions: MatrixOptions = {\n width: options.width || 0,\n height: options.height || 0,\n initialDate,\n shift: {day: 1}\n };\n\n const daysMatrix: Date[][] = createMatrix<Date>(matrixOptions, (date: Date) => date);\n\n return {daysMatrix, month: firstDay};\n}\n","import {DatepickerFormatOptions, DaysCalendarModel, DaysCalendarViewModel} from '../models';\nimport {formatDate} from 'ngx-bootstrap/chronos';\n\nexport function formatDaysCalendar(daysCalendar: DaysCalendarModel, formatOptions: DatepickerFormatOptions, monthIndex: number): DaysCalendarViewModel {\n return {\n month: daysCalendar.month,\n monthTitle: formatDate(daysCalendar.month, formatOptions.monthTitle, formatOptions.locale),\n yearTitle: formatDate(daysCalendar.month, formatOptions.yearTitle, formatOptions.locale),\n weekdays: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'],\n weeks: daysCalendar.daysMatrix.map((week: Date[], weekIndex: number) => ({\n days: week.map((date: Date, dayIndex: number) => ({\n date,\n label: formatDate(date, formatOptions.dayLabel, formatOptions.locale),\n monthIndex,\n weekIndex,\n dayIndex\n }))\n })),\n hideLeftArrow: false,\n hideRightArrow: false,\n disableLeftArrow: false,\n disableRightArrow: false\n };\n}\n","import {DaysCalendarViewModel, DayViewModel, WeekViewModel} from '../models';\n\nimport {isAfter, isBefore, isSameDay, isSameMonth, shiftDate} from 'ngx-bootstrap/chronos';\n\nimport {isMonthDisabled} from '../utils/bs-calendar-utils';\n\nexport interface FlagDaysCalendarOptions {\n isDisabled: boolean;\n minDate: Date;\n maxDate: Date;\n hoveredDate: Date;\n selectedDate: Date;\n selectedRange: Date[];\n displayMonths: number;\n monthIndex: number;\n}\n\nexport function flagDaysCalendar(formattedMonth: DaysCalendarViewModel, options: Partial<FlagDaysCalendarOptions>): DaysCalendarViewModel {\n formattedMonth.weeks.forEach((week: WeekViewModel) => {\n week.days.forEach((day: DayViewModel, dayIndex: number) => {\n // datepicker\n const isOtherMonth: boolean = !isSameMonth(day.date, formattedMonth.month);\n const isHovered: boolean = !isOtherMonth && isSameDay(day.date, options.hoveredDate);\n\n // date range picker\n const isSelectionStart: boolean = !isOtherMonth && options.selectedRange && isSameDay(day.date, options.selectedRange[0]);\n const isSelectionEnd: boolean = !isOtherMonth && options.selectedRange && isSameDay(day.date, options.selectedRange[1]);\n const isSelected: boolean = (!isOtherMonth && isSameDay(day.date, options.selectedDate)) || isSelectionStart || isSelectionEnd;\n const isInRange: boolean = !isOtherMonth && !!options.selectedRange && isDateInRange(day.date, options.selectedRange, options.hoveredDate);\n const isDisabled: boolean = options.isDisabled || isBefore(day.date, options.minDate, 'day') || isAfter(day.date, options.maxDate, 'day');\n const isToday: boolean = !isOtherMonth && isSameDay(day.date, new Date());\n\n // decide update or not\n const newDay = Object.assign({}, day, {\n isOtherMonth,\n isHovered,\n isSelected,\n isSelectionStart,\n isSelectionEnd,\n isInRange,\n isDisabled,\n isToday\n });\n\n if (\n day.isOtherMonth !== newDay.isOtherMonth ||\n day.isHovered !== newDay.isHovered ||\n day.isSelected !== newDay.isSelected ||\n day.isSelectionStart !== newDay.isSelectionStart ||\n day.isSelectionEnd !== newDay.isSelectionEnd ||\n day.isDisabled !== newDay.isDisabled ||\n day.isInRange !== newDay.isInRange\n ) {\n week.days[dayIndex] = newDay;\n }\n });\n });\n\n formattedMonth.hideLeftArrow = options.isDisabled || (!!options.monthIndex && options.monthIndex > 0 && options.monthIndex !== options.displayMonths);\n formattedMonth.hideRightArrow = options.isDisabled || ((!!options.monthIndex || options.monthIndex === 0) && !!options.displayMonths && options.monthIndex < options.displayMonths && options.monthIndex + 1 !== options.displayMonths);\n\n formattedMonth.disableLeftArrow = isMonthDisabled(shiftDate(formattedMonth.month, {month: -1}), options.minDate, options.maxDate);\n formattedMonth.disableRightArrow = isMonthDisabled(shiftDate(formattedMonth.month, {month: 1}), options.minDate, options.maxDate);\n\n return formattedMonth;\n}\n\nfunction isDateInRange(date: Date, selectedRange?: Date[], hoveredDate?: Date): boolean {\n if (!date || !selectedRange || !selectedRange[0]) return false;\n if (selectedRange[1]) return date > selectedRange[0] && date <= selectedRange[1];\n if (hoveredDate) return date > selectedRange[0] && date <= hoveredDate;\n\n return false;\n}\n","import { BsDatepickerViewMode } from '../models';\n\nexport function canSwitchMode(mode: BsDatepickerViewMode, minMode?: BsDatepickerViewMode): boolean {\n return minMode ? mode >= minMode : true;\n}\n","import {CalendarCellViewModel, DatepickerFormatOptions, MonthsCalendarViewModel} from '../models';\nimport {formatDate, startOf} from 'ngx-bootstrap/chronos';\nimport {createMatrix} from '../utils/matrix-utils';\nimport {TimeUnit} from \"ngx-bootstrap/chronos/types\";\n\nconst height: number = 4;\nconst width: number = 3;\nconst shift: TimeUnit = {month: 1};\n\nexport function formatMonthsCalendar(viewDate: Date, formatOptions: DatepickerFormatOptions): MonthsCalendarViewModel {\n const initialDate: Date = startOf(viewDate, 'year');\n const matrixOptions = {width, height, initialDate, shift};\n const monthMatrix: CalendarCellViewModel[][] = createMatrix<CalendarCellViewModel>(matrixOptions, (date: Date) => ({\n date,\n label: formatDate(date, formatOptions.monthLabel, formatOptions.locale)\n }));\n\n return {\n months: monthMatrix,\n monthTitle: '',\n yearTitle: formatDate(viewDate, formatOptions.yearTitle, formatOptions.locale),\n hideRightArrow: false,\n hideLeftArrow: false,\n disableRightArrow: false,\n disableLeftArrow: false\n };\n}\n","import {isSameMonth, shiftDate} from 'ngx-bootstrap/chronos';\nimport {CalendarCellViewModel, MonthsCalendarViewModel} from '../models';\nimport {isMonthDisabled, isYearDisabled} from '../utils/bs-calendar-utils';\n\nexport interface FlagMonthCalendarOptions {\n isDisabled: boolean;\n minDate: Date;\n maxDate: Date;\n hoveredMonth: Date;\n selectedDate: Date;\n selectedRange: Date[];\n displayMonths: number;\n monthIndex: number;\n}\n\nexport function flagMonthsCalendar(monthCalendar: MonthsCalendarViewModel, options: Partial<FlagMonthCalendarOptions>): MonthsCalendarViewModel {\n monthCalendar.months.forEach((months: CalendarCellViewModel[], rowIndex: number) => {\n months.forEach((month: CalendarCellViewModel, monthIndex: number) => {\n const isHovered: boolean = isSameMonth(month.date, options.hoveredMonth);\n const isToday: boolean = isSameMonth(month.date, new Date());\n const isDisabled: boolean = options.isDisabled || isMonthDisabled(month.date, options.minDate, options.maxDate);\n\n let isSelected: boolean;\n if (!options.selectedDate && options.selectedRange) {\n isSelected = isSameMonth(month.date, options.selectedRange[0]);\n\n if (!isSelected) {\n isSelected = isSameMonth(month.date, options.selectedRange[1]);\n }\n } else {\n isSelected = isSameMonth(month.date, options.selectedDate);\n }\n const newMonth = Object.assign(month, {\n isHovered,\n isToday,\n isDisabled,\n isSelected\n });\n\n if (\n month.isHovered !== newMonth.isHovered ||\n month.isToday !== newMonth.isToday ||\n month.isDisabled !== newMonth.isDisabled ||\n month.isSelected !== newMonth.isSelected\n ) {\n monthCalendar.months[rowIndex][monthIndex] = newMonth;\n }\n });\n });\n\n monthCalendar.hideLeftArrow = !!options.monthIndex && options.monthIndex > 0 && options.monthIndex !== options.displayMonths;\n monthCalendar.hideRightArrow = (!!options.monthIndex || options.monthIndex === 0) && (!!options.displayMonths || options.displayMonths === 0) && options.monthIndex < options.displayMonths && options.monthIndex + 1 !== options.displayMonths;\n\n monthCalendar.disableLeftArrow = isYearDisabled(shiftDate(monthCalendar.months[0][0].date, {year: -1}), options.minDate, options.maxDate);\n monthCalendar.disableRightArrow = isYearDisabled(shiftDate(monthCalendar.months[0][0].date, {year: 1}), options.minDate, options.maxDate);\n\n return monthCalendar;\n}\n","import {CalendarCellViewModel, DatepickerFormatOptions, YearsCalendarViewModel} from '../models';\nimport {formatDate, shiftDate} from 'ngx-bootstrap/chronos';\nimport {createMatrix} from '../utils/matrix-utils';\nimport {TimeUnit} from \"ngx-bootstrap/chronos/types\";\n\nconst height: number = 3;\nconst width: number = 4;\nexport const yearsPerCalendar: number = height * width;\nexport const initialYearShift: number = (yearsPerCalendar - 1) * -1; // -1 to display current year; * -1 to show previous years\nconst shift: TimeUnit = {year: 1};\n\nexport function formatYearsCalendar(viewDate: Date, formatOptions: DatepickerFormatOptions, previousInitialDate?: Date, currentSelectedYear?: Date): YearsCalendarViewModel {\n const initialDate: Date = calculateInitialDate(viewDate, previousInitialDate);\n const matrixOptions = {width, height, initialDate, shift};\n const yearsMatrix: CalendarCellViewModel[][] = createMatrix<CalendarCellViewModel>(matrixOptions, date => ({\n date,\n label: formatDate(date, formatOptions.yearLabel, formatOptions.locale)\n }));\n\n let yearTitle: string;\n if (currentSelectedYear) {\n yearTitle = formatDate(currentSelectedYear, formatOptions.yearLabel, formatOptions.locale);\n } else {\n yearTitle = formatYearRangeTitle(yearsMatrix, formatOptions)\n }\n\n return {\n years: yearsMatrix,\n monthTitle: '',\n yearTitle,\n hideLeftArrow: false,\n hideRightArrow: false,\n disableLeftArrow: false,\n disableRightArrow: false\n };\n}\n\nfunction calculateInitialDate(viewDate: Date, previousInitialDate?: Date): Date {\n if (previousInitialDate && viewDate.getFullYear() >= previousInitialDate.getFullYear() && viewDate.getFullYear() < previousInitialDate.getFullYear() + yearsPerCalendar) {\n return previousInitialDate;\n }\n\n return shiftDate(viewDate, {year: initialYearShift});\n}\n\nfunction formatYearRangeTitle(yearsMatrix: CalendarCellViewModel[][], formatOptions: DatepickerFormatOptions): string {\n const from: string = formatDate(yearsMatrix[0][0].date, formatOptions.yearTitle, formatOptions.locale);\n const to: string = formatDate(yearsMatrix[height - 1][width - 1].date, formatOptions.yearTitle, formatOptions.locale);\n\n return `${from} - ${to}`;\n}\n","import {isSameYear, shiftDate} from 'ngx-bootstrap/chronos';\nimport {CalendarCellViewModel, YearsCalendarViewModel} from '../models';\nimport {isYearDisabled} from '../utils/bs-calendar-utils';\n\nexport interface FlagYearsCalendarOptions {\n isDisabled: boolean;\n minDate: Date;\n maxDate: Date;\n hoveredYear: Date;\n selectedDate: Date;\n selectedRange: Date[];\n displayMonths: number;\n yearIndex: number;\n isToday: boolean;\n}\n\nexport function flagYearsCalendar(yearsCalendar: YearsCalendarViewModel, options: Partial<FlagYearsCalendarOptions>): YearsCalendarViewModel {\n yearsCalendar.years.forEach((years: CalendarCellViewModel[], rowIndex: number) => {\n years.forEach((year: CalendarCellViewModel, yearIndex: number) => {\n const isHovered: boolean = isSameYear(year.date, options.hoveredYear);\n const isToday: boolean = isSameYear(year.date, new Date());\n const isDisabled: boolean = options.isDisabled || isYearDisabled(year.date, options.minDate, options.maxDate);\n\n let isSelected: boolean;\n if (!options.selectedDate && options.selectedRange) {\n isSelected = isSameYear(year.date, options.selectedRange[0]);\n\n if (!isSelected) {\n isSelected = isSameYear(year.date, options.selectedRange[1]);\n }\n } else {\n isSelected = isSameYear(year.date, options.selectedDate);\n }\n\n const newMonth = Object.assign(year, {isHovered, isDisabled, isSelected, isToday});\n\n if (\n year.isHovered !== newMonth.isHovered ||\n year.isDisabled !== newMonth.isDisabled ||\n year.isToday !== newMonth.isToday ||\n year.isSelected !== newMonth.isSelected\n ) {\n yearsCalendar.years[rowIndex][yearIndex] = newMonth;\n }\n });\n });\n\n yearsCalendar.hideLeftArrow = !!options.yearIndex && options.yearIndex > 0 && options.yearIndex !== options.displayMonths;\n yearsCalendar.hideRightArrow = !!options.yearIndex && !!options.displayMonths && options.yearIndex < options.displayMonths && options.yearIndex + 1 !== options.displayMonths;\n\n const i: number = yearsCalendar.years.length - 1;\n const j: number = yearsCalendar.years[i].length - 1;\n yearsCalendar.disableLeftArrow = isYearDisabled(shiftDate(yearsCalendar.years[0][0].date, {year: -1}), options.minDate, options.maxDate);\n yearsCalendar.disableRightArrow = isYearDisabled(shiftDate(yearsCalendar.years[i][j].date, {year: 1}), options.minDate, options.maxDate);\n\n return yearsCalendar;\n}\n","import {BsDatepickerState, BsDatepickerViewState, initialDatepickerState} from './bs-datepicker.state';\nimport {Action} from 'ngx-bootstrap/mini-ngrx';\nimport {BsDatepickerActions} from './bs-datepicker.actions';\nimport {calcDaysCalendar} from '../engine/calc-days-calendar';\nimport {formatDaysCalendar} from '../engine/format-days-calendar';\nimport {flagDaysCalendar} from '../engine/flag-days-calendar';\nimport {\n getLocale,\n isAfter,\n isArray,\n isBefore,\n isDateValid,\n isSame,\n setFullDate,\n shiftDate,\n startOf\n} from 'ngx-bootstrap/chronos';\nimport {canSwitchMode} from '../engine/view-mode';\nimport {formatMonthsCalendar} from '../engine/format-months-calendar';\nimport {flagMonthsCalendar} from '../engine/flag-months-calendar';\nimport {formatYearsCalendar, initialYearShift, yearsPerCalendar} from '../engine/format-years-calendar';\nimport {flagYearsCalendar} from '../engine/flag-years-calendar';\nimport {\n BsDatepickerViewMode,\n BsViewNavigationEvent,\n DatepickerFormatOptions,\n DaysCalendarModel,\n DaysCalendarViewModel,\n MonthsCalendarViewModel,\n YearsCalendarViewModel\n} from '../models';\nimport {getYearsCalendarInitialDate} from '../utils/bs-calendar-utils';\n\n\nexport function bsDatepickerReducer(state: BsDatepickerState = initialDatepickerState, action: Action): BsDatepickerState {\n switch (action.type) {\n case BsDatepickerActions.CALCULATE: {\n return calculateReducer(state);\n }\n\n case BsDatepickerActions.FORMAT: {\n return formatReducer(state);\n }\n\n case BsDatepickerActions.FLAG: {\n return flagReducer(state);\n }\n\n case BsDatepickerActions.NAVIGATE_OFFSET: {\n return navigateOffsetReducer(state, action);\n }\n\n case BsDatepickerActions.NAVIGATE_TO: {\n const payload: BsViewNavigationEvent = action.payload;\n\n if (!state.view || !payload.unit) return state;\n\n const date: Date = setFullDate(state.view.date, payload.unit);\n\n let newState;\n let mode: BsDatepickerViewMode;\n\n if (canSwitchMode(payload.viewMode, state.minMode)) {\n mode = payload.viewMode;\n newState = {view: {date, mode}};\n } else {\n mode = state.view.mode;\n newState = {selectedDate: date, view: {date, mode}};\n }\n\n return Object.assign({}, state, newState);\n }\n\n case BsDatepickerActions.CHANGE_VIEWMODE: {\n if (!canSwitchMode(action.payload, state.minMode) || !state.view) return state;\n\n const date: Date = state.view.date;\n const mode = action.payload;\n const newState = {view: {date, mode}};\n\n return Object.assign({}, state, newState);\n }\n\n case BsDatepickerActions.HOVER: {\n return Object.assign({}, state, {hoveredDate: action.payload});\n }\n\n case BsDatepickerActions.SELECT: {\n if (!state.view) return state;\n\n const newState = {\n selectedDate: action.payload,\n view: state.view\n };\n\n const mode = state.view.mode;\n const _date = action.payload || state.view.date;\n const date: Date = getViewDate(_date, state.minDate, state.maxDate);\n newState.view = {mode, date};\n\n return Object.assign({}, state, newState);\n }\n\n case BsDatepickerActions.SET_OPTIONS: {\n if (!state.view) return state;\n\n const newState = action.payload;\n // preserve view mode\n const mode = newState.minMode ? newState.minMode : state.view.mode;\n const _viewDate = isDateValid(newState.value) && newState.value || isArray(newState.value) && isDateValid(newState.value[0]) && newState.value[0] || state.view.date;\n const date: Date = getViewDate(_viewDate, newState.minDate, newState.maxDate);\n newState.view = {mode, date};\n\n // update selected value\n if (newState.value) {\n // if new value is array we work with date range\n if (isArray(newState.value)) {\n newState.selectedRange = newState.value;\n }\n\n // if new value is a date -> datepicker\n if (newState.value instanceof Date) {\n newState.selectedDate = newState.value;\n }\n }\n\n return Object.assign({}, state, newState);\n }\n\n // date range picker\n case BsDatepickerActions.SELECT_RANGE: {\n if (!state.view) return state;\n\n const newState = {\n selectedRange: action.payload,\n view: state.view\n };\n\n const mode = state.view.mode;\n const _date = action.payload && action.payload[0] || state.view.date;\n const date: Date = getViewDate(_date, state.minDate, state.maxDate);\n newState.view = {mode, date};\n\n return Object.assign({}, state, newState);\n }\n\n case BsDatepickerActions.SET_MIN_DATE: {\n return Object.assign({}, state, {\n minDate: action.payload\n });\n }\n\n case BsDatepickerActions.SET_MAX_DATE: {\n return Object.assign({}, state, {\n maxDate: action.payload\n });\n }\n\n case BsDatepickerActions.SET_IS_DISABLED: {\n return Object.assign({}, state, {\n isDisabled: action.payload\n });\n }\n\n default:\n return state;\n }\n}\n\nfunction calculateReducer(state: BsDatepickerState): BsDatepickerState {\n if (!state.view) return state;\n\n // how many calendars\n let displayMonths: number = state.displayMonths;\n\n // use selected date on initial rendering if set\n let viewDate: Date = state.view.date;\n\n if (state.view.mode === 'day' && state.monthViewOptions) {\n state.monthViewOptions.firstDayOfWeek = getLocale(state.locale).firstDayOfWeek();\n\n let monthsModel = new Array(displayMonths);\n for (let monthIndex: number = 0; monthIndex < displayMonths; monthIndex++) {\n monthsModel[monthIndex] = calcDaysCalendar(viewDate, state.monthViewOptions);\n viewDate = shiftDate(viewDate, {month: 1});\n }\n\n // Check if parameter enabled and check if it's not months navigation event\n if (state.preventChangeToNextMonth && state.flaggedMonths && state.hoveredDate) {\n const viewMonth: DaysCalendarModel = calcDaysCalendar(state.view.date, state.monthViewOptions);\n\n // Check if viewed right month same as in flaggedMonths state, then override months model with flaggedMonths\n if (state.flaggedMonths.length >= 2) {\n if (state.flaggedMonths[1].month.getMonth() === viewMonth.month.getMonth()) {\n monthsModel = state.flaggedMonths.map((item: DaysCalendarViewModel) => {\n return state.monthViewOptions ? calcDaysCalendar(item.month, state.monthViewOptions) : null;\n }).filter(item => item !== null);\n }\n } else {\n monthsModel = state.flaggedMonths.map((item: DaysCalendarViewModel) => {\n return state.monthViewOptions ? calcDaysCalendar(item.month, state.monthViewOptions) : null;\n }).filter(item => item !== null);\n }\n }\n\n return Object.assign({}, state, {monthsModel});\n }\n\n if (state.view.mode === 'month') {\n const monthsCalendar = new Array(displayMonths);\n\n for (let calendarIndex: number = 0; calendarIndex < displayMonths; calendarIndex++) {\n monthsCalendar[calendarIndex] = formatMonthsCalendar(viewDate, getFormatOptions(state));\n viewDate = shiftDate(viewDate, {year: 1});\n }\n\n return Object.assign({}, state, {monthsCalendar});\n }\n\n if (state.view.mode === 'year') {\n const yearsCalendarModel = new Array(displayMonths);\n\n for (let calendarIndex: number = 0; calendarIndex < displayMonths; calendarIndex++) {\n yearsCalendarModel[calendarIndex] = formatYearsCalendar(viewDate, getFormatOptions(state), state.minMode === 'year' ? getYearsCalendarInitialDate(state, calendarIndex) : undefined, state.selectedDate ? state.selectedDate : new Date());\n viewDate = shiftDate(viewDate, {year: yearsPerCalendar});\n }\n\n return Object.assign({}, state, {yearsCalendarModel});\n }\n\n return state;\n}\n\nfunction formatReducer(state: BsDatepickerState): BsDatepickerState {\n if (!state.view) return state;\n\n if (state.view.mode === 'day' && state.monthsModel) {\n const formattedMonths: DaysCalendarViewModel[] = state.monthsModel.map((month: DaysCalendarModel, monthIndex: number) => formatDaysCalendar(month, getFormatOptions(state), monthIndex));\n\n return Object.assign({}, state, {formattedMonths});\n }\n\n // how many calendars\n const displayMonths: number = state.displayMonths || 1;\n\n // check initial rendering\n // use selected date on initial rendering if set\n let viewDate: Date = state.view.date;\n\n if (state.view.mode === 'month') {\n const monthsCalendar = new Array(displayMonths);\n for (let calendarIndex: number = 0; calendarIndex < displayMonths; calendarIndex++) {\n monthsCalendar[calendarIndex] = formatMonthsCalendar(viewDate, getFormatOptions(state));\n viewDate = shiftDate(viewDate, {year: 1});\n }\n\n return Object.assign({}, state, {monthsCalendar});\n }\n\n if (state.view.mode === 'year') {\n const yearsCalendarModel = new Array(displayMonths);\n\n for (let calendarIndex: number = 0; calendarIndex < displayMonths; calendarIndex++) {\n yearsCalendarModel[calendarIndex] = formatYearsCalendar(viewDate, getFormatOptions(state), undefined, state.selectedDate ? state.selectedDate : new Date());\n viewDate = shiftDate(viewDate, {year: 16});\n }\n\n return Object.assign({}, state, {yearsCalendarModel});\n }\n\n return state;\n}\n\nfunction flagReducer(state: BsDatepickerState): BsDatepickerState {\n if (!state.view) return state;\n\n const displayMonths: number = isDisplayOneMonth(state.view.date, state.minDate, state.maxDate) ? 1 : state.displayMonths;\n if (state.formattedMonths && state.view.mode === 'day') {\n const flaggedMonths: DaysCalendarViewModel[] = state.formattedMonths.map((formattedMonth: DaysCalendarViewModel, monthIndex: number) =>\n flagDaysCalendar(formattedMonth, {\n isDisabled: state.isDisabled,\n minDate: state.minDate,\n maxDate: state.maxDate,\n hoveredDate: state.hoveredDate,\n selectedDate: state.selectedDate,\n selectedRange: state.selectedRange,\n displayMonths,\n monthIndex\n }));\n\n return Object.assign({}, state, {flaggedMonths});\n }\n\n if (state.view.mode === 'month' && state.monthsCalendar) {\n const flaggedMonthsCalendar: MonthsCalendarViewModel[] = state.monthsCalendar.map((formattedMonth: MonthsCalendarViewModel, monthIndex: number) =>\n flagMonthsCalendar(formattedMonth, {\n isDisabled: state.isDisabled,\n minDate: state.minDate,\n maxDate: state.maxDate,\n hoveredMonth: state.hoveredMonth,\n selectedDate: state.selectedDate,\n selectedRange: state.selectedRange,\n displayMonths,\n monthIndex\n }));\n\n return Object.assign({}, state, {flaggedMonthsCalendar});\n }\n\n if (state.view.mode === 'year' && state.yearsCalendarModel) {\n const yearsCalendarFlagged: YearsCalendarViewModel[] = state.yearsCalendarModel.map((formattedMonth: YearsCalendarViewModel, yearIndex: number) =>\n flagYearsCalendar(formattedMonth, {\n isDisabled: state.isDisabled,\n minDate: state.minDate,\n maxDate: state.maxDate,\n hoveredYear: state.hoveredYear,\n selectedDate: state.selectedDate,\n selectedRange: state.selectedRange,\n displayMonths,\n yearIndex\n })\n );\n\n return Object.assign({}, state, {yearsCalendarFlagged});\n }\n\n return state;\n}\n\nfunction navigateOffsetReducer(state: BsDatepickerState, action: Action): BsDatepickerState {\n if (!state.view) return state;\n\n const date: Date | undefined = shiftViewDate(state, action);\n if (!date) return state;\n\n const newState: { view: BsDatepickerViewState } = {\n view: {mode: state.view.mode, date}\n };\n\n return Object.assign({}, state, newState);\n}\n\nfunction shiftViewDate(state: BsDatepickerState, action: Action): Date | undefined {\n if (!state.view) return undefined;\n\n if (state.view.mode === 'year' && state.minMode === 'year') {\n const initialDate: Date | undefined = getYearsCalendarInitialDate(state, 0);\n\n if (initialDate) {\n const middleDate = shiftDate(initialDate, {year: -initialYearShift});\n return shiftDate(middleDate, action.payload);\n }\n }\n\n return shiftDate(startOf(state.view.date, 'month'), action.payload);\n}\n\nfunction getFormatOptions(state: BsDatepickerState): DatepickerFormatOptions {\n return {\n locale: state.locale,\n\n monthTitle: state.monthTitle,\n yearTitle: state.yearTitle,\n\n dayLabel: state.dayLabel,\n monthLabel: state.monthLabel,\n yearLabel: state.yearLabel\n };\n}\n\n/**\n * if view date is provided (bsValue|ngModel) it should be shown\n * if view date is not provider:\n * if minDate>currentDate (default view value), show minDate\n * if maxDate<currentDate(default view value) show maxDate\n */\nfunction getViewDate(viewDate: Date | Date[], minDate?: Date, maxDate?: Date): Date {\n const _date: Date = Array.isArray(viewDate) ? viewDate[0] : viewDate;\n\n if (minDate && isAfter(minDate, _date, 'day')) return minDate;\n if (maxDate && isBefore(maxDate, _date, 'day')) return maxDate;\n\n return _date;\n}\n\nfunction isDisplayOneMonth(viewDate: Date, minDate?: Date, maxDate?: Date): boolean | undefined {\n if (maxDate && isSame(maxDate, viewDate, 'day')) return true;\n\n return minDate && maxDate && minDate.getMonth() === maxDate.getMonth();\n}\n","import {Injectable} from '@angular/core';\nimport {Action, MiniState, MiniStore} from 'ngx-bootstrap/mini-ngrx';\nimport {BsDatepickerState, initialDatepickerState} from './bs-datepicker.state';\nimport {BehaviorSubject} from 'rxjs';\nimport {bsDatepickerReducer} from './bs-datepicker.reducer';\n\n@Injectable({providedIn: 'platform'})\nexport class BsDatepickerStore extends MiniStore<BsDatepickerState> {\n\n constructor() {\n const _dispatcher = new BehaviorSubject<Action>({type: '[datepicker] dispatcher init'});\n const state = new MiniState<BsDatepickerState>(initialDatepickerState, _dispatcher, bsDatepickerReducer);\n super(_dispatcher, bsDatepickerReducer, state);\n }\n}\n","import {Injectable} from \"@angular/core\";\n\n@Injectable({\n providedIn: 'root'\n})\nexport class BsDatepickerCallbacks {\n hide?: () => void;\n}\n","import { TimeUnit } from 'ngx-bootstrap/chronos';\n\nexport type BsDatepickerViewMode = 'day' | 'month' | 'year';\n\n/** *************** */\n// navigation bar settings\nexport interface NavigationViewModel {\n monthTitle: string;\n yearTitle: string;\n hideLeftArrow: boolean;\n hideRightArrow: boolean;\n disableLeftArrow: boolean;\n disableRightArrow: boolean;\n}\n\nexport interface CalendarCellViewModel {\n date: Date;\n label: string;\n isDisabled?: boolean;\n isHovered?: boolean;\n isSelected?: boolean;\n isToday?: boolean;\n}\n\n/** *************** */\n// days matrix: day cell view model\nexport interface DayViewModel extends CalendarCellViewModel {\n isOtherMonth?: boolean;\n isInRange?: boolean;\n isSelectionStart?: boolean;\n isSelectionEnd?: boolean;\n isToday?: boolean;\n\n // day index\n monthIndex?: number;\n weekIndex?: number;\n dayIndex?: number;\n}\n\nexport interface WeekViewModel {\n days: DayViewModel[];\n isHovered?: boolean;\n}\n\nexport interface DaysCalendarViewModel extends NavigationViewModel {\n weeks: WeekViewModel[];\n month: Date;\n weekdays: string[];\n}\n\n/** *************** */\n// months calendar\nexport interface MonthsCalendarViewModel extends NavigationViewModel {\n months: CalendarCellViewModel[][];\n}\n\n// years calendar\nexport interface YearsCalendarViewModel extends NavigationViewModel {\n years: CalendarCellViewModel[][];\n}\n\n/** *************** */\n\n// days Date's array\nexport interface DaysCalendarModel {\n daysMatrix: Date[][];\n month: Date;\n}\n\n/** *************** */\n// some func options\nexport interface MonthViewOptions {\n width?: number;\n height?: number;\n firstDayOfWeek?: number;\n}\n\n/** *************** */\n// rendering options\nexport interface DatepickerFormatOptions {\n locale?: string;\n\n monthTitle?: string;\n yearTitle?: string;\n\n dayLabel?: string;\n monthLabel?: string;\n yearLabel?: string;\n}\n\nexport interface DatepickerRenderOptions {\n displayMonths: number;\n}\n/** *************** */\nexport enum BsNavigationDirection {\n UP,\n DOWN\n}\n\n// used for navigation events, to change view date in state\nexport interface BsNavigationEvent {\n direction?: BsNavigationDirection;\n step?: TimeUnit;\n}\n\nexport interface BsViewNavigationEvent {\n unit?: TimeUnit;\n viewMode: BsDatepickerViewMode;\n}\n\nexport interface CellHoverEvent {\n cell: CalendarCellViewModel;\n isHovered: boolean;\n}\n","import {ChangeDetectionStrategy, Component, Input} from '@angular/core';\nimport {DayViewModel} from '../../models';\n\n@Component({\n selector: '[bsDatepickerDayDecorator]',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class.disabled]': 'day.isDisabled',\n '[class.is-highlighted]': 'day.isHovered',\n '[class.is-other-month]': 'day.isOtherMonth',\n '[class.in-range]': 'day.isInRange',\n '[class.select-start]': 'day.isSelectionStart',\n '[class.select-end]': 'day.isSelectionEnd',\n '[class.selected]': 'day.isSelected',\n '[class.today]': 'day.isToday',\n },\n template: `{{ day && day.label || '' }}`\n})\nexport class BsDatepickerDayDecoratorComponent {\n @Input() day: DayViewModel = {date: new Date(), label: ''};\n}\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, OnInit, Output, ChangeDetectorRef } from '@angular/core';\nimport { BsDatepickerViewMode, BsNavigationDirection, NavigationViewModel } from '../../models';\nimport { HeaderTypeService } from \"../../services/header-type.service\";\nimport { Subscription } from \"rxjs\";\n\n@Component({\n selector: 'bs-datepicker-navigation-view',\n templateUrl: './bs-datepicker-navigation-view.component.html',\n styleUrls: ['./bs-datepicker-navigation-view.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class BsDatepickerNavigationViewComponent implements OnInit {\n @Input() calendarIndex!: number;\n @Input() isDisabled: boolean = false;\n @Input() calendar!: NavigationViewModel;\n @Input() type!: 'days' | 'months' | 'years';\n @Input() showNavigationArrows: boolean = false;\n\n @Output() onNavigate = new EventEmitter<BsNavigationDirection>();\n @Output() onViewMode = new EventEmitter<BsDatepickerViewMode>();\n\n public isMobile: boolean = false;\n private isMobileSubscription!: Subscription;\n private headerTypeSubscription!: Subscription;\n public headerType: 'self' | 'integrate' = 'self';\n\n constructor(public headerTypeService: HeaderTypeService, private cdr: ChangeDetectorRef) {}\n\n ngOnInit(): void {\n this.headerTypeSubscription = this.headerTypeService.getHeaderType$()\n .subscribe(type => {\n this.headerType = type;\n });\n\n this.isMobileSubscription = this.headerTypeService.getIsMobile$()\n .subscribe(is => {\n this.isMobile = is;\n this.cdr.detectChanges();\n });\n }\n\n ngOnDestroy(): void {\n if (this.headerTypeSubscription) {\n this.headerTypeSubscription.unsubscribe();\n }\n if (this.isMobileSubscription) {\n this.isMobileSubscription.unsubscribe();\n }\n }\n\n navTo(down: boolean, disabled: boolean): void {\n if (disabled) return;\n\n this.onNavigate.emit(down ? BsNavigationDirection.DOWN : BsNavigationDirection.UP);\n }\n\n view(viewMode: BsDatepickerViewMode): void {\n if (this.isDisabled) return;\n this.onViewMode.emit(viewMode);\n this.headerTypeService.setCalendarType(viewMode);\n }\n}\n","<ng-container *ngIf=\"calendar\">\n <ng-container *ngIf=\"type == 'days'\">\n <div class=\"previous gravity-icon-button\" *ngIf=\"!isMobile\"\n (click)=\"navTo(true, calendar.disableLeftArrow || (!showNavigationArrows && calendarIndex == 1))\"\n [class.disabled]=\"calendar.disableLeftArrow || (!showNavigationArrows && calendarIndex == 1)\">\n <gravity-icon [iconName]=\"'arrow-left'\" [iconSize]=\"'sm-12'\"\n *ngIf=\"showNavigationArrows || (!showNavigationArrows && calendarIndex == 0)\"></gravity-icon>\n </div>\n\n <div class=\"current hr-title month sm-bold\" [class.disabled]=\"isDisabled\" (click)=\"view('month')\"\n *ngIf=\"calendar?.monthTitle\">\n {{ calendar.monthTitle }}\n <gravity-icon [iconName]=\"'arrow-down'\" [iconSize]=\"'sm-12'\"></gravity-icon>\n </div>\n\n <div class=\"current hr-title sm-bold year\" [class.disabled]=\"isDisabled\" (click)=\"view('year')\"\n *ngIf=\"calendar?.monthTitle\">\n {{ calendar.yearTitle }}\n <gravity-icon [iconName]=\"'arrow-down'\" [iconSize]=\"'sm-12'\"></gravity-icon>\n </div>\n\n <div class=\"next gravity-icon-button\" *ngIf=\"!isMobile\"\n (click)=\"navTo(false, calendar.disableRightArrow || (!showNavigationArrows && calendarIndex == 0))\"\n [class.disabled]=\"calendar.disableRightArrow || (!showNavigationArrows && calendarIndex == 0)\">\n <gravity-icon [iconName]=\"'arrow-right'\" [iconSize]=\"'sm-12'\"\n *ngIf=\"showNavigationArrows || (!showNavigationArrows && calendarIndex == 1)\"></gravity-icon>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"type == 'months' && (headerType == 'self' || isMobile)\">\n <div class=\"previous gravity-icon-button\" [class.disabled]=\"calendar.disableLeftArrow\"\n (click)=\"navTo(true, calendar.disableLeftArrow)\">\n <gravity-icon [iconName]=\"'arrow-left'\" [iconSize]=\"'sm-12'\"></gravity-icon>\n </div>\n\n <div class=\"current no-action hr-title sm-bold year\" [class.disabled]=\"isDisabled\"\n *ngIf=\"calendar?.yearTitle\"> {{ calendar.yearTitle }}\n </div>\n\n <div class=\"next gravity-icon-button\" [class.disabled]=\"calendar.disableRightArrow\"\n (click)=\"navTo(false, calendar.disableRightArrow)\">\n <gravity-icon [iconName]=\"'arrow-right'\" [iconSize]=\"'sm-12'\"></gravity-icon>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"type == 'months' && headerType == 'integrate' && isMobile === false\">\n <div class=\"current hr-title sm-bold year\" [class.disabled]=\"isDisabled\" (click)=\"view('year')\"\n *ngIf=\"calendar?.yearTitle\">\n {{ calendar.yearTitle }}\n <gravity-icon [iconName]=\"'arrow-down'\" [iconSize]=\"'sm-12'\"></gravity-icon>\n </div>\n\n <div class=\"arrows\">\n <div class=\"previous gravity-icon-button\" [class.disabled]=\"calendar.disableLeftArrow\"\n (click)=\"navTo(true, calendar.disableLeftArrow)\">\n <gravity-icon [iconName]=\"'arrow-left'\" [iconSize]=\"'sm-12'\"></gravity-icon>\n </div>\n\n <div class=\"next gravity-icon-button\" [class.disabled]=\"calendar.disableRightArrow\"\n (click)=\"navTo(false, calendar.disableRightArrow)\">\n <gravity-icon [iconName]=\"'arrow-right'\" [iconSize]=\"'sm-12'\"></gravity-icon>\n </div>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"type == 'years' && (headerType == 'self' || isMobile)\">\n <div class=\"previous gravity-icon-button\" [class.disabled]=\"calendar.disableLeftArrow\"\n (click)=\"navTo(true, calendar.disableLeftArrow)\">\n <gravity-icon [iconName]=\"'arrow-left'\" [iconSize]=\"'sm-12'\"></gravity-icon>\n </div>\n\n <div class=\"current no-action hr-title sm-bold year\" [class.disabled]=\"isDisabled\"\n *ngIf=\"calendar?.yearTitle\"> {{ calendar.yearTitle }}\n </div>\n\n <div class=\"next gravity-icon-button\" [class.disabled]=\"calendar.disableRightArrow\"\n (click)=\"navTo(false, calendar.disableRightArrow)\">\n <gravity-icon [iconName]=\"'arrow-right'\" [iconSize]=\"'sm-12'\"></gravity-icon>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"type == 'years' && headerType == 'integrate' && isMobile === false\">\n <div class=\"current no-action hr-title sm-bold year\" [class.disabled]=\"isDisabled\"\n *ngIf=\"calendar?.yearTitle\">\n {{ calendar.yearTitle }}\n\n </div>\n\n <div class=\"arrows\">\n <div class=\"previous gravity-icon-button\" [class.disabled]=\"calendar.disableLeftArrow\"\n (click)=\"navTo(true, calendar.disableLeftArrow)\">\n <gravity-icon [iconName]=\"'arrow-left'\" [iconSize]=\"'sm-12'\"></gravity-icon>\n </div>\n\n <div class=\"next gravity-icon-button\" [class.disabled]=\"calendar.disableRightArrow\"\n (click)=\"navTo(false, calendar.disableRightArrow)\">\n <gravity-icon [iconName]=\"'arrow-right'\" [iconSize]=\"'sm-12'\"></gravity-icon>\n </div>\n </div>\n </ng-container>\n</ng-container>\n\n","import {Component, EventEmitter, Input, Output} from '@angular/core';\n\nimport {\n BsDatepickerViewMode,\n BsNavigationDirection,\n BsNavigationEvent,\n CellHoverEvent,\n DatepickerRenderOptions,\n DaysCalendarViewModel,\n DayViewModel\n} from '../../models';\nimport {HeaderTypeService} from \"../../services/header-type.service\";\n\n@Component({\n selector: 'bs-days-calendar-view',\n templateUrl: './bs-days-calendar-view.component.html',\n styleUrls: ['./bs-days-calendar-view.component.scss']\n})\nexport class BsDaysCalendarViewComponent {\n @Input() calendar!: DaysCalendarViewModel;\n @Input() calendarIndex!: number;\n @Input() isDisabled?: boolean;\n @Input() options?: DatepickerRenderOptions | null;\n @Input() showNavigationArrows!: boolean;\n @Input() size!: 'sm' | 'md' | '';\n\n @Output() onNavigate = new EventEmitter<BsNavigationEvent>();\n @Output() onViewMode = new EventEmitter<BsDatepickerViewMode>();\n\n @Output() onSelect = new EventEmitter<DayViewModel>();\n @Output() onHover = new EventEmitter<CellHoverEvent>();\n\n isiOS: boolean;\n\n\n constructor(public headerTypeService: HeaderTypeService) {\n this.isiOS = (/iPad|iPhone|iPod/.test(navigator.platform) || (navigator.platform === 'MacIntel' && navigator.maxTouchPoints > 1));\n }\n\n navigateTo(event: BsNavigationDirection): void {\n this.onNavigate.emit({step: {month: BsNavigationDirection.DOWN === event ? -1 : 1}});\n }\n\n changeViewMode(event: BsDatepickerViewMode): void {\n this.headerTypeService.setHeaderType('integrate');\n this.onViewMode.emit(event);\n }\n\n selectDay(event: DayViewModel): void {\n this.onSelect.emit(event);\n }\n\n hoverDay(cell: DayViewModel, isHovered: boolean): void {\n this.onHover.emit({cell, isHovered});\n }\n}\n","<!--navigation-->\n<div class=\"gt-calendar-view-head\" [class.mobile]=\"headerTypeService.getIsMobile()\">\n <bs-datepicker-navigation-view [calendar]=\"calendar\" [calendarIndex]=\"calendarIndex\"\n [showNavigationArrows]=\"showNavigationArrows\" [isDisabled]=\"!!isDisabled\"\n (onNavigate)=\"navigateTo($event)\" (onViewMode)=\"changeViewMode($event)\" [type]=\"'days'\">\n </bs-datepicker-navigation-view>\n</div>\n\n<div class=\"gt-calendar-view-body\">\n <div class=\"calendar-body\">\n <div class=\"weekdays\">\n <article aria-label=\"weekday\" class=\"hr-body {{size}}-regular\" *ngFor=\"let weekday of calendar.weekdays\">\n {{ weekday }}\n </article>\n </div>\n <hr>\n <div class=\"week\" *ngFor=\"let week of calendar.weeks\">\n <ng-container *ngFor=\"let day of week.days\">\n <article bsDatepickerDayDecorator class=\"hr-body {{size}}-regular\" (click)=\"selectDay(day)\" [day]=\"day\"\n *ngIf=\"!isiOS\" (mouseenter)=\"hoverDay(day, true)\"\n (mouseleave)=\"hoverDay(day, false)\"></article>\n\n <article bsDatepickerDayDecorator class=\"hr-body {{size}}-regular\" (click)=\"selectDay(day)\" [day]=\"day\"\n *ngIf=\"isiOS\"></article>\n </ng-container>\n </div>\n </div>\n</div>\n\n<div class=\"\"></div>\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'dateFormating'\n})\nexport class DateAbbreviationPipe implements PipeTransform {\n\n // Define month abbreviations for different languages\n monthAbbreviations: { [key: string]: { [key: string]: string } } = {\n 'en': {\n 'January': 'Jan', 'February': 'Feb', 'March': 'Mar', 'April': 'Apr', 'May': 'May', 'June': 'Jun',\n 'July': 'Jul', 'August': 'Aug', 'September': 'Sep', 'October': 'Oct', 'November': 'Nov', 'December': 'Dec'\n },\n 'es': {\n 'January': 'Ene', 'February': 'Feb', 'March': 'Mar', 'April': 'Abr', 'May': 'May', 'June': 'Jun',\n 'July': 'Jul', 'August': 'Ago', 'September': 'Sep', 'October': 'Oct', 'November': 'Nov', 'December': 'Dic'\n }\n };\n\n transform(date: string, lang: string = 'en', monthAbbreviation: boolean = true): string {\n\n if (!date) return '';\n\n // Check if it's a range of dates\n if (date.includes(' - ')) {\n const [startDate, endDate] = date.split(' - ');\n return `${this.formatDate(startDate, lang, monthAbbreviation)} - ${this.formatDate(endDate, lang, monthAbbreviation)}`;\n }\n\n // If it's a single date\n return this.formatDate(date, lang, monthAbbreviation);\n }\n\n private formatDate(date: string, lang: string, monthAbbreviation: boolean): string {\n let parsedDate: Date;\n\n // Only year\n if (date.length === 4 && !isNaN(Number(date))) {\n return `${date}`;\n }\n\n // Only month\n if (this.monthAbbreviations[lang] && this.monthAbbreviations[lang][date]) {\n return monthAbbreviation ? this.monthAbbreviations[lang][date] : date;\n }\n\n // Convert the date string into a Date object\n parsedDate = new Date(date);\n\n // If the date is not valid\n if (isNaN(parsedDate.getTime())) {\n const parts = date.split('/');\n if (parts.length === 2) {\n const month = parseInt(parts[0], 10) - 1;\n const year = parseInt(parts[1], 10);\n parsedDate = new Date(year, month, 1);\n }\n }\n\n // If the date is still invalid, return an empty string\n if (isNaN(parsedDate.getTime())) {\n return '';\n }\n\n // Get the full month name from the Date object\n const monthName = parsedDate.toLocaleString('en', { month: 'long' });\n const abbreviatedMonth = monthAbbreviation ? this.monthAbbreviations[lang]?.[monthName] : monthName;\n const day = parsedDate.getDate();\n const year = parsedDate.getFullYear();\n\n // Month and year\n if (date.indexOf('/') !== -1 && date.split('/').length === 2) {\n return monthAbbreviation ? `${abbreviatedMonth}, ${year}` : `${abbreviatedMonth} ${year}`;\n }\n\n // Day, month, and year\n return `${abbreviatedMonth} ${day}, ${year}`;\n }\n}\n","import {Component, EventEmitter, Input, Output} from '@angular/core';\nimport {BsDatepickerViewMode, BsNavigationDirection, BsNavigationEvent, CalendarCellViewModel, CellHoverEvent, MonthsCalendarViewModel} from '../../models';\nimport {HeaderTypeService} from \"../../services/header-type.service\";\n\n@Component({\n selector: 'bs-month-calendar-view',\n templateUrl: './bs-months-calendar-view.component.html',\n styleUrls: ['./bs-months-calendar-view.component.scss']\n})\nexport class BsMonthCalendarViewComponent {\n @Input() calendarIndex!: number;\n @Input() size!: 'sm' | 'md' | '';\n @Input() calendarLang: string = 'en'\n @Input() showNavigationArrows!: boolean;\n @Input() calendar!: MonthsCalendarViewModel;\n\n @Output() onHover = new EventEmitter<CellHoverEvent>();\n @Output() onNavigate = new EventEmitter<BsNavigationEvent>();\n @Output() onSelect = new EventEmitter<CalendarCellViewModel>();\n @Output() onViewMode = new EventEmitter<BsDatepickerViewMode>();\n\n constructor(private headerTypeService: HeaderTypeService) {}\n\n navigateTo(event: BsNavigationDirection): void {\n const step = BsNavigationDirection.DOWN === event ? -1 : 1;\n this.onNavigate.emit({step: {year: step}});\n }\n\n viewMonth(month: CalendarCellViewModel) {\n this.onSelect.emit(month);\n this.headerTypeService.setCalendarType('days');\n }\n\n hoverMonth(cell: CalendarCellViewModel, isHovered: boolean) {\n this.onHover.emit({cell, isHovered});\n }\n\n changeViewMode(event: BsDatepickerViewMode): void {\n this.headerTypeService.setHeaderType('integrate');\n this.onViewMode.emit(event as BsDatepickerViewMode);\n }\n}\n","<!--navigation-->\n<div class=\"gt-calendar-view-head\">\n <bs-datepicker-navigation-view [calendar]=\"calendar\" [calendarIndex]=\"calendarIndex\"\n [showNavigationArrows]=\"showNavigationArrows\" (onNavigate)=\"navigateTo($event)\"\n (onViewMode)=\"changeViewMode($event)\" [type]=\"'months'\">\n </bs-datepicker-navigation-view>\n</div>\n\n<div class=\"gt-calendar-view-body\"> <hr>\n <div class=\"calendar-body\">\n <ng-container *ngFor=\"let row of calendar?.months\">\n <div class=\"months\" *ngFor=\"let month of row\">\n <article class=\"hr-body sm-regular\"\n [class.disabled]=\"month.isDisabled\"\n [class.is-highlighted]=\"month.isHovered\"\n [class.selected]=\"month.isSelected\"\n [class.today]=\"month.isToday\"\n\n (click)=\"viewMonth(month)\"\n (mouseenter)=\"hoverMonth(month, true)\" (mouseleave)=\"hoverMonth(month, false)\">\n {{ month.label | dateFormating: calendarLang : true }}\n </article>\n </div>\n </ng-container>\n </div>\n</div>\n","import {Component, EventEmitter, Input, Output} from '@angular/core';\nimport {yearsPerCalendar} from '../../engine/format-years-calendar';\nimport {\n BsDatepickerViewMode,\n BsNavigationDirection,\n BsNavigationEvent,\n CalendarCellViewModel,\n CellHoverEvent,\n YearsCalendarViewModel\n} from '../../models';\nimport {HeaderTypeService} from \"../../services/header-type.service\";\n\n@Component({\n selector: 'bs-years-calendar-view',\n templateUrl: './bs-years-calendar-view.component.html',\n styleUrls: ['./bs-years-calendar-view.component.scss']\n})\nexport class BsYearsCalendarViewComponent {\n @Input() calendar!: YearsCalendarViewModel;\n @Input() calendarIndex!: number;\n @Input() showNavigationArrows!: boolean;\n @Input() size!: 'sm' | 'md' | '';\n\n @Output() onNavigate = new EventEmitter<BsNavigationEvent>();\n @Output() onViewMode = new EventEmitter<BsDatepickerViewMode>();\n\n @Output() onSelect = new EventEmitter<CalendarCellViewModel>();\n @Output() onHover = new EventEmitter<CellHoverEvent>();\n\n constructor (private headerTypeService: HeaderTypeService){}\n\n navigateTo(event: BsNavigationDirection): void {\n const step = BsNavigationDirection.DOWN === event ? -1 : 1;\n this.onNavigate.emit({step: {year: step * yearsPerCalendar}});\n }\n\n viewYear(year: CalendarCellViewModel) {\n this.onSelect.emit(year);\n this.headerTypeService.setCalendarType('months');\n if(this.headerTypeService.getCalendarType() === 'days') {\n this.headerTypeService.setHeaderType('self');\n }\n }\n\n hoverYear(cell: CalendarCellViewModel, isHovered: boolean) {\n this.onHover.emit({cell, isHovered});\n }\n\n changeViewMode(event: BsDatepickerViewMode): void {\n this.onViewMode.emit(event);\n this.headerTypeService.setHeaderType('integrate');\n }\n}\n","<!--navigation-->\n<div class=\"gt-calendar-view-head\">\n <bs-datepicker-navigation-view [calendar]=\"calendar\" [calendarIndex]=\"calendarIndex\"\n [showNavigationArrows]=\"showNavigationArrows\" (onNavigate)=\"navigateTo($event)\"\n (onViewMode)=\"changeViewMode($event)\" [type]=\"'years'\">\n </bs-datepicker-navigation-view>\n</div>\n\n<div class=\"gt-calendar-view-body\">\n <hr>\n <div class=\"calendar-body\">\n <div class=\"years\" *ngFor=\"let row of calendar?.years\">\n <article class=\"hr-body sm-regular\"\n [class.disabled]=\"year.isDisabled\"\n [class.is-highlighted]=\"year.isHovered\"\n [class.selected]=\"year.isSelected\"\n [class.today]=\"year.isToday\"\n\n (click)=\"viewYear(year)\" *ngFor=\"let year of row\"\n (mouseenter)=\"hoverYear(year, true)\" (mouseleave)=\"hoverYear(year, false)\">\n {{ year.label }}\n </article>\n </div>\n </div>\n</div>\n","import {Component, ElementRef, EventEmitter, OnDestroy, OnInit, Renderer2} from '@angular/core';\n\nimport {take} from 'rxjs/operators';\n\nimport {getFullYear, getMonth} from 'ngx-bootstrap/chronos';\nimport {PositioningService} from 'ngx-bootstrap/positioning';\n\nimport {datepickerAnimation} from '../datepicker-animations';\nimport {BsDatepickerAbstractComponent} from '../base/bs-datepicker-container';\nimport {BsDatepickerConfig} from '../bs-datepicker.config';\nimport {CalendarCellViewModel, DayViewModel} from '../models';\nimport {BsDatepickerActions} from '../reducer/bs-datepicker.actions';\nimport {BsDatepickerEffects} from '../reducer/bs-datepicker.effects';\nimport {BsDatepickerStore} from '../reducer/bs-datepicker.store';\nimport {BsDatepickerCallbacks} from \"../bs-datepicker.callbacks\";\nimport {HeaderTypeService} from \"../services/header-type.service\";\n\n@Component({\n selector: 'gt-datepicker-container',\n templateUrl: './bs-datepicker-view.html',\n styleUrls: ['./bs-datepicker-view.scss'],\n providers: [BsDatepickerStore, BsDatepickerEffects],\n host: {\n 'aria-label': 'calendar',\n class: 'bottom',\n '(click)': '$event.stopPropagation()',\n role: 'dialog'\n },\n animations: [datepickerAnimation]\n})\nexport class BsDatepickerContainerComponent extends BsDatepickerAbstractComponent implements OnInit, OnDestroy {\n override isRangePicker: boolean = false;\n public onApplyChange: EventEmitter<void> = new EventEmitter<void>();\n public valueChange: EventEmitter<Date> = new EventEmitter<Date>();\n\n set value(value: Date | undefined) {\n this._effects?.setValue(value);\n }\n\n constructor(public headerTypeService: HeaderTypeService, _renderer: Renderer2, public _config: BsDatepickerConfig, public _callbacks: BsDatepickerCallbacks,\n private _store: BsDatepickerStore, private _element: ElementRef, private _actions: BsDatepickerActions, _effects: BsDatepickerEffects, private _positionService: PositioningService) {\n super(_config);\n this._effects = _effects;\n\n _renderer.setStyle(_element.nativeElement, 'display', 'block');\n _renderer.setStyle(_element.nativeElement, 'position', 'absolute');\n }\n\n ngOnInit(): void {\n this._positionService.setOptions({\n modifiers: {\n flip: {enabled: this._config.adaptivePosition},\n preventOverflow: {enabled: this._config.adaptivePosition}\n },\n allowedPositions: ['top', 'bottom']\n });\n\n this._positionService.event$?.pipe(take(1)).subscribe(() => {\n this._positionService.disable();\n if (this._config.isAnimated) {\n this.animationState = this.isTopPosition ? 'animated-up' : 'animated-down';\n } else {\n this.animationState = 'unanimated';\n }\n });\n\n this.isOtherMonthsActive = this._config.selectFromOtherMonth;\n this._effects?.init(this._store)\n // intial state options\n .setOptions(this._config)\n // data binding view --> model\n .setBindings(this)\n // set event handlers\n .setEventHandlers(this)\n .registerDatepickerSideEffects();\n\n // on selected date change\n this._subs.push(\n this._store.select((state) => state.selectedDate).subscribe((date) => {\n this.valueChange.emit(date);\n })\n );\n\n this._store.dispatch(this._actions.changeViewMode(this._config.startView));\n }\n\n get isTopPosition(): boolean {\n return this._element.nativeElement.classList.contains('top');\n }\n\n public positionServiceEnable(): void {\n this._positionService.enable();\n }\n\n override daySelectHandler(day: DayViewModel): void {\n if (!day) return;\n\n const isDisabled: boolean = this.isOtherMonthsActive ? day.isDisabled : day.isOtherMonth || day.isDisabled;\n if (isDisabled) return;\n\n this._store.dispatch(this._actions.select(day.date));\n }\n\n override monthSelectHandler(day: CalendarCellViewModel): void {\n if (!day || day.isDisabled) return;\n\n this._store.dispatch(\n this._actions.navigateTo({\n unit: {month: getMonth(day.date), year: getFullYear(day.date)},\n viewMode: 'day'\n })\n );\n }\n\n override yearSelectHandler(day: CalendarCellViewModel): void {\n if (!day || day.isDisabled) return;\n\n this._store.dispatch(\n this._actions.navigateTo({\n unit: {year: getFullYear(day.date)},\n viewMode: 'month'\n })\n );\n }\n\n ngOnDestroy(): void {\n for (const sub of this._subs) {\n sub.unsubscribe();\n }\n\n this._effects?.destroy();\n }\n\n override clearDate(): void {\n if (!this.isEmpty) {\n this._store.dispatch(this._actions.select(undefined));\n }\n }\n\n override apply(): void {\n if (!this.isEmpty) {\n if (this.onApplyChange) {\n this.onApplyChange.emit();\n }\n\n if (this._callbacks?.hide) {\n this._callbacks.hide();\n }\n }\n }\n}\n","<div class=\"gt-calendar {{calendarSize}} {{calendarSpacing}} {{viewMode | async}}\" [class.is-mobile]=\"_config.isMobile\" *ngIf=\"viewMode | async\"\n [@datepickerAnimation]=\"animationState\" (@datepickerAnimation.done)=\"positionServiceEnable()\">\n\n <ng-container *ngIf=\"(isRangePicker || _config.isMobile) && headerTypeService.getCalendarType() === 'days'\">\n <div class=\"gt-calendar-topbar-indicator\">\n <ng-container *ngIf=\"isRangePicker\">\n <p class=\"hr-title\" [class.sm-regular]=\"chosenRange?.length > 0\"\n [class.sm-bold]=\"chosenRange?.length == 0\">\n <ng-container *ngIf=\"chosenRange?.length == 0\">Start date</ng-container>\n <ng-container *ngIf=\"chosenRange?.length > 0\">{{ chosenRange[0] | date : 'MMM d, y' }}</ng-container>\n </p>\n <gravity-icon [iconName]=\"'swaps-arrow-right'\" [iconSize]=\"'sm-12'\"></gravity-icon>\n <p class=\"hr-title\" [class.sm-regular]=\"chosenRange?.length > 1 || chosenRange?.length == 0\"\n [class.sm-bold]=\"chosenRange?.length == 1\">\n <ng-container *ngIf=\"chosenRange?.length < 2\">End date</ng-container>\n <ng-container *ngIf=\"chosenRange?.length > 1\">{{ chosenRange[1] | date : 'MMM d, y' }}</ng-container>\n </p>\n </ng-container>\n <ng-container *ngIf=\"!isRangePicker\">\n <p class=\"hr-title sm-bold\">\n <ng-container *ngIf=\"!_config.value\">Select date</ng-container>\n <ng-container *ngIf=\"_config.value\">{{ _config.value.toString() | date : 'MMM d, y' }}</ng-container>\n </p>\n </ng-container>\n </div>\n\n <hr class=\"gt-calendar-topbar-line\">\n </ng-container>\n\n <div class=\"gt-calendars\" [ngSwitch]=\"viewMode | async\" role=\"application\">\n\n <!--days calendar-->\n <ng-container *ngSwitchCase=\"'day'\">\n <bs-days-calendar-view [calendar]=\"calendar\"\n [calendarIndex]=\"i\"\n [isDisabled]=\"isDisabled\"\n [options]=\"options$ | async\"\n [showNavigationArrows]=\"showNavigationArrows\"\n [size]=\"_config.isMobile ? 'md' : calendarSize\"\n\n *ngFor=\"let calendar of daysCalendar$ | async; let i = index\"\n\n (onHover)=\"dayHoverHandler($event)\"\n (onNavigate)=\"navigateTo($event)\"\n (onSelect)=\"daySelectHandler($event)\"\n (onViewMode)=\"setViewMode($event)\"></bs-days-calendar-view>\n </ng-container>\n\n <!--months calendar-->\n <ng-container *ngSwitchCase=\"'month'\">\n <ng-container *ngIf=\"_config.isMobile; else nonMobile\">\n <ng-container *ngFor=\"let calendar of monthsCalendar | async; let i = index\">\n <bs-month-calendar-view *ngIf=\"i === 0\"\n [calendar]=\"calendar\"\n [calendarIndex]=\"i\"\n [showNavigationArrows]=\"showNavigationArrows\"\n [size]=\"_config.isMobile ? 'md' : calendarSize\"\n [calendarLang]=\"_config.calendarLang\"\n (onHover)=\"monthHoverHandler($event)\"\n (onNavigate)=\"navigateTo($event)\"\n (onSelect)=\"monthSelectHandler($event)\"\n (onViewMode)=\"setViewMode($event)\">\n </bs-month-calendar-view>\n </ng-container>\n </ng-container>\n <ng-template #nonMobile>\n <ng-container *ngFor=\"let calendar of monthsCalendar | async; let i = index\">\n <bs-month-calendar-view [calendar]=\"calendar\"\n [calendarIndex]=\"i\"\n [showNavigationArrows]=\"showNavigationArrows\"\n [size]=\"_config.isMobile ? 'md' : calendarSize\"\n [calendarLang]=\"_config.calendarLang\"\n (onHover)=\"monthHoverHandler($event)\"\n (onNavigate)=\"navigateTo($event)\"\n (onSelect)=\"monthSelectHandler($event)\"\n (onViewMode)=\"setViewMode($event)\">\n </bs-month-calendar-view>\n </ng-container>\n </ng-template>\n </ng-container>\n\n <!--years calendar-->\n <ng-container *ngSwitchCase=\"'year'\">\n <ng-container *ngIf=\"_config.isMobile; else nonMobile\">\n <ng-container *ngFor=\"let calendar of yearsCalendar | async; let i = index\">\n <bs-years-calendar-view *ngIf=\"i === 0\"\n [calendar]=\"calendar\"\n [calendarIndex]=\"i\"\n [showNavigationArrows]=\"showNavigationArrows\"\n [size]=\"_config.isMobile ? 'md' : calendarSize\"\n (onHover)=\"yearHoverHandler($event)\"\n (onNavigate)=\"navigateTo($event)\"\n (onSelect)=\"yearSelectHandler($event)\"\n (onViewMode)=\"setViewMode($event)\">\n </bs-years-calendar-view>\n </ng-container>\n </ng-container>\n <ng-template #nonMobile>\n <ng-container *ngFor=\"let calendar of yearsCalendar | async; let i = index\">\n <bs-years-calendar-view [calendar]=\"calendar\"\n [calendarIndex]=\"i\"\n [showNavigationArrows]=\"showNavigationArrows\"\n [size]=\"_config.isMobile ? 'md' : calendarSize\"\n (onHover)=\"yearHoverHandler($event)\"\n (onNavigate)=\"navigateTo($event)\"\n (onSelect)=\"yearSelectHandler($event)\"\n (onViewMode)=\"setViewMode($event)\">\n </bs-years-calendar-view>\n </ng-container>\n </ng-template>\n </ng-container>\n </div>\n\n <div class=\"gt-calendar-footer\" *ngIf=\"(viewMode | async) == 'day'\"\n [class.bs-datepicker-multiple]=\"isRangePicker && _config.displayMonths > 1\" [class.not-clearable]=\"!_config.clearable\">\n <gravity-link [linkText]=\"_config.calendarLang == 'es' ? 'Limpiar' : 'Clear selection'\" [link]=\"''\"\n [state]=\"isEmpty ? 'disabled' : 'active'\" (click)=\"clearDate()\"></gravity-link>\n <p class=\"apply hr-label pointer sm-bold\" [class.empty]=\"isEmpty\" (click)=\"apply()\">Apply</p>\n </div>\n</div>\n\n","import {\n AfterViewInit,\n ComponentRef,\n Directive,\n ElementRef,\n EventEmitter,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n Renderer2,\n SimpleChanges,\n ViewContainerRef\n} from '@angular/core';\nimport {ComponentLoader, ComponentLoaderFactory} from 'ngx-bootstrap/component-loader';\nimport {BehaviorSubject, Subject, Subscription} from 'rxjs';\nimport {filter, takeUntil} from 'rxjs/operators';\nimport {BsDatepickerConfig} from './bs-datepicker.config';\nimport {BsDatepickerViewMode} from './models';\nimport {BsDatepickerContainerComponent} from './components/bs-datepicker-container.component';\nimport {checkBsValue} from './utils/bs-calendar-utils';\nimport {BsDatepickerCallbacks} from \"./bs-datepicker.callbacks\";\nimport {HeaderTypeService} from \"./services/header-type.service\";\n\nexport let previousDate: Date | Date[] | undefined;\n\n@Directive({\n selector: '[gravityDatePicker]',\n exportAs: 'gravityDatePicker'\n})\nexport class BsDatepickerDirective implements OnInit, OnDestroy, OnChanges, AfterViewInit {\n /** Config object for datepicker */\n @Input() bsConfig?: Partial<BsDatepickerConfig>;\n\n /** A selector specifying the element the datepicker should be appended to. */\n @Input() container: string = 'body';\n\n /** Indicates whether datepicker's content is enabled or not */\n @Input() isDisabled: boolean = false;\n @Input() isMobile: boolean = false;\n\n /** Maximum date which is available for selection */\n @Input() maxDate?: Date;\n\n /** Minimum date which is available for selection */\n @Input() minDate?: Date;\n\n /** Minimum view mode : day, month, or year */\n @Input() minMode?: BsDatepickerViewMode;\n\n /** Emits when datepicker value has been changed */\n @Output() bsValueChange: EventEmitter<Date> = new EventEmitter<Date>();\n @Output() onApplyEmit: EventEmitter<void> = new EventEmitter<void>();\n\n /** Emits an event when the datepicker is hidden */\n @Output() onHidden: EventEmitter<unknown>;\n\n /** Emits an event when the datepicker is shown */\n @Output() onShown: EventEmitter<unknown>;\n\n private isOpen$: BehaviorSubject<boolean>;\n\n /** Returns whether or not the datepicker is currently being shown */\n @Input() get isOpen(): boolean {\n return this._datepicker.isShown;\n }\n\n set isOpen(value: boolean) {\n this.isOpen$.next(value);\n }\n\n public _bsValue?: Date;\n\n /** Initial value of datepicker */\n @Input() set bsValue(value: Date | undefined) {\n if (this._bsValue && value && this._bsValue.getTime() === value.getTime()) return;\n\n this.initPreviousValue();\n this._bsValue = value;\n this.bsValueChange.emit(value);\n }\n\n protected _subs: Subscription[] = [];\n private _datepicker: ComponentLoader<BsDatepickerContainerComponent>;\n private _datepickerRef?: ComponentRef<BsDatepickerContainerComponent>;\n private isDestroy$: Subject<unknown> = new Subject();\n private readonly _dateInputFormat$ = new Subject<string | undefined>();\n\n constructor(private headerTypeService: HeaderTypeService, public _config: BsDatepickerConfig, private _elementRef: ElementRef, private _renderer: Renderer2, _viewContainerRef: ViewContainerRef, cis: ComponentLoaderFactory) {\n Object.assign(this, this._config);\n\n this._datepicker = cis.createLoader<BsDatepickerContainerComponent>(_elementRef, _viewContainerRef, _renderer);\n\n this.isOpen$ = new BehaviorSubject(this.isOpen);\n this.onHidden = this._datepicker.onHidden;\n this.onShown = this._datepicker.onShown;\n }\n\n ngOnInit(): void {\n this._datepicker.listen({\n outsideClick: true,\n outsideEsc: true,\n triggers: 'click',\n show: () => this.show()\n });\n\n this.initPreviousValue();\n this.setConfig();\n }\n\n private initPreviousValue(): void {\n previousDate = this._bsValue;\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes[\"bsConfig\"]) {\n this.setConfig();\n this._dateInputFormat$.next('L');\n }\n\n if (!this._datepickerRef || !this._datepickerRef.instance) return;\n\n if (changes[\"minDate\"]) {\n this._datepickerRef.instance.minDate = this.minDate;\n }\n\n if (changes[\"maxDate\"]) {\n this._datepickerRef.instance.maxDate = this.maxDate;\n }\n\n if (changes[\"isDisabled\"]) {\n this._datepickerRef.instance.isDisabled = this.isDisabled;\n }\n }\n\n ngAfterViewInit(): void {\n this.isOpen$.pipe(filter(isOpen => isOpen !== this.isOpen), takeUntil(this.isDestroy$)).subscribe(() => this.toggle());\n }\n\n private initSubscribes(): void {\n // if date changes from external source (model -> view)\n this._subs.push(\n this.bsValueChange.subscribe((value: Date) => {\n if (this._datepickerRef) {\n this._datepickerRef.instance.value = value;\n }\n })\n );\n\n // if date changes from picker (view -> model)\n if (this._datepickerRef) {\n this._subs.push(\n this._datepickerRef.instance.valueChange.subscribe((value: Date) => {\n this.initPreviousValue();\n this.bsValue = value;\n\n if (this.keepDatepickerModalOpened()) return;\n\n this.hide();\n })\n );\n\n this._subs.push(\n this._datepickerRef.instance.onApplyChange.subscribe(() => {\n this.onApplyEmit.emit();\n })\n );\n }\n }\n\n private keepDatepickerModalOpened(): boolean {\n if (!previousDate || !this.bsConfig?.keepDatepickerOpened) return false;\n return this.isDateSame();\n }\n\n private isDateSame(): boolean {\n return (previousDate instanceof Date\n && (this._bsValue?.getDate() === previousDate?.getDate())\n && (this._bsValue?.getMonth() === previousDate?.getMonth())\n && (this._bsValue?.getFullYear() === previousDate?.getFullYear()));\n }\n\n /** Opens an element’s datepicker. This is considered a “manual” triggering of the datepicker. */\n private show(): void {\n if (this._datepicker.isShown) return;\n\n this.setConfig();\n\n const callbacks: BsDatepickerCallbacks = new BsDatepickerCallbacks();\n callbacks.hide = this.hide.bind(this);\n\n this._datepickerRef = this._datepicker\n .provide({provide: BsDatepickerConfig, useValue: this._config})\n .provide({provide: BsDatepickerCallbacks, useValue: callbacks})\n .attach(BsDatepickerContainerComponent)\n .to(this.container)\n .position({attachment: 'bottom'})\n .show({placement: 'bottom'});\n\n this.initSubscribes();\n }\n\n /** Closes an element’s datepicker. This is considered a “manual” triggering of the datepicker. */\n public hide(): void {\n if (this.isOpen) {\n this._datepicker.hide();\n }\n\n for (const sub of this._subs) {\n sub.unsubscribe();\n }\n }\n\n /** Toggles an element’s datepicker. This is considered a “manual” triggering of the datepicker. */\n private toggle(): void {\n if (this.isOpen) {\n return this.hide();\n }\n\n this.show();\n }\n\n /** Set config for datepicker */\n private setConfig(): void {\n this._config = Object.assign({}, this._config, this.bsConfig, {\n value: checkBsValue(this._bsValue, this.maxDate || this.bsConfig && this.bsConfig.maxDate),\n isDisabled: this.isDisabled,\n isMobile: this.isMobile || this.bsConfig && this.bsConfig.isMobile,\n minDate: this.minDate || this.bsConfig && this.bsConfig.minDate,\n maxDate: this.maxDate || this.bsConfig && this.bsConfig.maxDate,\n minMode: this.minMode || this.bsConfig && this.bsConfig.minMode,\n keepDatepickerOpened: this.bsConfig?.keepDatepickerOpened\n });\n }\n\n private unsubscribeSubscriptions(): void {\n if (this._subs?.length) {\n this._subs.map((sub: Subscription) => sub.unsubscribe());\n this._subs.length = 0;\n }\n }\n\n ngOnDestroy(): void {\n this._datepicker.dispose();\n this.isOpen$.next(false);\n\n if (this.isDestroy$) {\n this.isDestroy$.next(null);\n this.isDestroy$.complete();\n }\n\n this.unsubscribeSubscriptions();\n }\n}\n","import {Component, ElementRef, OnDestroy, OnInit, Renderer2} from '@angular/core';\nimport {BsDatepickerContainerComponent} from './bs-datepicker-container.component';\n\nimport {BsDatepickerActions} from '../reducer/bs-datepicker.actions';\nimport {BsDatepickerConfig} from '../bs-datepicker.config';\nimport {BsDatepickerEffects} from '../reducer/bs-datepicker.effects';\nimport {BsDatepickerStore} from '../reducer/bs-datepicker.store';\n\nimport {PositioningService} from 'ngx-bootstrap/positioning';\nimport {datepickerAnimation} from '../datepicker-animations';\nimport {BsDatepickerCallbacks} from \"../bs-datepicker.callbacks\";\nimport {HeaderTypeService} from \"../services/header-type.service\";\n\n@Component({\n selector: 'gt-datepicker-inline-container',\n templateUrl: './bs-datepicker-view.html',\n styleUrls: ['./bs-datepicker-view.scss'],\n providers: [BsDatepickerStore, BsDatepickerEffects],\n host: {\n '(click)': '$event.stopPropagation()'\n },\n animations: [datepickerAnimation]\n})\nexport class BsDatepickerInlineContainerComponent extends BsDatepickerContainerComponent implements OnInit, OnDestroy {\n constructor(headerTypeService: HeaderTypeService, _renderer: Renderer2, _config: BsDatepickerConfig, _callbacks: BsDatepickerCallbacks, _store: BsDatepickerStore, _element: ElementRef, _actions: BsDatepickerActions, _effects: BsDatepickerEffects, _positioningService: PositioningService) {\n super(headerTypeService, _renderer, _config, _callbacks, _store, _element, _actions, _effects, _positioningService);\n\n _renderer.setStyle(_element.nativeElement, 'display', 'inline-block');\n _renderer.setStyle(_element.nativeElement, 'position', 'static');\n }\n}\n","import { Injectable } from '@angular/core';\nimport { BsDatepickerConfig } from './bs-datepicker.config';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class BsDatepickerInlineConfig extends BsDatepickerConfig { }\n","import {\n ComponentRef,\n Directive,\n ElementRef,\n EventEmitter,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n Renderer2,\n SimpleChanges,\n ViewContainerRef\n} from '@angular/core';\n\nimport {ComponentLoader, ComponentLoaderFactory} from 'ngx-bootstrap/component-loader';\n\nimport {Subscription} from 'rxjs';\nimport {BsDatepickerInlineConfig} from './bs-datepicker-inline.config';\n\nimport {BsDatepickerConfig} from './bs-datepicker.config';\nimport {BsDatepickerInlineContainerComponent} from './components/bs-datepicker-inline-container.component';\nimport {checkBsValue} from './utils/bs-calendar-utils';\nimport {BsDatepickerViewMode} from \"./models\";\n\n@Directive({\n selector: '[gravityDatePickerInline]',\n exportAs: 'gravityDatePickerInline'\n})\nexport class BsDatepickerInlineDirective implements OnInit, OnDestroy, OnChanges {\n /** Config object for datepicker */\n @Input() bsConfig?: Partial<BsDatepickerInlineConfig>;\n\n /** Indicates whether datepicker is enabled or not */\n @Input() isDisabled: boolean = false;\n @Input() isMobile: boolean = false;\n\n /** Maximum date which is available for selection */\n @Input() maxDate?: Date;\n\n /** Minimum date which is available for selection */\n @Input() minDate?: Date;\n\n /** Minimum view mode : day, month, or year */\n @Input() minMode?: BsDatepickerViewMode;\n\n /** Emits when datepicker value has been changed */\n @Output() bsValueChange: EventEmitter<Date> = new EventEmitter();\n @Output() onApplyEmit: EventEmitter<void> = new EventEmitter<void>();\n\n private _bsValue?: Date;\n\n /** Initial value of datepicker */\n @Input() set bsValue(value: Date | undefined) {\n if (this._bsValue === value) return;\n\n this._bsValue = value;\n this.bsValueChange.emit(value);\n }\n\n protected _subs: Subscription[] = [];\n private _datepickerRef?: ComponentRef<BsDatepickerInlineContainerComponent>;\n private readonly _datepicker: ComponentLoader<BsDatepickerInlineContainerComponent>;\n\n constructor(public _config: BsDatepickerInlineConfig, private _elementRef: ElementRef, _renderer: Renderer2, _viewContainerRef: ViewContainerRef, cis: ComponentLoaderFactory) {\n Object.assign(this, this._config);\n\n this._datepicker = cis.createLoader<BsDatepickerInlineContainerComponent>(_elementRef, _viewContainerRef, _renderer);\n }\n\n ngOnInit(): void {\n this.setConfig();\n this.initSubscribes();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes[\"bsConfig\"]) {\n this.setConfig();\n }\n\n if (!this._datepickerRef || !this._datepickerRef.instance) return;\n\n if (changes[\"isMobile\"]) {\n this.setConfig();\n }\n\n if (changes[\"minDate\"]) {\n this._datepickerRef.instance.minDate = this.minDate;\n }\n\n if (changes[\"maxDate\"]) {\n this._datepickerRef.instance.maxDate = this.maxDate;\n }\n\n if (changes[\"isDisabled\"]) {\n this._datepickerRef.instance.isDisabled = this.isDisabled;\n }\n\n this.setConfig();\n }\n\n private initSubscribes(): void {\n this.unsubscribeSubscriptions();\n\n // if date changes from external source (model -> view)\n this._subs.push(\n this.bsValueChange.subscribe((value: Date) => {\n if (this._datepickerRef) {\n this._datepickerRef.instance.value = value;\n }\n })\n );\n\n // if date changes from picker (view -> model)\n if (this._datepickerRef) {\n this._subs.push(\n this._datepickerRef.instance.valueChange.subscribe((value: Date) => {\n this.bsValue = value;\n })\n );\n\n this._subs.push(\n this._datepickerRef.instance.onApplyChange.subscribe(() => {\n this.onApplyEmit.emit();\n })\n );\n }\n }\n\n private unsubscribeSubscriptions(): void {\n if (this._subs?.length) {\n this._subs.map((sub: Subscription) => sub.unsubscribe());\n this._subs.length = 0;\n }\n }\n\n /** Set config for datepicker */\n private setConfig(): void {\n if (this._datepicker) {\n this._datepicker.hide();\n }\n\n this._config = Object.assign({}, this._config, this.bsConfig, {\n value: checkBsValue(this._bsValue, this.maxDate || this.bsConfig && this.bsConfig.maxDate),\n isDisabled: this.isDisabled,\n isMobile: this.isMobile || this.bsConfig && this.bsConfig.isMobile,\n minMode: this.minMode || this.bsConfig && this.bsConfig.minMode,\n minDate: this.minDate || this.bsConfig && this.bsConfig.minDate,\n maxDate: this.maxDate || this.bsConfig && this.bsConfig.maxDate\n });\n\n this._datepickerRef = this._datepicker\n .provide({provide: BsDatepickerConfig, useValue: this._config})\n .attach(BsDatepickerInlineContainerComponent)\n .to(this._elementRef)\n .show();\n\n this.initSubscribes();\n }\n\n ngOnDestroy(): void {\n this._datepicker.dispose();\n this.unsubscribeSubscriptions();\n }\n}\n","import {Component, ElementRef, EventEmitter, OnDestroy, OnInit, Renderer2} from '@angular/core';\n\nimport {take} from 'rxjs/operators';\n\nimport {getFullYear, getMonth} from 'ngx-bootstrap/chronos';\nimport {PositioningService} from 'ngx-bootstrap/positioning';\n\nimport {BsDatepickerAbstractComponent} from '../base/bs-datepicker-container';\nimport {BsDatepickerConfig} from '../bs-datepicker.config';\nimport {CalendarCellViewModel, DayViewModel} from '../models';\nimport {BsDatepickerActions} from '../reducer/bs-datepicker.actions';\nimport {BsDatepickerEffects} from '../reducer/bs-datepicker.effects';\nimport {BsDatepickerStore} from '../reducer/bs-datepicker.store';\nimport {datepickerAnimation} from '../datepicker-animations';\nimport {dayInMilliseconds} from '../reducer/_defaults';\nimport {BsDatepickerCallbacks} from \"../bs-datepicker.callbacks\";\nimport {BsCustomDates} from \"../utils/bs-calendar-utils\";\nimport {HeaderTypeService} from \"../services/header-type.service\";\n\n@Component({\n selector: 'gt-daterangepicker-container',\n templateUrl: './bs-datepicker-view.html',\n styleUrls: ['./bs-datepicker-view.scss'],\n providers: [BsDatepickerStore, BsDatepickerEffects],\n host: {\n 'aria-label': 'calendar',\n class: 'bottom',\n '(click)': '$event.stopPropagation()',\n role: 'dialog',\n },\n animations: [datepickerAnimation]\n})\nexport class BsDaterangepickerContainerComponent extends BsDatepickerAbstractComponent implements OnInit, OnDestroy {\n override chosenRange: Date[] = [];\n override isRangePicker: boolean = true;\n\n private _rangeStack: Date[] = [];\n public valueChange: EventEmitter<Date[]> = new EventEmitter<Date[]>();\n public onApplyChange: EventEmitter<void> = new EventEmitter<void>();\n\n set value(value: (Date | undefined)[] | undefined) {\n this._effects?.setRangeValue(value);\n }\n\n constructor(public headerTypeService: HeaderTypeService, _renderer: Renderer2, public _config: BsDatepickerConfig, public _callbacks: BsDatepickerCallbacks, private _store: BsDatepickerStore, private _element: ElementRef, private _actions: BsDatepickerActions, _effects: BsDatepickerEffects, private _positionService: PositioningService) {\n super(_config);\n this._effects = _effects;\n\n _renderer.setStyle(_element.nativeElement, 'display', 'block');\n _renderer.setStyle(_element.nativeElement, 'position', 'absolute');\n }\n\n ngOnInit(): void {\n this._positionService.setOptions({\n modifiers: {\n flip: {enabled: this._config.adaptivePosition},\n preventOverflow: {enabled: this._config.adaptivePosition}\n },\n allowedPositions: ['top', 'bottom']\n });\n\n this._positionService.event$?.pipe(take(1)).subscribe(() => {\n this._positionService.disable();\n\n if (this._config.isAnimated) {\n this.animationState = this.isTopPosition ? 'animated-up' : 'animated-down';\n } else {\n this.animationState = 'unanimated';\n }\n });\n\n this.isOtherMonthsActive = this._config.selectFromOtherMonth;\n this._effects?.init(this._store)\n // intial state options\n .setOptions(this._config)\n // data binding view --> model\n .setBindings(this)\n // set event handlers\n .setEventHandlers(this)\n .registerDatepickerSideEffects();\n\n // on selected date change\n this._subs.push(\n this._store.select((state) => state.selectedRange).subscribe((dateRange) => {\n this.valueChange.emit(dateRange);\n this.chosenRange = dateRange || [];\n })\n );\n }\n\n get isTopPosition(): boolean {\n return this._element.nativeElement.classList.contains('top');\n }\n\n public positionServiceEnable(): void {\n this._positionService.enable();\n }\n\n override daySelectHandler(day: DayViewModel): void {\n if (!day) return;\n\n const isDisabled: boolean = this.isOtherMonthsActive ? day.isDisabled : day.isOtherMonth || day.isDisabled;\n if (isDisabled) return;\n\n this.rangesProcessing(day);\n }\n\n override monthSelectHandler(day: CalendarCellViewModel): void {\n if (!day || day.isDisabled) return;\n\n day.isSelected = true;\n\n if (this._config.minMode !== 'month') {\n if (day.isDisabled) return;\n\n this._store.dispatch(\n this._actions.navigateTo({\n unit: {month: getMonth(day.date), year: getFullYear(day.date)},\n viewMode: 'day'\n })\n );\n\n return;\n }\n\n this.rangesProcessing(day);\n }\n\n override yearSelectHandler(day: CalendarCellViewModel): void {\n if (!day || day.isDisabled) return;\n\n day.isSelected = true;\n\n if (this._config.minMode !== 'year') {\n if (day.isDisabled) return;\n\n this._store.dispatch(\n this._actions.navigateTo({\n unit: {year: getFullYear(day.date)},\n viewMode: 'month'\n })\n );\n\n return;\n }\n\n this.rangesProcessing(day);\n }\n\n rangesProcessing(day: CalendarCellViewModel): void {\n // if only one date is already selected and user clicks on previous date\n // start selection from new date but if new date is after initial one\n // than finish selection\n\n if (this._rangeStack.length === 1) {\n this._rangeStack = day.date >= this._rangeStack[0] ? [this._rangeStack[0], day.date] : [day.date];\n }\n\n if (this._config.maxDateRange) {\n this.setMaxDateRangeOnCalendar(day.date);\n }\n\n if (this._rangeStack.length === 0) {\n this._rangeStack = [day.date];\n\n if (this._config.maxDateRange) {\n this.setMaxDateRangeOnCalendar(day.date);\n }\n }\n\n this._store.dispatch(this._actions.selectRange(this._rangeStack));\n\n if (this._rangeStack.length === 2) {\n this._rangeStack = [];\n }\n }\n\n ngOnDestroy(): void {\n for (const sub of this._subs) {\n sub.unsubscribe();\n }\n\n this._effects?.destroy();\n }\n\n override setRangeOnCalendar(dates: BsCustomDates): void {\n if (dates) {\n this._rangeStack = dates.value instanceof Date ? [dates.value] : dates.value;\n }\n\n this._store.dispatch(this._actions.selectRange(this._rangeStack));\n }\n\n setMaxDateRangeOnCalendar(currentSelection: Date): void {\n let maxDateRange: Date = new Date(currentSelection);\n\n if (this._config.maxDate) {\n const maxDateValueInMilliseconds: number = this._config.maxDate.getTime();\n const maxDateRangeInMilliseconds: number = currentSelection.getTime() + (this._config.maxDateRange || 0) * dayInMilliseconds;\n\n maxDateRange = maxDateRangeInMilliseconds > maxDateValueInMilliseconds ? new Date(this._config.maxDate) : new Date(maxDateRangeInMilliseconds);\n } else {\n maxDateRange.setDate(currentSelection.getDate() + (this._config.maxDateRange || 0));\n }\n\n this._effects?.setMaxDate(maxDateRange);\n }\n\n override clearDate(): void {\n if (!this.isEmpty) {\n this._store.dispatch(this._actions.selectRange([]));\n }\n }\n\n override apply(): void {\n if (!this.isEmpty) {\n if (this.onApplyChange) {\n this.onApplyChange.emit();\n }\n\n if (this._callbacks?.hide) {\n this._callbacks.hide();\n }\n }\n }\n}\n","import {Injectable} from '@angular/core';\nimport {BsDatepickerConfig} from './bs-datepicker.config';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class BsDaterangepickerConfig extends BsDatepickerConfig {\n override displayMonths: number = 2;\n}\n","import {\n AfterViewInit,\n ComponentRef,\n Directive,\n ElementRef,\n EventEmitter,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n Renderer2,\n SimpleChanges,\n ViewContainerRef\n} from '@angular/core';\nimport {BsDaterangepickerConfig} from './bs-daterangepicker.config';\nimport {BsDaterangepickerContainerComponent} from './components/bs-daterangepicker-container.component';\nimport {BehaviorSubject, Subject, Subscription} from 'rxjs';\nimport {filter, takeUntil} from 'rxjs/operators';\nimport {ComponentLoader, ComponentLoaderFactory} from 'ngx-bootstrap/component-loader';\nimport {BsDatepickerConfig} from './bs-datepicker.config';\nimport {checkBsValue, checkRangesWithMaxDate} from './utils/bs-calendar-utils';\nimport {BsDatepickerCallbacks} from \"./bs-datepicker.callbacks\";\n\nexport let previousDate: (Date | undefined)[] | undefined;\n\n@Directive({\n selector: '[gravityRangePicker]',\n exportAs: 'gravityRangePicker'\n})\nexport class BsDaterangepickerDirective implements OnInit, OnDestroy, OnChanges, AfterViewInit {\n /** Config object for daterangepicker */\n @Input() bsConfig?: Partial<BsDaterangepickerConfig>;\n\n /** A selector specifying the element the daterangepicker should be appended to. */\n @Input() container: string = 'body';\n\n /** Indicates whether daterangepicker's content is enabled or not */\n @Input() isDisabled: boolean = false;\n @Input() isMobile: boolean = false;\n\n /** Maximum date which is available for selection */\n @Input() maxDate?: Date;\n\n /** Minimum date which is available for selection */\n @Input() minDate?: Date;\n\n /** Emits when daterangepicker value has been changed */\n @Output() bsValueChange: EventEmitter<((Date | undefined)[] | undefined)> = new EventEmitter<((Date | undefined)[] | undefined)>();\n @Output() onApplyEmit: EventEmitter<void> = new EventEmitter<void>();\n\n /** Emits an event when the daterangepicker is hidden */\n @Output() onHidden: EventEmitter<unknown>;\n\n /** Emits an event when the daterangepicker is shown */\n @Output() onShown: EventEmitter<unknown>;\n\n private isOpen$: BehaviorSubject<boolean>;\n\n /** Returns whether or not the daterangepicker is currently being shown */\n @Input() get isOpen(): boolean {\n return this._datepicker.isShown;\n }\n\n set isOpen(value: boolean) {\n this.isOpen$.next(value);\n }\n\n public _bsValue?: (Date | undefined)[];\n\n /** Initial value of daterangepicker */\n @Input() set bsValue(value: (Date | undefined)[] | undefined) {\n if (this._bsValue === value) return;\n\n this.initPreviousValue();\n this._bsValue = value;\n this.bsValueChange.emit(value);\n }\n\n protected _subs: Subscription[] = [];\n private _datepicker: ComponentLoader<BsDaterangepickerContainerComponent>;\n private _datepickerRef?: ComponentRef<BsDaterangepickerContainerComponent>;\n private isDestroy$: Subject<unknown> = new Subject();\n private readonly _rangeInputFormat$ = new Subject<string>();\n\n constructor(public _config: BsDaterangepickerConfig, private _elementRef: ElementRef, private _renderer: Renderer2, _viewContainerRef: ViewContainerRef, cis: ComponentLoaderFactory) {\n Object.assign(this, _config);\n\n this._datepicker = cis.createLoader<BsDaterangepickerContainerComponent>(_elementRef, _viewContainerRef, _renderer);\n\n this.isOpen$ = new BehaviorSubject(this.isOpen);\n this.onHidden = this._datepicker.onHidden;\n this.onShown = this._datepicker.onShown;\n }\n\n ngOnInit(): void {\n this._datepicker.listen({\n outsideClick: true,\n outsideEsc: true,\n triggers: 'click',\n show: () => this.show()\n });\n\n this.initPreviousValue();\n this.setConfig();\n }\n\n private initPreviousValue(): void {\n previousDate = this._bsValue;\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes[\"bsConfig\"]) {\n this.setConfig();\n this._rangeInputFormat$.next('L');\n }\n\n if (!this._datepickerRef || !this._datepickerRef.instance) return;\n\n if (changes[\"minDate\"]) {\n this._datepickerRef.instance.minDate = this.minDate;\n }\n\n if (changes[\"maxDate\"]) {\n this._datepickerRef.instance.maxDate = this.maxDate;\n }\n\n if (changes[\"isDisabled\"]) {\n this._datepickerRef.instance.isDisabled = this.isDisabled;\n }\n }\n\n ngAfterViewInit(): void {\n this.isOpen$.pipe(filter(isOpen => isOpen !== this.isOpen), takeUntil(this.isDestroy$)).subscribe(() => this.toggle());\n }\n\n private initSubscribes(): void {\n // if date changes from external source (model -> view)\n this._subs.push(\n this.bsValueChange.subscribe((value: Date[]) => {\n if (this._datepickerRef) {\n this._datepickerRef.instance.value = value;\n }\n })\n );\n\n // if date changes from picker (view -> model)\n if (this._datepickerRef) {\n this._subs.push(\n this._datepickerRef.instance.valueChange\n .pipe(filter((range: Date[]) => {\n if (range.length == 0) return true;\n if (range.length == 2) return range && range[0] && !!range[1];\n }))\n .subscribe((value: Date[]) => {\n this.initPreviousValue();\n this.bsValue = value;\n\n // TODO ebiazzetti keep modal open after select the dates\n if (this.keepDatepickerModalOpened()) return;\n\n this.hide();\n })\n );\n\n this._subs.push(\n this._datepickerRef.instance.onApplyChange.subscribe(() => {\n this.onApplyEmit.emit();\n })\n );\n }\n }\n\n private keepDatepickerModalOpened(): boolean {\n if (!previousDate || !this.bsConfig?.keepDatepickerOpened) return false;\n return this.isDateSame();\n }\n\n private isDateSame(): boolean {\n return ((this._bsValue?.[0]?.getDate() === previousDate?.[0]?.getDate())\n && (this._bsValue?.[0]?.getMonth() === previousDate?.[0]?.getMonth())\n && (this._bsValue?.[0]?.getFullYear() === previousDate?.[0]?.getFullYear())\n && (this._bsValue?.[1]?.getDate() === previousDate?.[1]?.getDate())\n && (this._bsValue?.[1]?.getMonth() === previousDate?.[1]?.getMonth())\n && (this._bsValue?.[1]?.getFullYear() === previousDate?.[1]?.getFullYear())\n );\n }\n\n /** Opens an element’s datepicker. This is considered a “manual” triggering of the datepicker */\n private show(): void {\n if (this._datepicker.isShown) return;\n\n this.setConfig();\n\n const callbacks: BsDatepickerCallbacks = new BsDatepickerCallbacks();\n callbacks.hide = this.hide.bind(this);\n\n this._datepickerRef = this._datepicker\n .provide({provide: BsDatepickerConfig, useValue: this._config})\n .provide({provide: BsDatepickerCallbacks, useValue: callbacks})\n .attach(BsDaterangepickerContainerComponent)\n .to(this.container)\n .position({attachment: 'bottom'})\n .show({placement: 'bottom'});\n\n this.initSubscribes();\n }\n\n /** Closes an element’s datepicker. This is considered a “manual” triggering of the datepicker. */\n public hide(): void {\n if (this.isOpen) {\n this._datepicker.hide();\n }\n\n for (const sub of this._subs) {\n sub.unsubscribe();\n }\n }\n\n /** Toggles an element’s datepicker. This is considered a “manual” triggering of the datepicker. */\n private toggle(): void {\n if (this.isOpen) {\n return this.hide();\n }\n\n this.show();\n }\n\n /** Set config for daterangepicker */\n private setConfig(): void {\n this._config = Object.assign({}, this._config, this.bsConfig, {\n value: checkBsValue(this._bsValue, this.maxDate || this.bsConfig && this.bsConfig.maxDate),\n isDisabled: this.isDisabled,\n isMobile: this.isMobile || this.bsConfig && this.bsConfig.isMobile,\n minDate: this.minDate || this.bsConfig && this.bsConfig.minDate,\n maxDate: this.maxDate || this.bsConfig && this.bsConfig.maxDate,\n ranges: checkRangesWithMaxDate(this.bsConfig && this.bsConfig.ranges, this.maxDate || this.bsConfig && this.bsConfig.maxDate),\n maxDateRange: this.bsConfig && this.bsConfig.maxDateRange,\n keepDatepickerOpened: this.bsConfig?.keepDatepickerOpened\n });\n }\n\n private unsubscribeSubscriptions(): void {\n if (this._subs?.length) {\n this._subs.map((sub: Subscription) => sub.unsubscribe());\n this._subs.length = 0;\n }\n }\n\n ngOnDestroy(): void {\n this._datepicker.dispose();\n this.isOpen$.next(false);\n\n if (this.isDestroy$) {\n this.isDestroy$.next(null);\n this.isDestroy$.complete();\n }\n\n this.unsubscribeSubscriptions();\n }\n}\n","import {Component, ElementRef, OnDestroy, OnInit, Renderer2} from '@angular/core';\nimport {BsDaterangepickerContainerComponent} from './bs-daterangepicker-container.component';\n\nimport {BsDatepickerActions} from '../reducer/bs-datepicker.actions';\nimport {BsDatepickerConfig} from '../bs-datepicker.config';\nimport {BsDatepickerEffects} from '../reducer/bs-datepicker.effects';\nimport {BsDatepickerStore} from '../reducer/bs-datepicker.store';\n\nimport {PositioningService} from 'ngx-bootstrap/positioning';\nimport {datepickerAnimation} from '../datepicker-animations';\nimport {BsDatepickerCallbacks} from \"../bs-datepicker.callbacks\";\nimport {HeaderTypeService} from \"../services/header-type.service\";\n\n@Component({\n selector: 'gt-daterangepicker-inline-container',\n templateUrl: './bs-datepicker-view.html',\n styleUrls: ['./bs-datepicker-view.scss'],\n providers: [BsDatepickerStore, BsDatepickerEffects],\n host: {\n '(click)': '$event.stopPropagation()'\n },\n animations: [datepickerAnimation]\n})\nexport class BsDaterangepickerInlineContainerComponent extends BsDaterangepickerContainerComponent implements OnInit, OnDestroy {\n constructor(headerTypeService: HeaderTypeService, _renderer: Renderer2, _config: BsDatepickerConfig, _callbacks: BsDatepickerCallbacks, _store: BsDatepickerStore, _element: ElementRef, _actions: BsDatepickerActions, _effects: BsDatepickerEffects, _positioningService: PositioningService) {\n super(headerTypeService, _renderer, _config, _callbacks, _store, _element, _actions, _effects, _positioningService);\n\n _renderer.setStyle(_element.nativeElement, 'display', 'inline-block');\n _renderer.setStyle(_element.nativeElement, 'position', 'static');\n }\n}\n","import {Injectable} from '@angular/core';\nimport {BsDatepickerConfig} from './bs-datepicker.config';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class BsDaterangepickerInlineConfig extends BsDatepickerConfig {\n override displayMonths: number = 2;\n}\n","import {\n ComponentRef,\n Directive,\n ElementRef,\n EventEmitter,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n Renderer2,\n SimpleChanges,\n ViewContainerRef\n} from '@angular/core';\n\nimport {ComponentLoader, ComponentLoaderFactory} from 'ngx-bootstrap/component-loader';\n\nimport {Subscription} from 'rxjs';\nimport {filter} from 'rxjs/operators';\n\nimport {BsDatepickerConfig} from './bs-datepicker.config';\nimport {BsDaterangepickerInlineConfig} from './bs-daterangepicker-inline.config';\nimport {BsDaterangepickerInlineContainerComponent} from './components/bs-daterangepicker-inline-container.component';\nimport {checkBsValue, checkRangesWithMaxDate} from './utils/bs-calendar-utils';\n\n@Directive({\n selector: '[gravityRangePickerInline]',\n exportAs: 'gravityRangePickerInline'\n})\nexport class BsDaterangepickerInlineDirective implements OnInit, OnDestroy, OnChanges {\n /** Config object for datepicker */\n @Input() bsConfig?: Partial<BsDaterangepickerInlineConfig>;\n\n /** Indicates whether datepicker is enabled or not */\n @Input() isDisabled: boolean = false;\n @Input() isMobile: boolean = false;\n\n /** Maximum date which is available for selection */\n @Input() maxDate?: Date;\n\n /** Minimum date which is available for selection */\n @Input() minDate?: Date;\n\n /** Emits when daterangepicker value has been changed */\n @Output() bsValueChange: EventEmitter<(Date | undefined)[] | undefined> = new EventEmitter();\n @Output() onApplyEmit: EventEmitter<void> = new EventEmitter<void>();\n\n private _bsValue?: (Date | undefined)[] | undefined;\n\n /** Initial value of datepicker */\n @Input() set bsValue(value: (Date | undefined)[] | undefined) {\n if (this._bsValue === value) return;\n\n this._bsValue = value;\n this.bsValueChange.emit(value);\n }\n\n protected _subs: Subscription[] = [];\n private _datepickerRef?: ComponentRef<BsDaterangepickerInlineContainerComponent>;\n private readonly _datepicker: ComponentLoader<BsDaterangepickerInlineContainerComponent>;\n\n constructor(public _config: BsDaterangepickerInlineConfig, private _elementRef: ElementRef, _renderer: Renderer2, _viewContainerRef: ViewContainerRef, cis: ComponentLoaderFactory) {\n Object.assign(this, this._config);\n\n this._datepicker = cis.createLoader<BsDaterangepickerInlineContainerComponent>(_elementRef, _viewContainerRef, _renderer);\n }\n\n ngOnInit(): void {\n this.setConfig();\n this.initSubscribes();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (!this._datepickerRef || !this._datepickerRef.instance) return;\n\n if (changes[\"minDate\"]) {\n this._datepickerRef.instance.minDate = this.minDate;\n }\n\n if (changes[\"maxDate\"]) {\n this._datepickerRef.instance.maxDate = this.maxDate;\n }\n\n if (changes[\"isDisabled\"]) {\n this._datepickerRef.instance.isDisabled = this.isDisabled;\n }\n\n this.setConfig();\n }\n\n private initSubscribes(): void {\n this.unsubscribeSubscriptions();\n\n // if date changes from external source (model -> view)\n this._subs.push(\n this.bsValueChange.subscribe((value: Date[]) => {\n if (this._datepickerRef) {\n this._datepickerRef.instance.value = value;\n }\n })\n );\n\n // if date changes from picker (view -> model)\n if (this._datepickerRef) {\n this._subs.push(\n this._datepickerRef.instance.valueChange\n .pipe(filter((range: Date[]) => {\n if (range?.length == 0) return true;\n if (range?.length == 2) return range && range[0] && !!range[1];\n }))\n .subscribe((value: Date[]) => {\n this.bsValue = value;\n })\n );\n\n this._subs.push(\n this._datepickerRef.instance.onApplyChange.subscribe(() => {\n this.onApplyEmit.emit();\n })\n );\n }\n }\n\n private unsubscribeSubscriptions(): void {\n if (this._subs?.length) {\n this._subs.map((sub: Subscription) => sub.unsubscribe());\n this._subs.length = 0;\n }\n }\n\n /** Set config for datepicker */\n private setConfig(): void {\n if (this._datepicker) {\n this._datepicker.hide();\n }\n\n this._config = Object.assign({}, this._config, this.bsConfig, {\n value: checkBsValue(this._bsValue, this.maxDate || this.bsConfig && this.bsConfig.maxDate),\n isDisabled: this.isDisabled,\n isMobile: this.isMobile || this.bsConfig && this.bsConfig.isMobile,\n minDate: this.minDate || this.bsConfig && this.bsConfig.minDate,\n maxDate: this.maxDate || this.bsConfig && this.bsConfig.maxDate,\n ranges: checkRangesWithMaxDate(this.bsConfig && this.bsConfig.ranges, this.maxDate || this.bsConfig && this.bsConfig.maxDate),\n maxDateRange: this.bsConfig && this.bsConfig.maxDateRange\n });\n\n this._datepickerRef = this._datepicker\n .provide({provide: BsDatepickerConfig, useValue: this._config})\n .attach(BsDaterangepickerInlineContainerComponent)\n .to(this._elementRef)\n .show();\n\n this.initSubscribes();\n }\n\n ngOnDestroy(): void {\n this._datepicker.dispose();\n this.unsubscribeSubscriptions();\n }\n}\n","import {Component, EventEmitter, HostListener, Input, OnChanges, OnInit, Output, SimpleChanges} from '@angular/core';\nimport {BsDatepickerViewMode} from \"./datepicker/models\";\nimport {BsDatepickerConfig} from \"./datepicker/bs-datepicker.config\";\nimport {HeaderTypeService} from \"./datepicker/services/header-type.service\";\n\n@Component({\n selector: 'gravity-calendar-v2',\n templateUrl: './gravity-calendar-v2.component.html',\n styleUrls: ['./gravity-calendar-v2.component.scss']\n})\nexport class GravityCalendarV2Component implements OnInit, OnChanges {\n // Component configuration\n @Input() public clearable: boolean = true;\n @Input() public currentLang: string = 'en';\n @Input() public cypressTag: string;\n @Input() public hasError: boolean = false;\n @Input() public isDisabled: boolean = false;\n @Input() public isReadonly: boolean = false;\n @Input() public label: string;\n @Input() public placeholder: string;\n @Input() public required: boolean = false;\n @Input() public supportText: string;\n @Input() public minDate: Date;\n @Input() public maxDate: Date;\n\n // Appearance settings\n @Input() public size: 'sm' | 'md' = 'sm';\n @Input() public labelSize: 'sm' | 'md' | 'lg';\n @Input() public inputType: 'field' | 'label' = 'field';\n @Input() public width: 'short' | 'medium' | 'full' | 'fit' = 'short';\n\n // Calendar\n @Input() public calendarType: BsDatepickerViewMode = 'day';\n @Input() public calendarMode: 'single' | 'double' = 'single';\n @Input() public selectionMode: 'date' | 'range' = 'date';\n\n // Dates\n @Input() public customDate?: Date;\n @Input() public customDates?: Date[];\n\n @Output('response') public calendarResponse: EventEmitter<Date[] | Date> = new EventEmitter<Date[] | Date>();\n\n public calendarConfiguration: Partial<BsDatepickerConfig> = {\n displayMonths: 1\n };\n\n public readonly elementId: string;\n public displayRangePicker: boolean = false;\n public focusInput: boolean = false;\n public isMobile: boolean = false;\n public inputLabel: string = '';\n private defaultMinDate: Date = new Date(new Date().getUTCFullYear() - 11, 0, 1);\n private defaultMaxDate: Date = new Date();\n public selectedDate: Date;\n public selectedDates: Date[];\n public showMobileCalendar: boolean = false;\n public isCalendarOpen: boolean = false;\n\n constructor(public headerTypeService: HeaderTypeService) {\n let milliseconds: number = new Date().getTime();\n let randomNumber: number = Math.random() * 10;\n\n this.elementId = '' + (milliseconds * randomNumber / 2);\n }\n\n ngOnInit(): void {\n this.onResize();\n this.updateConfig();\n\n this.calendarConfiguration.calendarSize = this.size;\n this.calendarConfiguration.clearable = this.clearable;\n\n this.calendarConfiguration.minDate = this.minDate ?? this.defaultMinDate;\n this.calendarConfiguration.maxDate = this.maxDate ?? this.defaultMaxDate;\n\n if (this.customDate) {\n this.selectedDate = this.customDate;\n }\n\n if (this.customDates) {\n this.selectedDates = this.customDates;\n }\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['selectionMode']) {\n this.selectionMode = changes['selectionMode'].currentValue;\n this.updateConfig();\n }\n\n if (changes['calendarMode']) {\n this.calendarMode = changes['calendarMode'].currentValue;\n this.updateConfig();\n }\n\n if (changes['clearable']) {\n this.calendarConfiguration.clearable = changes['clearable'].currentValue;\n }\n\n if (changes['size']) {\n this.calendarConfiguration.calendarSize = changes['size'].currentValue;\n }\n\n if ('customDate' in changes) {\n const newDate = changes['customDate'].currentValue;\n\n if (!this.selectedDate || this.selectedDate.getTime() !== new Date(newDate).getTime()) {\n this.selectedDate = new Date(newDate);\n }\n }\n\n if (changes['customDates']) {\n this.selectedDates = changes['customDates'].currentValue;\n }\n\n if (changes['minDate']) {\n this.calendarConfiguration.minDate = changes['minDate'].currentValue ?? this.defaultMinDate;\n }\n\n if (changes['maxDate']) {\n this.calendarConfiguration.maxDate = changes['maxDate'].currentValue ?? this.defaultMaxDate;\n }\n }\n\n private updateConfig(): void {\n if (this.calendarMode == 'single' && this.selectionMode == 'date') {\n this.calendarConfiguration.displayMonths = 1;\n this.displayRangePicker = false;\n }\n\n if (this.calendarMode == 'single' && this.selectionMode == 'range') {\n this.calendarConfiguration.displayMonths = 1;\n this.displayRangePicker = true;\n }\n\n if (this.calendarMode == 'double' && this.selectionMode == 'date') {\n this.calendarConfiguration.displayMonths = 2;\n this.displayRangePicker = true;\n }\n\n if (this.calendarMode == 'double' && this.selectionMode == 'range') {\n this.calendarConfiguration.displayMonths = 2;\n this.displayRangePicker = true;\n }\n }\n\n public updateSelectedDate($event: Date | Date[]): void {\n if (!$event || (Array.isArray($event) && $event.length == 0)) {\n this.selectedDate = null;\n this.selectedDates = null;\n this.inputLabel = '';\n this.calendarResponse.emit(undefined);\n } else if ($event instanceof Date) {\n this.selectedDate = $event;\n this.inputLabel = this.formatDate($event);\n this.calendarResponse.emit(this.selectedDate);\n } else {\n this.selectedDates = $event;\n const date1: string = this.formatDate($event[0]);\n const date2: string = this.formatDate($event[1]);\n\n this.inputLabel = date1 + ' - ' + date2;\n\n this.calendarResponse.emit(this.selectedDates);\n }\n\n this.closeMobileCalendar();\n }\n\n resetCalendar(): void {\n this.selectedDate = this.customDate ? this.customDate : undefined;\n this.selectedDates = this.customDates ? this.customDates : undefined;\n\n if (this.selectionMode == 'date') {\n this.calendarResponse.emit(this.selectedDate);\n } else {\n this.calendarResponse.emit(this.selectedDates);\n }\n }\n\n public getGtCalendarContainer(): string {\n return '.gravity-calendar-field[elementId=\"' + this.elementId + '\"]';\n }\n\n public getStatus(): string {\n if (this.isDisabled) {\n return 'disabled';\n } else if (this.isReadonly) {\n return 'readonly';\n } else if (this.hasError) {\n return 'error';\n } else if (this.focusInput) {\n return 'open';\n } else if (this.selectedDates?.length > 0 || this.selectedDate) {\n return 'selected';\n } else {\n return 'active';\n }\n }\n\n private formatDate(date: Date): string {\n let formattedDate: string = '';\n let month: string;\n let day: string;\n\n switch (this.calendarType) {\n case \"day\":\n month = date.getMonth() < 9 ? ('0' + (date.getMonth() + 1)) : ('' + (date.getMonth() + 1));\n day = date.getDate() < 10 ? '0' + date.getDate() : '' + date.getDate();\n formattedDate = month + '/' + day + '/' + date.getFullYear();\n break;\n case \"month\":\n month = date.getMonth() < 9 ? ('0' + (date.getMonth() + 1)) : ('' + (date.getMonth() + 1));\n formattedDate = month + '/' + date.getFullYear();\n break;\n case \"year\":\n formattedDate = date.getFullYear().toString();\n break;\n }\n\n return formattedDate;\n }\n\n @HostListener('window:resize', ['$event'])\n private onResize(): void {\n this.isMobile = window.innerWidth <= 992;\n this.calendarConfiguration.isAnimated = !this.isMobile;\n this.calendarConfiguration.isMobile = this.isMobile;\n }\n\n public openMobileCalendar(): void {\n this.showMobileCalendar = true;\n this.focusInput = true;\n\n this.headerTypeService.setIsMobile(true);\n }\n\n public closeMobileCalendar(): void {\n this.showMobileCalendar = false;\n this.focusInput = false;\n this.restartCalendarType();\n }\n\n public restartCalendarType() {\n this.headerTypeService.setIsMobile(false);\n this.headerTypeService.setHeaderType('self');\n this.headerTypeService.setCalendarType('days');\n }\n}\n\n","<label class=\"hr-label sm-bold {{getStatus()}}\" *ngIf=\"label\">\n {{ label }} <span *ngIf=\"required || hasError\">*</span>\n</label>\n<div [attr.elementId]=\"elementId\" class=\"gravity-calendar-field {{size}} {{width}}-width {{getStatus()}} {{inputType}}-{{labelSize}}\">\n <div class=\"mobile-calendar-container\" [class.hide]=\"!showMobileCalendar\" [class.show]=\"showMobileCalendar\">\n <div class=\"mobile-calendar-body\">\n <div class=\"calendar-container\"\n gravityDatePickerInline\n\n [bsConfig]=\"calendarConfiguration\"\n [isDisabled]=\"isDisabled || isReadonly\"\n [isMobile]=\"isMobile\"\n [maxDate]=\"maxDate\"\n [minDate]=\"minDate\"\n [minMode]=\"calendarType\"\n\n [(bsValue)]=\"selectedDate\"\n (bsValueChange)=\"updateSelectedDate($event)\"\n (onApplyEmit)=\"closeMobileCalendar()\"\n\n *ngIf=\"!displayRangePicker\">\n\n <div class=\"calendar-close-icon\" *ngIf=\"headerTypeService.getCalendarType() === 'days'\">\n <gravity-icon class=\"pointer\" (click)=\"closeMobileCalendar()\" [iconName]=\"'unsuccess'\" [iconSize]=\"'sm-12'\"></gravity-icon>\n </div>\n </div>\n\n <div class=\"calendar-container\"\n gravityRangePickerInline\n\n [bsConfig]=\"calendarConfiguration\"\n [isDisabled]=\"isDisabled || isReadonly\"\n [isMobile]=\"isMobile\"\n [maxDate]=\"maxDate\"\n [minDate]=\"minDate\"\n\n [(bsValue)]=\"selectedDates\"\n (bsValueChange)=\"updateSelectedDate($event)\"\n (onApplyEmit)=\"closeMobileCalendar()\"\n\n *ngIf=\"displayRangePicker\">\n\n <div class=\"calendar-close-icon\" *ngIf=\"headerTypeService.getCalendarType() === 'days'\">\n <gravity-icon class=\"pointer\" (click)=\"closeMobileCalendar()\" [iconName]=\"'unsuccess'\" [iconSize]=\"'sm-12'\"></gravity-icon>\n </div>\n </div>\n </div>\n </div>\n\n <ng-container *ngIf=\"isMobile && inputType === 'field'\">\n <div [attr.data-cy]=\"cypressTag\"\n [style.cursor]=\"!isDisabled && !isReadonly ? 'pointer' : 'text'\"\n\n class=\"gravity-calendar-field-trigger\"\n [class.disabled]=\"isDisabled || isReadonly\"\n [class.readonly]=\"isReadonly\"\n\n (click)=\"openMobileCalendar()\"\n\n (blur)=\"focusInput = false\"\n (focus)=\"focusInput = true\">\n <gravity-icon class=\"placement-left\" [iconName]=\"'calendar'\" [iconSize]=\"'md-16'\"></gravity-icon>\n <input [attr.data-cy]=\"cypressTag + '_input'\"\n [attr.readonly]=\"isReadonly\"\n [style.cursor]=\"!isDisabled && !isReadonly ? 'pointer' : 'text'\"\n\n [(ngModel)]=\"inputLabel\" [ngModel]=\"inputLabel | dateFormating: currentLang\"\n\n class=\"hr-label {{size}}-regular\"\n [placeholder]=\"placeholder && placeholder != '' ? placeholder : selectionMode == 'range' ? 'Select date range' : 'Select a ' + calendarType\">\n <gravity-icon [iconName]=\"focusInput ? 'arrow-up' : 'arrow-down'\" [iconSize]=\"'md-16'\"></gravity-icon>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"!isMobile || inputType === 'label'\">\n\n <div [attr.data-cy]=\"cypressTag\"\n [style.cursor]=\"!isDisabled && !isReadonly ? 'pointer' : 'text'\"\n\n class=\"gravity-calendar-field-trigger\"\n [class.disabled]=\"isDisabled || isReadonly\"\n [class.readonly]=\"isReadonly\"\n gravityDatePicker\n\n [bsConfig]=\"calendarConfiguration\"\n [container]=\"getGtCalendarContainer()\"\n [isDisabled]=\"isDisabled || isReadonly\"\n [isMobile]=\"isMobile\"\n [maxDate]=\"maxDate\"\n [minDate]=\"minDate\"\n [minMode]=\"calendarType\"\n\n [(bsValue)]=\"selectedDate\"\n\n (blur)=\"focusInput = false\"\n (bsValueChange)=\"updateSelectedDate($event)\"\n (focus)=\"focusInput = true\"\n (onHidden)=\"focusInput = false; restartCalendarType(); isCalendarOpen = false;\"\n (onShown)=\"restartCalendarType(); isCalendarOpen = true;\"\n\n *ngIf=\"!displayRangePicker\">\n\n <gravity-dropdown-label *ngIf=\"inputType === 'label'\" [size]=\"labelSize\" [stopPropagation]=\"false\" [isOpen]=\"isCalendarOpen\"\n [label]=\"inputLabel ? (inputLabel | dateFormating: currentLang : false): 'Select a ' + calendarType\" >\n </gravity-dropdown-label>\n\n <ng-container *ngIf=\"inputType === 'field'\">\n <gravity-icon class=\"placement-left\" [iconName]=\"'calendar'\" [iconSize]=\"'md-16'\"></gravity-icon>\n <input [attr.data-cy]=\"cypressTag + '_input'\"\n [attr.readonly]=\"isReadonly\"\n [style.cursor]=\"!isDisabled && !isReadonly ? 'pointer' : 'text'\"\n\n [(ngModel)]=\"inputLabel\" [ngModel]=\"inputLabel | dateFormating: currentLang\"\n\n class=\"hr-label {{size}}-regular\"\n [placeholder]=\"placeholder && placeholder != '' ? placeholder : 'Select a ' + calendarType\">\n <gravity-icon [iconName]=\"focusInput ? 'arrow-up' : 'arrow-down'\" [iconSize]=\"'md-16'\"></gravity-icon>\n </ng-container>\n </div>\n\n <div [attr.data-cy]=\"cypressTag\"\n [style.cursor]=\"!isDisabled && !isReadonly ? 'pointer' : 'text'\"\n\n class=\"gravity-calendar-field-trigger\"\n [class.disabled]=\"isDisabled\"\n [class.readonly]=\"isReadonly\"\n gravityRangePicker\n\n [bsConfig]=\"calendarConfiguration\"\n [container]=\"getGtCalendarContainer()\"\n [isDisabled]=\"isDisabled || isReadonly\"\n [isMobile]=\"isMobile\"\n [maxDate]=\"maxDate\"\n [minDate]=\"minDate\"\n\n [(bsValue)]=\"selectedDates\"\n\n (blur)=\"focusInput = false\"\n (bsValueChange)=\"updateSelectedDate($event)\"\n (focus)=\"focusInput = true\"\n (onHidden)=\"focusInput = false; restartCalendarType()\"\n (onShown)=\"restartCalendarType()\"\n\n *ngIf=\"displayRangePicker\">\n\n <gravity-icon class=\"placement-left\" [iconName]=\"'calendar'\" [iconSize]=\"'md-16'\"></gravity-icon>\n <input [attr.data-cy]=\"cypressTag + '_input'\"\n [attr.readonly]=\"isReadonly\"\n [style.cursor]=\"!isDisabled && !isReadonly ? 'pointer' : 'text'\"\n\n [(ngModel)]=\"inputLabel\" [ngModel]=\"inputLabel | dateFormating: currentLang\"\n\n class=\"hr-label {{size}}-regular\"\n [placeholder]=\"placeholder && placeholder != '' ? placeholder : 'Select a date range'\">\n <gravity-icon [iconName]=\"focusInput ? 'arrow-up' : 'arrow-down'\" [iconSize]=\"'md-16'\"></gravity-icon>\n </div>\n </ng-container>\n</div>\n<p class=\"hr-label sm-regular supporting-text {{getStatus()}} {{size}}\" *ngIf=\"supportText\">\n <gravity-icon [iconName]=\"'question-circle'\" *ngIf=\"hasError\" [iconSize]=\"'md-16'\"></gravity-icon>\n {{ supportText }}\n</p>\n<p class=\"hr-label sm-regular supporting-text {{getStatus()}} {{size}}\"\n *ngIf=\"!supportText && getStatus() == 'active' && inputLabel?.length == 0 && required\">\n {{ currentLang == 'es' ? 'Requerido' : 'Required' }}\n</p>\n","import {Component, EventEmitter, Input, Output} from '@angular/core';\n\n@Component({\n selector: 'gravity-radio-button',\n templateUrl: './gravity-radio-button.component.html',\n styleUrls: ['./gravity-radio-button.component.scss']\n})\nexport class GravityRadioButtonComponent {\n @Input() public cypressTag: string;\n @Input() public checked: boolean = false;\n @Input() public disabled: boolean = false;\n @Input() public name: string;\n @Input() public size: 'md' | 'sm' = 'sm';\n @Input() public value: string;\n @Output() public onChange: EventEmitter<string> = new EventEmitter<string>();\n\n public onChangeEvent(value: string): void {\n this.onChange.emit(value);\n }\n}\n","<input [checked]=\"checked\" class=\"size-{{size}}\" (click)=\"onChangeEvent(value)\" [disabled]=\"disabled\" [id]=\"value\"\n [name]=\"name\" type=\"radio\" [value]=\"value\" [attr.data-cy]=\"cypressTag ? 'radioButton_' + cypressTag : null\">\n<label>\n <ng-content></ng-content>\n</label>\n","import {AfterViewInit, Component, EventEmitter, Input, OnChanges, Output, SimpleChanges} from '@angular/core';\n\n@Component({\n selector: 'gravity-switch',\n templateUrl: './gravity-switch.component.html',\n styleUrls: ['./gravity-switch.component.scss']\n})\nexport class GravitySwitchComponent implements AfterViewInit, OnChanges {\n @Input() public cypressTag: string;\n @Input() public size: 'md' | 'sm' = 'md';\n @Input() public checked: boolean = false;\n @Input() public disabled: boolean = false;\n @Input() public icons: { on?: string; off?: string; };\n @Input() public labels: { left?: string; right?: string; };\n\n @Output() public response: EventEmitter<boolean> = new EventEmitter();\n\n public isSwitchActive: boolean = false;\n\n ngAfterViewInit() {\n this.isSwitchActive = this.checked;\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes['checked']) {\n this.isSwitchActive = changes['checked'].currentValue;\n }\n }\n\n public toggleSwitch(): void {\n if (!this.disabled) {\n this.isSwitchActive = !this.isSwitchActive;\n this.response.emit(this.isSwitchActive);\n }\n }\n\n public getIconSizeClass(size: 'md' | 'sm') {\n switch (size) {\n case \"sm\":\n return 'sm-12';\n case \"md\":\n return 'md-16';\n }\n }\n\n}\n","<div class=\"gravity-switch size-{{size}}\" [class.disabled]=\"disabled\" [attr.data-cy]=\"cypressTag ? 'switch_' + cypressTag : null\">\n <span class=\"hr-body sm-regular\" *ngIf=\"labels?.left\">{{ labels.left }}</span>\n <div class=\"switch \" [class.disabled]=\"disabled\" (click)=\"toggleSwitch()\">\n <input type=\"checkbox\" [checked]=\"isSwitchActive\">\n <div class=\"slider\">\n <div class=\"icon-container\" [ngClass]=\"disabled ? '' : 'elevation-xs'\">\n <gravity-icon *ngIf=\"icons && icons.on && icons.off\"\n [iconSize]=\"getIconSizeClass(size)\"\n [style.--icon-color]=\"'var(--switch-icon-color)'\"\n [iconName]=\"disabled || isSwitchActive ? icons.on : icons.off\" >\n </gravity-icon>\n </div>\n </div>\n </div>\n <span class=\"hr-body sm-regular\" *ngIf=\"labels?.right\">{{ labels.right }}</span>\n</div>\n","import {Component, Input, TemplateRef} from '@angular/core';\nimport {NgbActiveModal} from \"@ng-bootstrap/ng-bootstrap\";\nimport {GravityIconComponent} from \"../gravity-icon/gravity-icon.component\";\n\n@Component({\n templateUrl: './gravity-dialog.component.html',\n styleUrls: ['./gravity-dialog.component.scss']\n})\nexport class GravityDialogComponent {\n @Input() public dialogContent: GravityDialogContentInterface;\n\n constructor(private readonly ngbActiveModal: NgbActiveModal) {\n }\n\n public closeModal(): void {\n this.ngbActiveModal.close();\n }\n\n public isNewIcon(iconName: string): boolean {\n return GravityIconComponent.isNewIcon(iconName);\n }\n}\n\nexport interface GravityDialogContentInterface {\n componentInputs?: any;\n contentTemplateRef?: TemplateRef<any>;\n contentTemplateComponent?: any;\n footerTemplateRef?: TemplateRef<any>;\n footerTemplateComponent?: any;\n showCloseIcon?: boolean;\n titleIconName?: string;\n title: string;\n}\n","<div class=\"dialog-header\">\n <div class=\"hr-title lg-bold title\" [attr.data-cy]=\"'dialog_title'\">\n <gravity-icon class=\"title-icon\" *ngIf=\"dialogContent.titleIconName && dialogContent.titleIconName.length > 0\"\n [iconName]=\"dialogContent.titleIconName\" [title]=\"dialogContent.titleIconName\"\n [size]=\"isNewIcon(dialogContent.titleIconName) ? null : 'md'\"\n [iconSize]=\"isNewIcon(dialogContent.titleIconName) ? 'lg-24' : null\"></gravity-icon>\n {{ dialogContent.title }}\n </div>\n <gravity-icon [attr.data-cy]=\"'dialog_closeButton'\" class=\"close\" (click)=\"closeModal()\"\n [iconName]=\"'unsuccess'\" *ngIf=\"dialogContent.showCloseIcon\" [iconSize]=\"'md-16'\"\n [title]=\"'Close'\"/>\n</div>\n\n<div class=\"dialog-body\" [class.with-footer]=\"dialogContent.footerTemplateRef || dialogContent.footerTemplateComponent\" [attr.data-cy]=\"'dialog_body'\">\n <ng-container *ngIf=\"dialogContent.contentTemplateRef\">\n <ng-container *ngTemplateOutlet=\"dialogContent.contentTemplateRef\"></ng-container>\n </ng-container>\n <ng-container *ngIf=\"dialogContent.contentTemplateComponent\">\n <ng-container\n *ngComponentOutlet=\"dialogContent.contentTemplateComponent; inputs: dialogContent.componentInputs\"></ng-container>\n </ng-container>\n</div>\n\n<div class=\"dialog-footer\" *ngIf=\"dialogContent.footerTemplateRef || dialogContent.footerTemplateComponent\">\n <ng-container *ngIf=\"dialogContent.footerTemplateRef\">\n <ng-container *ngTemplateOutlet=\"dialogContent.footerTemplateRef\"></ng-container>\n </ng-container>\n <ng-container *ngIf=\"dialogContent.footerTemplateComponent\">\n <ng-container *ngComponentOutlet=\"dialogContent.footerTemplateComponent\"></ng-container>\n </ng-container>\n</div>\n","import {Component, Input} from '@angular/core';\nimport {NgbActiveModal} from \"@ng-bootstrap/ng-bootstrap\";\nimport {GravityNotificationContent} from \"./gravity-notification-content.interface\";\n\n@Component({\n templateUrl: './gravity-notification.component.html',\n styleUrls: ['./gravity-notification.component.scss']\n})\nexport class GravityNotificationComponent {\n @Input() public notificationContent: GravityNotificationContent;\n\n constructor(private readonly ngbActiveModal: NgbActiveModal) {\n }\n\n public get iconByState() {\n if (this.notificationContent.state === 'success') {\n return 'check';\n } else if (this.notificationContent.state === 'error') {\n return 'unsuccess';\n } else if (this.notificationContent.state === 'warning') {\n return 'warning-circle'\n }\n }\n\n public closeModal(): void {\n this.ngbActiveModal.close();\n }\n}\n","<main class=\"alert-content {{notificationContent.state}}\" [attr.data-cy]=\"'notification'\">\n <gravity-icon class=\"close\" (click)=\"closeModal()\" data-cy=\"gravity_notification_informative_close_icon\"\n [iconName]=\"'unsuccess'\" [title]=\"'Close'\" [iconSize]=\"'md-16'\" [attr.data-cy]=\"'notification_closeButton'\"></gravity-icon>\n\n <div class=\"title\">\n <gravity-icon class=\"title-icon\" [iconName]=\"iconByState\" [iconSize]=\"'md-16'\"></gravity-icon>\n <h1 class=\"hr-title lg-bold\" [attr.data-cy]=\"'notification_title'\">{{notificationContent.title}}</h1>\n </div>\n\n <div class=\"content\">\n <h2 class=\"hr-body md-regular\" [attr.data-cy]=\"'notification_body'\">{{notificationContent.text}}</h2>\n <h2 class=\"hr-body md-regular\" *ngIf=\"notificationContent.details\">\n Detail: <b>{{notificationContent.details}}</b>\n </h2>\n <h2 class=\"hr-body md-regular\" *ngIf=\"notificationContent.errorCode\">\n Error code: <b>{{notificationContent.errorCode}}</b>\n </h2>\n </div>\n</main>\n","import {Injectable} from '@angular/core';\nimport {GravityNotificationContent} from \"../components/gravity-notification/gravity-notification-content.interface\";\n\n@Injectable({providedIn: 'root'})\nexport class GravityInstantNotificationsService {\n public readonly notifications: GravityNotificationContent[] = [];\n\n public showNotification(content: GravityNotificationContent): void {\n this.notifications.push(content);\n }\n\n public hideNotification(index: number): void {\n this.notifications.splice(index, 1);\n }\n\n public clearNotifications(): void {\n this.notifications.splice(0, this.notifications.length);\n }\n}\n","import {Component, Input} from '@angular/core';\nimport {GravityInstantNotificationsService} from \"../../services/gravity-instant-notifications.service\";\n\n@Component({\n selector: 'gravity-notification-instant-container',\n templateUrl: './gravity-notification-instant-container.component.html',\n styleUrls: ['./gravity-notification-instant-container.component.scss']\n})\nexport class GravityNotificationInstantContainerComponent {\n @Input() public delay: number = 5000;\n\n constructor(public readonly gravityInstantNotificationsService: GravityInstantNotificationsService) {\n }\n\n public iconByState(state: string): string {\n if (state === 'success') {\n return 'check';\n } else if (state === 'error') {\n return 'unsuccess';\n } else if (state === 'warning') {\n return 'warning-circle'\n }\n }\n}\n","<ngb-toast [autohide]=\"true\" [delay]=\"delay\"\n\n (hidden)=\"gravityInstantNotificationsService.hideNotification(i)\"\n\n *ngFor=\"let notification of gravityInstantNotificationsService.notifications; index as i\">\n <main class=\"alert-content {{notification.state}}\" [attr.data-cy]=\"'instantNotification'\">\n <gravity-icon class=\"close\" (click)=\"gravityInstantNotificationsService.hideNotification(i)\"\n data-cy=\"gravity_notification_instant_close_icon\" [iconName]=\"'unsuccess'\" [iconSize]=\"'md-16'\"\n [title]=\"'Close'\" [attr.data-cy]=\"'instantNotification_closeButton'\"></gravity-icon>\n\n <div class=\"title\">\n <gravity-icon class=\"title-icon\" [iconName]=\"iconByState(notification.state)\" [iconSize]=\"'md-16'\"></gravity-icon>\n <h1 class=\"hr-title md-bold\" [attr.data-cy]=\"'instantNotification_title'\">{{notification.title}}</h1>\n </div>\n\n <div class=\"content\">\n <h2 class=\"hr-body sm-regular\" [attr.data-cy]=\"'notification_body'\">{{notification.text}}</h2>\n <h2 class=\"hr-body sm-regular\" *ngIf=\"notification.errorCode\">\n Error code: <b>{{notification.errorCode}}</b>\n </h2>\n </div>\n </main>\n</ngb-toast>\n","import {AfterViewInit, Component, EventEmitter, Input, Output} from '@angular/core';\n\n@Component({\n selector: 'gravity-attach-file',\n templateUrl: './gravity-attach-file.component.html',\n styleUrls: ['./gravity-attach-file.component.scss']\n})\nexport class GravityAttachFileComponent implements AfterViewInit {\n @Output('response') public fileValueAsBase64StringResponse: EventEmitter<string> = new EventEmitter();\n\n @Input() public currentLang: string = 'en';\n @Input() public cypressTag: string;\n @Input() public inputId: string = '';\n @Input() public label: string;\n @Input() public required: boolean;\n @Input() public state: 'readonly' | 'disabled' | 'enabled' = \"enabled\";\n @Input() public supportedDocumentTypes: ('*' | '.pdf' | '.doc' | '.docx' | '.jpg' | '.png' | '.jpeg' | 'audio/*' | 'video/*' | 'image/*')[];\n @Input() public supportTextContent: string;\n @Input() public supportTextType: 'neutro' | 'negative' | 'positive';\n\n public file: File;\n public supportedTypes: string = '';\n\n ngAfterViewInit(): void {\n if (this.supportedDocumentTypes) {\n this.supportedDocumentTypes.forEach((value: string, index: number) => {\n this.supportedTypes += value;\n\n if (index != this.supportedDocumentTypes.length - 1) {\n this.supportedTypes += ',';\n }\n })\n } else {\n this.supportedTypes = \"*\";\n }\n }\n\n public handleFileInput($event: any) {\n this.file = $event.target.files[0];\n if (this.file) {\n GravityAttachFileComponent.convertFileToBase64(this.file).then((base64String: string) => {\n this.fileValueAsBase64StringResponse.emit(base64String);\n }).catch((error) => {\n console.error('Error loading file:', error.message);\n });\n }\n }\n\n public static convertFileToBase64(file: File): Promise<string> {\n return new Promise<string>((resolve, reject) => {\n const reader = new FileReader();\n\n reader.onload = () => {\n const base64String = reader.result as string;\n const base64WithoutPrefix = base64String.split(',')[1];\n resolve(base64WithoutPrefix);\n };\n\n reader.onerror = () => {\n reject(new Error('Failed to read the file.'));\n };\n\n reader.readAsDataURL(file);\n });\n }\n\n public removeFile(): void {\n this.file = null;\n this.fileValueAsBase64StringResponse.emit('');\n }\n}\n","<label class=\"hr-body sm-regular {{state}}\" [class.empty]=\"!file\" [class.full-input]=\"file\" *ngIf=\"label\">\n {{label}}\n <ng-container *ngIf=\"required\">\n <ng-container *ngIf=\"currentLang == 'es'\">- Requerido <span class=\"text-negative\">*</span></ng-container>\n <ng-container *ngIf=\"currentLang == 'en'\">- Required <span class=\"text-negative\">*</span></ng-container>\n </ng-container>\n <ng-container *ngIf=\"state == 'readonly'\">\n <ng-container *ngIf=\"currentLang == 'es'\">- Sólo lectura</ng-container>\n <ng-container *ngIf=\"currentLang == 'en'\">- Readonly</ng-container>\n </ng-container>\n <ng-container *ngIf=\"state == 'disabled'\">\n <ng-container *ngIf=\"currentLang == 'es'\">- Deshabilitado</ng-container>\n <ng-container *ngIf=\"currentLang == 'en'\">- Disabled</ng-container>\n </ng-container>\n</label>\n<div class=\"gravity-attach-file {{state}}\" [class.empty]=\"!file\" [class.full-input]=\"file\">\n <ng-container *ngIf=\"!file\">\n <input autocomplete=\"off\" class=\"hr-label md-regular\" hidden id=\"fileInput-{{inputId}}\" type=\"file\"\n [accept]=\"supportedTypes\"\n [attr.data-cy]=\"cypressTag\"\n [attr.disabled]=\"state == 'disabled' ? true : null\"\n [attr.readonly]=\"state == 'readonly' ? true : null\"\n\n (change)=\"handleFileInput($event)\">\n <label for=\"fileInput-{{inputId}}\">\n <gravity-button [iconName]=\"'clip'\" [type]=\"'tertiary'\" [size]=\"'md'\">\n {{label}}\n </gravity-button>\n </label>\n </ng-container>\n <ng-container *ngIf=\"file\">\n <label>\n <gravity-button (click)=\"removeFile()\" [iconName]=\"'clip'\" [type]=\"'tertiary'\" [size]=\"'md'\">\n {{currentLang == 'en' ? 'Remove file' : 'Remover archivo'}}\n </gravity-button>\n </label>\n <h3 class=\"hr-body sm-bold\">{{currentLang == 'en' ? 'File' : 'Archivo'}}: {{file.name}}</h3>\n </ng-container>\n</div>\n<p class=\"hr-body sm-regular support-text text-{{supportTextType}}\" *ngIf=\"supportTextContent\">\n {{supportTextContent}}\n</p>\n","import {\n AfterViewInit,\n Component,\n ElementRef,\n HostListener,\n Input,\n OnChanges,\n Renderer2,\n SimpleChanges,\n ViewChild\n} from '@angular/core';\n\n@Component({\n selector: 'gravity-table',\n templateUrl: './gravity-table.component.html',\n styleUrls: ['./gravity-table.component.scss']\n})\nexport class GravityTableComponent implements AfterViewInit, OnChanges {\n @Input() public tableDensity: 'standard' | 'compressed' = \"standard\";\n @Input() public tableSizeInput: 'xl' | 'lg' | 'md' | 'sm' | 'auto' = \"auto\";\n @ViewChild('tableContainer') public readonly tableContainer: ElementRef;\n\n private tableElement: ElementRef = null;\n public tableId: string;\n public tableSize: 'xl' | 'lg' | 'md' | 'sm' = 'xl';\n\n constructor(private readonly renderer: Renderer2) {\n let milliseconds: number = new Date().getTime();\n let randomNumber: number = Math.random() * 10;\n\n this.tableId = '' + (milliseconds * randomNumber / 2);\n }\n\n ngAfterViewInit(): void {\n this.tableElement = this.tableContainer?.nativeElement?.childNodes[0];\n this.renderer.setAttribute(this.tableElement, 'table-id', this.tableId);\n this.initializeComponent();\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (this.tableElement) {\n if (changes['tableDensity']) {\n this.adjustTableDensity(changes['tableDensity'].currentValue);\n }\n\n if (changes['tableSizeInput']) {\n this.tableSizeInput = changes['tableSizeInput'].currentValue;\n this.onResize();\n }\n }\n }\n\n private getTableHeaders(): string[] {\n let tableHeaderItems: NodeList = document.querySelectorAll('table[table-id=\"' + this.tableId + '\"] thead tr th');\n let tableHeaders: string[] = [];\n\n tableHeaderItems.forEach((tableHeaderItem: Node) => {\n tableHeaders.push(tableHeaderItem.childNodes[0].nodeValue);\n });\n\n return tableHeaders;\n }\n\n public initializeComponent(): void {\n let tableHeaders: string[] = this.getTableHeaders();\n this.initializeTable(tableHeaders);\n this.adjustTableDensity(this.tableDensity);\n this.adjustButtonsSize();\n this.onResize();\n }\n\n private initializeTable(tableHeaders: string[]): void {\n //Set corresponding tableHeader as an attribute of each td\n let tableBody: NodeList = document.querySelectorAll('table[table-id=\"' + this.tableId + '\"] tbody tr td');\n tableBody.forEach((tableBodyRow: Node, index: number) => {\n this.renderer.setAttribute(tableBodyRow, 'header-name', tableHeaders[index % tableHeaders.length]);\n });\n\n //Creates a copy of mobile-menu-trigger element for each tr\n let tableBodyRows: NodeList = document.querySelectorAll('table[table-id=\"' + this.tableId + '\"] tbody tr');\n let closeButtons: NodeList = document.querySelectorAll('gravity-button[id-reference=\"close-button\"]');\n\n tableBodyRows.forEach((tr: Node, index: number) => {\n let actionColum: NodeList = null;\n\n if (tr.firstChild) {\n actionColum = tr.firstChild.parentElement.querySelectorAll('td.actions-column');\n }\n\n if (actionColum?.length > 0) {\n let mobileMenuTrigger: HTMLDivElement = document.createElement('div');\n this.renderer.addClass(mobileMenuTrigger, 'mobile-menu-trigger');\n this.renderer.setAttribute(mobileMenuTrigger, 'cloned-node', 'true');\n\n let menuToggle: HTMLDivElement = document.createElement('div');\n this.renderer.addClass(menuToggle, 'menu-toggle');\n menuToggle.appendChild(document.createElement('span'));\n menuToggle.appendChild(document.createElement('span'));\n menuToggle.appendChild(document.createElement('span'));\n menuToggle.addEventListener(\"click\", () => {\n if (menuToggle.classList.contains('open')) {\n this.renderer.removeClass(menuToggle, 'open');\n this.renderer.removeClass(menuToggle.parentElement.lastElementChild, 'open');\n } else {\n this.renderer.addClass(menuToggle, 'open');\n this.renderer.addClass(menuToggle.parentElement.lastElementChild, 'open');\n }\n });\n mobileMenuTrigger.appendChild(menuToggle);\n\n let panel: HTMLDivElement = document.createElement('div');\n this.renderer.addClass(panel, 'panel');\n\n let closeButtonFromNodeList: Node = closeButtons.item(index);\n let closeButtonRemoved: Node = closeButtonFromNodeList.parentNode.removeChild(closeButtonFromNodeList);\n this.renderer.setAttribute(closeButtonRemoved, 'cloned-button', 'true');\n closeButtonRemoved.addEventListener(\"click\", () => {\n this.renderer.removeClass(menuToggle, 'open');\n this.renderer.removeClass(menuToggle.parentElement.lastElementChild, 'open');\n });\n\n panel.append(closeButtonRemoved);\n\n mobileMenuTrigger.appendChild(panel);\n\n tr.insertBefore(mobileMenuTrigger, tr.firstChild);\n }\n });\n }\n\n private adjustTableDensity(densityValue: 'standard' | 'compressed'): void {\n this.renderer.removeClass(this.tableElement, 'standard-table');\n this.renderer.removeClass(this.tableElement, 'compressed-table');\n\n this.renderer.addClass(this.tableElement, densityValue + '-table');\n }\n\n private adjustButtonsSize(): void {\n let actionsColumns: NodeList = document.querySelectorAll('table[table-id=\"' + this.tableId + '\"] .actions-column');\n actionsColumns.forEach((actionsColumn: Node) => {\n actionsColumn.childNodes.forEach((gravityButton: Node) => {\n let button: Node = gravityButton.childNodes[0];\n\n this.renderer.removeClass(button, 'gravity-size-lg');\n this.renderer.removeClass(button, 'gravity-size-md');\n this.renderer.removeClass(button, 'gravity-size-sm');\n this.renderer.removeClass(button, 'lg-bold');\n this.renderer.removeClass(button, 'md-bold');\n this.renderer.removeClass(button, 'sm-bold');\n\n this.renderer.addClass(button, 'gravity-size-sm');\n this.renderer.addClass(button, 'sm-bold');\n });\n });\n }\n\n @HostListener('window:resize', ['$event'])\n private onResize(): void {\n if (window.innerWidth <= 576) {\n this.tableSize = 'sm';\n } else if (window.innerWidth <= 992) {\n this.tableSize = 'md';\n } else if (window.innerWidth <= 1440) {\n this.tableSize = 'lg';\n } else {\n this.tableSize = 'xl';\n }\n\n this.adjustTableSize();\n }\n\n private adjustTableSize(): void {\n this.renderer.removeClass(this.tableElement, 'sm-table');\n this.renderer.removeClass(this.tableElement, 'md-table');\n this.renderer.removeClass(this.tableElement, 'lg-table');\n this.renderer.removeClass(this.tableElement, 'xl-table');\n\n if (this.tableSizeInput != 'auto') {\n this.tableSize = this.tableSizeInput;\n }\n\n this.renderer.addClass(this.tableElement, this.tableSize + '-table');\n this.adjustTable();\n }\n\n private adjustTable(): void {\n if (this.tableSize == 'md' || this.tableSize == 'sm') {\n let tableBodyRows: NodeList = document.querySelectorAll('table[table-id=\"' + this.tableId + '\"] tbody tr');\n\n tableBodyRows.forEach((tr: Node) => {\n if (tr.firstChild) {\n let trActionsColum: Node = tr.firstChild.parentElement.querySelectorAll('td.actions-column')[0];\n let mobileMenuTrigger: Node = tr.firstChild.parentElement.querySelectorAll('.mobile-menu-trigger[cloned-node=\"true\"]')[0];\n\n if (mobileMenuTrigger) {\n let mobileMenuTriggerPanel: Node = mobileMenuTrigger.lastChild;\n\n if (trActionsColum && mobileMenuTriggerPanel) {\n this.appendNodesList(mobileMenuTriggerPanel, trActionsColum.childNodes);\n }\n }\n }\n });\n }\n\n if (this.tableSize == 'lg' || this.tableSize == 'xl') {\n let tableBodyRows: NodeList = document.querySelectorAll('table[table-id=\"' + this.tableId + '\"] tbody tr');\n\n tableBodyRows.forEach((tr: Node) => {\n if (tr.firstChild) {\n let trActionsColum: Node = tr.firstChild.parentElement.querySelectorAll('td.actions-column')[0];\n let mobileMenuTrigger: Node = tr.firstChild.parentElement.querySelectorAll('.mobile-menu-trigger[cloned-node=\"true\"]')[0];\n\n if (trActionsColum && mobileMenuTrigger) {\n this.appendNodesList(trActionsColum, mobileMenuTrigger.lastChild.childNodes);\n }\n }\n });\n }\n }\n\n private appendNodesList(elementToAppend: Node, nodesList: NodeListOf<ChildNode>): Node {\n if (this.tableSize == 'md' || this.tableSize == 'sm') {\n let nodeListIndex: number = nodesList.length - 1;\n\n while (nodesList.length != 0) {\n let removedNode: Node = nodesList.item(nodeListIndex).parentNode.removeChild(nodesList.item(nodeListIndex));\n elementToAppend.insertBefore(removedNode, elementToAppend.firstChild);\n nodeListIndex--;\n }\n\n return elementToAppend;\n }\n\n if (this.tableSize == 'lg' || this.tableSize == 'xl') {\n let nodeListIndex: number = nodesList.length - 1;\n\n while (nodesList.length > 1) {\n let item: Node = nodesList.item(nodeListIndex);\n let closeButtonNode: Node = item.parentNode.querySelectorAll('gravity-button[id-reference=\"close-button\"]').item(0);\n\n if (item != closeButtonNode) {\n let removedNode: Node = item.parentNode.removeChild(item);\n elementToAppend.insertBefore(removedNode, elementToAppend.firstChild);\n }\n\n nodeListIndex--;\n }\n\n return elementToAppend;\n }\n }\n}\n","<div class=\"table-container {{tableSize}}\" #tableContainer>\n <ng-content></ng-content>\n</div>\n\n<gravity-button id-reference=\"close-button\" [iconName]=\"'unsuccess'\" [type]=\"'tertiary'\" [size]=\"'sm'\">Close menu</gravity-button>\n<gravity-button id-reference=\"close-button\" [iconName]=\"'unsuccess'\" [type]=\"'tertiary'\" [size]=\"'sm'\">Close menu</gravity-button>\n<gravity-button id-reference=\"close-button\" [iconName]=\"'unsuccess'\" [type]=\"'tertiary'\" [size]=\"'sm'\">Close menu</gravity-button>\n<gravity-button id-reference=\"close-button\" [iconName]=\"'unsuccess'\" [type]=\"'tertiary'\" [size]=\"'sm'\">Close menu</gravity-button>\n<gravity-button id-reference=\"close-button\" [iconName]=\"'unsuccess'\" [type]=\"'tertiary'\" [size]=\"'sm'\">Close menu</gravity-button>\n<gravity-button id-reference=\"close-button\" [iconName]=\"'unsuccess'\" [type]=\"'tertiary'\" [size]=\"'sm'\">Close menu</gravity-button>\n<gravity-button id-reference=\"close-button\" [iconName]=\"'unsuccess'\" [type]=\"'tertiary'\" [size]=\"'sm'\">Close menu</gravity-button>\n<gravity-button id-reference=\"close-button\" [iconName]=\"'unsuccess'\" [type]=\"'tertiary'\" [size]=\"'sm'\">Close menu</gravity-button>\n<gravity-button id-reference=\"close-button\" [iconName]=\"'unsuccess'\" [type]=\"'tertiary'\" [size]=\"'sm'\">Close menu</gravity-button>\n<gravity-button id-reference=\"close-button\" [iconName]=\"'unsuccess'\" [type]=\"'tertiary'\" [size]=\"'sm'\">Close menu</gravity-button>\n<gravity-button id-reference=\"close-button\" [iconName]=\"'unsuccess'\" [type]=\"'tertiary'\" [size]=\"'sm'\">Close menu</gravity-button>\n","export enum NodeSelectedState {\n checked,\n unChecked,\n indeterminate\n}\n","import {Injectable, OnDestroy} from '@angular/core';\nimport {BehaviorSubject, Observable, Subscription} from 'rxjs';\nimport {debounceTime, distinctUntilChanged} from 'rxjs/operators';\nimport {NodeItem} from '../models/node-item';\nimport {NodeState} from '../models/node-state';\nimport {NodeSelectedState} from '../models/node-selected-state';\nimport {TreeCallbacks} from '../models/tree-callbacks';\n\n@Injectable()\nexport class TreeService implements OnDestroy {\n private readonly filterChangeSubjectSubscription: Subscription;\n\n public callbacks: TreeCallbacks;\n public filterValue: string = '';\n public nodeItems: NodeItem<any>[];\n public selectedItems: any[] = [];\n public treeState: NodeState[];\n\n private filterChangeSubject = new BehaviorSubject(this.filterValue);\n public selectedItemsSubject = new BehaviorSubject(this.selectedItems);\n private selectedStates: NodeState[] = [];\n\n constructor() {\n this.filterChangeSubjectSubscription = this.filterChangeSubject.pipe(debounceTime(300), distinctUntilChanged()).subscribe(() => {\n this.filterTraverse(this.treeState, this.filterValue);\n });\n }\n\n ngOnDestroy() {\n this.filterChangeSubjectSubscription.unsubscribe();\n }\n\n public connect(): Observable<any[]> {\n return this.selectedItemsSubject.asObservable();\n }\n\n public setInitialState(): void {\n this.setInitialSelectedState();\n\n this.treeState.forEach(state => {\n this.reEvaluateSelectedState(state);\n });\n\n this.selectedItemsSubject.next(this.selectedItems);\n }\n\n public setInitialSelectedState(): void {\n this.traverseAndInitialize(this.treeState);\n\n this.treeState.forEach(state => {\n this.reEvaluateSelectedState(state);\n });\n\n this.selectedItemsSubject.next(this.selectedItems);\n }\n\n private traverseAndInitialize(states: NodeState[]): void {\n for (const state of states) {\n if (state.nodeItem.selected && state.showCheckbox && !state.disabled) {\n state.selected = true;\n state.selectedState = NodeSelectedState.checked;\n\n if (!this.selectedItems.includes(state.nodeItem.item)) {\n this.selectedItems.push(state.nodeItem.item);\n this.selectedStates.push(state);\n }\n }\n\n if (state.children?.length) {\n this.traverseAndInitialize(state.children);\n }\n }\n }\n\n\n public clear(): void {\n for (let state of this.selectedStates) {\n state.selected = false;\n state.selectedState = NodeSelectedState.unChecked;\n }\n\n this.selectedItems.length = 0;\n this.selectedStates.length = 0;\n }\n\n private filterTraverse(states: NodeState[], filter: string): boolean {\n let results: boolean[] = [];\n\n for (let state of states) {\n if (state.children.length > 0) {\n state.hasFilteredChildren = false;\n state.hasFilteredChildren = this.filterTraverse(state.children, filter);\n\n if (this.applyFilter(state, filter)) {\n state.hasFilteredChildren = true;\n }\n\n results.push(state.hasFilteredChildren);\n }\n }\n\n return results.some((item: boolean) => item);\n }\n\n private applyFilter(state: NodeState, filter: string): boolean {\n state.filteredChildren = this.filter(state.children, filter);\n return state.filteredChildren.length > 0;\n }\n\n private filter(states: NodeState[], value: string): NodeState[] {\n return states.filter((nodeState: NodeState) => nodeState.hasFilteredChildren || value === '' || nodeState.nodeItem.name.toLowerCase().indexOf(value) !== -1);\n }\n\n public checkboxClick(state: NodeState): void {\n this.toggleSelectedState(state, false);\n\n if (this.callbacks?.toggle) {\n this.callbacks.toggle(state.nodeItem);\n }\n }\n\n private toggleSelectedState(state: NodeState, ignoreDisabled: boolean): void {\n if (state.disabled && !ignoreDisabled) {\n return;\n }\n\n if (state.selectedState === NodeSelectedState.unChecked) {\n state.selectedState = NodeSelectedState.checked;\n state.selected = true;\n if (state.showCheckbox) {\n this.addSelected(state);\n }\n this.selectParents(state.parent);\n } else {\n\n this.setUnchecked(state, state.showCheckbox, ignoreDisabled);\n }\n\n this.selectedItemsSubject.next(this.selectedItems);\n\n if (state.parent) {\n this.childStateChanged(state.parent);\n }\n }\n\n private selectParents(state: NodeState | null): void {\n while (state) {\n if (state.showCheckbox) {\n state.selectedState = NodeSelectedState.checked;\n state.selected = true;\n this.addSelected(state);\n }\n state = state.parent;\n }\n }\n\n private setUnchecked(state: NodeState, propagate: boolean = false, ignoreDisabled?: boolean): void {\n if (state.disabled && !ignoreDisabled) {\n return;\n }\n\n if (state.showCheckbox) {\n state.selectedState = NodeSelectedState.unChecked;\n state.selected = false;\n\n this.removeSelected(state.nodeItem.item);\n\n if (this.callbacks?.unSelect) {\n this.callbacks.unSelect(state.nodeItem);\n }\n }\n\n if (propagate) {\n for (const child of state.children) {\n this.setUnchecked(child, propagate, ignoreDisabled);\n }\n }\n\n if (state.parent) {\n this.childStateChanged(state.parent);\n }\n }\n\n private removeSelected(item: any): void {\n let index = this.selectedItems.indexOf(item);\n if (index !== -1) {\n this.selectedItems.splice(index, 1);\n }\n let stateIndex = this.selectedStates.findIndex(s => s.nodeItem.item === item);\n if (stateIndex !== -1) {\n this.selectedStates.splice(stateIndex, 1);\n }\n this.selectedItemsSubject.next(this.selectedItems);\n }\n\n private static hasNoChildren(state: NodeState): boolean {\n return !state.children || state.children.length === 0;\n }\n\n private addSelected(state: NodeState): void {\n if (this.selectedItems.indexOf(state.nodeItem.item) === -1) {\n this.selectedItems.push(state.nodeItem.item);\n this.selectedStates.push(state);\n if (this.callbacks?.select) {\n this.callbacks.select(state.nodeItem);\n }\n }\n\n let current = state.parent;\n while (current) {\n if (this.selectedItems.indexOf(current.nodeItem.item) === -1) {\n this.selectedItems.push(current.nodeItem.item);\n this.selectedStates.push(current);\n }\n current = current.parent;\n }\n\n this.selectedItemsSubject.next(this.selectedItems);\n }\n\n public reEvaluateSelectedState(state: NodeState): void {\n if (!TreeService.hasNoChildren(state)) {\n this.childStateChanged(state);\n\n for (const child of state.children) {\n this.reEvaluateSelectedState(child);\n }\n }\n }\n\n private childStateChanged(state: NodeState): void {\n if (this.anyChildSelected(state)) {\n if (this.allChildrenSelected(state)) {\n if (state.showCheckbox) {\n state.selectedState = NodeSelectedState.checked;\n state.selected = true;\n if (state.nodeItem.id !== '0' && this.selectedItems.indexOf(state.nodeItem.item) === -1) {\n this.selectedItems.push(state.nodeItem.item);\n this.selectedStates.push(state);\n }\n } else {\n state.selectedState = NodeSelectedState.indeterminate;\n state.selected = false;\n }\n } else {\n state.selectedState = NodeSelectedState.indeterminate;\n state.selected = false;\n }\n } else if (!state.selected) {\n this.setUnchecked(state, false);\n }\n\n if (state.parent) {\n this.childStateChanged(state.parent);\n }\n\n this.selectedItemsSubject.next(this.selectedItems);\n }\n\n private anyChildSelected(state: NodeState): boolean {\n\n\n return state.children.find((item: NodeState) => item.selectedState === NodeSelectedState.checked || item.selectedState === NodeSelectedState.indeterminate) != null;\n }\n\n public static initState(parent: NodeState, nodeItem: NodeItem<any>): NodeState {\n return {\n parent: parent,\n children: [],\n filteredChildren: [],\n hasFilteredChildren: false,\n nodeItem: nodeItem,\n expanded: nodeItem.expanded !== false,\n disabled: nodeItem.disabled === true,\n selectedState: NodeSelectedState.unChecked,\n selected: false,\n showCheckbox: nodeItem.showCheckbox\n };\n }\n\n private allChildrenSelected(state: NodeState): boolean {\n if (state.nodeItem.children) {\n return state.children.every(it => it.selectedState === NodeSelectedState.checked) && state.children.length === state.nodeItem.children.length;\n } else {\n return state.children.every(it => it.selectedState === NodeSelectedState.checked);\n }\n }\n\n public filterChanged(value: string) {\n this.filterValue = value;\n this.filterChangeSubject.next(value);\n }\n}\n","import {Component, Input} from '@angular/core';\nimport {NodeState} from '../../models/node-state';\n\n@Component({\n selector: 'node-toggle',\n templateUrl: './node-toggle.component.html',\n styleUrls: ['./node-toggle.component.scss']\n})\nexport class NodeToggleComponent {\n @Input() public state: NodeState;\n}\n","<div class=\"node-toggle-wrapper\" [class.collapsable]=\"state.nodeItem?.children?.length > 0\"\n (click)=\"state.expanded = !state.expanded\">\n <gravity-icon [iconName]=\"state.expanded ? 'arrow-down' : 'arrow-right'\" [iconSize]=\"'md-16'\"\n *ngIf=\"state.nodeItem?.children?.length > 0\"></gravity-icon>\n</div>\n","import {Component, Input} from '@angular/core';\nimport {TreeService} from '../../service/tree-service';\nimport {NodeState} from \"../../models/node-state\";\n\n@Component({\n selector: 'node-checkbox',\n templateUrl: './node-checkbox.component.html',\n styleUrls: ['./node-checkbox.component.scss']\n})\nexport class NodeCheckboxComponent {\n @Input() public state: NodeState;\n\n constructor(private readonly treeService: TreeService) {\n }\n\n public clickOnCheckbox(): void {\n if (!this.state.disabled) {\n this.treeService.checkboxClick(this.state);\n\n setTimeout(() => {\n this.treeService.reEvaluateSelectedState(this.state);\n }, 1);\n }\n }\n}\n","<gravity-icon class=\"border-radius-sm checkbox-icon\" [class.unselect]=\"state.selectedState == 1\"\n [class.select]=\"state.selectedState != 1\" [class.disabled]=\"state.disabled\"\n (click)=\"clickOnCheckbox()\"\n [iconName]=\"state.selectedState === 2 ? 'checkbox-dash' : 'check'\"\n [iconSize]=\"'lg-24'\"></gravity-icon>\n","import {Component, Input} from '@angular/core';\nimport {NodeState} from '../../models/node-state';\n\n@Component({\n selector: 'node-name',\n templateUrl: './node-name.component.html',\n styleUrls: ['./node-name.component.scss']\n})\nexport class NodeNameComponent {\n @Input() public state: NodeState;\n}\n","<div [class.disabled]=\"state.disabled\" class=\"node-name\">\n <span class=\"hr-label md-regular\">{{state.nodeItem.name}}</span>\n</div>\n","import {Component, Input} from '@angular/core';\nimport {NodeState} from '../models/node-state';\n\n@Component({\n selector: 'tree-node',\n templateUrl: './node.component.html',\n styleUrls: ['./node.component.scss']\n})\nexport class NodeComponent {\n @Input() public nodeState: NodeState;\n}\n","<div class=\"node-container\">\n <div class=\"node-content\">\n <node-toggle [state]=\"nodeState\"></node-toggle>\n <node-checkbox [state]=\"nodeState\" *ngIf=\"nodeState.showCheckbox\"></node-checkbox>\n <node-name [state]=\"nodeState\"></node-name>\n </div>\n <div class=\"collapsible-wrapper\" *ngIf=\"nodeState.nodeItem.children\"\n [class.collapsed]=\"!nodeState.expanded && nodeState.nodeItem.children.length > 0 && nodeState.filteredChildren.length > 0\">\n <div class=\"collapsible\">\n <tree-node class=\"node-offset\" [nodeState]=\"child\"\n *ngFor=\"let child of nodeState.filteredChildren\"></tree-node>\n </div>\n </div>\n</div>\n","import {Component, EventEmitter, Input, OnChanges, OnDestroy, Output, SimpleChanges} from '@angular/core';\nimport {TreeService} from \"./service/tree-service\";\nimport {Subscription, timer} from \"rxjs\";\nimport {NodeItem} from \"./models/node-item\";\nimport {TreeCallbacks} from \"./models/tree-callbacks\";\nimport {NodeState} from \"./models/node-state\";\n\n@Component({\n selector: 'gravity-tree-view',\n templateUrl: './gravity-tree-view.component.html',\n styleUrls: ['./gravity-tree-view.component.scss'],\n providers: [TreeService]\n})\nexport class GravityTreeViewComponent implements OnDestroy, OnChanges {\n private readonly treeServiceSubscription: Subscription;\n\n @Input() callbacks: TreeCallbacks;\n @Input() nodeItems: NodeItem<any>[];\n @Input() showFilterInput: boolean = false;\n @Output() selectedItems = new EventEmitter<any>();\n\n constructor(public readonly treeService: TreeService) {\n this.treeServiceSubscription = treeService.connect().subscribe((items: any[]) => {\n const subscription = timer(0).subscribe(() => {\n this.selectedItems.emit(items);\n subscription.unsubscribe();\n });\n });\n }\n\n ngOnDestroy() {\n this.treeServiceSubscription.unsubscribe();\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes.callbacks) {\n this.treeService.callbacks = this.callbacks;\n }\n\n if (changes.nodeItems) {\n this.initialize();\n }\n }\n\n public initialize(): void {\n this.treeService.callbacks = this.callbacks;\n this.treeService.nodeItems = this.nodeItems;\n this.treeService.treeState = this.initTreeStructure(null, this.treeService.nodeItems);\n\n this.treeService.clear();\n this.treeService.setInitialState();\n }\n\n private initTreeStructure(parent: NodeState, nodeItems: NodeItem<any>[]): NodeState[] {\n const treeStructure: NodeState[] = [];\n\n nodeItems.forEach((nodeItem: NodeItem<any>) => {\n const nodeState: NodeState = TreeService.initState(parent, nodeItem);\n\n if (nodeItem.children) {\n nodeState.children = this.initTreeStructure(nodeState, nodeItem.children);\n nodeState.filteredChildren = nodeState.children;\n }\n\n treeStructure.push(nodeState);\n });\n\n return treeStructure;\n }\n\n public changeFilter(newValue: string): void {\n this.treeService.filterChanged(newValue.toLowerCase());\n }\n}\n","<gravity-text-field [label]=\"'Change filter'\" *ngIf=\"showFilterInput\"\n (response)=\"changeFilter($event)\"></gravity-text-field>\n<tree-node [nodeState]=\"state\" *ngFor=\"let state of treeService.treeState\"></tree-node>\n","import {Component, EventEmitter, Input, Output} from '@angular/core';\n\n@Component({\n selector: 'gravity-stepper',\n templateUrl: './gravity-stepper.component.html',\n styleUrls: ['./gravity-stepper.component.scss']\n})\nexport class GravityStepperComponent {\n @Input() public currentLang: string = 'en';\n @Input() public stepLabels: string[];\n\n @Output('currentStep') public currentStepResponse: EventEmitter<number> = new EventEmitter<number>();\n\n public currentStep: number = 1;\n\n public goNext(): void {\n this.currentStep++;\n this.currentStepResponse.emit(this.currentStep);\n }\n\n public goBack(): void {\n this.currentStep--;\n this.currentStepResponse.emit(this.currentStep);\n }\n\n public reset(): void {\n this.currentStep = 1;\n this.currentStepResponse.emit(this.currentStep);\n }\n}\n","<div class=\"stepper-header\">\n <div class=\"step\" *ngFor=\"let stepLabel of stepLabels; let index = index\"\n [class.current]=\"(index + 1) == currentStep\"\n [class.pending]=\"(index + 1) > currentStep\"\n [class.completed]=\"(index + 1) < currentStep\"\n [style.--step-width]=\"(100 / stepLabels.length) + '%'\">\n <hr>\n <div class=\"step-content gravity-padding-right-md\">\n <gravity-icon class=\"border-radius-rounded gravity-margin-top-xs gravity-margin-right-sm gravity-padding-xs\"\n [style.--icon-color]=\"'var(--gravity-icon-color)'\" [iconName]=\"'check'\"\n [iconSize]=\"'xl-32'\"></gravity-icon>\n <div>\n <p class=\"step-number hr-label md-regular\">\n {{currentLang == 'es' ? 'Paso' : 'Step'}} 0{{index + 1}}\n </p>\n <p class=\"step-text hr-label md-bold\">{{stepLabel}}</p>\n <p class=\"border-radius-rounded hr-label md-regular step-state\"\n [class.current]=\"(index + 1) == currentStep\"\n [class.pending]=\"(index + 1) > currentStep\"\n [class.completed]=\"(index + 1) < currentStep\">\n {{currentLang == 'en' ? ((index + 1) == currentStep ? 'In progress' : (index + 1) > currentStep ? 'Pending' : 'Completed') : ''}}\n {{currentLang == 'es' ? ((index + 1) == currentStep ? 'En progreso' : (index + 1) > currentStep ? 'Pendiente' : 'Completado') : ''}}\n </p>\n </div>\n </div>\n </div>\n <div class=\"gravity-margin-top-xs mobile\">\n <p class=\"border-radius-xs current gravity-margin-right-xs hr-label md-regular step-state\">\n {{currentLang == 'en' ? 'In progress' : 'En progreso'}}\n </p>\n <p class=\"step-number gravity-margin-right-xs hr-label md-regular\">\n {{currentLang == 'es' ? 'Paso' : 'Step'}} 0{{currentStep}}:\n </p>\n <p class=\"step-text hr-label md-bold\">{{stepLabels[currentStep - 1]}}</p>\n </div>\n</div>\n<div class=\"stepper-content\">\n <ng-content></ng-content>\n</div>\n","import {Component, EventEmitter, Input, Output, Renderer2, ViewChild} from '@angular/core';\n\n@Component({\n selector: 'gravity-text-field-number-only',\n templateUrl: './gravity-text-field-number-only.component.html',\n styleUrls: ['./gravity-text-field-number-only.component.scss', './gravity-text-field-number-only.variables.scss']\n})\nexport class GravityTextFieldNumberOnlyComponent {\n @Output('response') public textFieldValueResponse: EventEmitter<string> = new EventEmitter();\n @ViewChild('digitContainer0', {static: false}) private digitContainer0: any;\n @ViewChild('digitContainer1', {static: false}) private digitContainer1: any;\n @ViewChild('digitContainer2', {static: false}) private digitContainer2: any;\n @ViewChild('digitContainer3', {static: false}) private digitContainer3: any;\n @ViewChild('digitContainer4', {static: false}) private digitContainer4: any;\n @ViewChild('digitContainer5', {static: false}) private digitContainer5: any;\n\n // Component\n @Input() public currentLang: string = 'en';\n @Input() public customState: 'default' | 'active' | 'hover' | 'typing' | 'typed' | 'typed-error' | 'typed-positive' | 'disabled' | 'readonly' = 'default';\n @Input() public cypressTag: string;\n @Input() public label: string;\n @Input() public required: boolean;\n @Input() public size: 'sm' | 'md' = 'md';\n @Input() public supportText: string;\n\n public focusInput: boolean = false;\n public inputValue: string = '';\n\n constructor(private readonly renderer: Renderer2) {\n }\n\n public clearInput(): void {\n this.inputValue = '';\n }\n\n public getTextFieldStatus(): string {\n if (this.customState == 'default') {\n if (!this.focusInput && !this.inputValue) {\n return 'active';\n } else if (!this.focusInput && this.inputValue) {\n return 'typed';\n } else {\n return 'typing';\n }\n } else {\n return this.customState;\n }\n }\n\n public onKeyDownEvent($event: KeyboardEvent): void {\n let navigationKeys: string[] = ['Backspace', 'Delete', 'Tab', 'Escape', 'Home', 'End', 'ArrowLeft', 'ArrowRight', 'Clear', 'Copy', 'Paste'];\n\n if (\n navigationKeys.indexOf($event.key) > -1 || // Allow: navigation keys: backspace, delete, arrows etc.\n ($event.key === 'a' && $event.ctrlKey === true) || // Allow: Ctrl+A\n ($event.key === 'c' && $event.ctrlKey === true) || // Allow: Ctrl+C\n ($event.key === 'v' && $event.ctrlKey === true) || // Allow: Ctrl+V\n ($event.key === 'x' && $event.ctrlKey === true) || // Allow: Ctrl+X\n ($event.key === 'a' && $event.metaKey === true) || // Allow: Cmd+A (Mac)\n ($event.key === 'c' && $event.metaKey === true) || // Allow: Cmd+C (Mac)\n ($event.key === 'v' && $event.metaKey === true) || // Allow: Cmd+V (Mac)\n ($event.key === 'x' && $event.metaKey === true) // Allow: Cmd+X (Mac)\n ) {\n // let it happen, don't do anything\n return;\n }\n\n // Ensure that it is a number and stop the keypress\n if (\n ($event.shiftKey || ($event.keyCode < 48 || $event.keyCode > 57)) &&\n ($event.keyCode < 96 || $event.keyCode > 105)\n ) {\n $event.preventDefault();\n }\n }\n\n public returnValue(): void {\n if (this.inputValue == '') {\n this.textFieldValueResponse.emit('');\n } else {\n this.textFieldValueResponse.emit(this.inputValue);\n }\n }\n\n public setFocus(textareaElement: HTMLTextAreaElement): void {\n let containers: any[] = [this.digitContainer0, this.digitContainer1, this.digitContainer2, this.digitContainer3, this.digitContainer4, this.digitContainer5];\n\n for (let index = 0; index < containers.length; index++) {\n if (index == textareaElement.selectionStart) {\n this.renderer.addClass(containers[index].nativeElement, 'focused');\n } else {\n this.renderer.removeClass(containers[index].nativeElement, 'focused');\n }\n }\n\n if (textareaElement.selectionStart == 6) {\n this.renderer.addClass(textareaElement, 'hide-caret');\n } else {\n this.renderer.removeClass(textareaElement, 'hide-caret');\n }\n }\n}\n","<div class=\"{{size}}\" style=\"width: fit-content\">\n <label class=\"hr-label sm-bold {{getTextFieldStatus()}}\" [class.custom-label-size]=\"size == 'sm'\" *ngIf=\"label\">\n {{label}} <span *ngIf=\"required || getTextFieldStatus() == 'typed-error'\">*</span>\n </label>\n <div class=\"text-field-number-only-wrapper {{getTextFieldStatus()}}\">\n <textarea [attr.data-cy]=\"cypressTag ? 'textFieldNumbers_'+cypressTag : null\"\n [attr.disabled]=\"customState == 'disabled' ? true : null\"\n [attr.readonly]=\"customState == 'readonly' ? true : null\"\n #textAreaElement\n\n autocomplete=\"off\"\n class=\"hr-label {{size}}-regular\"\n cols=\"6\"\n maxlength=\"6\"\n minlength=\"6\"\n inputmode=\"numeric\"\n placeholder=\"______\"\n rows=\"1\"\n type=\"text\"\n\n [(ngModel)]=\"inputValue\"\n\n (blur)=\"focusInput = false\"\n (click)=\"setFocus(textAreaElement)\"\n (focus)=\"focusInput = true\"\n (keydown)=\"onKeyDownEvent($event)\"\n (keyup)=\"setFocus(textAreaElement); returnValue()\"></textarea>\n <div class=\"digit-container\" #digitContainer0></div>\n <div class=\"digit-container\" #digitContainer1></div>\n <div class=\"digit-container\" #digitContainer2></div>\n <div class=\"digit-container\" #digitContainer3></div>\n <div class=\"digit-container\" #digitContainer4></div>\n <div class=\"digit-container\" #digitContainer5></div>\n <div class=\"overflow\"></div>\n </div>\n <p class=\"hr-label sm-regular supporting-text {{getTextFieldStatus()}}\" [class.custom-label-size]=\"size == 'sm'\"\n *ngIf=\"supportText\">\n <gravity-icon [iconName]=\"'question-circle'\" *ngIf=\"getTextFieldStatus() == 'typed-error'\"\n [iconSize]=\"'sm-12'\"></gravity-icon>\n {{supportText}}\n </p>\n <p class=\"hr-label sm-regular supporting-text {{getTextFieldStatus()}}\" [class.custom-label-size]=\"size == 'sm'\"\n *ngIf=\"!supportText && getTextFieldStatus() == 'active' && inputValue == '' && required\">\n {{currentLang == 'es' ? 'Requerido' : 'Required'}}\n </p>\n</div>\n","import {Component, EventEmitter, Input, Output} from '@angular/core';\n\n@Component({\n selector: 'gravity-icon-button',\n templateUrl: './gravity-icon-button.component.html',\n styleUrls: ['./gravity-icon-button.component.scss']\n})\nexport class GravityIconButtonComponent {\n @Input() public cypressTag: string;\n @Input() public icon: string;\n @Input() public supportText: string;\n @Input() public variant: boolean = false;\n @Input() public size: 'sm' | 'md' = 'sm';\n @Input() public type: 'primary' | 'secondary' = \"primary\";\n @Input() public state: 'active' | 'disabled' = 'active';\n @Input() public badge: { type: 'warning' | 'neutro', text?: string | null } | null = null;\n\n @Output() public clickOnIcon: EventEmitter<void> = new EventEmitter<void>();\n\n public isPressed: boolean = false;\n\n public onClick(): void {\n if (this.state != 'disabled') {\n this.clickOnIcon.emit();\n }\n }\n\n public onPress(): void {\n if (this.state !== 'disabled') {\n this.isPressed = true;\n }\n }\n\n public onRelease(): void {\n this.isPressed = false;\n }\n}\n","<div class=\"gravity-icon-button {{type}} {{isPressed ? 'pressed' : state}} {{size}}\" (click)=\"onClick()\"\n (mousedown)=\"onPress()\" (mouseup)=\"onRelease()\" (mouseleave)=\"onRelease()\" [attr.data-cy]=\"cypressTag ? 'iconButton_' + cypressTag : null\">\n <div *ngIf=\"badge && state != 'disabled'\"\n class=\"icon-button-badge{{badge.text ? '-text' : '' }} {{badge.type}}\">\n <p *ngIf=\"badge.text\"\n class=\"hr-body sm-regular\">{{ badge.text }}</p>\n </div>\n <gravity-icon [iconName]=\"icon\" [iconSize]=\"size === 'sm' ? 'md-16' : 'lg-24'\"></gravity-icon>\n <div *ngIf=\"supportText\">\n <span class=\"hr-body sm-regular\">{{ supportText }}</span>\n </div>\n</div>\n\n","import {Component, Input, OnChanges} from '@angular/core';\n\n@Component({\n selector: 'gravity-status-indicator',\n templateUrl: './gravity-status-indicator.component.html',\n styleUrls: ['./gravity-status-indicator.component.scss']\n})\nexport class GravityStatusIndicatorComponent implements OnChanges {\n @Input() public icon: string;\n @Input() public text: string;\n @Input() public cypressTag: string;\n @Input() public size: 'sm' | 'md' = 'sm';\n @Input() public type: 'primary' | 'secondary' = 'primary';\n @Input() public status: 'positive' | 'positive-secondary' | 'negative' | 'negative-secondary' | 'attention' | 'neutro' | 'disabled' = 'neutro';\n\n\n ngOnChanges() {\n this.capitalizeFirst();\n }\n\n public capitalizeFirst(): string {\n if (!this.text) return '';\n this.text = this.text.charAt(0).toUpperCase() + this.text.slice(1).toLowerCase();\n }\n\n\n}\n","<div class=\"gravity-status-indicator hr-body {{size}}-regular {{status}} {{size}}\" *ngIf=\"type === 'primary'\" [attr.data-cy]=\"cypressTag ? 'statusIndicator_' + cypressTag : null\">\n <span *ngIf=\"text\" >{{text}}</span> <gravity-icon [iconName]=\"icon\" [iconSize]=\"'sm-12'\" *ngIf=\"icon\"></gravity-icon>\n</div>\n\n<div class=\"gravity-status-indicator-dot hr-body sm-regular {{status}}\" *ngIf=\"type === 'secondary'\" [attr.data-cy]=\"cypressTag ? 'statusIndicator_' + cypressTag : null\">\n <div></div> <span>{{text}}</span>\n</div>","import {Component, EventEmitter, Input, OnChanges, OnInit, Output, SimpleChanges} from '@angular/core';\n\n@Component({\n selector: 'gravity-avatar-stack',\n templateUrl: './gravity-avatar-stack.component.html',\n styleUrls: ['./gravity-avatar-stack.component.scss']\n})\nexport class GravityAvatarStackComponent implements OnInit, OnChanges {\n @Input() public items: Array<any>;\n @Input() public size: 'lg' | 'md' | 'sm';\n @Input() public type: 'network' | 'coin';\n @Input() public selectionMode: 'single' | 'multiple' | 'none' = 'single';\n @Input() public config: { icon: string, label: string };\n @Input() public maxDisplayedItems: number;\n\n @Output() public clickOnIcon: EventEmitter<any[]> = new EventEmitter<any>();\n\n public displayedItems: any[] = [];\n public selectedIndexes: number[] = [];\n public selectedItems: Array<any> = [];\n\n ngOnChanges(changes: SimpleChanges) {\n const shouldReset =\n (changes['maxDisplayedItems'] && !changes['maxDisplayedItems'].firstChange) ||\n (changes['selectionMode'] && !changes['selectionMode'].firstChange) ||\n (changes['type'] && !changes['type'].firstChange);\n\n if (shouldReset) {\n this.selectedIndexes = [];\n this.selectedItems = [];\n\n if (changes['maxDisplayedItems']) {\n if (this.maxDisplayedItems && this.maxDisplayedItems < this.items.length) {\n this.displayedItems = this.items.slice(0, this.maxDisplayedItems);\n } else {\n this.displayedItems = this.items;\n }\n }\n }\n }\n\n ngOnInit() {\n if (this.maxDisplayedItems) {\n this.displayedItems = this.maxDisplayedItems < this.items.length ? this.items.slice(0, this.maxDisplayedItems) : this.items;\n this.selectionMode = 'none'\n } else {\n this.displayedItems = this.items;\n }\n }\n\n public onClick(index: number): void {\n if (this.selectionMode != 'none') {\n const selectedIndex = this.selectedIndexes.indexOf(index);\n\n if (this.selectionMode === 'multiple') {\n if (selectedIndex !== -1) {\n this.selectedIndexes = this.selectedIndexes.filter(i => i !== index);\n this.selectedItems = this.selectedItems.filter(item => item !== this.displayedItems[index]);\n } else {\n this.selectedIndexes.push(index);\n this.selectedItems.push(this.displayedItems[index]);\n }\n } else if (this.selectionMode === 'single') {\n if (selectedIndex === -1) {\n this.selectedIndexes = [index];\n this.selectedItems = [this.displayedItems[index]];\n } else {\n this.selectedIndexes = [];\n this.selectedItems = [];\n }\n }\n this.clickOnIcon.emit(this.selectedItems);\n }\n }\n\n}","<div class=\"stack-icon-container\">\n <ng-container *ngFor=\"let item of displayedItems; let i = index\">\n <div class=\"icon-wrapper\" [style.z-index]=\"selectedIndexes.includes(i) ? 100 : displayedItems.length - i\"\n [class.selected]=\"selectedIndexes.includes(i)\">\n <gravity-icon\n class=\"avatar-icon pointer {{size}}\"\n (click)=\"onClick(i);\" [attr.data-cy]=\"'stack-item-' + item[config.label]\"\n [iconName]=\"type + '-id-' + item[config.icon]\"\n [isCoin]=\"true\">\n </gravity-icon>\n\n <p *ngIf=\"config.label && selectionMode != 'none'\"\n class=\"hr-body sm-regular hover-text\">{{ item[config.label] }}</p>\n </div>\n </ng-container>\n <span *ngIf=\"maxDisplayedItems < items.length\">+{{ items.length - maxDisplayedItems }}</span>\n</div>","import {Component, Input} from '@angular/core';\n\n@Component({\n selector: 'gravity-generic-avatar',\n templateUrl: './gravity-generic-avatar.component.html',\n styleUrls: ['./gravity-generic-avatar.component.scss']\n})\nexport class GravityGenericAvatarComponent {\n @Input() public cypressTag: string;\n @Input() public label: string;\n @Input() public initials: string;\n @Input() public isDisabled: boolean;\n @Input() public size: 'sm' | 'md' = 'sm';\n\n public getStatus(): string {\n if (this.isDisabled) {\n return 'disabled';\n } else {\n return 'active';\n }\n }\n}\n","<div class=\"gravity-generic-avatar {{getStatus()}} {{size}}\" [attr.data-cy]=\"cypressTag ? 'genericAvatar_' + cypressTag : null\">\n <div class=\"gravity-margin-right-xxs\">\n <span class=\"hr-body sm-bold\">{{initials}}</span>\n </div>\n <label class=\"hr-body\" [ngClass]=\"size === 'sm' ? 'sm-regular' : 'md-bold'\">{{label}}</label>\n</div>","import {Component, EventEmitter, Input, Output} from '@angular/core';\n\n@Component({\n selector: 'gravity-multi-language',\n templateUrl: './gravity-multi-language.component.html',\n styleUrls: ['./gravity-multi-language.component.scss'],\n})\nexport class GravityMultiLanguageComponent {\n @Output('selectedLanguage') public selectedLanguageResponse: EventEmitter<string> = new EventEmitter<string>();\n\n @Input() public cypressTag: string;\n @Input() public languages: string[];\n @Input() public selectedLanguage: string;\n @Input() public size: 'sm' | 'md' = \"md\";\n\n\n public changeLanguage(language: string): void {\n this.selectedLanguageResponse.emit(language);\n }\n}\n","<div class=\"gravity-multi-language {{size}}\" [attr.data-cy]=\"'multilanguage'\" >\n <gravity-icon\n [iconName]=\"'language'\"\n [style.--icon-color]=\"'var(--cta-primary)'\"\n [iconSize]=\"size == 'sm' ? 'md-16' : 'lg-24'\">\n </gravity-icon>\n <div class=\"languages {{size}}\">\n <div *ngFor=\"let language of languages\">\n <span class=\"hr-body\" [attr.data-cy]=\"'multilanguage_'+language\"\n (click)=\"changeLanguage(language)\"\n [class.selected]=\"selectedLanguage === language\"\n [ngClass]=\"selectedLanguage === language ? size + '-bold' : size + '-regular'\">\n {{ language }}\n </span>\n </div>\n </div>\n</div>\n","import {Component, EventEmitter, Input, Output} from '@angular/core';\nimport {ModalButtonConfig, ModalLinkConfig} from \"./gravity-modal.model\";\n\n@Component({\n selector: 'gravity-modal',\n templateUrl: './gravity-modal.component.html',\n styleUrls: ['./gravity-modal.component.scss']\n})\nexport class GravityModalComponent {\n @Input() title: string;\n @Input() iconName: string;\n @Input() preTitle: string;\n @Input() subTitle: string;\n @Input() isVisible = false;\n @Input() state: 'positive' | 'negative' | 'warning' | 'neutral' = 'positive';\n\n @Input() link: ModalLinkConfig;\n @Input() primaryBtn: ModalButtonConfig;\n @Input() secondaryBtn: ModalButtonConfig;\n\n @Output() close = new EventEmitter<void>();\n\n closeModal() {\n this.close.emit();\n }\n\n protected readonly onclose = onclose;\n}\n","<div *ngIf=\"isVisible\" class=\"gravity-modal-cover\"></div>\n\n<div *ngIf=\"isVisible\" class=\"gravity-modal-container elevation-sm\">\n <div class=\"modal-header {{state}}\">\n\n <span class=\"hr-body sm-regular\" [class.span-margin]=\"iconName\">{{ preTitle }}</span>\n\n <div class=\"title\">\n <gravity-icon *ngIf=\"iconName\" [style.--icon-color]=\"'var(--state-color)'\"\n [size]=\"'md'\" [iconName]=\"iconName\" [iconSize]=\"'md-16'\" class=\"icon-left\"> </gravity-icon>\n\n <h1 class=\"hr-title md-bold\" [attr.data-cy]=\"'modal_title'\">{{ title }}</h1>\n </div>\n\n <span class=\"hr-body sm-regular\" [class.span-margin]=\"iconName\">{{ subTitle }}</span>\n\n <div class=\"close-button\">\n <gravity-icon [style.--icon-color]=\"'var(--text-primary)'\" [size]=\"'md'\" (click)=\"closeModal()\"\n class=\"close\" [iconName]=\"'unsuccess'\" [iconSize]=\"'md-16'\" [title]=\"'Close'\" [attr.data-cy]=\"'modal_closeButton'\"/>\n </div>\n </div>\n\n <div class=\"modal-body\" [attr.data-cy]=\"'modal_body'\"> <ng-content> </ng-content> </div>\n\n <div class=\"modal-footer\">\n <gravity-button *ngIf=\"primaryBtn?.text || primaryBtn?.icon\"\n [customState]=\"'active'\" [iconName]=\"primaryBtn?.icon\" [disabled]=\"primaryBtn.disabled\"\n [size]=\"'sm'\" [type]=\"primaryBtn?.type\" [iconPosition]=\"primaryBtn?.iconPosition || 'left'\"\n (click)=\"primaryBtn.callback?.()\" [attr.data-cy]=\"'modal_primaryButton'\">{{ primaryBtn?.text }} </gravity-button>\n\n <gravity-button *ngIf=\"secondaryBtn?.text || secondaryBtn?.icon\"\n [customState]=\"'active'\" [iconName]=\"secondaryBtn?.icon\" [disabled]=\"secondaryBtn.disabled\"\n [size]=\"'sm'\" [type]=\"secondaryBtn?.type\" [iconPosition]=\"secondaryBtn?.iconPosition || 'left'\"\n (click)=\"secondaryBtn.callback?.()\" [attr.data-cy]=\"'modal_secondaryButton'\">{{ secondaryBtn?.text }} </gravity-button>\n\n <gravity-link *ngIf=\"link?.text || link?.icon\" [linkText]=\"link?.text\" [iconName]=\"link?.icon\" (click)=\"link?.callback?.()\"\n [iconPosition]=\"link?.iconPosition || 'left'\" [state]=\"link?.state || 'active'\" [link]=\"link?.url\" [fontClass]=\"link?.fontClass\" [attr.data-cy]=\"'modal_link'\"> </gravity-link>\n </div>\n</div>\n\n\n","import {Component, EventEmitter, Input, Output} from '@angular/core';\n\n@Component({\n selector: 'gravity-tab-primary',\n templateUrl: './gravity-tab-primary.component.html',\n styleUrls: ['./gravity-tab-primary.component.scss']\n})\nexport class GravityTabPrimaryComponent {\n @Input() selected: number = 0;\n @Input() size: 'sm' | 'md' | 'lg' = 'sm';\n @Input() paddingClass: string = 'gravity-padding-left-none';\n @Input() tabs: { title: string, icon?: string, cypressTag?: string}[] = [];\n\n @Output() pressed = new EventEmitter<number>();\n\n public setActiveTab(index: number): void {\n this.selected = index;\n this.pressed.emit(index);\n }\n}\n","<div class=\"gravity-tab-primary\">\n <div class=\"tabs-container\">\n <div class=\"below-line {{paddingClass}}\"></div>\n <div class=\"tab {{size}}\" *ngFor=\"let tab of tabs; let i = index\" [class.selected]=\"selected === i\"\n [attr.data-cy]=\"tab.cypressTag ? 'tabPrimary_' + tab.cypressTag : null\" (click)=\"setActiveTab(i)\">\n <gravity-icon *ngIf=\"tab.icon\" [style.--icon-color]=\"'var(--text-highlight-primary)'\" [size]=\"'md'\"\n [iconName]=\"tab.icon\" [iconSize]=\"'md-16'\" class=\"icon-left\">\n </gravity-icon>\n <p class=\"hr-label\" [ngClass]=\"selected === i ? 'sm-bold' : 'sm-regular'\">{{tab.title}}</p>\n </div>\n <div class=\"bottom-line\"></div>\n </div>\n</div>\n\n","import { Component, Input, Output, EventEmitter } from '@angular/core';\n\n@Component({\n selector: 'gravity-tab-secondary',\n templateUrl: './gravity-tab-secondary.component.html',\n styleUrls: ['./gravity-tab-secondary.component.scss']\n})\nexport class GravityTabSecondaryComponent {\n @Input() selected: number = 0;\n @Input() size: 'sm' | 'md' = 'sm';\n @Input() fullWidth: boolean = false;\n @Input() tabs: { title: string, icon: string, cypressTag: string, disabled?: boolean }[] = [];\n\n @Output() pressed = new EventEmitter<number>();\n\n public setActiveTab(index: number): void {\n if (this.tabs[index]?.disabled) return;\n this.selected = index;\n this.pressed.emit(index);\n }\n}\n","<div class=\"gravity-tab-secondary-container\" [ngClass]=\"fullWidth ? 'full-width' : 'limited-width'\">\n <div class=\"gravity-tab-secondary\" [class.selected]=\"selected === i\" [class.disabled]=\"tab.disabled\" [class.full-width]=\"fullWidth\"\n *ngFor=\"let tab of tabs; let i = index\" [attr.data-cy]=\"tab.cypressTag ? 'tabSecondary_' + tab.cypressTag : null\" >\n <div class=\"tab-content {{size}}\" [class.selected]=\"selected === i\" [class.disabled]=\"tab.disabled\" [class.limited-width]=\"!fullWidth\" (click)=\"setActiveTab(i)\">\n <gravity-icon *ngIf=\"tab.icon\" [style.--icon-color]=\"'var(--cta-primary)'\" [size]=\"'sm'\"\n [iconName]=\"tab.icon\" [iconSize]=\"'sm-12'\" class=\"icon-left\">\n </gravity-icon>\n <p class=\"hr-label\"\n [ngClass]=\"selected === i ? (size + '-bold') : (size + '-regular')\">{{ tab.title }}</p>\n </div>\n </div>\n</div>","import { Component, Input, Output, EventEmitter } from '@angular/core';\n\n@Component({\n selector: 'gravity-editable-input',\n templateUrl: './gravity-editable-input.component.html',\n styleUrls: ['./gravity-editable-input.component.scss']\n})\nexport class GravityEditableInputComponent {\n public isFocused: boolean = false;\n\n @Input() public cypressTag: string;\n @Input() public label: string;\n @Input() public value: string = '';\n @Input() public placeholder: string;\n @Input() public errorMessage: string;\n @Input() public size: 'sm' | 'md' = 'sm';\n @Input() public readOnly: boolean = false;\n @Input() public haveError: boolean = false;\n @Input() public justNumber: boolean = false;\n\n @Output() public valueChange: EventEmitter<string> = new EventEmitter<string>();\n\n public onKeyUp(inputField: HTMLInputElement): void {\n if (this.justNumber) {\n inputField.value = inputField.value.replace(/[^0-9]/g, '');\n }\n this.haveError = inputField.value.trim() === '';\n this.valueChange.emit(inputField.value);\n }\n\n public focusInput(inputField: HTMLInputElement): void {\n inputField.focus();\n }\n}\n","<div class=\"gravity-editable-input\" [attr.data-cy]=\"cypressTag? 'editableInput_' + cypressTag: null\">\n <div class=\"editable-input-container\" [class.focus]=\"isFocused\" [class.error]=\"haveError\">\n <label *ngIf=\"label\" class=\"hr-label {{size}}-bold\">{{ label }}</label>\n <div class=\"editable-input {{size}}\" [class.read-only]=\"readOnly\">\n <input #editableInput [placeholder]=\"placeholder\" (focus)=\"isFocused = true\" (blur)=\"isFocused = false\"\n (keyup)=\"onKeyUp(editableInput)\" [disabled]=\"readOnly\" [value]=\"value\" [attr.data-cy]=\"'editableInput_textInput'\">\n <gravity-icon *ngIf=\"!readOnly\" [style.--icon-color]=\"haveError ? 'var(--negative-primary)' :\n isFocused ?'var(--outline-field-full-enabled-typing-primary)' : 'var(--text-primary)'\"\n [iconName]=\"'update'\" [size]=\"'sm'\" [iconSize]=\"'sm-12'\" (click)=\"focusInput(editableInput)\"> </gravity-icon>\n </div>\n </div>\n <div class=\"error-message\" *ngIf=\"haveError && errorMessage && !readOnly\">\n <gravity-icon [style.--icon-color]=\"'var(--negative-primary)'\" [iconName]=\"'warning-circle'\" [iconSize]=\"'sm-12'\"> </gravity-icon>\n <span class=\"hr-label sm-regular\">{{ errorMessage }}</span>\n </div>\n</div>","import { Component, Input, Output, EventEmitter } from '@angular/core';\n\n@Component({\n selector: 'gravity-card-button',\n templateUrl: './gravity-card-button.component.html',\n styleUrls: ['./gravity-card-button.component.scss']\n})\nexport class GravityCardButtonComponent {\n @Input() public cypressTag: string;\n @Input() public label: string;\n @Input() public iconName: string;\n @Input() public fullWidth: boolean = false;\n @Input() public type: 'primary' | 'secondary' = 'primary';\n @Input() public state: 'active' | 'pressed' | 'disabled' = 'active';\n @Input() public orientation: 'vrt-center' | 'vrt-left' | 'vrt-right' | 'hrt-center' | 'hrt-auto' = 'vrt-center';\n\n @Output() public clicked = new EventEmitter<void>();\n\n public onCardButtonClick(): void {\n if (this.state !== 'disabled') {\n this.clicked.emit();\n }\n }\n}\n","<div class=\"gravity-card-button\" [attr.data-cy]=\"cypressTag ? 'cardButton_' + cypressTag : null\" (click)=\"onCardButtonClick()\">\n <div class=\"card-button-container {{type}} {{orientation}}\" [class.pressed]=\"state === 'pressed'\"\n [class.disabled]=\"state === 'disabled'\" [class.full-width]=\"fullWidth\">\n <gravity-icon *ngIf=\"iconName\" [style.--icon-color]=\"'var(--card-button-color)'\" [iconName]=\"iconName\"\n [iconSize]=\"orientation === 'vrt-center' ? 'md-16' : (orientation === 'vrt-left' || orientation === 'vrt-right' || orientation === 'hrt-center') ? 'lg-24' : 'xl-32'\">\n </gravity-icon>\n <label *ngIf=\"label\" [className]=\"(orientation === 'vrt-center' || orientation === 'vrt-left' || orientation === 'vrt-right') ? 'hr-label sm-bold' : 'hr-label md-bold'\">{{ label }}</label>\n </div>\n</div>\n","import {Component, EventEmitter, Input, Output} from '@angular/core';\n\n@Component({\n selector: 'gravity-navigation-card',\n templateUrl: './gravity-navigation-card.component.html',\n styleUrls: ['./gravity-navigation-card.component.scss']\n})\nexport class GravityNavigationCardComponent {\n @Input() public cypressTag: string;\n @Input() public size: 'sm' | 'md' = 'sm';\n @Input() public state: 'active' | 'readonly' = 'active';\n\n @Input() public title: string;\n @Input() public iconName: string;\n @Input() public actionText: string;\n @Input() public description: string;\n @Input() public fullWidth: boolean = false;\n @Input() public statusIndicator: {\n status: 'positive' |'positive-secondary' | 'negative' | 'negative-secondary' | 'attention' | 'neutro' | 'disabled',\n text: string;\n icon: string | null\n };\n\n @Output() navigatorCardClicked = new EventEmitter<void>();\n\n public isPressed: boolean = false;\n\n public onNavigationCardClick() {\n if (this.state != 'readonly') {\n this.navigatorCardClicked.emit();\n }\n }\n\n public onPress(): void {\n if (this.state !== 'readonly') {\n this.isPressed = true;\n }\n }\n\n public onRelease(): void {\n this.isPressed = false;\n }\n}\n","<div class=\"gravity-navigation-card {{size}} {{isPressed ? 'pressed' : state}}\" (mousedown)=\"onPress()\"\n (mouseup)=\"onRelease()\" (mouseleave)=\"onRelease()\" [class.full-width]=\"fullWidth\" (click)=\"onNavigationCardClick()\"\n [attr.data-cy]=\"cypressTag? 'navigationCard_'+cypressTag:null\">\n <div class=\"information-content\">\n <div *ngIf=\"iconName && iconName !== ''\" class=\"icon-wrapper\">\n <gravity-icon [style.--icon-color]=\"'var(--navigation-card-icon-color)'\"\n [iconName]=\"iconName\" [size]=\"'lg'\" [iconSize]=\"'lg-24'\">\n </gravity-icon>\n </div>\n <div class=\"text-content\">\n <h1 class=\"hr-title md-bold\">{{ title }}</h1>\n <p class=\"hr-body md-regular\">{{ description }}</p>\n </div>\n </div>\n <div class=\"action-section\">\n <gravity-status-indicator *ngIf=\"statusIndicator\" [status]=\"statusIndicator.status \" [text]=\"statusIndicator.text\"\n [icon]=\"statusIndicator.icon\"></gravity-status-indicator>\n <p class=\"hr-body md-regular\">{{ actionText }}</p>\n <gravity-icon *ngIf=\"state != 'readonly'\" [style.--icon-color]=\"'var(--text-primary)'\"\n [iconName]=\"'arrow-right'\" [size]=\"'sm'\" [iconSize]=\"'md-16'\">\n </gravity-icon>\n </div>\n</div>\n","import { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'gravity-generic-avatar-secondary',\n templateUrl: './gravity-generic-avatar-secondary.component.html',\n styleUrls: ['./gravity-generic-avatar-secondary.component.scss']\n})\nexport class GravityGenericAvatarSecondaryComponent {\n @Input() label: string;\n @Input() initials: string;\n @Input() iconName: string;\n @Input() imageUrl: string;\n @Input() cypressTag: string;\n @Input() type: 'active' | 'positive' | 'negative' | 'neutral' = 'neutral';\n}\n","<div class=\"generic-avatar-secondary {{ type }}\" [attr.data-cy]=\"'genericAvatarSecondary_' + type\">\n <div class=\"avatar-outer-circle\">\n <div class=\"avatar-inner-circle\">\n <h1 *ngIf=\"initials\" class=\"hr-title lg-regular\"> {{ initials }} </h1>\n <img *ngIf=\"!initials && imageUrl\" [src]=\"imageUrl\" alt=\"avatar image\" class=\"avatar-image\" />\n <gravity-icon *ngIf=\"!initials && !imageUrl && iconName\" [iconName]=\"iconName\"> </gravity-icon>\n </div>\n </div>\n\n <div class=\"state-name\">\n <span class=\"hr-body sm-regular\"> {{ label }} </span>\n </div>\n</div>\n","import {Component, Input} from '@angular/core';\n\n@Component({\n selector: 'gravity-backdrop',\n templateUrl: './gravity-backdrop.component.html',\n styleUrls: ['./gravity-backdrop.component.scss']\n})\nexport class GravityBackdropComponent {\n @Input() visible: boolean = false;\n}\n","<div class=\"gravity-backdrop\" *ngIf=\"visible\"></div>\n<div class=\"backdrop-content\" *ngIf=\"visible\">\n <ng-content></ng-content>\n</div>\n","import {CalendarDate} from \"./date-picker.modal\";\n\nexport function getStartDate(date: Date): Date {\n\tif(date instanceof Date) {\n\t\treturn new Date(date.getFullYear(), date.getMonth(), 1);\n\t}\n\n\treturn new Date();\n}\n\nexport function changeDate(offset: number, currentDate: Date, isMonth: boolean): Date {\n const month = currentDate.getMonth();\n const year = currentDate.getFullYear();\n\n return isMonth ? new Date(year, month + offset, 1) : new Date(year + offset, month, 1);\n}\n\nexport function isPeriodAvailable(currentDate: Date, limitDate: Date, period: 'month' | 'year',\n\tdirection: 'prev' | 'next', startYearBlock?: number): boolean {\n\n\tif (period === 'month' && limitDate) {\n\t\tconst dir = direction === 'prev' ? -1 : 1;\n\t\tconst limit = new Date(limitDate.getFullYear(), limitDate.getMonth(), 1);\n\t\tconst candidate = new Date(currentDate.getFullYear(), currentDate.getMonth() + dir, 1);\n\n\t\treturn direction === 'prev' ? candidate >= limit : candidate <= limit;\n\t}\n\n\tif (period === 'year' && limitDate && startYearBlock !== undefined) {\n\t\tconst dir = direction === 'prev' ? -1 : 1;\n\t\tconst blockStart = startYearBlock + dir * 12;\n\t\tconst blockEnd = blockStart + 11;\n\n\t\tif (direction === 'prev') {\n\t\t\treturn blockEnd >= limitDate.getFullYear();\n\t\t} else {\n\t\t\treturn blockStart <= limitDate.getFullYear();\n\t\t}\n\t}\n\n\treturn true;\n}\n\nexport function dateToCalendarDay(date: Date): CalendarDate {\n return { inCurrentMonth: true, isToday: false, day: date.getDate(),\n monthYear: {month: date.getMonth(), year: date.getFullYear()}, weekDay: date.getDay() };\n}\n\nexport function dateToString(date: Date, language: 'en' | 'es'): string {\n\tconst year = date.getFullYear().toString();\n\tconst day = date.getDate().toString().padStart(2, '0');\n\tconst month = (date.getMonth() + 1).toString().padStart(2, '0');\n\n\treturn language === 'en' ? `${month}/${day}/${year}` : `${day}/${month}/${year}`;\n}\n\nexport function stringToCalendarDate(value: string, language: 'en' | 'es'): CalendarDate | null {\n\tif (!value) return null;\n\n\tconst parts = value.split('/');\n\tif (parts.length !== 3) return null;\n\n\tconst year = parseInt(parts[2], 10);\n\tconst day = parseInt(language === 'en' ? parts[1] : parts[0], 10);\n\tconst month = parseInt(language === 'en' ? parts[0] : parts[1], 10) - 1;\n\n\tif (isNaN(day) || isNaN(month) || isNaN(year)) return null;\n\tif (month < 0 || month > 11 || day < 1) return null;\n\tif (year < 1000 || year > 9999) return null;\n\n\tconst date = new Date(year, month, day);\n\n\tif (date.getFullYear() !== year || date.getMonth() !== month || date.getDate() !== day) {\n\t\treturn null;\n\t}\n\n\treturn {day, weekDay: date.getDay(), inCurrentMonth: true,\n\t\tmonthYear: { year, month }\n\t};\n}\n\nexport function stringToDate(dateStr: string, language: 'en' | 'es'): Date | null {\n\tif (!dateStr) return null;\n\n\tconst parts = dateStr.split('/');\n\tif (parts.length !== 3) return null;\n\n\tconst year = Number(parts[2]);\n\tconst day = Number(language === 'en' ? parts[1] : parts[0]);\n\tconst month = Number(language === 'en' ? parts[0] : parts[1]) -1;\n\n\treturn new Date(year, month, day);\n}\n\nexport function calendarDateToDate(cd: CalendarDate): Date {\n\tif(!cd) { return null; }\n\tconst { day, monthYear } = cd;\n\treturn new Date(monthYear.year, monthYear.month, day);\n}\n\nexport function formatDatetime(value: string | string[], formatMonth: 'short' | 'long' = 'long', language : 'en' | 'es' = 'en'): string {\n\tif (!value) return '';\n\tconst capitalize = (str: string) => str.charAt(0).toUpperCase() + str.slice(1);\n\n\tif (Array.isArray(value) && value.length === 2) {\n\t\tconst start = new Date(value[0]);\n\t\tconst end = new Date(value[1]);\n\n\t\tconst endDay = end.getDate();\n\t\tconst startDay = start.getDate();\n\t\tconst endYear = end.getFullYear();\n\t\tconst startYear = start.getFullYear();\n\t\tconst endMonth = capitalize(end.toLocaleString(language, { month: formatMonth }));\n\t\tconst startMonth = capitalize(start.toLocaleString(language, { month: formatMonth }));\n\n\t\tif (startYear === endYear) {\n\t\t\treturn `${startMonth} ${startDay} - ${endMonth} ${endDay}, ${startYear}`;\n\t\t}\n\n\t\treturn `${startMonth} ${startDay}, ${startYear} - ${endMonth} ${endDay}, ${endYear}`;\n\t}\n\n\tif (typeof value === 'string') {\n\t\tconst date = new Date(value);\n\t\tconst month = capitalize(date.toLocaleString(language, { month: formatMonth }));\n\t\tconst day = date.getDate();\n\t\tconst year = date.getFullYear();\n\n\t\treturn `${month} ${day}, ${year}`;\n\t}\n\n\treturn '';\n}\n","export const DAYS_EN: string[] = ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'];\n\nexport const DAYS_ES: string[] = ['Lun', 'Mar', 'Mié', 'Jue', 'Vie', 'Sáb', 'Dom'];\n\nexport const DAYS_SHORT_ES: string[] = ['Lu', 'Ma', 'Mi', 'Ju', 'Vi', 'Sa', 'Do'];\n\nexport const DAYS_SHORT_EN: string[] = ['Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa', 'Su'];\n\nexport const MONTHS_ES = ['Enero', 'Febrero', 'Marzo', 'Abril', 'Mayo', 'Junio',\n 'Julio', 'Agosto', 'Septiembre', 'Octubre', 'Noviembre', 'Diciembre'\n];\n\nexport const MONTHS_EN = ['January', 'February', 'March', 'April', 'May', 'June',\n 'July', 'August', 'September', 'October', 'November', 'December'\n];\n\nexport const MONTHS_SHORT_ES = ['Ene', 'Feb', 'Mar', 'Abr', 'May', 'Jun',\n 'Jul', 'Ago', 'Sep', 'Oct', 'Nov', 'Dic'\n];\n\nexport const MONTHS_SHORT_EN = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun',\n 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'\n];\n\nexport const CALENDAR_I18N = {\n\ten: {\n\t\tapply: 'Apply',\n\t\tdate_placeholder: 'mm/dd/yyyy',\n\t\tdate_unavailable: \"This date isn’t available. Please choose another one.\",\n\t\tend_after_start: 'End date must be after the start date.',\n\t\tend_date: 'End date',\n\t\tinvalid_date: 'Invalid date',\n\t\tnext_month: 'Next month',\n\t\tnext_year: 'Next year',\n\t\tnext_years: 'Next years',\n\t\tpreview_month: 'Preview month',\n\t\tpreview_year: 'Preview year',\n\t\tpreview_years: 'Preview years',\n\t\tselect_date: 'Select a date',\n\t\tselect_range: 'Select a date range',\n\t\tselect_valid_date: 'Select a valid date to continue your range.',\n\t\tstart_before_end: 'Start date must be before the end date.',\n\t\tstart_date: 'Start date',\n\t\tclear: 'Clear selection',\n\t\tno_date_applied: 'Selected dates pending application.',\n\t},\n\n\tes: {\n\t\tapply: 'Aplicar',\n\t\tclear: 'Limpiar selección',\n\t\tdate_placeholder: 'dd/mm/aaaa',\n\t\tdate_unavailable: \"Esta fecha no está disponible. Por favor, elige otra.\",\n\t\tend_after_start: 'La fecha final debe ser posterior a la fecha de inicio.',\n\t\tend_date: 'Fecha final',\n\t\tinvalid_date: 'Fecha inválida',\n\t\tnext_month: 'Mes siguiente',\n\t\tnext_year: 'Año siguiente',\n\t\tnext_years: 'Años siguientes',\n\t\tpreview_month: 'Mes anterior',\n\t\tpreview_year: 'Año anterior',\n\t\tpreview_years: 'Años anteriores',\n\t\tselect_date: 'Selecciona una fecha',\n\t\tselect_range: 'Selecciona un rango de fechas',\n\t\tselect_valid_date: 'Selecciona una fecha válida para continuar con tu rango.',\n\t\tstart_before_end: 'La fecha de inicio debe ser anterior a la final.',\n\t\tstart_date: 'Fecha inicial',\n\t\tno_date_applied: 'Fechas seleccionadas pendientes de aplicar.',\n\t}\n} as const;\n","import {CalendarDate} from \"../../shared/date-picker.modal\";\nimport {DayCalendarComponent} from \"./day-calendar.component\";\nimport {calendarDateToDate, dateToString, getStartDate, stringToCalendarDate, stringToDate, dateToCalendarDay} from \"../../shared/date-picker.utils\";\n\nexport function isPreview(component: DayCalendarComponent, day: CalendarDate): boolean {\n\tconst current = calendarDateToDate(day);\n\n\tif (component.selectedRangeStart && !component.selectedRangeEnd && component.hoveredDay) {\n\t\tconst start = calendarDateToDate(component.selectedRangeStart);\n\t\tconst hover = calendarDateToDate(component.hoveredDay);\n\t\tif (hover <= start) return false;\n\t\treturn current > start && current <= hover;\n\t}\n\n\tif (!component.selectedRangeStart && component.selectedRangeEnd && component.hoveredDay) {\n\t\tconst end = calendarDateToDate(component.selectedRangeEnd);\n\t\tconst hover = calendarDateToDate(component.hoveredDay);\n\t\tif (hover >= end) return false;\n\t\treturn current < end && current >= hover;\n\t}\n\n\treturn false;\n}\n\nexport function processPreselectedRangeDate(component: DayCalendarComponent) {\n\tlet end: Date | null = null;\n\tlet start: Date | null = null;\n\n\tsetTimeout(() => { if(!component.appearance.isMobile) { component.startDateField.focus(); } }, 0)\n\n\tif (Array.isArray(component.config.initDate)) {[start, end] = component.config.initDate;}\n\n if (start instanceof Date) {\n component.selectedRangeStart = dateToCalendarDay(start);\n setTimeout(() => {\n\t if(!component.appearance.isMobile) { component.endDateField.focus(); }\n\t\t\tcomponent.startDateField.inputValue = dateToString(start, component.appearance.language);\n\t\t}, 0);\n }\n\n if (end instanceof Date) {\n component.currentDate = getStartDate(end);\n component.selectedRangeEnd = dateToCalendarDay(end);\n\t\tsetTimeout(() => {\n\t\t\tif(!component.appearance.isMobile) { component.endDateField.focus(); }\n\t\t\tcomponent.endDateField.inputValue = dateToString(end, component.appearance.language);\n\t\t}, 0);\n\n } else if (start instanceof Date) {\n component.currentDate = getStartDate(start);\n }\n}\n\nexport function getRangeSelectionClass(component: DayCalendarComponent, day: CalendarDate): string {\n\tconst current = calendarDateToDate(day);\n\tconst start = component.selectedRangeStart ? calendarDateToDate(component.selectedRangeStart) : null;\n\tconst end = component.selectedRangeEnd ? calendarDateToDate(component.selectedRangeEnd) : null;\n\n\tif (!start && !end) {\n\t\treturn component.focused === 'start' ? 'nsl-start' : 'nsl-end';\n\t}\n\n\tif (start && !end) {\n\t\tif (current.getTime() === start.getTime()) return 'sl start';\n\t\tif (current.getTime() < start.getTime()) return 'nsl-start';\n\t\treturn 'in-slt nsl-end';\n\t}\n\n\tif (!start && end) {\n\t\tif (current.getTime() === end.getTime()) return 'sl end';\n\t\tif (current.getTime() > end.getTime()) return 'nsl-end';\n\t\treturn 'in-slt nsl-start';\n\t}\n\n\tif (start && end) {\n\t\tif(current.getTime() === start.getTime() &&\n\t\t\t start.getTime() === end.getTime())\n\t\t\t\treturn 'start sl same-sln';\n\n\t\tif (current.getTime() === start.getTime()) return 'sl start';\n\t\tif (current.getTime() < start.getTime()) return 'nsl-start';\n\t\tif (current.getTime() === end.getTime()) return 'sl end';\n\t\tif (current.getTime() > end.getTime()) return 'nsl-end';\n\t\tif (current > start && current < end) return 'sl range';\n\t\treturn 'default';\n\t}\n}\n\nexport function onSelectDaysRange(component: DayCalendarComponent, day: CalendarDate): void {\n\tconst selected = calendarDateToDate(day);\n\tconst hasEnd = !!component.selectedRangeEnd;\n\tconst hasStart = !!component.selectedRangeStart;\n\tconst language = component.appearance.language;\n\tconst endDate = hasEnd ? calendarDateToDate(component.selectedRangeEnd) : null;\n\tconst startDate = hasStart ? calendarDateToDate(component.selectedRangeStart) : null;\n\n\tObject.assign(component, {\n\t\tnotification: null,\n\t\tendDateError: '', startDateError: '',\n\t\tendFieldDisabled: false, startFieldDisabled: false,\n\t});\n\n\tconst updateField = (field: 'start' | 'end') => {\n\t\tcomponent[`selectedRange${field === 'start' ? 'Start' : 'End'}`] = day;\n\t\tcomponent[`${field}DateField`].inputValue = dateToString(selected, language);\n\n\t\tsetTimeout(() => {\n\t\t\tconst focusField = field === 'start' ?\n\t\t\t\t(component.selectedRangeEnd ? 'start' : 'end') :\n\t\t\t\t(component.selectedRangeStart ? 'end' : 'start');\n\n\t\t\tif(!component.appearance.isMobile) { component[`${focusField}DateField`].focus(); }\n\t\t\tcomponent[`${focusField}DateField`].inputElement.nativeElement.setSelectionRange(10, 10);\n\t\t}, 100);\n\t};\n\n\tif (!hasStart && !hasEnd) {\n\t\tupdateField(component.focused);\n\t\treturn;\n\t}\n\n\tif (hasStart && !hasEnd) {\n\t\tselected >= startDate! ? updateField('end') : updateField('start');\n\t\treturn;\n\t}\n\n\tif (!hasStart && hasEnd) {\n\t\tselected < endDate! ? updateField('start') : updateField('end');\n\t\treturn;\n\t}\n\n\tif (hasStart && hasEnd) {\n\t\tselected < startDate! ? updateField('start') : updateField('end');\n\t\treturn;\n\t}\n}\n\nexport function onApplyRageDate(component: DayCalendarComponent){\n const start = calendarDateToDate(component.selectedRangeStart);\n const end = calendarDateToDate(component.selectedRangeEnd);\n component.calendarResponse.emit([start, end]);\n}\n\nexport function onHoverDay(component: DayCalendarComponent, day: CalendarDate): void {\n\tconst startSelected = !!component.selectedRangeStart && !component.selectedRangeEnd;\n\tconst endSelected = !!component.selectedRangeEnd && !component.selectedRangeStart;\n\tif (startSelected || endSelected) { component.hoveredDay = day; }\n}\n\nexport function onClearHover(component: DayCalendarComponent): void {\n\tcomponent.hoveredDay = null;\n}\n\nexport function searchDate(component: DayCalendarComponent, dateStr: string, target: 'start' | 'end'): void {\n\tconst i18n = component.i18n;\n\tconst date = stringToDate(dateStr, component.appearance.language);\n\tconst calendarDate = stringToCalendarDate(dateStr, component.appearance.language);\n\tconst errorProp = target === 'start' ? 'startDateError' : 'endDateError';\n\tconst field = target === 'start' ? component.startDateField : component.endDateField;\n\tconst oppositeDisabled = target === 'start' ? 'endFieldDisabled' : 'startFieldDisabled';\n\n\tif (!dateStr) { component[oppositeDisabled] = false; return; }\n\n\tif (!calendarDate) {\n\t\tcomponent[oppositeDisabled] = true;\n\t\tcomponent[errorProp] = i18n.invalid_date;\n\t\tif(!component.appearance.isMobile) { field.focus(); }\n\t\tcomponent.notification = { text: i18n.select_valid_date, error: true };\n\t\treturn;\n\t}\n\n\tif (!validateDateLimits(component, date, target)) {\n\t\tcomponent[oppositeDisabled] = true;\n\t\treturn;\n\t}\n\n\tconst otherCalendarDate = target === 'start' ? component.selectedRangeEnd : component.selectedRangeStart;\n\tconst otherDate = otherCalendarDate ? calendarDateToDate(otherCalendarDate) : null;\n\n\tif ((target === 'start' && otherDate && date > otherDate) ||\n\t\t(target === 'end' && otherDate && date < otherDate)) {\n\t\tcomponent[oppositeDisabled] = true;\n\t\tcomponent[errorProp] = i18n.invalid_date;\n\t\tif(!component.appearance.isMobile) { field.focus(); }\n\t\tcomponent.notification = { text: target === 'start' ? i18n.start_before_end : i18n.end_after_start, error: true };\n\t\treturn;\n\t}\n\n\tif (target === 'start') {\n\t\tcomponent.selectedRangeStart = calendarDate;\n\t\tif (!component.selectedRangeEnd && !component.appearance.isMobile) setTimeout(() => component.endDateField.focus(), 100);\n\t} else {\n\t\tcomponent.selectedRangeEnd = calendarDate;\n\t\tif (!component.selectedRangeStart && !component.appearance.isMobile) setTimeout(() => component.startDateField.focus(), 100);\n\t}\n\n\tcomponent[errorProp] = null;\n\tcomponent.currentDate = date;\n\tcomponent.notification = null;\n\tcomponent[oppositeDisabled] = false;\n}\n\nexport function validateDateLimits(component: DayCalendarComponent, date: Date, target: 'start' | 'end') : boolean {\n\tif (component.config.minDate && date < component.config.minDate) {\n\t\tcomponent.notification = { text: component.i18n.date_unavailable, error: true };\n\t\ttarget === 'start' ? component.startDateError = component.i18n.invalid_date : component.endDateError = component.i18n.invalid_date;\n\t\treturn false;\n\t}\n\n\tif (component.config.maxDate && date > component.config.maxDate) {\n\t\tcomponent.notification = { text: component.i18n.date_unavailable, error: true };\n\t\ttarget === 'start' ? component.startDateError = component.i18n.invalid_date : component.endDateError = component.i18n.invalid_date;\n\t\treturn false;\n\t}\n\n\treturn true;\n}\n\nexport function onDateKeyup(component: DayCalendarComponent, event: KeyboardEvent, target: 'start' | 'end'): void {\n\tconst ignoredKeys = ['ArrowUp', 'ArrowDown', 'ArrowLeft', 'ArrowRight', 'Enter', ' ', 'Spacebar'];\n\tif (ignoredKeys.includes(event.key)) { return; }\n\n\tconst errorProp = target === 'start' ? 'startDateError' : 'endDateError';\n\tconst disabled = target === 'start' ? 'endFieldDisabled' : 'startFieldDisabled';\n\tconst dateInput = target === 'start' ? component.startDateField : component.endDateField;\n\tconst selectedRangeProp = target === 'start' ? 'selectedRangeStart' : 'selectedRangeEnd';\n\n\tconst value = dateInput?.inputValue ?? '';\n\n\tif (value.length < 10) {\n\t\tcomponent[selectedRangeProp] = null;\n\n\t\tif(!component.notification?.error) {\n\t\t\tcomponent.notification = null;\n\t\t}\n\n\t\tif (value.length < 1) {\n\t\t\tcomponent[errorProp] = '';\n\t\t\tcomponent[disabled] = false;\n\t\t\tcomponent.notification = null;\n\t\t}\n\t}\n\n\tif (value.length > 9) {\n\t\tsearchDate(this, value, target);\n\t\tif (this.appearance.isMobile) {\n\t\t\tif (document.activeElement instanceof HTMLElement) {\n\t\t\t\tdocument.activeElement.blur();\n\t\t\t}\n\t\t}\n\t}\n}","import {DatePickerAppearance, DatePickerConfig, CalendarPeriod} from \"../../shared/date-picker.modal\";\nimport {changeDate, getStartDate, isPeriodAvailable} from \"../../shared/date-picker.utils\";\nimport {Component, EventEmitter, Input, OnChanges, Output, SimpleChanges,} from '@angular/core';\nimport {CALENDAR_I18N, MONTHS_EN, MONTHS_SHORT_EN, MONTHS_ES, MONTHS_SHORT_ES} from \"../../shared/date-picker.constants\";\n\n@Component({\n selector: 'month-calendar',\n templateUrl: './month-calendar.component.html',\n styleUrls: ['./month-calendar.component.scss']\n})\nexport class MonthCalendarComponent implements OnChanges {\n\t@Input() public config: DatePickerConfig;\n @Input() public initDate: Date | Date[];\n @Input() public restart: boolean = false;\n @Input() public appearance: DatePickerAppearance;\n @Input() public integratedMode: boolean = false;\n\n @Output() public clearSelection: EventEmitter<void> = new EventEmitter<void>();\n @Output() public response: EventEmitter<Date[] | Date> = new EventEmitter<Date[] | Date>();\n\n public currentDate: Date = new Date();\n public selectedMonth: CalendarPeriod;\n\n public get i18n() { return CALENDAR_I18N[this.appearance.language]; }\n public get monthsList() { return this.appearance.language === 'en' ? MONTHS_EN : MONTHS_ES; }\n public get monthsShortList() { return this.appearance.language === 'en' ? MONTHS_SHORT_EN : MONTHS_SHORT_ES; }\n\n ngOnChanges(changes: SimpleChanges): void {\n const shouldRestart = changes['restart'] && this.restart;\n const shouldProcessPreSelected = changes['preSelectedDate'] && this.initDate;\n if (shouldRestart || shouldProcessPreSelected) { this.processInitDate(); }\n }\n\n public trackByMonth(_: number, month: CalendarPeriod): string {\n return `${month.year}-${month.month}`;\n }\n\n private processInitDate(): void {\n if (this.initDate instanceof Date) {\n this.currentDate = getStartDate(this.initDate);\n this.selectedMonth = {\n month: this.initDate.getMonth(),\n year: this.initDate.getFullYear()\n };\n }\n }\n\n public onSelectMonth(month: CalendarPeriod) {\n this.selectedMonth = month;\n this.currentDate = new Date(month.year, month.month, 1);\n this.response.emit(this.currentDate);\n return;\n }\n\n\tpublic getMonthSelectionClass(month: CalendarPeriod): string {\n\t\tconst classes: string[] = [];\n\t\tconst { minDate, maxDate } = this.config ?? {};\n\t\tconst firstDay = new Date(month.year, month.month, 1);\n\t\tconst lastDay = new Date(month.year, month.month + 1, 0);\n\n\t\tlet isDisabled = false;\n\t\tif (minDate && lastDay < minDate) { isDisabled = true; }\n\t\tif (maxDate && firstDay > maxDate) { isDisabled = true; }\n\t\tif (isDisabled) { classes.push('disabled'); }\n\n\t\tif (this.selectedMonth && this.selectedMonth.month === month.month && this.selectedMonth.year === month.year) {\n\t\t\tclasses.push('selected');\n\t\t}\n\n\t\treturn classes.join(' ');\n\t}\n\n\tpublic isCurrentMonth(month: CalendarPeriod) {\n if(new Date().getMonth() === month.month &&\n new Date().getFullYear() === month.year) {\n return true;\n }\n }\n\n public clearSelectedMonth() {\n this.selectedMonth = null;\n this.clearSelection.emit();\n }\n\n public applySelectedMonth() {\n const date = new Date(this.selectedMonth.year, this.selectedMonth.month)\n this.response.emit(date);\n }\n\n public getYearMonthsList(): CalendarPeriod[] {\n const months: CalendarPeriod[] = [];\n\n for (let i = 0; i < 12; i++) {\n months.push({month: i, year: this.currentDate.getFullYear()});\n }\n\n return months;\n }\n\n protected readonly changeDate = changeDate;\n\tprotected readonly isPeriodAvailable = isPeriodAvailable;\n}\n","<section class=\"gravity-date-picker-header\" [class.mobile]=\"appearance.isMobile\">\n <div class=\"header-container\">\n <gravity-icon-button *ngIf=\"!integratedMode\"\n [size]=\"'sm'\"\n [type]=\"'primary'\"\n [icon]=\"'arrow-left'\"\n [supportText]=\"i18n.preview_year\"\n (clickOnIcon)=\"currentDate = changeDate(-1, currentDate, false)\"\n [state]=\"(appearance.state !== 'disabled') && isPeriodAvailable(currentDate, config.minDate, 'month', 'prev') ? 'active' : 'disabled'\"/>\n\n <div class=\"year-label\">\n <gravity-dropdown-label\n [size]=\"'sm'\" [attr.data-cy]=\"'datePicker_yearLabel'\"\n [fontClass]=\"'hr-title sm-bold'\"\n [state]=\"integratedMode && appearance.state !== 'disabled' ? 'active' : 'inactive'\"\n [label]=\"integratedMode ? monthsList[currentDate.getMonth()] : currentDate.getFullYear().toString()\"\n [isOpen]=\"integratedMode\" (onClickLabel)=\"response.emit(currentDate)\" > </gravity-dropdown-label>\n </div>\n\n <gravity-icon-button *ngIf=\"!integratedMode\"\n [size]=\"'sm'\"\n [type]=\"'primary'\"\n [icon]=\"'arrow-right'\"\n [supportText]=\"i18n.next_year\"\n (clickOnIcon)=\"currentDate = changeDate(1, currentDate, false)\"\n [state]=\"(appearance.state !== 'disabled') && isPeriodAvailable(currentDate, config.maxDate, 'month', 'next') ? 'active' : 'disabled'\"/>\n </div>\n\n <div class=\"separator-line\"></div>\n</section>\n\n<section class=\"gravity-date-picker-body\" [class.mobile]=\"appearance.isMobile\">\n <div class=\"items-table\" [attr.data-cy]=\"'datePicker_monthSelector'\">\n <span class=\"hr-body sm-regular item\" *ngFor=\"let month of getYearMonthsList(), trackBy: trackByMonth\"\n [ngClass]=\"appearance.state === 'disabled' ? 'disabled' : getMonthSelectionClass(month)\" (click)=\"onSelectMonth(month)\"\n [class.current]=\"isCurrentMonth(month)\"> {{ monthsShortList[month.month] }}\n </span>\n </div>\n\n <div *ngIf=\"!integratedMode && selectedMonth\" class=\"action-section\" >\n <gravity-link [linkText]=\"i18n.clear\" [state]=\"!selectedMonth ? 'disabled' : 'active'\"\n [fontClass]=\"appearance.isMobile ? 'hr-body md-regular' : 'hr-body sm-regular'\" (click)=\"clearSelectedMonth()\"/>\n </div>\n</section>","import {getStartDate, isPeriodAvailable} from \"../../shared/date-picker.utils\";\nimport {CALENDAR_I18N} from \"../../shared/date-picker.constants\";\nimport {DatePickerAppearance, DatePickerConfig} from \"../../shared/date-picker.modal\";\nimport {Component, EventEmitter, Input, OnChanges, OnInit, Output, SimpleChanges} from '@angular/core';\n\n@Component({\n selector: 'year-calendar',\n templateUrl: './year-calendar.component.html',\n styleUrls: ['./year-calendar.component.scss']\n})\nexport class YearCalendarComponent implements OnChanges, OnInit {\n\t@Input() public config: DatePickerConfig\n @Input() public initDate: Date | Date[];\n @Input() public restart: boolean = false;\n @Input() public appearance: DatePickerAppearance;\n @Input() public integratedMode: boolean = false;\n\n @Output() public clearSelection: EventEmitter<void> = new EventEmitter<void>();\n @Output() public response: EventEmitter<Date[] | Date> = new EventEmitter<Date[] | Date>();\n\n public selectedYear: number;\n public currentDate: Date = new Date();\n public startYear: number = new Date().getFullYear();\n\n public get i18n() { return CALENDAR_I18N[this.appearance.language]; }\n public trackByYear(_: number, year: number): string { return `${year}`; }\n\n ngOnInit(): void {\n if (!this.initDate) {\n this.setYearsBlock(new Date().getFullYear());\n }\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n const shouldRestart = changes['restart'] && this.restart;\n const shouldProcessPreSelected = changes['preSelectedDate'] && this.initDate;\n if (shouldRestart || shouldProcessPreSelected) { this.processInitDate(); }\n }\n\n private processInitDate(): void {\n if (this.initDate instanceof Date) {\n this.currentDate = getStartDate(this.initDate);\n this.selectedYear = this.initDate.getFullYear();\n this.setYearsBlock(this.selectedYear);\n }\n }\n\n public setYearsBlock(year: number) {\n const offset = year % 12;\n this.startYear = year - offset;\n }\n\n public onSelectYear(year: number) {\n this.selectedYear = year;\n this.currentDate = new Date(year, 0, 1);\n this.response.emit(this.currentDate);\n }\n\n\tpublic getYearSelectionClass(year: number): string {\n\t\tconst classes: string[] = [];\n\t\tconst { minDate, maxDate } = this.config ?? {};\n\t\tconst firstDay = new Date(year, 0, 1);\n\t\tconst lastDay = new Date(year, 11, 31);\n\n\t\tlet isDisabled = false;\n\t\tif (minDate && lastDay < minDate) { isDisabled = true; }\n\t\tif (maxDate && firstDay > maxDate) { isDisabled = true; }\n\t\tif (isDisabled) { classes.push('disabled'); }\n\n\t\tif (this.selectedYear === year) { classes.push('selected'); }\n\n\t\treturn classes.join(' ');\n\t}\n\n\n\tpublic isCurrentYear(year: number) {\n if(new Date().getFullYear() === year) return true;\n }\n\n public clearSelectedYear() {\n this.selectedYear = null;\n this.clearSelection.emit();\n }\n\n public getYearList(): number[] {\n const years: number[] = [];\n\n for (let i = 0; i < 12; i++) {\n years.push(this.startYear + i);\n }\n\n return years;\n }\n\n\tprotected readonly isPeriodAvailable = isPeriodAvailable;\n}\n","\n<section class=\"gravity-date-picker-header\" [class.mobile]=\"appearance.isMobile\">\n <div class=\"header-container\">\n <gravity-dropdown-label *ngIf=\"integratedMode\"\n [size]=\"'sm'\"\n [isOpen]=\"true\" [attr.data-cy]=\"'datePicker_yearLabel'\"\n [fontClass]=\"'hr-title sm-bold'\"\n [label]=\"startYear + ' - ' + (startYear + 11)\"\n (onClickLabel)=\"response.emit(currentDate)\"/>\n\n <gravity-icon-button\n [size]=\"'sm'\"\n [type]=\"'primary'\"\n [icon]=\"'arrow-left'\"\n [supportText]=\"i18n.preview_years\"\n (clickOnIcon)=\"startYear = startYear - 12\"\n [state]=\"(appearance.state !== 'disabled') &&\n isPeriodAvailable(currentDate, config.minDate, 'year', 'prev', startYear) ? 'active' : 'disabled'\"/>\n\n <div *ngIf=\"!integratedMode\" class=\"year-label\">\n <gravity-dropdown-label\n [isOpen]=\"false\"\n [state]=\"'inactive'\" [attr.data-cy]=\"'datePicker_yearLabel'\"\n [fontClass]=\"'hr-title sm-bold'\"\n [size]=\"'sm'\" [label]=\"startYear + ' - ' + (startYear + 11)\"/>\n </div>\n\n <gravity-icon-button\n [size]=\"'sm'\"\n [type]=\"'primary'\"\n [icon]=\"'arrow-right'\"\n [supportText]=\"i18n.next_years\"\n (clickOnIcon)=\"startYear = startYear + 12\"\n [state]=\"(appearance.state !== 'disabled') &&\n isPeriodAvailable(currentDate, config.maxDate, 'year', 'next', startYear) ? 'active' : 'disabled'\"/>\n </div>\n\n <div class=\"separator-line\"></div>\n</section>\n\n<section class=\"gravity-date-picker-body\" [class.mobile]=\"appearance.isMobile\">\n <div class=\"items-table\" [attr.data-cy]=\"'datePicker_yearSelector'\">\n <span class=\"hr-body sm-regular item\" *ngFor=\"let year of getYearList(), trackBy: trackByYear\"\n [ngClass]=\"appearance.state === 'disabled' ? 'disabled' : getYearSelectionClass(year)\" (click)=\"onSelectYear(year)\"\n [class.current]=\"isCurrentYear(year)\" >{{ year }}\n </span>\n </div>\n\n <div *ngIf=\"!integratedMode && selectedYear\" class=\"action-section\">\n <gravity-link [linkText]=\"i18n.clear\" [state]=\"!selectedYear ? 'disabled' : 'active'\"\n [fontClass]=\"appearance.isMobile ? 'hr-body md-regular' : 'hr-body sm-regular'\" (click)=\"clearSelectedYear()\"/>\n </div>\n</section>\n","import {DatePickerAppearance, DatePickerConfig, CalendarDate} from \"../../shared/date-picker.modal\";\nimport {GravityTextFieldComponent} from \"../../../gravity-text-field/gravity-text-field.component\";\nimport {Component, EventEmitter, Input, OnChanges, Output, SimpleChanges, ViewChild} from '@angular/core';\nimport {CALENDAR_I18N, DAYS_SHORT_EN, DAYS_SHORT_ES, MONTHS_EN, MONTHS_ES} from \"../../shared/date-picker.constants\";\nimport {dateToCalendarDay, getStartDate, changeDate, calendarDateToDate, isPeriodAvailable} from '../../shared/date-picker.utils';\nimport {getRangeSelectionClass, isPreview, onApplyRageDate, onClearHover, onDateKeyup, onHoverDay, onSelectDaysRange, processPreselectedRangeDate, searchDate} from \"./range-days-calendar.utils\";\n\n@Component({\n selector: 'day-calendar',\n templateUrl: './day-calendar.component.html',\n styleUrls: ['./day-calendar.component.scss']\n})\nexport class DayCalendarComponent implements OnChanges {\n @Input() public initYear: Date;\n @Input() public initMonth: Date;\n @Input() public range: boolean = false;\n @Input() public config: DatePickerConfig;\n @Input() public restart: boolean = false;\n\t@Input() public appyOnClose: boolean = false;\n @Input() public currentDate: Date = new Date();\n @Input() public appearance: DatePickerAppearance;\n @Input() public navType: 'prev' | 'next' | 'both' | 'none'= 'both'\n\n @Output() public clearHover: EventEmitter<void> = new EventEmitter<void>();\n @Output() public clearSelection: EventEmitter<void> = new EventEmitter<void>();\n @Output() public hoverDay: EventEmitter<CalendarDate> = new EventEmitter<CalendarDate>();\n @Output() public selectedRage: EventEmitter<CalendarDate> = new EventEmitter<CalendarDate>();\n @Output() public calendarResponse: EventEmitter<Date[] | Date> = new EventEmitter<Date[] | Date>();\n\n @ViewChild('endDate') endDateField!: GravityTextFieldComponent;\n @ViewChild('startDate') startDateField!: GravityTextFieldComponent;\n\n public endDateError: string = '';\n public startDateError: string = '';\n\tpublic endFieldDisabled: boolean = false;\n\tpublic startFieldDisabled: boolean = false;\n\tpublic selectedRangeEnd: CalendarDate | null = null;\n\tpublic selectedRangeStart: CalendarDate | null = null;\n\n public showYearCalendar: boolean = false;\n public showMonthCalendar: boolean = false;\n\tpublic focused: 'start' | 'end' = 'start';\n\tpublic hoveredDay: CalendarDate | null = null;\n\tpublic selectedDay: CalendarDate | null = null;\n\tpublic notification: {text: string, error: boolean};\n\n public get i18n() { return CALENDAR_I18N[this.appearance.language]; }\n public get monthsList() { return this.appearance.language === 'en' ? MONTHS_EN : MONTHS_ES; }\n public get daysList() { return this.appearance.language === 'en' ? DAYS_SHORT_EN : DAYS_SHORT_ES; }\n\n public trackByWeek(index: number, _: any): number { return index; }\n public trackByDay(_: number, day: CalendarDate): string {\n return `${day.monthYear.year}-${day.monthYear.month}-${day.day}`;\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n const shouldRestart = changes['restart'] && this.restart;\n\t\tconst shouldAppy = changes['appyOnClose'] && this.appyOnClose;\n const shouldProcessPreSelected = changes['preSelectedDate'] && this.config.initDate;\n\n\t\tif (shouldAppy) { this.applySelectedDate(); }\n if (shouldRestart || shouldProcessPreSelected) { this.processInitDate(); }\n }\n\n private processInitDate(): void {\n if (this.range) {\n processPreselectedRangeDate(this);\n } else if (this.config.initDate instanceof Date) {\n this.currentDate = getStartDate(this.config.initDate);\n this.selectedDay = dateToCalendarDay(this.config.initDate);\n }\n }\n\n\tpublic hasDateSelected(requireBothInRange = false): boolean {\n\t\tif (!this.range) {\n\t\t\treturn !!this.selectedDay;\n\t\t} else {\n\t\t\treturn requireBothInRange\n\t\t\t\t? !!this.selectedRangeStart && !!this.selectedRangeEnd\n\t\t\t\t: !!this.selectedRangeStart || !!this.selectedRangeEnd;\n\t\t}\n\t}\n\n\n\tpublic getDaySelectionClass(day: CalendarDate): string {\n if (!day.inCurrentMonth) return 'disabled';\n\n const dayDate = new Date(day.monthYear.year, day.monthYear.month, day.day);\n\n if (this.config?.minDate) { if (dayDate < this.config.minDate) return 'disabled'; }\n if (this.config?.maxDate) { if (dayDate > this.config.maxDate) return 'disabled'; }\n\n return this.range ? getRangeSelectionClass(this, day) : this.getSingleDaySelectionClass(day);\n }\n\n private getSingleDaySelectionClass(day: CalendarDate): string {\n if (this.selectedDay && day.day === this.selectedDay.day &&\n day.monthYear.month === this.selectedDay.monthYear.month &&\n day.monthYear.year === this.selectedDay.monthYear.year) {\n return 'sl single';\n }\n return '';\n }\n\n public onSelectDay(day: CalendarDate): void {\n if (!day.inCurrentMonth) return;\n\n if (!this.range) {\n this.selectedDay = day;\n const currentDate = calendarDateToDate(day);\n this.calendarResponse.emit(currentDate);\n } else {\n onSelectDaysRange(this, day);\n this.selectedRage.emit(day);\n }\n }\n\n\tpublic applySelectedDate(): void {\n\t\tif (this.range) {\n\t\t\tif (this.selectedRangeStart && this.selectedRangeEnd) {\n\t\t\t\tonApplyRageDate(this);\n\t\t\t} else if (this.endDateField && this.startDateField) {\n\t\t\t\tthis.clearSelectedDate('all');\n\t\t\t}\n\t\t} else if (this.selectedDay) {\n\t\t\tconst date = calendarDateToDate(this.selectedDay);\n\t\t\tthis.calendarResponse.emit(date);\n\t\t}\n\t}\n\n public clearSelectedDate(clearTarget: 'all' | 'start' | 'end'): void {\n if (this.range && (clearTarget === 'all' || clearTarget === 'end')) {\n\t\t\tthis.endDateError = '';\n this.selectedRangeEnd = null;\n\t\t\tthis.startFieldDisabled = false;\n this.endDateField.inputValue = '';\n\t if(!this.appearance.isMobile) { this.endDateField.focus(); }\n\t\t\tif(this.selectedRangeStart) { this.currentDate = calendarDateToDate(this.selectedRangeStart) }\n }\n\n\t if (this.range && (clearTarget === 'all' || clearTarget === 'start')) {\n\t\t this.startDateError = '';\n\t\t\tthis.endFieldDisabled = false;\n\t\t this.selectedRangeStart = null;\n\t\t this.startDateField.inputValue = '';\n\t\t if(!this.appearance.isMobile) { this.startDateField.focus(); }\n\t\t if(this.selectedRangeEnd) { this.currentDate = calendarDateToDate(this.selectedRangeEnd) }\n\t }\n\n\t\tif (this.range && this.selectedRangeStart === null && this.selectedRangeEnd === null) {\n\t\t\tthis.focused = 'start';\n\t\t\tthis.currentDate = new Date();\n\t\t\tif(!this.appearance.isMobile) { this.startDateField.focus(); }\n\t\t}\n\n this.selectedDay = null;\n\t\tthis.notification = null;\n\t\tif (!this.range) { this.currentDate = new Date(); }\n\n this.clearSelection.emit();\n }\n\n public handleCalendarResponse(date: Date | Date[], isMonth: boolean): void {\n if (!(date instanceof Date)) return;\n\n const year = isMonth ? this.currentDate.getFullYear() : date.getFullYear();\n const month = isMonth ? date.getMonth() : this.currentDate.getMonth();\n\n this.currentDate = new Date(year, month, this.currentDate.getDate());\n\n if (isMonth) { this.initMonth = this.currentDate; this.showMonthCalendar = false; }\n else { this.initYear = this.currentDate; this.showYearCalendar = false; }\n }\n\n public handleOnClickDropdownLabel(isMonth: boolean): void {\n this.initMonth = isMonth ? this.currentDate : this.initMonth;\n this.initYear = !isMonth ? this.currentDate : this.initYear;\n\n this.showMonthCalendar = isMonth;\n this.showYearCalendar = !isMonth;\n }\n\n public getMonthGrid(): CalendarDate[][] {\n let week: CalendarDate[] = [];\n\n const today = new Date();\n const grid: CalendarDate[][] = [];\n const baseDate = this.currentDate;\n const month = baseDate.getMonth();\n const year = baseDate.getFullYear();\n\n const firstDay = new Date(year, month, 1);\n const startWeekday = (firstDay.getDay() + 6) % 7;\n\n const daysInMonth = new Date(year, month + 1, 0).getDate();\n const daysInPrevMonth = new Date(year, month, 0).getDate();\n\n // fill days from previous month\n for (let i = startWeekday - 1; i >= 0; i--) {\n const day = daysInPrevMonth - i;\n const weekDay = (startWeekday - 1 - i + 7) % 7;\n week.push({ day, monthYear: {month: month - 1, year: year}, isToday: false, inCurrentMonth: false, weekDay });\n }\n\n // fill days from current month\n for (let d = 1; d <= daysInMonth; d++) {\n const isToday = d === today.getDate() && month === today.getMonth() && year === today.getFullYear();\n const weekDay = week.length % 7;\n week.push({ day: d, monthYear: {month: month, year: year}, isToday, inCurrentMonth: true, weekDay });\n\n if (week.length === 7) {\n grid.push(week);\n week = [];\n }\n }\n\n // fill remaining days from next month\n let nextDay = 1;\n while (week.length < 7) {\n const weekDay = week.length;\n week.push({ day: nextDay++, monthYear: {month: month + 1, year: year}, isToday: false, inCurrentMonth: false, weekDay });\n }\n\n const hasCurrentMonthDay = week.some(day => day.inCurrentMonth);\n if (hasCurrentMonthDay) {\n grid.push(week);\n }\n\n return grid;\n }\n\n\tprotected readonly changeDate = changeDate;\n protected readonly isPreview = isPreview;\n\tprotected readonly searchDate = searchDate;\n protected readonly onHoverDay = onHoverDay;\n\tprotected readonly onDateKeyup = onDateKeyup;\n protected readonly onClearHover = onClearHover;\n\tprotected readonly isPeriodAvailable = isPeriodAvailable;\n\tprotected readonly calendarDateToDate = calendarDateToDate;\n}","<section *ngIf=\"showMonthCalendar\">\n <month-calendar\n [config]=\"config\"\n [integratedMode]=\"true\"\n [restart]=\"showMonthCalendar\"\n (response)=\"handleCalendarResponse($event, true)\" [initDate]=\"initMonth\"\n [appearance]=\"{language: appearance.language, isMobile: appearance.isMobile }\">\n </month-calendar>\n</section>\n\n<section *ngIf=\"showYearCalendar\">\n <year-calendar\n [config]=\"config\"\n [integratedMode]=\"true\"\n [restart]=\"showYearCalendar\"\n (response)=\"handleCalendarResponse($event, false)\" [initDate]=\"initYear\"\n [appearance]=\"{language: appearance.language, isMobile: appearance.isMobile}\">\n </year-calendar>\n</section>\n\n<div *ngIf=\"!appearance.isMobile && !showMonthCalendar && !showYearCalendar\" class=\"title\">\n <span class=\"hr-label sm-bold\">{{range ? i18n.select_range : i18n.select_date}}</span>\n</div>\n\n<div class=\"gravity-date-picker-content\" [class.hidden]=\"showYearCalendar || showMonthCalendar\" [class.mobile]=\"appearance.isMobile\">\n\n <div *ngIf=\"range\" class=\"selected-dates\">\n <gravity-text-field #startDate\n [size]=\"'sm'\"\n [width]=\"'short'\"\n [label]=\"i18n.start_date\"\n [inputContentType]=\"'date'\"\n [supportText]=\"startDateError\"\n [placeholder]=\"i18n.date_placeholder\"\n [clickOnRightIcon]=\"!startFieldDisabled\"\n (keyup)=\"onDateKeyup(this, $event, 'start')\"\n (clickIconRight)=\"clearSelectedDate('start')\"\n (focusout)=\"searchDate(this, startDate.inputValue, 'start')\"\n [iconRight]=\"(selectedRangeStart || startDate.inputValue.length > 9) ? 'unsuccess' : ''\"\n (click)=\"focused = 'start'; selectedRangeStart ? currentDate = calendarDateToDate(selectedRangeStart) : null\"\n [customState]=\"startFieldDisabled ? 'disabled' : startDateError ? 'typed-error' : (startDate.inputValue.length < 1 ? 'default' : 'typing')\"\n [attr.data-cy]=\"'datePicker_startDate'\"/>\n\n <gravity-text-field #endDate\n [size]=\"'sm'\"\n [width]=\"'short'\"\n [label]=\"i18n.end_date\"\n [inputContentType]=\"'date'\"\n [supportText]=\"endDateError\"\n [placeholder]=\"i18n.date_placeholder\"\n [clickOnRightIcon]=\"!endFieldDisabled\"\n (keyup)=\"onDateKeyup(this, $event, 'end')\"\n (clickIconRight)=\"clearSelectedDate('end')\"\n (focusout)=\"searchDate(this, endDate.inputValue, 'end')\"\n [iconRight]=\"(selectedRangeEnd || endDate.inputValue.length > 9) ? 'unsuccess' : ''\"\n (click)=\" focused = 'end'; selectedRangeEnd ? currentDate = calendarDateToDate(selectedRangeEnd) : null\"\n [customState]=\"endFieldDisabled ? 'disabled' : endDateError ? 'typed-error' : (endDate.inputValue.length < 1 ? 'default' : 'typing')\" [attr.data-cy]=\"'datePicker_endDate'\"/>\n </div>\n\n <section class=\"gravity-date-picker-header\" [class.mobile]=\"appearance.isMobile\">\n <gravity-icon-button [type]=\"'primary'\" [size]=\"'sm'\" [icon]=\"'arrow-left'\" [supportText]=\"i18n.preview_month\"\n (clickOnIcon)=\"currentDate = changeDate(-1, currentDate, true);\"\n [state]=\"(navType === 'prev' || navType === 'both') && (appearance.state !== 'disabled') &&\n isPeriodAvailable(currentDate, config.minDate, 'month', 'prev') ? 'active' : 'disabled'\"/>\n\n <div class=\"month-year-label\">\n <gravity-dropdown-label [fontClass]=\"'hr-title sm-bold'\" [size]=\"'sm'\" [label]=\"monthsList[currentDate.getMonth()]\"\n [state]=\"appearance.state === 'disabled' ? 'inactive' : 'active'\" (onClickLabel)=\"handleOnClickDropdownLabel(true)\" [attr.data-cy]=\"'datePicker_monthDropdown'\"/>\n\n <gravity-dropdown-label [fontClass]=\"'hr-title sm-bold'\" [size]=\"'sm'\" [label]=\"currentDate.getFullYear().toString()\"\n [state]=\"appearance.state === 'disabled' ? 'inactive' : 'active'\" (onClickLabel)=\"handleOnClickDropdownLabel(false)\" [attr.data-cy]=\"'datePicker_yearDropdown'\"/>\n </div>\n\n <gravity-icon-button [type]=\"'primary'\" [size]=\"'sm'\" [icon]=\"'arrow-right'\" [supportText]=\"i18n.next_month\"\n (clickOnIcon)=\"currentDate = changeDate(1, currentDate, true);\"\n [state]=\"(navType === 'next' || navType === 'both') && (appearance.state !== 'disabled') &&\n isPeriodAvailable(currentDate, config.maxDate, 'month', 'next') ? 'active' : 'disabled'\"/>\n </section>\n\n <section class=\"gravity-date-picker-body\" [class.mobile]=\"appearance.isMobile\">\n <section class=\"days-name-line\">\n <div class=\"days-name\">\n <span class=\"hr-body\" [ngClass]=\"appearance.isMobile ? 'md-regular' : 'sm-regular'\"\n *ngFor=\"let day of daysList\"> {{ day }} </span>\n </div>\n\n <div class=\"separator-line\"></div>\n </section>\n\n <section class=\"days-number-selector\" [attr.data-cy]=\"'datePicker_daysSelector'\">\n <div class=\"days-number-table\">\n <div class=\"week-row\" *ngFor=\"let week of getMonthGrid(); trackBy: trackByWeek\">\n <span class=\"hr-body\" *ngFor=\"let day of week; trackBy: trackByDay\"\n [class.preview]=\"range ? isPreview(this, day) : null\"\n [class.disabled]=\"!day.inCurrentMonth\" [class.today]=\"day.isToday\"\n (mouseenter)=\"range ? onHoverDay(this, day) : null; hoverDay.emit(day)\"\n (mouseleave)=\"range ? onClearHover(this) : null; this.clearHover.emit()\"\n [ngClass]=\"[appearance.isMobile ? 'md-regular' : 'sm-regular',\n appearance.state === 'disabled' ? 'disabled' : getDaySelectionClass(day)]\"\n (click)=\"day.inCurrentMonth ? onSelectDay(day): null\"> {{ day.day }} </span>\n </div>\n </div>\n\n <div *ngIf=\"notification\" class=\"notification\" [class.error]=\"notification.error\">\n <gravity-icon [style.--icon-color]=\"'var(--notification-icon-color)'\" [iconSize]=\"'sm-12'\" [iconName]=\"'information-circle'\"/>\n <span class=\"hr-label sm-regular\">{{notification.text}}</span>\n </div>\n\n <div *ngIf=\"range || selectedDay\" class=\"action-section\" >\n <gravity-link [linkText]=\"i18n.clear\" [state]=\"hasDateSelected() ? 'active' : 'disabled'\"\n [fontClass]=\"appearance.isMobile ? 'hr-body md-regular' : 'hr-body sm-regular'\"\n (click)=\" hasDateSelected() ? clearSelectedDate('all') : null\"/>\n\n <gravity-button *ngIf=\"range\" [size]=\"appearance.isMobile ? 'md' : 'sm'\" [type]=\"'tertiary'\" [disabled]=\"!hasDateSelected(true)\"\n (click)=\"hasDateSelected(true) ? applySelectedDate() : null\"> {{i18n.apply}} </gravity-button>\n </div>\n </section>\n </section>\n</div>\n","import {Component, EventEmitter, Input, Output} from '@angular/core';\nimport {DatePickerAppearance, DatePickerConfig, DatePickerResponse} from \"./shared/date-picker.modal\";\nimport {formatDatetime} from \"./shared/date-picker.utils\";\nimport {CALENDAR_I18N} from \"./shared/date-picker.constants\";\n\n@Component({\n selector: 'gravity-date-picker',\n templateUrl: './gravity-date-picker.component.html',\n styleUrls: ['./gravity-date-picker.component.scss']\n})\nexport class GravityDatePickerComponent {\n @Input() public cypressTag: string;\n @Input() public datePickerType: 'single' | 'range' | 'month' | 'year' = 'single';\n\n private _config: DatePickerConfig = {};\n private _appearance: DatePickerAppearance = {};\n\n\tpublic showCo\n\tpublic get i18n() { return CALENDAR_I18N[this.appearance.language]; }\n\n @Input()\n set config(value: DatePickerConfig) {\n this._config = {\n maxDate: null,\n minDate: null,\n initDate: null,\n ...value\n };\n }\n get config(): DatePickerConfig {\n return this._config;\n }\n\n @Input()\n set appearance(value: DatePickerAppearance) {\n this._appearance = {\n language: 'en',\n state: 'hidden',\n isMobile: false,\n ...value\n };\n }\n get appearance(): DatePickerAppearance {\n return this._appearance;\n }\n\n @Output() public clear = new EventEmitter<void>();\n @Output() public close = new EventEmitter<void>();\n @Output() public response: EventEmitter<DatePickerResponse> = new EventEmitter<DatePickerResponse>();\n\n public handleClear(): void {\n this.clear.emit();\n }\n\n public handleResponse(value: Date[] | Date): void {\n\t\tif(Array.isArray(value)) {\n\t\t\tthis.response.emit({dates: value, formatedDate:\n\t\t\t\t\tformatDatetime([value[0].toISOString(), value[1].toISOString()], 'short', this.appearance.language)\n\t\t\t});\n } else {\n\t\t\tthis.response.emit({dates: value, formatedDate:\n\t\t\t\t\tformatDatetime(value.toISOString(), 'short', this.appearance.language)});\n\t\t}\n }\n\n\tpublic handleCloseButton(): void {\n\t\tthis.close.emit();\n\t}\n\n\tpublic applyOnClose() {\n\t\tif(this.appearance.state === 'hidden') {\n\t\t\tsetTimeout(() => {this.appearance.state = 'destroy'}, 100);\n\t\t\treturn true;\n\t\t}\n\t}\n}\n","<div *ngIf=\"appearance.isMobile && (appearance.state === 'active')\" class=\"mobile-date-picker-cover\"> </div>\n\n<div *ngIf=\"appearance.isMobile && (appearance.state === 'active')\" class=\"close-button\">\n <span class=\"hr-label md-bold\">{{datePickerType === 'range' ? i18n.select_range : i18n.select_date}}</span>\n <gravity-icon-button [size]=\"'sm'\" [icon]=\"'unsuccess'\" (clickOnIcon)=\"handleCloseButton()\"></gravity-icon-button>\n</div>\n\n<ng-container *ngIf=\"datePickerType === 'single'\">\n <section *ngIf=\"appearance.state !== 'destroy'\" class=\"gravity-date-picker-container\"\n [attr.data-cy]=\"cypressTag ? 'datePicker_' + cypressTag : null\" [class.mobile]=\"appearance.isMobile\">\n <day-calendar\n [config]=\"config\"\n [appearance]=\"appearance\"\n [appyOnClose]=\"applyOnClose()\"\n (clearSelection)=\"handleClear()\"\n [restart]=\"appearance.state === 'active'\"\n (calendarResponse)=\"handleResponse($event)\">\n </day-calendar>\n </section>\n</ng-container>\n\n<ng-container *ngIf=\"datePickerType === 'range'\">\n <section *ngIf=\"appearance.state !== 'destroy'\" class=\"gravity-date-picker-container\"\n [attr.data-cy]=\"cypressTag ? 'datePicker_' + cypressTag : null\" [class.mobile]=\"appearance.isMobile\">\n <day-calendar\n [range]=\"true\"\n [config]=\"config\"\n [appearance]=\"appearance\"\n [appyOnClose]=\"applyOnClose()\"\n (clearSelection)=\"handleClear()\"\n [restart]=\"appearance.state === 'active'\"\n (calendarResponse)=\"handleResponse($event)\">\n </day-calendar>\n </section>\n</ng-container>\n\n<ng-container *ngIf=\"datePickerType === 'month'\">\n <section *ngIf=\"appearance.state !== 'hidden'\" class=\"gravity-date-picker-container\"\n [attr.data-cy]=\"cypressTag ? 'datePicker_' + cypressTag : null\" [class.mobile]=\"appearance.isMobile\">\n <month-calendar\n [config]=\"config\"\n [appearance]=\"appearance\"\n [initDate]=\"config.initDate\"\n (clearSelection)=\"handleClear()\"\n (response)=\"handleResponse($event)\"\n [restart]=\"appearance.state === 'active'\">\n </month-calendar>\n </section>\n</ng-container>\n\n<ng-container *ngIf=\"datePickerType === 'year'\">\n <section *ngIf=\"appearance.state !== 'hidden'\" class=\"gravity-date-picker-container\"\n [attr.data-cy]=\"cypressTag ? 'datePicker_' + cypressTag : null\" [class.mobile]=\"appearance.isMobile\">\n <year-calendar\n [config]=\"config\"\n [appearance]=\"appearance\"\n [initDate]=\"config.initDate\"\n (clearSelection)=\"handleClear()\"\n (response)=\"handleResponse($event)\"\n [restart]=\"appearance.state === 'active'\">\n </year-calendar>\n </section>\n</ng-container>\n","import {AfterViewInit, Component, ElementRef, EventEmitter, Input, OnInit, Output, QueryList, ViewChildren} from '@angular/core';\n\nexport interface SegmentedButton {\n\ttext: string; icon?: string; value: string; cypressTag?: string\n}\n\n@Component({\n selector: 'gravity-segmented-button',\n templateUrl: './gravity-segmented-button.component.html',\n styleUrls: ['./gravity-segmented-button.component.scss']\n})\nexport class GravitySegmentedButtonComponent implements OnInit, AfterViewInit {\n @Input() size: 'sm' | 'md' = 'sm';\n @Input() buttons: SegmentedButton[] = [];\n @Input() disabled: boolean = false;\n @Input() preselectedItem?: string;\n @Output() selected = new EventEmitter<string>();\n @ViewChildren('segmentedButton') buttonElements!: QueryList<ElementRef<HTMLElement>>;\n\n public selectedValue: string;\n public sliderStyle = { left: '0px', width: '0px' };\n\n ngOnInit(): void {\n if (this.disabled) {\n this.selectedValue = null;\n return;\n }\n\n if (this.preselectedItem && this.buttons.some(b => b.value === this.preselectedItem)) {\n this.selectedValue = this.preselectedItem;\n } else if (this.buttons.length > 0) {\n this.selectedValue = this.buttons[0].value;\n }\n }\n\n ngAfterViewInit(): void {\n setTimeout(() => this.updateSliderStyle(), 0);\n }\n\n public onSelect(button: SegmentedButton): void {\n if (this.disabled || this.selectedValue === button.value) return;\n\n this.selectedValue = button.value;\n this.selected.emit(button.value);\n this.updateSliderStyle();\n }\n\n public getState(button: SegmentedButton): string {\n if (this.disabled) return 'disabled';\n return button.value === this.selectedValue ? 'selected' : 'unselected';\n }\n\n public updateSliderStyle(): void {\n const index = this.buttons.findIndex(b => b.value === this.selectedValue);\n if (index === -1) return;\n\n const buttonElement = this.buttonElements.get(index)?.nativeElement;\n if (!buttonElement) return;\n\n const { offsetLeft: left, offsetWidth: width } = buttonElement;\n this.sliderStyle = {\n left: `${left}px`,\n width: `${width}px`\n };\n }\n\n public getSliderStyle(): { left: string; width: string } {\n return this.sliderStyle;\n }\n\n public setSelectedValue(value: string) {\n if (this.disabled) return;\n if (value && this.buttons.some(b => b.value === value)) {\n this.selectedValue = value;\n this.updateSliderStyle();\n this.selected.emit(this.selectedValue);\n }\n }\n}\n","<div class=\"gravity-segmented-button-container {{size}}\" [class.disabled]=\"disabled\">\n <div class=\"selected-background\" [ngStyle]=\"getSliderStyle()\"></div>\n\n <div *ngFor=\"let button of buttons\" #segmentedButton\n class=\"segmented-button\" [ngClass]=\"getState(button)\" (click)=\"onSelect(button)\" [attr.data-cy]=\"button.cypressTag? 'segmentedButton_' + button.cypressTag : null\">\n <div *ngIf=\"button.icon\">\n <gravity-icon [style.--icon-color]=\"'var(--segmented-button-color)'\"\n [iconSize]=\"'sm-12'\" [size]=\"'sm'\" [iconName]=\"button.icon\"></gravity-icon>\n </div>\n <span [ngClass]=\"'hr-label ' + size + (getState(button) === 'selected' ? '-bold' : '-regular')\"> {{button.text}} </span>\n </div>\n</div>\n","import {Component, EventEmitter, Input, Output} from '@angular/core';\n\nexport interface GravityChipItem {\n label: string;\n id: number;\n icon?: string;\n cypressTag?: string;\n}\n\n@Component({\n selector: 'gravity-chip-group',\n templateUrl: './gravity-chip-group.component.html',\n styleUrls: ['./gravity-chip-group.component.scss']\n})\nexport class GravityChipGroupComponent {\n @Input() public disabled: boolean = false;\n @Input() public size: 'sm' | 'md' = 'sm';\n @Input() public items: GravityChipItem[] = [];\n\n @Output() public clickOnChip: EventEmitter<any[]> = new EventEmitter<any>();\n\n public selectedItems: GravityChipItem[] = [];\n\n public toggleSelection(item: GravityChipItem) {\n if (this.disabled) return;\n\n const index = this.selectedItems.findIndex((i) => i.id === item.id);\n if (index >= 0) {\n // Deselect\n this.selectedItems.splice(index, 1);\n } else {\n // Select\n this.selectedItems.push(item);\n }\n\n this.clickOnChip.emit(\n this.selectedItems.map(i => ({ label: i.label, id: i.id }))\n );\n }\n\n public isSelected(item: GravityChipItem): boolean {\n return this.selectedItems.some((i) => i.id === item.id );\n }\n}\n","<div class=\"chips-wrapper {{size}}\">\n <div class=\"gravity-chip {{size}}\" *ngFor=\"let item of items\"\n [attr.data-cy]=\"item.cypressTag ? 'chip_' + item.cypressTag: null\"\n [ngClass]=\"{'selected': isSelected(item), 'disabled': disabled}\" (click)=\"toggleSelection(item)\">\n\n <gravity-icon *ngIf=\"item.icon\" [style.--icon-color]=\"'var(--left-icon-color)'\"\n [iconName]=\"item.icon\" [iconSize]=\"size === 'sm' ? 'sm-12' :'md-16'\">\n </gravity-icon>\n\n <label class=\"hr-label\" [ngClass]=\"size === 'sm' ? 'sm-regular' : 'md-regular'\">{{ item.label }}</label>\n\n <div *ngIf=\"isSelected(item)\" class=\"close-button {{size}}\">\n <gravity-icon [style.--icon-color]=\"'var(--close-button-color)'\"\n [iconName]=\"'unsuccess'\" [iconSize]=\"size === 'sm' ? 'sm-12' :'md-16'\">\n </gravity-icon>\n </div>\n </div>\n</div>\n","import {Component, Input} from '@angular/core';\n\n@Component({\n selector: 'gravity-tables-v2',\n templateUrl: './gravity-tables-v2.component.html',\n styleUrls: ['./gravity-tables-v2.component.scss']\n})\nexport class GravityTablesV2Component {\n @Input() public type: 'card-view' | 'table-view' | 'table-view-divider'\n @Input() public rowSize: 'xxs' | 'xs' | 'sm' = 'sm'\n}\n","<main class=\"{{type}} row-{{rowSize}}\">\n <ng-content/>\n</main>\n","import {AfterViewInit, Component, EventEmitter, HostListener, Input, Output} from '@angular/core';\n\n@Component({\n selector: 'gravity-data-views-v2',\n templateUrl: './gravity-data-views-v2.component.html',\n styleUrls: ['./gravity-data-views-v2.component.scss']\n})\nexport class GravityDataViewsV2Component implements AfterViewInit{\n @Input() public type: 'custom-view' | 'list-view'\n @Input() disabled: boolean = false;\n @Input() statusIndicator: {\n icon: string;\n text: string,\n status: 'positive' | 'negative' | 'attention' | 'neutro' | 'disabled' | 'positive-secondary' | 'negative-secondary',\n position?: 'left' | 'right'\n };\n\n @Output() clickEmitter: EventEmitter<any[]> = new EventEmitter<any>();\n\n public hasClickListener = false;\n public isMd: boolean;\n\n constructor() {\n this.checkResolution();\n }\n\n ngAfterViewInit(): void {\n setTimeout(() => {\n this.hasClickListener = this.clickEmitter.observers.length > 0;\n });\n }\n\n @HostListener('window:resize', ['$event'])\n onResize(): void {\n this.checkResolution();\n }\n\n private checkResolution(): void {\n const width = window.innerWidth;\n this.isMd = width >= 577;\n }\n\n public onClick(): void {\n if (this.disabled || !this.hasClickListener) {\n return;\n }\n\n this.clickEmitter.emit();\n }\n}\n","<main class=\"{{type}}\" [class.disabled]=\"hasClickListener && disabled\" [class.clickable]=\"hasClickListener && !disabled\" [style.width]=\"isMd ? '545px' : '100%'\" (click)=\"onClick()\">\n\n <div *ngIf=\"statusIndicator && type === 'custom-view'\" class=\"status-wrapper\" [ngClass]=\"statusIndicator.position || 'left'\">\n <gravity-status-indicator [size]=\"'sm'\" [type]=\"'primary'\" [icon]=\"statusIndicator.icon\"\n [text]=\"statusIndicator.text\"\n [status]=\"statusIndicator.status\"/>\n </div>\n\n <ng-content/>\n</main>\n","import {HostListener, Injectable} from \"@angular/core\";\n\n@Injectable({providedIn: 'root'})\nexport class GravityResponsiveService {\n public currentResolutionWidth: number;\n private breakpoints = {\n xs: 0,\n sm: 576,\n md: 992,\n lg: 1440,\n xl: 1920\n }\n\n constructor() {\n this.onResize();\n }\n\n public getResolution(): 'xs' | 'sm' | 'md' | 'lg' | 'xl' {\n if (this.currentResolutionWidth <= this.breakpoints.xs) {\n return 'xs';\n } else if (this.currentResolutionWidth > this.breakpoints.xs && this.currentResolutionWidth <= this.breakpoints.sm) {\n return 'sm';\n } else if (this.currentResolutionWidth > this.breakpoints.sm && this.currentResolutionWidth <= this.breakpoints.md) {\n return 'md';\n } else if (this.currentResolutionWidth > this.breakpoints.md && this.currentResolutionWidth <= this.breakpoints.lg) {\n return 'lg';\n } else {\n return 'xl';\n }\n }\n\n @HostListener('window:resize', ['$event'])\n private onResize(): void {\n this.currentResolutionWidth = window.innerWidth;\n }\n\n public isMobile(): boolean {\n return this.getResolution() == 'md' || this.getResolution() == 'sm';\n }\n}\n","import {\n AfterViewInit,\n Component,\n ElementRef,\n EventEmitter,\n HostListener,\n Input, OnDestroy,\n Output,\n ViewChild\n} from '@angular/core';\nimport {GravityResponsiveService} from \"../../services/gravity-responsive.service\";\n\n@Component({\n selector: 'gravity-detail-container',\n templateUrl: './gravity-detail-container.component.html',\n styleUrls: ['./gravity-detail-container.component.scss']\n})\nexport class GravityDetailContainerComponent implements AfterViewInit, OnDestroy{\n @Input() cypressTag: string;\n @Input() title: string = '';\n @Input() description: string = '';\n @Input() mode: 'modal' | 'standard';\n @Input() type: 'flyout' | 'detail-view' = 'flyout';\n @Input() optionalHeight: string;\n @Input() public language: 'en' | 'es' = 'en';\n\n @Output() closed = new EventEmitter<void>();\n @Output() menuEvent = new EventEmitter<void>();\n\n @ViewChild('containerRef') containerRef: ElementRef<HTMLDivElement>;\n\n public isOpen = false;\n private resizeObserver: ResizeObserver | null = null;\n\n constructor(public readonly gravityResponsiveService: GravityResponsiveService) {\n this.onResize();\n }\n\n @HostListener('window:resize', ['$event'])\n private onResize(): void {\n this.gravityResponsiveService.currentResolutionWidth = window.innerWidth;\n this.checkHasScroll();\n }\n\n public open(): void {\n this.isOpen = true;\n this.checkHasScroll();\n }\n\n public dismiss(): void {\n this.isOpen = false;\n this.closed.emit();\n }\n\n public menu(): void {\n this.menuEvent.emit();\n }\n\n ngAfterViewInit() {\n const el = this.containerRef?.nativeElement;\n if (!el) return;\n\n const update = () => {\n requestAnimationFrame(() => {\n el.classList.toggle('has-scroll', el.scrollHeight > el.clientHeight);\n });\n };\n\n this.resizeObserver = new ResizeObserver(update);\n this.resizeObserver.observe(el);\n\n update();\n }\n\n private checkHasScroll(): void {\n const el = this.containerRef?.nativeElement;\n if (!el) return;\n requestAnimationFrame(() => {\n el.classList.toggle('has-scroll', el.scrollHeight > el.clientHeight);\n });\n }\n\n ngOnDestroy(): void {\n if (this.resizeObserver) {\n this.resizeObserver.disconnect();\n this.resizeObserver = null;\n }\n }\n}\n","<div class=\"detail-container-backdrop\"\n *ngIf=\"type === 'flyout' && mode === 'modal' && !gravityResponsiveService.isMobile()\"\n [class.open]=\"isOpen\" (click)=\"dismiss()\"></div>\n\n<div class=\"detail-container-content {{mode}} {{gravityResponsiveService.isMobile() ? 'mobile' : type}}\"\n [ngClass]=\"isOpen ? 'show' : 'dismiss'\" [style.height]=\"optionalHeight\"\n [attr.data-cy]=\"'detailContainer_' + cypressTag\">\n <div class=\"detail-header\">\n <div class=\"back-button\" (click)=\"dismiss()\" *ngIf=\"gravityResponsiveService.isMobile()\"\n [attr.data-cy]=\"'detailContainer_backButton'\">\n <gravity-icon [iconName]=\"'arrow-left'\" [iconSize]=\"'sm-12'\"\n [style.--icon-color]=\"'var(--back-button-color)'\"></gravity-icon>\n <span class=\"hr-label md-regular\">{{ language === 'en' ? 'Back' : 'Atrás' }}</span>\n </div>\n <p [ngClass]=\"gravityResponsiveService.isMobile() ? 'hr-body md-bold': type === 'flyout' ? 'hr-title md-bold' : 'hr-body lg-bold'\"\n [attr.data-cy]=\"'detailContainer_title'\">{{ title }}</p>\n <gravity-icon-button *ngIf=\"!gravityResponsiveService.isMobile()\" [icon]=\"'unsuccess'\" [size]=\"'sm'\"\n (click)=\"dismiss()\"\n [supportText]=\"'Close'\" [attr.data-cy]=\"'detailContainer_closeButton'\"/>\n <gravity-icon class=\"menu-button\" *ngIf=\"gravityResponsiveService.isMobile()\"\n [style.--icon-color]=\"'var(--back-button-color)'\"\n [iconSize]=\"'lg-24'\" [iconName]=\"'menu'\" (click)=\"menu()\" [attr.data-cy]=\"'detailContainer_menuButton'\"/>\n </div>\n\n <div class=\"overflow-container\" #containerRef>\n <p *ngIf=\"description != '' && type === 'flyout'\"\n class=\"hr-body sm-regular detail-description\"> {{ description }}</p>\n\n <div class=\"detail-body\" [attr.data-cy]=\"'detailContainer_body'\">\n <ng-content select=\"[detail-body]\"></ng-content>\n </div>\n </div>\n\n <div class=\"detail-actions\" *ngIf=\"type === 'flyout'\">\n <ng-content select=\"[detail-actions]\"></ng-content>\n </div>\n</div>\n","import {Injectable} from '@angular/core';\nimport {NotificationStatusUpdate, NotificationViewedStatusRequest, PushNotification, UserNotifications} from \"../model/gravity-push-notifications.model\";\n\n@Injectable({providedIn: 'root'})\nexport class PushNotificationsService {\n\tpublic userId: number;\n\tpublic seenNotifications: PushNotification[] = [];\n\tpublic pendingNotifications: PushNotification[] = [];\n\n\tpublic loadUserNotifications(user: UserNotifications): void {\n\t\tif (user) {\n\t\t\tthis.userId = user.user_id;\n\t\t\tthis.seenNotifications = user.seenNotifications;\n\t\t\tthis.pendingNotifications = user.pendingNotifications;\n\t\t}\n\t}\n\n\tpublic toggleNotificationsPanel(open: boolean): NotificationViewedStatusRequest {\n\t\tif (!open) {\n\t\t\tlet notificationsArray: NotificationStatusUpdate[] = [];\n\t\t\tconst newSeenNotifications = [...this.seenNotifications];\n\n\t\t\tthis.pendingNotifications.forEach((notification: PushNotification) => {\n\t\t\t\tif (notification.notification_tag !== 'TAG_WELCOME') {\n\t\t\t\t\tlet pushNotificationUpdateStatusRequestFormatted: NotificationStatusUpdate = {} as NotificationStatusUpdate;\n\t\t\t\t\tpushNotificationUpdateStatusRequestFormatted.tag = notification.notification_tag;\n\t\t\t\t\tpushNotificationUpdateStatusRequestFormatted.new_status = 'true';\n\t\t\t\t\tnotificationsArray.push(pushNotificationUpdateStatusRequestFormatted);\n\t\t\t\t}\n\n\t\t\t\tconst seenNotification: PushNotification = { ...notification, notification_viewed: true };\n\t\t\t\tnewSeenNotifications.unshift(seenNotification);\n\t\t\t});\n\n\t\t\tthis.pendingNotifications = [];\n\t\t\tthis.seenNotifications = newSeenNotifications;\n\n\t\t\tif (notificationsArray.length > 0 && this.userId !== null) {\n\t\t\t\tlet updatePushNotificationViewedStatusRequest: NotificationViewedStatusRequest = {} as NotificationViewedStatusRequest;\n\t\t\t\tupdatePushNotificationViewedStatusRequest.user_id = this.userId;\n\t\t\t\tupdatePushNotificationViewedStatusRequest.push_notifications = notificationsArray;\n\n\t\t\t\treturn updatePushNotificationViewedStatusRequest;\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic getNotificationContent(text: string, additionalText: string): string {\n\t\tif (text.indexOf('{{replace}}') !== -1 && additionalText) {\n\t\t\ttext = text.replace('{{replace}}', additionalText);\n\t\t}\n\n\t\treturn text;\n\t}\n\n\tpublic removeTextOverflow(elementId: string): void {\n\t\tlet element = document.querySelector(\".notification#\" + elementId + \" .body\");\n\n\t\tif (element?.classList.contains('white-space-nowrap')) {\n\t\t\telement.classList.remove('white-space-nowrap');\n\t\t} else if (element) {\n\t\t\telement.classList.add('white-space-nowrap');\n\t\t}\n\t}\n\n\tpublic clearLoginNotification(): void {\n\t\tconst welcomeTag = 'TAG_WELCOME';\n\n\t\tif (this.pendingNotifications?.length) {\n\t\t\tthis.pendingNotifications = this.pendingNotifications.filter(notification => notification.notification_tag !== welcomeTag);\n\t\t}\n\n\t\tif (this.seenNotifications?.length) {\n\t\t\tthis.seenNotifications = this.seenNotifications.filter(notification => notification.notification_tag !== welcomeTag);\n\t\t}\n\t}\n}","import {NotificationViewedStatusRequest, UserNotifications} from \"../../model/gravity-push-notifications.model\";\nimport {Component, ElementRef, EventEmitter, HostListener, Input, OnDestroy, OnInit, Output} from '@angular/core';\nimport { PushNotificationsService } from \"../../services/gravity-push-notifications-service.service\";\n\n@Component({\n\tselector: 'gravity-push-notifications',\n\ttemplateUrl: './gravity-push-notifications.component.html',\n\tstyleUrls: ['./gravity-push-notifications.component.scss']\n})\nexport class GravityPushNotificationsComponent implements OnInit, OnDestroy {\n\t@Input() set userNotifications(value: UserNotifications | undefined) {\n\t\tthis._userNotifications = value;\n\t\tthis.processData();\n\t}\n\n\t@Output() public viewedNotificationsResponse: EventEmitter<NotificationViewedStatusRequest> = new EventEmitter();\n\n\tpublic isPanelOpen: boolean = false;\n\tpublic _userNotifications: UserNotifications | undefined;\n\tpublic viewedNotifications: NotificationViewedStatusRequest | undefined;\n\n\tconstructor(public readonly pushNotificationsService: PushNotificationsService,\n\t private readonly elementRef: ElementRef) { }\n\n\tngOnInit(): void {\n\t\tthis.processData();\n\t}\n\n\tngOnDestroy(): void {\n\t\tthis.pushNotificationsService.clearLoginNotification();\n\t}\n\n\tprivate processData(): void {\n\t\tthis.pushNotificationsService.loadUserNotifications(this._userNotifications);\n\t}\n\n\tpublic handleToggleNotificationsPanel() {\n\t\tthis.isPanelOpen = !this.isPanelOpen;\n\t\tthis.viewedNotifications = this.pushNotificationsService.toggleNotificationsPanel(this.isPanelOpen);\n\t\tif(this.viewedNotifications?.push_notifications?.length > 0) {\n\t\t\tthis.viewedNotificationsResponse.emit(this.viewedNotifications);\n\t\t}\n\t}\n\n\t@HostListener('document:click', ['$event']) onClick(event: MouseEvent) {\n\t\tif (this.isPanelOpen) {\n\t\t\tconst clickedInside = this.elementRef.nativeElement.contains(event.target);\n\n\t\t\tif (!clickedInside) {\n\t\t\t\tthis.handleToggleNotificationsPanel();\n\t\t\t}\n\t\t}\n\t}\n}","<div class=\"btn-group notifications-wrapper\" data-cy=\"PUSH_NOTIFICATIONS_wrapper\">\n <div class=\"notifications-toggle pointer\" [class.active]=\"isPanelOpen\" data-cy=\"PUSH_NOTIFICATIONS_toggle\"\n (click)=\"handleToggleNotificationsPanel()\">\n <gravity-icon class=\"bell\" [iconName]=\"'bell'\" [iconSize]=\"'md-16'\"></gravity-icon>\n <span *ngIf=\"pushNotificationsService.pendingNotifications.length > 0\" class=\"circle\"></span>\n </div>\n <div *ngIf=\"isPanelOpen\" class=\"notifications-box dropdown-menu-right elevation-sm\" data-cy=\"PUSH_NOTIFICATIONS_panel\">\n <div class=\"panel-header\" data-cy=\"PUSH_NOTIFICATIONS_panel_header\">\n <p class=\"hr-body md-regular\" data-cy=\"PUSH_NOTIFICATIONS_panel_title\"> Notifications </p>\n <p class=\"hr-body md-regular\" data-cy=\"PUSH_NOTIFICATIONS_panel_pending_counter\"\n *ngIf=\"pushNotificationsService.pendingNotifications.length > 0\">\n {{pushNotificationsService.pendingNotifications.length}}\n </p>\n </div>\n <div class=\"notifications\" data-cy=\"PUSH_NOTIFICATIONS_item\"\n *ngIf=\"pushNotificationsService.pendingNotifications?.length > 0\">\n <p> New </p>\n <ng-container *ngFor=\"let notification of pushNotificationsService.pendingNotifications, let index = index\">\n <div class=\"notification pending\" data-cy=\"PUSH_NOTIFICATIONS_new_notification\"\n (click)=\"$event.stopPropagation(); pushNotificationsService.removeTextOverflow('pending-' + index)\"\n id=\"pending-{{index}}\">\n <gravity-icon *ngIf=\"notification.iconName\" [iconName]=\"notification.iconName\" [hoverIcon]=\"false\" [iconSize]=\"'lg-24'\"></gravity-icon>\n <div class=\"notification-content\">\n <p class=\"hr-title sm-bold title\">\n <span class=\"pending-notification-circle\"></span>\n {{pushNotificationsService.getNotificationContent(notification.titleText, notification.titleAdditionalText)}}\n </p>\n <p class=\"body hr-body md-regular white-space-nowrap\" title=\"Click to expand\">\n {{pushNotificationsService.getNotificationContent(notification.bodyText, notification.bodyAdditionalText)}}\n </p>\n </div>\n </div>\n <hr *ngIf=\"index + 1 != pushNotificationsService.pendingNotifications.length\">\n </ng-container>\n </div>\n <hr *ngIf=\"pushNotificationsService.pendingNotifications?.length > 0 && pushNotificationsService.seenNotifications?.length > 0\">\n <div class=\"notifications\" *ngIf=\"pushNotificationsService.seenNotifications?.length > 0\">\n <p> Old </p>\n <ng-container *ngFor=\"let notification of pushNotificationsService.seenNotifications, let index = index\">\n <div class=\"notification\" data-cy=\"PUSH_NOTIFICATIONS_old_notification\"\n (click)=\"$event.stopPropagation(); pushNotificationsService.removeTextOverflow('seen-' + index)\"\n id=\"seen-{{index}}\">\n <gravity-icon *ngIf=\"notification.iconName\" [iconName]=\"notification.iconName\" [hoverIcon]=\"false\" [iconSize]=\"'lg-24'\"></gravity-icon>\n <div class=\"notification-content\">\n <p class=\"hr-title sm-bold title\">\n {{pushNotificationsService.getNotificationContent(notification.titleText, notification.titleAdditionalText)}}\n </p>\n <p class=\"body hr-body md-regular white-space-nowrap\" title=\"Click to expand\">\n {{pushNotificationsService.getNotificationContent(notification.bodyAdditionalText, notification.bodyAdditionalText)}}\n </p>\n </div>\n </div>\n <hr *ngIf=\"index + 1 != pushNotificationsService.seenNotifications.length\">\n </ng-container>\n </div>\n <div class=\"notifications\"\n *ngIf=\"pushNotificationsService.pendingNotifications?.length == 0 && pushNotificationsService.seenNotifications?.length == 0\">\n <p class=\"no-notification\"> No new notifications </p>\n </div>\n </div>\n</div>\n","import {Component, EventEmitter, Input, Output} from '@angular/core';\nimport {NotificationViewedStatusRequest, UserNotifications} from \"../../model/gravity-push-notifications.model\";\n\nexport interface BreadCrumb {\n\ticon?: string;\n\tlist?: { text: string; callback?: () => void; isPressed?: boolean } [];\n}\n\n@Component({\n selector: 'gravity-header',\n templateUrl: './gravity-header.component.html',\n styleUrls: ['./gravity-header.component.scss'],\n})\n\nexport class GravityHeaderComponent {\n\t@Input() public title: string;\n\t@Input() public logoUrl: string;\n\t@Input() public longTitle: string;\n\t@Input() public backButton: boolean;\n\t@Input() public breadCrumb: BreadCrumb;\n\t@Input() public language: 'en' | 'es' = 'en';\n\t@Input() public notifications: boolean = false;\n\t@Input() public resolution: 'xs' | 'sm' | 'md' | 'lg' | 'xl';\n\t@Input() public userNotifications: UserNotifications | undefined;\n\n\t@Input()\n\tset isMenuOpen(value: boolean) {\n\t\tthis.iconToggle = value;\n\t\tthis._isMenuOpen = value;\n\t}\n\n\tget isMenuOpen() {\n\t\treturn this._isMenuOpen;\n\t}\n\n\t@Output() public backButtonResponse: EventEmitter<void> = new EventEmitter();\n\t@Output() public toggleMenuResponse: EventEmitter<boolean> = new EventEmitter();\n\t@Output() public viewedNotificationsResponse: EventEmitter<NotificationViewedStatusRequest> = new EventEmitter();\n\n\tprivate _isMenuOpen: boolean = false;\n\n\tpublic iconToggle: boolean = false;\n\tpublic isBackButtonPressed: boolean = false;\n\n\tpublic toggleMenu () {\n\t\tsetTimeout(function () {\n\t\t\tthis.toggleMenuResponse.emit(this._isMenuOpen);\n\t\t}.bind(this), 65)\n\t}\n\n\tpublic backAction(){\n\t\tthis.backButtonResponse.emit();\n\t}\n\n\tpublic handleViewedNotificationsResponse($event: NotificationViewedStatusRequest){\n\t\tthis.viewedNotificationsResponse.emit($event);\n\t}\n\n\tpublic isMobile(){\n\t\treturn this.resolution === 'xs' || this.resolution === 'sm' || this.resolution === 'md';\n\t}\n\n}\n","<div class=\"gravity-header\" [class.mobile]=\"isMobile()\">\n <section class=\"first-level\" [class.long-title]=\"longTitle\">\n <svg-icon *ngIf=\"isMobile() && logoUrl && !backButton\" class=\"logo-header\" [src]=\"logoUrl\"/>\n\n <div *ngIf=\"backButton && breadCrumb?.list?.length < 1\"\n class=\"back-button\" [class.pressed]=\"isBackButtonPressed\"\n (mousedown)=\"isBackButtonPressed = true\" (mouseup)=\"isBackButtonPressed = false\" (click)=\"backAction()\"\n (mouseleave)=\"isBackButtonPressed = false\" (touchstart)=\"isBackButtonPressed = true\">\n\n <gravity-icon [style.--icon-color]=\"'var(--back-button-color)'\" [iconSize]=\"'sm-12'\" [iconName]=\"'arrow-left'\"/>\n <span class=\"'hr-label md-regular')\">{{ language === 'en' ? 'Back' : 'Atrás' }}</span>\n </div>\n\n <div *ngIf=\"breadCrumb?.list?.length > 0 && (resolution === 'lg' || resolution === 'xl' )\" class=\"breadcrumb\">\n <gravity-icon *ngIf=\"breadCrumb.icon\" class=\"gravity-margin-right-xs\" [iconSize]=\"'md-16'\"\n [style.--icon-color]=\"'var(--breadcrumb-button-base-primary)'\" [iconName]=\"breadCrumb.icon\"/>\n\n <ng-container *ngFor=\"let item of breadCrumb.list; let last = last; let i = index\">\n <div class=\"breadcrumb-item\" [class.is-last]=\"last\" [class.has-prev]=\"i !== 0\"\n (mousedown)=\"item.isPressed = true\" (mouseup)=\"item.isPressed = false\"\n (mouseleave)=\"item.isPressed = false\" (touchstart)=\"item.isPressed = true\">\n <span [ngClass]=\"'hr-body ' + (resolution === 'xl' ? 'md-regular' : 'sm-regular')\"\n [class.pressed]=\"item.isPressed\" (click)=\"!last && item.callback?.()\">{{ item.text }} </span>\n </div>\n </ng-container>\n </div>\n\n <h1 *ngIf=\"!backButton && (!isMobile() || (isMobile() && !logoUrl)) && breadCrumb?.list?.length < 1\"\n [ngClass]=\"!isMobile() ? 'hr-headline md-bold' : 'hr-title ' + (resolution === 'md' ? 'md-bold' : 'lg-bold')\">\n {{ title }}\n </h1>\n\n <h1 *ngIf=\"isMobile() && backButton\" [ngClass]=\"'hr-body md-bold'\"> {{ longTitle }} </h1>\n\n <div class=\"main-actions\">\n <ng-content select=\"[main-actions]\"/>\n\n <gravity-push-notifications *ngIf=\"(notifications && !isMobile()) || (notifications && isMobile() && !backButton)\"\n [userNotifications]=\"userNotifications\" (viewedNotificationsResponse)=\"handleViewedNotificationsResponse($event)\"/>\n\n <gravity-icon *ngIf=\"isMobile()\" [style.--icon-color]=\"'var(--back-button-color)'\"\n [iconSize]=\"'lg-24'\" [iconName]=\"'menu'\" (click)=\"toggleMenu()\"/>\n </div>\n </section>\n\n <section *ngIf=\"!isMobile() && (backButton || breadCrumb?.list?.length > 0) && title\" class=\"second-level\">\n <h1 class=\"hr-headline md-bold\">{{ title }}</h1>\n </section>\n\n <section *ngIf=\"isMobile() && logoUrl && !backButton && title\" class=\"second-level\">\n <h1 [ngClass]=\"'hr-title ' + (resolution === 'md' ? 'md-bold' : 'lg-bold')\">{{ title }}</h1>\n </section>\n\n</div>","import {MenuHeader, MenuOption, SecondaryActions, UserInfo} from \"../../model/gravity-menu-items.model\";\nimport {Component, ElementRef, EventEmitter, Input, Output, ViewChild, AfterViewInit, OnDestroy, OnChanges, SimpleChanges} from '@angular/core';\n\n@Component({\n\tselector: 'gravity-menu',\n\ttemplateUrl: './gravity-menu.component.html',\n\tstyleUrls: ['./gravity-menu.component.scss']\n})\nexport class GravityMenuComponent implements AfterViewInit, OnChanges ,OnDestroy {\n\t@Input() public logoUrl: string;\n\t@Input() public items: MenuHeader[];\n\t@Input() public userInfo: UserInfo[];\n\t@Input() public isOpen: boolean = false;\n\t@Input() public showCloseButton = true;\n\t@Input() public cardButtons: SecondaryActions[];\n\t@Input() public maxCardButtonsPerRow: number = 3;\n\t@Input() public currentLink: string | null = null;\n\t@Input() public secondaryActions: SecondaryActions[];\n\t@Input() public size: 'xs' | 'sm' | 'md' | 'lg' | 'xl' = 'xl';\n\t@Input() public mainFooterAction: {icon: string; text: string; callback?: () => void} | null = null;\n\n\t@Output() public close = new EventEmitter();\n\t@Output() public selected = new EventEmitter<string>();\n\n\t@ViewChild('menuBody', {static: false}) menuBody!: ElementRef<HTMLDivElement>;\n\n\tpublic closing = false;\n\tpublic selectedOption: MenuOption;\n\tprivate resizeObserver!: ResizeObserver;\n\n\tngOnChanges(changes: SimpleChanges) {\n\t\tif (changes['currentLink'] && this.currentLink != null && this.items?.length) {\n\t\t\tthis.preselectOptionByLink(this.currentLink);\n\t\t}\n\t}\n\n\tngAfterViewInit() {\n\t\tconst el = this.menuBody.nativeElement;\n\n\t\tthis.resizeObserver = new ResizeObserver(() => {\n\t\t\tthis.updateOverflow();\n\t\t});\n\n\t\tthis.resizeObserver.observe(el);\n\t\tthis.updateOverflow();\n\t}\n\n\tngOnDestroy() {\n\t\tif (this.resizeObserver) {\n\t\t\tthis.resizeObserver.disconnect();\n\t\t}\n\t}\n\n\tprivate preselectOptionByLink(link: string) {\n\t\tfor (const header of this.items ?? []) {\n\t\t\tif (header.link === link) { this.selectedOption = null; header.collapsed = false; return; }\n\n\t\t\tconst option = header.headerOptions?.find(o => o.link === link);\n\t\t\tif (option) { this.selectedOption = option;header.collapsed = false; return; }\n\t\t}\n\t}\n\n\tpublic selectOption(option: MenuOption) {\n\t\tthis.selectedOption = option;\n\t\tthis.selected.emit(option.link);\n\t}\n\n\tpublic closeMenu() {\n\t\tthis.close.emit();\n\t\tthis.closing = true;\n\t\tsetTimeout(() => { this.closing = false; }, 100);\n\t}\n\n\tpublic toggleMenuHeader(header: MenuHeader) {\n\t\tif (header.headerOptions?.length > 0) {\n\t\t\theader.collapsed = !header.collapsed;\n\t\t\tsetTimeout(() => this.updateOverflow(), 0);\n\t\t} else {\n\t\t\tthis.selectedOption = null;\n\t\t\tthis.selected.emit('');\n\t\t}\n\t}\n\n\tprivate updateOverflow(): void {\n\t\tconst el = this.menuBody.nativeElement;\n\t\tconst hasScroll = el.scrollHeight > el.clientHeight;\n\t\tel.classList.toggle('has-scroll', hasScroll);\n\t}\n\n\tpublic getCardButtonsRows(): any[][] {\n\t\tif (!this.cardButtons || !this.maxCardButtonsPerRow) return [];\n\t\tconst rows = [];\n\t\tfor (let i = 0; i < this.cardButtons.length; i += this.maxCardButtonsPerRow) {\n\t\t\trows.push(this.cardButtons.slice(i, i + this.maxCardButtonsPerRow));\n\t\t}\n\n\t\treturn rows;\n\t}\n}\n","<div class=\"gravity-menu {{size}}\" [class.open]=\"isOpen\" [class.closing]=\"closing\">\n <div class=\"menu-logo\">\n <svg-icon *ngIf=\"logoUrl\" [src]=\"logoUrl\" />\n <gravity-icon *ngIf=\"(size === 'md' || size === 'sm') && showCloseButton\"\n [iconSize]=\"'lg-24'\" [iconName]=\"'unsuccess'\" (click)=\"closeMenu()\"/>\n </div>\n\n <div class=\"menu-content\">\n <section #menuBody class=\"menu-body\">\n <div class=\"menu-section\">\n <div class=\"levels\" *ngFor=\"let header of items\">\n <section class=\"first-level\" [class.is-open]=\"!header.collapsed\"\n [routerLink]=\"header.link || undefined\" (click)=\"toggleMenuHeader(header)\">\n <p class=\"hr-label sm-regular\">\n <gravity-icon *ngIf=\"header.icon !== ''\" [iconName]=\"header.icon\" [iconSize]=\"'md-16'\"/>\n {{header.text}}\n </p>\n\n <div class=\"toggle\">\n <span *ngIf=\"header.badged\" class=\"badge\"></span>\n <gravity-icon *ngIf=\"header.headerOptions?.length > 0\" [iconSize]=\"'sm-12'\"\n [iconName]=\"header.collapsed ? 'arrow-down' : 'arrow-up'\"/>\n </div>\n </section>\n\n <section *ngIf=\"!header.collapsed && header.headerOptions?.length > 0\" class=\"second-level\" [@fadeSlide]>\n <div class=\"options-list\">\n <ng-container *ngFor=\"let option of header.headerOptions\">\n <div class=\"option\" [attr.data-cy]=\"option.cypress_tag\" [class.selected]=\"option === selectedOption\">\n <div class=\"line\" [class.selected]=\"(size === 'xl' || size == 'lg') && option === selectedOption\"></div>\n <span [ngClass]=\"(size === 'sm' || size === 'md') ? 'hr-label md-regular' : 'hr-label sm-regular'\"\n [class.disabled]=\"option.disabled\" [class.selected]=\"option === selectedOption\"\n [routerLink]=\"option.link || undefined\" (click)=\"selectOption(option)\">\n {{option.text}}\n </span>\n </div>\n </ng-container>\n </div>\n </section>\n </div>\n </div>\n </section>\n\n <section *ngIf=\"(secondaryActions || userInfo) && (size === 'xl' || size === 'lg')\" class=\"menu-footer elevation-xs\">\n <section class=\"footer-content\">\n <div *ngIf=\"secondaryActions\" class=\"secondary-actions\">\n <div class=\"action\" *ngFor=\"let action of secondaryActions\" (click)=\"action.callback()\">\n <gravity-icon *ngIf=\"action.icon !== ''\" [iconName]=\"action.icon\" [iconSize]=\"'md-16'\"/>\n <span class=\"hr-label sm-regular\">{{action.text}}</span>\n </div>\n </div>\n\n <hr *ngIf=\"secondaryActions && userInfo\" class=\"separator-line\">\n\n <div *ngIf=\"userInfo\" class=\"user-info-list\">\n <div *ngFor=\"let userInfo of userInfo\" class=\"user-info\">\n <gravity-icon *ngIf=\"userInfo.icon !== ''\" [iconName]=\"userInfo.icon\" [iconSize]=\"'sm-12'\"/>\n <span class=\"hr-label sm-regular\">{{userInfo.info}}</span>\n </div>\n </div>\n </section>\n </section>\n\n <!-- - - - - - - - - - - Mobile Resolutions - - - - - - - - - - -->\n\n <section *ngIf=\"(cardButtons || userInfo) && (size === 'md' || size === 'sm')\" class=\"menu-footer-mobile\">\n <section class=\"footer-content\">\n <div *ngIf=\"cardButtons\" class=\"secondary-actions\">\n <div class=\"card-buttons\">\n <div class=\"card-buttons-row\" *ngFor=\"let row of getCardButtonsRows()\">\n <gravity-card-button *ngFor=\"let button of row\" [type]=\"'secondary'\"\n (clicked)=\"button.callback(); selected.emit()\" [orientation]=\"'vrt-center'\" [iconName]=\"button.icon\" [label]=\"button.text\"/>\n </div>\n </div>\n <gravity-button *ngIf=\"mainFooterAction\" [size]=\"'md'\" [type]=\"'tertiary'\" [iconName]=\"mainFooterAction.icon\"\n [iconPosition]=\"'left'\" (click)=\"mainFooterAction.callback()\"> {{mainFooterAction.text}} </gravity-button>\n </div>\n <div *ngIf=\"userInfo\" class=\"user-info-list\">\n <div *ngFor=\"let userInfo of userInfo\" class=\"user-info\">\n <gravity-icon [iconSize]=\"'sm-12'\" [iconName]=\"userInfo.icon\"/>\n <span class=\"hr-label sm-regular\">{{userInfo.info}}</span>\n </div>\n </div>\n </section>\n </section>\n </div>\n</div>\n\n","import {Component, Input, Output, EventEmitter, OnChanges, SimpleChanges} from '@angular/core';\n\nexport interface GravityPageChangedEvent {\n page: number;\n itemsPerPage: number;\n}\n\n@Component({\n selector: 'gravity-pagination',\n templateUrl: './gravity-pagination.component.html',\n styleUrls: ['./gravity-pagination.component.scss']\n})\nexport class GravityPaginationComponent implements OnChanges {\n @Input() currentLang: string = 'en';\n @Input() cypressTag: string;\n\n @Input() totalItems: number;\n @Input() itemsPerPage: number;\n @Input() currentPage: number = 1;\n\n @Input() type: 'full' | 'compact' | 'page-count' | 'dots' = 'full';\n @Input() showPageCount: boolean = true;\n @Input() showArrowDots: boolean = true;\n\n @Output() pageChanged = new EventEmitter<GravityPageChangedEvent>();\n\n totalPages: number = 0;\n pages: number[] = [];\n\n ngOnChanges(changes: SimpleChanges): void {\n this.updatePages();\n }\n\n private updatePages(): void {\n this.totalPages = Math.ceil(this.totalItems / this.itemsPerPage);\n const pages: any[] = [];\n const first = 1;\n const last = this.totalPages;\n\n // UNDER 5 PAGES\n if (this.totalPages <= 5) {\n this.pages = Array.from({ length: this.totalPages }, (_, i) => i + 1);\n return;\n }\n\n // DOTS CASE\n if (this.type === 'dots') {\n this.pages = Array.from({ length: this.totalPages }, (_, i) => i + 1);\n return;\n }\n\n // INITIAL SECTION (pages 1–3)\n if (this.currentPage <= 3) {\n pages.push(1);\n\n if (this.totalPages >= 2) pages.push(2);\n if (this.totalPages >= 3) pages.push(3);\n if (this.totalPages >= 4) pages.push(4);\n\n if (this.totalPages > 5) {\n pages.push('...');\n pages.push(last);\n } else {\n for (let i = 5; i <= last; i++) pages.push(i);\n }\n\n this.pages = pages;\n return;\n }\n\n // FINAL SECTION (last 3 pages)\n if (this.currentPage >= last - 2) {\n pages.push(first);\n pages.push('...');\n\n const start = last - 3; // example: 10 → 7\n for (let p = start; p <= last; p++) {\n if (p > 1) pages.push(p);\n }\n\n this.pages = pages;\n return;\n }\n\n // MIDDLE PART (neither at the beginning nor at the end)\n pages.push(first);\n pages.push('...');\n\n const prev = this.currentPage - 1;\n const next = this.currentPage + 1;\n\n pages.push(prev);\n pages.push(this.currentPage);\n pages.push(next);\n\n pages.push('...');\n pages.push(last);\n\n this.pages = pages;\n }\n\n changePage(page: number): void {\n if (page < 1 || page > this.totalPages || page === this.currentPage || String(page) == '...') return;\n\n this.currentPage = page;\n this.updatePages();\n\n this.pageChanged.emit({\n page: this.currentPage,\n itemsPerPage: this.itemsPerPage\n });\n }\n}\n","<div class=\"gravity-pagination-container\" [attr.data-cy]=\"cypressTag ? 'pagination_' + cypressTag : null\">\n <!-- First -->\n <div class=\"paginator-button-container\" (click)=\"changePage(1)\" [attr.data-cy]=\"'pagination_firstButton'\"\n *ngIf=\"type != 'dots' && currentPage != 1 && totalPages > 5 || type == 'page-count'\">\n <gravity-icon [iconName]=\"'chevron-double-left'\" [iconSize]=\"'sm-12'\"\n [style.--icon-color]=\"'var(--paginator-button-text-color)'\"></gravity-icon>\n <p class=\"hr-body sm-regular\" *ngIf=\"type == 'full'\">{{ currentLang == 'en' ? 'First' : 'Primero' }}</p>\n </div>\n\n <!-- Back -->\n <div class=\"paginator-button-container\" [class.disabled]=\"currentPage === 1\" [attr.data-cy]=\"'pagination_backButton'\"\n (click)=\"changePage(currentPage - 1)\" *ngIf=\"showArrowDots\">\n <gravity-icon [iconName]=\"'arrow-left'\" [iconSize]=\"'sm-12'\"\n [style.--icon-color]=\"'var(--paginator-button-text-color)'\"></gravity-icon>\n <p class=\"hr-body sm-regular\" *ngIf=\"type == 'full'\">{{ currentLang == 'en' ? 'Back' : 'Atrás' }}</p>\n </div>\n\n <!-- Numbers and Ellipsis -->\n <ng-container *ngIf=\"type == 'full' || type == 'compact'\">\n <ng-container *ngFor=\"let p of pages\">\n <div class=\"paginator-button-container\"\n [class.no-click]=\"p.toString() == '...'\"\n [class.pressed]=\"currentPage === p\"\n (click)=\"changePage(p)\" [attr.data-cy]=\"'pagination_page' +p+ 'Button'\">\n <p class=\"hr-body sm-regular\">{{ p }}</p>\n </div>\n </ng-container>\n </ng-container>\n\n <!-- Page count -->\n <div class=\"paginator-button-container no-click\" *ngIf=\"type === 'page-count' && showPageCount\">\n <p class=\"hr-body sm-regular\">{{ currentPage + (currentLang == 'en' ? ' of ' : ' de ') + totalPages }}</p>\n </div>\n\n <!-- Dots -->\n <div class=\"dots-container\" *ngIf=\"type === 'dots'\">\n <ng-container *ngFor=\"let p of pages\">\n <div class=\"dot\"\n [class.pressed]=\"currentPage === p\"\n (click)=\"changePage(p)\" [attr.data-cy]=\"'pagination_page' +p+ 'DotsButton'\"></div>\n </ng-container>\n </div>\n\n <!-- Next -->\n <div class=\"paginator-button-container\" [class.disabled]=\"currentPage === totalPages\"\n [attr.data-cy]=\"'pagination_nextButton'\"\n (click)=\"changePage(currentPage + 1)\" *ngIf=\"showArrowDots\">\n <p class=\"hr-body sm-regular\" *ngIf=\"type == 'full'\">{{ currentLang == 'en' ? 'Next' : 'Siguiente' }}</p>\n <gravity-icon [iconName]=\"'arrow-right'\" [iconSize]=\"'sm-12'\"\n [style.--icon-color]=\"'var(--paginator-button-text-color)'\"></gravity-icon>\n </div>\n\n <!-- Last -->\n <div class=\"paginator-button-container\" (click)=\"changePage(totalPages)\" [attr.data-cy]=\"'pagination_lastButton'\"\n *ngIf=\"type != 'dots' && currentPage !== totalPages && totalPages > 5 || type == 'page-count'\">\n <p class=\"hr-body sm-regular\" *ngIf=\"type == 'full'\">{{ currentLang == 'en' ? 'Last' : 'Último' }}</p>\n <gravity-icon [iconName]=\"'chevron-double-right'\" [iconSize]=\"'sm-12'\"\n [style.--icon-color]=\"'var(--paginator-button-text-color)'\"></gravity-icon>\n </div>\n</div>\n","import {NgModule} from '@angular/core';\nimport {CommonModule} from \"@angular/common\";\nimport {FormsModule, ReactiveFormsModule} from \"@angular/forms\";\nimport {GravityButtonComponent} from './components/gravity-button/gravity-button.component';\nimport {GravityDropdownListComponent} from \"./components/gravity-dropdown-list/gravity-dropdown-list.component\";\nimport {GravityDropdownListDisplayComponent} from \"./components/gravity-dropdown-list-display/gravity-dropdown-list-display.component\";\nimport {GravityTextFieldComponent} from \"./components/gravity-text-field/gravity-text-field.component\";\nimport {GravityTooltipModule} from \"./vendor/gravity-tooltip\";\nimport {AngularSvgIconPreloaderModule} from \"angular-svg-icon-preloader\";\nimport {AngularSvgIconModule} from \"angular-svg-icon\";\nimport {GravityCalendarV2Component} from \"./components/gravity-calendar-v2/gravity-calendar-v2.component\";\nimport {NgbDatepickerModule, NgbOffcanvasModule, NgbProgressbarModule, NgbToastModule} from \"@ng-bootstrap/ng-bootstrap\";\nimport {GravityRadioButtonComponent} from './components/gravity-radio-button/gravity-radio-button.component';\nimport {GravitySwitchComponent} from './components/gravity-switch/gravity-switch.component';\nimport {GravityCheckboxComponent} from './components/gravity-checkbox/gravity-checkbox.component';\nimport {GravityDialogComponent} from \"./components/gravity-dialog/gravity-dialog.component\";\nimport {GravityIconComponent} from \"./components/gravity-icon/gravity-icon.component\";\nimport {GravityNotificationComponent} from \"./components/gravity-notification/gravity-notification.component\";\nimport {GravityNotificationInstantContainerComponent} from \"./components/gravity-notification-instant/gravity-notification-instant-container.component\";\nimport {GravityAttachFileComponent} from \"./components/gravity-attach-file/gravity-attach-file.component\";\nimport {GravityTableComponent} from \"./components/gravity-table/gravity-table.component\";\nimport {GravityTreeViewComponent} from \"./components/gravity-tree-view/gravity-tree-view.component\";\nimport {NodeComponent} from \"./components/gravity-tree-view/node/node.component\";\nimport {NodeToggleComponent} from \"./components/gravity-tree-view/node/node-toggle/node-toggle.component\";\nimport {NodeCheckboxComponent} from \"./components/gravity-tree-view/node/node-checkbox/node-checkbox.component\";\nimport {NodeNameComponent} from \"./components/gravity-tree-view/node/node-name/node-name.component\";\nimport {GravityStepperComponent} from \"./components/gravity-stepper/gravity-stepper.component\";\nimport {BsDatepickerModule} from \"ngx-bootstrap/datepicker\";\nimport {GravityTextFieldNumberOnlyComponent} from \"./components/gravity-text-field-number-only/gravity-text-field-number-only.component\";\nimport {FilterByPipe} from \"./components/gravity-dropdown-list/filter-by.pipe\";\nimport {GravityIconButtonComponent} from \"./components/gravity-icon-button/gravity-icon-button.component\";\nimport {GravityStatusIndicatorComponent} from \"./components/gravity-status-indicator/gravity-status-indicator.component\";\nimport {BsDatepickerDayDecoratorComponent} from \"./components/gravity-calendar-v2/datepicker/components/bs-days-calendar-view/bs-datepicker-day-decorator.directive\";\nimport {BsDatepickerNavigationViewComponent} from \"./components/gravity-calendar-v2/datepicker/components/bs-datepicker-navigation-view/bs-datepicker-navigation-view.component\";\nimport {BsDaysCalendarViewComponent} from \"./components/gravity-calendar-v2/datepicker/components/bs-days-calendar-view/bs-days-calendar-view.component\";\nimport {BsMonthCalendarViewComponent} from \"./components/gravity-calendar-v2/datepicker/components/bs-months-calendar-view/bs-months-calendar-view.component\";\nimport {BsYearsCalendarViewComponent} from \"./components/gravity-calendar-v2/datepicker/components/bs-years-calendar-view/bs-years-calendar-view.component\";\nimport {BsDatepickerContainerComponent} from \"./components/gravity-calendar-v2/datepicker/components/bs-datepicker-container.component\";\nimport {BsDatepickerDirective} from \"./components/gravity-calendar-v2/datepicker/bs-datepicker.component\";\nimport {BsDatepickerInlineContainerComponent} from \"./components/gravity-calendar-v2/datepicker/components/bs-datepicker-inline-container.component\";\nimport {BsDatepickerInlineDirective} from \"./components/gravity-calendar-v2/datepicker/bs-datepicker-inline.component\";\nimport {BsDaterangepickerContainerComponent} from \"./components/gravity-calendar-v2/datepicker/components/bs-daterangepicker-container.component\";\nimport {BsDaterangepickerDirective} from \"./components/gravity-calendar-v2/datepicker/bs-daterangepicker.component\";\nimport {BsDaterangepickerInlineContainerComponent} from \"./components/gravity-calendar-v2/datepicker/components/bs-daterangepicker-inline-container.component\";\nimport {BsDaterangepickerInlineDirective} from \"./components/gravity-calendar-v2/datepicker/bs-daterangepicker-inline.component\";\nimport {GravityAvatarStackComponent } from './components/gravity-avatar-stack/gravity-avatar-stack.component';\nimport {GravityGenericAvatarComponent} from \"./components/gravity-generic-avatar/gravity-generic-avatar.component\";\nimport {GravityNetworkPillComponent} from \"./components/gravity-network-pill/gravity-network-pill.component\";\nimport {GravityMultiLanguageComponent} from \"./components/gravity-multi-language/gravity-multi-language.component\";\nimport {GravityCurrencyComponent} from \"./components/gravity-currency/gravity-currency.component\";\nimport {GravityModalComponent} from './components/gravity-modal/gravity-modal.component';\nimport {GravityLinkComponent} from './components/gravity-link/gravity-link.component';\nimport {RouterLink} from \"@angular/router\";\nimport {GravityTabPrimaryComponent} from './components/gravity-tab-primary/gravity-tab-primary.component';\nimport {GravityTabSecondaryComponent} from './components/gravity-tab-secondary/gravity-tab-secondary.component';\nimport {GravityEditableInputComponent} from './components/gravity-editable-input/gravity-editable-input.component';\nimport {GravityCardButtonComponent} from './components/gravity-card-button/gravity-card-button.component';\nimport {DateAbbreviationPipe} from './components/gravity-calendar-v2/datepicker/utils/date-abbreviation.pipe';\nimport {GravityDropdownLabelComponent} from './components/gravity-dropdown-label/gravity-dropdown-label.component';\nimport {GravityNavigationCardComponent} from './components/gravity-navigation-card/gravity-navigation-card.component';\nimport {GravityGenericAvatarSecondaryComponent} from './components/gravity-generic-avatar-secondary/gravity-generic-avatar-secondary.component';\nimport {GravityBackdropComponent} from './components/gravity-backdrop/gravity-backdrop.component';\nimport {GravityDatePickerComponent} from './components/gravity-date-picker/gravity-date-picker.component';\nimport {DayCalendarComponent} from './components/gravity-date-picker/components/day-calendar/day-calendar.component';\nimport {MonthCalendarComponent} from './components/gravity-date-picker/components/month-calendar/month-calendar.component';\nimport {YearCalendarComponent} from './components/gravity-date-picker/components/year-calendar/year-calendar.component';\nimport {GravitySegmentedButtonComponent} from './components/gravity-segmented-button/gravity-segmented-button.component';\nimport {GravityChipGroupComponent} from './components/gravity-chip-group/gravity-chip-group.component';\nimport {GravityCurrencyDisplayV2Component} from './components/gravity-currency-display-v2/gravity-currency-display-v2.component';\nimport {GravityTablesV2Component} from \"./components/gravity-tables-v2/gravity-tables-v2.component\";\nimport {GravityDataViewsV2Component} from \"./components/gravity-data-views-v2/gravity-data-views-v2.component\";\nimport {GravityDetailContainerComponent} from \"./components/gravity-detail-container/gravity-detail-container.component\";\nimport {GravityHeaderComponent} from './layout/gravity-header/gravity-header.component';\nimport {GravityPushNotificationsComponent} from './components/gravity-push-notifications/gravity-push-notifications.component';\nimport {GravityMenuComponent} from './layout/gravity-menu/gravity-menu.component';\nimport {GravityPaginationComponent} from \"./components/gravity-pagination/gravity-pagination.component\";\n\n@NgModule({\n declarations: [\n GravityAttachFileComponent,\n GravityAvatarStackComponent,\n GravityGenericAvatarComponent,\n GravityButtonComponent,\n GravityCalendarV2Component,\n GravityCheckboxComponent,\n GravityCurrencyComponent,\n GravityDataViewsV2Component,\n GravityDialogComponent,\n GravityDetailContainerComponent,\n GravityDropdownListComponent,\n GravityDropdownListDisplayComponent,\n GravityIconButtonComponent,\n GravityIconComponent,\n GravityMultiLanguageComponent,\n GravityNetworkPillComponent,\n GravityNotificationComponent,\n GravityNotificationInstantContainerComponent,\n GravityRadioButtonComponent,\n GravityStatusIndicatorComponent,\n GravityStepperComponent,\n GravitySwitchComponent,\n GravityTableComponent,\n GravityTablesV2Component,\n GravityTextFieldComponent,\n GravityTextFieldNumberOnlyComponent,\n GravityTreeViewComponent,\n\n NodeComponent,\n NodeToggleComponent,\n NodeCheckboxComponent,\n NodeNameComponent,\n\n FilterByPipe,\n DateAbbreviationPipe,\n\n BsDatepickerDayDecoratorComponent,\n BsDatepickerNavigationViewComponent,\n BsDaysCalendarViewComponent,\n BsMonthCalendarViewComponent,\n BsYearsCalendarViewComponent,\n BsDatepickerContainerComponent,\n BsDatepickerDirective,\n BsDatepickerInlineContainerComponent,\n BsDatepickerInlineDirective,\n BsDaterangepickerContainerComponent,\n BsDaterangepickerDirective,\n BsDaterangepickerInlineContainerComponent,\n BsDaterangepickerInlineDirective,\n GravityModalComponent,\n GravityLinkComponent,\n GravityTabPrimaryComponent,\n GravityTabSecondaryComponent,\n GravityChipGroupComponent,\n GravityEditableInputComponent,\n GravityCardButtonComponent,\n GravityDropdownLabelComponent,\n GravityNavigationCardComponent,\n GravityGenericAvatarSecondaryComponent,\n GravityBackdropComponent,\n GravityDatePickerComponent,\n DayCalendarComponent,\n MonthCalendarComponent,\n YearCalendarComponent,\n GravitySegmentedButtonComponent,\n GravityCurrencyDisplayV2Component,\n GravityHeaderComponent,\n GravityPaginationComponent,\n GravityPushNotificationsComponent,\n GravityMenuComponent,\n ],\n imports: [\n AngularSvgIconModule.forRoot(),\n AngularSvgIconPreloaderModule.forRoot({\n configUrl: './assets/gravity/json/icons.json',\n }),\n BsDatepickerModule,\n CommonModule,\n FormsModule,\n GravityTooltipModule.forRoot({}),\n NgbDatepickerModule,\n NgbOffcanvasModule,\n NgbProgressbarModule,\n NgbToastModule,\n ReactiveFormsModule,\n RouterLink\n ],\n exports: [\n GravityAttachFileComponent,\n GravityAvatarStackComponent,\n GravityGenericAvatarComponent,\n GravityButtonComponent,\n GravityCalendarV2Component,\n GravityCheckboxComponent,\n GravityCurrencyComponent,\n GravityCurrencyDisplayV2Component,\n GravityDataViewsV2Component,\n GravityDialogComponent,\n GravityDetailContainerComponent,\n GravityDropdownListComponent,\n GravityDropdownListDisplayComponent,\n GravityIconButtonComponent,\n GravityIconComponent,\n GravityMultiLanguageComponent,\n GravityNetworkPillComponent,\n GravityNotificationInstantContainerComponent,\n GravityRadioButtonComponent,\n GravityStatusIndicatorComponent,\n GravityStepperComponent,\n GravitySwitchComponent,\n GravityTableComponent,\n GravityTablesV2Component,\n GravityTextFieldComponent,\n GravityTextFieldNumberOnlyComponent,\n GravityTooltipModule,\n GravityTreeViewComponent,\n GravityModalComponent,\n GravityLinkComponent,\n GravityTabPrimaryComponent,\n GravityTabSecondaryComponent,\n GravityChipGroupComponent,\n GravityEditableInputComponent,\n GravityCardButtonComponent,\n GravityNavigationCardComponent,\n GravityGenericAvatarSecondaryComponent,\n GravityBackdropComponent,\n GravityDatePickerComponent,\n GravitySegmentedButtonComponent,\n\t GravityHeaderComponent,\n GravityPaginationComponent,\n\t GravityPushNotificationsComponent,\n\t GravityMenuComponent,\n ]\n})\nexport class GravityDesignSystemModule {\n}\n","import {Injectable} from \"@angular/core\";\nimport {NgbModal, NgbModalRef} from \"@ng-bootstrap/ng-bootstrap\";\nimport {\n GravityDialogComponent,\n GravityDialogContentInterface\n} from \"../components/gravity-dialog/gravity-dialog.component\";\nimport {GravityInstantNotificationsService} from \"./gravity-instant-notifications.service\";\nimport {GravityNotificationComponent} from \"../components/gravity-notification/gravity-notification.component\";\nimport {GravityNotificationContent} from \"../components/gravity-notification/gravity-notification-content.interface\";\n\n@Injectable({providedIn: \"root\"})\nexport class GravityDialogManagerService {\n constructor(private readonly ngbModal: NgbModal, private readonly gravityInstantNotificationsService: GravityInstantNotificationsService) {\n }\n\n public openModal(gravityDialogContentInterface: GravityDialogContentInterface, scrollableDialog: boolean = false, modalSize: 'sm' | 'md' | 'lg' | 'xl' | 'fit' = 'md', backdrop: boolean | 'static' = true): NgbModalRef {\n const modalRef = this.ngbModal.open(GravityDialogComponent, {\n centered: true,\n scrollable: scrollableDialog,\n size: modalSize,\n backdrop: backdrop\n });\n modalRef.componentInstance.dialogContent = gravityDialogContentInterface;\n return modalRef;\n }\n\n public throwInformativeNotification(notificationContent: GravityNotificationContent): void {\n const modalRef = this.ngbModal.open(GravityNotificationComponent, {\n modalDialogClass: 'informative-notification',\n centered: true\n });\n modalRef.componentInstance.notificationContent = notificationContent;\n }\n\n public throwInstantNotification(notificationContent: GravityNotificationContent): void {\n this.gravityInstantNotificationsService.showNotification(notificationContent);\n }\n\n public closeModal(modalToClose: NgbModalRef, returnValue?: any): any {\n modalToClose.close(returnValue);\n }\n\n public closeAllModals(): boolean {\n if (this.ngbModal.hasOpenModals()) {\n this.ngbModal.dismissAll('dismiss all modals');\n }\n\n return true;\n }\n}\n","/*\n * Public API Surface of gravity-design-system\n */\n\nexport * from './lib/gravity-design-system.module';\n\n//Components\nexport * from './lib/components/gravity-attach-file/gravity-attach-file.component';\nexport * from './lib/components/gravity-avatar-stack/gravity-avatar-stack.component';\nexport * from './lib/components/gravity-button/gravity-button.component';\nexport * from './lib/components/gravity-calendar-v2/gravity-calendar-v2.component';\nexport * from './lib/components/gravity-date-picker/gravity-date-picker.component';\nexport * from './lib/components/gravity-checkbox/gravity-checkbox.component';\nexport * from './lib/components/gravity-currency/gravity-currency.component';\nexport * from './lib/components/gravity-currency-display-v2/gravity-currency-display-v2.component';\nexport * from './lib/components/gravity-data-views-v2/gravity-data-views-v2.component';\nexport * from './lib/components/gravity-detail-container/gravity-detail-container.component';\nexport * from './lib/components/gravity-dialog/gravity-dialog.component';\nexport * from './lib/components/gravity-dropdown-list/gravity-dropdown-list.component';\nexport * from './lib/components/gravity-dropdown-list-display/gravity-dropdown-list-display.component';\nexport * from './lib/components/gravity-icon/gravity-icon.component';\nexport * from './lib/components/gravity-icon-button/gravity-icon-button.component';\nexport * from './lib/components/gravity-multi-language/gravity-multi-language.component';\nexport * from './lib/components/gravity-network-pill/gravity-network-pill.component';\nexport * from './lib/components/gravity-notification-instant/gravity-notification-instant-container.component';\nexport * from './lib/components/gravity-radio-button/gravity-radio-button.component';\nexport * from './lib/components/gravity-status-indicator/gravity-status-indicator.component';\nexport * from './lib/components/gravity-stepper/gravity-stepper.component';\nexport * from './lib/components/gravity-switch/gravity-switch.component';\nexport * from './lib/components/gravity-table/gravity-table.component';\nexport * from './lib/components/gravity-tables-v2/gravity-tables-v2.component';\nexport * from './lib/components/gravity-text-field/gravity-text-field.component';\nexport * from './lib/components/gravity-text-field-number-only/gravity-text-field-number-only.component';\nexport * from './lib/components/gravity-tree-view/gravity-tree-view.component';\nexport * from './lib/components/gravity-generic-avatar/gravity-generic-avatar.component';\nexport * from './lib/components/gravity-modal/gravity-modal.component';\nexport * from './lib/components/gravity-link/gravity-link.component';\nexport * from './lib/components/gravity-tab-primary/gravity-tab-primary.component'\nexport * from './lib/components/gravity-tab-secondary/gravity-tab-secondary.component';\nexport * from './lib/components/gravity-chip-group/gravity-chip-group.component';\nexport * from './lib/components/gravity-editable-input/gravity-editable-input.component';\nexport * from './lib/components/gravity-card-button/gravity-card-button.component';\nexport * from './lib/components/gravity-dropdown-label/gravity-dropdown-label.component';\nexport * from './lib/components/gravity-navigation-card/gravity-navigation-card.component';\nexport * from './lib/components/gravity-generic-avatar-secondary/gravity-generic-avatar-secondary.component'\nexport * from './lib/components/gravity-backdrop/gravity-backdrop.component';\nexport * from './lib/components/gravity-segmented-button/gravity-segmented-button.component';\nexport * from './lib/components/gravity-push-notifications/gravity-push-notifications.component';\nexport * from './lib/components/gravity-pagination/gravity-pagination.component';\n\n//Layout\nexport * from './lib/layout/gravity-header/gravity-header.component';\nexport * from './lib/layout/gravity-menu/gravity-menu.component'\n\n//Services\nexport * from './lib/services/gravity-dialog-manager.service';\n\n//Vendor\nexport * from './lib/vendor/gravity-tooltip';\n\n//Models and interfaces\nexport * from './lib/components/gravity-notification/gravity-notification-content.interface';\nexport * from './lib/components/gravity-calendar-v2/datepicker/models';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2","i1","i3.GravityIconComponent","i2.GravityIconComponent","i2.GravityCurrencyComponent","i3.GravityNetworkPillComponent","i1.GravityDropdownManagerService","i4.GravityCheckboxComponent","i5.GravityCurrencyComponent","i6.GravityIconComponent","i7.GravityNetworkPillComponent","i8.GravityLinkComponent","i9.GravityDropdownLabelComponent","i10.GravityCurrencyDisplayV2Component","i2.FilterByPipe","i3","i4","i5.GravityIconComponent","i6.GravityCurrencyDisplayV2Component","i1.BsDatepickerActions","height","width","shift","i1.HeaderTypeService","i3.BsDatepickerDayDecoratorComponent","i4.BsDatepickerNavigationViewComponent","i3.BsDatepickerNavigationViewComponent","i4.DateAbbreviationPipe","i2.BsDatepickerConfig","i3.BsDatepickerCallbacks","i4.BsDatepickerStore","i5.BsDatepickerActions","i6.BsDatepickerEffects","i8","i9.GravityIconComponent","i10.BsDaysCalendarViewComponent","i11.BsMonthCalendarViewComponent","i12.BsYearsCalendarViewComponent","i13.GravityLinkComponent","previousDate","i1.BsDatepickerInlineConfig","i1.BsDaterangepickerConfig","i1.BsDaterangepickerInlineConfig","i4.GravityIconComponent","i5.BsDatepickerDirective","i6.BsDatepickerInlineDirective","i7.BsDaterangepickerDirective","i8.BsDaterangepickerInlineDirective","i10.DateAbbreviationPipe","i1.GravityInstantNotificationsService","i2.GravityButtonComponent","i1.GravityButtonComponent","i1.TreeService","i2.NodeToggleComponent","i3.NodeCheckboxComponent","i4.NodeNameComponent","i3.GravityTextFieldComponent","i4.NodeComponent","i4.GravityLinkComponent","i3.GravityStatusIndicatorComponent","i2.GravityIconButtonComponent","i3.GravityLinkComponent","i4.GravityDropdownLabelComponent","i3.GravityIconButtonComponent","i5.GravityTextFieldComponent","i6.GravityLinkComponent","i7.GravityDropdownLabelComponent","i8.MonthCalendarComponent","i9.YearCalendarComponent","i3.DayCalendarComponent","i4.MonthCalendarComponent","i5.YearCalendarComponent","i2.GravityStatusIndicatorComponent","i1.GravityResponsiveService","i1.PushNotificationsService","i4.GravityPushNotificationsComponent","i4.GravityButtonComponent","i6.GravityCardButtonComponent","i2.GravityInstantNotificationsService"],"mappings":"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"}
1
+ {"version":3,"file":"progressio_resources-gravity-design-system.mjs","sources":["../../../projects/gravity-design-system/src/lib/components/gravity-icon/gravity-icon.component.ts","../../../projects/gravity-design-system/src/lib/components/gravity-icon/gravity-icon.component.html","../../../projects/gravity-design-system/src/lib/components/gravity-button/gravity-button.component.ts","../../../projects/gravity-design-system/src/lib/components/gravity-button/gravity-button.component.html","../../../projects/gravity-design-system/src/lib/components/gravity-dropdown-list/filter-by.pipe.ts","../../../projects/gravity-design-system/src/lib/services/gravity-dropdown-manager.service.ts","../../../projects/gravity-design-system/src/lib/components/gravity-checkbox/gravity-checkbox.component.ts","../../../projects/gravity-design-system/src/lib/components/gravity-checkbox/gravity-checkbox.component.html","../../../projects/gravity-design-system/src/lib/components/gravity-currency/gravity-currency.component.ts","../../../projects/gravity-design-system/src/lib/components/gravity-currency/gravity-currency.component.html","../../../projects/gravity-design-system/src/lib/components/gravity-network-pill/gravity-network-pill.component.ts","../../../projects/gravity-design-system/src/lib/components/gravity-network-pill/gravity-network-pill.component.html","../../../projects/gravity-design-system/src/lib/components/gravity-link/gravity-link.component.ts","../../../projects/gravity-design-system/src/lib/components/gravity-link/gravity-link.component.html","../../../projects/gravity-design-system/src/lib/components/gravity-dropdown-label/gravity-dropdown-label.component.ts","../../../projects/gravity-design-system/src/lib/components/gravity-dropdown-label/gravity-dropdown-label.component.html","../../../projects/gravity-design-system/src/lib/components/gravity-currency-display-v2/gravity-currency-display-v2.component.ts","../../../projects/gravity-design-system/src/lib/components/gravity-currency-display-v2/gravity-currency-display-v2.component.html","../../../projects/gravity-design-system/src/lib/components/gravity-dropdown-list/gravity-dropdown-list.component.ts","../../../projects/gravity-design-system/src/lib/components/gravity-dropdown-list/gravity-dropdown-list.component.html","../../../projects/gravity-design-system/src/lib/components/gravity-dropdown-list-display/gravity-dropdown-list-display.component.ts","../../../projects/gravity-design-system/src/lib/components/gravity-dropdown-list-display/gravity-dropdown-list-display.component.html","../../../projects/gravity-design-system/src/lib/components/gravity-text-field/gravity-text-field.component.ts","../../../projects/gravity-design-system/src/lib/components/gravity-text-field/gravity-text-field.component.html","../../../projects/gravity-design-system/src/lib/vendor/gravity-tooltip/gravity-tooltip.component.ts","../../../projects/gravity-design-system/src/lib/vendor/gravity-tooltip/gravity-tooltip.component.html","../../../projects/gravity-design-system/src/lib/vendor/gravity-tooltip/options.service.ts","../../../projects/gravity-design-system/src/lib/vendor/gravity-tooltip/options.ts","../../../projects/gravity-design-system/src/lib/vendor/gravity-tooltip/gravity-tooltip.directive.ts","../../../projects/gravity-design-system/src/lib/vendor/gravity-tooltip/gravity-tooltip.module.ts","../../../projects/gravity-design-system/src/lib/components/gravity-calendar-v2/datepicker/services/header-type.service.ts","../../../projects/gravity-design-system/src/lib/components/gravity-calendar-v2/datepicker/bs-datepicker.config.ts","../../../projects/gravity-design-system/src/lib/components/gravity-calendar-v2/datepicker/datepicker-animations.ts","../../../projects/gravity-design-system/src/lib/components/gravity-calendar-v2/datepicker/base/bs-datepicker-container.ts","../../../projects/gravity-design-system/src/lib/components/gravity-calendar-v2/datepicker/reducer/bs-datepicker.actions.ts","../../../projects/gravity-design-system/src/lib/components/gravity-calendar-v2/datepicker/reducer/bs-datepicker.effects.ts","../../../projects/gravity-design-system/src/lib/components/gravity-calendar-v2/datepicker/reducer/_defaults.ts","../../../projects/gravity-design-system/src/lib/components/gravity-calendar-v2/datepicker/reducer/bs-datepicker.state.ts","../../../projects/gravity-design-system/src/lib/components/gravity-calendar-v2/datepicker/utils/bs-calendar-utils.ts","../../../projects/gravity-design-system/src/lib/components/gravity-calendar-v2/datepicker/utils/matrix-utils.ts","../../../projects/gravity-design-system/src/lib/components/gravity-calendar-v2/datepicker/engine/calc-days-calendar.ts","../../../projects/gravity-design-system/src/lib/components/gravity-calendar-v2/datepicker/engine/format-days-calendar.ts","../../../projects/gravity-design-system/src/lib/components/gravity-calendar-v2/datepicker/engine/flag-days-calendar.ts","../../../projects/gravity-design-system/src/lib/components/gravity-calendar-v2/datepicker/engine/view-mode.ts","../../../projects/gravity-design-system/src/lib/components/gravity-calendar-v2/datepicker/engine/format-months-calendar.ts","../../../projects/gravity-design-system/src/lib/components/gravity-calendar-v2/datepicker/engine/flag-months-calendar.ts","../../../projects/gravity-design-system/src/lib/components/gravity-calendar-v2/datepicker/engine/format-years-calendar.ts","../../../projects/gravity-design-system/src/lib/components/gravity-calendar-v2/datepicker/engine/flag-years-calendar.ts","../../../projects/gravity-design-system/src/lib/components/gravity-calendar-v2/datepicker/reducer/bs-datepicker.reducer.ts","../../../projects/gravity-design-system/src/lib/components/gravity-calendar-v2/datepicker/reducer/bs-datepicker.store.ts","../../../projects/gravity-design-system/src/lib/components/gravity-calendar-v2/datepicker/bs-datepicker.callbacks.ts","../../../projects/gravity-design-system/src/lib/components/gravity-calendar-v2/datepicker/models/index.ts","../../../projects/gravity-design-system/src/lib/components/gravity-calendar-v2/datepicker/components/bs-days-calendar-view/bs-datepicker-day-decorator.directive.ts","../../../projects/gravity-design-system/src/lib/components/gravity-calendar-v2/datepicker/components/bs-datepicker-navigation-view/bs-datepicker-navigation-view.component.ts","../../../projects/gravity-design-system/src/lib/components/gravity-calendar-v2/datepicker/components/bs-datepicker-navigation-view/bs-datepicker-navigation-view.component.html","../../../projects/gravity-design-system/src/lib/components/gravity-calendar-v2/datepicker/components/bs-days-calendar-view/bs-days-calendar-view.component.ts","../../../projects/gravity-design-system/src/lib/components/gravity-calendar-v2/datepicker/components/bs-days-calendar-view/bs-days-calendar-view.component.html","../../../projects/gravity-design-system/src/lib/components/gravity-calendar-v2/datepicker/utils/date-abbreviation.pipe.ts","../../../projects/gravity-design-system/src/lib/components/gravity-calendar-v2/datepicker/components/bs-months-calendar-view/bs-months-calendar-view.component.ts","../../../projects/gravity-design-system/src/lib/components/gravity-calendar-v2/datepicker/components/bs-months-calendar-view/bs-months-calendar-view.component.html","../../../projects/gravity-design-system/src/lib/components/gravity-calendar-v2/datepicker/components/bs-years-calendar-view/bs-years-calendar-view.component.ts","../../../projects/gravity-design-system/src/lib/components/gravity-calendar-v2/datepicker/components/bs-years-calendar-view/bs-years-calendar-view.component.html","../../../projects/gravity-design-system/src/lib/components/gravity-calendar-v2/datepicker/components/bs-datepicker-container.component.ts","../../../projects/gravity-design-system/src/lib/components/gravity-calendar-v2/datepicker/components/bs-datepicker-view.html","../../../projects/gravity-design-system/src/lib/components/gravity-calendar-v2/datepicker/bs-datepicker.component.ts","../../../projects/gravity-design-system/src/lib/components/gravity-calendar-v2/datepicker/components/bs-datepicker-inline-container.component.ts","../../../projects/gravity-design-system/src/lib/components/gravity-calendar-v2/datepicker/bs-datepicker-inline.config.ts","../../../projects/gravity-design-system/src/lib/components/gravity-calendar-v2/datepicker/bs-datepicker-inline.component.ts","../../../projects/gravity-design-system/src/lib/components/gravity-calendar-v2/datepicker/components/bs-daterangepicker-container.component.ts","../../../projects/gravity-design-system/src/lib/components/gravity-calendar-v2/datepicker/bs-daterangepicker.config.ts","../../../projects/gravity-design-system/src/lib/components/gravity-calendar-v2/datepicker/bs-daterangepicker.component.ts","../../../projects/gravity-design-system/src/lib/components/gravity-calendar-v2/datepicker/components/bs-daterangepicker-inline-container.component.ts","../../../projects/gravity-design-system/src/lib/components/gravity-calendar-v2/datepicker/bs-daterangepicker-inline.config.ts","../../../projects/gravity-design-system/src/lib/components/gravity-calendar-v2/datepicker/bs-daterangepicker-inline.component.ts","../../../projects/gravity-design-system/src/lib/components/gravity-calendar-v2/gravity-calendar-v2.component.ts","../../../projects/gravity-design-system/src/lib/components/gravity-calendar-v2/gravity-calendar-v2.component.html","../../../projects/gravity-design-system/src/lib/components/gravity-radio-button/gravity-radio-button.component.ts","../../../projects/gravity-design-system/src/lib/components/gravity-radio-button/gravity-radio-button.component.html","../../../projects/gravity-design-system/src/lib/components/gravity-switch/gravity-switch.component.ts","../../../projects/gravity-design-system/src/lib/components/gravity-switch/gravity-switch.component.html","../../../projects/gravity-design-system/src/lib/components/gravity-dialog/gravity-dialog.component.ts","../../../projects/gravity-design-system/src/lib/components/gravity-dialog/gravity-dialog.component.html","../../../projects/gravity-design-system/src/lib/components/gravity-notification/gravity-notification.component.ts","../../../projects/gravity-design-system/src/lib/components/gravity-notification/gravity-notification.component.html","../../../projects/gravity-design-system/src/lib/services/gravity-instant-notifications.service.ts","../../../projects/gravity-design-system/src/lib/components/gravity-notification-instant/gravity-notification-instant-container.component.ts","../../../projects/gravity-design-system/src/lib/components/gravity-notification-instant/gravity-notification-instant-container.component.html","../../../projects/gravity-design-system/src/lib/components/gravity-attach-file/gravity-attach-file.component.ts","../../../projects/gravity-design-system/src/lib/components/gravity-attach-file/gravity-attach-file.component.html","../../../projects/gravity-design-system/src/lib/components/gravity-table/gravity-table.component.ts","../../../projects/gravity-design-system/src/lib/components/gravity-table/gravity-table.component.html","../../../projects/gravity-design-system/src/lib/components/gravity-tree-view/models/node-selected-state.ts","../../../projects/gravity-design-system/src/lib/components/gravity-tree-view/service/tree-service.ts","../../../projects/gravity-design-system/src/lib/components/gravity-tree-view/node/node-toggle/node-toggle.component.ts","../../../projects/gravity-design-system/src/lib/components/gravity-tree-view/node/node-toggle/node-toggle.component.html","../../../projects/gravity-design-system/src/lib/components/gravity-tree-view/node/node-checkbox/node-checkbox.component.ts","../../../projects/gravity-design-system/src/lib/components/gravity-tree-view/node/node-checkbox/node-checkbox.component.html","../../../projects/gravity-design-system/src/lib/components/gravity-tree-view/node/node-name/node-name.component.ts","../../../projects/gravity-design-system/src/lib/components/gravity-tree-view/node/node-name/node-name.component.html","../../../projects/gravity-design-system/src/lib/components/gravity-tree-view/node/node.component.ts","../../../projects/gravity-design-system/src/lib/components/gravity-tree-view/node/node.component.html","../../../projects/gravity-design-system/src/lib/components/gravity-tree-view/gravity-tree-view.component.ts","../../../projects/gravity-design-system/src/lib/components/gravity-tree-view/gravity-tree-view.component.html","../../../projects/gravity-design-system/src/lib/components/gravity-stepper/gravity-stepper.component.ts","../../../projects/gravity-design-system/src/lib/components/gravity-stepper/gravity-stepper.component.html","../../../projects/gravity-design-system/src/lib/components/gravity-text-field-number-only/gravity-text-field-number-only.component.ts","../../../projects/gravity-design-system/src/lib/components/gravity-text-field-number-only/gravity-text-field-number-only.component.html","../../../projects/gravity-design-system/src/lib/components/gravity-icon-button/gravity-icon-button.component.ts","../../../projects/gravity-design-system/src/lib/components/gravity-icon-button/gravity-icon-button.component.html","../../../projects/gravity-design-system/src/lib/components/gravity-status-indicator/gravity-status-indicator.component.ts","../../../projects/gravity-design-system/src/lib/components/gravity-status-indicator/gravity-status-indicator.component.html","../../../projects/gravity-design-system/src/lib/components/gravity-avatar-stack/gravity-avatar-stack.component.ts","../../../projects/gravity-design-system/src/lib/components/gravity-avatar-stack/gravity-avatar-stack.component.html","../../../projects/gravity-design-system/src/lib/components/gravity-generic-avatar/gravity-generic-avatar.component.ts","../../../projects/gravity-design-system/src/lib/components/gravity-generic-avatar/gravity-generic-avatar.component.html","../../../projects/gravity-design-system/src/lib/components/gravity-multi-language/gravity-multi-language.component.ts","../../../projects/gravity-design-system/src/lib/components/gravity-multi-language/gravity-multi-language.component.html","../../../projects/gravity-design-system/src/lib/components/gravity-modal/gravity-modal.component.ts","../../../projects/gravity-design-system/src/lib/components/gravity-modal/gravity-modal.component.html","../../../projects/gravity-design-system/src/lib/components/gravity-tab-primary/gravity-tab-primary.component.ts","../../../projects/gravity-design-system/src/lib/components/gravity-tab-primary/gravity-tab-primary.component.html","../../../projects/gravity-design-system/src/lib/components/gravity-tab-secondary/gravity-tab-secondary.component.ts","../../../projects/gravity-design-system/src/lib/components/gravity-tab-secondary/gravity-tab-secondary.component.html","../../../projects/gravity-design-system/src/lib/components/gravity-editable-input/gravity-editable-input.component.ts","../../../projects/gravity-design-system/src/lib/components/gravity-editable-input/gravity-editable-input.component.html","../../../projects/gravity-design-system/src/lib/components/gravity-card-button/gravity-card-button.component.ts","../../../projects/gravity-design-system/src/lib/components/gravity-card-button/gravity-card-button.component.html","../../../projects/gravity-design-system/src/lib/components/gravity-navigation-card/gravity-navigation-card.component.ts","../../../projects/gravity-design-system/src/lib/components/gravity-navigation-card/gravity-navigation-card.component.html","../../../projects/gravity-design-system/src/lib/components/gravity-generic-avatar-secondary/gravity-generic-avatar-secondary.component.ts","../../../projects/gravity-design-system/src/lib/components/gravity-generic-avatar-secondary/gravity-generic-avatar-secondary.component.html","../../../projects/gravity-design-system/src/lib/components/gravity-backdrop/gravity-backdrop.component.ts","../../../projects/gravity-design-system/src/lib/components/gravity-backdrop/gravity-backdrop.component.html","../../../projects/gravity-design-system/src/lib/components/gravity-date-picker/shared/date-picker.utils.ts","../../../projects/gravity-design-system/src/lib/components/gravity-date-picker/shared/date-picker.constants.ts","../../../projects/gravity-design-system/src/lib/components/gravity-date-picker/components/day-calendar/range-days-calendar.utils.ts","../../../projects/gravity-design-system/src/lib/components/gravity-date-picker/components/month-calendar/month-calendar.component.ts","../../../projects/gravity-design-system/src/lib/components/gravity-date-picker/components/month-calendar/month-calendar.component.html","../../../projects/gravity-design-system/src/lib/components/gravity-date-picker/components/year-calendar/year-calendar.component.ts","../../../projects/gravity-design-system/src/lib/components/gravity-date-picker/components/year-calendar/year-calendar.component.html","../../../projects/gravity-design-system/src/lib/components/gravity-date-picker/components/day-calendar/day-calendar.component.ts","../../../projects/gravity-design-system/src/lib/components/gravity-date-picker/components/day-calendar/day-calendar.component.html","../../../projects/gravity-design-system/src/lib/components/gravity-date-picker/gravity-date-picker.component.ts","../../../projects/gravity-design-system/src/lib/components/gravity-date-picker/gravity-date-picker.component.html","../../../projects/gravity-design-system/src/lib/components/gravity-segmented-button/gravity-segmented-button.component.ts","../../../projects/gravity-design-system/src/lib/components/gravity-segmented-button/gravity-segmented-button.component.html","../../../projects/gravity-design-system/src/lib/components/gravity-chip-group/gravity-chip-group.component.ts","../../../projects/gravity-design-system/src/lib/components/gravity-chip-group/gravity-chip-group.component.html","../../../projects/gravity-design-system/src/lib/components/gravity-tables-v2/gravity-tables-v2.component.ts","../../../projects/gravity-design-system/src/lib/components/gravity-tables-v2/gravity-tables-v2.component.html","../../../projects/gravity-design-system/src/lib/components/gravity-data-views-v2/gravity-data-views-v2.component.ts","../../../projects/gravity-design-system/src/lib/components/gravity-data-views-v2/gravity-data-views-v2.component.html","../../../projects/gravity-design-system/src/lib/services/gravity-responsive.service.ts","../../../projects/gravity-design-system/src/lib/components/gravity-detail-container/gravity-detail-container.component.ts","../../../projects/gravity-design-system/src/lib/components/gravity-detail-container/gravity-detail-container.component.html","../../../projects/gravity-design-system/src/lib/services/gravity-push-notifications-service.service.ts","../../../projects/gravity-design-system/src/lib/components/gravity-push-notifications/gravity-push-notifications.component.ts","../../../projects/gravity-design-system/src/lib/components/gravity-push-notifications/gravity-push-notifications.component.html","../../../projects/gravity-design-system/src/lib/layout/gravity-header/gravity-header.component.ts","../../../projects/gravity-design-system/src/lib/layout/gravity-header/gravity-header.component.html","../../../projects/gravity-design-system/src/lib/layout/gravity-menu/gravity-menu.component.ts","../../../projects/gravity-design-system/src/lib/layout/gravity-menu/gravity-menu.component.html","../../../projects/gravity-design-system/src/lib/components/gravity-pagination/gravity-pagination.component.ts","../../../projects/gravity-design-system/src/lib/components/gravity-pagination/gravity-pagination.component.html","../../../projects/gravity-design-system/src/lib/components/gravity-currency-dropdown-short/gravity-currency-dropdown-short.component.ts","../../../projects/gravity-design-system/src/lib/components/gravity-currency-dropdown-short/gravity-currency-dropdown-short.component.html","../../../projects/gravity-design-system/src/lib/components/gravity-text-field-amount-only/gravity-text-field-amount-only.component.ts","../../../projects/gravity-design-system/src/lib/components/gravity-text-field-amount-only/gravity-text-field-amount-only.component.html","../../../projects/gravity-design-system/src/lib/components/gravity-tooltip-container/gravity-tooltip-container.component.ts","../../../projects/gravity-design-system/src/lib/components/gravity-tooltip-container/gravity-tooltip-container.component.html","../../../projects/gravity-design-system/src/lib/gravity-design-system.module.ts","../../../projects/gravity-design-system/src/lib/services/gravity-dialog-manager.service.ts","../../../projects/gravity-design-system/src/public-api.ts","../../../projects/gravity-design-system/src/progressio_resources-gravity-design-system.ts"],"sourcesContent":["import {Component, Input} from '@angular/core';\nimport {SvgIconRegistryService} from \"angular-svg-icon\";\n\n@Component({\n selector: 'gravity-icon',\n templateUrl: './gravity-icon.component.html',\n styleUrls: ['./gravity-icon.component.scss']\n})\nexport class GravityIconComponent {\n @Input() public customIconColorVariable: string;\n @Input() public iconName: string;\n @Input() public iconSize: 'lg-24' | 'md-16' | 'sm-12' | 'xl-32';\n @Input() public hoverIcon: boolean;\n @Input() public size: 'sm' | 'md' | 'lg';\n @Input() public isCoin: boolean;\n\n constructor(private iconRegistry: SvgIconRegistryService) {}\n\n public static isOldIcon(iconName: string): boolean {\n return OLD_ICONS[iconName] != undefined;\n }\n\n public static isNewIcon(iconName: string): boolean {\n return ICONS[iconName] != undefined;\n }\n\n public get iconExists(): boolean {\n const fullIconName = this.getFullIconName();\n\n const iconsMap = (this.iconRegistry as any).iconsByUrl;\n\n if (iconsMap && iconsMap instanceof Map) {\n return iconsMap.has(fullIconName);\n }\n\n return true;\n }\n\n private getFullIconName(): string {\n if (this.isCoin) {\n return 'gt-icon-' + this.iconName;\n }\n if (this.iconSize) {\n return 'gt-icon-' + this.iconName + '-' + this.iconSize;\n }\n return this.iconName;\n }\n}\n\nexport enum OLD_ICONS {\n 'uncheck',\n 'arrow-back'\n}\n\nexport enum ICONS {\n 'add-update',\n 'addressbook',\n 'arrow-down',\n 'arrow-left',\n 'arrow-right',\n 'arrow-up',\n 'bell',\n 'calendar',\n 'check',\n 'checkbox-dash',\n 'clock',\n 'chevron-double-down',\n 'chevron-double-up',\n 'copy',\n 'deposit',\n 'download',\n 'eye-closed',\n 'eye-open',\n 'exchange-provider',\n 'graphics',\n 'happy-face',\n 'home',\n 'information-circle',\n 'internal-processing',\n 'language',\n 'mail',\n 'menu',\n 'money-in',\n 'monitor',\n 'more-options',\n 'new-tab',\n 'news',\n 'off',\n 'on',\n 'payout',\n 'plus',\n 'question-circle',\n 'queue',\n 'rates',\n 'report',\n 'right-angle-arrow',\n 'search',\n 'security',\n 'settings',\n 'sign-out',\n 'stop',\n 'success-circle',\n 'swaps',\n 'swaps-arrow-left',\n 'swaps-arrow-right',\n 'switch',\n 'tool',\n 'trash',\n 'unlock',\n 'unsuccess',\n 'update',\n 'user',\n 'wallet',\n 'warning-circle'\n}\n","<svg-icon [attr.data-cy]=\"'icon_' + iconName\" *ngIf=\"iconExists\" [class.with-hover]=\"hoverIcon\" class=\"{{size}} {{iconSize}}\" [style.--icon-color]=\"customIconColorVariable\"\n [name]=\"isCoin ? 'gt-icon-' + iconName : iconSize ? 'gt-icon-' + iconName + '-' + iconSize : iconName\"></svg-icon>\n","import {Component, Input} from '@angular/core';\nimport {GravityIconComponent} from \"../gravity-icon/gravity-icon.component\";\n\n@Component({\n selector: 'gravity-button',\n templateUrl: './gravity-button.component.html',\n styleUrls: ['./gravity-button.component.scss'],\n})\nexport class GravityButtonComponent {\n @Input() public cypressTag: string;\n @Input() public disabled: boolean;\n @Input() public iconName: string | undefined;\n @Input() public isLoading: boolean = false;\n @Input() public showContent: boolean = true;\n @Input() public size: 'sm' | 'md' | 'lg' = \"md\";\n @Input() public iconPosition: 'left' | 'right' = 'left';\n @Input() public customState: 'active' | 'hover' | 'pressed' | null;\n @Input() public type: 'primary' | 'secondary' | 'tertiary' | 'positive' | 'negative';\n\n public isNewIcon(iconName: string): boolean {\n return GravityIconComponent.isNewIcon(iconName);\n }\n\n public getSizeClass(size: string) {\n if (size === 'sm' || size === 'md') {\n return 'sm';\n } else if (size === 'lg') {\n return 'md';\n }\n }\n\n public getIconSizeClass(size: string) {\n if (size === 'sm' || size === 'md') {\n return 'sm-12';\n } else if (size === 'lg') {\n return 'md-16';\n }\n }\n\n}\n","<button [attr.data-cy]=\"cypressTag ? 'button_' + cypressTag : null\" [disabled]=\"disabled\" [style]=\"isLoading ? {'pointer-events': 'none'} : {}\"\n class=\"border-radius-sm gravity-button-{{type}} gravity-size-{{size}} hr-label {{size}}-bold {{customState}}\">\n <ng-container *ngIf=\"!isLoading\">\n <gravity-icon [style.--icon-color]=\"'var(--button-text-color)'\" [size]=\"isNewIcon(iconName) ? null : getSizeClass(size)\"\n [hoverIcon]=\"false\" [iconName]=\"iconName\" *ngIf=\"iconName && iconPosition == 'left'\"\n [iconSize]=\"isNewIcon(iconName) ? getIconSizeClass(size) : null\" class=\"icon-{{iconPosition}}\"></gravity-icon>\n <span class=\"button-content-wrapper\" *ngIf=\"showContent\">\n <ng-content></ng-content>\n </span>\n <gravity-icon [style.--icon-color]=\"'var(--button-text-color)'\" [size]=\"isNewIcon(iconName) ? null : getSizeClass(size)\"\n [hoverIcon]=\"false\" [iconName]=\"iconName\" *ngIf=\"iconName && iconPosition == 'right'\"\n [iconSize]=\"isNewIcon(iconName) ? getIconSizeClass(size) : null\" class=\"icon-{{iconPosition}}\"></gravity-icon>\n </ng-container>\n <ng-container *ngIf=\"isLoading\">\n <ngb-progressbar [animated]=\"true\" [striped]=\"true\" [value]=\"100\"></ngb-progressbar>\n </ng-container>\n</button>\n","import { Pipe, PipeTransform } from '@angular/core';\n\n/**\n * filters an array based on searctext\n */\n@Pipe({\n name: 'filterBy'\n})\nexport class FilterByPipe implements PipeTransform {\n public transform(array: any[], searchText?: string, keyName?: string) {\n if (!array || !searchText || !Array.isArray(array)) {\n return array;\n }\n if (typeof array[0] === 'string') {\n return array.filter((item) => item.toLowerCase().indexOf(searchText.trim().toLowerCase()) > -1);\n }\n // filter array, items which match and return true will be\n // kept, false will be filtered out\n if (!keyName) {\n return array.filter((item: any) => {\n for (const key in item) {\n if (typeof item[key] !== 'object' && item[key].toString().toLowerCase().indexOf(searchText.trim().toLowerCase()) > -1) {\n return true;\n }\n }\n return false;\n });\n } else {\n return array.filter((item: any) => {\n if (typeof item[keyName] !== 'object' && item[keyName].toString().toLowerCase().indexOf(searchText.trim().toLowerCase()) > -1) {\n return true;\n }\n return false;\n });\n }\n\n }\n}\n","import {Subject} from \"rxjs\";\nimport { Injectable } from '@angular/core';\nimport {GravityDropdownListComponent} from \"../components/gravity-dropdown-list/gravity-dropdown-list.component\";\nimport {GravityDropdownListDisplayComponent} from \"../components/gravity-dropdown-list-display/gravity-dropdown-list-display.component\"; // ¡Importa el nuevo componente!\n\ntype DropdownComponent = GravityDropdownListComponent | GravityDropdownListDisplayComponent;\n\n@Injectable({\n\tprovidedIn: 'root'\n})\nexport class GravityDropdownManagerService {\n\n\tprivate dropdownOpenedSource = new Subject<DropdownComponent>();\n\tdropdownOpened$ = this.dropdownOpenedSource.asObservable();\n\n\tnotifyDropdownOpened(dropdown: DropdownComponent) {\n\t\tthis.dropdownOpenedSource.next(dropdown);\n\t}\n}","import {AfterViewInit, Component, EventEmitter, Input, OnChanges, Output, SimpleChanges} from '@angular/core';\n\n@Component({\n selector: 'gravity-checkbox',\n templateUrl: './gravity-checkbox.component.html',\n styleUrls: ['./gravity-checkbox.component.scss']\n})\nexport class GravityCheckboxComponent implements AfterViewInit, OnChanges {\n @Input() public cypressTag: string;\n @Input() public checked: boolean = false;\n @Input() public disabled: boolean = false;\n @Input() public name: string;\n @Input() public size: 'md' | 'sm' = 'sm';\n @Input() public value: string;\n @Input() public isPartial: boolean = false;\n @Output() public change: EventEmitter<{ value: string, checked: boolean }> = new EventEmitter<{\n value: string,\n checked: boolean\n }>();\n\n public isCheckboxChecked: boolean = false;\n\n ngAfterViewInit() {\n this.isCheckboxChecked = this.checked;\n this.change.emit({value: this.value, checked: this.isCheckboxChecked});\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes['checked']) {\n this.isCheckboxChecked = changes['checked'].currentValue;\n }\n }\n\n toggleCheckbox(): void {\n if (!this.disabled) {\n this.isCheckboxChecked = !this.isCheckboxChecked;\n this.change.emit({value: this.value, checked: this.isCheckboxChecked});\n }\n }\n}\n","<div class=\"gravity-checkbox-field size-{{size}}\" [class.disabled]=\"disabled\" [attr.data-cy]=\"cypressTag ? 'checkbox_' + cypressTag : null\">\n <input [checked]=\"isCheckboxChecked || isPartial\"\n [disabled]=\"disabled\"\n [name]=\"name\"\n [value]=\"value\"\n\n type=\"checkbox\">\n <span class=\"checkmark\" (click)=\"toggleCheckbox()\">\n <gravity-icon [iconName]=\"isPartial ? 'checkbox-dash' : 'check'\" [iconSize]=\"'sm-12'\"\n *ngIf=\"isCheckboxChecked || isPartial\"></gravity-icon>\n </span>\n <label>\n <ng-content></ng-content>\n </label>\n</div>\n","import {Component, Input} from '@angular/core';\n\n@Component({\n selector: 'gravity-currency',\n templateUrl: './gravity-currency.component.html',\n styleUrls: ['./gravity-currency.component.scss'],\n})\nexport class GravityCurrencyComponent {\n @Input() public cypressTag: string;\n @Input() public disabled: boolean;\n @Input() public size: 'xs-12' | 'sm-16' | 'md-24' | 'lg-32' | 'xl-40' = 'md-24';\n @Input() public currency: { currency_id: number, currency_iso?: string, network_id?: number };\n @Input() public showLayers: boolean;\n}\n","<div class=\"gravity-currency\" [attr.data-cy]=\"cypressTag ? 'currency_' + cypressTag: null\">\n <div class=\"main-currency {{size}}\">\n <gravity-icon class=\"currency {{showLayers ? 'show-layers' : null}}\"\n [iconName]=\"disabled ? 'coin-id-'+ currency.currency_id + '-disabled' : 'coin-id-' + currency.currency_id\"\n *ngIf=\"currency.currency_id\" [iconSize]=\"'sm-12'\" [isCoin]=\"true\"></gravity-icon>\n <gravity-icon class=\"bg-2\"\n [iconName]=\"disabled ? 'coin-id-'+ currency.currency_id + '-disabled' : 'coin-id-' + currency.currency_id\"\n *ngIf=\"currency.currency_id && showLayers && !disabled\" [iconSize]=\"'sm-12'\"\n [isCoin]=\"true\"></gravity-icon>\n <gravity-icon class=\"bg-3\"\n [iconName]=\"disabled ? 'coin-id-'+ currency.currency_id + '-disabled' : 'coin-id-' + currency.currency_id\"\n *ngIf=\"currency.currency_id && showLayers && !disabled\" [iconSize]=\"'sm-12'\"\n [isCoin]=\"true\"></gravity-icon>\n </div>\n <gravity-icon class=\"network {{showLayers ? 'show-layers' : null}} {{size}}\"\n [iconName]=\"disabled ? 'network-id-'+ currency.network_id + '-disabled' : 'network-id-' + currency.network_id\"\n *ngIf=\"currency?.network_id && size != 'xs-12'\" [iconSize]=\"'sm-12'\" [isCoin]=\"true\"></gravity-icon>\n</div>","import {Component, Input} from '@angular/core';\n\n@Component({\n selector: 'gravity-network-pill',\n templateUrl: './gravity-network-pill.component.html',\n styleUrls: ['./gravity-network-pill.component.scss'],\n})\nexport class GravityNetworkPillComponent {\n @Input() public cypressTag: string;\n @Input() public disabled: boolean;\n @Input() public showNetworkIcon: boolean = true;\n @Input() public network: { iso: string, id?: number };\n @Input() public type: 'primary' | 'secondary' = 'primary';\n}\n","<div class=\"gravity-network-pill {{type}}\" [class.disabled]=\"disabled\" [attr.data-cy]=\"cypressTag ? 'networkPill_' + cypressTag : null\">\n <div class=\"currency-info\">\n <span class=\"hr-body sm-regular\">{{ network.iso }}</span>\n <gravity-icon *ngIf=\"network?.id && showNetworkIcon\"\n [iconSize]=\"'sm-12'\" [isCoin]=\"true\"\n [iconName]=\"disabled ? 'network-id-' + network.id + '-disabled' : 'network-id-' + network.id\">\n </gravity-icon>\n </div>\n</div>","import {Component, Input} from '@angular/core';\n\n@Component({\n selector: 'gravity-link',\n templateUrl: './gravity-link.component.html',\n styleUrls: ['./gravity-link.component.scss']\n})\nexport class GravityLinkComponent {\n @Input() public linkText: string;\n @Input() public fontClass: string;\n @Input() public link: string = '';\n @Input() public cypressTag: string;\n @Input() public iconName: string | undefined;\n @Input() public target : '_blank' | '_self' = '_self';\n @Input() public iconPosition: 'left' | 'right' = 'left';\n @Input() public iconSize : 'sm-12' | 'md-16' | 'lg-24' | 'xl-32' = 'md-16';\n @Input() public state: 'active' | 'visited' | 'pressed' | 'disabled' = 'active';\n}\n","<div class=\"gravity-link-container {{iconPosition}} {{state}}\" [attr.data-cy]=\"cypressTag ? 'link_' + cypressTag : null\">\n\n <a *ngIf=\"!link || !(link.startsWith('http') || link.startsWith('https'))\"\n [routerLink]=\"!link || state === 'disabled' ? null : link\"\n class=\"{{ fontClass ? (fontClass !== '' ? fontClass : 'hr-body sm-regular') : 'hr-body sm-regular' }}\"> \n {{linkText}}\n </a>\n\n <a *ngIf=\"link && (link.startsWith('http') || link.startsWith('https'))\"\n [href]=\"state === 'disabled' || link === '' ? null : link\" [target]=\"target\"\n class=\"{{ fontClass ? (fontClass !== '' ? fontClass : 'hr-body sm-regular') : 'hr-body sm-regular' }}\">\n {{linkText}}\n </a>\n\n <gravity-icon [style.--icon-color]=\"'var(--link-text-color)'\" [size]=\"'md'\"\n [hoverIcon]=\"false\" [iconName]=\"iconName\" *ngIf=\"iconName\"\n [iconSize]=\"iconSize\" class=\"icon-{{iconPosition}}\">\n </gravity-icon>\n</div>","import {Component, EventEmitter, Input, Output} from '@angular/core';\n\n@Component({\n selector: 'gravity-dropdown-label',\n templateUrl: './gravity-dropdown-label.component.html',\n styleUrls: ['./gravity-dropdown-label.component.scss']\n})\nexport class GravityDropdownLabelComponent {\n\n @Input() public label: string;\n @Input() public fontClass: string;\n @Input() public isOpen: boolean = false;\n @Input() public stopPropagation: boolean = true;\n @Input() public size: 'sm' | 'md' | 'lg' = 'sm';\n @Input() public state: 'active' | 'inactive' = 'active';\n\n @Output() public onClickLabel = new EventEmitter<void>();\n\n public getLabelClass() {\n switch (this.size) {\n case \"sm\": return 'hr-title md-bold';\n case \"md\": return 'hr-headline sm-bold';\n case \"lg\": return 'hr-headline md-bold';\n }\n }\n\n public onClick(event: MouseEvent): void {\n if(this.stopPropagation) {event.stopPropagation();}\n if(this.state !== 'inactive') {this.onClickLabel.emit();}\n }\n\n public getIconSize() {\n let newIconsSize: 'sm' | 'md' | 'lg';\n let oldIconsSize: 'sm-12' | 'md-16' | 'lg-24' | 'xl-32';\n switch (this.size) {\n case \"lg\":\n case \"md\":\n newIconsSize = 'lg';\n oldIconsSize = 'lg-24';\n break;\n case \"sm\":\n newIconsSize = 'md';\n oldIconsSize = 'md-16';\n break;\n }\n return {newIconsSize, oldIconsSize};\n }\n\n}\n","<div class=\"gravity-dropdown-label {{state}}\" [class.open]=\"isOpen\" (click)=\"onClick($event)\">\n <p [ngClass]=\"fontClass && fontClass !== '' ? fontClass : getLabelClass()\">{{label}}</p>\n <gravity-icon *ngIf=\"state === 'active'\" [style.--icon-color]=\"'var(--label-icon-color)'\"\n [iconName]=\"isOpen ? 'arrow-up' : 'arrow-down'\" [size]=\"getIconSize().newIconsSize\"\n [iconSize]=\"getIconSize().oldIconsSize\">\n </gravity-icon>\n</div>","import {Component, Input} from '@angular/core';\n\n@Component({\n selector: 'gravity-currency-display-v2',\n templateUrl: './gravity-currency-display-v2.component.html',\n styleUrls: ['./gravity-currency-display-v2.component.scss']\n})\nexport class GravityCurrencyDisplayV2Component {\n @Input() public cypressTag: string;\n @Input() public disabled: boolean = false;\n @Input() public type: 'full' | 'short-hrz' | 'short-vrt' |'fiat-short' = 'full';\n @Input() public currency: { currency_name?: string,\n currency_id?: number, currency_iso: string,\n network_id?: number, network_iso?: string,\n pill_type?: 'primary' | 'secondary'\n }\n}\n","<section class=\"gravity-currency-display\" [attr.data-cy]=\"cypressTag ? 'currencyDisplay_' + cypressTag: null\">\n <gravity-currency *ngIf=\" currency.currency_id && type === 'full'\"\n [disabled]=\"disabled\" [size]=\"'md-24'\"\n [currency]=\"{ currency_id: currency.currency_id}\">\n </gravity-currency>\n\n <section class=\"currency-info {{type}}\" [class.disabled]=\"disabled\">\n <div class=\"iso-and-network\">\n <div class=\"currency-iso\">\n <gravity-currency *ngIf=\" currency.currency_id && type !== 'full'\"\n [disabled]=\"disabled\" [size]=\"'sm-16'\"\n [currency]=\"{ currency_id: currency.currency_id}\" >\n </gravity-currency>\n\n <span class=\"hr-body sm-bold\">{{currency.currency_iso}}</span>\n </div>\n\n <gravity-network-pill *ngIf=\"type !== 'fiat-short' && (currency?.network_iso && currency?.network_id)\"\n [disabled]=\"disabled\"\n [type]=\"currency?.pill_type || 'primary'\"\n [network]=\"{ iso: currency?.network_iso, id: currency?.network_id }\" >\n </gravity-network-pill>\n </div>\n\n <span *ngIf=\"!type.startsWith('short')\" class=\"hr-body sm-regular\">{{currency?.currency_name}}</span>\n </section>\n</section>\n","import {Subscription} from \"rxjs\";\nimport {FilterByPipe} from \"./filter-by.pipe\";\nimport {GravityIconComponent} from \"../gravity-icon/gravity-icon.component\";\nimport {GravityDropdownManagerService} from \"../../services/gravity-dropdown-manager.service\";\nimport {Component, ElementRef, EventEmitter, HostListener, Input, OnChanges, OnDestroy, OnInit, Output, SimpleChange, SimpleChanges, ViewChild} from '@angular/core';\n\n@Component({\n selector: 'gravity-dropdown-list',\n templateUrl: './gravity-dropdown-list.component.html',\n styleUrls: ['./gravity-dropdown-list.component.scss'],\n providers: [FilterByPipe]\n})\nexport class GravityDropdownListComponent implements OnChanges, OnInit, OnDestroy {\n // Component features\n @Input() public label: string;\n @Input() public iconLeft: string;\n @Input() public items: Array<any>;\n @Input() public cypressTag: string;\n @Input() public placeholder: string;\n @Input() public supportText: string;\n @Input() public hasError: boolean = false;\n @Input() public clearable: boolean = true;\n @Input() public multiple: boolean = false;\n @Input() public required: boolean = false;\n @Input() public currentLang: string = 'en';\n @Input() public isCurrency: boolean = false;\n @Input() public isDisabled: boolean = false;\n @Input() public isReadonly: boolean = false;\n @Input() public customValues: Array<any> | any;\n @Input() public config?: { label: string; value: string; };\n\n // Appearance settings\n @Input() public labelSize: 'sm' | 'md' | 'lg' = 'sm';\n @Input() public size: 'sm' | 'md' | 'lg' | 'xl' = 'md';\n @Input() public inputType: 'field' | 'label' = 'field';\n @Input() public width: 'short' | 'medium' | 'full' | 'fit' = 'short';\n\n @Input()\n get dropdownState(): boolean {\n return this.dropdownOpened;\n }\n\n set dropdownState(value: boolean) {\n this.dropdownOpened = value;\n }\n\n @Output() dropdownStateChange = new EventEmitter<boolean>();\n @Output('response') public selectedItemsResponse: EventEmitter<any[] | any> = new EventEmitter();\n\n @ViewChild('searchInput')\n set watch(searchInput: ElementRef<HTMLInputElement>) {\n if (searchInput) {\n searchInput.nativeElement.focus({preventScroll: true});\n }\n };\n\n @ViewChild('containerRef') containerRef!: ElementRef<HTMLDivElement>;\n\n public searchText: string = '';\n public selectedItems: any[] = [];\n public isoConfig: string = 'iso';\n\tpublic nameConfig: string = 'name';\n public availableOptions: any[] = [];\n public dropdownOpened: boolean = false;\n public openChildrenMap = new Map<any, boolean>();\n public networkConfig: { label: string; iso: string; id: number; } = null;\n\n\tprivate dropdownManagerSubscription!: Subscription;\n\n\tconstructor(private dropdownService: GravityDropdownManagerService, private _eref: ElementRef) { }\n\n\tngOnInit() {\n\t\tthis.dropdownManagerSubscription = this.dropdownService.dropdownOpened$.subscribe(openedDropdown => {\n\t\t\tif (openedDropdown !== this && this.dropdownOpened) {\n\t\t\t\tthis.closeDropdown();\n\t\t\t}\n\t\t});\n\t}\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes['items']?.currentValue) {\n this.availableOptions = this.items;\n }\n\n if (changes['customValues']) {\n const changeItem: SimpleChange = changes['customValues'];\n const currentValue = changeItem?.currentValue;\n\n const findOptionRecursively = (items: any[], value: any): any | null => {\n for (const item of items) {\n const itemValue = this.config ? item[this.config.value] : item;\n if (itemValue == value) {\n return item;\n }\n\n if (item.children) {\n const foundChild = findOptionRecursively(item.children, value);\n if (foundChild) return foundChild;\n }\n }\n return null;\n };\n\n this.selectedItems = [];\n\n if (Array.isArray(currentValue)) {\n currentValue.forEach((val: any) => {\n const found = findOptionRecursively(this.items, val);\n if (found && !this.selectedItems.includes(found)) {\n this.selectedItems.push(found);\n }\n });\n } else if (currentValue != null && currentValue !== '') {\n const found = findOptionRecursively(this.items, currentValue);\n if (found) {\n this.selectedItems = [found];\n }\n } else if (!currentValue && !changeItem.firstChange) {\n this.clearSelection();\n }\n }\n }\n\n\tngOnDestroy() {\n\t\tif (this.dropdownManagerSubscription) {\n\t\t\tthis.dropdownManagerSubscription.unsubscribe();\n\t\t}\n\t}\n\n\tpublic getStatus(): string {\n if (this.isDisabled) {\n return 'disabled';\n } else if (this.isReadonly) {\n return 'readonly';\n } else if (this.hasError) {\n return 'error';\n } else if (this.dropdownOpened) {\n return 'open';\n } else if (this.selectedItems.length > 0) {\n return 'selected';\n } else {\n return 'active';\n }\n }\n\n public isIconLeftNew(): boolean {\n if (this.iconLeft) {\n return GravityIconComponent.isNewIcon(this.iconLeft);\n }\n\n return false;\n }\n\n\tpublic toggleDropdown(): void {\n\t\tevent.stopPropagation();\n\t\tthis.networkConfig = null;\n\n\t\tif (!this.isDisabled && !this.isReadonly) {\n\t\t\tif (this.dropdownOpened) {\n\t\t\t\tthis.emitSelection();\n\t\t\t\tthis.searchText = '';\n\t\t\t\tthis.closeDropdown();\n\t\t\t} else {\n\t\t\t\tthis.openDropdown();\n\t\t\t\tthis.selectedItems?.forEach(sel => {\n\t\t\t\t\tthis.items?.forEach(parent => {\n\t\t\t\t\t\tif (parent.children?.includes(sel)) {\n\t\t\t\t\t\t\tthis.openChildrenMap.set(parent, true);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate emitSelection(): void {\n\t\tif (this.multiple) {\n\t\t\tif (this.selectedItems?.length > 0) {\n\t\t\t\tthis.selectedItemsResponse.emit(this.selectedItems);\n\t\t\t}\n\t\t} else {\n\t\t\tif (this.selectedItems[0]) {\n\t\t\t\tthis.selectedItemsResponse.emit(this.selectedItems[0]);\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic selectItem(itemToAdd: any): void {\n const isParent = !!itemToAdd.children;\n\n if (this.multiple) {\n const isSelected = this.checkIfSelected(itemToAdd);\n\n if (isSelected) {\n this.selectedItems = this.selectedItems.filter(i =>\n (this.config ? i[this.config.value] : i) !==\n (this.config ? itemToAdd[this.config.value] : itemToAdd)\n );\n\n if (isParent) {\n itemToAdd.children.forEach(child => {\n this.selectedItems = this.selectedItems.filter(i => i !== child);\n });\n } else {\n this.items.forEach(parent => {\n if (parent.children?.includes(itemToAdd)) {\n const anySelected = parent.children.some(child => this.checkIfSelected(child));\n const allSelected = parent.children.every(child => this.checkIfSelected(child));\n if (!anySelected) {\n this.selectedItems = this.selectedItems.filter(i => i !== parent);\n } else if (allSelected && !this.checkIfSelected(parent)) {\n this.selectedItems.push(parent);\n }\n }\n });\n }\n\n } else {\n this.selectedItems.push(itemToAdd);\n\n if (isParent) {\n itemToAdd.children.forEach(child => {\n if (!this.checkIfSelected(child)) {\n this.selectedItems.push(child);\n }\n });\n } else {\n this.items.forEach(parent => {\n if (parent.children?.includes(itemToAdd)) {\n const allSelected = parent.children.every(child => this.checkIfSelected(child));\n if (allSelected && !this.checkIfSelected(parent)) {\n this.selectedItems.push(parent);\n }\n }\n });\n }\n }\n } else {\n this.selectedItems = [itemToAdd];\n this.toggleDropdown();\n }\n\n this.refocusSearchInput();\n }\n\n private refocusSearchInput(): void {\n setTimeout(() => {\n const inputEl = this._eref.nativeElement.querySelector('input');\n if (inputEl) {\n inputEl.focus({ preventScroll: true });\n }\n }, 0);\n }\n\n public isPartiallySelected(item: any): boolean {\n if (!item.children?.length) return false;\n\n const selectedChildren = item.children.filter(child => this.checkIfSelected(child));\n return selectedChildren.length > 0 && selectedChildren.length < item.children.length;\n }\n\n public checkIfSelected(item?: any): boolean {\n const getValue = (el: any) => this.config ? el[this.config.value] : el;\n\n if (item) {\n return this.selectedItems.some(selected => getValue(selected) === getValue(item));\n }\n\n const flatten = this.flattenItems(this.availableOptions);\n return flatten.length > 0 && flatten.every(option =>\n this.selectedItems.some(selected => getValue(selected) === getValue(option))\n );\n }\n\n public selectAllItems(event: MouseEvent): void {\n event.stopPropagation();\n const flatten = this.flattenItems(this.availableOptions);\n const getValue = (el: any) => this.config ? el[this.config.value] : el;\n\n const allSelected = flatten.every(option =>\n this.selectedItems.some(selected => getValue(selected) === getValue(option))\n );\n\n if (allSelected) {\n this.selectedItems = this.selectedItems.filter(selected =>\n !flatten.some(option => getValue(selected) === getValue(option))\n );\n } else {\n flatten.forEach(option => {\n if (!this.selectedItems.some(selected => getValue(selected) === getValue(option))) {\n this.selectedItems.push(option);\n }\n });\n }\n }\n\n private flattenItems(items: any[]): any[] {\n return items.reduce((acc, item) => {\n acc.push(item);\n if (item.children?.length) {\n acc.push(...this.flattenItems(item.children));\n }\n return acc;\n }, []);\n }\n\n public clearSelection(): void {\n this.selectedItems = [];\n\t\tthis.networkConfig = null;\n\n if (this.multiple) {\n this.selectedItemsResponse.emit(this.selectedItems);\n } else {\n this.selectedItemsResponse.emit(null);\n }\n }\n\n\tpublic filterItems(): void {\n\t\tconst search = this.searchText?.toLowerCase();\n\t\tthis.openChildrenMap.clear();\n\n\t\tif (!search) {\n\t\t\tthis.availableOptions = JSON.parse(JSON.stringify(this.items));\n\t\t\treturn;\n\t\t}\n\n\t\tconst filterRecursive = (items: any[]): any[] => {\n\t\t\tconst result = [];\n\n\t\t\titems.forEach(item => {\n\t\t\t\tconst hasChildren = !!item.children?.length;\n\n\t\t\t\tconst fieldsToSearch: any[] = [];\n\t\t\t\tif (this.config) {\n\t\t\t\t\tfieldsToSearch.push(item[this.isoConfig]);\n\t\t\t\t\tfieldsToSearch.push(item[this.nameConfig]);\n\n\t\t\t\t\tif(this.config.label) {\n\t\t\t\t\t\tfieldsToSearch.push(item[this.config.label]);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tconst match = fieldsToSearch.some(field =>\n\t\t\t\t\tfield?.toString().toLowerCase().includes(search)\n\t\t\t\t);\n\n\t\t\t\tlet filteredChildren: any[] = [];\n\t\t\t\tif (hasChildren) {\n\t\t\t\t\tfilteredChildren = filterRecursive(item.children);\n\t\t\t\t}\n\n\t\t\t\tconst includeItem = hasChildren ? filteredChildren.length > 0 : match;\n\n\t\t\t\tif (includeItem) {\n\t\t\t\t\tconst newItem = { ...item };\n\t\t\t\t\tif (filteredChildren.length > 0) {\n\t\t\t\t\t\tnewItem.children = filteredChildren;\n\t\t\t\t\t\tthis.openChildrenMap.set(newItem, true);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tdelete newItem.children;\n\t\t\t\t\t}\n\t\t\t\t\tresult.push(newItem);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\treturn result;\n\t\t};\n\n\t\tthis.availableOptions = filterRecursive(this.items);\n\t}\n\n\t@HostListener('document:click', ['$event']) onDocumentClick($event: PointerEvent): void {\n if (!this._eref.nativeElement.contains($event.target) && this.dropdownOpened) {\n if (this.multiple) {\n this.selectedItemsResponse.emit(this.selectedItems);\n } else {\n if (this.selectedItems[0]) {\n this.selectedItemsResponse.emit(this.selectedItems[0]);\n }\n }\n\n this.closeDropdown();\n }\n }\n\n\tpublic openDropdown(): void {\n\t\tthis.dropdownOpened = true;\n\t\tthis.dropdownService.notifyDropdownOpened(this);\n\t\tthis.dropdownStateChange.emit(this.dropdownOpened);\n\n setTimeout(() => {\n this.scrollToSelected();\n }, 50);\n\t}\n\n\tpublic closeDropdown(): void {\n\t\tthis.searchText = '';\n\t\tthis.dropdownOpened = false;\n\t\tthis.availableOptions = this.items;\n\t\tthis.dropdownStateChange.emit(this.dropdownOpened);\n\t}\n\n public getCurrencyIconSize(size: string) {\n switch (size) {\n case 'sm':\n return 'sm-16';\n case 'lg':\n return 'lg-32';\n case 'xl':\n return 'xl-40';\n default:\n return 'md-24';\n }\n }\n\n public getSpacingClass(size: string) {\n switch (size) {\n case 'sm':\n return 'gravity-margin-right-xxs';\n case 'md':\n return 'gravity-margin-right-xs';\n case 'lg':\n return 'gravity-margin-right-sm';\n case 'xl':\n return 'gravity-margin-right-md';\n default:\n return '';\n }\n }\n\n public getMultilevelSpacingClass(size: string) {\n switch (size) {\n case 'sm':\n return 'gravity-margin-right-md';\n case 'md':\n return 'gravity-margin-right-lg';\n default:\n return '';\n }\n }\n\n public getLabelText(): string {\n let result: string = '';\n if (this.selectedItems.length === 0) {\n result = this.label;\n } else {\n this.selectedItems.forEach((item, i) => {\n let displayValue = this.config ? item[this.config.label] : item;\n let separator = i !== this.selectedItems.length - 1 ? ',' : '';\n result = result + displayValue + separator;\n });\n }\n return result;\n }\n\n public isChildrenOpen(item: any): boolean {\n return this.openChildrenMap.get(item) === true;\n }\n\n public toggleChildren(item: any, event: MouseEvent): void {\n event.stopPropagation();\n const current = this.openChildrenMap.get(item) || false;\n this.openChildrenMap.set(item, !current);\n }\n\n public getDisplayValue(child: any, config?: { label: string }): string {\n if (config?.label && typeof child === 'object' && child !== null) {\n return child[config.label] ?? '';\n }\n return child ?? '';\n }\n\n public inputDisplayValue(): string {\n if (!this.selectedItems?.length) return '';\n\n const getValue = (item: any) => this.config ? item[this.config.value] : item;\n\n const getLabel = (item: any): string => {\n const baseLabel = this.config ? item[this.config.label] : item;\n\n if (!this.multiple && item.network?.code && (item.network_id !== item.currency_id || item.children || item.is_ERC20)) {\n this.networkConfig = {label: baseLabel, iso: item.network?.code, id: item.network_id}\n }\n\n return baseLabel;\n };\n\n if (!this.items?.length) {\n return this.selectedItems.map(getLabel).join(', ');\n }\n\n const labels: string[] = [];\n\n for (const parent of this.items) {\n if (parent.children?.length) {\n const allChildrenSelected = parent.children.every(child =>\n this.selectedItems.some(sel => getValue(sel) === getValue(child))\n );\n\n if (allChildrenSelected) {\n labels.push(getLabel(parent));\n } else {\n for (const child of parent.children) {\n if (this.selectedItems.some(sel => getValue(sel) === getValue(child))) {\n labels.push(getLabel(child));\n }\n }\n }\n } else if (this.selectedItems.some(sel => getValue(sel) === getValue(parent))) {\n labels.push(getLabel(parent));\n }\n }\n\n return this.truncate(labels);\n }\n\n private truncate(labels: string[]): string {\n const maxItems = this.width === 'short' ? 3 : this.width === 'medium' ? 6 : 12;\n if (labels.length <= maxItems) return labels.join(', ');\n return labels.slice(0, maxItems).join(', ') + '...';\n }\n\n public clearSearch(): void {\n this.searchText = '';\n this.availableOptions = JSON.parse(JSON.stringify(this.items));\n }\n\n public preventTypingWhenLocked(event: KeyboardEvent, input: HTMLInputElement) {\n const isLocked = !this.dropdownOpened || !this.items;\n\n if (isLocked) {\n if (event.key.length === 1 || event.key === 'Backspace' || event.key === 'Delete') {\n event.preventDefault();\n }\n\n input.blur();\n }\n }\n\n private scrollToSelected(): void {\n if (!this.containerRef || !this.selectedItems.length) return;\n\n const container = this.containerRef.nativeElement;\n\n const selectedElement = container.querySelector('.item.selected');\n\n if (selectedElement) {\n setTimeout(() => {\n selectedElement.scrollIntoView({\n behavior: 'smooth',\n block: 'nearest',\n inline: 'start'\n });\n }, 0);\n }\n }\n}\n","<ng-container *ngIf=\"inputType === 'field'\">\n <label class=\"hr-label sm-bold {{getStatus()}}\" *ngIf=\"label\">\n {{ label }} <span *ngIf=\"required || hasError\">*</span>\n </label>\n</ng-container>\n\n<div class=\"gravity-input-field {{inputType}}-{{labelSize}} {{size}} {{width}}-width {{getStatus()}}\"\n [attr.data-cy]=\"cypressTag ? 'dropdown_'+cypressTag : null\" (click)=\"toggleDropdown();\">\n\n <ng-container *ngIf=\"inputType === 'field'\">\n <gravity-icon class=\"left\" [iconName]=\"iconLeft\" [iconSize]=\"isIconLeftNew() ? 'md-16' : null\"\n *ngIf=\"(iconLeft && !dropdownOpened) || (iconLeft && !items)\"></gravity-icon>\n\n <gravity-icon class=\"search-icon\" [iconName]=\"'search'\" [iconSize]=\"'sm-12'\"\n *ngIf=\"(dropdownOpened && items)\"></gravity-icon>\n\n <div *ngIf=\"!dropdownOpened && networkConfig\" class=\"network-pill\">\n <span class=\"hr-label {{size}}-regular\">{{ networkConfig.label }}</span>\n <gravity-network-pill [disabled]=\"isDisabled\"\n [network]=\"{iso: networkConfig.iso, id: networkConfig.id}\"></gravity-network-pill>\n </div>\n\n <input *ngIf=\"!networkConfig || dropdownOpened\" autocomplete=\"off\"\n class=\"hr-label {{size}}-regular {{getStatus()}}\"\n (focus)=\"searchText = ''\" [class.locked]=\"!dropdownOpened || !items\"\n (keydown)=\"preventTypingWhenLocked($event, searchInput)\"\n (input)=\"filterItems(); dropdownOpened = true\"\n [attr.data-cy]=\"'dropdown_searchInput'\"\n #searchInput\n [ngModel]=\"(dropdownOpened && items) ? searchText : inputDisplayValue()\"\n (ngModelChange)=\"searchText = $event\"\n placeholder=\"{{(dropdownOpened && items) ? (currentLang == 'es' ? 'Buscar' : 'Search input') : (placeholder ? placeholder : label)}}\">\n\n <gravity-icon class=\"right\" [iconName]=\"dropdownOpened ? 'arrow-up': 'arrow-down'\"\n [iconSize]=\"'md-16'\" *ngIf=\"!isReadonly && searchText.length == 0\"></gravity-icon>\n\n <gravity-icon class=\"right\" [iconName]=\"'unsuccess'\" (click)=\"clearSearch()\"\n [iconSize]=\"'md-16'\" *ngIf=\"dropdownOpened && searchText.length > 0\"></gravity-icon>\n </ng-container>\n\n <ng-container *ngIf=\"inputType === 'label'\">\n <gravity-dropdown-label (onClickLabel)=\"toggleDropdown()\" [label]=\"getLabelText()\"\n [size]=\"labelSize\" [isOpen]=\"dropdownOpened\">\n </gravity-dropdown-label>\n </ng-container>\n\n <div class=\"dropdown-panel {{getStatus()}}\" (click)=\"$event.stopPropagation()\" *ngIf=\"items && dropdownOpened\"\n [attr.data-cy]=\"'dropdown_panel'\">\n <div class=\"search-input\" *ngIf=\"inputType === 'label'\">\n <gravity-icon class=\"search-icon\" [iconName]=\"'search'\" [iconSize]=\"'sm-12'\"></gravity-icon>\n <input autocomplete=\"off\" class=\"hr-label {{size}}-regular\" (input)=\"filterItems()\"\n [attr.data-cy]=\"'dropdown_searchInput'\" #searchInput\n [(ngModel)]=\"searchText\" placeholder=\"{{currentLang == 'es' ? 'Buscar' : 'Search input'}}\">\n <gravity-icon class=\"pointer reset-icon\" (click)=\"searchText = ''; filterItems()\" [iconName]=\"'unsuccess'\"\n [iconSize]=\"'sm-12'\" *ngIf=\"searchText?.length > 0\"></gravity-icon>\n </div>\n\n <div class=\"select-all\" *ngIf=\"multiple && availableOptions.length != 0\">\n <gravity-checkbox [ngClass]=\"getSpacingClass(size)\"\n (click)=\"selectAllItems($event)\"\n [checked]=\"checkIfSelected()\"></gravity-checkbox>\n <p class=\"hr-label {{size}}-regular\">{{ currentLang == 'es' ? 'Seleccionar todo' : 'Select all' }}</p>\n </div>\n\n <div class=\"items-container\" #containerRef>\n <div class=\"items\">\n <div class=\"item-container\" *ngFor=\"let item of availableOptions\"\n [attr.data-cy]=\"isCurrency ? 'dropdown_currencyId' + item.currency_id : 'dropdown_option' + getDisplayValue(item, config)\">\n <div class=\"hr-label item {{size}}-regular pointer\"\n [class.selected]=\"checkIfSelected(item)\"\n [class.partial]=\"isPartiallySelected(item)\"\n (click)=\"item.children?.length ? multiple ? selectItem(item) : toggleChildren(item, $event) : selectItem(item)\">\n\n <gravity-checkbox *ngIf=\"multiple\" [ngClass]=\"getSpacingClass(size)\"\n [isPartial]=\"isPartiallySelected(item)\"\n [checked]=\"checkIfSelected(item)\">\n </gravity-checkbox>\n\n <gravity-currency-display-v2 *ngIf=\"isCurrency\"\n [ngClass]=\"getSpacingClass(size)\"\n [type]=\"item.type === 'FIAT' ? 'fiat-short' : 'short-hrz'\"\n [currency]=\"{\n currency_name: item.name,\n currency_id: item.currency_id, currency_iso: item.iso,\n network_id: item.network?.id, network_iso: item.network?.code,\n pill_type: checkIfSelected(item) ? 'secondary' : 'primary'}\">\n </gravity-currency-display-v2>\n\n <div *ngIf=\"!isCurrency\" [ngClass]=\"getSpacingClass(size)\">{{ getDisplayValue(item, config) }}</div>\n\n <gravity-icon style=\"margin-left: auto\" (click)=\"toggleChildren(item, $event)\"\n [iconName]=\"isChildrenOpen(item) ? 'arrow-up' : 'arrow-down'\"\n [iconSize]=\"'md-16'\" *ngIf=\"item.children?.length\"></gravity-icon>\n </div>\n\n <div class=\"item-children\" *ngIf=\"item.children?.length && isChildrenOpen(item)\">\n <ng-container *ngFor=\"let child of item.children\">\n <div class=\"hr-label item {{size}}-regular pointer\" [ngClass]=\"{'multiple' : multiple}\"\n [class.selected]=\"checkIfSelected(child)\"\n (click)=\"selectItem(child)\">\n <gravity-checkbox *ngIf=\"multiple\" [ngClass]=\"getMultilevelSpacingClass(size)\"\n [checked]=\"checkIfSelected(child)\"></gravity-checkbox>\n <gravity-currency *ngIf=\"isCurrency\" [ngClass]=\"getSpacingClass(size)\"\n [size]=\"getCurrencyIconSize(size)\"\n [currency]=\"{currency_id: child.currency_id}\"></gravity-currency>\n <div [ngClass]=\"getSpacingClass(size)\">{{ getDisplayValue(child, config) }}</div>\n <gravity-network-pill *ngIf=\"isCurrency\" [type]=\"checkIfSelected(child) ? 'secondary' : 'primary'\"\n [network]=\"{ iso: child.network?.code, id: child.network?.id }\"></gravity-network-pill>\n </div>\n </ng-container>\n </div>\n </div>\n <div class=\"item-container\" *ngIf=\"availableOptions.length === 0\">\n <div class=\"hr-label item {{size}}-bold no-results\">\n {{ currentLang == 'es' ? 'Sin resultados encontrados' : 'No results found.' }}\n </div>\n </div>\n </div>\n </div>\n\n <div class=\"dropdown-footer\" *ngIf=\"selectedItems.length > 0 && availableOptions.length !== 0\"\n [class.not-clearable]=\"!clearable\">\n <gravity-link *ngIf=\"clearable\"\n (click)=\"clearSelection()\"\n [fontClass]=\"'hr-label sm-regular'\"\n [attr.data-cy]=\"'dropdown_clear'\"\n [linkText]=\"currentLang == 'es' ? 'Limpiar' : 'Clear selection'\">\n </gravity-link>\n\n <gravity-link *ngIf=\"availableOptions.length != 0\"\n [fontClass]=\"'hr-label sm-bold'\"\n [attr.data-cy]=\"'dropdown_apply'\"\n (click)=\"$event.stopPropagation(); toggleDropdown()\"\n [linkText]=\"currentLang == 'es' ? 'Aplicar' : 'Apply'\">\n </gravity-link>\n </div>\n <div class=\"dropdown-footer no-results\" *ngIf=\"availableOptions.length === 0\" [class.not-clearable]=\"!clearable\">\n <gravity-link *ngIf=\"clearable\"\n (click)=\"clearSearch()\"\n [fontClass]=\"'hr-label sm-regular'\"\n [attr.data-cy]=\"'dropdown_clearSearch'\"\n [linkText]=\"currentLang == 'es' ? 'Limpiar búsqueda' : 'Clear search'\">\n </gravity-link>\n </div>\n </div>\n\n <section class=\"external-content\" *ngIf=\"!items && dropdownOpened\" (click)=\"$event.stopPropagation()\">\n <ng-content></ng-content>\n </section>\n</div>\n\n<ng-container *ngIf=\"inputType === 'field'\">\n <p class=\"hr-label sm-regular supporting-text {{getStatus()}} {{size}}\" *ngIf=\"supportText\">\n {{ supportText }}\n </p>\n <p class=\"hr-label sm-regular supporting-text {{getStatus()}} {{size}}\"\n *ngIf=\"!supportText && getStatus() == 'active' && selectedItems.length == 0 && required\">\n {{ currentLang == 'es' ? 'Requerido' : 'Required' }}\n </p>\n</ng-container>","import {DisplayCurrencyItems} from \"./display-currency-items\";\nimport {FilterByPipe} from \"../gravity-dropdown-list/filter-by.pipe\";\nimport {\n Component, ElementRef, EventEmitter, HostListener, Input, Output, ViewChild, OnChanges, SimpleChanges, OnInit,\n OnDestroy\n} from '@angular/core';\nimport {Subscription} from \"rxjs\";\nimport {GravityDropdownManagerService} from \"../../services/gravity-dropdown-manager.service\";\n\n@Component({\n selector: 'gravity-dropdown-list-display',\n templateUrl: './gravity-dropdown-list-display.component.html',\n styleUrls: ['./gravity-dropdown-list-display.component.scss'],\n providers: [FilterByPipe]\n})\nexport class GravityDropdownListDisplayComponent implements OnInit, OnChanges, OnDestroy {\n @Output('response') public selectedItemsResponse: EventEmitter<any[] | any> = new EventEmitter();\n\n @Input() public cypressTag: string;\n @Input() public placeholder: string;\n @Input() public currentLang: string = 'en';\n @Input() public isReadonly: boolean = false;\n @Input() public isDisabled: boolean = false;\n @Input() public customValues: Array<any> | any;\n @Input() public disableSearch: boolean = false;\n @Input() public defaultSelectedItemIndex: number;\n @Input() public items: DisplayCurrencyItems[] = [];\n @Input() public fiatRate: {amount: string, iso: string}\n @Input() public label: string;\n\n // Size and Width\n @Input() public size: 'md' = 'md';\n @Input() public width: 'standard' = 'standard';\n\n @ViewChild('searchInput')\n set watch(searchInput: ElementRef<HTMLInputElement>) {\n if (searchInput) {\n searchInput.nativeElement.focus();\n }\n };\n\n @ViewChild('containerRef') containerRef!: ElementRef<HTMLDivElement>;\n\n public searchText: string = '';\n public selectedItems: any[] = [];\n public availableOptions: any[] = [];\n public dropdownOpened: boolean = false;\n public selectedItem: DisplayCurrencyItems;\n\n private dropdownManagerSubscription!: Subscription;\n\n constructor(private dropdownService: GravityDropdownManagerService, private readonly filterByPipe: FilterByPipe, private _eref: ElementRef) {\n }\n\n ngOnInit() {\n this.dropdownManagerSubscription = this.dropdownService.dropdownOpened$.subscribe(openedDropdown => {\n if (openedDropdown !== this && this.dropdownOpened) {\n this.closeDropdown();\n }\n });\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['items'] && changes['items'].currentValue) {\n this.availableOptions = [...changes['items'].currentValue];\n this.loadItems();\n\n if (this.defaultSelectedItemIndex != null && this.items[this.defaultSelectedItemIndex]) {\n this.selectedItem = this.items[this.defaultSelectedItemIndex];\n this.selectedItems = [this.selectedItem];\n }\n }\n }\n\n ngOnDestroy() {\n this.dropdownManagerSubscription.unsubscribe();\n }\n\n private loadItems() {\n this.availableOptions.forEach(item => {\n item.is_expanded = false;\n if (item.sub_items) {\n item.sub_items.forEach(subItem => {\n subItem.is_expanded = false;\n });\n }\n });\n }\n\n public getStatus(): string {\n if (this.isReadonly) {\n return 'readonly';\n } else if (this.isDisabled) {\n return 'disabled'\n } else if (this.dropdownOpened) {\n return 'open';\n } else if (this.selectedItems.length > 0) {\n return 'selected';\n } else {\n return 'closed';\n }\n }\n\n public toggleDropdown(): void {\n if (!this.isReadonly) {\n if (this.dropdownOpened) {\n this.closeDropdown();\n } else {\n this.openDropdown();\n }\n }\n }\n\n public openDropdown(): void {\n if (!this.isReadonly && !this.dropdownOpened) {\n this.dropdownOpened = true;\n }\n\n setTimeout(() => {\n this.scrollToSelected();\n }, 50);\n }\n\n public closeDropdown(): void {\n if (this.dropdownOpened) {\n this.dropdownOpened = false;\n\n if (this.selectedItems[0]) {\n this.selectedItemsResponse.emit(this.selectedItems[0]);\n }\n\n this.searchText = '';\n this.availableOptions = [...this.items];\n this.loadItems();\n }\n }\n\n public selectItem(itemToAdd: any): void {\n this.selectedItem = itemToAdd;\n this.selectedItems = [itemToAdd];\n setTimeout(() => {\n this.selectedItem.isHovered = false;\n }, 0);\n this.toggleDropdown();\n }\n\n public checkIfSelected(itemToFind: any): boolean {\n return !!this.selectedItems.find((item: any) => itemToFind == item);\n }\n\n public filterItems(): void {\n this.availableOptions = this.filterByPipe.transform(this.items, this.searchText);\n }\n\n @HostListener('document:click', ['$event']) onDocumentClick($event: PointerEvent): void {\n if (!this._eref.nativeElement.contains($event.target) && this.dropdownOpened) {\n this.dropdownOpened = false;\n if (this.selectedItems[0]) {\n this.selectedItemsResponse.emit(this.selectedItems[0]);\n }\n this.searchText = '';\n this.availableOptions = this.items;\n }\n }\n\n private scrollToSelected(): void {\n if (!this.containerRef || !this.selectedItems.length) return;\n\n const container = this.containerRef.nativeElement;\n\n const selectedElement = container.querySelector('.item.selected');\n\n if (selectedElement) {\n setTimeout(() => {\n selectedElement.scrollIntoView({\n behavior: 'smooth',\n block: 'nearest',\n inline: 'start'\n });\n }, 0);\n }\n }\n\n public reset(): void {\n this.dropdownOpened = false;\n this.selectedItem = undefined as any;\n this.selectedItems = [];\n this.searchText = '';\n this.availableOptions = [...this.items];\n this.loadItems();\n }\n}","<div [attr.data-cy]=\"cypressTag? 'currencyDropdown_' + cypressTag : null\" class=\"gravity-input-field {{size}} {{width}}-width {{getStatus()}}\"\n [class.has-value]=\"selectedItems.length > 0\"\n (mouseenter)=\"selectedItem ? selectedItem.isHovered = true : null\"\n (mouseleave)=\"selectedItem ? selectedItem.isHovered = false : null\"\n (click)=\"toggleDropdown()\">\n\n <div class=\"value\">\n\n <div class=\"dropdown-label\" [class.floating]=\"selectedItems.length > 0\">\n <span class=\"hr-label sm-bold\" *ngIf=\"label && selectedItems.length > 0\">{{label}}</span>\n </div>\n\n <div *ngIf=\"selectedItems.length == 0\" class=\"placeholder hr-label md-regular\">{{ placeholder }}</div>\n <div *ngIf=\"selectedItems.length > 0\" class=\"selected-value\">\n <gravity-currency-display-v2\n [currency]=\"{ currency_name: selectedItem.currency_name,\n currency_id: selectedItem.currency_id, currency_iso: selectedItem.currency_iso,\n network_id: selectedItem.network_id, network_iso: selectedItem.network_iso,\n pill_type: isReadonly || selectedItem.isHovered ? 'primary' : (getStatus() === 'selected' ? 'secondary' : 'primary')}\">\n </gravity-currency-display-v2>\n </div>\n </div>\n\n <gravity-icon class=\"right\" [iconName]=\"dropdownOpened ? 'arrow-up': 'arrow-down'\" [iconSize]=\"'sm-12'\"\n *ngIf=\"!isReadonly\"/>\n\n <div class=\"dropdown-panel\" (click)=\"$event.stopPropagation()\" *ngIf=\"dropdownOpened\"\n [attr.data-cy]=\"'currencyDropdown_panel'\">\n <div class=\"search-input\" [class.disabled]=\"disableSearch\">\n <gravity-icon [style.--icon-color]=\"disableSearch ? 'var(--on-bg-disabled)' : null\"\n class=\"search-icon\" [iconName]=\"'search'\" [iconSize]=\"'sm-12'\">\n </gravity-icon>\n <input autocomplete=\"off\" class=\"hr-label {{size}}-regular\" (input)=\"filterItems()\"\n [attr.data-cy]=\"'currencyDropdown_searchInput'\" #searchInput [disabled]=\"disableSearch\"\n [(ngModel)]=\"searchText\" placeholder=\"{{currentLang == 'es' ? 'Buscar moneda' : 'Search currency'}}\">\n <gravity-icon class=\"pointer reset-icon\" (click)=\"searchText = ''; filterItems()\" [iconName]=\"'unsuccess'\"\n [iconSize]=\"'sm-12'\" *ngIf=\"searchText?.length > 0\">\n </gravity-icon>\n </div>\n\n <div class=\"items-container\" #containerRef>\n <div class=\"items\">\n <div class=\"item-container\" *ngFor=\"let item of availableOptions\" [class.expanded]=\"item.is_expanded\">\n <div class=\"hr-label item {{size}}-regular pointer\" [class.disabled]=\"item?.disabled\"\n [class.selected]=\"item.sub_items?.length > 0 ? null : checkIfSelected(item)\"\n (click)=\"item.sub_items?.length > 0 ? item.is_expanded = !item.is_expanded : selectItem(item)\"\n (mouseenter)=\"item.isHovered = true\" (mouseleave)=\"item.isHovered = false\" [attr.data-cy]=\"'currencyDropdown_currencyId'+item.currency_id\">\n\n <gravity-currency-display-v2\n [disabled]=\"item?.disabled\"\n [currency]=\"{ currency_name: item.currency_name,\n currency_iso: item.currency_iso, currency_id: item.currency_id,\n network_id: item.network_id, network_iso: item.network_iso,\n pill_type: (checkIfSelected(item) || item.isHovered) ? 'secondary' : 'primary' }\">\n </gravity-currency-display-v2>\n\n <span *ngIf=\"!item.sub_items\" class=\"hr-body sm-regular gravity-margin-right-sm currency-info\">\n {{ item?.balance_amount }} {{ item?.balance_currency }}\n </span>\n\n <gravity-icon *ngIf=\"item.sub_items?.length > 0 && item?.disabled !== true\" class=\"pointer expand-icon\"\n [iconSize]=\"'sm-12'\" [iconName]=\"item.is_expanded ? 'arrow-up' : 'arrow-down'\">\n </gravity-icon>\n </div>\n\n <ng-container *ngIf=\"item.is_expanded && item.sub_items\">\n <div class=\"hr-label item {{size}}-regular pointer\" *ngFor=\"let subItem of item.sub_items\"\n [class.selected]=\"checkIfSelected(subItem)\" (click)=\"selectItem(subItem)\" [class.disabled]=\"subItem?.disabled\"\n (mouseenter)=\"subItem.isHovered = true\" (mouseleave)=\"subItem.isHovered = false\">\n\n <div class=\"subitem-line\"></div>\n <gravity-currency-display-v2\n [disabled]=\"subItem?.disabled\"\n [currency]=\"{ currency_name: subItem.currency_name,\n currency_iso: subItem.currency_iso, currency_id: subItem.currency_id,\n network_id: subItem.network_id, network_iso: subItem.network_iso,\n pill_type: (checkIfSelected(subItem) || subItem.isHovered) ? 'secondary' : 'primary' }\" >\n </gravity-currency-display-v2>\n\n <span class=\"hr-body sm-regular gravity-margin-right-sm currency-info\">\n {{ subItem.balance_amount }} {{ subItem.balance_currency }}\n </span>\n </div>\n </ng-container>\n </div>\n\n <div class=\"hr-label item {{size}}-bold no-results\" *ngIf=\"availableOptions.length === 0\">\n {{ currentLang == 'es' ? 'Sin resultados' : 'No results' }}\n </div>\n </div>\n </div>\n </div>\n</div>\n\n<div class=\"wallet-balance-info\" *ngIf=\"selectedItems.length > 0\">\n <p class=\"hr-label sm-regular\">{{ currentLang == 'es' ? 'Saldo de cartera' : 'Wallet balance' }}\n : {{ selectedItem.balance_amount }} {{ selectedItem.balance_currency }} <span *ngIf=\"fiatRate\"> | ≈ {{fiatRate.amount}} {{fiatRate.iso}} </span></p>\n</div>\n\n","import {GravityIconComponent} from \"../gravity-icon/gravity-icon.component\";\nimport {Component, ElementRef, EventEmitter, Input, OnChanges, OnInit, Output, SimpleChanges, ViewChild} from '@angular/core';\n\n@Component({\n selector: 'gravity-text-field',\n templateUrl: './gravity-text-field.component.html',\n styleUrls: ['./gravity-text-field.component.scss']\n})\nexport class GravityTextFieldComponent implements OnInit, OnChanges {\n @Output('clickIconLeft') public leftIconResponse: EventEmitter<void> = new EventEmitter();\n @Output('clickIconRight') public rightIconResponse: EventEmitter<void> = new EventEmitter();\n @Output('response') public textFieldValueResponse: EventEmitter<string> = new EventEmitter();\n\n\t@ViewChild('inputElement', {static: false}) public inputElement!: ElementRef<HTMLInputElement>;\n\t@ViewChild('textAreaElement', {static: false}) public textAreaElement!: ElementRef<HTMLInputElement>;\n\n\t// Component\n @Input() public currentLang: string = 'en';\n @Input() public customInputValue: string;\n @Input() public customState: 'default' | 'active' | 'hover' | 'typing' | 'typed' | 'typed-error' | 'typed-positive' | 'disabled' | 'readonly' | 'autofill' = 'default';\n @Input() public cypressTag: string;\n @Input() public label: string;\n @Input() public prefix: string = \"\";\n @Input() public required: boolean;\n @Input() public supportText: string;\n @Input() public textFieldType: 'input' | 'textarea' = \"input\";\n\n // Icons\n @Input() public clickOnLeftIcon: boolean = false;\n @Input() public clickOnRightIcon: boolean = false;\n @Input() public iconColor: string;\n @Input() public iconLeft: string;\n @Input() public iconRight: string;\n\n // Input | Textarea\n @Input() public autocomplete: string = 'off';\n @Input() public inputContentType: 'email' | 'number' | 'password' | 'tel' | 'date' | 'text' = \"text\";\n @Input() public placeholder: string;\n @Input() public validations: { maxLength?: number; minLength?: number };\n\n // Sizes\n @Input() public size: 'sm' | 'md' = 'md';\n @Input() public width: 'short' | 'medium' | 'full' | 'fit' = 'short';\n\n public focusInput: boolean = false;\n public inputValue: string = '';\n\n ngOnInit(): void {\n this.inputValue = this.customInputValue ? this.customInputValue : '';\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes['customInputValue']) {\n this.inputValue = changes['customInputValue'].currentValue ? changes['customInputValue'].currentValue : '';\n }\n }\n\n\tpublic focus() {\n\t\tthis.inputElement.nativeElement.focus();\n\t}\n\n\tpublic isFocused(): boolean {\n\t\treturn document.activeElement === this.inputElement.nativeElement;\n\t}\n\n public getPlaceholder(): string {\n if (this.placeholder && this.placeholder != '') {\n return this.placeholder;\n } else {\n return this.label;\n }\n }\n\n public clearInput(): void {\n this.changeInputValue(true);\n }\n\n public changeInputValue(clearInput: boolean = false): void {\n if (clearInput) {\n this.inputValue = '';\n } else if (this.textFieldType == 'input') {\n this.inputValue = this.inputElement.nativeElement.value;\n } else {\n this.inputValue = this.textAreaElement.nativeElement.value;\n }\n\n if (this.inputValue == '') {\n this.textFieldValueResponse.emit('');\n } else {\n this.textFieldValueResponse.emit(this.prefix + this.inputValue);\n }\n }\n\n public handleIconClick(iconPosition: 'left' | 'right'): void {\n if (iconPosition == 'left' && this.clickOnLeftIcon) {\n this.leftIconResponse.emit();\n }\n\n if (iconPosition == 'right' && this.clickOnRightIcon) {\n this.rightIconResponse.emit();\n }\n }\n\n public getTextFieldStatus(): string {\n if (this.customState == 'default') {\n if (!this.focusInput && !this.inputValue) {\n return 'active';\n } else if (!this.focusInput && this.inputValue) {\n return 'typed';\n } else {\n return 'typing';\n }\n } else {\n return this.customState;\n }\n }\n\n public getTextFieldInputFontSize(): string {\n return 'hr-label ' + this.size + '-regular';\n }\n\n public isNewIcon(iconPosition: 'left' | 'right'): boolean {\n if (iconPosition == 'left') {\n return GravityIconComponent.isNewIcon(this.iconLeft);\n } else {\n return GravityIconComponent.isNewIcon(this.iconRight);\n }\n }\n\n public onKeyDownEvent($event: KeyboardEvent): void {\n if (this.inputContentType == 'number') {\n let navigationKeys = ['Backspace', 'Delete', 'Tab', 'Escape', 'Enter', 'Home', 'End', 'ArrowLeft', 'ArrowRight', 'Clear', 'Copy', 'Paste'];\n\n if (\n navigationKeys.indexOf($event.key) > -1 || // Allow: navigation keys: backspace, delete, arrows etc.\n ($event.key === 'a' && $event.ctrlKey === true) || // Allow: Ctrl+A\n ($event.key === 'c' && $event.ctrlKey === true) || // Allow: Ctrl+C\n ($event.key === 'v' && $event.ctrlKey === true) || // Allow: Ctrl+V\n ($event.key === 'x' && $event.ctrlKey === true) || // Allow: Ctrl+X\n ($event.key === 'a' && $event.metaKey === true) || // Allow: Cmd+A (Mac)\n ($event.key === 'c' && $event.metaKey === true) || // Allow: Cmd+C (Mac)\n ($event.key === 'v' && $event.metaKey === true) || // Allow: Cmd+V (Mac)\n ($event.key === 'x' && $event.metaKey === true) ||// Allow: Cmd+X (Mac)\n ($event.key === '.') || ($event.key === ',') // Allow: dot and comma for decimal\n ) {\n // let it happen, don't do anything\n return;\n }\n\n // Ensure that it is a number and stop the keypress\n if (\n ($event.shiftKey || ($event.keyCode < 48 || $event.keyCode > 57)) &&\n ($event.keyCode < 96 || $event.keyCode > 105)\n ) {\n $event.preventDefault();\n }\n }\n\n\t if (this.inputContentType == 'date') {\n\t\t const allowedKeys = [\n\t\t\t 'Backspace', 'Delete', 'Tab', 'Escape', 'Enter',\n\t\t\t 'ArrowLeft', 'ArrowRight', 'ArrowUp', 'ArrowDown'\n\t\t ];\n\n\t\t if (allowedKeys.includes($event.key) || $event.metaKey || $event.ctrlKey) {\n\t\t\t return;\n\t\t }\n\n\t\t if (/\\D/.test($event.key) && $event.key !== '/') {\n\t\t\t $event.preventDefault();\n\t\t }\n\t }\n }\n\n\tpublic formatDateInput(event: any): void {\n\t\tconst el = event.target as HTMLInputElement;\n\t\tlet value = el.value;\n\t\tlet formatted = '';\n\n\t\tlet cursorPosition = el.selectionStart || 0;\n\t\tconst isDeleting = event.inputType === 'deleteContentBackward' ||\n\t\t\t event.inputType === 'deleteContentForward';\n\n\t\tif ((value.length === 3 && value[2] === '/') ||\n\t\t\t (value.length === 6 && value[5] === '/')) {\n\t\t\tformatted = value;\n\t\t}\n\n\t\telse if (/\\D/.test(value[value.length - 1])) {\n\t\t\tformatted = value.slice(0, -1);\n\t\t\tcursorPosition = Math.max(0, cursorPosition - 1);\n\n\t\t\tif(formatted.length === 1 || formatted.length === 4) {\n\t\t\t\tcursorPosition++;\n\t\t\t}\n\t\t}\n\n\t\telse {\n\t\t\tconst numbers = value.replace(/\\//g, '');\n\n\t\t\tlet day = numbers.slice(0, 2);\n\t\t\tlet month = numbers.slice(2, 4);\n\t\t\tlet year = numbers.slice(4, 8);\n\n\t\t\tif (day.length > 0) formatted += day;\n\t\t\tif (day.length === 2 && month.length > 0) formatted += '/';\n\t\t\tif (month.length > 0) formatted += month;\n\t\t\tif (month.length === 2 && year.length > 0) formatted += '/';\n\t\t\tif (year.length > 0) formatted += year;\n\n\t\t\tconst currentLength = value.length;\n\t\t\tconst newLength = formatted.length;\n\n\t\t\tif (newLength > currentLength && !isDeleting) { cursorPosition++ }\n\t\t}\n\n\t\tel.value = formatted;\n\t\tthis.inputValue = formatted;\n\t\tel.setSelectionRange(cursorPosition, cursorPosition);\n\n\t\tthis.changeInputValue();\n\t}\n}\n","<label class=\"hr-label sm-bold {{getTextFieldStatus()}}\" [class.custom-label-size]=\"size == 'sm'\" *ngIf=\"label\">\n {{label}} <span *ngIf=\"required || getTextFieldStatus() == 'typed-error'\">*</span>\n</label>\n<div class=\"gravity-input-field {{size}} {{width}}-width {{getTextFieldStatus()}}\">\n <ng-container *ngIf=\"iconLeft\">\n <ng-container [ngTemplateOutlet]=\"icons\" [ngTemplateOutletContext]=\"{iconPosition: 'left'}\"></ng-container>\n </ng-container>\n <span class=\"{{getTextFieldInputFontSize()}} prefix\">{{prefix}}</span>\n <input [attr.data-cy]=\"cypressTag ? 'textField_' + cypressTag : null\"\n [attr.disabled]=\"customState == 'disabled' ? true : null\"\n [attr.readonly]=\"customState == 'readonly' ? true : null\"\n [autocomplete]=\"autocomplete\"\n [maxLength]=\"inputContentType === 'date' ? 10 : (validations?.maxLength || 100)\"\n [minLength]=\"validations?.minLength ? validations?.minLength : 0\"\n [placeholder]=\"getPlaceholder()\"\n [type]=\"inputContentType === 'date' ? 'text' : (inputContentType !== 'number' ? inputContentType : 'text')\"\n [value]=\"inputValue\"\n\n (blur)=\"focusInput = false\"\n (change)=\"changeInputValue()\"\n (focus)=\"focusInput = true\"\n (keydown)=\" onKeyDownEvent($event)\"\n (keyup)=\"inputContentType === 'date' ?\n formatDateInput($event) : changeInputValue()\"\n\n class=\"{{getTextFieldInputFontSize()}}\"\n\t\t\t\t #inputElement\n *ngIf=\"textFieldType == 'input'\">\n\n <textarea [attr.data-cy]=\"cypressTag ? 'textField_' + cypressTag : null\"\n [attr.disabled]=\"customState == 'disabled' ? true : null\"\n [attr.readonly]=\"customState == 'readonly' ? true : null\"\n [maxLength]=\"validations?.maxLength ? validations?.maxLength : 200\"\n [minLength]=\"validations?.minLength ? validations?.minLength : 0\"\n [placeholder]=\"getPlaceholder()\"\n [value]=\"inputValue\"\n\n (blur)=\"focusInput = false\"\n (change)=\"changeInputValue()\"\n (focus)=\"focusInput = true\"\n (keydown)=\"onKeyDownEvent($event)\"\n (keyup)=\"changeInputValue()\"\n\n class=\"{{getTextFieldInputFontSize()}}\"\n rows=\"1\"\n\n #textAreaElement\n\n *ngIf=\"textFieldType == 'textarea'\"></textarea>\n <ng-container *ngIf=\"iconRight\">\n <ng-container [ngTemplateOutlet]=\"icons\" [ngTemplateOutletContext]=\"{iconPosition: 'right'}\"></ng-container>\n </ng-container>\n</div>\n<p class=\"hr-label sm-regular supporting-text {{getTextFieldStatus()}} {{size}}\"\n [class.custom-label-size]=\"size == 'sm'\" *ngIf=\"supportText\">\n <gravity-icon [iconName]=\"'question-circle'\" *ngIf=\"getTextFieldStatus() == 'typed-error'\"\n [iconSize]=\"'md-16'\"></gravity-icon>\n {{supportText}}\n</p>\n<p class=\"hr-label sm-regular supporting-text {{getTextFieldStatus()}} {{size}}\"\n [class.custom-label-size]=\"size == 'sm'\"\n *ngIf=\"!supportText && getTextFieldStatus() == 'active' && inputValue == '' && required\">\n {{currentLang == 'es' ? 'Requerido' : 'Required'}}\n</p>\n\n<ng-template #icons let-iconPosition=\"iconPosition\">\n <gravity-icon (click)=\"$event.stopPropagation(); handleIconClick(iconPosition)\" class=\"{{iconPosition}}\"\n [class.pointer]=\"(iconPosition == 'left' && clickOnLeftIcon) || (iconPosition == 'right' && clickOnRightIcon)\"\n [iconName]=\"iconPosition == 'left' ? iconLeft : iconRight\" [style.--icon-color]=\"iconColor\"\n [iconSize]=\"isNewIcon(iconPosition) ? 'md-16' : null\" [attr.data-cy]=\"'textField_icon'\"></gravity-icon>\n</ng-template>\n","import {Component, ElementRef, EventEmitter, HostBinding, HostListener, Input, OnInit, Renderer2} from '@angular/core';\n\n@Component({\n selector: 'tooltip',\n templateUrl: './gravity-tooltip.component.html',\n host: {'class': 'tooltip'},\n styleUrls: ['./gravity-tooltip.component.sass']\n})\n\nexport class GravityTooltipComponent implements OnInit {\n _show: boolean = false;\n events = new EventEmitter();\n\n @Input() data: any;\n\n @HostBinding('style.top') hostStyleTop!: string;\n @HostBinding('style.left') hostStyleLeft!: string;\n @HostBinding('style.z-index') hostStyleZIndex!: number;\n @HostBinding('style.transition') hostStyleTransition!: string;\n @HostBinding('style.width') hostStyleWidth!: string;\n @HostBinding('style.max-width') hostStyleMaxWidth!: string;\n @HostBinding('style.pointer-events') hostStylePointerEvents!: string;\n @HostBinding('class.tooltip-show') hostClassShow!: boolean;\n @HostBinding('class.tooltip-shadow') hostClassShadow!: boolean;\n @HostBinding('class.tooltip-light') hostClassLight!: boolean;\n @HostBinding('class.tooltip-no-pointer') hostClassNoPointer!: boolean;\n\n @HostListener('transitionend', ['$event'])\n transitionEnd() {\n if (this.show) {\n this.events.emit({\n type: 'shown'\n });\n }\n }\n\n @Input() set show(value: boolean) {\n if (value) {\n this.setPosition();\n }\n this._show = this.hostClassShow = value;\n }\n\n get show(): boolean {\n return this._show;\n }\n\n get placement() {\n return this.data.options.placement;\n }\n\n get autoPlacement() {\n return this.data.options.autoPlacement;\n }\n\n get element() {\n return this.data.element;\n }\n\n get elementPosition() {\n return this.data.elementPosition;\n }\n\n get options() {\n return this.data.options;\n }\n\n get value() {\n return this.data.value;\n }\n\n get tooltipOffset(): number {\n return Number(this.data.options.offset);\n }\n\n get isThemeLight() {\n return this.options['theme'] === 'light';\n }\n\n constructor(private elementRef: ElementRef, private renderer: Renderer2) {\n }\n\n ngOnInit() {\n this.setCustomClass();\n this.setStyles();\n }\n\n setPosition(): void {\n if (this.setHostStyle(this.placement)) {\n this.setPlacementClass(this.placement);\n return;\n } else {\n /* Is tooltip outside the visible area */\n const placements = ['top', 'top-left', 'top-right', 'right', 'right-top', 'right-bottom', 'bottom', 'bottom-right', 'bottom-left', 'left', 'left-top', 'left-bottom'];\n let isPlacementSet;\n\n for (const placement of placements) {\n if (this.setHostStyle(placement)) {\n this.setPlacementClass(placement);\n isPlacementSet = true;\n return;\n }\n }\n\n /* Set original placement */\n if (!isPlacementSet) {\n this.setHostStyle(this.placement, true);\n this.setPlacementClass(this.placement);\n }\n }\n }\n\n\n setPlacementClass(placement: string): void {\n this.renderer.addClass(this.elementRef.nativeElement, 'tooltip-' + placement);\n }\n\n setHostStyle(placement: string, disableAutoPlacement: boolean = false): boolean {\n const isSvg = this.element instanceof SVGElement;\n const tooltip = this.elementRef.nativeElement;\n const isCustomPosition = !this.elementPosition.right;\n\n let elementHeight = isSvg ? this.element.getBoundingClientRect().height : this.element.offsetHeight;\n let elementWidth = isSvg ? this.element.getBoundingClientRect().width : this.element.offsetWidth;\n const tooltipHeight = tooltip.clientHeight;\n const tooltipWidth = tooltip.clientWidth;\n const scrollY = window.pageYOffset;\n\n if (isCustomPosition) {\n elementHeight = 0;\n elementWidth = 0;\n }\n\n let topStyle;\n let leftStyle;\n\n switch (placement) {\n case 'top':\n topStyle = (this.elementPosition.top + scrollY) - (tooltipHeight + this.tooltipOffset);\n leftStyle = (this.elementPosition.left + elementWidth / 2) - tooltipWidth / 2;\n break;\n case 'top-left':\n topStyle = (this.elementPosition.top + scrollY) - (tooltipHeight + this.tooltipOffset);\n leftStyle = (this.elementPosition.left + elementWidth / 2) - (tooltipWidth * 0.1);\n break;\n case 'top-right':\n topStyle = (this.elementPosition.top + scrollY) - (tooltipHeight + this.tooltipOffset);\n leftStyle = (this.elementPosition.left + elementWidth / 2) - (tooltipWidth * 0.9);\n break;\n case 'bottom':\n topStyle = (this.elementPosition.top + scrollY) + elementHeight + this.tooltipOffset;\n leftStyle = (this.elementPosition.left + elementWidth / 2) - tooltipWidth / 2;\n break;\n case 'bottom-left':\n topStyle = (this.elementPosition.top + scrollY) + elementHeight + this.tooltipOffset;\n leftStyle = (this.elementPosition.left + elementWidth / 2) - (tooltipWidth * 0.1);\n break;\n case 'bottom-right':\n topStyle = (this.elementPosition.top + scrollY) + elementHeight + this.tooltipOffset;\n leftStyle = (this.elementPosition.left + elementWidth / 2) - (tooltipWidth * 0.9);\n break;\n case 'left':\n leftStyle = this.elementPosition.left - tooltipWidth - this.tooltipOffset;\n topStyle = (this.elementPosition.top + scrollY) + elementHeight / 2 - tooltipHeight / 2;\n break;\n case 'left-top':\n leftStyle = this.elementPosition.left - tooltipWidth - this.tooltipOffset;\n topStyle = (this.elementPosition.top + scrollY + elementHeight / 2) - (tooltipHeight * 0.1);\n break;\n case 'left-bottom':\n leftStyle = this.elementPosition.left - tooltipWidth - this.tooltipOffset;\n topStyle = (this.elementPosition.top + scrollY + elementHeight / 2) - (tooltipHeight * 0.9);\n break;\n case 'right':\n leftStyle = this.elementPosition.left + elementWidth + this.tooltipOffset;\n topStyle = (this.elementPosition.top + scrollY) + elementHeight / 2 - tooltipHeight / 2;\n break;\n case 'right-top':\n leftStyle = this.elementPosition.left + elementWidth + this.tooltipOffset;\n topStyle = (this.elementPosition.top + scrollY + elementHeight / 2) - (tooltipHeight * 0.1);\n break;\n case 'right-bottom':\n leftStyle = this.elementPosition.left + elementWidth + this.tooltipOffset;\n topStyle = (this.elementPosition.top + scrollY + elementHeight / 2) - (tooltipHeight * 0.9);\n break;\n default:\n return false;\n }\n\n /* Is tooltip outside the visible area */\n if (this.autoPlacement && !disableAutoPlacement) {\n const topEdge = topStyle;\n const bottomEdge = topStyle + tooltipHeight;\n const leftEdge = leftStyle;\n const rightEdge = leftStyle + tooltipWidth;\n const bodyHeight = window.innerHeight + scrollY;\n const bodyWidth = document.body.clientWidth;\n\n if (topEdge < 0 || bottomEdge > bodyHeight || leftEdge < 0 || rightEdge > bodyWidth) {\n return false;\n }\n }\n\n this.hostStyleTop = topStyle + 'px';\n this.hostStyleLeft = leftStyle + 'px';\n return true;\n }\n\n setZIndex(): void {\n if (this.options['zIndex'] !== 0) {\n this.hostStyleZIndex = this.options['zIndex'];\n }\n }\n\n setCustomClass() {\n if (this.options['tooltipClass']) {\n this.options['tooltipClass'].split(' ').forEach((className: any) => {\n this.renderer.addClass(this.elementRef.nativeElement, className);\n });\n }\n }\n\n setAnimationDuration() {\n if (Number(this.options['animationDuration']) != this.options['animationDurationDefault']) {\n this.hostStyleTransition = 'opacity ' + this.options['animationDuration'] + 'ms';\n }\n }\n\n setStyles() {\n this.setZIndex();\n this.setAnimationDuration();\n\n this.hostClassShadow = this.options['shadow'];\n this.hostClassLight = this.isThemeLight;\n this.hostStyleMaxWidth = this.options['maxWidth'];\n this.hostStyleWidth = this.options['width'] ? this.options['width'] : '';\n this.hostClassNoPointer = !this.options['persistent'];\n }\n\n closeTooltip() {\n this.show = false;\n this.events.emit({ type: 'hide', position: this.data.elementPosition });\n }\n}\n","<div *ngIf=\"isThemeLight\" class=\"tooltip-arrow\"></div>\n\n<!--Si el contentType es template, se usa el ngTemplate sino usa el htmlOrStringTemplate-->\n<div *ngIf=\"options['contentType'] === 'template' else htmlOrStringTemplate\">\n <ng-container *ngTemplateOutlet=\"value\"></ng-container>\n</div>\n\n<ng-template #htmlOrStringTemplate>\n <div [innerHTML]=\"value\"></div>\n</ng-template>\n","import { InjectionToken } from '@angular/core';\nimport { TooltipOptions } from './options.interface';\n\n/**\n * This is not a real service, but it looks like it from the outside.\n * It's just an InjectionToken used to import the config (initOptions) object, provided from the outside\n */\nexport const TooltipOptionsService = new InjectionToken<TooltipOptions>('TooltipOptions');\n","export const defaultOptions = {\n 'placement': 'top',\n 'autoPlacement': true,\n 'contentType': 'string',\n 'showDelay': 0,\n 'hideDelay': 300,\n 'hideDelayMobile': 0,\n 'hideDelayTouchscreen': 0,\n 'zIndex': 0,\n 'animationDuration': 300,\n 'animationDurationDefault': 300,\n 'trigger': 'hover',\n 'tooltipClass': '',\n 'display': true,\n 'displayMobile': true,\n 'displayTouchscreen': true,\n 'shadow': true,\n 'theme': 'dark',\n 'offset': 8,\n 'maxWidth': '',\n 'id': false,\n 'hideDelayAfterClick': 2000\n}\n\nexport const backwardCompatibilityOptions: any = {\n 'delay': 'showDelay',\n 'show-delay': 'showDelay',\n 'hide-delay': 'hideDelay',\n 'hide-delay-mobile': 'hideDelayTouchscreen',\n 'hideDelayMobile': 'hideDelayTouchscreen',\n 'z-index': 'zIndex',\n 'animation-duration': 'animationDuration',\n 'animation-duration-default': 'animationDurationDefault',\n 'tooltip-class': 'tooltipClass',\n 'display-mobile': 'displayTouchscreen',\n 'displayMobile': 'displayTouchscreen',\n 'max-width': 'maxWidth'\n}\n","import {\n ApplicationRef,\n ComponentFactoryResolver,\n Directive,\n ElementRef,\n EmbeddedViewRef,\n EventEmitter,\n HostListener,\n Inject,\n Injector,\n Input,\n OnChanges,\n Optional,\n Output,\n SimpleChanges,\n TemplateRef\n} from '@angular/core';\nimport {GravityTooltipComponent} from './gravity-tooltip.component';\nimport {TooltipOptionsService} from './options.service';\nimport {backwardCompatibilityOptions, defaultOptions} from './options';\nimport {TooltipOptions} from './options.interface';\n\nexport interface AdComponent {\n data: any;\n show: boolean;\n close: boolean;\n events: any;\n}\n\n@Directive({\n selector: '[tooltip]',\n exportAs: 'tooltip',\n})\n\nexport class GravityTooltipDirective implements OnChanges {\n\n hideTimeoutId!: number;\n destroyTimeoutId!: number;\n hideAfterClickTimeoutId!: number;\n createTimeoutId!: number;\n showTimeoutId!: number;\n componentRef: any;\n elementPosition: any;\n _id: any;\n _options: any = {};\n _defaultOptions: any;\n _destroyDelay!: number;\n componentSubscribe: any;\n _contentType: \"string\" | \"html\" | \"template\" = \"string\";\n _showDelay!: number;\n _hideDelay!: number;\n _zIndex!: number;\n _tooltipClass!: string;\n _animationDuration!: number;\n _maxWidth!: string;\n\n @Input('options') set options(value: TooltipOptions) {\n if (value && defaultOptions) {\n this._options = value;\n }\n }\n\n get options() {\n return this._options;\n }\n\n @Input('tooltip') tooltipValue!: string | TemplateRef<any>;\n @Input('placement') placement!: string;\n @Input('autoPlacement') autoPlacement!: boolean;\n\n // Content type\n @Input('content-type') set contentTypeBackwardCompatibility(value: \"string\" | \"html\" | \"template\") {\n if (value) {\n this._contentType = value;\n }\n }\n\n @Input('contentType') set contentType(value: \"string\" | \"html\" | \"template\") {\n if (value) {\n this._contentType = value;\n }\n }\n\n get contentType() {\n return this._contentType;\n }\n\n @Input('hide-delay-mobile') hideDelayMobile!: number;\n @Input('hideDelayTouchscreen') hideDelayTouchscreen!: number;\n\n // z-index\n @Input('z-index') set zIndexBackwardCompatibility(value: number) {\n if (value) {\n this._zIndex = value;\n }\n }\n\n @Input('zIndex') set zIndex(value: number) {\n if (value) {\n this._zIndex = value;\n }\n }\n\n get zIndex() {\n return this._zIndex;\n }\n\n // Animation duration\n @Input('animation-duration') set animationDurationBackwardCompatibility(value: number) {\n if (value) {\n this._animationDuration = value;\n }\n }\n\n @Input('animationDuration') set animationDuration(value: number) {\n if (value) {\n this._animationDuration = value;\n }\n }\n\n get animationDuration() {\n return this._animationDuration;\n }\n\n\n @Input('trigger') trigger!: string;\n\n // Tooltip class\n @Input('tooltip-class') set tooltipClassBackwardCompatibility(value: string) {\n if (value) {\n this._tooltipClass = value;\n }\n }\n\n @Input('tooltipClass') set tooltipClass(value: string) {\n if (value) {\n this._tooltipClass = value;\n }\n }\n\n get tooltipClass() {\n return this._tooltipClass;\n }\n\n @Input('display') display!: boolean;\n @Input('display-mobile') displayMobile!: boolean;\n @Input('displayTouchscreen') displayTouchscreen!: boolean;\n @Input('shadow') shadow!: boolean;\n @Input('theme') theme!: \"dark\" | \"light\";\n @Input('offset') offset!: number;\n @Input('width') width!: string;\n @Input('persistent') persistent: boolean = false;\n\n // Max width\n @Input('max-width') set maxWidthBackwardCompatibility(value: string) {\n if (value) {\n this._maxWidth = value;\n }\n }\n\n @Input('maxWidth') set maxWidth(value: string) {\n if (value) {\n this._maxWidth = value;\n }\n }\n\n get maxWidth() {\n return this._maxWidth;\n }\n\n\n @Input('id') id: any;\n\n // Show delay\n @Input('show-delay') set showDelayBackwardCompatibility(value: number) {\n if (value) {\n this._showDelay = value;\n }\n }\n\n @Input('showDelay') set showDelay(value: number) {\n if (value) {\n this._showDelay = value;\n }\n }\n\n get showDelay() {\n return this._showDelay;\n }\n\n // Hide delay\n @Input('hide-delay') set hideDelayBackwardCompatibility(value: number) {\n if (value) {\n this._hideDelay = value;\n }\n }\n\n @Input('hideDelay') set hideDelay(value: number) {\n if (value) {\n this._hideDelay = value;\n }\n }\n\n get hideDelay() {\n return this._hideDelay;\n }\n\n @Input('hideDelayAfterClick') hideDelayAfterClick!: number;\n @Input('pointerEvents') pointerEvents!: 'auto' | 'none';\n @Input('position') position!: { top: number, left: number };\n\n get isTooltipDestroyed() {\n return this.componentRef && this.componentRef.hostView.destroyed;\n }\n\n get destroyDelay() {\n if (this._destroyDelay) {\n return this._destroyDelay;\n } else {\n return Number(this.getHideDelay()) + Number(this.options['animationDuration']);\n }\n }\n\n set destroyDelay(value: number) {\n this._destroyDelay = value;\n }\n\n get tooltipPosition() {\n if (this.options['position']) {\n return this.options['position'];\n } else {\n return this.elementPosition;\n }\n }\n\n @Output() events: EventEmitter<any> = new EventEmitter<any>();\n\n constructor(\n @Optional() @Inject(TooltipOptionsService) private initOptions: any,\n private elementRef: ElementRef,\n private componentFactoryResolver: ComponentFactoryResolver,\n private appRef: ApplicationRef,\n private injector: Injector) {\n }\n\n @HostListener('focusin')\n @HostListener('mouseenter')\n onMouseEnter() {\n if (this.isDisplayOnHover == false) {\n return;\n }\n\n this.show();\n }\n\n @HostListener('focusout')\n @HostListener('mouseleave')\n onMouseLeave() {\n if (this.options['trigger'] === 'hover' && !this.persistent) {\n this.destroyTooltip();\n }\n }\n\n @HostListener('click')\n onClick() {\n if (this.isDisplayOnClick == false) {\n return;\n }\n\n this.show();\n\n if (!this.persistent) {\n this.hideAfterClickTimeoutId = window.setTimeout(() => {\n this.destroyTooltip();\n }, this.options['hideDelayAfterClick']);\n }\n }\n\n ngOnChanges(changes: SimpleChanges) {\n this.initOptions = this.renameProperties(this.initOptions);\n let changedOptions = this.getProperties(changes);\n changedOptions = this.renameProperties(changedOptions);\n\n this.applyOptionsDefault(defaultOptions, changedOptions);\n }\n\n ngOnDestroy(): void {\n this.destroyTooltip({\n fast: true\n });\n\n if (this.componentSubscribe) {\n this.componentSubscribe.unsubscribe();\n }\n }\n\n getShowDelay() {\n return this.options['showDelay'];\n }\n\n getHideDelay() {\n const hideDelay = this.options['hideDelay'];\n const hideDelayTouchscreen = this.options['hideDelayTouchscreen'];\n\n return this.isTouchScreen ? hideDelayTouchscreen : hideDelay;\n }\n\n getProperties(changes: SimpleChanges) {\n let directiveProperties: any = {};\n let customProperties: any = {};\n let allProperties: any;\n\n for (var prop in changes) {\n if (prop !== 'options' && prop !== 'tooltipValue') {\n directiveProperties[prop] = changes[prop].currentValue;\n }\n if (prop === 'options') {\n customProperties = changes[prop].currentValue;\n }\n }\n\n allProperties = Object.assign({}, customProperties, directiveProperties);\n return allProperties;\n }\n\n renameProperties(options: any) {\n for (var prop in options) {\n if (backwardCompatibilityOptions[prop]) {\n options[backwardCompatibilityOptions[prop]] = options[prop];\n delete options[prop];\n }\n }\n\n return options;\n }\n\n getElementPosition(): void {\n this.elementPosition = this.elementRef.nativeElement.getBoundingClientRect();\n }\n\n createTooltip(): void {\n this.clearTimeouts();\n this.getElementPosition();\n\n this.createTimeoutId = window.setTimeout(() => {\n this.appendComponentToBody(GravityTooltipComponent);\n }, this.getShowDelay());\n\n this.showTimeoutId = window.setTimeout(() => {\n this.showTooltipElem();\n }, this.getShowDelay());\n }\n\n destroyTooltip(options = {\n fast: false\n }): void {\n if (this.persistent) {\n return;\n }\n\n this.clearTimeouts();\n\n if (this.isTooltipDestroyed == false) {\n this.hideTimeoutId = window.setTimeout(() => {\n this.hideTooltip();\n }, options.fast ? 0 : this.getHideDelay());\n\n this.destroyTimeoutId = window.setTimeout(() => {\n if (!this.componentRef || this.isTooltipDestroyed) {\n return;\n }\n\n this.appRef.detachView(this.componentRef.hostView);\n this.componentRef.destroy();\n this.events.emit({\n type: 'hidden',\n position: this.tooltipPosition\n });\n }, options.fast ? 0 : this.destroyDelay);\n }\n }\n\n showTooltipElem(): void {\n this.clearTimeouts();\n (<AdComponent>this.componentRef.instance).show = true;\n this.events.emit({\n type: 'show',\n position: this.tooltipPosition\n });\n }\n\n hideTooltip(): void {\n if (!this.componentRef || this.isTooltipDestroyed) {\n return;\n }\n (<AdComponent>this.componentRef.instance).show = false;\n this.events.emit({\n type: 'hide',\n position: this.tooltipPosition\n });\n }\n\n appendComponentToBody(component: any): void {\n this.componentRef = this.componentFactoryResolver\n .resolveComponentFactory(component)\n .create(this.injector);\n\n (<AdComponent>this.componentRef.instance).data = {\n value: this.tooltipValue,\n element: this.elementRef.nativeElement,\n elementPosition: this.tooltipPosition,\n options: this.options\n }\n this.appRef.attachView(this.componentRef.hostView);\n const domElem = (this.componentRef.hostView as EmbeddedViewRef<any>).rootNodes[0] as HTMLElement;\n document.body.appendChild(domElem);\n\n this.componentSubscribe = (<AdComponent>this.componentRef.instance).events.subscribe((event: any) => {\n this.handleEvents(event);\n });\n }\n\n clearTimeouts(): void {\n if (this.createTimeoutId) {\n clearTimeout(this.createTimeoutId);\n }\n\n if (this.showTimeoutId) {\n clearTimeout(this.showTimeoutId);\n }\n\n if (this.hideTimeoutId) {\n clearTimeout(this.hideTimeoutId);\n }\n\n if (this.destroyTimeoutId) {\n clearTimeout(this.destroyTimeoutId);\n }\n }\n\n get isDisplayOnHover(): boolean {\n if (this.options['display'] == false) {\n return false;\n }\n\n if (this.options['displayTouchscreen'] == false && this.isTouchScreen) {\n return false;\n }\n\n return this.options['trigger'] === 'hover';\n }\n\n get isDisplayOnClick(): boolean {\n if (this.options['display'] == false) {\n return false;\n }\n\n if (this.options['displayTouchscreen'] == false && this.isTouchScreen) {\n return false;\n }\n\n return this.options['trigger'] == 'click';\n\n\n }\n\n get isTouchScreen() {\n var prefixes = ' -webkit- -moz- -o- -ms- '.split(' ');\n var mq = function (query: any) {\n return window.matchMedia(query).matches;\n }\n\n if (('ontouchstart' in window)) {\n return true;\n }\n\n // include the 'heartz' as a way to have a non matching MQ to help terminate the join\n // https://git.io/vznFH\n var query = ['(', prefixes.join('touch-enabled),('), 'heartz', ')'].join('');\n return mq(query);\n }\n\n applyOptionsDefault(defaultOptions: any, options: any): void {\n this.options = Object.assign({}, defaultOptions, this.initOptions || {}, this.options, options);\n }\n\n handleEvents(event: any) {\n if (event.type === 'shown') {\n this.events.emit({\n type: 'shown',\n position: this.tooltipPosition\n });\n }\n }\n\n public show() {\n if (!this.tooltipValue) {\n return;\n }\n\n if (!this.componentRef || this.isTooltipDestroyed) {\n this.createTooltip();\n } else if (!this.isTooltipDestroyed) {\n this.showTooltipElem();\n }\n }\n\n public hide() {\n this.destroyTooltip();\n }\n\n public closeFromOutside(): void {\n if (!this.componentRef || this.isTooltipDestroyed) {\n return;\n }\n\n (this.componentRef.instance as any).closeTooltip();\n this.destroyTooltip({ fast: true });\n }\n}\n","import {ModuleWithProviders, NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {GravityTooltipDirective} from './gravity-tooltip.directive';\nimport {GravityTooltipComponent} from './gravity-tooltip.component';\nimport {TooltipOptions} from './options.interface';\nimport {TooltipOptionsService} from './options.service';\n\n@NgModule({\n declarations: [\n GravityTooltipDirective,\n GravityTooltipComponent\n ],\n imports: [\n CommonModule\n ],\n exports: [\n GravityTooltipDirective,\n GravityTooltipComponent\n ]\n})\nexport class GravityTooltipModule {\n static forRoot(initOptions: TooltipOptions): ModuleWithProviders<GravityTooltipModule> {\n return {\n ngModule: GravityTooltipModule,\n providers: [\n {\n provide: TooltipOptionsService,\n useValue: initOptions\n }\n ]\n };\n }\n}\n","import { Injectable } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class HeaderTypeService {\n\n private isMobileSubject: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(false);\n private calendarTypeSubject: BehaviorSubject<string> = new BehaviorSubject<string>('days');\n private headerTypeSubject: BehaviorSubject<'self' | 'integrate'> = new BehaviorSubject<'self'>('self');\n\n getCalendarType$() {return this.calendarTypeSubject.asObservable();}\n setCalendarType(value: string) {this.calendarTypeSubject.next(value);}\n getCalendarType(): string {return this.calendarTypeSubject.value;}\n getHeaderType$() {return this.headerTypeSubject.asObservable();}\n setHeaderType(value: 'self' | 'integrate') {this.headerTypeSubject.next(value);}\n getHeaderType(): 'self' | 'integrate' {return this.headerTypeSubject.value;}\n getIsMobile$() {return this.isMobileSubject.asObservable();}\n setIsMobile(value: boolean) {this.isMobileSubject.next(value);}\n getIsMobile(): boolean {return this.isMobileSubject.value;}\n}\n","import {Injectable} from '@angular/core';\nimport {BsDatepickerViewMode, DatepickerRenderOptions,} from './models';\nimport {BsCustomDates} from \"./utils/bs-calendar-utils\";\n\n/**\n * For date range picker there are `BsDaterangepickerConfig` which inherits all properties,\n * except `displayMonths`, for range picker it default to `2`\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class BsDatepickerConfig implements DatepickerRenderOptions {\n /** Sets use adaptive position */\n adaptivePosition: boolean = true;\n\n calendarLang: string = 'en';\n calendarSize: 'md' | 'sm' = 'md';\n clearable: boolean = true;\n displayMonths: number = 1;\n\n /** turn on/off animation */\n isAnimated: boolean = false;\n isDisabled?: boolean;\n isMobile: boolean = false;\n\n /**\n * Set rule for datepicker closing.\n * If value is true datepicker closes only if date is changed, if user changes only time datepicker doesn't close.\n * It is available only if property withTimepicker is set true\n */\n keepDatepickerOpened: boolean = false;\n\n /** Default max date for all date/range pickers */\n maxDate?: Date;\n\n /** Default min date for all date/range pickers */\n minDate?: Date;\n\n /** Default mode for all date pickers */\n minMode?: BsDatepickerViewMode;\n\n /** Prevents change to next month for right calendar in two calendars view (dateRangePicker only) */\n preventChangeToNextMonth: boolean = true;\n\n /** Makes dates from other months active */\n selectFromOtherMonth: boolean = true;\n\n /** The view that the datepicker should start in */\n startView: BsDatepickerViewMode = 'day';\n\n value?: Date | Date[];\n\n // DatepickerFormatOptions\n dayLabel: string = 'D';\n monthLabel: string = 'MMMM';\n monthTitle: string = 'MMMM';\n yearLabel: string = 'YYYY';\n yearTitle: string = 'YYYY';\n\n /**\n * Predefined ranges\n */\n ranges?: BsCustomDates[];\n\n /**\n * Max Date Range in days\n */\n maxDateRange?: number;\n}\n","import {\n animate,\n style,\n AnimationTriggerMetadata,\n state,\n transition,\n trigger\n} from '@angular/animations';\n\nexport const DATEPICKER_ANIMATION_TIMING = '220ms cubic-bezier(0, 0, 0.2, 1)';\n\nexport const datepickerAnimation: AnimationTriggerMetadata =\n trigger('datepickerAnimation', [\n state('animated-down', style({ height: '*', overflow: 'hidden'})),\n transition('* => animated-down', [\n style({ height: 0, overflow: 'hidden' }),\n animate(DATEPICKER_ANIMATION_TIMING)\n ]),\n state('animated-up', style({ height: '*', overflow: 'hidden'})),\n transition('* => animated-up', [\n style({ height: '*', overflow: 'hidden' }),\n animate(DATEPICKER_ANIMATION_TIMING)\n ]),\n transition('* => unanimated', animate('0s'))\n ]);\n","import {BsCustomDates} from \"../utils/bs-calendar-utils\";\nimport {BsDatepickerEffects} from '../reducer/bs-datepicker.effects';\nimport {Observable, Subscription} from 'rxjs';\nimport {\n BsDatepickerViewMode,\n BsNavigationEvent,\n CalendarCellViewModel,\n CellHoverEvent,\n DatepickerRenderOptions,\n DaysCalendarViewModel,\n DayViewModel,\n MonthsCalendarViewModel,\n YearsCalendarViewModel\n} from '../models';\nimport {BsDatepickerConfig} from \"../bs-datepicker.config\";\n\nexport abstract class BsDatepickerAbstractComponent {\n readonly _subs: Subscription[] = [];\n\n _daysCalendarSub: Subscription = new Subscription();\n _daysCalendar$!: Observable<DaysCalendarViewModel[] | undefined>;\n _effects?: BsDatepickerEffects;\n\n animationState: string = 'void';\n chosenRange: Date[] = [];\n isOtherMonthsActive?: boolean;\n isRangePicker?: boolean;\n\n monthsCalendar?: Observable<MonthsCalendarViewModel[] | undefined>;\n options$!: Observable<DatepickerRenderOptions | undefined>;\n viewMode?: Observable<BsDatepickerViewMode | undefined>;\n yearsCalendar?: Observable<YearsCalendarViewModel[] | undefined>;\n\n get calendarSize(): 'sm' | 'md' {\n if (!this._config.isMobile && (!this.isRangePicker || this._config.displayMonths == 1)) {\n return this._config.calendarSize;\n } else {\n return 'sm';\n }\n }\n\n get calendarSpacing(): any {\n if (!this._config.isMobile && (!this.isRangePicker || this._config.displayMonths == 1)) {\n return 'spacing-' + this._config.calendarSize;\n } else if (this.isRangePicker || this._config.displayMonths != 1) {\n return 'spacing-' + this._config.calendarSize;\n } else {\n return 'spacing-sm';\n }\n }\n\n get daysCalendar$(): Observable<DaysCalendarViewModel[] | undefined> {\n return this._daysCalendar$;\n }\n\n get isDisabled(): boolean {\n return !!this._config.isDisabled;\n }\n\n get isEmpty(): boolean {\n return !this._config.value;\n }\n\n get showNavigationArrows(): boolean {\n return !this.isRangePicker || (this.isRangePicker && this._config.displayMonths == 1);\n }\n\n set daysCalendar$(value: Observable<DaysCalendarViewModel[] | undefined>) {\n this._daysCalendar$ = value;\n this._daysCalendarSub.unsubscribe();\n }\n\n set isDisabled(value: boolean | undefined) {\n this._effects?.setDisabled(value);\n }\n\n set maxDate(value: Date | undefined) {\n this._effects?.setMaxDate(value);\n }\n\n set minDate(value: Date | undefined) {\n this._effects?.setMinDate(value);\n }\n\n protected constructor(public _config: BsDatepickerConfig) {\n }\n\n setViewMode(event: BsDatepickerViewMode): void {\n }\n\n navigateTo(event: BsNavigationEvent): void {\n }\n\n dayHoverHandler(event: CellHoverEvent): void {\n }\n\n monthHoverHandler(event: CellHoverEvent): void {\n }\n\n yearHoverHandler(event: CellHoverEvent): void {\n }\n\n daySelectHandler(day: DayViewModel): void {\n }\n\n monthSelectHandler(event: CalendarCellViewModel): void {\n }\n\n yearSelectHandler(event: CalendarCellViewModel): void {\n }\n\n setRangeOnCalendar(dates: BsCustomDates): void {\n }\n\n clearDate(): void {\n }\n\n apply(): void {\n }\n}\n","import {Injectable} from '@angular/core';\nimport {TimeUnit} from 'ngx-bootstrap/chronos';\nimport {Action} from 'ngx-bootstrap/mini-ngrx';\nimport {BsDatepickerViewMode, BsViewNavigationEvent, CellHoverEvent, DatepickerRenderOptions} from '../models';\n\n@Injectable({providedIn: 'platform'})\nexport class BsDatepickerActions {\n static readonly CALCULATE: string = '[datepicker] calculate dates matrix';\n static readonly CHANGE_VIEWMODE: string = '[datepicker] switch view mode';\n static readonly FLAG: string = '[datepicker] set flags';\n static readonly FORMAT: string = '[datepicker] format datepicker values';\n static readonly HOVER: string = '[datepicker] hover date';\n static readonly NAVIGATE_OFFSET: string = '[datepicker] shift view date';\n static readonly NAVIGATE_TO: string = '[datepicker] change view date';\n static readonly SELECT: string = '[datepicker] select date';\n static readonly SELECT_RANGE: string = '[daterangepicker] select dates range';\n static readonly SET_IS_DISABLED: string = '[datepicker] set is disabled';\n static readonly SET_MAX_DATE: string = '[datepicker] set max date';\n static readonly SET_MIN_DATE: string = '[datepicker] set min date';\n static readonly SET_OPTIONS: string = '[datepicker] update render options';\n\n calculate(): Action {\n return {type: BsDatepickerActions.CALCULATE};\n }\n\n format(): Action {\n return {type: BsDatepickerActions.FORMAT};\n }\n\n flag(): Action {\n return {type: BsDatepickerActions.FLAG};\n }\n\n select(date?: Date): Action {\n return {type: BsDatepickerActions.SELECT, payload: date};\n }\n\n changeViewMode(event: BsDatepickerViewMode): Action {\n return {type: BsDatepickerActions.CHANGE_VIEWMODE, payload: event};\n }\n\n navigateTo(event: BsViewNavigationEvent): Action {\n return {type: BsDatepickerActions.NAVIGATE_TO, payload: event};\n }\n\n navigateStep(step?: TimeUnit): Action {\n return {type: BsDatepickerActions.NAVIGATE_OFFSET, payload: step};\n }\n\n setOptions(options: DatepickerRenderOptions): Action {\n return {type: BsDatepickerActions.SET_OPTIONS, payload: options};\n }\n\n // date range picker\n selectRange(value?: (Date | undefined)[] | undefined): Action {\n return {type: BsDatepickerActions.SELECT_RANGE, payload: value};\n }\n\n hoverDay(event: CellHoverEvent): Action {\n return {type: BsDatepickerActions.HOVER, payload: event.isHovered ? event.cell.date : null};\n }\n\n minDate(date?: Date): Action {\n return {type: BsDatepickerActions.SET_MIN_DATE, payload: date};\n }\n\n maxDate(date?: Date): Action {\n return {type: BsDatepickerActions.SET_MAX_DATE, payload: date};\n }\n\n isDisabled(value?: boolean): Action {\n return {type: BsDatepickerActions.SET_IS_DISABLED, payload: value};\n }\n}\n","import {Injectable} from '@angular/core';\n\nimport {combineLatest, Observable, Subscription} from 'rxjs';\nimport {filter, map} from 'rxjs/operators';\n\nimport {BsDatepickerAbstractComponent} from '../base/bs-datepicker-container';\nimport {BsDatepickerConfig} from '../bs-datepicker.config';\n\nimport {\n BsDatepickerViewMode,\n BsNavigationEvent,\n CellHoverEvent,\n DatepickerRenderOptions,\n DaysCalendarViewModel,\n DayViewModel,\n MonthsCalendarViewModel,\n YearsCalendarViewModel\n} from '../models';\nimport {BsDatepickerActions} from './bs-datepicker.actions';\nimport {BsDatepickerStore} from './bs-datepicker.store';\n\n\n@Injectable({providedIn: 'platform'})\nexport class BsDatepickerEffects {\n viewMode?: Observable<BsDatepickerViewMode>;\n daysCalendar?: Observable<DaysCalendarViewModel[]>;\n monthsCalendar?: Observable<MonthsCalendarViewModel[]>;\n yearsCalendar?: Observable<YearsCalendarViewModel[]>;\n options?: Observable<DatepickerRenderOptions>;\n\n private _store?: BsDatepickerStore;\n private _subs: Subscription[] = [];\n\n constructor(private _actions: BsDatepickerActions) {\n }\n\n init(_bsDatepickerStore: BsDatepickerStore): BsDatepickerEffects {\n this._store = _bsDatepickerStore;\n return this;\n }\n\n /** setters */\n\n setValue(value?: Date): void {\n this._store?.dispatch(this._actions.select(value));\n }\n\n setRangeValue(value?: (Date | undefined)[] | undefined): void {\n this._store?.dispatch(this._actions.selectRange(value));\n }\n\n setMinDate(value?: Date): BsDatepickerEffects {\n this._store?.dispatch(this._actions.minDate(value));\n return this;\n }\n\n setMaxDate(value?: Date): BsDatepickerEffects {\n this._store?.dispatch(this._actions.maxDate(value));\n return this;\n }\n\n setDisabled(value?: boolean): BsDatepickerEffects {\n this._store?.dispatch(this._actions.isDisabled(value));\n return this;\n }\n\n /* Set rendering options */\n setOptions(_config: BsDatepickerConfig): BsDatepickerEffects {\n const _options = Object.assign({locale: 'en'}, _config);\n this._store?.dispatch(this._actions.setOptions(_options));\n return this;\n }\n\n /** view to mode bindings */\n setBindings(container: BsDatepickerAbstractComponent): BsDatepickerEffects {\n if (!this._store) return this;\n\n container.daysCalendar$ = this._store.select(state => state.flaggedMonths).pipe(filter(months => !!months));\n container.monthsCalendar = this._store.select(state => state.flaggedMonthsCalendar).pipe(filter(months => !!months));\n container.yearsCalendar = this._store.select(state => state.yearsCalendarFlagged).pipe(filter(years => !!years));\n container.viewMode = this._store.select(state => state.view?.mode);\n container.options$ = combineLatest([this._store.select(state => state.displayMonths)]).pipe(map((latest) => ({displayMonths: latest[0]})));\n\n return this;\n }\n\n /** event handlers */\n setEventHandlers(container: BsDatepickerAbstractComponent): BsDatepickerEffects {\n container.setViewMode = (event: BsDatepickerViewMode): void => {\n this._store?.dispatch(this._actions.changeViewMode(event));\n };\n\n container.navigateTo = (event: BsNavigationEvent): void => {\n this._store?.dispatch(this._actions.navigateStep(event.step));\n };\n\n container.dayHoverHandler = (event: CellHoverEvent): void => {\n const _cell = event.cell as DayViewModel;\n\n if (_cell.isOtherMonth || _cell.isDisabled) return;\n\n this._store?.dispatch(this._actions.hoverDay(event));\n _cell.isHovered = event.isHovered;\n };\n\n container.monthHoverHandler = (event: CellHoverEvent): void => {\n event.cell.isHovered = event.isHovered;\n };\n\n container.yearHoverHandler = (event: CellHoverEvent): void => {\n event.cell.isHovered = event.isHovered;\n };\n\n return this;\n }\n\n registerDatepickerSideEffects(): BsDatepickerEffects {\n if (!this._store) return this;\n\n this._subs.push(\n this._store.select(state => state.view).subscribe(() => {\n this._store?.dispatch(this._actions.calculate());\n })\n );\n\n // format calendar values on month model change\n this._subs.push(\n this._store\n .select(state => state.monthsModel)\n .pipe(filter(monthModel => !!monthModel))\n .subscribe(() => this._store?.dispatch(this._actions.format()))\n );\n\n // flag day values\n this._subs.push(\n this._store\n .select(state => state.formattedMonths)\n .pipe(filter(month => !!month))\n .subscribe(() => this._store?.dispatch(this._actions.flag()))\n );\n\n // flag day values\n this._subs.push(\n this._store\n .select(state => state.selectedDate)\n .pipe(filter(selectedDate => !!selectedDate))\n .subscribe(() => this._store?.dispatch(this._actions.flag()))\n );\n\n // flag for date range picker\n this._subs.push(\n this._store\n .select(state => state.selectedRange)\n .pipe(filter(selectedRange => !!selectedRange))\n .subscribe(() => this._store?.dispatch(this._actions.flag()))\n );\n\n // monthsCalendar\n this._subs.push(\n this._store\n .select(state => state.monthsCalendar)\n .subscribe(() => this._store?.dispatch(this._actions.flag()))\n );\n\n // years calendar\n this._subs.push(\n this._store\n .select(state => state.yearsCalendarModel)\n .pipe(filter(state => !!state))\n .subscribe(() => this._store?.dispatch(this._actions.flag()))\n );\n\n // on hover\n this._subs.push(\n this._store\n .select(state => state.hoveredDate)\n .pipe(filter(hoveredDate => !!hoveredDate))\n .subscribe(() => this._store?.dispatch(this._actions.flag()))\n );\n\n return this;\n }\n\n destroy(): void {\n for (const sub of this._subs) {\n sub.unsubscribe();\n }\n }\n}\n","import {\n MonthViewOptions\n} from '../models';\n\nexport const defaultMonthOptions: MonthViewOptions = {\n width: 7,\n height: 6\n};\n\nexport const dayInMilliseconds: number = 24 * 60 * 60 * 1000;\n","import {\n BsDatepickerViewMode,\n DatepickerFormatOptions,\n DatepickerRenderOptions,\n DaysCalendarModel,\n DaysCalendarViewModel,\n MonthsCalendarViewModel,\n MonthViewOptions,\n YearsCalendarViewModel\n} from '../models';\nimport {defaultMonthOptions} from './_defaults';\nimport {BsDatepickerConfig} from '../bs-datepicker.config';\n\nexport interface BsDatepickerViewState {\n date: Date;\n mode: BsDatepickerViewMode;\n}\n\nexport class BsDatepickerState implements DatepickerRenderOptions, DatepickerFormatOptions {\n // date picker\n selectedDate?: Date;\n // daterange picker\n selectedRange?: Date[];\n\n // initial date of calendar, today by default\n view?: BsDatepickerViewState;\n\n isDisabled?: boolean;\n // bounds\n minDate?: Date;\n maxDate?: Date;\n minMode?: BsDatepickerViewMode;\n\n hoveredDate?: Date;\n hoveredMonth?: Date;\n hoveredYear?: Date;\n\n // days calendar\n monthsModel?: DaysCalendarModel[];\n formattedMonths?: DaysCalendarViewModel[];\n flaggedMonths?: DaysCalendarViewModel[];\n preventChangeToNextMonth?: boolean; // dateRangePicker only;\n\n // months calendar\n monthsCalendar?: MonthsCalendarViewModel[];\n flaggedMonthsCalendar?: MonthsCalendarViewModel[];\n\n // years calendar\n yearsCalendarModel?: YearsCalendarViewModel[];\n yearsCalendarFlagged?: YearsCalendarViewModel[];\n\n // options\n monthViewOptions?: MonthViewOptions;\n\n // DatepickerRenderOptions\n displayMonths: number = 1;\n\n // DatepickerFormatOptions\n locale?: string;\n\n monthTitle?: string;\n yearTitle?: string;\n\n dayLabel?: string;\n monthLabel?: string;\n yearLabel?: string;\n}\n\nconst _initialView: BsDatepickerViewState = {date: new Date(), mode: 'day'};\n\nexport const initialDatepickerState: BsDatepickerState = Object.assign(\n new BsDatepickerConfig(),\n {\n locale: 'en',\n view: _initialView,\n selectedRange: [],\n monthViewOptions: defaultMonthOptions\n }\n);\n","import {endOf, getDay, isAfter, isBefore, isFirstDayOfWeek, shiftDate, startOf} from 'ngx-bootstrap/chronos';\nimport {BsDatepickerState} from '../reducer/bs-datepicker.state';\n\nexport function getStartingDayOfCalendar(date: Date, options: { firstDayOfWeek?: number }): Date {\n if (isFirstDayOfWeek(date, options.firstDayOfWeek)) return date;\n\n const weekDay: number = getDay(date);\n const offset: number = calculateDateOffset(weekDay, options.firstDayOfWeek);\n\n return shiftDate(date, {day: -offset});\n}\n\nexport function calculateDateOffset(weekday: number, startingDayOffset?: number): number {\n const _startingDayOffset: number = Number(startingDayOffset);\n\n if (isNaN(_startingDayOffset)) return 0;\n if (_startingDayOffset === 0) return weekday;\n\n const offset: number = weekday - _startingDayOffset % 7;\n return offset < 0 ? offset + 7 : offset;\n}\n\nexport function isMonthDisabled(date: Date, min?: Date, max?: Date): boolean {\n const minBound: boolean = min && isBefore(endOf(date, 'month'), min, 'day');\n const maxBound: boolean = max && isAfter(startOf(date, 'month'), max, 'day');\n\n return minBound || maxBound;\n}\n\nexport function isYearDisabled(date: Date, min?: Date, max?: Date): boolean {\n const minBound: boolean = min && isBefore(endOf(date, 'year'), min, 'day');\n const maxBound: boolean = max && isAfter(startOf(date, 'year'), max, 'day');\n\n return minBound || maxBound;\n}\n\nexport function getYearsCalendarInitialDate(state: BsDatepickerState, calendarIndex = 0): Date | undefined {\n const model = state && state.yearsCalendarModel && state.yearsCalendarModel[calendarIndex];\n\n return model?.years[0] && model.years[0][0] && model.years[0][0].date;\n}\n\nexport function checkRangesWithMaxDate(ranges?: BsCustomDates[], maxDate?: Date): BsCustomDates[] | undefined {\n if (!ranges) return ranges;\n if (!maxDate) return ranges;\n if (!ranges.length && !ranges[0].value) return ranges;\n\n ranges.forEach((item: BsCustomDates) => {\n if (!item || !item.value) return ranges;\n if (item.value instanceof Date) return ranges;\n if (!(item.value instanceof Array && item.value.length)) return ranges;\n\n item.value = compareDateWithMaxDateHelper(item.value, maxDate);\n return ranges;\n });\n\n return ranges;\n}\n\nexport function checkBsValue(date?: Array<Date> | Date | (Date | undefined)[], maxDate?: Date): Array<Date> | Date | (Date | undefined)[] | undefined {\n if (!date) return date;\n if (!maxDate) return date;\n if (date instanceof Array && !date.length) return date;\n if (date instanceof Date) return date;\n\n return compareDateWithMaxDateHelper(date, maxDate);\n}\n\nfunction compareDateWithMaxDateHelper<T>(date: T, maxDate: Date): T | Date[] {\n if (date instanceof Array) {\n return date.map(item => {\n if (!item) return item;\n if (isAfter(item, maxDate, 'date')) item = maxDate;\n\n return item;\n });\n }\n\n return date;\n}\n\nexport interface BsCustomDates {\n value: Date | Date[];\n}\n","import {shiftDate, TimeUnit} from 'ngx-bootstrap/chronos';\n\nexport type CreateMatrixCb<T> = (date: Date) => T;\n\nexport interface MatrixOptions {\n height: number;\n width: number;\n initialDate: Date;\n shift: TimeUnit;\n}\n\nexport function createMatrix<T>(options: MatrixOptions, fn: CreateMatrixCb<T>): T[][] {\n let prevValue: Date = options.initialDate;\n const matrix: T[][] = new Array(options.height);\n\n for (let i: number = 0; i < options.height; i++) {\n matrix[i] = new Array(options.width);\n\n for (let j: number = 0; j < options.width; j++) {\n matrix[i][j] = fn(prevValue);\n prevValue = shiftDate(prevValue, options.shift);\n }\n }\n\n return matrix;\n}\n","import {getFirstDayOfMonth} from 'ngx-bootstrap/chronos';\nimport {DaysCalendarModel, MonthViewOptions} from '../models';\nimport {getStartingDayOfCalendar} from '../utils/bs-calendar-utils';\nimport {createMatrix, MatrixOptions} from '../utils/matrix-utils';\n\nexport function calcDaysCalendar(startingDate: Date, options: MonthViewOptions): DaysCalendarModel {\n const firstDay: Date = getFirstDayOfMonth(startingDate);\n const initialDate: Date = getStartingDayOfCalendar(firstDay, options);\n\n const matrixOptions: MatrixOptions = {\n width: options.width || 0,\n height: options.height || 0,\n initialDate,\n shift: {day: 1}\n };\n\n const daysMatrix: Date[][] = createMatrix<Date>(matrixOptions, (date: Date) => date);\n\n return {daysMatrix, month: firstDay};\n}\n","import {DatepickerFormatOptions, DaysCalendarModel, DaysCalendarViewModel} from '../models';\nimport {formatDate} from 'ngx-bootstrap/chronos';\n\nexport function formatDaysCalendar(daysCalendar: DaysCalendarModel, formatOptions: DatepickerFormatOptions, monthIndex: number): DaysCalendarViewModel {\n return {\n month: daysCalendar.month,\n monthTitle: formatDate(daysCalendar.month, formatOptions.monthTitle, formatOptions.locale),\n yearTitle: formatDate(daysCalendar.month, formatOptions.yearTitle, formatOptions.locale),\n weekdays: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'],\n weeks: daysCalendar.daysMatrix.map((week: Date[], weekIndex: number) => ({\n days: week.map((date: Date, dayIndex: number) => ({\n date,\n label: formatDate(date, formatOptions.dayLabel, formatOptions.locale),\n monthIndex,\n weekIndex,\n dayIndex\n }))\n })),\n hideLeftArrow: false,\n hideRightArrow: false,\n disableLeftArrow: false,\n disableRightArrow: false\n };\n}\n","import {DaysCalendarViewModel, DayViewModel, WeekViewModel} from '../models';\n\nimport {isAfter, isBefore, isSameDay, isSameMonth, shiftDate} from 'ngx-bootstrap/chronos';\n\nimport {isMonthDisabled} from '../utils/bs-calendar-utils';\n\nexport interface FlagDaysCalendarOptions {\n isDisabled: boolean;\n minDate: Date;\n maxDate: Date;\n hoveredDate: Date;\n selectedDate: Date;\n selectedRange: Date[];\n displayMonths: number;\n monthIndex: number;\n}\n\nexport function flagDaysCalendar(formattedMonth: DaysCalendarViewModel, options: Partial<FlagDaysCalendarOptions>): DaysCalendarViewModel {\n formattedMonth.weeks.forEach((week: WeekViewModel) => {\n week.days.forEach((day: DayViewModel, dayIndex: number) => {\n // datepicker\n const isOtherMonth: boolean = !isSameMonth(day.date, formattedMonth.month);\n const isHovered: boolean = !isOtherMonth && isSameDay(day.date, options.hoveredDate);\n\n // date range picker\n const isSelectionStart: boolean = !isOtherMonth && options.selectedRange && isSameDay(day.date, options.selectedRange[0]);\n const isSelectionEnd: boolean = !isOtherMonth && options.selectedRange && isSameDay(day.date, options.selectedRange[1]);\n const isSelected: boolean = (!isOtherMonth && isSameDay(day.date, options.selectedDate)) || isSelectionStart || isSelectionEnd;\n const isInRange: boolean = !isOtherMonth && !!options.selectedRange && isDateInRange(day.date, options.selectedRange, options.hoveredDate);\n const isDisabled: boolean = options.isDisabled || isBefore(day.date, options.minDate, 'day') || isAfter(day.date, options.maxDate, 'day');\n const isToday: boolean = !isOtherMonth && isSameDay(day.date, new Date());\n\n // decide update or not\n const newDay = Object.assign({}, day, {\n isOtherMonth,\n isHovered,\n isSelected,\n isSelectionStart,\n isSelectionEnd,\n isInRange,\n isDisabled,\n isToday\n });\n\n if (\n day.isOtherMonth !== newDay.isOtherMonth ||\n day.isHovered !== newDay.isHovered ||\n day.isSelected !== newDay.isSelected ||\n day.isSelectionStart !== newDay.isSelectionStart ||\n day.isSelectionEnd !== newDay.isSelectionEnd ||\n day.isDisabled !== newDay.isDisabled ||\n day.isInRange !== newDay.isInRange\n ) {\n week.days[dayIndex] = newDay;\n }\n });\n });\n\n formattedMonth.hideLeftArrow = options.isDisabled || (!!options.monthIndex && options.monthIndex > 0 && options.monthIndex !== options.displayMonths);\n formattedMonth.hideRightArrow = options.isDisabled || ((!!options.monthIndex || options.monthIndex === 0) && !!options.displayMonths && options.monthIndex < options.displayMonths && options.monthIndex + 1 !== options.displayMonths);\n\n formattedMonth.disableLeftArrow = isMonthDisabled(shiftDate(formattedMonth.month, {month: -1}), options.minDate, options.maxDate);\n formattedMonth.disableRightArrow = isMonthDisabled(shiftDate(formattedMonth.month, {month: 1}), options.minDate, options.maxDate);\n\n return formattedMonth;\n}\n\nfunction isDateInRange(date: Date, selectedRange?: Date[], hoveredDate?: Date): boolean {\n if (!date || !selectedRange || !selectedRange[0]) return false;\n if (selectedRange[1]) return date > selectedRange[0] && date <= selectedRange[1];\n if (hoveredDate) return date > selectedRange[0] && date <= hoveredDate;\n\n return false;\n}\n","import { BsDatepickerViewMode } from '../models';\n\nexport function canSwitchMode(mode: BsDatepickerViewMode, minMode?: BsDatepickerViewMode): boolean {\n return minMode ? mode >= minMode : true;\n}\n","import {CalendarCellViewModel, DatepickerFormatOptions, MonthsCalendarViewModel} from '../models';\nimport {formatDate, startOf} from 'ngx-bootstrap/chronos';\nimport {createMatrix} from '../utils/matrix-utils';\nimport {TimeUnit} from \"ngx-bootstrap/chronos/types\";\n\nconst height: number = 4;\nconst width: number = 3;\nconst shift: TimeUnit = {month: 1};\n\nexport function formatMonthsCalendar(viewDate: Date, formatOptions: DatepickerFormatOptions): MonthsCalendarViewModel {\n const initialDate: Date = startOf(viewDate, 'year');\n const matrixOptions = {width, height, initialDate, shift};\n const monthMatrix: CalendarCellViewModel[][] = createMatrix<CalendarCellViewModel>(matrixOptions, (date: Date) => ({\n date,\n label: formatDate(date, formatOptions.monthLabel, formatOptions.locale)\n }));\n\n return {\n months: monthMatrix,\n monthTitle: '',\n yearTitle: formatDate(viewDate, formatOptions.yearTitle, formatOptions.locale),\n hideRightArrow: false,\n hideLeftArrow: false,\n disableRightArrow: false,\n disableLeftArrow: false\n };\n}\n","import {isSameMonth, shiftDate} from 'ngx-bootstrap/chronos';\nimport {CalendarCellViewModel, MonthsCalendarViewModel} from '../models';\nimport {isMonthDisabled, isYearDisabled} from '../utils/bs-calendar-utils';\n\nexport interface FlagMonthCalendarOptions {\n isDisabled: boolean;\n minDate: Date;\n maxDate: Date;\n hoveredMonth: Date;\n selectedDate: Date;\n selectedRange: Date[];\n displayMonths: number;\n monthIndex: number;\n}\n\nexport function flagMonthsCalendar(monthCalendar: MonthsCalendarViewModel, options: Partial<FlagMonthCalendarOptions>): MonthsCalendarViewModel {\n monthCalendar.months.forEach((months: CalendarCellViewModel[], rowIndex: number) => {\n months.forEach((month: CalendarCellViewModel, monthIndex: number) => {\n const isHovered: boolean = isSameMonth(month.date, options.hoveredMonth);\n const isToday: boolean = isSameMonth(month.date, new Date());\n const isDisabled: boolean = options.isDisabled || isMonthDisabled(month.date, options.minDate, options.maxDate);\n\n let isSelected: boolean;\n if (!options.selectedDate && options.selectedRange) {\n isSelected = isSameMonth(month.date, options.selectedRange[0]);\n\n if (!isSelected) {\n isSelected = isSameMonth(month.date, options.selectedRange[1]);\n }\n } else {\n isSelected = isSameMonth(month.date, options.selectedDate);\n }\n const newMonth = Object.assign(month, {\n isHovered,\n isToday,\n isDisabled,\n isSelected\n });\n\n if (\n month.isHovered !== newMonth.isHovered ||\n month.isToday !== newMonth.isToday ||\n month.isDisabled !== newMonth.isDisabled ||\n month.isSelected !== newMonth.isSelected\n ) {\n monthCalendar.months[rowIndex][monthIndex] = newMonth;\n }\n });\n });\n\n monthCalendar.hideLeftArrow = !!options.monthIndex && options.monthIndex > 0 && options.monthIndex !== options.displayMonths;\n monthCalendar.hideRightArrow = (!!options.monthIndex || options.monthIndex === 0) && (!!options.displayMonths || options.displayMonths === 0) && options.monthIndex < options.displayMonths && options.monthIndex + 1 !== options.displayMonths;\n\n monthCalendar.disableLeftArrow = isYearDisabled(shiftDate(monthCalendar.months[0][0].date, {year: -1}), options.minDate, options.maxDate);\n monthCalendar.disableRightArrow = isYearDisabled(shiftDate(monthCalendar.months[0][0].date, {year: 1}), options.minDate, options.maxDate);\n\n return monthCalendar;\n}\n","import {CalendarCellViewModel, DatepickerFormatOptions, YearsCalendarViewModel} from '../models';\nimport {formatDate, shiftDate} from 'ngx-bootstrap/chronos';\nimport {createMatrix} from '../utils/matrix-utils';\nimport {TimeUnit} from \"ngx-bootstrap/chronos/types\";\n\nconst height: number = 3;\nconst width: number = 4;\nexport const yearsPerCalendar: number = height * width;\nexport const initialYearShift: number = (yearsPerCalendar - 1) * -1; // -1 to display current year; * -1 to show previous years\nconst shift: TimeUnit = {year: 1};\n\nexport function formatYearsCalendar(viewDate: Date, formatOptions: DatepickerFormatOptions, previousInitialDate?: Date, currentSelectedYear?: Date): YearsCalendarViewModel {\n const initialDate: Date = calculateInitialDate(viewDate, previousInitialDate);\n const matrixOptions = {width, height, initialDate, shift};\n const yearsMatrix: CalendarCellViewModel[][] = createMatrix<CalendarCellViewModel>(matrixOptions, date => ({\n date,\n label: formatDate(date, formatOptions.yearLabel, formatOptions.locale)\n }));\n\n let yearTitle: string;\n if (currentSelectedYear) {\n yearTitle = formatDate(currentSelectedYear, formatOptions.yearLabel, formatOptions.locale);\n } else {\n yearTitle = formatYearRangeTitle(yearsMatrix, formatOptions)\n }\n\n return {\n years: yearsMatrix,\n monthTitle: '',\n yearTitle,\n hideLeftArrow: false,\n hideRightArrow: false,\n disableLeftArrow: false,\n disableRightArrow: false\n };\n}\n\nfunction calculateInitialDate(viewDate: Date, previousInitialDate?: Date): Date {\n if (previousInitialDate && viewDate.getFullYear() >= previousInitialDate.getFullYear() && viewDate.getFullYear() < previousInitialDate.getFullYear() + yearsPerCalendar) {\n return previousInitialDate;\n }\n\n return shiftDate(viewDate, {year: initialYearShift});\n}\n\nfunction formatYearRangeTitle(yearsMatrix: CalendarCellViewModel[][], formatOptions: DatepickerFormatOptions): string {\n const from: string = formatDate(yearsMatrix[0][0].date, formatOptions.yearTitle, formatOptions.locale);\n const to: string = formatDate(yearsMatrix[height - 1][width - 1].date, formatOptions.yearTitle, formatOptions.locale);\n\n return `${from} - ${to}`;\n}\n","import {isSameYear, shiftDate} from 'ngx-bootstrap/chronos';\nimport {CalendarCellViewModel, YearsCalendarViewModel} from '../models';\nimport {isYearDisabled} from '../utils/bs-calendar-utils';\n\nexport interface FlagYearsCalendarOptions {\n isDisabled: boolean;\n minDate: Date;\n maxDate: Date;\n hoveredYear: Date;\n selectedDate: Date;\n selectedRange: Date[];\n displayMonths: number;\n yearIndex: number;\n isToday: boolean;\n}\n\nexport function flagYearsCalendar(yearsCalendar: YearsCalendarViewModel, options: Partial<FlagYearsCalendarOptions>): YearsCalendarViewModel {\n yearsCalendar.years.forEach((years: CalendarCellViewModel[], rowIndex: number) => {\n years.forEach((year: CalendarCellViewModel, yearIndex: number) => {\n const isHovered: boolean = isSameYear(year.date, options.hoveredYear);\n const isToday: boolean = isSameYear(year.date, new Date());\n const isDisabled: boolean = options.isDisabled || isYearDisabled(year.date, options.minDate, options.maxDate);\n\n let isSelected: boolean;\n if (!options.selectedDate && options.selectedRange) {\n isSelected = isSameYear(year.date, options.selectedRange[0]);\n\n if (!isSelected) {\n isSelected = isSameYear(year.date, options.selectedRange[1]);\n }\n } else {\n isSelected = isSameYear(year.date, options.selectedDate);\n }\n\n const newMonth = Object.assign(year, {isHovered, isDisabled, isSelected, isToday});\n\n if (\n year.isHovered !== newMonth.isHovered ||\n year.isDisabled !== newMonth.isDisabled ||\n year.isToday !== newMonth.isToday ||\n year.isSelected !== newMonth.isSelected\n ) {\n yearsCalendar.years[rowIndex][yearIndex] = newMonth;\n }\n });\n });\n\n yearsCalendar.hideLeftArrow = !!options.yearIndex && options.yearIndex > 0 && options.yearIndex !== options.displayMonths;\n yearsCalendar.hideRightArrow = !!options.yearIndex && !!options.displayMonths && options.yearIndex < options.displayMonths && options.yearIndex + 1 !== options.displayMonths;\n\n const i: number = yearsCalendar.years.length - 1;\n const j: number = yearsCalendar.years[i].length - 1;\n yearsCalendar.disableLeftArrow = isYearDisabled(shiftDate(yearsCalendar.years[0][0].date, {year: -1}), options.minDate, options.maxDate);\n yearsCalendar.disableRightArrow = isYearDisabled(shiftDate(yearsCalendar.years[i][j].date, {year: 1}), options.minDate, options.maxDate);\n\n return yearsCalendar;\n}\n","import {BsDatepickerState, BsDatepickerViewState, initialDatepickerState} from './bs-datepicker.state';\nimport {Action} from 'ngx-bootstrap/mini-ngrx';\nimport {BsDatepickerActions} from './bs-datepicker.actions';\nimport {calcDaysCalendar} from '../engine/calc-days-calendar';\nimport {formatDaysCalendar} from '../engine/format-days-calendar';\nimport {flagDaysCalendar} from '../engine/flag-days-calendar';\nimport {\n getLocale,\n isAfter,\n isArray,\n isBefore,\n isDateValid,\n isSame,\n setFullDate,\n shiftDate,\n startOf\n} from 'ngx-bootstrap/chronos';\nimport {canSwitchMode} from '../engine/view-mode';\nimport {formatMonthsCalendar} from '../engine/format-months-calendar';\nimport {flagMonthsCalendar} from '../engine/flag-months-calendar';\nimport {formatYearsCalendar, initialYearShift, yearsPerCalendar} from '../engine/format-years-calendar';\nimport {flagYearsCalendar} from '../engine/flag-years-calendar';\nimport {\n BsDatepickerViewMode,\n BsViewNavigationEvent,\n DatepickerFormatOptions,\n DaysCalendarModel,\n DaysCalendarViewModel,\n MonthsCalendarViewModel,\n YearsCalendarViewModel\n} from '../models';\nimport {getYearsCalendarInitialDate} from '../utils/bs-calendar-utils';\n\n\nexport function bsDatepickerReducer(state: BsDatepickerState = initialDatepickerState, action: Action): BsDatepickerState {\n switch (action.type) {\n case BsDatepickerActions.CALCULATE: {\n return calculateReducer(state);\n }\n\n case BsDatepickerActions.FORMAT: {\n return formatReducer(state);\n }\n\n case BsDatepickerActions.FLAG: {\n return flagReducer(state);\n }\n\n case BsDatepickerActions.NAVIGATE_OFFSET: {\n return navigateOffsetReducer(state, action);\n }\n\n case BsDatepickerActions.NAVIGATE_TO: {\n const payload: BsViewNavigationEvent = action.payload;\n\n if (!state.view || !payload.unit) return state;\n\n const date: Date = setFullDate(state.view.date, payload.unit);\n\n let newState;\n let mode: BsDatepickerViewMode;\n\n if (canSwitchMode(payload.viewMode, state.minMode)) {\n mode = payload.viewMode;\n newState = {view: {date, mode}};\n } else {\n mode = state.view.mode;\n newState = {selectedDate: date, view: {date, mode}};\n }\n\n return Object.assign({}, state, newState);\n }\n\n case BsDatepickerActions.CHANGE_VIEWMODE: {\n if (!canSwitchMode(action.payload, state.minMode) || !state.view) return state;\n\n const date: Date = state.view.date;\n const mode = action.payload;\n const newState = {view: {date, mode}};\n\n return Object.assign({}, state, newState);\n }\n\n case BsDatepickerActions.HOVER: {\n return Object.assign({}, state, {hoveredDate: action.payload});\n }\n\n case BsDatepickerActions.SELECT: {\n if (!state.view) return state;\n\n const newState = {\n selectedDate: action.payload,\n view: state.view\n };\n\n const mode = state.view.mode;\n const _date = action.payload || state.view.date;\n const date: Date = getViewDate(_date, state.minDate, state.maxDate);\n newState.view = {mode, date};\n\n return Object.assign({}, state, newState);\n }\n\n case BsDatepickerActions.SET_OPTIONS: {\n if (!state.view) return state;\n\n const newState = action.payload;\n // preserve view mode\n const mode = newState.minMode ? newState.minMode : state.view.mode;\n const _viewDate = isDateValid(newState.value) && newState.value || isArray(newState.value) && isDateValid(newState.value[0]) && newState.value[0] || state.view.date;\n const date: Date = getViewDate(_viewDate, newState.minDate, newState.maxDate);\n newState.view = {mode, date};\n\n // update selected value\n if (newState.value) {\n // if new value is array we work with date range\n if (isArray(newState.value)) {\n newState.selectedRange = newState.value;\n }\n\n // if new value is a date -> datepicker\n if (newState.value instanceof Date) {\n newState.selectedDate = newState.value;\n }\n }\n\n return Object.assign({}, state, newState);\n }\n\n // date range picker\n case BsDatepickerActions.SELECT_RANGE: {\n if (!state.view) return state;\n\n const newState = {\n selectedRange: action.payload,\n view: state.view\n };\n\n const mode = state.view.mode;\n const _date = action.payload && action.payload[0] || state.view.date;\n const date: Date = getViewDate(_date, state.minDate, state.maxDate);\n newState.view = {mode, date};\n\n return Object.assign({}, state, newState);\n }\n\n case BsDatepickerActions.SET_MIN_DATE: {\n return Object.assign({}, state, {\n minDate: action.payload\n });\n }\n\n case BsDatepickerActions.SET_MAX_DATE: {\n return Object.assign({}, state, {\n maxDate: action.payload\n });\n }\n\n case BsDatepickerActions.SET_IS_DISABLED: {\n return Object.assign({}, state, {\n isDisabled: action.payload\n });\n }\n\n default:\n return state;\n }\n}\n\nfunction calculateReducer(state: BsDatepickerState): BsDatepickerState {\n if (!state.view) return state;\n\n // how many calendars\n let displayMonths: number = state.displayMonths;\n\n // use selected date on initial rendering if set\n let viewDate: Date = state.view.date;\n\n if (state.view.mode === 'day' && state.monthViewOptions) {\n state.monthViewOptions.firstDayOfWeek = getLocale(state.locale).firstDayOfWeek();\n\n let monthsModel = new Array(displayMonths);\n for (let monthIndex: number = 0; monthIndex < displayMonths; monthIndex++) {\n monthsModel[monthIndex] = calcDaysCalendar(viewDate, state.monthViewOptions);\n viewDate = shiftDate(viewDate, {month: 1});\n }\n\n // Check if parameter enabled and check if it's not months navigation event\n if (state.preventChangeToNextMonth && state.flaggedMonths && state.hoveredDate) {\n const viewMonth: DaysCalendarModel = calcDaysCalendar(state.view.date, state.monthViewOptions);\n\n // Check if viewed right month same as in flaggedMonths state, then override months model with flaggedMonths\n if (state.flaggedMonths.length >= 2) {\n if (state.flaggedMonths[1].month.getMonth() === viewMonth.month.getMonth()) {\n monthsModel = state.flaggedMonths.map((item: DaysCalendarViewModel) => {\n return state.monthViewOptions ? calcDaysCalendar(item.month, state.monthViewOptions) : null;\n }).filter(item => item !== null);\n }\n } else {\n monthsModel = state.flaggedMonths.map((item: DaysCalendarViewModel) => {\n return state.monthViewOptions ? calcDaysCalendar(item.month, state.monthViewOptions) : null;\n }).filter(item => item !== null);\n }\n }\n\n return Object.assign({}, state, {monthsModel});\n }\n\n if (state.view.mode === 'month') {\n const monthsCalendar = new Array(displayMonths);\n\n for (let calendarIndex: number = 0; calendarIndex < displayMonths; calendarIndex++) {\n monthsCalendar[calendarIndex] = formatMonthsCalendar(viewDate, getFormatOptions(state));\n viewDate = shiftDate(viewDate, {year: 1});\n }\n\n return Object.assign({}, state, {monthsCalendar});\n }\n\n if (state.view.mode === 'year') {\n const yearsCalendarModel = new Array(displayMonths);\n\n for (let calendarIndex: number = 0; calendarIndex < displayMonths; calendarIndex++) {\n yearsCalendarModel[calendarIndex] = formatYearsCalendar(viewDate, getFormatOptions(state), state.minMode === 'year' ? getYearsCalendarInitialDate(state, calendarIndex) : undefined, state.selectedDate ? state.selectedDate : new Date());\n viewDate = shiftDate(viewDate, {year: yearsPerCalendar});\n }\n\n return Object.assign({}, state, {yearsCalendarModel});\n }\n\n return state;\n}\n\nfunction formatReducer(state: BsDatepickerState): BsDatepickerState {\n if (!state.view) return state;\n\n if (state.view.mode === 'day' && state.monthsModel) {\n const formattedMonths: DaysCalendarViewModel[] = state.monthsModel.map((month: DaysCalendarModel, monthIndex: number) => formatDaysCalendar(month, getFormatOptions(state), monthIndex));\n\n return Object.assign({}, state, {formattedMonths});\n }\n\n // how many calendars\n const displayMonths: number = state.displayMonths || 1;\n\n // check initial rendering\n // use selected date on initial rendering if set\n let viewDate: Date = state.view.date;\n\n if (state.view.mode === 'month') {\n const monthsCalendar = new Array(displayMonths);\n for (let calendarIndex: number = 0; calendarIndex < displayMonths; calendarIndex++) {\n monthsCalendar[calendarIndex] = formatMonthsCalendar(viewDate, getFormatOptions(state));\n viewDate = shiftDate(viewDate, {year: 1});\n }\n\n return Object.assign({}, state, {monthsCalendar});\n }\n\n if (state.view.mode === 'year') {\n const yearsCalendarModel = new Array(displayMonths);\n\n for (let calendarIndex: number = 0; calendarIndex < displayMonths; calendarIndex++) {\n yearsCalendarModel[calendarIndex] = formatYearsCalendar(viewDate, getFormatOptions(state), undefined, state.selectedDate ? state.selectedDate : new Date());\n viewDate = shiftDate(viewDate, {year: 16});\n }\n\n return Object.assign({}, state, {yearsCalendarModel});\n }\n\n return state;\n}\n\nfunction flagReducer(state: BsDatepickerState): BsDatepickerState {\n if (!state.view) return state;\n\n const displayMonths: number = isDisplayOneMonth(state.view.date, state.minDate, state.maxDate) ? 1 : state.displayMonths;\n if (state.formattedMonths && state.view.mode === 'day') {\n const flaggedMonths: DaysCalendarViewModel[] = state.formattedMonths.map((formattedMonth: DaysCalendarViewModel, monthIndex: number) =>\n flagDaysCalendar(formattedMonth, {\n isDisabled: state.isDisabled,\n minDate: state.minDate,\n maxDate: state.maxDate,\n hoveredDate: state.hoveredDate,\n selectedDate: state.selectedDate,\n selectedRange: state.selectedRange,\n displayMonths,\n monthIndex\n }));\n\n return Object.assign({}, state, {flaggedMonths});\n }\n\n if (state.view.mode === 'month' && state.monthsCalendar) {\n const flaggedMonthsCalendar: MonthsCalendarViewModel[] = state.monthsCalendar.map((formattedMonth: MonthsCalendarViewModel, monthIndex: number) =>\n flagMonthsCalendar(formattedMonth, {\n isDisabled: state.isDisabled,\n minDate: state.minDate,\n maxDate: state.maxDate,\n hoveredMonth: state.hoveredMonth,\n selectedDate: state.selectedDate,\n selectedRange: state.selectedRange,\n displayMonths,\n monthIndex\n }));\n\n return Object.assign({}, state, {flaggedMonthsCalendar});\n }\n\n if (state.view.mode === 'year' && state.yearsCalendarModel) {\n const yearsCalendarFlagged: YearsCalendarViewModel[] = state.yearsCalendarModel.map((formattedMonth: YearsCalendarViewModel, yearIndex: number) =>\n flagYearsCalendar(formattedMonth, {\n isDisabled: state.isDisabled,\n minDate: state.minDate,\n maxDate: state.maxDate,\n hoveredYear: state.hoveredYear,\n selectedDate: state.selectedDate,\n selectedRange: state.selectedRange,\n displayMonths,\n yearIndex\n })\n );\n\n return Object.assign({}, state, {yearsCalendarFlagged});\n }\n\n return state;\n}\n\nfunction navigateOffsetReducer(state: BsDatepickerState, action: Action): BsDatepickerState {\n if (!state.view) return state;\n\n const date: Date | undefined = shiftViewDate(state, action);\n if (!date) return state;\n\n const newState: { view: BsDatepickerViewState } = {\n view: {mode: state.view.mode, date}\n };\n\n return Object.assign({}, state, newState);\n}\n\nfunction shiftViewDate(state: BsDatepickerState, action: Action): Date | undefined {\n if (!state.view) return undefined;\n\n if (state.view.mode === 'year' && state.minMode === 'year') {\n const initialDate: Date | undefined = getYearsCalendarInitialDate(state, 0);\n\n if (initialDate) {\n const middleDate = shiftDate(initialDate, {year: -initialYearShift});\n return shiftDate(middleDate, action.payload);\n }\n }\n\n return shiftDate(startOf(state.view.date, 'month'), action.payload);\n}\n\nfunction getFormatOptions(state: BsDatepickerState): DatepickerFormatOptions {\n return {\n locale: state.locale,\n\n monthTitle: state.monthTitle,\n yearTitle: state.yearTitle,\n\n dayLabel: state.dayLabel,\n monthLabel: state.monthLabel,\n yearLabel: state.yearLabel\n };\n}\n\n/**\n * if view date is provided (bsValue|ngModel) it should be shown\n * if view date is not provider:\n * if minDate>currentDate (default view value), show minDate\n * if maxDate<currentDate(default view value) show maxDate\n */\nfunction getViewDate(viewDate: Date | Date[], minDate?: Date, maxDate?: Date): Date {\n const _date: Date = Array.isArray(viewDate) ? viewDate[0] : viewDate;\n\n if (minDate && isAfter(minDate, _date, 'day')) return minDate;\n if (maxDate && isBefore(maxDate, _date, 'day')) return maxDate;\n\n return _date;\n}\n\nfunction isDisplayOneMonth(viewDate: Date, minDate?: Date, maxDate?: Date): boolean | undefined {\n if (maxDate && isSame(maxDate, viewDate, 'day')) return true;\n\n return minDate && maxDate && minDate.getMonth() === maxDate.getMonth();\n}\n","import {Injectable} from '@angular/core';\nimport {Action, MiniState, MiniStore} from 'ngx-bootstrap/mini-ngrx';\nimport {BsDatepickerState, initialDatepickerState} from './bs-datepicker.state';\nimport {BehaviorSubject} from 'rxjs';\nimport {bsDatepickerReducer} from './bs-datepicker.reducer';\n\n@Injectable({providedIn: 'platform'})\nexport class BsDatepickerStore extends MiniStore<BsDatepickerState> {\n\n constructor() {\n const _dispatcher = new BehaviorSubject<Action>({type: '[datepicker] dispatcher init'});\n const state = new MiniState<BsDatepickerState>(initialDatepickerState, _dispatcher, bsDatepickerReducer);\n super(_dispatcher, bsDatepickerReducer, state);\n }\n}\n","import {Injectable} from \"@angular/core\";\n\n@Injectable({\n providedIn: 'root'\n})\nexport class BsDatepickerCallbacks {\n hide?: () => void;\n}\n","import { TimeUnit } from 'ngx-bootstrap/chronos';\n\nexport type BsDatepickerViewMode = 'day' | 'month' | 'year';\n\n/** *************** */\n// navigation bar settings\nexport interface NavigationViewModel {\n monthTitle: string;\n yearTitle: string;\n hideLeftArrow: boolean;\n hideRightArrow: boolean;\n disableLeftArrow: boolean;\n disableRightArrow: boolean;\n}\n\nexport interface CalendarCellViewModel {\n date: Date;\n label: string;\n isDisabled?: boolean;\n isHovered?: boolean;\n isSelected?: boolean;\n isToday?: boolean;\n}\n\n/** *************** */\n// days matrix: day cell view model\nexport interface DayViewModel extends CalendarCellViewModel {\n isOtherMonth?: boolean;\n isInRange?: boolean;\n isSelectionStart?: boolean;\n isSelectionEnd?: boolean;\n isToday?: boolean;\n\n // day index\n monthIndex?: number;\n weekIndex?: number;\n dayIndex?: number;\n}\n\nexport interface WeekViewModel {\n days: DayViewModel[];\n isHovered?: boolean;\n}\n\nexport interface DaysCalendarViewModel extends NavigationViewModel {\n weeks: WeekViewModel[];\n month: Date;\n weekdays: string[];\n}\n\n/** *************** */\n// months calendar\nexport interface MonthsCalendarViewModel extends NavigationViewModel {\n months: CalendarCellViewModel[][];\n}\n\n// years calendar\nexport interface YearsCalendarViewModel extends NavigationViewModel {\n years: CalendarCellViewModel[][];\n}\n\n/** *************** */\n\n// days Date's array\nexport interface DaysCalendarModel {\n daysMatrix: Date[][];\n month: Date;\n}\n\n/** *************** */\n// some func options\nexport interface MonthViewOptions {\n width?: number;\n height?: number;\n firstDayOfWeek?: number;\n}\n\n/** *************** */\n// rendering options\nexport interface DatepickerFormatOptions {\n locale?: string;\n\n monthTitle?: string;\n yearTitle?: string;\n\n dayLabel?: string;\n monthLabel?: string;\n yearLabel?: string;\n}\n\nexport interface DatepickerRenderOptions {\n displayMonths: number;\n}\n/** *************** */\nexport enum BsNavigationDirection {\n UP,\n DOWN\n}\n\n// used for navigation events, to change view date in state\nexport interface BsNavigationEvent {\n direction?: BsNavigationDirection;\n step?: TimeUnit;\n}\n\nexport interface BsViewNavigationEvent {\n unit?: TimeUnit;\n viewMode: BsDatepickerViewMode;\n}\n\nexport interface CellHoverEvent {\n cell: CalendarCellViewModel;\n isHovered: boolean;\n}\n","import {ChangeDetectionStrategy, Component, Input} from '@angular/core';\nimport {DayViewModel} from '../../models';\n\n@Component({\n selector: '[bsDatepickerDayDecorator]',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class.disabled]': 'day.isDisabled',\n '[class.is-highlighted]': 'day.isHovered',\n '[class.is-other-month]': 'day.isOtherMonth',\n '[class.in-range]': 'day.isInRange',\n '[class.select-start]': 'day.isSelectionStart',\n '[class.select-end]': 'day.isSelectionEnd',\n '[class.selected]': 'day.isSelected',\n '[class.today]': 'day.isToday',\n },\n template: `{{ day && day.label || '' }}`\n})\nexport class BsDatepickerDayDecoratorComponent {\n @Input() day: DayViewModel = {date: new Date(), label: ''};\n}\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, OnInit, Output, ChangeDetectorRef } from '@angular/core';\nimport { BsDatepickerViewMode, BsNavigationDirection, NavigationViewModel } from '../../models';\nimport { HeaderTypeService } from \"../../services/header-type.service\";\nimport { Subscription } from \"rxjs\";\n\n@Component({\n selector: 'bs-datepicker-navigation-view',\n templateUrl: './bs-datepicker-navigation-view.component.html',\n styleUrls: ['./bs-datepicker-navigation-view.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class BsDatepickerNavigationViewComponent implements OnInit {\n @Input() calendarIndex!: number;\n @Input() isDisabled: boolean = false;\n @Input() calendar!: NavigationViewModel;\n @Input() type!: 'days' | 'months' | 'years';\n @Input() showNavigationArrows: boolean = false;\n\n @Output() onNavigate = new EventEmitter<BsNavigationDirection>();\n @Output() onViewMode = new EventEmitter<BsDatepickerViewMode>();\n\n public isMobile: boolean = false;\n private isMobileSubscription!: Subscription;\n private headerTypeSubscription!: Subscription;\n public headerType: 'self' | 'integrate' = 'self';\n\n constructor(public headerTypeService: HeaderTypeService, private cdr: ChangeDetectorRef) {}\n\n ngOnInit(): void {\n this.headerTypeSubscription = this.headerTypeService.getHeaderType$()\n .subscribe(type => {\n this.headerType = type;\n });\n\n this.isMobileSubscription = this.headerTypeService.getIsMobile$()\n .subscribe(is => {\n this.isMobile = is;\n this.cdr.detectChanges();\n });\n }\n\n ngOnDestroy(): void {\n if (this.headerTypeSubscription) {\n this.headerTypeSubscription.unsubscribe();\n }\n if (this.isMobileSubscription) {\n this.isMobileSubscription.unsubscribe();\n }\n }\n\n navTo(down: boolean, disabled: boolean): void {\n if (disabled) return;\n\n this.onNavigate.emit(down ? BsNavigationDirection.DOWN : BsNavigationDirection.UP);\n }\n\n view(viewMode: BsDatepickerViewMode): void {\n if (this.isDisabled) return;\n this.onViewMode.emit(viewMode);\n this.headerTypeService.setCalendarType(viewMode);\n }\n}\n","<ng-container *ngIf=\"calendar\">\n <ng-container *ngIf=\"type == 'days'\">\n <div class=\"previous gravity-icon-button\" *ngIf=\"!isMobile\"\n (click)=\"navTo(true, calendar.disableLeftArrow || (!showNavigationArrows && calendarIndex == 1))\"\n [class.disabled]=\"calendar.disableLeftArrow || (!showNavigationArrows && calendarIndex == 1)\">\n <gravity-icon [iconName]=\"'arrow-left'\" [iconSize]=\"'sm-12'\"\n *ngIf=\"showNavigationArrows || (!showNavigationArrows && calendarIndex == 0)\"></gravity-icon>\n </div>\n\n <div class=\"current hr-title month sm-bold\" [class.disabled]=\"isDisabled\" (click)=\"view('month')\"\n *ngIf=\"calendar?.monthTitle\">\n {{ calendar.monthTitle }}\n <gravity-icon [iconName]=\"'arrow-down'\" [iconSize]=\"'sm-12'\"></gravity-icon>\n </div>\n\n <div class=\"current hr-title sm-bold year\" [class.disabled]=\"isDisabled\" (click)=\"view('year')\"\n *ngIf=\"calendar?.monthTitle\">\n {{ calendar.yearTitle }}\n <gravity-icon [iconName]=\"'arrow-down'\" [iconSize]=\"'sm-12'\"></gravity-icon>\n </div>\n\n <div class=\"next gravity-icon-button\" *ngIf=\"!isMobile\"\n (click)=\"navTo(false, calendar.disableRightArrow || (!showNavigationArrows && calendarIndex == 0))\"\n [class.disabled]=\"calendar.disableRightArrow || (!showNavigationArrows && calendarIndex == 0)\">\n <gravity-icon [iconName]=\"'arrow-right'\" [iconSize]=\"'sm-12'\"\n *ngIf=\"showNavigationArrows || (!showNavigationArrows && calendarIndex == 1)\"></gravity-icon>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"type == 'months' && (headerType == 'self' || isMobile)\">\n <div class=\"previous gravity-icon-button\" [class.disabled]=\"calendar.disableLeftArrow\"\n (click)=\"navTo(true, calendar.disableLeftArrow)\">\n <gravity-icon [iconName]=\"'arrow-left'\" [iconSize]=\"'sm-12'\"></gravity-icon>\n </div>\n\n <div class=\"current no-action hr-title sm-bold year\" [class.disabled]=\"isDisabled\"\n *ngIf=\"calendar?.yearTitle\"> {{ calendar.yearTitle }}\n </div>\n\n <div class=\"next gravity-icon-button\" [class.disabled]=\"calendar.disableRightArrow\"\n (click)=\"navTo(false, calendar.disableRightArrow)\">\n <gravity-icon [iconName]=\"'arrow-right'\" [iconSize]=\"'sm-12'\"></gravity-icon>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"type == 'months' && headerType == 'integrate' && isMobile === false\">\n <div class=\"current hr-title sm-bold year\" [class.disabled]=\"isDisabled\" (click)=\"view('year')\"\n *ngIf=\"calendar?.yearTitle\">\n {{ calendar.yearTitle }}\n <gravity-icon [iconName]=\"'arrow-down'\" [iconSize]=\"'sm-12'\"></gravity-icon>\n </div>\n\n <div class=\"arrows\">\n <div class=\"previous gravity-icon-button\" [class.disabled]=\"calendar.disableLeftArrow\"\n (click)=\"navTo(true, calendar.disableLeftArrow)\">\n <gravity-icon [iconName]=\"'arrow-left'\" [iconSize]=\"'sm-12'\"></gravity-icon>\n </div>\n\n <div class=\"next gravity-icon-button\" [class.disabled]=\"calendar.disableRightArrow\"\n (click)=\"navTo(false, calendar.disableRightArrow)\">\n <gravity-icon [iconName]=\"'arrow-right'\" [iconSize]=\"'sm-12'\"></gravity-icon>\n </div>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"type == 'years' && (headerType == 'self' || isMobile)\">\n <div class=\"previous gravity-icon-button\" [class.disabled]=\"calendar.disableLeftArrow\"\n (click)=\"navTo(true, calendar.disableLeftArrow)\">\n <gravity-icon [iconName]=\"'arrow-left'\" [iconSize]=\"'sm-12'\"></gravity-icon>\n </div>\n\n <div class=\"current no-action hr-title sm-bold year\" [class.disabled]=\"isDisabled\"\n *ngIf=\"calendar?.yearTitle\"> {{ calendar.yearTitle }}\n </div>\n\n <div class=\"next gravity-icon-button\" [class.disabled]=\"calendar.disableRightArrow\"\n (click)=\"navTo(false, calendar.disableRightArrow)\">\n <gravity-icon [iconName]=\"'arrow-right'\" [iconSize]=\"'sm-12'\"></gravity-icon>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"type == 'years' && headerType == 'integrate' && isMobile === false\">\n <div class=\"current no-action hr-title sm-bold year\" [class.disabled]=\"isDisabled\"\n *ngIf=\"calendar?.yearTitle\">\n {{ calendar.yearTitle }}\n\n </div>\n\n <div class=\"arrows\">\n <div class=\"previous gravity-icon-button\" [class.disabled]=\"calendar.disableLeftArrow\"\n (click)=\"navTo(true, calendar.disableLeftArrow)\">\n <gravity-icon [iconName]=\"'arrow-left'\" [iconSize]=\"'sm-12'\"></gravity-icon>\n </div>\n\n <div class=\"next gravity-icon-button\" [class.disabled]=\"calendar.disableRightArrow\"\n (click)=\"navTo(false, calendar.disableRightArrow)\">\n <gravity-icon [iconName]=\"'arrow-right'\" [iconSize]=\"'sm-12'\"></gravity-icon>\n </div>\n </div>\n </ng-container>\n</ng-container>\n\n","import {Component, EventEmitter, Input, Output} from '@angular/core';\n\nimport {\n BsDatepickerViewMode,\n BsNavigationDirection,\n BsNavigationEvent,\n CellHoverEvent,\n DatepickerRenderOptions,\n DaysCalendarViewModel,\n DayViewModel\n} from '../../models';\nimport {HeaderTypeService} from \"../../services/header-type.service\";\n\n@Component({\n selector: 'bs-days-calendar-view',\n templateUrl: './bs-days-calendar-view.component.html',\n styleUrls: ['./bs-days-calendar-view.component.scss']\n})\nexport class BsDaysCalendarViewComponent {\n @Input() calendar!: DaysCalendarViewModel;\n @Input() calendarIndex!: number;\n @Input() isDisabled?: boolean;\n @Input() options?: DatepickerRenderOptions | null;\n @Input() showNavigationArrows!: boolean;\n @Input() size!: 'sm' | 'md' | '';\n\n @Output() onNavigate = new EventEmitter<BsNavigationEvent>();\n @Output() onViewMode = new EventEmitter<BsDatepickerViewMode>();\n\n @Output() onSelect = new EventEmitter<DayViewModel>();\n @Output() onHover = new EventEmitter<CellHoverEvent>();\n\n isiOS: boolean;\n\n\n constructor(public headerTypeService: HeaderTypeService) {\n this.isiOS = (/iPad|iPhone|iPod/.test(navigator.platform) || (navigator.platform === 'MacIntel' && navigator.maxTouchPoints > 1));\n }\n\n navigateTo(event: BsNavigationDirection): void {\n this.onNavigate.emit({step: {month: BsNavigationDirection.DOWN === event ? -1 : 1}});\n }\n\n changeViewMode(event: BsDatepickerViewMode): void {\n this.headerTypeService.setHeaderType('integrate');\n this.onViewMode.emit(event);\n }\n\n selectDay(event: DayViewModel): void {\n this.onSelect.emit(event);\n }\n\n hoverDay(cell: DayViewModel, isHovered: boolean): void {\n this.onHover.emit({cell, isHovered});\n }\n}\n","<!--navigation-->\n<div class=\"gt-calendar-view-head\" [class.mobile]=\"headerTypeService.getIsMobile()\">\n <bs-datepicker-navigation-view [calendar]=\"calendar\" [calendarIndex]=\"calendarIndex\"\n [showNavigationArrows]=\"showNavigationArrows\" [isDisabled]=\"!!isDisabled\"\n (onNavigate)=\"navigateTo($event)\" (onViewMode)=\"changeViewMode($event)\" [type]=\"'days'\">\n </bs-datepicker-navigation-view>\n</div>\n\n<div class=\"gt-calendar-view-body\">\n <div class=\"calendar-body\">\n <div class=\"weekdays\">\n <article aria-label=\"weekday\" class=\"hr-body {{size}}-regular\" *ngFor=\"let weekday of calendar.weekdays\">\n {{ weekday }}\n </article>\n </div>\n <hr>\n <div class=\"week\" *ngFor=\"let week of calendar.weeks\">\n <ng-container *ngFor=\"let day of week.days\">\n <article bsDatepickerDayDecorator class=\"hr-body {{size}}-regular\" (click)=\"selectDay(day)\" [day]=\"day\"\n *ngIf=\"!isiOS\" (mouseenter)=\"hoverDay(day, true)\"\n (mouseleave)=\"hoverDay(day, false)\"></article>\n\n <article bsDatepickerDayDecorator class=\"hr-body {{size}}-regular\" (click)=\"selectDay(day)\" [day]=\"day\"\n *ngIf=\"isiOS\"></article>\n </ng-container>\n </div>\n </div>\n</div>\n\n<div class=\"\"></div>\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'dateFormating'\n})\nexport class DateAbbreviationPipe implements PipeTransform {\n\n // Define month abbreviations for different languages\n monthAbbreviations: { [key: string]: { [key: string]: string } } = {\n 'en': {\n 'January': 'Jan', 'February': 'Feb', 'March': 'Mar', 'April': 'Apr', 'May': 'May', 'June': 'Jun',\n 'July': 'Jul', 'August': 'Aug', 'September': 'Sep', 'October': 'Oct', 'November': 'Nov', 'December': 'Dec'\n },\n 'es': {\n 'January': 'Ene', 'February': 'Feb', 'March': 'Mar', 'April': 'Abr', 'May': 'May', 'June': 'Jun',\n 'July': 'Jul', 'August': 'Ago', 'September': 'Sep', 'October': 'Oct', 'November': 'Nov', 'December': 'Dic'\n }\n };\n\n transform(date: string, lang: string = 'en', monthAbbreviation: boolean = true): string {\n\n if (!date) return '';\n\n // Check if it's a range of dates\n if (date.includes(' - ')) {\n const [startDate, endDate] = date.split(' - ');\n return `${this.formatDate(startDate, lang, monthAbbreviation)} - ${this.formatDate(endDate, lang, monthAbbreviation)}`;\n }\n\n // If it's a single date\n return this.formatDate(date, lang, monthAbbreviation);\n }\n\n private formatDate(date: string, lang: string, monthAbbreviation: boolean): string {\n let parsedDate: Date;\n\n // Only year\n if (date.length === 4 && !isNaN(Number(date))) {\n return `${date}`;\n }\n\n // Only month\n if (this.monthAbbreviations[lang] && this.monthAbbreviations[lang][date]) {\n return monthAbbreviation ? this.monthAbbreviations[lang][date] : date;\n }\n\n // Convert the date string into a Date object\n parsedDate = new Date(date);\n\n // If the date is not valid\n if (isNaN(parsedDate.getTime())) {\n const parts = date.split('/');\n if (parts.length === 2) {\n const month = parseInt(parts[0], 10) - 1;\n const year = parseInt(parts[1], 10);\n parsedDate = new Date(year, month, 1);\n }\n }\n\n // If the date is still invalid, return an empty string\n if (isNaN(parsedDate.getTime())) {\n return '';\n }\n\n // Get the full month name from the Date object\n const monthName = parsedDate.toLocaleString('en', { month: 'long' });\n const abbreviatedMonth = monthAbbreviation ? this.monthAbbreviations[lang]?.[monthName] : monthName;\n const day = parsedDate.getDate();\n const year = parsedDate.getFullYear();\n\n // Month and year\n if (date.indexOf('/') !== -1 && date.split('/').length === 2) {\n return monthAbbreviation ? `${abbreviatedMonth}, ${year}` : `${abbreviatedMonth} ${year}`;\n }\n\n // Day, month, and year\n return `${abbreviatedMonth} ${day}, ${year}`;\n }\n}\n","import {Component, EventEmitter, Input, Output} from '@angular/core';\nimport {BsDatepickerViewMode, BsNavigationDirection, BsNavigationEvent, CalendarCellViewModel, CellHoverEvent, MonthsCalendarViewModel} from '../../models';\nimport {HeaderTypeService} from \"../../services/header-type.service\";\n\n@Component({\n selector: 'bs-month-calendar-view',\n templateUrl: './bs-months-calendar-view.component.html',\n styleUrls: ['./bs-months-calendar-view.component.scss']\n})\nexport class BsMonthCalendarViewComponent {\n @Input() calendarIndex!: number;\n @Input() size!: 'sm' | 'md' | '';\n @Input() calendarLang: string = 'en'\n @Input() showNavigationArrows!: boolean;\n @Input() calendar!: MonthsCalendarViewModel;\n\n @Output() onHover = new EventEmitter<CellHoverEvent>();\n @Output() onNavigate = new EventEmitter<BsNavigationEvent>();\n @Output() onSelect = new EventEmitter<CalendarCellViewModel>();\n @Output() onViewMode = new EventEmitter<BsDatepickerViewMode>();\n\n constructor(private headerTypeService: HeaderTypeService) {}\n\n navigateTo(event: BsNavigationDirection): void {\n const step = BsNavigationDirection.DOWN === event ? -1 : 1;\n this.onNavigate.emit({step: {year: step}});\n }\n\n viewMonth(month: CalendarCellViewModel) {\n this.onSelect.emit(month);\n this.headerTypeService.setCalendarType('days');\n }\n\n hoverMonth(cell: CalendarCellViewModel, isHovered: boolean) {\n this.onHover.emit({cell, isHovered});\n }\n\n changeViewMode(event: BsDatepickerViewMode): void {\n this.headerTypeService.setHeaderType('integrate');\n this.onViewMode.emit(event as BsDatepickerViewMode);\n }\n}\n","<!--navigation-->\n<div class=\"gt-calendar-view-head\">\n <bs-datepicker-navigation-view [calendar]=\"calendar\" [calendarIndex]=\"calendarIndex\"\n [showNavigationArrows]=\"showNavigationArrows\" (onNavigate)=\"navigateTo($event)\"\n (onViewMode)=\"changeViewMode($event)\" [type]=\"'months'\">\n </bs-datepicker-navigation-view>\n</div>\n\n<div class=\"gt-calendar-view-body\"> <hr>\n <div class=\"calendar-body\">\n <ng-container *ngFor=\"let row of calendar?.months\">\n <div class=\"months\" *ngFor=\"let month of row\">\n <article class=\"hr-body sm-regular\"\n [class.disabled]=\"month.isDisabled\"\n [class.is-highlighted]=\"month.isHovered\"\n [class.selected]=\"month.isSelected\"\n [class.today]=\"month.isToday\"\n\n (click)=\"viewMonth(month)\"\n (mouseenter)=\"hoverMonth(month, true)\" (mouseleave)=\"hoverMonth(month, false)\">\n {{ month.label | dateFormating: calendarLang : true }}\n </article>\n </div>\n </ng-container>\n </div>\n</div>\n","import {Component, EventEmitter, Input, Output} from '@angular/core';\nimport {yearsPerCalendar} from '../../engine/format-years-calendar';\nimport {\n BsDatepickerViewMode,\n BsNavigationDirection,\n BsNavigationEvent,\n CalendarCellViewModel,\n CellHoverEvent,\n YearsCalendarViewModel\n} from '../../models';\nimport {HeaderTypeService} from \"../../services/header-type.service\";\n\n@Component({\n selector: 'bs-years-calendar-view',\n templateUrl: './bs-years-calendar-view.component.html',\n styleUrls: ['./bs-years-calendar-view.component.scss']\n})\nexport class BsYearsCalendarViewComponent {\n @Input() calendar!: YearsCalendarViewModel;\n @Input() calendarIndex!: number;\n @Input() showNavigationArrows!: boolean;\n @Input() size!: 'sm' | 'md' | '';\n\n @Output() onNavigate = new EventEmitter<BsNavigationEvent>();\n @Output() onViewMode = new EventEmitter<BsDatepickerViewMode>();\n\n @Output() onSelect = new EventEmitter<CalendarCellViewModel>();\n @Output() onHover = new EventEmitter<CellHoverEvent>();\n\n constructor (private headerTypeService: HeaderTypeService){}\n\n navigateTo(event: BsNavigationDirection): void {\n const step = BsNavigationDirection.DOWN === event ? -1 : 1;\n this.onNavigate.emit({step: {year: step * yearsPerCalendar}});\n }\n\n viewYear(year: CalendarCellViewModel) {\n this.onSelect.emit(year);\n this.headerTypeService.setCalendarType('months');\n if(this.headerTypeService.getCalendarType() === 'days') {\n this.headerTypeService.setHeaderType('self');\n }\n }\n\n hoverYear(cell: CalendarCellViewModel, isHovered: boolean) {\n this.onHover.emit({cell, isHovered});\n }\n\n changeViewMode(event: BsDatepickerViewMode): void {\n this.onViewMode.emit(event);\n this.headerTypeService.setHeaderType('integrate');\n }\n}\n","<!--navigation-->\n<div class=\"gt-calendar-view-head\">\n <bs-datepicker-navigation-view [calendar]=\"calendar\" [calendarIndex]=\"calendarIndex\"\n [showNavigationArrows]=\"showNavigationArrows\" (onNavigate)=\"navigateTo($event)\"\n (onViewMode)=\"changeViewMode($event)\" [type]=\"'years'\">\n </bs-datepicker-navigation-view>\n</div>\n\n<div class=\"gt-calendar-view-body\">\n <hr>\n <div class=\"calendar-body\">\n <div class=\"years\" *ngFor=\"let row of calendar?.years\">\n <article class=\"hr-body sm-regular\"\n [class.disabled]=\"year.isDisabled\"\n [class.is-highlighted]=\"year.isHovered\"\n [class.selected]=\"year.isSelected\"\n [class.today]=\"year.isToday\"\n\n (click)=\"viewYear(year)\" *ngFor=\"let year of row\"\n (mouseenter)=\"hoverYear(year, true)\" (mouseleave)=\"hoverYear(year, false)\">\n {{ year.label }}\n </article>\n </div>\n </div>\n</div>\n","import {Component, ElementRef, EventEmitter, OnDestroy, OnInit, Renderer2} from '@angular/core';\n\nimport {take} from 'rxjs/operators';\n\nimport {getFullYear, getMonth} from 'ngx-bootstrap/chronos';\nimport {PositioningService} from 'ngx-bootstrap/positioning';\n\nimport {datepickerAnimation} from '../datepicker-animations';\nimport {BsDatepickerAbstractComponent} from '../base/bs-datepicker-container';\nimport {BsDatepickerConfig} from '../bs-datepicker.config';\nimport {CalendarCellViewModel, DayViewModel} from '../models';\nimport {BsDatepickerActions} from '../reducer/bs-datepicker.actions';\nimport {BsDatepickerEffects} from '../reducer/bs-datepicker.effects';\nimport {BsDatepickerStore} from '../reducer/bs-datepicker.store';\nimport {BsDatepickerCallbacks} from \"../bs-datepicker.callbacks\";\nimport {HeaderTypeService} from \"../services/header-type.service\";\n\n@Component({\n selector: 'gt-datepicker-container',\n templateUrl: './bs-datepicker-view.html',\n styleUrls: ['./bs-datepicker-view.scss'],\n providers: [BsDatepickerStore, BsDatepickerEffects],\n host: {\n 'aria-label': 'calendar',\n class: 'bottom',\n '(click)': '$event.stopPropagation()',\n role: 'dialog'\n },\n animations: [datepickerAnimation]\n})\nexport class BsDatepickerContainerComponent extends BsDatepickerAbstractComponent implements OnInit, OnDestroy {\n override isRangePicker: boolean = false;\n public onApplyChange: EventEmitter<void> = new EventEmitter<void>();\n public valueChange: EventEmitter<Date> = new EventEmitter<Date>();\n\n set value(value: Date | undefined) {\n this._effects?.setValue(value);\n }\n\n constructor(public headerTypeService: HeaderTypeService, _renderer: Renderer2, public _config: BsDatepickerConfig, public _callbacks: BsDatepickerCallbacks,\n private _store: BsDatepickerStore, private _element: ElementRef, private _actions: BsDatepickerActions, _effects: BsDatepickerEffects, private _positionService: PositioningService) {\n super(_config);\n this._effects = _effects;\n\n _renderer.setStyle(_element.nativeElement, 'display', 'block');\n _renderer.setStyle(_element.nativeElement, 'position', 'absolute');\n }\n\n ngOnInit(): void {\n this._positionService.setOptions({\n modifiers: {\n flip: {enabled: this._config.adaptivePosition},\n preventOverflow: {enabled: this._config.adaptivePosition}\n },\n allowedPositions: ['top', 'bottom']\n });\n\n this._positionService.event$?.pipe(take(1)).subscribe(() => {\n this._positionService.disable();\n if (this._config.isAnimated) {\n this.animationState = this.isTopPosition ? 'animated-up' : 'animated-down';\n } else {\n this.animationState = 'unanimated';\n }\n });\n\n this.isOtherMonthsActive = this._config.selectFromOtherMonth;\n this._effects?.init(this._store)\n // intial state options\n .setOptions(this._config)\n // data binding view --> model\n .setBindings(this)\n // set event handlers\n .setEventHandlers(this)\n .registerDatepickerSideEffects();\n\n // on selected date change\n this._subs.push(\n this._store.select((state) => state.selectedDate).subscribe((date) => {\n this.valueChange.emit(date);\n })\n );\n\n this._store.dispatch(this._actions.changeViewMode(this._config.startView));\n }\n\n get isTopPosition(): boolean {\n return this._element.nativeElement.classList.contains('top');\n }\n\n public positionServiceEnable(): void {\n this._positionService.enable();\n }\n\n override daySelectHandler(day: DayViewModel): void {\n if (!day) return;\n\n const isDisabled: boolean = this.isOtherMonthsActive ? day.isDisabled : day.isOtherMonth || day.isDisabled;\n if (isDisabled) return;\n\n this._store.dispatch(this._actions.select(day.date));\n }\n\n override monthSelectHandler(day: CalendarCellViewModel): void {\n if (!day || day.isDisabled) return;\n\n this._store.dispatch(\n this._actions.navigateTo({\n unit: {month: getMonth(day.date), year: getFullYear(day.date)},\n viewMode: 'day'\n })\n );\n }\n\n override yearSelectHandler(day: CalendarCellViewModel): void {\n if (!day || day.isDisabled) return;\n\n this._store.dispatch(\n this._actions.navigateTo({\n unit: {year: getFullYear(day.date)},\n viewMode: 'month'\n })\n );\n }\n\n ngOnDestroy(): void {\n for (const sub of this._subs) {\n sub.unsubscribe();\n }\n\n this._effects?.destroy();\n }\n\n override clearDate(): void {\n if (!this.isEmpty) {\n this._store.dispatch(this._actions.select(undefined));\n }\n }\n\n override apply(): void {\n if (!this.isEmpty) {\n if (this.onApplyChange) {\n this.onApplyChange.emit();\n }\n\n if (this._callbacks?.hide) {\n this._callbacks.hide();\n }\n }\n }\n}\n","<div class=\"gt-calendar {{calendarSize}} {{calendarSpacing}} {{viewMode | async}}\" [class.is-mobile]=\"_config.isMobile\" *ngIf=\"viewMode | async\"\n [@datepickerAnimation]=\"animationState\" (@datepickerAnimation.done)=\"positionServiceEnable()\">\n\n <ng-container *ngIf=\"(isRangePicker || _config.isMobile) && headerTypeService.getCalendarType() === 'days'\">\n <div class=\"gt-calendar-topbar-indicator\">\n <ng-container *ngIf=\"isRangePicker\">\n <p class=\"hr-title\" [class.sm-regular]=\"chosenRange?.length > 0\"\n [class.sm-bold]=\"chosenRange?.length == 0\">\n <ng-container *ngIf=\"chosenRange?.length == 0\">Start date</ng-container>\n <ng-container *ngIf=\"chosenRange?.length > 0\">{{ chosenRange[0] | date : 'MMM d, y' }}</ng-container>\n </p>\n <gravity-icon [iconName]=\"'swaps-arrow-right'\" [iconSize]=\"'sm-12'\"></gravity-icon>\n <p class=\"hr-title\" [class.sm-regular]=\"chosenRange?.length > 1 || chosenRange?.length == 0\"\n [class.sm-bold]=\"chosenRange?.length == 1\">\n <ng-container *ngIf=\"chosenRange?.length < 2\">End date</ng-container>\n <ng-container *ngIf=\"chosenRange?.length > 1\">{{ chosenRange[1] | date : 'MMM d, y' }}</ng-container>\n </p>\n </ng-container>\n <ng-container *ngIf=\"!isRangePicker\">\n <p class=\"hr-title sm-bold\">\n <ng-container *ngIf=\"!_config.value\">Select date</ng-container>\n <ng-container *ngIf=\"_config.value\">{{ _config.value.toString() | date : 'MMM d, y' }}</ng-container>\n </p>\n </ng-container>\n </div>\n\n <hr class=\"gt-calendar-topbar-line\">\n </ng-container>\n\n <div class=\"gt-calendars\" [ngSwitch]=\"viewMode | async\" role=\"application\">\n\n <!--days calendar-->\n <ng-container *ngSwitchCase=\"'day'\">\n <bs-days-calendar-view [calendar]=\"calendar\"\n [calendarIndex]=\"i\"\n [isDisabled]=\"isDisabled\"\n [options]=\"options$ | async\"\n [showNavigationArrows]=\"showNavigationArrows\"\n [size]=\"_config.isMobile ? 'md' : calendarSize\"\n\n *ngFor=\"let calendar of daysCalendar$ | async; let i = index\"\n\n (onHover)=\"dayHoverHandler($event)\"\n (onNavigate)=\"navigateTo($event)\"\n (onSelect)=\"daySelectHandler($event)\"\n (onViewMode)=\"setViewMode($event)\"></bs-days-calendar-view>\n </ng-container>\n\n <!--months calendar-->\n <ng-container *ngSwitchCase=\"'month'\">\n <ng-container *ngIf=\"_config.isMobile; else nonMobile\">\n <ng-container *ngFor=\"let calendar of monthsCalendar | async; let i = index\">\n <bs-month-calendar-view *ngIf=\"i === 0\"\n [calendar]=\"calendar\"\n [calendarIndex]=\"i\"\n [showNavigationArrows]=\"showNavigationArrows\"\n [size]=\"_config.isMobile ? 'md' : calendarSize\"\n [calendarLang]=\"_config.calendarLang\"\n (onHover)=\"monthHoverHandler($event)\"\n (onNavigate)=\"navigateTo($event)\"\n (onSelect)=\"monthSelectHandler($event)\"\n (onViewMode)=\"setViewMode($event)\">\n </bs-month-calendar-view>\n </ng-container>\n </ng-container>\n <ng-template #nonMobile>\n <ng-container *ngFor=\"let calendar of monthsCalendar | async; let i = index\">\n <bs-month-calendar-view [calendar]=\"calendar\"\n [calendarIndex]=\"i\"\n [showNavigationArrows]=\"showNavigationArrows\"\n [size]=\"_config.isMobile ? 'md' : calendarSize\"\n [calendarLang]=\"_config.calendarLang\"\n (onHover)=\"monthHoverHandler($event)\"\n (onNavigate)=\"navigateTo($event)\"\n (onSelect)=\"monthSelectHandler($event)\"\n (onViewMode)=\"setViewMode($event)\">\n </bs-month-calendar-view>\n </ng-container>\n </ng-template>\n </ng-container>\n\n <!--years calendar-->\n <ng-container *ngSwitchCase=\"'year'\">\n <ng-container *ngIf=\"_config.isMobile; else nonMobile\">\n <ng-container *ngFor=\"let calendar of yearsCalendar | async; let i = index\">\n <bs-years-calendar-view *ngIf=\"i === 0\"\n [calendar]=\"calendar\"\n [calendarIndex]=\"i\"\n [showNavigationArrows]=\"showNavigationArrows\"\n [size]=\"_config.isMobile ? 'md' : calendarSize\"\n (onHover)=\"yearHoverHandler($event)\"\n (onNavigate)=\"navigateTo($event)\"\n (onSelect)=\"yearSelectHandler($event)\"\n (onViewMode)=\"setViewMode($event)\">\n </bs-years-calendar-view>\n </ng-container>\n </ng-container>\n <ng-template #nonMobile>\n <ng-container *ngFor=\"let calendar of yearsCalendar | async; let i = index\">\n <bs-years-calendar-view [calendar]=\"calendar\"\n [calendarIndex]=\"i\"\n [showNavigationArrows]=\"showNavigationArrows\"\n [size]=\"_config.isMobile ? 'md' : calendarSize\"\n (onHover)=\"yearHoverHandler($event)\"\n (onNavigate)=\"navigateTo($event)\"\n (onSelect)=\"yearSelectHandler($event)\"\n (onViewMode)=\"setViewMode($event)\">\n </bs-years-calendar-view>\n </ng-container>\n </ng-template>\n </ng-container>\n </div>\n\n <div class=\"gt-calendar-footer\" *ngIf=\"(viewMode | async) == 'day'\"\n [class.bs-datepicker-multiple]=\"isRangePicker && _config.displayMonths > 1\" [class.not-clearable]=\"!_config.clearable\">\n <gravity-link [linkText]=\"_config.calendarLang == 'es' ? 'Limpiar' : 'Clear selection'\" [link]=\"''\"\n [state]=\"isEmpty ? 'disabled' : 'active'\" (click)=\"clearDate()\"></gravity-link>\n <p class=\"apply hr-label pointer sm-bold\" [class.empty]=\"isEmpty\" (click)=\"apply()\">Apply</p>\n </div>\n</div>\n\n","import {\n AfterViewInit,\n ComponentRef,\n Directive,\n ElementRef,\n EventEmitter,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n Renderer2,\n SimpleChanges,\n ViewContainerRef\n} from '@angular/core';\nimport {ComponentLoader, ComponentLoaderFactory} from 'ngx-bootstrap/component-loader';\nimport {BehaviorSubject, Subject, Subscription} from 'rxjs';\nimport {filter, takeUntil} from 'rxjs/operators';\nimport {BsDatepickerConfig} from './bs-datepicker.config';\nimport {BsDatepickerViewMode} from './models';\nimport {BsDatepickerContainerComponent} from './components/bs-datepicker-container.component';\nimport {checkBsValue} from './utils/bs-calendar-utils';\nimport {BsDatepickerCallbacks} from \"./bs-datepicker.callbacks\";\nimport {HeaderTypeService} from \"./services/header-type.service\";\n\nexport let previousDate: Date | Date[] | undefined;\n\n@Directive({\n selector: '[gravityDatePicker]',\n exportAs: 'gravityDatePicker'\n})\nexport class BsDatepickerDirective implements OnInit, OnDestroy, OnChanges, AfterViewInit {\n /** Config object for datepicker */\n @Input() bsConfig?: Partial<BsDatepickerConfig>;\n\n /** A selector specifying the element the datepicker should be appended to. */\n @Input() container: string = 'body';\n\n /** Indicates whether datepicker's content is enabled or not */\n @Input() isDisabled: boolean = false;\n @Input() isMobile: boolean = false;\n\n /** Maximum date which is available for selection */\n @Input() maxDate?: Date;\n\n /** Minimum date which is available for selection */\n @Input() minDate?: Date;\n\n /** Minimum view mode : day, month, or year */\n @Input() minMode?: BsDatepickerViewMode;\n\n /** Emits when datepicker value has been changed */\n @Output() bsValueChange: EventEmitter<Date> = new EventEmitter<Date>();\n @Output() onApplyEmit: EventEmitter<void> = new EventEmitter<void>();\n\n /** Emits an event when the datepicker is hidden */\n @Output() onHidden: EventEmitter<unknown>;\n\n /** Emits an event when the datepicker is shown */\n @Output() onShown: EventEmitter<unknown>;\n\n private isOpen$: BehaviorSubject<boolean>;\n\n /** Returns whether or not the datepicker is currently being shown */\n @Input() get isOpen(): boolean {\n return this._datepicker.isShown;\n }\n\n set isOpen(value: boolean) {\n this.isOpen$.next(value);\n }\n\n public _bsValue?: Date;\n\n /** Initial value of datepicker */\n @Input() set bsValue(value: Date | undefined) {\n if (this._bsValue && value && this._bsValue.getTime() === value.getTime()) return;\n\n this.initPreviousValue();\n this._bsValue = value;\n this.bsValueChange.emit(value);\n }\n\n protected _subs: Subscription[] = [];\n private _datepicker: ComponentLoader<BsDatepickerContainerComponent>;\n private _datepickerRef?: ComponentRef<BsDatepickerContainerComponent>;\n private isDestroy$: Subject<unknown> = new Subject();\n private readonly _dateInputFormat$ = new Subject<string | undefined>();\n\n constructor(private headerTypeService: HeaderTypeService, public _config: BsDatepickerConfig, private _elementRef: ElementRef, private _renderer: Renderer2, _viewContainerRef: ViewContainerRef, cis: ComponentLoaderFactory) {\n Object.assign(this, this._config);\n\n this._datepicker = cis.createLoader<BsDatepickerContainerComponent>(_elementRef, _viewContainerRef, _renderer);\n\n this.isOpen$ = new BehaviorSubject(this.isOpen);\n this.onHidden = this._datepicker.onHidden;\n this.onShown = this._datepicker.onShown;\n }\n\n ngOnInit(): void {\n this._datepicker.listen({\n outsideClick: true,\n outsideEsc: true,\n triggers: 'click',\n show: () => this.show()\n });\n\n this.initPreviousValue();\n this.setConfig();\n }\n\n private initPreviousValue(): void {\n previousDate = this._bsValue;\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes[\"bsConfig\"]) {\n this.setConfig();\n this._dateInputFormat$.next('L');\n }\n\n if (!this._datepickerRef || !this._datepickerRef.instance) return;\n\n if (changes[\"minDate\"]) {\n this._datepickerRef.instance.minDate = this.minDate;\n }\n\n if (changes[\"maxDate\"]) {\n this._datepickerRef.instance.maxDate = this.maxDate;\n }\n\n if (changes[\"isDisabled\"]) {\n this._datepickerRef.instance.isDisabled = this.isDisabled;\n }\n }\n\n ngAfterViewInit(): void {\n this.isOpen$.pipe(filter(isOpen => isOpen !== this.isOpen), takeUntil(this.isDestroy$)).subscribe(() => this.toggle());\n }\n\n private initSubscribes(): void {\n // if date changes from external source (model -> view)\n this._subs.push(\n this.bsValueChange.subscribe((value: Date) => {\n if (this._datepickerRef) {\n this._datepickerRef.instance.value = value;\n }\n })\n );\n\n // if date changes from picker (view -> model)\n if (this._datepickerRef) {\n this._subs.push(\n this._datepickerRef.instance.valueChange.subscribe((value: Date) => {\n this.initPreviousValue();\n this.bsValue = value;\n\n if (this.keepDatepickerModalOpened()) return;\n\n this.hide();\n })\n );\n\n this._subs.push(\n this._datepickerRef.instance.onApplyChange.subscribe(() => {\n this.onApplyEmit.emit();\n })\n );\n }\n }\n\n private keepDatepickerModalOpened(): boolean {\n if (!previousDate || !this.bsConfig?.keepDatepickerOpened) return false;\n return this.isDateSame();\n }\n\n private isDateSame(): boolean {\n return (previousDate instanceof Date\n && (this._bsValue?.getDate() === previousDate?.getDate())\n && (this._bsValue?.getMonth() === previousDate?.getMonth())\n && (this._bsValue?.getFullYear() === previousDate?.getFullYear()));\n }\n\n /** Opens an element’s datepicker. This is considered a “manual” triggering of the datepicker. */\n private show(): void {\n if (this._datepicker.isShown) return;\n\n this.setConfig();\n\n const callbacks: BsDatepickerCallbacks = new BsDatepickerCallbacks();\n callbacks.hide = this.hide.bind(this);\n\n this._datepickerRef = this._datepicker\n .provide({provide: BsDatepickerConfig, useValue: this._config})\n .provide({provide: BsDatepickerCallbacks, useValue: callbacks})\n .attach(BsDatepickerContainerComponent)\n .to(this.container)\n .position({attachment: 'bottom'})\n .show({placement: 'bottom'});\n\n this.initSubscribes();\n }\n\n /** Closes an element’s datepicker. This is considered a “manual” triggering of the datepicker. */\n public hide(): void {\n if (this.isOpen) {\n this._datepicker.hide();\n }\n\n for (const sub of this._subs) {\n sub.unsubscribe();\n }\n }\n\n /** Toggles an element’s datepicker. This is considered a “manual” triggering of the datepicker. */\n private toggle(): void {\n if (this.isOpen) {\n return this.hide();\n }\n\n this.show();\n }\n\n /** Set config for datepicker */\n private setConfig(): void {\n this._config = Object.assign({}, this._config, this.bsConfig, {\n value: checkBsValue(this._bsValue, this.maxDate || this.bsConfig && this.bsConfig.maxDate),\n isDisabled: this.isDisabled,\n isMobile: this.isMobile || this.bsConfig && this.bsConfig.isMobile,\n minDate: this.minDate || this.bsConfig && this.bsConfig.minDate,\n maxDate: this.maxDate || this.bsConfig && this.bsConfig.maxDate,\n minMode: this.minMode || this.bsConfig && this.bsConfig.minMode,\n keepDatepickerOpened: this.bsConfig?.keepDatepickerOpened\n });\n }\n\n private unsubscribeSubscriptions(): void {\n if (this._subs?.length) {\n this._subs.map((sub: Subscription) => sub.unsubscribe());\n this._subs.length = 0;\n }\n }\n\n ngOnDestroy(): void {\n this._datepicker.dispose();\n this.isOpen$.next(false);\n\n if (this.isDestroy$) {\n this.isDestroy$.next(null);\n this.isDestroy$.complete();\n }\n\n this.unsubscribeSubscriptions();\n }\n}\n","import {Component, ElementRef, OnDestroy, OnInit, Renderer2} from '@angular/core';\nimport {BsDatepickerContainerComponent} from './bs-datepicker-container.component';\n\nimport {BsDatepickerActions} from '../reducer/bs-datepicker.actions';\nimport {BsDatepickerConfig} from '../bs-datepicker.config';\nimport {BsDatepickerEffects} from '../reducer/bs-datepicker.effects';\nimport {BsDatepickerStore} from '../reducer/bs-datepicker.store';\n\nimport {PositioningService} from 'ngx-bootstrap/positioning';\nimport {datepickerAnimation} from '../datepicker-animations';\nimport {BsDatepickerCallbacks} from \"../bs-datepicker.callbacks\";\nimport {HeaderTypeService} from \"../services/header-type.service\";\n\n@Component({\n selector: 'gt-datepicker-inline-container',\n templateUrl: './bs-datepicker-view.html',\n styleUrls: ['./bs-datepicker-view.scss'],\n providers: [BsDatepickerStore, BsDatepickerEffects],\n host: {\n '(click)': '$event.stopPropagation()'\n },\n animations: [datepickerAnimation]\n})\nexport class BsDatepickerInlineContainerComponent extends BsDatepickerContainerComponent implements OnInit, OnDestroy {\n constructor(headerTypeService: HeaderTypeService, _renderer: Renderer2, _config: BsDatepickerConfig, _callbacks: BsDatepickerCallbacks, _store: BsDatepickerStore, _element: ElementRef, _actions: BsDatepickerActions, _effects: BsDatepickerEffects, _positioningService: PositioningService) {\n super(headerTypeService, _renderer, _config, _callbacks, _store, _element, _actions, _effects, _positioningService);\n\n _renderer.setStyle(_element.nativeElement, 'display', 'inline-block');\n _renderer.setStyle(_element.nativeElement, 'position', 'static');\n }\n}\n","import { Injectable } from '@angular/core';\nimport { BsDatepickerConfig } from './bs-datepicker.config';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class BsDatepickerInlineConfig extends BsDatepickerConfig { }\n","import {\n ComponentRef,\n Directive,\n ElementRef,\n EventEmitter,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n Renderer2,\n SimpleChanges,\n ViewContainerRef\n} from '@angular/core';\n\nimport {ComponentLoader, ComponentLoaderFactory} from 'ngx-bootstrap/component-loader';\n\nimport {Subscription} from 'rxjs';\nimport {BsDatepickerInlineConfig} from './bs-datepicker-inline.config';\n\nimport {BsDatepickerConfig} from './bs-datepicker.config';\nimport {BsDatepickerInlineContainerComponent} from './components/bs-datepicker-inline-container.component';\nimport {checkBsValue} from './utils/bs-calendar-utils';\nimport {BsDatepickerViewMode} from \"./models\";\n\n@Directive({\n selector: '[gravityDatePickerInline]',\n exportAs: 'gravityDatePickerInline'\n})\nexport class BsDatepickerInlineDirective implements OnInit, OnDestroy, OnChanges {\n /** Config object for datepicker */\n @Input() bsConfig?: Partial<BsDatepickerInlineConfig>;\n\n /** Indicates whether datepicker is enabled or not */\n @Input() isDisabled: boolean = false;\n @Input() isMobile: boolean = false;\n\n /** Maximum date which is available for selection */\n @Input() maxDate?: Date;\n\n /** Minimum date which is available for selection */\n @Input() minDate?: Date;\n\n /** Minimum view mode : day, month, or year */\n @Input() minMode?: BsDatepickerViewMode;\n\n /** Emits when datepicker value has been changed */\n @Output() bsValueChange: EventEmitter<Date> = new EventEmitter();\n @Output() onApplyEmit: EventEmitter<void> = new EventEmitter<void>();\n\n private _bsValue?: Date;\n\n /** Initial value of datepicker */\n @Input() set bsValue(value: Date | undefined) {\n if (this._bsValue === value) return;\n\n this._bsValue = value;\n this.bsValueChange.emit(value);\n }\n\n protected _subs: Subscription[] = [];\n private _datepickerRef?: ComponentRef<BsDatepickerInlineContainerComponent>;\n private readonly _datepicker: ComponentLoader<BsDatepickerInlineContainerComponent>;\n\n constructor(public _config: BsDatepickerInlineConfig, private _elementRef: ElementRef, _renderer: Renderer2, _viewContainerRef: ViewContainerRef, cis: ComponentLoaderFactory) {\n Object.assign(this, this._config);\n\n this._datepicker = cis.createLoader<BsDatepickerInlineContainerComponent>(_elementRef, _viewContainerRef, _renderer);\n }\n\n ngOnInit(): void {\n this.setConfig();\n this.initSubscribes();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes[\"bsConfig\"]) {\n this.setConfig();\n }\n\n if (!this._datepickerRef || !this._datepickerRef.instance) return;\n\n if (changes[\"isMobile\"]) {\n this.setConfig();\n }\n\n if (changes[\"minDate\"]) {\n this._datepickerRef.instance.minDate = this.minDate;\n }\n\n if (changes[\"maxDate\"]) {\n this._datepickerRef.instance.maxDate = this.maxDate;\n }\n\n if (changes[\"isDisabled\"]) {\n this._datepickerRef.instance.isDisabled = this.isDisabled;\n }\n\n this.setConfig();\n }\n\n private initSubscribes(): void {\n this.unsubscribeSubscriptions();\n\n // if date changes from external source (model -> view)\n this._subs.push(\n this.bsValueChange.subscribe((value: Date) => {\n if (this._datepickerRef) {\n this._datepickerRef.instance.value = value;\n }\n })\n );\n\n // if date changes from picker (view -> model)\n if (this._datepickerRef) {\n this._subs.push(\n this._datepickerRef.instance.valueChange.subscribe((value: Date) => {\n this.bsValue = value;\n })\n );\n\n this._subs.push(\n this._datepickerRef.instance.onApplyChange.subscribe(() => {\n this.onApplyEmit.emit();\n })\n );\n }\n }\n\n private unsubscribeSubscriptions(): void {\n if (this._subs?.length) {\n this._subs.map((sub: Subscription) => sub.unsubscribe());\n this._subs.length = 0;\n }\n }\n\n /** Set config for datepicker */\n private setConfig(): void {\n if (this._datepicker) {\n this._datepicker.hide();\n }\n\n this._config = Object.assign({}, this._config, this.bsConfig, {\n value: checkBsValue(this._bsValue, this.maxDate || this.bsConfig && this.bsConfig.maxDate),\n isDisabled: this.isDisabled,\n isMobile: this.isMobile || this.bsConfig && this.bsConfig.isMobile,\n minMode: this.minMode || this.bsConfig && this.bsConfig.minMode,\n minDate: this.minDate || this.bsConfig && this.bsConfig.minDate,\n maxDate: this.maxDate || this.bsConfig && this.bsConfig.maxDate\n });\n\n this._datepickerRef = this._datepicker\n .provide({provide: BsDatepickerConfig, useValue: this._config})\n .attach(BsDatepickerInlineContainerComponent)\n .to(this._elementRef)\n .show();\n\n this.initSubscribes();\n }\n\n ngOnDestroy(): void {\n this._datepicker.dispose();\n this.unsubscribeSubscriptions();\n }\n}\n","import {Component, ElementRef, EventEmitter, OnDestroy, OnInit, Renderer2} from '@angular/core';\n\nimport {take} from 'rxjs/operators';\n\nimport {getFullYear, getMonth} from 'ngx-bootstrap/chronos';\nimport {PositioningService} from 'ngx-bootstrap/positioning';\n\nimport {BsDatepickerAbstractComponent} from '../base/bs-datepicker-container';\nimport {BsDatepickerConfig} from '../bs-datepicker.config';\nimport {CalendarCellViewModel, DayViewModel} from '../models';\nimport {BsDatepickerActions} from '../reducer/bs-datepicker.actions';\nimport {BsDatepickerEffects} from '../reducer/bs-datepicker.effects';\nimport {BsDatepickerStore} from '../reducer/bs-datepicker.store';\nimport {datepickerAnimation} from '../datepicker-animations';\nimport {dayInMilliseconds} from '../reducer/_defaults';\nimport {BsDatepickerCallbacks} from \"../bs-datepicker.callbacks\";\nimport {BsCustomDates} from \"../utils/bs-calendar-utils\";\nimport {HeaderTypeService} from \"../services/header-type.service\";\n\n@Component({\n selector: 'gt-daterangepicker-container',\n templateUrl: './bs-datepicker-view.html',\n styleUrls: ['./bs-datepicker-view.scss'],\n providers: [BsDatepickerStore, BsDatepickerEffects],\n host: {\n 'aria-label': 'calendar',\n class: 'bottom',\n '(click)': '$event.stopPropagation()',\n role: 'dialog',\n },\n animations: [datepickerAnimation]\n})\nexport class BsDaterangepickerContainerComponent extends BsDatepickerAbstractComponent implements OnInit, OnDestroy {\n override chosenRange: Date[] = [];\n override isRangePicker: boolean = true;\n\n private _rangeStack: Date[] = [];\n public valueChange: EventEmitter<Date[]> = new EventEmitter<Date[]>();\n public onApplyChange: EventEmitter<void> = new EventEmitter<void>();\n\n set value(value: (Date | undefined)[] | undefined) {\n this._effects?.setRangeValue(value);\n }\n\n constructor(public headerTypeService: HeaderTypeService, _renderer: Renderer2, public _config: BsDatepickerConfig, public _callbacks: BsDatepickerCallbacks, private _store: BsDatepickerStore, private _element: ElementRef, private _actions: BsDatepickerActions, _effects: BsDatepickerEffects, private _positionService: PositioningService) {\n super(_config);\n this._effects = _effects;\n\n _renderer.setStyle(_element.nativeElement, 'display', 'block');\n _renderer.setStyle(_element.nativeElement, 'position', 'absolute');\n }\n\n ngOnInit(): void {\n this._positionService.setOptions({\n modifiers: {\n flip: {enabled: this._config.adaptivePosition},\n preventOverflow: {enabled: this._config.adaptivePosition}\n },\n allowedPositions: ['top', 'bottom']\n });\n\n this._positionService.event$?.pipe(take(1)).subscribe(() => {\n this._positionService.disable();\n\n if (this._config.isAnimated) {\n this.animationState = this.isTopPosition ? 'animated-up' : 'animated-down';\n } else {\n this.animationState = 'unanimated';\n }\n });\n\n this.isOtherMonthsActive = this._config.selectFromOtherMonth;\n this._effects?.init(this._store)\n // intial state options\n .setOptions(this._config)\n // data binding view --> model\n .setBindings(this)\n // set event handlers\n .setEventHandlers(this)\n .registerDatepickerSideEffects();\n\n // on selected date change\n this._subs.push(\n this._store.select((state) => state.selectedRange).subscribe((dateRange) => {\n this.valueChange.emit(dateRange);\n this.chosenRange = dateRange || [];\n })\n );\n }\n\n get isTopPosition(): boolean {\n return this._element.nativeElement.classList.contains('top');\n }\n\n public positionServiceEnable(): void {\n this._positionService.enable();\n }\n\n override daySelectHandler(day: DayViewModel): void {\n if (!day) return;\n\n const isDisabled: boolean = this.isOtherMonthsActive ? day.isDisabled : day.isOtherMonth || day.isDisabled;\n if (isDisabled) return;\n\n this.rangesProcessing(day);\n }\n\n override monthSelectHandler(day: CalendarCellViewModel): void {\n if (!day || day.isDisabled) return;\n\n day.isSelected = true;\n\n if (this._config.minMode !== 'month') {\n if (day.isDisabled) return;\n\n this._store.dispatch(\n this._actions.navigateTo({\n unit: {month: getMonth(day.date), year: getFullYear(day.date)},\n viewMode: 'day'\n })\n );\n\n return;\n }\n\n this.rangesProcessing(day);\n }\n\n override yearSelectHandler(day: CalendarCellViewModel): void {\n if (!day || day.isDisabled) return;\n\n day.isSelected = true;\n\n if (this._config.minMode !== 'year') {\n if (day.isDisabled) return;\n\n this._store.dispatch(\n this._actions.navigateTo({\n unit: {year: getFullYear(day.date)},\n viewMode: 'month'\n })\n );\n\n return;\n }\n\n this.rangesProcessing(day);\n }\n\n rangesProcessing(day: CalendarCellViewModel): void {\n // if only one date is already selected and user clicks on previous date\n // start selection from new date but if new date is after initial one\n // than finish selection\n\n if (this._rangeStack.length === 1) {\n this._rangeStack = day.date >= this._rangeStack[0] ? [this._rangeStack[0], day.date] : [day.date];\n }\n\n if (this._config.maxDateRange) {\n this.setMaxDateRangeOnCalendar(day.date);\n }\n\n if (this._rangeStack.length === 0) {\n this._rangeStack = [day.date];\n\n if (this._config.maxDateRange) {\n this.setMaxDateRangeOnCalendar(day.date);\n }\n }\n\n this._store.dispatch(this._actions.selectRange(this._rangeStack));\n\n if (this._rangeStack.length === 2) {\n this._rangeStack = [];\n }\n }\n\n ngOnDestroy(): void {\n for (const sub of this._subs) {\n sub.unsubscribe();\n }\n\n this._effects?.destroy();\n }\n\n override setRangeOnCalendar(dates: BsCustomDates): void {\n if (dates) {\n this._rangeStack = dates.value instanceof Date ? [dates.value] : dates.value;\n }\n\n this._store.dispatch(this._actions.selectRange(this._rangeStack));\n }\n\n setMaxDateRangeOnCalendar(currentSelection: Date): void {\n let maxDateRange: Date = new Date(currentSelection);\n\n if (this._config.maxDate) {\n const maxDateValueInMilliseconds: number = this._config.maxDate.getTime();\n const maxDateRangeInMilliseconds: number = currentSelection.getTime() + (this._config.maxDateRange || 0) * dayInMilliseconds;\n\n maxDateRange = maxDateRangeInMilliseconds > maxDateValueInMilliseconds ? new Date(this._config.maxDate) : new Date(maxDateRangeInMilliseconds);\n } else {\n maxDateRange.setDate(currentSelection.getDate() + (this._config.maxDateRange || 0));\n }\n\n this._effects?.setMaxDate(maxDateRange);\n }\n\n override clearDate(): void {\n if (!this.isEmpty) {\n this._store.dispatch(this._actions.selectRange([]));\n }\n }\n\n override apply(): void {\n if (!this.isEmpty) {\n if (this.onApplyChange) {\n this.onApplyChange.emit();\n }\n\n if (this._callbacks?.hide) {\n this._callbacks.hide();\n }\n }\n }\n}\n","import {Injectable} from '@angular/core';\nimport {BsDatepickerConfig} from './bs-datepicker.config';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class BsDaterangepickerConfig extends BsDatepickerConfig {\n override displayMonths: number = 2;\n}\n","import {\n AfterViewInit,\n ComponentRef,\n Directive,\n ElementRef,\n EventEmitter,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n Renderer2,\n SimpleChanges,\n ViewContainerRef\n} from '@angular/core';\nimport {BsDaterangepickerConfig} from './bs-daterangepicker.config';\nimport {BsDaterangepickerContainerComponent} from './components/bs-daterangepicker-container.component';\nimport {BehaviorSubject, Subject, Subscription} from 'rxjs';\nimport {filter, takeUntil} from 'rxjs/operators';\nimport {ComponentLoader, ComponentLoaderFactory} from 'ngx-bootstrap/component-loader';\nimport {BsDatepickerConfig} from './bs-datepicker.config';\nimport {checkBsValue, checkRangesWithMaxDate} from './utils/bs-calendar-utils';\nimport {BsDatepickerCallbacks} from \"./bs-datepicker.callbacks\";\n\nexport let previousDate: (Date | undefined)[] | undefined;\n\n@Directive({\n selector: '[gravityRangePicker]',\n exportAs: 'gravityRangePicker'\n})\nexport class BsDaterangepickerDirective implements OnInit, OnDestroy, OnChanges, AfterViewInit {\n /** Config object for daterangepicker */\n @Input() bsConfig?: Partial<BsDaterangepickerConfig>;\n\n /** A selector specifying the element the daterangepicker should be appended to. */\n @Input() container: string = 'body';\n\n /** Indicates whether daterangepicker's content is enabled or not */\n @Input() isDisabled: boolean = false;\n @Input() isMobile: boolean = false;\n\n /** Maximum date which is available for selection */\n @Input() maxDate?: Date;\n\n /** Minimum date which is available for selection */\n @Input() minDate?: Date;\n\n /** Emits when daterangepicker value has been changed */\n @Output() bsValueChange: EventEmitter<((Date | undefined)[] | undefined)> = new EventEmitter<((Date | undefined)[] | undefined)>();\n @Output() onApplyEmit: EventEmitter<void> = new EventEmitter<void>();\n\n /** Emits an event when the daterangepicker is hidden */\n @Output() onHidden: EventEmitter<unknown>;\n\n /** Emits an event when the daterangepicker is shown */\n @Output() onShown: EventEmitter<unknown>;\n\n private isOpen$: BehaviorSubject<boolean>;\n\n /** Returns whether or not the daterangepicker is currently being shown */\n @Input() get isOpen(): boolean {\n return this._datepicker.isShown;\n }\n\n set isOpen(value: boolean) {\n this.isOpen$.next(value);\n }\n\n public _bsValue?: (Date | undefined)[];\n\n /** Initial value of daterangepicker */\n @Input() set bsValue(value: (Date | undefined)[] | undefined) {\n if (this._bsValue === value) return;\n\n this.initPreviousValue();\n this._bsValue = value;\n this.bsValueChange.emit(value);\n }\n\n protected _subs: Subscription[] = [];\n private _datepicker: ComponentLoader<BsDaterangepickerContainerComponent>;\n private _datepickerRef?: ComponentRef<BsDaterangepickerContainerComponent>;\n private isDestroy$: Subject<unknown> = new Subject();\n private readonly _rangeInputFormat$ = new Subject<string>();\n\n constructor(public _config: BsDaterangepickerConfig, private _elementRef: ElementRef, private _renderer: Renderer2, _viewContainerRef: ViewContainerRef, cis: ComponentLoaderFactory) {\n Object.assign(this, _config);\n\n this._datepicker = cis.createLoader<BsDaterangepickerContainerComponent>(_elementRef, _viewContainerRef, _renderer);\n\n this.isOpen$ = new BehaviorSubject(this.isOpen);\n this.onHidden = this._datepicker.onHidden;\n this.onShown = this._datepicker.onShown;\n }\n\n ngOnInit(): void {\n this._datepicker.listen({\n outsideClick: true,\n outsideEsc: true,\n triggers: 'click',\n show: () => this.show()\n });\n\n this.initPreviousValue();\n this.setConfig();\n }\n\n private initPreviousValue(): void {\n previousDate = this._bsValue;\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes[\"bsConfig\"]) {\n this.setConfig();\n this._rangeInputFormat$.next('L');\n }\n\n if (!this._datepickerRef || !this._datepickerRef.instance) return;\n\n if (changes[\"minDate\"]) {\n this._datepickerRef.instance.minDate = this.minDate;\n }\n\n if (changes[\"maxDate\"]) {\n this._datepickerRef.instance.maxDate = this.maxDate;\n }\n\n if (changes[\"isDisabled\"]) {\n this._datepickerRef.instance.isDisabled = this.isDisabled;\n }\n }\n\n ngAfterViewInit(): void {\n this.isOpen$.pipe(filter(isOpen => isOpen !== this.isOpen), takeUntil(this.isDestroy$)).subscribe(() => this.toggle());\n }\n\n private initSubscribes(): void {\n // if date changes from external source (model -> view)\n this._subs.push(\n this.bsValueChange.subscribe((value: Date[]) => {\n if (this._datepickerRef) {\n this._datepickerRef.instance.value = value;\n }\n })\n );\n\n // if date changes from picker (view -> model)\n if (this._datepickerRef) {\n this._subs.push(\n this._datepickerRef.instance.valueChange\n .pipe(filter((range: Date[]) => {\n if (range.length == 0) return true;\n if (range.length == 2) return range && range[0] && !!range[1];\n }))\n .subscribe((value: Date[]) => {\n this.initPreviousValue();\n this.bsValue = value;\n\n // TODO ebiazzetti keep modal open after select the dates\n if (this.keepDatepickerModalOpened()) return;\n\n this.hide();\n })\n );\n\n this._subs.push(\n this._datepickerRef.instance.onApplyChange.subscribe(() => {\n this.onApplyEmit.emit();\n })\n );\n }\n }\n\n private keepDatepickerModalOpened(): boolean {\n if (!previousDate || !this.bsConfig?.keepDatepickerOpened) return false;\n return this.isDateSame();\n }\n\n private isDateSame(): boolean {\n return ((this._bsValue?.[0]?.getDate() === previousDate?.[0]?.getDate())\n && (this._bsValue?.[0]?.getMonth() === previousDate?.[0]?.getMonth())\n && (this._bsValue?.[0]?.getFullYear() === previousDate?.[0]?.getFullYear())\n && (this._bsValue?.[1]?.getDate() === previousDate?.[1]?.getDate())\n && (this._bsValue?.[1]?.getMonth() === previousDate?.[1]?.getMonth())\n && (this._bsValue?.[1]?.getFullYear() === previousDate?.[1]?.getFullYear())\n );\n }\n\n /** Opens an element’s datepicker. This is considered a “manual” triggering of the datepicker */\n private show(): void {\n if (this._datepicker.isShown) return;\n\n this.setConfig();\n\n const callbacks: BsDatepickerCallbacks = new BsDatepickerCallbacks();\n callbacks.hide = this.hide.bind(this);\n\n this._datepickerRef = this._datepicker\n .provide({provide: BsDatepickerConfig, useValue: this._config})\n .provide({provide: BsDatepickerCallbacks, useValue: callbacks})\n .attach(BsDaterangepickerContainerComponent)\n .to(this.container)\n .position({attachment: 'bottom'})\n .show({placement: 'bottom'});\n\n this.initSubscribes();\n }\n\n /** Closes an element’s datepicker. This is considered a “manual” triggering of the datepicker. */\n public hide(): void {\n if (this.isOpen) {\n this._datepicker.hide();\n }\n\n for (const sub of this._subs) {\n sub.unsubscribe();\n }\n }\n\n /** Toggles an element’s datepicker. This is considered a “manual” triggering of the datepicker. */\n private toggle(): void {\n if (this.isOpen) {\n return this.hide();\n }\n\n this.show();\n }\n\n /** Set config for daterangepicker */\n private setConfig(): void {\n this._config = Object.assign({}, this._config, this.bsConfig, {\n value: checkBsValue(this._bsValue, this.maxDate || this.bsConfig && this.bsConfig.maxDate),\n isDisabled: this.isDisabled,\n isMobile: this.isMobile || this.bsConfig && this.bsConfig.isMobile,\n minDate: this.minDate || this.bsConfig && this.bsConfig.minDate,\n maxDate: this.maxDate || this.bsConfig && this.bsConfig.maxDate,\n ranges: checkRangesWithMaxDate(this.bsConfig && this.bsConfig.ranges, this.maxDate || this.bsConfig && this.bsConfig.maxDate),\n maxDateRange: this.bsConfig && this.bsConfig.maxDateRange,\n keepDatepickerOpened: this.bsConfig?.keepDatepickerOpened\n });\n }\n\n private unsubscribeSubscriptions(): void {\n if (this._subs?.length) {\n this._subs.map((sub: Subscription) => sub.unsubscribe());\n this._subs.length = 0;\n }\n }\n\n ngOnDestroy(): void {\n this._datepicker.dispose();\n this.isOpen$.next(false);\n\n if (this.isDestroy$) {\n this.isDestroy$.next(null);\n this.isDestroy$.complete();\n }\n\n this.unsubscribeSubscriptions();\n }\n}\n","import {Component, ElementRef, OnDestroy, OnInit, Renderer2} from '@angular/core';\nimport {BsDaterangepickerContainerComponent} from './bs-daterangepicker-container.component';\n\nimport {BsDatepickerActions} from '../reducer/bs-datepicker.actions';\nimport {BsDatepickerConfig} from '../bs-datepicker.config';\nimport {BsDatepickerEffects} from '../reducer/bs-datepicker.effects';\nimport {BsDatepickerStore} from '../reducer/bs-datepicker.store';\n\nimport {PositioningService} from 'ngx-bootstrap/positioning';\nimport {datepickerAnimation} from '../datepicker-animations';\nimport {BsDatepickerCallbacks} from \"../bs-datepicker.callbacks\";\nimport {HeaderTypeService} from \"../services/header-type.service\";\n\n@Component({\n selector: 'gt-daterangepicker-inline-container',\n templateUrl: './bs-datepicker-view.html',\n styleUrls: ['./bs-datepicker-view.scss'],\n providers: [BsDatepickerStore, BsDatepickerEffects],\n host: {\n '(click)': '$event.stopPropagation()'\n },\n animations: [datepickerAnimation]\n})\nexport class BsDaterangepickerInlineContainerComponent extends BsDaterangepickerContainerComponent implements OnInit, OnDestroy {\n constructor(headerTypeService: HeaderTypeService, _renderer: Renderer2, _config: BsDatepickerConfig, _callbacks: BsDatepickerCallbacks, _store: BsDatepickerStore, _element: ElementRef, _actions: BsDatepickerActions, _effects: BsDatepickerEffects, _positioningService: PositioningService) {\n super(headerTypeService, _renderer, _config, _callbacks, _store, _element, _actions, _effects, _positioningService);\n\n _renderer.setStyle(_element.nativeElement, 'display', 'inline-block');\n _renderer.setStyle(_element.nativeElement, 'position', 'static');\n }\n}\n","import {Injectable} from '@angular/core';\nimport {BsDatepickerConfig} from './bs-datepicker.config';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class BsDaterangepickerInlineConfig extends BsDatepickerConfig {\n override displayMonths: number = 2;\n}\n","import {\n ComponentRef,\n Directive,\n ElementRef,\n EventEmitter,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n Renderer2,\n SimpleChanges,\n ViewContainerRef\n} from '@angular/core';\n\nimport {ComponentLoader, ComponentLoaderFactory} from 'ngx-bootstrap/component-loader';\n\nimport {Subscription} from 'rxjs';\nimport {filter} from 'rxjs/operators';\n\nimport {BsDatepickerConfig} from './bs-datepicker.config';\nimport {BsDaterangepickerInlineConfig} from './bs-daterangepicker-inline.config';\nimport {BsDaterangepickerInlineContainerComponent} from './components/bs-daterangepicker-inline-container.component';\nimport {checkBsValue, checkRangesWithMaxDate} from './utils/bs-calendar-utils';\n\n@Directive({\n selector: '[gravityRangePickerInline]',\n exportAs: 'gravityRangePickerInline'\n})\nexport class BsDaterangepickerInlineDirective implements OnInit, OnDestroy, OnChanges {\n /** Config object for datepicker */\n @Input() bsConfig?: Partial<BsDaterangepickerInlineConfig>;\n\n /** Indicates whether datepicker is enabled or not */\n @Input() isDisabled: boolean = false;\n @Input() isMobile: boolean = false;\n\n /** Maximum date which is available for selection */\n @Input() maxDate?: Date;\n\n /** Minimum date which is available for selection */\n @Input() minDate?: Date;\n\n /** Emits when daterangepicker value has been changed */\n @Output() bsValueChange: EventEmitter<(Date | undefined)[] | undefined> = new EventEmitter();\n @Output() onApplyEmit: EventEmitter<void> = new EventEmitter<void>();\n\n private _bsValue?: (Date | undefined)[] | undefined;\n\n /** Initial value of datepicker */\n @Input() set bsValue(value: (Date | undefined)[] | undefined) {\n if (this._bsValue === value) return;\n\n this._bsValue = value;\n this.bsValueChange.emit(value);\n }\n\n protected _subs: Subscription[] = [];\n private _datepickerRef?: ComponentRef<BsDaterangepickerInlineContainerComponent>;\n private readonly _datepicker: ComponentLoader<BsDaterangepickerInlineContainerComponent>;\n\n constructor(public _config: BsDaterangepickerInlineConfig, private _elementRef: ElementRef, _renderer: Renderer2, _viewContainerRef: ViewContainerRef, cis: ComponentLoaderFactory) {\n Object.assign(this, this._config);\n\n this._datepicker = cis.createLoader<BsDaterangepickerInlineContainerComponent>(_elementRef, _viewContainerRef, _renderer);\n }\n\n ngOnInit(): void {\n this.setConfig();\n this.initSubscribes();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (!this._datepickerRef || !this._datepickerRef.instance) return;\n\n if (changes[\"minDate\"]) {\n this._datepickerRef.instance.minDate = this.minDate;\n }\n\n if (changes[\"maxDate\"]) {\n this._datepickerRef.instance.maxDate = this.maxDate;\n }\n\n if (changes[\"isDisabled\"]) {\n this._datepickerRef.instance.isDisabled = this.isDisabled;\n }\n\n this.setConfig();\n }\n\n private initSubscribes(): void {\n this.unsubscribeSubscriptions();\n\n // if date changes from external source (model -> view)\n this._subs.push(\n this.bsValueChange.subscribe((value: Date[]) => {\n if (this._datepickerRef) {\n this._datepickerRef.instance.value = value;\n }\n })\n );\n\n // if date changes from picker (view -> model)\n if (this._datepickerRef) {\n this._subs.push(\n this._datepickerRef.instance.valueChange\n .pipe(filter((range: Date[]) => {\n if (range?.length == 0) return true;\n if (range?.length == 2) return range && range[0] && !!range[1];\n }))\n .subscribe((value: Date[]) => {\n this.bsValue = value;\n })\n );\n\n this._subs.push(\n this._datepickerRef.instance.onApplyChange.subscribe(() => {\n this.onApplyEmit.emit();\n })\n );\n }\n }\n\n private unsubscribeSubscriptions(): void {\n if (this._subs?.length) {\n this._subs.map((sub: Subscription) => sub.unsubscribe());\n this._subs.length = 0;\n }\n }\n\n /** Set config for datepicker */\n private setConfig(): void {\n if (this._datepicker) {\n this._datepicker.hide();\n }\n\n this._config = Object.assign({}, this._config, this.bsConfig, {\n value: checkBsValue(this._bsValue, this.maxDate || this.bsConfig && this.bsConfig.maxDate),\n isDisabled: this.isDisabled,\n isMobile: this.isMobile || this.bsConfig && this.bsConfig.isMobile,\n minDate: this.minDate || this.bsConfig && this.bsConfig.minDate,\n maxDate: this.maxDate || this.bsConfig && this.bsConfig.maxDate,\n ranges: checkRangesWithMaxDate(this.bsConfig && this.bsConfig.ranges, this.maxDate || this.bsConfig && this.bsConfig.maxDate),\n maxDateRange: this.bsConfig && this.bsConfig.maxDateRange\n });\n\n this._datepickerRef = this._datepicker\n .provide({provide: BsDatepickerConfig, useValue: this._config})\n .attach(BsDaterangepickerInlineContainerComponent)\n .to(this._elementRef)\n .show();\n\n this.initSubscribes();\n }\n\n ngOnDestroy(): void {\n this._datepicker.dispose();\n this.unsubscribeSubscriptions();\n }\n}\n","import {Component, EventEmitter, HostListener, Input, OnChanges, OnInit, Output, SimpleChanges} from '@angular/core';\nimport {BsDatepickerViewMode} from \"./datepicker/models\";\nimport {BsDatepickerConfig} from \"./datepicker/bs-datepicker.config\";\nimport {HeaderTypeService} from \"./datepicker/services/header-type.service\";\n\n@Component({\n selector: 'gravity-calendar-v2',\n templateUrl: './gravity-calendar-v2.component.html',\n styleUrls: ['./gravity-calendar-v2.component.scss']\n})\nexport class GravityCalendarV2Component implements OnInit, OnChanges {\n // Component configuration\n @Input() public clearable: boolean = true;\n @Input() public currentLang: string = 'en';\n @Input() public cypressTag: string;\n @Input() public hasError: boolean = false;\n @Input() public isDisabled: boolean = false;\n @Input() public isReadonly: boolean = false;\n @Input() public label: string;\n @Input() public placeholder: string;\n @Input() public required: boolean = false;\n @Input() public supportText: string;\n @Input() public minDate: Date;\n @Input() public maxDate: Date;\n\n // Appearance settings\n @Input() public size: 'sm' | 'md' = 'sm';\n @Input() public labelSize: 'sm' | 'md' | 'lg';\n @Input() public inputType: 'field' | 'label' = 'field';\n @Input() public width: 'short' | 'medium' | 'full' | 'fit' = 'short';\n\n // Calendar\n @Input() public calendarType: BsDatepickerViewMode = 'day';\n @Input() public calendarMode: 'single' | 'double' = 'single';\n @Input() public selectionMode: 'date' | 'range' = 'date';\n\n // Dates\n @Input() public customDate?: Date;\n @Input() public customDates?: Date[];\n\n @Output('response') public calendarResponse: EventEmitter<Date[] | Date> = new EventEmitter<Date[] | Date>();\n\n public calendarConfiguration: Partial<BsDatepickerConfig> = {\n displayMonths: 1\n };\n\n public readonly elementId: string;\n public displayRangePicker: boolean = false;\n public focusInput: boolean = false;\n public isMobile: boolean = false;\n public inputLabel: string = '';\n private defaultMinDate: Date = new Date(new Date().getUTCFullYear() - 11, 0, 1);\n private defaultMaxDate: Date = new Date();\n public selectedDate: Date;\n public selectedDates: Date[];\n public showMobileCalendar: boolean = false;\n public isCalendarOpen: boolean = false;\n\n constructor(public headerTypeService: HeaderTypeService) {\n let milliseconds: number = new Date().getTime();\n let randomNumber: number = Math.random() * 10;\n\n this.elementId = '' + (milliseconds * randomNumber / 2);\n }\n\n ngOnInit(): void {\n this.onResize();\n this.updateConfig();\n\n this.calendarConfiguration.calendarSize = this.size;\n this.calendarConfiguration.clearable = this.clearable;\n\n this.calendarConfiguration.minDate = this.minDate ?? this.defaultMinDate;\n this.calendarConfiguration.maxDate = this.maxDate ?? this.defaultMaxDate;\n\n if (this.customDate) {\n this.selectedDate = this.customDate;\n }\n\n if (this.customDates) {\n this.selectedDates = this.customDates;\n }\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['selectionMode']) {\n this.selectionMode = changes['selectionMode'].currentValue;\n this.updateConfig();\n }\n\n if (changes['calendarMode']) {\n this.calendarMode = changes['calendarMode'].currentValue;\n this.updateConfig();\n }\n\n if (changes['clearable']) {\n this.calendarConfiguration.clearable = changes['clearable'].currentValue;\n }\n\n if (changes['size']) {\n this.calendarConfiguration.calendarSize = changes['size'].currentValue;\n }\n\n if ('customDate' in changes) {\n const newDate = changes['customDate'].currentValue;\n\n if (!this.selectedDate || this.selectedDate.getTime() !== new Date(newDate).getTime()) {\n this.selectedDate = new Date(newDate);\n }\n }\n\n if (changes['customDates']) {\n this.selectedDates = changes['customDates'].currentValue;\n }\n\n if (changes['minDate']) {\n this.calendarConfiguration.minDate = changes['minDate'].currentValue ?? this.defaultMinDate;\n }\n\n if (changes['maxDate']) {\n this.calendarConfiguration.maxDate = changes['maxDate'].currentValue ?? this.defaultMaxDate;\n }\n }\n\n private updateConfig(): void {\n if (this.calendarMode == 'single' && this.selectionMode == 'date') {\n this.calendarConfiguration.displayMonths = 1;\n this.displayRangePicker = false;\n }\n\n if (this.calendarMode == 'single' && this.selectionMode == 'range') {\n this.calendarConfiguration.displayMonths = 1;\n this.displayRangePicker = true;\n }\n\n if (this.calendarMode == 'double' && this.selectionMode == 'date') {\n this.calendarConfiguration.displayMonths = 2;\n this.displayRangePicker = true;\n }\n\n if (this.calendarMode == 'double' && this.selectionMode == 'range') {\n this.calendarConfiguration.displayMonths = 2;\n this.displayRangePicker = true;\n }\n }\n\n public updateSelectedDate($event: Date | Date[]): void {\n if (!$event || (Array.isArray($event) && $event.length == 0)) {\n this.selectedDate = null;\n this.selectedDates = null;\n this.inputLabel = '';\n this.calendarResponse.emit(undefined);\n } else if ($event instanceof Date) {\n this.selectedDate = $event;\n this.inputLabel = this.formatDate($event);\n this.calendarResponse.emit(this.selectedDate);\n } else {\n this.selectedDates = $event;\n const date1: string = this.formatDate($event[0]);\n const date2: string = this.formatDate($event[1]);\n\n this.inputLabel = date1 + ' - ' + date2;\n\n this.calendarResponse.emit(this.selectedDates);\n }\n\n this.closeMobileCalendar();\n }\n\n resetCalendar(): void {\n this.selectedDate = this.customDate ? this.customDate : undefined;\n this.selectedDates = this.customDates ? this.customDates : undefined;\n\n if (this.selectionMode == 'date') {\n this.calendarResponse.emit(this.selectedDate);\n } else {\n this.calendarResponse.emit(this.selectedDates);\n }\n }\n\n public getGtCalendarContainer(): string {\n return '.gravity-calendar-field[elementId=\"' + this.elementId + '\"]';\n }\n\n public getStatus(): string {\n if (this.isDisabled) {\n return 'disabled';\n } else if (this.isReadonly) {\n return 'readonly';\n } else if (this.hasError) {\n return 'error';\n } else if (this.focusInput) {\n return 'open';\n } else if (this.selectedDates?.length > 0 || this.selectedDate) {\n return 'selected';\n } else {\n return 'active';\n }\n }\n\n private formatDate(date: Date): string {\n let formattedDate: string = '';\n let month: string;\n let day: string;\n\n switch (this.calendarType) {\n case \"day\":\n month = date.getMonth() < 9 ? ('0' + (date.getMonth() + 1)) : ('' + (date.getMonth() + 1));\n day = date.getDate() < 10 ? '0' + date.getDate() : '' + date.getDate();\n formattedDate = month + '/' + day + '/' + date.getFullYear();\n break;\n case \"month\":\n month = date.getMonth() < 9 ? ('0' + (date.getMonth() + 1)) : ('' + (date.getMonth() + 1));\n formattedDate = month + '/' + date.getFullYear();\n break;\n case \"year\":\n formattedDate = date.getFullYear().toString();\n break;\n }\n\n return formattedDate;\n }\n\n @HostListener('window:resize', ['$event'])\n private onResize(): void {\n this.isMobile = window.innerWidth <= 992;\n this.calendarConfiguration.isAnimated = !this.isMobile;\n this.calendarConfiguration.isMobile = this.isMobile;\n }\n\n public openMobileCalendar(): void {\n this.showMobileCalendar = true;\n this.focusInput = true;\n\n this.headerTypeService.setIsMobile(true);\n }\n\n public closeMobileCalendar(): void {\n this.showMobileCalendar = false;\n this.focusInput = false;\n this.restartCalendarType();\n }\n\n public restartCalendarType() {\n this.headerTypeService.setIsMobile(false);\n this.headerTypeService.setHeaderType('self');\n this.headerTypeService.setCalendarType('days');\n }\n}\n\n","<label class=\"hr-label sm-bold {{getStatus()}}\" *ngIf=\"label\">\n {{ label }} <span *ngIf=\"required || hasError\">*</span>\n</label>\n<div [attr.elementId]=\"elementId\" class=\"gravity-calendar-field {{size}} {{width}}-width {{getStatus()}} {{inputType}}-{{labelSize}}\">\n <div class=\"mobile-calendar-container\" [class.hide]=\"!showMobileCalendar\" [class.show]=\"showMobileCalendar\">\n <div class=\"mobile-calendar-body\">\n <div class=\"calendar-container\"\n gravityDatePickerInline\n\n [bsConfig]=\"calendarConfiguration\"\n [isDisabled]=\"isDisabled || isReadonly\"\n [isMobile]=\"isMobile\"\n [maxDate]=\"maxDate\"\n [minDate]=\"minDate\"\n [minMode]=\"calendarType\"\n\n [(bsValue)]=\"selectedDate\"\n (bsValueChange)=\"updateSelectedDate($event)\"\n (onApplyEmit)=\"closeMobileCalendar()\"\n\n *ngIf=\"!displayRangePicker\">\n\n <div class=\"calendar-close-icon\" *ngIf=\"headerTypeService.getCalendarType() === 'days'\">\n <gravity-icon class=\"pointer\" (click)=\"closeMobileCalendar()\" [iconName]=\"'unsuccess'\" [iconSize]=\"'sm-12'\"></gravity-icon>\n </div>\n </div>\n\n <div class=\"calendar-container\"\n gravityRangePickerInline\n\n [bsConfig]=\"calendarConfiguration\"\n [isDisabled]=\"isDisabled || isReadonly\"\n [isMobile]=\"isMobile\"\n [maxDate]=\"maxDate\"\n [minDate]=\"minDate\"\n\n [(bsValue)]=\"selectedDates\"\n (bsValueChange)=\"updateSelectedDate($event)\"\n (onApplyEmit)=\"closeMobileCalendar()\"\n\n *ngIf=\"displayRangePicker\">\n\n <div class=\"calendar-close-icon\" *ngIf=\"headerTypeService.getCalendarType() === 'days'\">\n <gravity-icon class=\"pointer\" (click)=\"closeMobileCalendar()\" [iconName]=\"'unsuccess'\" [iconSize]=\"'sm-12'\"></gravity-icon>\n </div>\n </div>\n </div>\n </div>\n\n <ng-container *ngIf=\"isMobile && inputType === 'field'\">\n <div [attr.data-cy]=\"cypressTag\"\n [style.cursor]=\"!isDisabled && !isReadonly ? 'pointer' : 'text'\"\n\n class=\"gravity-calendar-field-trigger\"\n [class.disabled]=\"isDisabled || isReadonly\"\n [class.readonly]=\"isReadonly\"\n\n (click)=\"openMobileCalendar()\"\n\n (blur)=\"focusInput = false\"\n (focus)=\"focusInput = true\">\n <gravity-icon class=\"placement-left\" [iconName]=\"'calendar'\" [iconSize]=\"'md-16'\"></gravity-icon>\n <input [attr.data-cy]=\"cypressTag + '_input'\"\n [attr.readonly]=\"isReadonly\"\n [style.cursor]=\"!isDisabled && !isReadonly ? 'pointer' : 'text'\"\n\n [(ngModel)]=\"inputLabel\" [ngModel]=\"inputLabel | dateFormating: currentLang\"\n\n class=\"hr-label {{size}}-regular\"\n [placeholder]=\"placeholder && placeholder != '' ? placeholder : selectionMode == 'range' ? 'Select date range' : 'Select a ' + calendarType\">\n <gravity-icon [iconName]=\"focusInput ? 'arrow-up' : 'arrow-down'\" [iconSize]=\"'md-16'\"></gravity-icon>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"!isMobile || inputType === 'label'\">\n\n <div [attr.data-cy]=\"cypressTag\"\n [style.cursor]=\"!isDisabled && !isReadonly ? 'pointer' : 'text'\"\n\n class=\"gravity-calendar-field-trigger\"\n [class.disabled]=\"isDisabled || isReadonly\"\n [class.readonly]=\"isReadonly\"\n gravityDatePicker\n\n [bsConfig]=\"calendarConfiguration\"\n [container]=\"getGtCalendarContainer()\"\n [isDisabled]=\"isDisabled || isReadonly\"\n [isMobile]=\"isMobile\"\n [maxDate]=\"maxDate\"\n [minDate]=\"minDate\"\n [minMode]=\"calendarType\"\n\n [(bsValue)]=\"selectedDate\"\n\n (blur)=\"focusInput = false\"\n (bsValueChange)=\"updateSelectedDate($event)\"\n (focus)=\"focusInput = true\"\n (onHidden)=\"focusInput = false; restartCalendarType(); isCalendarOpen = false;\"\n (onShown)=\"restartCalendarType(); isCalendarOpen = true;\"\n\n *ngIf=\"!displayRangePicker\">\n\n <gravity-dropdown-label *ngIf=\"inputType === 'label'\" [size]=\"labelSize\" [stopPropagation]=\"false\" [isOpen]=\"isCalendarOpen\"\n [label]=\"inputLabel ? (inputLabel | dateFormating: currentLang : false): 'Select a ' + calendarType\" >\n </gravity-dropdown-label>\n\n <ng-container *ngIf=\"inputType === 'field'\">\n <gravity-icon class=\"placement-left\" [iconName]=\"'calendar'\" [iconSize]=\"'md-16'\"></gravity-icon>\n <input [attr.data-cy]=\"cypressTag + '_input'\"\n [attr.readonly]=\"isReadonly\"\n [style.cursor]=\"!isDisabled && !isReadonly ? 'pointer' : 'text'\"\n\n [(ngModel)]=\"inputLabel\" [ngModel]=\"inputLabel | dateFormating: currentLang\"\n\n class=\"hr-label {{size}}-regular\"\n [placeholder]=\"placeholder && placeholder != '' ? placeholder : 'Select a ' + calendarType\">\n <gravity-icon [iconName]=\"focusInput ? 'arrow-up' : 'arrow-down'\" [iconSize]=\"'md-16'\"></gravity-icon>\n </ng-container>\n </div>\n\n <div [attr.data-cy]=\"cypressTag\"\n [style.cursor]=\"!isDisabled && !isReadonly ? 'pointer' : 'text'\"\n\n class=\"gravity-calendar-field-trigger\"\n [class.disabled]=\"isDisabled\"\n [class.readonly]=\"isReadonly\"\n gravityRangePicker\n\n [bsConfig]=\"calendarConfiguration\"\n [container]=\"getGtCalendarContainer()\"\n [isDisabled]=\"isDisabled || isReadonly\"\n [isMobile]=\"isMobile\"\n [maxDate]=\"maxDate\"\n [minDate]=\"minDate\"\n\n [(bsValue)]=\"selectedDates\"\n\n (blur)=\"focusInput = false\"\n (bsValueChange)=\"updateSelectedDate($event)\"\n (focus)=\"focusInput = true\"\n (onHidden)=\"focusInput = false; restartCalendarType()\"\n (onShown)=\"restartCalendarType()\"\n\n *ngIf=\"displayRangePicker\">\n\n <gravity-icon class=\"placement-left\" [iconName]=\"'calendar'\" [iconSize]=\"'md-16'\"></gravity-icon>\n <input [attr.data-cy]=\"cypressTag + '_input'\"\n [attr.readonly]=\"isReadonly\"\n [style.cursor]=\"!isDisabled && !isReadonly ? 'pointer' : 'text'\"\n\n [(ngModel)]=\"inputLabel\" [ngModel]=\"inputLabel | dateFormating: currentLang\"\n\n class=\"hr-label {{size}}-regular\"\n [placeholder]=\"placeholder && placeholder != '' ? placeholder : 'Select a date range'\">\n <gravity-icon [iconName]=\"focusInput ? 'arrow-up' : 'arrow-down'\" [iconSize]=\"'md-16'\"></gravity-icon>\n </div>\n </ng-container>\n</div>\n<p class=\"hr-label sm-regular supporting-text {{getStatus()}} {{size}}\" *ngIf=\"supportText\">\n <gravity-icon [iconName]=\"'question-circle'\" *ngIf=\"hasError\" [iconSize]=\"'md-16'\"></gravity-icon>\n {{ supportText }}\n</p>\n<p class=\"hr-label sm-regular supporting-text {{getStatus()}} {{size}}\"\n *ngIf=\"!supportText && getStatus() == 'active' && inputLabel?.length == 0 && required\">\n {{ currentLang == 'es' ? 'Requerido' : 'Required' }}\n</p>\n","import {Component, EventEmitter, Input, Output} from '@angular/core';\n\n@Component({\n selector: 'gravity-radio-button',\n templateUrl: './gravity-radio-button.component.html',\n styleUrls: ['./gravity-radio-button.component.scss']\n})\nexport class GravityRadioButtonComponent {\n @Input() public cypressTag: string;\n @Input() public checked: boolean = false;\n @Input() public disabled: boolean = false;\n @Input() public name: string;\n @Input() public size: 'md' | 'sm' = 'sm';\n @Input() public value: string;\n @Output() public onChange: EventEmitter<string> = new EventEmitter<string>();\n\n public onChangeEvent(value: string): void {\n this.onChange.emit(value);\n }\n}\n","<input [checked]=\"checked\" class=\"size-{{size}}\" (click)=\"onChangeEvent(value)\" [disabled]=\"disabled\" [id]=\"value\"\n [name]=\"name\" type=\"radio\" [value]=\"value\" [attr.data-cy]=\"cypressTag ? 'radioButton_' + cypressTag : null\">\n<label>\n <ng-content></ng-content>\n</label>\n","import {AfterViewInit, Component, EventEmitter, Input, OnChanges, Output, SimpleChanges} from '@angular/core';\n\n@Component({\n selector: 'gravity-switch',\n templateUrl: './gravity-switch.component.html',\n styleUrls: ['./gravity-switch.component.scss']\n})\nexport class GravitySwitchComponent implements AfterViewInit, OnChanges {\n @Input() public cypressTag: string;\n @Input() public size: 'md' | 'sm' = 'md';\n @Input() public checked: boolean = false;\n @Input() public disabled: boolean = false;\n @Input() public icons: { on?: string; off?: string; };\n @Input() public labels: { left?: string; right?: string; };\n\n @Output() public response: EventEmitter<boolean> = new EventEmitter();\n\n public isSwitchActive: boolean = false;\n\n ngAfterViewInit() {\n this.isSwitchActive = this.checked;\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes['checked']) {\n this.isSwitchActive = changes['checked'].currentValue;\n }\n }\n\n public toggleSwitch(): void {\n if (!this.disabled) {\n this.isSwitchActive = !this.isSwitchActive;\n this.response.emit(this.isSwitchActive);\n }\n }\n\n public getIconSizeClass(size: 'md' | 'sm') {\n switch (size) {\n case \"sm\":\n return 'sm-12';\n case \"md\":\n return 'md-16';\n }\n }\n\n}\n","<div class=\"gravity-switch size-{{size}}\" [class.disabled]=\"disabled\" [attr.data-cy]=\"cypressTag ? 'switch_' + cypressTag : null\">\n <span class=\"hr-body sm-regular\" *ngIf=\"labels?.left\">{{ labels.left }}</span>\n <div class=\"switch \" [class.disabled]=\"disabled\" (click)=\"toggleSwitch()\">\n <input type=\"checkbox\" [checked]=\"isSwitchActive\">\n <div class=\"slider\">\n <div class=\"icon-container\" [ngClass]=\"disabled ? '' : 'elevation-xs'\">\n <gravity-icon *ngIf=\"icons && icons.on && icons.off\"\n [iconSize]=\"getIconSizeClass(size)\"\n [style.--icon-color]=\"'var(--switch-icon-color)'\"\n [iconName]=\"disabled || isSwitchActive ? icons.on : icons.off\" >\n </gravity-icon>\n </div>\n </div>\n </div>\n <span class=\"hr-body sm-regular\" *ngIf=\"labels?.right\">{{ labels.right }}</span>\n</div>\n","import {Component, Input, TemplateRef} from '@angular/core';\nimport {NgbActiveModal} from \"@ng-bootstrap/ng-bootstrap\";\nimport {GravityIconComponent} from \"../gravity-icon/gravity-icon.component\";\n\n@Component({\n templateUrl: './gravity-dialog.component.html',\n styleUrls: ['./gravity-dialog.component.scss']\n})\nexport class GravityDialogComponent {\n @Input() public dialogContent: GravityDialogContentInterface;\n\n constructor(private readonly ngbActiveModal: NgbActiveModal) {\n }\n\n public closeModal(): void {\n this.ngbActiveModal.close();\n }\n\n public isNewIcon(iconName: string): boolean {\n return GravityIconComponent.isNewIcon(iconName);\n }\n}\n\nexport interface GravityDialogContentInterface {\n componentInputs?: any;\n contentTemplateRef?: TemplateRef<any>;\n contentTemplateComponent?: any;\n footerTemplateRef?: TemplateRef<any>;\n footerTemplateComponent?: any;\n showCloseIcon?: boolean;\n titleIconName?: string;\n title: string;\n}\n","<div class=\"dialog-header\">\n <div class=\"hr-title lg-bold title\" [attr.data-cy]=\"'dialog_title'\">\n <gravity-icon class=\"title-icon\" *ngIf=\"dialogContent.titleIconName && dialogContent.titleIconName.length > 0\"\n [iconName]=\"dialogContent.titleIconName\" [title]=\"dialogContent.titleIconName\"\n [size]=\"isNewIcon(dialogContent.titleIconName) ? null : 'md'\"\n [iconSize]=\"isNewIcon(dialogContent.titleIconName) ? 'lg-24' : null\"></gravity-icon>\n {{ dialogContent.title }}\n </div>\n <gravity-icon [attr.data-cy]=\"'dialog_closeButton'\" class=\"close\" (click)=\"closeModal()\"\n [iconName]=\"'unsuccess'\" *ngIf=\"dialogContent.showCloseIcon\" [iconSize]=\"'md-16'\"\n [title]=\"'Close'\"/>\n</div>\n\n<div class=\"dialog-body\" [class.with-footer]=\"dialogContent.footerTemplateRef || dialogContent.footerTemplateComponent\" [attr.data-cy]=\"'dialog_body'\">\n <ng-container *ngIf=\"dialogContent.contentTemplateRef\">\n <ng-container *ngTemplateOutlet=\"dialogContent.contentTemplateRef\"></ng-container>\n </ng-container>\n <ng-container *ngIf=\"dialogContent.contentTemplateComponent\">\n <ng-container\n *ngComponentOutlet=\"dialogContent.contentTemplateComponent; inputs: dialogContent.componentInputs\"></ng-container>\n </ng-container>\n</div>\n\n<div class=\"dialog-footer\" *ngIf=\"dialogContent.footerTemplateRef || dialogContent.footerTemplateComponent\">\n <ng-container *ngIf=\"dialogContent.footerTemplateRef\">\n <ng-container *ngTemplateOutlet=\"dialogContent.footerTemplateRef\"></ng-container>\n </ng-container>\n <ng-container *ngIf=\"dialogContent.footerTemplateComponent\">\n <ng-container *ngComponentOutlet=\"dialogContent.footerTemplateComponent\"></ng-container>\n </ng-container>\n</div>\n","import {Component, Input} from '@angular/core';\nimport {NgbActiveModal} from \"@ng-bootstrap/ng-bootstrap\";\nimport {GravityNotificationContent} from \"./gravity-notification-content.interface\";\n\n@Component({\n templateUrl: './gravity-notification.component.html',\n styleUrls: ['./gravity-notification.component.scss']\n})\nexport class GravityNotificationComponent {\n @Input() public notificationContent: GravityNotificationContent;\n\n constructor(private readonly ngbActiveModal: NgbActiveModal) {\n }\n\n public get iconByState() {\n if (this.notificationContent.state === 'success') {\n return 'check';\n } else if (this.notificationContent.state === 'error') {\n return 'unsuccess';\n } else if (this.notificationContent.state === 'warning') {\n return 'warning-circle'\n }\n }\n\n public closeModal(): void {\n this.ngbActiveModal.close();\n }\n}\n","<main class=\"alert-content {{notificationContent.state}}\" [attr.data-cy]=\"'notification'\">\n <gravity-icon class=\"close\" (click)=\"closeModal()\" data-cy=\"gravity_notification_informative_close_icon\"\n [iconName]=\"'unsuccess'\" [title]=\"'Close'\" [iconSize]=\"'md-16'\" [attr.data-cy]=\"'notification_closeButton'\"></gravity-icon>\n\n <div class=\"title\">\n <gravity-icon class=\"title-icon\" [iconName]=\"iconByState\" [iconSize]=\"'md-16'\"></gravity-icon>\n <h1 class=\"hr-title lg-bold\" [attr.data-cy]=\"'notification_title'\">{{notificationContent.title}}</h1>\n </div>\n\n <div class=\"content\">\n <h2 class=\"hr-body md-regular\" [attr.data-cy]=\"'notification_body'\">{{notificationContent.text}}</h2>\n <h2 class=\"hr-body md-regular\" *ngIf=\"notificationContent.details\">\n Detail: <b>{{notificationContent.details}}</b>\n </h2>\n <h2 class=\"hr-body md-regular\" *ngIf=\"notificationContent.errorCode\">\n Error code: <b>{{notificationContent.errorCode}}</b>\n </h2>\n </div>\n</main>\n","import {Injectable} from '@angular/core';\nimport {GravityNotificationContent} from \"../components/gravity-notification/gravity-notification-content.interface\";\n\n@Injectable({providedIn: 'root'})\nexport class GravityInstantNotificationsService {\n public readonly notifications: GravityNotificationContent[] = [];\n\n public showNotification(content: GravityNotificationContent): void {\n this.notifications.push(content);\n }\n\n public hideNotification(index: number): void {\n this.notifications.splice(index, 1);\n }\n\n public clearNotifications(): void {\n this.notifications.splice(0, this.notifications.length);\n }\n}\n","import {Component, Input} from '@angular/core';\nimport {GravityInstantNotificationsService} from \"../../services/gravity-instant-notifications.service\";\n\n@Component({\n selector: 'gravity-notification-instant-container',\n templateUrl: './gravity-notification-instant-container.component.html',\n styleUrls: ['./gravity-notification-instant-container.component.scss']\n})\nexport class GravityNotificationInstantContainerComponent {\n @Input() public delay: number = 5000;\n\n constructor(public readonly gravityInstantNotificationsService: GravityInstantNotificationsService) {\n }\n\n public iconByState(state: string): string {\n if (state === 'success') {\n return 'check';\n } else if (state === 'error') {\n return 'unsuccess';\n } else if (state === 'warning') {\n return 'warning-circle'\n }\n }\n}\n","<ngb-toast [autohide]=\"true\" [delay]=\"delay\"\n\n (hidden)=\"gravityInstantNotificationsService.hideNotification(i)\"\n\n *ngFor=\"let notification of gravityInstantNotificationsService.notifications; index as i\">\n <main class=\"alert-content {{notification.state}}\" [attr.data-cy]=\"'instantNotification'\">\n <gravity-icon class=\"close\" (click)=\"gravityInstantNotificationsService.hideNotification(i)\"\n data-cy=\"gravity_notification_instant_close_icon\" [iconName]=\"'unsuccess'\" [iconSize]=\"'md-16'\"\n [title]=\"'Close'\" [attr.data-cy]=\"'instantNotification_closeButton'\"></gravity-icon>\n\n <div class=\"title\">\n <gravity-icon class=\"title-icon\" [iconName]=\"iconByState(notification.state)\" [iconSize]=\"'md-16'\"></gravity-icon>\n <h1 class=\"hr-title md-bold\" [attr.data-cy]=\"'instantNotification_title'\">{{notification.title}}</h1>\n </div>\n\n <div class=\"content\">\n <h2 class=\"hr-body sm-regular\" [attr.data-cy]=\"'notification_body'\">{{notification.text}}</h2>\n <h2 class=\"hr-body sm-regular\" *ngIf=\"notification.errorCode\">\n Error code: <b>{{notification.errorCode}}</b>\n </h2>\n </div>\n </main>\n</ngb-toast>\n","import {AfterViewInit, Component, EventEmitter, Input, Output} from '@angular/core';\n\n@Component({\n selector: 'gravity-attach-file',\n templateUrl: './gravity-attach-file.component.html',\n styleUrls: ['./gravity-attach-file.component.scss']\n})\nexport class GravityAttachFileComponent implements AfterViewInit {\n @Output('response') public fileValueAsBase64StringResponse: EventEmitter<string> = new EventEmitter();\n\n @Input() public currentLang: string = 'en';\n @Input() public cypressTag: string;\n @Input() public inputId: string = '';\n @Input() public label: string;\n @Input() public required: boolean;\n @Input() public state: 'readonly' | 'disabled' | 'enabled' = \"enabled\";\n @Input() public supportedDocumentTypes: ('*' | '.pdf' | '.doc' | '.docx' | '.jpg' | '.png' | '.jpeg' | 'audio/*' | 'video/*' | 'image/*')[];\n @Input() public supportTextContent: string;\n @Input() public supportTextType: 'neutro' | 'negative' | 'positive';\n\n public file: File;\n public supportedTypes: string = '';\n\n ngAfterViewInit(): void {\n if (this.supportedDocumentTypes) {\n this.supportedDocumentTypes.forEach((value: string, index: number) => {\n this.supportedTypes += value;\n\n if (index != this.supportedDocumentTypes.length - 1) {\n this.supportedTypes += ',';\n }\n })\n } else {\n this.supportedTypes = \"*\";\n }\n }\n\n public handleFileInput($event: any) {\n this.file = $event.target.files[0];\n if (this.file) {\n GravityAttachFileComponent.convertFileToBase64(this.file).then((base64String: string) => {\n this.fileValueAsBase64StringResponse.emit(base64String);\n }).catch((error) => {\n console.error('Error loading file:', error.message);\n });\n }\n }\n\n public static convertFileToBase64(file: File): Promise<string> {\n return new Promise<string>((resolve, reject) => {\n const reader = new FileReader();\n\n reader.onload = () => {\n const base64String = reader.result as string;\n const base64WithoutPrefix = base64String.split(',')[1];\n resolve(base64WithoutPrefix);\n };\n\n reader.onerror = () => {\n reject(new Error('Failed to read the file.'));\n };\n\n reader.readAsDataURL(file);\n });\n }\n\n public removeFile(): void {\n this.file = null;\n this.fileValueAsBase64StringResponse.emit('');\n }\n}\n","<label class=\"hr-body sm-regular {{state}}\" [class.empty]=\"!file\" [class.full-input]=\"file\" *ngIf=\"label\">\n {{label}}\n <ng-container *ngIf=\"required\">\n <ng-container *ngIf=\"currentLang == 'es'\">- Requerido <span class=\"text-negative\">*</span></ng-container>\n <ng-container *ngIf=\"currentLang == 'en'\">- Required <span class=\"text-negative\">*</span></ng-container>\n </ng-container>\n <ng-container *ngIf=\"state == 'readonly'\">\n <ng-container *ngIf=\"currentLang == 'es'\">- Sólo lectura</ng-container>\n <ng-container *ngIf=\"currentLang == 'en'\">- Readonly</ng-container>\n </ng-container>\n <ng-container *ngIf=\"state == 'disabled'\">\n <ng-container *ngIf=\"currentLang == 'es'\">- Deshabilitado</ng-container>\n <ng-container *ngIf=\"currentLang == 'en'\">- Disabled</ng-container>\n </ng-container>\n</label>\n<div class=\"gravity-attach-file {{state}}\" [class.empty]=\"!file\" [class.full-input]=\"file\">\n <ng-container *ngIf=\"!file\">\n <input autocomplete=\"off\" class=\"hr-label md-regular\" hidden id=\"fileInput-{{inputId}}\" type=\"file\"\n [accept]=\"supportedTypes\"\n [attr.data-cy]=\"cypressTag\"\n [attr.disabled]=\"state == 'disabled' ? true : null\"\n [attr.readonly]=\"state == 'readonly' ? true : null\"\n\n (change)=\"handleFileInput($event)\">\n <label for=\"fileInput-{{inputId}}\">\n <gravity-button [iconName]=\"'clip'\" [type]=\"'tertiary'\" [size]=\"'md'\">\n {{label}}\n </gravity-button>\n </label>\n </ng-container>\n <ng-container *ngIf=\"file\">\n <label>\n <gravity-button (click)=\"removeFile()\" [iconName]=\"'clip'\" [type]=\"'tertiary'\" [size]=\"'md'\">\n {{currentLang == 'en' ? 'Remove file' : 'Remover archivo'}}\n </gravity-button>\n </label>\n <h3 class=\"hr-body sm-bold\">{{currentLang == 'en' ? 'File' : 'Archivo'}}: {{file.name}}</h3>\n </ng-container>\n</div>\n<p class=\"hr-body sm-regular support-text text-{{supportTextType}}\" *ngIf=\"supportTextContent\">\n {{supportTextContent}}\n</p>\n","import {\n AfterViewInit,\n Component,\n ElementRef,\n HostListener,\n Input,\n OnChanges,\n Renderer2,\n SimpleChanges,\n ViewChild\n} from '@angular/core';\n\n@Component({\n selector: 'gravity-table',\n templateUrl: './gravity-table.component.html',\n styleUrls: ['./gravity-table.component.scss']\n})\nexport class GravityTableComponent implements AfterViewInit, OnChanges {\n @Input() public tableDensity: 'standard' | 'compressed' = \"standard\";\n @Input() public tableSizeInput: 'xl' | 'lg' | 'md' | 'sm' | 'auto' = \"auto\";\n @ViewChild('tableContainer') public readonly tableContainer: ElementRef;\n\n private tableElement: ElementRef = null;\n public tableId: string;\n public tableSize: 'xl' | 'lg' | 'md' | 'sm' = 'xl';\n\n constructor(private readonly renderer: Renderer2) {\n let milliseconds: number = new Date().getTime();\n let randomNumber: number = Math.random() * 10;\n\n this.tableId = '' + (milliseconds * randomNumber / 2);\n }\n\n ngAfterViewInit(): void {\n this.tableElement = this.tableContainer?.nativeElement?.childNodes[0];\n this.renderer.setAttribute(this.tableElement, 'table-id', this.tableId);\n this.initializeComponent();\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (this.tableElement) {\n if (changes['tableDensity']) {\n this.adjustTableDensity(changes['tableDensity'].currentValue);\n }\n\n if (changes['tableSizeInput']) {\n this.tableSizeInput = changes['tableSizeInput'].currentValue;\n this.onResize();\n }\n }\n }\n\n private getTableHeaders(): string[] {\n let tableHeaderItems: NodeList = document.querySelectorAll('table[table-id=\"' + this.tableId + '\"] thead tr th');\n let tableHeaders: string[] = [];\n\n tableHeaderItems.forEach((tableHeaderItem: Node) => {\n tableHeaders.push(tableHeaderItem.childNodes[0].nodeValue);\n });\n\n return tableHeaders;\n }\n\n public initializeComponent(): void {\n let tableHeaders: string[] = this.getTableHeaders();\n this.initializeTable(tableHeaders);\n this.adjustTableDensity(this.tableDensity);\n this.adjustButtonsSize();\n this.onResize();\n }\n\n private initializeTable(tableHeaders: string[]): void {\n //Set corresponding tableHeader as an attribute of each td\n let tableBody: NodeList = document.querySelectorAll('table[table-id=\"' + this.tableId + '\"] tbody tr td');\n tableBody.forEach((tableBodyRow: Node, index: number) => {\n this.renderer.setAttribute(tableBodyRow, 'header-name', tableHeaders[index % tableHeaders.length]);\n });\n\n //Creates a copy of mobile-menu-trigger element for each tr\n let tableBodyRows: NodeList = document.querySelectorAll('table[table-id=\"' + this.tableId + '\"] tbody tr');\n let closeButtons: NodeList = document.querySelectorAll('gravity-button[id-reference=\"close-button\"]');\n\n tableBodyRows.forEach((tr: Node, index: number) => {\n let actionColum: NodeList = null;\n\n if (tr.firstChild) {\n actionColum = tr.firstChild.parentElement.querySelectorAll('td.actions-column');\n }\n\n if (actionColum?.length > 0) {\n let mobileMenuTrigger: HTMLDivElement = document.createElement('div');\n this.renderer.addClass(mobileMenuTrigger, 'mobile-menu-trigger');\n this.renderer.setAttribute(mobileMenuTrigger, 'cloned-node', 'true');\n\n let menuToggle: HTMLDivElement = document.createElement('div');\n this.renderer.addClass(menuToggle, 'menu-toggle');\n menuToggle.appendChild(document.createElement('span'));\n menuToggle.appendChild(document.createElement('span'));\n menuToggle.appendChild(document.createElement('span'));\n menuToggle.addEventListener(\"click\", () => {\n if (menuToggle.classList.contains('open')) {\n this.renderer.removeClass(menuToggle, 'open');\n this.renderer.removeClass(menuToggle.parentElement.lastElementChild, 'open');\n } else {\n this.renderer.addClass(menuToggle, 'open');\n this.renderer.addClass(menuToggle.parentElement.lastElementChild, 'open');\n }\n });\n mobileMenuTrigger.appendChild(menuToggle);\n\n let panel: HTMLDivElement = document.createElement('div');\n this.renderer.addClass(panel, 'panel');\n\n let closeButtonFromNodeList: Node = closeButtons.item(index);\n let closeButtonRemoved: Node = closeButtonFromNodeList.parentNode.removeChild(closeButtonFromNodeList);\n this.renderer.setAttribute(closeButtonRemoved, 'cloned-button', 'true');\n closeButtonRemoved.addEventListener(\"click\", () => {\n this.renderer.removeClass(menuToggle, 'open');\n this.renderer.removeClass(menuToggle.parentElement.lastElementChild, 'open');\n });\n\n panel.append(closeButtonRemoved);\n\n mobileMenuTrigger.appendChild(panel);\n\n tr.insertBefore(mobileMenuTrigger, tr.firstChild);\n }\n });\n }\n\n private adjustTableDensity(densityValue: 'standard' | 'compressed'): void {\n this.renderer.removeClass(this.tableElement, 'standard-table');\n this.renderer.removeClass(this.tableElement, 'compressed-table');\n\n this.renderer.addClass(this.tableElement, densityValue + '-table');\n }\n\n private adjustButtonsSize(): void {\n let actionsColumns: NodeList = document.querySelectorAll('table[table-id=\"' + this.tableId + '\"] .actions-column');\n actionsColumns.forEach((actionsColumn: Node) => {\n actionsColumn.childNodes.forEach((gravityButton: Node) => {\n let button: Node = gravityButton.childNodes[0];\n\n this.renderer.removeClass(button, 'gravity-size-lg');\n this.renderer.removeClass(button, 'gravity-size-md');\n this.renderer.removeClass(button, 'gravity-size-sm');\n this.renderer.removeClass(button, 'lg-bold');\n this.renderer.removeClass(button, 'md-bold');\n this.renderer.removeClass(button, 'sm-bold');\n\n this.renderer.addClass(button, 'gravity-size-sm');\n this.renderer.addClass(button, 'sm-bold');\n });\n });\n }\n\n @HostListener('window:resize', ['$event'])\n private onResize(): void {\n if (window.innerWidth <= 576) {\n this.tableSize = 'sm';\n } else if (window.innerWidth <= 992) {\n this.tableSize = 'md';\n } else if (window.innerWidth <= 1440) {\n this.tableSize = 'lg';\n } else {\n this.tableSize = 'xl';\n }\n\n this.adjustTableSize();\n }\n\n private adjustTableSize(): void {\n this.renderer.removeClass(this.tableElement, 'sm-table');\n this.renderer.removeClass(this.tableElement, 'md-table');\n this.renderer.removeClass(this.tableElement, 'lg-table');\n this.renderer.removeClass(this.tableElement, 'xl-table');\n\n if (this.tableSizeInput != 'auto') {\n this.tableSize = this.tableSizeInput;\n }\n\n this.renderer.addClass(this.tableElement, this.tableSize + '-table');\n this.adjustTable();\n }\n\n private adjustTable(): void {\n if (this.tableSize == 'md' || this.tableSize == 'sm') {\n let tableBodyRows: NodeList = document.querySelectorAll('table[table-id=\"' + this.tableId + '\"] tbody tr');\n\n tableBodyRows.forEach((tr: Node) => {\n if (tr.firstChild) {\n let trActionsColum: Node = tr.firstChild.parentElement.querySelectorAll('td.actions-column')[0];\n let mobileMenuTrigger: Node = tr.firstChild.parentElement.querySelectorAll('.mobile-menu-trigger[cloned-node=\"true\"]')[0];\n\n if (mobileMenuTrigger) {\n let mobileMenuTriggerPanel: Node = mobileMenuTrigger.lastChild;\n\n if (trActionsColum && mobileMenuTriggerPanel) {\n this.appendNodesList(mobileMenuTriggerPanel, trActionsColum.childNodes);\n }\n }\n }\n });\n }\n\n if (this.tableSize == 'lg' || this.tableSize == 'xl') {\n let tableBodyRows: NodeList = document.querySelectorAll('table[table-id=\"' + this.tableId + '\"] tbody tr');\n\n tableBodyRows.forEach((tr: Node) => {\n if (tr.firstChild) {\n let trActionsColum: Node = tr.firstChild.parentElement.querySelectorAll('td.actions-column')[0];\n let mobileMenuTrigger: Node = tr.firstChild.parentElement.querySelectorAll('.mobile-menu-trigger[cloned-node=\"true\"]')[0];\n\n if (trActionsColum && mobileMenuTrigger) {\n this.appendNodesList(trActionsColum, mobileMenuTrigger.lastChild.childNodes);\n }\n }\n });\n }\n }\n\n private appendNodesList(elementToAppend: Node, nodesList: NodeListOf<ChildNode>): Node {\n if (this.tableSize == 'md' || this.tableSize == 'sm') {\n let nodeListIndex: number = nodesList.length - 1;\n\n while (nodesList.length != 0) {\n let removedNode: Node = nodesList.item(nodeListIndex).parentNode.removeChild(nodesList.item(nodeListIndex));\n elementToAppend.insertBefore(removedNode, elementToAppend.firstChild);\n nodeListIndex--;\n }\n\n return elementToAppend;\n }\n\n if (this.tableSize == 'lg' || this.tableSize == 'xl') {\n let nodeListIndex: number = nodesList.length - 1;\n\n while (nodesList.length > 1) {\n let item: Node = nodesList.item(nodeListIndex);\n let closeButtonNode: Node = item.parentNode.querySelectorAll('gravity-button[id-reference=\"close-button\"]').item(0);\n\n if (item != closeButtonNode) {\n let removedNode: Node = item.parentNode.removeChild(item);\n elementToAppend.insertBefore(removedNode, elementToAppend.firstChild);\n }\n\n nodeListIndex--;\n }\n\n return elementToAppend;\n }\n }\n}\n","<div class=\"table-container {{tableSize}}\" #tableContainer>\n <ng-content></ng-content>\n</div>\n\n<gravity-button id-reference=\"close-button\" [iconName]=\"'unsuccess'\" [type]=\"'tertiary'\" [size]=\"'sm'\">Close menu</gravity-button>\n<gravity-button id-reference=\"close-button\" [iconName]=\"'unsuccess'\" [type]=\"'tertiary'\" [size]=\"'sm'\">Close menu</gravity-button>\n<gravity-button id-reference=\"close-button\" [iconName]=\"'unsuccess'\" [type]=\"'tertiary'\" [size]=\"'sm'\">Close menu</gravity-button>\n<gravity-button id-reference=\"close-button\" [iconName]=\"'unsuccess'\" [type]=\"'tertiary'\" [size]=\"'sm'\">Close menu</gravity-button>\n<gravity-button id-reference=\"close-button\" [iconName]=\"'unsuccess'\" [type]=\"'tertiary'\" [size]=\"'sm'\">Close menu</gravity-button>\n<gravity-button id-reference=\"close-button\" [iconName]=\"'unsuccess'\" [type]=\"'tertiary'\" [size]=\"'sm'\">Close menu</gravity-button>\n<gravity-button id-reference=\"close-button\" [iconName]=\"'unsuccess'\" [type]=\"'tertiary'\" [size]=\"'sm'\">Close menu</gravity-button>\n<gravity-button id-reference=\"close-button\" [iconName]=\"'unsuccess'\" [type]=\"'tertiary'\" [size]=\"'sm'\">Close menu</gravity-button>\n<gravity-button id-reference=\"close-button\" [iconName]=\"'unsuccess'\" [type]=\"'tertiary'\" [size]=\"'sm'\">Close menu</gravity-button>\n<gravity-button id-reference=\"close-button\" [iconName]=\"'unsuccess'\" [type]=\"'tertiary'\" [size]=\"'sm'\">Close menu</gravity-button>\n<gravity-button id-reference=\"close-button\" [iconName]=\"'unsuccess'\" [type]=\"'tertiary'\" [size]=\"'sm'\">Close menu</gravity-button>\n","export enum NodeSelectedState {\n checked,\n unChecked,\n indeterminate\n}\n","import {Injectable, OnDestroy} from '@angular/core';\nimport {BehaviorSubject, Observable, Subscription} from 'rxjs';\nimport {debounceTime, distinctUntilChanged} from 'rxjs/operators';\nimport {NodeItem} from '../models/node-item';\nimport {NodeState} from '../models/node-state';\nimport {NodeSelectedState} from '../models/node-selected-state';\nimport {TreeCallbacks} from '../models/tree-callbacks';\n\n@Injectable()\nexport class TreeService implements OnDestroy {\n private readonly filterChangeSubjectSubscription: Subscription;\n\n public callbacks: TreeCallbacks;\n public filterValue: string = '';\n public nodeItems: NodeItem<any>[];\n public selectedItems: any[] = [];\n public treeState: NodeState[];\n\n private filterChangeSubject = new BehaviorSubject(this.filterValue);\n public selectedItemsSubject = new BehaviorSubject(this.selectedItems);\n private selectedStates: NodeState[] = [];\n\n constructor() {\n this.filterChangeSubjectSubscription = this.filterChangeSubject.pipe(debounceTime(300), distinctUntilChanged()).subscribe(() => {\n this.filterTraverse(this.treeState, this.filterValue);\n });\n }\n\n ngOnDestroy() {\n this.filterChangeSubjectSubscription.unsubscribe();\n }\n\n public connect(): Observable<any[]> {\n return this.selectedItemsSubject.asObservable();\n }\n\n public setInitialState(): void {\n this.setInitialSelectedState();\n\n this.treeState.forEach(state => {\n this.reEvaluateSelectedState(state);\n });\n\n this.selectedItemsSubject.next(this.selectedItems);\n }\n\n public setInitialSelectedState(): void {\n this.traverseAndInitialize(this.treeState);\n\n this.treeState.forEach(state => {\n this.reEvaluateSelectedState(state);\n });\n\n this.selectedItemsSubject.next(this.selectedItems);\n }\n\n private traverseAndInitialize(states: NodeState[]): void {\n for (const state of states) {\n if (state.nodeItem.selected && state.showCheckbox && !state.disabled) {\n state.selected = true;\n state.selectedState = NodeSelectedState.checked;\n\n if (!this.selectedItems.includes(state.nodeItem.item)) {\n this.selectedItems.push(state.nodeItem.item);\n this.selectedStates.push(state);\n }\n }\n\n if (state.children?.length) {\n this.traverseAndInitialize(state.children);\n }\n }\n }\n\n\n public clear(): void {\n for (let state of this.selectedStates) {\n state.selected = false;\n state.selectedState = NodeSelectedState.unChecked;\n }\n\n this.selectedItems.length = 0;\n this.selectedStates.length = 0;\n }\n\n private filterTraverse(states: NodeState[], filter: string): boolean {\n let results: boolean[] = [];\n\n for (let state of states) {\n if (state.children.length > 0) {\n state.hasFilteredChildren = false;\n state.hasFilteredChildren = this.filterTraverse(state.children, filter);\n\n if (this.applyFilter(state, filter)) {\n state.hasFilteredChildren = true;\n }\n\n results.push(state.hasFilteredChildren);\n }\n }\n\n return results.some((item: boolean) => item);\n }\n\n private applyFilter(state: NodeState, filter: string): boolean {\n state.filteredChildren = this.filter(state.children, filter);\n return state.filteredChildren.length > 0;\n }\n\n private filter(states: NodeState[], value: string): NodeState[] {\n return states.filter((nodeState: NodeState) => nodeState.hasFilteredChildren || value === '' || nodeState.nodeItem.name.toLowerCase().indexOf(value) !== -1);\n }\n\n public checkboxClick(state: NodeState): void {\n this.toggleSelectedState(state, false);\n\n if (this.callbacks?.toggle) {\n this.callbacks.toggle(state.nodeItem);\n }\n }\n\n private toggleSelectedState(state: NodeState, ignoreDisabled: boolean): void {\n if (state.disabled && !ignoreDisabled) {\n return;\n }\n\n if (state.selectedState === NodeSelectedState.unChecked) {\n state.selectedState = NodeSelectedState.checked;\n state.selected = true;\n if (state.showCheckbox) {\n this.addSelected(state);\n }\n this.selectParents(state.parent);\n } else {\n\n this.setUnchecked(state, state.showCheckbox, ignoreDisabled);\n }\n\n this.selectedItemsSubject.next(this.selectedItems);\n\n if (state.parent) {\n this.childStateChanged(state.parent);\n }\n }\n\n private selectParents(state: NodeState | null): void {\n while (state) {\n if (state.showCheckbox) {\n state.selectedState = NodeSelectedState.checked;\n state.selected = true;\n this.addSelected(state);\n }\n state = state.parent;\n }\n }\n\n private setUnchecked(state: NodeState, propagate: boolean = false, ignoreDisabled?: boolean): void {\n if (state.disabled && !ignoreDisabled) {\n return;\n }\n\n if (state.showCheckbox) {\n state.selectedState = NodeSelectedState.unChecked;\n state.selected = false;\n\n this.removeSelected(state.nodeItem.item);\n\n if (this.callbacks?.unSelect) {\n this.callbacks.unSelect(state.nodeItem);\n }\n }\n\n if (propagate) {\n for (const child of state.children) {\n this.setUnchecked(child, propagate, ignoreDisabled);\n }\n }\n\n if (state.parent) {\n this.childStateChanged(state.parent);\n }\n }\n\n private removeSelected(item: any): void {\n let index = this.selectedItems.indexOf(item);\n if (index !== -1) {\n this.selectedItems.splice(index, 1);\n }\n let stateIndex = this.selectedStates.findIndex(s => s.nodeItem.item === item);\n if (stateIndex !== -1) {\n this.selectedStates.splice(stateIndex, 1);\n }\n this.selectedItemsSubject.next(this.selectedItems);\n }\n\n private static hasNoChildren(state: NodeState): boolean {\n return !state.children || state.children.length === 0;\n }\n\n private addSelected(state: NodeState): void {\n if (this.selectedItems.indexOf(state.nodeItem.item) === -1) {\n this.selectedItems.push(state.nodeItem.item);\n this.selectedStates.push(state);\n if (this.callbacks?.select) {\n this.callbacks.select(state.nodeItem);\n }\n }\n\n let current = state.parent;\n while (current) {\n if (this.selectedItems.indexOf(current.nodeItem.item) === -1) {\n this.selectedItems.push(current.nodeItem.item);\n this.selectedStates.push(current);\n }\n current = current.parent;\n }\n\n this.selectedItemsSubject.next(this.selectedItems);\n }\n\n public reEvaluateSelectedState(state: NodeState): void {\n if (!TreeService.hasNoChildren(state)) {\n this.childStateChanged(state);\n\n for (const child of state.children) {\n this.reEvaluateSelectedState(child);\n }\n }\n }\n\n private childStateChanged(state: NodeState): void {\n if (this.anyChildSelected(state)) {\n if (this.allChildrenSelected(state)) {\n if (state.showCheckbox) {\n state.selectedState = NodeSelectedState.checked;\n state.selected = true;\n if (state.nodeItem.id !== '0' && this.selectedItems.indexOf(state.nodeItem.item) === -1) {\n this.selectedItems.push(state.nodeItem.item);\n this.selectedStates.push(state);\n }\n } else {\n state.selectedState = NodeSelectedState.indeterminate;\n state.selected = false;\n }\n } else {\n state.selectedState = NodeSelectedState.indeterminate;\n state.selected = false;\n }\n } else if (!state.selected) {\n this.setUnchecked(state, false);\n }\n\n if (state.parent) {\n this.childStateChanged(state.parent);\n }\n\n this.selectedItemsSubject.next(this.selectedItems);\n }\n\n private anyChildSelected(state: NodeState): boolean {\n\n\n return state.children.find((item: NodeState) => item.selectedState === NodeSelectedState.checked || item.selectedState === NodeSelectedState.indeterminate) != null;\n }\n\n public static initState(parent: NodeState, nodeItem: NodeItem<any>): NodeState {\n return {\n parent: parent,\n children: [],\n filteredChildren: [],\n hasFilteredChildren: false,\n nodeItem: nodeItem,\n expanded: nodeItem.expanded !== false,\n disabled: nodeItem.disabled === true,\n selectedState: NodeSelectedState.unChecked,\n selected: false,\n showCheckbox: nodeItem.showCheckbox\n };\n }\n\n private allChildrenSelected(state: NodeState): boolean {\n if (state.nodeItem.children) {\n return state.children.every(it => it.selectedState === NodeSelectedState.checked) && state.children.length === state.nodeItem.children.length;\n } else {\n return state.children.every(it => it.selectedState === NodeSelectedState.checked);\n }\n }\n\n public filterChanged(value: string) {\n this.filterValue = value;\n this.filterChangeSubject.next(value);\n }\n}\n","import {Component, Input} from '@angular/core';\nimport {NodeState} from '../../models/node-state';\n\n@Component({\n selector: 'node-toggle',\n templateUrl: './node-toggle.component.html',\n styleUrls: ['./node-toggle.component.scss']\n})\nexport class NodeToggleComponent {\n @Input() public state: NodeState;\n}\n","<div class=\"node-toggle-wrapper\" [class.collapsable]=\"state.nodeItem?.children?.length > 0\"\n (click)=\"state.expanded = !state.expanded\">\n <gravity-icon [iconName]=\"state.expanded ? 'arrow-down' : 'arrow-right'\" [iconSize]=\"'md-16'\"\n *ngIf=\"state.nodeItem?.children?.length > 0\"></gravity-icon>\n</div>\n","import {Component, Input} from '@angular/core';\nimport {TreeService} from '../../service/tree-service';\nimport {NodeState} from \"../../models/node-state\";\n\n@Component({\n selector: 'node-checkbox',\n templateUrl: './node-checkbox.component.html',\n styleUrls: ['./node-checkbox.component.scss']\n})\nexport class NodeCheckboxComponent {\n @Input() public state: NodeState;\n\n constructor(private readonly treeService: TreeService) {\n }\n\n public clickOnCheckbox(): void {\n if (!this.state.disabled) {\n this.treeService.checkboxClick(this.state);\n\n setTimeout(() => {\n this.treeService.reEvaluateSelectedState(this.state);\n }, 1);\n }\n }\n}\n","<gravity-icon class=\"border-radius-sm checkbox-icon\" [class.unselect]=\"state.selectedState == 1\"\n [class.select]=\"state.selectedState != 1\" [class.disabled]=\"state.disabled\"\n (click)=\"clickOnCheckbox()\"\n [iconName]=\"state.selectedState === 2 ? 'checkbox-dash' : 'check'\"\n [iconSize]=\"'lg-24'\"></gravity-icon>\n","import {Component, Input} from '@angular/core';\nimport {NodeState} from '../../models/node-state';\n\n@Component({\n selector: 'node-name',\n templateUrl: './node-name.component.html',\n styleUrls: ['./node-name.component.scss']\n})\nexport class NodeNameComponent {\n @Input() public state: NodeState;\n}\n","<div [class.disabled]=\"state.disabled\" class=\"node-name\">\n <span class=\"hr-label md-regular\">{{state.nodeItem.name}}</span>\n</div>\n","import {Component, Input} from '@angular/core';\nimport {NodeState} from '../models/node-state';\n\n@Component({\n selector: 'tree-node',\n templateUrl: './node.component.html',\n styleUrls: ['./node.component.scss']\n})\nexport class NodeComponent {\n @Input() public nodeState: NodeState;\n}\n","<div class=\"node-container\">\n <div class=\"node-content\">\n <node-toggle [state]=\"nodeState\"></node-toggle>\n <node-checkbox [state]=\"nodeState\" *ngIf=\"nodeState.showCheckbox\"></node-checkbox>\n <node-name [state]=\"nodeState\"></node-name>\n </div>\n <div class=\"collapsible-wrapper\" *ngIf=\"nodeState.nodeItem.children\"\n [class.collapsed]=\"!nodeState.expanded && nodeState.nodeItem.children.length > 0 && nodeState.filteredChildren.length > 0\">\n <div class=\"collapsible\">\n <tree-node class=\"node-offset\" [nodeState]=\"child\"\n *ngFor=\"let child of nodeState.filteredChildren\"></tree-node>\n </div>\n </div>\n</div>\n","import {Component, EventEmitter, Input, OnChanges, OnDestroy, Output, SimpleChanges} from '@angular/core';\nimport {TreeService} from \"./service/tree-service\";\nimport {Subscription, timer} from \"rxjs\";\nimport {NodeItem} from \"./models/node-item\";\nimport {TreeCallbacks} from \"./models/tree-callbacks\";\nimport {NodeState} from \"./models/node-state\";\n\n@Component({\n selector: 'gravity-tree-view',\n templateUrl: './gravity-tree-view.component.html',\n styleUrls: ['./gravity-tree-view.component.scss'],\n providers: [TreeService]\n})\nexport class GravityTreeViewComponent implements OnDestroy, OnChanges {\n private readonly treeServiceSubscription: Subscription;\n\n @Input() callbacks: TreeCallbacks;\n @Input() nodeItems: NodeItem<any>[];\n @Input() showFilterInput: boolean = false;\n @Output() selectedItems = new EventEmitter<any>();\n\n constructor(public readonly treeService: TreeService) {\n this.treeServiceSubscription = treeService.connect().subscribe((items: any[]) => {\n const subscription = timer(0).subscribe(() => {\n this.selectedItems.emit(items);\n subscription.unsubscribe();\n });\n });\n }\n\n ngOnDestroy() {\n this.treeServiceSubscription.unsubscribe();\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes.callbacks) {\n this.treeService.callbacks = this.callbacks;\n }\n\n if (changes.nodeItems) {\n this.initialize();\n }\n }\n\n public initialize(): void {\n this.treeService.callbacks = this.callbacks;\n this.treeService.nodeItems = this.nodeItems;\n this.treeService.treeState = this.initTreeStructure(null, this.treeService.nodeItems);\n\n this.treeService.clear();\n this.treeService.setInitialState();\n }\n\n private initTreeStructure(parent: NodeState, nodeItems: NodeItem<any>[]): NodeState[] {\n const treeStructure: NodeState[] = [];\n\n nodeItems.forEach((nodeItem: NodeItem<any>) => {\n const nodeState: NodeState = TreeService.initState(parent, nodeItem);\n\n if (nodeItem.children) {\n nodeState.children = this.initTreeStructure(nodeState, nodeItem.children);\n nodeState.filteredChildren = nodeState.children;\n }\n\n treeStructure.push(nodeState);\n });\n\n return treeStructure;\n }\n\n public changeFilter(newValue: string): void {\n this.treeService.filterChanged(newValue.toLowerCase());\n }\n}\n","<gravity-text-field [label]=\"'Change filter'\" *ngIf=\"showFilterInput\"\n (response)=\"changeFilter($event)\"></gravity-text-field>\n<tree-node [nodeState]=\"state\" *ngFor=\"let state of treeService.treeState\"></tree-node>\n","import {Component, EventEmitter, Input, Output} from '@angular/core';\n\n@Component({\n selector: 'gravity-stepper',\n templateUrl: './gravity-stepper.component.html',\n styleUrls: ['./gravity-stepper.component.scss']\n})\nexport class GravityStepperComponent {\n @Input() public currentLang: string = 'en';\n @Input() public stepLabels: string[];\n\n @Output('currentStep') public currentStepResponse: EventEmitter<number> = new EventEmitter<number>();\n\n public currentStep: number = 1;\n\n public goNext(): void {\n this.currentStep++;\n this.currentStepResponse.emit(this.currentStep);\n }\n\n public goBack(): void {\n this.currentStep--;\n this.currentStepResponse.emit(this.currentStep);\n }\n\n public reset(): void {\n this.currentStep = 1;\n this.currentStepResponse.emit(this.currentStep);\n }\n}\n","<div class=\"stepper-header\">\n <div class=\"step\" *ngFor=\"let stepLabel of stepLabels; let index = index\"\n [class.current]=\"(index + 1) == currentStep\"\n [class.pending]=\"(index + 1) > currentStep\"\n [class.completed]=\"(index + 1) < currentStep\"\n [style.--step-width]=\"(100 / stepLabels.length) + '%'\">\n <hr>\n <div class=\"step-content gravity-padding-right-md\">\n <gravity-icon class=\"border-radius-rounded gravity-margin-top-xs gravity-margin-right-sm gravity-padding-xs\"\n [style.--icon-color]=\"'var(--gravity-icon-color)'\" [iconName]=\"'check'\"\n [iconSize]=\"'xl-32'\"></gravity-icon>\n <div>\n <p class=\"step-number hr-label md-regular\">\n {{currentLang == 'es' ? 'Paso' : 'Step'}} 0{{index + 1}}\n </p>\n <p class=\"step-text hr-label md-bold\">{{stepLabel}}</p>\n <p class=\"border-radius-rounded hr-label md-regular step-state\"\n [class.current]=\"(index + 1) == currentStep\"\n [class.pending]=\"(index + 1) > currentStep\"\n [class.completed]=\"(index + 1) < currentStep\">\n {{currentLang == 'en' ? ((index + 1) == currentStep ? 'In progress' : (index + 1) > currentStep ? 'Pending' : 'Completed') : ''}}\n {{currentLang == 'es' ? ((index + 1) == currentStep ? 'En progreso' : (index + 1) > currentStep ? 'Pendiente' : 'Completado') : ''}}\n </p>\n </div>\n </div>\n </div>\n <div class=\"gravity-margin-top-xs mobile\">\n <p class=\"border-radius-xs current gravity-margin-right-xs hr-label md-regular step-state\">\n {{currentLang == 'en' ? 'In progress' : 'En progreso'}}\n </p>\n <p class=\"step-number gravity-margin-right-xs hr-label md-regular\">\n {{currentLang == 'es' ? 'Paso' : 'Step'}} 0{{currentStep}}:\n </p>\n <p class=\"step-text hr-label md-bold\">{{stepLabels[currentStep - 1]}}</p>\n </div>\n</div>\n<div class=\"stepper-content\">\n <ng-content></ng-content>\n</div>\n","import {Component, EventEmitter, Input, Output, Renderer2, ViewChild} from '@angular/core';\n\n@Component({\n selector: 'gravity-text-field-number-only',\n templateUrl: './gravity-text-field-number-only.component.html',\n styleUrls: ['./gravity-text-field-number-only.component.scss', './gravity-text-field-number-only.variables.scss']\n})\nexport class GravityTextFieldNumberOnlyComponent {\n @Output('response') public textFieldValueResponse: EventEmitter<string> = new EventEmitter();\n @ViewChild('digitContainer0', {static: false}) private digitContainer0: any;\n @ViewChild('digitContainer1', {static: false}) private digitContainer1: any;\n @ViewChild('digitContainer2', {static: false}) private digitContainer2: any;\n @ViewChild('digitContainer3', {static: false}) private digitContainer3: any;\n @ViewChild('digitContainer4', {static: false}) private digitContainer4: any;\n @ViewChild('digitContainer5', {static: false}) private digitContainer5: any;\n\n // Component\n @Input() public currentLang: string = 'en';\n @Input() public customState: 'default' | 'active' | 'hover' | 'typing' | 'typed' | 'typed-error' | 'typed-positive' | 'disabled' | 'readonly' = 'default';\n @Input() public cypressTag: string;\n @Input() public label: string;\n @Input() public required: boolean;\n @Input() public size: 'sm' | 'md' = 'md';\n @Input() public supportText: string;\n\n public focusInput: boolean = false;\n public inputValue: string = '';\n\n constructor(private readonly renderer: Renderer2) {\n }\n\n public clearInput(): void {\n this.inputValue = '';\n }\n\n public getTextFieldStatus(): string {\n if (this.customState == 'default') {\n if (!this.focusInput && !this.inputValue) {\n return 'active';\n } else if (!this.focusInput && this.inputValue) {\n return 'typed';\n } else {\n return 'typing';\n }\n } else {\n return this.customState;\n }\n }\n\n public onKeyDownEvent($event: KeyboardEvent): void {\n let navigationKeys: string[] = ['Backspace', 'Delete', 'Tab', 'Escape', 'Home', 'End', 'ArrowLeft', 'ArrowRight', 'Clear', 'Copy', 'Paste'];\n\n if (\n navigationKeys.indexOf($event.key) > -1 || // Allow: navigation keys: backspace, delete, arrows etc.\n ($event.key === 'a' && $event.ctrlKey === true) || // Allow: Ctrl+A\n ($event.key === 'c' && $event.ctrlKey === true) || // Allow: Ctrl+C\n ($event.key === 'v' && $event.ctrlKey === true) || // Allow: Ctrl+V\n ($event.key === 'x' && $event.ctrlKey === true) || // Allow: Ctrl+X\n ($event.key === 'a' && $event.metaKey === true) || // Allow: Cmd+A (Mac)\n ($event.key === 'c' && $event.metaKey === true) || // Allow: Cmd+C (Mac)\n ($event.key === 'v' && $event.metaKey === true) || // Allow: Cmd+V (Mac)\n ($event.key === 'x' && $event.metaKey === true) // Allow: Cmd+X (Mac)\n ) {\n // let it happen, don't do anything\n return;\n }\n\n // Ensure that it is a number and stop the keypress\n if (\n ($event.shiftKey || ($event.keyCode < 48 || $event.keyCode > 57)) &&\n ($event.keyCode < 96 || $event.keyCode > 105)\n ) {\n $event.preventDefault();\n }\n }\n\n public returnValue(): void {\n if (this.inputValue == '') {\n this.textFieldValueResponse.emit('');\n } else {\n this.textFieldValueResponse.emit(this.inputValue);\n }\n }\n\n public setFocus(textareaElement: HTMLTextAreaElement): void {\n let containers: any[] = [this.digitContainer0, this.digitContainer1, this.digitContainer2, this.digitContainer3, this.digitContainer4, this.digitContainer5];\n\n for (let index = 0; index < containers.length; index++) {\n if (index == textareaElement.selectionStart) {\n this.renderer.addClass(containers[index].nativeElement, 'focused');\n } else {\n this.renderer.removeClass(containers[index].nativeElement, 'focused');\n }\n }\n\n if (textareaElement.selectionStart == 6) {\n this.renderer.addClass(textareaElement, 'hide-caret');\n } else {\n this.renderer.removeClass(textareaElement, 'hide-caret');\n }\n }\n}\n","<div class=\"{{size}}\" style=\"width: fit-content\">\n <label class=\"hr-label sm-bold {{getTextFieldStatus()}}\" [class.custom-label-size]=\"size == 'sm'\" *ngIf=\"label\">\n {{label}} <span *ngIf=\"required || getTextFieldStatus() == 'typed-error'\">*</span>\n </label>\n <div class=\"text-field-number-only-wrapper {{getTextFieldStatus()}}\">\n <textarea [attr.data-cy]=\"cypressTag ? 'textFieldNumbers_'+cypressTag : null\"\n [attr.disabled]=\"customState == 'disabled' ? true : null\"\n [attr.readonly]=\"customState == 'readonly' ? true : null\"\n #textAreaElement\n\n autocomplete=\"off\"\n class=\"hr-label {{size}}-regular\"\n cols=\"6\"\n maxlength=\"6\"\n minlength=\"6\"\n inputmode=\"numeric\"\n placeholder=\"______\"\n rows=\"1\"\n type=\"text\"\n\n [(ngModel)]=\"inputValue\"\n\n (blur)=\"focusInput = false\"\n (click)=\"setFocus(textAreaElement)\"\n (focus)=\"focusInput = true\"\n (keydown)=\"onKeyDownEvent($event)\"\n (keyup)=\"setFocus(textAreaElement); returnValue()\"></textarea>\n <div class=\"digit-container\" #digitContainer0></div>\n <div class=\"digit-container\" #digitContainer1></div>\n <div class=\"digit-container\" #digitContainer2></div>\n <div class=\"digit-container\" #digitContainer3></div>\n <div class=\"digit-container\" #digitContainer4></div>\n <div class=\"digit-container\" #digitContainer5></div>\n <div class=\"overflow\"></div>\n </div>\n <p class=\"hr-label sm-regular supporting-text {{getTextFieldStatus()}}\" [class.custom-label-size]=\"size == 'sm'\"\n *ngIf=\"supportText\">\n <gravity-icon [iconName]=\"'question-circle'\" *ngIf=\"getTextFieldStatus() == 'typed-error'\"\n [iconSize]=\"'sm-12'\"></gravity-icon>\n {{supportText}}\n </p>\n <p class=\"hr-label sm-regular supporting-text {{getTextFieldStatus()}}\" [class.custom-label-size]=\"size == 'sm'\"\n *ngIf=\"!supportText && getTextFieldStatus() == 'active' && inputValue == '' && required\">\n {{currentLang == 'es' ? 'Requerido' : 'Required'}}\n </p>\n</div>\n","import {Component, EventEmitter, Input, Output} from '@angular/core';\n\n@Component({\n selector: 'gravity-icon-button',\n templateUrl: './gravity-icon-button.component.html',\n styleUrls: ['./gravity-icon-button.component.scss']\n})\nexport class GravityIconButtonComponent {\n @Input() public cypressTag: string;\n @Input() public icon: string;\n @Input() public supportText: string;\n @Input() public variant: boolean = false;\n @Input() public size: 'sm' | 'md' = 'sm';\n @Input() public type: 'primary' | 'secondary' = \"primary\";\n @Input() public state: 'active' | 'disabled' = 'active';\n @Input() public badge: { type: 'warning' | 'neutro', text?: string | null } | null = null;\n\n @Output() public clickOnIcon: EventEmitter<void> = new EventEmitter<void>();\n\n public isPressed: boolean = false;\n\n public onClick(): void {\n if (this.state != 'disabled') {\n this.clickOnIcon.emit();\n }\n }\n\n public onPress(): void {\n if (this.state !== 'disabled') {\n this.isPressed = true;\n }\n }\n\n public onRelease(): void {\n this.isPressed = false;\n }\n}\n","<div class=\"gravity-icon-button {{type}} {{isPressed ? 'pressed' : state}} {{size}}\" (click)=\"onClick()\"\n (mousedown)=\"onPress()\" (mouseup)=\"onRelease()\" (mouseleave)=\"onRelease()\" [attr.data-cy]=\"cypressTag ? 'iconButton_' + cypressTag : null\">\n\n <!--Badge-->\n <div *ngIf=\"badge && state != 'disabled'\"\n class=\"icon-button-badge{{badge.text ? '-text' : '' }} {{badge.type}}\">\n <p *ngIf=\"badge.text\"\n class=\"hr-body sm-regular\">{{ badge.text }}</p>\n </div>\n\n <!--Icon-->\n <div class=\"icon-center\">\n <gravity-icon [iconName]=\"icon\" [iconSize]=\"type === 'secondary'? 'md-16': size === 'sm' ? 'sm-12' : 'md-16'\"/>\n </div>\n\n <!--Support text-->\n <div *ngIf=\"supportText\" class=\"support-text\">\n <span class=\"hr-body sm-regular\">{{ supportText }}</span>\n </div>\n</div>\n\n","import {Component, Input, OnChanges} from '@angular/core';\n\n@Component({\n selector: 'gravity-status-indicator',\n templateUrl: './gravity-status-indicator.component.html',\n styleUrls: ['./gravity-status-indicator.component.scss']\n})\nexport class GravityStatusIndicatorComponent implements OnChanges {\n @Input() public icon: string;\n @Input() public text: string;\n @Input() public cypressTag: string;\n @Input() public size: 'sm' | 'md' = 'sm';\n @Input() public type: 'primary' | 'secondary' = 'primary';\n @Input() public status: 'positive' | 'positive-secondary' | 'negative' | 'negative-secondary' | 'attention' | 'neutro' | 'disabled' = 'neutro';\n\n\n ngOnChanges() {\n this.capitalizeFirst();\n }\n\n public capitalizeFirst(): string {\n if (!this.text) return '';\n this.text = this.text.charAt(0).toUpperCase() + this.text.slice(1).toLowerCase();\n }\n\n\n}\n","<div class=\"gravity-status-indicator hr-body {{size}}-regular {{status}} {{size}}\" *ngIf=\"type === 'primary'\" [attr.data-cy]=\"cypressTag ? 'statusIndicator_' + cypressTag : null\">\n <span *ngIf=\"text\" >{{text}}</span> <gravity-icon [iconName]=\"icon\" [iconSize]=\"'sm-12'\" *ngIf=\"icon\"></gravity-icon>\n</div>\n\n<div class=\"gravity-status-indicator-dot hr-body sm-regular {{status}}\" *ngIf=\"type === 'secondary'\" [attr.data-cy]=\"cypressTag ? 'statusIndicator_' + cypressTag : null\">\n <div></div> <span>{{text}}</span>\n</div>","import {Component, EventEmitter, Input, OnChanges, OnInit, Output, SimpleChanges} from '@angular/core';\n\n@Component({\n selector: 'gravity-avatar-stack',\n templateUrl: './gravity-avatar-stack.component.html',\n styleUrls: ['./gravity-avatar-stack.component.scss']\n})\nexport class GravityAvatarStackComponent implements OnInit, OnChanges {\n @Input() public items: Array<any>;\n @Input() public size: 'lg' | 'md' | 'sm';\n @Input() public type: 'network' | 'coin';\n @Input() public selectionMode: 'single' | 'multiple' | 'none' = 'single';\n @Input() public config: { icon: string, label: string };\n @Input() public maxDisplayedItems: number;\n\n @Output() public clickOnIcon: EventEmitter<any[]> = new EventEmitter<any>();\n\n public displayedItems: any[] = [];\n public selectedIndexes: number[] = [];\n public selectedItems: Array<any> = [];\n\n ngOnChanges(changes: SimpleChanges) {\n const shouldReset =\n (changes['maxDisplayedItems'] && !changes['maxDisplayedItems'].firstChange) ||\n (changes['selectionMode'] && !changes['selectionMode'].firstChange) ||\n (changes['type'] && !changes['type'].firstChange);\n\n if (shouldReset) {\n this.selectedIndexes = [];\n this.selectedItems = [];\n\n if (changes['maxDisplayedItems']) {\n if (this.maxDisplayedItems && this.maxDisplayedItems < this.items.length) {\n this.displayedItems = this.items.slice(0, this.maxDisplayedItems);\n } else {\n this.displayedItems = this.items;\n }\n }\n }\n }\n\n ngOnInit() {\n if (this.maxDisplayedItems) {\n this.displayedItems = this.maxDisplayedItems < this.items.length ? this.items.slice(0, this.maxDisplayedItems) : this.items;\n this.selectionMode = 'none'\n } else {\n this.displayedItems = this.items;\n }\n }\n\n public onClick(index: number): void {\n if (this.selectionMode != 'none') {\n const selectedIndex = this.selectedIndexes.indexOf(index);\n\n if (this.selectionMode === 'multiple') {\n if (selectedIndex !== -1) {\n this.selectedIndexes = this.selectedIndexes.filter(i => i !== index);\n this.selectedItems = this.selectedItems.filter(item => item !== this.displayedItems[index]);\n } else {\n this.selectedIndexes.push(index);\n this.selectedItems.push(this.displayedItems[index]);\n }\n } else if (this.selectionMode === 'single') {\n if (selectedIndex === -1) {\n this.selectedIndexes = [index];\n this.selectedItems = [this.displayedItems[index]];\n } else {\n this.selectedIndexes = [];\n this.selectedItems = [];\n }\n }\n this.clickOnIcon.emit(this.selectedItems);\n }\n }\n\n}","<div class=\"stack-icon-container\">\n <ng-container *ngFor=\"let item of displayedItems; let i = index\">\n <div class=\"icon-wrapper\" [style.z-index]=\"selectedIndexes.includes(i) ? 100 : displayedItems.length - i\"\n [class.selected]=\"selectedIndexes.includes(i)\">\n <gravity-icon\n class=\"avatar-icon pointer {{size}}\"\n (click)=\"onClick(i);\" [attr.data-cy]=\"'stack-item-' + item[config.label]\"\n [iconName]=\"type + '-id-' + item[config.icon]\"\n [isCoin]=\"true\">\n </gravity-icon>\n\n <p *ngIf=\"config.label && selectionMode != 'none'\"\n class=\"hr-body sm-regular hover-text\">{{ item[config.label] }}</p>\n </div>\n </ng-container>\n <span *ngIf=\"maxDisplayedItems < items.length\">+{{ items.length - maxDisplayedItems }}</span>\n</div>","import {Component, Input} from '@angular/core';\n\n@Component({\n selector: 'gravity-generic-avatar',\n templateUrl: './gravity-generic-avatar.component.html',\n styleUrls: ['./gravity-generic-avatar.component.scss']\n})\nexport class GravityGenericAvatarComponent {\n @Input() public cypressTag: string;\n @Input() public label: string;\n @Input() public initials: string;\n @Input() public isDisabled: boolean;\n @Input() public size: 'sm' | 'md' = 'sm';\n\n public getStatus(): string {\n if (this.isDisabled) {\n return 'disabled';\n } else {\n return 'active';\n }\n }\n}\n","<div class=\"gravity-generic-avatar {{getStatus()}} {{size}}\" [attr.data-cy]=\"cypressTag ? 'genericAvatar_' + cypressTag : null\">\n <div class=\"gravity-margin-right-xxs\">\n <span class=\"hr-body sm-bold\">{{initials}}</span>\n </div>\n <label class=\"hr-body\" [ngClass]=\"size === 'sm' ? 'sm-regular' : 'md-bold'\">{{label}}</label>\n</div>","import {Component, EventEmitter, Input, Output} from '@angular/core';\n\n@Component({\n selector: 'gravity-multi-language',\n templateUrl: './gravity-multi-language.component.html',\n styleUrls: ['./gravity-multi-language.component.scss'],\n})\nexport class GravityMultiLanguageComponent {\n @Output('selectedLanguage') public selectedLanguageResponse: EventEmitter<string> = new EventEmitter<string>();\n\n @Input() public cypressTag: string;\n @Input() public languages: string[];\n @Input() public selectedLanguage: string;\n @Input() public size: 'sm' | 'md' = \"md\";\n\n\n public changeLanguage(language: string): void {\n this.selectedLanguageResponse.emit(language);\n }\n}\n","<div class=\"gravity-multi-language {{size}}\" [attr.data-cy]=\"'multilanguage'\" >\n <gravity-icon\n [iconName]=\"'language'\"\n [style.--icon-color]=\"'var(--cta-primary)'\"\n [iconSize]=\"size == 'sm' ? 'md-16' : 'lg-24'\">\n </gravity-icon>\n <div class=\"languages {{size}}\">\n <div *ngFor=\"let language of languages\">\n <span class=\"hr-body\" [attr.data-cy]=\"'multilanguage_'+language\"\n (click)=\"changeLanguage(language)\"\n [class.selected]=\"selectedLanguage === language\"\n [ngClass]=\"selectedLanguage === language ? size + '-bold' : size + '-regular'\">\n {{ language }}\n </span>\n </div>\n </div>\n</div>\n","import {Component, EventEmitter, Input, Output} from '@angular/core';\nimport {ModalButtonConfig, ModalLinkConfig} from \"./gravity-modal.model\";\n\n@Component({\n selector: 'gravity-modal',\n templateUrl: './gravity-modal.component.html',\n styleUrls: ['./gravity-modal.component.scss']\n})\nexport class GravityModalComponent {\n @Input() title: string;\n @Input() iconName: string;\n @Input() preTitle: string;\n @Input() subTitle: string;\n @Input() isVisible = false;\n @Input() state: 'positive' | 'negative' | 'warning' | 'neutral' = 'positive';\n\n @Input() link: ModalLinkConfig;\n @Input() primaryBtn: ModalButtonConfig;\n @Input() secondaryBtn: ModalButtonConfig;\n\n @Output() close = new EventEmitter<void>();\n\n closeModal() {\n this.close.emit();\n }\n\n protected readonly onclose = onclose;\n}\n","<div *ngIf=\"isVisible\" class=\"gravity-modal-cover\"></div>\n\n<div *ngIf=\"isVisible\" class=\"gravity-modal-container elevation-sm\">\n <div class=\"modal-header {{state}}\">\n\n <span class=\"hr-body sm-regular\" [class.span-margin]=\"iconName\">{{ preTitle }}</span>\n\n <div class=\"title\">\n <gravity-icon *ngIf=\"iconName\" [style.--icon-color]=\"'var(--state-color)'\"\n [size]=\"'md'\" [iconName]=\"iconName\" [iconSize]=\"'md-16'\" class=\"icon-left\"> </gravity-icon>\n\n <h1 class=\"hr-title md-bold\" [attr.data-cy]=\"'modal_title'\">{{ title }}</h1>\n </div>\n\n <span class=\"hr-body sm-regular\" [class.span-margin]=\"iconName\">{{ subTitle }}</span>\n\n <div class=\"close-button\">\n <gravity-icon [style.--icon-color]=\"'var(--text-primary)'\" [size]=\"'md'\" (click)=\"closeModal()\"\n class=\"close\" [iconName]=\"'unsuccess'\" [iconSize]=\"'md-16'\" [title]=\"'Close'\" [attr.data-cy]=\"'modal_closeButton'\"/>\n </div>\n </div>\n\n <div class=\"modal-body\" [attr.data-cy]=\"'modal_body'\"> <ng-content> </ng-content> </div>\n\n <div class=\"modal-footer\">\n <gravity-button *ngIf=\"primaryBtn?.text || primaryBtn?.icon\"\n [customState]=\"'active'\" [iconName]=\"primaryBtn?.icon\" [disabled]=\"primaryBtn.disabled\"\n [size]=\"'sm'\" [type]=\"primaryBtn?.type\" [iconPosition]=\"primaryBtn?.iconPosition || 'left'\"\n (click)=\"primaryBtn.callback?.()\" [attr.data-cy]=\"'modal_primaryButton'\">{{ primaryBtn?.text }} </gravity-button>\n\n <gravity-button *ngIf=\"secondaryBtn?.text || secondaryBtn?.icon\"\n [customState]=\"'active'\" [iconName]=\"secondaryBtn?.icon\" [disabled]=\"secondaryBtn.disabled\"\n [size]=\"'sm'\" [type]=\"secondaryBtn?.type\" [iconPosition]=\"secondaryBtn?.iconPosition || 'left'\"\n (click)=\"secondaryBtn.callback?.()\" [attr.data-cy]=\"'modal_secondaryButton'\">{{ secondaryBtn?.text }} </gravity-button>\n\n <gravity-link *ngIf=\"link?.text || link?.icon\" [linkText]=\"link?.text\" [iconName]=\"link?.icon\" (click)=\"link?.callback?.()\"\n [iconPosition]=\"link?.iconPosition || 'left'\" [state]=\"link?.state || 'active'\" [link]=\"link?.url\" [fontClass]=\"link?.fontClass\" [attr.data-cy]=\"'modal_link'\"> </gravity-link>\n </div>\n</div>\n\n\n","import {Component, EventEmitter, Input, Output} from '@angular/core';\n\n@Component({\n selector: 'gravity-tab-primary',\n templateUrl: './gravity-tab-primary.component.html',\n styleUrls: ['./gravity-tab-primary.component.scss']\n})\nexport class GravityTabPrimaryComponent {\n @Input() selected: number = 0;\n @Input() size: 'sm' | 'md' | 'lg' = 'sm';\n @Input() paddingClass: string = 'gravity-padding-left-none';\n @Input() tabs: { title: string, icon?: string, cypressTag?: string}[] = [];\n\n @Output() pressed = new EventEmitter<number>();\n\n public setActiveTab(index: number): void {\n this.selected = index;\n this.pressed.emit(index);\n }\n}\n","<div class=\"gravity-tab-primary\">\n <div class=\"tabs-container\">\n <div class=\"below-line {{paddingClass}}\"></div>\n <div class=\"tab {{size}}\" *ngFor=\"let tab of tabs; let i = index\" [class.selected]=\"selected === i\"\n [attr.data-cy]=\"tab.cypressTag ? 'tabPrimary_' + tab.cypressTag : null\" (click)=\"setActiveTab(i)\">\n <gravity-icon *ngIf=\"tab.icon\" [style.--icon-color]=\"'var(--text-highlight-primary)'\" [size]=\"'md'\"\n [iconName]=\"tab.icon\" [iconSize]=\"'md-16'\" class=\"icon-left\">\n </gravity-icon>\n <p class=\"hr-label\" [ngClass]=\"selected === i ? 'sm-bold' : 'sm-regular'\">{{tab.title}}</p>\n </div>\n <div class=\"bottom-line\"></div>\n </div>\n</div>\n\n","import { Component, Input, Output, EventEmitter } from '@angular/core';\n\n@Component({\n selector: 'gravity-tab-secondary',\n templateUrl: './gravity-tab-secondary.component.html',\n styleUrls: ['./gravity-tab-secondary.component.scss']\n})\nexport class GravityTabSecondaryComponent {\n @Input() selected: number = 0;\n @Input() size: 'sm' | 'md' = 'sm';\n @Input() fullWidth: boolean = false;\n @Input() tabs: { title: string, icon: string, cypressTag: string, disabled?: boolean }[] = [];\n\n @Output() pressed = new EventEmitter<number>();\n\n public setActiveTab(index: number): void {\n if (this.tabs[index]?.disabled) return;\n this.selected = index;\n this.pressed.emit(index);\n }\n}\n","<div class=\"gravity-tab-secondary-container\" [ngClass]=\"fullWidth ? 'full-width' : 'limited-width'\">\n <div class=\"gravity-tab-secondary\" [class.selected]=\"selected === i\" [class.disabled]=\"tab.disabled\" [class.full-width]=\"fullWidth\"\n *ngFor=\"let tab of tabs; let i = index\" [attr.data-cy]=\"tab.cypressTag ? 'tabSecondary_' + tab.cypressTag : null\" >\n <div class=\"tab-content {{size}}\" [class.selected]=\"selected === i\" [class.disabled]=\"tab.disabled\" [class.limited-width]=\"!fullWidth\" (click)=\"setActiveTab(i)\">\n <gravity-icon *ngIf=\"tab.icon\" [style.--icon-color]=\"'var(--cta-primary)'\" [size]=\"'sm'\"\n [iconName]=\"tab.icon\" [iconSize]=\"'sm-12'\" class=\"icon-left\">\n </gravity-icon>\n <p class=\"hr-label\"\n [ngClass]=\"selected === i ? (size + '-bold') : (size + '-regular')\">{{ tab.title }}</p>\n </div>\n </div>\n</div>","import { Component, Input, Output, EventEmitter } from '@angular/core';\n\n@Component({\n selector: 'gravity-editable-input',\n templateUrl: './gravity-editable-input.component.html',\n styleUrls: ['./gravity-editable-input.component.scss']\n})\nexport class GravityEditableInputComponent {\n public isFocused: boolean = false;\n\n @Input() public cypressTag: string;\n @Input() public label: string;\n @Input() public value: string = '';\n @Input() public placeholder: string;\n @Input() public errorMessage: string;\n @Input() public size: 'sm' | 'md' = 'sm';\n @Input() public readOnly: boolean = false;\n @Input() public haveError: boolean = false;\n @Input() public justNumber: boolean = false;\n\n @Output() public valueChange: EventEmitter<string> = new EventEmitter<string>();\n\n public onKeyUp(inputField: HTMLInputElement): void {\n if (this.justNumber) {\n inputField.value = inputField.value.replace(/[^0-9]/g, '');\n }\n this.haveError = inputField.value.trim() === '';\n this.valueChange.emit(inputField.value);\n }\n\n public focusInput(inputField: HTMLInputElement): void {\n inputField.focus();\n }\n}\n","<div class=\"gravity-editable-input\" [attr.data-cy]=\"cypressTag? 'editableInput_' + cypressTag: null\">\n <div class=\"editable-input-container\" [class.focus]=\"isFocused\" [class.error]=\"haveError\">\n <label *ngIf=\"label\" class=\"hr-label {{size}}-bold\">{{ label }}</label>\n <div class=\"editable-input {{size}}\" [class.read-only]=\"readOnly\">\n <input #editableInput [placeholder]=\"placeholder\" (focus)=\"isFocused = true\" (blur)=\"isFocused = false\"\n (keyup)=\"onKeyUp(editableInput)\" [disabled]=\"readOnly\" [value]=\"value\" [attr.data-cy]=\"'editableInput_textInput'\">\n <gravity-icon *ngIf=\"!readOnly\" [style.--icon-color]=\"haveError ? 'var(--negative-primary)' :\n isFocused ?'var(--outline-field-full-enabled-typing-primary)' : 'var(--text-primary)'\"\n [iconName]=\"'update'\" [size]=\"'sm'\" [iconSize]=\"'sm-12'\" (click)=\"focusInput(editableInput)\"> </gravity-icon>\n </div>\n </div>\n <div class=\"error-message\" *ngIf=\"haveError && errorMessage && !readOnly\">\n <gravity-icon [style.--icon-color]=\"'var(--negative-primary)'\" [iconName]=\"'warning-circle'\" [iconSize]=\"'sm-12'\"> </gravity-icon>\n <span class=\"hr-label sm-regular\">{{ errorMessage }}</span>\n </div>\n</div>","import { Component, Input, Output, EventEmitter } from '@angular/core';\n\n@Component({\n selector: 'gravity-card-button',\n templateUrl: './gravity-card-button.component.html',\n styleUrls: ['./gravity-card-button.component.scss']\n})\nexport class GravityCardButtonComponent {\n @Input() public cypressTag: string;\n @Input() public label: string;\n @Input() public iconName: string;\n @Input() public fullWidth: boolean = false;\n @Input() public type: 'primary' | 'secondary' = 'primary';\n @Input() public state: 'active' | 'pressed' | 'disabled' = 'active';\n @Input() public orientation: 'vrt-center' | 'vrt-left' | 'vrt-right' | 'hrt-center' | 'hrt-auto' = 'vrt-center';\n\n @Output() public clicked = new EventEmitter<void>();\n\n public onCardButtonClick(): void {\n if (this.state !== 'disabled') {\n this.clicked.emit();\n }\n }\n}\n","<div class=\"gravity-card-button\" [attr.data-cy]=\"cypressTag ? 'cardButton_' + cypressTag : null\" (click)=\"onCardButtonClick()\">\n <div class=\"card-button-container {{type}} {{orientation}}\" [class.pressed]=\"state === 'pressed'\"\n [class.disabled]=\"state === 'disabled'\" [class.full-width]=\"fullWidth\">\n <gravity-icon *ngIf=\"iconName\" [style.--icon-color]=\"'var(--card-button-color)'\" [iconName]=\"iconName\"\n [iconSize]=\"orientation === 'vrt-center' ? 'md-16' : (orientation === 'vrt-left' || orientation === 'vrt-right' || orientation === 'hrt-center') ? 'lg-24' : 'xl-32'\">\n </gravity-icon>\n <label *ngIf=\"label\" [className]=\"(orientation === 'vrt-center' || orientation === 'vrt-left' || orientation === 'vrt-right') ? 'hr-label sm-bold' : 'hr-label md-bold'\">{{ label }}</label>\n </div>\n</div>\n","import {Component, EventEmitter, Input, Output} from '@angular/core';\n\n@Component({\n selector: 'gravity-navigation-card',\n templateUrl: './gravity-navigation-card.component.html',\n styleUrls: ['./gravity-navigation-card.component.scss']\n})\nexport class GravityNavigationCardComponent {\n @Input() public cypressTag: string;\n @Input() public size: 'sm' | 'md' = 'sm';\n @Input() public state: 'active' | 'readonly' = 'active';\n\n @Input() public title: string;\n @Input() public iconName: string;\n @Input() public actionText: string;\n @Input() public description: string;\n @Input() public fullWidth: boolean = false;\n @Input() public statusIndicator: {\n status: 'positive' |'positive-secondary' | 'negative' | 'negative-secondary' | 'attention' | 'neutro' | 'disabled',\n text: string;\n icon: string | null\n };\n\n @Output() navigatorCardClicked = new EventEmitter<void>();\n\n public isPressed: boolean = false;\n\n public onNavigationCardClick() {\n if (this.state != 'readonly') {\n this.navigatorCardClicked.emit();\n }\n }\n\n public onPress(): void {\n if (this.state !== 'readonly') {\n this.isPressed = true;\n }\n }\n\n public onRelease(): void {\n this.isPressed = false;\n }\n}\n","<div class=\"gravity-navigation-card {{size}} {{isPressed ? 'pressed' : state}}\" (mousedown)=\"onPress()\"\n (mouseup)=\"onRelease()\" (mouseleave)=\"onRelease()\" [class.full-width]=\"fullWidth\" (click)=\"onNavigationCardClick()\"\n [attr.data-cy]=\"cypressTag? 'navigationCard_'+cypressTag:null\">\n <div class=\"information-content\">\n <div *ngIf=\"iconName && iconName !== ''\" class=\"icon-wrapper\">\n <gravity-icon [style.--icon-color]=\"'var(--navigation-card-icon-color)'\"\n [iconName]=\"iconName\" [size]=\"'lg'\" [iconSize]=\"'lg-24'\">\n </gravity-icon>\n </div>\n <div class=\"text-content\">\n <h1 class=\"hr-title md-bold\">{{ title }}</h1>\n <p class=\"hr-body md-regular\">{{ description }}</p>\n </div>\n </div>\n <div class=\"action-section\">\n <gravity-status-indicator *ngIf=\"statusIndicator\" [status]=\"statusIndicator.status \" [text]=\"statusIndicator.text\"\n [icon]=\"statusIndicator.icon\"></gravity-status-indicator>\n <p class=\"hr-body md-regular\">{{ actionText }}</p>\n <gravity-icon *ngIf=\"state != 'readonly'\" [style.--icon-color]=\"'var(--text-primary)'\"\n [iconName]=\"'arrow-right'\" [size]=\"'sm'\" [iconSize]=\"'md-16'\">\n </gravity-icon>\n </div>\n</div>\n","import { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'gravity-generic-avatar-secondary',\n templateUrl: './gravity-generic-avatar-secondary.component.html',\n styleUrls: ['./gravity-generic-avatar-secondary.component.scss']\n})\nexport class GravityGenericAvatarSecondaryComponent {\n @Input() label: string;\n @Input() initials: string;\n @Input() iconName: string;\n @Input() imageUrl: string;\n @Input() cypressTag: string;\n @Input() type: 'active' | 'positive' | 'negative' | 'neutral' = 'neutral';\n}\n","<div class=\"generic-avatar-secondary {{ type }}\" [attr.data-cy]=\"'genericAvatarSecondary_' + type\">\n <div class=\"avatar-outer-circle\">\n <div class=\"avatar-inner-circle\">\n <h1 *ngIf=\"initials\" class=\"hr-title lg-regular\"> {{ initials }} </h1>\n <img *ngIf=\"!initials && imageUrl\" [src]=\"imageUrl\" alt=\"avatar image\" class=\"avatar-image\" />\n <gravity-icon *ngIf=\"!initials && !imageUrl && iconName\" [iconName]=\"iconName\"> </gravity-icon>\n </div>\n </div>\n\n <div class=\"state-name\">\n <span class=\"hr-body sm-regular\"> {{ label }} </span>\n </div>\n</div>\n","import {Component, Input} from '@angular/core';\n\n@Component({\n selector: 'gravity-backdrop',\n templateUrl: './gravity-backdrop.component.html',\n styleUrls: ['./gravity-backdrop.component.scss']\n})\nexport class GravityBackdropComponent {\n @Input() visible: boolean = false;\n}\n","<div class=\"gravity-backdrop\" *ngIf=\"visible\"></div>\n<div class=\"backdrop-content\" *ngIf=\"visible\">\n <ng-content></ng-content>\n</div>\n","import {CalendarDate} from \"./date-picker.modal\";\n\nexport function getStartDate(date: Date): Date {\n\tif(date instanceof Date) {\n\t\treturn new Date(date.getFullYear(), date.getMonth(), 1);\n\t}\n\n\treturn new Date();\n}\n\nexport function changeDate(offset: number, currentDate: Date, isMonth: boolean): Date {\n const month = currentDate.getMonth();\n const year = currentDate.getFullYear();\n\n return isMonth ? new Date(year, month + offset, 1) : new Date(year + offset, month, 1);\n}\n\nexport function isPeriodAvailable(currentDate: Date, limitDate: Date, period: 'month' | 'year',\n\tdirection: 'prev' | 'next', startYearBlock?: number): boolean {\n\n\tif (period === 'month' && limitDate) {\n\t\tconst dir = direction === 'prev' ? -1 : 1;\n\t\tconst limit = new Date(limitDate.getFullYear(), limitDate.getMonth(), 1);\n\t\tconst candidate = new Date(currentDate.getFullYear(), currentDate.getMonth() + dir, 1);\n\n\t\treturn direction === 'prev' ? candidate >= limit : candidate <= limit;\n\t}\n\n\tif (period === 'year' && limitDate && startYearBlock !== undefined) {\n\t\tconst dir = direction === 'prev' ? -1 : 1;\n\t\tconst blockStart = startYearBlock + dir * 12;\n\t\tconst blockEnd = blockStart + 11;\n\n\t\tif (direction === 'prev') {\n\t\t\treturn blockEnd >= limitDate.getFullYear();\n\t\t} else {\n\t\t\treturn blockStart <= limitDate.getFullYear();\n\t\t}\n\t}\n\n\treturn true;\n}\n\nexport function dateToCalendarDay(date: Date): CalendarDate {\n return { inCurrentMonth: true, isToday: false, day: date.getDate(),\n monthYear: {month: date.getMonth(), year: date.getFullYear()}, weekDay: date.getDay() };\n}\n\nexport function dateToString(date: Date, language: 'en' | 'es'): string {\n\tconst year = date.getFullYear().toString();\n\tconst day = date.getDate().toString().padStart(2, '0');\n\tconst month = (date.getMonth() + 1).toString().padStart(2, '0');\n\n\treturn language === 'en' ? `${month}/${day}/${year}` : `${day}/${month}/${year}`;\n}\n\nexport function stringToCalendarDate(value: string, language: 'en' | 'es'): CalendarDate | null {\n\tif (!value) return null;\n\n\tconst parts = value.split('/');\n\tif (parts.length !== 3) return null;\n\n\tconst year = parseInt(parts[2], 10);\n\tconst day = parseInt(language === 'en' ? parts[1] : parts[0], 10);\n\tconst month = parseInt(language === 'en' ? parts[0] : parts[1], 10) - 1;\n\n\tif (isNaN(day) || isNaN(month) || isNaN(year)) return null;\n\tif (month < 0 || month > 11 || day < 1) return null;\n\tif (year < 1000 || year > 9999) return null;\n\n\tconst date = new Date(year, month, day);\n\n\tif (date.getFullYear() !== year || date.getMonth() !== month || date.getDate() !== day) {\n\t\treturn null;\n\t}\n\n\treturn {day, weekDay: date.getDay(), inCurrentMonth: true,\n\t\tmonthYear: { year, month }\n\t};\n}\n\nexport function stringToDate(dateStr: string, language: 'en' | 'es'): Date | null {\n\tif (!dateStr) return null;\n\n\tconst parts = dateStr.split('/');\n\tif (parts.length !== 3) return null;\n\n\tconst year = Number(parts[2]);\n\tconst day = Number(language === 'en' ? parts[1] : parts[0]);\n\tconst month = Number(language === 'en' ? parts[0] : parts[1]) -1;\n\n\treturn new Date(year, month, day);\n}\n\nexport function calendarDateToDate(cd: CalendarDate): Date {\n\tif(!cd) { return null; }\n\tconst { day, monthYear } = cd;\n\treturn new Date(monthYear.year, monthYear.month, day);\n}\n\nexport function formatDatetime(value: string | string[], formatMonth: 'short' | 'long' = 'long', language : 'en' | 'es' = 'en'): string {\n\tif (!value) return '';\n\tconst capitalize = (str: string) => str.charAt(0).toUpperCase() + str.slice(1);\n\n\tif (Array.isArray(value) && value.length === 2) {\n\t\tconst start = new Date(value[0]);\n\t\tconst end = new Date(value[1]);\n\n\t\tconst endDay = end.getDate();\n\t\tconst startDay = start.getDate();\n\t\tconst endYear = end.getFullYear();\n\t\tconst startYear = start.getFullYear();\n\t\tconst endMonth = capitalize(end.toLocaleString(language, { month: formatMonth }));\n\t\tconst startMonth = capitalize(start.toLocaleString(language, { month: formatMonth }));\n\n\t\tif (startYear === endYear) {\n\t\t\treturn `${startMonth} ${startDay} - ${endMonth} ${endDay}, ${startYear}`;\n\t\t}\n\n\t\treturn `${startMonth} ${startDay}, ${startYear} - ${endMonth} ${endDay}, ${endYear}`;\n\t}\n\n\tif (typeof value === 'string') {\n\t\tconst date = new Date(value);\n\t\tconst month = capitalize(date.toLocaleString(language, { month: formatMonth }));\n\t\tconst day = date.getDate();\n\t\tconst year = date.getFullYear();\n\n\t\treturn `${month} ${day}, ${year}`;\n\t}\n\n\treturn '';\n}\n","export const DAYS_EN: string[] = ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'];\n\nexport const DAYS_ES: string[] = ['Lun', 'Mar', 'Mié', 'Jue', 'Vie', 'Sáb', 'Dom'];\n\nexport const DAYS_SHORT_ES: string[] = ['Lu', 'Ma', 'Mi', 'Ju', 'Vi', 'Sa', 'Do'];\n\nexport const DAYS_SHORT_EN: string[] = ['Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa', 'Su'];\n\nexport const MONTHS_ES = ['Enero', 'Febrero', 'Marzo', 'Abril', 'Mayo', 'Junio',\n 'Julio', 'Agosto', 'Septiembre', 'Octubre', 'Noviembre', 'Diciembre'\n];\n\nexport const MONTHS_EN = ['January', 'February', 'March', 'April', 'May', 'June',\n 'July', 'August', 'September', 'October', 'November', 'December'\n];\n\nexport const MONTHS_SHORT_ES = ['Ene', 'Feb', 'Mar', 'Abr', 'May', 'Jun',\n 'Jul', 'Ago', 'Sep', 'Oct', 'Nov', 'Dic'\n];\n\nexport const MONTHS_SHORT_EN = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun',\n 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'\n];\n\nexport const CALENDAR_I18N = {\n\ten: {\n\t\tapply: 'Apply',\n\t\tdate_placeholder: 'mm/dd/yyyy',\n\t\tdate_unavailable: \"This date isn’t available. Please choose another one.\",\n\t\tend_after_start: 'End date must be after the start date.',\n\t\tend_date: 'End date',\n\t\tinvalid_date: 'Invalid date',\n\t\tnext_month: 'Next month',\n\t\tnext_year: 'Next year',\n\t\tnext_years: 'Next years',\n\t\tpreview_month: 'Preview month',\n\t\tpreview_year: 'Preview year',\n\t\tpreview_years: 'Preview years',\n\t\tselect_date: 'Select a date',\n\t\tselect_range: 'Select a date range',\n\t\tselect_valid_date: 'Select a valid date to continue your range.',\n\t\tstart_before_end: 'Start date must be before the end date.',\n\t\tstart_date: 'Start date',\n\t\tclear: 'Clear selection',\n\t\tno_date_applied: 'Selected dates pending application.',\n\t},\n\n\tes: {\n\t\tapply: 'Aplicar',\n\t\tclear: 'Limpiar selección',\n\t\tdate_placeholder: 'dd/mm/aaaa',\n\t\tdate_unavailable: \"Esta fecha no está disponible. Por favor, elige otra.\",\n\t\tend_after_start: 'La fecha final debe ser posterior a la fecha de inicio.',\n\t\tend_date: 'Fecha final',\n\t\tinvalid_date: 'Fecha inválida',\n\t\tnext_month: 'Mes siguiente',\n\t\tnext_year: 'Año siguiente',\n\t\tnext_years: 'Años siguientes',\n\t\tpreview_month: 'Mes anterior',\n\t\tpreview_year: 'Año anterior',\n\t\tpreview_years: 'Años anteriores',\n\t\tselect_date: 'Selecciona una fecha',\n\t\tselect_range: 'Selecciona un rango de fechas',\n\t\tselect_valid_date: 'Selecciona una fecha válida para continuar con tu rango.',\n\t\tstart_before_end: 'La fecha de inicio debe ser anterior a la final.',\n\t\tstart_date: 'Fecha inicial',\n\t\tno_date_applied: 'Fechas seleccionadas pendientes de aplicar.',\n\t}\n} as const;\n","import {CalendarDate} from \"../../shared/date-picker.modal\";\nimport {DayCalendarComponent} from \"./day-calendar.component\";\nimport {calendarDateToDate, dateToString, getStartDate, stringToCalendarDate, stringToDate, dateToCalendarDay} from \"../../shared/date-picker.utils\";\n\nexport function isPreview(component: DayCalendarComponent, day: CalendarDate): boolean {\n\tconst current = calendarDateToDate(day);\n\n\tif (component.selectedRangeStart && !component.selectedRangeEnd && component.hoveredDay) {\n\t\tconst start = calendarDateToDate(component.selectedRangeStart);\n\t\tconst hover = calendarDateToDate(component.hoveredDay);\n\t\tif (hover <= start) return false;\n\t\treturn current > start && current <= hover;\n\t}\n\n\tif (!component.selectedRangeStart && component.selectedRangeEnd && component.hoveredDay) {\n\t\tconst end = calendarDateToDate(component.selectedRangeEnd);\n\t\tconst hover = calendarDateToDate(component.hoveredDay);\n\t\tif (hover >= end) return false;\n\t\treturn current < end && current >= hover;\n\t}\n\n\treturn false;\n}\n\nexport function processPreselectedRangeDate(component: DayCalendarComponent) {\n\tlet end: Date | null = null;\n\tlet start: Date | null = null;\n\n\tsetTimeout(() => { if(!component.appearance.isMobile) { component.startDateField.focus(); } }, 0)\n\n\tif (Array.isArray(component.config.initDate)) {[start, end] = component.config.initDate;}\n\n if (start instanceof Date) {\n component.selectedRangeStart = dateToCalendarDay(start);\n setTimeout(() => {\n\t if(!component.appearance.isMobile) { component.endDateField.focus(); }\n\t\t\tcomponent.startDateField.inputValue = dateToString(start, component.appearance.language);\n\t\t}, 0);\n }\n\n if (end instanceof Date) {\n component.currentDate = getStartDate(end);\n component.selectedRangeEnd = dateToCalendarDay(end);\n\t\tsetTimeout(() => {\n\t\t\tif(!component.appearance.isMobile) { component.endDateField.focus(); }\n\t\t\tcomponent.endDateField.inputValue = dateToString(end, component.appearance.language);\n\t\t}, 0);\n\n } else if (start instanceof Date) {\n component.currentDate = getStartDate(start);\n }\n}\n\nexport function getRangeSelectionClass(component: DayCalendarComponent, day: CalendarDate): string {\n\tconst current = calendarDateToDate(day);\n\tconst start = component.selectedRangeStart ? calendarDateToDate(component.selectedRangeStart) : null;\n\tconst end = component.selectedRangeEnd ? calendarDateToDate(component.selectedRangeEnd) : null;\n\n\tif (!start && !end) {\n\t\treturn component.focused === 'start' ? 'nsl-start' : 'nsl-end';\n\t}\n\n\tif (start && !end) {\n\t\tif (current.getTime() === start.getTime()) return 'sl start';\n\t\tif (current.getTime() < start.getTime()) return 'nsl-start';\n\t\treturn 'in-slt nsl-end';\n\t}\n\n\tif (!start && end) {\n\t\tif (current.getTime() === end.getTime()) return 'sl end';\n\t\tif (current.getTime() > end.getTime()) return 'nsl-end';\n\t\treturn 'in-slt nsl-start';\n\t}\n\n\tif (start && end) {\n\t\tif(current.getTime() === start.getTime() &&\n\t\t\t start.getTime() === end.getTime())\n\t\t\t\treturn 'start sl same-sln';\n\n\t\tif (current.getTime() === start.getTime()) return 'sl start';\n\t\tif (current.getTime() < start.getTime()) return 'nsl-start';\n\t\tif (current.getTime() === end.getTime()) return 'sl end';\n\t\tif (current.getTime() > end.getTime()) return 'nsl-end';\n\t\tif (current > start && current < end) return 'sl range';\n\t\treturn 'default';\n\t}\n}\n\nexport function onSelectDaysRange(component: DayCalendarComponent, day: CalendarDate): void {\n\tconst selected = calendarDateToDate(day);\n\tconst hasEnd = !!component.selectedRangeEnd;\n\tconst hasStart = !!component.selectedRangeStart;\n\tconst language = component.appearance.language;\n\tconst endDate = hasEnd ? calendarDateToDate(component.selectedRangeEnd) : null;\n\tconst startDate = hasStart ? calendarDateToDate(component.selectedRangeStart) : null;\n\n\tObject.assign(component, {\n\t\tnotification: null,\n\t\tendDateError: '', startDateError: '',\n\t\tendFieldDisabled: false, startFieldDisabled: false,\n\t});\n\n\tconst updateField = (field: 'start' | 'end') => {\n\t\tcomponent[`selectedRange${field === 'start' ? 'Start' : 'End'}`] = day;\n\t\tcomponent[`${field}DateField`].inputValue = dateToString(selected, language);\n\n\t\tsetTimeout(() => {\n\t\t\tconst focusField = field === 'start' ?\n\t\t\t\t(component.selectedRangeEnd ? 'start' : 'end') :\n\t\t\t\t(component.selectedRangeStart ? 'end' : 'start');\n\n\t\t\tif(!component.appearance.isMobile) { component[`${focusField}DateField`].focus(); }\n\t\t\tcomponent[`${focusField}DateField`].inputElement.nativeElement.setSelectionRange(10, 10);\n\t\t}, 100);\n\t};\n\n\tif (!hasStart && !hasEnd) {\n\t\tupdateField(component.focused);\n\t\treturn;\n\t}\n\n\tif (hasStart && !hasEnd) {\n\t\tselected >= startDate! ? updateField('end') : updateField('start');\n\t\treturn;\n\t}\n\n\tif (!hasStart && hasEnd) {\n\t\tselected < endDate! ? updateField('start') : updateField('end');\n\t\treturn;\n\t}\n\n\tif (hasStart && hasEnd) {\n\t\tselected < startDate! ? updateField('start') : updateField('end');\n\t\treturn;\n\t}\n}\n\nexport function onApplyRageDate(component: DayCalendarComponent){\n const start = calendarDateToDate(component.selectedRangeStart);\n const end = calendarDateToDate(component.selectedRangeEnd);\n component.calendarResponse.emit([start, end]);\n}\n\nexport function onHoverDay(component: DayCalendarComponent, day: CalendarDate): void {\n\tconst startSelected = !!component.selectedRangeStart && !component.selectedRangeEnd;\n\tconst endSelected = !!component.selectedRangeEnd && !component.selectedRangeStart;\n\tif (startSelected || endSelected) { component.hoveredDay = day; }\n}\n\nexport function onClearHover(component: DayCalendarComponent): void {\n\tcomponent.hoveredDay = null;\n}\n\nexport function searchDate(component: DayCalendarComponent, dateStr: string, target: 'start' | 'end'): void {\n\tconst i18n = component.i18n;\n\tconst date = stringToDate(dateStr, component.appearance.language);\n\tconst calendarDate = stringToCalendarDate(dateStr, component.appearance.language);\n\tconst errorProp = target === 'start' ? 'startDateError' : 'endDateError';\n\tconst field = target === 'start' ? component.startDateField : component.endDateField;\n\tconst oppositeDisabled = target === 'start' ? 'endFieldDisabled' : 'startFieldDisabled';\n\n\tif (!dateStr) { component[oppositeDisabled] = false; return; }\n\n\tif (!calendarDate) {\n\t\tcomponent[oppositeDisabled] = true;\n\t\tcomponent[errorProp] = i18n.invalid_date;\n\t\tif(!component.appearance.isMobile) { field.focus(); }\n\t\tcomponent.notification = { text: i18n.select_valid_date, error: true };\n\t\treturn;\n\t}\n\n\tif (!validateDateLimits(component, date, target)) {\n\t\tcomponent[oppositeDisabled] = true;\n\t\treturn;\n\t}\n\n\tconst otherCalendarDate = target === 'start' ? component.selectedRangeEnd : component.selectedRangeStart;\n\tconst otherDate = otherCalendarDate ? calendarDateToDate(otherCalendarDate) : null;\n\n\tif ((target === 'start' && otherDate && date > otherDate) ||\n\t\t(target === 'end' && otherDate && date < otherDate)) {\n\t\tcomponent[oppositeDisabled] = true;\n\t\tcomponent[errorProp] = i18n.invalid_date;\n\t\tif(!component.appearance.isMobile) { field.focus(); }\n\t\tcomponent.notification = { text: target === 'start' ? i18n.start_before_end : i18n.end_after_start, error: true };\n\t\treturn;\n\t}\n\n\tif (target === 'start') {\n\t\tcomponent.selectedRangeStart = calendarDate;\n\t\tif (!component.selectedRangeEnd && !component.appearance.isMobile) setTimeout(() => component.endDateField.focus(), 100);\n\t} else {\n\t\tcomponent.selectedRangeEnd = calendarDate;\n\t\tif (!component.selectedRangeStart && !component.appearance.isMobile) setTimeout(() => component.startDateField.focus(), 100);\n\t}\n\n\tcomponent[errorProp] = null;\n\tcomponent.currentDate = date;\n\tcomponent.notification = null;\n\tcomponent[oppositeDisabled] = false;\n}\n\nexport function validateDateLimits(component: DayCalendarComponent, date: Date, target: 'start' | 'end') : boolean {\n\tif (component.config.minDate && date < component.config.minDate) {\n\t\tcomponent.notification = { text: component.i18n.date_unavailable, error: true };\n\t\ttarget === 'start' ? component.startDateError = component.i18n.invalid_date : component.endDateError = component.i18n.invalid_date;\n\t\treturn false;\n\t}\n\n\tif (component.config.maxDate && date > component.config.maxDate) {\n\t\tcomponent.notification = { text: component.i18n.date_unavailable, error: true };\n\t\ttarget === 'start' ? component.startDateError = component.i18n.invalid_date : component.endDateError = component.i18n.invalid_date;\n\t\treturn false;\n\t}\n\n\treturn true;\n}\n\nexport function onDateKeyup(component: DayCalendarComponent, event: KeyboardEvent, target: 'start' | 'end'): void {\n\tconst ignoredKeys = ['ArrowUp', 'ArrowDown', 'ArrowLeft', 'ArrowRight', 'Enter', ' ', 'Spacebar'];\n\tif (ignoredKeys.includes(event.key)) { return; }\n\n\tconst errorProp = target === 'start' ? 'startDateError' : 'endDateError';\n\tconst disabled = target === 'start' ? 'endFieldDisabled' : 'startFieldDisabled';\n\tconst dateInput = target === 'start' ? component.startDateField : component.endDateField;\n\tconst selectedRangeProp = target === 'start' ? 'selectedRangeStart' : 'selectedRangeEnd';\n\n\tconst value = dateInput?.inputValue ?? '';\n\n\tif (value.length < 10) {\n\t\tcomponent[selectedRangeProp] = null;\n\n\t\tif(!component.notification?.error) {\n\t\t\tcomponent.notification = null;\n\t\t}\n\n\t\tif (value.length < 1) {\n\t\t\tcomponent[errorProp] = '';\n\t\t\tcomponent[disabled] = false;\n\t\t\tcomponent.notification = null;\n\t\t}\n\t}\n\n\tif (value.length > 9) {\n\t\tsearchDate(this, value, target);\n\t\tif (this.appearance.isMobile) {\n\t\t\tif (document.activeElement instanceof HTMLElement) {\n\t\t\t\tdocument.activeElement.blur();\n\t\t\t}\n\t\t}\n\t}\n}","import {DatePickerAppearance, DatePickerConfig, CalendarPeriod} from \"../../shared/date-picker.modal\";\nimport {changeDate, getStartDate, isPeriodAvailable} from \"../../shared/date-picker.utils\";\nimport {Component, EventEmitter, Input, OnChanges, Output, SimpleChanges,} from '@angular/core';\nimport {CALENDAR_I18N, MONTHS_EN, MONTHS_SHORT_EN, MONTHS_ES, MONTHS_SHORT_ES} from \"../../shared/date-picker.constants\";\n\n@Component({\n selector: 'month-calendar',\n templateUrl: './month-calendar.component.html',\n styleUrls: ['./month-calendar.component.scss']\n})\nexport class MonthCalendarComponent implements OnChanges {\n\t@Input() public config: DatePickerConfig;\n @Input() public initDate: Date | Date[];\n @Input() public restart: boolean = false;\n @Input() public appearance: DatePickerAppearance;\n @Input() public integratedMode: boolean = false;\n\n @Output() public clearSelection: EventEmitter<void> = new EventEmitter<void>();\n @Output() public response: EventEmitter<Date[] | Date> = new EventEmitter<Date[] | Date>();\n\n public currentDate: Date = new Date();\n public selectedMonth: CalendarPeriod;\n\n public get i18n() { return CALENDAR_I18N[this.appearance.language]; }\n public get monthsList() { return this.appearance.language === 'en' ? MONTHS_EN : MONTHS_ES; }\n public get monthsShortList() { return this.appearance.language === 'en' ? MONTHS_SHORT_EN : MONTHS_SHORT_ES; }\n\n ngOnChanges(changes: SimpleChanges): void {\n const shouldRestart = changes['restart'] && this.restart;\n const shouldProcessPreSelected = changes['preSelectedDate'] && this.initDate;\n if (shouldRestart || shouldProcessPreSelected) { this.processInitDate(); }\n }\n\n public trackByMonth(_: number, month: CalendarPeriod): string {\n return `${month.year}-${month.month}`;\n }\n\n private processInitDate(): void {\n if (this.initDate instanceof Date) {\n this.currentDate = getStartDate(this.initDate);\n this.selectedMonth = {\n month: this.initDate.getMonth(),\n year: this.initDate.getFullYear()\n };\n }\n }\n\n public onSelectMonth(month: CalendarPeriod) {\n this.selectedMonth = month;\n this.currentDate = new Date(month.year, month.month, 1);\n this.response.emit(this.currentDate);\n return;\n }\n\n\tpublic getMonthSelectionClass(month: CalendarPeriod): string {\n\t\tconst classes: string[] = [];\n\t\tconst { minDate, maxDate } = this.config ?? {};\n\t\tconst firstDay = new Date(month.year, month.month, 1);\n\t\tconst lastDay = new Date(month.year, month.month + 1, 0);\n\n\t\tlet isDisabled = false;\n\t\tif (minDate && lastDay < minDate) { isDisabled = true; }\n\t\tif (maxDate && firstDay > maxDate) { isDisabled = true; }\n\t\tif (isDisabled) { classes.push('disabled'); }\n\n\t\tif (this.selectedMonth && this.selectedMonth.month === month.month && this.selectedMonth.year === month.year) {\n\t\t\tclasses.push('selected');\n\t\t}\n\n\t\treturn classes.join(' ');\n\t}\n\n\tpublic isCurrentMonth(month: CalendarPeriod) {\n if(new Date().getMonth() === month.month &&\n new Date().getFullYear() === month.year) {\n return true;\n }\n }\n\n public clearSelectedMonth() {\n this.selectedMonth = null;\n this.clearSelection.emit();\n }\n\n public applySelectedMonth() {\n const date = new Date(this.selectedMonth.year, this.selectedMonth.month)\n this.response.emit(date);\n }\n\n public getYearMonthsList(): CalendarPeriod[] {\n const months: CalendarPeriod[] = [];\n\n for (let i = 0; i < 12; i++) {\n months.push({month: i, year: this.currentDate.getFullYear()});\n }\n\n return months;\n }\n\n protected readonly changeDate = changeDate;\n\tprotected readonly isPeriodAvailable = isPeriodAvailable;\n}\n","<section class=\"gravity-date-picker-header\" [class.mobile]=\"appearance.isMobile\">\n <div class=\"header-container\">\n <gravity-icon-button *ngIf=\"!integratedMode\"\n [size]=\"'sm'\"\n [type]=\"'primary'\"\n [icon]=\"'arrow-left'\"\n [supportText]=\"i18n.preview_year\"\n (clickOnIcon)=\"currentDate = changeDate(-1, currentDate, false)\"\n [state]=\"(appearance.state !== 'disabled') && isPeriodAvailable(currentDate, config.minDate, 'month', 'prev') ? 'active' : 'disabled'\"/>\n\n <div class=\"year-label\">\n <gravity-dropdown-label\n [size]=\"'sm'\" [attr.data-cy]=\"'datePicker_yearLabel'\"\n [fontClass]=\"'hr-title sm-bold'\"\n [state]=\"integratedMode && appearance.state !== 'disabled' ? 'active' : 'inactive'\"\n [label]=\"integratedMode ? monthsList[currentDate.getMonth()] : currentDate.getFullYear().toString()\"\n [isOpen]=\"integratedMode\" (onClickLabel)=\"response.emit(currentDate)\" > </gravity-dropdown-label>\n </div>\n\n <gravity-icon-button *ngIf=\"!integratedMode\"\n [size]=\"'sm'\"\n [type]=\"'primary'\"\n [icon]=\"'arrow-right'\"\n [supportText]=\"i18n.next_year\"\n (clickOnIcon)=\"currentDate = changeDate(1, currentDate, false)\"\n [state]=\"(appearance.state !== 'disabled') && isPeriodAvailable(currentDate, config.maxDate, 'month', 'next') ? 'active' : 'disabled'\"/>\n </div>\n\n <div class=\"separator-line\"></div>\n</section>\n\n<section class=\"gravity-date-picker-body\" [class.mobile]=\"appearance.isMobile\">\n <div class=\"items-table\" [attr.data-cy]=\"'datePicker_monthSelector'\">\n <span class=\"hr-body sm-regular item\" *ngFor=\"let month of getYearMonthsList(), trackBy: trackByMonth\"\n [ngClass]=\"appearance.state === 'disabled' ? 'disabled' : getMonthSelectionClass(month)\" (click)=\"onSelectMonth(month)\"\n [class.current]=\"isCurrentMonth(month)\"> {{ monthsShortList[month.month] }}\n </span>\n </div>\n\n <div *ngIf=\"!integratedMode && selectedMonth\" class=\"action-section\" >\n <gravity-link [linkText]=\"i18n.clear\" [state]=\"!selectedMonth ? 'disabled' : 'active'\"\n [fontClass]=\"appearance.isMobile ? 'hr-body md-regular' : 'hr-body sm-regular'\" (click)=\"clearSelectedMonth()\"/>\n </div>\n</section>","import {getStartDate, isPeriodAvailable} from \"../../shared/date-picker.utils\";\nimport {CALENDAR_I18N} from \"../../shared/date-picker.constants\";\nimport {DatePickerAppearance, DatePickerConfig} from \"../../shared/date-picker.modal\";\nimport {Component, EventEmitter, Input, OnChanges, OnInit, Output, SimpleChanges} from '@angular/core';\n\n@Component({\n selector: 'year-calendar',\n templateUrl: './year-calendar.component.html',\n styleUrls: ['./year-calendar.component.scss']\n})\nexport class YearCalendarComponent implements OnChanges, OnInit {\n\t@Input() public config: DatePickerConfig\n @Input() public initDate: Date | Date[];\n @Input() public restart: boolean = false;\n @Input() public appearance: DatePickerAppearance;\n @Input() public integratedMode: boolean = false;\n\n @Output() public clearSelection: EventEmitter<void> = new EventEmitter<void>();\n @Output() public response: EventEmitter<Date[] | Date> = new EventEmitter<Date[] | Date>();\n\n public selectedYear: number;\n public currentDate: Date = new Date();\n public startYear: number = new Date().getFullYear();\n\n public get i18n() { return CALENDAR_I18N[this.appearance.language]; }\n public trackByYear(_: number, year: number): string { return `${year}`; }\n\n ngOnInit(): void {\n if (!this.initDate) {\n this.setYearsBlock(new Date().getFullYear());\n }\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n const shouldRestart = changes['restart'] && this.restart;\n const shouldProcessPreSelected = changes['preSelectedDate'] && this.initDate;\n if (shouldRestart || shouldProcessPreSelected) { this.processInitDate(); }\n }\n\n private processInitDate(): void {\n if (this.initDate instanceof Date) {\n this.currentDate = getStartDate(this.initDate);\n this.selectedYear = this.initDate.getFullYear();\n this.setYearsBlock(this.selectedYear);\n }\n }\n\n public setYearsBlock(year: number) {\n const offset = year % 12;\n this.startYear = year - offset;\n }\n\n public onSelectYear(year: number) {\n this.selectedYear = year;\n this.currentDate = new Date(year, 0, 1);\n this.response.emit(this.currentDate);\n }\n\n\tpublic getYearSelectionClass(year: number): string {\n\t\tconst classes: string[] = [];\n\t\tconst { minDate, maxDate } = this.config ?? {};\n\t\tconst firstDay = new Date(year, 0, 1);\n\t\tconst lastDay = new Date(year, 11, 31);\n\n\t\tlet isDisabled = false;\n\t\tif (minDate && lastDay < minDate) { isDisabled = true; }\n\t\tif (maxDate && firstDay > maxDate) { isDisabled = true; }\n\t\tif (isDisabled) { classes.push('disabled'); }\n\n\t\tif (this.selectedYear === year) { classes.push('selected'); }\n\n\t\treturn classes.join(' ');\n\t}\n\n\n\tpublic isCurrentYear(year: number) {\n if(new Date().getFullYear() === year) return true;\n }\n\n public clearSelectedYear() {\n this.selectedYear = null;\n this.clearSelection.emit();\n }\n\n public getYearList(): number[] {\n const years: number[] = [];\n\n for (let i = 0; i < 12; i++) {\n years.push(this.startYear + i);\n }\n\n return years;\n }\n\n\tprotected readonly isPeriodAvailable = isPeriodAvailable;\n}\n","\n<section class=\"gravity-date-picker-header\" [class.mobile]=\"appearance.isMobile\">\n <div class=\"header-container\">\n <gravity-dropdown-label *ngIf=\"integratedMode\"\n [size]=\"'sm'\"\n [isOpen]=\"true\" [attr.data-cy]=\"'datePicker_yearLabel'\"\n [fontClass]=\"'hr-title sm-bold'\"\n [label]=\"startYear + ' - ' + (startYear + 11)\"\n (onClickLabel)=\"response.emit(currentDate)\"/>\n\n <gravity-icon-button\n [size]=\"'sm'\"\n [type]=\"'primary'\"\n [icon]=\"'arrow-left'\"\n [supportText]=\"i18n.preview_years\"\n (clickOnIcon)=\"startYear = startYear - 12\"\n [state]=\"(appearance.state !== 'disabled') &&\n isPeriodAvailable(currentDate, config.minDate, 'year', 'prev', startYear) ? 'active' : 'disabled'\"/>\n\n <div *ngIf=\"!integratedMode\" class=\"year-label\">\n <gravity-dropdown-label\n [isOpen]=\"false\"\n [state]=\"'inactive'\" [attr.data-cy]=\"'datePicker_yearLabel'\"\n [fontClass]=\"'hr-title sm-bold'\"\n [size]=\"'sm'\" [label]=\"startYear + ' - ' + (startYear + 11)\"/>\n </div>\n\n <gravity-icon-button\n [size]=\"'sm'\"\n [type]=\"'primary'\"\n [icon]=\"'arrow-right'\"\n [supportText]=\"i18n.next_years\"\n (clickOnIcon)=\"startYear = startYear + 12\"\n [state]=\"(appearance.state !== 'disabled') &&\n isPeriodAvailable(currentDate, config.maxDate, 'year', 'next', startYear) ? 'active' : 'disabled'\"/>\n </div>\n\n <div class=\"separator-line\"></div>\n</section>\n\n<section class=\"gravity-date-picker-body\" [class.mobile]=\"appearance.isMobile\">\n <div class=\"items-table\" [attr.data-cy]=\"'datePicker_yearSelector'\">\n <span class=\"hr-body sm-regular item\" *ngFor=\"let year of getYearList(), trackBy: trackByYear\"\n [ngClass]=\"appearance.state === 'disabled' ? 'disabled' : getYearSelectionClass(year)\" (click)=\"onSelectYear(year)\"\n [class.current]=\"isCurrentYear(year)\" >{{ year }}\n </span>\n </div>\n\n <div *ngIf=\"!integratedMode && selectedYear\" class=\"action-section\">\n <gravity-link [linkText]=\"i18n.clear\" [state]=\"!selectedYear ? 'disabled' : 'active'\"\n [fontClass]=\"appearance.isMobile ? 'hr-body md-regular' : 'hr-body sm-regular'\" (click)=\"clearSelectedYear()\"/>\n </div>\n</section>\n","import {DatePickerAppearance, DatePickerConfig, CalendarDate} from \"../../shared/date-picker.modal\";\nimport {GravityTextFieldComponent} from \"../../../gravity-text-field/gravity-text-field.component\";\nimport {Component, EventEmitter, Input, OnChanges, Output, SimpleChanges, ViewChild} from '@angular/core';\nimport {CALENDAR_I18N, DAYS_SHORT_EN, DAYS_SHORT_ES, MONTHS_EN, MONTHS_ES} from \"../../shared/date-picker.constants\";\nimport {dateToCalendarDay, getStartDate, changeDate, calendarDateToDate, isPeriodAvailable} from '../../shared/date-picker.utils';\nimport {getRangeSelectionClass, isPreview, onApplyRageDate, onClearHover, onDateKeyup, onHoverDay, onSelectDaysRange, processPreselectedRangeDate, searchDate} from \"./range-days-calendar.utils\";\n\n@Component({\n selector: 'day-calendar',\n templateUrl: './day-calendar.component.html',\n styleUrls: ['./day-calendar.component.scss']\n})\nexport class DayCalendarComponent implements OnChanges {\n @Input() public initYear: Date;\n @Input() public initMonth: Date;\n @Input() public range: boolean = false;\n @Input() public config: DatePickerConfig;\n @Input() public restart: boolean = false;\n\t@Input() public appyOnClose: boolean = false;\n @Input() public currentDate: Date = new Date();\n @Input() public appearance: DatePickerAppearance;\n @Input() public navType: 'prev' | 'next' | 'both' | 'none'= 'both'\n\n @Output() public clearHover: EventEmitter<void> = new EventEmitter<void>();\n @Output() public clearSelection: EventEmitter<void> = new EventEmitter<void>();\n @Output() public hoverDay: EventEmitter<CalendarDate> = new EventEmitter<CalendarDate>();\n @Output() public selectedRage: EventEmitter<CalendarDate> = new EventEmitter<CalendarDate>();\n @Output() public calendarResponse: EventEmitter<Date[] | Date> = new EventEmitter<Date[] | Date>();\n\n @ViewChild('endDate') endDateField!: GravityTextFieldComponent;\n @ViewChild('startDate') startDateField!: GravityTextFieldComponent;\n\n public endDateError: string = '';\n public startDateError: string = '';\n\tpublic endFieldDisabled: boolean = false;\n\tpublic startFieldDisabled: boolean = false;\n\tpublic selectedRangeEnd: CalendarDate | null = null;\n\tpublic selectedRangeStart: CalendarDate | null = null;\n\n public showYearCalendar: boolean = false;\n public showMonthCalendar: boolean = false;\n\tpublic focused: 'start' | 'end' = 'start';\n\tpublic hoveredDay: CalendarDate | null = null;\n\tpublic selectedDay: CalendarDate | null = null;\n\tpublic notification: {text: string, error: boolean};\n\n public get i18n() { return CALENDAR_I18N[this.appearance.language]; }\n public get monthsList() { return this.appearance.language === 'en' ? MONTHS_EN : MONTHS_ES; }\n public get daysList() { return this.appearance.language === 'en' ? DAYS_SHORT_EN : DAYS_SHORT_ES; }\n\n public trackByWeek(index: number, _: any): number { return index; }\n public trackByDay(_: number, day: CalendarDate): string {\n return `${day.monthYear.year}-${day.monthYear.month}-${day.day}`;\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n const shouldRestart = changes['restart'] && this.restart;\n\t\tconst shouldAppy = changes['appyOnClose'] && this.appyOnClose;\n const shouldProcessPreSelected = changes['preSelectedDate'] && this.config.initDate;\n\n\t\tif (shouldAppy) { this.applySelectedDate(); }\n if (shouldRestart || shouldProcessPreSelected) { this.processInitDate(); }\n }\n\n private processInitDate(): void {\n if (this.range) {\n processPreselectedRangeDate(this);\n } else if (this.config.initDate instanceof Date) {\n this.currentDate = getStartDate(this.config.initDate);\n this.selectedDay = dateToCalendarDay(this.config.initDate);\n }\n }\n\n\tpublic hasDateSelected(requireBothInRange = false): boolean {\n\t\tif (!this.range) {\n\t\t\treturn !!this.selectedDay;\n\t\t} else {\n\t\t\treturn requireBothInRange\n\t\t\t\t? !!this.selectedRangeStart && !!this.selectedRangeEnd\n\t\t\t\t: !!this.selectedRangeStart || !!this.selectedRangeEnd;\n\t\t}\n\t}\n\n\n\tpublic getDaySelectionClass(day: CalendarDate): string {\n if (!day.inCurrentMonth) return 'disabled';\n\n const dayDate = new Date(day.monthYear.year, day.monthYear.month, day.day);\n\n if (this.config?.minDate) { if (dayDate < this.config.minDate) return 'disabled'; }\n if (this.config?.maxDate) { if (dayDate > this.config.maxDate) return 'disabled'; }\n\n return this.range ? getRangeSelectionClass(this, day) : this.getSingleDaySelectionClass(day);\n }\n\n private getSingleDaySelectionClass(day: CalendarDate): string {\n if (this.selectedDay && day.day === this.selectedDay.day &&\n day.monthYear.month === this.selectedDay.monthYear.month &&\n day.monthYear.year === this.selectedDay.monthYear.year) {\n return 'sl single';\n }\n return '';\n }\n\n public onSelectDay(day: CalendarDate): void {\n if (!day.inCurrentMonth) return;\n\n if (!this.range) {\n this.selectedDay = day;\n const currentDate = calendarDateToDate(day);\n this.calendarResponse.emit(currentDate);\n } else {\n onSelectDaysRange(this, day);\n this.selectedRage.emit(day);\n }\n }\n\n\tpublic applySelectedDate(): void {\n\t\tif (this.range) {\n\t\t\tif (this.selectedRangeStart && this.selectedRangeEnd) {\n\t\t\t\tonApplyRageDate(this);\n\t\t\t} else if (this.endDateField && this.startDateField) {\n\t\t\t\tthis.clearSelectedDate('all');\n\t\t\t}\n\t\t} else if (this.selectedDay) {\n\t\t\tconst date = calendarDateToDate(this.selectedDay);\n\t\t\tthis.calendarResponse.emit(date);\n\t\t}\n\t}\n\n public clearSelectedDate(clearTarget: 'all' | 'start' | 'end'): void {\n if (this.range && (clearTarget === 'all' || clearTarget === 'end')) {\n\t\t\tthis.endDateError = '';\n this.selectedRangeEnd = null;\n\t\t\tthis.startFieldDisabled = false;\n this.endDateField.inputValue = '';\n\t if(!this.appearance.isMobile) { this.endDateField.focus(); }\n\t\t\tif(this.selectedRangeStart) { this.currentDate = calendarDateToDate(this.selectedRangeStart) }\n }\n\n\t if (this.range && (clearTarget === 'all' || clearTarget === 'start')) {\n\t\t this.startDateError = '';\n\t\t\tthis.endFieldDisabled = false;\n\t\t this.selectedRangeStart = null;\n\t\t this.startDateField.inputValue = '';\n\t\t if(!this.appearance.isMobile) { this.startDateField.focus(); }\n\t\t if(this.selectedRangeEnd) { this.currentDate = calendarDateToDate(this.selectedRangeEnd) }\n\t }\n\n\t\tif (this.range && this.selectedRangeStart === null && this.selectedRangeEnd === null) {\n\t\t\tthis.focused = 'start';\n\t\t\tthis.currentDate = new Date();\n\t\t\tif(!this.appearance.isMobile) { this.startDateField.focus(); }\n\t\t}\n\n this.selectedDay = null;\n\t\tthis.notification = null;\n\t\tif (!this.range) { this.currentDate = new Date(); }\n\n this.clearSelection.emit();\n }\n\n public handleCalendarResponse(date: Date | Date[], isMonth: boolean): void {\n if (!(date instanceof Date)) return;\n\n const year = isMonth ? this.currentDate.getFullYear() : date.getFullYear();\n const month = isMonth ? date.getMonth() : this.currentDate.getMonth();\n\n this.currentDate = new Date(year, month, this.currentDate.getDate());\n\n if (isMonth) { this.initMonth = this.currentDate; this.showMonthCalendar = false; }\n else { this.initYear = this.currentDate; this.showYearCalendar = false; }\n }\n\n public handleOnClickDropdownLabel(isMonth: boolean): void {\n this.initMonth = isMonth ? this.currentDate : this.initMonth;\n this.initYear = !isMonth ? this.currentDate : this.initYear;\n\n this.showMonthCalendar = isMonth;\n this.showYearCalendar = !isMonth;\n }\n\n public getMonthGrid(): CalendarDate[][] {\n let week: CalendarDate[] = [];\n\n const today = new Date();\n const grid: CalendarDate[][] = [];\n const baseDate = this.currentDate;\n const month = baseDate.getMonth();\n const year = baseDate.getFullYear();\n\n const firstDay = new Date(year, month, 1);\n const startWeekday = (firstDay.getDay() + 6) % 7;\n\n const daysInMonth = new Date(year, month + 1, 0).getDate();\n const daysInPrevMonth = new Date(year, month, 0).getDate();\n\n // fill days from previous month\n for (let i = startWeekday - 1; i >= 0; i--) {\n const day = daysInPrevMonth - i;\n const weekDay = (startWeekday - 1 - i + 7) % 7;\n week.push({ day, monthYear: {month: month - 1, year: year}, isToday: false, inCurrentMonth: false, weekDay });\n }\n\n // fill days from current month\n for (let d = 1; d <= daysInMonth; d++) {\n const isToday = d === today.getDate() && month === today.getMonth() && year === today.getFullYear();\n const weekDay = week.length % 7;\n week.push({ day: d, monthYear: {month: month, year: year}, isToday, inCurrentMonth: true, weekDay });\n\n if (week.length === 7) {\n grid.push(week);\n week = [];\n }\n }\n\n // fill remaining days from next month\n let nextDay = 1;\n while (week.length < 7) {\n const weekDay = week.length;\n week.push({ day: nextDay++, monthYear: {month: month + 1, year: year}, isToday: false, inCurrentMonth: false, weekDay });\n }\n\n const hasCurrentMonthDay = week.some(day => day.inCurrentMonth);\n if (hasCurrentMonthDay) {\n grid.push(week);\n }\n\n return grid;\n }\n\n\tprotected readonly changeDate = changeDate;\n protected readonly isPreview = isPreview;\n\tprotected readonly searchDate = searchDate;\n protected readonly onHoverDay = onHoverDay;\n\tprotected readonly onDateKeyup = onDateKeyup;\n protected readonly onClearHover = onClearHover;\n\tprotected readonly isPeriodAvailable = isPeriodAvailable;\n\tprotected readonly calendarDateToDate = calendarDateToDate;\n}","<section *ngIf=\"showMonthCalendar\">\n <month-calendar\n [config]=\"config\"\n [integratedMode]=\"true\"\n [restart]=\"showMonthCalendar\"\n (response)=\"handleCalendarResponse($event, true)\" [initDate]=\"initMonth\"\n [appearance]=\"{language: appearance.language, isMobile: appearance.isMobile }\">\n </month-calendar>\n</section>\n\n<section *ngIf=\"showYearCalendar\">\n <year-calendar\n [config]=\"config\"\n [integratedMode]=\"true\"\n [restart]=\"showYearCalendar\"\n (response)=\"handleCalendarResponse($event, false)\" [initDate]=\"initYear\"\n [appearance]=\"{language: appearance.language, isMobile: appearance.isMobile}\">\n </year-calendar>\n</section>\n\n<div *ngIf=\"!appearance.isMobile && !showMonthCalendar && !showYearCalendar\" class=\"title\">\n <span class=\"hr-label sm-bold\">{{range ? i18n.select_range : i18n.select_date}}</span>\n</div>\n\n<div class=\"gravity-date-picker-content\" [class.hidden]=\"showYearCalendar || showMonthCalendar\" [class.mobile]=\"appearance.isMobile\">\n\n <div *ngIf=\"range\" class=\"selected-dates\">\n <gravity-text-field #startDate\n [size]=\"'sm'\"\n [width]=\"'short'\"\n [label]=\"i18n.start_date\"\n [inputContentType]=\"'date'\"\n [supportText]=\"startDateError\"\n [placeholder]=\"i18n.date_placeholder\"\n [clickOnRightIcon]=\"!startFieldDisabled\"\n (keyup)=\"onDateKeyup(this, $event, 'start')\"\n (clickIconRight)=\"clearSelectedDate('start')\"\n (focusout)=\"searchDate(this, startDate.inputValue, 'start')\"\n [iconRight]=\"(selectedRangeStart || startDate.inputValue.length > 9) ? 'unsuccess' : ''\"\n (click)=\"focused = 'start'; selectedRangeStart ? currentDate = calendarDateToDate(selectedRangeStart) : null\"\n [customState]=\"startFieldDisabled ? 'disabled' : startDateError ? 'typed-error' : (startDate.inputValue.length < 1 ? 'default' : 'typing')\"\n [attr.data-cy]=\"'datePicker_startDate'\"/>\n\n <gravity-text-field #endDate\n [size]=\"'sm'\"\n [width]=\"'short'\"\n [label]=\"i18n.end_date\"\n [inputContentType]=\"'date'\"\n [supportText]=\"endDateError\"\n [placeholder]=\"i18n.date_placeholder\"\n [clickOnRightIcon]=\"!endFieldDisabled\"\n (keyup)=\"onDateKeyup(this, $event, 'end')\"\n (clickIconRight)=\"clearSelectedDate('end')\"\n (focusout)=\"searchDate(this, endDate.inputValue, 'end')\"\n [iconRight]=\"(selectedRangeEnd || endDate.inputValue.length > 9) ? 'unsuccess' : ''\"\n (click)=\" focused = 'end'; selectedRangeEnd ? currentDate = calendarDateToDate(selectedRangeEnd) : null\"\n [customState]=\"endFieldDisabled ? 'disabled' : endDateError ? 'typed-error' : (endDate.inputValue.length < 1 ? 'default' : 'typing')\" [attr.data-cy]=\"'datePicker_endDate'\"/>\n </div>\n\n <section class=\"gravity-date-picker-header\" [class.mobile]=\"appearance.isMobile\">\n <gravity-icon-button [type]=\"'primary'\" [size]=\"'sm'\" [icon]=\"'arrow-left'\" [supportText]=\"i18n.preview_month\"\n (clickOnIcon)=\"currentDate = changeDate(-1, currentDate, true);\"\n [state]=\"(navType === 'prev' || navType === 'both') && (appearance.state !== 'disabled') &&\n isPeriodAvailable(currentDate, config.minDate, 'month', 'prev') ? 'active' : 'disabled'\"/>\n\n <div class=\"month-year-label\">\n <gravity-dropdown-label [fontClass]=\"'hr-title sm-bold'\" [size]=\"'sm'\" [label]=\"monthsList[currentDate.getMonth()]\"\n [state]=\"appearance.state === 'disabled' ? 'inactive' : 'active'\" (onClickLabel)=\"handleOnClickDropdownLabel(true)\" [attr.data-cy]=\"'datePicker_monthDropdown'\"/>\n\n <gravity-dropdown-label [fontClass]=\"'hr-title sm-bold'\" [size]=\"'sm'\" [label]=\"currentDate.getFullYear().toString()\"\n [state]=\"appearance.state === 'disabled' ? 'inactive' : 'active'\" (onClickLabel)=\"handleOnClickDropdownLabel(false)\" [attr.data-cy]=\"'datePicker_yearDropdown'\"/>\n </div>\n\n <gravity-icon-button [type]=\"'primary'\" [size]=\"'sm'\" [icon]=\"'arrow-right'\" [supportText]=\"i18n.next_month\"\n (clickOnIcon)=\"currentDate = changeDate(1, currentDate, true);\"\n [state]=\"(navType === 'next' || navType === 'both') && (appearance.state !== 'disabled') &&\n isPeriodAvailable(currentDate, config.maxDate, 'month', 'next') ? 'active' : 'disabled'\"/>\n </section>\n\n <section class=\"gravity-date-picker-body\" [class.mobile]=\"appearance.isMobile\">\n <section class=\"days-name-line\">\n <div class=\"days-name\">\n <span class=\"hr-body\" [ngClass]=\"appearance.isMobile ? 'md-regular' : 'sm-regular'\"\n *ngFor=\"let day of daysList\"> {{ day }} </span>\n </div>\n\n <div class=\"separator-line\"></div>\n </section>\n\n <section class=\"days-number-selector\" [attr.data-cy]=\"'datePicker_daysSelector'\">\n <div class=\"days-number-table\">\n <div class=\"week-row\" *ngFor=\"let week of getMonthGrid(); trackBy: trackByWeek\">\n <span class=\"hr-body\" *ngFor=\"let day of week; trackBy: trackByDay\"\n [class.preview]=\"range ? isPreview(this, day) : null\"\n [class.disabled]=\"!day.inCurrentMonth\" [class.today]=\"day.isToday\"\n (mouseenter)=\"range ? onHoverDay(this, day) : null; hoverDay.emit(day)\"\n (mouseleave)=\"range ? onClearHover(this) : null; this.clearHover.emit()\"\n [ngClass]=\"[appearance.isMobile ? 'md-regular' : 'sm-regular',\n appearance.state === 'disabled' ? 'disabled' : getDaySelectionClass(day)]\"\n (click)=\"day.inCurrentMonth ? onSelectDay(day): null\"> {{ day.day }} </span>\n </div>\n </div>\n\n <div *ngIf=\"notification\" class=\"notification\" [class.error]=\"notification.error\">\n <gravity-icon [style.--icon-color]=\"'var(--notification-icon-color)'\" [iconSize]=\"'sm-12'\" [iconName]=\"'information-circle'\"/>\n <span class=\"hr-label sm-regular\">{{notification.text}}</span>\n </div>\n\n <div *ngIf=\"range || selectedDay\" class=\"action-section\" >\n <gravity-link [linkText]=\"i18n.clear\" [state]=\"hasDateSelected() ? 'active' : 'disabled'\"\n [fontClass]=\"appearance.isMobile ? 'hr-body md-regular' : 'hr-body sm-regular'\"\n (click)=\" hasDateSelected() ? clearSelectedDate('all') : null\"/>\n\n <gravity-button *ngIf=\"range\" [size]=\"appearance.isMobile ? 'md' : 'sm'\" [type]=\"'tertiary'\" [disabled]=\"!hasDateSelected(true)\"\n (click)=\"hasDateSelected(true) ? applySelectedDate() : null\"> {{i18n.apply}} </gravity-button>\n </div>\n </section>\n </section>\n</div>\n","import {Component, EventEmitter, Input, Output} from '@angular/core';\nimport {DatePickerAppearance, DatePickerConfig, DatePickerResponse} from \"./shared/date-picker.modal\";\nimport {formatDatetime} from \"./shared/date-picker.utils\";\nimport {CALENDAR_I18N} from \"./shared/date-picker.constants\";\n\n@Component({\n selector: 'gravity-date-picker',\n templateUrl: './gravity-date-picker.component.html',\n styleUrls: ['./gravity-date-picker.component.scss']\n})\nexport class GravityDatePickerComponent {\n @Input() public cypressTag: string;\n @Input() public datePickerType: 'single' | 'range' | 'month' | 'year' = 'single';\n\n private _config: DatePickerConfig = {};\n private _appearance: DatePickerAppearance = {};\n\n\tpublic showCo\n\tpublic get i18n() { return CALENDAR_I18N[this.appearance.language]; }\n\n @Input()\n set config(value: DatePickerConfig) {\n this._config = {\n maxDate: null,\n minDate: null,\n initDate: null,\n ...value\n };\n }\n get config(): DatePickerConfig {\n return this._config;\n }\n\n @Input()\n set appearance(value: DatePickerAppearance) {\n this._appearance = {\n language: 'en',\n state: 'hidden',\n isMobile: false,\n ...value\n };\n }\n get appearance(): DatePickerAppearance {\n return this._appearance;\n }\n\n @Output() public clear = new EventEmitter<void>();\n @Output() public close = new EventEmitter<void>();\n @Output() public response: EventEmitter<DatePickerResponse> = new EventEmitter<DatePickerResponse>();\n\n public handleClear(): void {\n this.clear.emit();\n }\n\n public handleResponse(value: Date[] | Date): void {\n\t\tif(Array.isArray(value)) {\n\t\t\tthis.response.emit({dates: value, formatedDate:\n\t\t\t\t\tformatDatetime([value[0].toISOString(), value[1].toISOString()], 'short', this.appearance.language)\n\t\t\t});\n } else {\n\t\t\tthis.response.emit({dates: value, formatedDate:\n\t\t\t\t\tformatDatetime(value.toISOString(), 'short', this.appearance.language)});\n\t\t}\n }\n\n\tpublic handleCloseButton(): void {\n\t\tthis.close.emit();\n\t}\n\n\tpublic applyOnClose() {\n\t\tif(this.appearance.state === 'hidden') {\n\t\t\tsetTimeout(() => {this.appearance.state = 'destroy'}, 100);\n\t\t\treturn true;\n\t\t}\n\t}\n}\n","<div *ngIf=\"appearance.isMobile && (appearance.state === 'active')\" class=\"mobile-date-picker-cover\"> </div>\n\n<div *ngIf=\"appearance.isMobile && (appearance.state === 'active')\" class=\"close-button\">\n <span class=\"hr-label md-bold\">{{datePickerType === 'range' ? i18n.select_range : i18n.select_date}}</span>\n <gravity-icon-button [size]=\"'sm'\" [icon]=\"'unsuccess'\" (clickOnIcon)=\"handleCloseButton()\"></gravity-icon-button>\n</div>\n\n<ng-container *ngIf=\"datePickerType === 'single'\">\n <section *ngIf=\"appearance.state !== 'destroy'\" class=\"gravity-date-picker-container\"\n [attr.data-cy]=\"cypressTag ? 'datePicker_' + cypressTag : null\" [class.mobile]=\"appearance.isMobile\">\n <day-calendar\n [config]=\"config\"\n [appearance]=\"appearance\"\n [appyOnClose]=\"applyOnClose()\"\n (clearSelection)=\"handleClear()\"\n [restart]=\"appearance.state === 'active'\"\n (calendarResponse)=\"handleResponse($event)\">\n </day-calendar>\n </section>\n</ng-container>\n\n<ng-container *ngIf=\"datePickerType === 'range'\">\n <section *ngIf=\"appearance.state !== 'destroy'\" class=\"gravity-date-picker-container\"\n [attr.data-cy]=\"cypressTag ? 'datePicker_' + cypressTag : null\" [class.mobile]=\"appearance.isMobile\">\n <day-calendar\n [range]=\"true\"\n [config]=\"config\"\n [appearance]=\"appearance\"\n [appyOnClose]=\"applyOnClose()\"\n (clearSelection)=\"handleClear()\"\n [restart]=\"appearance.state === 'active'\"\n (calendarResponse)=\"handleResponse($event)\">\n </day-calendar>\n </section>\n</ng-container>\n\n<ng-container *ngIf=\"datePickerType === 'month'\">\n <section *ngIf=\"appearance.state !== 'hidden'\" class=\"gravity-date-picker-container\"\n [attr.data-cy]=\"cypressTag ? 'datePicker_' + cypressTag : null\" [class.mobile]=\"appearance.isMobile\">\n <month-calendar\n [config]=\"config\"\n [appearance]=\"appearance\"\n [initDate]=\"config.initDate\"\n (clearSelection)=\"handleClear()\"\n (response)=\"handleResponse($event)\"\n [restart]=\"appearance.state === 'active'\">\n </month-calendar>\n </section>\n</ng-container>\n\n<ng-container *ngIf=\"datePickerType === 'year'\">\n <section *ngIf=\"appearance.state !== 'hidden'\" class=\"gravity-date-picker-container\"\n [attr.data-cy]=\"cypressTag ? 'datePicker_' + cypressTag : null\" [class.mobile]=\"appearance.isMobile\">\n <year-calendar\n [config]=\"config\"\n [appearance]=\"appearance\"\n [initDate]=\"config.initDate\"\n (clearSelection)=\"handleClear()\"\n (response)=\"handleResponse($event)\"\n [restart]=\"appearance.state === 'active'\">\n </year-calendar>\n </section>\n</ng-container>\n","import {AfterViewInit, Component, ElementRef, EventEmitter, Input, OnInit, Output, QueryList, ViewChildren} from '@angular/core';\n\nexport interface SegmentedButton {\n\ttext: string; icon?: string; value: string; cypressTag?: string\n}\n\n@Component({\n selector: 'gravity-segmented-button',\n templateUrl: './gravity-segmented-button.component.html',\n styleUrls: ['./gravity-segmented-button.component.scss']\n})\nexport class GravitySegmentedButtonComponent implements OnInit, AfterViewInit {\n @Input() size: 'sm' | 'md' = 'sm';\n @Input() buttons: SegmentedButton[] = [];\n @Input() disabled: boolean = false;\n @Input() preselectedItem?: string;\n @Output() selected = new EventEmitter<string>();\n @ViewChildren('segmentedButton') buttonElements!: QueryList<ElementRef<HTMLElement>>;\n\n public selectedValue: string;\n public sliderStyle = { left: '0px', width: '0px' };\n\n ngOnInit(): void {\n if (this.disabled) {\n this.selectedValue = null;\n return;\n }\n\n if (this.preselectedItem && this.buttons.some(b => b.value === this.preselectedItem)) {\n this.selectedValue = this.preselectedItem;\n } else if (this.buttons.length > 0) {\n this.selectedValue = this.buttons[0].value;\n }\n }\n\n ngAfterViewInit(): void {\n setTimeout(() => this.updateSliderStyle(), 0);\n }\n\n public onSelect(button: SegmentedButton): void {\n if (this.disabled || this.selectedValue === button.value) return;\n\n this.selectedValue = button.value;\n this.selected.emit(button.value);\n this.updateSliderStyle();\n }\n\n public getState(button: SegmentedButton): string {\n if (this.disabled) return 'disabled';\n return button.value === this.selectedValue ? 'selected' : 'unselected';\n }\n\n public updateSliderStyle(): void {\n const index = this.buttons.findIndex(b => b.value === this.selectedValue);\n if (index === -1) return;\n\n const buttonElement = this.buttonElements.get(index)?.nativeElement;\n if (!buttonElement) return;\n\n const { offsetLeft: left, offsetWidth: width } = buttonElement;\n this.sliderStyle = {\n left: `${left}px`,\n width: `${width}px`\n };\n }\n\n public getSliderStyle(): { left: string; width: string } {\n return this.sliderStyle;\n }\n\n public setSelectedValue(value: string) {\n if (this.disabled) return;\n if (value && this.buttons.some(b => b.value === value)) {\n this.selectedValue = value;\n this.updateSliderStyle();\n this.selected.emit(this.selectedValue);\n }\n }\n}\n","<div class=\"gravity-segmented-button-container {{size}}\" [class.disabled]=\"disabled\">\n <div class=\"selected-background\" [ngStyle]=\"getSliderStyle()\"></div>\n\n <div *ngFor=\"let button of buttons\" #segmentedButton\n class=\"segmented-button\" [ngClass]=\"getState(button)\" (click)=\"onSelect(button)\" [attr.data-cy]=\"button.cypressTag? 'segmentedButton_' + button.cypressTag : null\">\n <div *ngIf=\"button.icon\">\n <gravity-icon [style.--icon-color]=\"'var(--segmented-button-color)'\"\n [iconSize]=\"'sm-12'\" [size]=\"'sm'\" [iconName]=\"button.icon\"></gravity-icon>\n </div>\n <span [ngClass]=\"'hr-label ' + size + (getState(button) === 'selected' ? '-bold' : '-regular')\"> {{button.text}} </span>\n </div>\n</div>\n","import {Component, EventEmitter, Input, Output} from '@angular/core';\n\nexport interface GravityChipItem {\n label: string;\n id: number;\n icon?: string;\n cypressTag?: string;\n}\n\n@Component({\n selector: 'gravity-chip-group',\n templateUrl: './gravity-chip-group.component.html',\n styleUrls: ['./gravity-chip-group.component.scss']\n})\nexport class GravityChipGroupComponent {\n @Input() public disabled: boolean = false;\n @Input() public size: 'sm' | 'md' = 'sm';\n @Input() public items: GravityChipItem[] = [];\n\n @Output() public clickOnChip: EventEmitter<any[]> = new EventEmitter<any>();\n\n public selectedItems: GravityChipItem[] = [];\n\n public toggleSelection(item: GravityChipItem) {\n if (this.disabled) return;\n\n const index = this.selectedItems.findIndex((i) => i.id === item.id);\n if (index >= 0) {\n // Deselect\n this.selectedItems.splice(index, 1);\n } else {\n // Select\n this.selectedItems.push(item);\n }\n\n this.clickOnChip.emit(\n this.selectedItems.map(i => ({ label: i.label, id: i.id }))\n );\n }\n\n public isSelected(item: GravityChipItem): boolean {\n return this.selectedItems.some((i) => i.id === item.id );\n }\n}\n","<div class=\"chips-wrapper {{size}}\">\n <div class=\"gravity-chip {{size}}\" *ngFor=\"let item of items\"\n [attr.data-cy]=\"item.cypressTag ? 'chip_' + item.cypressTag: null\"\n [ngClass]=\"{'selected': isSelected(item), 'disabled': disabled}\" (click)=\"toggleSelection(item)\">\n\n <gravity-icon *ngIf=\"item.icon\" [style.--icon-color]=\"'var(--left-icon-color)'\"\n [iconName]=\"item.icon\" [iconSize]=\"size === 'sm' ? 'sm-12' :'md-16'\">\n </gravity-icon>\n\n <label class=\"hr-label\" [ngClass]=\"size === 'sm' ? 'sm-regular' : 'md-regular'\">{{ item.label }}</label>\n\n <div *ngIf=\"isSelected(item)\" class=\"close-button {{size}}\">\n <gravity-icon [style.--icon-color]=\"'var(--close-button-color)'\"\n [iconName]=\"'unsuccess'\" [iconSize]=\"size === 'sm' ? 'sm-12' :'md-16'\">\n </gravity-icon>\n </div>\n </div>\n</div>\n","import {Component, Input} from '@angular/core';\n\n@Component({\n selector: 'gravity-tables-v2',\n templateUrl: './gravity-tables-v2.component.html',\n styleUrls: ['./gravity-tables-v2.component.scss']\n})\nexport class GravityTablesV2Component {\n @Input() public type: 'card-view' | 'table-view' | 'table-view-divider'\n @Input() public rowSize: 'xxs' | 'xs' | 'sm' = 'sm'\n}\n","<main class=\"{{type}} row-{{rowSize}}\">\n <ng-content/>\n</main>\n","import {AfterViewInit, Component, EventEmitter, HostListener, Input, Output} from '@angular/core';\n\n@Component({\n selector: 'gravity-data-views-v2',\n templateUrl: './gravity-data-views-v2.component.html',\n styleUrls: ['./gravity-data-views-v2.component.scss']\n})\nexport class GravityDataViewsV2Component implements AfterViewInit{\n @Input() public type: 'custom-view' | 'list-view'\n @Input() disabled: boolean = false;\n @Input() statusIndicator: {\n icon: string;\n text: string,\n status: 'positive' | 'negative' | 'attention' | 'neutro' | 'disabled' | 'positive-secondary' | 'negative-secondary',\n position?: 'left' | 'right'\n };\n\n @Output() clickEmitter: EventEmitter<any[]> = new EventEmitter<any>();\n\n public hasClickListener = false;\n public isMd: boolean;\n\n constructor() {\n this.checkResolution();\n }\n\n ngAfterViewInit(): void {\n setTimeout(() => {\n this.hasClickListener = this.clickEmitter.observers.length > 0;\n });\n }\n\n @HostListener('window:resize', ['$event'])\n onResize(): void {\n this.checkResolution();\n }\n\n private checkResolution(): void {\n const width = window.innerWidth;\n this.isMd = width >= 577;\n }\n\n public onClick(): void {\n if (this.disabled || !this.hasClickListener) {\n return;\n }\n\n this.clickEmitter.emit();\n }\n}\n","<main class=\"{{type}}\" [class.disabled]=\"hasClickListener && disabled\" [class.clickable]=\"hasClickListener && !disabled\" [style.width]=\"isMd ? '545px' : '100%'\" (click)=\"onClick()\">\n\n <div *ngIf=\"statusIndicator && type === 'custom-view'\" class=\"status-wrapper\" [ngClass]=\"statusIndicator.position || 'left'\">\n <gravity-status-indicator [size]=\"'sm'\" [type]=\"'primary'\" [icon]=\"statusIndicator.icon\"\n [text]=\"statusIndicator.text\"\n [status]=\"statusIndicator.status\"/>\n </div>\n\n <ng-content/>\n</main>\n","import {HostListener, Injectable} from \"@angular/core\";\n\n@Injectable({providedIn: 'root'})\nexport class GravityResponsiveService {\n public currentResolutionWidth: number;\n private breakpoints = {\n xs: 0,\n sm: 576,\n md: 992,\n lg: 1440,\n xl: 1920\n }\n\n constructor() {\n this.onResize();\n }\n\n public getResolution(): 'xs' | 'sm' | 'md' | 'lg' | 'xl' {\n if (this.currentResolutionWidth <= this.breakpoints.xs) {\n return 'xs';\n } else if (this.currentResolutionWidth > this.breakpoints.xs && this.currentResolutionWidth <= this.breakpoints.sm) {\n return 'sm';\n } else if (this.currentResolutionWidth > this.breakpoints.sm && this.currentResolutionWidth <= this.breakpoints.md) {\n return 'md';\n } else if (this.currentResolutionWidth > this.breakpoints.md && this.currentResolutionWidth <= this.breakpoints.lg) {\n return 'lg';\n } else {\n return 'xl';\n }\n }\n\n @HostListener('window:resize', ['$event'])\n private onResize(): void {\n this.currentResolutionWidth = window.innerWidth;\n }\n\n public isMobile(): boolean {\n return this.getResolution() == 'md' || this.getResolution() == 'sm';\n }\n}\n","import {\n AfterViewInit,\n Component,\n ElementRef,\n EventEmitter,\n HostListener,\n Input, OnDestroy,\n Output,\n ViewChild\n} from '@angular/core';\nimport {GravityResponsiveService} from \"../../services/gravity-responsive.service\";\n\n@Component({\n selector: 'gravity-detail-container',\n templateUrl: './gravity-detail-container.component.html',\n styleUrls: ['./gravity-detail-container.component.scss']\n})\nexport class GravityDetailContainerComponent implements AfterViewInit, OnDestroy{\n @Input() cypressTag: string;\n @Input() title: string = '';\n @Input() description: string = '';\n @Input() mode: 'modal' | 'standard';\n @Input() type: 'flyout' | 'detail-view' = 'flyout';\n @Input() optionalHeight: string;\n @Input() public language: 'en' | 'es' = 'en';\n\n @Output() closed = new EventEmitter<void>();\n @Output() menuEvent = new EventEmitter<void>();\n\n @ViewChild('containerRef') containerRef: ElementRef<HTMLDivElement>;\n\n public isOpen = false;\n private resizeObserver: ResizeObserver | null = null;\n\n constructor(public readonly gravityResponsiveService: GravityResponsiveService) {\n this.onResize();\n }\n\n @HostListener('window:resize', ['$event'])\n private onResize(): void {\n this.gravityResponsiveService.currentResolutionWidth = window.innerWidth;\n this.checkHasScroll();\n }\n\n public open(): void {\n this.isOpen = true;\n this.checkHasScroll();\n }\n\n public dismiss(): void {\n this.isOpen = false;\n this.closed.emit();\n }\n\n public menu(): void {\n this.menuEvent.emit();\n }\n\n ngAfterViewInit() {\n const el = this.containerRef?.nativeElement;\n if (!el) return;\n\n const update = () => {\n requestAnimationFrame(() => {\n el.classList.toggle('has-scroll', el.scrollHeight > el.clientHeight);\n });\n };\n\n this.resizeObserver = new ResizeObserver(update);\n this.resizeObserver.observe(el);\n\n update();\n }\n\n private checkHasScroll(): void {\n const el = this.containerRef?.nativeElement;\n if (!el) return;\n requestAnimationFrame(() => {\n el.classList.toggle('has-scroll', el.scrollHeight > el.clientHeight);\n });\n }\n\n ngOnDestroy(): void {\n if (this.resizeObserver) {\n this.resizeObserver.disconnect();\n this.resizeObserver = null;\n }\n }\n}\n","<div class=\"detail-container-backdrop\"\n *ngIf=\"type === 'flyout' && mode === 'modal' && !gravityResponsiveService.isMobile()\"\n [class.open]=\"isOpen\" (click)=\"dismiss()\"></div>\n\n<div class=\"detail-container-content {{mode}} {{gravityResponsiveService.isMobile() ? 'mobile' : type}}\"\n [ngClass]=\"isOpen ? 'show' : 'dismiss'\" [style.height]=\"optionalHeight\"\n [attr.data-cy]=\"'detailContainer_' + cypressTag\">\n <div class=\"detail-header\">\n <div class=\"back-button\" (click)=\"dismiss()\" *ngIf=\"gravityResponsiveService.isMobile()\"\n [attr.data-cy]=\"'detailContainer_backButton'\">\n <gravity-icon [iconName]=\"'arrow-left'\" [iconSize]=\"'sm-12'\"\n [style.--icon-color]=\"'var(--back-button-color)'\"></gravity-icon>\n <span class=\"hr-label md-regular\">{{ language === 'en' ? 'Back' : 'Atrás' }}</span>\n </div>\n <p [ngClass]=\"gravityResponsiveService.isMobile() ? 'hr-body md-bold': type === 'flyout' ? 'hr-title md-bold' : 'hr-body lg-bold'\"\n [attr.data-cy]=\"'detailContainer_title'\">{{ title }}</p>\n <gravity-icon-button *ngIf=\"!gravityResponsiveService.isMobile()\" [icon]=\"'unsuccess'\" [size]=\"'sm'\"\n (click)=\"dismiss()\"\n [supportText]=\"'Close'\" [attr.data-cy]=\"'detailContainer_closeButton'\"/>\n <gravity-icon class=\"menu-button\" *ngIf=\"gravityResponsiveService.isMobile()\"\n [style.--icon-color]=\"'var(--back-button-color)'\"\n [iconSize]=\"'lg-24'\" [iconName]=\"'menu'\" (click)=\"menu()\" [attr.data-cy]=\"'detailContainer_menuButton'\"/>\n </div>\n\n <div class=\"overflow-container\" #containerRef>\n <p *ngIf=\"description != '' && type === 'flyout'\"\n class=\"hr-body sm-regular detail-description\"> {{ description }}</p>\n\n <div class=\"detail-body\" [attr.data-cy]=\"'detailContainer_body'\">\n <ng-content select=\"[detail-body]\"></ng-content>\n </div>\n </div>\n\n <div class=\"detail-actions\" *ngIf=\"type === 'flyout'\">\n <ng-content select=\"[detail-actions]\"></ng-content>\n </div>\n</div>\n","import {Injectable} from '@angular/core';\nimport {NotificationStatusUpdate, NotificationViewedStatusRequest, PushNotification, UserNotifications} from \"../model/gravity-push-notifications.model\";\n\n@Injectable({providedIn: 'root'})\nexport class PushNotificationsService {\n\tpublic userId: number;\n\tpublic seenNotifications: PushNotification[] = [];\n\tpublic pendingNotifications: PushNotification[] = [];\n\n\tpublic loadUserNotifications(user: UserNotifications): void {\n\t\tif (user) {\n\t\t\tthis.userId = user.user_id;\n\t\t\tthis.seenNotifications = user.seenNotifications;\n\t\t\tthis.pendingNotifications = user.pendingNotifications;\n\t\t}\n\t}\n\n\tpublic toggleNotificationsPanel(open: boolean): NotificationViewedStatusRequest {\n\t\tif (!open) {\n\t\t\tlet notificationsArray: NotificationStatusUpdate[] = [];\n\t\t\tconst newSeenNotifications = [...this.seenNotifications];\n\n\t\t\tthis.pendingNotifications.forEach((notification: PushNotification) => {\n\t\t\t\tif (notification.notification_tag !== 'TAG_WELCOME') {\n\t\t\t\t\tlet pushNotificationUpdateStatusRequestFormatted: NotificationStatusUpdate = {} as NotificationStatusUpdate;\n\t\t\t\t\tpushNotificationUpdateStatusRequestFormatted.tag = notification.notification_tag;\n\t\t\t\t\tpushNotificationUpdateStatusRequestFormatted.new_status = 'true';\n\t\t\t\t\tnotificationsArray.push(pushNotificationUpdateStatusRequestFormatted);\n\t\t\t\t}\n\n\t\t\t\tconst seenNotification: PushNotification = { ...notification, notification_viewed: true };\n\t\t\t\tnewSeenNotifications.unshift(seenNotification);\n\t\t\t});\n\n\t\t\tthis.pendingNotifications = [];\n\t\t\tthis.seenNotifications = newSeenNotifications;\n\n\t\t\tif (notificationsArray.length > 0 && this.userId !== null) {\n\t\t\t\tlet updatePushNotificationViewedStatusRequest: NotificationViewedStatusRequest = {} as NotificationViewedStatusRequest;\n\t\t\t\tupdatePushNotificationViewedStatusRequest.user_id = this.userId;\n\t\t\t\tupdatePushNotificationViewedStatusRequest.push_notifications = notificationsArray;\n\n\t\t\t\treturn updatePushNotificationViewedStatusRequest;\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic getNotificationContent(text: string, additionalText: string): string {\n\t\tif (text.indexOf('{{replace}}') !== -1 && additionalText) {\n\t\t\ttext = text.replace('{{replace}}', additionalText);\n\t\t}\n\n\t\treturn text;\n\t}\n\n\tpublic removeTextOverflow(elementId: string): void {\n\t\tlet element = document.querySelector(\".notification#\" + elementId + \" .body\");\n\n\t\tif (element?.classList.contains('white-space-nowrap')) {\n\t\t\telement.classList.remove('white-space-nowrap');\n\t\t} else if (element) {\n\t\t\telement.classList.add('white-space-nowrap');\n\t\t}\n\t}\n\n\tpublic clearLoginNotification(): void {\n\t\tconst welcomeTag = 'TAG_WELCOME';\n\n\t\tif (this.pendingNotifications?.length) {\n\t\t\tthis.pendingNotifications = this.pendingNotifications.filter(notification => notification.notification_tag !== welcomeTag);\n\t\t}\n\n\t\tif (this.seenNotifications?.length) {\n\t\t\tthis.seenNotifications = this.seenNotifications.filter(notification => notification.notification_tag !== welcomeTag);\n\t\t}\n\t}\n}","import {NotificationViewedStatusRequest, UserNotifications} from \"../../model/gravity-push-notifications.model\";\nimport {Component, ElementRef, EventEmitter, HostListener, Input, OnDestroy, OnInit, Output} from '@angular/core';\nimport { PushNotificationsService } from \"../../services/gravity-push-notifications-service.service\";\n\n@Component({\n\tselector: 'gravity-push-notifications',\n\ttemplateUrl: './gravity-push-notifications.component.html',\n\tstyleUrls: ['./gravity-push-notifications.component.scss']\n})\nexport class GravityPushNotificationsComponent implements OnInit, OnDestroy {\n\t@Input() set userNotifications(value: UserNotifications | undefined) {\n\t\tthis._userNotifications = value;\n\t\tthis.processData();\n\t}\n\n\t@Output() public viewedNotificationsResponse: EventEmitter<NotificationViewedStatusRequest> = new EventEmitter();\n\n\tpublic isPanelOpen: boolean = false;\n\tpublic _userNotifications: UserNotifications | undefined;\n\tpublic viewedNotifications: NotificationViewedStatusRequest | undefined;\n\n\tconstructor(public readonly pushNotificationsService: PushNotificationsService,\n\t private readonly elementRef: ElementRef) { }\n\n\tngOnInit(): void {\n\t\tthis.processData();\n\t}\n\n\tngOnDestroy(): void {\n\t\tthis.pushNotificationsService.clearLoginNotification();\n\t}\n\n\tprivate processData(): void {\n\t\tthis.pushNotificationsService.loadUserNotifications(this._userNotifications);\n\t}\n\n\tpublic handleToggleNotificationsPanel() {\n\t\tthis.isPanelOpen = !this.isPanelOpen;\n\t\tthis.viewedNotifications = this.pushNotificationsService.toggleNotificationsPanel(this.isPanelOpen);\n\t\tif(this.viewedNotifications?.push_notifications?.length > 0) {\n\t\t\tthis.viewedNotificationsResponse.emit(this.viewedNotifications);\n\t\t}\n\t}\n\n\t@HostListener('document:click', ['$event']) onClick(event: MouseEvent) {\n\t\tif (this.isPanelOpen) {\n\t\t\tconst clickedInside = this.elementRef.nativeElement.contains(event.target);\n\n\t\t\tif (!clickedInside) {\n\t\t\t\tthis.handleToggleNotificationsPanel();\n\t\t\t}\n\t\t}\n\t}\n}","<div class=\"btn-group notifications-wrapper\" data-cy=\"PUSH_NOTIFICATIONS_wrapper\">\n <div class=\"notifications-toggle pointer\" [class.active]=\"isPanelOpen\" data-cy=\"PUSH_NOTIFICATIONS_toggle\"\n (click)=\"handleToggleNotificationsPanel()\">\n <gravity-icon class=\"bell\" [iconName]=\"'bell'\" [iconSize]=\"'md-16'\"></gravity-icon>\n <span *ngIf=\"pushNotificationsService.pendingNotifications.length > 0\" class=\"circle\"></span>\n </div>\n <div *ngIf=\"isPanelOpen\" class=\"notifications-box dropdown-menu-right elevation-sm\" data-cy=\"PUSH_NOTIFICATIONS_panel\">\n <div class=\"panel-header\" data-cy=\"PUSH_NOTIFICATIONS_panel_header\">\n <p class=\"hr-body md-regular\" data-cy=\"PUSH_NOTIFICATIONS_panel_title\"> Notifications </p>\n <p class=\"hr-body md-regular\" data-cy=\"PUSH_NOTIFICATIONS_panel_pending_counter\"\n *ngIf=\"pushNotificationsService.pendingNotifications.length > 0\">\n {{pushNotificationsService.pendingNotifications.length}}\n </p>\n </div>\n <div class=\"notifications\" data-cy=\"PUSH_NOTIFICATIONS_item\"\n *ngIf=\"pushNotificationsService.pendingNotifications?.length > 0\">\n <p> New </p>\n <ng-container *ngFor=\"let notification of pushNotificationsService.pendingNotifications, let index = index\">\n <div class=\"notification pending\" data-cy=\"PUSH_NOTIFICATIONS_new_notification\"\n (click)=\"$event.stopPropagation(); pushNotificationsService.removeTextOverflow('pending-' + index)\"\n id=\"pending-{{index}}\">\n <gravity-icon *ngIf=\"notification.iconName\" [iconName]=\"notification.iconName\" [hoverIcon]=\"false\" [iconSize]=\"'lg-24'\"></gravity-icon>\n <div class=\"notification-content\">\n <p class=\"hr-title sm-bold title\">\n <span class=\"pending-notification-circle\"></span>\n {{pushNotificationsService.getNotificationContent(notification.titleText, notification.titleAdditionalText)}}\n </p>\n <p class=\"body hr-body md-regular white-space-nowrap\" title=\"Click to expand\">\n {{pushNotificationsService.getNotificationContent(notification.bodyText, notification.bodyAdditionalText)}}\n </p>\n </div>\n </div>\n <hr *ngIf=\"index + 1 != pushNotificationsService.pendingNotifications.length\">\n </ng-container>\n </div>\n <hr *ngIf=\"pushNotificationsService.pendingNotifications?.length > 0 && pushNotificationsService.seenNotifications?.length > 0\">\n <div class=\"notifications\" *ngIf=\"pushNotificationsService.seenNotifications?.length > 0\">\n <p> Old </p>\n <ng-container *ngFor=\"let notification of pushNotificationsService.seenNotifications, let index = index\">\n <div class=\"notification\" data-cy=\"PUSH_NOTIFICATIONS_old_notification\"\n (click)=\"$event.stopPropagation(); pushNotificationsService.removeTextOverflow('seen-' + index)\"\n id=\"seen-{{index}}\">\n <gravity-icon *ngIf=\"notification.iconName\" [iconName]=\"notification.iconName\" [hoverIcon]=\"false\" [iconSize]=\"'lg-24'\"></gravity-icon>\n <div class=\"notification-content\">\n <p class=\"hr-title sm-bold title\">\n {{pushNotificationsService.getNotificationContent(notification.titleText, notification.titleAdditionalText)}}\n </p>\n <p class=\"body hr-body md-regular white-space-nowrap\" title=\"Click to expand\">\n {{pushNotificationsService.getNotificationContent(notification.bodyAdditionalText, notification.bodyAdditionalText)}}\n </p>\n </div>\n </div>\n <hr *ngIf=\"index + 1 != pushNotificationsService.seenNotifications.length\">\n </ng-container>\n </div>\n <div class=\"notifications\"\n *ngIf=\"pushNotificationsService.pendingNotifications?.length == 0 && pushNotificationsService.seenNotifications?.length == 0\">\n <p class=\"no-notification\"> No new notifications </p>\n </div>\n </div>\n</div>\n","import {Component, EventEmitter, Input, Output} from '@angular/core';\nimport {NotificationViewedStatusRequest, UserNotifications} from \"../../model/gravity-push-notifications.model\";\n\nexport interface BreadCrumb {\n\ticon?: string;\n\tlist?: { text: string; callback?: () => void; isPressed?: boolean } [];\n}\n\n@Component({\n selector: 'gravity-header',\n templateUrl: './gravity-header.component.html',\n styleUrls: ['./gravity-header.component.scss'],\n})\n\nexport class GravityHeaderComponent {\n\t@Input() public title: string;\n\t@Input() public logoUrl: string;\n\t@Input() public longTitle: string;\n\t@Input() public backButton: boolean;\n\t@Input() public breadCrumb: BreadCrumb;\n\t@Input() public language: 'en' | 'es' = 'en';\n\t@Input() public notifications: boolean = false;\n\t@Input() public resolution: 'xs' | 'sm' | 'md' | 'lg' | 'xl';\n\t@Input() public userNotifications: UserNotifications | undefined;\n\n\t@Input()\n\tset isMenuOpen(value: boolean) {\n\t\tthis.iconToggle = value;\n\t\tthis._isMenuOpen = value;\n\t}\n\n\tget isMenuOpen() {\n\t\treturn this._isMenuOpen;\n\t}\n\n\t@Output() public backButtonResponse: EventEmitter<void> = new EventEmitter();\n\t@Output() public toggleMenuResponse: EventEmitter<boolean> = new EventEmitter();\n\t@Output() public viewedNotificationsResponse: EventEmitter<NotificationViewedStatusRequest> = new EventEmitter();\n\n\tprivate _isMenuOpen: boolean = false;\n\n\tpublic iconToggle: boolean = false;\n\tpublic isBackButtonPressed: boolean = false;\n\n\tpublic toggleMenu () {\n\t\tsetTimeout(function () {\n\t\t\tthis.toggleMenuResponse.emit(this._isMenuOpen);\n\t\t}.bind(this), 65)\n\t}\n\n\tpublic backAction(){\n\t\tthis.backButtonResponse.emit();\n\t}\n\n\tpublic handleViewedNotificationsResponse($event: NotificationViewedStatusRequest){\n\t\tthis.viewedNotificationsResponse.emit($event);\n\t}\n\n\tpublic isMobile(){\n\t\treturn this.resolution === 'xs' || this.resolution === 'sm' || this.resolution === 'md';\n\t}\n\n}\n","<div class=\"gravity-header\" [class.mobile]=\"isMobile()\">\n <section class=\"first-level\" [class.long-title]=\"longTitle\">\n <svg-icon *ngIf=\"isMobile() && logoUrl && !backButton\" class=\"logo-header\" [src]=\"logoUrl\"/>\n\n <div *ngIf=\"backButton && breadCrumb?.list?.length < 1\"\n class=\"back-button\" [class.pressed]=\"isBackButtonPressed\"\n (mousedown)=\"isBackButtonPressed = true\" (mouseup)=\"isBackButtonPressed = false\" (click)=\"backAction()\"\n (mouseleave)=\"isBackButtonPressed = false\" (touchstart)=\"isBackButtonPressed = true\">\n\n <gravity-icon [style.--icon-color]=\"'var(--back-button-color)'\" [iconSize]=\"'sm-12'\" [iconName]=\"'arrow-left'\"/>\n <span class=\"'hr-label md-regular')\">{{ language === 'en' ? 'Back' : 'Atrás' }}</span>\n </div>\n\n <div *ngIf=\"breadCrumb?.list?.length > 0 && (resolution === 'lg' || resolution === 'xl' )\" class=\"breadcrumb\">\n <gravity-icon *ngIf=\"breadCrumb.icon\" class=\"gravity-margin-right-xs\" [iconSize]=\"'md-16'\"\n [style.--icon-color]=\"'var(--breadcrumb-button-base-primary)'\" [iconName]=\"breadCrumb.icon\"/>\n\n <ng-container *ngFor=\"let item of breadCrumb.list; let last = last; let i = index\">\n <div class=\"breadcrumb-item\" [class.is-last]=\"last\" [class.has-prev]=\"i !== 0\"\n (mousedown)=\"item.isPressed = true\" (mouseup)=\"item.isPressed = false\"\n (mouseleave)=\"item.isPressed = false\" (touchstart)=\"item.isPressed = true\">\n <span [ngClass]=\"'hr-body ' + (resolution === 'xl' ? 'md-regular' : 'sm-regular')\"\n [class.pressed]=\"item.isPressed\" (click)=\"!last && item.callback?.()\">{{ item.text }} </span>\n </div>\n </ng-container>\n </div>\n\n <h1 *ngIf=\"!backButton && (!isMobile() || (isMobile() && !logoUrl)) && breadCrumb?.list?.length < 1\"\n [ngClass]=\"!isMobile() ? 'hr-headline md-bold' : 'hr-title ' + (resolution === 'md' ? 'md-bold' : 'lg-bold')\">\n {{ title }}\n </h1>\n\n <h1 *ngIf=\"isMobile() && backButton\" [ngClass]=\"'hr-body md-bold'\"> {{ longTitle }} </h1>\n\n <div class=\"main-actions\">\n <ng-content select=\"[main-actions]\"/>\n\n <gravity-push-notifications *ngIf=\"(notifications && !isMobile()) || (notifications && isMobile() && !backButton)\"\n [userNotifications]=\"userNotifications\" (viewedNotificationsResponse)=\"handleViewedNotificationsResponse($event)\"/>\n\n <gravity-icon *ngIf=\"isMobile()\" [style.--icon-color]=\"'var(--back-button-color)'\"\n [iconSize]=\"'lg-24'\" [iconName]=\"'menu'\" (click)=\"toggleMenu()\"/>\n </div>\n </section>\n\n <section *ngIf=\"!isMobile() && (backButton || breadCrumb?.list?.length > 0) && title\" class=\"second-level\">\n <h1 class=\"hr-headline md-bold\">{{ title }}</h1>\n </section>\n\n <section *ngIf=\"isMobile() && logoUrl && !backButton && title\" class=\"second-level\">\n <h1 [ngClass]=\"'hr-title ' + (resolution === 'md' ? 'md-bold' : 'lg-bold')\">{{ title }}</h1>\n </section>\n\n</div>","import {MenuHeader, MenuOption, SecondaryActions, UserInfo} from \"../../model/gravity-menu-items.model\";\nimport {Component, ElementRef, EventEmitter, Input, Output, ViewChild, AfterViewInit, OnDestroy, OnChanges, SimpleChanges} from '@angular/core';\n\n@Component({\n\tselector: 'gravity-menu',\n\ttemplateUrl: './gravity-menu.component.html',\n\tstyleUrls: ['./gravity-menu.component.scss']\n})\nexport class GravityMenuComponent implements AfterViewInit, OnChanges ,OnDestroy {\n\t@Input() public logoUrl: string;\n\t@Input() public items: MenuHeader[];\n\t@Input() public userInfo: UserInfo[];\n\t@Input() public isOpen: boolean = false;\n\t@Input() public showCloseButton = true;\n\t@Input() public cardButtons: SecondaryActions[];\n\t@Input() public maxCardButtonsPerRow: number = 3;\n\t@Input() public currentLink: string | null = null;\n\t@Input() public secondaryActions: SecondaryActions[];\n\t@Input() public size: 'xs' | 'sm' | 'md' | 'lg' | 'xl' = 'xl';\n\t@Input() public mainFooterAction: {icon: string; text: string; callback?: () => void} | null = null;\n\n\t@Output() public close = new EventEmitter();\n\t@Output() public selected = new EventEmitter<string>();\n\n\t@ViewChild('menuBody', {static: false}) menuBody!: ElementRef<HTMLDivElement>;\n\n\tpublic closing = false;\n\tpublic selectedOption: MenuOption;\n\tprivate resizeObserver!: ResizeObserver;\n\n\tngOnChanges(changes: SimpleChanges) {\n\t\tif (changes['currentLink'] && this.currentLink != null && this.items?.length) {\n\t\t\tthis.preselectOptionByLink(this.currentLink);\n\t\t}\n\t}\n\n\tngAfterViewInit() {\n\t\tconst el = this.menuBody.nativeElement;\n\n\t\tthis.resizeObserver = new ResizeObserver(() => {\n\t\t\tthis.updateOverflow();\n\t\t});\n\n\t\tthis.resizeObserver.observe(el);\n\t\tthis.updateOverflow();\n\t}\n\n\tngOnDestroy() {\n\t\tif (this.resizeObserver) {\n\t\t\tthis.resizeObserver.disconnect();\n\t\t}\n\t}\n\n\tprivate preselectOptionByLink(link: string) {\n\t\tfor (const header of this.items ?? []) {\n\t\t\tif (header.link === link) { this.selectedOption = null; header.collapsed = false; return; }\n\n\t\t\tconst option = header.headerOptions?.find(o => o.link === link);\n\t\t\tif (option) { this.selectedOption = option;header.collapsed = false; return; }\n\t\t}\n\t}\n\n\tpublic selectOption(option: MenuOption) {\n\t\tthis.selectedOption = option;\n\t\tthis.selected.emit(option.link);\n\t}\n\n\tpublic closeMenu() {\n\t\tthis.close.emit();\n\t\tthis.closing = true;\n\t\tsetTimeout(() => { this.closing = false; }, 100);\n\t}\n\n\tpublic toggleMenuHeader(header: MenuHeader) {\n\t\tif (header.headerOptions?.length > 0) {\n\t\t\theader.collapsed = !header.collapsed;\n\t\t\tsetTimeout(() => this.updateOverflow(), 0);\n\t\t} else {\n\t\t\tthis.selectedOption = null;\n\t\t\tthis.selected.emit('');\n\t\t}\n\t}\n\n\tprivate updateOverflow(): void {\n\t\tconst el = this.menuBody.nativeElement;\n\t\tconst hasScroll = el.scrollHeight > el.clientHeight;\n\t\tel.classList.toggle('has-scroll', hasScroll);\n\t}\n\n\tpublic getCardButtonsRows(): any[][] {\n\t\tif (!this.cardButtons || !this.maxCardButtonsPerRow) return [];\n\t\tconst rows = [];\n\t\tfor (let i = 0; i < this.cardButtons.length; i += this.maxCardButtonsPerRow) {\n\t\t\trows.push(this.cardButtons.slice(i, i + this.maxCardButtonsPerRow));\n\t\t}\n\n\t\treturn rows;\n\t}\n}\n","<div class=\"gravity-menu {{size}}\" [class.open]=\"isOpen\" [class.closing]=\"closing\">\n <div class=\"menu-logo\">\n <svg-icon *ngIf=\"logoUrl\" [src]=\"logoUrl\" />\n <gravity-icon *ngIf=\"(size === 'md' || size === 'sm') && showCloseButton\"\n [iconSize]=\"'lg-24'\" [iconName]=\"'unsuccess'\" (click)=\"closeMenu()\"/>\n </div>\n\n <div class=\"menu-content\">\n <section #menuBody class=\"menu-body\">\n <div class=\"menu-section\">\n <div class=\"levels\" *ngFor=\"let header of items\">\n <section class=\"first-level\" [class.is-open]=\"!header.collapsed\"\n [routerLink]=\"header.link || undefined\" (click)=\"toggleMenuHeader(header)\">\n <p class=\"hr-label sm-regular\">\n <gravity-icon *ngIf=\"header.icon !== ''\" [iconName]=\"header.icon\" [iconSize]=\"'md-16'\"/>\n {{header.text}}\n </p>\n\n <div class=\"toggle\">\n <span *ngIf=\"header.badged\" class=\"badge\"></span>\n <gravity-icon *ngIf=\"header.headerOptions?.length > 0\" [iconSize]=\"'sm-12'\"\n [iconName]=\"header.collapsed ? 'arrow-down' : 'arrow-up'\"/>\n </div>\n </section>\n\n <section *ngIf=\"!header.collapsed && header.headerOptions?.length > 0\" class=\"second-level\" [@fadeSlide]>\n <div class=\"options-list\">\n <ng-container *ngFor=\"let option of header.headerOptions\">\n <div class=\"option\" [attr.data-cy]=\"option.cypress_tag\" [class.selected]=\"option === selectedOption\">\n <div class=\"line\" [class.selected]=\"(size === 'xl' || size == 'lg') && option === selectedOption\"></div>\n <span [ngClass]=\"(size === 'sm' || size === 'md') ? 'hr-label md-regular' : 'hr-label sm-regular'\"\n [class.disabled]=\"option.disabled\" [class.selected]=\"option === selectedOption\"\n [routerLink]=\"option.link || undefined\" (click)=\"selectOption(option)\">\n {{option.text}}\n </span>\n </div>\n </ng-container>\n </div>\n </section>\n </div>\n </div>\n </section>\n\n <section *ngIf=\"(secondaryActions || userInfo) && (size === 'xl' || size === 'lg')\" class=\"menu-footer elevation-xs\">\n <section class=\"footer-content\">\n <div *ngIf=\"secondaryActions\" class=\"secondary-actions\">\n <div class=\"action\" *ngFor=\"let action of secondaryActions\" (click)=\"action.callback()\">\n <gravity-icon *ngIf=\"action.icon !== ''\" [iconName]=\"action.icon\" [iconSize]=\"'md-16'\"/>\n <span class=\"hr-label sm-regular\">{{action.text}}</span>\n </div>\n </div>\n\n <hr *ngIf=\"secondaryActions && userInfo\" class=\"separator-line\">\n\n <div *ngIf=\"userInfo\" class=\"user-info-list\">\n <div *ngFor=\"let userInfo of userInfo\" class=\"user-info\">\n <gravity-icon *ngIf=\"userInfo.icon !== ''\" [iconName]=\"userInfo.icon\" [iconSize]=\"'sm-12'\"/>\n <span class=\"hr-label sm-regular\">{{userInfo.info}}</span>\n </div>\n </div>\n </section>\n </section>\n\n <!-- - - - - - - - - - - Mobile Resolutions - - - - - - - - - - -->\n\n <section *ngIf=\"(cardButtons || userInfo) && (size === 'md' || size === 'sm')\" class=\"menu-footer-mobile\">\n <section class=\"footer-content\">\n <div *ngIf=\"cardButtons\" class=\"secondary-actions\">\n <div class=\"card-buttons\">\n <div class=\"card-buttons-row\" *ngFor=\"let row of getCardButtonsRows()\">\n <gravity-card-button *ngFor=\"let button of row\" [type]=\"'secondary'\"\n (clicked)=\"button.callback(); selected.emit()\" [orientation]=\"'vrt-center'\" [iconName]=\"button.icon\" [label]=\"button.text\"/>\n </div>\n </div>\n <gravity-button *ngIf=\"mainFooterAction\" [size]=\"'md'\" [type]=\"'tertiary'\" [iconName]=\"mainFooterAction.icon\"\n [iconPosition]=\"'left'\" (click)=\"mainFooterAction.callback()\"> {{mainFooterAction.text}} </gravity-button>\n </div>\n <div *ngIf=\"userInfo\" class=\"user-info-list\">\n <div *ngFor=\"let userInfo of userInfo\" class=\"user-info\">\n <gravity-icon [iconSize]=\"'sm-12'\" [iconName]=\"userInfo.icon\"/>\n <span class=\"hr-label sm-regular\">{{userInfo.info}}</span>\n </div>\n </div>\n </section>\n </section>\n </div>\n</div>\n\n","import {Component, Input, Output, EventEmitter, OnChanges, SimpleChanges} from '@angular/core';\n\nexport interface GravityPageChangedEvent {\n page: number;\n itemsPerPage: number;\n}\n\n@Component({\n selector: 'gravity-pagination',\n templateUrl: './gravity-pagination.component.html',\n styleUrls: ['./gravity-pagination.component.scss']\n})\nexport class GravityPaginationComponent implements OnChanges {\n @Input() currentLang: string = 'en';\n @Input() cypressTag: string;\n\n @Input() totalItems: number;\n @Input() itemsPerPage: number;\n @Input() currentPage: number = 1;\n\n @Input() type: 'full' | 'compact' | 'page-count' | 'dots' = 'full';\n @Input() showPageCount: boolean = true;\n @Input() showArrowDots: boolean = true;\n\n @Output() pageChanged = new EventEmitter<GravityPageChangedEvent>();\n\n totalPages: number = 0;\n pages: number[] = [];\n\n ngOnChanges(changes: SimpleChanges): void {\n this.updatePages();\n }\n\n private updatePages(): void {\n this.totalPages = Math.ceil(this.totalItems / this.itemsPerPage);\n const pages: any[] = [];\n const first = 1;\n const last = this.totalPages;\n\n // UNDER 5 PAGES\n if (this.totalPages <= 5) {\n this.pages = Array.from({ length: this.totalPages }, (_, i) => i + 1);\n return;\n }\n\n // DOTS CASE\n if (this.type === 'dots') {\n this.pages = Array.from({ length: this.totalPages }, (_, i) => i + 1);\n return;\n }\n\n // INITIAL SECTION (pages 1–3)\n if (this.currentPage <= 3) {\n pages.push(1);\n\n if (this.totalPages >= 2) pages.push(2);\n if (this.totalPages >= 3) pages.push(3);\n if (this.totalPages >= 4) pages.push(4);\n\n if (this.totalPages > 5) {\n pages.push('...');\n pages.push(last);\n } else {\n for (let i = 5; i <= last; i++) pages.push(i);\n }\n\n this.pages = pages;\n return;\n }\n\n // FINAL SECTION (last 3 pages)\n if (this.currentPage >= last - 2) {\n pages.push(first);\n pages.push('...');\n\n const start = last - 3; // example: 10 → 7\n for (let p = start; p <= last; p++) {\n if (p > 1) pages.push(p);\n }\n\n this.pages = pages;\n return;\n }\n\n // MIDDLE PART (neither at the beginning nor at the end)\n pages.push(first);\n pages.push('...');\n\n const prev = this.currentPage - 1;\n const next = this.currentPage + 1;\n\n pages.push(prev);\n pages.push(this.currentPage);\n pages.push(next);\n\n pages.push('...');\n pages.push(last);\n\n this.pages = pages;\n }\n\n changePage(page: number): void {\n if (page < 1 || page > this.totalPages || page === this.currentPage || String(page) == '...') return;\n\n this.currentPage = page;\n this.updatePages();\n\n this.pageChanged.emit({\n page: this.currentPage,\n itemsPerPage: this.itemsPerPage\n });\n }\n}\n","<div class=\"gravity-pagination-container\" [attr.data-cy]=\"cypressTag ? 'pagination_' + cypressTag : null\">\n <!-- First -->\n <div class=\"paginator-button-container\" (click)=\"changePage(1)\" [attr.data-cy]=\"'pagination_firstButton'\"\n *ngIf=\"type != 'dots' && currentPage != 1 && totalPages > 5 || type == 'page-count'\">\n <gravity-icon [iconName]=\"'chevron-double-left'\" [iconSize]=\"'sm-12'\"\n [style.--icon-color]=\"'var(--paginator-button-text-color)'\"></gravity-icon>\n <p class=\"hr-body sm-regular\" *ngIf=\"type == 'full'\">{{ currentLang == 'en' ? 'First' : 'Primero' }}</p>\n </div>\n\n <!-- Back -->\n <div class=\"paginator-button-container\" [class.disabled]=\"currentPage === 1\" [attr.data-cy]=\"'pagination_backButton'\"\n (click)=\"changePage(currentPage - 1)\" *ngIf=\"showArrowDots\">\n <gravity-icon [iconName]=\"'arrow-left'\" [iconSize]=\"'sm-12'\"\n [style.--icon-color]=\"'var(--paginator-button-text-color)'\"></gravity-icon>\n <p class=\"hr-body sm-regular\" *ngIf=\"type == 'full'\">{{ currentLang == 'en' ? 'Back' : 'Atrás' }}</p>\n </div>\n\n <!-- Numbers and Ellipsis -->\n <ng-container *ngIf=\"type == 'full' || type == 'compact'\">\n <ng-container *ngFor=\"let p of pages\">\n <div class=\"paginator-button-container\"\n [class.no-click]=\"p.toString() == '...'\"\n [class.pressed]=\"currentPage === p\"\n (click)=\"changePage(p)\" [attr.data-cy]=\"'pagination_page' +p+ 'Button'\">\n <p class=\"hr-body sm-regular\">{{ p }}</p>\n </div>\n </ng-container>\n </ng-container>\n\n <!-- Page count -->\n <div class=\"paginator-button-container no-click\" *ngIf=\"type === 'page-count' && showPageCount\">\n <p class=\"hr-body sm-regular\">{{ currentPage + (currentLang == 'en' ? ' of ' : ' de ') + totalPages }}</p>\n </div>\n\n <!-- Dots -->\n <div class=\"dots-container\" *ngIf=\"type === 'dots'\">\n <ng-container *ngFor=\"let p of pages\">\n <div class=\"dot\"\n [class.pressed]=\"currentPage === p\"\n (click)=\"changePage(p)\" [attr.data-cy]=\"'pagination_page' +p+ 'DotsButton'\"></div>\n </ng-container>\n </div>\n\n <!-- Next -->\n <div class=\"paginator-button-container\" [class.disabled]=\"currentPage === totalPages\"\n [attr.data-cy]=\"'pagination_nextButton'\"\n (click)=\"changePage(currentPage + 1)\" *ngIf=\"showArrowDots\">\n <p class=\"hr-body sm-regular\" *ngIf=\"type == 'full'\">{{ currentLang == 'en' ? 'Next' : 'Siguiente' }}</p>\n <gravity-icon [iconName]=\"'arrow-right'\" [iconSize]=\"'sm-12'\"\n [style.--icon-color]=\"'var(--paginator-button-text-color)'\"></gravity-icon>\n </div>\n\n <!-- Last -->\n <div class=\"paginator-button-container\" (click)=\"changePage(totalPages)\" [attr.data-cy]=\"'pagination_lastButton'\"\n *ngIf=\"type != 'dots' && currentPage !== totalPages && totalPages > 5 || type == 'page-count'\">\n <p class=\"hr-body sm-regular\" *ngIf=\"type == 'full'\">{{ currentLang == 'en' ? 'Last' : 'Último' }}</p>\n <gravity-icon [iconName]=\"'chevron-double-right'\" [iconSize]=\"'sm-12'\"\n [style.--icon-color]=\"'var(--paginator-button-text-color)'\"></gravity-icon>\n </div>\n</div>\n","import {\n Component,\n ElementRef,\n EventEmitter,\n HostListener,\n Input,\n OnChanges,\n OnInit, Output,\n SimpleChanges,\n ViewChild\n} from '@angular/core';\n\ninterface CurrencyOption {\n currency_id: number;\n currency_iso: string;\n}\n\ninterface CurrencyDropdownConfig {\n defaultItem: CurrencyOption;\n items?: CurrencyOption[];\n}\n\n@Component({\n selector: 'gravity-currency-dropdown-short',\n templateUrl: './gravity-currency-dropdown-short.component.html',\n styleUrls: ['./gravity-currency-dropdown-short.component.scss']\n})\nexport class GravityCurrencyDropdownShortComponent implements OnInit, OnChanges {\n @ViewChild('currencyDropdownShortTrigger', {static: true}) triggerRef!: ElementRef<HTMLElement>;\n @ViewChild('currencyDropdownShortPanel', {static: true}) panelRef!: ElementRef<HTMLElement>;\n\n @Input() public size: 'sm' | 'md' = 'sm';\n @Input() public readonly: boolean = false;\n @Input() public disabled: boolean = false;\n @Input() public showFlag: boolean = true;\n @Input() config: CurrencyDropdownConfig;\n\n @Output() onClick = new EventEmitter<CurrencyOption>();\n\n public dropdownOpen: boolean = false;\n public selectedItem: CurrencyOption;\n\n ngOnInit(): void {\n this.setDefaultItem();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['config'] && !changes['config'].firstChange) {\n this.setDefaultItem();\n }\n }\n\n private setDefaultItem(): void {\n if (!this.config?.defaultItem) return;\n\n this.selectedItem = this.config.defaultItem;\n }\n\n\n public onTriggerClick(event: MouseEvent): void {\n if (this.readonly || this.disabled) return;\n\n this.dropdownOpen = !this.dropdownOpen;\n }\n\n public onItemSelect(item: CurrencyOption, event: MouseEvent): void {\n event.stopPropagation();\n\n this.selectedItem = item;\n this.onClick.emit(item);\n this.dropdownOpen = false;\n }\n\n @HostListener('document:mousedown', ['$event'])\n onDocumentMouseDown(event: MouseEvent): void {\n if (!this.dropdownOpen) return;\n\n const target = event.target as HTMLElement;\n\n const insideTrigger =\n this.triggerRef.nativeElement.contains(target);\n\n const insidePanel =\n this.panelRef?.nativeElement.contains(target);\n\n if (!insideTrigger && !insidePanel) {\n this.dropdownOpen = false;\n }\n }\n}\n","<div class=\"currency-dropdown-short\" [ngClass]=\"size\" [class.readonly]=\"readonly || !config.items\" [class.disabled]=\"disabled\" #currencyDropdownShortTrigger>\n\n <!--Header-->\n <div class=\"header-item\" (click)=\"onTriggerClick($event)\" *ngIf=\"selectedItem\">\n <gravity-currency *ngIf=\"showFlag\" [size]=\"'xs-12'\" [currency]=\"{currency_id: selectedItem.currency_id}\"\n [disabled]=\"disabled\"></gravity-currency>\n <span class=\"hr-body sm-regular\">{{selectedItem.currency_iso}}</span>\n <gravity-icon *ngIf=\"!readonly && config.items\" [iconSize]=\"'sm-12'\" [iconName]=\"dropdownOpen ?'arrow-up' : 'arrow-down'\"/>\n\n </div>\n\n <!--Panel-->\n <div class=\"currency-short-dropdown-panel\" [ngClass]=\"size\" *ngIf=\"dropdownOpen && config.items\" #currencyDropdownShortPanel>\n <div *ngFor=\"let item of config.items\" class=\"panel-item\" (click)=\"onItemSelect(item, $event)\">\n <gravity-currency *ngIf=\"showFlag\" [size]=\"'xs-12'\" [currency]=\"{currency_id: item.currency_id}\"\n [disabled]=\"disabled\"></gravity-currency>\n <span class=\"hr-body sm-regular\">{{item.currency_iso}}</span>\n </div>\n </div>\n</div>\n","import {Component, EventEmitter, Input, OnChanges, Output, SimpleChanges} from '@angular/core';\n\ninterface currency {\n currency_id: number;\n currency_iso: string;\n}\n\n@Component({\n selector: 'gravity-text-field-amount-only',\n templateUrl: './gravity-text-field-amount-only.component.html',\n styleUrls: ['./gravity-text-field-amount-only.component.scss']\n})\n\nexport class GravityTextFieldAmountOnlyComponent implements OnChanges {\n // Configuration\n @Input() public priority: 'crypto' | 'fiat' = 'crypto';\n @Input() public placeholder!: string;\n @Input() public fiatCurrencies!: { defaultItem: currency; items?: currency[]; };\n @Input() public fiatCurrenciesSize: 'sm' | 'md' = 'sm';\n @Input() public cryptoCurrency!: currency;\n @Input() public rate!: number;\n @Input() public rateDirection: 'CRYPTO_TO_FIAT' | 'FIAT_TO_CRYPTO' = 'CRYPTO_TO_FIAT';\n @Input() public state: 'positive' | 'negative' | null = null;\n\n // UI State inputs\n @Input() public disabled = false;\n @Input() public readonly = false;\n\n // Outputs\n @Output() public swapCurrenciesFlag = new EventEmitter<'crypto' | 'fiat'>();\n @Output() public changeFiat = new EventEmitter<currency>();\n @Output() public amountValues = new EventEmitter<{ valueFiat: string; valueCrypto: string; }>();\n\n // Internal component state\n public inputValue: string = '';\n public valueCrypto: string = '';\n public valueFiat: string = '';\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['rate'] && changes['rate'].currentValue !== undefined) {\n this.rate = changes['rate'].currentValue;\n }\n }\n\n //Change from crypto to fiat or vice versa\n public swapCurrencies(): void {\n if (this.disabled || this.readonly) return;\n\n if (this.priority === 'crypto') {\n // crypto → fiat\n this.priority = 'fiat';\n this.inputValue = this.valueFiat;\n } else {\n // fiat → crypto\n this.priority = 'crypto';\n this.inputValue = this.valueCrypto;\n }\n\n this.swapCurrenciesFlag.emit(this.priority);\n }\n\n //Change selected fiat currency\n public updateFiatCurrency(event: any) {\n delete this.inputValue;\n delete this.valueFiat;\n delete this.valueCrypto;\n this.fiatCurrencies.defaultItem = event;\n this.changeFiat.emit(event)\n }\n\n //Get currency rates\n public calculateValues(): void {\n if (this.disabled) return;\n\n const input = this.sanitizeNumber(this.inputValue);\n const rate = this.sanitizeNumber(this.rate);\n\n if (!rate) {\n this.valueFiat = '0';\n this.valueCrypto = '0';\n return;\n }\n\n let fiatNum = 0;\n let cryptoNum = 0;\n\n if (this.priority === 'crypto') {\n cryptoNum = input;\n\n fiatNum =\n this.rateDirection === 'CRYPTO_TO_FIAT'\n ? input * rate\n : input / rate;\n\n } else {\n fiatNum = input;\n\n cryptoNum =\n this.rateDirection === 'CRYPTO_TO_FIAT'\n ? input / rate\n : input * rate;\n }\n\n this.valueFiat = this.formatNumber(fiatNum, 2);\n this.valueCrypto = this.formatNumber(cryptoNum, 8);\n\n this.amountValues.emit({\n valueFiat: this.valueFiat,\n valueCrypto: this.valueCrypto\n });\n }\n\n private sanitizeNumber(value: any): number {\n if (value === null || value === undefined) return 0;\n\n const num = Number(value);\n\n if (!isFinite(num) || isNaN(num)) {\n return 0;\n }\n\n return num;\n }\n\n private formatNumber(value: number, decimals: number): string {\n if (!isFinite(value) || isNaN(value)) return '0';\n\n return value.toLocaleString('en-US', {\n useGrouping: false,\n minimumFractionDigits: 0,\n maximumFractionDigits: decimals\n });\n }\n\n\n //Set custom amount\n public setAmount(value: number, priority: 'fiat' | 'crypto'): void {\n if (this.disabled) return;\n\n this.priority = priority;\n this.inputValue = ''+value;\n\n this.calculateValues();\n }\n\n}\n","<div class=\"amount-only-text-field {{state ? state : null}}\" [class.disabled]=\"disabled\">\n\n <!--Switch-->\n <gravity-icon-button (clickOnIcon)=\"swapCurrencies()\" [icon]=\"'swaps'\" *ngIf=\"!readonly\"\n [cypressTag]=\"'swapCurrencies'\" [size]=\"'sm'\"\n [supportText]=\"disabled ? null : priority == 'crypto' ? 'Enter the amount in fiat' : 'Enter the amount in crypto'\"\n [type]=\"'primary'\" [state]=\"disabled ? 'disabled' : 'active'\"/>\n\n <div class=\"amounts\" [class.filled]=\"inputValue\" [class.readonly]=\"readonly\">\n\n <!--Enter amount row-->\n <div class=\"enter-amount amount-row\">\n <label class=\"floating-label hr-label sm-regular\">\n {{ placeholder }}\n </label>\n\n <input class=\"hr-label md-regular\" [disabled]=\"disabled\" [readonly]=\"readonly\" (input)=\"calculateValues()\"\n [attr.data-cy]=\"'textFieldAmount_input'\" [(ngModel)]=\"inputValue\" placeholder=\"{{placeholder}}\"\n type=\"number\">\n\n <ng-container *ngIf=\"priority == 'fiat'\">\n <gravity-currency-dropdown-short [size]=\"fiatCurrenciesSize\" [disabled]=\"disabled\" (onClick)=\"updateFiatCurrency($event)\"\n [config]=\"fiatCurrencies\"/>\n </ng-container>\n <ng-container *ngIf=\"priority == 'crypto'\">\n <p class=\"hr-body sm-regular\" [class.gravity-padding-inline-xxs]=\"fiatCurrenciesSize == 'sm'\" [class.gravity-padding-inline-sm]=\"fiatCurrenciesSize == 'md'\">{{cryptoCurrency.currency_iso}}</p>\n </ng-container>\n </div>\n\n <hr>\n\n <!--Equivalence row-->\n <div class=\"equivalence amount-row\">\n <p class=\"hr-body sm-regular\">\n ≈ {{ priority == 'crypto' ? valueFiat : valueCrypto}}\n </p>\n\n <ng-container *ngIf=\"priority == 'crypto'\">\n <gravity-currency-dropdown-short [size]=\"fiatCurrenciesSize\" [readonly]=\"true\" [disabled]=\"disabled\"\n [config]=\"fiatCurrencies\"/>\n </ng-container>\n <ng-container *ngIf=\"priority == 'fiat'\">\n <p class=\"hr-body sm-regular\" [class.gravity-padding-inline-xxs]=\"fiatCurrenciesSize == 'sm'\" [class.gravity-padding-inline-sm]=\"fiatCurrenciesSize == 'md'\">{{cryptoCurrency.currency_iso}}</p>\n </ng-container>\n </div>\n </div>\n</div>","import {Component, EventEmitter, Input, Output} from \"@angular/core\";\n\n@Component({\n selector: 'gravity-tooltip-container',\n templateUrl: './gravity-tooltip-container.component.html',\n styleUrls: ['./gravity-tooltip-container.component.scss']\n})\nexport class GravityTooltipContainerComponent {\n @Input() public cypressTag: string;\n @Input() public tooltipBanner?: any | [\n {\n imageUrl?: string,\n actionContent?: {\n text: string,\n icon: string,\n status: 'positive' | 'positive-secondary' | 'negative' | 'negative-secondary' | 'attention' | 'neutro' | 'disabled'\n },\n header?: {\n icon: string,\n title: string,\n subtitle: string\n },\n body?: string,\n button?: {\n text: string,\n icon: string\n iconPosition: 'left' | 'right'\n type: 'primary' | 'secondary' | 'tertiary' | 'positive' | 'negative'\n }\n }\n ];\n @Input() public tooltipSimple?: {\n title?: string,\n text?: string\n }\n\n @Output() public closeBanner = new EventEmitter<void>();\n @Output() public actionButton = new EventEmitter<void>();\n\n public currentPage: number = 1;\n\n get currentBanner() {\n return this.tooltipBanner[this.currentPage - 1] ?? null;\n }\n\n public changePage(event: any) {\n this.currentPage = event.page;\n }\n\n public closeBannerTooltip() {\n this.closeBanner.emit();\n }\n\n public actionButtonClicked(){\n this.actionButton.emit();\n }\n}","<!--Tooltip Banner-->\n<div class=\"gravity-tooltip-container banner\" *ngIf=\"tooltipBanner\">\n <div class=\"top-container\" *ngIf=\"currentBanner?.imageUrl\"\n [ngStyle]=\"{ 'background-image': currentBanner.imageUrl ? 'url(' + currentBanner.imageUrl + ')' : 'none' }\">\n <div class=\"actions-container\">\n <gravity-status-indicator *ngIf=\"currentBanner.actionContent\" [size]=\"'sm'\"\n [text]=\"currentBanner.actionContent.text\"\n [icon]=\"currentBanner.actionContent.icon\"\n [status]=\"currentBanner.actionContent.status\"></gravity-status-indicator>\n <gravity-icon-button class=\"close-icon\" [icon]=\"'unsuccess'\" [type]=\"'secondary'\" (click)=\"closeBannerTooltip()\"></gravity-icon-button>\n </div>\n </div>\n\n <div class=\"bottom-container\">\n <div class=\"body\">\n <div class=\"header\">\n <div class=\"title\">\n <gravity-icon *ngIf=\"currentBanner.header.icon\" [iconName]=\"currentBanner.header.icon\"\n [iconSize]=\"'md-16'\"></gravity-icon>\n <p class=\"hr-title md-bold\" *ngIf=\"currentBanner.header.title\" [innerHTML]=\"currentBanner.header.title\"></p>\n <gravity-icon-button *ngIf=\"!currentBanner.imageUrl\" [icon]=\"'unsuccess'\"\n [type]=\"'primary'\" (click)=\"closeBannerTooltip()\"></gravity-icon-button>\n </div>\n <p class=\"hr-body sm-regular subtitle\" *ngIf=\"currentBanner.header.subtitle\"\n [innerHTML]=\"currentBanner.header.subtitle\"></p>\n </div>\n <hr class=\"divider\">\n <p class=\"hr-body sm-regular\" *ngIf=\"currentBanner.body\" [innerHTML]=\"currentBanner.body\"></p>\n </div>\n\n <gravity-button *ngIf=\"currentBanner.button\" [type]=\"currentBanner.button.type\" [size]=\"'sm'\"\n [iconName]=\"currentBanner.button.icon\" (click)=\"actionButtonClicked()\"\n [iconPosition]=\"currentBanner.button.iconPosition\">{{ currentBanner.button.text }}\n </gravity-button>\n\n <gravity-pagination *ngIf=\"tooltipBanner.length > 1\" [totalItems]=\"tooltipBanner.length\" [itemsPerPage]=\"1\"\n [currentPage]=\"currentPage\"\n [type]=\"'dots'\" (pageChanged)=\"changePage($event)\"></gravity-pagination>\n </div>\n</div>\n\n<!--Tooltip Simple-->\n<div class=\"gravity-tooltip-container simple\" *ngIf=\"tooltipSimple\">\n <p class=\"hr-body sm-bold\" *ngIf=\"tooltipSimple?.title\" [innerHTML]=\"tooltipSimple?.title\"></p>\n <p class=\"hr-body sm-regular\" *ngIf=\"tooltipSimple?.text\" [innerHTML]=\"tooltipSimple?.text\"></p>\n</div>","import {NgModule} from '@angular/core';\nimport {CommonModule} from \"@angular/common\";\nimport {FormsModule, ReactiveFormsModule} from \"@angular/forms\";\nimport {GravityButtonComponent} from './components/gravity-button/gravity-button.component';\nimport {GravityDropdownListComponent} from \"./components/gravity-dropdown-list/gravity-dropdown-list.component\";\nimport {\n GravityDropdownListDisplayComponent\n} from \"./components/gravity-dropdown-list-display/gravity-dropdown-list-display.component\";\nimport {GravityTextFieldComponent} from \"./components/gravity-text-field/gravity-text-field.component\";\nimport {GravityTooltipModule} from \"./vendor/gravity-tooltip\";\nimport {AngularSvgIconPreloaderModule} from \"angular-svg-icon-preloader\";\nimport {AngularSvgIconModule} from \"angular-svg-icon\";\nimport {GravityCalendarV2Component} from \"./components/gravity-calendar-v2/gravity-calendar-v2.component\";\nimport {\n NgbDatepickerModule,\n NgbOffcanvasModule,\n NgbProgressbarModule,\n NgbToastModule\n} from \"@ng-bootstrap/ng-bootstrap\";\nimport {GravityRadioButtonComponent} from './components/gravity-radio-button/gravity-radio-button.component';\nimport {GravitySwitchComponent} from './components/gravity-switch/gravity-switch.component';\nimport {GravityCheckboxComponent} from './components/gravity-checkbox/gravity-checkbox.component';\nimport {GravityDialogComponent} from \"./components/gravity-dialog/gravity-dialog.component\";\nimport {GravityIconComponent} from \"./components/gravity-icon/gravity-icon.component\";\nimport {GravityNotificationComponent} from \"./components/gravity-notification/gravity-notification.component\";\nimport {\n GravityNotificationInstantContainerComponent\n} from \"./components/gravity-notification-instant/gravity-notification-instant-container.component\";\nimport {GravityAttachFileComponent} from \"./components/gravity-attach-file/gravity-attach-file.component\";\nimport {GravityTableComponent} from \"./components/gravity-table/gravity-table.component\";\nimport {GravityTreeViewComponent} from \"./components/gravity-tree-view/gravity-tree-view.component\";\nimport {NodeComponent} from \"./components/gravity-tree-view/node/node.component\";\nimport {NodeToggleComponent} from \"./components/gravity-tree-view/node/node-toggle/node-toggle.component\";\nimport {NodeCheckboxComponent} from \"./components/gravity-tree-view/node/node-checkbox/node-checkbox.component\";\nimport {NodeNameComponent} from \"./components/gravity-tree-view/node/node-name/node-name.component\";\nimport {GravityStepperComponent} from \"./components/gravity-stepper/gravity-stepper.component\";\nimport {BsDatepickerModule} from \"ngx-bootstrap/datepicker\";\nimport {\n GravityTextFieldNumberOnlyComponent\n} from \"./components/gravity-text-field-number-only/gravity-text-field-number-only.component\";\nimport {FilterByPipe} from \"./components/gravity-dropdown-list/filter-by.pipe\";\nimport {GravityIconButtonComponent} from \"./components/gravity-icon-button/gravity-icon-button.component\";\nimport {\n GravityStatusIndicatorComponent\n} from \"./components/gravity-status-indicator/gravity-status-indicator.component\";\nimport {\n BsDatepickerDayDecoratorComponent\n} from \"./components/gravity-calendar-v2/datepicker/components/bs-days-calendar-view/bs-datepicker-day-decorator.directive\";\nimport {\n BsDatepickerNavigationViewComponent\n} from \"./components/gravity-calendar-v2/datepicker/components/bs-datepicker-navigation-view/bs-datepicker-navigation-view.component\";\nimport {\n BsDaysCalendarViewComponent\n} from \"./components/gravity-calendar-v2/datepicker/components/bs-days-calendar-view/bs-days-calendar-view.component\";\nimport {\n BsMonthCalendarViewComponent\n} from \"./components/gravity-calendar-v2/datepicker/components/bs-months-calendar-view/bs-months-calendar-view.component\";\nimport {\n BsYearsCalendarViewComponent\n} from \"./components/gravity-calendar-v2/datepicker/components/bs-years-calendar-view/bs-years-calendar-view.component\";\nimport {\n BsDatepickerContainerComponent\n} from \"./components/gravity-calendar-v2/datepicker/components/bs-datepicker-container.component\";\nimport {BsDatepickerDirective} from \"./components/gravity-calendar-v2/datepicker/bs-datepicker.component\";\nimport {\n BsDatepickerInlineContainerComponent\n} from \"./components/gravity-calendar-v2/datepicker/components/bs-datepicker-inline-container.component\";\nimport {BsDatepickerInlineDirective} from \"./components/gravity-calendar-v2/datepicker/bs-datepicker-inline.component\";\nimport {\n BsDaterangepickerContainerComponent\n} from \"./components/gravity-calendar-v2/datepicker/components/bs-daterangepicker-container.component\";\nimport {BsDaterangepickerDirective} from \"./components/gravity-calendar-v2/datepicker/bs-daterangepicker.component\";\nimport {\n BsDaterangepickerInlineContainerComponent\n} from \"./components/gravity-calendar-v2/datepicker/components/bs-daterangepicker-inline-container.component\";\nimport {\n BsDaterangepickerInlineDirective\n} from \"./components/gravity-calendar-v2/datepicker/bs-daterangepicker-inline.component\";\nimport {GravityAvatarStackComponent} from './components/gravity-avatar-stack/gravity-avatar-stack.component';\nimport {GravityGenericAvatarComponent} from \"./components/gravity-generic-avatar/gravity-generic-avatar.component\";\nimport {GravityNetworkPillComponent} from \"./components/gravity-network-pill/gravity-network-pill.component\";\nimport {GravityMultiLanguageComponent} from \"./components/gravity-multi-language/gravity-multi-language.component\";\nimport {GravityCurrencyComponent} from \"./components/gravity-currency/gravity-currency.component\";\nimport {GravityModalComponent} from './components/gravity-modal/gravity-modal.component';\nimport {GravityLinkComponent} from './components/gravity-link/gravity-link.component';\nimport {RouterLink} from \"@angular/router\";\nimport {GravityTabPrimaryComponent} from './components/gravity-tab-primary/gravity-tab-primary.component';\nimport {GravityTabSecondaryComponent} from './components/gravity-tab-secondary/gravity-tab-secondary.component';\nimport {GravityEditableInputComponent} from './components/gravity-editable-input/gravity-editable-input.component';\nimport {GravityCardButtonComponent} from './components/gravity-card-button/gravity-card-button.component';\nimport {DateAbbreviationPipe} from './components/gravity-calendar-v2/datepicker/utils/date-abbreviation.pipe';\nimport {GravityDropdownLabelComponent} from './components/gravity-dropdown-label/gravity-dropdown-label.component';\nimport {GravityNavigationCardComponent} from './components/gravity-navigation-card/gravity-navigation-card.component';\nimport {\n GravityGenericAvatarSecondaryComponent\n} from './components/gravity-generic-avatar-secondary/gravity-generic-avatar-secondary.component';\nimport {GravityBackdropComponent} from './components/gravity-backdrop/gravity-backdrop.component';\nimport {GravityDatePickerComponent} from './components/gravity-date-picker/gravity-date-picker.component';\nimport {DayCalendarComponent} from './components/gravity-date-picker/components/day-calendar/day-calendar.component';\nimport {\n MonthCalendarComponent\n} from './components/gravity-date-picker/components/month-calendar/month-calendar.component';\nimport {YearCalendarComponent} from './components/gravity-date-picker/components/year-calendar/year-calendar.component';\nimport {\n GravitySegmentedButtonComponent\n} from './components/gravity-segmented-button/gravity-segmented-button.component';\nimport {GravityChipGroupComponent} from './components/gravity-chip-group/gravity-chip-group.component';\nimport {\n GravityCurrencyDisplayV2Component\n} from './components/gravity-currency-display-v2/gravity-currency-display-v2.component';\nimport {GravityTablesV2Component} from \"./components/gravity-tables-v2/gravity-tables-v2.component\";\nimport {GravityDataViewsV2Component} from \"./components/gravity-data-views-v2/gravity-data-views-v2.component\";\nimport {\n GravityDetailContainerComponent\n} from \"./components/gravity-detail-container/gravity-detail-container.component\";\nimport {GravityHeaderComponent} from './layout/gravity-header/gravity-header.component';\nimport {\n GravityPushNotificationsComponent\n} from './components/gravity-push-notifications/gravity-push-notifications.component';\nimport {GravityMenuComponent} from './layout/gravity-menu/gravity-menu.component';\nimport {GravityPaginationComponent} from \"./components/gravity-pagination/gravity-pagination.component\";\nimport {\n GravityCurrencyDropdownShortComponent\n} from \"./components/gravity-currency-dropdown-short/gravity-currency-dropdown-short.component\";\nimport { GravityTextFieldAmountOnlyComponent } from './components/gravity-text-field-amount-only/gravity-text-field-amount-only.component';\nimport {\n GravityTooltipContainerComponent\n} from \"./components/gravity-tooltip-container/gravity-tooltip-container.component\";\n\n@NgModule({\n declarations: [\n GravityAttachFileComponent,\n GravityAvatarStackComponent,\n GravityGenericAvatarComponent,\n GravityButtonComponent,\n GravityCalendarV2Component,\n GravityCheckboxComponent,\n GravityCurrencyComponent,\n GravityCurrencyDropdownShortComponent,\n GravityDataViewsV2Component,\n GravityDialogComponent,\n GravityDetailContainerComponent,\n GravityDropdownListComponent,\n GravityDropdownListDisplayComponent,\n GravityIconButtonComponent,\n GravityIconComponent,\n GravityMultiLanguageComponent,\n GravityNetworkPillComponent,\n GravityNotificationComponent,\n GravityNotificationInstantContainerComponent,\n GravityRadioButtonComponent,\n GravityStatusIndicatorComponent,\n GravityStepperComponent,\n GravitySwitchComponent,\n GravityTableComponent,\n GravityTablesV2Component,\n GravityTextFieldComponent,\n GravityTextFieldAmountOnlyComponent,\n GravityTextFieldNumberOnlyComponent,\n GravityTreeViewComponent,\n\n NodeComponent,\n NodeToggleComponent,\n NodeCheckboxComponent,\n NodeNameComponent,\n\n FilterByPipe,\n DateAbbreviationPipe,\n\n BsDatepickerDayDecoratorComponent,\n BsDatepickerNavigationViewComponent,\n BsDaysCalendarViewComponent,\n BsMonthCalendarViewComponent,\n BsYearsCalendarViewComponent,\n BsDatepickerContainerComponent,\n BsDatepickerDirective,\n BsDatepickerInlineContainerComponent,\n BsDatepickerInlineDirective,\n BsDaterangepickerContainerComponent,\n BsDaterangepickerDirective,\n BsDaterangepickerInlineContainerComponent,\n BsDaterangepickerInlineDirective,\n GravityModalComponent,\n GravityLinkComponent,\n GravityTabPrimaryComponent,\n GravityTabSecondaryComponent,\n GravityChipGroupComponent,\n GravityEditableInputComponent,\n GravityCardButtonComponent,\n GravityDropdownLabelComponent,\n GravityNavigationCardComponent,\n GravityGenericAvatarSecondaryComponent,\n GravityBackdropComponent,\n GravityDatePickerComponent,\n DayCalendarComponent,\n MonthCalendarComponent,\n YearCalendarComponent,\n GravitySegmentedButtonComponent,\n GravityCurrencyDisplayV2Component,\n GravityHeaderComponent,\n GravityPaginationComponent,\n GravityPushNotificationsComponent,\n GravityMenuComponent,\n GravityTooltipContainerComponent\n ],\n imports: [\n AngularSvgIconModule.forRoot(),\n AngularSvgIconPreloaderModule.forRoot({\n configUrl: './assets/gravity/json/icons.json',\n }),\n BsDatepickerModule,\n CommonModule,\n FormsModule,\n GravityTooltipModule.forRoot({}),\n NgbDatepickerModule,\n NgbOffcanvasModule,\n NgbProgressbarModule,\n NgbToastModule,\n ReactiveFormsModule,\n RouterLink\n ],\n exports: [\n GravityAttachFileComponent,\n GravityAvatarStackComponent,\n GravityGenericAvatarComponent,\n GravityButtonComponent,\n GravityCalendarV2Component,\n GravityCheckboxComponent,\n GravityCurrencyComponent,\n GravityCurrencyDisplayV2Component,\n GravityCurrencyDropdownShortComponent,\n GravityDataViewsV2Component,\n GravityDialogComponent,\n GravityDetailContainerComponent,\n GravityDropdownListComponent,\n GravityDropdownListDisplayComponent,\n GravityIconButtonComponent,\n GravityIconComponent,\n GravityMultiLanguageComponent,\n GravityNetworkPillComponent,\n GravityNotificationInstantContainerComponent,\n GravityRadioButtonComponent,\n GravityStatusIndicatorComponent,\n GravityStepperComponent,\n GravitySwitchComponent,\n GravityTableComponent,\n GravityTablesV2Component,\n GravityTextFieldComponent,\n GravityTextFieldAmountOnlyComponent,\n GravityTextFieldNumberOnlyComponent,\n GravityTooltipModule,\n GravityTreeViewComponent,\n GravityModalComponent,\n GravityLinkComponent,\n GravityTabPrimaryComponent,\n GravityTabSecondaryComponent,\n GravityChipGroupComponent,\n GravityEditableInputComponent,\n GravityCardButtonComponent,\n GravityNavigationCardComponent,\n GravityGenericAvatarSecondaryComponent,\n GravityBackdropComponent,\n GravityDatePickerComponent,\n GravitySegmentedButtonComponent,\n GravityHeaderComponent,\n GravityPaginationComponent,\n GravityPushNotificationsComponent,\n GravityMenuComponent,\n GravityTooltipContainerComponent\n ]\n})\nexport class GravityDesignSystemModule {\n}\n","import {Injectable} from \"@angular/core\";\nimport {NgbModal, NgbModalRef} from \"@ng-bootstrap/ng-bootstrap\";\nimport {\n GravityDialogComponent,\n GravityDialogContentInterface\n} from \"../components/gravity-dialog/gravity-dialog.component\";\nimport {GravityInstantNotificationsService} from \"./gravity-instant-notifications.service\";\nimport {GravityNotificationComponent} from \"../components/gravity-notification/gravity-notification.component\";\nimport {GravityNotificationContent} from \"../components/gravity-notification/gravity-notification-content.interface\";\n\n@Injectable({providedIn: \"root\"})\nexport class GravityDialogManagerService {\n constructor(private readonly ngbModal: NgbModal, private readonly gravityInstantNotificationsService: GravityInstantNotificationsService) {\n }\n\n public openModal(gravityDialogContentInterface: GravityDialogContentInterface, scrollableDialog: boolean = false, modalSize: 'sm' | 'md' | 'lg' | 'xl' | 'fit' = 'md', backdrop: boolean | 'static' = true): NgbModalRef {\n const modalRef = this.ngbModal.open(GravityDialogComponent, {\n centered: true,\n scrollable: scrollableDialog,\n size: modalSize,\n backdrop: backdrop\n });\n modalRef.componentInstance.dialogContent = gravityDialogContentInterface;\n return modalRef;\n }\n\n public throwInformativeNotification(notificationContent: GravityNotificationContent): void {\n const modalRef = this.ngbModal.open(GravityNotificationComponent, {\n modalDialogClass: 'informative-notification',\n centered: true\n });\n modalRef.componentInstance.notificationContent = notificationContent;\n }\n\n public throwInstantNotification(notificationContent: GravityNotificationContent): void {\n this.gravityInstantNotificationsService.showNotification(notificationContent);\n }\n\n public closeModal(modalToClose: NgbModalRef, returnValue?: any): any {\n modalToClose.close(returnValue);\n }\n\n public closeAllModals(): boolean {\n if (this.ngbModal.hasOpenModals()) {\n this.ngbModal.dismissAll('dismiss all modals');\n }\n\n return true;\n }\n}\n","/*\n * Public API Surface of gravity-design-system\n */\n\nexport * from './lib/gravity-design-system.module';\n\n//Components\nexport * from './lib/components/gravity-attach-file/gravity-attach-file.component';\nexport * from './lib/components/gravity-avatar-stack/gravity-avatar-stack.component';\nexport * from './lib/components/gravity-button/gravity-button.component';\nexport * from './lib/components/gravity-calendar-v2/gravity-calendar-v2.component';\nexport * from './lib/components/gravity-date-picker/gravity-date-picker.component';\nexport * from './lib/components/gravity-checkbox/gravity-checkbox.component';\nexport * from './lib/components/gravity-currency/gravity-currency.component';\nexport * from './lib/components/gravity-currency-display-v2/gravity-currency-display-v2.component';\nexport * from './lib/components/gravity-currency-dropdown-short/gravity-currency-dropdown-short.component';\nexport * from './lib/components/gravity-data-views-v2/gravity-data-views-v2.component';\nexport * from './lib/components/gravity-detail-container/gravity-detail-container.component';\nexport * from './lib/components/gravity-dialog/gravity-dialog.component';\nexport * from './lib/components/gravity-dropdown-list/gravity-dropdown-list.component';\nexport * from './lib/components/gravity-dropdown-list-display/gravity-dropdown-list-display.component';\nexport * from './lib/components/gravity-icon/gravity-icon.component';\nexport * from './lib/components/gravity-icon-button/gravity-icon-button.component';\nexport * from './lib/components/gravity-multi-language/gravity-multi-language.component';\nexport * from './lib/components/gravity-network-pill/gravity-network-pill.component';\nexport * from './lib/components/gravity-notification-instant/gravity-notification-instant-container.component';\nexport * from './lib/components/gravity-radio-button/gravity-radio-button.component';\nexport * from './lib/components/gravity-status-indicator/gravity-status-indicator.component';\nexport * from './lib/components/gravity-stepper/gravity-stepper.component';\nexport * from './lib/components/gravity-switch/gravity-switch.component';\nexport * from './lib/components/gravity-table/gravity-table.component';\nexport * from './lib/components/gravity-tables-v2/gravity-tables-v2.component';\nexport * from './lib/components/gravity-text-field/gravity-text-field.component';\nexport * from './lib/components/gravity-text-field-amount-only/gravity-text-field-amount-only.component';\nexport * from './lib/components/gravity-text-field-number-only/gravity-text-field-number-only.component';\nexport * from './lib/components/gravity-tree-view/gravity-tree-view.component';\nexport * from './lib/components/gravity-generic-avatar/gravity-generic-avatar.component';\nexport * from './lib/components/gravity-modal/gravity-modal.component';\nexport * from './lib/components/gravity-link/gravity-link.component';\nexport * from './lib/components/gravity-tab-primary/gravity-tab-primary.component'\nexport * from './lib/components/gravity-tab-secondary/gravity-tab-secondary.component';\nexport * from './lib/components/gravity-chip-group/gravity-chip-group.component';\nexport * from './lib/components/gravity-editable-input/gravity-editable-input.component';\nexport * from './lib/components/gravity-card-button/gravity-card-button.component';\nexport * from './lib/components/gravity-dropdown-label/gravity-dropdown-label.component';\nexport * from './lib/components/gravity-navigation-card/gravity-navigation-card.component';\nexport * from './lib/components/gravity-generic-avatar-secondary/gravity-generic-avatar-secondary.component'\nexport * from './lib/components/gravity-backdrop/gravity-backdrop.component';\nexport * from './lib/components/gravity-segmented-button/gravity-segmented-button.component';\nexport * from './lib/components/gravity-push-notifications/gravity-push-notifications.component';\nexport * from './lib/components/gravity-pagination/gravity-pagination.component';\nexport * from './lib/components/gravity-tooltip-container/gravity-tooltip-container.component';\n\n//Layout\nexport * from './lib/layout/gravity-header/gravity-header.component';\nexport * from './lib/layout/gravity-menu/gravity-menu.component'\n\n//Services\nexport * from './lib/services/gravity-dialog-manager.service';\n\n//Vendor\nexport * from './lib/vendor/gravity-tooltip';\n\n//Models and interfaces\nexport * from './lib/components/gravity-notification/gravity-notification-content.interface';\nexport * from './lib/components/gravity-calendar-v2/datepicker/models';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2","i1","i3.GravityIconComponent","i2.GravityIconComponent","i2.GravityCurrencyComponent","i3.GravityNetworkPillComponent","i1.GravityDropdownManagerService","i3","i4.GravityCheckboxComponent","i5.GravityCurrencyComponent","i6.GravityIconComponent","i7.GravityNetworkPillComponent","i8.GravityLinkComponent","i9.GravityDropdownLabelComponent","i10.GravityCurrencyDisplayV2Component","i2.FilterByPipe","i4","i5.GravityIconComponent","i6.GravityCurrencyDisplayV2Component","i1.BsDatepickerActions","height","width","shift","i1.HeaderTypeService","i3.BsDatepickerDayDecoratorComponent","i4.BsDatepickerNavigationViewComponent","i3.BsDatepickerNavigationViewComponent","i4.DateAbbreviationPipe","i2.BsDatepickerConfig","i3.BsDatepickerCallbacks","i4.BsDatepickerStore","i5.BsDatepickerActions","i6.BsDatepickerEffects","i8","i9.GravityIconComponent","i10.BsDaysCalendarViewComponent","i11.BsMonthCalendarViewComponent","i12.BsYearsCalendarViewComponent","i13.GravityLinkComponent","previousDate","i1.BsDatepickerInlineConfig","i1.BsDaterangepickerConfig","i1.BsDaterangepickerInlineConfig","i4.GravityIconComponent","i5.BsDatepickerDirective","i6.BsDatepickerInlineDirective","i7.BsDaterangepickerDirective","i8.BsDaterangepickerInlineDirective","i10.DateAbbreviationPipe","i1.GravityInstantNotificationsService","i2.GravityButtonComponent","i1.GravityButtonComponent","i1.TreeService","i2.NodeToggleComponent","i3.NodeCheckboxComponent","i4.NodeNameComponent","i3.GravityTextFieldComponent","i4.NodeComponent","i4.GravityLinkComponent","i3.GravityStatusIndicatorComponent","i2.GravityIconButtonComponent","i3.GravityLinkComponent","i4.GravityDropdownLabelComponent","i3.GravityIconButtonComponent","i5.GravityTextFieldComponent","i6.GravityLinkComponent","i7.GravityDropdownLabelComponent","i8.MonthCalendarComponent","i9.YearCalendarComponent","i3.DayCalendarComponent","i4.MonthCalendarComponent","i5.YearCalendarComponent","i2.GravityStatusIndicatorComponent","i1.GravityResponsiveService","i1.PushNotificationsService","i4.GravityPushNotificationsComponent","i4.GravityButtonComponent","i6.GravityCardButtonComponent","i3.GravityCurrencyDropdownShortComponent","i4.GravityIconButtonComponent","i5.GravityStatusIndicatorComponent","i6.GravityPaginationComponent","i2.GravityInstantNotificationsService"],"mappings":"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"}