@progressio_resources/gravity-design-system 3.9.3 → 4.0.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.
- package/README.md +1 -1
- package/fesm2022/progressio_resources-gravity-design-system.mjs +1289 -1169
- package/fesm2022/progressio_resources-gravity-design-system.mjs.map +1 -1
- package/package.json +10 -12
- package/src/lib/styles/_functions.scss +4 -2
- package/src/lib/styles/_responsive.scss +12 -11
- package/src/lib/styles/components/_card_highlight.scss +5 -5
- package/src/lib/styles/components/_datepicker-v2.scss +2 -2
- package/src/lib/styles/components/_datepicker.scss +16 -15
- package/src/lib/styles/components/_offcanvas.scss +4 -4
- package/src/lib/styles/components/_tables.scss +9 -9
- package/src/lib/styles/foundations/colors/themes/_hero.theme.scss +1 -1
- package/src/lib/styles/foundations/colors/tokens/_hero.tokens.scss +3 -3
- package/src/lib/styles/foundations/spacing/_spacing.scss +3 -1
- package/src/lib/styles/gravity-design-system.scss +17 -17
- package/src/lib/styles/overwrite/bootstrap/_bootstrap-export.scss +2 -2
- package/src/lib/styles/overwrite/bootstrap/_modal.scss +5 -5
- package/src/lib/styles/themes/_hero.scss +4 -4
- package/src/lib/vendor/gravity-tooltip/gravity-tooltip.component.html +10 -7
- package/src/lib/vendor/gravity-tooltip/gravity-tooltip.component.sass +92 -52
- package/src/lib/vendor/gravity-tooltip/gravity-tooltip.component.ts +7 -3
- package/src/lib/vendor/gravity-tooltip/gravity-tooltip.directive.ts +46 -17
- package/src/lib/vendor/gravity-tooltip/gravity-tooltip.module.ts +7 -12
- package/types/progressio_resources-gravity-design-system.d.ts +2671 -0
- package/esm2022/lib/components/gravity-attach-file/gravity-attach-file.component.mjs +0 -82
- package/esm2022/lib/components/gravity-avatar-stack/gravity-avatar-stack.component.mjs +0 -86
- package/esm2022/lib/components/gravity-backdrop/gravity-backdrop.component.mjs +0 -17
- package/esm2022/lib/components/gravity-badge/gravity-badge.component.mjs +0 -36
- package/esm2022/lib/components/gravity-button/gravity-button.component.mjs +0 -58
- package/esm2022/lib/components/gravity-calendar-v2/datepicker/base/bs-datepicker-container.mjs +0 -77
- package/esm2022/lib/components/gravity-calendar-v2/datepicker/bs-datepicker-inline.component.mjs +0 -129
- package/esm2022/lib/components/gravity-calendar-v2/datepicker/bs-datepicker-inline.config.mjs +0 -14
- package/esm2022/lib/components/gravity-calendar-v2/datepicker/bs-datepicker.callbacks.mjs +0 -13
- package/esm2022/lib/components/gravity-calendar-v2/datepicker/bs-datepicker.component.mjs +0 -211
- package/esm2022/lib/components/gravity-calendar-v2/datepicker/bs-datepicker.config.mjs +0 -46
- package/esm2022/lib/components/gravity-calendar-v2/datepicker/bs-daterangepicker-inline.component.mjs +0 -130
- package/esm2022/lib/components/gravity-calendar-v2/datepicker/bs-daterangepicker-inline.config.mjs +0 -18
- package/esm2022/lib/components/gravity-calendar-v2/datepicker/bs-daterangepicker.component.mjs +0 -218
- package/esm2022/lib/components/gravity-calendar-v2/datepicker/bs-daterangepicker.config.mjs +0 -18
- package/esm2022/lib/components/gravity-calendar-v2/datepicker/components/bs-datepicker-container.component.mjs +0 -137
- package/esm2022/lib/components/gravity-calendar-v2/datepicker/components/bs-datepicker-inline-container.component.mjs +0 -35
- package/esm2022/lib/components/gravity-calendar-v2/datepicker/components/bs-datepicker-navigation-view/bs-datepicker-navigation-view.component.mjs +0 -69
- package/esm2022/lib/components/gravity-calendar-v2/datepicker/components/bs-daterangepicker-container.component.mjs +0 -193
- package/esm2022/lib/components/gravity-calendar-v2/datepicker/components/bs-daterangepicker-inline-container.component.mjs +0 -35
- package/esm2022/lib/components/gravity-calendar-v2/datepicker/components/bs-days-calendar-view/bs-datepicker-day-decorator.directive.mjs +0 -30
- package/esm2022/lib/components/gravity-calendar-v2/datepicker/components/bs-days-calendar-view/bs-days-calendar-view.component.mjs +0 -57
- package/esm2022/lib/components/gravity-calendar-v2/datepicker/components/bs-months-calendar-view/bs-months-calendar-view.component.mjs +0 -57
- package/esm2022/lib/components/gravity-calendar-v2/datepicker/components/bs-years-calendar-view/bs-years-calendar-view.component.mjs +0 -57
- package/esm2022/lib/components/gravity-calendar-v2/datepicker/datepicker-animations.mjs +0 -16
- package/esm2022/lib/components/gravity-calendar-v2/datepicker/engine/calc-days-calendar.mjs +0 -16
- package/esm2022/lib/components/gravity-calendar-v2/datepicker/engine/flag-days-calendar.mjs +0 -53
- package/esm2022/lib/components/gravity-calendar-v2/datepicker/engine/flag-months-calendar.mjs +0 -39
- package/esm2022/lib/components/gravity-calendar-v2/datepicker/engine/flag-years-calendar.mjs +0 -36
- package/esm2022/lib/components/gravity-calendar-v2/datepicker/engine/format-days-calendar.mjs +0 -23
- package/esm2022/lib/components/gravity-calendar-v2/datepicker/engine/format-months-calendar.mjs +0 -23
- package/esm2022/lib/components/gravity-calendar-v2/datepicker/engine/format-years-calendar.mjs +0 -43
- package/esm2022/lib/components/gravity-calendar-v2/datepicker/engine/view-mode.mjs +0 -4
- package/esm2022/lib/components/gravity-calendar-v2/datepicker/models/index.mjs +0 -7
- package/esm2022/lib/components/gravity-calendar-v2/datepicker/reducer/_defaults.mjs +0 -6
- package/esm2022/lib/components/gravity-calendar-v2/datepicker/reducer/bs-datepicker.actions.mjs +0 -64
- package/esm2022/lib/components/gravity-calendar-v2/datepicker/reducer/bs-datepicker.effects.mjs +0 -128
- package/esm2022/lib/components/gravity-calendar-v2/datepicker/reducer/bs-datepicker.reducer.mjs +0 -301
- package/esm2022/lib/components/gravity-calendar-v2/datepicker/reducer/bs-datepicker.state.mjs +0 -16
- package/esm2022/lib/components/gravity-calendar-v2/datepicker/reducer/bs-datepicker.store.mjs +0 -20
- package/esm2022/lib/components/gravity-calendar-v2/datepicker/services/header-type.service.mjs +0 -28
- package/esm2022/lib/components/gravity-calendar-v2/datepicker/utils/bs-calendar-utils.mjs +0 -74
- package/esm2022/lib/components/gravity-calendar-v2/datepicker/utils/date-abbreviation.pipe.mjs +0 -74
- package/esm2022/lib/components/gravity-calendar-v2/datepicker/utils/matrix-utils.mjs +0 -14
- package/esm2022/lib/components/gravity-calendar-v2/gravity-calendar-v2.component.mjs +0 -259
- package/esm2022/lib/components/gravity-card-button/gravity-card-button.component.mjs +0 -41
- package/esm2022/lib/components/gravity-checkbox/gravity-checkbox.component.mjs +0 -52
- package/esm2022/lib/components/gravity-chip-group/gravity-chip-group.component.mjs +0 -45
- package/esm2022/lib/components/gravity-currency/gravity-currency.component.mjs +0 -26
- package/esm2022/lib/components/gravity-currency-display-v2/gravity-currency-display-v2.component.mjs +0 -26
- package/esm2022/lib/components/gravity-currency-dropdown-short/gravity-currency-dropdown-short.component.mjs +0 -79
- package/esm2022/lib/components/gravity-data-views-v2/gravity-data-views-v2.component.mjs +0 -48
- package/esm2022/lib/components/gravity-date-picker/components/day-calendar/day-calendar.component.mjs +0 -273
- package/esm2022/lib/components/gravity-date-picker/components/day-calendar/range-days-calendar.utils.mjs +0 -241
- package/esm2022/lib/components/gravity-date-picker/components/month-calendar/month-calendar.component.mjs +0 -109
- package/esm2022/lib/components/gravity-date-picker/components/year-calendar/year-calendar.component.mjs +0 -105
- package/esm2022/lib/components/gravity-date-picker/gravity-date-picker.component.mjs +0 -84
- package/esm2022/lib/components/gravity-date-picker/shared/date-picker.constants.mjs +0 -61
- package/esm2022/lib/components/gravity-date-picker/shared/date-picker.modal.mjs +0 -2
- package/esm2022/lib/components/gravity-date-picker/shared/date-picker.utils.mjs +0 -110
- package/esm2022/lib/components/gravity-detail-container/gravity-detail-container.component.mjs +0 -93
- package/esm2022/lib/components/gravity-dialog/gravity-dialog.component.mjs +0 -26
- package/esm2022/lib/components/gravity-dropdown-label/gravity-dropdown-label.component.mjs +0 -65
- package/esm2022/lib/components/gravity-dropdown-list/filter-by.pipe.mjs +0 -44
- package/esm2022/lib/components/gravity-dropdown-list/gravity-dropdown-list.component.mjs +0 -542
- package/esm2022/lib/components/gravity-dropdown-list-display/display-currency-items.mjs +0 -2
- package/esm2022/lib/components/gravity-dropdown-list-display/gravity-dropdown-list-display.component.mjs +0 -203
- package/esm2022/lib/components/gravity-editable-input/gravity-editable-input.component.mjs +0 -52
- package/esm2022/lib/components/gravity-generic-avatar/gravity-generic-avatar.component.mjs +0 -33
- package/esm2022/lib/components/gravity-generic-avatar-secondary/gravity-generic-avatar-secondary.component.mjs +0 -28
- package/esm2022/lib/components/gravity-icon/gravity-icon.component.mjs +0 -120
- package/esm2022/lib/components/gravity-icon-button/gravity-icon-button.component.mjs +0 -54
- package/esm2022/lib/components/gravity-link/gravity-link.component.mjs +0 -39
- package/esm2022/lib/components/gravity-modal/gravity-modal.component.mjs +0 -44
- package/esm2022/lib/components/gravity-modal/gravity-modal.model.mjs +0 -2
- package/esm2022/lib/components/gravity-multi-language/gravity-multi-language.component.mjs +0 -31
- package/esm2022/lib/components/gravity-navigation-card/gravity-navigation-card.component.mjs +0 -54
- package/esm2022/lib/components/gravity-network-pill/gravity-network-pill.component.mjs +0 -33
- package/esm2022/lib/components/gravity-notification/gravity-notification-content.interface.mjs +0 -2
- package/esm2022/lib/components/gravity-notification/gravity-notification.component.mjs +0 -33
- package/esm2022/lib/components/gravity-notification-instant/gravity-notification-instant-container.component.mjs +0 -32
- package/esm2022/lib/components/gravity-pagination/gravity-pagination.component.mjs +0 -113
- package/esm2022/lib/components/gravity-push-notifications/gravity-push-notifications.component.mjs +0 -55
- package/esm2022/lib/components/gravity-radio-button/gravity-radio-button.component.mjs +0 -34
- package/esm2022/lib/components/gravity-segmented-button/gravity-segmented-button.component.mjs +0 -85
- package/esm2022/lib/components/gravity-status-indicator/gravity-status-indicator.component.mjs +0 -38
- package/esm2022/lib/components/gravity-stepper/gravity-stepper.component.mjs +0 -37
- package/esm2022/lib/components/gravity-switch/gravity-switch.component.mjs +0 -56
- package/esm2022/lib/components/gravity-tab-primary/gravity-tab-primary.component.mjs +0 -34
- package/esm2022/lib/components/gravity-tab-secondary/gravity-tab-secondary.component.mjs +0 -36
- package/esm2022/lib/components/gravity-table/gravity-table.component.mjs +0 -212
- package/esm2022/lib/components/gravity-tables-v2/gravity-tables-v2.component.mjs +0 -18
- package/esm2022/lib/components/gravity-text-field/gravity-text-field.component.mjs +0 -294
- package/esm2022/lib/components/gravity-text-field-amount-only/gravity-text-field-amount-only.component.mjs +0 -160
- package/esm2022/lib/components/gravity-text-field-number-only/gravity-text-field-number-only.component.mjs +0 -126
- package/esm2022/lib/components/gravity-tooltip-container/gravity-tooltip-container.component.mjs +0 -44
- package/esm2022/lib/components/gravity-tree-view/gravity-tree-view.component.mjs +0 -69
- package/esm2022/lib/components/gravity-tree-view/models/node-item.mjs +0 -2
- package/esm2022/lib/components/gravity-tree-view/models/node-selected-state.mjs +0 -7
- package/esm2022/lib/components/gravity-tree-view/models/node-state.mjs +0 -2
- package/esm2022/lib/components/gravity-tree-view/models/tree-callbacks.mjs +0 -2
- package/esm2022/lib/components/gravity-tree-view/node/node-checkbox/node-checkbox.component.mjs +0 -26
- package/esm2022/lib/components/gravity-tree-view/node/node-name/node-name.component.mjs +0 -13
- package/esm2022/lib/components/gravity-tree-view/node/node-toggle/node-toggle.component.mjs +0 -15
- package/esm2022/lib/components/gravity-tree-view/node/node.component.mjs +0 -17
- package/esm2022/lib/components/gravity-tree-view/service/tree-service.mjs +0 -242
- package/esm2022/lib/gravity-design-system.module.mjs +0 -370
- package/esm2022/lib/layout/gravity-header/gravity-header.component.mjs +0 -72
- package/esm2022/lib/layout/gravity-menu/gravity-menu.component.mjs +0 -232
- package/esm2022/lib/model/gravity-menu-items.model.mjs +0 -5
- package/esm2022/lib/model/gravity-push-notifications.model.mjs +0 -2
- package/esm2022/lib/services/gravity-dialog-manager.service.mjs +0 -48
- package/esm2022/lib/services/gravity-dropdown-manager.service.mjs +0 -21
- package/esm2022/lib/services/gravity-instant-notifications.service.mjs +0 -23
- package/esm2022/lib/services/gravity-push-notifications-service.service.mjs +0 -70
- package/esm2022/lib/services/gravity-responsive.service.mjs +0 -47
- package/esm2022/lib/vendor/gravity-tooltip/gravity-tooltip.component.mjs +0 -249
- package/esm2022/lib/vendor/gravity-tooltip/gravity-tooltip.directive.mjs +0 -494
- package/esm2022/lib/vendor/gravity-tooltip/gravity-tooltip.module.mjs +0 -41
- package/esm2022/lib/vendor/gravity-tooltip/index.mjs +0 -4
- package/esm2022/lib/vendor/gravity-tooltip/options.interface.mjs +0 -2
- package/esm2022/lib/vendor/gravity-tooltip/options.mjs +0 -38
- package/esm2022/lib/vendor/gravity-tooltip/options.service.mjs +0 -7
- package/esm2022/progressio_resources-gravity-design-system.mjs +0 -5
- package/esm2022/public-api.mjs +0 -62
- package/index.d.ts +0 -5
- package/lib/components/gravity-attach-file/gravity-attach-file.component.d.ts +0 -22
- package/lib/components/gravity-avatar-stack/gravity-avatar-stack.component.d.ts +0 -22
- package/lib/components/gravity-backdrop/gravity-backdrop.component.d.ts +0 -6
- package/lib/components/gravity-badge/gravity-badge.component.d.ts +0 -12
- package/lib/components/gravity-button/gravity-button.component.d.ts +0 -17
- package/lib/components/gravity-calendar-v2/datepicker/base/bs-datepicker-container.d.ts +0 -42
- package/lib/components/gravity-calendar-v2/datepicker/bs-datepicker-inline.component.d.ts +0 -40
- package/lib/components/gravity-calendar-v2/datepicker/bs-datepicker-inline.config.d.ts +0 -6
- package/lib/components/gravity-calendar-v2/datepicker/bs-datepicker.callbacks.d.ts +0 -6
- package/lib/components/gravity-calendar-v2/datepicker/bs-datepicker.component.d.ts +0 -66
- package/lib/components/gravity-calendar-v2/datepicker/bs-datepicker.config.d.ts +0 -53
- package/lib/components/gravity-calendar-v2/datepicker/bs-daterangepicker-inline.component.d.ts +0 -37
- package/lib/components/gravity-calendar-v2/datepicker/bs-daterangepicker-inline.config.d.ts +0 -7
- package/lib/components/gravity-calendar-v2/datepicker/bs-daterangepicker.component.d.ts +0 -61
- package/lib/components/gravity-calendar-v2/datepicker/bs-daterangepicker.config.d.ts +0 -7
- package/lib/components/gravity-calendar-v2/datepicker/components/bs-datepicker-container.component.d.ts +0 -36
- package/lib/components/gravity-calendar-v2/datepicker/components/bs-datepicker-inline-container.component.d.ts +0 -15
- package/lib/components/gravity-calendar-v2/datepicker/components/bs-datepicker-navigation-view/bs-datepicker-navigation-view.component.d.ts +0 -26
- package/lib/components/gravity-calendar-v2/datepicker/components/bs-daterangepicker-container.component.d.ts +0 -42
- package/lib/components/gravity-calendar-v2/datepicker/components/bs-daterangepicker-inline-container.component.d.ts +0 -15
- package/lib/components/gravity-calendar-v2/datepicker/components/bs-days-calendar-view/bs-datepicker-day-decorator.directive.d.ts +0 -7
- package/lib/components/gravity-calendar-v2/datepicker/components/bs-days-calendar-view/bs-days-calendar-view.component.d.ts +0 -25
- package/lib/components/gravity-calendar-v2/datepicker/components/bs-months-calendar-view/bs-months-calendar-view.component.d.ts +0 -23
- package/lib/components/gravity-calendar-v2/datepicker/components/bs-years-calendar-view/bs-years-calendar-view.component.d.ts +0 -22
- package/lib/components/gravity-calendar-v2/datepicker/datepicker-animations.d.ts +0 -3
- package/lib/components/gravity-calendar-v2/datepicker/engine/calc-days-calendar.d.ts +0 -2
- package/lib/components/gravity-calendar-v2/datepicker/engine/flag-days-calendar.d.ts +0 -12
- package/lib/components/gravity-calendar-v2/datepicker/engine/flag-months-calendar.d.ts +0 -12
- package/lib/components/gravity-calendar-v2/datepicker/engine/flag-years-calendar.d.ts +0 -13
- package/lib/components/gravity-calendar-v2/datepicker/engine/format-days-calendar.d.ts +0 -2
- package/lib/components/gravity-calendar-v2/datepicker/engine/format-months-calendar.d.ts +0 -2
- package/lib/components/gravity-calendar-v2/datepicker/engine/format-years-calendar.d.ts +0 -4
- package/lib/components/gravity-calendar-v2/datepicker/engine/view-mode.d.ts +0 -2
- package/lib/components/gravity-calendar-v2/datepicker/models/index.d.ts +0 -86
- package/lib/components/gravity-calendar-v2/datepicker/reducer/_defaults.d.ts +0 -3
- package/lib/components/gravity-calendar-v2/datepicker/reducer/bs-datepicker.actions.d.ts +0 -34
- package/lib/components/gravity-calendar-v2/datepicker/reducer/bs-datepicker.effects.d.ts +0 -34
- package/lib/components/gravity-calendar-v2/datepicker/reducer/bs-datepicker.reducer.d.ts +0 -3
- package/lib/components/gravity-calendar-v2/datepicker/reducer/bs-datepicker.state.d.ts +0 -34
- package/lib/components/gravity-calendar-v2/datepicker/reducer/bs-datepicker.store.d.ts +0 -8
- package/lib/components/gravity-calendar-v2/datepicker/services/header-type.service.d.ts +0 -17
- package/lib/components/gravity-calendar-v2/datepicker/utils/bs-calendar-utils.d.ts +0 -13
- package/lib/components/gravity-calendar-v2/datepicker/utils/date-abbreviation.pipe.d.ts +0 -13
- package/lib/components/gravity-calendar-v2/datepicker/utils/matrix-utils.d.ts +0 -9
- package/lib/components/gravity-calendar-v2/gravity-calendar-v2.component.d.ts +0 -57
- package/lib/components/gravity-card-button/gravity-card-button.component.d.ts +0 -15
- package/lib/components/gravity-checkbox/gravity-checkbox.component.d.ts +0 -21
- package/lib/components/gravity-chip-group/gravity-chip-group.component.d.ts +0 -19
- package/lib/components/gravity-currency/gravity-currency.component.d.ts +0 -13
- package/lib/components/gravity-currency-display-v2/gravity-currency-display-v2.component.d.ts +0 -16
- package/lib/components/gravity-currency-dropdown-short/gravity-currency-dropdown-short.component.d.ts +0 -32
- package/lib/components/gravity-data-views-v2/gravity-data-views-v2.component.d.ts +0 -22
- package/lib/components/gravity-date-picker/components/day-calendar/day-calendar.component.d.ts +0 -105
- package/lib/components/gravity-date-picker/components/day-calendar/range-days-calendar.utils.d.ts +0 -12
- package/lib/components/gravity-date-picker/components/month-calendar/month-calendar.component.d.ts +0 -71
- package/lib/components/gravity-date-picker/components/year-calendar/year-calendar.component.d.ts +0 -70
- package/lib/components/gravity-date-picker/gravity-date-picker.component.d.ts +0 -64
- package/lib/components/gravity-date-picker/shared/date-picker.constants.d.ts +0 -52
- package/lib/components/gravity-date-picker/shared/date-picker.modal.d.ts +0 -25
- package/lib/components/gravity-date-picker/shared/date-picker.utils.d.ts +0 -10
- package/lib/components/gravity-detail-container/gravity-detail-container.component.d.ts +0 -28
- package/lib/components/gravity-dialog/gravity-dialog.component.d.ts +0 -22
- package/lib/components/gravity-dropdown-label/gravity-dropdown-label.component.d.ts +0 -19
- package/lib/components/gravity-dropdown-list/filter-by.pipe.d.ts +0 -10
- package/lib/components/gravity-dropdown-list/gravity-dropdown-list.component.d.ts +0 -84
- package/lib/components/gravity-dropdown-list-display/display-currency-items.d.ts +0 -12
- package/lib/components/gravity-dropdown-list-display/gravity-dropdown-list-display.component.d.ts +0 -52
- package/lib/components/gravity-editable-input/gravity-editable-input.component.d.ts +0 -19
- package/lib/components/gravity-generic-avatar/gravity-generic-avatar.component.d.ts +0 -11
- package/lib/components/gravity-generic-avatar-secondary/gravity-generic-avatar-secondary.component.d.ts +0 -11
- package/lib/components/gravity-icon/gravity-icon.component.d.ts +0 -85
- package/lib/components/gravity-icon-button/gravity-icon-button.component.d.ts +0 -22
- package/lib/components/gravity-link/gravity-link.component.d.ts +0 -14
- package/lib/components/gravity-modal/gravity-modal.component.d.ts +0 -19
- package/lib/components/gravity-modal/gravity-modal.model.d.ts +0 -17
- package/lib/components/gravity-multi-language/gravity-multi-language.component.d.ts +0 -12
- package/lib/components/gravity-navigation-card/gravity-navigation-card.component.d.ts +0 -24
- package/lib/components/gravity-network-pill/gravity-network-pill.component.d.ts +0 -14
- package/lib/components/gravity-notification/gravity-notification-content.interface.d.ts +0 -7
- package/lib/components/gravity-notification/gravity-notification.component.d.ts +0 -12
- package/lib/components/gravity-notification-instant/gravity-notification-instant-container.component.d.ts +0 -10
- package/lib/components/gravity-pagination/gravity-pagination.component.d.ts +0 -24
- package/lib/components/gravity-push-notifications/gravity-push-notifications.component.d.ts +0 -21
- package/lib/components/gravity-radio-button/gravity-radio-button.component.d.ts +0 -14
- package/lib/components/gravity-segmented-button/gravity-segmented-button.component.d.ts +0 -33
- package/lib/components/gravity-status-indicator/gravity-status-indicator.component.d.ts +0 -14
- package/lib/components/gravity-stepper/gravity-stepper.component.d.ts +0 -13
- package/lib/components/gravity-switch/gravity-switch.component.d.ts +0 -24
- package/lib/components/gravity-tab-primary/gravity-tab-primary.component.d.ts +0 -16
- package/lib/components/gravity-tab-secondary/gravity-tab-secondary.component.d.ts +0 -17
- package/lib/components/gravity-table/gravity-table.component.d.ts +0 -25
- package/lib/components/gravity-tables-v2/gravity-tables-v2.component.d.ts +0 -7
- package/lib/components/gravity-text-field/gravity-text-field.component.d.ts +0 -62
- package/lib/components/gravity-text-field-amount-only/gravity-text-field-amount-only.component.d.ts +0 -43
- package/lib/components/gravity-text-field-number-only/gravity-text-field-number-only.component.d.ts +0 -30
- package/lib/components/gravity-tooltip-container/gravity-tooltip-container.component.d.ts +0 -40
- package/lib/components/gravity-tree-view/gravity-tree-view.component.d.ts +0 -21
- package/lib/components/gravity-tree-view/models/node-item.d.ts +0 -10
- package/lib/components/gravity-tree-view/models/node-selected-state.d.ts +0 -5
- package/lib/components/gravity-tree-view/models/node-state.d.ts +0 -14
- package/lib/components/gravity-tree-view/models/tree-callbacks.d.ts +0 -9
- package/lib/components/gravity-tree-view/node/node-checkbox/node-checkbox.component.d.ts +0 -11
- package/lib/components/gravity-tree-view/node/node-name/node-name.component.d.ts +0 -7
- package/lib/components/gravity-tree-view/node/node-toggle/node-toggle.component.d.ts +0 -7
- package/lib/components/gravity-tree-view/node/node.component.d.ts +0 -7
- package/lib/components/gravity-tree-view/service/tree-service.d.ts +0 -42
- package/lib/gravity-design-system.module.d.ts +0 -85
- package/lib/layout/gravity-header/gravity-header.component.d.ts +0 -36
- package/lib/layout/gravity-menu/gravity-menu.component.d.ts +0 -53
- package/lib/model/gravity-menu-items.model.d.ts +0 -31
- package/lib/model/gravity-push-notifications.model.d.ts +0 -22
- package/lib/services/gravity-dialog-manager.service.d.ts +0 -17
- package/lib/services/gravity-dropdown-manager.service.d.ts +0 -12
- package/lib/services/gravity-instant-notifications.service.d.ts +0 -10
- package/lib/services/gravity-push-notifications-service.service.d.ts +0 -14
- package/lib/services/gravity-responsive.service.d.ts +0 -11
- package/lib/vendor/gravity-tooltip/gravity-tooltip.component.d.ts +0 -44
- package/lib/vendor/gravity-tooltip/gravity-tooltip.directive.d.ts +0 -113
- package/lib/vendor/gravity-tooltip/gravity-tooltip.module.d.ts +0 -12
- package/lib/vendor/gravity-tooltip/index.d.ts +0 -3
- package/lib/vendor/gravity-tooltip/options.d.ts +0 -24
- package/lib/vendor/gravity-tooltip/options.interface.d.ts +0 -42
- package/lib/vendor/gravity-tooltip/options.service.d.ts +0 -7
- package/public-api.d.ts +0 -53
|
@@ -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-badge/gravity-badge.component.ts","../../../projects/gravity-design-system/src/lib/components/gravity-badge/gravity-badge.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/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-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/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-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/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 'percent',\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 'url',\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_iso: string, network_iso?: string};\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-'+ currency.currency_iso.toLowerCase() + '-disabled' : 'coin-' + currency.currency_iso.toLowerCase()\"\n *ngIf=\"currency.currency_iso\" [iconSize]=\"'sm-12'\" [isCoin]=\"true\"></gravity-icon>\n <gravity-icon class=\"bg-2\"\n [iconName]=\"disabled ? 'coin-'+ currency.currency_iso.toLowerCase() + '-disabled' : 'coin-' + currency.currency_iso.toLowerCase()\"\n *ngIf=\"currency.currency_iso && showLayers && !disabled\" [iconSize]=\"'sm-12'\"\n [isCoin]=\"true\"></gravity-icon>\n <gravity-icon class=\"bg-3\"\n [iconName]=\"disabled ? 'coin-'+ currency.currency_iso.toLowerCase() + '-disabled' : 'coin-' + currency.currency_iso.toLowerCase()\"\n *ngIf=\"currency.currency_iso && 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-'+ currency.network_iso.toLowerCase() + '-disabled' : 'network-' + currency.network_iso.toLowerCase()\"\n *ngIf=\"currency?.network_iso && 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\tpublic getNetworkIconName(): string {\n\t\tif (typeof this.network?.iso !== 'string') return '';\n\n\t\tconst iso = this.network.iso.toLowerCase();\n\t\treturn this.disabled ? `network-${iso}-disabled` : `network-${iso}`;\n\t}\n\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?.iso && showNetworkIcon\"\n [iconSize]=\"'sm-12'\" [isCoin]=\"true\" [iconName]=\"getNetworkIconName()\"/>\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_iso: currency.currency_iso}\">\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_iso: currency.currency_iso}\">\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_iso)\"\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\" [class.has-overflow]=\"availableOptions.length > 5\">\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_iso: child.currency_iso}\"></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</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'| 'full' = '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 {{width}}-width\" *ngIf=\"selectedItems.length > 0\">\n <p class=\"hr-label sm-regular wallet-balance-text\">{{ 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 {\n Component,\n ElementRef,\n EventEmitter,\n Input,\n OnChanges,\n OnInit,\n Output,\n SimpleChanges,\n ViewChild\n} 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 @ViewChild('inputElement', {static: false}) public inputElement!: ElementRef<HTMLInputElement>;\n @ViewChild('textAreaElement', {static: false}) public textAreaElement!: ElementRef<HTMLInputElement>;\n\n // 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 @Input() public labelExtraText: string;\n @Input() public characterCounter: boolean = false;\n @Input() public passwordRequirements: { key: string; label: string; isValid: boolean; }[] = [];\n @Input() public supportTextIcon: string = '';\n\n public focusInput: boolean = false;\n public hasUserTyped: boolean = false;\n public isPasswordField: boolean = false;\n public characterLimit: boolean = false;\n public allPasswordRequirementsValid: 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 public focus() {\n this.inputElement.nativeElement.focus();\n }\n\n public isFocused(): boolean {\n return document.activeElement === this.inputElement.nativeElement;\n }\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 this.hasUserTyped = true;\n\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 if (this.inputValue.length == this.validations?.maxLength || this.inputValue.length == 200) {\n this.supportText = this.currentLang == 'en' ? 'Character limit reached' : 'Límite de caracteres alcanzado';\n this.characterLimit = true;\n } else if (this.characterLimit) {\n this.supportText = '';\n this.characterLimit = false;\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 get hasInvalidPasswordRequirements(): boolean {\n if (this.passwordRequirements.length > 0) {\n this.isPasswordField = true;\n const hasInvalid = this.passwordRequirements?.some(r => !r.isValid);\n\n if (this.hasUserTyped) {\n //Requirements invalid\n if (hasInvalid) {\n if (!this.focusInput || this.allPasswordRequirementsValid) {\n this.customState = 'typed-error';\n this.supportText = this.currentLang === 'en' ? 'Must meet password requirements' : 'Debe cumplir con los requisitos de contraseña';\n this.allPasswordRequirementsValid = false;\n }\n }\n //Requirements valid\n else {\n this.customState = 'typed-positive';\n this.supportText = this.currentLang === 'en' ? 'Requirements applied' : 'Requisitos aplicados';\n this.allPasswordRequirementsValid = true;\n }\n }\n\n return hasInvalid;\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 if (this.inputContentType == 'date') {\n const allowedKeys = [\n 'Backspace', 'Delete', 'Tab', 'Escape', 'Enter',\n 'ArrowLeft', 'ArrowRight', 'ArrowUp', 'ArrowDown'\n ];\n\n if (allowedKeys.includes($event.key) || $event.metaKey || $event.ctrlKey) {\n return;\n }\n\n if (/\\D/.test($event.key) && $event.key !== '/') {\n $event.preventDefault();\n }\n }\n }\n\n public formatDateInput(event: any): void {\n const el = event.target as HTMLInputElement;\n let value = el.value;\n let formatted = '';\n\n let cursorPosition = el.selectionStart || 0;\n const isDeleting = event.inputType === 'deleteContentBackward' ||\n event.inputType === 'deleteContentForward';\n\n if ((value.length === 3 && value[2] === '/') ||\n (value.length === 6 && value[5] === '/')) {\n formatted = value;\n } else if (/\\D/.test(value[value.length - 1])) {\n formatted = value.slice(0, -1);\n cursorPosition = Math.max(0, cursorPosition - 1);\n\n if (formatted.length === 1 || formatted.length === 4) {\n cursorPosition++;\n }\n } else {\n const numbers = value.replace(/\\//g, '');\n\n let day = numbers.slice(0, 2);\n let month = numbers.slice(2, 4);\n let year = numbers.slice(4, 8);\n\n if (day.length > 0) formatted += day;\n if (day.length === 2 && month.length > 0) formatted += '/';\n if (month.length > 0) formatted += month;\n if (month.length === 2 && year.length > 0) formatted += '/';\n if (year.length > 0) formatted += year;\n\n const currentLength = value.length;\n const newLength = formatted.length;\n\n if (newLength > currentLength && !isDeleting) {\n cursorPosition++\n }\n }\n\n el.value = formatted;\n this.inputValue = formatted;\n el.setSelectionRange(cursorPosition, cursorPosition);\n\n this.changeInputValue();\n }\n}\n","<label class=\"hr-label sm-bold {{getTextFieldStatus()}}\" [class.custom-label-size]=\"size == 'sm'\" *ngIf=\"label\">\n {{ label }}\n <span *ngIf=\"required || getTextFieldStatus() == 'typed-error'\">* </span>\n <span [class.extra-text]=\"labelExtraText\" *ngIf=\"labelExtraText\">{{ labelExtraText }}</span>\n</label>\n<div class=\"gravity-input-field {{textFieldType}} {{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 #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<div class=\"support-text-container {{size}} {{width}}-width\">\n <p class=\"hr-label sm-regular supporting-text {{getTextFieldStatus()}} {{size}}\"\n [class.custom-label-size]=\"size == 'sm'\" *ngIf=\"supportText\">\n <gravity-icon [class.negative]=\"getTextFieldStatus() == 'typed-error'\" [iconName]=\"'question-circle'\"\n *ngIf=\"getTextFieldStatus() == 'typed-error' || characterLimit\"\n [iconSize]=\"'md-16'\"></gravity-icon>\n <gravity-icon class=\"positive\" [iconName]=\"'check'\" *ngIf=\"!hasInvalidPasswordRequirements && isPasswordField\"\n [iconSize]=\"'md-16'\"></gravity-icon>\n <gravity-icon [ngClass]=\"{negative: getTextFieldStatus() === 'typed-error',positive: getTextFieldStatus() === 'typed-positive'}\"\n [iconName]=\"supportTextIcon\" *ngIf=\"supportTextIcon\" [iconSize]=\"'md-16'\"></gravity-icon>\n {{ supportText }}\n </p>\n <p class=\"hr-label sm-regular character-counter {{getTextFieldStatus()}}\"\n *ngIf=\"characterCounter\">{{ inputValue.length }}/200</p>\n</div>\n\n\n<div class=\"password-requirements\" *ngIf=\"passwordRequirements.length> 0 && hasInvalidPasswordRequirements\">\n <p class=\"hr-label sm-bold\">{{ currentLang == 'en' ? 'Password requirements:' : 'Requisitos de contraseña:' }}</p>\n <ul class=\"requirements\">\n <li class=\"hr-label sm-regular\" *ngFor=\"let requirement of passwordRequirements\"\n [ngClass]=\"{valid: hasUserTyped && requirement.isValid, invalid: hasUserTyped && !focusInput && !requirement.isValid}\">\n {{ requirement.label }}\n </li>\n </ul>\n</div>\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 @HostBinding('class.tooltip-persistent') hostClassPersistent!: 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 const base = Number(this.data.options.offset);\n\n if (this.options['persistent']) {\n return base + 18;\n }\n\n return base;\n }\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 this.hostClassPersistent = !!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 @Input() public labelExtraText: 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 <span [class.extra-text]=\"labelExtraText\" *ngIf=\"labelExtraText\">{{ labelExtraText }}</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</div>\n","import {Component, Input} from \"@angular/core\";\n\n@Component({\n selector: 'gravity-badge',\n templateUrl: './gravity-badge.component.html',\n styleUrls: ['./gravity-badge.component.scss']\n})\nexport class GravityBadgeComponent {\n @Input() public size: 'sm' | 'md' | 'lg' = 'sm';\n @Input() public text: string;\n @Input() public number: number;\n @Input() public cypressTag: string;\n @Input() public type: 'warning' | 'neutro' = 'warning';\n\n constructor() {\n }\n\n public get formattedNumber(): string | number {\n if (this.number < 10) {\n return this.number;\n }\n\n if(this.number >= 100){\n return '99+'\n }\n\n const base = Math.floor(this.number / 10) * 10;\n return `${base}+`;\n }\n}","<div class=\"gravity-badge {{size}} {{type}}\" [ngClass]=\"(number && number > 1) || text ? 'text' : 'dot'\"\n [attr.data-cy]=\"cypressTag ? 'badge_'+cypressTag : null\">\n <p *ngIf=\"text && size == 'sm'\" class=\"hr-body sm-regular text\">{{ text }}</p>\n <p *ngIf=\"number && number > 1 && size == 'sm'\" class=\"hr-body sm-regular number\">{{ formattedNumber }}</p>\n</div>","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()\"\n [attr.data-cy]=\"cypressTag ? 'iconButton_' + cypressTag : null\">\n\n <gravity-badge class=\"icon-button-badge{{badge.text ? '-text' : '' }}\" *ngIf=\"badge && state != 'disabled'\" [size]=\"size\"\n [type]=\"badge.type\" [number]=\"+badge.text\"></gravity-badge>\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\" [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 + '-' + item[config.icon].toLowerCase()\"\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' | 'selected' = '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\"\n (click)=\"onCardButtonClick()\">\n <div class=\"card-button-container {{type}} {{orientation}}\" [class.pressed]=\"state === 'pressed'\"\n [class.disabled]=\"state === 'disabled'\" [class.selected]=\"state === 'selected'\" [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' : 'lg-24'\">\n </gravity-icon>\n <label *ngIf=\"label\"\n [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 [iconSize]=\"'md-16'\" [iconName]=\"'unsuccess'\" (click)=\"handleCloseButton()\"/>\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() 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 {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'\" [class.disabled]=\"currentPage === 1\">\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'\" [class.disabled]=\"currentPage === totalPages\">\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 {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 {MenuHeader, MenuLogoUrls, MenuOption, SecondaryActions, UserInfo} from \"../../model/gravity-menu-items.model\";\nimport {Component, ElementRef, EventEmitter, Input, Output, ViewChild, AfterViewInit, OnDestroy, OnChanges, SimpleChanges, Renderer2} 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 items: MenuHeader[];\n\t@Input() public userInfo: UserInfo[];\n\t@Input() public logoUrl: MenuLogoUrls;\n\t@Input() public isOpen: boolean = false;\n\t@Input() public collapsable: 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\t@Output() public collapsed = new EventEmitter<boolean>();\n\n\t@ViewChild('menuBody', {static: false}) menuBody!: ElementRef<HTMLDivElement>;\n\n\tpublic closing = false;\n\tpublic scrollPosition: number = 0;\n\tpublic collapsedMode: boolean = false;\n\tpublic visibleSubMenu: boolean = false;\n\tpublic selectedOption: MenuOption | null = null;\n\n\tprivate resizeObserver!: ResizeObserver;\n\tprivate clickOutsideListener!: () => void;\n\n\tconstructor(private elRef: ElementRef, private renderer: Renderer2) {}\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\n\t\tif (changes['size']) {\n\t\t\tthis.handleSizeChange(changes['size'].currentValue);\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\tif (this.menuBody) {\n\t\t\tthis.menuBody.nativeElement.addEventListener('scroll', () => {\n\t\t\t\tthis.scrollPosition = this.menuBody.nativeElement.scrollTop;\n\t\t\t});\n\t\t}\n\n\t\tthis.clickOutsideListener = this.renderer.listen('document', 'click', (event: MouseEvent) => {\n\t\t\tconst menuElement = this.elRef.nativeElement as HTMLElement;\n\t\t\tif (!menuElement.contains(event.target as Node) && this.collapsedMode) {\n\t\t\t\tthis.visibleSubMenu = false;\n\t\t\t\tthis.toggleAllHeaders(true);\n\t\t\t}\n\t\t});\n\n\t\tthis.resizeObserver.observe(el);\n\t\tthis.updateOverflow();\n\t}\n\n\tngOnDestroy() {\n\t\tif (this.resizeObserver) { this.resizeObserver.disconnect(); }\n\t\tif (this.clickOutsideListener) { this.clickOutsideListener(); }\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\n\t\tif(this.collapsedMode) { this.toggleAllHeaders(true); }\n\t}\n\n\tprivate handleSizeChange(size: 'xs' | 'sm' | 'md' | 'lg' | 'xl'): void {\n\t\tif (size === 'sm' || size === 'md') {\n\t\t\tif (this.collapsedMode) {\n\t\t\t\tthis.collapsedMode = false;\n\t\t\t\tthis.visibleSubMenu = false;\n\t\t\t\tthis.toggleAllHeaders(true);\n\t\t\t}\n\t\t} else {\n\t\t\tif(!this.collapsedMode) {\n\t\t\t\tthis.toggleAllHeaders(false);\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic selectOption(option: MenuOption, header: MenuHeader) {\n\t\tthis.selectedOption = option;\n\t\tthis.selected.emit(option.link);\n\n\t\tif (this.collapsedMode && header) {\n\t\t\tthis.visibleSubMenu = false;\n\t\t\tsetTimeout(() => {header.collapsed = true;}, 0);\n\t\t}\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, index: number) {\n\t\tif (!header.headerOptions || header.headerOptions.length === 0) {\n\t\t\tthis.selectedOption = null;\n\t\t\tthis.selected.emit(header.link);\n\n\t\t\tif(this.collapsedMode) {\n\t\t\t\tthis.toggleAllHeaders(true);\n\t\t\t}\n\t\t}\n\n\t\tif (!header.headerOptions?.length) return;\n\n\t\tif (this.collapsedMode) {\n\t\t\tif (!header.collapsed) {\n\t\t\t\theader.collapsed = true;\n\t\t\t\tthis.visibleSubMenu = false;\n\t\t\t} else {\n\t\t\t\tthis.toggleAllHeaders(true);\n\t\t\t\theader.collapsed = false;\n\t\t\t\tthis.visibleSubMenu = true;\n\t\t\t}\n\t\t\tthis.adjustScrollOnGrow(index);\n\t\t} else {\n\t\t\theader.collapsed = !header.collapsed;\n\t\t}\n\t}\n\n\tpublic isHeaderSelected(header: MenuHeader): boolean {\n\t\tif (!header.headerOptions?.length) return false;\n\t\treturn header.headerOptions.some(option => option === this.selectedOption);\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\tpublic collapseMenu() {\n\t\tthis.collapsedMode = !this.collapsedMode;\n\t\tthis.toggleAllHeaders(this.collapsedMode);\n\t\tif(this.collapsedMode) { this.visibleSubMenu = false; }\n\n\t\tthis.collapsed.emit(this.collapsedMode);\n\t}\n\n\tpublic hasOptionBadge(header: MenuHeader): boolean {\n\t\treturn !!header.headerOptions?.some(\n\t\t\toption => typeof option.badge_text === 'string' && option.badge_text.trim().length > 0\n\t\t);\n\t}\n\n\tpublic clearSelection(clearSelection: boolean) {\n\t\tif(clearSelection) {\n\t\t\tthis.selectedOption = null;\n\t\t\tif(this.collapsedMode) {\n\t\t\t\tthis.toggleAllHeaders(true);\n\t\t\t}\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\tprivate toggleAllHeaders(collapsed: boolean): void {\n\t\tif (!this.items?.length) return;\n\n\t\tfor (const header of this.items) {\n\t\t\tif (header.headerOptions?.length) {\n\t\t\t\theader.collapsed = collapsed;\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate adjustScrollOnGrow(index: number): void {\n\t\tconst el = this.menuBody?.nativeElement;\n\t\tif (!el) return;\n\n\t\tel.scrollTo({top: 62 * index, behavior: 'auto'});\n\t}\n\n}\n","<div class=\"gravity-menu {{size}}\" [class.open]=\"isOpen\" [class.closing]=\"closing\"\n [class.collapsed]=\"collapsedMode && (size === 'xl' || size === 'lg')\">\n\n <div class=\"menu-header\">\n <svg-icon *ngIf=\"logoUrl?.main_logo_url\"\n [src]=\"(collapsedMode && logoUrl.collapsed_logo_url) ? logoUrl.collapsed_logo_url : logoUrl.main_logo_url\"/>\n\n <gravity-icon *ngIf=\"(size === 'md' || size === 'sm') && showCloseButton\"\n [iconSize]=\"'lg-24'\" [iconName]=\"'unsuccess'\" (click)=\"closeMenu()\"/>\n\n <div *ngIf=\"collapsable && (size === 'xl' || size === 'lg')\" class=\"collapse-button\" (click)=\"collapseMenu()\">\n <gravity-icon [style.--icon-color]=\"'var(--bg-button-active-primary)'\" [iconSize]=\"'sm-12'\"\n [iconName]=\"collapsedMode ? 'arrow-right' : 'arrow-left'\"/>\n </div>\n </div>\n\n <div class=\"menu-content\">\n <section #menuBody class=\"menu-body\" [class.sub-menu]=\"visibleSubMenu\">\n <div class=\"menu-section\">\n <div class=\"levels\" *ngFor=\"let header of items; let i = index\">\n <section class=\"first-level\" [class.selected]=\"isHeaderSelected(header)\"\n [routerLink]=\"header.link || undefined\" (click)=\"toggleMenuHeader(header, i)\"\n [class.is-open]=\"!header.collapsed\" [class.empty]=\"header.headerOptions?.length < 1\"\n [style.--expanded-margin]=\"header.headerOptions?.length > 0 ? (38 + (34 * header.headerOptions?.length)) + 'px' : '0'\">\n\n <p class=\"hr-label sm-regular\">\n <gravity-icon [style.--icon-color]=\"'var(--option-icon-color)'\" *ngIf=\"header.icon !== ''\" [iconName]=\"header.icon\" [iconSize]=\"'md-16'\"/>\n <gravity-badge class=\"badge\" *ngIf=\"hasOptionBadge(header) && (size === 'xl' || size === 'lg')\"\n [class.collapsed]=\"collapsedMode\" [size]=\"'sm'\" [type]=\"'neutro'\"></gravity-badge>\n {{ header.text }}\n </p>\n\n <div *ngIf=\"!collapsedMode\">\n <gravity-icon *ngIf=\"header.headerOptions?.length > 0\" [iconSize]=\"'sm-12'\" [iconName]=\"header.collapsed ? 'arrow-down' : 'arrow-up'\"/>\n </div>\n </section>\n\n <section *ngIf=\"!header.collapsed && header.headerOptions?.length > 0\" class=\"second-level\"\n [@fadeSlide] [style.--submenu-offset]=\"((156 - scrollPosition) + (78 * i)) + 'px'\"\n [ngClass]=\"collapsedMode ? 'elevation-xs' : ''\">\n\n <div class=\"options-list\" [class.collapsed]=\"collapsedMode\">\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\"\n [class.selected]=\"(size === 'xl' || size == 'lg') && option === selectedOption\"></div>\n <div class=\"option-text\"\n [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, header)\">\n {{ option.text }}\n <gravity-badge *ngIf=\"option.badge_text && (size === 'xl' || size === 'lg')\"\n [text]=\"option.badge_text\" [type]=\"'neutro'\" [size]=\"'sm'\"></gravity-badge>\n </div>\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')\"\n 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\"\n (click)=\"action.callback(); clearSelection(action.clear_selection)\">\n\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 !== ''\" class=\"icon\" [iconName]=\"userInfo.icon\" [iconSize]=\"'sm-12'\"\n [tooltip]=\"collapsedMode ? tooltipUserInfoTemplate : null\" [contentType]=\"'template'\" [placement]=\"'right'\"/>\n\n <span *ngIf=\"!collapsedMode\" class=\"hr-label sm-regular\">{{ userInfo.info }}</span>\n\n <ng-template #tooltipUserInfoTemplate>\n <gravity-tooltip-container [tooltipSimple]=\"{text: userInfo.info}\"/>\n </ng-template>\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\"\n [type]=\"'secondary'\"\n [orientation]=\"'vrt-center'\"\n [iconName]=\"button.icon\" [label]=\"button.text\"\n (clicked)=\"button.callback(); clearSelection(button.clear_selection); selected.emit()\"/>\n </div>\n </div>\n <gravity-button *ngIf=\"mainFooterAction\" [size]=\"'md'\" [type]=\"'tertiary'\" [iconName]=\"mainFooterAction.icon\"\n [iconPosition]=\"'left'\" (click)=\"mainFooterAction.callback()\"> {{ mainFooterAction.text }}\n </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 {\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 cypressTag: string;\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\"\n [class.disabled]=\"disabled\" #currencyDropdownShortTrigger>\n\n <!--Header-->\n <div class=\"header-item\" (click)=\"onTriggerClick($event)\" *ngIf=\"selectedItem\"\n [attr.data-cy]=\"cypressTag ? 'currencyDropdownShort_'+cypressTag : null\">\n <gravity-currency *ngIf=\"showFlag\" [size]=\"'sm-16'\" [currency]=\"{currency_iso: selectedItem.currency_iso}\"\n [disabled]=\"disabled\"/>\n <span class=\"hr-body sm-regular\">{{ selectedItem.currency_iso }}</span>\n <gravity-icon *ngIf=\"!readonly && config.items\" [iconSize]=\"'sm-12'\"\n [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\"\n #currencyDropdownShortPanel>\n <div *ngFor=\"let item of config.items\" class=\"panel-item\" [class.selected-item]=\"selectedItem?.currency_id === item.currency_id\"\n [attr.data-cy]=\"'currencyDropdownShort_item'+item.currency_iso\" (click)=\"onItemSelect(item, $event)\">\n <gravity-currency *ngIf=\"showFlag\" [size]=\"'sm-16'\" [currency]=\"{currency_iso: item.currency_iso}\"\n [disabled]=\"disabled\"/>\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 cypressTag: string;\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 @Input() public width: 'standard' | 'full' = 'standard';\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 //Clean component\n public reset(priority: 'crypto' | 'fiat' = 'crypto'): void {\n this.priority = priority;\n\n this.inputValue = '';\n this.valueFiat = '';\n this.valueCrypto = '';\n\n this.state = null;\n }\n}\n","<div class=\"amount-only-text-field {{state ? state : null}}\" [class.disabled]=\"disabled\"\n [attr.data-cy]=\"cypressTag ? 'textFieldAmount_'+cypressTag : null\" [class.standard-width]=\"width === 'standard'\"\n [class.full-width]=\"width === 'full'\">\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\"\n (onClick)=\"updateFiatCurrency($event)\" [cypressTag]=\"'amountFiat'\"\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'\"\n [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'\"\n [class.gravity-padding-inline-sm]=\"fiatCurrenciesSize == 'md'\">{{ cryptoCurrency.currency_iso }}</p>\n </ng-container>\n </div>\n </div>\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\";\nimport {GravityBadgeComponent} from \"./components/gravity-badge/gravity-badge.component\";\n\n@NgModule({\n declarations: [\n GravityAttachFileComponent,\n GravityAvatarStackComponent,\n GravityGenericAvatarComponent,\n GravityBadgeComponent,\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 GravityBadgeComponent,\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-badge/gravity-badge.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","i2.GravityBadgeComponent","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","i5.GravityStatusIndicatorComponent","i6.GravityPaginationComponent","i3.GravityTooltipDirective","i5.GravityBadgeComponent","i6.GravityButtonComponent","i7.GravityIconComponent","i8.GravityCardButtonComponent","i9.GravityTooltipContainerComponent","i3.GravityCurrencyDropdownShortComponent","i4.GravityIconButtonComponent","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/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-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-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-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-link/gravity-link.component.ts","../../../projects/gravity-design-system/src/lib/components/gravity-link/gravity-link.component.html","../../../projects/gravity-design-system/src/lib/services/gravity-dropdown-manager.service.ts","../../../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/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/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/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/models/index.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/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-datepicker-day-decorator.directive.ts","../../../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/bs-datepicker.callbacks.ts","../../../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/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/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/datepicker/bs-datepicker.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/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-badge/gravity-badge.component.ts","../../../projects/gravity-design-system/src/lib/components/gravity-badge/gravity-badge.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/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-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/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-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/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, SvgIconComponent} from \"angular-svg-icon\";\n\n@Component({\n selector: 'gravity-icon',\n templateUrl: './gravity-icon.component.html',\n styleUrls: ['./gravity-icon.component.scss'],\n standalone: true,\n imports: [SvgIconComponent]\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\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 'percent',\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 'url',\n 'user',\n 'wallet',\n 'warning-circle'\n}\n","@if (iconExists) {\n <svg-icon [attr.data-cy]=\"'icon_' + iconName\" [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}\n","import {Component, Input} from '@angular/core';\nimport {GravityIconComponent} from \"../gravity-icon/gravity-icon.component\";\nimport {NgbProgressbar} from '@ng-bootstrap/ng-bootstrap';\n\n@Component({\n selector: 'gravity-button',\n templateUrl: './gravity-button.component.html',\n styleUrls: ['./gravity-button.component.scss'],\n standalone: true,\n imports: [GravityIconComponent, NgbProgressbar]\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 @if (!isLoading) {\n @if (iconName && iconPosition == 'left') {\n <gravity-icon [style.--icon-color]=\"'var(--button-text-color)'\" [size]=\"isNewIcon(iconName) ? null : getSizeClass(size)\"\n [hoverIcon]=\"false\" [iconName]=\"iconName\"\n [iconSize]=\"isNewIcon(iconName) ? getIconSizeClass(size) : null\" class=\"icon-{{iconPosition}}\"></gravity-icon>\n }\n @if (showContent) {\n <span class=\"button-content-wrapper\">\n <ng-content></ng-content>\n </span>\n }\n @if (iconName && iconPosition == 'right') {\n <gravity-icon [style.--icon-color]=\"'var(--button-text-color)'\" [size]=\"isNewIcon(iconName) ? null : getSizeClass(size)\"\n [hoverIcon]=\"false\" [iconName]=\"iconName\"\n [iconSize]=\"isNewIcon(iconName) ? getIconSizeClass(size) : null\" class=\"icon-{{iconPosition}}\"></gravity-icon>\n }\n }\n @if (isLoading) {\n <ngb-progressbar [animated]=\"true\" [striped]=\"true\" [value]=\"100\"></ngb-progressbar>\n }\n</button>\n","import { Pipe, PipeTransform } from '@angular/core';\n\n/**\n * filters an array based on searctext\n */\n@Pipe({ name: 'filterBy', standalone: true })\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 {Component, Input} from '@angular/core';\nimport { GravityIconComponent } from '../gravity-icon/gravity-icon.component';\n\n@Component({\n selector: 'gravity-network-pill',\n templateUrl: './gravity-network-pill.component.html',\n styleUrls: ['./gravity-network-pill.component.scss'],\n standalone: true,\n imports: [GravityIconComponent]\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\tpublic getNetworkIconName(): string {\n\t\tif (typeof this.network?.iso !== 'string') return '';\n\n\t\tconst iso = this.network.iso.toLowerCase();\n\t\treturn this.disabled ? `network-${iso}-disabled` : `network-${iso}`;\n\t}\n\n}\n","<div class=\"gravity-network-pill {{type}}\" [class.disabled]=\"disabled\"\n [attr.data-cy]=\"cypressTag ? 'networkPill_' + cypressTag : null\">\n <div class=\"currency-info\">\n <span class=\"hr-body sm-regular\">{{ network.iso }}</span>\n @if (network?.iso && showNetworkIcon) {\n <gravity-icon [iconSize]=\"'sm-12'\" [isCoin]=\"true\" [iconName]=\"getNetworkIconName()\"/>\n }\n </div>\n</div>","import {Component, EventEmitter, Input, Output} from '@angular/core';\nimport {NgClass} from '@angular/common';\nimport {GravityIconComponent} from '../gravity-icon/gravity-icon.component';\n\n@Component({\n selector: 'gravity-dropdown-label',\n templateUrl: './gravity-dropdown-label.component.html',\n styleUrls: ['./gravity-dropdown-label.component.scss'],\n standalone: true,\n imports: [NgClass, GravityIconComponent]\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\":\n return 'hr-title md-bold';\n case \"md\":\n return 'hr-headline sm-bold';\n case \"lg\":\n return 'hr-headline md-bold';\n }\n }\n\n public onClick(event: MouseEvent): void {\n if (this.stopPropagation) {\n event.stopPropagation();\n }\n if (this.state !== 'inactive') {\n this.onClickLabel.emit();\n }\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 @if (state === 'active') {\n <gravity-icon [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 }\n</div>","import {AfterViewInit, Component, EventEmitter, Input, OnChanges, Output, SimpleChanges} from '@angular/core';\nimport {GravityIconComponent} from '../gravity-icon/gravity-icon.component';\n\n@Component({\n selector: 'gravity-checkbox',\n templateUrl: './gravity-checkbox.component.html',\n styleUrls: ['./gravity-checkbox.component.scss'],\n standalone: true,\n imports: [GravityIconComponent]\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 @if (isCheckboxChecked || isPartial) {\n <gravity-icon [iconName]=\"isPartial ? 'checkbox-dash' : 'check'\" [iconSize]=\"'sm-12'\"></gravity-icon>\n }\n </span>\n <label>\n <ng-content></ng-content>\n </label>\n</div>\n","import {Component, Input} from '@angular/core';\nimport {GravityIconComponent} from '../gravity-icon/gravity-icon.component';\n\n@Component({\n selector: 'gravity-currency',\n templateUrl: './gravity-currency.component.html',\n styleUrls: ['./gravity-currency.component.scss'],\n standalone: true,\n imports: [GravityIconComponent]\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_iso: string, network_iso?: string };\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 @if (currency.currency_iso) {\n <gravity-icon class=\"currency {{showLayers ? 'show-layers' : null}}\"\n [iconName]=\"disabled ? 'coin-'+ currency.currency_iso.toLowerCase() + '-disabled' : 'coin-' + currency.currency_iso.toLowerCase()\"\n [iconSize]=\"'sm-12'\" [isCoin]=\"true\"></gravity-icon>\n }\n @if (currency.currency_iso && showLayers && !disabled) {\n <gravity-icon class=\"bg-2\"\n [iconName]=\"disabled ? 'coin-'+ currency.currency_iso.toLowerCase() + '-disabled' : 'coin-' + currency.currency_iso.toLowerCase()\"\n [iconSize]=\"'sm-12'\"\n [isCoin]=\"true\"></gravity-icon>\n }\n @if (currency.currency_iso && showLayers && !disabled) {\n <gravity-icon class=\"bg-3\"\n [iconName]=\"disabled ? 'coin-'+ currency.currency_iso.toLowerCase() + '-disabled' : 'coin-' + currency.currency_iso.toLowerCase()\"\n [iconSize]=\"'sm-12'\"\n [isCoin]=\"true\"></gravity-icon>\n }\n </div>\n @if (currency?.network_iso && size != 'xs-12') {\n <gravity-icon class=\"network {{showLayers ? 'show-layers' : null}} {{size}}\"\n [iconName]=\"disabled ? 'network-'+ currency.network_iso.toLowerCase() + '-disabled' : 'network-' + currency.network_iso.toLowerCase()\"\n [iconSize]=\"'sm-12'\" [isCoin]=\"true\"></gravity-icon>\n }\n</div>","import {Component, Input} from '@angular/core';\nimport { GravityCurrencyComponent } from '../gravity-currency/gravity-currency.component';\nimport { GravityNetworkPillComponent } from '../gravity-network-pill/gravity-network-pill.component';\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 standalone: true,\n imports: [GravityCurrencyComponent, GravityNetworkPillComponent]\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 @if ( currency.currency_id && type === 'full') {\n <gravity-currency\n [disabled]=\"disabled\" [size]=\"'md-24'\"\n [currency]=\"{currency_iso: currency.currency_iso}\">\n </gravity-currency>\n }\n\n <section class=\"currency-info {{type}}\" [class.disabled]=\"disabled\">\n <div class=\"iso-and-network\">\n <div class=\"currency-iso\">\n @if ( currency.currency_id && type !== 'full') {\n <gravity-currency\n [disabled]=\"disabled\" [size]=\"'sm-16'\"\n [currency]=\"{currency_iso: currency.currency_iso}\">\n </gravity-currency>\n }\n\n <span class=\"hr-body sm-bold\">{{ currency.currency_iso }}</span>\n </div>\n\n @if (type !== 'fiat-short' && (currency?.network_iso && currency?.network_iso)) {\n <gravity-network-pill\n [disabled]=\"disabled\"\n [type]=\"currency?.pill_type || 'primary'\"\n [network]=\"{ iso: currency?.network_iso, id: currency?.network_id }\">\n </gravity-network-pill>\n }\n </div>\n\n @if (!type.startsWith('short')) {\n <span class=\"hr-body sm-regular\">{{ currency?.currency_name }}</span>\n }\n </section>\n</section>\n","import {Component, Input} from '@angular/core';\nimport {RouterLink} from '@angular/router';\nimport {GravityIconComponent} from '../gravity-icon/gravity-icon.component';\n\n@Component({\n selector: 'gravity-link',\n templateUrl: './gravity-link.component.html',\n styleUrls: ['./gravity-link.component.scss'],\n standalone: true,\n imports: [RouterLink, GravityIconComponent]\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 @if (!link || !(link.startsWith('http') || link.startsWith('https'))) {\n <a\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\n @if (link && (link.startsWith('http') || link.startsWith('https'))) {\n <a\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\n @if (iconName) {\n <gravity-icon [style.--icon-color]=\"'var(--link-text-color)'\" [size]=\"'md'\"\n [hoverIcon]=\"false\" [iconName]=\"iconName\"\n [iconSize]=\"iconSize\" class=\"icon-{{iconPosition}}\">\n </gravity-icon>\n }\n</div>","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 {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 {\n Component,\n ElementRef,\n EventEmitter,\n HostListener,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n SimpleChange,\n SimpleChanges,\n ViewChild\n} from '@angular/core';\nimport {GravityNetworkPillComponent} from \"../gravity-network-pill/gravity-network-pill.component\";\nimport {FormsModule} from \"@angular/forms\";\nimport {GravityDropdownLabelComponent} from \"../gravity-dropdown-label/gravity-dropdown-label.component\";\nimport {GravityCheckboxComponent} from \"../gravity-checkbox/gravity-checkbox.component\";\nimport {NgClass} from \"@angular/common\";\nimport {GravityCurrencyDisplayV2Component} from \"../gravity-currency-display-v2/gravity-currency-display-v2.component\";\nimport {GravityCurrencyComponent} from \"../gravity-currency/gravity-currency.component\";\nimport {GravityLinkComponent} from \"../gravity-link/gravity-link.component\";\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 standalone: true,\n imports: [GravityIconComponent, GravityNetworkPillComponent, FormsModule, GravityDropdownLabelComponent, GravityCheckboxComponent, NgClass, GravityCurrencyDisplayV2Component, GravityCurrencyComponent, GravityLinkComponent]\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 public 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 private dropdownManagerSubscription!: Subscription;\n\n constructor(private dropdownService: GravityDropdownManagerService, 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) {\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 ngOnDestroy() {\n if (this.dropdownManagerSubscription) {\n this.dropdownManagerSubscription.unsubscribe();\n }\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.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 public toggleDropdown(): void {\n event.stopPropagation();\n this.networkConfig = null;\n\n if (!this.isDisabled && !this.isReadonly) {\n if (this.dropdownOpened) {\n this.emitSelection();\n this.searchText = '';\n this.closeDropdown();\n } else {\n this.openDropdown();\n this.selectedItems?.forEach(sel => {\n this.items?.forEach(parent => {\n if (parent.children?.includes(sel)) {\n this.openChildrenMap.set(parent, true);\n }\n });\n });\n }\n }\n }\n\n private emitSelection(): void {\n if (this.multiple) {\n if (this.selectedItems?.length > 0) {\n this.selectedItemsResponse.emit(this.selectedItems);\n }\n } else {\n if (this.selectedItems[0]) {\n this.selectedItemsResponse.emit(this.selectedItems[0]);\n }\n }\n }\n\n public 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 this.networkConfig = null;\n\n if (this.multiple) {\n this.selectedItemsResponse.emit(this.selectedItems);\n } else {\n this.selectedItemsResponse.emit(null);\n }\n }\n\n public filterItems(): void {\n const search = this.searchText?.toLowerCase();\n this.openChildrenMap.clear();\n\n if (!search) {\n this.availableOptions = JSON.parse(JSON.stringify(this.items));\n return;\n }\n\n const filterRecursive = (items: any[]): any[] => {\n const result = [];\n\n items.forEach(item => {\n const hasChildren = !!item.children?.length;\n\n const fieldsToSearch: any[] = [];\n if (this.config) {\n fieldsToSearch.push(item[this.isoConfig]);\n fieldsToSearch.push(item[this.nameConfig]);\n\n if (this.config.label) {\n fieldsToSearch.push(item[this.config.label]);\n }\n }\n\n const match = fieldsToSearch.some(field =>\n field?.toString().toLowerCase().includes(search)\n );\n\n let filteredChildren: any[] = [];\n if (hasChildren) {\n filteredChildren = filterRecursive(item.children);\n }\n\n const includeItem = hasChildren ? filteredChildren.length > 0 : match;\n\n if (includeItem) {\n const newItem = {...item};\n if (filteredChildren.length > 0) {\n newItem.children = filteredChildren;\n this.openChildrenMap.set(newItem, true);\n } else {\n delete newItem.children;\n }\n result.push(newItem);\n }\n });\n\n return result;\n };\n\n this.availableOptions = filterRecursive(this.items);\n }\n\n @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 public openDropdown(): void {\n this.dropdownOpened = true;\n this.dropdownService.notifyDropdownOpened(this);\n this.dropdownStateChange.emit(this.dropdownOpened);\n\n setTimeout(() => {\n this.scrollToSelected();\n }, 50);\n }\n\n public closeDropdown(): void {\n this.searchText = '';\n this.dropdownOpened = false;\n this.availableOptions = this.items;\n this.dropdownStateChange.emit(this.dropdownOpened);\n }\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 public onSearchTextChange(value: string): void {\n this.searchText = value;\n }\n}\n","@if (inputType === 'field') {\n @if (label) {\n <label class=\"hr-label sm-bold {{getStatus()}}\">\n {{ label }} @if (required || hasError) {\n <span>*</span>\n }\n </label>\n}\n}\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 @if (inputType === 'field') {\n @if ((iconLeft && !dropdownOpened) || (iconLeft && !items)) {\n <gravity-icon class=\"left\" [iconName]=\"iconLeft\" [iconSize]=\"isIconLeftNew() ? 'md-16' : null\"></gravity-icon>\n }\n @if ((dropdownOpened && items)) {\n <gravity-icon class=\"search-icon\" [iconName]=\"'search'\" [iconSize]=\"'sm-12'\"></gravity-icon>\n }\n @if (!dropdownOpened && networkConfig) {\n <div 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 @if (!networkConfig || dropdownOpened) {\n <input 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 @if (!isReadonly && searchText.length == 0) {\n <gravity-icon class=\"right\" [iconName]=\"dropdownOpened ? 'arrow-up': 'arrow-down'\"\n [iconSize]=\"'md-16'\"></gravity-icon>\n }\n @if (dropdownOpened && searchText.length > 0) {\n <gravity-icon class=\"right\" [iconName]=\"'unsuccess'\" (click)=\"clearSearch()\"\n [iconSize]=\"'md-16'\"></gravity-icon>\n }\n }\n\n @if (inputType === 'label') {\n <gravity-dropdown-label (onClickLabel)=\"toggleDropdown()\" [label]=\"getLabelText()\"\n [size]=\"labelSize\" [isOpen]=\"dropdownOpened\">\n </gravity-dropdown-label>\n }\n\n @if (items && dropdownOpened) {\n <div class=\"dropdown-panel {{getStatus()}}\" (click)=\"$event.stopPropagation()\"\n [attr.data-cy]=\"'dropdown_panel'\">\n @if (inputType === 'label') {\n <div class=\"search-input\">\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\" (ngModelChange)=\"onSearchTextChange($event)\"\n placeholder=\"{{currentLang == 'es' ? 'Buscar' : 'Search input'}}\">\n @if (searchText?.length > 0) {\n <gravity-icon class=\"pointer reset-icon\" (click)=\"searchText = ''; filterItems()\" [iconName]=\"'unsuccess'\"\n [iconSize]=\"'sm-12'\"></gravity-icon>\n }\n </div>\n }\n @if (multiple && availableOptions.length != 0) {\n <div class=\"select-all\">\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\" [class.has-overflow]=\"availableOptions.length > 5\">\n @for (item of availableOptions; track item) {\n <div class=\"item-container\"\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 @if (multiple) {\n <gravity-checkbox [ngClass]=\"getSpacingClass(size)\"\n [isPartial]=\"isPartiallySelected(item)\"\n [checked]=\"checkIfSelected(item)\">\n </gravity-checkbox>\n }\n @if (isCurrency) {\n <gravity-currency-display-v2\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 @if (!isCurrency) {\n <div [ngClass]=\"getSpacingClass(size)\">{{ getDisplayValue(item, config) }}</div>\n }\n @if (item.children?.length) {\n <gravity-icon style=\"margin-left: auto\" (click)=\"toggleChildren(item, $event)\"\n [iconName]=\"isChildrenOpen(item) ? 'arrow-up' : 'arrow-down'\"\n [iconSize]=\"'md-16'\"></gravity-icon>\n }\n </div>\n @if (item.children?.length && isChildrenOpen(item)) {\n <div class=\"item-children\">\n @for (child of item.children; track child) {\n <div class=\"hr-label item {{size}}-regular pointer\" [ngClass]=\"{'multiple' : multiple}\"\n [class.selected]=\"checkIfSelected(child)\"\n (click)=\"selectItem(child)\">\n @if (multiple) {\n <gravity-checkbox [ngClass]=\"getMultilevelSpacingClass(size)\"\n [checked]=\"checkIfSelected(child)\"></gravity-checkbox>\n }\n @if (isCurrency) {\n <gravity-currency [ngClass]=\"getSpacingClass(size)\"\n [size]=\"getCurrencyIconSize(size)\"\n [currency]=\"{currency_iso: child.currency_iso}\"></gravity-currency>\n }\n <div [ngClass]=\"getSpacingClass(size)\">{{ getDisplayValue(child, config) }}</div>\n @if (isCurrency) {\n <gravity-network-pill [type]=\"checkIfSelected(child) ? 'secondary' : 'primary'\"\n [network]=\"{ iso: child.network?.code, id: child.network?.id }\"></gravity-network-pill>\n }\n </div>\n }\n </div>\n }\n </div>\n }\n @if (availableOptions.length === 0) {\n <div class=\"item-container\">\n <div class=\"hr-label item {{size}}-bold no-results\">\n {{ currentLang == 'es' ? 'Sin resultados encontrados' : 'No results found.' }}\n </div>\n </div>\n }\n </div>\n </div>\n @if (selectedItems.length > 0 && availableOptions.length !== 0) {\n <div class=\"dropdown-footer\"\n [class.not-clearable]=\"!clearable\">\n @if (clearable) {\n <gravity-link\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 @if (availableOptions.length != 0) {\n <gravity-link\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 }\n </div>\n }\n @if (availableOptions.length === 0) {\n <div class=\"dropdown-footer no-results\" [class.not-clearable]=\"!clearable\">\n @if (clearable) {\n <gravity-link\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 }\n </div>\n }\n </div>\n }\n\n @if (!items && dropdownOpened) {\n <section class=\"external-content\" (click)=\"$event.stopPropagation()\">\n <ng-content></ng-content>\n </section>\n }\n</div>\n\n@if (inputType === 'field') {\n @if (supportText) {\n <p class=\"hr-label sm-regular supporting-text {{getStatus()}} {{size}}\">\n {{ supportText }}\n </p>\n }\n}","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\";\nimport {GravityCurrencyDisplayV2Component} from \"../gravity-currency-display-v2/gravity-currency-display-v2.component\";\nimport {GravityIconComponent} from \"../gravity-icon/gravity-icon.component\";\nimport {FormsModule} from \"@angular/forms\";\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 standalone: true,\n providers: [FilterByPipe],\n imports: [GravityCurrencyDisplayV2Component, GravityIconComponent, FormsModule]\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' | 'full' = '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\n public onSearchTextChange(value: string): void {\n this.searchText = value;\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 @if (label && selectedItems.length > 0) {\n <span class=\"hr-label sm-bold\">{{label}}</span>\n }\n </div>\n\n @if (selectedItems.length == 0) {\n <div class=\"placeholder hr-label md-regular\">{{ placeholder }}</div>\n }\n @if (selectedItems.length > 0) {\n <div 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 }\n </div>\n\n @if (!isReadonly) {\n <gravity-icon class=\"right\" [iconName]=\"dropdownOpened ? 'arrow-up': 'arrow-down'\" [iconSize]=\"'sm-12'\"/>\n }\n\n @if (dropdownOpened) {\n <div class=\"dropdown-panel\" (click)=\"$event.stopPropagation()\"\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\" (ngModelChange)=\"onSearchTextChange($event)\" placeholder=\"{{currentLang == 'es' ? 'Buscar moneda' : 'Search currency'}}\">\n @if (searchText?.length > 0) {\n <gravity-icon class=\"pointer reset-icon\" (click)=\"searchText = ''; filterItems()\" [iconName]=\"'unsuccess'\"\n [iconSize]=\"'sm-12'\">\n </gravity-icon>\n }\n </div>\n <div class=\"items-container\" #containerRef>\n <div class=\"items\">\n @for (item of availableOptions; track item) {\n <div class=\"item-container\" [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 <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 @if (!item.sub_items) {\n <span class=\"hr-body sm-regular gravity-margin-right-sm currency-info\">\n {{ item?.balance_amount }} {{ item?.balance_currency }}\n </span>\n }\n @if (item.sub_items?.length > 0 && item?.disabled !== true) {\n <gravity-icon class=\"pointer expand-icon\"\n [iconSize]=\"'sm-12'\" [iconName]=\"item.is_expanded ? 'arrow-up' : 'arrow-down'\">\n </gravity-icon>\n }\n </div>\n @if (item.is_expanded && item.sub_items) {\n @for (subItem of item.sub_items; track subItem) {\n <div class=\"hr-label item {{size}}-regular pointer\"\n [class.selected]=\"checkIfSelected(subItem)\" (click)=\"selectItem(subItem)\" [class.disabled]=\"subItem?.disabled\"\n (mouseenter)=\"subItem.isHovered = true\" (mouseleave)=\"subItem.isHovered = false\">\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 <span class=\"hr-body sm-regular gravity-margin-right-sm currency-info\">\n {{ subItem.balance_amount }} {{ subItem.balance_currency }}\n </span>\n </div>\n }\n }\n </div>\n }\n @if (availableOptions.length === 0) {\n <div class=\"hr-label item {{size}}-bold no-results\">\n {{ currentLang == 'es' ? 'Sin resultados' : 'No results' }}\n </div>\n }\n </div>\n </div>\n </div>\n }\n</div>\n\n@if (selectedItems.length > 0) {\n <div class=\"wallet-balance-info {{width}}-width\">\n <p class=\"hr-label sm-regular wallet-balance-text\">{{ currentLang == 'es' ? 'Saldo de cartera' : 'Wallet balance' }}\n : {{ selectedItem.balance_amount }} {{ selectedItem.balance_currency }} @if (fiatRate) {\n <span> | ≈ {{fiatRate.amount}} {{fiatRate.iso}} </span>\n }</p>\n </div>\n}\n\n","import {GravityIconComponent} from \"../gravity-icon/gravity-icon.component\";\nimport {\n Component,\n ElementRef,\n EventEmitter,\n Input,\n OnChanges,\n OnInit,\n Output,\n SimpleChanges,\n ViewChild\n} from '@angular/core';\nimport {NgTemplateOutlet, NgClass} from \"@angular/common\";\n\n@Component({\n selector: 'gravity-text-field',\n templateUrl: './gravity-text-field.component.html',\n styleUrls: ['./gravity-text-field.component.scss'],\n standalone: true,\n imports: [NgTemplateOutlet, GravityIconComponent, NgClass]\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 @ViewChild('inputElement', {static: false}) public inputElement!: ElementRef<HTMLInputElement>;\n @ViewChild('textAreaElement', {static: false}) public textAreaElement!: ElementRef<HTMLInputElement>;\n\n // 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 @Input() public labelExtraText: string;\n @Input() public characterCounter: boolean = false;\n @Input() public passwordRequirements: { key: string; label: string; isValid: boolean; }[] = [];\n @Input() public supportTextIcon: string = '';\n\n public focusInput: boolean = false;\n public hasUserTyped: boolean = false;\n public isPasswordField: boolean = false;\n public characterLimit: boolean = false;\n public allPasswordRequirementsValid: 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 public focus() {\n this.inputElement.nativeElement.focus();\n }\n\n public isFocused(): boolean {\n return document.activeElement === this.inputElement.nativeElement;\n }\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 this.hasUserTyped = true;\n\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 if (this.inputValue.length == this.validations?.maxLength || this.inputValue.length == 200) {\n this.supportText = this.currentLang == 'en' ? 'Character limit reached' : 'Límite de caracteres alcanzado';\n this.characterLimit = true;\n } else if (this.characterLimit) {\n this.supportText = '';\n this.characterLimit = false;\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 get hasInvalidPasswordRequirements(): boolean {\n if (this.passwordRequirements.length > 0) {\n this.isPasswordField = true;\n const hasInvalid = this.passwordRequirements?.some(r => !r.isValid);\n\n if (this.hasUserTyped) {\n //Requirements invalid\n if (hasInvalid) {\n if (!this.focusInput || this.allPasswordRequirementsValid) {\n this.customState = 'typed-error';\n this.supportText = this.currentLang === 'en' ? 'Must meet password requirements' : 'Debe cumplir con los requisitos de contraseña';\n this.allPasswordRequirementsValid = false;\n }\n }\n //Requirements valid\n else {\n this.customState = 'typed-positive';\n this.supportText = this.currentLang === 'en' ? 'Requirements applied' : 'Requisitos aplicados';\n this.allPasswordRequirementsValid = true;\n }\n }\n\n return hasInvalid;\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 if (this.inputContentType == 'date') {\n const allowedKeys = [\n 'Backspace', 'Delete', 'Tab', 'Escape', 'Enter',\n 'ArrowLeft', 'ArrowRight', 'ArrowUp', 'ArrowDown'\n ];\n\n if (allowedKeys.includes($event.key) || $event.metaKey || $event.ctrlKey) {\n return;\n }\n\n if (/\\D/.test($event.key) && $event.key !== '/') {\n $event.preventDefault();\n }\n }\n }\n\n public formatDateInput(event: any): void {\n const el = event.target as HTMLInputElement;\n let value = el.value;\n let formatted = '';\n\n let cursorPosition = el.selectionStart || 0;\n const isDeleting = event.inputType === 'deleteContentBackward' ||\n event.inputType === 'deleteContentForward';\n\n if ((value.length === 3 && value[2] === '/') ||\n (value.length === 6 && value[5] === '/')) {\n formatted = value;\n } else if (/\\D/.test(value[value.length - 1])) {\n formatted = value.slice(0, -1);\n cursorPosition = Math.max(0, cursorPosition - 1);\n\n if (formatted.length === 1 || formatted.length === 4) {\n cursorPosition++;\n }\n } else {\n const numbers = value.replace(/\\//g, '');\n\n let day = numbers.slice(0, 2);\n let month = numbers.slice(2, 4);\n let year = numbers.slice(4, 8);\n\n if (day.length > 0) formatted += day;\n if (day.length === 2 && month.length > 0) formatted += '/';\n if (month.length > 0) formatted += month;\n if (month.length === 2 && year.length > 0) formatted += '/';\n if (year.length > 0) formatted += year;\n\n const currentLength = value.length;\n const newLength = formatted.length;\n\n if (newLength > currentLength && !isDeleting) {\n cursorPosition++\n }\n }\n\n el.value = formatted;\n this.inputValue = formatted;\n el.setSelectionRange(cursorPosition, cursorPosition);\n\n this.changeInputValue();\n }\n}\n","@if (label) {\n <label class=\"hr-label sm-bold {{getTextFieldStatus()}}\" [class.custom-label-size]=\"size == 'sm'\">\n {{ label }}\n @if (required || getTextFieldStatus() == 'typed-error') {\n <span>* </span>\n }\n @if (labelExtraText) {\n <span [class.extra-text]=\"labelExtraText\">{{ labelExtraText }}</span>\n }\n </label>\n}\n<div class=\"gravity-input-field {{textFieldType}} {{size}} {{width}}-width {{getTextFieldStatus()}}\">\n @if (iconLeft) {\n <ng-container [ngTemplateOutlet]=\"icons\" [ngTemplateOutletContext]=\"{iconPosition: 'left'}\"></ng-container>\n }\n <span class=\"{{getTextFieldInputFontSize()}} prefix\">{{ prefix }}</span>\n @if (textFieldType == 'input') {\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 (blur)=\"focusInput = false\"\n (change)=\"changeInputValue()\"\n (focus)=\"focusInput = true\"\n (keydown)=\" onKeyDownEvent($event)\"\n (keyup)=\"inputContentType === 'date' ?\n formatDateInput($event) : changeInputValue()\"\n class=\"{{getTextFieldInputFontSize()}}\"\n #inputElement\n >\n }\n\n @if (textFieldType == 'textarea') {\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 (blur)=\"focusInput = false\"\n (change)=\"changeInputValue()\"\n (focus)=\"focusInput = true\"\n (keydown)=\"onKeyDownEvent($event)\"\n (keyup)=\"changeInputValue()\"\n class=\"{{getTextFieldInputFontSize()}}\"\n rows=\"1\"\n #textAreaElement\n ></textarea>\n }\n @if (iconRight) {\n <ng-container [ngTemplateOutlet]=\"icons\" [ngTemplateOutletContext]=\"{iconPosition: 'right'}\"></ng-container>\n }\n</div>\n<div class=\"support-text-container {{size}} {{width}}-width\">\n @if (supportText) {\n <p class=\"hr-label sm-regular supporting-text {{getTextFieldStatus()}} {{size}}\"\n [class.custom-label-size]=\"size == 'sm'\">\n @if (getTextFieldStatus() == 'typed-error' || characterLimit) {\n <gravity-icon [class.negative]=\"getTextFieldStatus() == 'typed-error'\" [iconName]=\"'question-circle'\"\n [iconSize]=\"'md-16'\"></gravity-icon>\n }\n @if (!hasInvalidPasswordRequirements && isPasswordField) {\n <gravity-icon class=\"positive\" [iconName]=\"'check'\"\n [iconSize]=\"'md-16'\"></gravity-icon>\n }\n @if (supportTextIcon) {\n <gravity-icon [ngClass]=\"{negative: getTextFieldStatus() === 'typed-error',positive: getTextFieldStatus() === 'typed-positive'}\"\n [iconName]=\"supportTextIcon\" [iconSize]=\"'md-16'\"></gravity-icon>\n }\n {{ supportText }}\n </p>\n }\n @if (characterCounter) {\n <p class=\"hr-label sm-regular character-counter {{getTextFieldStatus()}}\"\n >{{ inputValue.length }}/200</p>\n }\n</div>\n\n\n@if (passwordRequirements.length> 0 && hasInvalidPasswordRequirements) {\n <div class=\"password-requirements\">\n <p class=\"hr-label sm-bold\">{{ currentLang == 'en' ? 'Password requirements:' : 'Requisitos de contraseña:' }}</p>\n <ul class=\"requirements\">\n @for (requirement of passwordRequirements; track requirement) {\n <li class=\"hr-label sm-regular\"\n [ngClass]=\"{valid: hasUserTyped && requirement.isValid, invalid: hasUserTyped && !focusInput && !requirement.isValid}\">\n {{ requirement.label }}\n </li>\n }\n </ul>\n </div>\n}\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 { 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 standalone: true\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 private boundResizeHandler!: () => void;\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 @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 @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 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 force: 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\n this.showTimeoutId = window.setTimeout(() => {\n this.showTooltipElem();\n }, 10);\n\n }, this.getShowDelay());\n }\n\n destroyTooltip(options: { fast: boolean, force?: boolean } = {\n fast: false,\n force: false\n }): void {\n if (this.persistent && !options.force) {\n return;\n }\n\n this.removeResizeListener();\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 const domElem = (this.componentRef.hostView as EmbeddedViewRef<any>).rootNodes[0] as HTMLElement;\n if (domElem && domElem.parentNode) {\n domElem.parentNode.removeChild(domElem);\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.boundResizeHandler = () => this.onResize();\n window.addEventListener('resize', this.boundResizeHandler);\n\n this.componentSubscribe = (<AdComponent>this.componentRef.instance).events.subscribe((event: any) => {\n this.handleEvents(event);\n });\n }\n\n private onResize(): void {\n if (!this.componentRef || this.isTooltipDestroyed) {\n return;\n }\n\n this.getElementPosition();\n\n (<AdComponent>this.componentRef.instance).data = {\n ...(<AdComponent>this.componentRef.instance).data,\n elementPosition: this.tooltipPosition\n };\n\n (<AdComponent>this.componentRef.instance as any).setPosition();\n }\n\n private removeResizeListener(): void {\n if (this.boundResizeHandler) {\n window.removeEventListener('resize', this.boundResizeHandler);\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 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 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, force: true });\n }\n}","import {ModuleWithProviders, NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {GravityTooltipDirective} from './gravity-tooltip.directive';\nimport {TooltipOptions} from './options.interface';\nimport {TooltipOptionsService} from './options.service';\n\n@NgModule({\n imports: [\n CommonModule,\n GravityTooltipDirective\n ],\n exports: [\n GravityTooltipDirective\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 {Component, ElementRef, EventEmitter, HostBinding, HostListener, Input, OnInit, Renderer2} from '@angular/core';\nimport {NgTemplateOutlet} from '@angular/common';\nimport {GravityTooltipModule} from './gravity-tooltip.module';\n\n@Component({\n selector: 'tooltip',\n templateUrl: './gravity-tooltip.component.html',\n host: {'class': 'tooltip'},\n styleUrls: ['./gravity-tooltip.component.sass'],\n standalone: true,\n imports: [NgTemplateOutlet, GravityTooltipModule]\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 @HostBinding('class.tooltip-persistent') hostClassPersistent!: boolean;\n\n @HostListener('transitionend')\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 const base = Number(this.data.options.offset);\n\n if (this.options['persistent']) {\n return base + 18;\n }\n\n return base;\n }\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 this.hostClassPersistent = !!this.options['persistent'];\n }\n\n closeTooltip() {\n this.show = false;\n this.events.emit({type: 'hide', position: this.data.elementPosition});\n }\n}\n","@if (isThemeLight) {\n <div class=\"tooltip-arrow\"></div>\n}\n\n<!--Si el contentType es template, se usa el ngTemplate sino usa el htmlOrStringTemplate-->\n@if (options['contentType'] === 'template') {\n <div>\n <ng-container *ngTemplateOutlet=\"value\"></ng-container>\n </div>\n} @else {\n <div [innerHTML]=\"value\"></div>\n}\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, TimeUnit} from 'ngx-bootstrap/chronos';\nimport {createMatrix} from '../utils/matrix-utils';\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, TimeUnit} from 'ngx-bootstrap/chronos';\nimport {createMatrix} from '../utils/matrix-utils';\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 { 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 { 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 {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n OnInit,\n Output,\n ChangeDetectorRef\n} from '@angular/core';\nimport {BsDatepickerViewMode, BsNavigationDirection, NavigationViewModel} from '../../models';\nimport {HeaderTypeService} from \"../../services/header-type.service\";\nimport {Subscription} from \"rxjs\";\nimport {GravityIconComponent} from '../../../../gravity-icon/gravity-icon.component';\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 standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [GravityIconComponent]\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\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","@if (calendar) {\n @if (type == 'days') {\n @if (!isMobile) {\n <div class=\"previous gravity-icon-button\"\n (click)=\"navTo(true, calendar.disableLeftArrow || (!showNavigationArrows && calendarIndex == 1))\"\n [class.disabled]=\"calendar.disableLeftArrow || (!showNavigationArrows && calendarIndex == 1)\">\n @if (showNavigationArrows || (!showNavigationArrows && calendarIndex == 0)) {\n <gravity-icon [iconName]=\"'arrow-left'\" [iconSize]=\"'sm-12'\"></gravity-icon>\n }\n </div>\n }\n @if (calendar?.monthTitle) {\n <div class=\"current hr-title month sm-bold\" [class.disabled]=\"isDisabled\" (click)=\"view('month')\">\n {{ calendar.monthTitle }}\n <gravity-icon [iconName]=\"'arrow-down'\" [iconSize]=\"'sm-12'\"></gravity-icon>\n </div>\n }\n @if (calendar?.monthTitle) {\n <div class=\"current hr-title sm-bold year\" [class.disabled]=\"isDisabled\" (click)=\"view('year')\">\n {{ calendar.yearTitle }}\n <gravity-icon [iconName]=\"'arrow-down'\" [iconSize]=\"'sm-12'\"></gravity-icon>\n </div>\n }\n @if (!isMobile) {\n <div class=\"next gravity-icon-button\"\n (click)=\"navTo(false, calendar.disableRightArrow || (!showNavigationArrows && calendarIndex == 0))\"\n [class.disabled]=\"calendar.disableRightArrow || (!showNavigationArrows && calendarIndex == 0)\">\n @if (showNavigationArrows || (!showNavigationArrows && calendarIndex == 1)) {\n <gravity-icon [iconName]=\"'arrow-right'\" [iconSize]=\"'sm-12'\"></gravity-icon>\n }\n </div>\n }\n }\n @if (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 @if (calendar?.yearTitle) {\n <div class=\"current no-action hr-title sm-bold year\" [class.disabled]=\"isDisabled\">\n {{ 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 }\n @if (type == 'months' && headerType == 'integrate' && isMobile === false) {\n @if (calendar?.yearTitle) {\n <div class=\"current hr-title sm-bold year\" [class.disabled]=\"isDisabled\" (click)=\"view('year')\">\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 <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 }\n @if (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 @if (calendar?.yearTitle) {\n <div class=\"current no-action hr-title sm-bold year\" [class.disabled]=\"isDisabled\">\n {{ 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 }\n @if (type == 'years' && headerType == 'integrate' && isMobile === false) {\n @if (calendar?.yearTitle) {\n <div class=\"current no-action hr-title sm-bold year\" [class.disabled]=\"isDisabled\">\n {{ calendar.yearTitle }}\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 <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 }\n}\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 {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\";\nimport {\n BsDatepickerNavigationViewComponent\n} from '../bs-datepicker-navigation-view/bs-datepicker-navigation-view.component';\nimport {BsDatepickerDayDecoratorComponent} from './bs-datepicker-day-decorator.directive';\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 standalone: true,\n imports: [BsDatepickerNavigationViewComponent, BsDatepickerDayDecoratorComponent]\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 @for (weekday of calendar.weekdays; track weekday) {\n <article aria-label=\"weekday\" class=\"hr-body {{size}}-regular\">\n {{ weekday }}\n </article>\n }\n </div>\n <hr>\n @for (week of calendar.weeks; track week) {\n <div class=\"week\">\n @for (day of week.days; track day) {\n @if (!isiOS) {\n <article bsDatepickerDayDecorator class=\"hr-body {{size}}-regular\" (click)=\"selectDay(day)\" [day]=\"day\"\n (mouseenter)=\"hoverDay(day, true)\"\n (mouseleave)=\"hoverDay(day, false)\"></article>\n }\n @if (isiOS) {\n <article bsDatepickerDayDecorator class=\"hr-body {{size}}-regular\" (click)=\"selectDay(day)\" [day]=\"day\"></article>\n }\n }\n </div>\n }\n </div>\n </div>\n\n <div class=\"\"></div>\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({ name: 'dateFormating' , standalone: true})\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 {\n BsDatepickerViewMode,\n BsNavigationDirection,\n BsNavigationEvent,\n CalendarCellViewModel,\n CellHoverEvent,\n MonthsCalendarViewModel\n} from '../../models';\nimport {HeaderTypeService} from \"../../services/header-type.service\";\nimport {\n BsDatepickerNavigationViewComponent\n} from '../bs-datepicker-navigation-view/bs-datepicker-navigation-view.component';\nimport {DateAbbreviationPipe} from '../../utils/date-abbreviation.pipe';\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 standalone: true,\n imports: [BsDatepickerNavigationViewComponent, DateAbbreviationPipe]\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\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 @for (row of calendar?.months; track row) {\n @for (month of row; track month) {\n <div class=\"months\">\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 (click)=\"viewMonth(month)\"\n (mouseenter)=\"hoverMonth(month, true)\" (mouseleave)=\"hoverMonth(month, false)\">\n {{ month.label | dateFormating: calendarLang : true }}\n </article>\n </div>\n }\n }\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\";\nimport {\n BsDatepickerNavigationViewComponent\n} from '../bs-datepicker-navigation-view/bs-datepicker-navigation-view.component';\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 standalone: true,\n imports: [BsDatepickerNavigationViewComponent]\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\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 @for (row of calendar?.years; track row) {\n <div class=\"years\">\n @for (year of row; track year) {\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 (click)=\"viewYear(year)\"\n (mouseenter)=\"hoverYear(year, true)\" (mouseleave)=\"hoverYear(year, false)\">\n {{ year.label }}\n </article>\n }\n </div>\n }\n </div>\n </div>\n","import {Injectable} from \"@angular/core\";\n\n@Injectable({\n providedIn: 'root'\n})\nexport class BsDatepickerCallbacks {\n hide?: () => void;\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 {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\";\nimport {AsyncPipe, DatePipe} from '@angular/common';\nimport {GravityIconComponent} from '../../../gravity-icon/gravity-icon.component';\nimport {BsDaysCalendarViewComponent} from './bs-days-calendar-view/bs-days-calendar-view.component';\nimport {BsMonthCalendarViewComponent} from './bs-months-calendar-view/bs-months-calendar-view.component';\nimport {BsYearsCalendarViewComponent} from './bs-years-calendar-view/bs-years-calendar-view.component';\nimport {GravityLinkComponent} from '../../../gravity-link/gravity-link.component';\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 standalone: true,\n imports: [GravityIconComponent, BsDaysCalendarViewComponent, BsMonthCalendarViewComponent, BsYearsCalendarViewComponent, GravityLinkComponent, AsyncPipe, DatePipe]\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","@if (viewMode | async){\n <div class=\"gt-calendar {{calendarSize}} {{calendarSpacing}} {{viewMode | async}}\" [class.is-mobile]=\"_config.isMobile\"\n [@datepickerAnimation]=\"animationState\" (@datepickerAnimation.done)=\"positionServiceEnable()\">\n\n @if ((isRangePicker || _config.isMobile) && headerTypeService.getCalendarType() === 'days') {\n <div class=\"gt-calendar-topbar-indicator\">\n @if (isRangePicker) {\n <p class=\"hr-title\" [class.sm-regular]=\"chosenRange?.length > 0\"\n [class.sm-bold]=\"chosenRange?.length == 0\">\n @if (chosenRange?.length == 0) {\n Start date\n }\n @if (chosenRange?.length > 0) {\n {{ chosenRange[0] | date : 'MMM d, y' }}\n }\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 @if (chosenRange?.length < 2) {\n End date\n }\n @if (chosenRange?.length > 1) {\n {{ chosenRange[1] | date : 'MMM d, y' }}\n }\n </p>\n }\n @if (!isRangePicker) {\n <p class=\"hr-title sm-bold\">\n @if (!_config.value) {\n Select date\n }\n @if (_config.value) {\n {{ _config.value.toString() | date : 'MMM d, y' }}\n }\n </p>\n }\n </div>\n\n <hr class=\"gt-calendar-topbar-line\">\n }\n\n <div class=\"gt-calendars\" role=\"application\">\n @switch (viewMode | async) {\n <!--days calendar-->\n @case ('day') {\n @for (calendar of (daysCalendar$ | async); track $index) {\n <bs-days-calendar-view [calendar]=\"calendar\"\n [calendarIndex]=\"$index\"\n [isDisabled]=\"isDisabled\"\n [options]=\"options$ | async\"\n [showNavigationArrows]=\"showNavigationArrows\"\n [size]=\"_config.isMobile ? 'md' : calendarSize\"\n\n (onHover)=\"dayHoverHandler($event)\"\n (onNavigate)=\"navigateTo($event)\"\n (onSelect)=\"daySelectHandler($event)\"\n (onViewMode)=\"setViewMode($event)\"></bs-days-calendar-view>\n }\n }\n\n <!--months calendar-->\n @case ('month') {\n @if (_config.isMobile) {\n @for (calendar of (monthsCalendar | async); track $index) {\n @if ($index === 0) {\n <bs-month-calendar-view [calendar]=\"calendar\"\n [calendarIndex]=\"$index\"\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 }\n }\n } @else {\n @for (calendar of (monthsCalendar | async); track $index) {\n <bs-month-calendar-view [calendar]=\"calendar\"\n [calendarIndex]=\"$index\"\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 }\n }\n }\n\n <!--years calendar-->\n @case ('year') {\n @if (_config.isMobile) {\n @for (calendar of (yearsCalendar | async); track $index) {\n @if ($index === 0) {\n <bs-years-calendar-view [calendar]=\"calendar\"\n [calendarIndex]=\"$index\"\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 }\n }\n } @else {\n @for (calendar of (yearsCalendar | async); track $index) {\n <bs-years-calendar-view [calendar]=\"calendar\"\n [calendarIndex]=\"$index\"\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 }\n }\n }\n }\n </div>\n\n @if ((viewMode | async) == 'day') {\n <div class=\"gt-calendar-footer\"\n [class.bs-datepicker-multiple]=\"isRangePicker && _config.displayMonths > 1\"\n [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 }\n </div>\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\";\nimport {AsyncPipe, DatePipe} from '@angular/common';\nimport {GravityIconComponent} from '../../../gravity-icon/gravity-icon.component';\nimport {BsDaysCalendarViewComponent} from './bs-days-calendar-view/bs-days-calendar-view.component';\nimport {BsMonthCalendarViewComponent} from './bs-months-calendar-view/bs-months-calendar-view.component';\nimport {BsYearsCalendarViewComponent} from './bs-years-calendar-view/bs-years-calendar-view.component';\nimport {GravityLinkComponent} from '../../../gravity-link/gravity-link.component';\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 standalone: true,\n imports: [GravityIconComponent, BsDaysCalendarViewComponent, BsMonthCalendarViewComponent, BsYearsCalendarViewComponent, GravityLinkComponent, AsyncPipe, DatePipe]\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 standalone: true,\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\";\nimport {AsyncPipe, DatePipe} from '@angular/common';\nimport {GravityIconComponent} from '../../../gravity-icon/gravity-icon.component';\nimport {BsDaysCalendarViewComponent} from './bs-days-calendar-view/bs-days-calendar-view.component';\nimport {BsMonthCalendarViewComponent} from './bs-months-calendar-view/bs-months-calendar-view.component';\nimport {BsYearsCalendarViewComponent} from './bs-years-calendar-view/bs-years-calendar-view.component';\nimport {GravityLinkComponent} from '../../../gravity-link/gravity-link.component';\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 standalone: true,\n imports: [GravityIconComponent, BsDaysCalendarViewComponent, BsMonthCalendarViewComponent, BsYearsCalendarViewComponent, GravityLinkComponent, AsyncPipe, DatePipe]\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 {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\";\nimport {AsyncPipe, DatePipe} from '@angular/common';\nimport {GravityIconComponent} from '../../../gravity-icon/gravity-icon.component';\nimport {BsDaysCalendarViewComponent} from './bs-days-calendar-view/bs-days-calendar-view.component';\nimport {BsMonthCalendarViewComponent} from './bs-months-calendar-view/bs-months-calendar-view.component';\nimport {BsYearsCalendarViewComponent} from './bs-years-calendar-view/bs-years-calendar-view.component';\nimport {GravityLinkComponent} from '../../../gravity-link/gravity-link.component';\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 standalone: true,\n imports: [GravityIconComponent, BsDaysCalendarViewComponent, BsMonthCalendarViewComponent, BsYearsCalendarViewComponent, GravityLinkComponent, AsyncPipe, DatePipe]\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 standalone: true,\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 {\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 standalone: true,\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 {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 standalone: true,\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, 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\";\nimport {BsDatepickerInlineDirective} from './datepicker/bs-datepicker-inline.component';\nimport {GravityIconComponent} from '../gravity-icon/gravity-icon.component';\nimport {BsDaterangepickerInlineDirective} from './datepicker/bs-daterangepicker-inline.component';\nimport {FormsModule} from '@angular/forms';\nimport {BsDatepickerDirective} from './datepicker/bs-datepicker.component';\nimport {GravityDropdownLabelComponent} from '../gravity-dropdown-label/gravity-dropdown-label.component';\nimport {BsDaterangepickerDirective} from './datepicker/bs-daterangepicker.component';\nimport {DateAbbreviationPipe} from './datepicker/utils/date-abbreviation.pipe';\n\n@Component({\n selector: 'gravity-calendar-v2',\n templateUrl: './gravity-calendar-v2.component.html',\n styleUrls: ['./gravity-calendar-v2.component.scss'],\n standalone: true,\n imports: [BsDatepickerInlineDirective, GravityIconComponent, BsDaterangepickerInlineDirective, FormsModule, BsDatepickerDirective, GravityDropdownLabelComponent, BsDaterangepickerDirective, DateAbbreviationPipe]\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')\n 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 public onInputLabelChange(value: any): void {\n this.inputLabel = value;\n }\n}\n\n","@if (label) {\n <label class=\"hr-label sm-bold {{getStatus()}}\">\n {{ label }} @if (required || hasError) {\n <span>*</span>\n }\n</label>\n}\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 @if (!displayRangePicker) {\n <div class=\"calendar-container\"\n gravityDatePickerInline\n [bsConfig]=\"calendarConfiguration\"\n [isDisabled]=\"isDisabled || isReadonly\"\n [isMobile]=\"isMobile\"\n [maxDate]=\"maxDate\"\n [minDate]=\"minDate\"\n [minMode]=\"calendarType\"\n [(bsValue)]=\"selectedDate\"\n (bsValueChange)=\"updateSelectedDate($event)\"\n (onApplyEmit)=\"closeMobileCalendar()\"\n >\n @if (headerTypeService.getCalendarType() === 'days') {\n <div class=\"calendar-close-icon\">\n <gravity-icon class=\"pointer\" (click)=\"closeMobileCalendar()\" [iconName]=\"'unsuccess'\" [iconSize]=\"'sm-12'\"></gravity-icon>\n </div>\n }\n </div>\n }\n\n @if (displayRangePicker) {\n <div class=\"calendar-container\"\n gravityRangePickerInline\n [bsConfig]=\"calendarConfiguration\"\n [isDisabled]=\"isDisabled || isReadonly\"\n [isMobile]=\"isMobile\"\n [maxDate]=\"maxDate\"\n [minDate]=\"minDate\"\n [(bsValue)]=\"selectedDates\"\n (bsValueChange)=\"updateSelectedDate($event)\"\n (onApplyEmit)=\"closeMobileCalendar()\">\n @if (headerTypeService.getCalendarType() === 'days') {\n <div class=\"calendar-close-icon\">\n <gravity-icon class=\"pointer\" (click)=\"closeMobileCalendar()\" [iconName]=\"'unsuccess'\" [iconSize]=\"'sm-12'\"></gravity-icon>\n </div>\n }\n </div>\n }\n </div>\n </div>\n\n @if (isMobile && inputType === 'field') {\n <div [attr.data-cy]=\"cypressTag\"\n [style.cursor]=\"!isDisabled && !isReadonly ? 'pointer' : 'text'\"\n class=\"gravity-calendar-field-trigger\"\n [class.disabled]=\"isDisabled || isReadonly\"\n [class.readonly]=\"isReadonly\"\n (click)=\"openMobileCalendar()\"\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 (ngModelChange)=\"onInputLabelChange($event)\"\n [ngModel]=\"inputLabel | dateFormating: currentLang\"\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 }\n\n @if (!isMobile || inputType === 'label') {\n @if (!displayRangePicker) {\n <div [attr.data-cy]=\"cypressTag\"\n [style.cursor]=\"!isDisabled && !isReadonly ? 'pointer' : 'text'\"\n class=\"gravity-calendar-field-trigger\"\n [class.disabled]=\"isDisabled || isReadonly\"\n [class.readonly]=\"isReadonly\"\n gravityDatePicker\n [bsConfig]=\"calendarConfiguration\"\n [container]=\"getGtCalendarContainer()\"\n [isDisabled]=\"isDisabled || isReadonly\"\n [isMobile]=\"isMobile\"\n [maxDate]=\"maxDate\"\n [minDate]=\"minDate\"\n [minMode]=\"calendarType\"\n [(bsValue)]=\"selectedDate\"\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 @if (inputType === 'label') {\n <gravity-dropdown-label [size]=\"labelSize\" [stopPropagation]=\"false\" [isOpen]=\"isCalendarOpen\"\n [label]=\"inputLabel ? (inputLabel | dateFormating: currentLang : false): 'Select a ' + calendarType\" >\n </gravity-dropdown-label>\n }\n @if (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 (ngModelChange)=\"onInputLabelChange($event)\" [ngModel]=\"inputLabel | dateFormating: currentLang\"\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 }\n </div>\n }\n @if (displayRangePicker) {\n <div [attr.data-cy]=\"cypressTag\"\n [style.cursor]=\"!isDisabled && !isReadonly ? 'pointer' : 'text'\"\n class=\"gravity-calendar-field-trigger\"\n [class.disabled]=\"isDisabled\"\n [class.readonly]=\"isReadonly\"\n gravityRangePicker\n [bsConfig]=\"calendarConfiguration\"\n [container]=\"getGtCalendarContainer()\"\n [isDisabled]=\"isDisabled || isReadonly\"\n [isMobile]=\"isMobile\"\n [maxDate]=\"maxDate\"\n [minDate]=\"minDate\"\n [(bsValue)]=\"selectedDates\"\n (blur)=\"focusInput = false\"\n (bsValueChange)=\"updateSelectedDate($event)\"\n (focus)=\"focusInput = true\"\n (onHidden)=\"focusInput = false; restartCalendarType()\"\n (onShown)=\"restartCalendarType()\">\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 (ngModelChange)=\"onInputLabelChange($event)\" [ngModel]=\"inputLabel | dateFormating: currentLang\"\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 }\n }\n</div>\n@if (supportText) {\n <p class=\"hr-label sm-regular supporting-text {{getStatus()}} {{size}}\">\n @if (hasError) {\n <gravity-icon [iconName]=\"'question-circle'\" [iconSize]=\"'md-16'\"></gravity-icon>\n }\n {{ supportText }}\n </p>\n}\n@if (!supportText && getStatus() == 'active' && inputLabel?.length == 0 && required) {\n <p class=\"hr-label sm-regular supporting-text {{getStatus()}} {{size}}\">\n {{ currentLang == 'es' ? 'Requerido' : 'Required' }}\n </p>\n}\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 standalone: true\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';\nimport {NgClass} from '@angular/common';\nimport {GravityIconComponent} from '../gravity-icon/gravity-icon.component';\n\n@Component({\n selector: 'gravity-switch',\n templateUrl: './gravity-switch.component.html',\n styleUrls: ['./gravity-switch.component.scss'],\n standalone: true,\n imports: [NgClass, GravityIconComponent]\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 @if (labels?.left) {\n <span class=\"hr-body sm-regular\">{{ labels.left }}</span>\n }\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 @if (icons && icons.on && icons.off) {\n <gravity-icon\n [iconSize]=\"getIconSizeClass(size)\"\n [style.--icon-color]=\"'var(--switch-icon-color)'\"\n [iconName]=\"disabled || isSwitchActive ? icons.on : icons.off\" >\n </gravity-icon>\n }\n </div>\n </div>\n </div>\n @if (labels?.right) {\n <span class=\"hr-body sm-regular\">{{ labels.right }}</span>\n }\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\";\nimport {NgTemplateOutlet, NgComponentOutlet} from '@angular/common';\n\n@Component({\n templateUrl: './gravity-dialog.component.html',\n styleUrls: ['./gravity-dialog.component.scss'],\n standalone: true,\n imports: [GravityIconComponent, NgTemplateOutlet, NgComponentOutlet]\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 @if (dialogContent.titleIconName && dialogContent.titleIconName.length > 0) {\n <gravity-icon class=\"title-icon\"\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 }\n {{ dialogContent.title }}\n </div>\n @if (dialogContent.showCloseIcon) {\n <gravity-icon [attr.data-cy]=\"'dialog_closeButton'\" class=\"close\" (click)=\"closeModal()\"\n [iconName]=\"'unsuccess'\" [iconSize]=\"'md-16'\"\n [title]=\"'Close'\"/>\n }\n</div>\n\n<div class=\"dialog-body\" [class.with-footer]=\"dialogContent.footerTemplateRef || dialogContent.footerTemplateComponent\" [attr.data-cy]=\"'dialog_body'\">\n @if (dialogContent.contentTemplateRef) {\n <ng-container *ngTemplateOutlet=\"dialogContent.contentTemplateRef\"></ng-container>\n }\n @if (dialogContent.contentTemplateComponent) {\n <ng-container\n *ngComponentOutlet=\"dialogContent.contentTemplateComponent; inputs: dialogContent.componentInputs\"></ng-container>\n }\n</div>\n\n@if (dialogContent.footerTemplateRef || dialogContent.footerTemplateComponent) {\n <div class=\"dialog-footer\">\n @if (dialogContent.footerTemplateRef) {\n <ng-container *ngTemplateOutlet=\"dialogContent.footerTemplateRef\"></ng-container>\n }\n @if (dialogContent.footerTemplateComponent) {\n <ng-container *ngComponentOutlet=\"dialogContent.footerTemplateComponent\"></ng-container>\n }\n </div>\n}\n","import {Component, Input} from '@angular/core';\nimport {NgbActiveModal} from \"@ng-bootstrap/ng-bootstrap\";\nimport {GravityNotificationContent} from \"./gravity-notification-content.interface\";\nimport {GravityIconComponent} from '../gravity-icon/gravity-icon.component';\n\n@Component({\n templateUrl: './gravity-notification.component.html',\n styleUrls: ['./gravity-notification.component.scss'],\n standalone: true,\n imports: [GravityIconComponent]\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 @if (notificationContent.details) {\n <h2 class=\"hr-body md-regular\">\n Detail: <b>{{notificationContent.details}}</b>\n </h2>\n }\n @if (notificationContent.errorCode) {\n <h2 class=\"hr-body md-regular\">\n Error code: <b>{{notificationContent.errorCode}}</b>\n </h2>\n }\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\";\nimport {NgbToast} from '@ng-bootstrap/ng-bootstrap';\nimport {GravityIconComponent} from '../gravity-icon/gravity-icon.component';\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 standalone: true,\n imports: [NgbToast, GravityIconComponent]\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","@for (notification of gravityInstantNotificationsService.notifications; track notification; let i = $index) {\n <ngb-toast [autohide]=\"true\" [delay]=\"delay\"\n (hidden)=\"gravityInstantNotificationsService.hideNotification(i)\"\n >\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 <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 <div class=\"content\">\n <h2 class=\"hr-body sm-regular\" [attr.data-cy]=\"'notification_body'\">{{notification.text}}</h2>\n @if (notification.errorCode) {\n <h2 class=\"hr-body sm-regular\">\n Error code: <b>{{notification.errorCode}}</b>\n </h2>\n }\n </div>\n </main>\n </ngb-toast>\n}\n","import {AfterViewInit, Component, EventEmitter, Input, Output} from '@angular/core';\nimport {GravityButtonComponent} from '../gravity-button/gravity-button.component';\n\n@Component({\n selector: 'gravity-attach-file',\n templateUrl: './gravity-attach-file.component.html',\n styleUrls: ['./gravity-attach-file.component.scss'],\n standalone: true,\n imports: [GravityButtonComponent]\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","@if (label) {\n <label class=\"hr-body sm-regular {{state}}\" [class.empty]=\"!file\" [class.full-input]=\"file\">\n {{label}}\n @if (required) {\n @if (currentLang == 'es') {\n - Requerido <span class=\"text-negative\">*</span>\n }\n @if (currentLang == 'en') {\n - Required <span class=\"text-negative\">*</span>\n }\n }\n @if (state == 'readonly') {\n @if (currentLang == 'es') {\n - Sólo lectura\n }\n @if (currentLang == 'en') {\n - Readonly\n }\n }\n @if (state == 'disabled') {\n @if (currentLang == 'es') {\n - Deshabilitado\n }\n @if (currentLang == 'en') {\n - Disabled\n }\n }\n </label>\n}\n<div class=\"gravity-attach-file {{state}}\" [class.empty]=\"!file\" [class.full-input]=\"file\">\n @if (!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 (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 }\n @if (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 }\n</div>\n@if (supportTextContent) {\n <p class=\"hr-body sm-regular support-text text-{{supportTextType}}\">\n {{supportTextContent}}\n </p>\n}\n","import {\n AfterViewInit,\n Component,\n ElementRef,\n HostListener,\n Input,\n OnChanges,\n Renderer2,\n SimpleChanges,\n ViewChild\n} from '@angular/core';\nimport {GravityButtonComponent} from '../gravity-button/gravity-button.component';\n\n@Component({\n selector: 'gravity-table',\n templateUrl: './gravity-table.component.html',\n styleUrls: ['./gravity-table.component.scss'],\n standalone: true,\n imports: [GravityButtonComponent]\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')\n 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';\nimport {GravityIconComponent} from '../../../gravity-icon/gravity-icon.component';\n\n@Component({\n selector: 'node-toggle',\n templateUrl: './node-toggle.component.html',\n styleUrls: ['./node-toggle.component.scss'],\n standalone: true,\n imports: [GravityIconComponent]\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 @if (state.nodeItem?.children?.length > 0) {\n <gravity-icon [iconName]=\"state.expanded ? 'arrow-down' : 'arrow-right'\" [iconSize]=\"'md-16'\"\n ></gravity-icon>\n }\n</div>\n","import {Component, Input} from '@angular/core';\nimport {TreeService} from '../../service/tree-service';\nimport {NodeState} from \"../../models/node-state\";\nimport {GravityIconComponent} from '../../../gravity-icon/gravity-icon.component';\n\n@Component({\n selector: 'node-checkbox',\n templateUrl: './node-checkbox.component.html',\n styleUrls: ['./node-checkbox.component.scss'],\n standalone: true,\n imports: [GravityIconComponent]\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 standalone: true\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';\nimport {NodeToggleComponent} from './node-toggle/node-toggle.component';\nimport {NodeCheckboxComponent} from './node-checkbox/node-checkbox.component';\nimport {NodeNameComponent} from './node-name/node-name.component';\n\n@Component({\n selector: 'tree-node',\n templateUrl: './node.component.html',\n styleUrls: ['./node.component.scss'],\n standalone: true,\n imports: [NodeToggleComponent, NodeCheckboxComponent, NodeNameComponent]\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 @if (nodeState.showCheckbox) {\n <node-checkbox [state]=\"nodeState\"></node-checkbox>\n }\n <node-name [state]=\"nodeState\"></node-name>\n </div>\n @if (nodeState.nodeItem.children) {\n <div class=\"collapsible-wrapper\"\n [class.collapsed]=\"!nodeState.expanded && nodeState.nodeItem.children.length > 0 && nodeState.filteredChildren.length > 0\">\n <div class=\"collapsible\">\n @for (child of nodeState.filteredChildren; track child) {\n <tree-node class=\"node-offset\" [nodeState]=\"child\"\n ></tree-node>\n }\n </div>\n </div>\n }\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\";\nimport {GravityTextFieldComponent} from '../gravity-text-field/gravity-text-field.component';\nimport {NodeComponent} from './node/node.component';\n\n@Component({\n selector: 'gravity-tree-view',\n templateUrl: './gravity-tree-view.component.html',\n styleUrls: ['./gravity-tree-view.component.scss'],\n standalone: true,\n providers: [TreeService],\n imports: [GravityTextFieldComponent, NodeComponent]\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","@if (showFilterInput) {\n <gravity-text-field [label]=\"'Change filter'\"\n (response)=\"changeFilter($event)\"></gravity-text-field>\n}\n@for (state of treeService.treeState; track state) {\n <tree-node [nodeState]=\"state\"></tree-node>\n}\n","import {Component, EventEmitter, Input, Output} from '@angular/core';\nimport {GravityIconComponent} from '../gravity-icon/gravity-icon.component';\n\n@Component({\n selector: 'gravity-stepper',\n templateUrl: './gravity-stepper.component.html',\n styleUrls: ['./gravity-stepper.component.scss'],\n standalone: true,\n imports: [GravityIconComponent]\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 @for (stepLabel of stepLabels; track stepLabel; let index = $index) {\n <div class=\"step\"\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 }\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';\nimport {FormsModule} from '@angular/forms';\nimport {GravityIconComponent} from '../gravity-icon/gravity-icon.component';\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 standalone: true,\n imports: [FormsModule, GravityIconComponent]\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 @Input() public labelExtraText: 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 public onInputValueChange(value: number | string): void {\n this.inputValue = value as any;\n }\n}\n","<div class=\"{{size}}\" style=\"width: fit-content\">\n @if (label) {\n <label class=\"hr-label sm-bold {{getTextFieldStatus()}}\" [class.custom-label-size]=\"size == 'sm'\">\n {{label}}\n @if (required || getTextFieldStatus() == 'typed-error') {\n <span>*</span>\n }\n @if (labelExtraText) {\n <span [class.extra-text]=\"labelExtraText\">{{ labelExtraText }}</span>\n }\n </label>\n}\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 [ngModel]=\"inputValue\"\n (ngModelChange)=\"onInputValueChange($event)\"\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@if (supportText) {\n <p class=\"hr-label sm-regular supporting-text {{getTextFieldStatus()}}\" [class.custom-label-size]=\"size == 'sm'\"\n >\n @if (getTextFieldStatus() == 'typed-error') {\n <gravity-icon [iconName]=\"'question-circle'\"\n [iconSize]=\"'sm-12'\"></gravity-icon>\n }\n {{supportText}}\n </p>\n}\n</div>\n","import {Component, Input} from \"@angular/core\";\nimport {NgClass} from \"@angular/common\";\n\n@Component({\n selector: 'gravity-badge',\n templateUrl: './gravity-badge.component.html',\n styleUrls: ['./gravity-badge.component.scss'],\n standalone: true,\n imports: [NgClass]\n})\nexport class GravityBadgeComponent {\n @Input() public size: 'sm' | 'md' | 'lg' = 'sm';\n @Input() public text: string;\n @Input() public number: number;\n @Input() public cypressTag: string;\n @Input() public type: 'warning' | 'neutro' = 'warning';\n\n constructor() {\n }\n\n public get formattedNumber(): string | number {\n if (this.number < 10) {\n return this.number;\n }\n\n if (this.number >= 100) {\n return '99+'\n }\n\n const base = Math.floor(this.number / 10) * 10;\n return `${base}+`;\n }\n}","<div class=\"gravity-badge {{size}} {{type}}\" [ngClass]=\"(number && number > 1) || text ? 'text' : 'dot'\"\n [attr.data-cy]=\"cypressTag ? 'badge_'+cypressTag : null\">\n @if (text && size == 'sm') {\n <p class=\"hr-body sm-regular text\">{{ text }}</p>\n }\n @if (number && number > 1 && size == 'sm') {\n <p class=\"hr-body sm-regular number\">{{ formattedNumber }}</p>\n }\n</div>","import {Component, EventEmitter, Input, Output} from '@angular/core';\nimport {GravityBadgeComponent} from '../gravity-badge/gravity-badge.component';\nimport {GravityIconComponent} from '../gravity-icon/gravity-icon.component';\n\n@Component({\n selector: 'gravity-icon-button',\n templateUrl: './gravity-icon-button.component.html',\n styleUrls: ['./gravity-icon-button.component.scss'],\n standalone: true,\n imports: [GravityBadgeComponent, GravityIconComponent]\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()\"\n [attr.data-cy]=\"cypressTag ? 'iconButton_' + cypressTag : null\">\n\n @if (badge && state != 'disabled') {\n <gravity-badge class=\"icon-button-badge{{badge.text ? '-text' : '' }}\" [size]=\"size\"\n [type]=\"badge.type\" [number]=\"+badge.text\"></gravity-badge>\n }\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 @if (supportText) {\n <div class=\"support-text\">\n <span class=\"hr-body sm-regular\">{{ supportText }}</span>\n </div>\n }\n</div>\n\n","import {Component, Input, OnChanges} from '@angular/core';\nimport {GravityIconComponent} from '../gravity-icon/gravity-icon.component';\n\n@Component({\n selector: 'gravity-status-indicator',\n templateUrl: './gravity-status-indicator.component.html',\n styleUrls: ['./gravity-status-indicator.component.scss'],\n standalone: true,\n imports: [GravityIconComponent]\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","@if (type === 'primary') {\n <div class=\"gravity-status-indicator hr-body {{size}}-regular {{status}} {{size}}\" [attr.data-cy]=\"cypressTag ? 'statusIndicator_' + cypressTag : null\">\n @if (text) {\n <span >{{text}}</span>\n } @if (icon) {\n <gravity-icon [iconName]=\"icon\" [iconSize]=\"'sm-12'\"></gravity-icon>\n }\n </div>\n}\n\n@if (type === 'secondary') {\n <div class=\"gravity-status-indicator-dot hr-body sm-regular {{status}}\" [attr.data-cy]=\"cypressTag ? 'statusIndicator_' + cypressTag : null\">\n <div></div> <span>{{text}}</span>\n </div>\n}","import {Component, EventEmitter, Input, OnChanges, OnInit, Output, SimpleChanges} from '@angular/core';\nimport {GravityIconComponent} from '../gravity-icon/gravity-icon.component';\n\n@Component({\n selector: 'gravity-avatar-stack',\n templateUrl: './gravity-avatar-stack.component.html',\n styleUrls: ['./gravity-avatar-stack.component.scss'],\n standalone: true,\n imports: [GravityIconComponent]\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 @for (item of displayedItems; track item; let i = $index) {\n <div class=\"icon-wrapper\" [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 + '-' + item[config.icon].toLowerCase()\"\n [isCoin]=\"true\">\n </gravity-icon>\n @if (config.label && selectionMode != 'none') {\n <p class=\"hr-body sm-regular hover-text\">{{ item[config.label] }}</p>\n }\n </div>\n }\n @if (maxDisplayedItems < items.length) {\n <span>+{{ items.length - maxDisplayedItems }}</span>\n }\n</div>","import {Component, Input} from '@angular/core';\nimport {NgClass} from '@angular/common';\n\n@Component({\n selector: 'gravity-generic-avatar',\n templateUrl: './gravity-generic-avatar.component.html',\n styleUrls: ['./gravity-generic-avatar.component.scss'],\n standalone: true,\n imports: [NgClass]\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';\nimport {GravityIconComponent} from '../gravity-icon/gravity-icon.component';\nimport {NgClass} from '@angular/common';\n\n@Component({\n selector: 'gravity-multi-language',\n templateUrl: './gravity-multi-language.component.html',\n styleUrls: ['./gravity-multi-language.component.scss'],\n standalone: true,\n imports: [GravityIconComponent, NgClass]\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 @for (language of languages; track language) {\n <div>\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 }\n </div>\n</div>\n","import {Component, EventEmitter, Input, Output} from '@angular/core';\nimport {ModalButtonConfig, ModalLinkConfig} from \"./gravity-modal.model\";\nimport {GravityIconComponent} from '../gravity-icon/gravity-icon.component';\nimport {GravityButtonComponent} from '../gravity-button/gravity-button.component';\nimport {GravityLinkComponent} from '../gravity-link/gravity-link.component';\n\n@Component({\n selector: 'gravity-modal',\n templateUrl: './gravity-modal.component.html',\n styleUrls: ['./gravity-modal.component.scss'],\n standalone: true,\n imports: [GravityIconComponent, GravityButtonComponent, GravityLinkComponent]\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","@if (isVisible) {\n <div class=\"gravity-modal-cover\"></div>\n}\n\n@if (isVisible) {\n <div class=\"gravity-modal-container elevation-sm\">\n <div class=\"modal-header {{state}}\">\n <span class=\"hr-body sm-regular\" [class.span-margin]=\"iconName\">{{ preTitle }}</span>\n <div class=\"title\">\n @if (iconName) {\n <gravity-icon [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 <span class=\"hr-body sm-regular\" [class.span-margin]=\"iconName\">{{ subTitle }}</span>\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 <div class=\"modal-body\" [attr.data-cy]=\"'modal_body'\"> <ng-content> </ng-content> </div>\n <div class=\"modal-footer\">\n @if (primaryBtn?.text || primaryBtn?.icon) {\n <gravity-button\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 @if (secondaryBtn?.text || secondaryBtn?.icon) {\n <gravity-button\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 @if (link?.text || link?.icon) {\n <gravity-link [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 }\n </div>\n </div>\n}\n\n\n","import {Component, EventEmitter, Input, Output} from '@angular/core';\nimport {GravityIconComponent} from '../gravity-icon/gravity-icon.component';\nimport {NgClass} from '@angular/common';\n\n@Component({\n selector: 'gravity-tab-primary',\n templateUrl: './gravity-tab-primary.component.html',\n styleUrls: ['./gravity-tab-primary.component.scss'],\n standalone: true,\n imports: [GravityIconComponent, NgClass]\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 @for (tab of tabs; track tab; let i = $index) {\n <div class=\"tab {{size}}\" [class.selected]=\"selected === i\"\n [attr.data-cy]=\"tab.cypressTag ? 'tabPrimary_' + tab.cypressTag : null\" (click)=\"setActiveTab(i)\">\n @if (tab.icon) {\n <gravity-icon [style.--icon-color]=\"'var(--text-highlight-primary)'\" [size]=\"'md'\"\n [iconName]=\"tab.icon\" [iconSize]=\"'md-16'\" class=\"icon-left\">\n </gravity-icon>\n }\n <p class=\"hr-label\" [ngClass]=\"selected === i ? 'sm-bold' : 'sm-regular'\">{{tab.title}}</p>\n </div>\n }\n <div class=\"bottom-line\"></div>\n </div>\n</div>\n\n","import {Component, Input, Output, EventEmitter} from '@angular/core';\nimport {NgClass} from '@angular/common';\nimport {GravityIconComponent} from '../gravity-icon/gravity-icon.component';\n\n@Component({\n selector: 'gravity-tab-secondary',\n templateUrl: './gravity-tab-secondary.component.html',\n styleUrls: ['./gravity-tab-secondary.component.scss'],\n standalone: true,\n imports: [NgClass, GravityIconComponent]\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 @for (tab of tabs; track tab; let i = $index) {\n <div class=\"gravity-tab-secondary\" [class.selected]=\"selected === i\" [class.disabled]=\"tab.disabled\" [class.full-width]=\"fullWidth\"\n [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 @if (tab.icon) {\n <gravity-icon [style.--icon-color]=\"'var(--cta-primary)'\" [size]=\"'sm'\"\n [iconName]=\"tab.icon\" [iconSize]=\"'sm-12'\" class=\"icon-left\">\n </gravity-icon>\n }\n <p class=\"hr-label\"\n [ngClass]=\"selected === i ? (size + '-bold') : (size + '-regular')\">{{ tab.title }}</p>\n </div>\n </div>\n }\n</div>","import {Component, Input, Output, EventEmitter} from '@angular/core';\nimport {GravityIconComponent} from '../gravity-icon/gravity-icon.component';\n\n@Component({\n selector: 'gravity-editable-input',\n templateUrl: './gravity-editable-input.component.html',\n styleUrls: ['./gravity-editable-input.component.scss'],\n standalone: true,\n imports: [GravityIconComponent]\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 @if (label) {\n <label class=\"hr-label {{size}}-bold\">{{ label }}</label>\n }\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 @if (!readOnly) {\n<gravity-icon [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 }\n </div>\n </div>\n @if (haveError && errorMessage && !readOnly) {\n <div class=\"error-message\">\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 }\n</div>","import {Component, Input, Output, EventEmitter} from '@angular/core';\nimport {GravityIconComponent} from '../gravity-icon/gravity-icon.component';\n\n@Component({\n selector: 'gravity-card-button',\n templateUrl: './gravity-card-button.component.html',\n styleUrls: ['./gravity-card-button.component.scss'],\n standalone: true,\n imports: [GravityIconComponent]\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' | 'selected' = '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\"\n (click)=\"onCardButtonClick()\">\n <div class=\"card-button-container {{type}} {{orientation}}\" [class.pressed]=\"state === 'pressed'\"\n [class.disabled]=\"state === 'disabled'\" [class.selected]=\"state === 'selected'\" [class.full-width]=\"fullWidth\">\n @if (iconName) {\n <gravity-icon [style.--icon-color]=\"'var(--card-button-color)'\" [iconName]=\"iconName\"\n [iconSize]=\"orientation === 'vrt-center' ? 'md-16' : 'lg-24'\">\n </gravity-icon>\n }\n @if (label) {\n <label\n [className]=\"(orientation === 'vrt-center' || orientation === 'vrt-left' || orientation === 'vrt-right') ? 'hr-label sm-bold' : 'hr-label md-bold'\">{{ label }}</label>\n }\n </div>\n</div>\n","import {Component, EventEmitter, Input, Output} from '@angular/core';\nimport {GravityIconComponent} from '../gravity-icon/gravity-icon.component';\nimport {GravityStatusIndicatorComponent} from '../gravity-status-indicator/gravity-status-indicator.component';\n\n@Component({\n selector: 'gravity-navigation-card',\n templateUrl: './gravity-navigation-card.component.html',\n styleUrls: ['./gravity-navigation-card.component.scss'],\n standalone: true,\n imports: [GravityIconComponent, GravityStatusIndicatorComponent]\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 @if (iconName && iconName !== '') {\n <div 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 }\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 @if (statusIndicator) {\n <gravity-status-indicator [status]=\"statusIndicator.status \" [text]=\"statusIndicator.text\"\n [icon]=\"statusIndicator.icon\"></gravity-status-indicator>\n }\n <p class=\"hr-body md-regular\">{{ actionText }}</p>\n @if (state != 'readonly') {\n <gravity-icon [style.--icon-color]=\"'var(--text-primary)'\"\n [iconName]=\"'arrow-right'\" [size]=\"'sm'\" [iconSize]=\"'md-16'\">\n </gravity-icon>\n }\n </div>\n</div>\n","import {Component, Input} from '@angular/core';\nimport {GravityIconComponent} from '../gravity-icon/gravity-icon.component';\nimport {NgOptimizedImage} from \"@angular/common\";\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 standalone: true,\n imports: [GravityIconComponent, NgOptimizedImage]\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 @if (initials) {\n <h1 class=\"hr-title lg-regular\"> {{ initials }} </h1>\n }\n @if (!initials && imageUrl) {\n <img [ngSrc]=\"imageUrl\" alt=\"avatar image\" class=\"avatar-image\" fill/>\n }\n @if (!initials && !imageUrl && iconName) {\n <gravity-icon [iconName]=\"iconName\"> </gravity-icon>\n }\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 standalone: true,\n styleUrls: ['./gravity-backdrop.component.scss']\n})\nexport class GravityBackdropComponent {\n @Input() visible: boolean = false;\n}\n","@if (visible) {\n <div class=\"gravity-backdrop\"></div>\n}\n@if (visible) {\n <div class=\"backdrop-content\">\n <ng-content></ng-content>\n </div>\n}\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 {\n CALENDAR_I18N,\n MONTHS_EN,\n MONTHS_SHORT_EN,\n MONTHS_ES,\n MONTHS_SHORT_ES\n} from \"../../shared/date-picker.constants\";\nimport {GravityIconButtonComponent} from \"../../../gravity-icon-button/gravity-icon-button.component\";\nimport {GravityDropdownLabelComponent} from \"../../../gravity-dropdown-label/gravity-dropdown-label.component\";\nimport {NgClass} from \"@angular/common\";\nimport {GravityLinkComponent} from \"../../../gravity-link/gravity-link.component\";\n\n@Component({\n selector: 'month-calendar',\n templateUrl: './month-calendar.component.html',\n styleUrls: ['./month-calendar.component.scss'],\n standalone: true,\n imports: [GravityIconButtonComponent, GravityDropdownLabelComponent, NgClass, GravityLinkComponent]\n})\nexport class MonthCalendarComponent implements OnChanges {\n @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() {\n return CALENDAR_I18N[this.appearance.language];\n }\n\n public get monthsList() {\n return this.appearance.language === 'en' ? MONTHS_EN : MONTHS_ES;\n }\n\n public get monthsShortList() {\n return this.appearance.language === 'en' ? MONTHS_SHORT_EN : MONTHS_SHORT_ES;\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) {\n this.processInitDate();\n }\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 public getMonthSelectionClass(month: CalendarPeriod): string {\n const classes: string[] = [];\n const {minDate, maxDate} = this.config ?? {};\n const firstDay = new Date(month.year, month.month, 1);\n const lastDay = new Date(month.year, month.month + 1, 0);\n\n let isDisabled = false;\n if (minDate && lastDay < minDate) {\n isDisabled = true;\n }\n if (maxDate && firstDay > maxDate) {\n isDisabled = true;\n }\n if (isDisabled) {\n classes.push('disabled');\n }\n\n if (this.selectedMonth && this.selectedMonth.month === month.month && this.selectedMonth.year === month.year) {\n classes.push('selected');\n }\n\n return classes.join(' ');\n }\n\n public 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 protected readonly isPeriodAvailable = isPeriodAvailable;\n}\n","<section class=\"gravity-date-picker-header\" [class.mobile]=\"appearance.isMobile\">\n <div class=\"header-container\">\n @if (!integratedMode) {\n <gravity-icon-button\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\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 @if (!integratedMode) {\n <gravity-icon-button\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 }\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 @for (month of getYearMonthsList(); track trackByMonth($index, month)) {\n <span class=\"hr-body sm-regular item\"\n [ngClass]=\"appearance.state === 'disabled' ? 'disabled' : getMonthSelectionClass(month)\" (click)=\"onSelectMonth(month)\"\n [class.current]=\"isCurrentMonth(month)\"> {{ monthsShortList[month.month] }}\n </span>\n }\n </div>\n\n @if (!integratedMode && selectedMonth) {\n <div 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 }\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';\nimport {GravityDropdownLabelComponent} from \"../../../gravity-dropdown-label/gravity-dropdown-label.component\";\nimport {GravityIconButtonComponent} from \"../../../gravity-icon-button/gravity-icon-button.component\";\nimport {NgClass} from \"@angular/common\";\nimport {GravityLinkComponent} from \"../../../gravity-link/gravity-link.component\";\n\n@Component({\n selector: 'year-calendar',\n templateUrl: './year-calendar.component.html',\n styleUrls: ['./year-calendar.component.scss'],\n standalone: true,\n imports: [GravityDropdownLabelComponent, GravityIconButtonComponent, NgClass, GravityLinkComponent]\n})\nexport class YearCalendarComponent implements OnChanges, OnInit {\n @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() {\n return CALENDAR_I18N[this.appearance.language];\n }\n\n public trackByYear(_: number, year: number): string {\n return `${year}`;\n }\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) {\n this.processInitDate();\n }\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 public getYearSelectionClass(year: number): string {\n const classes: string[] = [];\n const {minDate, maxDate} = this.config ?? {};\n const firstDay = new Date(year, 0, 1);\n const lastDay = new Date(year, 11, 31);\n\n let isDisabled = false;\n if (minDate && lastDay < minDate) {\n isDisabled = true;\n }\n if (maxDate && firstDay > maxDate) {\n isDisabled = true;\n }\n if (isDisabled) {\n classes.push('disabled');\n }\n\n if (this.selectedYear === year) {\n classes.push('selected');\n }\n\n return classes.join(' ');\n }\n\n\n public 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 protected readonly isPeriodAvailable = isPeriodAvailable;\n}\n","\n<section class=\"gravity-date-picker-header\" [class.mobile]=\"appearance.isMobile\">\n <div class=\"header-container\">\n @if (integratedMode) {\n <gravity-dropdown-label\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\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 @if (!integratedMode) {\n <div 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\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 @for (year of getYearList(); track trackByYear($index, year)) {\n <span class=\"hr-body sm-regular item\"\n [ngClass]=\"appearance.state === 'disabled' ? 'disabled' : getYearSelectionClass(year)\" (click)=\"onSelectYear(year)\"\n [class.current]=\"isCurrentYear(year)\" >{{ year }}\n </span>\n }\n </div>\n\n @if (!integratedMode && selectedYear) {\n <div 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 }\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 {\n dateToCalendarDay,\n getStartDate,\n changeDate,\n calendarDateToDate,\n isPeriodAvailable\n} from '../../shared/date-picker.utils';\nimport {\n getRangeSelectionClass,\n isPreview,\n onApplyRageDate,\n onClearHover,\n onDateKeyup,\n onHoverDay,\n onSelectDaysRange,\n processPreselectedRangeDate,\n searchDate\n} from \"./range-days-calendar.utils\";\nimport {MonthCalendarComponent} from \"../month-calendar/month-calendar.component\";\nimport {YearCalendarComponent} from \"../year-calendar/year-calendar.component\";\nimport {GravityIconButtonComponent} from \"../../../gravity-icon-button/gravity-icon-button.component\";\nimport {GravityDropdownLabelComponent} from \"../../../gravity-dropdown-label/gravity-dropdown-label.component\";\nimport {NgClass} from \"@angular/common\";\nimport {GravityIconComponent} from \"../../../gravity-icon/gravity-icon.component\";\nimport {GravityLinkComponent} from \"../../../gravity-link/gravity-link.component\";\nimport {GravityButtonComponent} from \"../../../gravity-button/gravity-button.component\";\n\n@Component({\n selector: 'day-calendar',\n templateUrl: './day-calendar.component.html',\n styleUrls: ['./day-calendar.component.scss'],\n standalone: true,\n imports: [MonthCalendarComponent, YearCalendarComponent, GravityTextFieldComponent, GravityIconButtonComponent, GravityDropdownLabelComponent, NgClass, GravityIconComponent, GravityLinkComponent, GravityButtonComponent]\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 @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 public endFieldDisabled: boolean = false;\n public startFieldDisabled: boolean = false;\n public selectedRangeEnd: CalendarDate | null = null;\n public selectedRangeStart: CalendarDate | null = null;\n\n public showYearCalendar: boolean = false;\n public showMonthCalendar: boolean = false;\n public focused: 'start' | 'end' = 'start';\n public hoveredDay: CalendarDate | null = null;\n public selectedDay: CalendarDate | null = null;\n public notification: { text: string, error: boolean };\n\n public get i18n() {\n return CALENDAR_I18N[this.appearance.language];\n }\n\n public get monthsList() {\n return this.appearance.language === 'en' ? MONTHS_EN : MONTHS_ES;\n }\n\n public get daysList() {\n return this.appearance.language === 'en' ? DAYS_SHORT_EN : DAYS_SHORT_ES;\n }\n\n public trackByWeek(index: number, _: any): number {\n return index;\n }\n\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 const shouldAppy = changes['appyOnClose'] && this.appyOnClose;\n const shouldProcessPreSelected = changes['preSelectedDate'] && this.config.initDate;\n\n if (shouldAppy) {\n this.applySelectedDate();\n }\n if (shouldRestart || shouldProcessPreSelected) {\n this.processInitDate();\n }\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 public hasDateSelected(requireBothInRange = false): boolean {\n if (!this.range) {\n return !!this.selectedDay;\n } else {\n return requireBothInRange\n ? !!this.selectedRangeStart && !!this.selectedRangeEnd\n : !!this.selectedRangeStart || !!this.selectedRangeEnd;\n }\n }\n\n\n public 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) {\n if (dayDate < this.config.minDate) return 'disabled';\n }\n if (this.config?.maxDate) {\n if (dayDate > this.config.maxDate) return 'disabled';\n }\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 public applySelectedDate(): void {\n if (this.range) {\n if (this.selectedRangeStart && this.selectedRangeEnd) {\n onApplyRageDate(this);\n } else if (this.endDateField && this.startDateField) {\n this.clearSelectedDate('all');\n }\n } else if (this.selectedDay) {\n const date = calendarDateToDate(this.selectedDay);\n this.calendarResponse.emit(date);\n }\n }\n\n public clearSelectedDate(clearTarget: 'all' | 'start' | 'end'): void {\n if (this.range && (clearTarget === 'all' || clearTarget === 'end')) {\n this.endDateError = '';\n this.selectedRangeEnd = null;\n this.startFieldDisabled = false;\n this.endDateField.inputValue = '';\n if (!this.appearance.isMobile) {\n this.endDateField.focus();\n }\n if (this.selectedRangeStart) {\n this.currentDate = calendarDateToDate(this.selectedRangeStart)\n }\n }\n\n if (this.range && (clearTarget === 'all' || clearTarget === 'start')) {\n this.startDateError = '';\n this.endFieldDisabled = false;\n this.selectedRangeStart = null;\n this.startDateField.inputValue = '';\n if (!this.appearance.isMobile) {\n this.startDateField.focus();\n }\n if (this.selectedRangeEnd) {\n this.currentDate = calendarDateToDate(this.selectedRangeEnd)\n }\n }\n\n if (this.range && this.selectedRangeStart === null && this.selectedRangeEnd === null) {\n this.focused = 'start';\n this.currentDate = new Date();\n if (!this.appearance.isMobile) {\n this.startDateField.focus();\n }\n }\n\n this.selectedDay = null;\n this.notification = null;\n if (!this.range) {\n this.currentDate = new Date();\n }\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) {\n this.initMonth = this.currentDate;\n this.showMonthCalendar = false;\n } else {\n this.initYear = this.currentDate;\n this.showYearCalendar = false;\n }\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({\n day: nextDay++,\n monthYear: {month: month + 1, year: year},\n isToday: false,\n inCurrentMonth: false,\n weekDay\n });\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 protected readonly changeDate = changeDate;\n protected readonly isPreview = isPreview;\n protected readonly searchDate = searchDate;\n protected readonly onHoverDay = onHoverDay;\n protected readonly onDateKeyup = onDateKeyup;\n protected readonly onClearHover = onClearHover;\n protected readonly isPeriodAvailable = isPeriodAvailable;\n protected readonly calendarDateToDate = calendarDateToDate;\n}","@if (showMonthCalendar) {\n <section>\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\n@if (showYearCalendar) {\n <section>\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\n@if (!appearance.isMobile && !showMonthCalendar && !showYearCalendar) {\n <div class=\"title\">\n <span class=\"hr-label sm-bold\">{{range ? i18n.select_range : i18n.select_date}}</span>\n </div>\n}\n\n<div class=\"gravity-date-picker-content\" [class.hidden]=\"showYearCalendar || showMonthCalendar\" [class.mobile]=\"appearance.isMobile\">\n\n @if (range) {\n <div 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 <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\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 @for (day of daysList; track day) {\n <span class=\"hr-body\" [ngClass]=\"appearance.isMobile ? 'md-regular' : 'sm-regular'\"> {{ day }} </span>\n }\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 @for (week of getMonthGrid(); track trackByWeek($index, week)) {\n <div class=\"week-row\">\n @for (day of week; track trackByDay($index, day)) {\n <span class=\"hr-body\"\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 }\n </div>\n }\n </div>\n\n @if (notification) {\n <div 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\n @if (range || selectedDay) {\n <div 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 @if (range) {\n <gravity-button [size]=\"appearance.isMobile ? 'md' : 'sm'\" [type]=\"'tertiary'\" [disabled]=\"!hasDateSelected(true)\"\n (click)=\"hasDateSelected(true) ? applySelectedDate() : null\"> {{i18n.apply}} </gravity-button>\n }\n </div>\n }\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\";\nimport { GravityIconComponent } from '../gravity-icon/gravity-icon.component';\nimport { DayCalendarComponent } from './components/day-calendar/day-calendar.component';\nimport { MonthCalendarComponent } from './components/month-calendar/month-calendar.component';\nimport { YearCalendarComponent } from './components/year-calendar/year-calendar.component';\n\n@Component({\n selector: 'gravity-date-picker',\n templateUrl: './gravity-date-picker.component.html',\n styleUrls: ['./gravity-date-picker.component.scss'],\n standalone: true,\n imports: [GravityIconComponent, DayCalendarComponent, MonthCalendarComponent, YearCalendarComponent]\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","@if (appearance.isMobile && (appearance.state === 'active')) {\n <div class=\"mobile-date-picker-cover\"> </div>\n}\n\n@if (appearance.isMobile && (appearance.state === 'active')) {\n <div class=\"close-button\">\n <span class=\"hr-label md-bold\">{{datePickerType === 'range' ? i18n.select_range : i18n.select_date}}</span>\n <gravity-icon [iconSize]=\"'md-16'\" [iconName]=\"'unsuccess'\" (click)=\"handleCloseButton()\"/>\n </div>\n}\n\n@if (datePickerType === 'single') {\n @if (appearance.state !== 'destroy') {\n <section 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 }\n}\n\n@if (datePickerType === 'range') {\n @if (appearance.state !== 'destroy') {\n <section 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 }\n}\n\n@if (datePickerType === 'month') {\n @if (appearance.state !== 'hidden') {\n <section 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 }\n}\n\n@if (datePickerType === 'year') {\n @if (appearance.state !== 'hidden') {\n <section 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 }\n}\n","import {\n AfterViewInit,\n Component,\n ElementRef,\n EventEmitter,\n Input,\n OnInit,\n Output,\n QueryList,\n ViewChildren\n} from '@angular/core';\nimport {NgStyle, NgClass} from '@angular/common';\nimport {GravityIconComponent} from '../gravity-icon/gravity-icon.component';\n\nexport interface SegmentedButton {\n text: string;\n icon?: string;\n value: string;\n 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 standalone: true,\n imports: [NgStyle, NgClass, GravityIconComponent]\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 @for (button of buttons; track button) {\n <div #segmentedButton\n class=\"segmented-button\" [ngClass]=\"getState(button)\" (click)=\"onSelect(button)\" [attr.data-cy]=\"button.cypressTag? 'segmentedButton_' + button.cypressTag : null\">\n @if (button.icon) {\n <div>\n <gravity-icon [style.--icon-color]=\"'var(--segmented-button-color)'\"\n [iconSize]=\"'sm-12'\" [size]=\"'sm'\" [iconName]=\"button.icon\"></gravity-icon>\n </div>\n }\n <span [ngClass]=\"'hr-label ' + size + (getState(button) === 'selected' ? '-bold' : '-regular')\"> {{button.text}} </span>\n </div>\n }\n</div>\n","import {Component, EventEmitter, Input, Output} from '@angular/core';\nimport {NgClass} from '@angular/common';\nimport {GravityIconComponent} from '../gravity-icon/gravity-icon.component';\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 standalone: true,\n imports: [NgClass, GravityIconComponent]\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 @for (item of items; track item) {\n <div class=\"gravity-chip {{size}}\"\n [attr.data-cy]=\"item.cypressTag ? 'chip_' + item.cypressTag: null\"\n [ngClass]=\"{'selected': isSelected(item), 'disabled': disabled}\" (click)=\"toggleSelection(item)\">\n @if (item.icon) {\n <gravity-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 @if (isSelected(item)) {\n <div 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 }\n </div>\n }\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 standalone: true\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';\nimport {NgClass} from '@angular/common';\nimport {GravityStatusIndicatorComponent} from '../gravity-status-indicator/gravity-status-indicator.component';\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 standalone: true,\n imports: [NgClass, GravityStatusIndicatorComponent]\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')\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 @if (statusIndicator && type === 'custom-view') {\n <div 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\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\";\nimport {NgClass} from '@angular/common';\nimport {GravityIconComponent} from '../gravity-icon/gravity-icon.component';\nimport {GravityIconButtonComponent} from '../gravity-icon-button/gravity-icon-button.component';\n\n@Component({\n selector: 'gravity-detail-container',\n templateUrl: './gravity-detail-container.component.html',\n styleUrls: ['./gravity-detail-container.component.scss'],\n standalone: true,\n imports: [NgClass, GravityIconComponent, GravityIconButtonComponent]\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() 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')\n 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","@if (type === 'flyout' && mode === 'modal' && !gravityResponsiveService.isMobile()) {\n <div class=\"detail-container-backdrop\"\n [class.open]=\"isOpen\" (click)=\"dismiss()\"></div>\n}\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 @if (gravityResponsiveService.isMobile()) {\n <div class=\"back-button\" (click)=\"dismiss()\"\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 }\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 @if (!gravityResponsiveService.isMobile()) {\n <gravity-icon-button [icon]=\"'unsuccess'\" [size]=\"'sm'\"\n (click)=\"dismiss()\"\n [supportText]=\"'Close'\" [attr.data-cy]=\"'detailContainer_closeButton'\"/>\n }\n @if (gravityResponsiveService.isMobile()) {\n <gravity-icon class=\"menu-button\"\n [style.--icon-color]=\"'var(--back-button-color)'\"\n [iconSize]=\"'lg-24'\" [iconName]=\"'menu'\" (click)=\"menu()\" [attr.data-cy]=\"'detailContainer_menuButton'\"/>\n }\n </div>\n\n <div class=\"overflow-container\" #containerRef>\n @if (description != '' && type === 'flyout') {\n <p class=\"hr-body sm-regular detail-description\"> {{ description }}</p>\n }\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 @if (type === 'flyout') {\n <div class=\"detail-actions\">\n <ng-content select=\"[detail-actions]\"></ng-content>\n </div>\n }\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\";\nimport {GravityIconComponent} from \"../gravity-icon/gravity-icon.component\";\n\n@Component({\n selector: 'gravity-push-notifications',\n templateUrl: './gravity-push-notifications.component.html',\n styleUrls: ['./gravity-push-notifications.component.scss'],\n standalone: true,\n imports: [GravityIconComponent]\n})\nexport class GravityPushNotificationsComponent implements OnInit, OnDestroy {\n @Input() set userNotifications(value: UserNotifications | undefined) {\n this._userNotifications = value;\n this.processData();\n }\n\n @Output() public viewedNotificationsResponse: EventEmitter<NotificationViewedStatusRequest> = new EventEmitter();\n\n public isPanelOpen: boolean = false;\n public _userNotifications: UserNotifications | undefined;\n public viewedNotifications: NotificationViewedStatusRequest | undefined;\n\n constructor(public readonly pushNotificationsService: PushNotificationsService,\n private readonly elementRef: ElementRef) {\n }\n\n ngOnInit(): void {\n this.processData();\n }\n\n ngOnDestroy(): void {\n this.pushNotificationsService.clearLoginNotification();\n }\n\n private processData(): void {\n this.pushNotificationsService.loadUserNotifications(this._userNotifications);\n }\n\n public handleToggleNotificationsPanel() {\n this.isPanelOpen = !this.isPanelOpen;\n this.viewedNotifications = this.pushNotificationsService.toggleNotificationsPanel(this.isPanelOpen);\n if (this.viewedNotifications?.push_notifications?.length > 0) {\n this.viewedNotificationsResponse.emit(this.viewedNotifications);\n }\n }\n\n @HostListener('document:click', ['$event']) onClick(event: MouseEvent) {\n if (this.isPanelOpen) {\n const clickedInside = this.elementRef.nativeElement.contains(event.target);\n\n if (!clickedInside) {\n this.handleToggleNotificationsPanel();\n }\n }\n }\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 @if (pushNotificationsService.pendingNotifications.length > 0) {\n <span class=\"circle\"></span>\n }\n </div>\n @if (isPanelOpen) {\n <div 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 @if (pushNotificationsService.pendingNotifications.length > 0) {\n <p class=\"hr-body md-regular\" data-cy=\"PUSH_NOTIFICATIONS_panel_pending_counter\"\n >\n {{pushNotificationsService.pendingNotifications.length}}\n </p>\n }\n </div>\n @if (pushNotificationsService.pendingNotifications?.length > 0) {\n <div class=\"notifications\" data-cy=\"PUSH_NOTIFICATIONS_item\"\n >\n <p> New </p>\n @for (notification of pushNotificationsService.pendingNotifications; track notification; 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 @if (notification.iconName) {\n <gravity-icon [iconName]=\"notification.iconName\" [hoverIcon]=\"false\" [iconSize]=\"'lg-24'\"></gravity-icon>\n }\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 @if (index + 1 != pushNotificationsService.pendingNotifications.length) {\n <hr>\n }\n }\n </div>\n }\n @if (pushNotificationsService.pendingNotifications?.length > 0 && pushNotificationsService.seenNotifications?.length > 0) {\n <hr>\n }\n @if (pushNotificationsService.seenNotifications?.length > 0) {\n <div class=\"notifications\">\n <p> Old </p>\n @for (notification of pushNotificationsService.seenNotifications; track notification; 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 @if (notification.iconName) {\n <gravity-icon [iconName]=\"notification.iconName\" [hoverIcon]=\"false\" [iconSize]=\"'lg-24'\"></gravity-icon>\n }\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 @if (index + 1 != pushNotificationsService.seenNotifications.length) {\n <hr>\n }\n }\n </div>\n }\n @if (pushNotificationsService.pendingNotifications?.length == 0 && pushNotificationsService.seenNotifications?.length == 0) {\n <div class=\"notifications\"\n >\n <p class=\"no-notification\"> No new notifications </p>\n </div>\n }\n </div>\n }\n </div>\n","import {Component, EventEmitter, Input, Output} from '@angular/core';\nimport {NotificationViewedStatusRequest, UserNotifications} from \"../../model/gravity-push-notifications.model\";\nimport {SvgIconComponent} from 'angular-svg-icon';\nimport {GravityIconComponent} from '../../components/gravity-icon/gravity-icon.component';\nimport {NgClass} from '@angular/common';\nimport {\n GravityPushNotificationsComponent\n} from '../../components/gravity-push-notifications/gravity-push-notifications.component';\n\nexport interface BreadCrumb {\n icon?: string;\n list?: { 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 standalone: true,\n imports: [SvgIconComponent, GravityIconComponent, NgClass, GravityPushNotificationsComponent]\n})\n\nexport class GravityHeaderComponent {\n @Input() public title: string;\n @Input() public logoUrl: string;\n @Input() public longTitle: string;\n @Input() public backButton: boolean;\n @Input() public breadCrumb: BreadCrumb;\n @Input() public language: 'en' | 'es' = 'en';\n @Input() public notifications: boolean = false;\n @Input() public resolution: 'xs' | 'sm' | 'md' | 'lg' | 'xl';\n @Input() public userNotifications: UserNotifications | undefined;\n\n @Input()\n set isMenuOpen(value: boolean) {\n this.iconToggle = value;\n this._isMenuOpen = value;\n }\n\n get isMenuOpen() {\n return this._isMenuOpen;\n }\n\n @Output() public backButtonResponse: EventEmitter<void> = new EventEmitter();\n @Output() public toggleMenuResponse: EventEmitter<boolean> = new EventEmitter();\n @Output() public viewedNotificationsResponse: EventEmitter<NotificationViewedStatusRequest> = new EventEmitter();\n\n private _isMenuOpen: boolean = false;\n\n public iconToggle: boolean = false;\n public isBackButtonPressed: boolean = false;\n\n public toggleMenu() {\n setTimeout(function () {\n this.toggleMenuResponse.emit(this._isMenuOpen);\n }.bind(this), 65)\n }\n\n public backAction() {\n this.backButtonResponse.emit();\n }\n\n public handleViewedNotificationsResponse($event: NotificationViewedStatusRequest) {\n this.viewedNotificationsResponse.emit($event);\n }\n\n public isMobile() {\n return this.resolution === 'xs' || this.resolution === 'sm' || this.resolution === 'md';\n }\n\n}\n","<div class=\"gravity-header\" [class.mobile]=\"isMobile()\">\n <section class=\"first-level\" [class.long-title]=\"longTitle\">\n @if (isMobile() && logoUrl && !backButton) {\n <svg-icon class=\"logo-header\" [src]=\"logoUrl\"/>\n }\n\n @if (backButton && breadCrumb?.list?.length < 1) {\n <div\n class=\"back-button\" [class.pressed]=\"isBackButtonPressed\"\n (mousedown)=\"isBackButtonPressed = true\" (mouseup)=\"isBackButtonPressed = false\" (click)=\"backAction()\"\n (mouseleave)=\"isBackButtonPressed = false\" (touchstart)=\"isBackButtonPressed = true\">\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\n @if (breadCrumb?.list?.length > 0 && (resolution === 'lg' || resolution === 'xl' )) {\n <div class=\"breadcrumb\">\n @if (breadCrumb.icon) {\n <gravity-icon class=\"gravity-margin-right-xs\" [iconSize]=\"'md-16'\"\n [style.--icon-color]=\"'var(--breadcrumb-button-base-primary)'\" [iconName]=\"breadCrumb.icon\"/>\n }\n @for (item of breadCrumb.list; track item; 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 }\n </div>\n }\n\n @if (!backButton && (!isMobile() || (isMobile() && !logoUrl)) && breadCrumb?.list?.length < 1) {\n <h1\n [ngClass]=\"!isMobile() ? 'hr-headline md-bold' : 'hr-title ' + (resolution === 'md' ? 'md-bold' : 'lg-bold')\">\n {{ title }}\n </h1>\n }\n\n @if (isMobile() && backButton) {\n <h1 [ngClass]=\"'hr-body md-bold'\"> {{ longTitle }} </h1>\n }\n\n <div class=\"main-actions\">\n <ng-content select=\"[main-actions]\"/>\n\n @if ((notifications && !isMobile()) || (notifications && isMobile() && !backButton)) {\n <gravity-push-notifications\n [userNotifications]=\"userNotifications\" (viewedNotificationsResponse)=\"handleViewedNotificationsResponse($event)\"/>\n }\n\n @if (isMobile()) {\n <gravity-icon [style.--icon-color]=\"'var(--back-button-color)'\"\n [iconSize]=\"'lg-24'\" [iconName]=\"'menu'\" (click)=\"toggleMenu()\"/>\n }\n </div>\n </section>\n\n @if (!isMobile() && (backButton || breadCrumb?.list?.length > 0) && title) {\n <section class=\"second-level\">\n <h1 class=\"hr-headline md-bold\">{{ title }}</h1>\n </section>\n }\n\n @if (isMobile() && logoUrl && !backButton && title) {\n <section class=\"second-level\">\n <h1 [ngClass]=\"'hr-title ' + (resolution === 'md' ? 'md-bold' : 'lg-bold')\">{{ title }}</h1>\n </section>\n }\n\n</div>","import {Component, Input, Output, EventEmitter, OnChanges, SimpleChanges} from '@angular/core';\nimport {GravityIconComponent} from '../gravity-icon/gravity-icon.component';\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 standalone: true,\n imports: [GravityIconComponent]\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 @if (type != 'dots' && currentPage != 1 && totalPages > 5 || type == 'page-count') {\n <div class=\"paginator-button-container\" (click)=\"changePage(1)\" [attr.data-cy]=\"'pagination_firstButton'\"\n [class.disabled]=\"currentPage === 1\">\n <gravity-icon [iconName]=\"'chevron-double-left'\" [iconSize]=\"'sm-12'\"\n [style.--icon-color]=\"'var(--paginator-button-text-color)'\"></gravity-icon>\n @if (type == 'full') {\n <p class=\"hr-body sm-regular\">{{ currentLang == 'en' ? 'First' : 'Primero' }}</p>\n }\n </div>\n }\n\n <!-- Back -->\n @if (showArrowDots) {\n <div class=\"paginator-button-container\" [class.disabled]=\"currentPage === 1\" [attr.data-cy]=\"'pagination_backButton'\"\n (click)=\"changePage(currentPage - 1)\">\n <gravity-icon [iconName]=\"'arrow-left'\" [iconSize]=\"'sm-12'\"\n [style.--icon-color]=\"'var(--paginator-button-text-color)'\"></gravity-icon>\n @if (type == 'full') {\n <p class=\"hr-body sm-regular\">{{ currentLang == 'en' ? 'Back' : 'Atrás' }}</p>\n }\n </div>\n }\n\n <!-- Numbers and Ellipsis -->\n @if (type == 'full' || type == 'compact') {\n @for (p of pages; track p) {\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 }\n }\n\n <!-- Page count -->\n @if (type === 'page-count' && showPageCount) {\n <div class=\"paginator-button-container no-click\">\n <p class=\"hr-body sm-regular\">{{ currentPage + (currentLang == 'en' ? ' of ' : ' de ') + totalPages }}</p>\n </div>\n }\n\n <!-- Dots -->\n @if (type === 'dots') {\n <div class=\"dots-container\">\n @for (p of pages; track p) {\n <div class=\"dot\"\n [class.pressed]=\"currentPage === p\"\n (click)=\"changePage(p)\" [attr.data-cy]=\"'pagination_page' +p+ 'DotsButton'\"></div>\n }\n </div>\n }\n\n <!-- Next -->\n @if (showArrowDots) {\n <div class=\"paginator-button-container\" [class.disabled]=\"currentPage === totalPages\"\n [attr.data-cy]=\"'pagination_nextButton'\"\n (click)=\"changePage(currentPage + 1)\">\n @if (type == 'full') {\n <p class=\"hr-body sm-regular\">{{ currentLang == 'en' ? 'Next' : 'Siguiente' }}</p>\n }\n <gravity-icon [iconName]=\"'arrow-right'\" [iconSize]=\"'sm-12'\"\n [style.--icon-color]=\"'var(--paginator-button-text-color)'\"></gravity-icon>\n </div>\n }\n\n <!-- Last -->\n @if (type != 'dots' && currentPage !== totalPages && totalPages > 5 || type == 'page-count') {\n <div class=\"paginator-button-container\" (click)=\"changePage(totalPages)\" [attr.data-cy]=\"'pagination_lastButton'\"\n [class.disabled]=\"currentPage === totalPages\">\n @if (type == 'full') {\n <p class=\"hr-body sm-regular\">{{ currentLang == 'en' ? 'Last' : 'Último' }}</p>\n }\n <gravity-icon [iconName]=\"'chevron-double-right'\" [iconSize]=\"'sm-12'\"\n [style.--icon-color]=\"'var(--paginator-button-text-color)'\"></gravity-icon>\n </div>\n }\n</div>\n","import {Component, EventEmitter, Input, Output} from \"@angular/core\";\nimport {NgStyle} from \"@angular/common\";\nimport {GravityStatusIndicatorComponent} from \"../gravity-status-indicator/gravity-status-indicator.component\";\nimport {GravityIconButtonComponent} from \"../gravity-icon-button/gravity-icon-button.component\";\nimport {GravityIconComponent} from \"../gravity-icon/gravity-icon.component\";\nimport {GravityButtonComponent} from \"../gravity-button/gravity-button.component\";\nimport {GravityPaginationComponent} from \"../gravity-pagination/gravity-pagination.component\";\n\n@Component({\n selector: 'gravity-tooltip-container',\n templateUrl: './gravity-tooltip-container.component.html',\n styleUrls: ['./gravity-tooltip-container.component.scss'],\n standalone: true,\n imports: [NgStyle, GravityStatusIndicatorComponent, GravityIconButtonComponent, GravityIconComponent, GravityButtonComponent, GravityPaginationComponent]\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@if (tooltipBanner) {\n <div class=\"gravity-tooltip-container banner\">\n @if (currentBanner?.imageUrl) {\n <div class=\"top-container\"\n [ngStyle]=\"{ 'background-image': currentBanner.imageUrl ? 'url(' + currentBanner.imageUrl + ')' : 'none' }\">\n <div class=\"actions-container\">\n @if (currentBanner.actionContent) {\n <gravity-status-indicator [size]=\"'sm'\"\n [text]=\"currentBanner.actionContent.text\"\n [icon]=\"currentBanner.actionContent.icon\"\n [status]=\"currentBanner.actionContent.status\"></gravity-status-indicator>\n }\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 @if (currentBanner.header.icon) {\n <gravity-icon [iconName]=\"currentBanner.header.icon\"\n [iconSize]=\"'md-16'\"></gravity-icon>\n }\n @if (currentBanner.header.title) {\n <p class=\"hr-title md-bold\" [innerHTML]=\"currentBanner.header.title\"></p>\n }\n @if (!currentBanner.imageUrl) {\n <gravity-icon-button [icon]=\"'unsuccess'\"\n [type]=\"'primary'\" (click)=\"closeBannerTooltip()\"></gravity-icon-button>\n }\n </div>\n @if (currentBanner.header.subtitle) {\n <p class=\"hr-body sm-regular subtitle\"\n [innerHTML]=\"currentBanner.header.subtitle\"></p>\n }\n </div>\n <hr class=\"divider\">\n @if (currentBanner.body) {\n <p class=\"hr-body sm-regular\" [innerHTML]=\"currentBanner.body\"></p>\n }\n </div>\n @if (currentBanner.button) {\n <gravity-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 @if (tooltipBanner.length > 1) {\n <gravity-pagination [totalItems]=\"tooltipBanner.length\" [itemsPerPage]=\"1\"\n [currentPage]=\"currentPage\"\n [type]=\"'dots'\" (pageChanged)=\"changePage($event)\"></gravity-pagination>\n }\n </div>\n </div>\n}\n\n<!--Tooltip Simple-->\n@if (tooltipSimple) {\n <div class=\"gravity-tooltip-container simple\">\n @if (tooltipSimple?.title) {\n <p class=\"hr-body sm-bold\" [innerHTML]=\"tooltipSimple?.title\"></p>\n }\n @if (tooltipSimple?.text) {\n <p class=\"hr-body sm-regular\" [innerHTML]=\"tooltipSimple?.text\"></p>\n }\n </div>\n}","import {MenuHeader, MenuLogoUrls, MenuOption, SecondaryActions, UserInfo} from \"../../model/gravity-menu-items.model\";\nimport {\n Component,\n ElementRef,\n EventEmitter,\n Input,\n Output,\n ViewChild,\n AfterViewInit,\n OnDestroy,\n OnChanges,\n SimpleChanges,\n Renderer2\n} from '@angular/core';\nimport {SvgIconComponent} from \"angular-svg-icon\";\nimport {GravityIconComponent} from \"../../components/gravity-icon/gravity-icon.component\";\nimport {RouterLink} from \"@angular/router\";\nimport {GravityBadgeComponent} from \"../../components/gravity-badge/gravity-badge.component\";\nimport {NgClass} from \"@angular/common\";\nimport {\n GravityTooltipContainerComponent\n} from \"../../components/gravity-tooltip-container/gravity-tooltip-container.component\";\nimport {GravityCardButtonComponent} from \"../../components/gravity-card-button/gravity-card-button.component\";\nimport {GravityButtonComponent} from \"../../components/gravity-button/gravity-button.component\";\nimport {GravityTooltipDirective} from \"../../vendor/gravity-tooltip\";\n\n@Component({\n selector: 'gravity-menu',\n templateUrl: './gravity-menu.component.html',\n styleUrls: ['./gravity-menu.component.scss'],\n standalone: true,\n imports: [SvgIconComponent, GravityIconComponent, RouterLink, GravityBadgeComponent, NgClass, GravityTooltipDirective, GravityTooltipContainerComponent, GravityCardButtonComponent, GravityButtonComponent]\n})\nexport class GravityMenuComponent implements AfterViewInit, OnChanges, OnDestroy {\n @Input() public items: MenuHeader[];\n @Input() public userInfo: UserInfo[];\n @Input() public logoUrl: MenuLogoUrls;\n @Input() public isOpen: boolean = false;\n @Input() public collapsable: boolean = false;\n @Input() public showCloseButton = true;\n @Input() public cardButtons: SecondaryActions[];\n @Input() public maxCardButtonsPerRow: number = 3;\n @Input() public currentLink: string | null = null;\n @Input() public secondaryActions: SecondaryActions[];\n @Input() public size: 'xs' | 'sm' | 'md' | 'lg' | 'xl' = 'xl';\n @Input() public mainFooterAction: { icon: string; text: string; callback?: () => void } | null = null;\n\n @Output() public close = new EventEmitter();\n @Output() public selected = new EventEmitter<string>();\n @Output() public collapsed = new EventEmitter<boolean>();\n\n @ViewChild('menuBody', {static: false}) menuBody!: ElementRef<HTMLDivElement>;\n\n public closing = false;\n public scrollPosition: number = 0;\n public collapsedMode: boolean = false;\n public visibleSubMenu: boolean = false;\n public selectedOption: MenuOption | null = null;\n\n private resizeObserver!: ResizeObserver;\n private clickOutsideListener!: () => void;\n\n constructor(private elRef: ElementRef, private renderer: Renderer2) {\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes['currentLink'] && this.currentLink != null && this.items?.length) {\n this.preselectOptionByLink(this.currentLink);\n }\n\n if (changes['size']) {\n this.handleSizeChange(changes['size'].currentValue);\n }\n }\n\n ngAfterViewInit() {\n const el = this.menuBody.nativeElement;\n\n this.resizeObserver = new ResizeObserver(() => {\n this.updateOverflow();\n });\n\n if (this.menuBody) {\n this.menuBody.nativeElement.addEventListener('scroll', () => {\n this.scrollPosition = this.menuBody.nativeElement.scrollTop;\n });\n }\n\n this.clickOutsideListener = this.renderer.listen('document', 'click', (event: MouseEvent) => {\n const menuElement = this.elRef.nativeElement as HTMLElement;\n if (!menuElement.contains(event.target as Node) && this.collapsedMode) {\n this.visibleSubMenu = false;\n this.toggleAllHeaders(true);\n }\n });\n\n this.resizeObserver.observe(el);\n this.updateOverflow();\n }\n\n ngOnDestroy() {\n if (this.resizeObserver) {\n this.resizeObserver.disconnect();\n }\n if (this.clickOutsideListener) {\n this.clickOutsideListener();\n }\n }\n\n private preselectOptionByLink(link: string) {\n for (const header of this.items ?? []) {\n if (header.link === link) {\n this.selectedOption = null;\n header.collapsed = false;\n return;\n }\n\n const option = header.headerOptions?.find(o => o.link === link);\n if (option) {\n this.selectedOption = option;\n header.collapsed = false;\n return;\n }\n }\n\n if (this.collapsedMode) {\n this.toggleAllHeaders(true);\n }\n }\n\n private handleSizeChange(size: 'xs' | 'sm' | 'md' | 'lg' | 'xl'): void {\n if (size === 'sm' || size === 'md') {\n if (this.collapsedMode) {\n this.collapsedMode = false;\n this.visibleSubMenu = false;\n this.toggleAllHeaders(true);\n }\n } else {\n if (!this.collapsedMode) {\n this.toggleAllHeaders(false);\n }\n }\n }\n\n public selectOption(option: MenuOption, header: MenuHeader) {\n this.selectedOption = option;\n this.selected.emit(option.link);\n\n if (this.collapsedMode && header) {\n this.visibleSubMenu = false;\n setTimeout(() => {\n header.collapsed = true;\n }, 0);\n }\n }\n\n public closeMenu() {\n this.close.emit();\n this.closing = true;\n setTimeout(() => {\n this.closing = false;\n }, 100);\n }\n\n public toggleMenuHeader(header: MenuHeader, index: number) {\n if (!header.headerOptions || header.headerOptions.length === 0) {\n this.selectedOption = null;\n this.selected.emit(header.link);\n\n if (this.collapsedMode) {\n this.toggleAllHeaders(true);\n }\n }\n\n if (!header.headerOptions?.length) return;\n\n if (this.collapsedMode) {\n if (!header.collapsed) {\n header.collapsed = true;\n this.visibleSubMenu = false;\n } else {\n this.toggleAllHeaders(true);\n header.collapsed = false;\n this.visibleSubMenu = true;\n }\n this.adjustScrollOnGrow(index);\n } else {\n header.collapsed = !header.collapsed;\n }\n }\n\n public isHeaderSelected(header: MenuHeader): boolean {\n if (!header.headerOptions?.length) return false;\n return header.headerOptions.some(option => option === this.selectedOption);\n }\n\n public getCardButtonsRows(): any[][] {\n if (!this.cardButtons || !this.maxCardButtonsPerRow) return [];\n const rows = [];\n for (let i = 0; i < this.cardButtons.length; i += this.maxCardButtonsPerRow) {\n rows.push(this.cardButtons.slice(i, i + this.maxCardButtonsPerRow));\n }\n\n return rows;\n }\n\n public collapseMenu() {\n this.collapsedMode = !this.collapsedMode;\n this.toggleAllHeaders(this.collapsedMode);\n if (this.collapsedMode) {\n this.visibleSubMenu = false;\n }\n\n this.collapsed.emit(this.collapsedMode);\n }\n\n public hasOptionBadge(header: MenuHeader): boolean {\n return !!header.headerOptions?.some(\n option => typeof option.badge_text === 'string' && option.badge_text.trim().length > 0\n );\n }\n\n public clearSelection(clearSelection: boolean) {\n if (clearSelection) {\n this.selectedOption = null;\n if (this.collapsedMode) {\n this.toggleAllHeaders(true);\n }\n }\n }\n\n private updateOverflow(): void {\n const el = this.menuBody.nativeElement;\n const hasScroll = el.scrollHeight > el.clientHeight;\n el.classList.toggle('has-scroll', hasScroll);\n }\n\n private toggleAllHeaders(collapsed: boolean): void {\n if (!this.items?.length) return;\n\n for (const header of this.items) {\n if (header.headerOptions?.length) {\n header.collapsed = collapsed;\n }\n }\n }\n\n private adjustScrollOnGrow(index: number): void {\n const el = this.menuBody?.nativeElement;\n if (!el) return;\n\n el.scrollTo({top: 62 * index, behavior: 'auto'});\n }\n\n}\n","<div class=\"gravity-menu {{size}}\" [class.open]=\"isOpen\" [class.closing]=\"closing\"\n [class.collapsed]=\"collapsedMode && (size === 'xl' || size === 'lg')\">\n\n <div class=\"menu-header\">\n @if (logoUrl?.main_logo_url) {\n <svg-icon\n [src]=\"(collapsedMode && logoUrl.collapsed_logo_url) ? logoUrl.collapsed_logo_url : logoUrl.main_logo_url\"/>\n }\n\n @if ((size === 'md' || size === 'sm') && showCloseButton) {\n <gravity-icon\n [iconSize]=\"'lg-24'\" [iconName]=\"'unsuccess'\" (click)=\"closeMenu()\"/>\n }\n\n @if (collapsable && (size === 'xl' || size === 'lg')) {\n <div class=\"collapse-button\" (click)=\"collapseMenu()\">\n <gravity-icon [style.--icon-color]=\"'var(--bg-button-active-primary)'\" [iconSize]=\"'sm-12'\"\n [iconName]=\"collapsedMode ? 'arrow-right' : 'arrow-left'\"/>\n </div>\n }\n </div>\n\n <div class=\"menu-content\">\n <section #menuBody class=\"menu-body\" [class.sub-menu]=\"visibleSubMenu\">\n <div class=\"menu-section\">\n @for (header of items; track header; let i = $index) {\n <div class=\"levels\">\n <section class=\"first-level\" [class.selected]=\"isHeaderSelected(header)\"\n [routerLink]=\"header.link || undefined\" (click)=\"toggleMenuHeader(header, i)\"\n [class.is-open]=\"!header.collapsed\" [class.empty]=\"header.headerOptions?.length < 1\"\n [style.--expanded-margin]=\"header.headerOptions?.length > 0 ? (38 + (34 * header.headerOptions?.length)) + 'px' : '0'\">\n <p class=\"hr-label sm-regular\">\n @if (header.icon !== '') {\n <gravity-icon [style.--icon-color]=\"'var(--option-icon-color)'\" [iconName]=\"header.icon\" [iconSize]=\"'md-16'\"/>\n }\n @if (hasOptionBadge(header) && (size === 'xl' || size === 'lg')) {\n <gravity-badge class=\"badge\"\n [class.collapsed]=\"collapsedMode\" [size]=\"'sm'\" [type]=\"'neutro'\"></gravity-badge>\n }\n {{ header.text }}\n </p>\n @if (!collapsedMode) {\n <div>\n @if (header.headerOptions?.length > 0) {\n <gravity-icon [iconSize]=\"'sm-12'\" [iconName]=\"header.collapsed ? 'arrow-down' : 'arrow-up'\"/>\n }\n </div>\n }\n </section>\n @if (!header.collapsed && header.headerOptions?.length > 0) {\n <section class=\"second-level\"\n [@fadeSlide] [style.--submenu-offset]=\"((156 - scrollPosition) + (78 * i)) + 'px'\"\n [ngClass]=\"collapsedMode ? 'elevation-xs' : ''\">\n <div class=\"options-list\" [class.collapsed]=\"collapsedMode\">\n @for (option of header.headerOptions; track option) {\n <div class=\"option\" [attr.data-cy]=\"option.cypress_tag\" [class.selected]=\"option === selectedOption\">\n <div class=\"line\"\n [class.selected]=\"(size === 'xl' || size == 'lg') && option === selectedOption\"></div>\n <div class=\"option-text\"\n [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, header)\">\n {{ option.text }}\n @if (option.badge_text && (size === 'xl' || size === 'lg')) {\n <gravity-badge\n [text]=\"option.badge_text\" [type]=\"'neutro'\" [size]=\"'sm'\"></gravity-badge>\n }\n </div>\n </div>\n }\n </div>\n </section>\n }\n </div>\n }\n </div>\n </section>\n\n @if ((secondaryActions || userInfo) && (size === 'xl' || size === 'lg')) {\n <section\n class=\"menu-footer elevation-xs\">\n <section class=\"footer-content\">\n @if (secondaryActions) {\n <div class=\"secondary-actions\">\n @for (action of secondaryActions; track action) {\n <div class=\"action\"\n (click)=\"action.callback(); clearSelection(action.clear_selection)\">\n @if (action.icon !== '') {\n <gravity-icon [iconName]=\"action.icon\" [iconSize]=\"'md-16'\"/>\n }\n <span class=\"hr-label sm-regular\">{{ action.text }}</span>\n </div>\n }\n </div>\n }\n @if (secondaryActions && userInfo) {\n <hr class=\"separator-line\">\n }\n @if (userInfo) {\n <div class=\"user-info-list\">\n @for (userInfo of userInfo; track userInfo) {\n <div class=\"user-info\">\n @if (userInfo.icon !== '') {\n <gravity-icon class=\"icon\" [iconName]=\"userInfo.icon\" [iconSize]=\"'sm-12'\"\n [tooltip]=\"collapsedMode ? tooltipUserInfoTemplate : null\" [contentType]=\"'template'\" [placement]=\"'right'\"/>\n }\n @if (!collapsedMode) {\n <span class=\"hr-label sm-regular\">{{ userInfo.info }}</span>\n }\n <ng-template #tooltipUserInfoTemplate>\n <gravity-tooltip-container [tooltipSimple]=\"{text: userInfo.info}\"/>\n </ng-template>\n </div>\n }\n </div>\n }\n </section>\n </section>\n }\n\n <!-- - - - - - - - - - - Mobile Resolutions - - - - - - - - - - -->\n\n @if ((cardButtons || userInfo) && (size === 'md' || size === 'sm')) {\n <section class=\"menu-footer-mobile\">\n <section class=\"footer-content\">\n @if (cardButtons) {\n <div class=\"secondary-actions\">\n <div class=\"card-buttons\">\n @for (row of getCardButtonsRows(); track row) {\n <div class=\"card-buttons-row\">\n @for (button of row; track button) {\n <gravity-card-button\n [type]=\"'secondary'\"\n [orientation]=\"'vrt-center'\"\n [iconName]=\"button.icon\" [label]=\"button.text\"\n (clicked)=\"button.callback(); clearSelection(button.clear_selection); selected.emit()\"/>\n }\n </div>\n }\n </div>\n @if (mainFooterAction) {\n <gravity-button [size]=\"'md'\" [type]=\"'tertiary'\" [iconName]=\"mainFooterAction.icon\"\n [iconPosition]=\"'left'\" (click)=\"mainFooterAction.callback()\"> {{ mainFooterAction.text }}\n </gravity-button>\n }\n </div>\n }\n @if (userInfo) {\n <div class=\"user-info-list\">\n @for (userInfo of userInfo; track userInfo) {\n <div 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 }\n </div>\n }\n </section>\n </section>\n }\n </div>\n</div>\n\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';\nimport {NgClass} from '@angular/common';\nimport {GravityCurrencyComponent} from '../gravity-currency/gravity-currency.component';\nimport {GravityIconComponent} from '../gravity-icon/gravity-icon.component';\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 standalone: true,\n imports: [NgClass, GravityCurrencyComponent, GravityIconComponent]\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 cypressTag: string;\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\"\n [class.disabled]=\"disabled\" #currencyDropdownShortTrigger>\n\n <!--Header-->\n @if (selectedItem) {\n <div class=\"header-item\" (click)=\"onTriggerClick($event)\"\n [attr.data-cy]=\"cypressTag ? 'currencyDropdownShort_'+cypressTag : null\">\n @if (showFlag) {\n <gravity-currency [size]=\"'sm-16'\" [currency]=\"{currency_iso: selectedItem.currency_iso}\"\n [disabled]=\"disabled\"/>\n }\n <span class=\"hr-body sm-regular\">{{ selectedItem.currency_iso }}</span>\n @if (!readonly && config.items) {\n <gravity-icon [iconSize]=\"'sm-12'\"\n [iconName]=\"dropdownOpen ?'arrow-up' : 'arrow-down'\"/>\n }\n </div>\n }\n\n <!--Panel-->\n @if (dropdownOpen && config.items) {\n <div class=\"currency-short-dropdown-panel\" [ngClass]=\"size\"\n #currencyDropdownShortPanel>\n @for (item of config.items; track item) {\n <div class=\"panel-item\" [class.selected-item]=\"selectedItem?.currency_id === item.currency_id\"\n [attr.data-cy]=\"'currencyDropdownShort_item'+item.currency_iso\" (click)=\"onItemSelect(item, $event)\">\n @if (showFlag) {\n <gravity-currency [size]=\"'sm-16'\" [currency]=\"{currency_iso: item.currency_iso}\"\n [disabled]=\"disabled\"/>\n }\n <span class=\"hr-body sm-regular\">{{ item.currency_iso }}</span>\n </div>\n }\n </div>\n }\n</div>\n","import {Component, EventEmitter, Input, OnChanges, Output, SimpleChanges} from '@angular/core';\nimport {GravityIconButtonComponent} from '../gravity-icon-button/gravity-icon-button.component';\nimport {FormsModule} from '@angular/forms';\nimport {\n GravityCurrencyDropdownShortComponent\n} from '../gravity-currency-dropdown-short/gravity-currency-dropdown-short.component';\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 standalone: true,\n imports: [GravityIconButtonComponent, FormsModule, GravityCurrencyDropdownShortComponent]\n})\n\nexport class GravityTextFieldAmountOnlyComponent implements OnChanges {\n // Configuration\n @Input() public cypressTag: string;\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 @Input() public width: 'standard' | 'full' = 'standard';\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 //Clean component\n public reset(priority: 'crypto' | 'fiat' = 'crypto'): void {\n this.priority = priority;\n\n this.inputValue = '';\n this.valueFiat = '';\n this.valueCrypto = '';\n\n this.state = null;\n }\n\n public onInputValueChange(value: number | string): void {\n this.inputValue = value as any;\n }\n}\n","<div class=\"amount-only-text-field {{state ? state : null}}\" [class.disabled]=\"disabled\"\n [attr.data-cy]=\"cypressTag ? 'textFieldAmount_'+cypressTag : null\" [class.standard-width]=\"width === 'standard'\"\n [class.full-width]=\"width === 'full'\">\n\n <!--Switch-->\n @if (!readonly) {\n <gravity-icon-button (clickOnIcon)=\"swapCurrencies()\" [icon]=\"'swaps'\"\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\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\" (ngModelChange)=\"onInputValueChange($event)\"\n placeholder=\"{{placeholder}}\" type=\"number\">\n\n @if (priority == 'fiat') {\n <gravity-currency-dropdown-short [size]=\"fiatCurrenciesSize\" [disabled]=\"disabled\"\n (onClick)=\"updateFiatCurrency($event)\" [cypressTag]=\"'amountFiat'\"\n [config]=\"fiatCurrencies\"/>\n }\n @if (priority == 'crypto') {\n <p class=\"hr-body sm-regular\" [class.gravity-padding-inline-xxs]=\"fiatCurrenciesSize == 'sm'\"\n [class.gravity-padding-inline-sm]=\"fiatCurrenciesSize == 'md'\">{{ cryptoCurrency.currency_iso }}</p>\n }\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 @if (priority == 'crypto') {\n <gravity-currency-dropdown-short [size]=\"fiatCurrenciesSize\" [readonly]=\"true\" [disabled]=\"disabled\"\n [config]=\"fiatCurrencies\"/>\n }\n @if (priority == 'fiat') {\n <p class=\"hr-body sm-regular\" [class.gravity-padding-inline-xxs]=\"fiatCurrenciesSize == 'sm'\"\n [class.gravity-padding-inline-sm]=\"fiatCurrenciesSize == 'md'\">{{ cryptoCurrency.currency_iso }}</p>\n }\n </div>\n </div>\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 {\n GravityTextFieldAmountOnlyComponent\n} 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\";\nimport {GravityBadgeComponent} from \"./components/gravity-badge/gravity-badge.component\";\n\n@NgModule({\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 GravityAttachFileComponent,\n GravityAvatarStackComponent,\n GravityGenericAvatarComponent,\n GravityBadgeComponent,\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 NodeComponent,\n NodeToggleComponent,\n NodeCheckboxComponent,\n NodeNameComponent,\n FilterByPipe,\n DateAbbreviationPipe,\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 exports: [\n GravityAttachFileComponent,\n GravityAvatarStackComponent,\n GravityGenericAvatarComponent,\n GravityBadgeComponent,\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-badge/gravity-badge.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-tree-view/models/node-item';\nexport * from './lib/components/gravity-tree-view/models/node-state';\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":["i1.GravityDropdownManagerService","i2","i2.FilterByPipe","i3","i1.BsDatepickerActions","height","width","shift","i1.HeaderTypeService","i2.BsDatepickerConfig","i3.BsDatepickerCallbacks","i4.BsDatepickerStore","i5.BsDatepickerActions","i6.BsDatepickerEffects","i1.BsDatepickerInlineConfig","i1.BsDaterangepickerInlineConfig","previousDate","i1.BsDaterangepickerConfig","i1","i1.GravityInstantNotificationsService","i1.TreeService","i1.GravityResponsiveService","i1.PushNotificationsService","i2.GravityInstantNotificationsService"],"mappings":"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"}
|