@educarehq/solaris-components 0.5.6 → 0.5.7
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.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"educarehq-solaris-components.mjs","sources":["../../../projects/solaris-components/src/lib/navigations/dropdown/content/directives/dropdown-content-trigger.directive.ts","../../../projects/solaris-components/src/lib/navigations/dropdown/content/directives/dropdown-content-panel.directive.ts","../../../projects/solaris-components/src/lib/navigations/dropdown/content/service/dropdown-content-registry.service.ts","../../../projects/solaris-components/src/lib/navigations/dropdown/content/component/dropdown-content.ts","../../../projects/solaris-components/src/lib/navigations/dropdown/content/component/dropdown-content.html","../../../projects/solaris-components/src/lib/navigations/broadcrumb/component/breadcrumb.ts","../../../projects/solaris-components/src/lib/navigations/broadcrumb/component/breadcrumb.html","../../../projects/solaris-components/src/lib/navigations/stepper/item/component/stepper-item.ts","../../../projects/solaris-components/src/lib/navigations/stepper/item/component/stepper-item.html","../../../projects/solaris-components/src/lib/feedbacks/badge/component/badge.ts","../../../projects/solaris-components/src/lib/feedbacks/badge/component/badge.html","../../../projects/solaris-components/src/lib/navigations/stepper/component/stepper.ts","../../../projects/solaris-components/src/lib/navigations/stepper/component/stepper.html","../../../projects/solaris-components/src/lib/navigations/popover/directives/popover-trigger.directive.ts","../../../projects/solaris-components/src/lib/navigations/popover/directives/popover-panel.directive.ts","../../../projects/solaris-components/src/lib/navigations/popover/model/popover.type.ts","../../../projects/solaris-components/src/lib/navigations/popover/component/popover.ts","../../../projects/solaris-components/src/lib/navigations/popover/component/popover.html","../../../projects/solaris-components/src/lib/navigations/tabs/component/tabs.ts","../../../projects/solaris-components/src/lib/navigations/tabs/component/tabs.html","../../../projects/solaris-components/src/lib/navigations/tabs/tab/component/tab.ts","../../../projects/solaris-components/src/lib/navigations/tabs/tab/component/tab.html","../../../projects/solaris-components/src/lib/feedbacks/loading-overlay/loading-overlay.ts","../../../projects/solaris-components/src/lib/feedbacks/loading-overlay/loading-overlay.html","../../../projects/solaris-components/src/services/tooltip/floating-position.util.ts","../../../projects/solaris-components/src/services/tooltip/floating-overlay.service.ts","../../../projects/solaris-components/src/lib/feedbacks/rich-tooltip/component/rich-tooltip-panel.ts","../../../projects/solaris-components/src/lib/feedbacks/rich-tooltip/component/rich-tooltip-panel.html","../../../projects/solaris-components/src/lib/feedbacks/rich-tooltip/directives/rich-tooltip.directive.ts","../../../projects/solaris-components/src/lib/actions/button/directives/button.directive.ts","../../../projects/solaris-components/src/lib/feedbacks/notification/config/notification.config.ts","../../../projects/solaris-components/src/lib/feedbacks/notification/service/notification-intl.service.ts","../../../projects/solaris-components/src/lib/feedbacks/notification/service/notification.service.ts","../../../projects/solaris-components/src/lib/feedbacks/notification/components/item/notification-item.ts","../../../projects/solaris-components/src/lib/feedbacks/notification/components/item/notification-item.html","../../../projects/solaris-components/src/lib/feedbacks/notification/components/center/notification-center.ts","../../../projects/solaris-components/src/lib/feedbacks/notification/components/center/notification-center.html","../../../projects/solaris-components/src/lib/feedbacks/notification/components/host/notification-host.ts","../../../projects/solaris-components/src/lib/feedbacks/notification/components/host/notification-host.html","../../../projects/solaris-components/src/lib/feedbacks/tooltip/component/tooltip-panel.ts","../../../projects/solaris-components/src/lib/feedbacks/tooltip/component/tooltip-panel.html","../../../projects/solaris-components/src/lib/feedbacks/tooltip/directives/tooltip.directive.ts","../../../projects/solaris-components/src/lib/feedbacks/loading/component/loading.ts","../../../projects/solaris-components/src/lib/feedbacks/loading/component/loading.html","../../../projects/solaris-components/src/lib/layouts/image-slider/component/image-slider.ts","../../../projects/solaris-components/src/lib/layouts/image-slider/component/image-slider.html","../../../projects/solaris-components/src/lib/layouts/section/component/section.ts","../../../projects/solaris-components/src/lib/layouts/section/component/section.html","../../../projects/solaris-components/src/lib/layouts/divider/component/divider.ts","../../../projects/solaris-components/src/lib/layouts/divider/component/divider.html","../../../projects/solaris-components/src/lib/layouts/dialog/token/dialog-step-data.token.ts","../../../projects/solaris-components/src/lib/layouts/dialog/token/dialog-data.token.ts","../../../projects/solaris-components/src/lib/layouts/dialog/token/dialog-ref.ts","../../../projects/solaris-components/src/lib/layouts/dialog/components/dialog-steps-container/dialog-steps-container.ts","../../../projects/solaris-components/src/lib/layouts/dialog/components/dialog-steps-container/dialog-steps-container.html","../../../projects/solaris-components/src/lib/layouts/dialog/components/dialog-container/dialog-container.ts","../../../projects/solaris-components/src/lib/layouts/dialog/components/dialog-container/dialog-container.html","../../../projects/solaris-components/src/lib/layouts/dialog/service/dialog.service.ts","../../../projects/solaris-components/src/lib/layouts/drawer/directives/drawer-header.directive.ts","../../../projects/solaris-components/src/lib/layouts/drawer/directives/drawer-footer.directive.ts","../../../projects/solaris-components/src/lib/layouts/drawer/component/drawer.ts","../../../projects/solaris-components/src/lib/layouts/drawer/component/drawer.html","../../../projects/solaris-components/src/lib/layouts/table/directives/filter-panel-footer.directive.ts","../../../projects/solaris-components/src/lib/layouts/table/components/filters/filter/table-filters.ts","../../../projects/solaris-components/src/lib/layouts/table/components/filters/filter/table-filters.html","../../../projects/solaris-components/src/lib/layouts/table/components/filters/field/filter-field.ts","../../../projects/solaris-components/src/lib/layouts/table/components/filters/field/filter-field.html","../../../projects/solaris-components/src/lib/layouts/table/directives/filter-panel-chips.directive.ts","../../../projects/solaris-components/src/lib/layouts/table/components/filters/panel/filter-panel.ts","../../../projects/solaris-components/src/lib/layouts/table/components/filters/panel/filter-panel.html","../../../projects/solaris-components/src/lib/layouts/table/components/filters/chip/filter-chip.ts","../../../projects/solaris-components/src/lib/layouts/table/components/filters/chip/filter-chip.html","../../../projects/solaris-components/src/lib/layouts/table/components/skeleton/table-skeleton.ts","../../../projects/solaris-components/src/lib/layouts/table/components/skeleton/table-skeleton.html","../../../projects/solaris-components/src/lib/layouts/table/components/filters/bar/filter-bar.ts","../../../projects/solaris-components/src/lib/layouts/table/components/filters/bar/filter-bar.html","../../../projects/solaris-components/src/lib/layouts/table/directives/column.directive.ts","../../../projects/solaris-components/src/lib/common/service/id-generator.service.ts","../../../projects/solaris-components/src/lib/layouts/table/components/column/table-column.ts","../../../projects/solaris-components/src/lib/layouts/table/components/column/table-column.html","../../../projects/solaris-components/src/lib/common/helper/unique-id.ts","../../../projects/solaris-components/src/lib/actions/checkbox/component/checkbox.ts","../../../projects/solaris-components/src/lib/actions/checkbox/component/checkbox.html","../../../projects/solaris-components/src/lib/layouts/table/components/table/table.ts","../../../projects/solaris-components/src/lib/layouts/table/components/table/table.html","../../../projects/solaris-components/src/lib/layouts/table/components/row/table-row.ts","../../../projects/solaris-components/src/lib/layouts/table/components/row/table-row.html","../../../projects/solaris-components/src/lib/layouts/page/directives/solaris-header.directive.ts","../../../projects/solaris-components/src/lib/layouts/page/directives/solaris-footer.directive.ts","../../../projects/solaris-components/src/lib/layouts/page/directives/solaris-body.directive.ts","../../../projects/solaris-components/src/lib/layouts/page/component/page.ts","../../../projects/solaris-components/src/lib/layouts/page/component/page.html","../../../projects/solaris-components/src/lib/layouts/page/header/directives/solaris-header-description.directive.ts","../../../projects/solaris-components/src/lib/layouts/page/header/directives/solaris-header-breadcrumb.directive.ts","../../../projects/solaris-components/src/lib/layouts/page/header/directives/solaris-header-title.directive.ts","../../../projects/solaris-components/src/lib/layouts/page/header/title/component/page-header-title.ts","../../../projects/solaris-components/src/lib/layouts/page/header/title/component/page-header-title.html","../../../projects/solaris-components/src/lib/layouts/page/header/directives/solaris-header-actions.directive.ts","../../../projects/solaris-components/src/lib/layouts/page/header/component/page-header.ts","../../../projects/solaris-components/src/lib/layouts/page/header/component/page-header.html","../../../projects/solaris-components/src/lib/actions/button/directives/button-group.directive.ts","../../../projects/solaris-components/src/lib/actions/radio/token/radio-group.token.ts","../../../projects/solaris-components/src/lib/actions/radio/component/radio.ts","../../../projects/solaris-components/src/lib/actions/radio/component/radio.html","../../../projects/solaris-components/src/lib/actions/radio/group/component/radio-group.ts","../../../projects/solaris-components/src/lib/actions/radio/group/component/radio-group.html","../../../projects/solaris-components/src/lib/actions/cards/cards-group/token/card-group.token.ts","../../../projects/solaris-components/src/lib/actions/cards/card/component/card.ts","../../../projects/solaris-components/src/lib/actions/cards/card/component/card.html","../../../projects/solaris-components/src/lib/actions/cards/selection-card/component/selection-card.ts","../../../projects/solaris-components/src/lib/actions/cards/selection-card/component/selection-card.html","../../../projects/solaris-components/src/lib/forms/form-field/messages/error/field-error.ts","../../../projects/solaris-components/src/lib/forms/form-field/messages/error/field-error.html","../../../projects/solaris-components/src/lib/actions/cards/cards-group/component/card-group.ts","../../../projects/solaris-components/src/lib/actions/cards/cards-group/component/card-group.html","../../../projects/solaris-components/src/lib/actions/cards/card/directives/card-slots.directive.ts","../../../projects/solaris-components/src/lib/visual/avatar/directives/avatar-overlay.directive.ts","../../../projects/solaris-components/src/lib/visual/internal/avatar-presence/component/avatar-presence.ts","../../../projects/solaris-components/src/lib/visual/internal/avatar-presence/component/avatar-presence.html","../../../projects/solaris-components/src/lib/visual/avatar/component/avatar.ts","../../../projects/solaris-components/src/lib/visual/avatar/component/avatar.html","../../../projects/solaris-components/src/lib/visual/presence-avatar/component/presence-avatar.ts","../../../projects/solaris-components/src/lib/visual/presence-avatar/component/presence-avatar.html","../../../projects/solaris-components/src/lib/visual/avatar-stack/component/avatar-stack.ts","../../../projects/solaris-components/src/lib/visual/avatar-stack/component/avatar-stack.html","../../../projects/solaris-components/src/lib/visual/avatar-dropdown/component/avatar-dropdown.ts","../../../projects/solaris-components/src/lib/visual/avatar-dropdown/component/avatar-dropdown.html","../../../projects/solaris-components/src/lib/visual/card-media/directives/card-media-overlay.directive.ts","../../../projects/solaris-components/src/lib/visual/card-media/component/card-media.ts","../../../projects/solaris-components/src/lib/visual/card-media/component/card-media.html","../../../projects/solaris-components/src/lib/forms/phone-input/helper/phone-input.sanitize.ts","../../../projects/solaris-components/src/lib/forms/phone-input/helper/phone-input.country.ts","../../../projects/solaris-components/src/lib/forms/form-field/tokens/form-field-features.ts","../../../projects/solaris-components/src/lib/forms/form-field/controller/form-field-controller.ts","../../../projects/solaris-components/src/lib/forms/input-text/tokens/input.token.ts","../../../projects/solaris-components/src/lib/forms/input-text/directives/input-text.directive.ts","../../../projects/solaris-components/src/lib/forms/phone-input/component/phone-input.ts","../../../projects/solaris-components/src/lib/forms/phone-input/component/phone-input.html","../../../projects/solaris-components/src/lib/forms/input-text/directives/input-password.directive.ts","../../../projects/solaris-components/src/lib/forms/input-text/directives/input-email.directive.ts","../../../projects/solaris-components/src/lib/forms/form-field/tokens/form-field-controller.token.ts","../../../projects/solaris-components/src/lib/forms/input-text/password-toggle/password-toggle.ts","../../../projects/solaris-components/src/lib/forms/input-text/password-toggle/password-toggle.html","../../../projects/solaris-components/src/lib/forms/form-field/directives/control-bridge.directive.ts","../../../projects/solaris-components/src/lib/forms/form-field/directives/prefix.directive.ts","../../../projects/solaris-components/src/lib/forms/form-field/directives/suffix.directive.ts","../../../projects/solaris-components/src/lib/forms/form-field/component/form-field.ts","../../../projects/solaris-components/src/lib/forms/form-field/component/form-field.html","../../../projects/solaris-components/src/lib/forms/select/component/select.ts","../../../projects/solaris-components/src/lib/forms/select/component/select.html","../../../projects/solaris-components/src/public-api.ts","../../../projects/solaris-components/src/educarehq-solaris-components.ts"],"sourcesContent":["import { Directive, ElementRef, inject, Renderer2 } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[solaris-dropdown-content-trigger]',\r\n standalone: true\r\n})\r\nexport class SolarisDropdownContentTriggerDirective {\r\n public readonly elementRef: ElementRef<HTMLElement> = inject(ElementRef<HTMLElement>);\r\n private readonly solarisRenderer: Renderer2 = inject(Renderer2);\r\n\r\n public ensureFocusable(): void {\r\n const solarisEl = this.elementRef.nativeElement;\r\n const solarisTag = solarisEl.tagName.toLowerCase();\r\n const solarisIsNaturallyFocusable =\r\n solarisTag === 'button' || solarisTag === 'a' ||\r\n solarisEl.hasAttribute('tabindex');\r\n\r\n if (!solarisIsNaturallyFocusable) {\r\n this.solarisRenderer.setAttribute(solarisEl, 'tabindex', '0');\r\n this.solarisRenderer.setAttribute(solarisEl, 'role', 'button');\r\n }\r\n\r\n this.solarisRenderer.setAttribute(solarisEl, 'aria-haspopup', 'true');\r\n }\r\n\r\n public setExpanded(isExpanded: boolean, panelId: string): void {\r\n const solarisEl = this.elementRef.nativeElement;\r\n this.solarisRenderer.setAttribute(solarisEl, 'aria-expanded', String(isExpanded));\r\n this.solarisRenderer.setAttribute(solarisEl, 'aria-controls', panelId);\r\n }\r\n}\r\n","import { Directive, inject, TemplateRef } from '@angular/core';\r\n\r\n@Directive({\r\n selector: 'ng-template[solaris-dropdown-content-panel]',\r\n standalone: true,\r\n})\r\nexport class SolarisDropdownContentPanelDirective {\r\n public readonly templateRef: TemplateRef<unknown> = inject(TemplateRef<unknown>);\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\nexport interface SolarisDropdownContentInterface {\r\n closeFromRegistry(): void;\r\n}\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class SolarisDropdownContentRegistry {\r\n private readonly solarisInstances: Set<SolarisDropdownContentInterface> = new Set<SolarisDropdownContentInterface>();\r\n\r\n public register(instance: SolarisDropdownContentInterface): void {\r\n this.solarisInstances.add(instance);\r\n }\r\n\r\n public unregister(instance: SolarisDropdownContentInterface): void {\r\n this.solarisInstances.delete(instance);\r\n }\r\n\r\n public notifyOpen(openingInstance: SolarisDropdownContentInterface): void {\r\n for (const solarisInstance of this.solarisInstances) {\r\n if (solarisInstance !== openingInstance) {\r\n solarisInstance.closeFromRegistry();\r\n }\r\n }\r\n }\r\n}\r\n","import {\r\n AfterContentInit, Component, ContentChild, DestroyRef, ElementRef, Input,\r\n ViewContainerRef, ViewEncapsulation, inject, OnDestroy\r\n} from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { Overlay, OverlayRef } from '@angular/cdk/overlay';\r\nimport { TemplatePortal } from '@angular/cdk/portal';\r\n\r\nimport { SolarisDropdownContentInterface, SolarisDropdownContentRegistry } from '../service/dropdown-content-registry.service';\r\nimport { SolarisDropdownContentTriggerDirective } from '../directives/dropdown-content-trigger.directive';\r\nimport { SolarisDropdownContentPanelDirective } from '../directives/dropdown-content-panel.directive';\r\nimport { SolarisDropdownWidthMode } from '../model/dropdown-content.type';\r\nimport { fromEvent, Subscription } from 'rxjs';\r\nimport { filter } from 'rxjs/operators';\r\n\r\n@Component({\r\n selector: 'solaris-dropdown-content',\r\n standalone: true,\r\n imports: [],\r\n templateUrl: './dropdown-content.html',\r\n styleUrls: ['./dropdown-content.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class SolarisDropdownContent implements AfterContentInit, OnDestroy, SolarisDropdownContentInterface {\r\n private readonly solarisRegistry = inject(SolarisDropdownContentRegistry);\r\n private readonly solarisVcr = inject(ViewContainerRef);\r\n private readonly solarisDestroyRef = inject(DestroyRef);\r\n private readonly solarisOverlay = inject(Overlay);\r\n\r\n @ContentChild(SolarisDropdownContentTriggerDirective) trigger?: SolarisDropdownContentTriggerDirective;\r\n @ContentChild(SolarisDropdownContentPanelDirective) panel?: SolarisDropdownContentPanelDirective;\r\n\r\n @Input() container?: HTMLElement | ElementRef<HTMLElement>;\r\n @Input() widthMode: SolarisDropdownWidthMode = 'auto';\r\n @Input() maxWidth: string = '72rem';\r\n @Input() closeDelay = 120;\r\n @Input() openDelay = 60;\r\n\r\n private readonly solarisPanelId = `solaris-dropdown-panel-${Math.random().toString(16).slice(2)}`;\r\n private solarisIsHoveringTrigger = false;\r\n private solarisPortal?: TemplatePortal<unknown>;\r\n private solarisIsHoveringPanel = false;\r\n private solarisOutsideClickSub?: Subscription;\r\n private solarisIsPinned = false;\r\n private solarisOverlayRef?: OverlayRef;\r\n private solarisIsOpen = false;\r\n private solarisCloseTimer?: number;\r\n private solarisOpenTimer?: number;\r\n\r\n ngAfterContentInit(): void {\r\n if (!this.trigger) throw new Error('solaris-dropdown: missing [solaris-dropdown-trigger].');\r\n if (!this.panel) throw new Error('solaris-dropdown: missing <ng-template solaris-dropdown-content-panel>.');\r\n\r\n this.solarisRegistry.register(this);\r\n this.trigger.ensureFocusable();\r\n this.trigger.setExpanded(false, this.solarisPanelId);\r\n\r\n const solarisTriggerEl = this.trigger.elementRef.nativeElement;\r\n\r\n fromEvent(solarisTriggerEl, 'mouseenter').pipe(takeUntilDestroyed(this.solarisDestroyRef))\r\n .subscribe(() => this.solarisOnTriggerEnter());\r\n\r\n fromEvent(solarisTriggerEl, 'mouseleave').pipe(takeUntilDestroyed(this.solarisDestroyRef))\r\n .subscribe(() => this.solarisOnTriggerLeave());\r\n\r\n fromEvent<MouseEvent>(solarisTriggerEl, 'click').pipe(takeUntilDestroyed(this.solarisDestroyRef))\r\n .subscribe((solarisEvent) => {\r\n solarisEvent.preventDefault();\r\n this.solarisTogglePinned();\r\n });\r\n\r\n fromEvent<KeyboardEvent>(solarisTriggerEl, 'keydown').pipe(takeUntilDestroyed(this.solarisDestroyRef))\r\n .subscribe((solarisEvent) => {\r\n if (solarisEvent.key === 'Enter' || solarisEvent.key === ' ') {\r\n solarisEvent.preventDefault();\r\n this.solarisTogglePinned();\r\n }\r\n\r\n if (solarisEvent.key === 'Escape') {\r\n solarisEvent.preventDefault();\r\n this.close('escape');\r\n }\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.solarisRegistry.unregister(this);\r\n this.solarisUnbindOutsideClick();\r\n this.solarisOverlayRef?.dispose();\r\n }\r\n\r\n public closeFromRegistry(): void {\r\n this.close('registry');\r\n }\r\n\r\n private solarisOnTriggerEnter(): void {\r\n this.solarisIsHoveringTrigger = true;\r\n if (this.solarisIsPinned) return;\r\n this.solarisScheduleOpen('hover');\r\n }\r\n\r\n private solarisOnTriggerLeave(): void {\r\n this.solarisIsHoveringTrigger = false;\r\n if (this.solarisIsPinned) return;\r\n this.solarisScheduleClose();\r\n }\r\n\r\n private solarisOnPanelEnter(): void {\r\n this.solarisIsHoveringPanel = true;\r\n if (this.solarisIsPinned) return;\r\n this.solarisClearCloseTimer();\r\n }\r\n\r\n private solarisOnPanelLeave(): void {\r\n this.solarisIsHoveringPanel = false;\r\n if (this.solarisIsPinned) return;\r\n this.solarisScheduleClose();\r\n }\r\n\r\n private solarisTogglePinned(): void {\r\n if (!this.solarisIsOpen) {\r\n this.solarisIsPinned = true;\r\n this.open('pinned');\r\n return;\r\n }\r\n\r\n if (this.solarisIsPinned) {\r\n this.close('toggle');\r\n return;\r\n }\r\n\r\n this.solarisIsPinned = true;\r\n this.solarisBindOutsideClick();\r\n }\r\n\r\n private solarisScheduleOpen(reason: 'hover' | 'pinned'): void {\r\n this.solarisClearOpenTimer();\r\n this.solarisOpenTimer = globalThis.setTimeout(() => this.open(reason), this.openDelay);\r\n }\r\n\r\n private solarisScheduleClose(): void {\r\n this.solarisClearCloseTimer();\r\n this.solarisCloseTimer = globalThis.setTimeout(() => {\r\n if (this.solarisIsPinned) return;\r\n if (this.solarisIsHoveringTrigger || this.solarisIsHoveringPanel) return;\r\n this.close('hover-leave');\r\n }, this.closeDelay);\r\n }\r\n\r\n private solarisClearOpenTimer(): void {\r\n if (this.solarisOpenTimer) globalThis.clearTimeout(this.solarisOpenTimer);\r\n this.solarisOpenTimer = undefined;\r\n }\r\n\r\n private solarisClearCloseTimer(): void {\r\n if (this.solarisCloseTimer) globalThis.clearTimeout(this.solarisCloseTimer);\r\n this.solarisCloseTimer = undefined;\r\n }\r\n\r\n public open(reason: 'hover' | 'pinned'): void {\r\n if (!this.trigger || !this.panel) return;\r\n if (reason === 'hover') this.solarisIsPinned = false;\r\n\r\n this.solarisRegistry.notifyOpen(this);\r\n\r\n const solarisTriggerEl = this.trigger.elementRef.nativeElement;\r\n const solarisOriginRect = solarisTriggerEl.getBoundingClientRect();\r\n\r\n const solarisContainerEl = this.solarisGetContainerEl();\r\n const solarisContainerRect = solarisContainerEl?.getBoundingClientRect();\r\n const solarisIsFull = this.widthMode === 'full';\r\n const solarisViewportMargin = solarisIsFull ? 0 : 8;\r\n const solarisOffsetX = this.solarisComputeOffsetX(solarisOriginRect, solarisContainerRect);\r\n\r\n const solarisPositionStrategy = this.solarisOverlay\r\n .position().flexibleConnectedTo(solarisTriggerEl)\r\n .withFlexibleDimensions(false).withPush(!solarisIsFull)\r\n .withViewportMargin(solarisViewportMargin).withDefaultOffsetX(solarisOffsetX)\r\n .withDefaultOffsetY(8).withPositions([\r\n { originX: 'start', originY: 'bottom', overlayX: 'start', overlayY: 'top' },\r\n { originX: 'end', originY: 'bottom', overlayX: 'end', overlayY: 'top' },\r\n ]);\r\n\r\n if (this.solarisOverlayRef) {\r\n this.solarisOverlayRef.updatePositionStrategy(solarisPositionStrategy);\r\n } else {\r\n this.solarisOverlayRef = this.solarisOverlay.create({\r\n positionStrategy: solarisPositionStrategy,\r\n scrollStrategy: this.solarisOverlay.scrollStrategies.reposition(),\r\n panelClass: ['solaris-dropdown-content-overlay']\r\n });\r\n\r\n this.solarisOverlayRef.detachments().pipe(takeUntilDestroyed(this.solarisDestroyRef))\r\n .subscribe(() => this.solarisResetState());\r\n }\r\n\r\n this.solarisApplyOverlaySize(solarisOriginRect, solarisContainerRect);\r\n this.solarisPortal ??= new TemplatePortal(this.panel.templateRef, this.solarisVcr);\r\n if (!this.solarisOverlayRef.hasAttached()) {\r\n this.solarisOverlayRef.attach(this.solarisPortal);\r\n this.solarisWirePanelEvents();\r\n }\r\n\r\n this.solarisIsOpen = true;\r\n this.trigger.setExpanded(true, this.solarisPanelId);\r\n\r\n if (this.solarisIsPinned) {\r\n this.solarisBindOutsideClick();\r\n } else {\r\n this.solarisUnbindOutsideClick();\r\n }\r\n\r\n this.solarisClearCloseTimer();\r\n }\r\n\r\n public close(reason: 'hover-leave' | 'toggle' | 'escape' | 'outside' | 'registry'): void {\r\n this.solarisClearOpenTimer();\r\n this.solarisClearCloseTimer();\r\n this.solarisIsPinned = false;\r\n this.solarisUnbindOutsideClick();\r\n\r\n if (this.solarisOverlayRef?.hasAttached()) {\r\n this.solarisOverlayRef.detach();\r\n }\r\n\r\n this.solarisIsOpen = false;\r\n this.trigger?.setExpanded(false, this.solarisPanelId);\r\n }\r\n\r\n private solarisResetState(): void {\r\n this.solarisIsOpen = false;\r\n this.solarisIsPinned = false;\r\n this.solarisIsHoveringPanel = false;\r\n this.solarisIsHoveringTrigger = false;\r\n this.solarisUnbindOutsideClick();\r\n this.trigger?.setExpanded(false, this.solarisPanelId);\r\n }\r\n\r\n private solarisWirePanelEvents(): void {\r\n if (!this.solarisOverlayRef) return;\r\n\r\n const solarisPanelHost = this.solarisOverlayRef.overlayElement;\r\n solarisPanelHost.id = this.solarisPanelId;\r\n\r\n fromEvent(solarisPanelHost, 'mouseenter').pipe(takeUntilDestroyed(this.solarisDestroyRef))\r\n .subscribe(() => this.solarisOnPanelEnter());\r\n\r\n fromEvent(solarisPanelHost, 'mouseleave').pipe(takeUntilDestroyed(this.solarisDestroyRef))\r\n .subscribe(() => this.solarisOnPanelLeave());\r\n\r\n fromEvent<KeyboardEvent>(solarisPanelHost, 'keydown').pipe(takeUntilDestroyed(this.solarisDestroyRef))\r\n .subscribe((solarisEvent) => {\r\n if (solarisEvent.key === 'Escape') {\r\n solarisEvent.preventDefault();\r\n this.close('escape');\r\n this.trigger?.elementRef.nativeElement.focus();\r\n }\r\n });\r\n }\r\n\r\n private solarisBindOutsideClick(): void {\r\n if (!this.solarisIsPinned) return;\r\n if (this.solarisOutsideClickSub) return;\r\n\r\n const solarisTriggerEl = this.trigger?.elementRef.nativeElement;\r\n const solarisOverlayEl = this.solarisOverlayRef?.overlayElement;\r\n\r\n if (!solarisTriggerEl || !solarisOverlayEl) return;\r\n\r\n this.solarisOutsideClickSub = fromEvent<MouseEvent>(document, 'mousedown')\r\n .pipe(\r\n filter(() => this.solarisIsPinned),\r\n filter((solarisEvent) => {\r\n const solarisTarget = solarisEvent.target as Node | null;\r\n if (!solarisTarget) return false;\r\n const solarisInsideTrigger = solarisTriggerEl.contains(solarisTarget);\r\n const solarisInsidePanel = solarisOverlayEl.contains(solarisTarget);\r\n return !solarisInsideTrigger && !solarisInsidePanel;\r\n }),\r\n takeUntilDestroyed(this.solarisDestroyRef)\r\n )\r\n .subscribe(() => this.close('outside'));\r\n }\r\n\r\n private solarisUnbindOutsideClick(): void {\r\n this.solarisOutsideClickSub?.unsubscribe();\r\n this.solarisOutsideClickSub = undefined;\r\n }\r\n\r\n private solarisGetContainerEl(): HTMLElement | undefined {\r\n const solarisContainer = this.container;\r\n if (!solarisContainer) return undefined;\r\n return solarisContainer instanceof ElementRef ? solarisContainer.nativeElement : solarisContainer;\r\n }\r\n\r\n private solarisComputeOffsetX(solarisOriginRect: DOMRect, solarisContainerRect?: DOMRect): number {\r\n if (this.widthMode === 'full') {\r\n return -solarisOriginRect.left;\r\n }\r\n\r\n if (this.widthMode === 'container' && solarisContainerRect) {\r\n return solarisContainerRect.left - solarisOriginRect.left;\r\n }\r\n\r\n return 0;\r\n }\r\n\r\n private solarisApplyOverlaySize(solarisOriginRect: DOMRect, solarisContainerRect?: DOMRect): void {\r\n if (!this.solarisOverlayRef) return;\r\n\r\n if (this.widthMode === 'match-trigger') {\r\n this.solarisOverlayRef.updateSize({ width: solarisOriginRect.width });\r\n return;\r\n }\r\n\r\n if (this.widthMode === 'full') {\r\n const solarisViewportWidth = document.documentElement.clientWidth;\r\n this.solarisOverlayRef.updateSize({\r\n width: solarisViewportWidth,\r\n maxWidth: solarisViewportWidth\r\n });\r\n return;\r\n }\r\n\r\n if (this.widthMode === 'container' && solarisContainerRect) {\r\n this.solarisOverlayRef.updateSize({\r\n width: solarisContainerRect.width,\r\n maxWidth: solarisContainerRect.width,\r\n });\r\n return;\r\n }\r\n\r\n this.solarisOverlayRef.updateSize({ maxWidth: this.maxWidth });\r\n }\r\n}\r\n","<ng-content></ng-content>\r\n","import { ChangeDetectionStrategy, Component, EventEmitter, HostBinding, Input, Output } from '@angular/core';\r\nimport { CdkMenu, CdkMenuItem, CdkMenuTrigger } from '@angular/cdk/menu';\r\nimport { RouterLink } from '@angular/router';\r\nimport { NgClass, NgTemplateOutlet } from '@angular/common';\r\n\r\nimport { SolarisBreadcrumbItem } from '../model/breadcrumb.type';\r\n\r\n@Component({\r\n selector: 'solaris-breadcrumb',\r\n standalone: true,\r\n imports: [\r\n NgClass,\r\n RouterLink,\r\n CdkMenu,\r\n CdkMenuItem,\r\n CdkMenuTrigger,\r\n NgTemplateOutlet\r\n ],\r\n templateUrl: './breadcrumb.html',\r\n styleUrl: './breadcrumb.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class SolarisBreadcrumb {\r\n @Input({ alias: 'min-items' }) minItems = 2;\r\n @Input({ alias: 'max-items' }) maxItems = 4;\r\n @Input() responsive = true;\r\n @Input({ required: true }) items: SolarisBreadcrumbItem[] = [];\r\n @HostBinding('class') hostClass = 'solaris-breadcrumb-host';\r\n @Output() itemSelect = new EventEmitter<{ id: string; item: SolarisBreadcrumbItem }>();\r\n\r\n get viewModel() {\r\n const items = this.items ?? [];\r\n const total = items.length;\r\n const max = Math.max(this.minItems, this.effectiveMaxItems);\r\n\r\n if (total <= max) {\r\n return { head: items, overflow: [] as SolarisBreadcrumbItem[], tail: [] as SolarisBreadcrumbItem[] };\r\n }\r\n\r\n const keepHead = 1;\r\n const keepTail = 1;\r\n\r\n const remaining = max - keepHead - keepTail;\r\n const extraTail = Math.max(0, remaining);\r\n\r\n const head = items.slice(0, keepHead);\r\n const tail = items.slice(total - (keepTail + extraTail), total);\r\n const overflow = items.slice(keepHead, total - tail.length);\r\n\r\n return { head, overflow, tail };\r\n }\r\n get effectiveMaxItems(): number {\r\n if (!this.responsive) return this.maxItems;\r\n\r\n const isSmall = typeof globalThis.matchMedia === \"function\" &&\r\n globalThis.matchMedia(\"(max-width: 640px)\").matches;\r\n\r\n return isSmall ? Math.max(this.minItems, 3) : this.maxItems;\r\n }\r\n\r\n protected getRouterCommands(it: SolarisBreadcrumbItem): any[] | null {\r\n return it.target?.kind === 'router' ? it.target.commands : null;\r\n }\r\n\r\n protected getRouterQueryParams(it: SolarisBreadcrumbItem): Record<string, any> | null {\r\n return it.target?.kind === 'router' ? (it.target.extras?.queryParams ?? null) : null;\r\n }\r\n\r\n protected shouldRenderSeparatorAfterHead(headIndex: number): boolean {\r\n if (headIndex < this.viewModel.head.length - 1) return true;\r\n return this.viewModel.overflow.length > 0 || this.viewModel.tail.length > 0;\r\n }\r\n\r\n protected onAction(item: SolarisBreadcrumbItem) {\r\n if (item.disabled) return;\r\n const t = item.target;\r\n if (t?.kind === 'action') this.itemSelect.emit({ id: t.id, item });\r\n }\r\n}\r\n","<nav class=\"solaris-breadcrumb\" aria-label=\"Breadcrumb\">\r\n <ol class=\"solaris-breadcrumb__list\">\r\n @for (it of viewModel.head; track it.label; let i = $index) {\r\n <li class=\"solaris-breadcrumb__item\">\r\n <ng-container [ngTemplateOutlet]=\"itemTpl\" [ngTemplateOutletContext]=\"{ $implicit: it }\"/>\r\n @if (shouldRenderSeparatorAfterHead(i)) {\r\n <span class=\"solaris-breadcrumb__sep\" aria-hidden=\"true\">\r\n <i class=\"ph ph-caret-right\"></i>\r\n </span>\r\n }\r\n </li>\r\n }\r\n\r\n @if (viewModel.overflow.length > 0) {\r\n <li class=\"solaris-breadcrumb__item\">\r\n <button type=\"button\" class=\"solaris-breadcrumb__ellipsis\" aria-label=\"Mostrar mais\" [cdkMenuTriggerFor]=\"overflowMenu\">\r\n <i class=\"ph ph-dots-three\"></i>\r\n </button>\r\n\r\n <ng-template #overflowMenu>\r\n <div class=\"solaris-breadcrumb__menu\" cdkMenu>\r\n @for (it of viewModel.overflow; track it.label) {\r\n <button type=\"button\" class=\"solaris-breadcrumb__menu-item\" cdkMenuItem (click)=\"onAction(it)\"\r\n [disabled]=\"it.disabled\" [routerLink]=\"getRouterCommands(it)\"\r\n [queryParams]=\"getRouterQueryParams(it)\">\r\n @if (it.icon) {\r\n <i class=\"solaris-breadcrumb__icon\" [ngClass]=\"it.icon\" aria-hidden=\"true\"></i>\r\n }\r\n <span class=\"solaris-breadcrumb__label\">{{ it.label }}</span>\r\n </button>\r\n }\r\n </div>\r\n </ng-template>\r\n\r\n @if (viewModel.tail.length > 0) {\r\n <span class=\"solaris-breadcrumb__sep\" aria-hidden=\"true\">\r\n <i class=\"ph ph-caret-right\"></i>\r\n </span>\r\n }\r\n </li>\r\n }\r\n\r\n @for (it of viewModel.tail; track it.label; let i = $index) {\r\n <li class=\"solaris-breadcrumb__item\" [class.is-current]=\"i === viewModel.tail.length - 1\">\r\n <ng-container [ngTemplateOutlet]=\"itemTpl\" [ngTemplateOutletContext]=\"{ $implicit: it, current: i === viewModel.tail.length - 1 }\"/>\r\n @if (it !== viewModel.tail[viewModel.tail.length - 1]) {\r\n <span class=\"solaris-breadcrumb__sep\" aria-hidden=\"true\">\r\n <i class=\"ph ph-caret-right\"></i>\r\n </span>\r\n }\r\n </li>\r\n }\r\n </ol>\r\n\r\n <ng-template #itemTpl let-it let-current=\"current\">\r\n @if (it.target?.kind === 'router') {\r\n <a class=\"solaris-breadcrumb__link\" [class.is-disabled]=\"it.disabled\" [class.is-current]=\"current\"\r\n [routerLink]=\"it.disabled ? null : it.target!.commands\" [attr.aria-current]=\"current ? 'page' : null\"\r\n [attr.aria-label]=\"it.ariaLabel || it.label\">\r\n @if (it.icon) {\r\n <i class=\"solaris-breadcrumb__icon\" [ngClass]=\"it.icon\" aria-hidden=\"true\"></i>\r\n }\r\n <span class=\"solaris-breadcrumb__label\">{{ it.label }}</span>\r\n </a>\r\n }\r\n @else if (it.target?.kind === 'href') {\r\n <a class=\"solaris-breadcrumb__link\" [class.is-disabled]=\"it.disabled\" [class.is-current]=\"current\"\r\n [href]=\"it.disabled ? null : it.target!.href\" [target]=\"it.target!.target || '_self'\"\r\n [attr.aria-current]=\"current ? 'page' : null\" [attr.aria-label]=\"it.ariaLabel || it.label\">\r\n @if (it.icon) {\r\n <i class=\"solaris-breadcrumb__icon\" [ngClass]=\"it.icon\" aria-hidden=\"true\"></i>\r\n }\r\n <span class=\"solaris-breadcrumb__label\">{{ it.label }}</span>\r\n </a>\r\n }\r\n @else if (it.target?.kind === 'action') {\r\n <button type=\"button\" class=\"solaris-breadcrumb__link as-button\" [class.is-current]=\"current\"\r\n [disabled]=\"it.disabled\" (click)=\"onAction(it)\" [attr.aria-current]=\"current ? 'page' : null\"\r\n [attr.aria-label]=\"it.ariaLabel || it.label\">\r\n @if (it.icon) {\r\n <i class=\"solaris-breadcrumb__icon\" [ngClass]=\"it.icon\" aria-hidden=\"true\"></i>\r\n }\r\n <span class=\"solaris-breadcrumb__label\">{{ it.label }}</span>\r\n </button>\r\n }\r\n @else {\r\n <span class=\"solaris-breadcrumb__text\" [attr.aria-current]=\"current ? 'page' : null\">\r\n @if (it.icon) {\r\n <i class=\"solaris-breadcrumb__icon\" [ngClass]=\"it.icon\" aria-hidden=\"true\"></i>\r\n }\r\n <span class=\"solaris-breadcrumb__label\">{{ it.label }}</span>\r\n </span>\r\n }\r\n </ng-template>\r\n</nav>\r\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\r\n\r\nimport { BadgeColorInput, BadgeVariant } from '../../../../feedbacks/badge/model/badge.type';\r\nimport { SolarisSizePreset } from '../../../../common/model/common-configurations.type';\r\nimport { SolarisStepperPhase, SolarisStepperStatus } from '../../model/stepper.type';\r\n\r\n\r\n@Component({\r\n selector: 'solaris-stepper-item',\r\n standalone: true,\r\n templateUrl: './stepper-item.html',\r\n styleUrls: ['./stepper-item.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class SolarisStepperItem {\r\n @Input() stepId?: string;\r\n\r\n @Input() label?: string;\r\n @Input() labelKey?: string;\r\n\r\n @Input() title?: string;\r\n @Input() titleKey?: string;\r\n\r\n @Input() description?: string;\r\n @Input() descriptionKey?: string;\r\n\r\n @Input() icon?: string;\r\n @Input() optional = false;\r\n\r\n @Input() phase: SolarisStepperPhase | null = null;\r\n @Input() status: SolarisStepperStatus = 'default';\r\n\r\n @Input() badgeText?: string;\r\n @Input() badgeTextKey?: string;\r\n @Input() badgeColor?: BadgeColorInput;\r\n @Input() badgeVariant: BadgeVariant = 'subtle';\r\n @Input() badgeSize: SolarisSizePreset = 'sm';\r\n @Input() badgePill = true;\r\n\r\n public active = false;\r\n public index = 0;\r\n public headerId = '';\r\n public panelId = '';\r\n}\r\n","<section class=\"solaris-stepper-item__panel\" role=\"tabpanel\" [id]=\"panelId\"\r\n [attr.aria-labelledby]=\"headerId\" [attr.aria-hidden]=\"!active\"\r\n [attr.hidden]=\"active ? null : ''\">\r\n <ng-content></ng-content>\r\n</section>\r\n","import { ChangeDetectionStrategy, Component, HostBinding, Input } from '@angular/core';\r\nimport { NgClass } from '@angular/common';\r\n\r\nimport { SolarisColorPreset, SolarisSizePreset } from '../../../common/model/common-configurations.type';\r\nimport { BadgeColorInput, BadgeVariant } from '../model/badge.type';\r\n\r\n@Component({\r\n selector: 'solaris-badge',\r\n standalone: true,\r\n imports: [\r\n NgClass\r\n ],\r\n templateUrl: './badge.html',\r\n styleUrls: ['./badge.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class SolarisBadge {\r\n @Input() pill = false;\r\n @Input() customTextColor?: string;\r\n @Input() interactive = false;\r\n @Input() size: SolarisSizePreset = 'md';\r\n @Input() variant: BadgeVariant = 'subtle';\r\n @Input() color: BadgeColorInput = 'surface';\r\n @Input({ alias: 'aria-hidden' }) ariaHidden: 'true' | 'false' | null = null;\r\n @HostBinding('class') hostClass = 'solaris-badge-host';\r\n private readonly presetColors = new Set<SolarisColorPreset>([\r\n 'primary', 'success', 'warning', 'error', 'info', 'surface',\r\n ]);\r\n\r\n get colorClass(): string {\r\n return this.isCustomColor ? 'color-custom' : `color-${this.color}`;\r\n }\r\n get isCustomColor(): boolean {\r\n return !this.presetColors.has(this.color as SolarisColorPreset);\r\n }\r\n get customColorValue(): string | null {\r\n return this.isCustomColor ? String(this.color) : null;\r\n }\r\n}\r\n","<span class=\"solaris-badge\" [attr.aria-hidden]=\"ariaHidden\"\r\n [ngClass]=\"[ 'variant-' + variant, colorClass,\r\n 'size-' + size, pill ? 'is-pill' : '',\r\n interactive ? 'is-interactive' : '' ]\"\r\n [style.--solaris-badge-custom]=\"customColorValue\"\r\n [style.--solaris-badge-custom-fg]=\"customTextColor\">\r\n <ng-content></ng-content>\r\n</span>\r\n","import {\r\n AfterContentInit, ChangeDetectionStrategy, ChangeDetectorRef, Component, ContentChildren,\r\n DestroyRef, ElementRef,\r\n EventEmitter, inject, Input, OnChanges, Output, QueryList, SimpleChanges, ViewChildren\r\n} from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\n\r\nimport { SolarisStepperAppearance, SolarisStepperChangeEvent, SolarisStepperChangeReason,\r\n SolarisStepperOrientation, SolarisStepperPhase } from '../model/stepper.type';\r\nimport { SolarisBadge } from '../../../feedbacks/badge/component/badge';\r\nimport { SolarisTranslationPipe } from '@educarehq/solaris-services';\r\nimport { SolarisStepperItem } from '../item/component/stepper-item';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\n\r\n@Component({\r\n selector: 'solaris-stepper',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n SolarisTranslationPipe,\r\n SolarisBadge,\r\n ],\r\n templateUrl: './stepper.html',\r\n styleUrls: ['./stepper.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class SolarisStepper implements AfterContentInit, OnChanges {\r\n private readonly destroyRef = inject(DestroyRef);\r\n private static nextId = 0;\r\n\r\n @Input() orientation: SolarisStepperOrientation = 'horizontal';\r\n @Input() appearance: SolarisStepperAppearance = 'default';\r\n\r\n @Input() linear = true;\r\n @Input() interactive = true;\r\n\r\n @Input() activeIndex: number | null = null;\r\n @Input() defaultActiveIndex = 0;\r\n\r\n @Input() allowBackNavigation = true;\r\n @Input() allowFutureNavigation = false;\r\n @Input() allowSkip = false;\r\n\r\n @Input() renderPanels = true;\r\n @Input() showStateBadges = false;\r\n\r\n @Output() readonly activeIndexChange = new EventEmitter<number>();\r\n @Output('next') readonly nextChange = new EventEmitter<number>();\r\n @Output('previous') readonly previousChange = new EventEmitter<number>();\r\n @Output() readonly stepChange = new EventEmitter<SolarisStepperChangeEvent>();\r\n\r\n @ContentChildren(SolarisStepperItem)\r\n private readonly itemsQuery?: QueryList<SolarisStepperItem>;\r\n\r\n @ViewChildren('stepButton')\r\n private readonly stepButtons?: QueryList<ElementRef<HTMLButtonElement>>;\r\n\r\n public items: SolarisStepperItem[] = [];\r\n\r\n private readonly uid = SolarisStepper.nextId++;\r\n private internalActiveIndex = 0;\r\n\r\n public get currentIndex(): number {\r\n return this.normalizeIndex(\r\n this.isControlled() ? this.activeIndex ?? 0 : this.internalActiveIndex\r\n );\r\n }\r\n\r\n constructor(private readonly changeDetectorRef: ChangeDetectorRef) {}\r\n\r\n ngAfterContentInit(): void {\r\n this.internalActiveIndex = this.defaultActiveIndex;\r\n this.syncItems();\r\n\r\n this.itemsQuery?.changes\r\n .pipe(takeUntilDestroyed(this.destroyRef))\r\n .subscribe(() => {\r\n this.syncItems();\r\n });\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes['defaultActiveIndex'] && !this.isControlled()) {\r\n this.internalActiveIndex = this.defaultActiveIndex;\r\n }\r\n\r\n if (\r\n changes['activeIndex'] ||\r\n changes['orientation'] ||\r\n changes['appearance'] ||\r\n changes['linear']\r\n ) {\r\n this.syncItems();\r\n }\r\n }\r\n\r\n public next(): void {\r\n const target = this.findAdjacentNavigableIndex(this.currentIndex, 1);\r\n if (target === null) return;\r\n\r\n this.commitIndexChange(target, 'next');\r\n this.nextChange.emit(target);\r\n }\r\n\r\n public previous(): void {\r\n const target = this.findAdjacentNavigableIndex(this.currentIndex, -1);\r\n if (target === null) return;\r\n\r\n this.commitIndexChange(target, 'previous');\r\n this.previousChange.emit(target);\r\n }\r\n\r\n public setActiveStep(index: number): void {\r\n if (!this.isProgrammaticallyNavigable(index)) return;\r\n this.commitIndexChange(index, 'programmatic');\r\n }\r\n\r\n public onStepHeaderClick(index: number): void {\r\n if (!this.canActivateByHeaderClick(index)) return;\r\n this.commitIndexChange(index, 'header');\r\n }\r\n\r\n public onStepKeydown(event: KeyboardEvent, index: number): void {\r\n const isHorizontal = this.orientation === 'horizontal';\r\n\r\n switch (event.key) {\r\n case 'ArrowRight':\r\n if (!isHorizontal) return;\r\n event.preventDefault();\r\n this.focusRelativeButton(index, 1);\r\n return;\r\n\r\n case 'ArrowLeft':\r\n if (!isHorizontal) return;\r\n event.preventDefault();\r\n this.focusRelativeButton(index, -1);\r\n return;\r\n\r\n case 'ArrowDown':\r\n if (isHorizontal) return;\r\n event.preventDefault();\r\n this.focusRelativeButton(index, 1);\r\n return;\r\n\r\n case 'ArrowUp':\r\n if (isHorizontal) return;\r\n event.preventDefault();\r\n this.focusRelativeButton(index, -1);\r\n return;\r\n\r\n case 'Home':\r\n event.preventDefault();\r\n this.focusButton(0);\r\n return;\r\n\r\n case 'End':\r\n event.preventDefault();\r\n this.focusButton(this.items.length - 1);\r\n return;\r\n\r\n default:\r\n return;\r\n }\r\n }\r\n\r\n public isCurrent(index: number): boolean {\r\n return index === this.currentIndex;\r\n }\r\n\r\n public isCompleted(index: number): boolean {\r\n return this.resolvePhase(this.items[index], index) === 'completed';\r\n }\r\n\r\n public isPending(index: number): boolean {\r\n return this.resolvePhase(this.items[index], index) === 'pending';\r\n }\r\n\r\n public resolvePhase(item: SolarisStepperItem, index: number): SolarisStepperPhase {\r\n if (item.phase) return item.phase;\r\n\r\n if (index < this.currentIndex) return 'completed';\r\n if (index === this.currentIndex) return 'current';\r\n return 'pending';\r\n }\r\n\r\n public getStepClasses(item: SolarisStepperItem, index: number): Record<string, boolean> {\r\n return {\r\n 'is-current': this.isCurrent(index),\r\n 'is-completed': this.isCompleted(index),\r\n 'is-pending': this.isPending(index),\r\n 'is-warning': item.status === 'warning',\r\n 'is-error': item.status === 'error',\r\n 'is-disabled': item.status === 'disabled',\r\n 'is-locked': item.status === 'locked',\r\n 'is-clickable': this.canActivateByHeaderClick(index),\r\n };\r\n }\r\n\r\n public getConnectorClasses(index: number): Record<string, boolean> {\r\n return {\r\n 'is-completed': index < this.currentIndex,\r\n 'is-current': index === this.currentIndex,\r\n };\r\n }\r\n\r\n public getMarkerIcon(item: SolarisStepperItem, index: number): string | null {\r\n if (this.appearance === 'compact') return null;\r\n\r\n if (item.status === 'locked') return 'ph-lock';\r\n if (item.status === 'error') return 'ph-x-circle';\r\n if (item.status === 'warning') return 'ph-warning-circle';\r\n if (this.isCompleted(index)) return 'ph-check';\r\n\r\n return item.icon ?? null;\r\n }\r\n\r\n public getMarkerText(item: SolarisStepperItem, index: number): string | null {\r\n if (this.appearance === 'compact') {\r\n return `${index + 1}.`;\r\n }\r\n\r\n return this.getMarkerIcon(item, index) ? null : String(index + 1);\r\n }\r\n\r\n public hasBadge(item: SolarisStepperItem, index: number): boolean {\r\n if (!this.showStateBadges || this.appearance === 'compact') return false;\r\n\r\n return Boolean(\r\n item.badgeText ||\r\n item.badgeTextKey ||\r\n this.getAutoBadgeTranslationKey(item, index)\r\n );\r\n }\r\n\r\n public getResolvedLabel(item: SolarisStepperItem, index: number): string | null {\r\n if (item.labelKey || item.label) return null;\r\n return `${index + 1}`;\r\n }\r\n\r\n public getResolvedBadgeColor(item: SolarisStepperItem, index: number) {\r\n if (item.badgeColor) return item.badgeColor;\r\n\r\n if (item.status === 'error') return 'error';\r\n if (item.status === 'warning') return 'warning';\r\n if (item.status === 'locked' || item.status === 'disabled') return 'surface';\r\n\r\n const phase = this.resolvePhase(item, index);\r\n if (phase === 'completed') return 'success';\r\n if (phase === 'current') return 'primary';\r\n\r\n return 'surface';\r\n }\r\n\r\n public getResolvedBadgeVariant(item: SolarisStepperItem) {\r\n return item.badgeVariant;\r\n }\r\n\r\n public getAutoBadgeTranslationKey(item: SolarisStepperItem, index: number): string {\r\n if (item.status === 'error') return 'ui.solaris.stepper.error';\r\n if (item.status === 'warning') return 'ui.solaris.stepper.warning';\r\n if (item.status === 'locked') return 'ui.solaris.stepper.locked';\r\n if (item.status === 'disabled') return 'ui.solaris.stepper.disabled';\r\n\r\n const phase = this.resolvePhase(item, index);\r\n\r\n if (phase === 'completed') return 'ui.solaris.stepper.completed';\r\n if (phase === 'current') return 'ui.solaris.stepper.inProgress';\r\n return 'ui.solaris.stepper.pending';\r\n }\r\n\r\n public getTitle(item: SolarisStepperItem): string {\r\n return item.title ?? '';\r\n }\r\n\r\n public getDescription(item: SolarisStepperItem): string {\r\n return item.description ?? '';\r\n }\r\n\r\n public getStepAriaLabel(item: SolarisStepperItem, index: number): string {\r\n const phase = this.resolvePhase(item, index);\r\n const title = item.title ?? item.titleKey ?? `${index + 1}`;\r\n\r\n if (phase === 'completed') {\r\n return `${title} completed`;\r\n }\r\n\r\n if (phase === 'current') {\r\n return `${title} current step`;\r\n }\r\n\r\n if (item.status === 'locked') {\r\n return `${title} locked`;\r\n }\r\n\r\n if (item.status === 'disabled') {\r\n return `${title} disabled`;\r\n }\r\n\r\n return title;\r\n }\r\n\r\n public trackByIndex(index: number): number {\r\n return index;\r\n }\r\n\r\n private syncItems(): void {\r\n this.items = this.itemsQuery?.toArray() ?? [];\r\n\r\n const currentIndex = this.normalizeIndex(\r\n this.isControlled() ? this.activeIndex ?? 0 : this.internalActiveIndex\r\n );\r\n\r\n this.items.forEach((item, index) => {\r\n item.index = index;\r\n item.headerId = `solaris-stepper-${this.uid}-tab-${index}`;\r\n item.panelId = `solaris-stepper-${this.uid}-panel-${index}`;\r\n item.active = index === currentIndex;\r\n });\r\n\r\n this.changeDetectorRef.markForCheck();\r\n }\r\n\r\n private commitIndexChange(index: number, reason: SolarisStepperChangeReason): void {\r\n const normalized = this.normalizeIndex(index);\r\n if (normalized === this.currentIndex) return;\r\n\r\n const previousIndex = this.currentIndex;\r\n\r\n if (!this.isControlled()) {\r\n this.internalActiveIndex = normalized;\r\n this.syncItems();\r\n }\r\n\r\n this.activeIndexChange.emit(normalized);\r\n this.stepChange.emit({\r\n previousIndex,\r\n currentIndex: normalized,\r\n reason,\r\n });\r\n }\r\n\r\n private canActivateByHeaderClick(index: number): boolean {\r\n if (!this.interactive) return false;\r\n if (!this.isInBounds(index)) return false;\r\n\r\n const item = this.items[index];\r\n if (!item || this.isDisabledLike(item)) return false;\r\n\r\n if (index === this.currentIndex) return true;\r\n if (index < this.currentIndex) return this.allowBackNavigation;\r\n\r\n if (!this.linear) return true;\r\n\r\n if (!this.allowFutureNavigation) return false;\r\n if (!this.allowSkip) return index === this.currentIndex + 1;\r\n\r\n return true;\r\n }\r\n\r\n private isProgrammaticallyNavigable(index: number): boolean {\r\n if (!this.isInBounds(index)) return false;\r\n\r\n const item = this.items[index];\r\n if (!item) return false;\r\n\r\n return !this.isDisabledLike(item);\r\n }\r\n\r\n private findAdjacentNavigableIndex(start: number, direction: 1 | -1): number | null {\r\n let cursor = start + direction;\r\n\r\n while (this.isInBounds(cursor)) {\r\n const item = this.items[cursor];\r\n if (item && !this.isDisabledLike(item)) {\r\n return cursor;\r\n }\r\n cursor += direction;\r\n }\r\n\r\n return null;\r\n }\r\n\r\n private isDisabledLike(item: SolarisStepperItem): boolean {\r\n return item.status === 'disabled' || item.status === 'locked';\r\n }\r\n\r\n private isControlled(): boolean {\r\n return this.activeIndex !== null && this.activeIndex !== undefined;\r\n }\r\n\r\n private isInBounds(index: number): boolean {\r\n return index >= 0 && index < this.items.length;\r\n }\r\n\r\n private normalizeIndex(index: number): number {\r\n if (this.items.length === 0) return 0;\r\n return Math.min(Math.max(index, 0), this.items.length - 1);\r\n }\r\n\r\n private focusRelativeButton(index: number, direction: 1 | -1): void {\r\n let cursor = index + direction;\r\n\r\n while (cursor >= 0 && cursor < this.items.length) {\r\n if (!this.isDisabledLike(this.items[cursor])) {\r\n this.focusButton(cursor);\r\n return;\r\n }\r\n cursor += direction;\r\n }\r\n }\r\n\r\n private focusButton(index: number): void {\r\n const button = this.stepButtons?.get(index)?.nativeElement;\r\n button?.focus();\r\n }\r\n}\r\n","<div class=\"solaris-stepper\" [ngClass]=\"[\r\n 'orientation-' + orientation,\r\n 'appearance-' + appearance\r\n ]\">\r\n\r\n <div class=\"solaris-stepper__rail\" role=\"tablist\" [attr.aria-orientation]=\"orientation\">\r\n\r\n @for (item of items; track trackByIndex($index); let i = $index; let last = $last) {\r\n <div class=\"solaris-stepper__node\">\r\n <button #stepButton type=\"button\" role=\"tab\" class=\"solaris-stepper__step\"\r\n [id]=\"item.headerId\" [attr.aria-controls]=\"item.panelId\" [attr.aria-selected]=\"isCurrent(i)\"\r\n [attr.aria-current]=\"isCurrent(i) ? 'step' : null\"\r\n [attr.aria-disabled]=\"item.status === 'disabled' || item.status === 'locked'\"\r\n [attr.tabindex]=\"isCurrent(i) ? 0 : -1\" [ngClass]=\"getStepClasses(item, i)\"\r\n (click)=\"onStepHeaderClick(i)\" (keydown)=\"onStepKeydown($event, i)\">\r\n\r\n <span class=\"solaris-stepper__marker\" [ngClass]=\"getStepClasses(item, i)\">\r\n @if (getMarkerIcon(item, i)) {\r\n <i class=\"ph\" [ngClass]=\"getMarkerIcon(item, i)\" aria-hidden=\"true\"></i>\r\n }\r\n\r\n @if (getMarkerText(item, i)) {\r\n <span>{{ getMarkerText(item, i) }}</span>\r\n }\r\n </span>\r\n\r\n <span class=\"solaris-stepper__meta\">\r\n <span class=\"solaris-stepper__label\">\r\n @if (item.labelKey) {\r\n {{ item.labelKey | translate }}\r\n } @else if (item.label) {\r\n {{ item.label }}\r\n } @else {\r\n {{ 'ui.solaris.stepper.step' | translate }} {{ i + 1 }}\r\n }\r\n </span>\r\n\r\n <span class=\"solaris-stepper__title\">\r\n @if (item.titleKey) {\r\n {{ item.titleKey | translate }}\r\n } @else {\r\n {{ item.title }}\r\n }\r\n </span>\r\n\r\n @if (item.descriptionKey || item.description) {\r\n <span class=\"solaris-stepper__description\">\r\n @if (item.descriptionKey) {\r\n {{ item.descriptionKey | translate }}\r\n } @else {\r\n {{ item.description }}\r\n }\r\n </span>\r\n }\r\n\r\n @if (item.optional) {\r\n <span class=\"solaris-stepper__optional\">\r\n {{ 'ui.solaris.stepper.optional' | translate }}\r\n </span>\r\n }\r\n </span>\r\n\r\n @if (hasBadge(item, i)) {\r\n <solaris-badge class=\"solaris-stepper__badge\" [pill]=\"item.badgePill\" [size]=\"item.badgeSize\"\r\n [variant]=\"getResolvedBadgeVariant(item)\" [color]=\"getResolvedBadgeColor(item, i)\" aria-hidden=\"true\">\r\n\r\n @if (item.badgeTextKey) {\r\n {{ item.badgeTextKey | translate }}\r\n } @else if (item.badgeText) {\r\n {{ item.badgeText }}\r\n } @else {\r\n {{ getAutoBadgeTranslationKey(item, i) | translate }}\r\n }\r\n </solaris-badge>\r\n }\r\n </button>\r\n\r\n @if (!last) {\r\n <span class=\"solaris-stepper__connector\" [ngClass]=\"getConnectorClasses(i)\" aria-hidden=\"true\"></span>\r\n }\r\n </div>\r\n }\r\n </div>\r\n\r\n @if (renderPanels) {\r\n <div class=\"solaris-stepper__content\">\r\n <ng-content></ng-content>\r\n </div>\r\n }\r\n</div>\r\n","import { Directive, ElementRef, inject } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[solaris-popover-trigger]',\r\n standalone: true,\r\n})\r\nexport class SolarisPopoverTriggerDirective {\r\n readonly elementRef: ElementRef<HTMLElement> = inject(ElementRef<HTMLElement>);\r\n}\r\n","import { Directive, TemplateRef, inject } from '@angular/core';\r\n\r\n@Directive({\r\n selector: 'ng-template[solaris-popover-panel]',\r\n standalone: true,\r\n})\r\nexport class SolarisPopoverPanelDirective {\r\n readonly templateRef: TemplateRef<any> = inject(TemplateRef<any>);\r\n}\r\n","export type SolarisPopoverPlacement =\r\n | 'bottom-start' | 'bottom' | 'bottom-end'\r\n | 'top-start' | 'top' | 'top-end'\r\n | 'right-start' | 'right' | 'right-end'\r\n | 'left-start' | 'left' | 'left-end';\r\n\r\nexport interface SolarisPopoverPositionConfiguration {\r\n placement: SolarisPopoverPlacement;\r\n offset: number;\r\n viewportPadding: number;\r\n autoFlip: boolean;\r\n autoShift: boolean;\r\n matchWidth: boolean;\r\n}\r\n\r\nexport interface SolarisPopoverPositionResult {\r\n x: number;\r\n y: number;\r\n appliedPlacement: SolarisPopoverPlacement;\r\n}\r\n\r\nfunction clamp(v: number, min: number, max: number) {\r\n return Math.max(min, Math.min(max, v));\r\n}\r\n\r\nfunction initialXY(anchor: DOMRect, panel: DOMRect, placement: SolarisPopoverPlacement, offset: number) {\r\n const axMid = anchor.left + anchor.width / 2;\r\n const ayMid = anchor.top + anchor.height / 2;\r\n\r\n switch (placement) {\r\n case 'bottom-start': return { x: anchor.left, y: anchor.bottom + offset };\r\n case 'bottom': return { x: axMid - panel.width / 2, y: anchor.bottom + offset };\r\n case 'bottom-end': return { x: anchor.right - panel.width, y: anchor.bottom + offset };\r\n\r\n case 'top-start': return { x: anchor.left, y: anchor.top - panel.height - offset };\r\n case 'top': return { x: axMid - panel.width / 2, y: anchor.top - panel.height - offset };\r\n case 'top-end': return { x: anchor.right - panel.width, y: anchor.top - panel.height - offset };\r\n\r\n case 'right-start': return { x: anchor.right + offset, y: anchor.top };\r\n case 'right': return { x: anchor.right + offset, y: ayMid - panel.height / 2 };\r\n case 'right-end': return { x: anchor.right + offset, y: anchor.bottom - panel.height };\r\n\r\n case 'left-start': return { x: anchor.left - panel.width - offset, y: anchor.top };\r\n case 'left': return { x: anchor.left - panel.width - offset, y: ayMid - panel.height / 2 };\r\n case 'left-end': return { x: anchor.left - panel.width - offset, y: anchor.bottom - panel.height };\r\n }\r\n}\r\n\r\nfunction flipPlacement(p: SolarisPopoverPlacement): SolarisPopoverPlacement {\r\n if (p.startsWith('bottom')) return (p.replace('bottom', 'top') as SolarisPopoverPlacement);\r\n if (p.startsWith('top')) return (p.replace('top', 'bottom') as SolarisPopoverPlacement);\r\n if (p.startsWith('left')) return (p.replace('left', 'right') as SolarisPopoverPlacement);\r\n if (p.startsWith('right')) return (p.replace('right', 'left') as SolarisPopoverPlacement);\r\n return p;\r\n}\r\n\r\nexport function computePopoverPosition(anchorRect: DOMRect, panelRect: DOMRect,\r\n configuration: SolarisPopoverPositionConfiguration): SolarisPopoverPositionResult {\r\n const vw = window.innerWidth;\r\n const vh = window.innerHeight;\r\n\r\n let applied = configuration.placement;\r\n\r\n const fits = (x: number, y: number) => {\r\n const pad = configuration.viewportPadding;\r\n const left = x;\r\n const top = y;\r\n const right = x + panelRect.width;\r\n const bottom = y + panelRect.height;\r\n\r\n return left >= pad && top >= pad && right <= vw - pad && bottom <= vh - pad;\r\n };\r\n\r\n let pos = initialXY(anchorRect, panelRect, applied, configuration.offset);\r\n\r\n if (configuration.autoFlip && !fits(pos.x, pos.y)) {\r\n const flipped = flipPlacement(applied);\r\n const flippedPos = initialXY(anchorRect, panelRect, flipped, configuration.offset);\r\n if (fits(flippedPos.x, flippedPos.y)) {\r\n applied = flipped;\r\n pos = flippedPos;\r\n }\r\n }\r\n\r\n if (configuration.autoShift) {\r\n const pad = configuration.viewportPadding;\r\n pos.x = clamp(pos.x, pad, vw - pad - panelRect.width);\r\n pos.y = clamp(pos.y, pad, vh - pad - panelRect.height);\r\n }\r\n\r\n return { x: pos.x, y: pos.y, appliedPlacement: applied };\r\n}\r\n","import { ApplicationRef, ChangeDetectionStrategy, Component, computed, ContentChild, DestroyRef, effect, EmbeddedViewRef,\r\n EventEmitter, HostBinding, inject, Input, Output, signal, ViewEncapsulation } from '@angular/core';\r\n\r\nimport { SolarisPopoverTriggerDirective } from '../directives/popover-trigger.directive';\r\nimport { computePopoverPosition, SolarisPopoverPlacement } from '../model/popover.type';\r\nimport { SolarisPopoverPanelDirective } from '../directives/popover-panel.directive';\r\n\r\n@Component({\r\n selector: 'solaris-popover',\r\n standalone: true,\r\n templateUrl: './popover.html',\r\n styleUrls: ['./popover.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class SolarisPopover {\r\n private readonly appRef = inject(ApplicationRef);\r\n private readonly destroyRef = inject(DestroyRef);\r\n\r\n @Input() offset = 8;\r\n @Input() panelClass = '';\r\n @Input() autoFlip = true;\r\n @Input() autoShift = true;\r\n @Input() matchWidth = false;\r\n @Input() viewportPadding = 8;\r\n @Input() closeOnEscape = true;\r\n @Input() closeOnOutsideClick = true;\r\n @Input() anchorElement?: HTMLElement | null = null;\r\n @Input() matchWidthElement?: HTMLElement | null = null;\r\n @Input() placement: SolarisPopoverPlacement = 'bottom-start';\r\n\r\n @Output() openChange = new EventEmitter<boolean>();\r\n\r\n private readonly _internalOpen = signal(false);\r\n private readonly _openInput = signal<boolean | null>(null);\r\n\r\n readonly isOpen = computed(() => {\r\n const v = this._openInput();\r\n return typeof v === 'boolean' ? v : this._internalOpen();\r\n });\r\n\r\n @Input() set open(v: boolean | null) {\r\n this._openInput.set(v);\r\n }\r\n get open(): boolean | null {\r\n return this._openInput();\r\n }\r\n\r\n @ContentChild(SolarisPopoverPanelDirective) panelDir?: SolarisPopoverPanelDirective;\r\n @ContentChild(SolarisPopoverTriggerDirective) triggerDir?: SolarisPopoverTriggerDirective;\r\n\r\n private raf = 0;\r\n private _setting = false;\r\n private panelHost?: HTMLDivElement;\r\n private panelView?: EmbeddedViewRef<any>;\r\n\r\n @HostBinding('attr.data-open')\r\n get dataOpen() {\r\n return this.isOpen() ? 'true' : null;\r\n }\r\n\r\n constructor() {\r\n effect(() => {\r\n if (this.isOpen()) this.show();\r\n else this.hide();\r\n });\r\n\r\n effect((onCleanup) => {\r\n if (!this.isOpen()) return;\r\n\r\n const onResize = () => this.scheduleReposition();\r\n const onScroll = () => this.scheduleReposition();\r\n\r\n const onPointerDown = (ev: PointerEvent) => {\r\n if (!this.closeOnOutsideClick) return;\r\n const t = ev.target as Node | null;\r\n const triggerEl = this.triggerDir?.elementRef.nativeElement;\r\n if (!t || !triggerEl || !this.panelHost) return;\r\n\r\n const clickedInsidePanel = this.panelHost.contains(t);\r\n const clickedOnTrigger = triggerEl.contains(t);\r\n\r\n if (!clickedInsidePanel && !clickedOnTrigger) {\r\n this.setOpen(false);\r\n }\r\n };\r\n\r\n const onKeyDown = (ev: KeyboardEvent) => {\r\n if (!this.closeOnEscape) return;\r\n if (ev.key === 'Escape') this.setOpen(false);\r\n };\r\n\r\n window.addEventListener('resize', onResize, { passive: true });\r\n window.addEventListener('scroll', onScroll, { passive: true, capture: true });\r\n document.addEventListener('pointerdown', onPointerDown, { capture: true });\r\n document.addEventListener('keydown', onKeyDown, { capture: true });\r\n\r\n onCleanup(() => {\r\n window.removeEventListener('resize', onResize);\r\n window.removeEventListener('scroll', onScroll, true as any);\r\n document.removeEventListener('pointerdown', onPointerDown, true as any);\r\n document.removeEventListener('keydown', onKeyDown, true as any);\r\n });\r\n });\r\n\r\n this.destroyRef.onDestroy(() => this.unmountHard());\r\n }\r\n\r\n public toggle() {\r\n this.setOpen(!this.isOpen());\r\n }\r\n\r\n public setOpen(next: boolean) {\r\n const current = this.isOpen();\r\n if (next === current) return;\r\n if (this._setting) return;\r\n\r\n this._setting = true;\r\n try {\r\n this.openChange.emit(next);\r\n if (typeof this._openInput() !== 'boolean') {\r\n this._internalOpen.set(next);\r\n }\r\n } finally {\r\n queueMicrotask(() => (this._setting = false));\r\n }\r\n }\r\n\r\n private ensureMounted() {\r\n if (this.panelHost || !this.triggerDir || !this.panelDir) return;\r\n\r\n const host = document.createElement('div');\r\n host.style.top = '0px';\r\n host.style.left = '0px';\r\n host.style.display = 'none';\r\n host.style.position = 'fixed';\r\n host.style.zIndex = 'var(--solaris-z-max)';\r\n host.className = `solaris-popover-panel ${this.panelClass || ''}`.trim();\r\n\r\n const view = this.panelDir.templateRef.createEmbeddedView({});\r\n this.appRef.attachView(view);\r\n view.detectChanges();\r\n\r\n for (const node of view.rootNodes) host.appendChild(node);\r\n document.body.appendChild(host);\r\n\r\n this.panelHost = host;\r\n this.panelView = view;\r\n }\r\n\r\n private show() {\r\n this.ensureMounted();\r\n if (!this.panelHost) return;\r\n\r\n this.panelHost.style.display = '';\r\n this.scheduleReposition(true);\r\n }\r\n\r\n private hide() {\r\n if (!this.panelHost) return;\r\n this.panelHost.style.display = 'none';\r\n }\r\n\r\n private unmountHard() {\r\n if (this.raf) cancelAnimationFrame(this.raf);\r\n this.raf = 0;\r\n\r\n if (this.panelView) {\r\n this.appRef.detachView(this.panelView);\r\n this.panelView.destroy();\r\n this.panelView = undefined;\r\n }\r\n\r\n if (this.panelHost) {\r\n this.panelHost.remove();\r\n this.panelHost = undefined;\r\n }\r\n }\r\n\r\n private scheduleReposition(immediate = false) {\r\n if (!this.panelHost || !this.triggerDir) return;\r\n\r\n if (immediate) {\r\n this.reposition();\r\n return;\r\n }\r\n\r\n if (this.raf) return;\r\n this.raf = requestAnimationFrame(() => {\r\n this.raf = 0;\r\n this.reposition();\r\n });\r\n }\r\n\r\n private reposition() {\r\n const triggerEl = this.triggerDir?.elementRef.nativeElement;\r\n const host = this.panelHost;\r\n if (!triggerEl || !host) return;\r\n\r\n const anchorEl = this.anchorElement ?? triggerEl;\r\n const anchorRect = anchorEl.getBoundingClientRect();\r\n const widthEl = this.matchWidthElement ?? (this.matchWidth ? anchorEl : null);\r\n\r\n if (this.matchWidth && widthEl) {\r\n const w = widthEl.getBoundingClientRect().width;\r\n host.style.boxSizing = 'border-box';\r\n host.style.width = `${w}px`;\r\n host.style.minWidth = `${w}px`;\r\n host.style.maxWidth = `${w}px`;\r\n } else {\r\n host.style.width = '';\r\n host.style.minWidth = '';\r\n host.style.maxWidth = '';\r\n }\r\n\r\n if (getComputedStyle(host).display === 'none') return;\r\n\r\n const panelRect = host.getBoundingClientRect();\r\n\r\n const { x, y } = computePopoverPosition(anchorRect, panelRect, {\r\n placement: this.placement,\r\n offset: this.offset,\r\n viewportPadding: this.viewportPadding,\r\n autoFlip: this.autoFlip,\r\n autoShift: this.autoShift,\r\n matchWidth: this.matchWidth,\r\n });\r\n\r\n host.style.transform = `translate3d(${Math.round(x)}px, ${Math.round(y)}px, 0)`;\r\n }\r\n}\r\n","<ng-content></ng-content>\r\n","import { AfterContentInit, ChangeDetectionStrategy, Component, ContentChildren, EventEmitter, HostBinding, Input,\r\n Output, QueryList, signal } from '@angular/core';\r\nimport { NgClass } from '@angular/common';\r\n\r\nimport { TabsSize, TabsVariant } from '../model/tab.type';\r\nimport { SolarisTab } from '../tab/component/tab';\r\n\r\n@Component({\r\n selector: 'solaris-tabs',\r\n standalone: true,\r\n imports: [NgClass],\r\n templateUrl: './tabs.html',\r\n styleUrl: './tabs.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class SolarisTabs implements AfterContentInit {\r\n @Input() size: TabsSize = 'md';\r\n @Input() disabled = false;\r\n @Input() variant: TabsVariant = 'underline';\r\n @Input({ alias: 'active-id' }) activeId?: string;\r\n @Output('active-idChange') activeIdChange = new EventEmitter<string>();\r\n @Output() tabChange = new EventEmitter<{ id: string }>();\r\n\r\n @HostBinding('class') hostClass = 'solaris-tabs-host';\r\n @ContentChildren(SolarisTab) tabs!: QueryList<SolarisTab>;\r\n readonly focusId = signal<string | null>(null);\r\n\r\n ngAfterContentInit() {\r\n queueMicrotask(() => {\r\n const first = this.tabs?.get(0);\r\n if (!this.activeId && first?.id) {\r\n this.setActive(first.id, false);\r\n }\r\n if (!this.focusId() && (this.activeId ?? first?.id)) {\r\n this.focusId.set(this.activeId ?? first?.id ?? null);\r\n }\r\n this.syncTabs();\r\n this.tabs.changes.subscribe(() => this.syncTabs());\r\n });\r\n }\r\n\r\n private syncTabs() {\r\n const list = this.tabs?.toArray() ?? [];\r\n for (const t of list) {\r\n t._setParent(this);\r\n t._setDisabled(this.disabled || t.disabled);\r\n }\r\n }\r\n\r\n isActive(id: string) {\r\n return this.activeId === id;\r\n }\r\n\r\n isFocusable(id: string) {\r\n const fid = this.focusId();\r\n return (fid ?? this.activeId) === id;\r\n }\r\n\r\n setActive(id: string, emit = true) {\r\n if (!id) return;\r\n this.activeId = id;\r\n this.focusId.set(id);\r\n if (emit) {\r\n this.activeIdChange.emit(id);\r\n this.tabChange.emit({ id });\r\n }\r\n }\r\n\r\n onKeydown(ev: KeyboardEvent) {\r\n if (this.disabled) return;\r\n\r\n const keys = ['ArrowLeft', 'ArrowRight', 'Home', 'End'];\r\n if (!keys.includes(ev.key)) return;\r\n\r\n const list = (this.tabs?.toArray() ?? []).filter(t => !t._isDisabled());\r\n if (!list.length) return;\r\n\r\n ev.preventDefault();\r\n\r\n const currentId = this.focusId() ?? this.activeId ?? list[0].id;\r\n const idx = Math.max(0, list.findIndex(t => t.id === currentId));\r\n let next = idx;\r\n\r\n if (ev.key === 'ArrowLeft') next = (idx - 1 + list.length) % list.length;\r\n if (ev.key === 'ArrowRight') next = (idx + 1) % list.length;\r\n if (ev.key === 'Home') next = 0;\r\n if (ev.key === 'End') next = list.length - 1;\r\n\r\n const nextTab = list[next];\r\n this.focusId.set(nextTab.id);\r\n nextTab._focus();\r\n }\r\n}\r\n","<div [ngClass]=\"['size-' + size, 'variant-' + variant, disabled ? 'is-disabled' : '']\"\r\n class=\"solaris-tabs\" role=\"tablist\" (keydown)=\"onKeydown($event)\">\r\n <ng-content/>\r\n</div>\r\n","import { ChangeDetectionStrategy, Component, ElementRef, HostBinding,\r\n HostListener, Input, Optional } from '@angular/core';\r\nimport { RouterLink } from '@angular/router';\r\n\r\nimport { SolarisTabs } from '../../component/tabs';\r\n\r\n@Component({\r\n selector: 'solaris-tab',\r\n standalone: true,\r\n imports: [RouterLink],\r\n templateUrl: './tab.html',\r\n styleUrl: './tab.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class SolarisTab {\r\n @Input() disabled = false;\r\n @Input() routerLink?: any[] | string;\r\n @Input({ required: true }) id!: string;\r\n\r\n private parent?: SolarisTabs;\r\n private disabledByParent = false;\r\n\r\n constructor(private readonly elementRef: ElementRef<HTMLElement>,@Optional() parent: SolarisTabs) {\r\n this.parent = parent;\r\n }\r\n\r\n _setParent(p: SolarisTabs) { this.parent = p; }\r\n _setDisabled(v: boolean) { this.disabledByParent = v; }\r\n\r\n _isDisabled() {\r\n return this.disabled || this.disabledByParent;\r\n }\r\n\r\n _focus() {\r\n this.elementRef.nativeElement.focus();\r\n }\r\n\r\n @HostBinding('class') get hostClass() {\r\n const active = this.parent?.isActive(this.id);\r\n return [\r\n 'solaris-tab',\r\n active ? 'is-active' : '',\r\n this._isDisabled() ? 'is-disabled' : '',\r\n this.routerLink ? 'is-link' : '',\r\n ].filter(Boolean).join(' ');\r\n }\r\n @HostBinding('attr.role') role = 'tab';\r\n @HostBinding('attr.tabindex') get tabIndex() {\r\n if (this._isDisabled()) return -1;\r\n return this.parent?.isFocusable(this.id) ? 0 : -1;\r\n }\r\n @HostBinding('attr.aria-selected') get ariaSelected() {\r\n return this.parent?.isActive(this.id) ? 'true' : 'false';\r\n }\r\n\r\n @HostListener('click') onClick() {\r\n if (this._isDisabled()) return;\r\n this.parent?.setActive(this.id, true);\r\n }\r\n\r\n @HostListener('focus') onFocus() {\r\n if (this._isDisabled()) return;\r\n this.parent?.focusId.set(this.id);\r\n }\r\n}\r\n","@if (routerLink) {\r\n <a class=\"solaris-tab__inner\" [routerLink]=\"routerLink\">\r\n <ng-content />\r\n </a>\r\n} @else {\r\n <button type=\"button\" class=\"solaris-tab__inner\">\r\n <ng-content />\r\n </button>\r\n}\r\n","import { ChangeDetectionStrategy, Component, HostBinding, Input, OnChanges, SimpleChanges } from '@angular/core';\r\nimport { NgStyle } from '@angular/common';\r\n\r\n@Component({\r\n selector: 'solaris-loading-overlay',\r\n standalone: true,\r\n templateUrl: './loading-overlay.html',\r\n styleUrl: './loading-overlay.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [\r\n NgStyle\r\n ]\r\n})\r\nexport class SolarisLoadingOverlay implements OnChanges {\r\n @HostBinding('attr.solaris-loading-overlay') readonly marker = '';\r\n\r\n @Input({ alias: 'z-index' }) zIndex?: number;\r\n @Input() backdrop: 'soft' | 'strong' = 'soft';\r\n @Input() appearance: 'card' | 'minimal' = 'card';\r\n @Input({ transform: coerceBoolean }) blur = true;\r\n @Input({ transform: coerceBoolean }) open = false;\r\n @Input({ alias: 'lock-scroll', transform: coerceBoolean }) lockScroll = true;\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (!this.lockScroll) return;\r\n\r\n if (changes['open']) {\r\n if (this.open) document.documentElement.style.overflow = 'hidden';\r\n else document.documentElement.style.overflow = '';\r\n }\r\n }\r\n\r\n get overlayStyle() {\r\n return this.zIndex == null ? null : {'z-index': String(this.zIndex)};\r\n }\r\n}\r\n\r\nfunction coerceBoolean(v: any): boolean {\r\n return v === '' || v === true || v === 'true' || v === 1 || v === '1';\r\n}\r\n","@if (open) {\r\n <div class=\"solaris-loading-overlay\" [class.backdrop-soft]=\"backdrop === 'soft'\"\r\n [class.backdrop-strong]=\"backdrop === 'strong'\" [class.is-blur]=\"blur\"\r\n [class.appearance-card]=\"appearance === 'card'\" [class.appearance-minimal]=\"appearance === 'minimal'\"\r\n [ngStyle]=\"overlayStyle\" role=\"presentation\">\r\n <div class=\"solaris-loading-overlay__backdrop\" aria-hidden=\"true\"></div>\r\n\r\n <div class=\"solaris-loading-overlay__content\" role=\"status\" aria-live=\"polite\" aria-busy=\"true\">\r\n <ng-content></ng-content>\r\n </div>\r\n </div>\r\n}\r\n","import { SolarisFloatingOverlayRef, SolarisFloatingPosition, SolarisFloatingPositionConfiguration,\r\n SolarisFloatingPositionResult, SolarisTooltipRepositionOptions } from './model/tooltip-services.type';\r\nimport { ElementRef } from '@angular/core';\r\n\r\nfunction clamp(value: number, min: number, max: number): number {\r\n return Math.max(min, Math.min(max, value));\r\n}\r\n\r\nfunction oppositePosition(position: SolarisFloatingPosition): SolarisFloatingPosition {\r\n switch (position) {\r\n case 'top': return 'bottom';\r\n case 'bottom': return 'top';\r\n case 'left': return 'right';\r\n case 'right': return 'left';\r\n }\r\n}\r\n\r\nfunction initialXY(anchor: DOMRect, panel: DOMRect,\r\n position: SolarisFloatingPosition, offset: number): { x: number; y: number } {\r\n const anchorCenterX = anchor.left + anchor.width / 2;\r\n const anchorCenterY = anchor.top + anchor.height / 2;\r\n\r\n switch (position) {\r\n case 'top':\r\n return {\r\n x: anchorCenterX - panel.width / 2,\r\n y: anchor.top - panel.height - offset,\r\n };\r\n\r\n case 'bottom':\r\n return {\r\n x: anchorCenterX - panel.width / 2,\r\n y: anchor.bottom + offset,\r\n };\r\n\r\n case 'right':\r\n return {\r\n x: anchor.right + offset,\r\n y: anchorCenterY - panel.height / 2,\r\n };\r\n\r\n case 'left':\r\n return {\r\n x: anchor.left - panel.width - offset,\r\n y: anchorCenterY - panel.height / 2,\r\n };\r\n }\r\n}\r\n\r\nexport function computeFloatingPosition(anchorRect: DOMRect, panelRect: DOMRect,\r\n configuration: SolarisFloatingPositionConfiguration): SolarisFloatingPositionResult {\r\n const viewportWidth = window.innerWidth;\r\n const viewportHeight = window.innerHeight;\r\n const padding = configuration.viewportPadding;\r\n\r\n let appliedPosition = configuration.position;\r\n let position = initialXY(anchorRect, panelRect, appliedPosition, configuration.offset);\r\n\r\n const fits = (x: number, y: number): boolean => {\r\n const left = x;\r\n const top = y;\r\n const right = x + panelRect.width;\r\n const bottom = y + panelRect.height;\r\n\r\n return (\r\n left >= padding &&\r\n top >= padding &&\r\n right <= viewportWidth - padding &&\r\n bottom <= viewportHeight - padding\r\n );\r\n };\r\n\r\n if (configuration.autoFlip && !fits(position.x, position.y)) {\r\n const flipped = oppositePosition(appliedPosition);\r\n const flippedPosition = initialXY(anchorRect, panelRect, flipped, configuration.offset);\r\n\r\n if (fits(flippedPosition.x, flippedPosition.y)) {\r\n appliedPosition = flipped;\r\n position = flippedPosition;\r\n }\r\n }\r\n\r\n if (configuration.autoShift) {\r\n position.x = clamp(position.x, padding, viewportWidth - padding - panelRect.width);\r\n position.y = clamp(position.y, padding, viewportHeight - padding - panelRect.height);\r\n }\r\n\r\n return {\r\n x: position.x,\r\n y: position.y,\r\n appliedPosition,\r\n };\r\n}\r\n\r\nexport function repositionTooltipOverlay<T>(anchor: ElementRef<HTMLElement>, overlayRef: SolarisFloatingOverlayRef<T>,\r\n options: SolarisTooltipRepositionOptions, setAppliedPosition: (position: SolarisFloatingPosition) => void): void {\r\n const anchorRect = anchor.nativeElement.getBoundingClientRect();\r\n const panelRect = overlayRef.hostElement.getBoundingClientRect();\r\n\r\n const result = computeFloatingPosition(anchorRect, panelRect, options);\r\n\r\n overlayRef.setTransform(result.x, result.y);\r\n setAppliedPosition(result.appliedPosition);\r\n}\r\n","import { ApplicationRef, EnvironmentInjector, Injectable, Type,\r\n createComponent, inject } from '@angular/core';\r\n\r\nimport {\r\n SolarisFloatingOverlayOptions,\r\n SolarisFloatingOverlayRef,\r\n SolarisFloatingRepositionContext\r\n} from './model/tooltip-services.type';\r\nimport { computeFloatingPosition } from './floating-position.util';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class SolarisFloatingOverlayService {\r\n private readonly appRef = inject(ApplicationRef);\r\n private readonly injector = inject(EnvironmentInjector);\r\n\r\n create<T>(component: Type<T>, options: SolarisFloatingOverlayOptions = {}): SolarisFloatingOverlayRef<T> {\r\n const id = this.createId(options.idPrefix ?? 'solaris-floating');\r\n\r\n const host = document.createElement('div');\r\n host.id = id;\r\n host.style.position = 'fixed';\r\n host.style.top = '0';\r\n host.style.left = '0';\r\n host.style.display = 'block';\r\n host.style.width = 'max-content';\r\n host.style.maxWidth = 'max-content';\r\n host.style.zIndex = options.zIndex ?? 'var(--solaris-z-tooltip, 1200)';\r\n host.style.pointerEvents = options.pointerEvents ?? 'none';\r\n host.style.transform = 'translate3d(0, 0, 0)';\r\n\r\n if (options.panelClass?.trim()) {\r\n host.className = options.panelClass.trim();\r\n }\r\n\r\n document.body.appendChild(host);\r\n\r\n const componentRef = createComponent(component, {\r\n environmentInjector: this.injector,\r\n hostElement: host,\r\n });\r\n\r\n this.appRef.attachView(componentRef.hostView);\r\n componentRef.changeDetectorRef.detectChanges();\r\n\r\n return {\r\n id,\r\n hostElement: host,\r\n componentRef,\r\n\r\n setTransform(x: number, y: number): void {\r\n host.style.transform = `translate3d(${Math.round(x)}px, ${Math.round(y)}px, 0)`;\r\n },\r\n\r\n destroy: (): void => {\r\n this.appRef.detachView(componentRef.hostView);\r\n componentRef.destroy();\r\n host.remove();\r\n },\r\n };\r\n }\r\n\r\n reposition<T>(context: SolarisFloatingRepositionContext<T>): void {\r\n const anchorRect = context.anchor.getBoundingClientRect();\r\n const panelRect = context.overlayRef.hostElement.getBoundingClientRect();\r\n\r\n const result = computeFloatingPosition(anchorRect, panelRect, context.options);\r\n\r\n context.overlayRef.setTransform(result.x, result.y);\r\n context.setAppliedPosition(result.appliedPosition);\r\n }\r\n\r\n clearFloatingTimers(showTimer: number, hideTimer: number, raf: number): void {\r\n globalThis.clearTimeout(showTimer);\r\n globalThis.clearTimeout(hideTimer);\r\n\r\n if (raf) {\r\n cancelAnimationFrame(raf);\r\n }\r\n }\r\n\r\n destroyOverlay<T>(overlayRef?: SolarisFloatingOverlayRef<T>): void {\r\n overlayRef?.destroy();\r\n }\r\n\r\n private createId(prefix: string): string {\r\n const random =\r\n typeof crypto !== 'undefined' && 'randomUUID' in crypto\r\n ? crypto.randomUUID()\r\n : `${Date.now()}-${Math.round(Math.random() * 1_000_000)}`;\r\n\r\n return `${prefix}-${random}`;\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component, TemplateRef, input } from '@angular/core';\r\nimport { NgTemplateOutlet } from '@angular/common';\r\n\r\nimport { SolarisTooltipPosition, SolarisTooltipSize, SolarisTooltipVariant } from '../../tooltip/model/tooltip.type';\r\n\r\n@Component({\r\n selector: 'solaris-rich-tooltip-panel',\r\n standalone: true,\r\n imports: [\r\n NgTemplateOutlet\r\n ],\r\n templateUrl: './rich-tooltip-panel.html',\r\n styleUrls: ['./rich-tooltip-panel.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class SolarisRichTooltipPanel {\r\n readonly template = input<TemplateRef<unknown> | null>(null);\r\n readonly position = input<SolarisTooltipPosition>('top');\r\n readonly variant = input<SolarisTooltipVariant>('inverse');\r\n readonly size = input<SolarisTooltipSize>('md');\r\n}\r\n","<div class=\"solaris-rich-tooltip\" [attr.data-position]=\"position()\" [attr.data-variant]=\"variant()\"\r\n [attr.data-size]=\"size()\" role=\"tooltip\">\r\n <div class=\"solaris-rich-tooltip__content\">\r\n @if (template()) {\r\n <ng-container [ngTemplateOutlet]=\"template()\"></ng-container>\r\n }\r\n </div>\r\n\r\n <span class=\"solaris-rich-tooltip__arrow\" aria-hidden=\"true\"></span>\r\n</div>\r\n","import { Directive, ElementRef, Renderer2, TemplateRef, effect, inject, input, OnDestroy } from '@angular/core';\r\n\r\nimport { SolarisTooltipPosition, SolarisTooltipSize, SolarisTooltipVariant } from '../../tooltip/model/tooltip.type';\r\nimport { SolarisFloatingOverlayService } from '../../../../services/tooltip/floating-overlay.service';\r\nimport { SolarisFloatingOverlayRef } from '../../../../services/tooltip/model/tooltip-services.type';\r\nimport { repositionTooltipOverlay } from '../../../../services/tooltip/floating-position.util';\r\nimport { SolarisRichTooltipPanel } from '../component/rich-tooltip-panel';\r\n\r\n@Directive({\r\n selector: '[solaris-rich-tooltip]',\r\n standalone: true,\r\n})\r\nexport class SolarisRichTooltipDirective implements OnDestroy {\r\n private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\r\n private readonly renderer = inject(Renderer2);\r\n private readonly floatingOverlay = inject(SolarisFloatingOverlayService);\r\n\r\n readonly template = input<TemplateRef<unknown> | null>(null, {\r\n alias: 'solaris-rich-tooltip',\r\n });\r\n\r\n readonly tooltipPosition = input<SolarisTooltipPosition>('top', {\r\n alias: 'tooltip-position',\r\n });\r\n\r\n readonly tooltipVariant = input<SolarisTooltipVariant>('inverse', {\r\n alias: 'tooltip-variant',\r\n });\r\n\r\n readonly tooltipSize = input<SolarisTooltipSize>('md', {\r\n alias: 'tooltip-size',\r\n });\r\n\r\n readonly tooltipDisabled = input(false, {\r\n alias: 'tooltip-disabled',\r\n });\r\n\r\n readonly tooltipShowDelay = input(300, {\r\n alias: 'tooltip-show-delay',\r\n });\r\n\r\n readonly tooltipHideDelay = input(120, {\r\n alias: 'tooltip-hide-delay',\r\n });\r\n\r\n readonly tooltipOffset = input(8, {\r\n alias: 'tooltip-offset',\r\n });\r\n\r\n readonly tooltipAutoFlip = input(true, {\r\n alias: 'tooltip-auto-flip',\r\n });\r\n\r\n readonly tooltipAutoShift = input(true, {\r\n alias: 'tooltip-auto-shift',\r\n });\r\n\r\n readonly tooltipViewportPadding = input(8, {\r\n alias: 'tooltip-viewport-padding',\r\n });\r\n\r\n private overlayRef?: SolarisFloatingOverlayRef<SolarisRichTooltipPanel>;\r\n private showTimer = 0;\r\n private hideTimer = 0;\r\n private raf = 0;\r\n private isTriggerHovered = false;\r\n private isPanelHovered = false;\r\n private hasFocusInside = false;\r\n\r\n private readonly cleanups: Array<() => void> = [];\r\n\r\n constructor() {\r\n const host = this.elementRef.nativeElement;\r\n\r\n this.cleanups.push(\r\n this.renderer.listen(host, 'mouseenter', () => {\r\n this.isTriggerHovered = true;\r\n this.scheduleShow();\r\n }),\r\n this.renderer.listen(host, 'mouseleave', () => {\r\n this.isTriggerHovered = false;\r\n this.scheduleHideIfSafe();\r\n }),\r\n this.renderer.listen(host, 'focusin', () => {\r\n this.hasFocusInside = true;\r\n this.scheduleShow();\r\n }),\r\n this.renderer.listen(host, 'focusout', () => {\r\n this.hasFocusInside = false;\r\n this.scheduleHideIfSafe();\r\n }),\r\n this.renderer.listen(host, 'keydown', (event: KeyboardEvent) => {\r\n if (event.key === 'Escape') {\r\n this.hide();\r\n }\r\n }),\r\n this.renderer.listen(globalThis, 'resize', () => this.scheduleReposition()),\r\n this.renderer.listen(globalThis, 'scroll', () => this.scheduleReposition()),\r\n this.renderer.listen(document, 'keydown', (event: KeyboardEvent) => {\r\n if (event.key === 'Escape') {\r\n this.hide();\r\n }\r\n }),\r\n );\r\n\r\n effect(() => {\r\n if (!this.overlayRef) return;\r\n\r\n this.applyPanelInputs();\r\n this.scheduleReposition();\r\n });\r\n }\r\n\r\n private scheduleShow(): void {\r\n if (this.tooltipDisabled()) return;\r\n if (!this.template()) return;\r\n\r\n globalThis.clearTimeout(this.hideTimer);\r\n globalThis.clearTimeout(this.showTimer);\r\n\r\n this.showTimer = globalThis.setTimeout(() => {\r\n this.show();\r\n }, this.tooltipShowDelay());\r\n }\r\n\r\n private scheduleHideIfSafe(): void {\r\n globalThis.clearTimeout(this.showTimer);\r\n globalThis.clearTimeout(this.hideTimer);\r\n\r\n this.hideTimer = globalThis.setTimeout(() => {\r\n if (!this.isTriggerHovered && !this.isPanelHovered && !this.hasFocusInside) {\r\n this.hide();\r\n }\r\n }, this.tooltipHideDelay());\r\n }\r\n\r\n private show(): void {\r\n if (this.overlayRef || this.tooltipDisabled()) return;\r\n if (!this.template()) return;\r\n\r\n this.overlayRef = this.floatingOverlay.create(SolarisRichTooltipPanel, {\r\n idPrefix: 'solaris-rich-tooltip',\r\n zIndex: 'var(--solaris-z-tooltip, 1200)',\r\n pointerEvents: 'auto',\r\n });\r\n\r\n this.applyPanelInputs();\r\n this.bindPanelInteractions();\r\n\r\n this.renderer.setAttribute(\r\n this.elementRef.nativeElement,\r\n 'aria-describedby',\r\n this.overlayRef.id,\r\n );\r\n\r\n requestAnimationFrame(() => this.reposition());\r\n }\r\n\r\n private bindPanelInteractions(): void {\r\n if (!this.overlayRef) return;\r\n\r\n const panel = this.overlayRef.hostElement;\r\n\r\n this.cleanups.push(\r\n this.renderer.listen(panel, 'mouseenter', () => {\r\n this.isPanelHovered = true;\r\n globalThis.clearTimeout(this.hideTimer);\r\n }),\r\n this.renderer.listen(panel, 'mouseleave', () => {\r\n this.isPanelHovered = false;\r\n this.scheduleHideIfSafe();\r\n }),\r\n this.renderer.listen(panel, 'focusin', () => {\r\n this.hasFocusInside = true;\r\n globalThis.clearTimeout(this.hideTimer);\r\n }),\r\n this.renderer.listen(panel, 'focusout', () => {\r\n this.hasFocusInside = false;\r\n this.scheduleHideIfSafe();\r\n }),\r\n );\r\n }\r\n\r\n private hide(): void {\r\n this.floatingOverlay.clearFloatingTimers(this.showTimer, this.hideTimer, this.raf);\r\n this.raf = 0;\r\n\r\n this.renderer.removeAttribute(this.elementRef.nativeElement, 'aria-describedby');\r\n\r\n this.floatingOverlay.destroyOverlay(this.overlayRef);\r\n this.overlayRef = undefined;\r\n\r\n this.isPanelHovered = false;\r\n this.hasFocusInside = false;\r\n }\r\n\r\n private applyPanelInputs(): void {\r\n if (!this.overlayRef) return;\r\n\r\n const panel = this.overlayRef.componentRef;\r\n\r\n panel.setInput('template', this.template());\r\n panel.setInput('position', this.tooltipPosition());\r\n panel.setInput('variant', this.tooltipVariant());\r\n panel.setInput('size', this.tooltipSize());\r\n\r\n panel.changeDetectorRef.detectChanges();\r\n }\r\n\r\n private scheduleReposition(): void {\r\n if (!this.overlayRef) return;\r\n if (this.raf) return;\r\n\r\n this.raf = requestAnimationFrame(() => {\r\n this.raf = 0;\r\n this.reposition();\r\n });\r\n }\r\n\r\n private reposition(): void {\r\n if (!this.overlayRef) return;\r\n\r\n repositionTooltipOverlay(this.elementRef, this.overlayRef, {\r\n position: this.tooltipPosition(),\r\n offset: this.tooltipOffset(),\r\n viewportPadding: this.tooltipViewportPadding(),\r\n autoFlip: this.tooltipAutoFlip(),\r\n autoShift: this.tooltipAutoShift(),\r\n },\r\n (position) => {\r\n this.overlayRef?.componentRef.setInput('position', position);\r\n this.overlayRef?.componentRef.changeDetectorRef.detectChanges();\r\n },\r\n );\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.hide();\r\n\r\n for (const cleanup of this.cleanups) {\r\n cleanup();\r\n }\r\n }\r\n}\r\n","import { Directive, ElementRef, HostBinding, HostListener, Input, booleanAttribute, computed, inject, signal } from '@angular/core';\r\n\r\nimport { SolarisButtonColorInput, SolarisButtonVariant, SolarisRadiusInput } from '../models/button.type';\r\nimport { SolarisColorPreset, SolarisSizePreset } from '../../../common/model/common-configurations.type';\r\n\r\nconst PRESET_COLORS = new Set<SolarisColorPreset>([\r\n 'primary',\r\n 'surface',\r\n 'success',\r\n 'warning',\r\n 'error',\r\n 'info',\r\n 'gradient',\r\n]);\r\nfunction resolveRadius(v: SolarisRadiusInput): string {\r\n const s = String(v).trim();\r\n switch (s) {\r\n case 'none':\r\n return '0';\r\n case 'sm':\r\n return 'var(--solaris-radius-sm)';\r\n case 'md':\r\n return 'var(--solaris-radius-md, var(--solaris-radius-sm))';\r\n case 'lg':\r\n return 'var(--solaris-radius-lg, var(--solaris-radius-md, var(--solaris-radius-sm)))';\r\n case 'full':\r\n return 'var(--solaris-radius-full)';\r\n default:\r\n return s;\r\n }\r\n}\r\n\r\n@Directive({\r\n selector: 'button[solaris-button], a[solaris-button]',\r\n standalone: true,\r\n})\r\nexport class SolarisButtonDirective {\r\n private readonly elementRef = inject(ElementRef<HTMLElement>);\r\n\r\n private readonly _loading = signal(false);\r\n private readonly _disabled = signal(false);\r\n private readonly _iconOnly = signal(false);\r\n private readonly _fullWidth = signal(false);\r\n private readonly _badgeOverlay = signal(false);\r\n private readonly _textColor = signal<string | null>(null);\r\n private readonly _customColor = signal<string | null>(null);\r\n private readonly _size = signal<SolarisSizePreset>('md');\r\n private readonly _variant = signal<SolarisButtonVariant>('solid');\r\n private readonly _radius = signal<SolarisRadiusInput | null>(null);\r\n private readonly _color = signal<SolarisColorPreset | 'custom'>('primary');\r\n\r\n private readonly isAnchor = computed(\r\n () => this.elementRef.nativeElement.tagName.toLowerCase() === 'a'\r\n );\r\n\r\n @Input() set size(v: SolarisSizePreset) {\r\n if (v) this._size.set(v);\r\n }\r\n @Input() set variant(v: SolarisButtonVariant) {\r\n if (v) this._variant.set(v);\r\n }\r\n @Input() set color(v: SolarisButtonColorInput) {\r\n if (v == null || String(v).trim() === '') return;\r\n\r\n const value = String(v).trim();\r\n if (PRESET_COLORS.has(value as SolarisColorPreset)) {\r\n this._color.set(value as SolarisColorPreset);\r\n this._customColor.set(null);\r\n } else {\r\n this._color.set('custom');\r\n this._customColor.set(value);\r\n }\r\n }\r\n @Input() set textColor(v: string | null | undefined) {\r\n const value = v == null || String(v).trim() === '' ? null : String(v).trim();\r\n this._textColor.set(value);\r\n }\r\n @Input() set radius(v: SolarisRadiusInput | null | undefined) {\r\n const value = v == null || String(v).trim() === '' ? null : (v);\r\n this._radius.set(value);\r\n }\r\n @Input({ transform: booleanAttribute }) set loading(v: boolean) {\r\n this._loading.set(v);\r\n }\r\n @Input({ transform: booleanAttribute }) set iconOnly(v: boolean) {\r\n this._iconOnly.set(v);\r\n }\r\n @Input({ transform: booleanAttribute }) set disabled(v: boolean) {\r\n this._disabled.set(v);\r\n }\r\n @Input({ transform: booleanAttribute }) set fullWidth(v: boolean) {\r\n this._fullWidth.set(v);\r\n }\r\n @Input({ transform: booleanAttribute }) set badgeOverlay(v: boolean) {\r\n this._badgeOverlay.set(v);\r\n }\r\n\r\n @HostBinding('attr.solaris-button') readonly attr = '';\r\n @HostBinding('attr.tabindex') get tabIndex() {\r\n return this.isAnchor() && (this._disabled() || this._loading()) ? -1 : null;\r\n }\r\n @HostBinding('attr.aria-busy') get ariaBusy() {\r\n return this._loading() ? 'true' : null;\r\n }\r\n @HostBinding('attr.data-size') get dataSize() {\r\n return this._size();\r\n }\r\n @HostBinding('attr.data-color') get dataColor() {\r\n return this._color();\r\n }\r\n @HostBinding('attr.disabled') get nativeDisabled() {\r\n const isButton = !this.isAnchor();\r\n return isButton && (this._disabled() || this._loading()) ? '' : null;\r\n }\r\n @HostBinding('attr.data-variant') get dataVariant() {\r\n return this._variant();\r\n }\r\n @HostBinding('attr.aria-disabled') get ariaDisabled() {\r\n return this.isAnchor() && (this._disabled() || this._loading()) ? 'true' : null;\r\n }\r\n @HostBinding('attr.data-icon-only') get dataIconOnly() {\r\n return this._iconOnly() ? 'true' : null;\r\n }\r\n @HostBinding('attr.data-full-width') get dataFullWidth() {\r\n return this._fullWidth() ? 'true' : null;\r\n }\r\n @HostBinding('style.--sb-custom') get customColorValue() {\r\n return this._customColor() ?? null;\r\n }\r\n @HostBinding('attr.data-custom-ink') get dataCustomInk() {\r\n return this._textColor() ? 'true' : null;\r\n }\r\n @HostBinding('style.--sb-custom-ink') get customInkValue() {\r\n return this._textColor() ?? null;\r\n }\r\n @HostBinding('attr.data-badge-overlay') get dataBadgeOverlay() {\r\n return this._badgeOverlay() ? 'true' : null;\r\n }\r\n @HostBinding('style.--solaris-button-radius') get buttonRadius() {\r\n return this._radius() ? resolveRadius(this._radius()!) : null;\r\n }\r\n\r\n @HostListener('click', ['$event']) onClick(ev: Event) {\r\n if (!this.isAnchor()) return;\r\n if (this._disabled() || this._loading()) {\r\n ev.preventDefault();\r\n ev.stopImmediatePropagation();\r\n }\r\n }\r\n}\r\n","import { EnvironmentProviders, InjectionToken, makeEnvironmentProviders } from '@angular/core';\r\n\r\nimport { SolarisNotificationConfig, SolarisNotificationConfigInput, SolarisNotificationPosition } from '../model/notification.types';\r\n\r\nexport const SOLARIS_NOTIFICATION_POSITIONS: readonly SolarisNotificationPosition[] = [\r\n 'top-right', 'top-left', 'top-center',\r\n 'bottom-right', 'bottom-left', 'bottom-center',\r\n] as const;\r\n\r\nexport const SOLARIS_NOTIFICATION_DEFAULT_CONFIG: SolarisNotificationConfig = {\r\n defaultPosition: 'bottom-center',\r\n defaultDuration: 15000,\r\n maxVisiblePerPosition: 4,\r\n hoverPause: false,\r\n newestOnTop: true,\r\n expandSingle: false,\r\n persistInCenter: true,\r\n translationScope: 'solaris.notifications',\r\n};\r\n\r\nexport const SOLARIS_NOTIFICATION_CONFIG = new InjectionToken<SolarisNotificationConfig>(\r\n 'SOLARIS_NOTIFICATION_CONFIG',\r\n {\r\n providedIn: 'root',\r\n factory: () => SOLARIS_NOTIFICATION_DEFAULT_CONFIG,\r\n }\r\n);\r\n\r\nfunction mergeConfig(input: SolarisNotificationConfigInput = {}): SolarisNotificationConfig {\r\n return {\r\n ...SOLARIS_NOTIFICATION_DEFAULT_CONFIG,\r\n ...input,\r\n };\r\n}\r\n\r\nexport function provideSolarisNotifications(input: SolarisNotificationConfigInput = {}): EnvironmentProviders {\r\n return makeEnvironmentProviders([\r\n {\r\n provide: SOLARIS_NOTIFICATION_CONFIG,\r\n useValue: mergeConfig(input),\r\n },\r\n ]);\r\n}\r\n","import { Injectable, computed, inject } from '@angular/core';\r\nimport { toSignal } from '@angular/core/rxjs-interop';\r\n\r\nimport {\r\n SOLARIS_TRANSLATION,\r\n SOLARIS_TRANSLATION_CONFIGURATION,\r\n SolarisTranslationParams,\r\n} from '@educarehq/solaris-services';\r\n\r\nimport { SOLARIS_NOTIFICATION_CONFIG } from '../config/notification.config';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class SolarisNotificationIntlService {\r\n private readonly translationService = inject(SOLARIS_TRANSLATION);\r\n private readonly notificationConfig = inject(SOLARIS_NOTIFICATION_CONFIG);\r\n private readonly translationConfig = inject(SOLARIS_TRANSLATION_CONFIGURATION);\r\n\r\n private readonly activeLang = toSignal(this.translationService.languageChanges(), {\r\n initialValue: this.translationService.language(),\r\n });\r\n\r\n private readonly prefix = computed(() => {\r\n this.activeLang();\r\n\r\n const uiScope = this.translationConfig.uiScope ?? 'ui';\r\n const namespace = this.notificationConfig.translationScope;\r\n\r\n return `${uiScope}.${namespace}`;\r\n });\r\n\r\n translate(key: string, params?: SolarisTranslationParams): string {\r\n this.activeLang();\r\n\r\n const isAbsoluteKey = key.startsWith('ui.') || key.startsWith('solaris.')\r\n || key.startsWith('notification.');\r\n\r\n const finalKey = isAbsoluteKey ? key : `${this.prefix()}.${key}`;\r\n return this.translationService.translate(finalKey, params);\r\n }\r\n\r\n close(): string {\r\n return this.translate('close');\r\n }\r\n\r\n expand(): string {\r\n return this.translate('expand');\r\n }\r\n\r\n collapse(): string {\r\n return this.translate('collapse');\r\n }\r\n\r\n stopTimer(): string {\r\n return this.translate('stopTimer');\r\n }\r\n\r\n resumeTimer(): string {\r\n return this.translate('resumeTimer');\r\n }\r\n\r\n paused(): string {\r\n return this.translate('paused');\r\n }\r\n\r\n centerTitle(): string {\r\n return this.translate('centerTitle');\r\n }\r\n\r\n emptyCenter(): string {\r\n return this.translate('emptyCenter');\r\n }\r\n\r\n clearHistory(): string {\r\n return this.translate('clearHistory');\r\n }\r\n\r\n autoClose(seconds: number): string {\r\n return this.translate('autoClose', {\r\n seconds,\r\n unit: seconds === 1 ? this.translate('units.second') : this.translate('units.seconds'),\r\n });\r\n }\r\n}\r\n","import { DestroyRef, Injectable, PLATFORM_ID, computed, inject, signal } from '@angular/core';\r\nimport { isPlatformBrowser } from '@angular/common';\r\n\r\nimport { SolarisNotificationConfig, SolarisNotificationInput, SolarisNotificationKind,\r\n SolarisNotificationPosition, SolarisNotificationRecord, SolarisNotificationRef } from '../model/notification.types';\r\nimport { SOLARIS_NOTIFICATION_CONFIG, SOLARIS_NOTIFICATION_POSITIONS } from '../config/notification.config';\r\nimport { SOLARIS_TRANSLATION } from '@educarehq/solaris-services';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class SolarisNotificationService {\r\n private readonly platformId = inject(PLATFORM_ID);\r\n private readonly destroyRef = inject(DestroyRef);\r\n readonly config: SolarisNotificationConfig = inject(SOLARIS_NOTIFICATION_CONFIG);\r\n private readonly translationService = inject(SOLARIS_TRANSLATION);\r\n\r\n readonly centerOpen = signal(false);\r\n private readonly _items = signal<SolarisNotificationRecord[]>([]);\r\n\r\n readonly items = computed(() => this._items());\r\n readonly visibleItems = computed(() =>\r\n this._items().filter((item) => item.state === 'visible')\r\n );\r\n readonly centerItems = computed(() =>\r\n [...this._items()].sort((a, b) => b.createdAt - a.createdAt)\r\n );\r\n\r\n private lastTick = 0;\r\n private readonly intervalId: number | null = null;\r\n\r\n constructor() {\r\n if (!isPlatformBrowser(this.platformId)) return;\r\n\r\n this.lastTick = performance.now();\r\n this.intervalId = globalThis.setInterval(() => this.tick(), 100);\r\n\r\n const handleVisibility = () => {\r\n const hidden = document.visibilityState !== 'visible';\r\n\r\n this._items.update((items) => items.map((item) =>\r\n item.duration == null ? item : { ...item, pausedByVisibility: hidden }));\r\n };\r\n\r\n document.addEventListener('visibilitychange', handleVisibility, {\r\n passive: true,\r\n });\r\n\r\n this.destroyRef.onDestroy(() => {\r\n if (this.intervalId != null) {\r\n globalThis.clearInterval(this.intervalId);\r\n }\r\n\r\n document.removeEventListener('visibilitychange', handleVisibility);\r\n });\r\n }\r\n\r\n success(input: Omit<SolarisNotificationInput, 'kind'>): SolarisNotificationRef {\r\n return this.show({ ...input, kind: 'success' });\r\n }\r\n\r\n warning(input: Omit<SolarisNotificationInput, 'kind'>): SolarisNotificationRef {\r\n return this.show({ ...input, kind: 'warning' });\r\n }\r\n\r\n error(input: Omit<SolarisNotificationInput, 'kind'>): SolarisNotificationRef {\r\n return this.show({ ...input, kind: 'error' });\r\n }\r\n\r\n info(input: Omit<SolarisNotificationInput, 'kind'>): SolarisNotificationRef {\r\n return this.show({ ...input, kind: 'info' });\r\n }\r\n\r\n show(input: SolarisNotificationInput): SolarisNotificationRef {\r\n const item = this.createRecord(input);\r\n\r\n this._items.update((items) =>\r\n this.config.newestOnTop ? [item, ...items] : [...items, item]\r\n );\r\n\r\n this.rebalance();\r\n return this.createRef(item.id);\r\n }\r\n\r\n visibleByPosition(position: SolarisNotificationPosition): SolarisNotificationRecord[] {\r\n return this.visibleItems().filter((item) => item.position === position);\r\n }\r\n\r\n isPaused(item: SolarisNotificationRecord): boolean {\r\n return item.pausedByHover || item.pausedByUser || item.pausedByVisibility;\r\n }\r\n\r\n dismiss(id: string): void {\r\n this._items.update((items) => {\r\n if (this.config.persistInCenter) {\r\n return items.map((item) =>\r\n item.id === id ? { ...item, state: 'archived', pausedByHover: false, pausedByUser: false, pausedByVisibility: false,} : item);\r\n }\r\n\r\n return items.filter((item) => item.id !== id);\r\n });\r\n\r\n this.rebalance();\r\n }\r\n\r\n remove(id: string): void {\r\n this._items.update((items) => items.filter((item) => item.id !== id));\r\n }\r\n\r\n clearHistory(): void {\r\n this._items.update((items) => items.filter((item) => item.state !== 'archived'));\r\n }\r\n\r\n pause(id: string): void {\r\n this.patch(id, { pausedByUser: true });\r\n }\r\n\r\n resume(id: string): void {\r\n this.patch(id, { pausedByUser: false });\r\n }\r\n\r\n toggleUserPause(id: string): void {\r\n const current = this.find(id);\r\n if (!current) return;\r\n\r\n this.patch(id, { pausedByUser: !current.pausedByUser });\r\n }\r\n\r\n setHoverPaused(id: string, paused: boolean): void {\r\n const current = this.find(id);\r\n if (!current?.pauseOnHover) return;\r\n\r\n this.patch(id, { pausedByHover: paused });\r\n }\r\n\r\n toggleExpanded(id: string): void {\r\n const current = this.find(id);\r\n if (!current?.expandable) return;\r\n\r\n this._items.update((items) =>\r\n items.map((item) => {\r\n if (item.id === id) {\r\n return { ...item, expanded: !item.expanded };\r\n }\r\n\r\n if (this.config.expandSingle && item.position === current.position &&\r\n item.state === 'visible') {\r\n return { ...item, expanded: false };\r\n }\r\n\r\n return item;\r\n })\r\n );\r\n }\r\n\r\n update(id: string, patch: Partial<SolarisNotificationInput>): void {\r\n this._items.update((items) =>\r\n items.map((item) => {\r\n if (item.id !== id) return item;\r\n\r\n const hasDurationPatch = this.hasOwn(patch, 'duration');\r\n const hasTitlePatch = this.hasOwn(patch, 'title') ||\r\n this.hasOwn(patch, 'titleKey') || this.hasOwn(patch, 'titleParams');\r\n\r\n const hasDescriptionPatch = this.hasOwn(patch, 'description') ||\r\n this.hasOwn(patch, 'descriptionKey') || this.hasOwn(patch, 'descriptionParams');\r\n\r\n const duration = hasDurationPatch ? (patch.duration ?? null) : item.duration;\r\n\r\n const title = hasTitlePatch ? this.resolveRequiredText(\r\n patch.title, patch.titleKey, patch.titleParams,\r\n item.title) : item.title;\r\n\r\n const description = hasDescriptionPatch ? this.resolveOptionalText(\r\n patch.description, patch.descriptionKey, patch.descriptionParams,\r\n item.description) : item.description;\r\n\r\n const hasExplicitExpandable = this.hasOwn(patch, 'expandable');\r\n\r\n let expandable = item.expandable;\r\n\r\n if (hasExplicitExpandable) {\r\n expandable = patch.expandable ?? item.expandable;\r\n } else if (hasDescriptionPatch) {\r\n expandable = Boolean(description?.trim().length);\r\n }\r\n\r\n return {\r\n ...item,\r\n title,\r\n description,\r\n kind: patch.kind ?? item.kind,\r\n position: patch.position ?? item.position,\r\n duration,\r\n remainingMs: hasDurationPatch ? duration ?? null : item.remainingMs,\r\n expandable,\r\n expanded: patch.expanded ?? item.expanded,\r\n closeable: patch.closeable ?? item.closeable,\r\n pauseOnHover: patch.pauseOnHover ?? item.pauseOnHover,\r\n actions: patch.actions ?? item.actions,\r\n ariaLive: patch.ariaLive ?? item.ariaLive,\r\n data: patch.data ?? item.data,\r\n };\r\n })\r\n );\r\n\r\n this.rebalance();\r\n }\r\n\r\n openCenter(): void {\r\n this.centerOpen.set(true);\r\n }\r\n\r\n closeCenter(): void {\r\n this.centerOpen.set(false);\r\n }\r\n\r\n toggleCenter(): void {\r\n this.centerOpen.update((value) => !value);\r\n }\r\n\r\n private tick(): void {\r\n const now = performance.now();\r\n const delta = now - this.lastTick;\r\n this.lastTick = now;\r\n\r\n let shouldRebalance = false;\r\n const expiredIds = new Set<string>();\r\n\r\n this._items.update((items) => {\r\n const next: SolarisNotificationRecord[] = items.map(\r\n (item): SolarisNotificationRecord => {\r\n if (item.state !== 'visible') return item;\r\n if (item.duration == null || item.remainingMs == null) return item;\r\n if (this.isPaused(item)) return item;\r\n\r\n const remainingMs = Math.max(0, item.remainingMs - delta);\r\n\r\n if (remainingMs === 0) {\r\n shouldRebalance = true;\r\n expiredIds.add(item.id);\r\n\r\n if (this.config.persistInCenter) {\r\n return {\r\n ...item,\r\n remainingMs: 0,\r\n state: 'archived',\r\n pausedByHover: false,\r\n pausedByUser: false,\r\n pausedByVisibility: false,\r\n };\r\n }\r\n\r\n return item;\r\n }\r\n\r\n return {\r\n ...item,\r\n remainingMs,\r\n };\r\n }\r\n );\r\n\r\n if (this.config.persistInCenter) {\r\n return next;\r\n }\r\n\r\n return next.filter((item) => !expiredIds.has(item.id));\r\n });\r\n\r\n if (shouldRebalance) {\r\n this.rebalance();\r\n }\r\n }\r\n\r\n private rebalance(): void {\r\n this._items.update((items) => {\r\n let next = [...items];\r\n\r\n for (const position of SOLARIS_NOTIFICATION_POSITIONS) {\r\n const visibleCount = next.filter(\r\n (item) => item.position === position && item.state === 'visible'\r\n ).length;\r\n\r\n const freeSlots = this.config.maxVisiblePerPosition - visibleCount;\r\n if (freeSlots <= 0) continue;\r\n\r\n const queued = next.filter((item) => item.position === position && item.state === 'queued')\r\n .sort((a, b) => this.config.newestOnTop ? b.createdAt - a.createdAt : a.createdAt - b.createdAt)\r\n .slice(0, freeSlots);\r\n\r\n if (!queued.length) continue;\r\n const queuedIds = new Set(queued.map((item) => item.id));\r\n next = next.map((item) => queuedIds.has(item.id) ? { ...item, state: 'visible' } : item);\r\n }\r\n\r\n return next;\r\n });\r\n }\r\n\r\n private createRecord(input: SolarisNotificationInput): SolarisNotificationRecord {\r\n const duration =\r\n input.duration === undefined\r\n ? this.config.defaultDuration\r\n : input.duration;\r\n\r\n const kind = input.kind ?? 'info';\r\n const position = input.position ?? this.config.defaultPosition;\r\n\r\n const title = this.resolveRequiredText(\r\n input.title,\r\n input.titleKey,\r\n input.titleParams,\r\n ''\r\n );\r\n\r\n const description = this.resolveOptionalText(\r\n input.description,\r\n input.descriptionKey,\r\n input.descriptionParams,\r\n null\r\n );\r\n\r\n const expandable = input.expandable ?? Boolean(description?.trim().length);\r\n\r\n return {\r\n id: this.createId(),\r\n title,\r\n description,\r\n kind,\r\n position,\r\n state: 'queued',\r\n duration,\r\n remainingMs: duration == null ? null : duration,\r\n expandable,\r\n expanded: input.expanded ?? false,\r\n closeable: input.closeable ?? true,\r\n pauseOnHover: input.pauseOnHover ?? this.config.hoverPause,\r\n pausedByHover: false,\r\n pausedByUser: false,\r\n pausedByVisibility: false,\r\n actions: input.actions ?? [],\r\n ariaLive: input.ariaLive ?? this.resolveAriaLive(kind),\r\n data: input.data ?? null,\r\n createdAt: Date.now(),\r\n };\r\n }\r\n\r\n private resolveAriaLive(kind: SolarisNotificationKind): 'polite' | 'assertive' {\r\n return kind === 'success' || kind === 'info' ? 'polite' : 'assertive';\r\n }\r\n\r\n private createRef(id: string): SolarisNotificationRef {\r\n return {\r\n id,\r\n dismiss: () => this.dismiss(id),\r\n remove: () => this.remove(id),\r\n pause: () => this.pause(id),\r\n resume: () => this.resume(id),\r\n toggleExpanded: () => this.toggleExpanded(id),\r\n update: (patch) => this.update(id, patch),\r\n };\r\n }\r\n\r\n private createId(): string {\r\n const uuid = globalThis.crypto?.randomUUID?.();\r\n return uuid ?? `sn_${Date.now()}_${Math.random().toString(36).slice(2, 10)}`;\r\n }\r\n\r\n private find(id: string): SolarisNotificationRecord | undefined {\r\n return this._items().find((item) => item.id === id);\r\n }\r\n\r\n private patch(id: string,\r\n patch: Partial<Pick<SolarisNotificationRecord, 'pausedByHover' | 'pausedByUser' | 'pausedByVisibility'>>): void {\r\n this._items.update((items) =>\r\n items.map((item) => (item.id === id ? { ...item, ...patch } : item))\r\n );\r\n }\r\n\r\n private resolveRequiredText(value: string | undefined, key: string | undefined,\r\n params: Record<string, unknown> | undefined, fallback: string): string {\r\n if (key) {\r\n return this.translationService.translate(key, params);\r\n }\r\n\r\n if (value == null) {\r\n return fallback;\r\n }\r\n\r\n return value;\r\n }\r\n\r\n private resolveOptionalText(value: string | null | undefined, key: string | undefined,\r\n params: Record<string, unknown> | undefined, fallback: string | null): string | null {\r\n if (key) {\r\n return this.translationService.translate(key, params);\r\n }\r\n\r\n if (value === undefined) {\r\n return fallback;\r\n }\r\n\r\n return value ?? null;\r\n }\r\n\r\n private hasOwn<T extends object>(obj: T, key: PropertyKey): boolean {\r\n return Object.hasOwn(obj, key);\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component, computed, inject, input } from '@angular/core';\r\nimport { NgClass } from '@angular/common';\r\n\r\nimport { SolarisNotificationAction, SolarisNotificationRecord } from '../../model/notification.types';\r\nimport { SolarisNotificationIntlService } from '../../service/notification-intl.service';\r\nimport { SolarisNotificationService } from '../../service/notification.service';\r\nimport { SolarisButtonDirective } from '../../../../actions/button/directives/button.directive';\r\n\r\n\r\n@Component({\r\n selector: 'solaris-notification-item',\r\n standalone: true,\r\n imports: [NgClass, SolarisButtonDirective],\r\n templateUrl: './notification-item.html',\r\n styleUrl: './notification-item.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class SolarisNotificationItemComponent {\r\n protected readonly notificationService = inject(SolarisNotificationService);\r\n protected readonly intl = inject(SolarisNotificationIntlService);\r\n\r\n readonly item = input.required<SolarisNotificationRecord>();\r\n readonly mode = input<'toast' | 'center'>('toast');\r\n\r\n readonly paused = computed(() => this.notificationService.isPaused(this.item()));\r\n\r\n readonly secondsLeft = computed(() => {\r\n const remaining = this.item().remainingMs ?? 0;\r\n return Math.max(1, Math.ceil(remaining / 1000));\r\n });\r\n\r\n readonly progress = computed(() => {\r\n const duration = this.item().duration;\r\n const remaining = this.item().remainingMs;\r\n\r\n if (duration == null || remaining == null || duration <= 0) return 0;\r\n return Math.max(0, Math.min(100, (remaining / duration) * 100));\r\n });\r\n\r\n readonly iconClass = computed(() => {\r\n switch (this.item().kind) {\r\n case 'success':\r\n return 'ph-check-circle';\r\n case 'warning':\r\n return 'ph-warning-circle';\r\n case 'error':\r\n return 'ph-x-circle';\r\n default:\r\n return 'ph-info';\r\n }\r\n });\r\n\r\n protected readonly isCompactHeader = computed(() => {\r\n const hasDescription = Boolean(this.item().description?.trim().length);\r\n return !hasDescription && !this.item().expandable;\r\n });\r\n\r\n toggleExpanded(): void {\r\n this.notificationService.toggleExpanded(this.item().id);\r\n }\r\n\r\n toggleUserPause(): void {\r\n this.notificationService.toggleUserPause(this.item().id);\r\n }\r\n\r\n close(): void {\r\n this.notificationService.dismiss(this.item().id);\r\n }\r\n\r\n onMouseEnter(): void {\r\n if (this.mode() !== 'toast') return;\r\n this.notificationService.setHoverPaused(this.item().id, true);\r\n }\r\n\r\n onMouseLeave(): void {\r\n if (this.mode() !== 'toast') return;\r\n this.notificationService.setHoverPaused(this.item().id, false);\r\n }\r\n\r\n async runAction(action: SolarisNotificationAction): Promise<void> {\r\n await action.run?.({\r\n id: this.item().id,\r\n data: this.item().data,\r\n dismiss: () => this.notificationService.dismiss(this.item().id),\r\n remove: () => this.notificationService.remove(this.item().id),\r\n update: (patch) => this.notificationService.update(this.item().id, patch),\r\n });\r\n\r\n if (action.closeOnClick !== false) {\r\n this.notificationService.dismiss(this.item().id);\r\n }\r\n }\r\n\r\n protected resolveActionLabel(action: SolarisNotificationAction): string {\r\n if (action.labelKey) {\r\n return this.intl.translate(action.labelKey, action.labelParams);\r\n }\r\n\r\n return action.label ?? '';\r\n }\r\n}\r\n","<article class=\"sn\" [attr.data-kind]=\"item().kind\" [attr.data-mode]=\"mode()\" [attr.data-expanded]=\"item().expanded ? 'true' : 'false'\"\r\n [attr.data-paused]=\"paused() ? 'true' : 'false'\" [attr.aria-live]=\"mode() === 'toast' ? item().ariaLive : null\"\r\n [attr.role]=\"item().ariaLive === 'assertive' ? 'alert' : 'status'\" (mouseenter)=\"onMouseEnter()\" (mouseleave)=\"onMouseLeave()\">\r\n <div class=\"sn__header\" [attr.data-align]=\"isCompactHeader() ? 'center' : 'start'\">\r\n <div class=\"sn__leading\">\r\n <span class=\"sn__icon\" aria-hidden=\"true\">\r\n <i class=\"ph\" [ngClass]=\"iconClass()\"></i>\r\n </span>\r\n\r\n <div class=\"sn__heading\">\r\n <strong class=\"sn__title\">{{ item().title }}</strong>\r\n\r\n @if (!item().expanded && item().description) {\r\n <p class=\"sn__description sn__description--clamped\">\r\n {{ item().description }}\r\n </p>\r\n }\r\n </div>\r\n </div>\r\n\r\n <div class=\"sn__controls\">\r\n @if (item().expandable && item().description) {\r\n <button type=\"button\" class=\"sn__icon-btn\" [attr.aria-expanded]=\"item().expanded\"\r\n [attr.aria-label]=\"item().expanded ? intl.collapse() : intl.expand()\" (click)=\"toggleExpanded()\">\r\n <i class=\"ph\" [ngClass]=\"item().expanded ? 'ph-caret-up' : 'ph-caret-down'\" aria-hidden=\"true\"></i>\r\n </button>\r\n }\r\n\r\n @if (item().closeable) {\r\n <button type=\"button\" class=\"sn__icon-btn\" [attr.aria-label]=\"intl.close()\" (click)=\"close()\">\r\n <i class=\"ph ph-x\" aria-hidden=\"true\"></i>\r\n </button>\r\n }\r\n </div>\r\n </div>\r\n\r\n @if (item().expanded && item().description) {\r\n <div class=\"sn__body\">\r\n <p class=\"sn__body-text\">{{ item().description }}</p>\r\n @if (item().actions.length) {\r\n <div class=\"sn__actions\">\r\n @for (action of item().actions; track action.id) {\r\n <button type=\"button\" solaris-button [variant]=\"action.variant ?? 'outline'\" [color]=\"action.color ?? 'surface'\"\r\n [size]=\"action.size ?? 'sm'\" [radius]=\"action.radius ?? 'md'\" [disabled]=\"action.disabled ?? false\"\r\n (click)=\"runAction(action)\">\r\n {{ resolveActionLabel(action) }}\r\n </button>\r\n }\r\n </div>\r\n }\r\n </div>\r\n }\r\n\r\n @if (mode() === 'toast' && item().duration !== null) {\r\n <div class=\"sn__footer\">\r\n @if (!paused()) {\r\n <p class=\"sn__timer\">\r\n {{ intl.autoClose(secondsLeft()) }}\r\n <button type=\"button\" class=\"sn__timer-link\" (click)=\"toggleUserPause()\">\r\n {{ intl.stopTimer() }}\r\n </button>.\r\n </p>\r\n } @else {\r\n <p class=\"sn__timer\">\r\n {{ intl.paused() }}\r\n <button type=\"button\" class=\"sn__timer-link\" (click)=\"toggleUserPause()\">\r\n {{ intl.resumeTimer() }}\r\n </button>.\r\n </p>\r\n }\r\n </div>\r\n\r\n <div class=\"sn__progress\" aria-hidden=\"true\">\r\n <span [style.width.%]=\"progress()\"></span>\r\n </div>\r\n }\r\n</article>\r\n","import { ChangeDetectionStrategy, Component, HostListener, inject } from '@angular/core';\r\n\r\nimport { SolarisButtonDirective } from '../../../../actions/button/directives/button.directive';\r\nimport { SolarisNotificationIntlService } from '../../service/notification-intl.service';\r\nimport { SolarisNotificationService } from '../../service/notification.service';\r\nimport { SolarisNotificationItemComponent } from '../item/notification-item';\r\n\r\n@Component({\r\n selector: 'solaris-notification-center',\r\n standalone: true,\r\n imports: [SolarisButtonDirective, SolarisNotificationItemComponent],\r\n templateUrl: './notification-center.html',\r\n styleUrl: './notification-center.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class SolarisNotificationCenterComponent {\r\n protected readonly notificationService = inject(SolarisNotificationService);\r\n protected readonly intl = inject(SolarisNotificationIntlService);\r\n\r\n @HostListener('document:keydown.escape') onEscape(): void {\r\n if (this.notificationService.centerOpen()) {\r\n this.notificationService.closeCenter();\r\n }\r\n }\r\n}\r\n","@if (notificationService.centerOpen()) {\r\n <div class=\"snc__backdrop\" (click)=\"notificationService.closeCenter()\"></div>\r\n\r\n <aside class=\"snc\" role=\"dialog\" aria-modal=\"true\" [attr.aria-label]=\"intl.centerTitle()\">\r\n <header class=\"snc__header\">\r\n <div>\r\n <strong class=\"snc__title\">{{ intl.centerTitle() }}</strong>\r\n </div>\r\n\r\n <div class=\"snc__controls\">\r\n <button type=\"button\" solaris-button variant=\"outline\" color=\"surface\" size=\"sm\" radius=\"md\"\r\n (click)=\"notificationService.clearHistory()\">\r\n {{ intl.clearHistory() }}\r\n </button>\r\n\r\n <button type=\"button\" class=\"snc__icon-btn\" [attr.aria-label]=\"intl.close()\" (click)=\"notificationService.closeCenter()\">\r\n <i class=\"ph ph-x\" aria-hidden=\"true\"></i>\r\n </button>\r\n </div>\r\n </header>\r\n\r\n <div class=\"snc__list\">\r\n @for (item of notificationService.centerItems(); track item.id) {\r\n <solaris-notification-item [item]=\"item\" mode=\"center\"/>\r\n } @empty {\r\n <div class=\"snc__empty\">\r\n {{ intl.emptyCenter() }}\r\n </div>\r\n }\r\n </div>\r\n </aside>\r\n}\r\n","import { ChangeDetectionStrategy, Component, inject, input } from '@angular/core';\r\n\r\nimport { SolarisNotificationCenterComponent } from '../center/notification-center';\r\nimport { SOLARIS_NOTIFICATION_POSITIONS } from '../../config/notification.config';\r\nimport { SolarisNotificationService } from '../../service/notification.service';\r\nimport { SolarisNotificationPosition } from '../../model/notification.types';\r\nimport { SolarisNotificationItemComponent } from '../item/notification-item';\r\n\r\n@Component({\r\n selector: 'solaris-notification-host',\r\n standalone: true,\r\n imports: [SolarisNotificationItemComponent, SolarisNotificationCenterComponent],\r\n templateUrl: './notification-host.html',\r\n styleUrls: ['./notification-host.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class SolarisNotificationHostComponent {\r\n protected readonly notificationService = inject(SolarisNotificationService);\r\n protected readonly positions = SOLARIS_NOTIFICATION_POSITIONS;\r\n readonly withCenter = input(true);\r\n\r\n visibleByPosition(position: SolarisNotificationPosition) {\r\n return this.notificationService.visibleByPosition(position);\r\n }\r\n}\r\n","@for (position of positions; track position) {\r\n <section class=\"snh__stack\" [attr.data-position]=\"position\">\r\n @for (item of visibleByPosition(position); track item.id) {\r\n <solaris-notification-item [item]=\"item\" mode=\"toast\"/>\r\n }\r\n </section>\r\n}\r\n\r\n@if (withCenter()) { <solaris-notification-center/> }\r\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\r\n\r\nimport { SolarisTooltipPosition, SolarisTooltipSize, SolarisTooltipVariant } from '../model/tooltip.type';\r\n\r\n@Component({\r\n selector: 'solaris-tooltip-panel',\r\n standalone: true,\r\n templateUrl: './tooltip-panel.html',\r\n styleUrls: ['./tooltip-panel.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class SolarisTooltipPanel {\r\n readonly text = input('');\r\n readonly prefixIcon = input('');\r\n readonly size = input<SolarisTooltipSize>('md');\r\n readonly position = input<SolarisTooltipPosition>('top');\r\n readonly variant = input<SolarisTooltipVariant>('inverse');\r\n}\r\n","<div class=\"solaris-tooltip\" [attr.data-position]=\"position()\" [attr.data-variant]=\"variant()\"\r\n [attr.data-size]=\"size()\" role=\"tooltip\">\r\n @if (prefixIcon()) {\r\n <span class=\"solaris-tooltip__prefix\" aria-hidden=\"true\">\r\n <i [class]=\"prefixIcon()\"></i>\r\n </span>\r\n }\r\n\r\n <span class=\"solaris-tooltip__content\">\r\n {{ text() }}\r\n </span>\r\n\r\n <span class=\"solaris-tooltip__arrow\" aria-hidden=\"true\"></span>\r\n</div>\r\n","import { Directive, ElementRef, Renderer2, computed, effect, inject, input, OnDestroy } from '@angular/core';\r\n\r\nimport { SolarisTooltipPosition, SolarisTooltipSize, SolarisTooltipVariant } from '../model/tooltip.type';\r\nimport { SolarisFloatingOverlayService } from '../../../../services/tooltip/floating-overlay.service';\r\nimport { SolarisFloatingOverlayRef } from '../../../../services/tooltip/model/tooltip-services.type';\r\nimport { repositionTooltipOverlay } from '../../../../services/tooltip/floating-position.util';\r\nimport { SolarisTooltipPanel } from '../component/tooltip-panel';\r\n\r\n@Directive({\r\n selector: '[solaris-tooltip]',\r\n standalone: true,\r\n})\r\nexport class SolarisTooltipDirective implements OnDestroy {\r\n private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\r\n private readonly floatingOverlay = inject(SolarisFloatingOverlayService);\r\n private readonly renderer = inject(Renderer2);\r\n\r\n readonly text = input('', { alias: 'solaris-tooltip' });\r\n\r\n readonly tooltipPosition = input<SolarisTooltipPosition>('top', {\r\n alias: 'tooltip-position',\r\n });\r\n\r\n readonly tooltipVariant = input<SolarisTooltipVariant>('inverse', {\r\n alias: 'tooltip-variant',\r\n });\r\n\r\n readonly tooltipSize = input<SolarisTooltipSize>('md', {\r\n alias: 'tooltip-size',\r\n });\r\n\r\n readonly tooltipPrefixIcon = input('', {\r\n alias: 'tooltip-prefix-icon',\r\n });\r\n\r\n readonly tooltipDisabled = input(false, {\r\n alias: 'tooltip-disabled',\r\n });\r\n\r\n readonly tooltipShowDelay = input(300, {\r\n alias: 'tooltip-show-delay',\r\n });\r\n\r\n readonly tooltipHideDelay = input(80, {\r\n alias: 'tooltip-hide-delay',\r\n });\r\n\r\n readonly tooltipOffset = input(8, {\r\n alias: 'tooltip-offset',\r\n });\r\n\r\n readonly tooltipAutoFlip = input(true, {\r\n alias: 'tooltip-auto-flip',\r\n });\r\n\r\n readonly tooltipAutoShift = input(true, {\r\n alias: 'tooltip-auto-shift',\r\n });\r\n\r\n readonly tooltipViewportPadding = input(8, {\r\n alias: 'tooltip-viewport-padding',\r\n });\r\n\r\n readonly tooltipKey = input('', {\r\n alias: 'tooltip-key',\r\n });\r\n\r\n readonly tooltipParams = input<Record<string, unknown> | undefined>(undefined, {\r\n alias: 'tooltip-params',\r\n });\r\n\r\n private overlayRef?: SolarisFloatingOverlayRef<SolarisTooltipPanel>;\r\n private showTimer = 0;\r\n private hideTimer = 0;\r\n private raf = 0;\r\n\r\n private readonly cleanups: Array<() => void> = [];\r\n\r\n private readonly resolvedText = computed(() => {\r\n const key = this.tooltipKey().trim();\r\n\r\n if (key) {\r\n return key;\r\n }\r\n\r\n return this.text().trim();\r\n });\r\n\r\n constructor() {\r\n const host = this.elementRef.nativeElement;\r\n\r\n this.cleanups.push(\r\n this.renderer.listen(host, 'mouseenter', () => this.scheduleShow()),\r\n this.renderer.listen(host, 'mouseleave', () => this.scheduleHide()),\r\n this.renderer.listen(host, 'focusin', () => this.scheduleShow()),\r\n this.renderer.listen(host, 'focusout', () => this.scheduleHide()),\r\n this.renderer.listen(host, 'keydown', (event: KeyboardEvent) => {\r\n if (event.key === 'Escape') {\r\n this.hide();\r\n }\r\n }),\r\n this.renderer.listen(globalThis, 'resize', () => this.scheduleReposition()),\r\n this.renderer.listen(globalThis, 'scroll', () => this.scheduleReposition()),\r\n );\r\n\r\n effect(() => {\r\n if (!this.overlayRef) return;\r\n\r\n this.applyPanelInputs();\r\n this.scheduleReposition();\r\n });\r\n }\r\n\r\n private scheduleShow(): void {\r\n if (this.tooltipDisabled()) return;\r\n if (!this.resolvedText()) return;\r\n\r\n globalThis.clearTimeout(this.hideTimer);\r\n globalThis.clearTimeout(this.showTimer);\r\n\r\n this.showTimer = globalThis.setTimeout(() => {\r\n this.show();\r\n }, this.tooltipShowDelay());\r\n }\r\n\r\n private scheduleHide(): void {\r\n globalThis.clearTimeout(this.showTimer);\r\n globalThis.clearTimeout(this.hideTimer);\r\n\r\n this.hideTimer = globalThis.setTimeout(() => {\r\n this.hide();\r\n }, this.tooltipHideDelay());\r\n }\r\n\r\n private show(): void {\r\n if (this.overlayRef || this.tooltipDisabled()) return;\r\n if (!this.resolvedText()) return;\r\n\r\n this.overlayRef = this.floatingOverlay.create(SolarisTooltipPanel, {\r\n idPrefix: 'solaris-tooltip',\r\n zIndex: 'var(--solaris-z-tooltip, 1200)',\r\n pointerEvents: 'none',\r\n });\r\n\r\n this.applyPanelInputs();\r\n\r\n this.renderer.setAttribute(\r\n this.elementRef.nativeElement,\r\n 'aria-describedby',\r\n this.overlayRef.id,\r\n );\r\n\r\n requestAnimationFrame(() => this.reposition());\r\n }\r\n\r\n private hide(): void {\r\n this.floatingOverlay.clearFloatingTimers(this.showTimer, this.hideTimer, this.raf);\r\n this.raf = 0;\r\n\r\n this.renderer.removeAttribute(this.elementRef.nativeElement, 'aria-describedby');\r\n\r\n this.floatingOverlay.destroyOverlay(this.overlayRef);\r\n this.overlayRef = undefined;\r\n }\r\n\r\n private applyPanelInputs(): void {\r\n if (!this.overlayRef) return;\r\n\r\n const panel = this.overlayRef.componentRef;\r\n\r\n panel.setInput('text', this.resolvedText());\r\n panel.setInput('position', this.tooltipPosition());\r\n panel.setInput('variant', this.tooltipVariant());\r\n panel.setInput('size', this.tooltipSize());\r\n panel.setInput('prefixIcon', this.tooltipPrefixIcon());\r\n\r\n panel.changeDetectorRef.detectChanges();\r\n }\r\n\r\n private scheduleReposition(): void {\r\n if (!this.overlayRef) return;\r\n\r\n if (this.raf) return;\r\n\r\n this.raf = requestAnimationFrame(() => {\r\n this.raf = 0;\r\n this.reposition();\r\n });\r\n }\r\n\r\n private reposition(): void {\r\n if (!this.overlayRef) return;\r\n\r\n this.floatingOverlay.reposition({\r\n anchor: this.elementRef.nativeElement,\r\n overlayRef: this.overlayRef,\r\n options: {\r\n position: this.tooltipPosition(),\r\n offset: this.tooltipOffset(),\r\n viewportPadding: this.tooltipViewportPadding(),\r\n autoFlip: this.tooltipAutoFlip(),\r\n autoShift: this.tooltipAutoShift(),\r\n },\r\n setAppliedPosition: (position) => {\r\n this.overlayRef?.componentRef.setInput('position', position);\r\n this.overlayRef?.componentRef.changeDetectorRef.detectChanges();\r\n },\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.hide();\r\n\r\n for (const cleanup of this.cleanups) {\r\n cleanup();\r\n }\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component, HostBinding, Input } from '@angular/core';\r\nimport {\r\n LoadingType,\r\n SolarisLoadingColor,\r\n SolarisLoadingEasing,\r\n SolarisLoadingPresetColor,\r\n SolarisLoadingSize,\r\n SolarisLoadingSpeed,\r\n SolarisLoadingDashDensity,\r\n} from '../model/loading.type';\r\n\r\nconst PRESET_COLORS: readonly SolarisLoadingPresetColor[] =\r\n ['primary', 'success', 'warning', 'error', 'surface'] as const;\r\n\r\n@Component({\r\n selector: 'solaris-loading',\r\n standalone: true,\r\n templateUrl: './loading.html',\r\n styleUrl: './loading.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class SolarisLoading {\r\n @HostBinding('attr.solaris-loading') readonly marker = '';\r\n\r\n @Input() label?: string;\r\n @Input() value: number | null = null;\r\n @Input() type: LoadingType = 'spinner';\r\n @Input() size: SolarisLoadingSize = 'md';\r\n @Input() speed: SolarisLoadingSpeed = 'md';\r\n @Input() color: SolarisLoadingColor = 'primary';\r\n @Input() easing: SolarisLoadingEasing = 'linear';\r\n @Input() trail: 'forward' | 'reverse' = 'forward';\r\n @Input() dashDensity: SolarisLoadingDashDensity = 'md';\r\n @Input({ transform: coerceBoolean }) indeterminate = false;\r\n\r\n get percent(): number {\r\n return clamp(this.value ?? 0, 0, 100);\r\n }\r\n get ariaLabel(): string {\r\n return this.label ?? 'Loading';\r\n }\r\n get dashedSpokes(): Spoke[] {\r\n return buildSpokes(this.dashedCount, 0.12);\r\n }\r\n get inlineColor(): string | null {\r\n return isPresetColor(this.color) ? null : String(this.color);\r\n }\r\n get ariaValueNow(): number | null {\r\n if (this.role !== 'progressbar') return null;\r\n if (this.indeterminate || this.value == null) return null;\r\n return clamp(this.value, 0, 100);\r\n }\r\n get role(): 'status' | 'progressbar' {\r\n return (this.type === 'progress' || this.type === 'bar') ? 'progressbar' : 'status';\r\n }\r\n get dataColor(): SolarisLoadingPresetColor | null {\r\n return isPresetColor(this.color) ? this.color : null;\r\n }\r\n\r\n private get dashedCount(): number {\r\n switch (this.dashDensity) {\r\n case 'low': return 8;\r\n case 'high': return 16;\r\n case 'md':\r\n default: return 12;\r\n }\r\n }\r\n}\r\n\r\nfunction isPresetColor(v: unknown): v is SolarisLoadingPresetColor {\r\n return PRESET_COLORS.includes(v as SolarisLoadingPresetColor);\r\n}\r\n\r\nfunction coerceBoolean(v: any): boolean {\r\n return v === '' || v === true || v === 'true' || v === 1 || v === '1';\r\n}\r\n\r\nfunction clamp(n: number, min: number, max: number) {\r\n return Math.max(min, Math.min(max, n));\r\n}\r\n\r\ntype Spoke = { angle: number; opacity: number };\r\n\r\nconst SPOKE_CACHE = new Map<number, Spoke[]>();\r\n\r\nfunction buildSpokes(count: number, minOpacity = 0.12): Spoke[] {\r\n const cached = SPOKE_CACHE.get(count);\r\n if (cached) return cached;\r\n\r\n const res: Spoke[] = [];\r\n const step = 360 / count;\r\n const span = 1 - minOpacity;\r\n for (let i = 0; i < count; i++) {\r\n const t = count === 1 ? 0 : i / (count - 1);\r\n const opacity = 1 - span * t;\r\n res.push({ angle: i * step, opacity: Number(opacity.toFixed(2)) });\r\n }\r\n\r\n SPOKE_CACHE.set(count, res);\r\n return res;\r\n}\r\n","<div class=\"solaris-loading\" [attr.data-type]=\"type\" [attr.data-size]=\"size\" [attr.data-color]=\"dataColor\"\r\n [attr.data-speed]=\"speed\" [attr.data-easing]=\"easing\" [class.is-indeterminate]=\"indeterminate || value === null\"\r\n [attr.role]=\"role\" [attr.aria-label]=\"ariaLabel\" [style.--solaris-loading-color]=\"inlineColor\"\r\n [attr.aria-valuemin]=\"role === 'progressbar' ? 0 : null\" [attr.aria-valuemax]=\"role === 'progressbar' ? 100 : null\"\r\n [attr.aria-valuenow]=\"role === 'progressbar' ? ariaValueNow : null\">\r\n\r\n @if (type === 'spinner') {\r\n <span class=\"solaris-loading__spinner\" aria-hidden=\"true\"></span>\r\n }\r\n\r\n @if (type === 'spinner-dashed') {\r\n <svg class=\"solaris-loading__spinner-stacked\" viewBox=\"0 0 44 44\" aria-hidden=\"true\">\r\n @for (spoke of dashedSpokes; track spoke.angle) {\r\n <line x1=\"22\" y1=\"6\" x2=\"22\" y2=\"12\" [attr.opacity]=\"spoke.opacity\"\r\n [attr.transform]=\"'rotate(' + spoke.angle + ' 22 22)'\">\r\n </line>\r\n }\r\n </svg>\r\n }\r\n\r\n @if (type === 'progress') {\r\n <svg class=\"solaris-loading__ring\" viewBox=\"0 0 44 44\" aria-hidden=\"true\">\r\n <circle class=\"ring-track\" cx=\"22\" cy=\"22\" r=\"18\"></circle>\r\n <circle class=\"ring-value\" cx=\"22\" cy=\"22\" r=\"18\" [attr.stroke-dasharray]=\"113.097\"\r\n [attr.stroke-dashoffset]=\"113.097 - (113.097 * percent / 100)\"></circle>\r\n </svg>\r\n\r\n <span class=\"solaris-loading__percent\" aria-hidden=\"true\">\r\n {{ percent }}%\r\n </span>\r\n }\r\n\r\n @if (type === 'bar') {\r\n <span class=\"solaris-loading__bar\" aria-hidden=\"true\">\r\n <span class=\"solaris-loading__bar-inner\" [style.width.%]=\"indeterminate || value === null ? 30 : percent\"></span>\r\n </span>\r\n }\r\n</div>\r\n","import { ChangeDetectionStrategy, Component, computed, DestroyRef, effect, ElementRef, HostBinding, HostListener, inject,\r\n input, signal, TemplateRef, viewChild, afterNextRender, booleanAttribute, numberAttribute } from '@angular/core';\r\nimport { NgTemplateOutlet } from '@angular/common';\r\n\r\nimport { SolarisSliderItem, SolarisSliderOverlayContext } from '../model/image-slider.type';\r\n\r\n@Component({\r\n selector: 'solaris-image-slider',\r\n standalone: true,\r\n templateUrl: './image-slider.html',\r\n styleUrls: ['./image-slider.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [NgTemplateOutlet],\r\n})\r\nexport class SolarisImageSliderComponent {\r\n readonly viewport = viewChild<ElementRef<HTMLElement>>('viewport');\r\n\r\n private timer: ReturnType<typeof setInterval> | null = null;\r\n private readonly destroyRef = inject(DestroyRef);\r\n\r\n readonly items = input<SolarisSliderItem[]>([]);\r\n readonly radius = input<'sm' | 'md' | 'lg'>('lg');\r\n readonly autoplay = input(true, { transform: booleanAttribute });\r\n readonly showDots = input(true, { transform: booleanAttribute });\r\n readonly intervalMs = input(4500, { transform: numberAttribute });\r\n readonly showArrows = input(true, { transform: booleanAttribute });\r\n readonly aspect = input<'16/9' | '9/16' | '4/3' | '1/1' | 'auto'>('16/9');\r\n readonly pauseOnHover = input(true, { transform: booleanAttribute });\r\n\r\n readonly overlayTpl = input<TemplateRef<SolarisSliderOverlayContext> | undefined>(undefined);\r\n\r\n protected readonly paused = signal(false);\r\n protected readonly activeIndex = signal(0);\r\n private readonly viewReady = signal(false);\r\n protected readonly count = computed(() => this.items().length);\r\n protected readonly canRun = computed(() => this.autoplay() && this.count() > 1);\r\n\r\n @HostBinding('attr.data-aspect') get dataAspect() {\r\n return this.aspect();\r\n }\r\n\r\n @HostBinding('attr.data-radius') get dataRadius() {\r\n return this.radius();\r\n }\r\n\r\n constructor() {\r\n afterNextRender(() => this.viewReady.set(true));\r\n\r\n effect((onCleanup) => {\r\n const ready = this.viewReady();\r\n const run = this.canRun();\r\n const paused = this.paused();\r\n const ms = this.intervalMs();\r\n const len = this.count();\r\n\r\n this.stopTimer();\r\n\r\n if (!ready || !run || paused || len <= 1) return;\r\n if (!Number.isFinite(ms) || ms <= 0) return;\r\n\r\n this.startTimer(ms);\r\n\r\n onCleanup(() => this.stopTimer());\r\n });\r\n\r\n effect(() => {\r\n const len = this.count();\r\n const idx = this.activeIndex();\r\n\r\n if (!len) {\r\n this.activeIndex.set(0);\r\n return;\r\n }\r\n if (idx > len - 1) this.activeIndex.set(0);\r\n });\r\n\r\n this.destroyRef.onDestroy(() => this.stopTimer());\r\n }\r\n\r\n protected goTo = (idx: number): void => {\r\n const len = this.count();\r\n if (!len) return;\r\n\r\n const next = ((idx % len) + len) % len;\r\n this.activeIndex.set(next);\r\n this.bumpAutoplay();\r\n };\r\n\r\n protected next = (): void => {\r\n this.goTo(this.activeIndex() + 1);\r\n };\r\n\r\n protected prev = (): void => {\r\n this.goTo(this.activeIndex() - 1);\r\n };\r\n\r\n protected onMouseEnter(): void {\r\n if (!this.pauseOnHover()) return;\r\n this.paused.set(true);\r\n }\r\n\r\n protected onMouseLeave(): void {\r\n if (!this.pauseOnHover()) return;\r\n this.paused.set(false);\r\n }\r\n\r\n protected onFocusIn(): void {\r\n this.paused.set(true);\r\n }\r\n\r\n protected onFocusOut(): void {\r\n if (!this.pauseOnHover()) return;\r\n this.paused.set(false);\r\n }\r\n\r\n protected overlayCtx(i: number): SolarisSliderOverlayContext {\r\n const item = this.items()[i];\r\n return {\r\n $implicit: item,\r\n index: i,\r\n active: i === this.activeIndex(),\r\n goTo: this.goTo,\r\n next: this.next,\r\n prev: this.prev,\r\n };\r\n }\r\n\r\n private startTimer(ms: number): void {\r\n this.timer = setInterval(() => this.next(), ms);\r\n }\r\n\r\n private stopTimer(): void {\r\n if (this.timer) clearInterval(this.timer);\r\n this.timer = null;\r\n }\r\n\r\n private bumpAutoplay(): void {\r\n if (!this.canRun() || this.paused()) return;\r\n\r\n this.stopTimer();\r\n\r\n const ms = this.intervalMs();\r\n if (!Number.isFinite(ms) || ms <= 0) return;\r\n\r\n this.startTimer(ms);\r\n }\r\n\r\n @HostListener('keydown', ['$event'])\r\n onKeyDown(ev: KeyboardEvent): void {\r\n if (this.count() <= 1) return;\r\n\r\n switch (ev.key) {\r\n case 'ArrowLeft':\r\n ev.preventDefault();\r\n this.prev();\r\n break;\r\n case 'ArrowRight':\r\n ev.preventDefault();\r\n this.next();\r\n break;\r\n case 'Home':\r\n ev.preventDefault();\r\n this.goTo(0);\r\n break;\r\n case 'End':\r\n ev.preventDefault();\r\n this.goTo(this.count() - 1);\r\n break;\r\n }\r\n }\r\n}\r\n","<div class=\"solaris-slider\" role=\"region\" aria-roledescription=\"carousel\" [attr.aria-label]=\"'Image slider'\"\r\n (mouseenter)=\"onMouseEnter()\" (mouseleave)=\"onMouseLeave()\" (focusin)=\"onFocusIn()\" (focusout)=\"onFocusOut()\">\r\n\r\n <div #viewport class=\"solaris-slider__viewport\">\r\n <div class=\"solaris-slider__track\"\r\n [style.transform]=\"'translate3d(' + (-activeIndex() * 100) + '%, 0, 0)'\">\r\n\r\n @for (it of items(); track $index) {\r\n <div class=\"solaris-slider__slide\"\r\n [attr.aria-hidden]=\"$index !== activeIndex() ? 'true' : null\">\r\n\r\n @if (it.href) {\r\n <a class=\"solaris-slider__media\" [href]=\"it.href\" [attr.target]=\"it.target ?? null\"\r\n [attr.aria-label]=\"it.ariaLabel ?? it.alt ?? 'Open'\">\r\n <img class=\"solaris-slider__img\" [src]=\"it.src\" [attr.alt]=\"it.alt ?? ''\" />\r\n </a>\r\n } @else {\r\n <div class=\"solaris-slider__media\">\r\n <img class=\"solaris-slider__img\" [src]=\"it.src\" [attr.alt]=\"it.alt ?? ''\" />\r\n </div>\r\n }\r\n\r\n @if (overlayTpl(); as tpl) {\r\n <div class=\"solaris-slider__overlay\">\r\n <ng-container *ngTemplateOutlet=\"tpl; context: overlayCtx($index)\"></ng-container>\r\n </div>\r\n }\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n\r\n @if (showArrows() && count() > 1) {\r\n <button type=\"button\" class=\"solaris-slider__arrow is-prev\" (click)=\"prev()\" aria-label=\"Previous slide\">\r\n <i class=\"ph ph-caret-left\"></i>\r\n </button>\r\n\r\n <button type=\"button\" class=\"solaris-slider__arrow is-next\" (click)=\"next()\" aria-label=\"Next slide\">\r\n <i class=\"ph ph-caret-right\"></i>\r\n </button>\r\n }\r\n\r\n @if (showDots() && count() > 1) {\r\n <div class=\"solaris-slider__dots\" role=\"tablist\" aria-label=\"Slide navigation\">\r\n @for (it of items(); track $index) {\r\n <button type=\"button\" class=\"solaris-slider__dot\" [class.is-active]=\"$index === activeIndex()\"\r\n (click)=\"goTo($index)\" [attr.aria-label]=\"'Go to slide ' + ($index + 1)\"\r\n [attr.aria-current]=\"$index === activeIndex() ? 'true' : null\">\r\n </button>\r\n }\r\n </div>\r\n }\r\n</div>\r\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\r\nimport { NgClass } from '@angular/common';\r\n\r\n@Component({\r\n selector: 'solaris-section',\r\n standalone: true,\r\n imports: [NgClass],\r\n templateUrl: './section.html',\r\n styleUrl: './section.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class SolarisSectionComponent {\r\n @Input() title?: string;\r\n @Input() description?: string;\r\n @Input() appearance: 'plain' | 'card' = 'plain';\r\n @Input() density: 'comfortable' | 'compact' = 'comfortable';\r\n}\r\n","<section class=\"solaris-section\" [ngClass]=\"['appearance-' + appearance, 'density-' + density]\">\r\n @if (title || description) {\r\n <header class=\"solaris-section__header\">\r\n @if (title) { <h2 class=\"solaris-section__title\">{{ title }}</h2> }\r\n @if (description) { <p class=\"solaris-section__description\">{{ description }}</p> }\r\n </header>\r\n }\r\n\r\n <div class=\"solaris-section__content\">\r\n <ng-content></ng-content>\r\n </div>\r\n</section>\r\n","import { ChangeDetectionStrategy, Component, HostBinding, Input } from '@angular/core';\r\nimport { NgClass } from '@angular/common';\r\n\r\nimport { DividerLabelAlign, DividerOrientation, DividerSpacing, DividerStrength, DividerVariant } from '../model/divider.type';\r\n\r\n@Component({\r\n selector: 'solaris-divider',\r\n standalone: true,\r\n imports: [NgClass],\r\n templateUrl: './divider.html',\r\n styleUrl: './divider.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: { role: 'separator' },\r\n})\r\nexport class SolarisDivider {\r\n @Input() label?: string;\r\n @Input() inset = false;\r\n @Input() spacing: DividerSpacing = 'none';\r\n @Input() variant: DividerVariant = 'solid';\r\n @Input() strength: DividerStrength = 'normal';\r\n @Input() orientation: DividerOrientation = 'horizontal';\r\n @Input({ alias: 'label-align' }) labelAlign: DividerLabelAlign = 'center';\r\n\r\n @HostBinding('class') hostClass = 'solaris-divider-host';\r\n @HostBinding('attr.aria-orientation') get ariaOrientation() {\r\n return this.orientation === 'vertical' ? 'vertical' : 'horizontal';\r\n }\r\n\r\n get hasLabel(): boolean {\r\n return !!this.label && this.orientation === 'horizontal';\r\n }\r\n}\r\n","<div\r\n class=\"solaris-divider\"\r\n [ngClass]=\"[\r\n 'orientation-' + orientation,\r\n 'spacing-' + spacing,\r\n 'strength-' + strength,\r\n 'variant-' + variant,\r\n inset ? 'is-inset' : '',\r\n hasLabel ? 'has-label' : '',\r\n hasLabel ? 'label-' + labelAlign : ''\r\n ]\">\r\n @if (hasLabel) {\r\n <span class=\"solaris-divider__line\"></span>\r\n <span class=\"solaris-divider__label\">{{ label }}</span>\r\n <span class=\"solaris-divider__line\"></span>\r\n }\r\n</div>\r\n","import { InjectionToken } from '@angular/core';\r\n\r\nexport const SOLARIS_DIALOG_STEP_DATA = new InjectionToken<unknown>('SOLARIS_DIALOG_STEP_DATA');\r\n","import { InjectionToken } from '@angular/core';\r\n\r\nexport const SOLARIS_DIALOG_DATA = new InjectionToken<unknown>('SOLARIS_DIALOG_DATA');\r\n","import { SolarisDialogAction, SolarisDialogHeaderConfiguration } from '../model/dialog.type';\r\nimport { Observable, Subject } from 'rxjs';\r\n\r\nexport class SolarisDialogRef<TResult = unknown> {\r\n private readonly actionSubject = new Subject<SolarisDialogAction<TResult>>();\r\n private readonly closedSubject = new Subject<TResult | undefined>();\r\n\r\n private closeFn?: (result?: TResult) => void;\r\n private updateActionsFn?: (actions: SolarisDialogAction<TResult>[]) => void;\r\n private updateHeaderFn?: (header: SolarisDialogHeaderConfiguration) => void;\r\n\r\n afterClosed(): Observable<TResult | undefined> {\r\n return this.closedSubject.asObservable();\r\n }\r\n\r\n afterAction(): Observable<SolarisDialogAction<TResult>> {\r\n return this.actionSubject.asObservable();\r\n }\r\n\r\n close(result?: TResult): void {\r\n this.closeFn?.(result);\r\n }\r\n\r\n updateActions(actions: SolarisDialogAction<TResult>[]): void {\r\n this.updateActionsFn?.(actions);\r\n }\r\n\r\n updateHeader(header: SolarisDialogHeaderConfiguration): void {\r\n this.updateHeaderFn?.(header);\r\n }\r\n\r\n _attachCloseFn(fn: (result?: TResult) => void): void {\r\n this.closeFn = fn;\r\n }\r\n\r\n _attachActionsUpdateFn(fn: (actions: SolarisDialogAction<TResult>[]) => void): void {\r\n this.updateActionsFn = fn;\r\n }\r\n\r\n _attachHeaderUpdateFn(fn: (header: SolarisDialogHeaderConfiguration) => void): void {\r\n this.updateHeaderFn = fn;\r\n }\r\n\r\n _emitAction(action: SolarisDialogAction<TResult>): void {\r\n this.actionSubject.next(action);\r\n }\r\n\r\n _finishClose(result?: TResult): void {\r\n this.closedSubject.next(result);\r\n this.closedSubject.complete();\r\n this.actionSubject.complete();\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component, DestroyRef, Injector, computed, effect, inject, signal,\r\n AfterViewInit, ViewChildren, ElementRef, QueryList } from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { NgComponentOutlet } from '@angular/common';\r\n\r\nimport { SolarisDialogStepActionValue, SolarisDialogStepDirection, SolarisDialogStepsConfiguration } from '../../model/dialog-steps.type';\r\nimport { SOLARIS_DIALOG_STEP_DATA } from '../../token/dialog-step-data.token';\r\nimport { SOLARIS_DIALOG_DATA } from '../../token/dialog-data.token';\r\nimport { SolarisDialogAction } from '../../model/dialog.type';\r\nimport { SolarisDialogRef } from '../../token/dialog-ref';\r\n\r\n@Component({\r\n selector: 'solaris-dialog-steps-container',\r\n standalone: true,\r\n imports: [\r\n NgComponentOutlet\r\n ],\r\n templateUrl: './dialog-steps-container.html',\r\n styleUrl: './dialog-steps-container.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class SolarisDialogStepsContainer<TResult = unknown> implements AfterViewInit {\r\n private readonly destroyRef = inject(DestroyRef);\r\n private readonly injector = inject(Injector);\r\n\r\n private readonly configuration =\r\n inject(SOLARIS_DIALOG_DATA) as SolarisDialogStepsConfiguration<TResult>;\r\n\r\n private readonly dialogRef =\r\n inject<SolarisDialogRef<TResult | SolarisDialogStepActionValue>>(SolarisDialogRef);\r\n\r\n protected readonly steps = this.configuration?.steps ?? [];\r\n\r\n protected readonly showProgress = this.configuration?.showProgress ?? true;\r\n protected readonly transitionBlur = this.configuration?.transitionBlur ?? true;\r\n protected readonly contentMinHeight = this.configuration?.contentMinHeight ?? '0';\r\n protected readonly transitionDurationMs = this.configuration?.transitionDurationMs ?? 420;\r\n\r\n protected readonly loading = signal(false);\r\n protected readonly transitioning = signal(false);\r\n protected readonly transitionHalfway = signal(false);\r\n\r\n protected readonly currentStepIndex = signal(this.resolveInitialStepIndex());\r\n\r\n @ViewChildren('stepElement', { read: ElementRef })\r\n private readonly stepElements!: QueryList<ElementRef<HTMLElement>>;\r\n\r\n protected readonly activeStepHeight = signal('auto');\r\n\r\n private measureRaf = 0;\r\n private resizeObserver?: ResizeObserver;\r\n\r\n private halfwayTimer = 0;\r\n private transitionTimer = 0;\r\n\r\n private readonly stepInjectors = this.steps.map(step =>\r\n Injector.create({\r\n providers: [\r\n {\r\n provide: SOLARIS_DIALOG_STEP_DATA,\r\n useValue: step.data,\r\n },\r\n ],\r\n parent: this.injector,\r\n })\r\n );\r\n\r\n protected readonly trackTransform = computed(() => {\r\n return `translate3d(-${this.currentStepIndex() * 100}%, 0, 0)`;\r\n });\r\n\r\n protected readonly isFirstStep = computed(() => this.currentStepIndex() === 0);\r\n\r\n protected readonly isLastStep = computed(() => {\r\n return this.currentStepIndex() === this.steps.length - 1;\r\n });\r\n\r\n protected readonly transitionDuration = computed(() => {\r\n return `${this.transitionDurationMs}ms`;\r\n });\r\n\r\n constructor() {\r\n this.destroyRef.onDestroy(() => {\r\n globalThis.clearTimeout(this.halfwayTimer);\r\n globalThis.clearTimeout(this.transitionTimer);\r\n\r\n if (this.measureRaf) {\r\n cancelAnimationFrame(this.measureRaf);\r\n }\r\n\r\n this.resizeObserver?.disconnect();\r\n });\r\n\r\n this.dialogRef.afterAction()\r\n .pipe(takeUntilDestroyed(this.destroyRef))\r\n .subscribe(action => {\r\n void this.handleAction(action.value as SolarisDialogStepActionValue);\r\n });\r\n\r\n effect(() => {\r\n this.currentStepIndex();\r\n this.loading();\r\n\r\n this.updateDialogHeader();\r\n this.updateDialogActions();\r\n\r\n queueMicrotask(() => {\r\n this.observeActiveStepHeight();\r\n this.scheduleActiveStepHeightMeasure();\r\n });\r\n });\r\n\r\n queueMicrotask(() => {\r\n void this.runBeforeEnter(this.currentStepIndex(), 'initial');\r\n });\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n this.stepElements.changes.pipe(takeUntilDestroyed(this.destroyRef))\r\n .subscribe(() => {\r\n this.observeActiveStepHeight();\r\n this.scheduleActiveStepHeightMeasure();\r\n });\r\n\r\n this.observeActiveStepHeight();\r\n this.scheduleActiveStepHeightMeasure();\r\n }\r\n\r\n protected stepInjector(index: number): Injector {\r\n return this.stepInjectors[index];\r\n }\r\n\r\n private async handleAction(value: SolarisDialogStepActionValue): Promise<void> {\r\n switch (value) {\r\n case 'cancel':\r\n this.dialogRef.close();\r\n return;\r\n\r\n case 'back':\r\n await this.goToStep(this.currentStepIndex() - 1, 'backward');\r\n return;\r\n\r\n case 'next':\r\n await this.goToStep(this.currentStepIndex() + 1, 'forward');\r\n return;\r\n\r\n case 'finish':\r\n await this.finish();\r\n return;\r\n }\r\n }\r\n\r\n private async goToStep(targetIndex: number, direction: SolarisDialogStepDirection): Promise<void> {\r\n if (this.loading()) return;\r\n if (targetIndex < 0 || targetIndex >= this.steps.length) return;\r\n\r\n const fromIndex = this.currentStepIndex();\r\n const canLeave = await this.runBeforeLeave(fromIndex, targetIndex, direction);\r\n\r\n if (!canLeave) return;\r\n\r\n const canEnter = await this.runBeforeEnter(targetIndex, direction, fromIndex);\r\n\r\n if (!canEnter) return;\r\n\r\n this.runTransitionTo(targetIndex);\r\n }\r\n\r\n private async finish(): Promise<void> {\r\n if (this.loading()) return;\r\n\r\n const index = this.currentStepIndex();\r\n const canLeave = await this.runBeforeLeave(index, index, 'forward');\r\n\r\n if (!canLeave) return;\r\n\r\n this.dialogRef.close(this.configuration.finishValue);\r\n }\r\n\r\n private async runBeforeEnter(toIndex: number, direction: SolarisDialogStepDirection,\r\n fromIndex = toIndex): Promise<boolean> {\r\n const step = this.steps[toIndex];\r\n\r\n if (!step?.beforeEnter) {\r\n return true;\r\n }\r\n\r\n this.loading.set(true);\r\n\r\n try {\r\n const result = await step.beforeEnter({\r\n fromIndex,\r\n toIndex,\r\n direction,\r\n });\r\n\r\n return result !== false;\r\n } finally {\r\n this.loading.set(false);\r\n }\r\n }\r\n\r\n private async runBeforeLeave(fromIndex: number, toIndex: number,\r\n direction: SolarisDialogStepDirection): Promise<boolean> {\r\n const step = this.steps[fromIndex];\r\n\r\n if (!step?.beforeLeave) {\r\n return true;\r\n }\r\n\r\n this.loading.set(true);\r\n\r\n try {\r\n const result = await step.beforeLeave({\r\n fromIndex,\r\n toIndex,\r\n direction,\r\n });\r\n\r\n return result !== false;\r\n } finally {\r\n this.loading.set(false);\r\n }\r\n }\r\n\r\n private updateDialogActions(): void {\r\n if (!this.steps.length) {\r\n this.dialogRef.updateActions([]);\r\n return;\r\n }\r\n\r\n const step = this.steps[this.currentStepIndex()];\r\n\r\n if (step?.actions?.length) {\r\n this.dialogRef.updateActions(\r\n step.actions.map(action => ({\r\n ...action,\r\n disabled: action.disabled || this.loading(),\r\n }))\r\n );\r\n return;\r\n }\r\n\r\n const leftAction: SolarisDialogAction<TResult | SolarisDialogStepActionValue> = this.isFirstStep()\r\n ? {\r\n label: this.configuration.cancelLabel ?? 'Cancelar',\r\n labelKey: this.configuration.cancelLabelKey,\r\n value: 'cancel',\r\n variant: 'outline',\r\n color: 'surface',\r\n closesDialog: false,\r\n disabled: this.loading(),\r\n }\r\n : {\r\n label: this.configuration.backLabel ?? 'Voltar',\r\n labelKey: this.configuration.backLabelKey,\r\n value: 'back',\r\n variant: 'outline',\r\n color: 'surface',\r\n closesDialog: false,\r\n disabled: this.loading(),\r\n };\r\n\r\n const rightAction: SolarisDialogAction<TResult | SolarisDialogStepActionValue> = this.isLastStep()\r\n ? {\r\n label: this.configuration.finishLabel ?? 'Finalizar',\r\n labelKey: this.configuration.finishLabelKey,\r\n value: 'finish',\r\n variant: 'solid',\r\n color: 'primary',\r\n closesDialog: false,\r\n loading: this.loading(),\r\n }\r\n : {\r\n label: this.configuration.nextLabel ?? 'Continuar',\r\n labelKey: this.configuration.nextLabelKey,\r\n value: 'next',\r\n variant: 'solid',\r\n color: 'primary',\r\n closesDialog: false,\r\n loading: this.loading(),\r\n };\r\n\r\n this.dialogRef.updateActions([leftAction, rightAction]);\r\n }\r\n\r\n private resolveInitialStepIndex(): number {\r\n if (!this.steps.length) {\r\n return 0;\r\n }\r\n\r\n const index = this.configuration.initialStepIndex ?? 0;\r\n\r\n return Math.max(0, Math.min(index, this.steps.length - 1));\r\n }\r\n\r\n private runTransitionTo(targetIndex: number): void {\r\n globalThis.clearTimeout(this.halfwayTimer);\r\n globalThis.clearTimeout(this.transitionTimer);\r\n\r\n this.transitioning.set(true);\r\n this.transitionHalfway.set(false);\r\n\r\n this.currentStepIndex.set(targetIndex);\r\n\r\n this.observeActiveStepHeight(targetIndex);\r\n this.scheduleActiveStepHeightMeasure(targetIndex);\r\n\r\n if (this.transitionBlur) {\r\n this.halfwayTimer = globalThis.setTimeout(() => {\r\n if (this.transitioning()) {\r\n this.transitionHalfway.set(true);\r\n }\r\n }, Math.round(this.transitionDurationMs / 2));\r\n }\r\n\r\n this.transitionTimer = globalThis.setTimeout(() => {\r\n this.transitioning.set(false);\r\n this.transitionHalfway.set(false);\r\n }, this.transitionDurationMs);\r\n }\r\n\r\n private updateDialogHeader(): void {\r\n const step = this.steps[this.currentStepIndex()];\r\n\r\n this.dialogRef.updateHeader({\r\n title: step?.title ?? this.configuration.title,\r\n titleKey: step?.titleKey ?? this.configuration.titleKey,\r\n titleParams: step?.titleParams ?? this.configuration.titleParams,\r\n\r\n description: step?.description ?? this.configuration.description,\r\n descriptionKey: step?.descriptionKey ?? this.configuration.descriptionKey,\r\n descriptionParams: step?.descriptionParams ?? this.configuration.descriptionParams,\r\n });\r\n }\r\n\r\n private scheduleActiveStepHeightMeasure(index = this.currentStepIndex()): void {\r\n if (this.measureRaf) {\r\n cancelAnimationFrame(this.measureRaf);\r\n }\r\n\r\n this.measureRaf = requestAnimationFrame(() => {\r\n this.measureStepHeight(index);\r\n });\r\n }\r\n\r\n private measureStepHeight(index = this.currentStepIndex()): void {\r\n const element = this.stepElements?.toArray()[index]?.nativeElement;\r\n\r\n if (!element) {\r\n this.activeStepHeight.set('auto');\r\n return;\r\n }\r\n\r\n const height = Math.ceil(element.scrollHeight);\r\n\r\n this.activeStepHeight.set(`${height}px`);\r\n }\r\n\r\n private observeActiveStepHeight(index = this.currentStepIndex()): void {\r\n this.resizeObserver?.disconnect();\r\n\r\n const element = this.stepElements?.toArray()[index]?.nativeElement;\r\n\r\n if (!element || typeof ResizeObserver === 'undefined') {\r\n return;\r\n }\r\n\r\n this.resizeObserver = new ResizeObserver(() => {\r\n this.scheduleActiveStepHeightMeasure(index);\r\n });\r\n\r\n this.resizeObserver.observe(element);\r\n }\r\n}\r\n","<div class=\"solaris-dialog-steps\" [class.is-transitioning]=\"transitioning()\" [class.is-halfway]=\"transitionHalfway()\"\r\n [class.has-transition-blur]=\"transitionBlur\" [style.--solaris-dialog-steps-min-height]=\"contentMinHeight\"\r\n [style.--solaris-dialog-steps-active-height]=\"activeStepHeight()\">\r\n @if (showProgress) {\r\n <div class=\"solaris-dialog-steps__progress\" aria-hidden=\"true\">\r\n @for (step of steps; track step.key; let index = $index) {\r\n <span class=\"solaris-dialog-steps__dot\" [class.is-active]=\"index === currentStepIndex()\"\r\n [class.is-complete]=\"index < currentStepIndex()\"></span>\r\n }\r\n </div>\r\n }\r\n\r\n <div class=\"solaris-dialog-steps__viewport\">\r\n <div class=\"solaris-dialog-steps__track\" [style.transform]=\"trackTransform()\"\r\n [style.--solaris-dialog-steps-transition-duration]=\"transitionDuration()\">\r\n @for (step of steps; track step.key; let index = $index) {\r\n <section #stepElement class=\"solaris-dialog-steps__step\" [class.is-active]=\"index === currentStepIndex()\"\r\n [class.is-before]=\"index < currentStepIndex()\" [class.is-after]=\"index > currentStepIndex()\">\r\n <div class=\"solaris-dialog-steps__step-inner\">\r\n <ng-container\r\n *ngComponentOutlet=\"step.component; injector: stepInjector(index)\"\r\n ></ng-container>\r\n </div>\r\n </section>\r\n }\r\n </div>\r\n </div>\r\n</div>\r\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output, ViewChild, ViewContainerRef } from '@angular/core';\r\n\r\nimport { SolarisDialogAction, SolarisDialogActionAlignment, SolarisDialogSize } from '../../model/dialog.type';\r\nimport { SolarisButtonColorInput, SolarisButtonVariant } from '../../../../actions/button/models/button.type';\r\nimport { SolarisButtonDirective } from '../../../../actions/button/directives/button.directive';\r\nimport { SolarisSizePreset } from '../../../../common/model/common-configurations.type';\r\n\r\n@Component({\r\n selector: 'solaris-dialog-container',\r\n standalone: true,\r\n templateUrl: './dialog-container.html',\r\n styleUrl: './dialog-container.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [\r\n SolarisButtonDirective\r\n ]\r\n})\r\nexport class SolarisDialogContainer<TResult = unknown> {\r\n @ViewChild('contentHost', { read: ViewContainerRef, static: true })\r\n readonly contentHost!: ViewContainerRef;\r\n\r\n @Input() title?: string;\r\n @Input() titleKey?: string;\r\n @Input() titleParams?: Record<string, unknown>;\r\n\r\n @Input() description?: string;\r\n @Input() descriptionKey?: string;\r\n @Input() descriptionParams?: Record<string, unknown>;\r\n\r\n @Input() size: SolarisDialogSize = 'md';\r\n @Input() showCloseButton = true;\r\n @Input() actionSize?: SolarisSizePreset;\r\n @Input() actions: SolarisDialogAction<TResult>[] = [];\r\n @Input() actionAlignment: SolarisDialogActionAlignment = 'end';\r\n\r\n @Input() ariaLabel?: string;\r\n @Input() ariaLabelledBy?: string;\r\n @Input() ariaDescribedBy?: string;\r\n\r\n @Output() readonly closeClick = new EventEmitter<void>();\r\n @Output() readonly actionClick = new EventEmitter<SolarisDialogAction<TResult>>();\r\n\r\n readonly titleId = `solaris-dialog-title-${Math.round(Math.random() * 1_000_000)}`;\r\n readonly descriptionId = `solaris-dialog-description-${Math.round(Math.random() * 1_000_000)}`;\r\n\r\n get hasHeader(): boolean {\r\n return !!this.title || !!this.titleKey || !!this.description || !!this.descriptionKey || this.showCloseButton;\r\n }\r\n\r\n get hasDescription(): boolean {\r\n return !!this.description || !!this.descriptionKey;\r\n }\r\n\r\n get hasActions(): boolean {\r\n return this.actions.length > 0;\r\n }\r\n\r\n get resolvedAriaLabelledBy(): string | null {\r\n if (this.ariaLabelledBy) return this.ariaLabelledBy;\r\n if (this.title || this.titleKey) return this.titleId;\r\n return null;\r\n }\r\n\r\n get resolvedAriaDescribedBy(): string | null {\r\n if (this.ariaDescribedBy) return this.ariaDescribedBy;\r\n if (this.description || this.descriptionKey) return this.descriptionId;\r\n return null;\r\n }\r\n\r\n protected resolveActionSize(action: SolarisDialogAction<TResult>): SolarisSizePreset {\r\n if (action.size) {\r\n return action.size;\r\n }\r\n\r\n if (this.actionSize) {\r\n return this.actionSize;\r\n }\r\n\r\n switch (this.size) {\r\n case 'sm':\r\n return 'sm';\r\n case 'md':\r\n return 'md';\r\n case 'lg':\r\n case 'xl':\r\n case 'fullscreen':\r\n return 'lg';\r\n }\r\n }\r\n\r\n protected resolveActionVariant(action: SolarisDialogAction<TResult>): SolarisButtonVariant {\r\n if (action.variant) {\r\n return action.variant;\r\n }\r\n\r\n return 'solid';\r\n }\r\n\r\n protected resolveActionColor(action: SolarisDialogAction<TResult>): SolarisButtonColorInput {\r\n if (action.color) {\r\n return action.color;\r\n }\r\n\r\n switch (action.variant) {\r\n case 'ghost':\r\n case 'outline':\r\n case 'soft':\r\n return 'surface';\r\n default:\r\n return 'primary';\r\n }\r\n }\r\n}\r\n","<section class=\"solaris-dialog\" [attr.data-size]=\"size\" role=\"dialog\" aria-modal=\"true\" [attr.aria-label]=\"ariaLabel || null\"\r\n [attr.aria-labelledby]=\"resolvedAriaLabelledBy\" [attr.aria-describedby]=\"resolvedAriaDescribedBy\">\r\n @if (hasHeader) {\r\n <header class=\"solaris-dialog__header\">\r\n <div class=\"solaris-dialog__heading\">\r\n @if (title || titleKey) {\r\n <h2 class=\"solaris-dialog__title\" [id]=\"titleId\">\r\n @if (titleKey) {\r\n {{ titleKey }}\r\n } @else {\r\n {{ title }}\r\n }\r\n </h2>\r\n }\r\n\r\n @if (hasDescription) {\r\n <p class=\"solaris-dialog__description\" [id]=\"descriptionId\">\r\n @if (descriptionKey) {\r\n {{ descriptionKey }}\r\n } @else {\r\n {{ description }}\r\n }\r\n </p>\r\n }\r\n </div>\r\n\r\n @if (showCloseButton) {\r\n <button type=\"button\" class=\"solaris-dialog__close\" aria-label=\"Fechar\" (click)=\"closeClick.emit()\">\r\n <i class=\"ph ph-x\"></i>\r\n </button>\r\n }\r\n </header>\r\n }\r\n\r\n <div class=\"solaris-dialog__body\">\r\n <ng-template #contentHost></ng-template>\r\n </div>\r\n\r\n @if (hasActions) {\r\n <footer class=\"solaris-dialog__footer\" [attr.data-action-alignment]=\"actionAlignment\">\r\n @for (action of actions; track action.label ?? action.labelKey ?? $index) {\r\n <button type=\"button\" solaris-button class=\"solaris-dialog__action\" [size]=\"resolveActionSize(action)\"\r\n [variant]=\"resolveActionVariant(action)\" [color]=\"resolveActionColor(action)\" [disabled]=\"action.disabled\"\r\n [loading]=\"action.loading\" [fullWidth]=\"action.fullWidth\" (click)=\"actionClick.emit(action)\">\r\n @if (action.labelKey) {\r\n {{ action.labelKey }}\r\n } @else {\r\n {{ action.label }}\r\n }\r\n </button>\r\n }\r\n </footer>\r\n }\r\n</section>\r\n","import { ApplicationRef, EnvironmentInjector, Injectable, Injector, Type, createComponent, inject } from '@angular/core';\r\n\r\nimport { SolarisDialogStepsContainer } from '../components/dialog-steps-container/dialog-steps-container';\r\nimport { SolarisDialogContainer } from '../components/dialog-container/dialog-container';\r\nimport { SolarisDialogStepsConfiguration } from '../model/dialog-steps.type';\r\nimport { SolarisDialogConfiguration } from '../model/dialog.type';\r\nimport { SOLARIS_DIALOG_DATA } from '../token/dialog-data.token';\r\nimport { SolarisDialogRef } from '../token/dialog-ref';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class SolarisDialogService {\r\n private readonly environmentInjector = inject(EnvironmentInjector);\r\n private readonly appRef = inject(ApplicationRef);\r\n\r\n open<TComponent, TData = unknown, TResult = unknown>(component: Type<TComponent>,\r\n configuration: SolarisDialogConfiguration<TData, TResult> = {},): SolarisDialogRef<TResult> {\r\n const dialogRef = new SolarisDialogRef<TResult>();\r\n\r\n const backdrop = document.createElement('div');\r\n backdrop.className = 'solaris-dialog-backdrop';\r\n\r\n const host = document.createElement('div');\r\n const positionClass = `position-${configuration.position ?? 'center'}`;\r\n\r\n host.className = [\r\n 'solaris-dialog-host',\r\n positionClass,\r\n configuration.panelClass ?? '',\r\n ].filter(Boolean).join(' ');\r\n\r\n document.body.appendChild(backdrop);\r\n document.body.appendChild(host);\r\n\r\n const dialogInjector = Injector.create({\r\n providers: [\r\n { provide: SOLARIS_DIALOG_DATA, useValue: configuration.data },\r\n { provide: SolarisDialogRef, useValue: dialogRef },\r\n ],\r\n parent: this.environmentInjector,\r\n });\r\n\r\n const containerRef = createComponent(SolarisDialogContainer<TResult>, {\r\n environmentInjector: this.environmentInjector,\r\n hostElement: host,\r\n });\r\n\r\n containerRef.setInput('title', configuration.title);\r\n containerRef.setInput('titleKey', configuration.titleKey);\r\n containerRef.setInput('titleParams', configuration.titleParams);\r\n containerRef.setInput('description', configuration.description);\r\n containerRef.setInput('descriptionKey', configuration.descriptionKey);\r\n containerRef.setInput('descriptionParams', configuration.descriptionParams);\r\n containerRef.setInput('size', configuration.size ?? 'md');\r\n containerRef.setInput('actions', configuration.actions ?? []);\r\n containerRef.setInput('actionSize', configuration.actionSize);\r\n containerRef.setInput('actionAlignment', configuration.actionAlignment ?? 'end');\r\n containerRef.setInput('ariaLabel', configuration.ariaLabel);\r\n containerRef.setInput('ariaLabelledBy', configuration.ariaLabelledBy);\r\n containerRef.setInput('ariaDescribedBy', configuration.ariaDescribedBy);\r\n containerRef.setInput('showCloseButton', configuration.showCloseButton ?? !configuration.disableClose);\r\n\r\n dialogRef._attachActionsUpdateFn(actions => {\r\n containerRef.setInput('actions', [...actions]);\r\n containerRef.changeDetectorRef.detectChanges();\r\n });\r\n\r\n dialogRef._attachHeaderUpdateFn(header => {\r\n containerRef.setInput('title', header.title);\r\n containerRef.setInput('titleKey', header.titleKey);\r\n containerRef.setInput('titleParams', header.titleParams);\r\n\r\n containerRef.setInput('description', header.description);\r\n containerRef.setInput('descriptionKey', header.descriptionKey);\r\n containerRef.setInput('descriptionParams', header.descriptionParams);\r\n\r\n containerRef.changeDetectorRef.detectChanges();\r\n });\r\n\r\n this.appRef.attachView(containerRef.hostView);\r\n containerRef.changeDetectorRef.detectChanges();\r\n\r\n const contentRef = createComponent(component, {\r\n environmentInjector: this.environmentInjector,\r\n elementInjector: dialogInjector,\r\n });\r\n\r\n containerRef.instance.contentHost.insert(contentRef.hostView);\r\n contentRef.changeDetectorRef.detectChanges();\r\n\r\n const close = (result?: TResult) => {\r\n this.appRef.detachView(contentRef.hostView);\r\n contentRef.destroy();\r\n\r\n this.appRef.detachView(containerRef.hostView);\r\n containerRef.destroy();\r\n\r\n backdrop.remove();\r\n host.remove();\r\n\r\n document.removeEventListener('keydown', onKeyDown, true);\r\n backdrop.removeEventListener('pointerdown', onBackdropClick, true);\r\n\r\n dialogRef._finishClose(result);\r\n };\r\n\r\n dialogRef._attachCloseFn(close);\r\n\r\n const closeOnBackdropClick = configuration.closeOnBackdropClick ?? !configuration.disableClose;\r\n const closeOnEscape = configuration.closeOnEscape ?? !configuration.disableClose;\r\n\r\n const onBackdropClick = () => {\r\n if (closeOnBackdropClick) {\r\n dialogRef.close();\r\n }\r\n };\r\n\r\n const onKeyDown = (event: KeyboardEvent) => {\r\n if (event.key === 'Escape' && closeOnEscape) {\r\n dialogRef.close();\r\n }\r\n };\r\n\r\n backdrop.addEventListener('pointerdown', onBackdropClick, true);\r\n document.addEventListener('keydown', onKeyDown, true);\r\n\r\n containerRef.instance.closeClick.subscribe(() => {\r\n if (!configuration.disableClose) {\r\n dialogRef.close();\r\n }\r\n });\r\n\r\n containerRef.instance.actionClick.subscribe((action) => {\r\n if (action.disabled || action.loading) return;\r\n\r\n dialogRef._emitAction(action);\r\n if (action.closesDialog ?? true) {\r\n dialogRef.close(action.value as TResult);\r\n }\r\n });\r\n\r\n return dialogRef;\r\n }\r\n\r\n openSteps<TResult = unknown>(configuration: SolarisDialogStepsConfiguration<TResult>,): SolarisDialogRef<TResult> {\r\n return this.open<SolarisDialogStepsContainer<TResult>, SolarisDialogStepsConfiguration<TResult>,\r\n TResult>(SolarisDialogStepsContainer, {\r\n ...configuration,\r\n data: configuration,\r\n actions: [],\r\n actionAlignment: configuration.actionAlignment ?? 'space-between',\r\n showCloseButton: configuration.showCloseButton ?? true,\r\n });\r\n }\r\n}\r\n","import { Directive } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[solaris-drawer-header]',\r\n standalone: true,\r\n})\r\nexport class SolarisDrawerHeaderDirective {}\r\n","import { Directive } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[solaris-drawer-footer]',\r\n standalone: true,\r\n})\r\nexport class SolarisDrawerFooterDirective {}\r\n","import { ChangeDetectionStrategy, Component, ContentChild, ElementRef, EventEmitter, HostBinding,\r\n Input, Output, ViewChild, computed, effect, inject, signal } from '@angular/core';\r\nimport { DOCUMENT } from '@angular/common';\r\n\r\nimport { SolarisDrawerHeaderDirective } from '../directives/drawer-header.directive';\r\nimport { SolarisDrawerFooterDirective } from '../directives/drawer-footer.directive';\r\nimport { SolarisDrawerSide } from '../model/drawer.type';\r\n\r\n@Component({\r\n selector: 'solaris-drawer',\r\n standalone: true,\r\n imports: [],\r\n templateUrl: './drawer.html',\r\n styleUrls: ['./drawer.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: { class: 'solaris-drawer-host' },\r\n})\r\nexport class SolarisDrawer {\r\n private readonly doc = inject(DOCUMENT);\r\n\r\n @Input() title = '';\r\n @Input() titleKey = '';\r\n @Input() panelClass = '';\r\n @Input() backdrop = true;\r\n @Input() showClose = true;\r\n @Input() trapFocus = true;\r\n @Input() backdropClass = '';\r\n @Input() showHeader = true;\r\n @Input() lockScroll = true;\r\n @Input() restoreFocus = true;\r\n @Input() closeOnEscape = true;\r\n @Input() width = 'min(26rem, 92vw)';\r\n @Input() side: SolarisDrawerSide = 'right';\r\n @Input() height = 'min(70vh, 40rem)';\r\n @Input() closeOnOutsideClick = true;\r\n\r\n private readonly _openInput = signal<boolean | null>(null);\r\n private readonly _internalOpen = signal(false);\r\n\r\n @Input() set open(v: boolean | null) { this._openInput.set(v); }\r\n get open(): boolean | null { return this._openInput(); }\r\n\r\n readonly isOpen = computed(() => {\r\n const v = this._openInput();\r\n return typeof v === 'boolean' ? v : this._internalOpen();\r\n });\r\n\r\n @Output() openChange = new EventEmitter<boolean>();\r\n\r\n @ContentChild(SolarisDrawerHeaderDirective) headerSlot?: SolarisDrawerHeaderDirective;\r\n @ContentChild(SolarisDrawerFooterDirective) footerSlot?: SolarisDrawerFooterDirective;\r\n @ViewChild('panelEl', { read: ElementRef }) panelEl?: ElementRef<HTMLElement>;\r\n\r\n private static seq = 0;\r\n readonly _id = `solaris-drawer-${++SolarisDrawer.seq}`;\r\n private static scrollLockCount = 0;\r\n private static prevBodyOverflow = '';\r\n readonly titleId = `${this._id}-title`;\r\n private prevFocused: HTMLElement | null = null;\r\n private static prevBodyPaddingRight = '';\r\n\r\n @HostBinding('attr.data-side') get dataSide() { return this.side; }\r\n @HostBinding('attr.data-open') get dataOpen() { return this.isOpen() ? 'true' : null; }\r\n\r\n get hasCustomHeader(): boolean { return !!this.headerSlot; }\r\n get hasCustomFooter(): boolean { return !!this.footerSlot; }\r\n\r\n constructor() {\r\n effect((onCleanup) => {\r\n const open = this.isOpen();\r\n\r\n if (open) {\r\n this.onOpen();\r\n } else {\r\n this.onClose();\r\n }\r\n\r\n const onKeyDown = (ev: KeyboardEvent) => {\r\n if (!this.isOpen()) return;\r\n if (this.closeOnEscape && ev.key === 'Escape') {\r\n ev.preventDefault();\r\n this.setOpen(false);\r\n }\r\n };\r\n\r\n const onDocPointerDown = (ev: PointerEvent) => {\r\n if (!this.isOpen()) return;\r\n if (!this.closeOnOutsideClick) return;\r\n if (this.backdrop) return;\r\n\r\n const panel = this.panelEl?.nativeElement;\r\n const t = ev.target as Node | null;\r\n if (!panel || !t) return;\r\n\r\n if (!panel.contains(t)) this.setOpen(false);\r\n };\r\n\r\n const onFocusIn = (ev: FocusEvent) => {\r\n if (!this.isOpen()) return;\r\n if (!this.trapFocus) return;\r\n\r\n const panel = this.panelEl?.nativeElement;\r\n const target = ev.target as Node | null;\r\n if (!panel || !target) return;\r\n\r\n if (!panel.contains(target)) {\r\n this.focusFirst();\r\n }\r\n };\r\n\r\n this.doc.addEventListener('keydown', onKeyDown, { capture: true });\r\n this.doc.addEventListener('pointerdown', onDocPointerDown, { capture: true });\r\n this.doc.addEventListener('focusin', onFocusIn, { capture: true });\r\n\r\n onCleanup(() => {\r\n this.doc.removeEventListener('keydown', onKeyDown, true as any);\r\n this.doc.removeEventListener('pointerdown', onDocPointerDown, true as any);\r\n this.doc.removeEventListener('focusin', onFocusIn, true as any);\r\n });\r\n });\r\n }\r\n\r\n toggle() {\r\n this.setOpen(!this.isOpen());\r\n }\r\n\r\n setOpen(next: boolean) {\r\n const cur = this.isOpen();\r\n if (next === cur) return;\r\n\r\n this.openChange.emit(next);\r\n if (typeof this._openInput() !== 'boolean') {\r\n this._internalOpen.set(next);\r\n }\r\n }\r\n\r\n onBackdropClick() {\r\n if (!this.closeOnOutsideClick) return;\r\n this.setOpen(false);\r\n }\r\n\r\n onPanelKeydown(ev: KeyboardEvent) {\r\n if (!this.trapFocus) return;\r\n if (ev.key !== 'Tab') return;\r\n\r\n const panel = this.panelEl?.nativeElement;\r\n if (!panel) return;\r\n\r\n const focusables = this.getFocusable(panel);\r\n if (!focusables.length) return;\r\n\r\n const first = focusables[0];\r\n const last = focusables.at(-1);\r\n\r\n const active = this.doc.activeElement as HTMLElement | null;\r\n\r\n if (ev.shiftKey) {\r\n if (!active || active === first) {\r\n ev.preventDefault();\r\n if (last) {\r\n last.focus();\r\n }\r\n }\r\n } else if (!active || active === last) {\r\n ev.preventDefault();\r\n first.focus();\r\n }\r\n }\r\n\r\n private onOpen() {\r\n if (this.restoreFocus) {\r\n this.prevFocused = this.doc.activeElement as HTMLElement | null;\r\n }\r\n\r\n if (this.lockScroll) this.lockBodyScroll();\r\n queueMicrotask(() => {\r\n requestAnimationFrame(() => this.focusFirst());\r\n });\r\n }\r\n\r\n private onClose() {\r\n if (this.lockScroll) this.unlockBodyScroll();\r\n\r\n if (this.restoreFocus && this.prevFocused?.isConnected) {\r\n queueMicrotask(() => this.prevFocused?.focus?.());\r\n }\r\n this.prevFocused = null;\r\n }\r\n\r\n private focusFirst() {\r\n const panel = this.panelEl?.nativeElement;\r\n if (!panel) return;\r\n\r\n const focusables = this.getFocusable(panel);\r\n if (focusables.length) {\r\n focusables[0].focus();\r\n return;\r\n }\r\n\r\n panel.focus?.();\r\n }\r\n\r\n private getFocusable(root: HTMLElement): HTMLElement[] {\r\n const selector =\r\n 'button:not([disabled]), [href], input:not([disabled]), select:not([disabled]), textarea:not([disabled]), [tabindex]:not([tabindex=\"-1\"])';\r\n\r\n const all = Array.from(root.querySelectorAll<HTMLElement>(selector));\r\n return all.filter(el => {\r\n const style = getComputedStyle(el);\r\n const visible = style.visibility !== 'hidden' && style.display !== 'none';\r\n const inDom = el.offsetParent !== null || style.position === 'fixed';\r\n return visible && inDom;\r\n });\r\n }\r\n\r\n private lockBodyScroll() {\r\n const body = this.doc.body;\r\n if (!body) return;\r\n\r\n if (SolarisDrawer.scrollLockCount === 0) {\r\n SolarisDrawer.prevBodyOverflow = body.style.overflow;\r\n SolarisDrawer.prevBodyPaddingRight = body.style.paddingRight;\r\n\r\n const scrollbarW = Math.max(0, window.innerWidth - this.doc.documentElement.clientWidth);\r\n body.style.overflow = 'hidden';\r\n if (scrollbarW) body.style.paddingRight = `${scrollbarW}px`;\r\n }\r\n\r\n SolarisDrawer.scrollLockCount++;\r\n }\r\n\r\n private unlockBodyScroll() {\r\n const body = this.doc.body;\r\n if (!body) return;\r\n\r\n SolarisDrawer.scrollLockCount = Math.max(0, SolarisDrawer.scrollLockCount - 1);\r\n\r\n if (SolarisDrawer.scrollLockCount === 0) {\r\n body.style.overflow = SolarisDrawer.prevBodyOverflow;\r\n body.style.paddingRight = SolarisDrawer.prevBodyPaddingRight;\r\n }\r\n }\r\n}\r\n","@if (isOpen()) {\r\n @if (backdrop) {\r\n <div class=\"solaris-drawer__backdrop {{ backdropClass }}\" (click)=\"onBackdropClick()\" aria-hidden=\"true\"></div>\r\n }\r\n\r\n <aside #panelEl class=\"solaris-drawer__panel {{ panelClass }}\" role=\"dialog\" aria-modal=\"true\"\r\n [attr.aria-labelledby]=\"showHeader ? titleId : null\" [style.--solaris-drawer-width]=\"width\"\r\n [style.--solaris-drawer-height]=\"height\" (keydown)=\"onPanelKeydown($event)\" tabindex=\"-1\">\r\n @if (showHeader) {\r\n <header class=\"solaris-drawer__header\">\r\n @if (hasCustomHeader) {\r\n <ng-content select=\"[solaris-drawer-header]\"></ng-content>\r\n } @else {\r\n <div class=\"solaris-drawer__title\" [id]=\"titleId\">{{ title }}</div>\r\n\r\n @if (showClose) {\r\n <button type=\"button\" class=\"solaris-drawer__close\" (click)=\"setOpen(false)\" aria-label=\"Close\">\r\n <i class=\"ph ph-x\" aria-hidden=\"true\"></i>\r\n </button>\r\n }\r\n }\r\n </header>\r\n }\r\n\r\n <div class=\"solaris-drawer__content\">\r\n <ng-content></ng-content>\r\n </div>\r\n\r\n @if (hasCustomFooter) {\r\n <footer class=\"solaris-drawer__footer\">\r\n <ng-content select=\"[solaris-drawer-footer]\"></ng-content>\r\n </footer>\r\n }\r\n </aside>\r\n}\r\n","import { Directive } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[solaris-filter-panel-footer]',\r\n standalone: true,\r\n})\r\nexport class SolarisFilterPanelFooterDirective {}\r\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'solaris-table-filters',\r\n standalone: true,\r\n templateUrl: './table-filters.html',\r\n styleUrls: ['./table-filters.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: { class: 'solaris-table-filters' },\r\n})\r\nexport class SolarisTableFilters {}\r\n","<ng-content></ng-content>\r\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\r\n\r\nimport { SolarisTranslationPipe } from '@educarehq/solaris-services';\r\n\r\n@Component({\r\n selector: 'solaris-filter-field',\r\n standalone: true,\r\n imports: [SolarisTranslationPipe],\r\n templateUrl: './filter-field.html',\r\n styleUrls: ['./filter-field.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: { class: 'solaris-filter-field-host' },\r\n})\r\nexport class SolarisFilterField {\r\n @Input() label = '';\r\n @Input() labelKey = '';\r\n @Input() active = false;\r\n @Input() resetLabel = 'Reset';\r\n @Input() resetLabelKey = 'ui.solaris.common.reset';\r\n\r\n @Output() reset = new EventEmitter<void>();\r\n\r\n get showReset(): boolean {\r\n return this.reset.observed;\r\n }\r\n\r\n onResetClick(ev: MouseEvent) {\r\n ev.preventDefault();\r\n ev.stopPropagation();\r\n this.reset.emit();\r\n }\r\n}\r\n","<div class=\"solaris-filter-field\">\r\n <div class=\"solaris-filter-field__head\">\r\n <span class=\"solaris-filter-field__label\">\r\n @if (labelKey) { {{ labelKey | translate }} } @else { {{ label }} }\r\n </span>\r\n\r\n @if (showReset) {\r\n <button type=\"button\" class=\"solaris-filter-field__reset\" (click)=\"onResetClick($event)\" [disabled]=\"!active\">\r\n @if (resetLabelKey) { {{ resetLabelKey | translate }} } @else { {{ resetLabel }} }\r\n </button>\r\n }\r\n </div>\r\n\r\n <div class=\"solaris-filter-field__body\">\r\n <ng-content></ng-content>\r\n </div>\r\n</div>\r\n","import { Directive } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[solaris-filter-panel-chips]',\r\n standalone: true,\r\n})\r\nexport class SolarisFilterPanelChipsDirective {}\r\n","import { ChangeDetectionStrategy, Component, ContentChild, EventEmitter, Input, Output, computed, signal } from '@angular/core';\r\n\r\nimport { SolarisFilterPanelFooterDirective } from '../../../directives/filter-panel-footer.directive';\r\nimport { SolarisDrawerFooterDirective } from '../../../../drawer/directives/drawer-footer.directive';\r\nimport { SolarisDrawerHeaderDirective } from '../../../../drawer/directives/drawer-header.directive';\r\nimport { SolarisFilterPanelChipsDirective } from '../../../directives/filter-panel-chips.directive';\r\nimport { SolarisButtonDirective } from '../../../../../actions/button/directives/button.directive';\r\nimport { SolarisFilterPanelRadius } from '../../../model/filter-panel/filter-panel.type';\r\nimport { SolarisTranslationPipe } from '@educarehq/solaris-services';\r\nimport { SolarisDrawer } from '../../../../drawer/component/drawer';\r\n\r\n@Component({\r\n selector: 'solaris-filter-panel',\r\n standalone: true,\r\n imports: [\r\n SolarisTranslationPipe,\r\n SolarisButtonDirective,\r\n SolarisDrawerHeaderDirective,\r\n SolarisDrawerFooterDirective,\r\n SolarisDrawer\r\n ],\r\n templateUrl: './filter-panel.html',\r\n styleUrls: ['./filter-panel.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: { class: 'solaris-filter-panel-host' },\r\n})\r\nexport class SolarisFilterPanel {\r\n @Input() count = 0;\r\n @Input() labelKey = '';\r\n @Input() titleKey = '';\r\n @Input() disabled = false;\r\n @Input() drawerSide: 'right' | 'left' = 'right';\r\n @Input() radius: SolarisFilterPanelRadius = 'sm';\r\n @Input() drawerWidth: string = 'min(30rem, 92vw)';\r\n @Input() label = 'ui.solaris.tables.filter.filters';\r\n @Input() title = 'ui.solaris.tables.filter.filters';\r\n\r\n private readonly _internalOpen = signal(false);\r\n private readonly _openInput = signal<boolean | null>(null);\r\n private readonly _chipsSlot = signal<SolarisFilterPanelChipsDirective | null>(null);\r\n\r\n @Input() set open(v: boolean | null) { this._openInput.set(v); }\r\n get open(): boolean | null { return this._openInput(); }\r\n\r\n readonly isOpen = computed(() => {\r\n const v = this._openInput();\r\n return typeof v === 'boolean' ? v : this._internalOpen();\r\n });\r\n\r\n @Output() apply = new EventEmitter<void>();\r\n @Output() clearAll = new EventEmitter<void>();\r\n @Output() openChange = new EventEmitter<boolean>();\r\n\r\n @ContentChild(SolarisFilterPanelFooterDirective) footerSlot?: SolarisFilterPanelFooterDirective;\r\n @ContentChild(SolarisFilterPanelChipsDirective) set chipsSlot(v: SolarisFilterPanelChipsDirective | undefined) {\r\n this._chipsSlot.set(v ?? null);\r\n }\r\n\r\n readonly hasChips = computed(() => !!this._chipsSlot());\r\n get hasCustomFooter(): boolean { return !!this.footerSlot; }\r\n\r\n setOpen(next: boolean) {\r\n if (this.disabled) return;\r\n if (next === this.isOpen()) return;\r\n\r\n this.openChange.emit(next);\r\n if (typeof this._openInput() !== 'boolean') this._internalOpen.set(next);\r\n }\r\n\r\n toggle() {\r\n this.setOpen(!this.isOpen());\r\n }\r\n}\r\n","<button type=\"button\" class=\"solaris-filter-panel__trigger\" [disabled]=\"disabled\" (click)=\"toggle()\"\r\n [attr.data-radius]=\"radius\">\r\n <i class=\"ph ph-sliders-horizontal\"></i>\r\n\r\n @if (labelKey) { {{ labelKey | translate }} } @else { {{ label | translate }} }\r\n\r\n @if (count > 0) {\r\n <span class=\"solaris-filter-panel__count\">{{ count }}</span>\r\n }\r\n</button>\r\n\r\n<solaris-drawer [open]=\"isOpen()\" (openChange)=\"setOpen($event)\" [side]=\"drawerSide\" [width]=\"drawerWidth\"\r\n [backdrop]=\"true\" [closeOnEscape]=\"true\" [closeOnOutsideClick]=\"true\" [lockScroll]=\"true\"\r\n [restoreFocus]=\"true\" [trapFocus]=\"true\" panelClass=\"solaris-filter-panel__drawer\">\r\n <div solaris-drawer-header class=\"solaris-filter-panel__header\">\r\n <div class=\"solaris-filter-panel__title\">\r\n @if (titleKey) { {{ titleKey | translate }} } @else { {{ title | translate }} }\r\n </div>\r\n\r\n <button type=\"button\" class=\"solaris-filter-panel__close\" (click)=\"setOpen(false)\">\r\n <i class=\"ph ph-x\"></i>\r\n </button>\r\n </div>\r\n\r\n @if (hasChips()) {\r\n <div class=\"solaris-filter-panel__chips\">\r\n <ng-content select=\"[solarisFilterPanelChips]\"></ng-content>\r\n </div>\r\n }\r\n\r\n <div class=\"solaris-filter-panel__content\">\r\n <ng-content></ng-content>\r\n </div>\r\n\r\n <footer solaris-drawer-footer class=\"solaris-filter-panel__footer\">\r\n <ng-content select=\"[solarisFilterPanelFooter]\"></ng-content>\r\n\r\n @if (!hasCustomFooter) {\r\n <div class=\"solaris-filter-panel__footer-default\">\r\n <button solaris-button color=\"surface\" variant=\"outline\" type=\"button\" (click)=\"clearAll.emit()\">\r\n {{ 'ui.solaris.common.clearAll' | translate }}\r\n </button>\r\n\r\n <button solaris-button type=\"button\" (click)=\"apply.emit()\">\r\n {{ 'ui.solaris.common.apply' | translate }}\r\n </button>\r\n </div>\r\n }\r\n </footer>\r\n</solaris-drawer>\r\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\r\n\r\nimport { SolarisTranslationPipe } from '@educarehq/solaris-services';\r\nimport { SolarisRadiusPreset } from '../../../../../common/model/common-configurations.type';\r\n\r\n\r\n@Component({\r\n selector: 'solaris-filter-chip',\r\n standalone: true,\r\n imports: [\r\n SolarisTranslationPipe\r\n ],\r\n templateUrl: './filter-chip.html',\r\n styleUrls: ['./filter-chip.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: { class: 'solaris-filter-chip-host' },\r\n})\r\nexport class SolarisFilterChip {\r\n @Input() label = '';\r\n @Input() value = '';\r\n @Input() labelKey = '';\r\n @Input() valueKey = '';\r\n @Input() disabled = false;\r\n @Input() removable = true;\r\n @Input() radius: SolarisRadiusPreset = 'md';\r\n\r\n @Output() remove = new EventEmitter<void>();\r\n @Output() chipClick = new EventEmitter<void>();\r\n\r\n onRemoveClick(ev: MouseEvent) {\r\n ev.preventDefault();\r\n ev.stopPropagation();\r\n if (!this.disabled) this.remove.emit();\r\n }\r\n}\r\n","<button type=\"button\" class=\"solaris-filter-chip\" [disabled]=\"disabled\"\r\n (click)=\"chipClick.emit()\" [attr.data-radius]=\"radius\">\r\n <span class=\"solaris-filter-chip__label\">\r\n @if (labelKey) { {{ labelKey | translate }} } @else { {{ label }} }\r\n </span>\r\n\r\n <span class=\"solaris-filter-chip__value\">\r\n @if (valueKey) { {{ valueKey | translate }} } @else { {{ value }} }\r\n </span>\r\n\r\n @if (removable) {\r\n <span class=\"solaris-filter-chip__remove\"\r\n role=\"button\"\r\n tabindex=\"-1\"\r\n (click)=\"onRemoveClick($event)\">\r\n <i class=\"ph ph-x\" aria-hidden=\"true\"></i>\r\n </span>\r\n }\r\n</button>\r\n","import { Component, Input } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'solaris-table-skeleton',\r\n standalone: true,\r\n templateUrl: './table-skeleton.html',\r\n styleUrls: ['./table-skeleton.scss'],\r\n})\r\nexport class SolarisTableSkeleton {\r\n @Input() rows = 10;\r\n @Input() columns = 6;\r\n @Input() selectable = false;\r\n @Input() gridTemplateColumns = '';\r\n\r\n public rowsArray() { return Array.from({ length: this.rows }, (_, i) => i); }\r\n public colsArray() { return Array.from({ length: this.columns }, (_, i) => i); }\r\n}\r\n","<div class=\"solaris-table-skeleton\" role=\"status\" aria-live=\"polite\">\r\n @for (r of rowsArray(); track r) {\r\n <div class=\"solaris-table-skeleton__row\" [style.gridTemplateColumns]=\"gridTemplateColumns\">\r\n\r\n @for (c of colsArray(); track c; let i = $index) {\r\n <div class=\"solaris-table-skeleton__cell\" [class.is-first]=\"i === 0\">\r\n @if (selectable && i === 0) {\r\n <span class=\"solaris-table-skeleton__select-prefix\">\r\n <span class=\"sk sk--circle\"></span>\r\n </span>\r\n }\r\n\r\n <span class=\"sk sk--line\"></span>\r\n </div>\r\n }\r\n </div>\r\n }\r\n</div>\r\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'solaris-filter-bar',\r\n standalone: true,\r\n templateUrl: './filter-bar.html',\r\n styleUrls: ['./filter-bar.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: { class: 'solaris-filter-bar' },\r\n})\r\nexport class SolarisFilterBar {}\r\n","<ng-content></ng-content>\r\n","import { Directive, TemplateRef } from '@angular/core';\r\n\r\n@Directive({\r\n selector: 'ng-template[solaris-column-cell]',\r\n standalone: true,\r\n})\r\nexport class SolarisColumnCellDef {\r\n constructor(public readonly template: TemplateRef<any>) {}\r\n}\r\n\r\n@Directive({\r\n selector: 'ng-template[solaris-column-header]',\r\n standalone: true,\r\n})\r\nexport class SolarisColumnHeaderDef {\r\n constructor(public readonly template: TemplateRef<any>) {}\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class SolarisIdGenerator {\r\n private readonly counters = new Map<string, number>();\r\n\r\n public next(prefix = 'solaris'): string {\r\n const current = this.counters.get(prefix) ?? 0;\r\n const next = current + 1;\r\n this.counters.set(prefix, next);\r\n return `${prefix}-${next}`;\r\n }\r\n}\r\n","import { booleanAttribute, Component, ContentChild, inject, Input } from '@angular/core';\r\n\r\nimport { SolarisColumnCellDef, SolarisColumnHeaderDef } from '../../directives/column.directive';\r\nimport { SolarisIdGenerator } from '../../../../common/service/id-generator.service';\r\nimport { SolarisAlign } from '../../model/table/table.types';\r\n\r\n@Component({\r\n selector: 'solaris-column',\r\n standalone: true,\r\n templateUrl: './table-column.html',\r\n styleUrls: ['./table-column.scss']\r\n})\r\nexport class SolarisTableColumn {\r\n private readonly ids = inject(SolarisIdGenerator);\r\n readonly id = this.ids.next('solaris-column');\r\n\r\n @Input() field?: string;\r\n @Input() width?: string;\r\n @Input() header?: string;\r\n @Input() sortKey?: string;\r\n @Input() minWidth?: string;\r\n @Input() maxWidth?: string;\r\n @Input() headerKey?: string;\r\n @Input() headerIconClass?: string;\r\n @Input() align: SolarisAlign = 'start';\r\n @Input({ transform: booleanAttribute }) grow = false;\r\n @Input({ transform: booleanAttribute }) resizable = true;\r\n @Input({ transform: booleanAttribute }) sortable = false;\r\n\r\n @ContentChild(SolarisColumnCellDef) cellDef?: SolarisColumnCellDef;\r\n @ContentChild(SolarisColumnHeaderDef) headerDef?: SolarisColumnHeaderDef;\r\n}\r\n","","import { inject } from '@angular/core';\r\n\r\nimport { SolarisIdGenerator } from '../service/id-generator.service';\r\n\r\nexport function uniqueId(prefix: string): string {\r\n return inject(SolarisIdGenerator).next(prefix);\r\n}\r\n","import { ChangeDetectionStrategy, Component, ElementRef, ViewChild,\r\n forwardRef, computed, effect, input, output, signal } from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\n\r\nimport { SolarisColorPreset, SolarisSizePreset } from '../../../common/model/common-configurations.type';\r\nimport { CheckboxAppearance, CheckboxColorInput, CheckboxVariant } from '../model/checkbox.type';\r\nimport { uniqueId } from '../../../common/helper/unique-id';\r\n\r\nconst PRESET_COLORS = new Set<SolarisColorPreset>([ 'primary', 'success', 'warning', 'error', 'info' ]);\r\n\r\n@Component({\r\n selector: 'solaris-checkbox',\r\n standalone: true,\r\n templateUrl: './checkbox.html',\r\n styleUrls: ['./checkbox.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => SolarisCheckbox),\r\n multi: true,\r\n },\r\n ],\r\n host: {\r\n class: 'solaris-checkbox-host',\r\n '[attr.data-size]': 'size()',\r\n '[attr.data-color]': 'colorKey()',\r\n '[attr.data-variant]': 'variant()',\r\n '[attr.data-appearance]': 'appearance()',\r\n '[style.--solaris-checkbox-ink]': 'ink()',\r\n '[attr.data-disabled]': 'disabled() ? \"true\" : null',\r\n '[style.--solaris-checkbox-custom]': 'customAccent()',\r\n },\r\n})\r\nexport class SolarisCheckbox implements ControlValueAccessor {\r\n readonly indeterminate = input<boolean>(false);\r\n readonly ariaLabel = input<string | null>(null);\r\n readonly size = input<SolarisSizePreset>('md');\r\n readonly variant = input<CheckboxVariant>('square');\r\n readonly color = input<CheckboxColorInput>('primary');\r\n readonly inputId = input<string | null>(null, { alias: 'id' });\r\n readonly appearance = input<CheckboxAppearance>('solid');\r\n readonly checkColor = input<CheckboxColorInput | null>(null);\r\n\r\n readonly checked = signal(false);\r\n readonly disabled = signal(false);\r\n readonly checkedChange = output<boolean>();\r\n readonly indeterminateChange = output<boolean>();\r\n\r\n @ViewChild('native', { static: true })\r\n private readonly native?: ElementRef<HTMLInputElement>;\r\n\r\n readonly customAccent = computed(() => {\r\n if (this.colorKey() !== 'custom') return null;\r\n const raw = String(this.color() ?? '').trim();\r\n return !raw || raw === 'custom' ? null : raw;\r\n });\r\n readonly colorKey = computed(() => {\r\n const raw = String(this.color() ?? '').trim();\r\n if (!raw || raw === 'custom') return 'custom';\r\n return PRESET_COLORS.has(raw as SolarisColorPreset) ? (raw as SolarisColorPreset) : 'custom';\r\n });\r\n private readonly autoId = uniqueId('solaris-checkbox');\r\n readonly id = computed(() => this.inputId() ?? this.autoId);\r\n readonly ink = computed(() => resolveColor(this.checkColor(), null));\r\n\r\n private onChange: (value: boolean) => void = () => {};\r\n private onTouched: () => void = () => {};\r\n\r\n constructor() {\r\n effect(() => {\r\n const el = this.native?.nativeElement;\r\n if (!el) return;\r\n el.indeterminate = this.indeterminate();\r\n });\r\n }\r\n\r\n public onNativeChange(next: boolean) {\r\n if (this.indeterminate()) this.indeterminateChange.emit(false);\r\n\r\n this.checked.set(next);\r\n this.onChange(next);\r\n this.checkedChange.emit(next);\r\n this.onTouched();\r\n }\r\n\r\n public onBlur() {\r\n this.onTouched();\r\n }\r\n\r\n writeValue(value: boolean | null): void {\r\n this.checked.set(!!value);\r\n }\r\n registerOnTouched(fn: () => void): void {\r\n this.onTouched = fn;\r\n }\r\n setDisabledState(isDisabled: boolean): void {\r\n this.disabled.set(isDisabled);\r\n }\r\n registerOnChange(fn: (value: boolean) => void): void {\r\n this.onChange = fn;\r\n }\r\n}\r\n\r\nfunction resolveColor(v: CheckboxColorInput | null | undefined, fallback: string | null): string | null {\r\n const s = v == null ? '' : String(v).trim();\r\n if (!s || s === 'custom') return fallback;\r\n if (PRESET_COLORS.has(s as SolarisColorPreset)) return `var(--solaris-color-${s})`;\r\n return s;\r\n}\r\n","<label class=\"solaris-checkbox\">\r\n <input #native class=\"solaris-checkbox__native\" type=\"checkbox\" [attr.id]=\"id()\"\r\n [checked]=\"checked()\" [disabled]=\"disabled()\" [attr.aria-label]=\"ariaLabel() ?? null\"\r\n [attr.aria-checked]=\"indeterminate() ? 'mixed' : (checked() ? 'true' : 'false')\"\r\n (change)=\"onNativeChange(native.checked)\" (blur)=\"onBlur()\"/>\r\n\r\n <span class=\"solaris-checkbox__control\" aria-hidden=\"true\">\r\n @if (variant() === 'icon') {\r\n <span class=\"solaris-checkbox__dot\" aria-hidden=\"true\"></span>\r\n } @else {\r\n <i class=\"ph solaris-checkbox__icon\" [class.ph-check]=\"!indeterminate()\"\r\n [class.ph-minus]=\"indeterminate()\" aria-hidden=\"true\"></i>\r\n }\r\n </span>\r\n\r\n @if (variant() !== 'icon') {\r\n <span class=\"solaris-checkbox__content\"><ng-content/></span>\r\n }\r\n</label>\r\n","import { AfterContentInit, ChangeDetectionStrategy, Component, computed, ContentChildren, DestroyRef, ElementRef,\r\n EventEmitter, inject, Input, OnChanges, Output, QueryList, signal, SimpleChanges, ViewChild } from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { NgTemplateOutlet } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\n\r\nimport { SolarisPageChange, SolarisRowKey, SolarisSort, SolarisTableVariant } from '../../model/table/table.types';\r\nimport { SolarisCheckbox } from '../../../../actions/checkbox/component/checkbox';\r\nimport { SolarisTranslationPipe } from '@educarehq/solaris-services';\r\nimport { SolarisTableSkeleton } from '../skeleton/table-skeleton';\r\nimport { SolarisTableColumn } from '../column/table-column';\r\n\r\n@Component({\r\n selector: 'solaris-table',\r\n standalone: true,\r\n imports: [\r\n FormsModule,\r\n SolarisCheckbox,\r\n NgTemplateOutlet,\r\n SolarisTableSkeleton,\r\n SolarisTranslationPipe,\r\n ],\r\n templateUrl: './table.html',\r\n styleUrls: ['./table.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: {\r\n class: 'solaris-table-host',\r\n '[attr.data-scroll]': 'needsScroll() ? \"true\" : null',\r\n }\r\n})\r\nexport class SolarisTable implements AfterContentInit, OnChanges {\r\n private readonly destroyRef: DestroyRef = inject(DestroyRef);\r\n\r\n @Input() length = 0;\r\n @Input() pageIndex = 0;\r\n @Input() pageSize = 10;\r\n @Input() rowsCount = 0;\r\n @Input() loading = false;\r\n @Input() sort: SolarisSort[] = [];\r\n @Input() selectable = false;\r\n @Input() tableDescription = '';\r\n @Input() selection: SolarisRowKey[] = [];\r\n @Input() variant: SolarisTableVariant = 'grid';\r\n @Input() emptyIconClass = 'ph ph-database';\r\n @Input() pageSizeOptions: number[] = [10, 20, 50];\r\n @Input() emptyTextKey = 'ui.solaris.table.empty';\r\n\r\n @Output() sortChange = new EventEmitter<SolarisSort[]>();\r\n @Output() pageChange = new EventEmitter<SolarisPageChange>();\r\n @Output() selectionChange = new EventEmitter<SolarisRowKey[]>();\r\n\r\n @ContentChildren(SolarisTableColumn) private readonly columnQuery!: QueryList<SolarisTableColumn>;\r\n @ViewChild('tableRoot', { static: true }) private readonly tableRoot!: ElementRef<HTMLElement>;\r\n\r\n readonly needsScroll = signal(false);\r\n readonly measuredReady = signal(false);\r\n readonly sortState = signal<SolarisSort[]>([]);\r\n private readonly measuredPx = signal<number[]>([]);\r\n readonly columns = signal<SolarisTableColumn[]>([]);\r\n private readonly selectionSig = signal<SolarisRowKey[]>([]);\r\n private readonly rowKeys = signal<Set<SolarisRowKey>>(new Set());\r\n private readonly manualPx = signal<Record<number, number>>({});\r\n private readonly selectionSetSig = computed(() => new Set(this.selectionSig()));\r\n\r\n readonly selectAllChecked = computed(() => {\r\n const keys = Array.from(this.rowKeys());\r\n if (!keys.length) return false;\r\n const sel = this.selectionSetSig();\r\n return keys.every(k => sel.has(k));\r\n });\r\n readonly selectAllIndeterminate = computed(() => {\r\n const keys = Array.from(this.rowKeys());\r\n if (!keys.length) return false;\r\n const sel = this.selectionSetSig();\r\n const any = keys.some(k => sel.has(k));\r\n return any && !this.selectAllChecked();\r\n });\r\n readonly selectedCount = computed(() => this.selectionSig().length);\r\n readonly gridTemplateColumns = computed(() => this.buildGridTemplateColumns());\r\n\r\n private rafId: number | null = null;\r\n private resizeObserver?: ResizeObserver;\r\n\r\n get rangeStart(): number {\r\n if (!this.length) return 0;\r\n return this.pageIndex * this.pageSize + 1;\r\n }\r\n\r\n get rangeEnd(): number {\r\n if (!this.length) return 0;\r\n return Math.min(this.length, (this.pageIndex + 1) * this.pageSize);\r\n }\r\n\r\n get totalPages(): number {\r\n return Math.max(1, Math.ceil((this.length || 0) / (this.pageSize || 1)));\r\n }\r\n\r\n ngAfterContentInit(): void {\r\n this.syncColumns();\r\n this.selectionSig.set(this.selection ?? []);\r\n this.sortState.set(this.sort ?? []);\r\n\r\n this.columnQuery.changes.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {\r\n this.syncColumns();\r\n this.scheduleMeasure();\r\n });\r\n\r\n this.resizeObserver = new ResizeObserver(() => this.scheduleMeasure());\r\n this.resizeObserver.observe(this.tableRoot.nativeElement);\r\n this.destroyRef.onDestroy(() => this.resizeObserver?.disconnect());\r\n\r\n const fonts = (document as any).fonts;\r\n if (fonts?.ready?.then) fonts.ready.then(() => this.scheduleMeasure());\r\n\r\n this.scheduleMeasure();\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes['sort']) this.sortState.set(this.sort ?? []);\r\n if (changes['selection']) this.selectionSig.set(this.selection ?? []);\r\n\r\n if (changes['variant'] || changes['rowsCount'] || changes['pageIndex'] || changes['pageSize'] || changes['loading']) {\r\n this.scheduleMeasure();\r\n }\r\n }\r\n\r\n private syncColumns(): void {\r\n this.columns.set(this.columnQuery?.toArray() ?? []);\r\n }\r\n\r\n private scheduleMeasure(): void {\r\n if (this.loading) return;\r\n\r\n if (this.rafId != null) cancelAnimationFrame(this.rafId);\r\n this.rafId = requestAnimationFrame(() => {\r\n this.rafId = null;\r\n this.measureColumns();\r\n });\r\n }\r\n\r\n private measureColumns(): void {\r\n const root = this.tableRoot?.nativeElement;\r\n if (!root) return;\r\n\r\n const cols = this.columns();\r\n if (!cols.length) return;\r\n\r\n const isGrid = this.variant === 'grid';\r\n const borderPx = isGrid ? 2 : 0;\r\n const safetyPx = isGrid ? 2 : 0;\r\n const perColOverhead = borderPx + safetyPx;\r\n\r\n const widths: number[] = [];\r\n\r\n for (let i = 0; i < cols.length; i++) {\r\n const col = cols[i];\r\n\r\n if (col.width) { widths[i] = -1; continue; }\r\n\r\n const manual = this.manualPx()[i];\r\n if (manual != null) { widths[i] = manual; continue; }\r\n\r\n const headerCell = root.querySelector<HTMLElement>(`.solaris-table__row--header [data-col-idx=\"${i}\"]`);\r\n const bodyCells = Array.from(root.querySelectorAll<HTMLElement>(`.solaris-table__body [data-col-idx=\"${i}\"]`));\r\n\r\n const headerW = headerCell ? this.measureHeaderCellWidth(headerCell) : 0;\r\n const bodyW = this.measureBodyCellsWidth(bodyCells);\r\n\r\n const cap = this.toPx(col.maxWidth ?? '18rem', root);\r\n const ideal = Math.max(headerW, bodyW);\r\n const withOverhead = ideal + perColOverhead;\r\n\r\n const min = col.minWidth ? this.toPx(col.minWidth, root) : 40;\r\n\r\n widths[i] = Math.max(min, Math.min(withOverhead, cap));\r\n }\r\n\r\n this.measuredPx.set(widths);\r\n this.measuredReady.set(true);\r\n this.updateScrollFlag();\r\n }\r\n\r\n private measureHeaderCellWidth(cell: HTMLElement): number {\r\n const root = this.tableRoot?.nativeElement;\r\n if (!root) return 0;\r\n\r\n const clone = cell.cloneNode(true) as HTMLElement;\r\n\r\n clone.style.position = 'absolute';\r\n clone.style.left = '-99999px';\r\n clone.style.top = '0';\r\n clone.style.visibility = 'hidden';\r\n clone.style.pointerEvents = 'none';\r\n clone.style.width = 'max-content';\r\n clone.style.maxWidth = 'none';\r\n\r\n const resizer = clone.querySelector<HTMLElement>('.solaris-table__col-resizer');\r\n if (resizer) resizer.style.display = 'none';\r\n\r\n const headerContent = clone.querySelector<HTMLElement>('.solaris-table__header-content');\r\n if (headerContent) {\r\n headerContent.style.width = 'max-content';\r\n headerContent.style.justifyContent = 'flex-start';\r\n }\r\n\r\n const left = clone.querySelector<HTMLElement>('.solaris-table__header-left');\r\n if (left) {\r\n left.style.overflow = 'visible';\r\n left.style.maxWidth = 'none';\r\n left.style.minWidth = '0';\r\n }\r\n\r\n const text = clone.querySelector<HTMLElement>('.solaris-table__header-text');\r\n if (text) {\r\n text.style.maxWidth = 'none';\r\n text.style.overflow = 'visible';\r\n text.style.textOverflow = 'clip';\r\n text.style.whiteSpace = 'nowrap';\r\n text.style.display = 'inline-block';\r\n }\r\n\r\n const sortBtn = clone.querySelector<HTMLElement>('.solaris-table__sort-btn');\r\n if (sortBtn) sortBtn.style.width = 'max-content';\r\n\r\n root.appendChild(clone);\r\n const w = clone.getBoundingClientRect().width;\r\n clone.remove();\r\n\r\n return Math.ceil(w);\r\n }\r\n\r\n private measureBodyCellsWidth(cells: HTMLElement[]): number {\r\n let max = 0;\r\n for (const cell of cells) max = Math.max(max, this.measureBodyCellWidth(cell));\r\n return max;\r\n }\r\n\r\n private measureBodyCellWidth(cell: HTMLElement): number {\r\n const style = getComputedStyle(cell);\r\n const pad = Number.parseFloat(style.paddingLeft || '0') + Number.parseFloat(style.paddingRight || '0');\r\n\r\n const prefix = cell.querySelector<HTMLElement>('.solaris-row__select-prefix');\r\n const content = cell.querySelector<HTMLElement>('.solaris-row__content');\r\n\r\n const prefixW = prefix?.scrollWidth ?? 0;\r\n const contentW = content?.scrollWidth ?? cell.scrollWidth;\r\n\r\n const gap = prefix ? 12 : 0;\r\n return pad + prefixW + gap + contentW;\r\n }\r\n\r\n private toPx(value: string, base: HTMLElement): number {\r\n const v = value.trim();\r\n if (v.endsWith('px')) return Number.parseFloat(v);\r\n if (v.endsWith('rem')) return Number.parseFloat(v) * Number.parseFloat(getComputedStyle(document.documentElement).fontSize);\r\n if (v.endsWith('em')) return Number.parseFloat(v) * Number.parseFloat(getComputedStyle(base).fontSize);\r\n const n = Number.parseFloat(v);\r\n return Number.isFinite(n) ? n : 280;\r\n }\r\n\r\n private updateScrollFlag(): void {\r\n const root = this.tableRoot?.nativeElement;\r\n if (!root) return;\r\n\r\n requestAnimationFrame(() => {\r\n const needs = root.scrollWidth > root.clientWidth + 1;\r\n this.needsScroll.set(needs);\r\n });\r\n }\r\n\r\n private clamp(n: number, min: number, max: number): number {\r\n return Math.max(min, Math.min(max, n));\r\n }\r\n\r\n public clearManualWidth(i: number): void {\r\n const next = { ...this.manualPx() };\r\n delete next[i];\r\n this.manualPx.set(next);\r\n this.scheduleMeasure();\r\n }\r\n\r\n public onResizeStart(ev: PointerEvent, i: number): void {\r\n ev.preventDefault();\r\n ev.stopPropagation();\r\n\r\n const root = this.tableRoot?.nativeElement;\r\n if (!root) return;\r\n\r\n const headerCell = this.getHeaderCell(i);\r\n if (!headerCell) return;\r\n\r\n const cols = this.columns();\r\n const col = cols[i];\r\n if (!col || col.width || !col.resizable) return;\r\n\r\n const startX = ev.clientX;\r\n const startW = this.manualPx()[i] ?? Math.round(headerCell.getBoundingClientRect().width);\r\n\r\n const min = col.minWidth ? this.toPx(col.minWidth, root) : 40;\r\n const hardMax = col.maxWidth ? this.toPx(col.maxWidth, root) : 9999;\r\n const maxSafe = this.computeResizeMax(i, min, hardMax, root);\r\n\r\n root.classList.add('is-resizing');\r\n (ev.target as HTMLElement).setPointerCapture?.(ev.pointerId);\r\n\r\n const onMove = (e: PointerEvent) => {\r\n const dx = e.clientX - startX;\r\n const nextW = this.clamp(Math.round(startW + dx), min, maxSafe);\r\n const cur = this.manualPx();\r\n if (cur[i] === nextW) return;\r\n this.manualPx.set({ ...cur, [i]: nextW });\r\n };\r\n\r\n const cleanup = () => {\r\n root.classList.remove('is-resizing');\r\n globalThis.removeEventListener('pointermove', onMove);\r\n globalThis.removeEventListener('pointerup', cleanup);\r\n globalThis.removeEventListener('pointercancel', cleanup);\r\n };\r\n\r\n globalThis.addEventListener('pointermove', onMove);\r\n globalThis.addEventListener('pointerup', cleanup);\r\n globalThis.addEventListener('pointercancel', cleanup);\r\n }\r\n\r\n private getHeaderCell(i: number): HTMLElement | null {\r\n const root = this.tableRoot?.nativeElement;\r\n if (!root) return null;\r\n return root.querySelector<HTMLElement>(`.solaris-table__row--header [data-col-idx=\"${i}\"]`);\r\n }\r\n\r\n private pxMinWidth(c: SolarisTableColumn, root: HTMLElement): number {\r\n return c.minWidth ? this.toPx(c.minWidth, root) : 0;\r\n }\r\n\r\n private pxFixedWidth(c: SolarisTableColumn, root: HTMLElement): number | null {\r\n if (!c.width) return null;\r\n const w = c.width.trim();\r\n if (w.endsWith('px') || w.endsWith('rem') || w.endsWith('em')) return this.toPx(w, root);\r\n const n = Number.parseFloat(w);\r\n return Number.isFinite(n) ? n : null;\r\n }\r\n\r\n private reservedWidthExcept(i: number, root: HTMLElement): number {\r\n const cols = this.columns();\r\n const manualMap = this.manualPx();\r\n\r\n let reserved = 0;\r\n\r\n for (let j = 0; j < cols.length; j++) {\r\n if (j === i) continue;\r\n const c = cols[j];\r\n\r\n if (c.width) {\r\n const px = this.pxFixedWidth(c, root);\r\n if (px != null) { reserved += px; continue; }\r\n\r\n const cell = this.getHeaderCell(j);\r\n reserved += Math.round(cell?.getBoundingClientRect().width ?? 48);\r\n continue;\r\n }\r\n\r\n const manual = manualMap[j];\r\n if (manual != null) { reserved += manual; continue; }\r\n\r\n if (c.grow) { reserved += this.pxMinWidth(c, root); continue; }\r\n\r\n reserved += 48;\r\n }\r\n\r\n return reserved;\r\n }\r\n\r\n public readField(row: any, path?: string): any {\r\n if (!path) return '';\r\n const parts = path.split('.');\r\n let cur = row;\r\n\r\n for (const p of parts) {\r\n if (cur == null) return '';\r\n cur = cur[p];\r\n }\r\n\r\n return cur ?? '';\r\n }\r\n\r\n private computeResizeMax(i: number, min: number, hardMax: number, root: HTMLElement): number {\r\n const available = root.clientWidth;\r\n const reserved = this.reservedWidthExcept(i, root);\r\n\r\n const safety = 8;\r\n const fitMax = Math.max(min, Math.floor(available - reserved - safety));\r\n\r\n return Math.max(min, Math.min(hardMax, fitMax));\r\n }\r\n\r\n public registerRowKey(key: SolarisRowKey): void {\r\n const next = new Set(this.rowKeys());\r\n next.add(key);\r\n this.rowKeys.set(next);\r\n }\r\n\r\n public unregisterRowKey(key: SolarisRowKey): void {\r\n const next = new Set(this.rowKeys());\r\n next.delete(key);\r\n this.rowKeys.set(next);\r\n }\r\n\r\n public onToggleSelectAll(checked: boolean): void {\r\n const keys = Array.from(this.rowKeys());\r\n const sel = new Set(this.selectionSig());\r\n\r\n if (checked) keys.forEach(k => sel.add(k));\r\n else keys.forEach(k => sel.delete(k));\r\n\r\n const out = Array.from(sel);\r\n this.selectionSig.set(out);\r\n this.selectionChange.emit(out);\r\n }\r\n\r\n public toggleRow(key: SolarisRowKey, checked: boolean): void {\r\n const sel = new Set(this.selectionSig());\r\n if (checked) sel.add(key);\r\n else sel.delete(key);\r\n\r\n const out = Array.from(sel);\r\n this.selectionSig.set(out);\r\n this.selectionChange.emit(out);\r\n }\r\n\r\n public isSelected(key: SolarisRowKey): boolean {\r\n return this.selectionSetSig().has(key);\r\n }\r\n\r\n public getSortFor(col: SolarisTableColumn): SolarisSort | undefined {\r\n const key = col.sortKey ?? col.field;\r\n if (!key) return undefined;\r\n return this.sortState().find(s => s.key === key);\r\n }\r\n\r\n public onHeaderSortClick(ev: MouseEvent, col: SolarisTableColumn): void {\r\n ev.stopPropagation();\r\n\r\n if (!col.sortable) return;\r\n\r\n const key = col.sortKey ?? col.field;\r\n if (!key) return;\r\n\r\n const multi = ev.shiftKey;\r\n let next = [...this.sortState()];\r\n\r\n if (!multi) next = next.filter(s => s.key === key);\r\n\r\n const idx = next.findIndex(s => s.key === key);\r\n if (idx === -1) next.push({ key, direction: 'asc', order: next.length + 1 });\r\n else {\r\n const cur = next[idx];\r\n if (cur.direction === 'asc') next[idx] = { ...cur, direction: 'desc' };\r\n else next.splice(idx, 1);\r\n }\r\n\r\n next = next.map((s, k) => ({ ...s, order: k + 1 }));\r\n this.sortState.set(next);\r\n this.sortChange.emit(next);\r\n }\r\n\r\n public ariaSort(col: SolarisTableColumn): 'none' | 'ascending' | 'descending' {\r\n const s = this.getSortFor(col);\r\n if (!s) return 'none';\r\n return s.direction === 'asc' ? 'ascending' : 'descending';\r\n }\r\n\r\n public firstPage(): void { this.pageChange.emit({ pageIndex: 0, pageSize: this.pageSize }); }\r\n public prevPage(): void { this.pageChange.emit({ pageIndex: Math.max(0, this.pageIndex - 1), pageSize: this.pageSize }); }\r\n public nextPage(): void { this.pageChange.emit({ pageIndex: Math.min(this.totalPages - 1, this.pageIndex + 1), pageSize: this.pageSize }); }\r\n public lastPage(): void { this.pageChange.emit({ pageIndex: this.totalPages - 1, pageSize: this.pageSize }); }\r\n public changePageSize(size: number): void { this.pageChange.emit({ pageIndex: 0, pageSize: size }); }\r\n\r\n private buildGridTemplateColumns(): string {\r\n const cols = this.columns();\r\n const measured = this.measuredPx();\r\n const root = this.tableRoot?.nativeElement;\r\n\r\n const minPx = (c: SolarisTableColumn) => root && c.minWidth ? this.toPx(c.minWidth, root) : 0;\r\n const fixedWidthPx = (c: SolarisTableColumn): number | null => {\r\n if (!root || !c.width) return null;\r\n const w = c.width.trim();\r\n if (w.endsWith('px') || w.endsWith('rem') || w.endsWith('em')) return this.toPx(w, root);\r\n const n = Number.parseFloat(w);\r\n return Number.isFinite(n) ? n : null;\r\n };\r\n\r\n\r\n if (!measured.length || measured.length !== cols.length) {\r\n return cols.map((c) => {\r\n if (c.width) return c.width;\r\n if (c.grow) return `minmax(${minPx(c)}px, 1fr)`;\r\n if (root && c.maxWidth) {\r\n const cap = this.toPx(c.maxWidth, root);\r\n return `minmax(0px, ${cap}px)`;\r\n }\r\n return 'minmax(0px, 1fr)';\r\n }).join(' ');\r\n }\r\n\r\n const available = root?.clientWidth ?? 0;\r\n\r\n const rawPx: number[] = [];\r\n const growMinSum = cols.reduce((acc, c) => acc + (c.grow ? minPx(c) : 0), 0);\r\n\r\n let fixedSum = 0;\r\n\r\n for (let i = 0; i < cols.length; i++) {\r\n const c = cols[i];\r\n\r\n if (c.width) {\r\n const px = fixedWidthPx(c);\r\n rawPx[i] = px ?? 0;\r\n fixedSum += px ?? 0;\r\n continue;\r\n }\r\n\r\n if (c.grow) {\r\n rawPx[i] = 0;\r\n continue;\r\n }\r\n\r\n const manual = this.manualPx()[i];\r\n const px = manual ?? (measured[i] > 0 ? measured[i] : 180);\r\n rawPx[i] = px;\r\n fixedSum += px;\r\n }\r\n\r\n if (!available) {\r\n return cols.map((c, i) => {\r\n if (c.width) return c.width;\r\n if (c.grow) return `minmax(${minPx(c)}px, 1fr)`;\r\n return `${rawPx[i]}px`;\r\n }).join(' ');\r\n }\r\n\r\n const fixedBudget = Math.max(0, available - growMinSum);\r\n const scale = fixedSum > fixedBudget && fixedSum > 0 ? (fixedBudget / fixedSum) : 1;\r\n\r\n return cols.map((c, i) => {\r\n if (c.width) {\r\n return c.width;\r\n }\r\n\r\n if (c.grow) {\r\n const min = minPx(c);\r\n return `minmax(${min}px, 1fr)`;\r\n }\r\n\r\n const px = Math.max(48, Math.floor(rawPx[i] * scale));\r\n return `${px}px`;\r\n }).join(' ');\r\n }\r\n}\r\n","<ng-content select=\"solaris-table-filters\"></ng-content>\r\n\r\n<div class=\"solaris-table\" [class.solaris-table--grid]=\"variant === 'grid'\"\r\n [class.solaris-table--zebra]=\"variant === 'zebra'\">\r\n <div #tableRoot class=\"solaris-table__inner\" role=\"table\" [attr.aria-rowcount]=\"rowsCount\">\r\n <div class=\"solaris-table__header\" role=\"rowgroup\">\r\n <div class=\"solaris-table__row solaris-table__row--header\" role=\"row\" [style.gridTemplateColumns]=\"gridTemplateColumns()\">\r\n @for (col of columns(); track col.id; let i = $index) {\r\n <div class=\"solaris-table__cell solaris-table__cell--header\" role=\"columnheader\" [attr.data-col-idx]=\"i\"\r\n [attr.aria-sort]=\"ariaSort(col)\" [style.--solaris-col-max]=\"col.maxWidth || null\">\r\n\r\n <div class=\"solaris-table__header-content\">\r\n <span class=\"solaris-table__header-left\">\r\n @if (selectable && i === 0) {\r\n <span class=\"solaris-table__select-prefix\" (click)=\"$event.stopPropagation()\">\r\n <solaris-checkbox variant=\"square\" color=\"primary\" size=\"sm\" [ngModel]=\"selectAllChecked()\"\r\n (ngModelChange)=\"onToggleSelectAll($event)\" [indeterminate]=\"selectAllIndeterminate()\">\r\n </solaris-checkbox>\r\n </span>\r\n }\r\n\r\n @if (col.headerIconClass) { <i [class]=\"col.headerIconClass\"></i> }\r\n\r\n @if (col.headerDef?.template) {\r\n <ng-container [ngTemplateOutlet]=\"col.headerDef?.template\"></ng-container>\r\n } @else {\r\n @if (col.headerKey) {\r\n <span class=\"solaris-table__header-text\">{{ col.headerKey | translate }}</span>\r\n } @else {\r\n <span class=\"solaris-table__header-text\">{{ col.header }}</span>\r\n }\r\n }\r\n </span>\r\n\r\n @if (col.sortable) {\r\n <button type=\"button\" class=\"solaris-table__sort-btn\" (click)=\"onHeaderSortClick($event, col)\">\r\n <span class=\"solaris-table__sort\">\r\n <i class=\"ph ph-arrow-up\" [class.is-active]=\"getSortFor(col)?.direction === 'asc'\"></i>\r\n <i class=\"ph ph-arrow-down\" [class.is-active]=\"getSortFor(col)?.direction === 'desc'\"></i>\r\n\r\n @if (getSortFor(col)?.order && sortState().length > 1) {\r\n <span class=\"solaris-table__sort-order\">{{ getSortFor(col)!.order }}</span>\r\n }\r\n </span>\r\n </button>\r\n }\r\n </div>\r\n\r\n @if (col.resizable && !col.width) {\r\n <span class=\"solaris-table__col-resizer\" role=\"separator\" aria-orientation=\"vertical\"\r\n (pointerdown)=\"onResizeStart($event, i)\" (dblclick)=\"clearManualWidth(i)\"\r\n (click)=\"$event.stopPropagation()\">\r\n </span>\r\n }\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n\r\n <div class=\"solaris-table__body\" role=\"rowgroup\">\r\n @if (loading) {\r\n <solaris-table-skeleton [rows]=\"pageSize\" [columns]=\"columns().length\" [selectable]=\"selectable\"\r\n [gridTemplateColumns]=\"gridTemplateColumns()\">\r\n </solaris-table-skeleton>\r\n } @else {\r\n @if (rowsCount === 0) {\r\n <div class=\"solaris-table__empty\" role=\"row\">\r\n <i [class]=\"emptyIconClass\"></i>\r\n <div class=\"solaris-table__empty-text\">{{ 'ui.solaris.tables.empty' | translate }}</div>\r\n </div>\r\n } @else {\r\n <ng-content select=\"solaris-row\"></ng-content>\r\n }\r\n }\r\n </div>\r\n\r\n <div class=\"solaris-table__footer\" role=\"rowgroup\">\r\n <div class=\"solaris-table__footer-left\">\r\n @if (selectedCount() > 0) {\r\n <div class=\"solaris-table__selected\">\r\n {{ selectedCount() }} {{ 'ui.solaris.tables.selection.selected' | translate }}\r\n </div>\r\n } @else if (tableDescription != null) {\r\n <div class=\"solaris-table__description\">\r\n {{ tableDescription }}\r\n </div>\r\n }\r\n </div>\r\n\r\n <div class=\"solaris-table__footer-right\">\r\n <div class=\"solaris-table__rows-per-page\">\r\n <span>{{ 'ui.solaris.tables.pagination.rowsPerPage' | translate }}:</span>\r\n <select [ngModel]=\"pageSize\" (ngModelChange)=\"changePageSize($event)\">\r\n @for (opt of pageSizeOptions; track opt) {\r\n <option [ngValue]=\"opt\">{{ opt }}</option>\r\n }\r\n </select>\r\n </div>\r\n\r\n <div class=\"solaris-table__range\">\r\n {{ rangeStart }}–{{ rangeEnd }} {{ 'ui.solaris.common.of' | translate }} {{ length }}\r\n </div>\r\n\r\n <div class=\"solaris-table__pager\">\r\n <button type=\"button\" (click)=\"firstPage()\" [disabled]=\"pageIndex === 0\">\r\n <i class=\"ph ph-caret-line-left\"></i>\r\n </button>\r\n <button type=\"button\" (click)=\"prevPage()\" [disabled]=\"pageIndex === 0\">\r\n <i class=\"ph ph-caret-left\"></i>\r\n </button>\r\n <button type=\"button\" (click)=\"nextPage()\" [disabled]=\"pageIndex >= totalPages - 1\">\r\n <i class=\"ph ph-caret-right\"></i>\r\n </button>\r\n <button type=\"button\" (click)=\"lastPage()\" [disabled]=\"pageIndex >= totalPages - 1\">\r\n <i class=\"ph ph-caret-line-right\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n","import { ChangeDetectionStrategy, Component, DestroyRef, Host, Input, OnInit, Optional, inject } from '@angular/core';\r\nimport { NgTemplateOutlet } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\n\r\nimport { SolarisCheckbox } from '../../../../actions/checkbox/component/checkbox';\r\nimport { SolarisTranslationPipe } from '@educarehq/solaris-services';\r\nimport { SolarisRowKey } from '../../model/table/table.types';\r\nimport { SolarisTable } from '../table/table';\r\n\r\n@Component({\r\n selector: 'solaris-row',\r\n standalone: true,\r\n imports: [\r\n FormsModule,\r\n SolarisCheckbox,\r\n SolarisTranslationPipe,\r\n NgTemplateOutlet\r\n ],\r\n templateUrl: './table-row.html',\r\n styleUrls: ['./table-row.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: { class: 'solaris-row-host' },\r\n})\r\nexport class SolarisRowComponent implements OnInit {\r\n private readonly destroyRef = inject(DestroyRef);\r\n\r\n @Input() rowKey!: SolarisRowKey;\r\n @Input({ required: true }) value!: any;\r\n\r\n\r\n constructor(@Optional() @Host() public readonly table: SolarisTable) {}\r\n\r\n ngOnInit(): void {\r\n if (!this.table) {\r\n throw new Error('<solaris-row> deve ser usado dentro de <solaris-table>.');\r\n }\r\n\r\n if (this.table.selectable && (this.rowKey === null || this.rowKey === undefined)) {\r\n throw new Error('Quando selectable=true, <solaris-row> exige [rowKey].');\r\n }\r\n\r\n if (this.table.selectable) {\r\n this.table.registerRowKey(this.rowKey);\r\n this.destroyRef.onDestroy(() => this.table.unregisterRowKey(this.rowKey));\r\n }\r\n }\r\n\r\n get isSelected(): boolean {\r\n return this.table.isSelected(this.rowKey);\r\n }\r\n}\r\n","<div class=\"solaris-row\" role=\"row\" [attr.aria-selected]=\"isSelected\" [class.is-selected]=\"isSelected\"\r\n [style.gridTemplateColumns]=\"table.gridTemplateColumns()\">\r\n\r\n @for (col of table.columns(); track col.id; let i = $index) {\r\n <div class=\"solaris-row__cell\" role=\"cell\" [attr.data-col-idx]=\"i\" [class.align-end]=\"col.align === 'end'\"\r\n [class.align-center]=\"col.align === 'center'\" [style.--solaris-col-max]=\"col.maxWidth || null\">\r\n\r\n @if (table.selectable && i === 0) {\r\n <span class=\"solaris-row__select-prefix\">\r\n <solaris-checkbox variant=\"square\" color=\"primary\" size=\"sm\" [ngModel]=\"isSelected\"\r\n (ngModelChange)=\"table.toggleRow(rowKey, $event)\" [attr.aria-label]=\"'ui.solaris.tables.aria.selectRow' | translate\"/>\r\n </span>\r\n }\r\n\r\n <span class=\"solaris-row__label\">\r\n @if (col.headerKey) { {{ col.headerKey | translate }} } @else { {{ col.header }} }\r\n </span>\r\n\r\n <span class=\"solaris-row__content\">\r\n @if (col.cellDef?.template) {\r\n <ng-container [ngTemplateOutlet]=\"col.cellDef!.template\"\r\n [ngTemplateOutletContext]=\"{ $implicit: value, row: value, col: col }\"/>\r\n } @else {\r\n {{ table.readField(value, col.field) }}\r\n }\r\n </span>\r\n </div>\r\n }\r\n</div>\r\n","import { Directive } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[solaris-header]',\r\n standalone: true,\r\n})\r\nexport class SolarisHeaderDirective {}\r\n","import { Directive } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[solaris-footer]',\r\n standalone: true,\r\n})\r\nexport class SolarisFooterDirective {}\r\n","import { Directive } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[solaris-body]',\r\n standalone: true,\r\n})\r\nexport class SolarisBodyDirective {}\r\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\r\nimport { NgClass } from '@angular/common';\r\n\r\nimport { SolarisDivider } from '../../divider/component/divider';\r\n\r\n@Component({\r\n selector: 'solaris-page',\r\n standalone: true,\r\n imports: [NgClass, SolarisDivider],\r\n templateUrl: './page.html',\r\n styleUrls: ['./page.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: {\r\n class: 'solaris-page-host',\r\n },\r\n})\r\nexport class SolarisPage {\r\n @Input() stickyHeader = false;\r\n @Input() container: 'contained' | 'fluid' = 'contained';\r\n}\r\n","<div class=\"solaris-page\" [ngClass]=\"['container-' + container]\">\r\n <header class=\"solaris-page__header\" [ngClass]=\"{ 'is-sticky': stickyHeader }\">\r\n <ng-content select=\"[solaris-header]\"></ng-content>\r\n @if (stickyHeader) { <solaris-divider class=\"solaris-page__header-divider\"/> }\r\n </header>\r\n\r\n <main class=\"solaris-page__body\">\r\n <ng-content select=\"[solaris-body]\"></ng-content>\r\n </main>\r\n\r\n <footer class=\"solaris-page__footer\">\r\n <solaris-divider class=\"solaris-page__footer-divider\"/>\r\n\r\n <div class=\"solaris-page__footer-content\">\r\n <ng-content select=\"[solaris-footer]\"></ng-content>\r\n </div>\r\n </footer>\r\n</div>\r\n","import { Directive } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[solaris-page-header-description]',\r\n standalone: true,\r\n})\r\nexport class SolarisPageHeaderDescriptionDirective {}\r\n","import { Directive } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[solaris-page-header-breadcrumb]',\r\n standalone: true,\r\n})\r\nexport class SolarisPageHeaderBreadcrumbDirective {}\r\n","import { Directive } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[solaris-page-header-title]',\r\n standalone: true,\r\n})\r\nexport class SolarisPageHeaderTitleDirective {}\r\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\r\nimport { NgClass } from '@angular/common';\r\n\r\n@Component({\r\n selector: 'solaris-page-header-title',\r\n standalone: true,\r\n imports: [NgClass],\r\n templateUrl: './page-header-title.html',\r\n styleUrl: './page-header-title.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class SolarisPageHeaderTitle {\r\n @Input() title = '';\r\n @Input() overline?: string;\r\n @Input() description?: string;\r\n @Input() size: 'md' | 'lg' = 'lg';\r\n}\r\n","<div class=\"solaris-page-title\" [ngClass]=\"['size-' + size]\">\r\n @if (overline) {\r\n <div class=\"solaris-page-title__overline\">{{ overline }}</div>\r\n }\r\n\r\n <h1 class=\"solaris-page-title__title\">{{ title }}</h1>\r\n\r\n @if (description) {\r\n <p class=\"solaris-page-title__description\">{{ description }}</p>\r\n }\r\n</div>\r\n","import { Directive } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[solaris-page-header-actions]',\r\n standalone: true,\r\n})\r\nexport class SolarisPageHeaderActionsDirective {}\r\n","import { ChangeDetectionStrategy, Component, ContentChild, Input } from '@angular/core';\r\nimport { NgClass } from '@angular/common';\r\n\r\nimport { SolarisPageHeaderDescriptionDirective } from '../directives/solaris-header-description.directive';\r\nimport { SolarisPageHeaderBreadcrumbDirective } from '../directives/solaris-header-breadcrumb.directive';\r\nimport { SolarisPageHeaderActionsDirective } from '../directives/solaris-header-actions.directive';\r\nimport { SolarisPageHeaderTitleDirective } from '../directives/solaris-header-title.directive';\r\n\r\n\r\n@Component({\r\n selector: 'solaris-page-header',\r\n standalone: true,\r\n imports: [NgClass],\r\n templateUrl: './page-header.html',\r\n styleUrl: './page-header.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class SolarisPageHeader {\r\n @Input() layout: 'split' | 'stacked' = 'split';\r\n @Input() density: 'sm' | 'md' | 'lg' = 'md';\r\n\r\n @ContentChild(SolarisPageHeaderTitleDirective) titleSlot?: SolarisPageHeaderTitleDirective;\r\n @ContentChild(SolarisPageHeaderActionsDirective) actionsSlot?: SolarisPageHeaderActionsDirective;\r\n @ContentChild(SolarisPageHeaderBreadcrumbDirective) breadcrumbSlot?: SolarisPageHeaderBreadcrumbDirective;\r\n @ContentChild(SolarisPageHeaderDescriptionDirective) descriptionSlot?: SolarisPageHeaderDescriptionDirective;\r\n}\r\n","<header class=\"solaris-page-header\" [ngClass]=\"['layout-' + layout, 'density-' + density]\">\r\n <div class=\"solaris-page-header__left\">\r\n <div class=\"solaris-page-header__breadcrumb\">\r\n <ng-content select=\"[solaris-page-header-breadcrumb]\" />\r\n </div>\r\n\r\n <div class=\"solaris-page-header__titles\">\r\n <div class=\"solaris-page-header__title-row\">\r\n <h1 class=\"solaris-page-header__title\">\r\n <span class=\"solaris-page-header__title-slot\">\r\n <ng-content select=\"[solaris-page-header-title]\" />\r\n </span>\r\n\r\n <span class=\"solaris-page-header__title-meta\">\r\n <ng-content select=\"[solaris-page-header-title-meta]\" />\r\n </span>\r\n </h1>\r\n\r\n <div class=\"solaris-page-header__title-meta\">\r\n <ng-content select=\"[solaris-page-header-title-meta]\" />\r\n </div>\r\n </div>\r\n\r\n <p class=\"solaris-page-header__description\">\r\n <ng-content select=\"[solaris-page-header-description]\" />\r\n </p>\r\n </div>\r\n </div>\r\n\r\n <div class=\"solaris-page-header__actions\">\r\n <ng-content select=\"[solaris-page-header-actions]\" />\r\n </div>\r\n</header>\r\n","import { Directive, HostBinding, Input } from '@angular/core';\r\n\r\nimport { SolarisRadiusInput } from '../models/button.type';\r\n\r\nfunction resolveRadius(v: SolarisRadiusInput): string {\r\n const s = String(v).trim();\r\n switch (s) {\r\n case 'none':\r\n return '0';\r\n case 'sm':\r\n return 'var(--solaris-radius-sm)';\r\n case 'md':\r\n return 'var(--solaris-radius-md, var(--solaris-radius-sm))';\r\n case 'lg':\r\n return 'var(--solaris-radius-lg, var(--solaris-radius-md, var(--solaris-radius-sm)))';\r\n case 'full':\r\n return 'var(--solaris-radius-full)';\r\n default:\r\n return s;\r\n }\r\n}\r\n\r\n@Directive({\r\n selector: '[solaris-button-group]',\r\n standalone: true,\r\n})\r\nexport class ButtonGroupDirective {\r\n private _radius: SolarisRadiusInput | null = null;\r\n\r\n @Input() set radius(v: SolarisRadiusInput | null | undefined) {\r\n this._radius = v == null || String(v).trim() === '' ? null : (v);\r\n }\r\n\r\n @HostBinding('attr.solaris-button-group') readonly attr = '';\r\n @HostBinding('style.--solaris-button-group-radius') get groupRadius() {\r\n return this._radius ? resolveRadius(this._radius) : null;\r\n }\r\n}\r\n","import { InjectionToken, Signal } from '@angular/core';\r\n\r\nimport { RadioCompareWith } from '../model/radio.type';\r\nimport { SolarisRadio } from '../component/radio';\r\n\r\nexport interface SolarisRadioGroupApi {\r\n readonly name: Signal<string>;\r\n readonly disabled: Signal<boolean>;\r\n readonly compareWith: Signal<RadioCompareWith>;\r\n\r\n notifyTouched(): void;\r\n select(radio: SolarisRadio): void;\r\n isSelected(value: unknown): boolean;\r\n tabIndexFor(radio: SolarisRadio): number;\r\n handleKeydown(event: KeyboardEvent, current: SolarisRadio): void;\r\n}\r\n\r\nexport const SOLARIS_RADIO_GROUP = new InjectionToken<SolarisRadioGroupApi>('SOLARIS_RADIO_GROUP');\r\n","import { ChangeDetectionStrategy, Component, ElementRef, ViewChild, computed,\r\n effect, inject, input, output, signal, forwardRef } from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\n\r\nimport { SolarisSizePreset, SolarisColorPreset } from '../../../common/model/common-configurations.type';\r\nimport { RadioAppearance, RadioColorInput, RadioVariant } from '../model/radio.type';\r\nimport { SOLARIS_RADIO_GROUP } from '../token/radio-group.token';\r\nimport { uniqueId } from '../../../common/helper/unique-id';\r\n\r\nconst PRESET_COLORS = new Set<SolarisColorPreset>([\r\n 'primary',\r\n 'success',\r\n 'warning',\r\n 'error',\r\n 'info'\r\n]);\r\n\r\n@Component({\r\n selector: 'solaris-radio',\r\n standalone: true,\r\n templateUrl: './radio.html',\r\n styleUrls: ['./radio.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => SolarisRadio),\r\n multi: true,\r\n },\r\n ],\r\n host: {\r\n class: 'solaris-radio-host',\r\n '[attr.data-size]': 'size()',\r\n '[attr.data-color]': 'colorKey()',\r\n '[attr.data-variant]': 'variant()',\r\n '[attr.data-appearance]': 'appearance()',\r\n '[attr.data-disabled]': 'disabled() ? \"true\" : null',\r\n '[attr.data-checked]': 'checked() ? \"true\" : null',\r\n '[style.--solaris-radio-custom]': 'customAccent()',\r\n },\r\n})\r\nexport class SolarisRadio implements ControlValueAccessor {\r\n readonly ariaLabel = input<string | null>(null, { alias: 'aria-label' });\r\n readonly inputId = input<string | null>(null, { alias: 'id' });\r\n readonly inputName = input<string | null>(null, { alias: 'name' });\r\n readonly size = input<SolarisSizePreset>('md');\r\n readonly variant = input<RadioVariant>('dot');\r\n readonly appearance = input<RadioAppearance>('solid');\r\n readonly color = input<RadioColorInput>('primary');\r\n readonly value = input<unknown>(true);\r\n readonly checkedInput = input<boolean>(false, { alias: 'checked' });\r\n readonly disabledInput = input<boolean>(false, { alias: 'disabled' });\r\n\r\n readonly checkedChange = output<boolean>();\r\n\r\n @ViewChild('native', { static: true })\r\n private readonly native?: ElementRef<HTMLInputElement>;\r\n\r\n private readonly group = inject(SOLARIS_RADIO_GROUP, { optional: true });\r\n private readonly autoId = uniqueId('solaris-radio');\r\n private readonly autoName = uniqueId('solaris-radio-name');\r\n\r\n private readonly localChecked = signal(false);\r\n private readonly cvaDisabled = signal(false);\r\n\r\n readonly id = computed(() => this.inputId() ?? this.autoId);\r\n readonly name = computed(() => this.group?.name() ?? this.inputName() ?? this.autoName);\r\n\r\n readonly disabled = computed(() => {\r\n return !!this.group?.disabled() || this.disabledInput() || this.cvaDisabled();\r\n });\r\n\r\n readonly checked = computed(() => {\r\n if (this.group) return this.group.isSelected(this.value());\r\n return this.localChecked();\r\n });\r\n\r\n readonly tabIndex = computed(() => {\r\n if (this.group) return this.group.tabIndexFor(this);\r\n return this.disabled() ? -1 : 0;\r\n });\r\n\r\n readonly customAccent = computed(() => {\r\n if (this.colorKey() !== 'custom') return null;\r\n const raw = String(this.color() ?? '').trim();\r\n return !raw || raw === 'custom' ? null : raw;\r\n });\r\n\r\n readonly colorKey = computed(() => {\r\n const raw = String(this.color() ?? '').trim();\r\n if (!raw || raw === 'custom') return 'custom';\r\n return PRESET_COLORS.has(raw as SolarisColorPreset) ? (raw as SolarisColorPreset) : 'custom';\r\n });\r\n\r\n private onChange: (value: boolean) => void = () => {};\r\n private onTouched: () => void = () => {};\r\n\r\n constructor() {\r\n effect(() => {\r\n if (this.group) return;\r\n this.localChecked.set(this.checkedInput());\r\n });\r\n }\r\n\r\n public onNativeChange() {\r\n if (this.disabled()) return;\r\n\r\n if (this.group) {\r\n const wasChecked = this.checked();\r\n this.group.select(this);\r\n if (!wasChecked) this.checkedChange.emit(true);\r\n return;\r\n }\r\n\r\n if (this.localChecked()) {\r\n this.onTouched();\r\n return;\r\n }\r\n\r\n this.localChecked.set(true);\r\n this.onChange(true);\r\n this.checkedChange.emit(true);\r\n this.onTouched();\r\n }\r\n\r\n public onNativeKeydown(event: KeyboardEvent) {\r\n if (this.disabled()) return;\r\n\r\n if (this.group) {\r\n this.group.handleKeydown(event, this);\r\n return;\r\n }\r\n\r\n if (event.key === ' ' || event.key === 'Enter') {\r\n event.preventDefault();\r\n this.onNativeChange();\r\n }\r\n }\r\n\r\n public onBlur() {\r\n if (this.group) {\r\n this.group.notifyTouched();\r\n return;\r\n }\r\n this.onTouched();\r\n }\r\n\r\n public focus() {\r\n this.native?.nativeElement.focus();\r\n }\r\n\r\n writeValue(value: boolean | null): void {\r\n if (this.group) return;\r\n this.localChecked.set(!!value);\r\n }\r\n\r\n registerOnTouched(fn: () => void): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n setDisabledState(isDisabled: boolean): void {\r\n this.cvaDisabled.set(isDisabled);\r\n }\r\n\r\n registerOnChange(fn: (value: boolean) => void): void {\r\n this.onChange = fn;\r\n }\r\n}\r\n","<label class=\"solaris-radio\">\r\n <input #native class=\"solaris-radio__native\" type=\"radio\" [attr.id]=\"id()\" [attr.name]=\"name()\" [checked]=\"checked()\"\r\n [disabled]=\"disabled()\" [attr.aria-label]=\"ariaLabel() ?? null\" [attr.tabindex]=\"tabIndex()\"\r\n (change)=\"onNativeChange()\" (keydown)=\"onNativeKeydown($event)\" (blur)=\"onBlur()\"/>\r\n\r\n <span class=\"solaris-radio__control\" aria-hidden=\"true\">\r\n <span class=\"solaris-radio__inner\" aria-hidden=\"true\"></span>\r\n </span>\r\n\r\n <span class=\"solaris-radio__content\">\r\n <ng-content/>\r\n </span>\r\n</label>\r\n","import { AfterContentInit, ChangeDetectionStrategy, Component, ContentChildren, DestroyRef,\r\n QueryList, computed, forwardRef, inject, input, output, signal } from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\n\r\nimport { SOLARIS_RADIO_GROUP, SolarisRadioGroupApi } from '../../token/radio-group.token';\r\nimport { SolarisSizePreset } from '../../../../common/model/common-configurations.type';\r\nimport { RadioCompareWith, RadioGroupOrientation } from '../../model/radio.type';\r\nimport { uniqueId } from '../../../../common/helper/unique-id';\r\nimport { SolarisRadio } from '../../component/radio';\r\n\r\n@Component({\r\n selector: 'solaris-radio-group',\r\n standalone: true,\r\n templateUrl: './radio-group.html',\r\n styleUrls: ['./radio-group.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => SolarisRadioGroup),\r\n multi: true,\r\n },\r\n {\r\n provide: SOLARIS_RADIO_GROUP,\r\n useExisting: forwardRef(() => SolarisRadioGroup),\r\n },\r\n ],\r\n host: {\r\n class: 'solaris-radio-group-host',\r\n role: 'radiogroup',\r\n '[attr.data-orientation]': 'orientation()',\r\n '[attr.aria-disabled]': 'disabled() ? \"true\" : null',\r\n '[attr.aria-label]': 'ariaLabel() ?? null',\r\n '[attr.aria-orientation]': 'orientation()',\r\n '[style.--solaris-radio-group-gap]': 'resolvedGap()',\r\n },\r\n})\r\nexport class SolarisRadioGroup implements ControlValueAccessor, AfterContentInit, SolarisRadioGroupApi {\r\n readonly gap = input<SolarisSizePreset | string>('md');\r\n readonly compareWith = input<RadioCompareWith>(Object.is);\r\n readonly nameInput = input<string | null>(null, { alias: 'name' });\r\n readonly disabledInput = input<boolean>(false, { alias: 'disabled' });\r\n readonly orientation = input<RadioGroupOrientation>('vertical');\r\n readonly ariaLabel = input<string | null>(null, { alias: 'aria-label' });\r\n\r\n readonly valueChange = output<unknown>();\r\n\r\n @ContentChildren(forwardRef(() => SolarisRadio), { descendants: true })\r\n private readonly radiosQuery?: QueryList<SolarisRadio>;\r\n\r\n private readonly destroyRef = inject(DestroyRef);\r\n private readonly autoName = uniqueId('solaris-radio-group');\r\n private readonly cvaDisabled = signal(false);\r\n private readonly internalValue = signal<unknown>(null);\r\n private readonly radiosVersion = signal(0);\r\n\r\n readonly name = computed(() => this.nameInput() ?? this.autoName);\r\n readonly disabled = computed(() => this.disabledInput() || this.cvaDisabled());\r\n\r\n readonly resolvedGap = computed(() => {\r\n const value = String(this.gap() ?? 'md').trim();\r\n switch (value) {\r\n case 'sm':\r\n return 'var(--solaris-space-2)';\r\n case 'md':\r\n return 'var(--solaris-space-3)';\r\n case 'lg':\r\n return 'var(--solaris-space-4)';\r\n default:\r\n return value;\r\n }\r\n });\r\n\r\n private onChange: (value: unknown) => void = () => {};\r\n private onTouched: () => void = () => {};\r\n\r\n ngAfterContentInit(): void {\r\n this.bumpRadiosVersion();\r\n\r\n this.radiosQuery?.changes\r\n .pipe(takeUntilDestroyed(this.destroyRef))\r\n .subscribe(() => this.bumpRadiosVersion());\r\n }\r\n\r\n public isSelected(value: unknown): boolean {\r\n return this.compareWith()(this.internalValue(), value);\r\n }\r\n\r\n public select(radio: SolarisRadio): void {\r\n if (this.disabled() || radio.disabled()) return;\r\n\r\n const nextValue = radio.value();\r\n if (!this.isSelected(nextValue)) {\r\n this.internalValue.set(nextValue);\r\n this.onChange(nextValue);\r\n this.valueChange.emit(nextValue);\r\n }\r\n\r\n this.onTouched();\r\n this.bumpRadiosVersion();\r\n }\r\n\r\n public tabIndexFor(radio: SolarisRadio): number {\r\n this.radiosVersion();\r\n\r\n if (this.disabled() || radio.disabled()) return -1;\r\n\r\n const enabled = this.enabledRadios();\r\n if (!enabled.length) return -1;\r\n\r\n const selected = enabled.find(item => this.isSelected(item.value()));\r\n const target = selected ?? enabled[0];\r\n\r\n return target === radio ? 0 : -1;\r\n }\r\n\r\n public handleKeydown(event: KeyboardEvent, current: SolarisRadio): void {\r\n if (this.disabled()) return;\r\n\r\n switch (event.key) {\r\n case 'ArrowRight':\r\n case 'ArrowDown':\r\n event.preventDefault();\r\n this.move(current, +1);\r\n break;\r\n case 'ArrowLeft':\r\n case 'ArrowUp':\r\n event.preventDefault();\r\n this.move(current, -1);\r\n break;\r\n case ' ':\r\n case 'Enter':\r\n event.preventDefault();\r\n this.select(current);\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n\r\n public notifyTouched(): void {\r\n this.onTouched();\r\n }\r\n\r\n writeValue(value: unknown): void {\r\n this.internalValue.set(value);\r\n this.bumpRadiosVersion();\r\n }\r\n\r\n registerOnTouched(fn: () => void): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n setDisabledState(isDisabled: boolean): void {\r\n this.cvaDisabled.set(isDisabled);\r\n this.bumpRadiosVersion();\r\n }\r\n\r\n registerOnChange(fn: (value: unknown) => void): void {\r\n this.onChange = fn;\r\n }\r\n\r\n private move(current: SolarisRadio, direction: 1 | -1): void {\r\n const enabled = this.enabledRadios();\r\n if (!enabled.length) return;\r\n\r\n const currentIndex = enabled.indexOf(current);\r\n const startIndex = Math.max(currentIndex, 0);\r\n const nextIndex = (startIndex + direction + enabled.length) % enabled.length;\r\n const next = enabled[nextIndex];\r\n\r\n this.select(next);\r\n next.focus();\r\n }\r\n\r\n private enabledRadios(): SolarisRadio[] {\r\n this.radiosVersion();\r\n return (this.radiosQuery?.toArray() ?? []).filter(radio => !radio.disabled());\r\n }\r\n\r\n private bumpRadiosVersion(): void {\r\n this.radiosVersion.update(value => value + 1);\r\n }\r\n}\r\n","<ng-content/>\r\n","import { InjectionToken, Signal } from '@angular/core';\r\n\r\nimport { CardGroupSelectionMode } from '../model/card-group.type';\r\n\r\nexport interface SolarisSelectionCardHandle {\r\n value(): unknown;\r\n disabled(): boolean;\r\n focus(): void;\r\n}\r\n\r\nexport interface SolarisCardGroupApi {\r\n readonly disabled: Signal<boolean>;\r\n readonly selectionMode: Signal<CardGroupSelectionMode>;\r\n\r\n isSelected(value: unknown): boolean;\r\n activate(card: SolarisSelectionCardHandle): void;\r\n tabIndexFor(card: SolarisSelectionCardHandle): number;\r\n handleKeydown(event: KeyboardEvent, current: SolarisSelectionCardHandle): void;\r\n notifyTouched(): void;\r\n}\r\n\r\nexport const SOLARIS_CARD_GROUP = new InjectionToken<SolarisCardGroupApi>('SOLARIS_CARD_GROUP');\r\n","import { ChangeDetectionStrategy, Component, booleanAttribute, computed, input } from '@angular/core';\r\n\r\nimport { CardOrientation, CardRadiusInput, CardSize } from '../model/cards.type';\r\n\r\n@Component({\r\n selector: 'solaris-card',\r\n standalone: true,\r\n templateUrl: './card.html',\r\n styleUrls: ['./card.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: {\r\n class: 'solaris-card-host',\r\n '[attr.data-size]': 'size()',\r\n '[attr.data-orientation]': 'orientation()',\r\n '[attr.data-interactive]': 'interactive() ? \"true\" : null',\r\n '[attr.data-disabled]': 'disabled() ? \"true\" : null',\r\n '[attr.aria-disabled]': 'disabled() ? \"true\" : null',\r\n '[style.--solaris-card-radius]': 'resolvedRadius()',\r\n },\r\n})\r\nexport class SolarisCard {\r\n readonly size = input<CardSize>('md');\r\n readonly orientation = input<CardOrientation>('vertical');\r\n readonly radius = input<CardRadiusInput | null>(null);\r\n readonly disabled = input(false, { transform: booleanAttribute });\r\n readonly interactive = input(false, { transform: booleanAttribute });\r\n\r\n readonly resolvedRadius = computed(() => resolveRadius(this.radius()));\r\n}\r\n\r\nfunction resolveRadius(v: CardRadiusInput | null | undefined): string | null {\r\n const value = v == null || String(v).trim() === '' ? null : String(v).trim();\r\n if (!value) return null;\r\n\r\n switch (value) {\r\n case 'none':\r\n return '0';\r\n case 'sm':\r\n return 'var(--solaris-radius-sm)';\r\n case 'md':\r\n return 'var(--solaris-radius-md, var(--solaris-radius-sm))';\r\n case 'lg':\r\n return 'var(--solaris-radius-lg, var(--solaris-radius-md, var(--solaris-radius-sm)))';\r\n case 'full':\r\n return 'var(--solaris-radius-full)';\r\n default:\r\n return value;\r\n }\r\n}\r\n","<article class=\"solaris-card\">\r\n <div class=\"solaris-card__media\">\r\n <ng-content select=\"[solaris-card-media]\"></ng-content>\r\n </div>\r\n\r\n <div class=\"solaris-card__content\">\r\n <div class=\"solaris-card__header\">\r\n <div class=\"solaris-card__header-main\">\r\n <div class=\"solaris-card__eyebrow\">\r\n <ng-content select=\"[solaris-card-eyebrow]\"></ng-content>\r\n </div>\r\n\r\n <div class=\"solaris-card__title\">\r\n <ng-content select=\"[solaris-card-title]\"></ng-content>\r\n </div>\r\n </div>\r\n\r\n <div class=\"solaris-card__badge\">\r\n <ng-content select=\"[solaris-card-badge]\"></ng-content>\r\n </div>\r\n </div>\r\n\r\n <div class=\"solaris-card__description\">\r\n <ng-content select=\"[solaris-card-description]\"></ng-content>\r\n </div>\r\n\r\n <div class=\"solaris-card__meta\">\r\n <ng-content select=\"[solaris-card-meta]\"></ng-content>\r\n </div>\r\n\r\n <div class=\"solaris-card__footer\">\r\n <div class=\"solaris-card__footer-main\">\r\n <ng-content select=\"[solaris-card-footer]\"></ng-content>\r\n </div>\r\n\r\n <div class=\"solaris-card__actions\">\r\n <ng-content select=\"[solaris-card-actions]\"></ng-content>\r\n </div>\r\n </div>\r\n </div>\r\n</article>\r\n","import { booleanAttribute, ChangeDetectionStrategy, Component, computed, effect, ElementRef,\r\n inject, input, output, signal } from '@angular/core';\r\n\r\n\r\nimport { ResolvedSelectionCardIndicator, SelectionCardAppearance, SelectionCardColorInput,\r\n SelectionCardIndicator, SelectionCardOrientation, SelectionCardRadiusInput, SelectionCardSize } from '../model/selection-card.type';\r\nimport { SOLARIS_CARD_GROUP, SolarisSelectionCardHandle } from '../../cards-group/token/card-group.token';\r\nimport { SolarisColorPreset } from '../../../../common/model/common-configurations.type';\r\nimport { CardGroupSelectionMode } from '../../cards-group/model/card-group.type';\r\nimport { SolarisCard } from '../../card/component/card';\r\n\r\nconst PRESET_COLORS = new Set<SolarisColorPreset>([\r\n 'primary',\r\n 'success',\r\n 'warning',\r\n 'error',\r\n 'info',\r\n]);\r\n\r\n@Component({\r\n selector: 'solaris-selection-card',\r\n standalone: true,\r\n imports: [SolarisCard],\r\n templateUrl: './selection-card.html',\r\n styleUrls: ['./selection-card.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: {\r\n class: 'solaris-selection-card-host',\r\n '[attr.data-size]': 'size()',\r\n '[attr.data-orientation]': 'orientation()',\r\n '[attr.data-selected]': 'selected() ? \"true\" : null',\r\n '[attr.data-disabled]': 'disabled() ? \"true\" : null',\r\n '[attr.data-invalid]': 'invalid() ? \"true\" : null',\r\n '[attr.data-appearance]': 'appearance()',\r\n '[attr.data-color]': 'colorKey()',\r\n '[attr.data-indicator]': 'resolvedIndicator()',\r\n '[attr.role]': 'role()',\r\n '[attr.aria-checked]': 'ariaChecked()',\r\n '[attr.aria-disabled]': 'disabled() ? \"true\" : null',\r\n '[attr.tabindex]': 'tabIndex()',\r\n '[style.--solaris-selection-card-custom]': 'customAccent()',\r\n '(click)': 'onHostClick($event)',\r\n '(keydown)': 'onHostKeydown($event)',\r\n '(blur)': 'onHostBlur()',\r\n },\r\n})\r\nexport class SolarisSelectionCard implements SolarisSelectionCardHandle {\r\n readonly value = input<unknown>(null);\r\n readonly size = input<SelectionCardSize>('md');\r\n readonly color = input<SelectionCardColorInput>('primary');\r\n readonly orientation = input<SelectionCardOrientation>('vertical');\r\n readonly radius = input<SelectionCardRadiusInput | null>(null);\r\n readonly appearance = input<SelectionCardAppearance>('outline');\r\n readonly selectionIndicator = input<SelectionCardIndicator>('auto');\r\n readonly invalid = input(false, { transform: booleanAttribute });\r\n readonly disabledInput = input(false, { alias: 'disabled', transform: booleanAttribute });\r\n readonly selectedInput = input(false, { alias: 'selected', transform: booleanAttribute });\r\n\r\n readonly selectedChange = output<boolean>();\r\n readonly cardClick = output<MouseEvent>();\r\n\r\n private readonly elementRef = inject(ElementRef<HTMLElement>);\r\n private readonly group = inject(SOLARIS_CARD_GROUP, { optional: true });\r\n\r\n private readonly localSelected = signal(false);\r\n\r\n readonly disabled = computed(() => {\r\n return !!this.group?.disabled() || this.disabledInput();\r\n });\r\n\r\n readonly selected = computed(() => {\r\n if (this.group) return this.group.isSelected(this.value());\r\n return this.localSelected();\r\n });\r\n\r\n readonly resolvedMode = computed<CardGroupSelectionMode>(() => {\r\n if (this.group) return this.group.selectionMode();\r\n return inferStandaloneMode(this.selectionIndicator());\r\n });\r\n\r\n public onHostBlur() {\r\n this.group?.notifyTouched();\r\n }\r\n\r\n readonly resolvedIndicator = computed<ResolvedSelectionCardIndicator>(() => {\r\n const requested = this.selectionIndicator();\r\n if (requested !== 'auto') return requested;\r\n\r\n switch (this.resolvedMode()) {\r\n case 'single':\r\n return 'radio';\r\n case 'multiple':\r\n return 'checkbox';\r\n case 'none':\r\n default:\r\n return 'none';\r\n }\r\n });\r\n\r\n readonly tabIndex = computed(() => {\r\n if (this.disabled()) return -1;\r\n if (this.group) return this.group.tabIndexFor(this);\r\n return 0;\r\n });\r\n\r\n readonly role = computed(() => {\r\n switch (this.resolvedMode()) {\r\n case 'single':\r\n return 'radio';\r\n case 'multiple':\r\n return 'checkbox';\r\n case 'none':\r\n default:\r\n return 'button';\r\n }\r\n });\r\n\r\n readonly ariaChecked = computed(() => {\r\n if (this.resolvedMode() === 'none') return null;\r\n return this.selected() ? 'true' : 'false';\r\n });\r\n\r\n readonly customAccent = computed(() => {\r\n if (this.colorKey() !== 'custom') return null;\r\n const raw = String(this.color() ?? '').trim();\r\n return !raw || raw === 'custom' ? null : raw;\r\n });\r\n\r\n readonly colorKey = computed(() => {\r\n const raw = String(this.color() ?? '').trim();\r\n if (!raw || raw === 'custom') return 'custom';\r\n return PRESET_COLORS.has(raw as SolarisColorPreset) ? (raw as SolarisColorPreset) : 'custom';\r\n });\r\n\r\n constructor() {\r\n effect(() => {\r\n if (this.group) return;\r\n this.localSelected.set(this.selectedInput());\r\n });\r\n }\r\n\r\n public focus() {\r\n this.elementRef.nativeElement.focus();\r\n }\r\n\r\n public onHostClick(event: MouseEvent) {\r\n if (this.isActionZone(event.target)) return;\r\n\r\n this.cardClick.emit(event);\r\n\r\n if (this.disabled()) return;\r\n\r\n const previous = this.selected();\r\n\r\n if (this.group) {\r\n this.group.activate(this);\r\n if (previous !== this.selected()) this.selectedChange.emit(this.selected());\r\n return;\r\n }\r\n\r\n const next = this.activateStandalone();\r\n if (next !== previous) this.selectedChange.emit(next);\r\n }\r\n\r\n public onHostKeydown(event: KeyboardEvent) {\r\n if (this.disabled()) return;\r\n\r\n if (this.group) {\r\n this.group.handleKeydown(event, this);\r\n return;\r\n }\r\n\r\n if (event.key === ' ' || event.key === 'Enter') {\r\n event.preventDefault();\r\n const previous = this.selected();\r\n const next = this.activateStandalone();\r\n if (next !== previous) this.selectedChange.emit(next);\r\n }\r\n }\r\n\r\n private activateStandalone(): boolean {\r\n switch (this.resolvedMode()) {\r\n case 'single':\r\n if (!this.localSelected()) this.localSelected.set(true);\r\n return this.localSelected();\r\n\r\n case 'multiple':\r\n this.localSelected.update(value => !value);\r\n return this.localSelected();\r\n\r\n case 'none':\r\n default:\r\n return this.localSelected();\r\n }\r\n }\r\n\r\n private isActionZone(target: EventTarget | null): boolean {\r\n return target instanceof HTMLElement && !!target.closest('[data-card-actions=\"true\"]');\r\n }\r\n}\r\n\r\nfunction inferStandaloneMode(indicator: SelectionCardIndicator): CardGroupSelectionMode {\r\n switch (indicator) {\r\n case 'radio':\r\n return 'single';\r\n case 'checkbox':\r\n case 'icon':\r\n case 'auto':\r\n default:\r\n return 'multiple';\r\n }\r\n}\r\n","<div class=\"solaris-selection-card\">\r\n @if (resolvedIndicator() !== 'none') {\r\n <span class=\"solaris-selection-card__indicator\" aria-hidden=\"true\">\r\n <span class=\"solaris-selection-card__indicator-control\">\r\n @switch (resolvedIndicator()) {\r\n @case ('radio') {\r\n <span class=\"solaris-selection-card__indicator-dot\"></span>\r\n }\r\n @case ('checkbox') {\r\n <i class=\"ph ph-check solaris-selection-card__indicator-check\"></i>\r\n }\r\n @case ('icon') {\r\n <span class=\"solaris-selection-card__indicator-icon-dot\"></span>\r\n }\r\n }\r\n </span>\r\n </span>\r\n }\r\n\r\n <solaris-card\r\n class=\"solaris-selection-card__card\"\r\n [orientation]=\"orientation()\"\r\n [size]=\"size()\"\r\n [radius]=\"radius()\"\r\n [interactive]=\"!disabled()\"\r\n [disabled]=\"disabled()\">\r\n\r\n <div ngProjectAs=\"[solaris-card-media]\">\r\n <ng-content select=\"[solaris-card-media]\"></ng-content>\r\n </div>\r\n\r\n <div ngProjectAs=\"[solaris-card-eyebrow]\">\r\n <ng-content select=\"[solaris-card-eyebrow]\"></ng-content>\r\n </div>\r\n\r\n <div ngProjectAs=\"[solaris-card-title]\">\r\n <ng-content select=\"[solaris-card-title]\"></ng-content>\r\n </div>\r\n\r\n <div ngProjectAs=\"[solaris-card-description]\">\r\n <ng-content select=\"[solaris-card-description]\"></ng-content>\r\n </div>\r\n\r\n <div ngProjectAs=\"[solaris-card-meta]\">\r\n <ng-content select=\"[solaris-card-meta]\"></ng-content>\r\n </div>\r\n\r\n <div ngProjectAs=\"[solaris-card-badge]\">\r\n <ng-content select=\"[solaris-card-badge]\"></ng-content>\r\n </div>\r\n\r\n <div ngProjectAs=\"[solaris-card-footer]\">\r\n <ng-content select=\"[solaris-card-footer]\"></ng-content>\r\n </div>\r\n\r\n <div ngProjectAs=\"[solaris-card-actions]\">\r\n <ng-content select=\"[solaris-card-actions]\"></ng-content>\r\n </div>\r\n\r\n </solaris-card>\r\n</div>\r\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\r\n\r\nimport { SolarisTranslationParams, SolarisTranslationPipe } from '@educarehq/solaris-services';\r\n\r\n@Component({\r\n selector: 'solaris-field-error',\r\n standalone: true,\r\n imports: [SolarisTranslationPipe],\r\n templateUrl: './field-error.html',\r\n styleUrls: ['./field-error.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class FieldErrorComponent {\r\n @Input() public text?: string;\r\n @Input() public textKey?: string;\r\n @Input() public textParams?: SolarisTranslationParams;\r\n}\r\n","<div class=\"solaris-field-error\" role=\"alert\" aria-live=\"polite\">\r\n <span class=\"solaris-field-error__text\">\r\n @if (textKey) { {{ textKey | translate:textParams }} }\r\n @else { {{ text }} }\r\n </span>\r\n</div>\r\n","import { AfterContentInit, ChangeDetectionStrategy, Component, ContentChildren, DestroyRef, QueryList, booleanAttribute,\r\n computed, effect, forwardRef, inject, input, output, signal } from '@angular/core';\r\nimport { AbstractControl, ControlValueAccessor, NG_VALIDATORS,\r\n NG_VALUE_ACCESSOR, ValidationErrors, Validator } from '@angular/forms';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\n\r\nimport { CardGroupCompareWith, CardGroupLayout, CardGroupSelectionMode, CardGroupValue, SizeInput } from '../model/card-group.type';\r\nimport { SOLARIS_CARD_GROUP, SolarisCardGroupApi, SolarisSelectionCardHandle } from '../token/card-group.token';\r\nimport { FieldErrorComponent } from '../../../../forms/form-field/messages/error/field-error';\r\nimport { SolarisShowErrors } from '../../../../common/model/common-configurations.type';\r\nimport { SolarisSelectionCard } from '../../selection-card/component/selection-card';\r\nimport { CardGroupValidationError } from '../model/card-group-error.type';\r\nimport { SolarisTranslationParams } from '@educarehq/solaris-services';\r\n\r\n@Component({\r\n selector: 'solaris-card-group',\r\n standalone: true,\r\n imports: [\r\n FieldErrorComponent\r\n ],\r\n templateUrl: './card-group.html',\r\n styleUrls: ['./card-group.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => SolarisCardGroup),\r\n multi: true,\r\n },\r\n {\r\n provide: NG_VALIDATORS,\r\n useExisting: forwardRef(() => SolarisCardGroup),\r\n multi: true,\r\n },\r\n {\r\n provide: SOLARIS_CARD_GROUP,\r\n useExisting: forwardRef(() => SolarisCardGroup),\r\n },\r\n ],\r\n host: {\r\n class: 'solaris-card-group-host',\r\n '[attr.data-layout]': 'layout()',\r\n '[attr.data-orientation]': 'orientation()',\r\n '[attr.data-selection-mode]': 'selectionMode()',\r\n '[attr.data-invalid]': 'invalidComputed() ? \"true\" : null',\r\n '[attr.data-readonly]': 'readonly() ? \"true\" : null',\r\n '[attr.role]': 'groupRole()',\r\n '[attr.aria-disabled]': 'disabled() ? \"true\" : null',\r\n '[attr.aria-invalid]': 'invalidComputed() ? \"true\" : null',\r\n '[style.--solaris-card-group-gap]': 'resolvedGap()',\r\n },\r\n})\r\nexport class SolarisCardGroup<T = unknown>\r\n implements ControlValueAccessor, Validator, AfterContentInit, SolarisCardGroupApi {\r\n\r\n readonly readonly = input(false, { transform: booleanAttribute });\r\n readonly required = input(false, { transform: booleanAttribute });\r\n readonly submitted = input(false, { transform: booleanAttribute });\r\n readonly selectOnFocus = input(false, { transform: booleanAttribute });\r\n readonly disabledInput = input(false, { transform: booleanAttribute });\r\n\r\n readonly gap = input<SizeInput>('md');\r\n readonly invalid = input<boolean | null>(null);\r\n readonly minSelected = input<number | null>(null);\r\n readonly maxSelected = input<number | null>(null);\r\n readonly layout = input<CardGroupLayout>('stack');\r\n readonly compareWith = input<CardGroupCompareWith<T>>(Object.is);\r\n readonly showErrors = input<SolarisShowErrors>('dirtyOrTouched');\r\n readonly selectionMode = input<CardGroupSelectionMode>('single');\r\n readonly orientation = input<'vertical' | 'horizontal' | 'compact'>('vertical');\r\n\r\n readonly requiredErrorKey = input('solaris.cardGroup.errors.required');\r\n readonly minSelectedErrorKey = input('solaris.cardGroup.errors.minSelected');\r\n readonly maxSelectedErrorKey = input('solaris.cardGroup.errors.maxSelected');\r\n\r\n readonly valueChange = output<CardGroupValue<T>>();\r\n readonly selectionRejected = output<{ reason: 'readonly' | 'maxSelected'; value: unknown }>();\r\n\r\n @ContentChildren(forwardRef(() => SolarisSelectionCard), { descendants: true })\r\n private readonly cardsQuery?: QueryList<SolarisSelectionCard>;\r\n\r\n private readonly destroyRef = inject(DestroyRef);\r\n\r\n private readonly controlTick = signal(0);\r\n private readonly dirtyState = signal(false);\r\n private readonly cardsVersion = signal(0);\r\n private readonly cvaDisabled = signal(false);\r\n private readonly touchedState = signal(false);\r\n private readonly internalValue = signal<CardGroupValue<T>>(null);\r\n\r\n private onTouched: () => void = () => {};\r\n private onChange: (value: CardGroupValue<T>) => void = () => {};\r\n private onValidatorChange: () => void = () => {};\r\n\r\n constructor() {\r\n effect(() => {\r\n this.selectionMode();\r\n this.required();\r\n this.minSelected();\r\n this.maxSelected();\r\n this.compareWith();\r\n this.internalValue();\r\n\r\n this.onValidatorChange();\r\n });\r\n }\r\n\r\n ngAfterContentInit(): void {\r\n this.bumpCardsVersion();\r\n\r\n this.cardsQuery?.changes\r\n .pipe(takeUntilDestroyed(this.destroyRef))\r\n .subscribe(() => this.bumpCardsVersion());\r\n }\r\n\r\n readonly resolvedGap = computed(() => {\r\n const value = String(this.gap() ?? 'md').trim();\r\n\r\n switch (value) {\r\n case 'sm':\r\n return 'var(--solaris-space-3)';\r\n case 'md':\r\n return 'var(--solaris-space-4)';\r\n case 'lg':\r\n return 'var(--solaris-space-5)';\r\n default:\r\n return value;\r\n }\r\n });\r\n\r\n readonly disabled = computed(() => this.disabledInput() || this.cvaDisabled());\r\n\r\n readonly groupRole = computed(() => {\r\n switch (this.selectionMode()) {\r\n case 'single':\r\n return 'radiogroup';\r\n case 'multiple':\r\n case 'none':\r\n default:\r\n return 'group';\r\n }\r\n });\r\n\r\n readonly selectionCount = computed(() => {\r\n const value = this.internalValue();\r\n\r\n if (Array.isArray(value)) return value.length;\r\n if (value == null) return 0;\r\n return 1;\r\n });\r\n\r\n readonly validationError = computed<CardGroupValidationError>(() => {\r\n if (this.disabled() || this.selectionMode() === 'none') return null;\r\n\r\n const count = this.selectionCount();\r\n\r\n if (this.required() && count === 0) return 'required';\r\n\r\n if (this.selectionMode() === 'multiple') {\r\n const min = this.minSelected();\r\n const max = this.maxSelected();\r\n\r\n if (min != null && count < min) return 'minSelected';\r\n if (max != null && count > max) return 'maxSelected';\r\n }\r\n\r\n return null;\r\n });\r\n\r\n readonly invalidComputed = computed(() => {\r\n const explicitInvalid = this.invalid();\r\n if (explicitInvalid !== null) return explicitInvalid;\r\n\r\n const localInvalid = this.validationError() !== null;\r\n\r\n if (this.showErrors() === 'always') return localInvalid;\r\n if (this.showErrors() === 'submitted') return localInvalid && this.submitted();\r\n\r\n return localInvalid && (this.touchedState() || this.dirtyState());\r\n });\r\n\r\n readonly errorKeyComputed = computed<string | undefined>(() => {\r\n switch (this.validationError()) {\r\n case 'required':\r\n return this.requiredErrorKey();\r\n case 'minSelected':\r\n return this.minSelectedErrorKey();\r\n case 'maxSelected':\r\n return this.maxSelectedErrorKey();\r\n default:\r\n return undefined;\r\n }\r\n });\r\n\r\n readonly errorParamsComputed = computed<SolarisTranslationParams | undefined>(() => {\r\n switch (this.validationError()) {\r\n case 'minSelected':\r\n return { min: this.minSelected() ?? undefined };\r\n case 'maxSelected':\r\n return { max: this.maxSelected() ?? undefined };\r\n default:\r\n return undefined;\r\n }\r\n });\r\n\r\n public isSelected(value: unknown): boolean {\r\n const currentValue = this.internalValue();\r\n\r\n switch (this.selectionMode()) {\r\n case 'single':\r\n return !Array.isArray(currentValue) &&\r\n currentValue !== null &&\r\n this.compareWith()(currentValue as T, value as T);\r\n\r\n case 'multiple': {\r\n const list: T[] = Array.isArray(currentValue) ? currentValue : [];\r\n return list.some(item => this.compareWith()(item, value as T));\r\n }\r\n\r\n case 'none':\r\n default:\r\n return false;\r\n }\r\n }\r\n\r\n public activate(card: SolarisSelectionCardHandle): void {\r\n if (this.disabled() || card.disabled()) return;\r\n\r\n this.notifyTouched();\r\n\r\n if (this.readonly()) {\r\n this.selectionRejected.emit({ reason: 'readonly', value: card.value() });\r\n return;\r\n }\r\n\r\n switch (this.selectionMode()) {\r\n case 'single': {\r\n const nextValue = card.value() as T;\r\n const currentValue = this.internalValue();\r\n\r\n if (Array.isArray(currentValue) || currentValue === null\r\n || !this.compareWith()(currentValue as T, nextValue)) {\r\n this.internalValue.set(nextValue);\r\n this.emitModelChange(nextValue);\r\n }\r\n\r\n break;\r\n }\r\n\r\n case 'multiple': {\r\n const currentValue = this.internalValue();\r\n const current: T[] = Array.isArray(currentValue) ? [...currentValue] : [];\r\n const cardValue = card.value() as T;\r\n\r\n const index = current.findIndex(item => this.compareWith()(item, cardValue));\r\n\r\n if (index >= 0) {\r\n current.splice(index, 1);\r\n this.internalValue.set(current);\r\n this.emitModelChange(current);\r\n break;\r\n }\r\n\r\n const max = this.maxSelected();\r\n if (max != null && current.length >= max) {\r\n this.selectionRejected.emit({ reason: 'maxSelected', value: cardValue });\r\n return;\r\n }\r\n\r\n current.push(cardValue);\r\n this.internalValue.set(current);\r\n this.emitModelChange(current);\r\n break;\r\n }\r\n\r\n case 'none':\r\n default:\r\n break;\r\n }\r\n\r\n this.bumpCardsVersion();\r\n this.bumpControlTick();\r\n }\r\n\r\n public tabIndexFor(card: SolarisSelectionCardHandle): number {\r\n this.cardsVersion();\r\n\r\n if (this.disabled() || card.disabled()) return -1;\r\n if (this.selectionMode() === 'none') return 0;\r\n\r\n const enabled = this.enabledCards();\r\n if (!enabled.length) return -1;\r\n\r\n const selected = enabled.find(item => this.isSelected(item.value()));\r\n const target = selected ?? enabled[0];\r\n\r\n return target === card ? 0 : -1;\r\n }\r\n\r\n public handleKeydown(event: KeyboardEvent, current: SolarisSelectionCardHandle): void {\r\n if (this.disabled()) return;\r\n if (this.selectionMode() === 'none') return;\r\n\r\n switch (event.key) {\r\n case 'ArrowRight':\r\n case 'ArrowDown':\r\n event.preventDefault();\r\n this.move(current, +1);\r\n break;\r\n\r\n case 'ArrowLeft':\r\n case 'ArrowUp':\r\n event.preventDefault();\r\n this.move(current, -1);\r\n break;\r\n\r\n case 'Home':\r\n event.preventDefault();\r\n this.focusFirst();\r\n break;\r\n\r\n case 'End':\r\n event.preventDefault();\r\n this.focusLast();\r\n break;\r\n\r\n case ' ':\r\n case 'Enter':\r\n event.preventDefault();\r\n this.activate(current);\r\n break;\r\n }\r\n }\r\n\r\n public notifyTouched(): void {\r\n if (!this.touchedState()) {\r\n this.touchedState.set(true);\r\n }\r\n\r\n this.onTouched();\r\n this.bumpControlTick();\r\n }\r\n\r\n writeValue(value: CardGroupValue<T>): void {\r\n this.internalValue.set(this.normalizeIncomingValue(value, this.selectionMode()));\r\n this.bumpCardsVersion();\r\n this.bumpControlTick();\r\n }\r\n\r\n registerOnTouched(fn: () => void): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n setDisabledState(isDisabled: boolean): void {\r\n this.cvaDisabled.set(isDisabled);\r\n this.bumpCardsVersion();\r\n this.bumpControlTick();\r\n }\r\n\r\n registerOnChange(fn: (value: CardGroupValue<T>) => void): void {\r\n this.onChange = fn;\r\n }\r\n\r\n validate(_: AbstractControl): ValidationErrors | null {\r\n switch (this.validationError()) {\r\n case 'required':\r\n return { required: true };\r\n case 'minSelected':\r\n return {\r\n minSelected: {\r\n min: this.minSelected(),\r\n actual: this.selectionCount(),\r\n },\r\n };\r\n case 'maxSelected':\r\n return {\r\n maxSelected: {\r\n max: this.maxSelected(),\r\n actual: this.selectionCount(),\r\n },\r\n };\r\n default:\r\n return null;\r\n }\r\n }\r\n\r\n registerOnValidatorChange(fn: () => void): void {\r\n this.onValidatorChange = fn;\r\n }\r\n\r\n private move(current: SolarisSelectionCardHandle, direction: 1 | -1): void {\r\n const enabled = this.enabledCards();\r\n if (!enabled.length) return;\r\n\r\n const currentIndex = enabled.indexOf(current);\r\n const startIndex = Math.max(currentIndex, 0);\r\n const nextIndex = (startIndex + direction + enabled.length) % enabled.length;\r\n const next = enabled[nextIndex];\r\n\r\n if (this.selectionMode() === 'single' && this.selectOnFocus()) {\r\n this.activate(next);\r\n }\r\n\r\n next.focus();\r\n }\r\n\r\n private focusFirst(): void {\r\n const first = this.enabledCards()[0];\r\n if (!first) return;\r\n\r\n if (this.selectionMode() === 'single' && this.selectOnFocus()) {\r\n this.activate(first);\r\n }\r\n\r\n first.focus();\r\n }\r\n\r\n private focusLast(): void {\r\n const enabled = this.enabledCards();\r\n const last = enabled.at(-1);\r\n if (!last) return;\r\n\r\n if (this.selectionMode() === 'single' && this.selectOnFocus()) {\r\n this.activate(last);\r\n }\r\n\r\n last.focus();\r\n }\r\n\r\n private enabledCards(): SolarisSelectionCardHandle[] {\r\n this.cardsVersion();\r\n return (this.cardsQuery?.toArray() ?? []).filter(card => !card.disabled());\r\n }\r\n\r\n private emitModelChange(value: CardGroupValue<T>): void {\r\n this.onChange(value);\r\n this.valueChange.emit(value);\r\n this.onValidatorChange();\r\n }\r\n\r\n private normalizeIncomingValue(value: CardGroupValue<T>, mode: CardGroupSelectionMode): CardGroupValue<T> {\r\n switch (mode) {\r\n case 'single':\r\n return Array.isArray(value) ? (value[0] ?? null) : value;\r\n\r\n case 'multiple':\r\n if (value == null) return [];\r\n return Array.isArray(value) ? value : [value];\r\n\r\n case 'none':\r\n default:\r\n return null;\r\n }\r\n }\r\n\r\n private bumpCardsVersion(): void {\r\n this.cardsVersion.update(value => value + 1);\r\n }\r\n\r\n private bumpControlTick(): void {\r\n this.controlTick.update(value => value + 1);\r\n }\r\n}\r\n","<div class=\"solaris-card-group__control\">\r\n <ng-content></ng-content>\r\n</div>\r\n\r\n@if (errorKeyComputed()) {\r\n <solaris-field-error [textKey]=\"errorKeyComputed()\" [textParams]=\"errorParamsComputed()\"></solaris-field-error>\r\n} @else {\r\n <ng-content select=\"[card-group-message]\"></ng-content>\r\n}\r\n","import { Directive } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[solaris-card-media]',\r\n standalone: true,\r\n host: { class: 'solaris-card-slot solaris-card-slot--media' },\r\n})\r\nexport class SolarisCardMediaDirective {}\r\n\r\n@Directive({\r\n selector: '[solaris-card-eyebrow]',\r\n standalone: true,\r\n host: { class: 'solaris-card-slot solaris-card-slot--eyebrow' },\r\n})\r\nexport class SolarisCardEyebrowDirective {}\r\n\r\n@Directive({\r\n selector: '[solaris-card-title]',\r\n standalone: true,\r\n host: { class: 'solaris-card-slot solaris-card-slot--title' },\r\n})\r\nexport class SolarisCardTitleDirective {}\r\n\r\n@Directive({\r\n selector: '[solaris-card-description]',\r\n standalone: true,\r\n host: { class: 'solaris-card-slot solaris-card-slot--description' },\r\n})\r\nexport class SolarisCardDescriptionDirective {}\r\n\r\n@Directive({\r\n selector: '[solaris-card-meta]',\r\n standalone: true,\r\n host: { class: 'solaris-card-slot solaris-card-slot--meta' },\r\n})\r\nexport class SolarisCardMetaDirective {}\r\n\r\n@Directive({\r\n selector: '[solaris-card-badge]',\r\n standalone: true,\r\n host: { class: 'solaris-card-slot solaris-card-slot--badge' },\r\n})\r\nexport class SolarisCardBadgeDirective {}\r\n\r\n@Directive({\r\n selector: '[solaris-card-actions]',\r\n standalone: true,\r\n host: {\r\n class: 'solaris-card-slot solaris-card-slot--actions',\r\n 'data-card-actions': 'true',\r\n },\r\n})\r\nexport class SolarisCardActionsDirective {}\r\n\r\n@Directive({\r\n selector: '[solaris-card-footer]',\r\n standalone: true,\r\n host: { class: 'solaris-card-slot solaris-card-slot--footer' },\r\n})\r\nexport class SolarisCardFooterDirective {}\r\n\r\nexport const SOLARIS_CARD_SLOT_DIRECTIVES = [\r\n SolarisCardMediaDirective,\r\n SolarisCardEyebrowDirective,\r\n SolarisCardTitleDirective,\r\n SolarisCardDescriptionDirective,\r\n SolarisCardMetaDirective,\r\n SolarisCardBadgeDirective,\r\n SolarisCardActionsDirective,\r\n SolarisCardFooterDirective,\r\n] as const;\r\n","import { Directive } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[solaris-avatar-overlay]',\r\n standalone: true,\r\n})\r\nexport class SolarisAvatarOverlayDirective { }\r\n","import { ChangeDetectionStrategy, Component, DestroyRef, HostBinding, Signal,\r\n booleanAttribute, computed, inject, input, signal } from '@angular/core';\r\nimport { toSignal } from '@angular/core/rxjs-interop';\r\nimport { NgClass } from '@angular/common';\r\n\r\nimport { SOLARIS_TRANSLATION, SOLARIS_TRANSLATION_CONFIGURATION, SolarisTranslationConfiguration, TranslationInterface } from '@educarehq/solaris-services';\r\nimport { SolarisPresenceQuietHours, SolarisPresenceState, TimeContext } from '../../../presence-avatar/model/presence-avatar.type';\r\nimport { SolarisAvatarShape } from '../../../avatar/model/avatar.type';\r\n\r\n@Component({\r\n selector: 'solaris-avatar-presence',\r\n standalone: true,\r\n imports: [NgClass],\r\n templateUrl: './avatar-presence.html',\r\n styleUrl: './avatar-presence.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class SolarisAvatarPresence {\r\n private readonly translation = inject<TranslationInterface | null>(SOLARIS_TRANSLATION, { optional: true });\r\n private readonly translationConfiguration =\r\n inject<SolarisTranslationConfiguration | null>(SOLARIS_TRANSLATION_CONFIGURATION, { optional: true });\r\n private readonly destroyRef = inject(DestroyRef);\r\n\r\n readonly presence = input<SolarisPresenceState>('offline');\r\n readonly timezone = input<string | null>(null);\r\n readonly lastSeenAt = input<string | Date | number | null>(null);\r\n readonly quietHours = input<SolarisPresenceQuietHours>(false);\r\n readonly workHoursStart = input(9);\r\n readonly workHoursEnd = input(18);\r\n\r\n readonly shape = input<SolarisAvatarShape>('circle');\r\n readonly ariaLabel = input<string | null>(null, { alias: 'aria-label' });\r\n readonly ariaHidden = input(false, { alias: 'aria-hidden', transform: booleanAttribute });\r\n\r\n @HostBinding('class')\r\n protected readonly hostClass = 'solaris-avatar-presence-host';\r\n\r\n private readonly nowTick = signal(Date.now());\r\n\r\n private readonly fallbackLanguage = this.translationConfiguration?.defaultLanguage ?? 'en-US';\r\n\r\n private readonly activeLanguage: Signal<string> = this.translation\r\n ? toSignal(this.translation.languageChanges(), {\r\n initialValue: this.translation.language(),\r\n })\r\n : signal(this.fallbackLanguage);\r\n\r\n private readonly browserTimezone =\r\n typeof Intl === 'undefined'\r\n ? null\r\n : Intl.DateTimeFormat().resolvedOptions().timeZone || null;\r\n\r\n constructor() {\r\n if (globalThis.window !== undefined) {\r\n const intervalId = globalThis.setInterval(() => {\r\n this.nowTick.set(Date.now());\r\n }, 60_000);\r\n\r\n this.destroyRef.onDestroy(() => {\r\n globalThis.clearInterval(intervalId);\r\n });\r\n }\r\n }\r\n\r\n readonly normalizedTimezone = computed(() => this.normalize(this.timezone()));\r\n readonly normalizedAriaLabel = computed(() => this.normalize(this.ariaLabel()));\r\n readonly parsedLastSeenAt = computed(() => this.parseDate(this.lastSeenAt()));\r\n\r\n readonly effectiveTimezone = computed(() => {\r\n return this.normalizedTimezone() || this.browserTimezone || null;\r\n });\r\n\r\n readonly intlLocale = computed(() => {\r\n const lang = this.activeLanguage() || this.fallbackLanguage || 'en-US';\r\n return lang.replace('_', '-');\r\n });\r\n\r\n readonly translationPrefix = computed(() => {\r\n const uiScope = this.translationConfiguration?.uiScope ?? 'ui';\r\n return `${uiScope}.solaris.avatar.presence`;\r\n });\r\n\r\n readonly normalizedWorkHours = computed(() => {\r\n const start = this.coerceHour(this.workHoursStart(), 9, 0, 23);\r\n const end = this.coerceHour(this.workHoursEnd(), 18, 1, 24);\r\n\r\n if (end <= start) {\r\n return { start: 9, end: 18 };\r\n }\r\n\r\n return { start, end };\r\n });\r\n\r\n readonly currentTimeContext = computed<TimeContext | null>(() => {\r\n this.nowTick();\r\n this.activeLanguage();\r\n\r\n const timezone = this.effectiveTimezone();\r\n if (!timezone || typeof Intl === 'undefined') {\r\n return null;\r\n }\r\n\r\n try {\r\n const formatter = new Intl.DateTimeFormat('en-US', {\r\n hour: 'numeric',\r\n weekday: 'short',\r\n hourCycle: 'h23',\r\n timeZone: timezone,\r\n });\r\n\r\n const parts = formatter.formatToParts(new Date(this.nowTick()));\r\n const hour = Number(parts.find((part) => part.type === 'hour')?.value ?? Number.NaN);\r\n const weekday = parts.find((part) => part.type === 'weekday')?.value ?? '';\r\n\r\n if (Number.isNaN(hour)) {\r\n return null;\r\n }\r\n\r\n const weekdayIndex = this.resolveWeekdayIndex(weekday);\r\n\r\n return {\r\n hour,\r\n timezone,\r\n isWeekend: weekdayIndex === 0 || weekdayIndex === 6,\r\n };\r\n } catch {\r\n return null;\r\n }\r\n });\r\n\r\n readonly isQuietHoursAuto = computed(() => {\r\n const context = this.currentTimeContext();\r\n if (!context) {\r\n return false;\r\n }\r\n\r\n if (context.isWeekend) {\r\n return true;\r\n }\r\n\r\n const { start, end } = this.normalizedWorkHours();\r\n return context.hour < start || context.hour >= end;\r\n });\r\n\r\n readonly showQuietHoursAccent = computed(() => {\r\n const mode = this.quietHours();\r\n\r\n if (mode === true) return true;\r\n if (mode === false) return false;\r\n\r\n return this.isQuietHoursAuto();\r\n });\r\n\r\n readonly showDndSlash = computed(() => this.presence() === 'dnd');\r\n\r\n readonly stateClasses = computed(() => ([\r\n `state-${this.presence()}`,\r\n this.showQuietHoursAccent() ? 'has-quiet-hours' : '',\r\n ]));\r\n\r\n readonly titleText = computed(() => {\r\n if (this.ariaHidden()) return null;\r\n\r\n this.activeLanguage();\r\n return this.buildSemanticText();\r\n });\r\n\r\n readonly resolvedAriaLabel = computed(() => {\r\n if (this.ariaHidden()) return null;\r\n\r\n this.activeLanguage();\r\n return this.normalizedAriaLabel() || this.buildSemanticText();\r\n });\r\n\r\n private buildSemanticText(): string {\r\n const parts: string[] = [this.translate(`states.${this.presence()}`)];\r\n\r\n if (this.presence() === 'offline') {\r\n const lastSeen = this.getLastSeenLabel(this.parsedLastSeenAt());\r\n if (lastSeen) {\r\n parts.push(lastSeen);\r\n }\r\n }\r\n\r\n if (this.showQuietHoursAccent()) {\r\n parts.push(this.translate('quietHours'));\r\n }\r\n\r\n return parts.join(' • ');\r\n }\r\n\r\n private getLastSeenLabel(value: Date | null): string | null {\r\n if (!value || Number.isNaN(value.getTime())) {\r\n return null;\r\n }\r\n\r\n const now = new Date(this.nowTick());\r\n const diffMs = Math.max(0, now.getTime() - value.getTime());\r\n\r\n const minuteMs = 60_000;\r\n const hourMs = 60 * minuteMs;\r\n\r\n if (diffMs < minuteMs) {\r\n return this.translate('lastSeen.now');\r\n }\r\n\r\n if (diffMs < hourMs) {\r\n return this.translate('lastSeen.minutesAgo', {\r\n minutes: Math.floor(diffMs / minuteMs),\r\n });\r\n }\r\n\r\n if (diffMs < 6 * hourMs) {\r\n return this.translate('lastSeen.hoursAgo', {\r\n hours: Math.floor(diffMs / hourMs),\r\n });\r\n }\r\n\r\n const timeLabel = this.formatDate(value, {\r\n hour: '2-digit',\r\n minute: '2-digit',\r\n });\r\n\r\n if (this.isSameCalendarDay(value, now)) {\r\n return this.translate('lastSeen.todayAt', {\r\n time: timeLabel,\r\n });\r\n }\r\n\r\n const yesterday = new Date(now);\r\n yesterday.setDate(now.getDate() - 1);\r\n\r\n if (this.isSameCalendarDay(value, yesterday)) {\r\n return this.translate('lastSeen.yesterdayAt', {\r\n time: timeLabel,\r\n });\r\n }\r\n\r\n return this.translate('lastSeen.onDate', {\r\n date: this.formatDate(value, {\r\n day: '2-digit',\r\n month: '2-digit',\r\n year: 'numeric',\r\n hour: '2-digit',\r\n minute: '2-digit',\r\n }),\r\n });\r\n }\r\n\r\n private formatDate(value: Date, options: Intl.DateTimeFormatOptions): string {\r\n try {\r\n return new Intl.DateTimeFormat(this.intlLocale(), options).format(value);\r\n } catch {\r\n return value.toLocaleString();\r\n }\r\n }\r\n\r\n private translate(key: string, params?: Record<string, unknown>): string {\r\n const fullKey = `${this.translationPrefix()}.${key}`;\r\n\r\n if (this.translation) {\r\n const translated = this.translation.translate(fullKey, params);\r\n if (translated && translated !== fullKey) {\r\n return translated;\r\n }\r\n }\r\n\r\n return this.fallbackTranslate(key, params);\r\n }\r\n\r\n private fallbackTranslate(key: string, params?: Record<string, unknown>): string {\r\n const isPt = this.intlLocale().toLowerCase().startsWith('pt');\r\n\r\n const dict = isPt\r\n ? {\r\n 'states.online': 'Online',\r\n 'states.offline': 'Offline',\r\n 'states.away': 'Ausente',\r\n 'states.busy': 'Ocupado',\r\n 'states.dnd': 'Não perturbe',\r\n 'quietHours': 'Fora do expediente local',\r\n 'lastSeen.now': 'Visto agora',\r\n 'lastSeen.minutesAgo': `Visto há ${params?.['minutes'] ?? 0} min`,\r\n 'lastSeen.hoursAgo': `Visto há ${params?.['hours'] ?? 0} h`,\r\n 'lastSeen.todayAt': `Visto hoje às ${params?.['time'] ?? ''}`,\r\n 'lastSeen.yesterdayAt': `Visto ontem às ${params?.['time'] ?? ''}`,\r\n 'lastSeen.onDate': `Visto em ${params?.['date'] ?? ''}`,\r\n }\r\n : {\r\n 'states.online': 'Online',\r\n 'states.offline': 'Offline',\r\n 'states.away': 'Away',\r\n 'states.busy': 'Busy',\r\n 'states.dnd': 'Do not disturb',\r\n 'quietHours': 'Outside local working hours',\r\n 'lastSeen.now': 'Seen just now',\r\n 'lastSeen.minutesAgo': `Seen ${params?.['minutes'] ?? 0} min ago`,\r\n 'lastSeen.hoursAgo': `Seen ${params?.['hours'] ?? 0} h ago`,\r\n 'lastSeen.todayAt': `Seen today at ${params?.['time'] ?? ''}`,\r\n 'lastSeen.yesterdayAt': `Seen yesterday at ${params?.['time'] ?? ''}`,\r\n 'lastSeen.onDate': `Seen on ${params?.['date'] ?? ''}`,\r\n };\r\n\r\n return dict[key as keyof typeof dict] ?? key;\r\n }\r\n\r\n private isSameCalendarDay(a: Date, b: Date): boolean {\r\n return a.getFullYear() === b.getFullYear()\r\n && a.getMonth() === b.getMonth()\r\n && a.getDate() === b.getDate();\r\n }\r\n\r\n private resolveWeekdayIndex(weekday: string): number {\r\n switch (weekday.toLowerCase()) {\r\n case 'sun': return 0;\r\n case 'mon': return 1;\r\n case 'tue': return 2;\r\n case 'wed': return 3;\r\n case 'thu': return 4;\r\n case 'fri': return 5;\r\n case 'sat': return 6;\r\n default: return -1;\r\n }\r\n }\r\n\r\n private coerceHour(value: unknown, fallback: number, min: number, max: number): number {\r\n const numeric = Number(value);\r\n if (Number.isNaN(numeric)) {\r\n return fallback;\r\n }\r\n\r\n return Math.min(Math.max(Math.floor(numeric), min), max);\r\n }\r\n\r\n private parseDate(value: string | Date | number | null): Date | null {\r\n if (value == null || value === '') {\r\n return null;\r\n }\r\n\r\n if (value instanceof Date) {\r\n return Number.isNaN(value.getTime()) ? null : value;\r\n }\r\n\r\n const parsed = new Date(value);\r\n return Number.isNaN(parsed.getTime()) ? null : parsed;\r\n }\r\n\r\n private normalize(value: unknown): string {\r\n return String(value ?? '').trim();\r\n }\r\n}\r\n","<span class=\"solaris-avatar-presence\" [attr.title]=\"titleText()\"\r\n [attr.aria-label]=\"resolvedAriaLabel()\" [attr.aria-hidden]=\"ariaHidden() ? 'true' : null\"\r\n [ngClass]=\"[...stateClasses(), shape() === 'square' ? 'shape-square' : 'shape-circle']\">\r\n <span class=\"solaris-avatar-presence__dot\" aria-hidden=\"true\">\r\n @if (showDndSlash()) {\r\n <span class=\"solaris-avatar-presence__slash\"></span>\r\n }\r\n </span>\r\n\r\n @if (showQuietHoursAccent()) {\r\n <span class=\"solaris-avatar-presence__quiet\" aria-hidden=\"true\">z</span>\r\n }\r\n</span>\r\n","import { ChangeDetectionStrategy, Component, HostBinding, booleanAttribute, computed, effect, input, signal } from '@angular/core';\r\nimport { NgClass } from '@angular/common';\r\n\r\nimport { SolarisAvatarButtonType, SolarisAvatarColorInput, SolarisAvatarColorPreset, SolarisAvatarObjectFit,\r\n SolarisAvatarRadiusInput, SolarisAvatarShape, SolarisAvatarSize, SolarisAvatarVariant } from '../model/avatar.type';\r\n\r\n@Component({\r\n selector: 'solaris-avatar',\r\n standalone: true,\r\n imports: [\r\n NgClass\r\n ],\r\n templateUrl: './avatar.html',\r\n styleUrl: './avatar.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class SolarisAvatar {\r\n readonly size = input<SolarisAvatarSize>('md');\r\n readonly shape = input<SolarisAvatarShape>('circle');\r\n readonly variant = input<SolarisAvatarVariant>('auto');\r\n\r\n readonly src = input<string | null>(null);\r\n readonly alt = input<string | null>(null);\r\n readonly name = input<string | null>(null);\r\n readonly initials = input<string | null>(null);\r\n\r\n readonly color = input<SolarisAvatarColorInput>('surface');\r\n readonly loading = input(false, { transform: booleanAttribute });\r\n readonly disabled = input(false, { transform: booleanAttribute });\r\n readonly interactive = input(false, { transform: booleanAttribute });\r\n\r\n readonly buttonType = input<SolarisAvatarButtonType>('button');\r\n readonly asButton = input(false, { transform: booleanAttribute });\r\n\r\n readonly radius = input<SolarisAvatarRadiusInput>(null);\r\n readonly objectFit = input<SolarisAvatarObjectFit>('cover');\r\n\r\n readonly ariaLabel = input<string | null>(null, { alias: 'aria-label' });\r\n readonly ariaHidden = input(false, { alias: 'aria-hidden', transform: booleanAttribute });\r\n\r\n @HostBinding('class')\r\n protected readonly hostClass = 'solaris-avatar-host';\r\n\r\n private readonly imageFailed = signal(false);\r\n\r\n private readonly presetColors = new Set<SolarisAvatarColorPreset>([\r\n 'primary',\r\n 'surface',\r\n 'success',\r\n 'warning',\r\n 'error',\r\n 'info',\r\n ]);\r\n\r\n constructor() {\r\n effect(() => {\r\n this.src();\r\n this.imageFailed.set(false);\r\n });\r\n }\r\n\r\n readonly normalizedSrc = computed(() => this.normalize(this.src()));\r\n readonly normalizedAlt = computed(() => this.normalize(this.alt()));\r\n readonly normalizedName = computed(() => this.normalize(this.name()));\r\n readonly normalizedInitials = computed(() => this.normalize(this.initials()));\r\n readonly normalizedAriaLabel = computed(() => this.normalize(this.ariaLabel()));\r\n\r\n readonly resolvedInitials = computed(() => {\r\n const explicit = this.normalizedInitials();\r\n if (explicit) return explicit.slice(0, 2).toUpperCase();\r\n\r\n const name = this.normalizedName();\r\n if (!name) return '';\r\n\r\n const parts = name.split(/\\s+/).map(part => part.trim()).filter(Boolean);\r\n\r\n if (!parts.length) return '';\r\n if (parts.length === 1) return parts[0].slice(0, 1).toUpperCase();\r\n\r\n const first = parts[0]?.slice(0, 1) ?? '';\r\n const last = parts.at(-1)?.slice(0, 1) ?? '';\r\n\r\n return `${first}${last}`.toUpperCase();\r\n });\r\n\r\n readonly showImage = computed(() => {\r\n if (this.loading()) return false;\r\n\r\n const variant = this.variant();\r\n if (variant === 'letter' || variant === 'default') return false;\r\n\r\n return !!this.normalizedSrc() && !this.imageFailed();\r\n });\r\n\r\n readonly showLetter = computed(() => {\r\n if (this.loading()) return false;\r\n\r\n const variant = this.variant();\r\n const initials = this.resolvedInitials();\r\n\r\n if (!initials) return false;\r\n if (variant === 'letter') return true;\r\n if (variant === 'default') return false;\r\n\r\n return !this.showImage();\r\n });\r\n\r\n readonly showDefault = computed(() => {\r\n if (this.loading()) return false;\r\n return !this.showImage() && !this.showLetter();\r\n });\r\n\r\n readonly isCustomColor = computed(() => !this.presetColors.has(this.color() as SolarisAvatarColorPreset));\r\n\r\n readonly colorClass = computed(() => {\r\n return this.isCustomColor() ? 'color-custom' : `color-${this.color()}`;\r\n });\r\n\r\n readonly customColorValue = computed(() => {\r\n return this.isCustomColor() ? String(this.color()) : null;\r\n });\r\n\r\n readonly resolvedRadius = computed(() => {\r\n const radius = this.normalize(this.radius());\r\n\r\n if (!radius) {\r\n return this.shape() === 'circle'\r\n ? 'var(--solaris-avatar-radius-circle)'\r\n : 'var(--solaris-avatar-radius-square)';\r\n }\r\n\r\n switch (radius) {\r\n case 'none': return 'var(--solaris-radius-none)';\r\n case 'sm': return 'var(--solaris-radius-sm)';\r\n case 'md': return 'var(--solaris-radius-md)';\r\n case 'lg': return 'var(--solaris-radius-lg)';\r\n case 'full': return 'var(--solaris-radius-full)';\r\n default: return radius;\r\n }\r\n });\r\n\r\n readonly rootClasses = computed(() => ([\r\n `size-${this.size()}`,\r\n `shape-${this.shape()}`,\r\n this.colorClass(),\r\n this.interactive() ? 'is-interactive' : '',\r\n this.disabled() ? 'is-disabled' : '',\r\n this.loading() ? 'is-loading' : '',\r\n this.asButton() ? 'is-button' : '',\r\n ]));\r\n\r\n readonly accessibleLabel = computed(() => {\r\n if (this.ariaHidden()) return null;\r\n\r\n return this.normalizedAriaLabel()\r\n || this.normalizedAlt()\r\n || this.normalizedName()\r\n || this.resolvedInitials()\r\n || 'Avatar';\r\n });\r\n\r\n readonly rootRole = computed(() => {\r\n if (this.ariaHidden() || this.asButton()) return null;\r\n return 'img';\r\n });\r\n\r\n onImageLoad(): void {\r\n this.imageFailed.set(false);\r\n }\r\n\r\n onImageError(): void {\r\n this.imageFailed.set(true);\r\n }\r\n\r\n private normalize(value: unknown): string {\r\n return String(value ?? '').trim();\r\n }\r\n}\r\n","@if (asButton()) {\r\n <button class=\"solaris-avatar\" [ngClass]=\"rootClasses()\" [type]=\"buttonType()\" [disabled]=\"disabled()\"\r\n [attr.aria-label]=\"accessibleLabel()\" [attr.aria-hidden]=\"ariaHidden() ? 'true' : null\"\r\n [style.--solaris-avatar-radius]=\"resolvedRadius()\" [style.--solaris-avatar-image-fit]=\"objectFit()\"\r\n [style.--solaris-avatar-custom-bg]=\"customColorValue()\">\r\n <span class=\"solaris-avatar__body\">\r\n @if (loading()) {\r\n <span class=\"solaris-avatar__skeleton\" aria-hidden=\"true\"></span>\r\n } @else if (showImage()) {\r\n <img class=\"solaris-avatar__image\" [src]=\"normalizedSrc()\" alt=\"\" aria-hidden=\"true\"\r\n decoding=\"async\" (load)=\"onImageLoad()\" (error)=\"onImageError()\">\r\n } @else if (showLetter()) {\r\n <span class=\"solaris-avatar__label\" aria-hidden=\"true\">\r\n {{ resolvedInitials() }}\r\n </span>\r\n } @else if (showDefault()) {\r\n <span class=\"solaris-avatar__placeholder\" aria-hidden=\"true\">\r\n <svg class=\"solaris-avatar__placeholder-svg\" viewBox=\"0 0 64 64\" preserveAspectRatio=\"xMidYMid meet\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <circle class=\"solaris-avatar__placeholder-head\" cx=\"32\" cy=\"25\" r=\"14\"></circle>\r\n <path class=\"solaris-avatar__placeholder-body\" d=\"M2 64 C6 50, 18 42, 32 45 C46 42, 58 50, 62 64 Z\"></path>\r\n </svg>\r\n </span>\r\n }\r\n </span>\r\n\r\n <span class=\"solaris-avatar__overlay\" aria-hidden=\"true\">\r\n <ng-content></ng-content>\r\n </span>\r\n </button>\r\n} @else {\r\n <span class=\"solaris-avatar\" [ngClass]=\"rootClasses()\" [attr.role]=\"rootRole()\" [attr.aria-label]=\"accessibleLabel()\"\r\n [attr.aria-hidden]=\"ariaHidden() ? 'true' : null\" [style.--solaris-avatar-radius]=\"resolvedRadius()\"\r\n [style.--solaris-avatar-image-fit]=\"objectFit()\" [style.--solaris-avatar-custom-bg]=\"customColorValue()\">\r\n <span class=\"solaris-avatar__body\">\r\n @if (loading()) {\r\n <span class=\"solaris-avatar__skeleton\" aria-hidden=\"true\"></span>\r\n } @else if (showImage()) {\r\n <img class=\"solaris-avatar__image\" [src]=\"normalizedSrc()\" alt=\"\" aria-hidden=\"true\"\r\n decoding=\"async\" (load)=\"onImageLoad()\" (error)=\"onImageError()\">\r\n } @else if (showLetter()) {\r\n <span class=\"solaris-avatar__label\" aria-hidden=\"true\">{{ resolvedInitials() }}</span>\r\n } @else if (showDefault()) {\r\n <span class=\"solaris-avatar__placeholder\" aria-hidden=\"true\">\r\n <svg class=\"solaris-avatar__placeholder-svg\" viewBox=\"0 0 64 64\" preserveAspectRatio=\"xMidYMid meet\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <circle class=\"solaris-avatar__placeholder-head\" cx=\"32\" cy=\"25\" r=\"14\"></circle>\r\n <path class=\"solaris-avatar__placeholder-body\" d=\"M2 64 C6 50, 18 42, 32 45 C46 42, 58 50, 62 64 Z\"></path>\r\n </svg>\r\n </span>\r\n }\r\n </span>\r\n\r\n <span class=\"solaris-avatar__overlay\" aria-hidden=\"true\">\r\n <ng-content></ng-content>\r\n </span>\r\n </span>\r\n}\r\n","import { booleanAttribute, ChangeDetectionStrategy, Component, computed, inject, input } from '@angular/core';\r\n\r\nimport { SolarisAvatarButtonType, SolarisAvatarColorInput, SolarisAvatarObjectFit, SolarisAvatarRadiusInput,\r\n SolarisAvatarShape, SolarisAvatarSize, SolarisAvatarVariant } from '../../avatar/model/avatar.type';\r\nimport { SolarisTooltipDirective } from '../../../feedbacks/tooltip/directives/tooltip.directive';\r\nimport { SolarisAvatarOverlayDirective } from '../../avatar/directives/avatar-overlay.directive';\r\nimport { SolarisAvatarPresence } from '../../internal/avatar-presence/component/avatar-presence';\r\nimport { SolarisPresenceQuietHours, SolarisPresenceState } from '../model/presence-avatar.type';\r\nimport { SolarisAvatar } from '../../avatar/component/avatar';\r\nimport { SOLARIS_TRANSLATION, TranslationInterface } from '@educarehq/solaris-services';\r\n\r\n@Component({\r\n selector: 'solaris-presence-avatar',\r\n standalone: true,\r\n imports: [\r\n SolarisAvatar,\r\n SolarisAvatarPresence,\r\n SolarisTooltipDirective,\r\n SolarisAvatarOverlayDirective,\r\n ],\r\n templateUrl: './presence-avatar.html',\r\n styleUrl: './presence-avatar.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class SolarisPresenceAvatar {\r\n readonly translationService: TranslationInterface = inject(SOLARIS_TRANSLATION);\r\n readonly size = input<SolarisAvatarSize>('md');\r\n readonly shape = input<SolarisAvatarShape>('circle');\r\n readonly variant = input<SolarisAvatarVariant>('auto');\r\n\r\n readonly src = input<string | null>(null);\r\n readonly alt = input<string | null>(null);\r\n readonly name = input<string | null>(null);\r\n readonly initials = input<string | null>(null);\r\n\r\n readonly color = input<SolarisAvatarColorInput>('surface');\r\n readonly loading = input(false, { transform: booleanAttribute });\r\n readonly disabled = input(false, { transform: booleanAttribute });\r\n readonly interactive = input(false, { transform: booleanAttribute });\r\n\r\n readonly buttonType = input<SolarisAvatarButtonType>('button');\r\n readonly asButton = input(false, { transform: booleanAttribute });\r\n\r\n readonly radius = input<SolarisAvatarRadiusInput>(null);\r\n readonly objectFit = input<SolarisAvatarObjectFit>('cover');\r\n\r\n readonly ariaLabel = input<string | null>(null, { alias: 'aria-label' });\r\n readonly ariaHidden = input(false, { alias: 'aria-hidden', transform: booleanAttribute });\r\n\r\n readonly presence = input<SolarisPresenceState>('offline');\r\n readonly presenceAriaLabel = input<string | null>(null);\r\n readonly timezone = input<string | null>(null);\r\n readonly lastSeenAt = input<string | Date | number | null>(null);\r\n readonly quietHours = input<SolarisPresenceQuietHours>('auto');\r\n readonly workHoursStart = input(9);\r\n readonly workHoursEnd = input(18);\r\n\r\n readonly presenceTooltipKey = computed(() => {\r\n return this.translationService.translate(`ui.solaris.avatar.presence.states.${this.presence()}`);\r\n });\r\n}\r\n","<solaris-avatar [src]=\"src()\" [alt]=\"alt()\" [name]=\"name()\" [initials]=\"initials()\" [size]=\"size()\" [shape]=\"shape()\"\r\n [variant]=\"variant()\" [color]=\"color()\" [loading]=\"loading()\" [disabled]=\"disabled()\" [interactive]=\"interactive()\"\r\n [buttonType]=\"buttonType()\" [asButton]=\"asButton()\" [radius]=\"radius()\" [objectFit]=\"objectFit()\"\r\n [aria-label]=\"ariaLabel()\" [aria-hidden]=\"ariaHidden()\" solaris-tooltip [tooltip-key]=\"presenceTooltipKey()\"\r\n tooltip-variant=\"default\" tooltip-size=\"sm\" tooltip-prefix-icon=\"ph ph-info\">\r\n\r\n <span solaris-avatar-overlay class=\"solaris-presence-avatar__overlay\" aria-hidden=\"true\">\r\n <solaris-avatar-presence [presence]=\"presence()\" [timezone]=\"timezone()\" [lastSeenAt]=\"lastSeenAt()\"\r\n [quietHours]=\"quietHours()\" [workHoursStart]=\"workHoursStart()\" [workHoursEnd]=\"workHoursEnd()\"\r\n [aria-label]=\"presenceAriaLabel()\" [aria-hidden]=\"ariaHidden()\" [shape]=\"shape()\">\r\n </solaris-avatar-presence>\r\n </span>\r\n</solaris-avatar>\r\n","import { booleanAttribute, ChangeDetectionStrategy, Component, computed, input, numberAttribute } from '@angular/core';\r\n\r\nimport { SolarisAvatarShape, SolarisAvatarSize } from '../../avatar/model/avatar.type';\r\nimport { SolarisPresenceAvatar } from '../../presence-avatar/component/presence-avatar';\r\nimport { SolarisAvatarStackItem, SolarisAvatarStackOverlap } from '../model/avatar-stack.type';\r\nimport { SolarisAvatar } from '../../avatar/component/avatar';\r\n\r\n@Component({\r\n selector: 'solaris-avatar-stack',\r\n standalone: true,\r\n imports: [\r\n SolarisPresenceAvatar,\r\n SolarisAvatar\r\n ],\r\n templateUrl: './avatar-stack.html',\r\n styleUrl: './avatar-stack.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class SolarisAvatarStack {\r\n readonly items = input<SolarisAvatarStackItem[]>([]);\r\n readonly max = input(4, { transform: numberAttribute });\r\n readonly showPresence = input(false, { transform: booleanAttribute });\r\n\r\n readonly size = input<SolarisAvatarSize>('md');\r\n readonly shape = input<SolarisAvatarShape>('circle');\r\n readonly overlap = input<SolarisAvatarStackOverlap>('md');\r\n\r\n readonly visibleItems = computed(() => {\r\n const max = Math.max(1, this.max());\r\n return this.items().slice(0, max);\r\n });\r\n\r\n readonly hiddenCount = computed(() => {\r\n return Math.max(0, this.items().length - this.visibleItems().length);\r\n });\r\n\r\n readonly hasHiddenItems = computed(() => this.hiddenCount() > 0);\r\n}\r\n","<div class=\"solaris-avatar-stack\" [attr.data-size]=\"size()\"\r\n [attr.data-shape]=\"shape()\" [attr.data-overlap]=\"overlap()\">\r\n @for (item of visibleItems(); track item.name ?? item.src ?? $index) {\r\n <span class=\"solaris-avatar-stack__item\">\r\n @if (showPresence()) {\r\n <solaris-presence-avatar [size]=\"size()\" [shape]=\"shape()\" [src]=\"item.src ?? null\" [alt]=\"item.alt ?? null\"\r\n [name]=\"item.name ?? null\" [initials]=\"item.initials ?? null\" [presence]=\"item.presence ?? 'offline'\"\r\n [timezone]=\"item.timezone ?? null\" [lastSeenAt]=\"item.lastSeenAt ?? null\" [quietHours]=\"item.quietHours ?? false\"/>\r\n } @else {\r\n <solaris-avatar [size]=\"size()\" [shape]=\"shape()\" [src]=\"item.src ?? null\" [alt]=\"item.alt ?? null\"\r\n [name]=\"item.name ?? null\" [initials]=\"item.initials ?? null\"/>\r\n }\r\n </span>\r\n }\r\n\r\n @if (hasHiddenItems()) {\r\n <span class=\"solaris-avatar-stack__item solaris-avatar-stack__more\">\r\n +{{ hiddenCount() }}\r\n </span>\r\n }\r\n</div>\r\n","import { ChangeDetectionStrategy, Component, EventEmitter, Output, booleanAttribute, input, numberAttribute } from '@angular/core';\r\n\r\nimport { SolarisAvatarDropdownItem, SolarisAvatarDropdownPlacement, SolarisAvatarDropdownSelectEvent } from '../model/avatar-dropdown.type';\r\nimport { SolarisPopoverTriggerDirective } from '../../../navigations/popover/directives/popover-trigger.directive';\r\nimport { SolarisPopoverPanelDirective } from '../../../navigations/popover/directives/popover-panel.directive';\r\nimport { SolarisAvatarShape, SolarisAvatarSize } from '../../avatar/model/avatar.type';\r\nimport { SolarisAvatarStackOverlap } from '../../avatar-stack/model/avatar-stack.type';\r\nimport { SolarisAvatarStack } from '../../avatar-stack/component/avatar-stack';\r\nimport { SolarisPopover } from '../../../navigations/popover/component/popover';\r\nimport { SolarisAvatar } from '../../avatar/component/avatar';\r\n\r\n@Component({\r\n selector: 'solaris-avatar-dropdown',\r\n standalone: true,\r\n imports: [\r\n SolarisPopover,\r\n SolarisPopoverTriggerDirective,\r\n SolarisPopoverPanelDirective,\r\n SolarisAvatarStack,\r\n SolarisAvatar\r\n ],\r\n templateUrl: './avatar-dropdown.html',\r\n styleUrl: './avatar-dropdown.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class SolarisAvatarDropdown {\r\n readonly items = input<SolarisAvatarDropdownItem[]>([]);\r\n\r\n readonly size = input<SolarisAvatarSize>('md');\r\n readonly shape = input<SolarisAvatarShape>('circle');\r\n readonly overlap = input<SolarisAvatarStackOverlap>('md');\r\n\r\n readonly maxVisible = input(4, { transform: numberAttribute });\r\n readonly placement = input<SolarisAvatarDropdownPlacement>('bottom-end');\r\n\r\n readonly disabled = input(false, { transform: booleanAttribute });\r\n readonly closeOnSelect = input(true, { transform: booleanAttribute });\r\n\r\n readonly panelLabel = input('Avatar dropdown');\r\n\r\n @Output() readonly itemSelect = new EventEmitter<SolarisAvatarDropdownSelectEvent>();\r\n @Output() readonly openChange = new EventEmitter<boolean>();\r\n\r\n onItemClick(item: SolarisAvatarDropdownItem, index: number, popover: SolarisPopover): void {\r\n if (item.disabled) return;\r\n\r\n this.itemSelect.emit({ item, index });\r\n\r\n if (this.closeOnSelect()) {\r\n popover.setOpen(false);\r\n }\r\n }\r\n}\r\n","<solaris-popover #popover [placement]=\"placement()\" [offset]=\"8\" [autoFlip]=\"true\" [autoShift]=\"true\"\r\n [closeOnEscape]=\"true\" [closeOnOutsideClick]=\"true\" panelClass=\"solaris-avatar-dropdown-popover\"\r\n (openChange)=\"openChange.emit($event)\">\r\n <button type=\"button\" solaris-popover-trigger class=\"solaris-avatar-dropdown__trigger\" [disabled]=\"disabled()\"\r\n [attr.aria-label]=\"panelLabel()\" [attr.aria-expanded]=\"popover.isOpen() ? 'true' : 'false'\"\r\n (click)=\"popover.toggle()\">\r\n <solaris-avatar-stack [items]=\"items()\" [max]=\"maxVisible()\" [size]=\"size()\" [shape]=\"shape()\" [overlap]=\"overlap()\"\r\n [showPresence]=\"false\"/>\r\n </button>\r\n\r\n <ng-template solaris-popover-panel>\r\n <div class=\"solaris-avatar-dropdown__panel\" role=\"listbox\" [attr.aria-label]=\"panelLabel()\">\r\n @for (item of items(); track item.id ?? item.name ?? item.src ?? $index) {\r\n <button type=\"button\" class=\"solaris-avatar-dropdown__item\" [disabled]=\"item.disabled\"\r\n [attr.aria-disabled]=\"item.disabled ? 'true' : null\"\r\n (click)=\"onItemClick(item, $index, popover)\">\r\n <solaris-avatar size=\"sm\" [shape]=\"shape()\" [src]=\"item.src ?? null\" [alt]=\"item.alt ?? null\"\r\n [name]=\"item.name ?? null\" [initials]=\"item.initials ?? null\"/>\r\n\r\n <span class=\"solaris-avatar-dropdown__item-body\">\r\n <span class=\"solaris-avatar-dropdown__item-title\">\r\n {{ item.name || item.initials || 'User' }}\r\n </span>\r\n </span>\r\n </button>\r\n }\r\n </div>\r\n </ng-template>\r\n</solaris-popover>\r\n","import { Directive, HostBinding } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[solaris-card-media-overlay]',\r\n standalone: true,\r\n})\r\nexport class SolarisCardMediaOverlayDirective {\r\n @HostBinding('attr.solaris-card-media-overlay')\r\n readonly attr = '';\r\n}\r\n","import { ChangeDetectionStrategy, Component, booleanAttribute, computed, input } from '@angular/core';\r\n\r\nimport { SolarisCardMediaAlign, SolarisCardMediaFit, SolarisCardMediaRadius, SolarisCardMediaRatio,\r\n SolarisCardMediaVariant } from '../model/card-media.type';\r\n\r\n@Component({\r\n selector: 'solaris-card-media',\r\n standalone: true,\r\n templateUrl: './card-media.html',\r\n styleUrls: ['./card-media.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class SolarisCardMedia {\r\n readonly variant = input<SolarisCardMediaVariant>('image');\r\n\r\n readonly src = input<string | null>(null);\r\n readonly alt = input<string | null>(null);\r\n\r\n readonly ratio = input<SolarisCardMediaRatio>('16:9');\r\n readonly fit = input<SolarisCardMediaFit>('cover');\r\n readonly align = input<SolarisCardMediaAlign>('center');\r\n readonly radius = input<SolarisCardMediaRadius>('inherit');\r\n\r\n readonly loading = input(false, { transform: booleanAttribute });\r\n readonly disabled = input(false, { transform: booleanAttribute });\r\n\r\n readonly normalizedSrc = computed(() => this.normalize(this.src()));\r\n readonly normalizedAlt = computed(() => this.normalize(this.alt()));\r\n\r\n readonly showImage = computed(() => {\r\n return !this.loading()\r\n && this.variant() === 'image'\r\n && !!this.normalizedSrc();\r\n });\r\n\r\n private normalize(value: unknown): string {\r\n return String(value ?? '').trim();\r\n }\r\n}\r\n","<div class=\"solaris-card-media\" [class.is-loading]=\"loading()\" [class.is-disabled]=\"disabled()\" [attr.data-variant]=\"variant()\"\r\n [attr.data-ratio]=\"ratio()\" [attr.data-align]=\"align()\" [attr.data-radius]=\"radius()\" [style.--solaris-card-media-fit]=\"fit()\">\r\n <div class=\"solaris-card-media__surface\">\r\n @if (loading()) {\r\n <span class=\"solaris-card-media__skeleton\" aria-hidden=\"true\"></span>\r\n } @else if (showImage()) {\r\n <img class=\"solaris-card-media__image\" [src]=\"normalizedSrc()\" [alt]=\"normalizedAlt()\" decoding=\"async\">\r\n } @else {\r\n <div class=\"solaris-card-media__content\">\r\n <ng-content></ng-content>\r\n </div>\r\n }\r\n\r\n <div class=\"solaris-card-media__overlay\">\r\n <ng-content select=\"[solaris-card-media-overlay]\"></ng-content>\r\n </div>\r\n </div>\r\n</div>\r\n","export type PhoneSanitizeConfig = {\r\n allowedChars: RegExp;\r\n};\r\n\r\nexport function sanitizePhoneInput(v: string): string {\r\n let s = (v ?? '').replace(/[^\\d+\\-\\s().]/g, '');\r\n s = s.replace(/\\+/g, (_m, offset) => (offset === 0 ? '+' : ''));\r\n return s;\r\n}\r\n\r\nexport function insertAtCursor(input: HTMLInputElement, text: string): void {\r\n const start = input.selectionStart ?? input.value.length;\r\n const end = input.selectionEnd ?? input.value.length;\r\n input.value = input.value.slice(0, start) + text + input.value.slice(end);\r\n const pos = start + text.length;\r\n input.setSelectionRange(pos, pos);\r\n}\r\n\r\nexport function enforceMaxDigitsInPlace(input: HTMLInputElement, maxDigits?: number): void {\r\n if (!maxDigits) return;\r\n\r\n const v = input.value ?? '';\r\n const sanitized = sanitizePhoneInput(v);\r\n\r\n const digits = (sanitized.match(/\\d/g) ?? []).length;\r\n if (digits <= maxDigits) {\r\n if (sanitized !== v) input.value = sanitized;\r\n return;\r\n }\r\n\r\n let digitCount = 0;\r\n let out = '';\r\n for (const ch of sanitized) {\r\n if (/\\d/.test(ch)) {\r\n if (digitCount >= maxDigits) break;\r\n digitCount++;\r\n }\r\n out += ch;\r\n }\r\n input.value = out;\r\n}\r\n\r\nexport function shouldBlockBeforeInput(ev: InputEvent, cfg: PhoneSanitizeConfig): boolean {\r\n return !!ev.data && !cfg.allowedChars.test(ev.data);\r\n}\r\n\r\nexport function shouldBlockKeyDown(ev: KeyboardEvent): boolean {\r\n if (ev.ctrlKey || ev.metaKey || ev.altKey) return false;\r\n\r\n const k = ev.key;\r\n const allowedControl = [\r\n 'Backspace', 'Delete', 'Tab', 'Enter', 'Escape',\r\n 'ArrowLeft', 'ArrowRight', 'ArrowUp', 'ArrowDown', 'Home', 'End',\r\n ];\r\n if (allowedControl.includes(k)) return false;\r\n if (/^\\d$/.test(k)) return false;\r\n return !(k === '+' || k === '-' || k === ' ' || k === '(' || k === ')' || k === '.');\r\n}\r\n","import { getCountries, getCountryCallingCode } from 'libphonenumber-js';\r\n\r\nexport function buildCallingCodeIndex(): Map<string, string[]> {\r\n const m = new Map<string, string[]>();\r\n for (const c of getCountries()) {\r\n const code = getCountryCallingCode(c);\r\n const arr = m.get(code) ?? [];\r\n arr.push(c.toLowerCase());\r\n m.set(code, arr);\r\n }\r\n return m;\r\n}\r\n\r\nexport function pickIso2ForCallingCode(\r\n callingCode: string,\r\n selectedIso2: string | null,\r\n index: Map<string, string[]>,\r\n preferredCountries?: string[],\r\n): string | null {\r\n const list = index.get(callingCode) ?? [];\r\n if (!list.length) return null;\r\n\r\n const sel = selectedIso2?.toLowerCase() ?? null;\r\n if (sel && list.includes(sel)) return sel;\r\n\r\n if (callingCode === '1') {\r\n if (list.includes('us')) return 'us';\r\n if (list.includes('ca')) return 'ca';\r\n }\r\n\r\n const preferred = (preferredCountries ?? []).map((x) => x.toLowerCase());\r\n for (const p of preferred) {\r\n if (list.includes(p)) return p;\r\n }\r\n\r\n return list[0] ?? null;\r\n}\r\n\r\nexport function getInitialCountryFromBrowser(fallbackIso2: string): string {\r\n const lang = globalThis?.navigator?.language ?? '';\r\n const region = lang.split('-')[1]?.toLowerCase() ?? '';\r\n return region.length === 2 ? region : fallbackIso2;\r\n}\r\n","import { InjectionToken } from '@angular/core';\r\n\r\nexport interface SolarisFormFieldFeature {\r\n kind: 'email' | 'password';\r\n}\r\n\r\nexport const SOLARIS_FORM_FIELD_FEATURES =\r\n new InjectionToken<ReadonlyArray<SolarisFormFieldFeature>>('SOLARIS_FORM_FIELD_FEATURES');\r\n","import { Injectable, Optional, inject, signal, DestroyRef } from '@angular/core';\r\nimport { NgControl, FormGroupDirective, NgForm } from '@angular/forms';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\n\r\nimport type { SolarisPasswordDirective } from '../../input-text/directives/input-password.directive';\r\nimport type { SolarisEmailDirective } from '../../input-text/directives/input-email.directive';\r\nimport { SOLARIS_FORM_FIELD_FEATURES } from '../tokens/form-field-features';\r\n\r\n@Injectable()\r\nexport class SolarisFormFieldController {\r\n features = inject(SOLARIS_FORM_FIELD_FEATURES, { optional: true }) ?? [];\r\n @Optional() private readonly ngForm = inject(NgForm, { optional: true });\r\n @Optional() private readonly formGroupDir = inject(FormGroupDirective, { optional: true });\r\n private readonly destroyRef = inject(DestroyRef);\r\n\r\n readonly submitted = signal<boolean>(false);\r\n readonly control = signal<NgControl | null>(null);\r\n readonly email = signal<SolarisEmailDirective | null>(null);\r\n readonly password = signal<SolarisPasswordDirective | null>(null);\r\n\r\n constructor() {\r\n this.formGroupDir?.ngSubmit\r\n .pipe(takeUntilDestroyed(this.destroyRef))\r\n .subscribe(() => this.submitted.set(true));\r\n\r\n this.ngForm?.ngSubmit\r\n .pipe(takeUntilDestroyed(this.destroyRef))\r\n .subscribe(() => this.submitted.set(true));\r\n }\r\n\r\n registerPassword(dir: SolarisPasswordDirective | null) {\r\n this.password.set(dir);\r\n }\r\n\r\n registerEmail(dir: SolarisEmailDirective | null) {\r\n this.email.set(dir);\r\n }\r\n\r\n registerControl(ctrl: NgControl | null) {\r\n if (!ctrl && this.control()) return;\r\n this.control.set(ctrl);\r\n }\r\n\r\n passwordVisible(): boolean {\r\n return this.password()?.visible() ?? false;\r\n }\r\n\r\n togglePasswordVisibility(): void {\r\n this.password()?.toggle();\r\n }\r\n\r\n resetSubmitted() {\r\n this.submitted.set(false);\r\n }\r\n}\r\n","import { InjectionToken } from '@angular/core';\r\n\r\nexport interface SolarisInputApi {\r\n element: HTMLInputElement | HTMLTextAreaElement;\r\n setType?(type: string): void;\r\n getType?(): string;\r\n}\r\n\r\nexport const SOLARIS_INPUT = new InjectionToken<SolarisInputApi>('SOLARIS_INPUT');\r\n","import { Directive, ElementRef, HostBinding, inject, Injector, Optional } from '@angular/core';\r\nimport { NgControl } from '@angular/forms';\r\n\r\nimport { SolarisFormFieldController } from '../../form-field/controller/form-field-controller';\r\nimport { SOLARIS_INPUT, SolarisInputApi } from '../tokens/input.token';\r\n\r\n@Directive({\r\n selector: 'input[solaris-input],textarea[solaris-input]',\r\n standalone: true,\r\n providers: [\r\n {\r\n provide: SOLARIS_INPUT,\r\n useFactory: (): SolarisInputApi => {\r\n const el = inject(ElementRef<HTMLInputElement | HTMLTextAreaElement>).nativeElement;\r\n return {\r\n element: el,\r\n setType: (type: string) => {\r\n if (el instanceof HTMLInputElement) el.type = type;\r\n },\r\n getType: () => (el instanceof HTMLInputElement ? el.type : 'textarea'),\r\n };\r\n },\r\n },\r\n ],\r\n})\r\nexport class InputTextDirective {\r\n private readonly el = inject(ElementRef<HTMLInputElement | HTMLTextAreaElement>);\r\n private readonly injector = inject(Injector);\r\n\r\n @Optional()\r\n private readonly field = inject(SolarisFormFieldController, { optional: true });\r\n\r\n @HostBinding('attr.solaris-input') readonly attr = '';\r\n\r\n @HostBinding('attr.placeholder') get placeholderAttr() {\r\n return this.el.nativeElement.getAttribute('placeholder');\r\n }\r\n\r\n constructor() {\r\n queueMicrotask(() => {\r\n const ngc = this.injector.get(NgControl, null, { self: true, optional: true });\r\n this.field?.registerControl(ngc);\r\n });\r\n }\r\n}\r\n","import { AfterViewInit, ChangeDetectionStrategy, Component, ElementRef, forwardRef, HostBinding, inject,\r\n Injector, Input, OnDestroy, Renderer2, ViewChild } from '@angular/core';\r\nimport {\r\n AbstractControl,\r\n ControlValueAccessor,\r\n NG_VALIDATORS,\r\n NG_VALUE_ACCESSOR,\r\n NgControl,\r\n ValidationErrors,\r\n Validator\r\n} from '@angular/forms';\r\n\r\nimport { enforceMaxDigitsInPlace, insertAtCursor, sanitizePhoneInput, shouldBlockBeforeInput, shouldBlockKeyDown } from '../helper/phone-input.sanitize';\r\nimport { buildCallingCodeIndex, getInitialCountryFromBrowser, pickIso2ForCallingCode } from '../helper/phone-input.country';\r\nimport { SolarisFormFieldController } from '../../form-field/controller/form-field-controller';\r\nimport { InputTextDirective } from '../../input-text/directives/input-text.directive';\r\nimport type { ItiInstance, ItiUtils } from '../model/phone-input.iti-types';\r\nimport { AsYouType, parsePhoneNumberFromString, } from 'libphonenumber-js';\r\nimport { PhoneFormat, Iso2 } from '../model/phone-input.type';\r\nimport intlTelInput from 'intl-tel-input';\r\n\r\n@Component({\r\n selector: 'solaris-phone-input',\r\n standalone: true,\r\n templateUrl: './phone-input.html',\r\n styleUrl: './phone-input.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => SolarisPhoneInput),\r\n multi: true,\r\n },\r\n {\r\n provide: NG_VALIDATORS,\r\n useExisting: forwardRef(() => SolarisPhoneInput),\r\n multi: true,\r\n },\r\n ],\r\n imports: [InputTextDirective],\r\n})\r\nexport class SolarisPhoneInput implements AfterViewInit, OnDestroy, ControlValueAccessor, Validator {\r\n private readonly field = inject(SolarisFormFieldController, { optional: true });\r\n private readonly renderer = inject(Renderer2);\r\n private readonly injector = inject(Injector);\r\n\r\n @HostBinding('attr.solaris-phone-input') readonly marker = '';\r\n @ViewChild('input', { static: false }) inputRef?: ElementRef<HTMLInputElement>;\r\n\r\n @Input() set placeholder(v: string | undefined) {\r\n this._placeholder = v;\r\n this.applyPlaceholderIfCustom();\r\n }\r\n get placeholder(): string | undefined {\r\n return this._placeholder;\r\n }\r\n\r\n @Input() format: PhoneFormat = 'e164';\r\n @Input({ alias: 'only-countries' }) onlyCountries?: Iso2[];\r\n @Input({ alias: 'default-country' }) defaultCountry: Iso2 = 'br';\r\n @Input({ alias: 'preferred-countries' }) preferredCountries?: Iso2[];\r\n\r\n private _raw = '';\r\n private maxDigits?: number;\r\n private _placeholder?: string;\r\n protected _disabled = false;\r\n private iti: ItiInstance | null = null;\r\n private _lastE164: string | null = null;\r\n private readonly allowedChars = /^[0-9+\\-\\s().]*$/;\r\n private callingCodeIndex = new Map<string, string[]>();\r\n\r\n private onChange: (v: string | null) => void = () => {};\r\n private onTouched: () => void = () => {};\r\n private onValidatorChange?: () => void;\r\n\r\n constructor() {\r\n queueMicrotask(() => {\r\n const ngControl = this.injector.get(NgControl, null, { self: true, optional: true });\r\n this.field?.registerControl(ngControl);\r\n });\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n const el = this.el;\r\n if (!el) return;\r\n this.callingCodeIndex = buildCallingCodeIndex();\r\n this.initIntlTelInput(el);\r\n this.setupListeners(el);\r\n\r\n if (this._raw) el.value = this._raw;\r\n\r\n this.normalizeAndFormat(true);\r\n this.recalculateLimits();\r\n this.afterUtilsReady();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n const el = this.el;\r\n if (el) this.teardownListeners(el);\r\n this.iti?.destroy?.();\r\n this.iti = null;\r\n }\r\n\r\n public writeValue(value: string | null): void {\r\n this._lastE164 = value ?? null;\r\n const el = this.el;\r\n if (!el) return;\r\n\r\n if (!value) {\r\n this._raw = '';\r\n el.value = '';\r\n this.recomputeFromRaw(true);\r\n return;\r\n }\r\n const iso2 = this.getSelectedIso2();\r\n const cc = iso2 ? iso2.toUpperCase() : undefined;\r\n const parsed = parsePhoneNumberFromString(value, cc as any);\r\n const next = parsed ? parsed.formatNational() : value;\r\n this._raw = next;\r\n el.value = next;\r\n\r\n this.recomputeFromRaw(true);\r\n }\r\n\r\n public registerOnChange(fn: (v: string | null) => void): void {\r\n this.onChange = fn;\r\n }\r\n\r\n public registerOnTouched(fn: () => void): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n public setDisabledState(isDisabled: boolean): void {\r\n this._disabled = isDisabled;\r\n const el = this.el;\r\n if (el) el.disabled = isDisabled;\r\n }\r\n\r\n public validate(): ValidationErrors | null {\r\n if (!this._raw?.trim()) return null;\r\n return this._lastE164 ? null : { solarisPhone: true };\r\n }\r\n\r\n public registerOnValidatorChange(fn: () => void): void {\r\n this.onValidatorChange = fn;\r\n }\r\n\r\n protected onInput(silent = false): void {\r\n this.normalizeAndFormat(silent);\r\n }\r\n\r\n protected onBlur(): void {\r\n this.onTouched();\r\n const el = this.el;\r\n if (!el) return;\r\n\r\n this._raw = el.value ?? '';\r\n this.recomputeFromRaw(false);\r\n }\r\n\r\n protected onFocus(): void {\r\n const el = this.el;\r\n if (!el || this._disabled) return;\r\n if ((el.value ?? '').trim().length) return;\r\n\r\n const dial = this.getSelectedDialCode();\r\n if (!dial) return;\r\n\r\n const v = `+${dial} `;\r\n el.value = v;\r\n this._raw = v;\r\n\r\n queueMicrotask(() => el.setSelectionRange(v.length, v.length));\r\n this.recomputeFromRaw(false);\r\n }\r\n\r\n private normalizeAndFormat(silent: boolean): void {\r\n const el = this.el;\r\n if (!el) return;\r\n\r\n const raw = sanitizePhoneInput(el.value ?? '');\r\n const selectedIso2 = this.getSelectedIso2();\r\n const selectedCountry = selectedIso2 ? selectedIso2.toUpperCase() : undefined;\r\n\r\n const ayt = raw.trim().startsWith('+')\r\n ? new AsYouType()\r\n : new AsYouType(selectedCountry as any);\r\n\r\n const formatted = ayt.input(raw);\r\n el.value = formatted;\r\n this._raw = formatted;\r\n\r\n const number = ayt.getNumber();\r\n if (number?.countryCallingCode && this.iti) {\r\n const nextIso2 = pickIso2ForCallingCode(\r\n number.countryCallingCode,\r\n selectedIso2,\r\n this.callingCodeIndex,\r\n this.preferredCountries,\r\n );\r\n if (nextIso2 && nextIso2 !== selectedIso2) {\r\n this.setCountrySafely(nextIso2);\r\n }\r\n }\r\n\r\n enforceMaxDigitsInPlace(el, this.maxDigits);\r\n this.recomputeFromRaw(silent);\r\n }\r\n\r\n private recomputeFromRaw(silent: boolean): void {\r\n const raw = (this._raw ?? '').trim();\r\n\r\n if (!raw) {\r\n this._lastE164 = null;\r\n if (!silent) this.emit(null);\r\n return;\r\n }\r\n\r\n const iso2 = this.getSelectedIso2();\r\n const cc = iso2 ? iso2.toUpperCase() : undefined;\r\n\r\n const parsed = raw.startsWith('+')\r\n ? parsePhoneNumberFromString(raw)\r\n : parsePhoneNumberFromString(raw, cc as any);\r\n\r\n if (parsed?.isValid()) {\r\n this._lastE164 = parsed.number;\r\n if (!silent) this.emit(parsed.number);\r\n return;\r\n }\r\n\r\n this._lastE164 = null;\r\n if (!silent) this.emit(null);\r\n }\r\n\r\n private emit(v: string | null): void {\r\n this.onChange(v);\r\n this.onValidatorChange?.();\r\n }\r\n\r\n private initIntlTelInput(el: HTMLInputElement): void {\r\n const options: Record<string, unknown> = {\r\n initialCountry: getInitialCountryFromBrowser((this.defaultCountry || 'br').toLowerCase()),\r\n separateDialCode: false,\r\n nationalMode: false,\r\n formatOnDisplay: true,\r\n autoPlaceholder: 'aggressive',\r\n loadUtils: () => import('intl-tel-input/build/js/utils.js'),\r\n };\r\n\r\n const only = this.onlyCountries?.map((x) => x.toLowerCase());\r\n if (only?.length) options['onlyCountries'] = only;\r\n const preferred = this.preferredCountries?.map((x) => x.toLowerCase());\r\n if (preferred?.length) options['preferredCountries'] = preferred;\r\n this.iti = intlTelInput(el, options) as unknown as ItiInstance;\r\n this.applyPlaceholderIfCustom();\r\n }\r\n\r\n private afterUtilsReady(): void {\r\n const itiAny: any = this.iti as any;\r\n const p: Promise<unknown> | undefined = itiAny?.promise;\r\n\r\n const run = () => {\r\n const iso2 = this.getSelectedIso2();\r\n if (iso2) this.setCountrySafely(iso2);\r\n this.recalculateLimits();\r\n };\r\n\r\n if (p?.then) p.then(run);\r\n else queueMicrotask(run);\r\n }\r\n\r\n private setCountrySafely(iso2: string): void {\r\n try { (this.iti as any)?.setCountry?.(iso2) } catch {}\r\n }\r\n\r\n private recalculateLimits(): void {\r\n this.updateMaxDigits();\r\n const el = this.el;\r\n if (el) enforceMaxDigitsInPlace(el, this.maxDigits);\r\n }\r\n\r\n private updateMaxDigits(): void {\r\n if (!this.iti) {\r\n this.maxDigits = undefined;\r\n return;\r\n }\r\n\r\n const c: any = (this.iti as any).getSelectedCountryData?.();\r\n const iso2 = String(c?.iso2 ?? '').toLowerCase();\r\n const dialDigits = String(c?.dialCode ?? '').replace(/\\D/g, '').length;\r\n\r\n const u = this.getUtils();\r\n\r\n const exNationalDigits = this.safe(() => {\r\n if (!u?.getExampleNumber) return undefined;\r\n const t = u.numberType?.MOBILE;\r\n const ex = u.getExampleNumber?.(iso2, true, t);\r\n return ex ? (String(ex).match(/\\d/g) ?? []).length : undefined;\r\n });\r\n\r\n if (exNationalDigits && exNationalDigits > 0) {\r\n this.maxDigits = dialDigits + exNationalDigits;\r\n return;\r\n }\r\n\r\n const el = this.el;\r\n const ph = el?.getAttribute('placeholder') ?? '';\r\n const phDigits = (ph.match(/\\d/g) ?? []).length;\r\n this.maxDigits = phDigits > 0 ? phDigits : undefined;\r\n }\r\n\r\n private setupListeners(el: HTMLInputElement): void {\r\n el.addEventListener('beforeinput', this.onBeforeInput as any);\r\n el.addEventListener('keydown', this.onKeyDown);\r\n el.addEventListener('paste', this.onPaste);\r\n el.addEventListener('countrychange', this.onCountryChange);\r\n }\r\n\r\n private teardownListeners(el: HTMLInputElement): void {\r\n el.removeEventListener('beforeinput', this.onBeforeInput as any);\r\n el.removeEventListener('keydown', this.onKeyDown);\r\n el.removeEventListener('paste', this.onPaste);\r\n el.removeEventListener('countrychange', this.onCountryChange);\r\n }\r\n\r\n private readonly onCountryChange = () => {\r\n this.recalculateLimits();\r\n\r\n const el = this.el;\r\n if (!el || !(el.value ?? '').trim()) return;\r\n\r\n this._raw = el.value ?? '';\r\n this.normalizeAndFormat(false);\r\n };\r\n\r\n private readonly onBeforeInput = (ev: InputEvent) => {\r\n if (shouldBlockBeforeInput(ev, { allowedChars: this.allowedChars })) {\r\n ev.preventDefault();\r\n }\r\n };\r\n\r\n private readonly onKeyDown = (ev: KeyboardEvent) => {\r\n if (shouldBlockKeyDown(ev)) ev.preventDefault();\r\n };\r\n\r\n private readonly onPaste = (ev: ClipboardEvent) => {\r\n const el = this.el;\r\n if (!el) return;\r\n\r\n const text = ev.clipboardData?.getData('text') ?? '';\r\n if (!text) return;\r\n\r\n const sanitized = sanitizePhoneInput(text);\r\n if (sanitized === text) return;\r\n\r\n ev.preventDefault();\r\n insertAtCursor(el, sanitized);\r\n\r\n queueMicrotask(() => {\r\n this.recalculateLimits();\r\n this.normalizeAndFormat(false);\r\n });\r\n };\r\n\r\n private applyPlaceholderIfCustom(): void {\r\n const el = this.el;\r\n if (!el) return;\r\n\r\n const ph = this._placeholder?.trim();\r\n if (ph) this.renderer.setAttribute(el, 'placeholder', ph);\r\n }\r\n\r\n private getSelectedIso2(): string | null {\r\n try {\r\n const data = (this.iti as any)?.getSelectedCountryData?.();\r\n return (data?.iso2 as string | undefined)?.toLowerCase() ?? null;\r\n } catch {\r\n return null;\r\n }\r\n }\r\n\r\n private getSelectedDialCode(): string | null {\r\n try {\r\n const data = (this.iti as any)?.getSelectedCountryData?.();\r\n return (data?.dialCode as string | undefined) ?? null;\r\n } catch {\r\n return null;\r\n }\r\n }\r\n\r\n private getUtils(): ItiUtils | undefined {\r\n return (globalThis as any).intlTelInputUtils as ItiUtils | undefined;\r\n }\r\n\r\n private safe<T>(fn: () => T): T | undefined {\r\n try {\r\n return fn();\r\n } catch {\r\n return undefined;\r\n }\r\n }\r\n\r\n private get el(): HTMLInputElement | null {\r\n return this.inputRef?.nativeElement ?? null;\r\n }\r\n}\r\n","<input #input solaris-input type=\"tel\" [disabled]=\"_disabled\" (focus)=\"onFocus()\" (input)=\"onInput()\"\r\n (blur)=\"onBlur()\" data-bwignore=\"true\"/>\r\n","import { Directive, HostBinding, Optional, inject, signal, WritableSignal, Input, forwardRef, Injector } from '@angular/core';\r\nimport { AbstractControl, NG_VALIDATORS, ValidationErrors, Validator, NgControl } from '@angular/forms';\r\n\r\nimport { SolarisFormFieldController } from '../../form-field/controller/form-field-controller';\r\nimport { SOLARIS_FORM_FIELD_FEATURES } from '../../form-field/tokens/form-field-features';\r\nimport { SolarisPasswordErrorBag } from '../models/password-directive.type';\r\n\r\n@Directive({\r\n selector: 'input[solaris-password]',\r\n standalone: true,\r\n providers: [\r\n { provide: NG_VALIDATORS, useExisting: forwardRef(() => SolarisPasswordDirective), multi: true },\r\n { provide: SOLARIS_FORM_FIELD_FEATURES, useValue: { kind: 'password' }, multi: true }\r\n ],\r\n})\r\nexport class SolarisPasswordDirective implements Validator {\r\n @Input() minLength = 8;\r\n @Input() requireUpper = true;\r\n @Input() requireLower = true;\r\n @Input() requireNumber = true;\r\n @Input() requireSpecial = false;\r\n\r\n @Input() set requireUpperKebab(v: any) { this.requireUpper = coerceBoolean(v); this._onChange?.(); }\r\n @Input() set requireLowerKebab(v: any) { this.requireLower = coerceBoolean(v); this._onChange?.(); }\r\n @Input() set requireNumberKebab(v: any) { this.requireNumber = coerceBoolean(v); this._onChange?.(); }\r\n @Input() set minLengthKebab(v: any) { this.minLength = coerceNumber(v, 8); this._onChange?.(); }\r\n @Input() set requireSpecialKebab(v: any) { this.requireSpecial = coerceBoolean(v); this._onChange?.(); }\r\n\r\n @HostBinding('attr.type') get type() {\r\n return this.visible() ? 'text' : 'password';\r\n }\r\n @HostBinding('attr.spellcheck') spellcheck = 'false';\r\n @HostBinding('attr.solaris-password') readonly marker = '';\r\n @HostBinding('attr.solaris-input') readonly solarisInput = '';\r\n @HostBinding('attr.autocapitalize') autocapitalize = 'none';\r\n @HostBinding('attr.autocomplete') autocomplete = 'current-password';\r\n\r\n @Optional() private readonly field = inject(SolarisFormFieldController, { optional: true });\r\n private readonly injector = inject(Injector);\r\n\r\n readonly visible: WritableSignal<boolean> = signal(false);\r\n\r\n private _onChange?: () => void;\r\n\r\n constructor() {\r\n this.field?.registerPassword(this);\r\n queueMicrotask(() => {\r\n const ngc = this.injector.get(NgControl, null, { self: true, optional: true });\r\n this.field?.registerControl(ngc);\r\n });\r\n }\r\n\r\n public toggle(): void {\r\n this.visible.set(!this.visible());\r\n }\r\n\r\n public validate(control: AbstractControl): ValidationErrors | null {\r\n const v = String(control.value ?? '');\r\n if (!v) return null;\r\n\r\n const errors: SolarisPasswordErrorBag = {};\r\n\r\n if (this.minLength && v.length < this.minLength) {\r\n errors.minLength = { requiredLength: this.minLength, actualLength: v.length };\r\n }\r\n if (this.requireLower && !/[a-z]/.test(v)) errors.lowercase = true;\r\n if (this.requireUpper && !/[A-Z]/.test(v)) errors.uppercase = true;\r\n if (this.requireNumber && !/\\d/.test(v)) errors.number = true;\r\n if (this.requireSpecial && !/[^\\w\\s]/.test(v)) errors.special = true;\r\n\r\n return Object.keys(errors).length ? { solarisPassword: errors } : null;\r\n }\r\n\r\n public registerOnValidatorChange(fn: () => void): void {\r\n this._onChange = fn;\r\n }\r\n}\r\n\r\nfunction coerceBoolean(v: any): boolean {\r\n return v === '' || v === true || v === 'true' || v === 1 || v === '1';\r\n}\r\n\r\nfunction coerceNumber(v: any, fallback: number): number {\r\n const n = Number(v);\r\n return Number.isFinite(n) ? n : fallback;\r\n}\r\n","import { AbstractControl, NG_VALIDATORS, ValidationErrors, Validator, NgControl } from '@angular/forms';\r\nimport { Directive, forwardRef, HostBinding, inject, Optional, Injector } from '@angular/core';\r\n\r\nimport { SolarisFormFieldController } from '../../form-field/controller/form-field-controller';\r\nimport { SOLARIS_FORM_FIELD_FEATURES } from '../../form-field/tokens/form-field-features';\r\n\r\n@Directive({\r\n selector: 'input[solaris-email],input[solarisEmail]',\r\n standalone: true,\r\n providers: [\r\n { provide: NG_VALIDATORS, useExisting: forwardRef(() => SolarisEmailDirective), multi: true },\r\n { provide: SOLARIS_FORM_FIELD_FEATURES, useValue: { kind: 'email' }, multi: true }\r\n ],\r\n})\r\nexport class SolarisEmailDirective implements Validator {\r\n @HostBinding('attr.type') type = 'email';\r\n @HostBinding('attr.inputmode') inputmode = 'email';\r\n @HostBinding('attr.spellcheck') spellcheck = 'false';\r\n @HostBinding('attr.autocomplete') autocomplete = 'email';\r\n @HostBinding('attr.solaris-input') readonly solarisInput = '';\r\n @HostBinding('attr.autocapitalize') autocapitalize = 'none';\r\n @Optional() private readonly field = inject(SolarisFormFieldController, { optional: true });\r\n private readonly injector = inject(Injector);\r\n\r\n constructor() {\r\n this.field?.registerEmail(this);\r\n queueMicrotask(() => {\r\n const ngc = this.injector.get(NgControl, null, { self: true, optional: true });\r\n this.field?.registerControl(ngc);\r\n });\r\n }\r\n\r\n validate(control: AbstractControl): ValidationErrors | null {\r\n const v = String(control.value ?? '').trim();\r\n if (!v) return null;\r\n const ok = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/.test(v);\r\n return ok ? null : { solarisEmail: true };\r\n }\r\n}\r\n","import { InjectionToken } from '@angular/core';\r\n\r\nexport interface SolarisFormFieldControllerLike {\r\n passwordVisible(): boolean\r\n togglePasswordVisibility(): void;\r\n}\r\n\r\nexport const SOLARIS_FORM_FIELD_CONTROLLER =\r\n new InjectionToken<SolarisFormFieldControllerLike>('SOLARIS_FORM_FIELD_CONTROLLER');\r\n","import { ChangeDetectionStrategy, Component, HostBinding, Optional, inject } from '@angular/core';\r\n\r\nimport { SOLARIS_FORM_FIELD_CONTROLLER, SolarisFormFieldControllerLike } from '../../form-field/tokens/form-field-controller.token';\r\nimport { SOLARIS_TRANSLATION, TranslationInterface } from '@educarehq/solaris-services';\r\n\r\n@Component({\r\n selector: 'solaris-password-toggle',\r\n standalone: true,\r\n templateUrl: './password-toggle.html',\r\n styleUrls: ['./password-toggle.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class PasswordToggle {\r\n private readonly translationService: TranslationInterface = inject(SOLARIS_TRANSLATION);\r\n\r\n @HostBinding('attr.solaris-suffix') readonly solarisSuffix = '';\r\n @Optional() private readonly field = inject<SolarisFormFieldControllerLike>(SOLARIS_FORM_FIELD_CONTROLLER, { optional: true });\r\n\r\n protected visible = () => this.field?.passwordVisible() ?? false;\r\n\r\n protected toggle(): void {\r\n this.field?.togglePasswordVisibility();\r\n }\r\n protected get ariaLabelHide() { return this.translationService.translate('ui.solaris.password.aria.hidePassword'); }\r\n protected get ariaLabelShow() { return this.translationService.translate('ui.solaris.password.aria.showPassword'); }\r\n}\r\n","<button class=\"solaris-password-toggle\" type=\"button\" (click)=\"toggle()\" [attr.aria-pressed]=\"visible() ? 'true' : 'false'\"\r\n [attr.aria-label]=\"visible() ? ariaLabelHide : ariaLabelShow\">\r\n @if (visible()) { <i class=\"ph ph-eye-slash\"></i> }\r\n @else { <i class=\"ph ph-eye\"></i> }\r\n</button>\r\n","import { Directive, Optional, inject } from '@angular/core';\r\nimport { NgControl } from '@angular/forms';\r\n\r\nimport { SolarisFormFieldController } from '../controller/form-field-controller';\r\n\r\n@Directive({\r\n selector: 'input[solaris-password],input[solaris-email],input[solaris-input],textarea[solaris-input]',\r\n standalone: true,\r\n})\r\nexport class SolarisControlBridgeDirective {\r\n @Optional() private readonly ctrl = inject(NgControl, { optional: true });\r\n @Optional() private readonly field = inject(SolarisFormFieldController, { optional: true });\r\n\r\n constructor() {\r\n if (this.ctrl) this.field?.registerControl(this.ctrl);\r\n }\r\n}\r\n","import { Directive, HostBinding } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[solaris-prefix]',\r\n standalone: true,\r\n})\r\nexport class SolarisPrefixDirective {\r\n @HostBinding('attr.solaris-prefix') readonly attr = '';\r\n}\r\n","import { Directive } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[solaris-suffix]',\r\n standalone: true\r\n})\r\nexport class SolarisSuffixDirective {}\r\n","import { ChangeDetectionStrategy, Component, ContentChild, Input, computed, effect, inject, signal, input } from '@angular/core';\r\n\r\nimport { SolarisFormFieldAppearance, SolarisFormFieldRadius } from '../model/form-field.type';\r\nimport { SOLARIS_FORM_FIELD_CONTROLLER } from '../tokens/form-field-controller.token';\r\nimport { SolarisShowErrors } from '../../../common/model/common-configurations.type';\r\nimport { PasswordToggle } from '../../input-text/password-toggle/password-toggle';\r\nimport { SolarisFormFieldController } from '../controller/form-field-controller';\r\nimport { SolarisPrefixDirective } from '../directives/prefix.directive';\r\nimport { SolarisSuffixDirective } from '../directives/suffix.directive';\r\nimport { SolarisTranslationPipe } from '@educarehq/solaris-services';\r\nimport { FieldErrorComponent } from '../messages/error/field-error';\r\nimport { merge } from 'rxjs';\r\n\r\n@Component({\r\n selector: 'solaris-form-field',\r\n standalone: true,\r\n imports: [PasswordToggle, FieldErrorComponent, SolarisTranslationPipe],\r\n templateUrl: './form-field.html',\r\n styleUrls: ['./form-field.scss'],\r\n providers: [\r\n SolarisFormFieldController,\r\n { provide: SOLARIS_FORM_FIELD_CONTROLLER, useExisting: SolarisFormFieldController },\r\n ],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class FormField {\r\n protected readonly field = inject(SolarisFormFieldController);\r\n @ContentChild(SolarisPrefixDirective) prefix?: SolarisPrefixDirective;\r\n @ContentChild(SolarisSuffixDirective) suffix?: SolarisSuffixDirective;\r\n\r\n @Input() public hint?: string = '';\r\n @Input() public label?: string = '';\r\n @Input() public hintKey?: string = '';\r\n @Input() public labelKey?: string = '';\r\n @Input() public radius: SolarisFormFieldRadius = 'sm';\r\n @Input() public showErrors: SolarisShowErrors = 'dirtyOrTouched';\r\n @Input() public appearance: SolarisFormFieldAppearance = 'filled';\r\n\r\n private readonly _tick = signal(0);\r\n readonly customErrorKey = input<string>('');\r\n readonly invalid = input<boolean | null>(null);\r\n readonly customErrorParams = input<Record<string, unknown> | undefined>(undefined);\r\n\r\n constructor() {\r\n effect((onCleanup) => {\r\n const ac = this.field.control()?.control;\r\n if (!ac) return;\r\n\r\n const sub = merge(ac.statusChanges, ac.valueChanges).subscribe(() => {\r\n this._tick.update(v => v + 1);\r\n });\r\n\r\n onCleanup(() => sub.unsubscribe());\r\n });\r\n }\r\n\r\n get hasPrefix(): boolean { return !!this.prefix; }\r\n get hasSuffix(): boolean { return !!this.suffix; }\r\n\r\n private getDirectErrorKey(errors: Record<string, any>): string {\r\n if (errors['required']) return 'ui.solaris.validation.required';\r\n if (errors['email'] || errors['solarisEmail']) return 'ui.solaris.validation.email';\r\n return '';\r\n }\r\n\r\n private getPasswordErrorKey(bag: any): string {\r\n if (bag?.minLength) return 'ui.solaris.validation.password.minLength';\r\n if (bag?.uppercase) return 'ui.solaris.validation.password.uppercase';\r\n if (bag?.lowercase) return 'ui.solaris.validation.password.lowercase';\r\n if (bag?.number) return 'ui.solaris.validation.password.number';\r\n if (bag?.special) return 'ui.solaris.validation.password.special';\r\n return 'ui.solaris.validation.password.invalid';\r\n }\r\n\r\n readonly showPasswordToggle = computed(() => !!this.field.password());\r\n\r\n readonly invalidComputed = computed(() => {\r\n this._tick();\r\n const invalid = this.invalid();\r\n if (invalid !== null) return invalid;\r\n const c = this.field.control();\r\n if (!c) return false;\r\n if (this.showErrors === 'always') return !!c.invalid;\r\n if (this.showErrors === 'submitted') return !!(c.invalid && this.field.submitted());\r\n return !!(c.invalid && (c.touched || c.dirty));\r\n });\r\n\r\n readonly errorParams = computed<Record<string, unknown> | undefined>(() => {\r\n this._tick();\r\n if (!this.invalidComputed()) return undefined;\r\n\r\n const customKey = this.customErrorKey()?.trim();\r\n if (customKey) {\r\n return this.customErrorParams();\r\n }\r\n\r\n const errors = this.field.control()?.errors;\r\n if (!errors) return undefined;\r\n\r\n if (errors['solarisPassword']) {\r\n return errors['solarisPassword'];\r\n }\r\n\r\n return undefined;\r\n });\r\n\r\n readonly errorKey = computed(() => {\r\n this._tick();\r\n\r\n if (!this.invalidComputed()) return '';\r\n\r\n const customKey = this.customErrorKey()?.trim();\r\n if (customKey) return customKey;\r\n\r\n const errors = this.field.control()?.errors;\r\n if (!errors) return '';\r\n\r\n const direct = this.getDirectErrorKey(errors);\r\n if (direct) return direct;\r\n\r\n if (errors['solarisPassword']) {\r\n return this.getPasswordErrorKey(errors['solarisPassword']);\r\n }\r\n\r\n return 'solaris.validation.invalid';\r\n });\r\n\r\n readonly disabledComputed = computed(() => {\r\n this._tick();\r\n const c = this.field.control();\r\n return !!c?.disabled;\r\n });\r\n}\r\n","<div class=\"solaris-form-field\" [class.solaris-form-field--has-prefix]=\"hasPrefix\" [attr.data-appearance]=\"appearance\"\r\n [attr.data-invalid]=\"invalidComputed() ? 'true' : null\" [attr.data-radius]=\"radius\"\r\n [attr.data-disabled]=\"disabledComputed() ? 'true' : null\">\r\n @if ((label || labelKey)) {\r\n <label class=\"solaris-form-field__label\">\r\n @if (labelKey) { {{ labelKey | translate }} }\r\n @else if (label) { {{ label }} }\r\n </label>\r\n }\r\n\r\n <div class=\"solaris-form-field__frame\">\r\n @if (hasPrefix) {\r\n <span class=\"solaris-form-field__prefix\" aria-hidden=\"true\">\r\n <ng-content select=\"[solaris-prefix]\"></ng-content>\r\n </span>\r\n }\r\n\r\n <div class=\"solaris-form-field__body\">\r\n <div class=\"solaris-form-field__control-slot\">\r\n <ng-content></ng-content>\r\n </div>\r\n\r\n @if (hasSuffix || showPasswordToggle() || invalidComputed() || disabledComputed()) {\r\n <span class=\"solaris-form-field__suffix\">\r\n @if (disabledComputed()) {\r\n <span class=\"solaris-form-field__status solaris-form-field__status--disabled\" aria-hidden=\"true\">\r\n <i class=\"ph ph-lock-simple\"></i>\r\n </span>\r\n } @else {\r\n <ng-content select=\"[solaris-suffix]\"></ng-content>\r\n\r\n @if (showPasswordToggle()) {\r\n <solaris-password-toggle></solaris-password-toggle>\r\n }\r\n\r\n @if (invalidComputed()) {\r\n <span class=\"solaris-form-field__status\" aria-hidden=\"true\">\r\n <i class=\"ph ph-warning-circle\"></i>\r\n </span>\r\n }\r\n }\r\n </span>\r\n }\r\n </div>\r\n </div>\r\n\r\n @if (errorKey()) {\r\n <solaris-field-error [textKey]=\"errorKey()\" [textParams]=\"errorParams()\"></solaris-field-error>\r\n } @else {\r\n <ng-content select=\"[form-field-message]\"></ng-content>\r\n }\r\n\r\n @if (hint || hintKey) {\r\n <div class=\"solaris-form-field__hint\">\r\n @if (hintKey) { {{ hintKey | translate }} }\r\n @else { {{ hint }} }\r\n </div>\r\n }\r\n</div>\r\n","import { AfterViewInit, ChangeDetectionStrategy, Component, DestroyRef, ElementRef, HostBinding, Input,\r\n Optional, ViewChild, computed, effect, inject, signal, Injector, forwardRef, OnInit } from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR, NgControl } from '@angular/forms';\r\nimport { NgOptimizedImage } from '@angular/common';\r\n\r\nimport { SolarisSelectNode, SelectionDisplay, StackLevel, SolarisSelectItem, SolarisSelectRow } from '../model/select.type';\r\nimport { SolarisPopoverTriggerDirective } from '../../../navigations/popover/directives/popover-trigger.directive';\r\nimport { SolarisPopoverPanelDirective } from '../../../navigations/popover/directives/popover-panel.directive';\r\nimport { SolarisFormFieldController } from '../../form-field/controller/form-field-controller';\r\nimport { SolarisTranslationPipe, SOLARIS_TRANSLATION } from '@educarehq/solaris-services';\r\nimport { SolarisPopover } from '../../../navigations/popover/component/popover';\r\n\r\n@Component({\r\n selector: 'solaris-select',\r\n standalone: true,\r\n imports: [\r\n SolarisPopover,\r\n SolarisPopoverTriggerDirective,\r\n SolarisPopoverPanelDirective,\r\n SolarisTranslationPipe,\r\n NgOptimizedImage,\r\n ],\r\n templateUrl: './select.html',\r\n styleUrls: ['./select.scss'],\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => SolarisSelect),\r\n multi: true,\r\n },\r\n ],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class SolarisSelect implements OnInit, ControlValueAccessor, AfterViewInit {\r\n private readonly translationService = inject(SOLARIS_TRANSLATION);\r\n private readonly destroyRef = inject(DestroyRef);\r\n private readonly injector = inject(Injector);\r\n\r\n @Optional() private readonly field = inject(SolarisFormFieldController, { optional: true });\r\n\r\n @ViewChild('tokenEl', { read: ElementRef }) tokenEl?: ElementRef<HTMLElement>;\r\n @ViewChild('measureSlot', { read: ElementRef }) measureSlot?: ElementRef<HTMLElement>;\r\n @ViewChild('triggerWrap', { read: ElementRef }) triggerWrap?: ElementRef<HTMLElement>;\r\n @ViewChild('triggerInput', { read: ElementRef }) triggerInput?: ElementRef<HTMLInputElement>;\r\n\r\n @HostBinding('attr.data-open') get dataOpen() {\r\n return this.open() ? 'true' : null;\r\n }\r\n\r\n @HostBinding('attr.data-compact') get dataCompact() {\r\n return this.compactInput() ? 'true' : null;\r\n }\r\n\r\n @HostBinding('attr.data-multiple') get dataMultiple() {\r\n return this.multiple ? 'true' : 'false';\r\n }\r\n\r\n private readonly _rootNodes = signal<SolarisSelectNode[]>([]);\r\n\r\n @Input() set items(v: SolarisSelectNode[] | null | undefined) {\r\n this._rootNodes.set(v ?? []);\r\n this.resetStack();\r\n\r\n const cur = this._value();\r\n const next = this.sanitizeValue(cur);\r\n const changed = !this.sameCvaValue(cur, next);\r\n\r\n if (changed) this._value.set(next);\r\n }\r\n\r\n private _multiple = false;\r\n\r\n @Input() set multiple(v: boolean) {\r\n this._multiple = v;\r\n\r\n const cur = this._value();\r\n\r\n if (this._multiple && !Array.isArray(cur)) this._value.set([]);\r\n if (!this._multiple && Array.isArray(cur)) this._value.set(null);\r\n }\r\n\r\n get multiple() {\r\n return this._multiple;\r\n }\r\n\r\n @Input() valueKey?: string;\r\n @Input() backKey = '';\r\n @Input() placeholder = '';\r\n @Input() placeholderKey = '';\r\n @Input() searchable = true;\r\n @Input() selectedCountKey = '';\r\n @Input() selectedFirst = true;\r\n @Input() searchPlaceholder = '';\r\n @Input() selectedCountText = '';\r\n @Input() panelMaxHeight = '32rem';\r\n @Input() searchPlaceholderKey = '';\r\n @Input() selectionSeparator = ', ';\r\n @Input() compareWith?: (a: any, b: any) => boolean;\r\n @Input() backText = 'ui.solaris.common.back';\r\n @Input() selectionDisplay: SelectionDisplay = 'auto';\r\n\r\n private readonly _disabled = signal(false);\r\n\r\n @Input() set disabled(v: boolean) {\r\n this._disabled.set(v);\r\n if (v) this.open.set(false);\r\n }\r\n\r\n get disabled() {\r\n return this._disabled();\r\n }\r\n\r\n readonly open = signal(false);\r\n readonly searchTerm = signal('');\r\n readonly activeIndex = signal(0);\r\n readonly showCount = signal(false);\r\n\r\n private readonly _value = signal<any>(null);\r\n private readonly _stack = signal<StackLevel[]>([]);\r\n\r\n readonly selectedItems = computed(() => {\r\n const all: SolarisSelectItem[] = [];\r\n this.collectAllItems(this._rootNodes(), all);\r\n\r\n const v = this._value();\r\n\r\n if (this.multiple) {\r\n const arr = Array.isArray(v) ? v : [];\r\n return all.filter(it => arr.some(s => this.eq(s, it.value)));\r\n }\r\n\r\n return all.filter(it => v != null && this.eq(v, it.value));\r\n });\r\n\r\n readonly showToken = computed(() => {\r\n return this.selectedCount() > 0;\r\n });\r\n\r\n readonly selectedText = computed(() => {\r\n const items = this.selectedItems();\r\n if (!items.length) return '';\r\n\r\n return items\r\n .map(it => this.itemLabel(it))\r\n .filter(Boolean)\r\n .join(this.selectionSeparator);\r\n });\r\n\r\n readonly triggerValue = computed(() => {\r\n if (this.isSearchMode()) return this.searchTerm();\r\n return '';\r\n });\r\n\r\n readonly activeOptionId = computed(() => {\r\n const idx = this.activeIndex();\r\n const row = this.itemRows()[idx];\r\n\r\n return row?.id ?? null;\r\n });\r\n\r\n readonly inputPlaceholderKey = computed(() => {\r\n if (this.selectedCount() > 0) return '';\r\n if (this.searchTerm().length > 0) return '';\r\n\r\n return this.open() && this.searchable\r\n ? this.searchPlaceholderKey || this.placeholderKey || ''\r\n : this.placeholderKey || '';\r\n });\r\n\r\n readonly inputPlaceholderText = computed(() => {\r\n if (this.selectedCount() > 0) return '';\r\n if (this.searchTerm().length > 0) return '';\r\n\r\n return this.open() && this.searchable\r\n ? this.searchPlaceholder || this.placeholder || 'Search...'\r\n : this.placeholder || '';\r\n });\r\n\r\n readonly viewModel = computed(() => {\r\n const lvl = this.currentLevel();\r\n const ordered = this.applySelectedFirst(lvl.nodes);\r\n const filtered = this.filterNodes(ordered, this.searchTerm());\r\n return this.buildRows(filtered);\r\n });\r\n\r\n readonly rows = computed(() => this.viewModel().rows);\r\n readonly canGoBack = computed(() => this._stack().length > 1);\r\n readonly selectedCount = computed(() => this.selectedItems().length);\r\n readonly isSearchMode = computed(() => this.open() && this.searchable);\r\n readonly itemRows = computed(() => this.viewModel().itemRows);\r\n readonly compactInput = computed(() => this.selectedCount() > 0 && this.searchTerm().length === 0);\r\n readonly currentLevel = computed(() => this._stack().at(-1) ?? { nodes: this._rootNodes() });\r\n\r\n private static seq = 0;\r\n\r\n private _measureNonce = 0;\r\n private resizeObs?: ResizeObserver;\r\n private propagateTouched: () => void = () => {};\r\n private propagateChange: (v: any) => void = () => {};\r\n private resolvedNgControl: NgControl | null | undefined = undefined;\r\n\r\n matchWidthEl: HTMLElement | null = null;\r\n\r\n public readonly _id = `solaris-select-${++SolarisSelect.seq}`;\r\n\r\n constructor() {\r\n this.resetStack();\r\n\r\n effect(() => {\r\n this.selectedText();\r\n this.compactInput();\r\n this.scheduleAutoMeasure();\r\n });\r\n\r\n effect(() => {\r\n const isOpen = this.open();\r\n\r\n if (isOpen) {\r\n this.activeIndex.set(0);\r\n this.scheduleFocusTrigger();\r\n } else {\r\n this.propagateTouched();\r\n this.searchTerm.set('');\r\n this.resetStack();\r\n }\r\n });\r\n }\r\n\r\n ngOnInit() {\r\n this.resolveNgControlOnce();\r\n }\r\n\r\n ngAfterViewInit() {\r\n const trigger = this.triggerWrap?.nativeElement;\r\n\r\n if (trigger) {\r\n this.matchWidthEl =\r\n (trigger.closest('.solaris-form-field')?.querySelector('.solaris-form-field__frame') as HTMLElement) ??\r\n null;\r\n }\r\n\r\n const el = this.triggerWrap?.nativeElement;\r\n\r\n if (!el) return;\r\n if (typeof ResizeObserver === 'undefined') return;\r\n\r\n this.resizeObs = new ResizeObserver(() => this.scheduleAutoMeasure(true));\r\n this.resizeObs.observe(el);\r\n\r\n if ((document as any).fonts?.ready) {\r\n (document as any).fonts.ready.then(() => this.scheduleAutoMeasure(true));\r\n }\r\n\r\n this.destroyRef.onDestroy(() => this.resizeObs?.disconnect());\r\n }\r\n\r\n writeValue(obj: any): void {\r\n this._value.set(this.sanitizeValue(obj));\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this.propagateChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this.propagateTouched = fn;\r\n }\r\n\r\n setDisabledState?(isDisabled: boolean): void {\r\n this._disabled.set(isDisabled);\r\n }\r\n\r\n private translate(key?: string, params?: any): string {\r\n if (!key) return '';\r\n return this.translationService.translate(key, params);\r\n }\r\n\r\n private itemLabel(item: SolarisSelectItem): string {\r\n if (item.labelKey) return this.translate(item.labelKey);\r\n return item.label ?? item.searchText ?? '';\r\n }\r\n\r\n private itemDescription(item: SolarisSelectItem): string {\r\n if (item.descriptionKey) return this.translate(item.descriptionKey);\r\n return item.description ?? '';\r\n }\r\n\r\n private itemEndText(item: SolarisSelectItem): string {\r\n if (item.endTextKey) return this.translate(item.endTextKey);\r\n return item.endText ?? '';\r\n }\r\n\r\n private itemSearchText(item: SolarisSelectItem): string {\r\n return [\r\n item.searchText,\r\n this.itemLabel(item),\r\n this.itemDescription(item),\r\n this.itemEndText(item),\r\n item.labelKey,\r\n item.descriptionKey,\r\n item.endTextKey,\r\n ]\r\n .filter(Boolean)\r\n .join(' ')\r\n .toLowerCase();\r\n }\r\n\r\n private sameCvaValue(a: any, b: any): boolean {\r\n if (this.multiple) {\r\n const aa = Array.isArray(a) ? a : [];\r\n const bb = Array.isArray(b) ? b : [];\r\n\r\n if (aa.length !== bb.length) return false;\r\n\r\n for (let i = 0; i < aa.length; i++) {\r\n if (!this.eq(aa[i], bb[i])) return false;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n if (a == null && b == null) return true;\r\n if (a == null || b == null) return false;\r\n\r\n return this.eq(a, b);\r\n }\r\n\r\n private eq(a: any, b: any): boolean {\r\n if (this.compareWith) return this.compareWith(a, b);\r\n if (this.valueKey) return a?.[this.valueKey] === b?.[this.valueKey];\r\n\r\n return Object.is(a, b);\r\n }\r\n\r\n private resolveNgControlOnce() {\r\n if (this.resolvedNgControl !== undefined) return;\r\n\r\n this.resolvedNgControl = this.injector.get(NgControl, null, {\r\n self: true,\r\n optional: true,\r\n });\r\n\r\n if (this.resolvedNgControl) {\r\n this.field?.registerControl(this.resolvedNgControl);\r\n }\r\n }\r\n\r\n private collectAllItems(nodes: SolarisSelectNode[], out: SolarisSelectItem[]) {\r\n for (const n of nodes) {\r\n if (n.kind === 'item') {\r\n out.push(n);\r\n\r\n if (n.children?.length) {\r\n this.collectAllItems(n.children, out);\r\n }\r\n } else if (n.kind === 'group') {\r\n this.collectAllItems(n.items, out);\r\n }\r\n }\r\n }\r\n\r\n private resetStack() {\r\n this._stack.set([{ nodes: this._rootNodes() }]);\r\n }\r\n\r\n public goBack() {\r\n if (!this.canGoBack()) return;\r\n\r\n const s = [...this._stack()];\r\n s.pop();\r\n\r\n this._stack.set(s);\r\n this.activeIndex.set(0);\r\n this.scheduleFocusTrigger();\r\n }\r\n\r\n private enterChildren(item: SolarisSelectItem) {\r\n if (!item.children?.length) return;\r\n\r\n this._stack.set([\r\n ...this._stack(),\r\n {\r\n title: item.childrenTitle,\r\n titleKey: item.childrenTitleKey,\r\n nodes: item.children,\r\n },\r\n ]);\r\n\r\n this.activeIndex.set(0);\r\n this.scheduleFocusTrigger();\r\n }\r\n\r\n private filterNodes(nodes: SolarisSelectNode[], termRaw: string): SolarisSelectNode[] {\r\n const term = termRaw.trim().toLowerCase();\r\n\r\n if (!term) return nodes;\r\n\r\n const matchItem = (it: SolarisSelectItem) => {\r\n return this.itemSearchText(it).includes(term);\r\n };\r\n\r\n const walk = (list: SolarisSelectNode[]): SolarisSelectNode[] => {\r\n const res: SolarisSelectNode[] = [];\r\n\r\n for (const n of list) {\r\n if (n.kind === 'divider') {\r\n res.push(n);\r\n continue;\r\n }\r\n\r\n if (n.kind === 'group') {\r\n const sub = walk(n.items);\r\n\r\n if (sub.some(x => x.kind !== 'divider')) {\r\n res.push({ ...n, items: sub });\r\n }\r\n\r\n continue;\r\n }\r\n\r\n if (n.children?.length) {\r\n const sub = walk(n.children);\r\n\r\n if (matchItem(n) || sub.some(x => x.kind !== 'divider')) {\r\n res.push({ ...n, children: sub });\r\n }\r\n } else if (matchItem(n)) {\r\n res.push(n);\r\n }\r\n }\r\n\r\n return this.cleanupDividers(res);\r\n };\r\n\r\n return walk(nodes);\r\n }\r\n\r\n private cleanupDividers(nodes: SolarisSelectNode[]): SolarisSelectNode[] {\r\n const out: SolarisSelectNode[] = [];\r\n\r\n for (const n of nodes) {\r\n if (n.kind === 'divider') {\r\n if (!out.length) continue;\r\n if (out.at(-1)?.kind === 'divider') continue;\r\n }\r\n\r\n out.push(n);\r\n }\r\n\r\n while (out.length && out[0].kind === 'divider') out.shift();\r\n while (out.length && out.at(-1)?.kind === 'divider') out.pop();\r\n\r\n return out;\r\n }\r\n\r\n private applySelectedFirst(nodes: SolarisSelectNode[]): SolarisSelectNode[] {\r\n if (!this.multiple || !this.selectedFirst) return nodes;\r\n\r\n const selected = (it: SolarisSelectItem) => {\r\n const v = this._value();\r\n const arr = Array.isArray(v) ? v : [];\r\n\r\n return arr.some(s => this.eq(s, it.value));\r\n };\r\n\r\n const reorderSegment = (segment: SolarisSelectNode[]) => {\r\n const items: SolarisSelectItem[] = [];\r\n const others: SolarisSelectNode[] = [];\r\n\r\n for (const n of segment) {\r\n if (n.kind === 'item') {\r\n items.push(n);\r\n } else if (n.kind === 'group') {\r\n others.push({ ...n, items: this.applySelectedFirst(n.items) });\r\n } else {\r\n others.push(n);\r\n }\r\n }\r\n\r\n const sel: SolarisSelectItem[] = [];\r\n const non: SolarisSelectItem[] = [];\r\n\r\n for (const it of items) {\r\n if (selected(it)) {\r\n sel.push(it);\r\n } else {\r\n non.push(it);\r\n }\r\n }\r\n\r\n return [...sel, ...non, ...others];\r\n };\r\n\r\n const res: SolarisSelectNode[] = [];\r\n let buf: SolarisSelectNode[] = [];\r\n\r\n const flush = () => {\r\n if (!buf.length) return;\r\n\r\n res.push(...reorderSegment(buf));\r\n buf = [];\r\n };\r\n\r\n for (const n of nodes) {\r\n if (n.kind === 'divider') {\r\n flush();\r\n res.push(n);\r\n } else {\r\n buf.push(n);\r\n }\r\n }\r\n\r\n flush();\r\n\r\n return this.cleanupDividers(res);\r\n }\r\n\r\n private buildRows(nodes: SolarisSelectNode[]) {\r\n const rows: SolarisSelectRow[] = [];\r\n let optionIndex = 0;\r\n\r\n const pushItem = (it: SolarisSelectItem) => {\r\n const hasChildren = !!it.children?.length;\r\n const selectable = !hasChildren;\r\n const disabled = !!it.disabled;\r\n const selected = selectable ? this.isSelected(it.value) : false;\r\n\r\n rows.push({\r\n kind: 'item',\r\n key: `item-${optionIndex}-${this.itemLabel(it)}-${String(it.value)}`,\r\n id: `${this._id}-opt-${optionIndex}`,\r\n optionIndex,\r\n item: it,\r\n disabled,\r\n selected,\r\n hasChildren,\r\n selectable,\r\n });\r\n\r\n optionIndex++;\r\n };\r\n\r\n const walk = (list: SolarisSelectNode[]) => {\r\n for (const n of list) {\r\n if (n.kind === 'divider') {\r\n rows.push({ kind: 'divider', key: `div-${rows.length}` });\r\n continue;\r\n }\r\n\r\n if (n.kind === 'group') {\r\n rows.push({\r\n kind: 'group',\r\n key: `grp-${rows.length}-${n.label ?? n.labelKey ?? ''}`,\r\n label: n.label,\r\n labelKey: n.labelKey,\r\n });\r\n\r\n walk(n.items);\r\n continue;\r\n }\r\n\r\n pushItem(n);\r\n }\r\n };\r\n\r\n walk(nodes);\r\n\r\n const itemRows = rows.filter(r => r.kind === 'item');\r\n\r\n return { rows, itemRows };\r\n }\r\n\r\n isSelected(value: any): boolean {\r\n const v = this._value();\r\n\r\n if (this.multiple) {\r\n const arr = Array.isArray(v) ? v : [];\r\n return arr.some(s => this.eq(s, value));\r\n }\r\n\r\n return v != null && this.eq(v, value);\r\n }\r\n\r\n private setValue(next: any) {\r\n const cur = this._value();\r\n\r\n if (this.sameCvaValue(cur, next)) return;\r\n\r\n this._value.set(next);\r\n this.propagateChange(next);\r\n }\r\n\r\n toggleItem(value: any) {\r\n if (!this.multiple) return;\r\n\r\n const cur = this._value();\r\n const arr = Array.isArray(cur) ? [...cur] : [];\r\n const idx = arr.findIndex(v => this.eq(v, value));\r\n\r\n if (idx >= 0) {\r\n arr.splice(idx, 1);\r\n } else {\r\n arr.push(value);\r\n }\r\n\r\n this.setValue(arr);\r\n this.searchTerm.set('');\r\n this.activeIndex.set(0);\r\n this.scheduleFocusTrigger();\r\n }\r\n\r\n selectSingle(value: any) {\r\n if (this.multiple) return;\r\n\r\n this.searchTerm.set('');\r\n this.setValue(value);\r\n this.open.set(false);\r\n }\r\n\r\n onOptionClick(item: SolarisSelectItem) {\r\n if (this.disabled) return;\r\n\r\n if (item.children?.length) {\r\n this.enterChildren(item);\r\n return;\r\n }\r\n\r\n if (this.multiple) {\r\n this.toggleItem(item.value);\r\n this.searchTerm.set('');\r\n this.activeIndex.set(0);\r\n this.scheduleFocusTrigger();\r\n } else {\r\n this.searchTerm.set('');\r\n this.selectSingle(item.value);\r\n }\r\n }\r\n\r\n openFromTrigger() {\r\n if (this.disabled) return;\r\n\r\n if (!this.open()) {\r\n this.open.set(true);\r\n }\r\n }\r\n\r\n toggleOpen() {\r\n if (this.disabled) return;\r\n\r\n const next = !this.open();\r\n\r\n if (next) {\r\n this.searchTerm.set('');\r\n }\r\n\r\n this.open.set(next);\r\n }\r\n\r\n onTriggerInput(v: string) {\r\n if (this.disabled) return;\r\n\r\n if (!this.open()) {\r\n this.open.set(true);\r\n }\r\n\r\n this.searchTerm.set(v);\r\n this.activeIndex.set(0);\r\n }\r\n\r\n onTriggerKeydown(ev: KeyboardEvent) {\r\n if (this.disabled) return;\r\n\r\n if (!this.open()) {\r\n if (ev.key === 'ArrowDown' || ev.key === 'Enter') {\r\n ev.preventDefault();\r\n this.searchTerm.set('');\r\n this.open.set(true);\r\n this.activeIndex.set(0);\r\n return;\r\n }\r\n\r\n if (this.searchable && ev.key.length === 1 && !ev.ctrlKey && !ev.metaKey && !ev.altKey) {\r\n ev.preventDefault();\r\n this.searchTerm.set(ev.key);\r\n this.open.set(true);\r\n this.activeIndex.set(0);\r\n return;\r\n }\r\n\r\n return;\r\n }\r\n\r\n if (\r\n ev.key === 'ArrowDown' ||\r\n ev.key === 'ArrowUp' ||\r\n ev.key === 'Home' ||\r\n ev.key === 'End' ||\r\n ev.key === 'Enter' ||\r\n ev.key === 'Escape'\r\n ) {\r\n this.onPanelKeydown(ev);\r\n return;\r\n }\r\n\r\n if ((ev.key === 'Backspace' || ev.key === 'ArrowLeft') && this.canGoBack() && !this.searchTerm()) {\r\n ev.preventDefault();\r\n this.goBack();\r\n }\r\n }\r\n\r\n onPanelKeydown(ev: KeyboardEvent) {\r\n const items = this.itemRows();\r\n\r\n if (!items.length) return;\r\n\r\n const max = items.length - 1;\r\n const clamp = (n: number) => Math.max(0, Math.min(max, n));\r\n\r\n switch (ev.key) {\r\n case 'ArrowDown':\r\n ev.preventDefault();\r\n this.activeIndex.set(clamp(this.activeIndex() + 1));\r\n break;\r\n\r\n case 'ArrowUp':\r\n ev.preventDefault();\r\n this.activeIndex.set(clamp(this.activeIndex() - 1));\r\n break;\r\n\r\n case 'Home':\r\n ev.preventDefault();\r\n this.activeIndex.set(0);\r\n break;\r\n\r\n case 'End':\r\n ev.preventDefault();\r\n this.activeIndex.set(max);\r\n break;\r\n\r\n case 'Enter':\r\n ev.preventDefault();\r\n this.onOptionClick(items[this.activeIndex()].item);\r\n break;\r\n\r\n case 'ArrowRight': {\r\n const row = items[this.activeIndex()];\r\n\r\n if (row?.hasChildren) {\r\n ev.preventDefault();\r\n this.enterChildren(row.item);\r\n }\r\n\r\n break;\r\n }\r\n\r\n case 'Escape':\r\n ev.preventDefault();\r\n this.open.set(false);\r\n break;\r\n }\r\n }\r\n\r\n private scheduleAutoMeasure(force = false) {\r\n if (!this.multiple) {\r\n this.showCount.set(false);\r\n return;\r\n }\r\n\r\n if (this.selectionDisplay === 'count') {\r\n this.showCount.set(true);\r\n return;\r\n }\r\n\r\n if (this.selectionDisplay === 'list') {\r\n this.showCount.set(false);\r\n return;\r\n }\r\n\r\n const nonce = ++this._measureNonce;\r\n\r\n requestAnimationFrame(() => {\r\n requestAnimationFrame(() => {\r\n if (nonce !== this._measureNonce) return;\r\n\r\n this.measureAuto(force);\r\n });\r\n });\r\n }\r\n\r\n private measureAuto(_force: boolean) {\r\n if (!this.multiple) {\r\n this.showCount.set(false);\r\n return;\r\n }\r\n\r\n if (this.selectionDisplay === 'count') {\r\n this.showCount.set(true);\r\n return;\r\n }\r\n\r\n if (this.selectionDisplay === 'list') {\r\n this.showCount.set(false);\r\n return;\r\n }\r\n\r\n if (!this.compactInput()) {\r\n if (this.showCount()) this.showCount.set(false);\r\n return;\r\n }\r\n\r\n const wrap = this.triggerWrap?.nativeElement;\r\n const inputEl = this.triggerInput?.nativeElement;\r\n const measureEl = this.measureSlot?.nativeElement;\r\n\r\n if (!wrap || !inputEl || !measureEl) return;\r\n\r\n const text = this.selectedText();\r\n\r\n if (!text) {\r\n if (this.showCount()) this.showCount.set(false);\r\n }\r\n\r\n const ws = getComputedStyle(wrap);\r\n const padL = this.px(ws.paddingLeft);\r\n const padR = this.px(ws.paddingRight);\r\n const gap = this.px(ws.columnGap || ws.gap);\r\n const contentWidth = wrap.clientWidth - padL - padR;\r\n\r\n const inputWidth = inputEl.getBoundingClientRect().width;\r\n const tokenMaxWidth = Math.max(0, contentWidth - gap - inputWidth);\r\n\r\n const needed = Math.ceil(measureEl.scrollWidth);\r\n const available = Math.floor(tokenMaxWidth);\r\n\r\n const current = this.showCount();\r\n\r\n const marginForward = 1;\r\n const marginBack = 3;\r\n\r\n const next = current\r\n ? needed > available - marginBack\r\n : needed > available + marginForward;\r\n\r\n if (next !== current) {\r\n this.showCount.set(next);\r\n }\r\n }\r\n\r\n private px(v: string): number {\r\n const first = (v ?? '0').split(' ')[0];\r\n const n = Number.parseFloat(first);\r\n\r\n return Number.isFinite(n) ? n : 0;\r\n }\r\n\r\n private scheduleFocusTrigger() {\r\n requestAnimationFrame(() => {\r\n this.triggerInput?.nativeElement?.focus?.();\r\n\r\n if (this.searchable) {\r\n this.triggerInput?.nativeElement?.select?.();\r\n }\r\n });\r\n }\r\n\r\n private isSelectableValue(v: any): boolean {\r\n if (v == null) return false;\r\n\r\n let selectable = false;\r\n\r\n const walk = (nodes: SolarisSelectNode[]) => {\r\n for (const n of nodes) {\r\n if (n.kind === 'group') {\r\n walk(n.items);\r\n continue;\r\n }\r\n\r\n if (n.kind === 'item') {\r\n if (this.eq(n.value, v)) {\r\n selectable = !n.children?.length;\r\n return;\r\n }\r\n\r\n if (n.children?.length) {\r\n walk(n.children);\r\n }\r\n }\r\n }\r\n };\r\n\r\n walk(this._rootNodes());\r\n\r\n return selectable;\r\n }\r\n\r\n private sanitizeValue(next: any): any {\r\n if (this.multiple) {\r\n const arr = Array.isArray(next) ? next : [];\r\n return arr.filter(v => this.isSelectableValue(v));\r\n }\r\n\r\n return this.isSelectableValue(next) ? next : null;\r\n }\r\n\r\n selectedCountLabel(): string {\r\n const count = this.selectedCount();\r\n\r\n if (this.selectedCountKey) {\r\n return this.translate(this.selectedCountKey, { count });\r\n }\r\n\r\n if (this.selectedCountText) {\r\n return this.selectedCountText.replace('{count}', String(count));\r\n }\r\n\r\n return `${count} selecionados`;\r\n }\r\n\r\n trackRow = (_: number, r: SolarisSelectRow) => r.key;\r\n}\r\n","<solaris-popover [open]=\"open()\" (openChange)=\"open.set($event)\" placement=\"bottom-start\" [offset]=\"6\"\r\n [matchWidth]=\"true\" [anchorElement]=\"matchWidthEl\" [matchWidthElement]=\"matchWidthEl\"\r\n [closeOnOutsideClick]=\"true\" [closeOnEscape]=\"true\" panelClass=\"solaris-select__popover\">\r\n <div #triggerWrap solaris-popover-trigger class=\"solaris-select__trigger\" (click)=\"openFromTrigger()\">\r\n @if (showToken()) {\r\n <span #tokenEl class=\"solaris-select__token\" aria-hidden=\"true\">\r\n @if (multiple && showCount()) {\r\n @if (selectedCountKey) { {{ selectedCountKey | translate:{ count: selectedCount() } }} }\r\n @else { {{ selectedCountLabel() }} }\r\n } @else {\r\n {{ selectedText() }}\r\n }\r\n </span>\r\n }\r\n\r\n <input #triggerInput type=\"text\" class=\"solaris-select__input\" [disabled]=\"disabled\"\r\n [attr.aria-activedescendant]=\"open() ? activeOptionId() : null\" (click)=\"openFromTrigger()\"\r\n [readonly]=\"!isSearchMode()\" role=\"combobox\" aria-autocomplete=\"list\" aria-haspopup=\"listbox\"\r\n aria-controls=\"{{ _id }}-listbox\" aria-expanded=\"false\" [attr.aria-expanded]=\"open() ? 'true' : 'false'\"\r\n [attr.placeholder]=\"inputPlaceholderKey() ? (inputPlaceholderKey() | translate) : inputPlaceholderText()\"\r\n [value]=\"triggerValue()\" (keydown)=\"onTriggerKeydown($event)\" (focus)=\"openFromTrigger()\" (input)=\"onTriggerInput(triggerInput.value)\"/>\r\n\r\n <button type=\"button\" class=\"solaris-select__chevron-btn\" [disabled]=\"disabled\" (click)=\"toggleOpen()\"\r\n [attr.aria-label]=\"('ui.solaris.aria.toggleOptions' | translate)\">\r\n <i class=\"ph ph-caret-down\" aria-hidden=\"true\"></i>\r\n </button>\r\n\r\n <span class=\"solaris-select__measure solaris-select__token\" #measureSlot aria-hidden=\"true\">\r\n {{ selectedText() }}\r\n </span>\r\n </div>\r\n\r\n <ng-template solaris-popover-panel>\r\n <div class=\"solaris-select__panel\" (keydown)=\"onPanelKeydown($event)\" [style.max-height]=\"panelMaxHeight\">\r\n @if (canGoBack()) {\r\n <div class=\"solaris-select__nav\">\r\n <button type=\"button\" class=\"solaris-select__back\" (click)=\"goBack()\">\r\n <i class=\"ph ph-arrow-left\"></i>\r\n <span>\r\n @if (backKey) { {{ backKey | translate }} }\r\n @else { {{ backText | translate }} }\r\n </span>\r\n </button>\r\n\r\n <div class=\"solaris-select__title\">\r\n @if (currentLevel().titleKey) { {{ currentLevel().titleKey! | translate }} }\r\n @else { {{ currentLevel().title ?? '' }} }\r\n </div>\r\n </div>\r\n }\r\n\r\n <div class=\"solaris-select__list\" role=\"listbox\" [id]=\"_id + '-listbox'\"\r\n [attr.aria-multiselectable]=\"multiple ? 'true' : null\"\r\n [attr.aria-activedescendant]=\"activeOptionId()\">\r\n @for (row of rows(); track trackRow($index, row)) {\r\n @if (row.kind === 'group') {\r\n <div class=\"solaris-select__group\">\r\n @if (row.labelKey) { {{ row.labelKey | translate }} }\r\n @else { {{ row.label }} }\r\n </div>\r\n }\r\n\r\n @if (row.kind === 'divider') {\r\n <div class=\"solaris-select__divider\" aria-hidden=\"true\"></div>\r\n }\r\n\r\n @if (row.kind === 'item') {\r\n <button type=\"button\" class=\"solaris-select__option\" [id]=\"row.id\" [disabled]=\"row.disabled\"\r\n [attr.aria-selected]=\"row.selected ? 'true' : 'false'\" [class.is-active]=\"row.optionIndex === activeIndex()\"\r\n [class.is-selected]=\"row.selected\" [class.is-navigable]=\"row.hasChildren\" (click)=\"onOptionClick(row.item)\">\r\n <span class=\"solaris-select__option-leading\">\r\n @if (multiple) {\r\n @if (!row.hasChildren) {\r\n <span class=\"solaris-select__checkbox\" aria-hidden=\"true\" [class.is-checked]=\"row.selected\">\r\n <i class=\"ph ph-check\"></i>\r\n </span>\r\n } @else {\r\n @if (row.item.imageUrl) {\r\n <img class=\"solaris-select__avatar\" [ngSrc]=\"row.item.imageUrl\" alt=\"\" fill/>\r\n } @else if (row.item.icon) {\r\n <i class=\"solaris-select__icon\" [class]=\"row.item.icon\" aria-hidden=\"true\"></i>\r\n } @else {\r\n <span class=\"solaris-select__checkbox-spacer\" aria-hidden=\"true\"></span>\r\n }\r\n }\r\n }\r\n\r\n @if (!multiple) {\r\n @if (row.item.imageUrl) {\r\n <img class=\"solaris-select__avatar\" [ngSrc]=\"row.item.imageUrl\" alt=\"\" fill />\r\n } @else if (row.item.icon) {\r\n <i class=\"solaris-select__icon\" [class]=\"row.item.icon\" aria-hidden=\"true\"></i>\r\n }\r\n }\r\n </span>\r\n\r\n <span class=\"solaris-select__option-main\">\r\n <span class=\"solaris-select__option-label\">\r\n @if (row.item.labelKey) { {{ row.item.labelKey | translate }} }\r\n @else { {{ row.item.label }} }\r\n </span>\r\n\r\n @if (row.item.description || row.item.descriptionKey) {\r\n <span class=\"solaris-select__option-desc\">\r\n @if (row.item.descriptionKey) { {{ row.item.descriptionKey | translate }} }\r\n @else { {{ row.item.description }} }\r\n </span>\r\n }\r\n </span>\r\n\r\n <span class=\"solaris-select__option-end\">\r\n @if (row.item.endTextKey) {\r\n <span class=\"solaris-select__end-text\">{{ row.item.endTextKey | translate }}</span>\r\n } @else if (row.item.endText) {\r\n <span class=\"solaris-select__end-text\">{{ row.item.endText }}</span>\r\n }\r\n\r\n @if (!multiple && row.selected) {\r\n <i class=\"ph ph-check\" aria-hidden=\"true\"></i>\r\n }\r\n\r\n @if (row.hasChildren) {\r\n <i class=\"ph ph-caret-right\" aria-hidden=\"true\"></i>\r\n }\r\n </span>\r\n </button>\r\n }\r\n }\r\n </div>\r\n </div>\r\n </ng-template>\r\n</solaris-popover>\r\n","/// <reference path=\"./typings/intl-tel-input-utils.d.ts\" />\r\n\r\nexport * from './lib/navigations/navigations.index';\r\nexport * from './lib/feedbacks/feedbacks.index';\r\nexport * from './lib/layouts/layouts.index';\r\nexport * from './lib/actions/actions.index';\r\nexport * from './lib/visual/visual.index';\r\nexport * from './services/services.index';\r\nexport * from './lib/common/common.index';\r\nexport * from './lib/forms/forms.index';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["clamp","initialXY","i1.SolarisTabs","coerceBoolean","PRESET_COLORS","resolveRadius","i1","i1.SolarisTable"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"educarehq-solaris-components.mjs","sources":["../../../projects/solaris-components/src/lib/navigations/dropdown/content/directives/dropdown-content-trigger.directive.ts","../../../projects/solaris-components/src/lib/navigations/dropdown/content/directives/dropdown-content-panel.directive.ts","../../../projects/solaris-components/src/lib/navigations/dropdown/content/service/dropdown-content-registry.service.ts","../../../projects/solaris-components/src/lib/navigations/dropdown/content/component/dropdown-content.ts","../../../projects/solaris-components/src/lib/navigations/dropdown/content/component/dropdown-content.html","../../../projects/solaris-components/src/lib/navigations/broadcrumb/component/breadcrumb.ts","../../../projects/solaris-components/src/lib/navigations/broadcrumb/component/breadcrumb.html","../../../projects/solaris-components/src/lib/navigations/stepper/item/component/stepper-item.ts","../../../projects/solaris-components/src/lib/navigations/stepper/item/component/stepper-item.html","../../../projects/solaris-components/src/lib/feedbacks/badge/component/badge.ts","../../../projects/solaris-components/src/lib/feedbacks/badge/component/badge.html","../../../projects/solaris-components/src/lib/navigations/stepper/component/stepper.ts","../../../projects/solaris-components/src/lib/navigations/stepper/component/stepper.html","../../../projects/solaris-components/src/lib/navigations/popover/directives/popover-trigger.directive.ts","../../../projects/solaris-components/src/lib/navigations/popover/directives/popover-panel.directive.ts","../../../projects/solaris-components/src/lib/navigations/popover/model/popover.type.ts","../../../projects/solaris-components/src/lib/navigations/popover/component/popover.ts","../../../projects/solaris-components/src/lib/navigations/popover/component/popover.html","../../../projects/solaris-components/src/lib/navigations/tabs/component/tabs.ts","../../../projects/solaris-components/src/lib/navigations/tabs/component/tabs.html","../../../projects/solaris-components/src/lib/navigations/tabs/tab/component/tab.ts","../../../projects/solaris-components/src/lib/navigations/tabs/tab/component/tab.html","../../../projects/solaris-components/src/lib/feedbacks/loading-overlay/loading-overlay.ts","../../../projects/solaris-components/src/lib/feedbacks/loading-overlay/loading-overlay.html","../../../projects/solaris-components/src/services/tooltip/floating-position.util.ts","../../../projects/solaris-components/src/services/tooltip/floating-overlay.service.ts","../../../projects/solaris-components/src/lib/feedbacks/rich-tooltip/component/rich-tooltip-panel.ts","../../../projects/solaris-components/src/lib/feedbacks/rich-tooltip/component/rich-tooltip-panel.html","../../../projects/solaris-components/src/lib/feedbacks/rich-tooltip/directives/rich-tooltip.directive.ts","../../../projects/solaris-components/src/lib/actions/button/directives/button.directive.ts","../../../projects/solaris-components/src/lib/feedbacks/notification/config/notification.config.ts","../../../projects/solaris-components/src/lib/feedbacks/notification/service/notification-intl.service.ts","../../../projects/solaris-components/src/lib/feedbacks/notification/service/notification.service.ts","../../../projects/solaris-components/src/lib/feedbacks/notification/components/item/notification-item.ts","../../../projects/solaris-components/src/lib/feedbacks/notification/components/item/notification-item.html","../../../projects/solaris-components/src/lib/feedbacks/notification/components/center/notification-center.ts","../../../projects/solaris-components/src/lib/feedbacks/notification/components/center/notification-center.html","../../../projects/solaris-components/src/lib/feedbacks/notification/components/host/notification-host.ts","../../../projects/solaris-components/src/lib/feedbacks/notification/components/host/notification-host.html","../../../projects/solaris-components/src/lib/feedbacks/tooltip/component/tooltip-panel.ts","../../../projects/solaris-components/src/lib/feedbacks/tooltip/component/tooltip-panel.html","../../../projects/solaris-components/src/lib/feedbacks/tooltip/directives/tooltip.directive.ts","../../../projects/solaris-components/src/lib/feedbacks/loading/component/loading.ts","../../../projects/solaris-components/src/lib/feedbacks/loading/component/loading.html","../../../projects/solaris-components/src/lib/layouts/image-slider/component/image-slider.ts","../../../projects/solaris-components/src/lib/layouts/image-slider/component/image-slider.html","../../../projects/solaris-components/src/lib/layouts/section/component/section.ts","../../../projects/solaris-components/src/lib/layouts/section/component/section.html","../../../projects/solaris-components/src/lib/layouts/divider/component/divider.ts","../../../projects/solaris-components/src/lib/layouts/divider/component/divider.html","../../../projects/solaris-components/src/lib/layouts/dialog/token/dialog-step-data.token.ts","../../../projects/solaris-components/src/lib/layouts/dialog/token/dialog-data.token.ts","../../../projects/solaris-components/src/lib/layouts/dialog/token/dialog-ref.ts","../../../projects/solaris-components/src/lib/layouts/dialog/components/dialog-steps-container/dialog-steps-container.ts","../../../projects/solaris-components/src/lib/layouts/dialog/components/dialog-steps-container/dialog-steps-container.html","../../../projects/solaris-components/src/lib/layouts/dialog/components/dialog-container/dialog-container.ts","../../../projects/solaris-components/src/lib/layouts/dialog/components/dialog-container/dialog-container.html","../../../projects/solaris-components/src/lib/layouts/dialog/service/dialog.service.ts","../../../projects/solaris-components/src/lib/layouts/drawer/directives/drawer-header.directive.ts","../../../projects/solaris-components/src/lib/layouts/drawer/directives/drawer-footer.directive.ts","../../../projects/solaris-components/src/lib/layouts/drawer/component/drawer.ts","../../../projects/solaris-components/src/lib/layouts/drawer/component/drawer.html","../../../projects/solaris-components/src/lib/layouts/table/directives/filter-panel-footer.directive.ts","../../../projects/solaris-components/src/lib/layouts/table/components/filters/filter/table-filters.ts","../../../projects/solaris-components/src/lib/layouts/table/components/filters/filter/table-filters.html","../../../projects/solaris-components/src/lib/layouts/table/components/filters/field/filter-field.ts","../../../projects/solaris-components/src/lib/layouts/table/components/filters/field/filter-field.html","../../../projects/solaris-components/src/lib/layouts/table/directives/filter-panel-chips.directive.ts","../../../projects/solaris-components/src/lib/layouts/table/components/filters/panel/filter-panel.ts","../../../projects/solaris-components/src/lib/layouts/table/components/filters/panel/filter-panel.html","../../../projects/solaris-components/src/lib/layouts/table/components/filters/chip/filter-chip.ts","../../../projects/solaris-components/src/lib/layouts/table/components/filters/chip/filter-chip.html","../../../projects/solaris-components/src/lib/layouts/table/components/skeleton/table-skeleton.ts","../../../projects/solaris-components/src/lib/layouts/table/components/skeleton/table-skeleton.html","../../../projects/solaris-components/src/lib/layouts/table/components/filters/bar/filter-bar.ts","../../../projects/solaris-components/src/lib/layouts/table/components/filters/bar/filter-bar.html","../../../projects/solaris-components/src/lib/layouts/table/directives/column.directive.ts","../../../projects/solaris-components/src/lib/common/service/id-generator.service.ts","../../../projects/solaris-components/src/lib/layouts/table/components/column/table-column.ts","../../../projects/solaris-components/src/lib/layouts/table/components/column/table-column.html","../../../projects/solaris-components/src/lib/common/helper/unique-id.ts","../../../projects/solaris-components/src/lib/actions/checkbox/component/checkbox.ts","../../../projects/solaris-components/src/lib/actions/checkbox/component/checkbox.html","../../../projects/solaris-components/src/lib/layouts/table/components/table/table.ts","../../../projects/solaris-components/src/lib/layouts/table/components/table/table.html","../../../projects/solaris-components/src/lib/layouts/table/components/row/table-row.ts","../../../projects/solaris-components/src/lib/layouts/table/components/row/table-row.html","../../../projects/solaris-components/src/lib/layouts/page/directives/solaris-header.directive.ts","../../../projects/solaris-components/src/lib/layouts/page/directives/solaris-footer.directive.ts","../../../projects/solaris-components/src/lib/layouts/page/directives/solaris-body.directive.ts","../../../projects/solaris-components/src/lib/layouts/page/component/page.ts","../../../projects/solaris-components/src/lib/layouts/page/component/page.html","../../../projects/solaris-components/src/lib/layouts/page/header/directives/solaris-header-description.directive.ts","../../../projects/solaris-components/src/lib/layouts/page/header/directives/solaris-header-breadcrumb.directive.ts","../../../projects/solaris-components/src/lib/layouts/page/header/directives/solaris-header-title.directive.ts","../../../projects/solaris-components/src/lib/layouts/page/header/title/component/page-header-title.ts","../../../projects/solaris-components/src/lib/layouts/page/header/title/component/page-header-title.html","../../../projects/solaris-components/src/lib/layouts/page/header/directives/solaris-header-actions.directive.ts","../../../projects/solaris-components/src/lib/layouts/page/header/component/page-header.ts","../../../projects/solaris-components/src/lib/layouts/page/header/component/page-header.html","../../../projects/solaris-components/src/lib/actions/button/directives/button-group.directive.ts","../../../projects/solaris-components/src/lib/actions/radio/token/radio-group.token.ts","../../../projects/solaris-components/src/lib/actions/radio/component/radio.ts","../../../projects/solaris-components/src/lib/actions/radio/component/radio.html","../../../projects/solaris-components/src/lib/actions/radio/group/component/radio-group.ts","../../../projects/solaris-components/src/lib/actions/radio/group/component/radio-group.html","../../../projects/solaris-components/src/lib/actions/cards/cards-group/token/card-group.token.ts","../../../projects/solaris-components/src/lib/actions/cards/card/component/card.ts","../../../projects/solaris-components/src/lib/actions/cards/card/component/card.html","../../../projects/solaris-components/src/lib/actions/cards/selection-card/component/selection-card.ts","../../../projects/solaris-components/src/lib/actions/cards/selection-card/component/selection-card.html","../../../projects/solaris-components/src/lib/forms/form-field/messages/error/field-error.ts","../../../projects/solaris-components/src/lib/forms/form-field/messages/error/field-error.html","../../../projects/solaris-components/src/lib/actions/cards/cards-group/component/card-group.ts","../../../projects/solaris-components/src/lib/actions/cards/cards-group/component/card-group.html","../../../projects/solaris-components/src/lib/actions/cards/card/directives/card-slots.directive.ts","../../../projects/solaris-components/src/lib/visual/avatar/directives/avatar-overlay.directive.ts","../../../projects/solaris-components/src/lib/visual/internal/avatar-presence/component/avatar-presence.ts","../../../projects/solaris-components/src/lib/visual/internal/avatar-presence/component/avatar-presence.html","../../../projects/solaris-components/src/lib/visual/avatar/component/avatar.ts","../../../projects/solaris-components/src/lib/visual/avatar/component/avatar.html","../../../projects/solaris-components/src/lib/visual/presence-avatar/component/presence-avatar.ts","../../../projects/solaris-components/src/lib/visual/presence-avatar/component/presence-avatar.html","../../../projects/solaris-components/src/lib/visual/avatar-stack/component/avatar-stack.ts","../../../projects/solaris-components/src/lib/visual/avatar-stack/component/avatar-stack.html","../../../projects/solaris-components/src/lib/visual/avatar-dropdown/component/avatar-dropdown.ts","../../../projects/solaris-components/src/lib/visual/avatar-dropdown/component/avatar-dropdown.html","../../../projects/solaris-components/src/lib/visual/card-media/directives/card-media-overlay.directive.ts","../../../projects/solaris-components/src/lib/visual/card-media/component/card-media.ts","../../../projects/solaris-components/src/lib/visual/card-media/component/card-media.html","../../../projects/solaris-components/src/lib/forms/phone-input/helper/phone-input.sanitize.ts","../../../projects/solaris-components/src/lib/forms/phone-input/helper/phone-input.country.ts","../../../projects/solaris-components/src/lib/forms/form-field/tokens/form-field-features.ts","../../../projects/solaris-components/src/lib/forms/form-field/controller/form-field-controller.ts","../../../projects/solaris-components/src/lib/forms/input-text/tokens/input.token.ts","../../../projects/solaris-components/src/lib/forms/input-text/directives/input-text.directive.ts","../../../projects/solaris-components/src/lib/forms/phone-input/component/phone-input.ts","../../../projects/solaris-components/src/lib/forms/phone-input/component/phone-input.html","../../../projects/solaris-components/src/lib/forms/input-text/directives/input-password.directive.ts","../../../projects/solaris-components/src/lib/forms/input-text/directives/input-email.directive.ts","../../../projects/solaris-components/src/lib/forms/form-field/tokens/form-field-controller.token.ts","../../../projects/solaris-components/src/lib/forms/input-text/password-toggle/password-toggle.ts","../../../projects/solaris-components/src/lib/forms/input-text/password-toggle/password-toggle.html","../../../projects/solaris-components/src/lib/forms/form-field/directives/control-bridge.directive.ts","../../../projects/solaris-components/src/lib/forms/form-field/directives/prefix.directive.ts","../../../projects/solaris-components/src/lib/forms/form-field/directives/suffix.directive.ts","../../../projects/solaris-components/src/lib/forms/form-field/component/form-field.ts","../../../projects/solaris-components/src/lib/forms/form-field/component/form-field.html","../../../projects/solaris-components/src/lib/forms/select/component/select.ts","../../../projects/solaris-components/src/lib/forms/select/component/select.html","../../../projects/solaris-components/src/public-api.ts","../../../projects/solaris-components/src/educarehq-solaris-components.ts"],"sourcesContent":["import { Directive, ElementRef, inject, Renderer2 } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[solaris-dropdown-content-trigger]',\r\n standalone: true\r\n})\r\nexport class SolarisDropdownContentTriggerDirective {\r\n public readonly elementRef: ElementRef<HTMLElement> = inject(ElementRef<HTMLElement>);\r\n private readonly solarisRenderer: Renderer2 = inject(Renderer2);\r\n\r\n public ensureFocusable(): void {\r\n const solarisEl = this.elementRef.nativeElement;\r\n const solarisTag = solarisEl.tagName.toLowerCase();\r\n const solarisIsNaturallyFocusable =\r\n solarisTag === 'button' || solarisTag === 'a' ||\r\n solarisEl.hasAttribute('tabindex');\r\n\r\n if (!solarisIsNaturallyFocusable) {\r\n this.solarisRenderer.setAttribute(solarisEl, 'tabindex', '0');\r\n this.solarisRenderer.setAttribute(solarisEl, 'role', 'button');\r\n }\r\n\r\n this.solarisRenderer.setAttribute(solarisEl, 'aria-haspopup', 'true');\r\n }\r\n\r\n public setExpanded(isExpanded: boolean, panelId: string): void {\r\n const solarisEl = this.elementRef.nativeElement;\r\n this.solarisRenderer.setAttribute(solarisEl, 'aria-expanded', String(isExpanded));\r\n this.solarisRenderer.setAttribute(solarisEl, 'aria-controls', panelId);\r\n }\r\n}\r\n","import { Directive, inject, TemplateRef } from '@angular/core';\r\n\r\n@Directive({\r\n selector: 'ng-template[solaris-dropdown-content-panel]',\r\n standalone: true,\r\n})\r\nexport class SolarisDropdownContentPanelDirective {\r\n public readonly templateRef: TemplateRef<unknown> = inject(TemplateRef<unknown>);\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\nexport interface SolarisDropdownContentInterface {\r\n closeFromRegistry(): void;\r\n}\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class SolarisDropdownContentRegistry {\r\n private readonly solarisInstances: Set<SolarisDropdownContentInterface> = new Set<SolarisDropdownContentInterface>();\r\n\r\n public register(instance: SolarisDropdownContentInterface): void {\r\n this.solarisInstances.add(instance);\r\n }\r\n\r\n public unregister(instance: SolarisDropdownContentInterface): void {\r\n this.solarisInstances.delete(instance);\r\n }\r\n\r\n public notifyOpen(openingInstance: SolarisDropdownContentInterface): void {\r\n for (const solarisInstance of this.solarisInstances) {\r\n if (solarisInstance !== openingInstance) {\r\n solarisInstance.closeFromRegistry();\r\n }\r\n }\r\n }\r\n}\r\n","import {\r\n AfterContentInit, Component, ContentChild, DestroyRef, ElementRef, Input,\r\n ViewContainerRef, ViewEncapsulation, inject, OnDestroy\r\n} from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { Overlay, OverlayRef } from '@angular/cdk/overlay';\r\nimport { TemplatePortal } from '@angular/cdk/portal';\r\n\r\nimport { SolarisDropdownContentInterface, SolarisDropdownContentRegistry } from '../service/dropdown-content-registry.service';\r\nimport { SolarisDropdownContentTriggerDirective } from '../directives/dropdown-content-trigger.directive';\r\nimport { SolarisDropdownContentPanelDirective } from '../directives/dropdown-content-panel.directive';\r\nimport { SolarisDropdownWidthMode } from '../model/dropdown-content.type';\r\nimport { fromEvent, Subscription } from 'rxjs';\r\nimport { filter } from 'rxjs/operators';\r\n\r\n@Component({\r\n selector: 'solaris-dropdown-content',\r\n standalone: true,\r\n imports: [],\r\n templateUrl: './dropdown-content.html',\r\n styleUrls: ['./dropdown-content.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class SolarisDropdownContent implements AfterContentInit, OnDestroy, SolarisDropdownContentInterface {\r\n private readonly solarisRegistry = inject(SolarisDropdownContentRegistry);\r\n private readonly solarisVcr = inject(ViewContainerRef);\r\n private readonly solarisDestroyRef = inject(DestroyRef);\r\n private readonly solarisOverlay = inject(Overlay);\r\n\r\n @ContentChild(SolarisDropdownContentTriggerDirective) trigger?: SolarisDropdownContentTriggerDirective;\r\n @ContentChild(SolarisDropdownContentPanelDirective) panel?: SolarisDropdownContentPanelDirective;\r\n\r\n @Input() container?: HTMLElement | ElementRef<HTMLElement>;\r\n @Input() widthMode: SolarisDropdownWidthMode = 'auto';\r\n @Input() maxWidth: string = '72rem';\r\n @Input() closeDelay = 120;\r\n @Input() openDelay = 60;\r\n\r\n private readonly solarisPanelId = `solaris-dropdown-panel-${Math.random().toString(16).slice(2)}`;\r\n private solarisIsHoveringTrigger = false;\r\n private solarisPortal?: TemplatePortal<unknown>;\r\n private solarisIsHoveringPanel = false;\r\n private solarisOutsideClickSub?: Subscription;\r\n private solarisIsPinned = false;\r\n private solarisOverlayRef?: OverlayRef;\r\n private solarisIsOpen = false;\r\n private solarisCloseTimer?: number;\r\n private solarisOpenTimer?: number;\r\n\r\n ngAfterContentInit(): void {\r\n if (!this.trigger) throw new Error('solaris-dropdown: missing [solaris-dropdown-trigger].');\r\n if (!this.panel) throw new Error('solaris-dropdown: missing <ng-template solaris-dropdown-content-panel>.');\r\n\r\n this.solarisRegistry.register(this);\r\n this.trigger.ensureFocusable();\r\n this.trigger.setExpanded(false, this.solarisPanelId);\r\n\r\n const solarisTriggerEl = this.trigger.elementRef.nativeElement;\r\n\r\n fromEvent(solarisTriggerEl, 'mouseenter').pipe(takeUntilDestroyed(this.solarisDestroyRef))\r\n .subscribe(() => this.solarisOnTriggerEnter());\r\n\r\n fromEvent(solarisTriggerEl, 'mouseleave').pipe(takeUntilDestroyed(this.solarisDestroyRef))\r\n .subscribe(() => this.solarisOnTriggerLeave());\r\n\r\n fromEvent<MouseEvent>(solarisTriggerEl, 'click').pipe(takeUntilDestroyed(this.solarisDestroyRef))\r\n .subscribe((solarisEvent) => {\r\n solarisEvent.preventDefault();\r\n this.solarisTogglePinned();\r\n });\r\n\r\n fromEvent<KeyboardEvent>(solarisTriggerEl, 'keydown').pipe(takeUntilDestroyed(this.solarisDestroyRef))\r\n .subscribe((solarisEvent) => {\r\n if (solarisEvent.key === 'Enter' || solarisEvent.key === ' ') {\r\n solarisEvent.preventDefault();\r\n this.solarisTogglePinned();\r\n }\r\n\r\n if (solarisEvent.key === 'Escape') {\r\n solarisEvent.preventDefault();\r\n this.close('escape');\r\n }\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.solarisRegistry.unregister(this);\r\n this.solarisUnbindOutsideClick();\r\n this.solarisOverlayRef?.dispose();\r\n }\r\n\r\n public closeFromRegistry(): void {\r\n this.close('registry');\r\n }\r\n\r\n private solarisOnTriggerEnter(): void {\r\n this.solarisIsHoveringTrigger = true;\r\n if (this.solarisIsPinned) return;\r\n this.solarisScheduleOpen('hover');\r\n }\r\n\r\n private solarisOnTriggerLeave(): void {\r\n this.solarisIsHoveringTrigger = false;\r\n if (this.solarisIsPinned) return;\r\n this.solarisScheduleClose();\r\n }\r\n\r\n private solarisOnPanelEnter(): void {\r\n this.solarisIsHoveringPanel = true;\r\n if (this.solarisIsPinned) return;\r\n this.solarisClearCloseTimer();\r\n }\r\n\r\n private solarisOnPanelLeave(): void {\r\n this.solarisIsHoveringPanel = false;\r\n if (this.solarisIsPinned) return;\r\n this.solarisScheduleClose();\r\n }\r\n\r\n private solarisTogglePinned(): void {\r\n if (!this.solarisIsOpen) {\r\n this.solarisIsPinned = true;\r\n this.open('pinned');\r\n return;\r\n }\r\n\r\n if (this.solarisIsPinned) {\r\n this.close('toggle');\r\n return;\r\n }\r\n\r\n this.solarisIsPinned = true;\r\n this.solarisBindOutsideClick();\r\n }\r\n\r\n private solarisScheduleOpen(reason: 'hover' | 'pinned'): void {\r\n this.solarisClearOpenTimer();\r\n this.solarisOpenTimer = globalThis.setTimeout(() => this.open(reason), this.openDelay);\r\n }\r\n\r\n private solarisScheduleClose(): void {\r\n this.solarisClearCloseTimer();\r\n this.solarisCloseTimer = globalThis.setTimeout(() => {\r\n if (this.solarisIsPinned) return;\r\n if (this.solarisIsHoveringTrigger || this.solarisIsHoveringPanel) return;\r\n this.close('hover-leave');\r\n }, this.closeDelay);\r\n }\r\n\r\n private solarisClearOpenTimer(): void {\r\n if (this.solarisOpenTimer) globalThis.clearTimeout(this.solarisOpenTimer);\r\n this.solarisOpenTimer = undefined;\r\n }\r\n\r\n private solarisClearCloseTimer(): void {\r\n if (this.solarisCloseTimer) globalThis.clearTimeout(this.solarisCloseTimer);\r\n this.solarisCloseTimer = undefined;\r\n }\r\n\r\n public open(reason: 'hover' | 'pinned'): void {\r\n if (!this.trigger || !this.panel) return;\r\n if (reason === 'hover') this.solarisIsPinned = false;\r\n\r\n this.solarisRegistry.notifyOpen(this);\r\n\r\n const solarisTriggerEl = this.trigger.elementRef.nativeElement;\r\n const solarisOriginRect = solarisTriggerEl.getBoundingClientRect();\r\n\r\n const solarisContainerEl = this.solarisGetContainerEl();\r\n const solarisContainerRect = solarisContainerEl?.getBoundingClientRect();\r\n const solarisIsFull = this.widthMode === 'full';\r\n const solarisViewportMargin = solarisIsFull ? 0 : 8;\r\n const solarisOffsetX = this.solarisComputeOffsetX(solarisOriginRect, solarisContainerRect);\r\n\r\n const solarisPositionStrategy = this.solarisOverlay\r\n .position().flexibleConnectedTo(solarisTriggerEl)\r\n .withFlexibleDimensions(false).withPush(!solarisIsFull)\r\n .withViewportMargin(solarisViewportMargin).withDefaultOffsetX(solarisOffsetX)\r\n .withDefaultOffsetY(8).withPositions([\r\n { originX: 'start', originY: 'bottom', overlayX: 'start', overlayY: 'top' },\r\n { originX: 'end', originY: 'bottom', overlayX: 'end', overlayY: 'top' },\r\n ]);\r\n\r\n if (this.solarisOverlayRef) {\r\n this.solarisOverlayRef.updatePositionStrategy(solarisPositionStrategy);\r\n } else {\r\n this.solarisOverlayRef = this.solarisOverlay.create({\r\n positionStrategy: solarisPositionStrategy,\r\n scrollStrategy: this.solarisOverlay.scrollStrategies.reposition(),\r\n panelClass: ['solaris-dropdown-content-overlay']\r\n });\r\n\r\n this.solarisOverlayRef.detachments().pipe(takeUntilDestroyed(this.solarisDestroyRef))\r\n .subscribe(() => this.solarisResetState());\r\n }\r\n\r\n this.solarisApplyOverlaySize(solarisOriginRect, solarisContainerRect);\r\n this.solarisPortal ??= new TemplatePortal(this.panel.templateRef, this.solarisVcr);\r\n if (!this.solarisOverlayRef.hasAttached()) {\r\n this.solarisOverlayRef.attach(this.solarisPortal);\r\n this.solarisWirePanelEvents();\r\n }\r\n\r\n this.solarisIsOpen = true;\r\n this.trigger.setExpanded(true, this.solarisPanelId);\r\n\r\n if (this.solarisIsPinned) {\r\n this.solarisBindOutsideClick();\r\n } else {\r\n this.solarisUnbindOutsideClick();\r\n }\r\n\r\n this.solarisClearCloseTimer();\r\n }\r\n\r\n public close(reason: 'hover-leave' | 'toggle' | 'escape' | 'outside' | 'registry'): void {\r\n this.solarisClearOpenTimer();\r\n this.solarisClearCloseTimer();\r\n this.solarisIsPinned = false;\r\n this.solarisUnbindOutsideClick();\r\n\r\n if (this.solarisOverlayRef?.hasAttached()) {\r\n this.solarisOverlayRef.detach();\r\n }\r\n\r\n this.solarisIsOpen = false;\r\n this.trigger?.setExpanded(false, this.solarisPanelId);\r\n }\r\n\r\n private solarisResetState(): void {\r\n this.solarisIsOpen = false;\r\n this.solarisIsPinned = false;\r\n this.solarisIsHoveringPanel = false;\r\n this.solarisIsHoveringTrigger = false;\r\n this.solarisUnbindOutsideClick();\r\n this.trigger?.setExpanded(false, this.solarisPanelId);\r\n }\r\n\r\n private solarisWirePanelEvents(): void {\r\n if (!this.solarisOverlayRef) return;\r\n\r\n const solarisPanelHost = this.solarisOverlayRef.overlayElement;\r\n solarisPanelHost.id = this.solarisPanelId;\r\n\r\n fromEvent(solarisPanelHost, 'mouseenter').pipe(takeUntilDestroyed(this.solarisDestroyRef))\r\n .subscribe(() => this.solarisOnPanelEnter());\r\n\r\n fromEvent(solarisPanelHost, 'mouseleave').pipe(takeUntilDestroyed(this.solarisDestroyRef))\r\n .subscribe(() => this.solarisOnPanelLeave());\r\n\r\n fromEvent<KeyboardEvent>(solarisPanelHost, 'keydown').pipe(takeUntilDestroyed(this.solarisDestroyRef))\r\n .subscribe((solarisEvent) => {\r\n if (solarisEvent.key === 'Escape') {\r\n solarisEvent.preventDefault();\r\n this.close('escape');\r\n this.trigger?.elementRef.nativeElement.focus();\r\n }\r\n });\r\n }\r\n\r\n private solarisBindOutsideClick(): void {\r\n if (!this.solarisIsPinned) return;\r\n if (this.solarisOutsideClickSub) return;\r\n\r\n const solarisTriggerEl = this.trigger?.elementRef.nativeElement;\r\n const solarisOverlayEl = this.solarisOverlayRef?.overlayElement;\r\n\r\n if (!solarisTriggerEl || !solarisOverlayEl) return;\r\n\r\n this.solarisOutsideClickSub = fromEvent<MouseEvent>(document, 'mousedown')\r\n .pipe(\r\n filter(() => this.solarisIsPinned),\r\n filter((solarisEvent) => {\r\n const solarisTarget = solarisEvent.target as Node | null;\r\n if (!solarisTarget) return false;\r\n const solarisInsideTrigger = solarisTriggerEl.contains(solarisTarget);\r\n const solarisInsidePanel = solarisOverlayEl.contains(solarisTarget);\r\n return !solarisInsideTrigger && !solarisInsidePanel;\r\n }),\r\n takeUntilDestroyed(this.solarisDestroyRef)\r\n )\r\n .subscribe(() => this.close('outside'));\r\n }\r\n\r\n private solarisUnbindOutsideClick(): void {\r\n this.solarisOutsideClickSub?.unsubscribe();\r\n this.solarisOutsideClickSub = undefined;\r\n }\r\n\r\n private solarisGetContainerEl(): HTMLElement | undefined {\r\n const solarisContainer = this.container;\r\n if (!solarisContainer) return undefined;\r\n return solarisContainer instanceof ElementRef ? solarisContainer.nativeElement : solarisContainer;\r\n }\r\n\r\n private solarisComputeOffsetX(solarisOriginRect: DOMRect, solarisContainerRect?: DOMRect): number {\r\n if (this.widthMode === 'full') {\r\n return -solarisOriginRect.left;\r\n }\r\n\r\n if (this.widthMode === 'container' && solarisContainerRect) {\r\n return solarisContainerRect.left - solarisOriginRect.left;\r\n }\r\n\r\n return 0;\r\n }\r\n\r\n private solarisApplyOverlaySize(solarisOriginRect: DOMRect, solarisContainerRect?: DOMRect): void {\r\n if (!this.solarisOverlayRef) return;\r\n\r\n if (this.widthMode === 'match-trigger') {\r\n this.solarisOverlayRef.updateSize({ width: solarisOriginRect.width });\r\n return;\r\n }\r\n\r\n if (this.widthMode === 'full') {\r\n const solarisViewportWidth = document.documentElement.clientWidth;\r\n this.solarisOverlayRef.updateSize({\r\n width: solarisViewportWidth,\r\n maxWidth: solarisViewportWidth\r\n });\r\n return;\r\n }\r\n\r\n if (this.widthMode === 'container' && solarisContainerRect) {\r\n this.solarisOverlayRef.updateSize({\r\n width: solarisContainerRect.width,\r\n maxWidth: solarisContainerRect.width,\r\n });\r\n return;\r\n }\r\n\r\n this.solarisOverlayRef.updateSize({ maxWidth: this.maxWidth });\r\n }\r\n}\r\n","<ng-content></ng-content>\r\n","import { ChangeDetectionStrategy, Component, EventEmitter, HostBinding, Input, Output } from '@angular/core';\r\nimport { CdkMenu, CdkMenuItem, CdkMenuTrigger } from '@angular/cdk/menu';\r\nimport { RouterLink } from '@angular/router';\r\nimport { NgClass, NgTemplateOutlet } from '@angular/common';\r\n\r\nimport { SolarisBreadcrumbItem } from '../model/breadcrumb.type';\r\n\r\n@Component({\r\n selector: 'solaris-breadcrumb',\r\n standalone: true,\r\n imports: [\r\n NgClass,\r\n RouterLink,\r\n CdkMenu,\r\n CdkMenuItem,\r\n CdkMenuTrigger,\r\n NgTemplateOutlet\r\n ],\r\n templateUrl: './breadcrumb.html',\r\n styleUrl: './breadcrumb.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class SolarisBreadcrumb {\r\n @Input({ alias: 'min-items' }) minItems = 2;\r\n @Input({ alias: 'max-items' }) maxItems = 4;\r\n @Input() responsive = true;\r\n @Input({ required: true }) items: SolarisBreadcrumbItem[] = [];\r\n @HostBinding('class') hostClass = 'solaris-breadcrumb-host';\r\n @Output() itemSelect = new EventEmitter<{ id: string; item: SolarisBreadcrumbItem }>();\r\n\r\n get viewModel() {\r\n const items = this.items ?? [];\r\n const total = items.length;\r\n const max = Math.max(this.minItems, this.effectiveMaxItems);\r\n\r\n if (total <= max) {\r\n return { head: items, overflow: [] as SolarisBreadcrumbItem[], tail: [] as SolarisBreadcrumbItem[] };\r\n }\r\n\r\n const keepHead = 1;\r\n const keepTail = 1;\r\n\r\n const remaining = max - keepHead - keepTail;\r\n const extraTail = Math.max(0, remaining);\r\n\r\n const head = items.slice(0, keepHead);\r\n const tail = items.slice(total - (keepTail + extraTail), total);\r\n const overflow = items.slice(keepHead, total - tail.length);\r\n\r\n return { head, overflow, tail };\r\n }\r\n get effectiveMaxItems(): number {\r\n if (!this.responsive) return this.maxItems;\r\n\r\n const isSmall = typeof globalThis.matchMedia === \"function\" &&\r\n globalThis.matchMedia(\"(max-width: 640px)\").matches;\r\n\r\n return isSmall ? Math.max(this.minItems, 3) : this.maxItems;\r\n }\r\n\r\n protected getRouterCommands(it: SolarisBreadcrumbItem): any[] | null {\r\n return it.target?.kind === 'router' ? it.target.commands : null;\r\n }\r\n\r\n protected getRouterQueryParams(it: SolarisBreadcrumbItem): Record<string, any> | null {\r\n return it.target?.kind === 'router' ? (it.target.extras?.queryParams ?? null) : null;\r\n }\r\n\r\n protected shouldRenderSeparatorAfterHead(headIndex: number): boolean {\r\n if (headIndex < this.viewModel.head.length - 1) return true;\r\n return this.viewModel.overflow.length > 0 || this.viewModel.tail.length > 0;\r\n }\r\n\r\n protected onAction(item: SolarisBreadcrumbItem) {\r\n if (item.disabled) return;\r\n const t = item.target;\r\n if (t?.kind === 'action') this.itemSelect.emit({ id: t.id, item });\r\n }\r\n}\r\n","<nav class=\"solaris-breadcrumb\" aria-label=\"Breadcrumb\">\r\n <ol class=\"solaris-breadcrumb__list\">\r\n @for (it of viewModel.head; track it.label; let i = $index) {\r\n <li class=\"solaris-breadcrumb__item\">\r\n <ng-container [ngTemplateOutlet]=\"itemTpl\" [ngTemplateOutletContext]=\"{ $implicit: it }\"/>\r\n @if (shouldRenderSeparatorAfterHead(i)) {\r\n <span class=\"solaris-breadcrumb__sep\" aria-hidden=\"true\">\r\n <i class=\"ph ph-caret-right\"></i>\r\n </span>\r\n }\r\n </li>\r\n }\r\n\r\n @if (viewModel.overflow.length > 0) {\r\n <li class=\"solaris-breadcrumb__item\">\r\n <button type=\"button\" class=\"solaris-breadcrumb__ellipsis\" aria-label=\"Mostrar mais\" [cdkMenuTriggerFor]=\"overflowMenu\">\r\n <i class=\"ph ph-dots-three\"></i>\r\n </button>\r\n\r\n <ng-template #overflowMenu>\r\n <div class=\"solaris-breadcrumb__menu\" cdkMenu>\r\n @for (it of viewModel.overflow; track it.label) {\r\n <button type=\"button\" class=\"solaris-breadcrumb__menu-item\" cdkMenuItem (click)=\"onAction(it)\"\r\n [disabled]=\"it.disabled\" [routerLink]=\"getRouterCommands(it)\"\r\n [queryParams]=\"getRouterQueryParams(it)\">\r\n @if (it.icon) {\r\n <i class=\"solaris-breadcrumb__icon\" [ngClass]=\"it.icon\" aria-hidden=\"true\"></i>\r\n }\r\n <span class=\"solaris-breadcrumb__label\">{{ it.label }}</span>\r\n </button>\r\n }\r\n </div>\r\n </ng-template>\r\n\r\n @if (viewModel.tail.length > 0) {\r\n <span class=\"solaris-breadcrumb__sep\" aria-hidden=\"true\">\r\n <i class=\"ph ph-caret-right\"></i>\r\n </span>\r\n }\r\n </li>\r\n }\r\n\r\n @for (it of viewModel.tail; track it.label; let i = $index) {\r\n <li class=\"solaris-breadcrumb__item\" [class.is-current]=\"i === viewModel.tail.length - 1\">\r\n <ng-container [ngTemplateOutlet]=\"itemTpl\" [ngTemplateOutletContext]=\"{ $implicit: it, current: i === viewModel.tail.length - 1 }\"/>\r\n @if (it !== viewModel.tail[viewModel.tail.length - 1]) {\r\n <span class=\"solaris-breadcrumb__sep\" aria-hidden=\"true\">\r\n <i class=\"ph ph-caret-right\"></i>\r\n </span>\r\n }\r\n </li>\r\n }\r\n </ol>\r\n\r\n <ng-template #itemTpl let-it let-current=\"current\">\r\n @if (it.target?.kind === 'router') {\r\n <a class=\"solaris-breadcrumb__link\" [class.is-disabled]=\"it.disabled\" [class.is-current]=\"current\"\r\n [routerLink]=\"it.disabled ? null : it.target!.commands\" [attr.aria-current]=\"current ? 'page' : null\"\r\n [attr.aria-label]=\"it.ariaLabel || it.label\">\r\n @if (it.icon) {\r\n <i class=\"solaris-breadcrumb__icon\" [ngClass]=\"it.icon\" aria-hidden=\"true\"></i>\r\n }\r\n <span class=\"solaris-breadcrumb__label\">{{ it.label }}</span>\r\n </a>\r\n }\r\n @else if (it.target?.kind === 'href') {\r\n <a class=\"solaris-breadcrumb__link\" [class.is-disabled]=\"it.disabled\" [class.is-current]=\"current\"\r\n [href]=\"it.disabled ? null : it.target!.href\" [target]=\"it.target!.target || '_self'\"\r\n [attr.aria-current]=\"current ? 'page' : null\" [attr.aria-label]=\"it.ariaLabel || it.label\">\r\n @if (it.icon) {\r\n <i class=\"solaris-breadcrumb__icon\" [ngClass]=\"it.icon\" aria-hidden=\"true\"></i>\r\n }\r\n <span class=\"solaris-breadcrumb__label\">{{ it.label }}</span>\r\n </a>\r\n }\r\n @else if (it.target?.kind === 'action') {\r\n <button type=\"button\" class=\"solaris-breadcrumb__link as-button\" [class.is-current]=\"current\"\r\n [disabled]=\"it.disabled\" (click)=\"onAction(it)\" [attr.aria-current]=\"current ? 'page' : null\"\r\n [attr.aria-label]=\"it.ariaLabel || it.label\">\r\n @if (it.icon) {\r\n <i class=\"solaris-breadcrumb__icon\" [ngClass]=\"it.icon\" aria-hidden=\"true\"></i>\r\n }\r\n <span class=\"solaris-breadcrumb__label\">{{ it.label }}</span>\r\n </button>\r\n }\r\n @else {\r\n <span class=\"solaris-breadcrumb__text\" [attr.aria-current]=\"current ? 'page' : null\">\r\n @if (it.icon) {\r\n <i class=\"solaris-breadcrumb__icon\" [ngClass]=\"it.icon\" aria-hidden=\"true\"></i>\r\n }\r\n <span class=\"solaris-breadcrumb__label\">{{ it.label }}</span>\r\n </span>\r\n }\r\n </ng-template>\r\n</nav>\r\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\r\n\r\nimport { BadgeColorInput, BadgeVariant } from '../../../../feedbacks/badge/model/badge.type';\r\nimport { SolarisSizePreset } from '../../../../common/model/common-configurations.type';\r\nimport { SolarisStepperPhase, SolarisStepperStatus } from '../../model/stepper.type';\r\n\r\n\r\n@Component({\r\n selector: 'solaris-stepper-item',\r\n standalone: true,\r\n templateUrl: './stepper-item.html',\r\n styleUrls: ['./stepper-item.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class SolarisStepperItem {\r\n @Input() stepId?: string;\r\n\r\n @Input() label?: string;\r\n @Input() labelKey?: string;\r\n\r\n @Input() title?: string;\r\n @Input() titleKey?: string;\r\n\r\n @Input() description?: string;\r\n @Input() descriptionKey?: string;\r\n\r\n @Input() icon?: string;\r\n @Input() optional = false;\r\n\r\n @Input() phase: SolarisStepperPhase | null = null;\r\n @Input() status: SolarisStepperStatus = 'default';\r\n\r\n @Input() badgeText?: string;\r\n @Input() badgeTextKey?: string;\r\n @Input() badgeColor?: BadgeColorInput;\r\n @Input() badgeVariant: BadgeVariant = 'subtle';\r\n @Input() badgeSize: SolarisSizePreset = 'sm';\r\n @Input() badgePill = true;\r\n\r\n public active = false;\r\n public index = 0;\r\n public headerId = '';\r\n public panelId = '';\r\n}\r\n","<section class=\"solaris-stepper-item__panel\" role=\"tabpanel\" [id]=\"panelId\"\r\n [attr.aria-labelledby]=\"headerId\" [attr.aria-hidden]=\"!active\"\r\n [attr.hidden]=\"active ? null : ''\">\r\n <ng-content></ng-content>\r\n</section>\r\n","import { ChangeDetectionStrategy, Component, HostBinding, Input } from '@angular/core';\r\nimport { NgClass } from '@angular/common';\r\n\r\nimport { SolarisColorPreset, SolarisSizePreset } from '../../../common/model/common-configurations.type';\r\nimport { BadgeColorInput, BadgeVariant } from '../model/badge.type';\r\n\r\n@Component({\r\n selector: 'solaris-badge',\r\n standalone: true,\r\n imports: [\r\n NgClass\r\n ],\r\n templateUrl: './badge.html',\r\n styleUrls: ['./badge.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class SolarisBadge {\r\n @Input() pill = false;\r\n @Input() customTextColor?: string;\r\n @Input() interactive = false;\r\n @Input() size: SolarisSizePreset = 'md';\r\n @Input() variant: BadgeVariant = 'subtle';\r\n @Input() color: BadgeColorInput = 'surface';\r\n @Input({ alias: 'aria-hidden' }) ariaHidden: 'true' | 'false' | null = null;\r\n @HostBinding('class') hostClass = 'solaris-badge-host';\r\n private readonly presetColors = new Set<SolarisColorPreset>([\r\n 'primary', 'success', 'warning', 'error', 'info', 'surface',\r\n ]);\r\n\r\n get colorClass(): string {\r\n return this.isCustomColor ? 'color-custom' : `color-${this.color}`;\r\n }\r\n get isCustomColor(): boolean {\r\n return !this.presetColors.has(this.color as SolarisColorPreset);\r\n }\r\n get customColorValue(): string | null {\r\n return this.isCustomColor ? String(this.color) : null;\r\n }\r\n}\r\n","<span class=\"solaris-badge\" [attr.aria-hidden]=\"ariaHidden\"\r\n [ngClass]=\"[ 'variant-' + variant, colorClass,\r\n 'size-' + size, pill ? 'is-pill' : '',\r\n interactive ? 'is-interactive' : '' ]\"\r\n [style.--solaris-badge-custom]=\"customColorValue\"\r\n [style.--solaris-badge-custom-fg]=\"customTextColor\">\r\n <ng-content></ng-content>\r\n</span>\r\n","import {\r\n AfterContentInit, ChangeDetectionStrategy, ChangeDetectorRef, Component, ContentChildren,\r\n DestroyRef, ElementRef,\r\n EventEmitter, inject, Input, OnChanges, Output, QueryList, SimpleChanges, ViewChildren\r\n} from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\n\r\nimport { SolarisStepperAppearance, SolarisStepperChangeEvent, SolarisStepperChangeReason,\r\n SolarisStepperOrientation, SolarisStepperPhase } from '../model/stepper.type';\r\nimport { SolarisBadge } from '../../../feedbacks/badge/component/badge';\r\nimport { SolarisTranslationPipe } from '@educarehq/solaris-services';\r\nimport { SolarisStepperItem } from '../item/component/stepper-item';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\n\r\n@Component({\r\n selector: 'solaris-stepper',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n SolarisTranslationPipe,\r\n SolarisBadge,\r\n ],\r\n templateUrl: './stepper.html',\r\n styleUrls: ['./stepper.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class SolarisStepper implements AfterContentInit, OnChanges {\r\n private readonly destroyRef = inject(DestroyRef);\r\n private static nextId = 0;\r\n\r\n @Input() orientation: SolarisStepperOrientation = 'horizontal';\r\n @Input() appearance: SolarisStepperAppearance = 'default';\r\n\r\n @Input() linear = true;\r\n @Input() interactive = true;\r\n\r\n @Input() activeIndex: number | null = null;\r\n @Input() defaultActiveIndex = 0;\r\n\r\n @Input() allowBackNavigation = true;\r\n @Input() allowFutureNavigation = false;\r\n @Input() allowSkip = false;\r\n\r\n @Input() renderPanels = true;\r\n @Input() showStateBadges = false;\r\n\r\n @Output() readonly activeIndexChange = new EventEmitter<number>();\r\n @Output('next') readonly nextChange = new EventEmitter<number>();\r\n @Output('previous') readonly previousChange = new EventEmitter<number>();\r\n @Output() readonly stepChange = new EventEmitter<SolarisStepperChangeEvent>();\r\n\r\n @ContentChildren(SolarisStepperItem)\r\n private readonly itemsQuery?: QueryList<SolarisStepperItem>;\r\n\r\n @ViewChildren('stepButton')\r\n private readonly stepButtons?: QueryList<ElementRef<HTMLButtonElement>>;\r\n\r\n public items: SolarisStepperItem[] = [];\r\n\r\n private readonly uid = SolarisStepper.nextId++;\r\n private internalActiveIndex = 0;\r\n\r\n public get currentIndex(): number {\r\n return this.normalizeIndex(\r\n this.isControlled() ? this.activeIndex ?? 0 : this.internalActiveIndex\r\n );\r\n }\r\n\r\n constructor(private readonly changeDetectorRef: ChangeDetectorRef) {}\r\n\r\n ngAfterContentInit(): void {\r\n this.internalActiveIndex = this.defaultActiveIndex;\r\n this.syncItems();\r\n\r\n this.itemsQuery?.changes\r\n .pipe(takeUntilDestroyed(this.destroyRef))\r\n .subscribe(() => {\r\n this.syncItems();\r\n });\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes['defaultActiveIndex'] && !this.isControlled()) {\r\n this.internalActiveIndex = this.defaultActiveIndex;\r\n }\r\n\r\n if (\r\n changes['activeIndex'] ||\r\n changes['orientation'] ||\r\n changes['appearance'] ||\r\n changes['linear']\r\n ) {\r\n this.syncItems();\r\n }\r\n }\r\n\r\n public next(): void {\r\n const target = this.findAdjacentNavigableIndex(this.currentIndex, 1);\r\n if (target === null) return;\r\n\r\n this.commitIndexChange(target, 'next');\r\n this.nextChange.emit(target);\r\n }\r\n\r\n public previous(): void {\r\n const target = this.findAdjacentNavigableIndex(this.currentIndex, -1);\r\n if (target === null) return;\r\n\r\n this.commitIndexChange(target, 'previous');\r\n this.previousChange.emit(target);\r\n }\r\n\r\n public setActiveStep(index: number): void {\r\n if (!this.isProgrammaticallyNavigable(index)) return;\r\n this.commitIndexChange(index, 'programmatic');\r\n }\r\n\r\n public onStepHeaderClick(index: number): void {\r\n if (!this.canActivateByHeaderClick(index)) return;\r\n this.commitIndexChange(index, 'header');\r\n }\r\n\r\n public onStepKeydown(event: KeyboardEvent, index: number): void {\r\n const isHorizontal = this.orientation === 'horizontal';\r\n\r\n switch (event.key) {\r\n case 'ArrowRight':\r\n if (!isHorizontal) return;\r\n event.preventDefault();\r\n this.focusRelativeButton(index, 1);\r\n return;\r\n\r\n case 'ArrowLeft':\r\n if (!isHorizontal) return;\r\n event.preventDefault();\r\n this.focusRelativeButton(index, -1);\r\n return;\r\n\r\n case 'ArrowDown':\r\n if (isHorizontal) return;\r\n event.preventDefault();\r\n this.focusRelativeButton(index, 1);\r\n return;\r\n\r\n case 'ArrowUp':\r\n if (isHorizontal) return;\r\n event.preventDefault();\r\n this.focusRelativeButton(index, -1);\r\n return;\r\n\r\n case 'Home':\r\n event.preventDefault();\r\n this.focusButton(0);\r\n return;\r\n\r\n case 'End':\r\n event.preventDefault();\r\n this.focusButton(this.items.length - 1);\r\n return;\r\n\r\n default:\r\n return;\r\n }\r\n }\r\n\r\n public isCurrent(index: number): boolean {\r\n return index === this.currentIndex;\r\n }\r\n\r\n public isCompleted(index: number): boolean {\r\n return this.resolvePhase(this.items[index], index) === 'completed';\r\n }\r\n\r\n public isPending(index: number): boolean {\r\n return this.resolvePhase(this.items[index], index) === 'pending';\r\n }\r\n\r\n public resolvePhase(item: SolarisStepperItem, index: number): SolarisStepperPhase {\r\n if (item.phase) return item.phase;\r\n\r\n if (index < this.currentIndex) return 'completed';\r\n if (index === this.currentIndex) return 'current';\r\n return 'pending';\r\n }\r\n\r\n public getStepClasses(item: SolarisStepperItem, index: number): Record<string, boolean> {\r\n return {\r\n 'is-current': this.isCurrent(index),\r\n 'is-completed': this.isCompleted(index),\r\n 'is-pending': this.isPending(index),\r\n 'is-warning': item.status === 'warning',\r\n 'is-error': item.status === 'error',\r\n 'is-disabled': item.status === 'disabled',\r\n 'is-locked': item.status === 'locked',\r\n 'is-clickable': this.canActivateByHeaderClick(index),\r\n };\r\n }\r\n\r\n public getConnectorClasses(index: number): Record<string, boolean> {\r\n return {\r\n 'is-completed': index < this.currentIndex,\r\n 'is-current': index === this.currentIndex,\r\n };\r\n }\r\n\r\n public getMarkerIcon(item: SolarisStepperItem, index: number): string | null {\r\n if (this.appearance === 'compact') return null;\r\n\r\n if (item.status === 'locked') return 'ph-lock';\r\n if (item.status === 'error') return 'ph-x-circle';\r\n if (item.status === 'warning') return 'ph-warning-circle';\r\n if (this.isCompleted(index)) return 'ph-check';\r\n\r\n return item.icon ?? null;\r\n }\r\n\r\n public getMarkerText(item: SolarisStepperItem, index: number): string | null {\r\n if (this.appearance === 'compact') {\r\n return `${index + 1}.`;\r\n }\r\n\r\n return this.getMarkerIcon(item, index) ? null : String(index + 1);\r\n }\r\n\r\n public hasBadge(item: SolarisStepperItem, index: number): boolean {\r\n if (!this.showStateBadges || this.appearance === 'compact') return false;\r\n\r\n return Boolean(\r\n item.badgeText ||\r\n item.badgeTextKey ||\r\n this.getAutoBadgeTranslationKey(item, index)\r\n );\r\n }\r\n\r\n public getResolvedLabel(item: SolarisStepperItem, index: number): string | null {\r\n if (item.labelKey || item.label) return null;\r\n return `${index + 1}`;\r\n }\r\n\r\n public getResolvedBadgeColor(item: SolarisStepperItem, index: number) {\r\n if (item.badgeColor) return item.badgeColor;\r\n\r\n if (item.status === 'error') return 'error';\r\n if (item.status === 'warning') return 'warning';\r\n if (item.status === 'locked' || item.status === 'disabled') return 'surface';\r\n\r\n const phase = this.resolvePhase(item, index);\r\n if (phase === 'completed') return 'success';\r\n if (phase === 'current') return 'primary';\r\n\r\n return 'surface';\r\n }\r\n\r\n public getResolvedBadgeVariant(item: SolarisStepperItem) {\r\n return item.badgeVariant;\r\n }\r\n\r\n public getAutoBadgeTranslationKey(item: SolarisStepperItem, index: number): string {\r\n if (item.status === 'error') return 'ui.solaris.stepper.error';\r\n if (item.status === 'warning') return 'ui.solaris.stepper.warning';\r\n if (item.status === 'locked') return 'ui.solaris.stepper.locked';\r\n if (item.status === 'disabled') return 'ui.solaris.stepper.disabled';\r\n\r\n const phase = this.resolvePhase(item, index);\r\n\r\n if (phase === 'completed') return 'ui.solaris.stepper.completed';\r\n if (phase === 'current') return 'ui.solaris.stepper.inProgress';\r\n return 'ui.solaris.stepper.pending';\r\n }\r\n\r\n public getTitle(item: SolarisStepperItem): string {\r\n return item.title ?? '';\r\n }\r\n\r\n public getDescription(item: SolarisStepperItem): string {\r\n return item.description ?? '';\r\n }\r\n\r\n public getStepAriaLabel(item: SolarisStepperItem, index: number): string {\r\n const phase = this.resolvePhase(item, index);\r\n const title = item.title ?? item.titleKey ?? `${index + 1}`;\r\n\r\n if (phase === 'completed') {\r\n return `${title} completed`;\r\n }\r\n\r\n if (phase === 'current') {\r\n return `${title} current step`;\r\n }\r\n\r\n if (item.status === 'locked') {\r\n return `${title} locked`;\r\n }\r\n\r\n if (item.status === 'disabled') {\r\n return `${title} disabled`;\r\n }\r\n\r\n return title;\r\n }\r\n\r\n public trackByIndex(index: number): number {\r\n return index;\r\n }\r\n\r\n private syncItems(): void {\r\n this.items = this.itemsQuery?.toArray() ?? [];\r\n\r\n const currentIndex = this.normalizeIndex(\r\n this.isControlled() ? this.activeIndex ?? 0 : this.internalActiveIndex\r\n );\r\n\r\n this.items.forEach((item, index) => {\r\n item.index = index;\r\n item.headerId = `solaris-stepper-${this.uid}-tab-${index}`;\r\n item.panelId = `solaris-stepper-${this.uid}-panel-${index}`;\r\n item.active = index === currentIndex;\r\n });\r\n\r\n this.changeDetectorRef.markForCheck();\r\n }\r\n\r\n private commitIndexChange(index: number, reason: SolarisStepperChangeReason): void {\r\n const normalized = this.normalizeIndex(index);\r\n if (normalized === this.currentIndex) return;\r\n\r\n const previousIndex = this.currentIndex;\r\n\r\n if (!this.isControlled()) {\r\n this.internalActiveIndex = normalized;\r\n this.syncItems();\r\n }\r\n\r\n this.activeIndexChange.emit(normalized);\r\n this.stepChange.emit({\r\n previousIndex,\r\n currentIndex: normalized,\r\n reason,\r\n });\r\n }\r\n\r\n private canActivateByHeaderClick(index: number): boolean {\r\n if (!this.interactive) return false;\r\n if (!this.isInBounds(index)) return false;\r\n\r\n const item = this.items[index];\r\n if (!item || this.isDisabledLike(item)) return false;\r\n\r\n if (index === this.currentIndex) return true;\r\n if (index < this.currentIndex) return this.allowBackNavigation;\r\n\r\n if (!this.linear) return true;\r\n\r\n if (!this.allowFutureNavigation) return false;\r\n if (!this.allowSkip) return index === this.currentIndex + 1;\r\n\r\n return true;\r\n }\r\n\r\n private isProgrammaticallyNavigable(index: number): boolean {\r\n if (!this.isInBounds(index)) return false;\r\n\r\n const item = this.items[index];\r\n if (!item) return false;\r\n\r\n return !this.isDisabledLike(item);\r\n }\r\n\r\n private findAdjacentNavigableIndex(start: number, direction: 1 | -1): number | null {\r\n let cursor = start + direction;\r\n\r\n while (this.isInBounds(cursor)) {\r\n const item = this.items[cursor];\r\n if (item && !this.isDisabledLike(item)) {\r\n return cursor;\r\n }\r\n cursor += direction;\r\n }\r\n\r\n return null;\r\n }\r\n\r\n private isDisabledLike(item: SolarisStepperItem): boolean {\r\n return item.status === 'disabled' || item.status === 'locked';\r\n }\r\n\r\n private isControlled(): boolean {\r\n return this.activeIndex !== null && this.activeIndex !== undefined;\r\n }\r\n\r\n private isInBounds(index: number): boolean {\r\n return index >= 0 && index < this.items.length;\r\n }\r\n\r\n private normalizeIndex(index: number): number {\r\n if (this.items.length === 0) return 0;\r\n return Math.min(Math.max(index, 0), this.items.length - 1);\r\n }\r\n\r\n private focusRelativeButton(index: number, direction: 1 | -1): void {\r\n let cursor = index + direction;\r\n\r\n while (cursor >= 0 && cursor < this.items.length) {\r\n if (!this.isDisabledLike(this.items[cursor])) {\r\n this.focusButton(cursor);\r\n return;\r\n }\r\n cursor += direction;\r\n }\r\n }\r\n\r\n private focusButton(index: number): void {\r\n const button = this.stepButtons?.get(index)?.nativeElement;\r\n button?.focus();\r\n }\r\n}\r\n","<div class=\"solaris-stepper\" [ngClass]=\"[\r\n 'orientation-' + orientation,\r\n 'appearance-' + appearance\r\n ]\">\r\n\r\n <div class=\"solaris-stepper__rail\" role=\"tablist\" [attr.aria-orientation]=\"orientation\">\r\n\r\n @for (item of items; track trackByIndex($index); let i = $index; let last = $last) {\r\n <div class=\"solaris-stepper__node\">\r\n <button #stepButton type=\"button\" role=\"tab\" class=\"solaris-stepper__step\"\r\n [id]=\"item.headerId\" [attr.aria-controls]=\"item.panelId\" [attr.aria-selected]=\"isCurrent(i)\"\r\n [attr.aria-current]=\"isCurrent(i) ? 'step' : null\"\r\n [attr.aria-disabled]=\"item.status === 'disabled' || item.status === 'locked'\"\r\n [attr.tabindex]=\"isCurrent(i) ? 0 : -1\" [ngClass]=\"getStepClasses(item, i)\"\r\n (click)=\"onStepHeaderClick(i)\" (keydown)=\"onStepKeydown($event, i)\">\r\n\r\n <span class=\"solaris-stepper__marker\" [ngClass]=\"getStepClasses(item, i)\">\r\n @if (getMarkerIcon(item, i)) {\r\n <i class=\"ph\" [ngClass]=\"getMarkerIcon(item, i)\" aria-hidden=\"true\"></i>\r\n }\r\n\r\n @if (getMarkerText(item, i)) {\r\n <span>{{ getMarkerText(item, i) }}</span>\r\n }\r\n </span>\r\n\r\n <span class=\"solaris-stepper__meta\">\r\n <span class=\"solaris-stepper__label\">\r\n @if (item.labelKey) {\r\n {{ item.labelKey | translate }}\r\n } @else if (item.label) {\r\n {{ item.label }}\r\n } @else {\r\n {{ 'ui.solaris.stepper.step' | translate }} {{ i + 1 }}\r\n }\r\n </span>\r\n\r\n <span class=\"solaris-stepper__title\">\r\n @if (item.titleKey) {\r\n {{ item.titleKey | translate }}\r\n } @else {\r\n {{ item.title }}\r\n }\r\n </span>\r\n\r\n @if (item.descriptionKey || item.description) {\r\n <span class=\"solaris-stepper__description\">\r\n @if (item.descriptionKey) {\r\n {{ item.descriptionKey | translate }}\r\n } @else {\r\n {{ item.description }}\r\n }\r\n </span>\r\n }\r\n\r\n @if (item.optional) {\r\n <span class=\"solaris-stepper__optional\">\r\n {{ 'ui.solaris.stepper.optional' | translate }}\r\n </span>\r\n }\r\n </span>\r\n\r\n @if (hasBadge(item, i)) {\r\n <solaris-badge class=\"solaris-stepper__badge\" [pill]=\"item.badgePill\" [size]=\"item.badgeSize\"\r\n [variant]=\"getResolvedBadgeVariant(item)\" [color]=\"getResolvedBadgeColor(item, i)\" aria-hidden=\"true\">\r\n\r\n @if (item.badgeTextKey) {\r\n {{ item.badgeTextKey | translate }}\r\n } @else if (item.badgeText) {\r\n {{ item.badgeText }}\r\n } @else {\r\n {{ getAutoBadgeTranslationKey(item, i) | translate }}\r\n }\r\n </solaris-badge>\r\n }\r\n </button>\r\n\r\n @if (!last) {\r\n <span class=\"solaris-stepper__connector\" [ngClass]=\"getConnectorClasses(i)\" aria-hidden=\"true\"></span>\r\n }\r\n </div>\r\n }\r\n </div>\r\n\r\n @if (renderPanels) {\r\n <div class=\"solaris-stepper__content\">\r\n <ng-content></ng-content>\r\n </div>\r\n }\r\n</div>\r\n","import { Directive, ElementRef, inject } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[solaris-popover-trigger]',\r\n standalone: true,\r\n})\r\nexport class SolarisPopoverTriggerDirective {\r\n readonly elementRef: ElementRef<HTMLElement> = inject(ElementRef<HTMLElement>);\r\n}\r\n","import { Directive, TemplateRef, inject } from '@angular/core';\r\n\r\n@Directive({\r\n selector: 'ng-template[solaris-popover-panel]',\r\n standalone: true,\r\n})\r\nexport class SolarisPopoverPanelDirective {\r\n readonly templateRef: TemplateRef<any> = inject(TemplateRef<any>);\r\n}\r\n","export type SolarisPopoverPlacement =\r\n | 'bottom-start' | 'bottom' | 'bottom-end'\r\n | 'top-start' | 'top' | 'top-end'\r\n | 'right-start' | 'right' | 'right-end'\r\n | 'left-start' | 'left' | 'left-end';\r\n\r\nexport interface SolarisPopoverPositionConfiguration {\r\n placement: SolarisPopoverPlacement;\r\n offset: number;\r\n viewportPadding: number;\r\n autoFlip: boolean;\r\n autoShift: boolean;\r\n matchWidth: boolean;\r\n}\r\n\r\nexport interface SolarisPopoverPositionResult {\r\n x: number;\r\n y: number;\r\n appliedPlacement: SolarisPopoverPlacement;\r\n}\r\n\r\nfunction clamp(v: number, min: number, max: number) {\r\n return Math.max(min, Math.min(max, v));\r\n}\r\n\r\nfunction initialXY(anchor: DOMRect, panel: DOMRect, placement: SolarisPopoverPlacement, offset: number) {\r\n const axMid = anchor.left + anchor.width / 2;\r\n const ayMid = anchor.top + anchor.height / 2;\r\n\r\n switch (placement) {\r\n case 'bottom-start': return { x: anchor.left, y: anchor.bottom + offset };\r\n case 'bottom': return { x: axMid - panel.width / 2, y: anchor.bottom + offset };\r\n case 'bottom-end': return { x: anchor.right - panel.width, y: anchor.bottom + offset };\r\n\r\n case 'top-start': return { x: anchor.left, y: anchor.top - panel.height - offset };\r\n case 'top': return { x: axMid - panel.width / 2, y: anchor.top - panel.height - offset };\r\n case 'top-end': return { x: anchor.right - panel.width, y: anchor.top - panel.height - offset };\r\n\r\n case 'right-start': return { x: anchor.right + offset, y: anchor.top };\r\n case 'right': return { x: anchor.right + offset, y: ayMid - panel.height / 2 };\r\n case 'right-end': return { x: anchor.right + offset, y: anchor.bottom - panel.height };\r\n\r\n case 'left-start': return { x: anchor.left - panel.width - offset, y: anchor.top };\r\n case 'left': return { x: anchor.left - panel.width - offset, y: ayMid - panel.height / 2 };\r\n case 'left-end': return { x: anchor.left - panel.width - offset, y: anchor.bottom - panel.height };\r\n }\r\n}\r\n\r\nfunction flipPlacement(p: SolarisPopoverPlacement): SolarisPopoverPlacement {\r\n if (p.startsWith('bottom')) return (p.replace('bottom', 'top') as SolarisPopoverPlacement);\r\n if (p.startsWith('top')) return (p.replace('top', 'bottom') as SolarisPopoverPlacement);\r\n if (p.startsWith('left')) return (p.replace('left', 'right') as SolarisPopoverPlacement);\r\n if (p.startsWith('right')) return (p.replace('right', 'left') as SolarisPopoverPlacement);\r\n return p;\r\n}\r\n\r\nexport function computePopoverPosition(anchorRect: DOMRect, panelRect: DOMRect,\r\n configuration: SolarisPopoverPositionConfiguration): SolarisPopoverPositionResult {\r\n const vw = window.innerWidth;\r\n const vh = window.innerHeight;\r\n\r\n let applied = configuration.placement;\r\n\r\n const fits = (x: number, y: number) => {\r\n const pad = configuration.viewportPadding;\r\n const left = x;\r\n const top = y;\r\n const right = x + panelRect.width;\r\n const bottom = y + panelRect.height;\r\n\r\n return left >= pad && top >= pad && right <= vw - pad && bottom <= vh - pad;\r\n };\r\n\r\n let pos = initialXY(anchorRect, panelRect, applied, configuration.offset);\r\n\r\n if (configuration.autoFlip && !fits(pos.x, pos.y)) {\r\n const flipped = flipPlacement(applied);\r\n const flippedPos = initialXY(anchorRect, panelRect, flipped, configuration.offset);\r\n if (fits(flippedPos.x, flippedPos.y)) {\r\n applied = flipped;\r\n pos = flippedPos;\r\n }\r\n }\r\n\r\n if (configuration.autoShift) {\r\n const pad = configuration.viewportPadding;\r\n pos.x = clamp(pos.x, pad, vw - pad - panelRect.width);\r\n pos.y = clamp(pos.y, pad, vh - pad - panelRect.height);\r\n }\r\n\r\n return { x: pos.x, y: pos.y, appliedPlacement: applied };\r\n}\r\n","import { ApplicationRef, ChangeDetectionStrategy, Component, computed, ContentChild, DestroyRef, effect, EmbeddedViewRef,\r\n EventEmitter, HostBinding, inject, Input, Output, signal, ViewEncapsulation } from '@angular/core';\r\n\r\nimport { SolarisPopoverTriggerDirective } from '../directives/popover-trigger.directive';\r\nimport { computePopoverPosition, SolarisPopoverPlacement } from '../model/popover.type';\r\nimport { SolarisPopoverPanelDirective } from '../directives/popover-panel.directive';\r\n\r\n@Component({\r\n selector: 'solaris-popover',\r\n standalone: true,\r\n templateUrl: './popover.html',\r\n styleUrls: ['./popover.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class SolarisPopover {\r\n private readonly appRef = inject(ApplicationRef);\r\n private readonly destroyRef = inject(DestroyRef);\r\n\r\n @Input() offset = 8;\r\n @Input() panelClass = '';\r\n @Input() autoFlip = true;\r\n @Input() autoShift = true;\r\n @Input() matchWidth = false;\r\n @Input() viewportPadding = 8;\r\n @Input() closeOnEscape = true;\r\n @Input() closeOnOutsideClick = true;\r\n @Input() anchorElement?: HTMLElement | null = null;\r\n @Input() matchWidthElement?: HTMLElement | null = null;\r\n @Input() placement: SolarisPopoverPlacement = 'bottom-start';\r\n\r\n @Output() openChange = new EventEmitter<boolean>();\r\n\r\n private readonly _internalOpen = signal(false);\r\n private readonly _openInput = signal<boolean | null>(null);\r\n\r\n readonly isOpen = computed(() => {\r\n const v = this._openInput();\r\n return typeof v === 'boolean' ? v : this._internalOpen();\r\n });\r\n\r\n @Input() set open(v: boolean | null) {\r\n this._openInput.set(v);\r\n }\r\n get open(): boolean | null {\r\n return this._openInput();\r\n }\r\n\r\n @ContentChild(SolarisPopoverPanelDirective) panelDir?: SolarisPopoverPanelDirective;\r\n @ContentChild(SolarisPopoverTriggerDirective) triggerDir?: SolarisPopoverTriggerDirective;\r\n\r\n private raf = 0;\r\n private _setting = false;\r\n private panelHost?: HTMLDivElement;\r\n private panelView?: EmbeddedViewRef<any>;\r\n\r\n @HostBinding('attr.data-open')\r\n get dataOpen() {\r\n return this.isOpen() ? 'true' : null;\r\n }\r\n\r\n constructor() {\r\n effect(() => {\r\n if (this.isOpen()) this.show();\r\n else this.hide();\r\n });\r\n\r\n effect((onCleanup) => {\r\n if (!this.isOpen()) return;\r\n\r\n const onResize = () => this.scheduleReposition();\r\n const onScroll = () => this.scheduleReposition();\r\n\r\n const onPointerDown = (ev: PointerEvent) => {\r\n if (!this.closeOnOutsideClick) return;\r\n const t = ev.target as Node | null;\r\n const triggerEl = this.triggerDir?.elementRef.nativeElement;\r\n if (!t || !triggerEl || !this.panelHost) return;\r\n\r\n const clickedInsidePanel = this.panelHost.contains(t);\r\n const clickedOnTrigger = triggerEl.contains(t);\r\n\r\n if (!clickedInsidePanel && !clickedOnTrigger) {\r\n this.setOpen(false);\r\n }\r\n };\r\n\r\n const onKeyDown = (ev: KeyboardEvent) => {\r\n if (!this.closeOnEscape) return;\r\n if (ev.key === 'Escape') this.setOpen(false);\r\n };\r\n\r\n window.addEventListener('resize', onResize, { passive: true });\r\n window.addEventListener('scroll', onScroll, { passive: true, capture: true });\r\n document.addEventListener('pointerdown', onPointerDown, { capture: true });\r\n document.addEventListener('keydown', onKeyDown, { capture: true });\r\n\r\n onCleanup(() => {\r\n window.removeEventListener('resize', onResize);\r\n window.removeEventListener('scroll', onScroll, true as any);\r\n document.removeEventListener('pointerdown', onPointerDown, true as any);\r\n document.removeEventListener('keydown', onKeyDown, true as any);\r\n });\r\n });\r\n\r\n this.destroyRef.onDestroy(() => this.unmountHard());\r\n }\r\n\r\n public toggle() {\r\n this.setOpen(!this.isOpen());\r\n }\r\n\r\n public setOpen(next: boolean) {\r\n const current = this.isOpen();\r\n if (next === current) return;\r\n if (this._setting) return;\r\n\r\n this._setting = true;\r\n try {\r\n this.openChange.emit(next);\r\n if (typeof this._openInput() !== 'boolean') {\r\n this._internalOpen.set(next);\r\n }\r\n } finally {\r\n queueMicrotask(() => (this._setting = false));\r\n }\r\n }\r\n\r\n private ensureMounted() {\r\n if (this.panelHost || !this.triggerDir || !this.panelDir) return;\r\n\r\n const host = document.createElement('div');\r\n host.style.top = '0px';\r\n host.style.left = '0px';\r\n host.style.display = 'none';\r\n host.style.position = 'fixed';\r\n host.style.zIndex = 'var(--solaris-z-max)';\r\n host.className = `solaris-popover-panel ${this.panelClass || ''}`.trim();\r\n\r\n const view = this.panelDir.templateRef.createEmbeddedView({});\r\n this.appRef.attachView(view);\r\n view.detectChanges();\r\n\r\n for (const node of view.rootNodes) host.appendChild(node);\r\n document.body.appendChild(host);\r\n\r\n this.panelHost = host;\r\n this.panelView = view;\r\n }\r\n\r\n private show() {\r\n this.ensureMounted();\r\n if (!this.panelHost) return;\r\n\r\n this.panelHost.style.display = '';\r\n this.scheduleReposition(true);\r\n }\r\n\r\n private hide() {\r\n if (!this.panelHost) return;\r\n this.panelHost.style.display = 'none';\r\n }\r\n\r\n private unmountHard() {\r\n if (this.raf) cancelAnimationFrame(this.raf);\r\n this.raf = 0;\r\n\r\n if (this.panelView) {\r\n this.appRef.detachView(this.panelView);\r\n this.panelView.destroy();\r\n this.panelView = undefined;\r\n }\r\n\r\n if (this.panelHost) {\r\n this.panelHost.remove();\r\n this.panelHost = undefined;\r\n }\r\n }\r\n\r\n private scheduleReposition(immediate = false) {\r\n if (!this.panelHost || !this.triggerDir) return;\r\n\r\n if (immediate) {\r\n this.reposition();\r\n return;\r\n }\r\n\r\n if (this.raf) return;\r\n this.raf = requestAnimationFrame(() => {\r\n this.raf = 0;\r\n this.reposition();\r\n });\r\n }\r\n\r\n private reposition() {\r\n const triggerEl = this.triggerDir?.elementRef.nativeElement;\r\n const host = this.panelHost;\r\n if (!triggerEl || !host) return;\r\n\r\n const anchorEl = this.anchorElement ?? triggerEl;\r\n const anchorRect = anchorEl.getBoundingClientRect();\r\n const widthEl = this.matchWidthElement ?? (this.matchWidth ? anchorEl : null);\r\n\r\n if (this.matchWidth && widthEl) {\r\n const w = widthEl.getBoundingClientRect().width;\r\n host.style.boxSizing = 'border-box';\r\n host.style.width = `${w}px`;\r\n host.style.minWidth = `${w}px`;\r\n host.style.maxWidth = `${w}px`;\r\n } else {\r\n host.style.width = '';\r\n host.style.minWidth = '';\r\n host.style.maxWidth = '';\r\n }\r\n\r\n if (getComputedStyle(host).display === 'none') return;\r\n\r\n const panelRect = host.getBoundingClientRect();\r\n\r\n const { x, y } = computePopoverPosition(anchorRect, panelRect, {\r\n placement: this.placement,\r\n offset: this.offset,\r\n viewportPadding: this.viewportPadding,\r\n autoFlip: this.autoFlip,\r\n autoShift: this.autoShift,\r\n matchWidth: this.matchWidth,\r\n });\r\n\r\n host.style.transform = `translate3d(${Math.round(x)}px, ${Math.round(y)}px, 0)`;\r\n }\r\n}\r\n","<ng-content></ng-content>\r\n","import { AfterContentInit, ChangeDetectionStrategy, Component, ContentChildren, EventEmitter, HostBinding, Input,\r\n Output, QueryList, signal } from '@angular/core';\r\nimport { NgClass } from '@angular/common';\r\n\r\nimport { TabsSize, TabsVariant } from '../model/tab.type';\r\nimport { SolarisTab } from '../tab/component/tab';\r\n\r\n@Component({\r\n selector: 'solaris-tabs',\r\n standalone: true,\r\n imports: [NgClass],\r\n templateUrl: './tabs.html',\r\n styleUrl: './tabs.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class SolarisTabs implements AfterContentInit {\r\n @Input() size: TabsSize = 'md';\r\n @Input() disabled = false;\r\n @Input() variant: TabsVariant = 'underline';\r\n @Input({ alias: 'active-id' }) activeId?: string;\r\n @Output('active-idChange') activeIdChange = new EventEmitter<string>();\r\n @Output() tabChange = new EventEmitter<{ id: string }>();\r\n\r\n @HostBinding('class') hostClass = 'solaris-tabs-host';\r\n @ContentChildren(SolarisTab) tabs!: QueryList<SolarisTab>;\r\n readonly focusId = signal<string | null>(null);\r\n\r\n ngAfterContentInit() {\r\n queueMicrotask(() => {\r\n const first = this.tabs?.get(0);\r\n if (!this.activeId && first?.id) {\r\n this.setActive(first.id, false);\r\n }\r\n if (!this.focusId() && (this.activeId ?? first?.id)) {\r\n this.focusId.set(this.activeId ?? first?.id ?? null);\r\n }\r\n this.syncTabs();\r\n this.tabs.changes.subscribe(() => this.syncTabs());\r\n });\r\n }\r\n\r\n private syncTabs() {\r\n const list = this.tabs?.toArray() ?? [];\r\n for (const t of list) {\r\n t._setParent(this);\r\n t._setDisabled(this.disabled || t.disabled);\r\n }\r\n }\r\n\r\n isActive(id: string) {\r\n return this.activeId === id;\r\n }\r\n\r\n isFocusable(id: string) {\r\n const fid = this.focusId();\r\n return (fid ?? this.activeId) === id;\r\n }\r\n\r\n setActive(id: string, emit = true) {\r\n if (!id) return;\r\n this.activeId = id;\r\n this.focusId.set(id);\r\n if (emit) {\r\n this.activeIdChange.emit(id);\r\n this.tabChange.emit({ id });\r\n }\r\n }\r\n\r\n onKeydown(ev: KeyboardEvent) {\r\n if (this.disabled) return;\r\n\r\n const keys = ['ArrowLeft', 'ArrowRight', 'Home', 'End'];\r\n if (!keys.includes(ev.key)) return;\r\n\r\n const list = (this.tabs?.toArray() ?? []).filter(t => !t._isDisabled());\r\n if (!list.length) return;\r\n\r\n ev.preventDefault();\r\n\r\n const currentId = this.focusId() ?? this.activeId ?? list[0].id;\r\n const idx = Math.max(0, list.findIndex(t => t.id === currentId));\r\n let next = idx;\r\n\r\n if (ev.key === 'ArrowLeft') next = (idx - 1 + list.length) % list.length;\r\n if (ev.key === 'ArrowRight') next = (idx + 1) % list.length;\r\n if (ev.key === 'Home') next = 0;\r\n if (ev.key === 'End') next = list.length - 1;\r\n\r\n const nextTab = list[next];\r\n this.focusId.set(nextTab.id);\r\n nextTab._focus();\r\n }\r\n}\r\n","<div [ngClass]=\"['size-' + size, 'variant-' + variant, disabled ? 'is-disabled' : '']\"\r\n class=\"solaris-tabs\" role=\"tablist\" (keydown)=\"onKeydown($event)\">\r\n <ng-content/>\r\n</div>\r\n","import { ChangeDetectionStrategy, Component, ElementRef, HostBinding,\r\n HostListener, Input, Optional } from '@angular/core';\r\nimport { RouterLink } from '@angular/router';\r\n\r\nimport { SolarisTabs } from '../../component/tabs';\r\n\r\n@Component({\r\n selector: 'solaris-tab',\r\n standalone: true,\r\n imports: [RouterLink],\r\n templateUrl: './tab.html',\r\n styleUrl: './tab.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class SolarisTab {\r\n @Input() disabled = false;\r\n @Input() routerLink?: any[] | string;\r\n @Input({ required: true }) id!: string;\r\n\r\n private parent?: SolarisTabs;\r\n private disabledByParent = false;\r\n\r\n constructor(private readonly elementRef: ElementRef<HTMLElement>,@Optional() parent: SolarisTabs) {\r\n this.parent = parent;\r\n }\r\n\r\n _setParent(p: SolarisTabs) { this.parent = p; }\r\n _setDisabled(v: boolean) { this.disabledByParent = v; }\r\n\r\n _isDisabled() {\r\n return this.disabled || this.disabledByParent;\r\n }\r\n\r\n _focus() {\r\n this.elementRef.nativeElement.focus();\r\n }\r\n\r\n @HostBinding('class') get hostClass() {\r\n const active = this.parent?.isActive(this.id);\r\n return [\r\n 'solaris-tab',\r\n active ? 'is-active' : '',\r\n this._isDisabled() ? 'is-disabled' : '',\r\n this.routerLink ? 'is-link' : '',\r\n ].filter(Boolean).join(' ');\r\n }\r\n @HostBinding('attr.role') role = 'tab';\r\n @HostBinding('attr.tabindex') get tabIndex() {\r\n if (this._isDisabled()) return -1;\r\n return this.parent?.isFocusable(this.id) ? 0 : -1;\r\n }\r\n @HostBinding('attr.aria-selected') get ariaSelected() {\r\n return this.parent?.isActive(this.id) ? 'true' : 'false';\r\n }\r\n\r\n @HostListener('click') onClick() {\r\n if (this._isDisabled()) return;\r\n this.parent?.setActive(this.id, true);\r\n }\r\n\r\n @HostListener('focus') onFocus() {\r\n if (this._isDisabled()) return;\r\n this.parent?.focusId.set(this.id);\r\n }\r\n}\r\n","@if (routerLink) {\r\n <a class=\"solaris-tab__inner\" [routerLink]=\"routerLink\">\r\n <ng-content />\r\n </a>\r\n} @else {\r\n <button type=\"button\" class=\"solaris-tab__inner\">\r\n <ng-content />\r\n </button>\r\n}\r\n","import { ChangeDetectionStrategy, Component, HostBinding, Input, OnChanges, SimpleChanges } from '@angular/core';\r\nimport { NgStyle } from '@angular/common';\r\n\r\n@Component({\r\n selector: 'solaris-loading-overlay',\r\n standalone: true,\r\n templateUrl: './loading-overlay.html',\r\n styleUrl: './loading-overlay.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [\r\n NgStyle\r\n ]\r\n})\r\nexport class SolarisLoadingOverlay implements OnChanges {\r\n @HostBinding('attr.solaris-loading-overlay') readonly marker = '';\r\n\r\n @Input({ alias: 'z-index' }) zIndex?: number;\r\n @Input() backdrop: 'soft' | 'strong' = 'soft';\r\n @Input() appearance: 'card' | 'minimal' = 'card';\r\n @Input({ transform: coerceBoolean }) blur = true;\r\n @Input({ transform: coerceBoolean }) open = false;\r\n @Input({ alias: 'lock-scroll', transform: coerceBoolean }) lockScroll = true;\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (!this.lockScroll) return;\r\n\r\n if (changes['open']) {\r\n if (this.open) document.documentElement.style.overflow = 'hidden';\r\n else document.documentElement.style.overflow = '';\r\n }\r\n }\r\n\r\n get overlayStyle() {\r\n return this.zIndex == null ? null : {'z-index': String(this.zIndex)};\r\n }\r\n}\r\n\r\nfunction coerceBoolean(v: any): boolean {\r\n return v === '' || v === true || v === 'true' || v === 1 || v === '1';\r\n}\r\n","@if (open) {\r\n <div class=\"solaris-loading-overlay\" [class.backdrop-soft]=\"backdrop === 'soft'\"\r\n [class.backdrop-strong]=\"backdrop === 'strong'\" [class.is-blur]=\"blur\"\r\n [class.appearance-card]=\"appearance === 'card'\" [class.appearance-minimal]=\"appearance === 'minimal'\"\r\n [ngStyle]=\"overlayStyle\" role=\"presentation\">\r\n <div class=\"solaris-loading-overlay__backdrop\" aria-hidden=\"true\"></div>\r\n\r\n <div class=\"solaris-loading-overlay__content\" role=\"status\" aria-live=\"polite\" aria-busy=\"true\">\r\n <ng-content></ng-content>\r\n </div>\r\n </div>\r\n}\r\n","import { SolarisFloatingOverlayRef, SolarisFloatingPosition, SolarisFloatingPositionConfiguration,\r\n SolarisFloatingPositionResult, SolarisTooltipRepositionOptions } from './model/tooltip-services.type';\r\nimport { ElementRef } from '@angular/core';\r\n\r\nfunction clamp(value: number, min: number, max: number): number {\r\n return Math.max(min, Math.min(max, value));\r\n}\r\n\r\nfunction oppositePosition(position: SolarisFloatingPosition): SolarisFloatingPosition {\r\n switch (position) {\r\n case 'top': return 'bottom';\r\n case 'bottom': return 'top';\r\n case 'left': return 'right';\r\n case 'right': return 'left';\r\n }\r\n}\r\n\r\nfunction initialXY(anchor: DOMRect, panel: DOMRect,\r\n position: SolarisFloatingPosition, offset: number): { x: number; y: number } {\r\n const anchorCenterX = anchor.left + anchor.width / 2;\r\n const anchorCenterY = anchor.top + anchor.height / 2;\r\n\r\n switch (position) {\r\n case 'top':\r\n return {\r\n x: anchorCenterX - panel.width / 2,\r\n y: anchor.top - panel.height - offset,\r\n };\r\n\r\n case 'bottom':\r\n return {\r\n x: anchorCenterX - panel.width / 2,\r\n y: anchor.bottom + offset,\r\n };\r\n\r\n case 'right':\r\n return {\r\n x: anchor.right + offset,\r\n y: anchorCenterY - panel.height / 2,\r\n };\r\n\r\n case 'left':\r\n return {\r\n x: anchor.left - panel.width - offset,\r\n y: anchorCenterY - panel.height / 2,\r\n };\r\n }\r\n}\r\n\r\nexport function computeFloatingPosition(anchorRect: DOMRect, panelRect: DOMRect,\r\n configuration: SolarisFloatingPositionConfiguration): SolarisFloatingPositionResult {\r\n const viewportWidth = window.innerWidth;\r\n const viewportHeight = window.innerHeight;\r\n const padding = configuration.viewportPadding;\r\n\r\n let appliedPosition = configuration.position;\r\n let position = initialXY(anchorRect, panelRect, appliedPosition, configuration.offset);\r\n\r\n const fits = (x: number, y: number): boolean => {\r\n const left = x;\r\n const top = y;\r\n const right = x + panelRect.width;\r\n const bottom = y + panelRect.height;\r\n\r\n return (\r\n left >= padding &&\r\n top >= padding &&\r\n right <= viewportWidth - padding &&\r\n bottom <= viewportHeight - padding\r\n );\r\n };\r\n\r\n if (configuration.autoFlip && !fits(position.x, position.y)) {\r\n const flipped = oppositePosition(appliedPosition);\r\n const flippedPosition = initialXY(anchorRect, panelRect, flipped, configuration.offset);\r\n\r\n if (fits(flippedPosition.x, flippedPosition.y)) {\r\n appliedPosition = flipped;\r\n position = flippedPosition;\r\n }\r\n }\r\n\r\n if (configuration.autoShift) {\r\n position.x = clamp(position.x, padding, viewportWidth - padding - panelRect.width);\r\n position.y = clamp(position.y, padding, viewportHeight - padding - panelRect.height);\r\n }\r\n\r\n return {\r\n x: position.x,\r\n y: position.y,\r\n appliedPosition,\r\n };\r\n}\r\n\r\nexport function repositionTooltipOverlay<T>(anchor: ElementRef<HTMLElement>, overlayRef: SolarisFloatingOverlayRef<T>,\r\n options: SolarisTooltipRepositionOptions, setAppliedPosition: (position: SolarisFloatingPosition) => void): void {\r\n const anchorRect = anchor.nativeElement.getBoundingClientRect();\r\n const panelRect = overlayRef.hostElement.getBoundingClientRect();\r\n\r\n const result = computeFloatingPosition(anchorRect, panelRect, options);\r\n\r\n overlayRef.setTransform(result.x, result.y);\r\n setAppliedPosition(result.appliedPosition);\r\n}\r\n","import { ApplicationRef, EnvironmentInjector, Injectable, Type,\r\n createComponent, inject } from '@angular/core';\r\n\r\nimport {\r\n SolarisFloatingOverlayOptions,\r\n SolarisFloatingOverlayRef,\r\n SolarisFloatingRepositionContext\r\n} from './model/tooltip-services.type';\r\nimport { computeFloatingPosition } from './floating-position.util';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class SolarisFloatingOverlayService {\r\n private readonly appRef = inject(ApplicationRef);\r\n private readonly injector = inject(EnvironmentInjector);\r\n\r\n create<T>(component: Type<T>, options: SolarisFloatingOverlayOptions = {}): SolarisFloatingOverlayRef<T> {\r\n const id = this.createId(options.idPrefix ?? 'solaris-floating');\r\n\r\n const host = document.createElement('div');\r\n host.id = id;\r\n host.style.position = 'fixed';\r\n host.style.top = '0';\r\n host.style.left = '0';\r\n host.style.display = 'block';\r\n host.style.width = 'max-content';\r\n host.style.maxWidth = 'max-content';\r\n host.style.zIndex = options.zIndex ?? 'var(--solaris-z-tooltip, 1200)';\r\n host.style.pointerEvents = options.pointerEvents ?? 'none';\r\n host.style.transform = 'translate3d(0, 0, 0)';\r\n\r\n if (options.panelClass?.trim()) {\r\n host.className = options.panelClass.trim();\r\n }\r\n\r\n document.body.appendChild(host);\r\n\r\n const componentRef = createComponent(component, {\r\n environmentInjector: this.injector,\r\n hostElement: host,\r\n });\r\n\r\n this.appRef.attachView(componentRef.hostView);\r\n componentRef.changeDetectorRef.detectChanges();\r\n\r\n return {\r\n id,\r\n hostElement: host,\r\n componentRef,\r\n\r\n setTransform(x: number, y: number): void {\r\n host.style.transform = `translate3d(${Math.round(x)}px, ${Math.round(y)}px, 0)`;\r\n },\r\n\r\n destroy: (): void => {\r\n this.appRef.detachView(componentRef.hostView);\r\n componentRef.destroy();\r\n host.remove();\r\n },\r\n };\r\n }\r\n\r\n reposition<T>(context: SolarisFloatingRepositionContext<T>): void {\r\n const anchorRect = context.anchor.getBoundingClientRect();\r\n const panelRect = context.overlayRef.hostElement.getBoundingClientRect();\r\n\r\n const result = computeFloatingPosition(anchorRect, panelRect, context.options);\r\n\r\n context.overlayRef.setTransform(result.x, result.y);\r\n context.setAppliedPosition(result.appliedPosition);\r\n }\r\n\r\n clearFloatingTimers(showTimer: number, hideTimer: number, raf: number): void {\r\n globalThis.clearTimeout(showTimer);\r\n globalThis.clearTimeout(hideTimer);\r\n\r\n if (raf) {\r\n cancelAnimationFrame(raf);\r\n }\r\n }\r\n\r\n destroyOverlay<T>(overlayRef?: SolarisFloatingOverlayRef<T>): void {\r\n overlayRef?.destroy();\r\n }\r\n\r\n private createId(prefix: string): string {\r\n const random =\r\n typeof crypto !== 'undefined' && 'randomUUID' in crypto\r\n ? crypto.randomUUID()\r\n : `${Date.now()}-${Math.round(Math.random() * 1_000_000)}`;\r\n\r\n return `${prefix}-${random}`;\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component, TemplateRef, input } from '@angular/core';\r\nimport { NgTemplateOutlet } from '@angular/common';\r\n\r\nimport { SolarisTooltipPosition, SolarisTooltipSize, SolarisTooltipVariant } from '../../tooltip/model/tooltip.type';\r\n\r\n@Component({\r\n selector: 'solaris-rich-tooltip-panel',\r\n standalone: true,\r\n imports: [\r\n NgTemplateOutlet\r\n ],\r\n templateUrl: './rich-tooltip-panel.html',\r\n styleUrls: ['./rich-tooltip-panel.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class SolarisRichTooltipPanel {\r\n readonly template = input<TemplateRef<unknown> | null>(null);\r\n readonly position = input<SolarisTooltipPosition>('top');\r\n readonly variant = input<SolarisTooltipVariant>('inverse');\r\n readonly size = input<SolarisTooltipSize>('md');\r\n}\r\n","<div class=\"solaris-rich-tooltip\" [attr.data-position]=\"position()\" [attr.data-variant]=\"variant()\"\r\n [attr.data-size]=\"size()\" role=\"tooltip\">\r\n <div class=\"solaris-rich-tooltip__content\">\r\n @if (template()) {\r\n <ng-container [ngTemplateOutlet]=\"template()\"></ng-container>\r\n }\r\n </div>\r\n\r\n <span class=\"solaris-rich-tooltip__arrow\" aria-hidden=\"true\"></span>\r\n</div>\r\n","import { Directive, ElementRef, Renderer2, TemplateRef, effect, inject, input, OnDestroy } from '@angular/core';\r\n\r\nimport { SolarisTooltipPosition, SolarisTooltipSize, SolarisTooltipVariant } from '../../tooltip/model/tooltip.type';\r\nimport { SolarisFloatingOverlayService } from '../../../../services/tooltip/floating-overlay.service';\r\nimport { SolarisFloatingOverlayRef } from '../../../../services/tooltip/model/tooltip-services.type';\r\nimport { repositionTooltipOverlay } from '../../../../services/tooltip/floating-position.util';\r\nimport { SolarisRichTooltipPanel } from '../component/rich-tooltip-panel';\r\n\r\n@Directive({\r\n selector: '[solaris-rich-tooltip]',\r\n standalone: true,\r\n})\r\nexport class SolarisRichTooltipDirective implements OnDestroy {\r\n private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\r\n private readonly renderer = inject(Renderer2);\r\n private readonly floatingOverlay = inject(SolarisFloatingOverlayService);\r\n\r\n readonly template = input<TemplateRef<unknown> | null>(null, {\r\n alias: 'solaris-rich-tooltip',\r\n });\r\n\r\n readonly tooltipPosition = input<SolarisTooltipPosition>('top', {\r\n alias: 'tooltip-position',\r\n });\r\n\r\n readonly tooltipVariant = input<SolarisTooltipVariant>('inverse', {\r\n alias: 'tooltip-variant',\r\n });\r\n\r\n readonly tooltipSize = input<SolarisTooltipSize>('md', {\r\n alias: 'tooltip-size',\r\n });\r\n\r\n readonly tooltipDisabled = input(false, {\r\n alias: 'tooltip-disabled',\r\n });\r\n\r\n readonly tooltipShowDelay = input(300, {\r\n alias: 'tooltip-show-delay',\r\n });\r\n\r\n readonly tooltipHideDelay = input(120, {\r\n alias: 'tooltip-hide-delay',\r\n });\r\n\r\n readonly tooltipOffset = input(8, {\r\n alias: 'tooltip-offset',\r\n });\r\n\r\n readonly tooltipAutoFlip = input(true, {\r\n alias: 'tooltip-auto-flip',\r\n });\r\n\r\n readonly tooltipAutoShift = input(true, {\r\n alias: 'tooltip-auto-shift',\r\n });\r\n\r\n readonly tooltipViewportPadding = input(8, {\r\n alias: 'tooltip-viewport-padding',\r\n });\r\n\r\n private overlayRef?: SolarisFloatingOverlayRef<SolarisRichTooltipPanel>;\r\n private showTimer = 0;\r\n private hideTimer = 0;\r\n private raf = 0;\r\n private isTriggerHovered = false;\r\n private isPanelHovered = false;\r\n private hasFocusInside = false;\r\n\r\n private readonly cleanups: Array<() => void> = [];\r\n\r\n constructor() {\r\n const host = this.elementRef.nativeElement;\r\n\r\n this.cleanups.push(\r\n this.renderer.listen(host, 'mouseenter', () => {\r\n this.isTriggerHovered = true;\r\n this.scheduleShow();\r\n }),\r\n this.renderer.listen(host, 'mouseleave', () => {\r\n this.isTriggerHovered = false;\r\n this.scheduleHideIfSafe();\r\n }),\r\n this.renderer.listen(host, 'focusin', () => {\r\n this.hasFocusInside = true;\r\n this.scheduleShow();\r\n }),\r\n this.renderer.listen(host, 'focusout', () => {\r\n this.hasFocusInside = false;\r\n this.scheduleHideIfSafe();\r\n }),\r\n this.renderer.listen(host, 'keydown', (event: KeyboardEvent) => {\r\n if (event.key === 'Escape') {\r\n this.hide();\r\n }\r\n }),\r\n this.renderer.listen(globalThis, 'resize', () => this.scheduleReposition()),\r\n this.renderer.listen(globalThis, 'scroll', () => this.scheduleReposition()),\r\n this.renderer.listen(document, 'keydown', (event: KeyboardEvent) => {\r\n if (event.key === 'Escape') {\r\n this.hide();\r\n }\r\n }),\r\n );\r\n\r\n effect(() => {\r\n if (!this.overlayRef) return;\r\n\r\n this.applyPanelInputs();\r\n this.scheduleReposition();\r\n });\r\n }\r\n\r\n private scheduleShow(): void {\r\n if (this.tooltipDisabled()) return;\r\n if (!this.template()) return;\r\n\r\n globalThis.clearTimeout(this.hideTimer);\r\n globalThis.clearTimeout(this.showTimer);\r\n\r\n this.showTimer = globalThis.setTimeout(() => {\r\n this.show();\r\n }, this.tooltipShowDelay());\r\n }\r\n\r\n private scheduleHideIfSafe(): void {\r\n globalThis.clearTimeout(this.showTimer);\r\n globalThis.clearTimeout(this.hideTimer);\r\n\r\n this.hideTimer = globalThis.setTimeout(() => {\r\n if (!this.isTriggerHovered && !this.isPanelHovered && !this.hasFocusInside) {\r\n this.hide();\r\n }\r\n }, this.tooltipHideDelay());\r\n }\r\n\r\n private show(): void {\r\n if (this.overlayRef || this.tooltipDisabled()) return;\r\n if (!this.template()) return;\r\n\r\n this.overlayRef = this.floatingOverlay.create(SolarisRichTooltipPanel, {\r\n idPrefix: 'solaris-rich-tooltip',\r\n zIndex: 'var(--solaris-z-tooltip, 1200)',\r\n pointerEvents: 'auto',\r\n });\r\n\r\n this.applyPanelInputs();\r\n this.bindPanelInteractions();\r\n\r\n this.renderer.setAttribute(\r\n this.elementRef.nativeElement,\r\n 'aria-describedby',\r\n this.overlayRef.id,\r\n );\r\n\r\n requestAnimationFrame(() => this.reposition());\r\n }\r\n\r\n private bindPanelInteractions(): void {\r\n if (!this.overlayRef) return;\r\n\r\n const panel = this.overlayRef.hostElement;\r\n\r\n this.cleanups.push(\r\n this.renderer.listen(panel, 'mouseenter', () => {\r\n this.isPanelHovered = true;\r\n globalThis.clearTimeout(this.hideTimer);\r\n }),\r\n this.renderer.listen(panel, 'mouseleave', () => {\r\n this.isPanelHovered = false;\r\n this.scheduleHideIfSafe();\r\n }),\r\n this.renderer.listen(panel, 'focusin', () => {\r\n this.hasFocusInside = true;\r\n globalThis.clearTimeout(this.hideTimer);\r\n }),\r\n this.renderer.listen(panel, 'focusout', () => {\r\n this.hasFocusInside = false;\r\n this.scheduleHideIfSafe();\r\n }),\r\n );\r\n }\r\n\r\n private hide(): void {\r\n this.floatingOverlay.clearFloatingTimers(this.showTimer, this.hideTimer, this.raf);\r\n this.raf = 0;\r\n\r\n this.renderer.removeAttribute(this.elementRef.nativeElement, 'aria-describedby');\r\n\r\n this.floatingOverlay.destroyOverlay(this.overlayRef);\r\n this.overlayRef = undefined;\r\n\r\n this.isPanelHovered = false;\r\n this.hasFocusInside = false;\r\n }\r\n\r\n private applyPanelInputs(): void {\r\n if (!this.overlayRef) return;\r\n\r\n const panel = this.overlayRef.componentRef;\r\n\r\n panel.setInput('template', this.template());\r\n panel.setInput('position', this.tooltipPosition());\r\n panel.setInput('variant', this.tooltipVariant());\r\n panel.setInput('size', this.tooltipSize());\r\n\r\n panel.changeDetectorRef.detectChanges();\r\n }\r\n\r\n private scheduleReposition(): void {\r\n if (!this.overlayRef) return;\r\n if (this.raf) return;\r\n\r\n this.raf = requestAnimationFrame(() => {\r\n this.raf = 0;\r\n this.reposition();\r\n });\r\n }\r\n\r\n private reposition(): void {\r\n if (!this.overlayRef) return;\r\n\r\n repositionTooltipOverlay(this.elementRef, this.overlayRef, {\r\n position: this.tooltipPosition(),\r\n offset: this.tooltipOffset(),\r\n viewportPadding: this.tooltipViewportPadding(),\r\n autoFlip: this.tooltipAutoFlip(),\r\n autoShift: this.tooltipAutoShift(),\r\n },\r\n (position) => {\r\n this.overlayRef?.componentRef.setInput('position', position);\r\n this.overlayRef?.componentRef.changeDetectorRef.detectChanges();\r\n },\r\n );\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.hide();\r\n\r\n for (const cleanup of this.cleanups) {\r\n cleanup();\r\n }\r\n }\r\n}\r\n","import { Directive, ElementRef, HostBinding, HostListener, Input, booleanAttribute, computed, inject, signal } from '@angular/core';\r\n\r\nimport { SolarisButtonColorInput, SolarisButtonVariant, SolarisRadiusInput } from '../models/button.type';\r\nimport { SolarisColorPreset, SolarisSizePreset } from '../../../common/model/common-configurations.type';\r\n\r\nconst PRESET_COLORS = new Set<SolarisColorPreset>([\r\n 'primary',\r\n 'surface',\r\n 'success',\r\n 'warning',\r\n 'error',\r\n 'info',\r\n 'gradient',\r\n]);\r\nfunction resolveRadius(v: SolarisRadiusInput): string {\r\n const s = String(v).trim();\r\n switch (s) {\r\n case 'none':\r\n return '0';\r\n case 'sm':\r\n return 'var(--solaris-radius-sm)';\r\n case 'md':\r\n return 'var(--solaris-radius-md, var(--solaris-radius-sm))';\r\n case 'lg':\r\n return 'var(--solaris-radius-lg, var(--solaris-radius-md, var(--solaris-radius-sm)))';\r\n case 'full':\r\n return 'var(--solaris-radius-full)';\r\n default:\r\n return s;\r\n }\r\n}\r\n\r\n@Directive({\r\n selector: 'button[solaris-button], a[solaris-button]',\r\n standalone: true,\r\n})\r\nexport class SolarisButtonDirective {\r\n private readonly elementRef = inject(ElementRef<HTMLElement>);\r\n\r\n private readonly _loading = signal(false);\r\n private readonly _disabled = signal(false);\r\n private readonly _iconOnly = signal(false);\r\n private readonly _fullWidth = signal(false);\r\n private readonly _badgeOverlay = signal(false);\r\n private readonly _textColor = signal<string | null>(null);\r\n private readonly _customColor = signal<string | null>(null);\r\n private readonly _size = signal<SolarisSizePreset>('md');\r\n private readonly _variant = signal<SolarisButtonVariant>('solid');\r\n private readonly _radius = signal<SolarisRadiusInput | null>(null);\r\n private readonly _color = signal<SolarisColorPreset | 'custom'>('primary');\r\n\r\n private readonly isAnchor = computed(\r\n () => this.elementRef.nativeElement.tagName.toLowerCase() === 'a'\r\n );\r\n\r\n @Input() set size(v: SolarisSizePreset) {\r\n if (v) this._size.set(v);\r\n }\r\n @Input() set variant(v: SolarisButtonVariant) {\r\n if (v) this._variant.set(v);\r\n }\r\n @Input() set color(v: SolarisButtonColorInput) {\r\n if (v == null || String(v).trim() === '') return;\r\n\r\n const value = String(v).trim();\r\n if (PRESET_COLORS.has(value as SolarisColorPreset)) {\r\n this._color.set(value as SolarisColorPreset);\r\n this._customColor.set(null);\r\n } else {\r\n this._color.set('custom');\r\n this._customColor.set(value);\r\n }\r\n }\r\n @Input() set textColor(v: string | null | undefined) {\r\n const value = v == null || String(v).trim() === '' ? null : String(v).trim();\r\n this._textColor.set(value);\r\n }\r\n @Input() set radius(v: SolarisRadiusInput | null | undefined) {\r\n const value = v == null || String(v).trim() === '' ? null : (v);\r\n this._radius.set(value);\r\n }\r\n @Input({ transform: booleanAttribute }) set loading(v: boolean) {\r\n this._loading.set(v);\r\n }\r\n @Input({ transform: booleanAttribute }) set iconOnly(v: boolean) {\r\n this._iconOnly.set(v);\r\n }\r\n @Input({ transform: booleanAttribute }) set disabled(v: boolean) {\r\n this._disabled.set(v);\r\n }\r\n @Input({ transform: booleanAttribute }) set fullWidth(v: boolean) {\r\n this._fullWidth.set(v);\r\n }\r\n @Input({ transform: booleanAttribute }) set badgeOverlay(v: boolean) {\r\n this._badgeOverlay.set(v);\r\n }\r\n\r\n @HostBinding('attr.solaris-button') readonly attr = '';\r\n @HostBinding('attr.tabindex') get tabIndex() {\r\n return this.isAnchor() && (this._disabled() || this._loading()) ? -1 : null;\r\n }\r\n @HostBinding('attr.aria-busy') get ariaBusy() {\r\n return this._loading() ? 'true' : null;\r\n }\r\n @HostBinding('attr.data-size') get dataSize() {\r\n return this._size();\r\n }\r\n @HostBinding('attr.data-color') get dataColor() {\r\n return this._color();\r\n }\r\n @HostBinding('attr.disabled') get nativeDisabled() {\r\n const isButton = !this.isAnchor();\r\n return isButton && (this._disabled() || this._loading()) ? '' : null;\r\n }\r\n @HostBinding('attr.data-variant') get dataVariant() {\r\n return this._variant();\r\n }\r\n @HostBinding('attr.aria-disabled') get ariaDisabled() {\r\n return this.isAnchor() && (this._disabled() || this._loading()) ? 'true' : null;\r\n }\r\n @HostBinding('attr.data-icon-only') get dataIconOnly() {\r\n return this._iconOnly() ? 'true' : null;\r\n }\r\n @HostBinding('attr.data-full-width') get dataFullWidth() {\r\n return this._fullWidth() ? 'true' : null;\r\n }\r\n @HostBinding('style.--sb-custom') get customColorValue() {\r\n return this._customColor() ?? null;\r\n }\r\n @HostBinding('attr.data-custom-ink') get dataCustomInk() {\r\n return this._textColor() ? 'true' : null;\r\n }\r\n @HostBinding('style.--sb-custom-ink') get customInkValue() {\r\n return this._textColor() ?? null;\r\n }\r\n @HostBinding('attr.data-badge-overlay') get dataBadgeOverlay() {\r\n return this._badgeOverlay() ? 'true' : null;\r\n }\r\n @HostBinding('style.--solaris-button-radius') get buttonRadius() {\r\n return this._radius() ? resolveRadius(this._radius()!) : null;\r\n }\r\n\r\n @HostListener('click', ['$event']) onClick(ev: Event) {\r\n if (!this.isAnchor()) return;\r\n if (this._disabled() || this._loading()) {\r\n ev.preventDefault();\r\n ev.stopImmediatePropagation();\r\n }\r\n }\r\n}\r\n","import { EnvironmentProviders, InjectionToken, makeEnvironmentProviders } from '@angular/core';\r\n\r\nimport { SolarisNotificationConfig, SolarisNotificationConfigInput, SolarisNotificationPosition } from '../model/notification.types';\r\n\r\nexport const SOLARIS_NOTIFICATION_POSITIONS: readonly SolarisNotificationPosition[] = [\r\n 'top-right', 'top-left', 'top-center',\r\n 'bottom-right', 'bottom-left', 'bottom-center',\r\n] as const;\r\n\r\nexport const SOLARIS_NOTIFICATION_DEFAULT_CONFIG: SolarisNotificationConfig = {\r\n defaultPosition: 'bottom-center',\r\n defaultDuration: 15000,\r\n maxVisiblePerPosition: 4,\r\n hoverPause: false,\r\n newestOnTop: true,\r\n expandSingle: false,\r\n persistInCenter: true,\r\n translationScope: 'solaris.notifications',\r\n};\r\n\r\nexport const SOLARIS_NOTIFICATION_CONFIG = new InjectionToken<SolarisNotificationConfig>(\r\n 'SOLARIS_NOTIFICATION_CONFIG',\r\n {\r\n providedIn: 'root',\r\n factory: () => SOLARIS_NOTIFICATION_DEFAULT_CONFIG,\r\n }\r\n);\r\n\r\nfunction mergeConfig(input: SolarisNotificationConfigInput = {}): SolarisNotificationConfig {\r\n return {\r\n ...SOLARIS_NOTIFICATION_DEFAULT_CONFIG,\r\n ...input,\r\n };\r\n}\r\n\r\nexport function provideSolarisNotifications(input: SolarisNotificationConfigInput = {}): EnvironmentProviders {\r\n return makeEnvironmentProviders([\r\n {\r\n provide: SOLARIS_NOTIFICATION_CONFIG,\r\n useValue: mergeConfig(input),\r\n },\r\n ]);\r\n}\r\n","import { Injectable, computed, inject } from '@angular/core';\r\nimport { toSignal } from '@angular/core/rxjs-interop';\r\n\r\nimport {\r\n SOLARIS_TRANSLATION,\r\n SOLARIS_TRANSLATION_CONFIGURATION,\r\n SolarisTranslationParams,\r\n} from '@educarehq/solaris-services';\r\n\r\nimport { SOLARIS_NOTIFICATION_CONFIG } from '../config/notification.config';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class SolarisNotificationIntlService {\r\n private readonly translationService = inject(SOLARIS_TRANSLATION);\r\n private readonly notificationConfig = inject(SOLARIS_NOTIFICATION_CONFIG);\r\n private readonly translationConfig = inject(SOLARIS_TRANSLATION_CONFIGURATION);\r\n\r\n private readonly activeLang = toSignal(this.translationService.languageChanges(), {\r\n initialValue: this.translationService.language(),\r\n });\r\n\r\n private readonly prefix = computed(() => {\r\n this.activeLang();\r\n\r\n const uiScope = this.translationConfig.uiScope ?? 'ui';\r\n const namespace = this.notificationConfig.translationScope;\r\n\r\n return `${uiScope}.${namespace}`;\r\n });\r\n\r\n translate(key: string, params?: SolarisTranslationParams): string {\r\n this.activeLang();\r\n\r\n const isAbsoluteKey = key.startsWith('ui.') || key.startsWith('solaris.')\r\n || key.startsWith('notification.');\r\n\r\n const finalKey = isAbsoluteKey ? key : `${this.prefix()}.${key}`;\r\n return this.translationService.translate(finalKey, params);\r\n }\r\n\r\n close(): string {\r\n return this.translate('close');\r\n }\r\n\r\n expand(): string {\r\n return this.translate('expand');\r\n }\r\n\r\n collapse(): string {\r\n return this.translate('collapse');\r\n }\r\n\r\n stopTimer(): string {\r\n return this.translate('stopTimer');\r\n }\r\n\r\n resumeTimer(): string {\r\n return this.translate('resumeTimer');\r\n }\r\n\r\n paused(): string {\r\n return this.translate('paused');\r\n }\r\n\r\n centerTitle(): string {\r\n return this.translate('centerTitle');\r\n }\r\n\r\n emptyCenter(): string {\r\n return this.translate('emptyCenter');\r\n }\r\n\r\n clearHistory(): string {\r\n return this.translate('clearHistory');\r\n }\r\n\r\n autoClose(seconds: number): string {\r\n return this.translate('autoClose', {\r\n seconds,\r\n unit: seconds === 1 ? this.translate('units.second') : this.translate('units.seconds'),\r\n });\r\n }\r\n}\r\n","import { DestroyRef, Injectable, PLATFORM_ID, computed, inject, signal } from '@angular/core';\r\nimport { isPlatformBrowser } from '@angular/common';\r\n\r\nimport { SolarisNotificationConfig, SolarisNotificationInput, SolarisNotificationKind,\r\n SolarisNotificationPosition, SolarisNotificationRecord, SolarisNotificationRef } from '../model/notification.types';\r\nimport { SOLARIS_NOTIFICATION_CONFIG, SOLARIS_NOTIFICATION_POSITIONS } from '../config/notification.config';\r\nimport { SOLARIS_TRANSLATION } from '@educarehq/solaris-services';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class SolarisNotificationService {\r\n private readonly platformId = inject(PLATFORM_ID);\r\n private readonly destroyRef = inject(DestroyRef);\r\n readonly config: SolarisNotificationConfig = inject(SOLARIS_NOTIFICATION_CONFIG);\r\n private readonly translationService = inject(SOLARIS_TRANSLATION);\r\n\r\n readonly centerOpen = signal(false);\r\n private readonly _items = signal<SolarisNotificationRecord[]>([]);\r\n\r\n readonly items = computed(() => this._items());\r\n readonly visibleItems = computed(() =>\r\n this._items().filter((item) => item.state === 'visible')\r\n );\r\n readonly centerItems = computed(() =>\r\n [...this._items()].sort((a, b) => b.createdAt - a.createdAt)\r\n );\r\n\r\n private lastTick = 0;\r\n private readonly intervalId: number | null = null;\r\n\r\n constructor() {\r\n if (!isPlatformBrowser(this.platformId)) return;\r\n\r\n this.lastTick = performance.now();\r\n this.intervalId = globalThis.setInterval(() => this.tick(), 100);\r\n\r\n const handleVisibility = () => {\r\n const hidden = document.visibilityState !== 'visible';\r\n\r\n this._items.update((items) => items.map((item) =>\r\n item.duration == null ? item : { ...item, pausedByVisibility: hidden }));\r\n };\r\n\r\n document.addEventListener('visibilitychange', handleVisibility, {\r\n passive: true,\r\n });\r\n\r\n this.destroyRef.onDestroy(() => {\r\n if (this.intervalId != null) {\r\n globalThis.clearInterval(this.intervalId);\r\n }\r\n\r\n document.removeEventListener('visibilitychange', handleVisibility);\r\n });\r\n }\r\n\r\n success(input: Omit<SolarisNotificationInput, 'kind'>): SolarisNotificationRef {\r\n return this.show({ ...input, kind: 'success' });\r\n }\r\n\r\n warning(input: Omit<SolarisNotificationInput, 'kind'>): SolarisNotificationRef {\r\n return this.show({ ...input, kind: 'warning' });\r\n }\r\n\r\n error(input: Omit<SolarisNotificationInput, 'kind'>): SolarisNotificationRef {\r\n return this.show({ ...input, kind: 'error' });\r\n }\r\n\r\n info(input: Omit<SolarisNotificationInput, 'kind'>): SolarisNotificationRef {\r\n return this.show({ ...input, kind: 'info' });\r\n }\r\n\r\n show(input: SolarisNotificationInput): SolarisNotificationRef {\r\n const item = this.createRecord(input);\r\n\r\n this._items.update((items) =>\r\n this.config.newestOnTop ? [item, ...items] : [...items, item]\r\n );\r\n\r\n this.rebalance();\r\n return this.createRef(item.id);\r\n }\r\n\r\n visibleByPosition(position: SolarisNotificationPosition): SolarisNotificationRecord[] {\r\n return this.visibleItems().filter((item) => item.position === position);\r\n }\r\n\r\n isPaused(item: SolarisNotificationRecord): boolean {\r\n return item.pausedByHover || item.pausedByUser || item.pausedByVisibility;\r\n }\r\n\r\n dismiss(id: string): void {\r\n this._items.update((items) => {\r\n if (this.config.persistInCenter) {\r\n return items.map((item) =>\r\n item.id === id ? { ...item, state: 'archived', pausedByHover: false, pausedByUser: false, pausedByVisibility: false,} : item);\r\n }\r\n\r\n return items.filter((item) => item.id !== id);\r\n });\r\n\r\n this.rebalance();\r\n }\r\n\r\n remove(id: string): void {\r\n this._items.update((items) => items.filter((item) => item.id !== id));\r\n }\r\n\r\n clearHistory(): void {\r\n this._items.update((items) => items.filter((item) => item.state !== 'archived'));\r\n }\r\n\r\n pause(id: string): void {\r\n this.patch(id, { pausedByUser: true });\r\n }\r\n\r\n resume(id: string): void {\r\n this.patch(id, { pausedByUser: false });\r\n }\r\n\r\n toggleUserPause(id: string): void {\r\n const current = this.find(id);\r\n if (!current) return;\r\n\r\n this.patch(id, { pausedByUser: !current.pausedByUser });\r\n }\r\n\r\n setHoverPaused(id: string, paused: boolean): void {\r\n const current = this.find(id);\r\n if (!current?.pauseOnHover) return;\r\n\r\n this.patch(id, { pausedByHover: paused });\r\n }\r\n\r\n toggleExpanded(id: string): void {\r\n const current = this.find(id);\r\n if (!current?.expandable) return;\r\n\r\n this._items.update((items) =>\r\n items.map((item) => {\r\n if (item.id === id) {\r\n return { ...item, expanded: !item.expanded };\r\n }\r\n\r\n if (this.config.expandSingle && item.position === current.position &&\r\n item.state === 'visible') {\r\n return { ...item, expanded: false };\r\n }\r\n\r\n return item;\r\n })\r\n );\r\n }\r\n\r\n update(id: string, patch: Partial<SolarisNotificationInput>): void {\r\n this._items.update((items) =>\r\n items.map((item) => {\r\n if (item.id !== id) return item;\r\n\r\n const hasDurationPatch = this.hasOwn(patch, 'duration');\r\n const hasTitlePatch = this.hasOwn(patch, 'title') ||\r\n this.hasOwn(patch, 'titleKey') || this.hasOwn(patch, 'titleParams');\r\n\r\n const hasDescriptionPatch = this.hasOwn(patch, 'description') ||\r\n this.hasOwn(patch, 'descriptionKey') || this.hasOwn(patch, 'descriptionParams');\r\n\r\n const duration = hasDurationPatch ? (patch.duration ?? null) : item.duration;\r\n\r\n const title = hasTitlePatch ? this.resolveRequiredText(\r\n patch.title, patch.titleKey, patch.titleParams,\r\n item.title) : item.title;\r\n\r\n const description = hasDescriptionPatch ? this.resolveOptionalText(\r\n patch.description, patch.descriptionKey, patch.descriptionParams,\r\n item.description) : item.description;\r\n\r\n const hasExplicitExpandable = this.hasOwn(patch, 'expandable');\r\n\r\n let expandable = item.expandable;\r\n\r\n if (hasExplicitExpandable) {\r\n expandable = patch.expandable ?? item.expandable;\r\n } else if (hasDescriptionPatch) {\r\n expandable = Boolean(description?.trim().length);\r\n }\r\n\r\n return {\r\n ...item,\r\n title,\r\n description,\r\n kind: patch.kind ?? item.kind,\r\n position: patch.position ?? item.position,\r\n duration,\r\n remainingMs: hasDurationPatch ? duration ?? null : item.remainingMs,\r\n expandable,\r\n expanded: patch.expanded ?? item.expanded,\r\n closeable: patch.closeable ?? item.closeable,\r\n pauseOnHover: patch.pauseOnHover ?? item.pauseOnHover,\r\n actions: patch.actions ?? item.actions,\r\n ariaLive: patch.ariaLive ?? item.ariaLive,\r\n data: patch.data ?? item.data,\r\n };\r\n })\r\n );\r\n\r\n this.rebalance();\r\n }\r\n\r\n openCenter(): void {\r\n this.centerOpen.set(true);\r\n }\r\n\r\n closeCenter(): void {\r\n this.centerOpen.set(false);\r\n }\r\n\r\n toggleCenter(): void {\r\n this.centerOpen.update((value) => !value);\r\n }\r\n\r\n private tick(): void {\r\n const now = performance.now();\r\n const delta = now - this.lastTick;\r\n this.lastTick = now;\r\n\r\n let shouldRebalance = false;\r\n const expiredIds = new Set<string>();\r\n\r\n this._items.update((items) => {\r\n const next: SolarisNotificationRecord[] = items.map(\r\n (item): SolarisNotificationRecord => {\r\n if (item.state !== 'visible') return item;\r\n if (item.duration == null || item.remainingMs == null) return item;\r\n if (this.isPaused(item)) return item;\r\n\r\n const remainingMs = Math.max(0, item.remainingMs - delta);\r\n\r\n if (remainingMs === 0) {\r\n shouldRebalance = true;\r\n expiredIds.add(item.id);\r\n\r\n if (this.config.persistInCenter) {\r\n return {\r\n ...item,\r\n remainingMs: 0,\r\n state: 'archived',\r\n pausedByHover: false,\r\n pausedByUser: false,\r\n pausedByVisibility: false,\r\n };\r\n }\r\n\r\n return item;\r\n }\r\n\r\n return {\r\n ...item,\r\n remainingMs,\r\n };\r\n }\r\n );\r\n\r\n if (this.config.persistInCenter) {\r\n return next;\r\n }\r\n\r\n return next.filter((item) => !expiredIds.has(item.id));\r\n });\r\n\r\n if (shouldRebalance) {\r\n this.rebalance();\r\n }\r\n }\r\n\r\n private rebalance(): void {\r\n this._items.update((items) => {\r\n let next = [...items];\r\n\r\n for (const position of SOLARIS_NOTIFICATION_POSITIONS) {\r\n const visibleCount = next.filter(\r\n (item) => item.position === position && item.state === 'visible'\r\n ).length;\r\n\r\n const freeSlots = this.config.maxVisiblePerPosition - visibleCount;\r\n if (freeSlots <= 0) continue;\r\n\r\n const queued = next.filter((item) => item.position === position && item.state === 'queued')\r\n .sort((a, b) => this.config.newestOnTop ? b.createdAt - a.createdAt : a.createdAt - b.createdAt)\r\n .slice(0, freeSlots);\r\n\r\n if (!queued.length) continue;\r\n const queuedIds = new Set(queued.map((item) => item.id));\r\n next = next.map((item) => queuedIds.has(item.id) ? { ...item, state: 'visible' } : item);\r\n }\r\n\r\n return next;\r\n });\r\n }\r\n\r\n private createRecord(input: SolarisNotificationInput): SolarisNotificationRecord {\r\n const duration =\r\n input.duration === undefined\r\n ? this.config.defaultDuration\r\n : input.duration;\r\n\r\n const kind = input.kind ?? 'info';\r\n const position = input.position ?? this.config.defaultPosition;\r\n\r\n const title = this.resolveRequiredText(\r\n input.title,\r\n input.titleKey,\r\n input.titleParams,\r\n ''\r\n );\r\n\r\n const description = this.resolveOptionalText(\r\n input.description,\r\n input.descriptionKey,\r\n input.descriptionParams,\r\n null\r\n );\r\n\r\n const expandable = input.expandable ?? Boolean(description?.trim().length);\r\n\r\n return {\r\n id: this.createId(),\r\n title,\r\n description,\r\n kind,\r\n position,\r\n state: 'queued',\r\n duration,\r\n remainingMs: duration == null ? null : duration,\r\n expandable,\r\n expanded: input.expanded ?? false,\r\n closeable: input.closeable ?? true,\r\n pauseOnHover: input.pauseOnHover ?? this.config.hoverPause,\r\n pausedByHover: false,\r\n pausedByUser: false,\r\n pausedByVisibility: false,\r\n actions: input.actions ?? [],\r\n ariaLive: input.ariaLive ?? this.resolveAriaLive(kind),\r\n data: input.data ?? null,\r\n createdAt: Date.now(),\r\n };\r\n }\r\n\r\n private resolveAriaLive(kind: SolarisNotificationKind): 'polite' | 'assertive' {\r\n return kind === 'success' || kind === 'info' ? 'polite' : 'assertive';\r\n }\r\n\r\n private createRef(id: string): SolarisNotificationRef {\r\n return {\r\n id,\r\n dismiss: () => this.dismiss(id),\r\n remove: () => this.remove(id),\r\n pause: () => this.pause(id),\r\n resume: () => this.resume(id),\r\n toggleExpanded: () => this.toggleExpanded(id),\r\n update: (patch) => this.update(id, patch),\r\n };\r\n }\r\n\r\n private createId(): string {\r\n const uuid = globalThis.crypto?.randomUUID?.();\r\n return uuid ?? `sn_${Date.now()}_${Math.random().toString(36).slice(2, 10)}`;\r\n }\r\n\r\n private find(id: string): SolarisNotificationRecord | undefined {\r\n return this._items().find((item) => item.id === id);\r\n }\r\n\r\n private patch(id: string,\r\n patch: Partial<Pick<SolarisNotificationRecord, 'pausedByHover' | 'pausedByUser' | 'pausedByVisibility'>>): void {\r\n this._items.update((items) =>\r\n items.map((item) => (item.id === id ? { ...item, ...patch } : item))\r\n );\r\n }\r\n\r\n private resolveRequiredText(value: string | undefined, key: string | undefined,\r\n params: Record<string, unknown> | undefined, fallback: string): string {\r\n if (key) {\r\n return this.translationService.translate(key, params);\r\n }\r\n\r\n if (value == null) {\r\n return fallback;\r\n }\r\n\r\n return value;\r\n }\r\n\r\n private resolveOptionalText(value: string | null | undefined, key: string | undefined,\r\n params: Record<string, unknown> | undefined, fallback: string | null): string | null {\r\n if (key) {\r\n return this.translationService.translate(key, params);\r\n }\r\n\r\n if (value === undefined) {\r\n return fallback;\r\n }\r\n\r\n return value ?? null;\r\n }\r\n\r\n private hasOwn<T extends object>(obj: T, key: PropertyKey): boolean {\r\n return Object.hasOwn(obj, key);\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component, computed, inject, input } from '@angular/core';\r\nimport { NgClass } from '@angular/common';\r\n\r\nimport { SolarisNotificationAction, SolarisNotificationRecord } from '../../model/notification.types';\r\nimport { SolarisNotificationIntlService } from '../../service/notification-intl.service';\r\nimport { SolarisNotificationService } from '../../service/notification.service';\r\nimport { SolarisButtonDirective } from '../../../../actions/button/directives/button.directive';\r\n\r\n\r\n@Component({\r\n selector: 'solaris-notification-item',\r\n standalone: true,\r\n imports: [NgClass, SolarisButtonDirective],\r\n templateUrl: './notification-item.html',\r\n styleUrl: './notification-item.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class SolarisNotificationItemComponent {\r\n protected readonly notificationService = inject(SolarisNotificationService);\r\n protected readonly intl = inject(SolarisNotificationIntlService);\r\n\r\n readonly item = input.required<SolarisNotificationRecord>();\r\n readonly mode = input<'toast' | 'center'>('toast');\r\n\r\n readonly paused = computed(() => this.notificationService.isPaused(this.item()));\r\n\r\n readonly secondsLeft = computed(() => {\r\n const remaining = this.item().remainingMs ?? 0;\r\n return Math.max(1, Math.ceil(remaining / 1000));\r\n });\r\n\r\n readonly progress = computed(() => {\r\n const duration = this.item().duration;\r\n const remaining = this.item().remainingMs;\r\n\r\n if (duration == null || remaining == null || duration <= 0) return 0;\r\n return Math.max(0, Math.min(100, (remaining / duration) * 100));\r\n });\r\n\r\n readonly iconClass = computed(() => {\r\n switch (this.item().kind) {\r\n case 'success':\r\n return 'ph-check-circle';\r\n case 'warning':\r\n return 'ph-warning-circle';\r\n case 'error':\r\n return 'ph-x-circle';\r\n default:\r\n return 'ph-info';\r\n }\r\n });\r\n\r\n protected readonly isCompactHeader = computed(() => {\r\n const hasDescription = Boolean(this.item().description?.trim().length);\r\n return !hasDescription && !this.item().expandable;\r\n });\r\n\r\n toggleExpanded(): void {\r\n this.notificationService.toggleExpanded(this.item().id);\r\n }\r\n\r\n toggleUserPause(): void {\r\n this.notificationService.toggleUserPause(this.item().id);\r\n }\r\n\r\n close(): void {\r\n this.notificationService.dismiss(this.item().id);\r\n }\r\n\r\n onMouseEnter(): void {\r\n if (this.mode() !== 'toast') return;\r\n this.notificationService.setHoverPaused(this.item().id, true);\r\n }\r\n\r\n onMouseLeave(): void {\r\n if (this.mode() !== 'toast') return;\r\n this.notificationService.setHoverPaused(this.item().id, false);\r\n }\r\n\r\n async runAction(action: SolarisNotificationAction): Promise<void> {\r\n await action.run?.({\r\n id: this.item().id,\r\n data: this.item().data,\r\n dismiss: () => this.notificationService.dismiss(this.item().id),\r\n remove: () => this.notificationService.remove(this.item().id),\r\n update: (patch) => this.notificationService.update(this.item().id, patch),\r\n });\r\n\r\n if (action.closeOnClick !== false) {\r\n this.notificationService.dismiss(this.item().id);\r\n }\r\n }\r\n\r\n protected resolveActionLabel(action: SolarisNotificationAction): string {\r\n if (action.labelKey) {\r\n return this.intl.translate(action.labelKey, action.labelParams);\r\n }\r\n\r\n return action.label ?? '';\r\n }\r\n}\r\n","<article class=\"sn\" [attr.data-kind]=\"item().kind\" [attr.data-mode]=\"mode()\" [attr.data-expanded]=\"item().expanded ? 'true' : 'false'\"\r\n [attr.data-paused]=\"paused() ? 'true' : 'false'\" [attr.aria-live]=\"mode() === 'toast' ? item().ariaLive : null\"\r\n [attr.role]=\"item().ariaLive === 'assertive' ? 'alert' : 'status'\" (mouseenter)=\"onMouseEnter()\" (mouseleave)=\"onMouseLeave()\">\r\n <div class=\"sn__header\" [attr.data-align]=\"isCompactHeader() ? 'center' : 'start'\">\r\n <div class=\"sn__leading\">\r\n <span class=\"sn__icon\" aria-hidden=\"true\">\r\n <i class=\"ph\" [ngClass]=\"iconClass()\"></i>\r\n </span>\r\n\r\n <div class=\"sn__heading\">\r\n <strong class=\"sn__title\">{{ item().title }}</strong>\r\n\r\n @if (!item().expanded && item().description) {\r\n <p class=\"sn__description sn__description--clamped\">\r\n {{ item().description }}\r\n </p>\r\n }\r\n </div>\r\n </div>\r\n\r\n <div class=\"sn__controls\">\r\n @if (item().expandable && item().description) {\r\n <button type=\"button\" class=\"sn__icon-btn\" [attr.aria-expanded]=\"item().expanded\"\r\n [attr.aria-label]=\"item().expanded ? intl.collapse() : intl.expand()\" (click)=\"toggleExpanded()\">\r\n <i class=\"ph\" [ngClass]=\"item().expanded ? 'ph-caret-up' : 'ph-caret-down'\" aria-hidden=\"true\"></i>\r\n </button>\r\n }\r\n\r\n @if (item().closeable) {\r\n <button type=\"button\" class=\"sn__icon-btn\" [attr.aria-label]=\"intl.close()\" (click)=\"close()\">\r\n <i class=\"ph ph-x\" aria-hidden=\"true\"></i>\r\n </button>\r\n }\r\n </div>\r\n </div>\r\n\r\n @if (item().expanded && item().description) {\r\n <div class=\"sn__body\">\r\n <p class=\"sn__body-text\">{{ item().description }}</p>\r\n @if (item().actions.length) {\r\n <div class=\"sn__actions\">\r\n @for (action of item().actions; track action.id) {\r\n <button type=\"button\" solaris-button [variant]=\"action.variant ?? 'outline'\" [color]=\"action.color ?? 'surface'\"\r\n [size]=\"action.size ?? 'sm'\" [radius]=\"action.radius ?? 'md'\" [disabled]=\"action.disabled ?? false\"\r\n (click)=\"runAction(action)\">\r\n {{ resolveActionLabel(action) }}\r\n </button>\r\n }\r\n </div>\r\n }\r\n </div>\r\n }\r\n\r\n @if (mode() === 'toast' && item().duration !== null) {\r\n <div class=\"sn__footer\">\r\n @if (!paused()) {\r\n <p class=\"sn__timer\">\r\n {{ intl.autoClose(secondsLeft()) }}\r\n <button type=\"button\" class=\"sn__timer-link\" (click)=\"toggleUserPause()\">\r\n {{ intl.stopTimer() }}\r\n </button>.\r\n </p>\r\n } @else {\r\n <p class=\"sn__timer\">\r\n {{ intl.paused() }}\r\n <button type=\"button\" class=\"sn__timer-link\" (click)=\"toggleUserPause()\">\r\n {{ intl.resumeTimer() }}\r\n </button>.\r\n </p>\r\n }\r\n </div>\r\n\r\n <div class=\"sn__progress\" aria-hidden=\"true\">\r\n <span [style.width.%]=\"progress()\"></span>\r\n </div>\r\n }\r\n</article>\r\n","import { ChangeDetectionStrategy, Component, HostListener, inject } from '@angular/core';\r\n\r\nimport { SolarisButtonDirective } from '../../../../actions/button/directives/button.directive';\r\nimport { SolarisNotificationIntlService } from '../../service/notification-intl.service';\r\nimport { SolarisNotificationService } from '../../service/notification.service';\r\nimport { SolarisNotificationItemComponent } from '../item/notification-item';\r\n\r\n@Component({\r\n selector: 'solaris-notification-center',\r\n standalone: true,\r\n imports: [SolarisButtonDirective, SolarisNotificationItemComponent],\r\n templateUrl: './notification-center.html',\r\n styleUrl: './notification-center.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class SolarisNotificationCenterComponent {\r\n protected readonly notificationService = inject(SolarisNotificationService);\r\n protected readonly intl = inject(SolarisNotificationIntlService);\r\n\r\n @HostListener('document:keydown.escape') onEscape(): void {\r\n if (this.notificationService.centerOpen()) {\r\n this.notificationService.closeCenter();\r\n }\r\n }\r\n}\r\n","@if (notificationService.centerOpen()) {\r\n <div class=\"snc__backdrop\" (click)=\"notificationService.closeCenter()\"></div>\r\n\r\n <aside class=\"snc\" role=\"dialog\" aria-modal=\"true\" [attr.aria-label]=\"intl.centerTitle()\">\r\n <header class=\"snc__header\">\r\n <div>\r\n <strong class=\"snc__title\">{{ intl.centerTitle() }}</strong>\r\n </div>\r\n\r\n <div class=\"snc__controls\">\r\n <button type=\"button\" solaris-button variant=\"outline\" color=\"surface\" size=\"sm\" radius=\"md\"\r\n (click)=\"notificationService.clearHistory()\">\r\n {{ intl.clearHistory() }}\r\n </button>\r\n\r\n <button type=\"button\" class=\"snc__icon-btn\" [attr.aria-label]=\"intl.close()\" (click)=\"notificationService.closeCenter()\">\r\n <i class=\"ph ph-x\" aria-hidden=\"true\"></i>\r\n </button>\r\n </div>\r\n </header>\r\n\r\n <div class=\"snc__list\">\r\n @for (item of notificationService.centerItems(); track item.id) {\r\n <solaris-notification-item [item]=\"item\" mode=\"center\"/>\r\n } @empty {\r\n <div class=\"snc__empty\">\r\n {{ intl.emptyCenter() }}\r\n </div>\r\n }\r\n </div>\r\n </aside>\r\n}\r\n","import { ChangeDetectionStrategy, Component, inject, input } from '@angular/core';\r\n\r\nimport { SolarisNotificationCenterComponent } from '../center/notification-center';\r\nimport { SOLARIS_NOTIFICATION_POSITIONS } from '../../config/notification.config';\r\nimport { SolarisNotificationService } from '../../service/notification.service';\r\nimport { SolarisNotificationPosition } from '../../model/notification.types';\r\nimport { SolarisNotificationItemComponent } from '../item/notification-item';\r\n\r\n@Component({\r\n selector: 'solaris-notification-host',\r\n standalone: true,\r\n imports: [SolarisNotificationItemComponent, SolarisNotificationCenterComponent],\r\n templateUrl: './notification-host.html',\r\n styleUrls: ['./notification-host.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class SolarisNotificationHostComponent {\r\n protected readonly notificationService = inject(SolarisNotificationService);\r\n protected readonly positions = SOLARIS_NOTIFICATION_POSITIONS;\r\n readonly withCenter = input(true);\r\n\r\n visibleByPosition(position: SolarisNotificationPosition) {\r\n return this.notificationService.visibleByPosition(position);\r\n }\r\n}\r\n","@for (position of positions; track position) {\r\n <section class=\"snh__stack\" [attr.data-position]=\"position\">\r\n @for (item of visibleByPosition(position); track item.id) {\r\n <solaris-notification-item [item]=\"item\" mode=\"toast\"/>\r\n }\r\n </section>\r\n}\r\n\r\n@if (withCenter()) { <solaris-notification-center/> }\r\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\r\n\r\nimport { SolarisTooltipPosition, SolarisTooltipSize, SolarisTooltipVariant } from '../model/tooltip.type';\r\n\r\n@Component({\r\n selector: 'solaris-tooltip-panel',\r\n standalone: true,\r\n templateUrl: './tooltip-panel.html',\r\n styleUrls: ['./tooltip-panel.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class SolarisTooltipPanel {\r\n readonly text = input('');\r\n readonly prefixIcon = input('');\r\n readonly size = input<SolarisTooltipSize>('md');\r\n readonly position = input<SolarisTooltipPosition>('top');\r\n readonly variant = input<SolarisTooltipVariant>('inverse');\r\n}\r\n","<div class=\"solaris-tooltip\" [attr.data-position]=\"position()\" [attr.data-variant]=\"variant()\"\r\n [attr.data-size]=\"size()\" role=\"tooltip\">\r\n @if (prefixIcon()) {\r\n <span class=\"solaris-tooltip__prefix\" aria-hidden=\"true\">\r\n <i [class]=\"prefixIcon()\"></i>\r\n </span>\r\n }\r\n\r\n <span class=\"solaris-tooltip__content\">\r\n {{ text() }}\r\n </span>\r\n\r\n <span class=\"solaris-tooltip__arrow\" aria-hidden=\"true\"></span>\r\n</div>\r\n","import { Directive, ElementRef, Renderer2, computed, effect, inject, input, OnDestroy } from '@angular/core';\r\n\r\nimport { SolarisTooltipPosition, SolarisTooltipSize, SolarisTooltipVariant } from '../model/tooltip.type';\r\nimport { SolarisFloatingOverlayService } from '../../../../services/tooltip/floating-overlay.service';\r\nimport { SolarisFloatingOverlayRef } from '../../../../services/tooltip/model/tooltip-services.type';\r\nimport { repositionTooltipOverlay } from '../../../../services/tooltip/floating-position.util';\r\nimport { SolarisTooltipPanel } from '../component/tooltip-panel';\r\n\r\n@Directive({\r\n selector: '[solaris-tooltip]',\r\n standalone: true,\r\n})\r\nexport class SolarisTooltipDirective implements OnDestroy {\r\n private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\r\n private readonly floatingOverlay = inject(SolarisFloatingOverlayService);\r\n private readonly renderer = inject(Renderer2);\r\n\r\n readonly text = input('', { alias: 'solaris-tooltip' });\r\n\r\n readonly tooltipPosition = input<SolarisTooltipPosition>('top', {\r\n alias: 'tooltip-position',\r\n });\r\n\r\n readonly tooltipVariant = input<SolarisTooltipVariant>('inverse', {\r\n alias: 'tooltip-variant',\r\n });\r\n\r\n readonly tooltipSize = input<SolarisTooltipSize>('md', {\r\n alias: 'tooltip-size',\r\n });\r\n\r\n readonly tooltipPrefixIcon = input('', {\r\n alias: 'tooltip-prefix-icon',\r\n });\r\n\r\n readonly tooltipDisabled = input(false, {\r\n alias: 'tooltip-disabled',\r\n });\r\n\r\n readonly tooltipShowDelay = input(300, {\r\n alias: 'tooltip-show-delay',\r\n });\r\n\r\n readonly tooltipHideDelay = input(80, {\r\n alias: 'tooltip-hide-delay',\r\n });\r\n\r\n readonly tooltipOffset = input(8, {\r\n alias: 'tooltip-offset',\r\n });\r\n\r\n readonly tooltipAutoFlip = input(true, {\r\n alias: 'tooltip-auto-flip',\r\n });\r\n\r\n readonly tooltipAutoShift = input(true, {\r\n alias: 'tooltip-auto-shift',\r\n });\r\n\r\n readonly tooltipViewportPadding = input(8, {\r\n alias: 'tooltip-viewport-padding',\r\n });\r\n\r\n readonly tooltipKey = input('', {\r\n alias: 'tooltip-key',\r\n });\r\n\r\n readonly tooltipParams = input<Record<string, unknown> | undefined>(undefined, {\r\n alias: 'tooltip-params',\r\n });\r\n\r\n private overlayRef?: SolarisFloatingOverlayRef<SolarisTooltipPanel>;\r\n private showTimer = 0;\r\n private hideTimer = 0;\r\n private raf = 0;\r\n\r\n private readonly cleanups: Array<() => void> = [];\r\n\r\n private readonly resolvedText = computed(() => {\r\n const key = this.tooltipKey().trim();\r\n\r\n if (key) {\r\n return key;\r\n }\r\n\r\n return this.text().trim();\r\n });\r\n\r\n constructor() {\r\n const host = this.elementRef.nativeElement;\r\n\r\n this.cleanups.push(\r\n this.renderer.listen(host, 'mouseenter', () => this.scheduleShow()),\r\n this.renderer.listen(host, 'mouseleave', () => this.scheduleHide()),\r\n this.renderer.listen(host, 'focusin', () => this.scheduleShow()),\r\n this.renderer.listen(host, 'focusout', () => this.scheduleHide()),\r\n this.renderer.listen(host, 'keydown', (event: KeyboardEvent) => {\r\n if (event.key === 'Escape') {\r\n this.hide();\r\n }\r\n }),\r\n this.renderer.listen(globalThis, 'resize', () => this.scheduleReposition()),\r\n this.renderer.listen(globalThis, 'scroll', () => this.scheduleReposition()),\r\n );\r\n\r\n effect(() => {\r\n if (!this.overlayRef) return;\r\n\r\n this.applyPanelInputs();\r\n this.scheduleReposition();\r\n });\r\n }\r\n\r\n private scheduleShow(): void {\r\n if (this.tooltipDisabled()) return;\r\n if (!this.resolvedText()) return;\r\n\r\n globalThis.clearTimeout(this.hideTimer);\r\n globalThis.clearTimeout(this.showTimer);\r\n\r\n this.showTimer = globalThis.setTimeout(() => {\r\n this.show();\r\n }, this.tooltipShowDelay());\r\n }\r\n\r\n private scheduleHide(): void {\r\n globalThis.clearTimeout(this.showTimer);\r\n globalThis.clearTimeout(this.hideTimer);\r\n\r\n this.hideTimer = globalThis.setTimeout(() => {\r\n this.hide();\r\n }, this.tooltipHideDelay());\r\n }\r\n\r\n private show(): void {\r\n if (this.overlayRef || this.tooltipDisabled()) return;\r\n if (!this.resolvedText()) return;\r\n\r\n this.overlayRef = this.floatingOverlay.create(SolarisTooltipPanel, {\r\n idPrefix: 'solaris-tooltip',\r\n zIndex: 'var(--solaris-z-tooltip, 1200)',\r\n pointerEvents: 'none',\r\n });\r\n\r\n this.applyPanelInputs();\r\n\r\n this.renderer.setAttribute(\r\n this.elementRef.nativeElement,\r\n 'aria-describedby',\r\n this.overlayRef.id,\r\n );\r\n\r\n requestAnimationFrame(() => this.reposition());\r\n }\r\n\r\n private hide(): void {\r\n this.floatingOverlay.clearFloatingTimers(this.showTimer, this.hideTimer, this.raf);\r\n this.raf = 0;\r\n\r\n this.renderer.removeAttribute(this.elementRef.nativeElement, 'aria-describedby');\r\n\r\n this.floatingOverlay.destroyOverlay(this.overlayRef);\r\n this.overlayRef = undefined;\r\n }\r\n\r\n private applyPanelInputs(): void {\r\n if (!this.overlayRef) return;\r\n\r\n const panel = this.overlayRef.componentRef;\r\n\r\n panel.setInput('text', this.resolvedText());\r\n panel.setInput('position', this.tooltipPosition());\r\n panel.setInput('variant', this.tooltipVariant());\r\n panel.setInput('size', this.tooltipSize());\r\n panel.setInput('prefixIcon', this.tooltipPrefixIcon());\r\n\r\n panel.changeDetectorRef.detectChanges();\r\n }\r\n\r\n private scheduleReposition(): void {\r\n if (!this.overlayRef) return;\r\n\r\n if (this.raf) return;\r\n\r\n this.raf = requestAnimationFrame(() => {\r\n this.raf = 0;\r\n this.reposition();\r\n });\r\n }\r\n\r\n private reposition(): void {\r\n if (!this.overlayRef) return;\r\n\r\n this.floatingOverlay.reposition({\r\n anchor: this.elementRef.nativeElement,\r\n overlayRef: this.overlayRef,\r\n options: {\r\n position: this.tooltipPosition(),\r\n offset: this.tooltipOffset(),\r\n viewportPadding: this.tooltipViewportPadding(),\r\n autoFlip: this.tooltipAutoFlip(),\r\n autoShift: this.tooltipAutoShift(),\r\n },\r\n setAppliedPosition: (position) => {\r\n this.overlayRef?.componentRef.setInput('position', position);\r\n this.overlayRef?.componentRef.changeDetectorRef.detectChanges();\r\n },\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.hide();\r\n\r\n for (const cleanup of this.cleanups) {\r\n cleanup();\r\n }\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component, HostBinding, Input } from '@angular/core';\r\nimport {\r\n LoadingType,\r\n SolarisLoadingColor,\r\n SolarisLoadingEasing,\r\n SolarisLoadingPresetColor,\r\n SolarisLoadingSize,\r\n SolarisLoadingSpeed,\r\n SolarisLoadingDashDensity,\r\n} from '../model/loading.type';\r\n\r\nconst PRESET_COLORS: readonly SolarisLoadingPresetColor[] =\r\n ['primary', 'success', 'warning', 'error', 'surface'] as const;\r\n\r\n@Component({\r\n selector: 'solaris-loading',\r\n standalone: true,\r\n templateUrl: './loading.html',\r\n styleUrl: './loading.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class SolarisLoading {\r\n @HostBinding('attr.solaris-loading') readonly marker = '';\r\n\r\n @Input() label?: string;\r\n @Input() value: number | null = null;\r\n @Input() type: LoadingType = 'spinner';\r\n @Input() size: SolarisLoadingSize = 'md';\r\n @Input() speed: SolarisLoadingSpeed = 'md';\r\n @Input() color: SolarisLoadingColor = 'primary';\r\n @Input() easing: SolarisLoadingEasing = 'linear';\r\n @Input() trail: 'forward' | 'reverse' = 'forward';\r\n @Input() dashDensity: SolarisLoadingDashDensity = 'md';\r\n @Input({ transform: coerceBoolean }) indeterminate = false;\r\n\r\n get percent(): number {\r\n return clamp(this.value ?? 0, 0, 100);\r\n }\r\n get ariaLabel(): string {\r\n return this.label ?? 'Loading';\r\n }\r\n get dashedSpokes(): Spoke[] {\r\n return buildSpokes(this.dashedCount, 0.12);\r\n }\r\n get inlineColor(): string | null {\r\n return isPresetColor(this.color) ? null : String(this.color);\r\n }\r\n get ariaValueNow(): number | null {\r\n if (this.role !== 'progressbar') return null;\r\n if (this.indeterminate || this.value == null) return null;\r\n return clamp(this.value, 0, 100);\r\n }\r\n get role(): 'status' | 'progressbar' {\r\n return (this.type === 'progress' || this.type === 'bar') ? 'progressbar' : 'status';\r\n }\r\n get dataColor(): SolarisLoadingPresetColor | null {\r\n return isPresetColor(this.color) ? this.color : null;\r\n }\r\n\r\n private get dashedCount(): number {\r\n switch (this.dashDensity) {\r\n case 'low': return 8;\r\n case 'high': return 16;\r\n case 'md':\r\n default: return 12;\r\n }\r\n }\r\n}\r\n\r\nfunction isPresetColor(v: unknown): v is SolarisLoadingPresetColor {\r\n return PRESET_COLORS.includes(v as SolarisLoadingPresetColor);\r\n}\r\n\r\nfunction coerceBoolean(v: any): boolean {\r\n return v === '' || v === true || v === 'true' || v === 1 || v === '1';\r\n}\r\n\r\nfunction clamp(n: number, min: number, max: number) {\r\n return Math.max(min, Math.min(max, n));\r\n}\r\n\r\ntype Spoke = { angle: number; opacity: number };\r\n\r\nconst SPOKE_CACHE = new Map<number, Spoke[]>();\r\n\r\nfunction buildSpokes(count: number, minOpacity = 0.12): Spoke[] {\r\n const cached = SPOKE_CACHE.get(count);\r\n if (cached) return cached;\r\n\r\n const res: Spoke[] = [];\r\n const step = 360 / count;\r\n const span = 1 - minOpacity;\r\n for (let i = 0; i < count; i++) {\r\n const t = count === 1 ? 0 : i / (count - 1);\r\n const opacity = 1 - span * t;\r\n res.push({ angle: i * step, opacity: Number(opacity.toFixed(2)) });\r\n }\r\n\r\n SPOKE_CACHE.set(count, res);\r\n return res;\r\n}\r\n","<div class=\"solaris-loading\" [attr.data-type]=\"type\" [attr.data-size]=\"size\" [attr.data-color]=\"dataColor\"\r\n [attr.data-speed]=\"speed\" [attr.data-easing]=\"easing\" [class.is-indeterminate]=\"indeterminate || value === null\"\r\n [attr.role]=\"role\" [attr.aria-label]=\"ariaLabel\" [style.--solaris-loading-color]=\"inlineColor\"\r\n [attr.aria-valuemin]=\"role === 'progressbar' ? 0 : null\" [attr.aria-valuemax]=\"role === 'progressbar' ? 100 : null\"\r\n [attr.aria-valuenow]=\"role === 'progressbar' ? ariaValueNow : null\">\r\n\r\n @if (type === 'spinner') {\r\n <span class=\"solaris-loading__spinner\" aria-hidden=\"true\"></span>\r\n }\r\n\r\n @if (type === 'spinner-dashed') {\r\n <svg class=\"solaris-loading__spinner-stacked\" viewBox=\"0 0 44 44\" aria-hidden=\"true\">\r\n @for (spoke of dashedSpokes; track spoke.angle) {\r\n <line x1=\"22\" y1=\"6\" x2=\"22\" y2=\"12\" [attr.opacity]=\"spoke.opacity\"\r\n [attr.transform]=\"'rotate(' + spoke.angle + ' 22 22)'\">\r\n </line>\r\n }\r\n </svg>\r\n }\r\n\r\n @if (type === 'progress') {\r\n <svg class=\"solaris-loading__ring\" viewBox=\"0 0 44 44\" aria-hidden=\"true\">\r\n <circle class=\"ring-track\" cx=\"22\" cy=\"22\" r=\"18\"></circle>\r\n <circle class=\"ring-value\" cx=\"22\" cy=\"22\" r=\"18\" [attr.stroke-dasharray]=\"113.097\"\r\n [attr.stroke-dashoffset]=\"113.097 - (113.097 * percent / 100)\"></circle>\r\n </svg>\r\n\r\n <span class=\"solaris-loading__percent\" aria-hidden=\"true\">\r\n {{ percent }}%\r\n </span>\r\n }\r\n\r\n @if (type === 'bar') {\r\n <span class=\"solaris-loading__bar\" aria-hidden=\"true\">\r\n <span class=\"solaris-loading__bar-inner\" [style.width.%]=\"indeterminate || value === null ? 30 : percent\"></span>\r\n </span>\r\n }\r\n</div>\r\n","import { ChangeDetectionStrategy, Component, computed, DestroyRef, effect, ElementRef, HostBinding, HostListener, inject,\r\n input, signal, TemplateRef, viewChild, afterNextRender, booleanAttribute, numberAttribute } from '@angular/core';\r\nimport { NgTemplateOutlet } from '@angular/common';\r\n\r\nimport { SolarisSliderItem, SolarisSliderOverlayContext } from '../model/image-slider.type';\r\n\r\n@Component({\r\n selector: 'solaris-image-slider',\r\n standalone: true,\r\n templateUrl: './image-slider.html',\r\n styleUrls: ['./image-slider.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [NgTemplateOutlet],\r\n})\r\nexport class SolarisImageSliderComponent {\r\n readonly viewport = viewChild<ElementRef<HTMLElement>>('viewport');\r\n\r\n private timer: ReturnType<typeof setInterval> | null = null;\r\n private readonly destroyRef = inject(DestroyRef);\r\n\r\n readonly items = input<SolarisSliderItem[]>([]);\r\n readonly radius = input<'sm' | 'md' | 'lg'>('lg');\r\n readonly autoplay = input(true, { transform: booleanAttribute });\r\n readonly showDots = input(true, { transform: booleanAttribute });\r\n readonly intervalMs = input(4500, { transform: numberAttribute });\r\n readonly showArrows = input(true, { transform: booleanAttribute });\r\n readonly aspect = input<'16/9' | '9/16' | '4/3' | '1/1' | 'auto'>('16/9');\r\n readonly pauseOnHover = input(true, { transform: booleanAttribute });\r\n\r\n readonly overlayTpl = input<TemplateRef<SolarisSliderOverlayContext> | undefined>(undefined);\r\n\r\n protected readonly paused = signal(false);\r\n protected readonly activeIndex = signal(0);\r\n private readonly viewReady = signal(false);\r\n protected readonly count = computed(() => this.items().length);\r\n protected readonly canRun = computed(() => this.autoplay() && this.count() > 1);\r\n\r\n @HostBinding('attr.data-aspect') get dataAspect() {\r\n return this.aspect();\r\n }\r\n\r\n @HostBinding('attr.data-radius') get dataRadius() {\r\n return this.radius();\r\n }\r\n\r\n constructor() {\r\n afterNextRender(() => this.viewReady.set(true));\r\n\r\n effect((onCleanup) => {\r\n const ready = this.viewReady();\r\n const run = this.canRun();\r\n const paused = this.paused();\r\n const ms = this.intervalMs();\r\n const len = this.count();\r\n\r\n this.stopTimer();\r\n\r\n if (!ready || !run || paused || len <= 1) return;\r\n if (!Number.isFinite(ms) || ms <= 0) return;\r\n\r\n this.startTimer(ms);\r\n\r\n onCleanup(() => this.stopTimer());\r\n });\r\n\r\n effect(() => {\r\n const len = this.count();\r\n const idx = this.activeIndex();\r\n\r\n if (!len) {\r\n this.activeIndex.set(0);\r\n return;\r\n }\r\n if (idx > len - 1) this.activeIndex.set(0);\r\n });\r\n\r\n this.destroyRef.onDestroy(() => this.stopTimer());\r\n }\r\n\r\n protected goTo = (idx: number): void => {\r\n const len = this.count();\r\n if (!len) return;\r\n\r\n const next = ((idx % len) + len) % len;\r\n this.activeIndex.set(next);\r\n this.bumpAutoplay();\r\n };\r\n\r\n protected next = (): void => {\r\n this.goTo(this.activeIndex() + 1);\r\n };\r\n\r\n protected prev = (): void => {\r\n this.goTo(this.activeIndex() - 1);\r\n };\r\n\r\n protected onMouseEnter(): void {\r\n if (!this.pauseOnHover()) return;\r\n this.paused.set(true);\r\n }\r\n\r\n protected onMouseLeave(): void {\r\n if (!this.pauseOnHover()) return;\r\n this.paused.set(false);\r\n }\r\n\r\n protected onFocusIn(): void {\r\n this.paused.set(true);\r\n }\r\n\r\n protected onFocusOut(): void {\r\n if (!this.pauseOnHover()) return;\r\n this.paused.set(false);\r\n }\r\n\r\n protected overlayCtx(i: number): SolarisSliderOverlayContext {\r\n const item = this.items()[i];\r\n return {\r\n $implicit: item,\r\n index: i,\r\n active: i === this.activeIndex(),\r\n goTo: this.goTo,\r\n next: this.next,\r\n prev: this.prev,\r\n };\r\n }\r\n\r\n private startTimer(ms: number): void {\r\n this.timer = setInterval(() => this.next(), ms);\r\n }\r\n\r\n private stopTimer(): void {\r\n if (this.timer) clearInterval(this.timer);\r\n this.timer = null;\r\n }\r\n\r\n private bumpAutoplay(): void {\r\n if (!this.canRun() || this.paused()) return;\r\n\r\n this.stopTimer();\r\n\r\n const ms = this.intervalMs();\r\n if (!Number.isFinite(ms) || ms <= 0) return;\r\n\r\n this.startTimer(ms);\r\n }\r\n\r\n @HostListener('keydown', ['$event'])\r\n onKeyDown(ev: KeyboardEvent): void {\r\n if (this.count() <= 1) return;\r\n\r\n switch (ev.key) {\r\n case 'ArrowLeft':\r\n ev.preventDefault();\r\n this.prev();\r\n break;\r\n case 'ArrowRight':\r\n ev.preventDefault();\r\n this.next();\r\n break;\r\n case 'Home':\r\n ev.preventDefault();\r\n this.goTo(0);\r\n break;\r\n case 'End':\r\n ev.preventDefault();\r\n this.goTo(this.count() - 1);\r\n break;\r\n }\r\n }\r\n}\r\n","<div class=\"solaris-slider\" role=\"region\" aria-roledescription=\"carousel\" [attr.aria-label]=\"'Image slider'\"\r\n (mouseenter)=\"onMouseEnter()\" (mouseleave)=\"onMouseLeave()\" (focusin)=\"onFocusIn()\" (focusout)=\"onFocusOut()\">\r\n\r\n <div #viewport class=\"solaris-slider__viewport\">\r\n <div class=\"solaris-slider__track\"\r\n [style.transform]=\"'translate3d(' + (-activeIndex() * 100) + '%, 0, 0)'\">\r\n\r\n @for (it of items(); track $index) {\r\n <div class=\"solaris-slider__slide\"\r\n [attr.aria-hidden]=\"$index !== activeIndex() ? 'true' : null\">\r\n\r\n @if (it.href) {\r\n <a class=\"solaris-slider__media\" [href]=\"it.href\" [attr.target]=\"it.target ?? null\"\r\n [attr.aria-label]=\"it.ariaLabel ?? it.alt ?? 'Open'\">\r\n <img class=\"solaris-slider__img\" [src]=\"it.src\" [attr.alt]=\"it.alt ?? ''\" />\r\n </a>\r\n } @else {\r\n <div class=\"solaris-slider__media\">\r\n <img class=\"solaris-slider__img\" [src]=\"it.src\" [attr.alt]=\"it.alt ?? ''\" />\r\n </div>\r\n }\r\n\r\n @if (overlayTpl(); as tpl) {\r\n <div class=\"solaris-slider__overlay\">\r\n <ng-container *ngTemplateOutlet=\"tpl; context: overlayCtx($index)\"></ng-container>\r\n </div>\r\n }\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n\r\n @if (showArrows() && count() > 1) {\r\n <button type=\"button\" class=\"solaris-slider__arrow is-prev\" (click)=\"prev()\" aria-label=\"Previous slide\">\r\n <i class=\"ph ph-caret-left\"></i>\r\n </button>\r\n\r\n <button type=\"button\" class=\"solaris-slider__arrow is-next\" (click)=\"next()\" aria-label=\"Next slide\">\r\n <i class=\"ph ph-caret-right\"></i>\r\n </button>\r\n }\r\n\r\n @if (showDots() && count() > 1) {\r\n <div class=\"solaris-slider__dots\" role=\"tablist\" aria-label=\"Slide navigation\">\r\n @for (it of items(); track $index) {\r\n <button type=\"button\" class=\"solaris-slider__dot\" [class.is-active]=\"$index === activeIndex()\"\r\n (click)=\"goTo($index)\" [attr.aria-label]=\"'Go to slide ' + ($index + 1)\"\r\n [attr.aria-current]=\"$index === activeIndex() ? 'true' : null\">\r\n </button>\r\n }\r\n </div>\r\n }\r\n</div>\r\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\r\nimport { NgClass } from '@angular/common';\r\n\r\n@Component({\r\n selector: 'solaris-section',\r\n standalone: true,\r\n imports: [NgClass],\r\n templateUrl: './section.html',\r\n styleUrl: './section.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class SolarisSectionComponent {\r\n @Input() title?: string;\r\n @Input() description?: string;\r\n @Input() appearance: 'plain' | 'card' = 'plain';\r\n @Input() density: 'comfortable' | 'compact' = 'comfortable';\r\n}\r\n","<section class=\"solaris-section\" [ngClass]=\"['appearance-' + appearance, 'density-' + density]\">\r\n @if (title || description) {\r\n <header class=\"solaris-section__header\">\r\n @if (title) { <h2 class=\"solaris-section__title\">{{ title }}</h2> }\r\n @if (description) { <p class=\"solaris-section__description\">{{ description }}</p> }\r\n </header>\r\n }\r\n\r\n <div class=\"solaris-section__content\">\r\n <ng-content></ng-content>\r\n </div>\r\n</section>\r\n","import { ChangeDetectionStrategy, Component, HostBinding, Input } from '@angular/core';\r\nimport { NgClass } from '@angular/common';\r\n\r\nimport { DividerLabelAlign, DividerOrientation, DividerSpacing, DividerStrength, DividerVariant } from '../model/divider.type';\r\n\r\n@Component({\r\n selector: 'solaris-divider',\r\n standalone: true,\r\n imports: [NgClass],\r\n templateUrl: './divider.html',\r\n styleUrl: './divider.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: { role: 'separator' },\r\n})\r\nexport class SolarisDivider {\r\n @Input() label?: string;\r\n @Input() inset = false;\r\n @Input() spacing: DividerSpacing = 'none';\r\n @Input() variant: DividerVariant = 'solid';\r\n @Input() strength: DividerStrength = 'normal';\r\n @Input() orientation: DividerOrientation = 'horizontal';\r\n @Input({ alias: 'label-align' }) labelAlign: DividerLabelAlign = 'center';\r\n\r\n @HostBinding('class') hostClass = 'solaris-divider-host';\r\n @HostBinding('attr.aria-orientation') get ariaOrientation() {\r\n return this.orientation === 'vertical' ? 'vertical' : 'horizontal';\r\n }\r\n\r\n get hasLabel(): boolean {\r\n return !!this.label && this.orientation === 'horizontal';\r\n }\r\n}\r\n","<div\r\n class=\"solaris-divider\"\r\n [ngClass]=\"[\r\n 'orientation-' + orientation,\r\n 'spacing-' + spacing,\r\n 'strength-' + strength,\r\n 'variant-' + variant,\r\n inset ? 'is-inset' : '',\r\n hasLabel ? 'has-label' : '',\r\n hasLabel ? 'label-' + labelAlign : ''\r\n ]\">\r\n @if (hasLabel) {\r\n <span class=\"solaris-divider__line\"></span>\r\n <span class=\"solaris-divider__label\">{{ label }}</span>\r\n <span class=\"solaris-divider__line\"></span>\r\n }\r\n</div>\r\n","import { InjectionToken } from '@angular/core';\r\n\r\nexport const SOLARIS_DIALOG_STEP_DATA = new InjectionToken<unknown>('SOLARIS_DIALOG_STEP_DATA');\r\n","import { InjectionToken } from '@angular/core';\r\n\r\nexport const SOLARIS_DIALOG_DATA = new InjectionToken<unknown>('SOLARIS_DIALOG_DATA');\r\n","import { SolarisDialogAction, SolarisDialogHeaderConfiguration } from '../model/dialog.type';\r\nimport { Observable, Subject } from 'rxjs';\r\n\r\nexport class SolarisDialogRef<TResult = unknown> {\r\n private readonly actionSubject = new Subject<SolarisDialogAction<TResult>>();\r\n private readonly closedSubject = new Subject<TResult | undefined>();\r\n\r\n private closeFn?: (result?: TResult) => void;\r\n private updateActionsFn?: (actions: SolarisDialogAction<TResult>[]) => void;\r\n private updateHeaderFn?: (header: SolarisDialogHeaderConfiguration) => void;\r\n\r\n afterClosed(): Observable<TResult | undefined> {\r\n return this.closedSubject.asObservable();\r\n }\r\n\r\n afterAction(): Observable<SolarisDialogAction<TResult>> {\r\n return this.actionSubject.asObservable();\r\n }\r\n\r\n close(result?: TResult): void {\r\n this.closeFn?.(result);\r\n }\r\n\r\n updateActions(actions: SolarisDialogAction<TResult>[]): void {\r\n this.updateActionsFn?.(actions);\r\n }\r\n\r\n updateHeader(header: SolarisDialogHeaderConfiguration): void {\r\n this.updateHeaderFn?.(header);\r\n }\r\n\r\n _attachCloseFn(fn: (result?: TResult) => void): void {\r\n this.closeFn = fn;\r\n }\r\n\r\n _attachActionsUpdateFn(fn: (actions: SolarisDialogAction<TResult>[]) => void): void {\r\n this.updateActionsFn = fn;\r\n }\r\n\r\n _attachHeaderUpdateFn(fn: (header: SolarisDialogHeaderConfiguration) => void): void {\r\n this.updateHeaderFn = fn;\r\n }\r\n\r\n _emitAction(action: SolarisDialogAction<TResult>): void {\r\n this.actionSubject.next(action);\r\n }\r\n\r\n _finishClose(result?: TResult): void {\r\n this.closedSubject.next(result);\r\n this.closedSubject.complete();\r\n this.actionSubject.complete();\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component, DestroyRef, Injector, computed, effect, inject, signal,\r\n AfterViewInit, ViewChildren, ElementRef, QueryList } from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { NgComponentOutlet } from '@angular/common';\r\n\r\nimport {\r\n SolarisDialogStep,\r\n SolarisDialogStepActionValue,\r\n SolarisDialogStepDirection,\r\n SolarisDialogStepsConfiguration\r\n} from '../../model/dialog-steps.type';\r\nimport { SOLARIS_DIALOG_STEP_DATA } from '../../token/dialog-step-data.token';\r\nimport { SOLARIS_DIALOG_DATA } from '../../token/dialog-data.token';\r\nimport { SolarisDialogAction } from '../../model/dialog.type';\r\nimport { SolarisDialogRef } from '../../token/dialog-ref';\r\n\r\n@Component({\r\n selector: 'solaris-dialog-steps-container',\r\n standalone: true,\r\n imports: [\r\n NgComponentOutlet\r\n ],\r\n templateUrl: './dialog-steps-container.html',\r\n styleUrl: './dialog-steps-container.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class SolarisDialogStepsContainer<TResult = unknown> implements AfterViewInit {\r\n private readonly destroyRef = inject(DestroyRef);\r\n private readonly injector = inject(Injector);\r\n\r\n private readonly configuration =\r\n inject(SOLARIS_DIALOG_DATA) as SolarisDialogStepsConfiguration<TResult>;\r\n\r\n private readonly dialogRef =\r\n inject<SolarisDialogRef<TResult | SolarisDialogStepActionValue>>(SolarisDialogRef);\r\n\r\n protected readonly steps = this.configuration?.steps ?? [];\r\n\r\n protected readonly showProgress = this.configuration?.showProgress ?? true;\r\n protected readonly transitionBlur = this.configuration?.transitionBlur ?? true;\r\n protected readonly contentMinHeight = this.configuration?.contentMinHeight ?? '0';\r\n protected readonly transitionDurationMs = this.configuration?.transitionDurationMs ?? 420;\r\n\r\n protected readonly loading = signal(false);\r\n protected readonly transitioning = signal(false);\r\n protected readonly transitionHalfway = signal(false);\r\n\r\n protected readonly currentStepIndex = signal(this.resolveInitialStepIndex());\r\n\r\n @ViewChildren('stepElement', { read: ElementRef })\r\n private readonly stepElements!: QueryList<ElementRef<HTMLElement>>;\r\n\r\n protected readonly activeStepHeight = signal('auto');\r\n\r\n private measureRaf = 0;\r\n private resizeObserver?: ResizeObserver;\r\n\r\n private halfwayTimer = 0;\r\n private transitionTimer = 0;\r\n\r\n private readonly stepInjectors = this.steps.map(step =>\r\n Injector.create({\r\n providers: [\r\n {\r\n provide: SOLARIS_DIALOG_STEP_DATA,\r\n useValue: step.data,\r\n },\r\n ],\r\n parent: this.injector,\r\n })\r\n );\r\n\r\n protected readonly trackTransform = computed(() => {\r\n return `translate3d(-${this.currentStepIndex() * 100}%, 0, 0)`;\r\n });\r\n\r\n protected readonly isFirstStep = computed(() => this.currentStepIndex() === 0);\r\n\r\n protected readonly isLastStep = computed(() => {\r\n return this.currentStepIndex() === this.steps.length - 1;\r\n });\r\n\r\n protected readonly transitionDuration = computed(() => {\r\n return `${this.transitionDurationMs}ms`;\r\n });\r\n\r\n constructor() {\r\n this.destroyRef.onDestroy(() => {\r\n globalThis.clearTimeout(this.halfwayTimer);\r\n globalThis.clearTimeout(this.transitionTimer);\r\n\r\n if (this.measureRaf) {\r\n cancelAnimationFrame(this.measureRaf);\r\n }\r\n\r\n this.resizeObserver?.disconnect();\r\n });\r\n\r\n this.dialogRef.afterAction()\r\n .pipe(takeUntilDestroyed(this.destroyRef))\r\n .subscribe(action => {\r\n void this.handleAction(action.value as SolarisDialogStepActionValue);\r\n });\r\n\r\n effect(() => {\r\n this.currentStepIndex();\r\n this.loading();\r\n\r\n this.updateDialogHeader();\r\n this.updateDialogActions();\r\n\r\n queueMicrotask(() => {\r\n this.observeActiveStepHeight();\r\n this.scheduleActiveStepHeightMeasure();\r\n });\r\n });\r\n\r\n queueMicrotask(() => {\r\n void this.runBeforeEnter(this.currentStepIndex(), 'initial');\r\n });\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n this.stepElements.changes.pipe(takeUntilDestroyed(this.destroyRef))\r\n .subscribe(() => {\r\n this.observeActiveStepHeight();\r\n this.scheduleActiveStepHeightMeasure();\r\n });\r\n\r\n this.observeActiveStepHeight();\r\n this.scheduleActiveStepHeightMeasure();\r\n }\r\n\r\n protected stepInjector(index: number): Injector {\r\n return this.stepInjectors[index];\r\n }\r\n\r\n private async handleAction(value: SolarisDialogStepActionValue): Promise<void> {\r\n switch (value) {\r\n case 'cancel':\r\n this.dialogRef.close();\r\n return;\r\n\r\n case 'back':\r\n await this.goToStep(this.currentStepIndex() - 1, 'backward');\r\n return;\r\n\r\n case 'next':\r\n await this.goToStep(this.currentStepIndex() + 1, 'forward');\r\n return;\r\n\r\n case 'finish':\r\n await this.finish();\r\n return;\r\n }\r\n }\r\n\r\n private async goToStep(targetIndex: number, direction: SolarisDialogStepDirection): Promise<void> {\r\n if (this.loading()) return;\r\n if (targetIndex < 0 || targetIndex >= this.steps.length) return;\r\n\r\n const fromIndex = this.currentStepIndex();\r\n const canLeave = await this.runBeforeLeave(fromIndex, targetIndex, direction);\r\n\r\n if (!canLeave) return;\r\n\r\n const canEnter = await this.runBeforeEnter(targetIndex, direction, fromIndex);\r\n\r\n if (!canEnter) return;\r\n\r\n this.runTransitionTo(targetIndex);\r\n }\r\n\r\n private async finish(): Promise<void> {\r\n if (this.loading()) return;\r\n\r\n const index = this.currentStepIndex();\r\n const canLeave = await this.runBeforeLeave(index, index, 'forward');\r\n\r\n if (!canLeave) return;\r\n\r\n this.dialogRef.close(this.configuration.finishValue);\r\n }\r\n\r\n private async runBeforeEnter(toIndex: number, direction: SolarisDialogStepDirection,\r\n fromIndex = toIndex): Promise<boolean> {\r\n const step = this.steps[toIndex];\r\n\r\n if (!step?.beforeEnter) {\r\n return true;\r\n }\r\n\r\n this.loading.set(true);\r\n\r\n try {\r\n const result = await step.beforeEnter({\r\n fromIndex,\r\n toIndex,\r\n direction,\r\n });\r\n\r\n return result !== false;\r\n } finally {\r\n this.loading.set(false);\r\n }\r\n }\r\n\r\n private async runBeforeLeave(fromIndex: number, toIndex: number,\r\n direction: SolarisDialogStepDirection): Promise<boolean> {\r\n const step = this.steps[fromIndex];\r\n\r\n if (!step?.beforeLeave) {\r\n return true;\r\n }\r\n\r\n this.loading.set(true);\r\n\r\n try {\r\n const result = await step.beforeLeave({\r\n fromIndex,\r\n toIndex,\r\n direction,\r\n });\r\n\r\n return result !== false;\r\n } finally {\r\n this.loading.set(false);\r\n }\r\n }\r\n\r\n private updateDialogActions(): void {\r\n if (!this.steps.length) {\r\n this.dialogRef.updateActions([]);\r\n return;\r\n }\r\n\r\n const step = this.steps[this.currentStepIndex()];\r\n const customActions = this.resolveStepActions(step);\r\n\r\n if (customActions.length) {\r\n this.dialogRef.updateActions(\r\n customActions.map(action => ({\r\n ...action,\r\n disabled: action.disabled || this.loading(),\r\n }))\r\n );\r\n return;\r\n }\r\n\r\n const leftAction: SolarisDialogAction<TResult | SolarisDialogStepActionValue> = this.isFirstStep()\r\n ? {\r\n label: this.configuration.cancelLabel ?? 'Cancelar',\r\n labelKey: this.configuration.cancelLabelKey,\r\n value: 'cancel',\r\n variant: 'outline',\r\n color: 'surface',\r\n closesDialog: false,\r\n disabled: this.loading(),\r\n }\r\n : {\r\n label: this.configuration.backLabel ?? 'Voltar',\r\n labelKey: this.configuration.backLabelKey,\r\n value: 'back',\r\n variant: 'outline',\r\n color: 'surface',\r\n closesDialog: false,\r\n disabled: this.loading(),\r\n };\r\n\r\n const rightAction: SolarisDialogAction<TResult | SolarisDialogStepActionValue> = this.isLastStep()\r\n ? {\r\n label: this.configuration.finishLabel ?? 'Finalizar',\r\n labelKey: this.configuration.finishLabelKey,\r\n value: 'finish',\r\n variant: 'solid',\r\n color: 'primary',\r\n closesDialog: false,\r\n loading: this.loading(),\r\n }\r\n : {\r\n label: this.configuration.nextLabel ?? 'Continuar',\r\n labelKey: this.configuration.nextLabelKey,\r\n value: 'next',\r\n variant: 'solid',\r\n color: 'primary',\r\n closesDialog: false,\r\n loading: this.loading(),\r\n };\r\n\r\n this.dialogRef.updateActions([leftAction, rightAction]);\r\n }\r\n\r\n private resolveStepActions(\r\n step: SolarisDialogStep<unknown, TResult> | undefined\r\n ): SolarisDialogAction<TResult | SolarisDialogStepActionValue>[] {\r\n if (!step?.actions) {\r\n return [];\r\n }\r\n\r\n if (typeof step.actions === 'function') {\r\n return step.actions({\r\n index: this.currentStepIndex(),\r\n loading: this.loading(),\r\n isFirstStep: this.isFirstStep(),\r\n isLastStep: this.isLastStep(),\r\n });\r\n }\r\n\r\n return step.actions;\r\n }\r\n\r\n private resolveInitialStepIndex(): number {\r\n if (!this.steps.length) {\r\n return 0;\r\n }\r\n\r\n const index = this.configuration.initialStepIndex ?? 0;\r\n\r\n return Math.max(0, Math.min(index, this.steps.length - 1));\r\n }\r\n\r\n private runTransitionTo(targetIndex: number): void {\r\n globalThis.clearTimeout(this.halfwayTimer);\r\n globalThis.clearTimeout(this.transitionTimer);\r\n\r\n this.transitioning.set(true);\r\n this.transitionHalfway.set(false);\r\n\r\n this.currentStepIndex.set(targetIndex);\r\n\r\n this.observeActiveStepHeight(targetIndex);\r\n this.scheduleActiveStepHeightMeasure(targetIndex);\r\n\r\n if (this.transitionBlur) {\r\n this.halfwayTimer = globalThis.setTimeout(() => {\r\n if (this.transitioning()) {\r\n this.transitionHalfway.set(true);\r\n }\r\n }, Math.round(this.transitionDurationMs / 2));\r\n }\r\n\r\n this.transitionTimer = globalThis.setTimeout(() => {\r\n this.transitioning.set(false);\r\n this.transitionHalfway.set(false);\r\n }, this.transitionDurationMs);\r\n }\r\n\r\n private updateDialogHeader(): void {\r\n const step = this.steps[this.currentStepIndex()];\r\n\r\n this.dialogRef.updateHeader({\r\n title: step?.title ?? this.configuration.title,\r\n titleKey: step?.titleKey ?? this.configuration.titleKey,\r\n titleParams: step?.titleParams ?? this.configuration.titleParams,\r\n\r\n description: step?.description ?? this.configuration.description,\r\n descriptionKey: step?.descriptionKey ?? this.configuration.descriptionKey,\r\n descriptionParams: step?.descriptionParams ?? this.configuration.descriptionParams,\r\n });\r\n }\r\n\r\n private scheduleActiveStepHeightMeasure(index = this.currentStepIndex()): void {\r\n if (this.measureRaf) {\r\n cancelAnimationFrame(this.measureRaf);\r\n }\r\n\r\n this.measureRaf = requestAnimationFrame(() => {\r\n this.measureStepHeight(index);\r\n });\r\n }\r\n\r\n private measureStepHeight(index = this.currentStepIndex()): void {\r\n const element = this.stepElements?.toArray()[index]?.nativeElement;\r\n\r\n if (!element) {\r\n this.activeStepHeight.set('auto');\r\n return;\r\n }\r\n\r\n const height = Math.ceil(element.scrollHeight);\r\n\r\n this.activeStepHeight.set(`${height}px`);\r\n }\r\n\r\n private observeActiveStepHeight(index = this.currentStepIndex()): void {\r\n this.resizeObserver?.disconnect();\r\n\r\n const element = this.stepElements?.toArray()[index]?.nativeElement;\r\n\r\n if (!element || typeof ResizeObserver === 'undefined') {\r\n return;\r\n }\r\n\r\n this.resizeObserver = new ResizeObserver(() => {\r\n this.scheduleActiveStepHeightMeasure(index);\r\n });\r\n\r\n this.resizeObserver.observe(element);\r\n }\r\n}\r\n","<div class=\"solaris-dialog-steps\" [class.is-transitioning]=\"transitioning()\" [class.is-halfway]=\"transitionHalfway()\"\r\n [class.has-transition-blur]=\"transitionBlur\" [style.--solaris-dialog-steps-min-height]=\"contentMinHeight\"\r\n [style.--solaris-dialog-steps-active-height]=\"activeStepHeight()\">\r\n @if (showProgress) {\r\n <div class=\"solaris-dialog-steps__progress\" aria-hidden=\"true\">\r\n @for (step of steps; track step.key; let index = $index) {\r\n <span class=\"solaris-dialog-steps__dot\" [class.is-active]=\"index === currentStepIndex()\"\r\n [class.is-complete]=\"index < currentStepIndex()\"></span>\r\n }\r\n </div>\r\n }\r\n\r\n <div class=\"solaris-dialog-steps__viewport\">\r\n <div class=\"solaris-dialog-steps__track\" [style.transform]=\"trackTransform()\"\r\n [style.--solaris-dialog-steps-transition-duration]=\"transitionDuration()\">\r\n @for (step of steps; track step.key; let index = $index) {\r\n <section #stepElement class=\"solaris-dialog-steps__step\" [class.is-active]=\"index === currentStepIndex()\"\r\n [class.is-before]=\"index < currentStepIndex()\" [class.is-after]=\"index > currentStepIndex()\">\r\n <div class=\"solaris-dialog-steps__step-inner\">\r\n <ng-container\r\n *ngComponentOutlet=\"step.component; injector: stepInjector(index)\"\r\n ></ng-container>\r\n </div>\r\n </section>\r\n }\r\n </div>\r\n </div>\r\n</div>\r\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output, ViewChild, ViewContainerRef } from '@angular/core';\r\n\r\nimport { SolarisDialogAction, SolarisDialogActionAlignment, SolarisDialogSize } from '../../model/dialog.type';\r\nimport { SolarisButtonColorInput, SolarisButtonVariant } from '../../../../actions/button/models/button.type';\r\nimport { SolarisButtonDirective } from '../../../../actions/button/directives/button.directive';\r\nimport { SolarisSizePreset } from '../../../../common/model/common-configurations.type';\r\n\r\n@Component({\r\n selector: 'solaris-dialog-container',\r\n standalone: true,\r\n templateUrl: './dialog-container.html',\r\n styleUrl: './dialog-container.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [\r\n SolarisButtonDirective\r\n ]\r\n})\r\nexport class SolarisDialogContainer<TResult = unknown> {\r\n @ViewChild('contentHost', { read: ViewContainerRef, static: true })\r\n readonly contentHost!: ViewContainerRef;\r\n\r\n @Input() title?: string;\r\n @Input() titleKey?: string;\r\n @Input() titleParams?: Record<string, unknown>;\r\n\r\n @Input() description?: string;\r\n @Input() descriptionKey?: string;\r\n @Input() descriptionParams?: Record<string, unknown>;\r\n\r\n @Input() size: SolarisDialogSize = 'md';\r\n @Input() showCloseButton = true;\r\n @Input() actionSize?: SolarisSizePreset;\r\n @Input() actions: SolarisDialogAction<TResult>[] = [];\r\n @Input() actionAlignment: SolarisDialogActionAlignment = 'end';\r\n\r\n @Input() ariaLabel?: string;\r\n @Input() ariaLabelledBy?: string;\r\n @Input() ariaDescribedBy?: string;\r\n\r\n @Output() readonly closeClick = new EventEmitter<void>();\r\n @Output() readonly actionClick = new EventEmitter<SolarisDialogAction<TResult>>();\r\n\r\n readonly titleId = `solaris-dialog-title-${Math.round(Math.random() * 1_000_000)}`;\r\n readonly descriptionId = `solaris-dialog-description-${Math.round(Math.random() * 1_000_000)}`;\r\n\r\n get hasHeader(): boolean {\r\n return !!this.title || !!this.titleKey || !!this.description || !!this.descriptionKey || this.showCloseButton;\r\n }\r\n\r\n get hasDescription(): boolean {\r\n return !!this.description || !!this.descriptionKey;\r\n }\r\n\r\n get hasActions(): boolean {\r\n return this.actions.length > 0;\r\n }\r\n\r\n get resolvedAriaLabelledBy(): string | null {\r\n if (this.ariaLabelledBy) return this.ariaLabelledBy;\r\n if (this.title || this.titleKey) return this.titleId;\r\n return null;\r\n }\r\n\r\n get resolvedAriaDescribedBy(): string | null {\r\n if (this.ariaDescribedBy) return this.ariaDescribedBy;\r\n if (this.description || this.descriptionKey) return this.descriptionId;\r\n return null;\r\n }\r\n\r\n protected resolveActionSize(action: SolarisDialogAction<TResult>): SolarisSizePreset {\r\n if (action.size) {\r\n return action.size;\r\n }\r\n\r\n if (this.actionSize) {\r\n return this.actionSize;\r\n }\r\n\r\n switch (this.size) {\r\n case 'sm':\r\n return 'sm';\r\n case 'md':\r\n return 'md';\r\n case 'lg':\r\n case 'xl':\r\n case 'fullscreen':\r\n return 'lg';\r\n }\r\n }\r\n\r\n protected resolveActionVariant(action: SolarisDialogAction<TResult>): SolarisButtonVariant {\r\n if (action.variant) {\r\n return action.variant;\r\n }\r\n\r\n return 'solid';\r\n }\r\n\r\n protected resolveActionColor(action: SolarisDialogAction<TResult>): SolarisButtonColorInput {\r\n if (action.color) {\r\n return action.color;\r\n }\r\n\r\n switch (action.variant) {\r\n case 'ghost':\r\n case 'outline':\r\n case 'soft':\r\n return 'surface';\r\n default:\r\n return 'primary';\r\n }\r\n }\r\n}\r\n","<section class=\"solaris-dialog\" [attr.data-size]=\"size\" role=\"dialog\" aria-modal=\"true\" [attr.aria-label]=\"ariaLabel || null\"\r\n [attr.aria-labelledby]=\"resolvedAriaLabelledBy\" [attr.aria-describedby]=\"resolvedAriaDescribedBy\">\r\n @if (hasHeader) {\r\n <header class=\"solaris-dialog__header\">\r\n <div class=\"solaris-dialog__heading\">\r\n @if (title || titleKey) {\r\n <h2 class=\"solaris-dialog__title\" [id]=\"titleId\">\r\n @if (titleKey) {\r\n {{ titleKey }}\r\n } @else {\r\n {{ title }}\r\n }\r\n </h2>\r\n }\r\n\r\n @if (hasDescription) {\r\n <p class=\"solaris-dialog__description\" [id]=\"descriptionId\">\r\n @if (descriptionKey) {\r\n {{ descriptionKey }}\r\n } @else {\r\n {{ description }}\r\n }\r\n </p>\r\n }\r\n </div>\r\n\r\n @if (showCloseButton) {\r\n <button type=\"button\" class=\"solaris-dialog__close\" aria-label=\"Fechar\" (click)=\"closeClick.emit()\">\r\n <i class=\"ph ph-x\"></i>\r\n </button>\r\n }\r\n </header>\r\n }\r\n\r\n <div class=\"solaris-dialog__body\">\r\n <ng-template #contentHost></ng-template>\r\n </div>\r\n\r\n @if (hasActions) {\r\n <footer class=\"solaris-dialog__footer\" [attr.data-action-alignment]=\"actionAlignment\">\r\n @for (action of actions; track action.label ?? action.labelKey ?? $index) {\r\n <button type=\"button\" solaris-button class=\"solaris-dialog__action\" [size]=\"resolveActionSize(action)\"\r\n [variant]=\"resolveActionVariant(action)\" [color]=\"resolveActionColor(action)\" [disabled]=\"action.disabled\"\r\n [loading]=\"action.loading\" [fullWidth]=\"action.fullWidth\" (click)=\"actionClick.emit(action)\">\r\n @if (action.labelKey) {\r\n {{ action.labelKey }}\r\n } @else {\r\n {{ action.label }}\r\n }\r\n </button>\r\n }\r\n </footer>\r\n }\r\n</section>\r\n","import { ApplicationRef, EnvironmentInjector, Injectable, Injector, Type, createComponent, inject } from '@angular/core';\r\n\r\nimport { SolarisDialogStepsContainer } from '../components/dialog-steps-container/dialog-steps-container';\r\nimport { SolarisDialogContainer } from '../components/dialog-container/dialog-container';\r\nimport { SolarisDialogStepsConfiguration } from '../model/dialog-steps.type';\r\nimport { SolarisDialogConfiguration } from '../model/dialog.type';\r\nimport { SOLARIS_DIALOG_DATA } from '../token/dialog-data.token';\r\nimport { SolarisDialogRef } from '../token/dialog-ref';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class SolarisDialogService {\r\n private readonly environmentInjector = inject(EnvironmentInjector);\r\n private readonly appRef = inject(ApplicationRef);\r\n\r\n open<TComponent, TData = unknown, TResult = unknown>(component: Type<TComponent>,\r\n configuration: SolarisDialogConfiguration<TData, TResult> = {},): SolarisDialogRef<TResult> {\r\n const dialogRef = new SolarisDialogRef<TResult>();\r\n\r\n const backdrop = document.createElement('div');\r\n backdrop.className = 'solaris-dialog-backdrop';\r\n\r\n const host = document.createElement('div');\r\n const positionClass = `position-${configuration.position ?? 'center'}`;\r\n\r\n host.className = [\r\n 'solaris-dialog-host',\r\n positionClass,\r\n configuration.panelClass ?? '',\r\n ].filter(Boolean).join(' ');\r\n\r\n document.body.appendChild(backdrop);\r\n document.body.appendChild(host);\r\n\r\n const dialogInjector = Injector.create({\r\n providers: [\r\n { provide: SOLARIS_DIALOG_DATA, useValue: configuration.data },\r\n { provide: SolarisDialogRef, useValue: dialogRef },\r\n ],\r\n parent: this.environmentInjector,\r\n });\r\n\r\n const containerRef = createComponent(SolarisDialogContainer<TResult>, {\r\n environmentInjector: this.environmentInjector,\r\n hostElement: host,\r\n });\r\n\r\n containerRef.setInput('title', configuration.title);\r\n containerRef.setInput('titleKey', configuration.titleKey);\r\n containerRef.setInput('titleParams', configuration.titleParams);\r\n containerRef.setInput('description', configuration.description);\r\n containerRef.setInput('descriptionKey', configuration.descriptionKey);\r\n containerRef.setInput('descriptionParams', configuration.descriptionParams);\r\n containerRef.setInput('size', configuration.size ?? 'md');\r\n containerRef.setInput('actions', configuration.actions ?? []);\r\n containerRef.setInput('actionSize', configuration.actionSize);\r\n containerRef.setInput('actionAlignment', configuration.actionAlignment ?? 'end');\r\n containerRef.setInput('ariaLabel', configuration.ariaLabel);\r\n containerRef.setInput('ariaLabelledBy', configuration.ariaLabelledBy);\r\n containerRef.setInput('ariaDescribedBy', configuration.ariaDescribedBy);\r\n containerRef.setInput('showCloseButton', configuration.showCloseButton ?? !configuration.disableClose);\r\n\r\n dialogRef._attachActionsUpdateFn(actions => {\r\n containerRef.setInput('actions', [...actions]);\r\n containerRef.changeDetectorRef.detectChanges();\r\n });\r\n\r\n dialogRef._attachHeaderUpdateFn(header => {\r\n containerRef.setInput('title', header.title);\r\n containerRef.setInput('titleKey', header.titleKey);\r\n containerRef.setInput('titleParams', header.titleParams);\r\n\r\n containerRef.setInput('description', header.description);\r\n containerRef.setInput('descriptionKey', header.descriptionKey);\r\n containerRef.setInput('descriptionParams', header.descriptionParams);\r\n\r\n containerRef.changeDetectorRef.detectChanges();\r\n });\r\n\r\n this.appRef.attachView(containerRef.hostView);\r\n containerRef.changeDetectorRef.detectChanges();\r\n\r\n const contentRef = createComponent(component, {\r\n environmentInjector: this.environmentInjector,\r\n elementInjector: dialogInjector,\r\n });\r\n\r\n containerRef.instance.contentHost.insert(contentRef.hostView);\r\n contentRef.changeDetectorRef.detectChanges();\r\n\r\n const close = (result?: TResult) => {\r\n this.appRef.detachView(contentRef.hostView);\r\n contentRef.destroy();\r\n\r\n this.appRef.detachView(containerRef.hostView);\r\n containerRef.destroy();\r\n\r\n backdrop.remove();\r\n host.remove();\r\n\r\n document.removeEventListener('keydown', onKeyDown, true);\r\n backdrop.removeEventListener('pointerdown', onBackdropClick, true);\r\n\r\n dialogRef._finishClose(result);\r\n };\r\n\r\n dialogRef._attachCloseFn(close);\r\n\r\n const closeOnBackdropClick = configuration.closeOnBackdropClick ?? !configuration.disableClose;\r\n const closeOnEscape = configuration.closeOnEscape ?? !configuration.disableClose;\r\n\r\n const onBackdropClick = () => {\r\n if (closeOnBackdropClick) {\r\n dialogRef.close();\r\n }\r\n };\r\n\r\n const onKeyDown = (event: KeyboardEvent) => {\r\n if (event.key === 'Escape' && closeOnEscape) {\r\n dialogRef.close();\r\n }\r\n };\r\n\r\n backdrop.addEventListener('pointerdown', onBackdropClick, true);\r\n document.addEventListener('keydown', onKeyDown, true);\r\n\r\n containerRef.instance.closeClick.subscribe(() => {\r\n if (!configuration.disableClose) {\r\n dialogRef.close();\r\n }\r\n });\r\n\r\n containerRef.instance.actionClick.subscribe((action) => {\r\n if (action.disabled || action.loading) return;\r\n\r\n dialogRef._emitAction(action);\r\n if (action.closesDialog ?? true) {\r\n dialogRef.close(action.value as TResult);\r\n }\r\n });\r\n\r\n return dialogRef;\r\n }\r\n\r\n openSteps<TResult = unknown>(configuration: SolarisDialogStepsConfiguration<TResult>,): SolarisDialogRef<TResult> {\r\n return this.open<SolarisDialogStepsContainer<TResult>, SolarisDialogStepsConfiguration<TResult>,\r\n TResult>(SolarisDialogStepsContainer, {\r\n ...configuration,\r\n data: configuration,\r\n actions: [],\r\n actionAlignment: configuration.actionAlignment ?? 'space-between',\r\n showCloseButton: configuration.showCloseButton ?? true,\r\n });\r\n }\r\n}\r\n","import { Directive } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[solaris-drawer-header]',\r\n standalone: true,\r\n})\r\nexport class SolarisDrawerHeaderDirective {}\r\n","import { Directive } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[solaris-drawer-footer]',\r\n standalone: true,\r\n})\r\nexport class SolarisDrawerFooterDirective {}\r\n","import { ChangeDetectionStrategy, Component, ContentChild, ElementRef, EventEmitter, HostBinding,\r\n Input, Output, ViewChild, computed, effect, inject, signal } from '@angular/core';\r\nimport { DOCUMENT } from '@angular/common';\r\n\r\nimport { SolarisDrawerHeaderDirective } from '../directives/drawer-header.directive';\r\nimport { SolarisDrawerFooterDirective } from '../directives/drawer-footer.directive';\r\nimport { SolarisDrawerSide } from '../model/drawer.type';\r\n\r\n@Component({\r\n selector: 'solaris-drawer',\r\n standalone: true,\r\n imports: [],\r\n templateUrl: './drawer.html',\r\n styleUrls: ['./drawer.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: { class: 'solaris-drawer-host' },\r\n})\r\nexport class SolarisDrawer {\r\n private readonly doc = inject(DOCUMENT);\r\n\r\n @Input() title = '';\r\n @Input() titleKey = '';\r\n @Input() panelClass = '';\r\n @Input() backdrop = true;\r\n @Input() showClose = true;\r\n @Input() trapFocus = true;\r\n @Input() backdropClass = '';\r\n @Input() showHeader = true;\r\n @Input() lockScroll = true;\r\n @Input() restoreFocus = true;\r\n @Input() closeOnEscape = true;\r\n @Input() width = 'min(26rem, 92vw)';\r\n @Input() side: SolarisDrawerSide = 'right';\r\n @Input() height = 'min(70vh, 40rem)';\r\n @Input() closeOnOutsideClick = true;\r\n\r\n private readonly _openInput = signal<boolean | null>(null);\r\n private readonly _internalOpen = signal(false);\r\n\r\n @Input() set open(v: boolean | null) { this._openInput.set(v); }\r\n get open(): boolean | null { return this._openInput(); }\r\n\r\n readonly isOpen = computed(() => {\r\n const v = this._openInput();\r\n return typeof v === 'boolean' ? v : this._internalOpen();\r\n });\r\n\r\n @Output() openChange = new EventEmitter<boolean>();\r\n\r\n @ContentChild(SolarisDrawerHeaderDirective) headerSlot?: SolarisDrawerHeaderDirective;\r\n @ContentChild(SolarisDrawerFooterDirective) footerSlot?: SolarisDrawerFooterDirective;\r\n @ViewChild('panelEl', { read: ElementRef }) panelEl?: ElementRef<HTMLElement>;\r\n\r\n private static seq = 0;\r\n readonly _id = `solaris-drawer-${++SolarisDrawer.seq}`;\r\n private static scrollLockCount = 0;\r\n private static prevBodyOverflow = '';\r\n readonly titleId = `${this._id}-title`;\r\n private prevFocused: HTMLElement | null = null;\r\n private static prevBodyPaddingRight = '';\r\n\r\n @HostBinding('attr.data-side') get dataSide() { return this.side; }\r\n @HostBinding('attr.data-open') get dataOpen() { return this.isOpen() ? 'true' : null; }\r\n\r\n get hasCustomHeader(): boolean { return !!this.headerSlot; }\r\n get hasCustomFooter(): boolean { return !!this.footerSlot; }\r\n\r\n constructor() {\r\n effect((onCleanup) => {\r\n const open = this.isOpen();\r\n\r\n if (open) {\r\n this.onOpen();\r\n } else {\r\n this.onClose();\r\n }\r\n\r\n const onKeyDown = (ev: KeyboardEvent) => {\r\n if (!this.isOpen()) return;\r\n if (this.closeOnEscape && ev.key === 'Escape') {\r\n ev.preventDefault();\r\n this.setOpen(false);\r\n }\r\n };\r\n\r\n const onDocPointerDown = (ev: PointerEvent) => {\r\n if (!this.isOpen()) return;\r\n if (!this.closeOnOutsideClick) return;\r\n if (this.backdrop) return;\r\n\r\n const panel = this.panelEl?.nativeElement;\r\n const t = ev.target as Node | null;\r\n if (!panel || !t) return;\r\n\r\n if (!panel.contains(t)) this.setOpen(false);\r\n };\r\n\r\n const onFocusIn = (ev: FocusEvent) => {\r\n if (!this.isOpen()) return;\r\n if (!this.trapFocus) return;\r\n\r\n const panel = this.panelEl?.nativeElement;\r\n const target = ev.target as Node | null;\r\n if (!panel || !target) return;\r\n\r\n if (!panel.contains(target)) {\r\n this.focusFirst();\r\n }\r\n };\r\n\r\n this.doc.addEventListener('keydown', onKeyDown, { capture: true });\r\n this.doc.addEventListener('pointerdown', onDocPointerDown, { capture: true });\r\n this.doc.addEventListener('focusin', onFocusIn, { capture: true });\r\n\r\n onCleanup(() => {\r\n this.doc.removeEventListener('keydown', onKeyDown, true as any);\r\n this.doc.removeEventListener('pointerdown', onDocPointerDown, true as any);\r\n this.doc.removeEventListener('focusin', onFocusIn, true as any);\r\n });\r\n });\r\n }\r\n\r\n toggle() {\r\n this.setOpen(!this.isOpen());\r\n }\r\n\r\n setOpen(next: boolean) {\r\n const cur = this.isOpen();\r\n if (next === cur) return;\r\n\r\n this.openChange.emit(next);\r\n if (typeof this._openInput() !== 'boolean') {\r\n this._internalOpen.set(next);\r\n }\r\n }\r\n\r\n onBackdropClick() {\r\n if (!this.closeOnOutsideClick) return;\r\n this.setOpen(false);\r\n }\r\n\r\n onPanelKeydown(ev: KeyboardEvent) {\r\n if (!this.trapFocus) return;\r\n if (ev.key !== 'Tab') return;\r\n\r\n const panel = this.panelEl?.nativeElement;\r\n if (!panel) return;\r\n\r\n const focusables = this.getFocusable(panel);\r\n if (!focusables.length) return;\r\n\r\n const first = focusables[0];\r\n const last = focusables.at(-1);\r\n\r\n const active = this.doc.activeElement as HTMLElement | null;\r\n\r\n if (ev.shiftKey) {\r\n if (!active || active === first) {\r\n ev.preventDefault();\r\n if (last) {\r\n last.focus();\r\n }\r\n }\r\n } else if (!active || active === last) {\r\n ev.preventDefault();\r\n first.focus();\r\n }\r\n }\r\n\r\n private onOpen() {\r\n if (this.restoreFocus) {\r\n this.prevFocused = this.doc.activeElement as HTMLElement | null;\r\n }\r\n\r\n if (this.lockScroll) this.lockBodyScroll();\r\n queueMicrotask(() => {\r\n requestAnimationFrame(() => this.focusFirst());\r\n });\r\n }\r\n\r\n private onClose() {\r\n if (this.lockScroll) this.unlockBodyScroll();\r\n\r\n if (this.restoreFocus && this.prevFocused?.isConnected) {\r\n queueMicrotask(() => this.prevFocused?.focus?.());\r\n }\r\n this.prevFocused = null;\r\n }\r\n\r\n private focusFirst() {\r\n const panel = this.panelEl?.nativeElement;\r\n if (!panel) return;\r\n\r\n const focusables = this.getFocusable(panel);\r\n if (focusables.length) {\r\n focusables[0].focus();\r\n return;\r\n }\r\n\r\n panel.focus?.();\r\n }\r\n\r\n private getFocusable(root: HTMLElement): HTMLElement[] {\r\n const selector =\r\n 'button:not([disabled]), [href], input:not([disabled]), select:not([disabled]), textarea:not([disabled]), [tabindex]:not([tabindex=\"-1\"])';\r\n\r\n const all = Array.from(root.querySelectorAll<HTMLElement>(selector));\r\n return all.filter(el => {\r\n const style = getComputedStyle(el);\r\n const visible = style.visibility !== 'hidden' && style.display !== 'none';\r\n const inDom = el.offsetParent !== null || style.position === 'fixed';\r\n return visible && inDom;\r\n });\r\n }\r\n\r\n private lockBodyScroll() {\r\n const body = this.doc.body;\r\n if (!body) return;\r\n\r\n if (SolarisDrawer.scrollLockCount === 0) {\r\n SolarisDrawer.prevBodyOverflow = body.style.overflow;\r\n SolarisDrawer.prevBodyPaddingRight = body.style.paddingRight;\r\n\r\n const scrollbarW = Math.max(0, window.innerWidth - this.doc.documentElement.clientWidth);\r\n body.style.overflow = 'hidden';\r\n if (scrollbarW) body.style.paddingRight = `${scrollbarW}px`;\r\n }\r\n\r\n SolarisDrawer.scrollLockCount++;\r\n }\r\n\r\n private unlockBodyScroll() {\r\n const body = this.doc.body;\r\n if (!body) return;\r\n\r\n SolarisDrawer.scrollLockCount = Math.max(0, SolarisDrawer.scrollLockCount - 1);\r\n\r\n if (SolarisDrawer.scrollLockCount === 0) {\r\n body.style.overflow = SolarisDrawer.prevBodyOverflow;\r\n body.style.paddingRight = SolarisDrawer.prevBodyPaddingRight;\r\n }\r\n }\r\n}\r\n","@if (isOpen()) {\r\n @if (backdrop) {\r\n <div class=\"solaris-drawer__backdrop {{ backdropClass }}\" (click)=\"onBackdropClick()\" aria-hidden=\"true\"></div>\r\n }\r\n\r\n <aside #panelEl class=\"solaris-drawer__panel {{ panelClass }}\" role=\"dialog\" aria-modal=\"true\"\r\n [attr.aria-labelledby]=\"showHeader ? titleId : null\" [style.--solaris-drawer-width]=\"width\"\r\n [style.--solaris-drawer-height]=\"height\" (keydown)=\"onPanelKeydown($event)\" tabindex=\"-1\">\r\n @if (showHeader) {\r\n <header class=\"solaris-drawer__header\">\r\n @if (hasCustomHeader) {\r\n <ng-content select=\"[solaris-drawer-header]\"></ng-content>\r\n } @else {\r\n <div class=\"solaris-drawer__title\" [id]=\"titleId\">{{ title }}</div>\r\n\r\n @if (showClose) {\r\n <button type=\"button\" class=\"solaris-drawer__close\" (click)=\"setOpen(false)\" aria-label=\"Close\">\r\n <i class=\"ph ph-x\" aria-hidden=\"true\"></i>\r\n </button>\r\n }\r\n }\r\n </header>\r\n }\r\n\r\n <div class=\"solaris-drawer__content\">\r\n <ng-content></ng-content>\r\n </div>\r\n\r\n @if (hasCustomFooter) {\r\n <footer class=\"solaris-drawer__footer\">\r\n <ng-content select=\"[solaris-drawer-footer]\"></ng-content>\r\n </footer>\r\n }\r\n </aside>\r\n}\r\n","import { Directive } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[solaris-filter-panel-footer]',\r\n standalone: true,\r\n})\r\nexport class SolarisFilterPanelFooterDirective {}\r\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'solaris-table-filters',\r\n standalone: true,\r\n templateUrl: './table-filters.html',\r\n styleUrls: ['./table-filters.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: { class: 'solaris-table-filters' },\r\n})\r\nexport class SolarisTableFilters {}\r\n","<ng-content></ng-content>\r\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\r\n\r\nimport { SolarisTranslationPipe } from '@educarehq/solaris-services';\r\n\r\n@Component({\r\n selector: 'solaris-filter-field',\r\n standalone: true,\r\n imports: [SolarisTranslationPipe],\r\n templateUrl: './filter-field.html',\r\n styleUrls: ['./filter-field.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: { class: 'solaris-filter-field-host' },\r\n})\r\nexport class SolarisFilterField {\r\n @Input() label = '';\r\n @Input() labelKey = '';\r\n @Input() active = false;\r\n @Input() resetLabel = 'Reset';\r\n @Input() resetLabelKey = 'ui.solaris.common.reset';\r\n\r\n @Output() reset = new EventEmitter<void>();\r\n\r\n get showReset(): boolean {\r\n return this.reset.observed;\r\n }\r\n\r\n onResetClick(ev: MouseEvent) {\r\n ev.preventDefault();\r\n ev.stopPropagation();\r\n this.reset.emit();\r\n }\r\n}\r\n","<div class=\"solaris-filter-field\">\r\n <div class=\"solaris-filter-field__head\">\r\n <span class=\"solaris-filter-field__label\">\r\n @if (labelKey) { {{ labelKey | translate }} } @else { {{ label }} }\r\n </span>\r\n\r\n @if (showReset) {\r\n <button type=\"button\" class=\"solaris-filter-field__reset\" (click)=\"onResetClick($event)\" [disabled]=\"!active\">\r\n @if (resetLabelKey) { {{ resetLabelKey | translate }} } @else { {{ resetLabel }} }\r\n </button>\r\n }\r\n </div>\r\n\r\n <div class=\"solaris-filter-field__body\">\r\n <ng-content></ng-content>\r\n </div>\r\n</div>\r\n","import { Directive } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[solaris-filter-panel-chips]',\r\n standalone: true,\r\n})\r\nexport class SolarisFilterPanelChipsDirective {}\r\n","import { ChangeDetectionStrategy, Component, ContentChild, EventEmitter, Input, Output, computed, signal } from '@angular/core';\r\n\r\nimport { SolarisFilterPanelFooterDirective } from '../../../directives/filter-panel-footer.directive';\r\nimport { SolarisDrawerFooterDirective } from '../../../../drawer/directives/drawer-footer.directive';\r\nimport { SolarisDrawerHeaderDirective } from '../../../../drawer/directives/drawer-header.directive';\r\nimport { SolarisFilterPanelChipsDirective } from '../../../directives/filter-panel-chips.directive';\r\nimport { SolarisButtonDirective } from '../../../../../actions/button/directives/button.directive';\r\nimport { SolarisFilterPanelRadius } from '../../../model/filter-panel/filter-panel.type';\r\nimport { SolarisTranslationPipe } from '@educarehq/solaris-services';\r\nimport { SolarisDrawer } from '../../../../drawer/component/drawer';\r\n\r\n@Component({\r\n selector: 'solaris-filter-panel',\r\n standalone: true,\r\n imports: [\r\n SolarisTranslationPipe,\r\n SolarisButtonDirective,\r\n SolarisDrawerHeaderDirective,\r\n SolarisDrawerFooterDirective,\r\n SolarisDrawer\r\n ],\r\n templateUrl: './filter-panel.html',\r\n styleUrls: ['./filter-panel.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: { class: 'solaris-filter-panel-host' },\r\n})\r\nexport class SolarisFilterPanel {\r\n @Input() count = 0;\r\n @Input() labelKey = '';\r\n @Input() titleKey = '';\r\n @Input() disabled = false;\r\n @Input() drawerSide: 'right' | 'left' = 'right';\r\n @Input() radius: SolarisFilterPanelRadius = 'sm';\r\n @Input() drawerWidth: string = 'min(30rem, 92vw)';\r\n @Input() label = 'ui.solaris.tables.filter.filters';\r\n @Input() title = 'ui.solaris.tables.filter.filters';\r\n\r\n private readonly _internalOpen = signal(false);\r\n private readonly _openInput = signal<boolean | null>(null);\r\n private readonly _chipsSlot = signal<SolarisFilterPanelChipsDirective | null>(null);\r\n\r\n @Input() set open(v: boolean | null) { this._openInput.set(v); }\r\n get open(): boolean | null { return this._openInput(); }\r\n\r\n readonly isOpen = computed(() => {\r\n const v = this._openInput();\r\n return typeof v === 'boolean' ? v : this._internalOpen();\r\n });\r\n\r\n @Output() apply = new EventEmitter<void>();\r\n @Output() clearAll = new EventEmitter<void>();\r\n @Output() openChange = new EventEmitter<boolean>();\r\n\r\n @ContentChild(SolarisFilterPanelFooterDirective) footerSlot?: SolarisFilterPanelFooterDirective;\r\n @ContentChild(SolarisFilterPanelChipsDirective) set chipsSlot(v: SolarisFilterPanelChipsDirective | undefined) {\r\n this._chipsSlot.set(v ?? null);\r\n }\r\n\r\n readonly hasChips = computed(() => !!this._chipsSlot());\r\n get hasCustomFooter(): boolean { return !!this.footerSlot; }\r\n\r\n setOpen(next: boolean) {\r\n if (this.disabled) return;\r\n if (next === this.isOpen()) return;\r\n\r\n this.openChange.emit(next);\r\n if (typeof this._openInput() !== 'boolean') this._internalOpen.set(next);\r\n }\r\n\r\n toggle() {\r\n this.setOpen(!this.isOpen());\r\n }\r\n}\r\n","<button type=\"button\" class=\"solaris-filter-panel__trigger\" [disabled]=\"disabled\" (click)=\"toggle()\"\r\n [attr.data-radius]=\"radius\">\r\n <i class=\"ph ph-sliders-horizontal\"></i>\r\n\r\n @if (labelKey) { {{ labelKey | translate }} } @else { {{ label | translate }} }\r\n\r\n @if (count > 0) {\r\n <span class=\"solaris-filter-panel__count\">{{ count }}</span>\r\n }\r\n</button>\r\n\r\n<solaris-drawer [open]=\"isOpen()\" (openChange)=\"setOpen($event)\" [side]=\"drawerSide\" [width]=\"drawerWidth\"\r\n [backdrop]=\"true\" [closeOnEscape]=\"true\" [closeOnOutsideClick]=\"true\" [lockScroll]=\"true\"\r\n [restoreFocus]=\"true\" [trapFocus]=\"true\" panelClass=\"solaris-filter-panel__drawer\">\r\n <div solaris-drawer-header class=\"solaris-filter-panel__header\">\r\n <div class=\"solaris-filter-panel__title\">\r\n @if (titleKey) { {{ titleKey | translate }} } @else { {{ title | translate }} }\r\n </div>\r\n\r\n <button type=\"button\" class=\"solaris-filter-panel__close\" (click)=\"setOpen(false)\">\r\n <i class=\"ph ph-x\"></i>\r\n </button>\r\n </div>\r\n\r\n @if (hasChips()) {\r\n <div class=\"solaris-filter-panel__chips\">\r\n <ng-content select=\"[solarisFilterPanelChips]\"></ng-content>\r\n </div>\r\n }\r\n\r\n <div class=\"solaris-filter-panel__content\">\r\n <ng-content></ng-content>\r\n </div>\r\n\r\n <footer solaris-drawer-footer class=\"solaris-filter-panel__footer\">\r\n <ng-content select=\"[solarisFilterPanelFooter]\"></ng-content>\r\n\r\n @if (!hasCustomFooter) {\r\n <div class=\"solaris-filter-panel__footer-default\">\r\n <button solaris-button color=\"surface\" variant=\"outline\" type=\"button\" (click)=\"clearAll.emit()\">\r\n {{ 'ui.solaris.common.clearAll' | translate }}\r\n </button>\r\n\r\n <button solaris-button type=\"button\" (click)=\"apply.emit()\">\r\n {{ 'ui.solaris.common.apply' | translate }}\r\n </button>\r\n </div>\r\n }\r\n </footer>\r\n</solaris-drawer>\r\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\r\n\r\nimport { SolarisTranslationPipe } from '@educarehq/solaris-services';\r\nimport { SolarisRadiusPreset } from '../../../../../common/model/common-configurations.type';\r\n\r\n\r\n@Component({\r\n selector: 'solaris-filter-chip',\r\n standalone: true,\r\n imports: [\r\n SolarisTranslationPipe\r\n ],\r\n templateUrl: './filter-chip.html',\r\n styleUrls: ['./filter-chip.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: { class: 'solaris-filter-chip-host' },\r\n})\r\nexport class SolarisFilterChip {\r\n @Input() label = '';\r\n @Input() value = '';\r\n @Input() labelKey = '';\r\n @Input() valueKey = '';\r\n @Input() disabled = false;\r\n @Input() removable = true;\r\n @Input() radius: SolarisRadiusPreset = 'md';\r\n\r\n @Output() remove = new EventEmitter<void>();\r\n @Output() chipClick = new EventEmitter<void>();\r\n\r\n onRemoveClick(ev: MouseEvent) {\r\n ev.preventDefault();\r\n ev.stopPropagation();\r\n if (!this.disabled) this.remove.emit();\r\n }\r\n}\r\n","<button type=\"button\" class=\"solaris-filter-chip\" [disabled]=\"disabled\"\r\n (click)=\"chipClick.emit()\" [attr.data-radius]=\"radius\">\r\n <span class=\"solaris-filter-chip__label\">\r\n @if (labelKey) { {{ labelKey | translate }} } @else { {{ label }} }\r\n </span>\r\n\r\n <span class=\"solaris-filter-chip__value\">\r\n @if (valueKey) { {{ valueKey | translate }} } @else { {{ value }} }\r\n </span>\r\n\r\n @if (removable) {\r\n <span class=\"solaris-filter-chip__remove\"\r\n role=\"button\"\r\n tabindex=\"-1\"\r\n (click)=\"onRemoveClick($event)\">\r\n <i class=\"ph ph-x\" aria-hidden=\"true\"></i>\r\n </span>\r\n }\r\n</button>\r\n","import { Component, Input } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'solaris-table-skeleton',\r\n standalone: true,\r\n templateUrl: './table-skeleton.html',\r\n styleUrls: ['./table-skeleton.scss'],\r\n})\r\nexport class SolarisTableSkeleton {\r\n @Input() rows = 10;\r\n @Input() columns = 6;\r\n @Input() selectable = false;\r\n @Input() gridTemplateColumns = '';\r\n\r\n public rowsArray() { return Array.from({ length: this.rows }, (_, i) => i); }\r\n public colsArray() { return Array.from({ length: this.columns }, (_, i) => i); }\r\n}\r\n","<div class=\"solaris-table-skeleton\" role=\"status\" aria-live=\"polite\">\r\n @for (r of rowsArray(); track r) {\r\n <div class=\"solaris-table-skeleton__row\" [style.gridTemplateColumns]=\"gridTemplateColumns\">\r\n\r\n @for (c of colsArray(); track c; let i = $index) {\r\n <div class=\"solaris-table-skeleton__cell\" [class.is-first]=\"i === 0\">\r\n @if (selectable && i === 0) {\r\n <span class=\"solaris-table-skeleton__select-prefix\">\r\n <span class=\"sk sk--circle\"></span>\r\n </span>\r\n }\r\n\r\n <span class=\"sk sk--line\"></span>\r\n </div>\r\n }\r\n </div>\r\n }\r\n</div>\r\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'solaris-filter-bar',\r\n standalone: true,\r\n templateUrl: './filter-bar.html',\r\n styleUrls: ['./filter-bar.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: { class: 'solaris-filter-bar' },\r\n})\r\nexport class SolarisFilterBar {}\r\n","<ng-content></ng-content>\r\n","import { Directive, TemplateRef } from '@angular/core';\r\n\r\n@Directive({\r\n selector: 'ng-template[solaris-column-cell]',\r\n standalone: true,\r\n})\r\nexport class SolarisColumnCellDef {\r\n constructor(public readonly template: TemplateRef<any>) {}\r\n}\r\n\r\n@Directive({\r\n selector: 'ng-template[solaris-column-header]',\r\n standalone: true,\r\n})\r\nexport class SolarisColumnHeaderDef {\r\n constructor(public readonly template: TemplateRef<any>) {}\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class SolarisIdGenerator {\r\n private readonly counters = new Map<string, number>();\r\n\r\n public next(prefix = 'solaris'): string {\r\n const current = this.counters.get(prefix) ?? 0;\r\n const next = current + 1;\r\n this.counters.set(prefix, next);\r\n return `${prefix}-${next}`;\r\n }\r\n}\r\n","import { booleanAttribute, Component, ContentChild, inject, Input } from '@angular/core';\r\n\r\nimport { SolarisColumnCellDef, SolarisColumnHeaderDef } from '../../directives/column.directive';\r\nimport { SolarisIdGenerator } from '../../../../common/service/id-generator.service';\r\nimport { SolarisAlign } from '../../model/table/table.types';\r\n\r\n@Component({\r\n selector: 'solaris-column',\r\n standalone: true,\r\n templateUrl: './table-column.html',\r\n styleUrls: ['./table-column.scss']\r\n})\r\nexport class SolarisTableColumn {\r\n private readonly ids = inject(SolarisIdGenerator);\r\n readonly id = this.ids.next('solaris-column');\r\n\r\n @Input() field?: string;\r\n @Input() width?: string;\r\n @Input() header?: string;\r\n @Input() sortKey?: string;\r\n @Input() minWidth?: string;\r\n @Input() maxWidth?: string;\r\n @Input() headerKey?: string;\r\n @Input() headerIconClass?: string;\r\n @Input() align: SolarisAlign = 'start';\r\n @Input({ transform: booleanAttribute }) grow = false;\r\n @Input({ transform: booleanAttribute }) resizable = true;\r\n @Input({ transform: booleanAttribute }) sortable = false;\r\n\r\n @ContentChild(SolarisColumnCellDef) cellDef?: SolarisColumnCellDef;\r\n @ContentChild(SolarisColumnHeaderDef) headerDef?: SolarisColumnHeaderDef;\r\n}\r\n","","import { inject } from '@angular/core';\r\n\r\nimport { SolarisIdGenerator } from '../service/id-generator.service';\r\n\r\nexport function uniqueId(prefix: string): string {\r\n return inject(SolarisIdGenerator).next(prefix);\r\n}\r\n","import { ChangeDetectionStrategy, Component, ElementRef, ViewChild,\r\n forwardRef, computed, effect, input, output, signal } from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\n\r\nimport { SolarisColorPreset, SolarisSizePreset } from '../../../common/model/common-configurations.type';\r\nimport { CheckboxAppearance, CheckboxColorInput, CheckboxVariant } from '../model/checkbox.type';\r\nimport { uniqueId } from '../../../common/helper/unique-id';\r\n\r\nconst PRESET_COLORS = new Set<SolarisColorPreset>([ 'primary', 'success', 'warning', 'error', 'info' ]);\r\n\r\n@Component({\r\n selector: 'solaris-checkbox',\r\n standalone: true,\r\n templateUrl: './checkbox.html',\r\n styleUrls: ['./checkbox.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => SolarisCheckbox),\r\n multi: true,\r\n },\r\n ],\r\n host: {\r\n class: 'solaris-checkbox-host',\r\n '[attr.data-size]': 'size()',\r\n '[attr.data-color]': 'colorKey()',\r\n '[attr.data-variant]': 'variant()',\r\n '[attr.data-appearance]': 'appearance()',\r\n '[style.--solaris-checkbox-ink]': 'ink()',\r\n '[attr.data-disabled]': 'disabled() ? \"true\" : null',\r\n '[style.--solaris-checkbox-custom]': 'customAccent()',\r\n },\r\n})\r\nexport class SolarisCheckbox implements ControlValueAccessor {\r\n readonly indeterminate = input<boolean>(false);\r\n readonly ariaLabel = input<string | null>(null);\r\n readonly size = input<SolarisSizePreset>('md');\r\n readonly variant = input<CheckboxVariant>('square');\r\n readonly color = input<CheckboxColorInput>('primary');\r\n readonly inputId = input<string | null>(null, { alias: 'id' });\r\n readonly appearance = input<CheckboxAppearance>('solid');\r\n readonly checkColor = input<CheckboxColorInput | null>(null);\r\n\r\n readonly checked = signal(false);\r\n readonly disabled = signal(false);\r\n readonly checkedChange = output<boolean>();\r\n readonly indeterminateChange = output<boolean>();\r\n\r\n @ViewChild('native', { static: true })\r\n private readonly native?: ElementRef<HTMLInputElement>;\r\n\r\n readonly customAccent = computed(() => {\r\n if (this.colorKey() !== 'custom') return null;\r\n const raw = String(this.color() ?? '').trim();\r\n return !raw || raw === 'custom' ? null : raw;\r\n });\r\n readonly colorKey = computed(() => {\r\n const raw = String(this.color() ?? '').trim();\r\n if (!raw || raw === 'custom') return 'custom';\r\n return PRESET_COLORS.has(raw as SolarisColorPreset) ? (raw as SolarisColorPreset) : 'custom';\r\n });\r\n private readonly autoId = uniqueId('solaris-checkbox');\r\n readonly id = computed(() => this.inputId() ?? this.autoId);\r\n readonly ink = computed(() => resolveColor(this.checkColor(), null));\r\n\r\n private onChange: (value: boolean) => void = () => {};\r\n private onTouched: () => void = () => {};\r\n\r\n constructor() {\r\n effect(() => {\r\n const el = this.native?.nativeElement;\r\n if (!el) return;\r\n el.indeterminate = this.indeterminate();\r\n });\r\n }\r\n\r\n public onNativeChange(next: boolean) {\r\n if (this.indeterminate()) this.indeterminateChange.emit(false);\r\n\r\n this.checked.set(next);\r\n this.onChange(next);\r\n this.checkedChange.emit(next);\r\n this.onTouched();\r\n }\r\n\r\n public onBlur() {\r\n this.onTouched();\r\n }\r\n\r\n writeValue(value: boolean | null): void {\r\n this.checked.set(!!value);\r\n }\r\n registerOnTouched(fn: () => void): void {\r\n this.onTouched = fn;\r\n }\r\n setDisabledState(isDisabled: boolean): void {\r\n this.disabled.set(isDisabled);\r\n }\r\n registerOnChange(fn: (value: boolean) => void): void {\r\n this.onChange = fn;\r\n }\r\n}\r\n\r\nfunction resolveColor(v: CheckboxColorInput | null | undefined, fallback: string | null): string | null {\r\n const s = v == null ? '' : String(v).trim();\r\n if (!s || s === 'custom') return fallback;\r\n if (PRESET_COLORS.has(s as SolarisColorPreset)) return `var(--solaris-color-${s})`;\r\n return s;\r\n}\r\n","<label class=\"solaris-checkbox\">\r\n <input #native class=\"solaris-checkbox__native\" type=\"checkbox\" [attr.id]=\"id()\"\r\n [checked]=\"checked()\" [disabled]=\"disabled()\" [attr.aria-label]=\"ariaLabel() ?? null\"\r\n [attr.aria-checked]=\"indeterminate() ? 'mixed' : (checked() ? 'true' : 'false')\"\r\n (change)=\"onNativeChange(native.checked)\" (blur)=\"onBlur()\"/>\r\n\r\n <span class=\"solaris-checkbox__control\" aria-hidden=\"true\">\r\n @if (variant() === 'icon') {\r\n <span class=\"solaris-checkbox__dot\" aria-hidden=\"true\"></span>\r\n } @else {\r\n <i class=\"ph solaris-checkbox__icon\" [class.ph-check]=\"!indeterminate()\"\r\n [class.ph-minus]=\"indeterminate()\" aria-hidden=\"true\"></i>\r\n }\r\n </span>\r\n\r\n @if (variant() !== 'icon') {\r\n <span class=\"solaris-checkbox__content\"><ng-content/></span>\r\n }\r\n</label>\r\n","import { AfterContentInit, ChangeDetectionStrategy, Component, computed, ContentChildren, DestroyRef, ElementRef,\r\n EventEmitter, inject, Input, OnChanges, Output, QueryList, signal, SimpleChanges, ViewChild } from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { NgTemplateOutlet } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\n\r\nimport { SolarisPageChange, SolarisRowKey, SolarisSort, SolarisTableVariant } from '../../model/table/table.types';\r\nimport { SolarisCheckbox } from '../../../../actions/checkbox/component/checkbox';\r\nimport { SolarisTranslationPipe } from '@educarehq/solaris-services';\r\nimport { SolarisTableSkeleton } from '../skeleton/table-skeleton';\r\nimport { SolarisTableColumn } from '../column/table-column';\r\n\r\n@Component({\r\n selector: 'solaris-table',\r\n standalone: true,\r\n imports: [\r\n FormsModule,\r\n SolarisCheckbox,\r\n NgTemplateOutlet,\r\n SolarisTableSkeleton,\r\n SolarisTranslationPipe,\r\n ],\r\n templateUrl: './table.html',\r\n styleUrls: ['./table.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: {\r\n class: 'solaris-table-host',\r\n '[attr.data-scroll]': 'needsScroll() ? \"true\" : null',\r\n }\r\n})\r\nexport class SolarisTable implements AfterContentInit, OnChanges {\r\n private readonly destroyRef: DestroyRef = inject(DestroyRef);\r\n\r\n @Input() length = 0;\r\n @Input() pageIndex = 0;\r\n @Input() pageSize = 10;\r\n @Input() rowsCount = 0;\r\n @Input() loading = false;\r\n @Input() sort: SolarisSort[] = [];\r\n @Input() selectable = false;\r\n @Input() tableDescription = '';\r\n @Input() selection: SolarisRowKey[] = [];\r\n @Input() variant: SolarisTableVariant = 'grid';\r\n @Input() emptyIconClass = 'ph ph-database';\r\n @Input() pageSizeOptions: number[] = [10, 20, 50];\r\n @Input() emptyTextKey = 'ui.solaris.table.empty';\r\n\r\n @Output() sortChange = new EventEmitter<SolarisSort[]>();\r\n @Output() pageChange = new EventEmitter<SolarisPageChange>();\r\n @Output() selectionChange = new EventEmitter<SolarisRowKey[]>();\r\n\r\n @ContentChildren(SolarisTableColumn) private readonly columnQuery!: QueryList<SolarisTableColumn>;\r\n @ViewChild('tableRoot', { static: true }) private readonly tableRoot!: ElementRef<HTMLElement>;\r\n\r\n readonly needsScroll = signal(false);\r\n readonly measuredReady = signal(false);\r\n readonly sortState = signal<SolarisSort[]>([]);\r\n private readonly measuredPx = signal<number[]>([]);\r\n readonly columns = signal<SolarisTableColumn[]>([]);\r\n private readonly selectionSig = signal<SolarisRowKey[]>([]);\r\n private readonly rowKeys = signal<Set<SolarisRowKey>>(new Set());\r\n private readonly manualPx = signal<Record<number, number>>({});\r\n private readonly selectionSetSig = computed(() => new Set(this.selectionSig()));\r\n\r\n readonly selectAllChecked = computed(() => {\r\n const keys = Array.from(this.rowKeys());\r\n if (!keys.length) return false;\r\n const sel = this.selectionSetSig();\r\n return keys.every(k => sel.has(k));\r\n });\r\n readonly selectAllIndeterminate = computed(() => {\r\n const keys = Array.from(this.rowKeys());\r\n if (!keys.length) return false;\r\n const sel = this.selectionSetSig();\r\n const any = keys.some(k => sel.has(k));\r\n return any && !this.selectAllChecked();\r\n });\r\n readonly selectedCount = computed(() => this.selectionSig().length);\r\n readonly gridTemplateColumns = computed(() => this.buildGridTemplateColumns());\r\n\r\n private rafId: number | null = null;\r\n private resizeObserver?: ResizeObserver;\r\n\r\n get rangeStart(): number {\r\n if (!this.length) return 0;\r\n return this.pageIndex * this.pageSize + 1;\r\n }\r\n\r\n get rangeEnd(): number {\r\n if (!this.length) return 0;\r\n return Math.min(this.length, (this.pageIndex + 1) * this.pageSize);\r\n }\r\n\r\n get totalPages(): number {\r\n return Math.max(1, Math.ceil((this.length || 0) / (this.pageSize || 1)));\r\n }\r\n\r\n ngAfterContentInit(): void {\r\n this.syncColumns();\r\n this.selectionSig.set(this.selection ?? []);\r\n this.sortState.set(this.sort ?? []);\r\n\r\n this.columnQuery.changes.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {\r\n this.syncColumns();\r\n this.scheduleMeasure();\r\n });\r\n\r\n this.resizeObserver = new ResizeObserver(() => this.scheduleMeasure());\r\n this.resizeObserver.observe(this.tableRoot.nativeElement);\r\n this.destroyRef.onDestroy(() => this.resizeObserver?.disconnect());\r\n\r\n const fonts = (document as any).fonts;\r\n if (fonts?.ready?.then) fonts.ready.then(() => this.scheduleMeasure());\r\n\r\n this.scheduleMeasure();\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes['sort']) this.sortState.set(this.sort ?? []);\r\n if (changes['selection']) this.selectionSig.set(this.selection ?? []);\r\n\r\n if (changes['variant'] || changes['rowsCount'] || changes['pageIndex'] || changes['pageSize'] || changes['loading']) {\r\n this.scheduleMeasure();\r\n }\r\n }\r\n\r\n private syncColumns(): void {\r\n this.columns.set(this.columnQuery?.toArray() ?? []);\r\n }\r\n\r\n private scheduleMeasure(): void {\r\n if (this.loading) return;\r\n\r\n if (this.rafId != null) cancelAnimationFrame(this.rafId);\r\n this.rafId = requestAnimationFrame(() => {\r\n this.rafId = null;\r\n this.measureColumns();\r\n });\r\n }\r\n\r\n private measureColumns(): void {\r\n const root = this.tableRoot?.nativeElement;\r\n if (!root) return;\r\n\r\n const cols = this.columns();\r\n if (!cols.length) return;\r\n\r\n const isGrid = this.variant === 'grid';\r\n const borderPx = isGrid ? 2 : 0;\r\n const safetyPx = isGrid ? 2 : 0;\r\n const perColOverhead = borderPx + safetyPx;\r\n\r\n const widths: number[] = [];\r\n\r\n for (let i = 0; i < cols.length; i++) {\r\n const col = cols[i];\r\n\r\n if (col.width) { widths[i] = -1; continue; }\r\n\r\n const manual = this.manualPx()[i];\r\n if (manual != null) { widths[i] = manual; continue; }\r\n\r\n const headerCell = root.querySelector<HTMLElement>(`.solaris-table__row--header [data-col-idx=\"${i}\"]`);\r\n const bodyCells = Array.from(root.querySelectorAll<HTMLElement>(`.solaris-table__body [data-col-idx=\"${i}\"]`));\r\n\r\n const headerW = headerCell ? this.measureHeaderCellWidth(headerCell) : 0;\r\n const bodyW = this.measureBodyCellsWidth(bodyCells);\r\n\r\n const cap = this.toPx(col.maxWidth ?? '18rem', root);\r\n const ideal = Math.max(headerW, bodyW);\r\n const withOverhead = ideal + perColOverhead;\r\n\r\n const min = col.minWidth ? this.toPx(col.minWidth, root) : 40;\r\n\r\n widths[i] = Math.max(min, Math.min(withOverhead, cap));\r\n }\r\n\r\n this.measuredPx.set(widths);\r\n this.measuredReady.set(true);\r\n this.updateScrollFlag();\r\n }\r\n\r\n private measureHeaderCellWidth(cell: HTMLElement): number {\r\n const root = this.tableRoot?.nativeElement;\r\n if (!root) return 0;\r\n\r\n const clone = cell.cloneNode(true) as HTMLElement;\r\n\r\n clone.style.position = 'absolute';\r\n clone.style.left = '-99999px';\r\n clone.style.top = '0';\r\n clone.style.visibility = 'hidden';\r\n clone.style.pointerEvents = 'none';\r\n clone.style.width = 'max-content';\r\n clone.style.maxWidth = 'none';\r\n\r\n const resizer = clone.querySelector<HTMLElement>('.solaris-table__col-resizer');\r\n if (resizer) resizer.style.display = 'none';\r\n\r\n const headerContent = clone.querySelector<HTMLElement>('.solaris-table__header-content');\r\n if (headerContent) {\r\n headerContent.style.width = 'max-content';\r\n headerContent.style.justifyContent = 'flex-start';\r\n }\r\n\r\n const left = clone.querySelector<HTMLElement>('.solaris-table__header-left');\r\n if (left) {\r\n left.style.overflow = 'visible';\r\n left.style.maxWidth = 'none';\r\n left.style.minWidth = '0';\r\n }\r\n\r\n const text = clone.querySelector<HTMLElement>('.solaris-table__header-text');\r\n if (text) {\r\n text.style.maxWidth = 'none';\r\n text.style.overflow = 'visible';\r\n text.style.textOverflow = 'clip';\r\n text.style.whiteSpace = 'nowrap';\r\n text.style.display = 'inline-block';\r\n }\r\n\r\n const sortBtn = clone.querySelector<HTMLElement>('.solaris-table__sort-btn');\r\n if (sortBtn) sortBtn.style.width = 'max-content';\r\n\r\n root.appendChild(clone);\r\n const w = clone.getBoundingClientRect().width;\r\n clone.remove();\r\n\r\n return Math.ceil(w);\r\n }\r\n\r\n private measureBodyCellsWidth(cells: HTMLElement[]): number {\r\n let max = 0;\r\n for (const cell of cells) max = Math.max(max, this.measureBodyCellWidth(cell));\r\n return max;\r\n }\r\n\r\n private measureBodyCellWidth(cell: HTMLElement): number {\r\n const style = getComputedStyle(cell);\r\n const pad = Number.parseFloat(style.paddingLeft || '0') + Number.parseFloat(style.paddingRight || '0');\r\n\r\n const prefix = cell.querySelector<HTMLElement>('.solaris-row__select-prefix');\r\n const content = cell.querySelector<HTMLElement>('.solaris-row__content');\r\n\r\n const prefixW = prefix?.scrollWidth ?? 0;\r\n const contentW = content?.scrollWidth ?? cell.scrollWidth;\r\n\r\n const gap = prefix ? 12 : 0;\r\n return pad + prefixW + gap + contentW;\r\n }\r\n\r\n private toPx(value: string, base: HTMLElement): number {\r\n const v = value.trim();\r\n if (v.endsWith('px')) return Number.parseFloat(v);\r\n if (v.endsWith('rem')) return Number.parseFloat(v) * Number.parseFloat(getComputedStyle(document.documentElement).fontSize);\r\n if (v.endsWith('em')) return Number.parseFloat(v) * Number.parseFloat(getComputedStyle(base).fontSize);\r\n const n = Number.parseFloat(v);\r\n return Number.isFinite(n) ? n : 280;\r\n }\r\n\r\n private updateScrollFlag(): void {\r\n const root = this.tableRoot?.nativeElement;\r\n if (!root) return;\r\n\r\n requestAnimationFrame(() => {\r\n const needs = root.scrollWidth > root.clientWidth + 1;\r\n this.needsScroll.set(needs);\r\n });\r\n }\r\n\r\n private clamp(n: number, min: number, max: number): number {\r\n return Math.max(min, Math.min(max, n));\r\n }\r\n\r\n public clearManualWidth(i: number): void {\r\n const next = { ...this.manualPx() };\r\n delete next[i];\r\n this.manualPx.set(next);\r\n this.scheduleMeasure();\r\n }\r\n\r\n public onResizeStart(ev: PointerEvent, i: number): void {\r\n ev.preventDefault();\r\n ev.stopPropagation();\r\n\r\n const root = this.tableRoot?.nativeElement;\r\n if (!root) return;\r\n\r\n const headerCell = this.getHeaderCell(i);\r\n if (!headerCell) return;\r\n\r\n const cols = this.columns();\r\n const col = cols[i];\r\n if (!col || col.width || !col.resizable) return;\r\n\r\n const startX = ev.clientX;\r\n const startW = this.manualPx()[i] ?? Math.round(headerCell.getBoundingClientRect().width);\r\n\r\n const min = col.minWidth ? this.toPx(col.minWidth, root) : 40;\r\n const hardMax = col.maxWidth ? this.toPx(col.maxWidth, root) : 9999;\r\n const maxSafe = this.computeResizeMax(i, min, hardMax, root);\r\n\r\n root.classList.add('is-resizing');\r\n (ev.target as HTMLElement).setPointerCapture?.(ev.pointerId);\r\n\r\n const onMove = (e: PointerEvent) => {\r\n const dx = e.clientX - startX;\r\n const nextW = this.clamp(Math.round(startW + dx), min, maxSafe);\r\n const cur = this.manualPx();\r\n if (cur[i] === nextW) return;\r\n this.manualPx.set({ ...cur, [i]: nextW });\r\n };\r\n\r\n const cleanup = () => {\r\n root.classList.remove('is-resizing');\r\n globalThis.removeEventListener('pointermove', onMove);\r\n globalThis.removeEventListener('pointerup', cleanup);\r\n globalThis.removeEventListener('pointercancel', cleanup);\r\n };\r\n\r\n globalThis.addEventListener('pointermove', onMove);\r\n globalThis.addEventListener('pointerup', cleanup);\r\n globalThis.addEventListener('pointercancel', cleanup);\r\n }\r\n\r\n private getHeaderCell(i: number): HTMLElement | null {\r\n const root = this.tableRoot?.nativeElement;\r\n if (!root) return null;\r\n return root.querySelector<HTMLElement>(`.solaris-table__row--header [data-col-idx=\"${i}\"]`);\r\n }\r\n\r\n private pxMinWidth(c: SolarisTableColumn, root: HTMLElement): number {\r\n return c.minWidth ? this.toPx(c.minWidth, root) : 0;\r\n }\r\n\r\n private pxFixedWidth(c: SolarisTableColumn, root: HTMLElement): number | null {\r\n if (!c.width) return null;\r\n const w = c.width.trim();\r\n if (w.endsWith('px') || w.endsWith('rem') || w.endsWith('em')) return this.toPx(w, root);\r\n const n = Number.parseFloat(w);\r\n return Number.isFinite(n) ? n : null;\r\n }\r\n\r\n private reservedWidthExcept(i: number, root: HTMLElement): number {\r\n const cols = this.columns();\r\n const manualMap = this.manualPx();\r\n\r\n let reserved = 0;\r\n\r\n for (let j = 0; j < cols.length; j++) {\r\n if (j === i) continue;\r\n const c = cols[j];\r\n\r\n if (c.width) {\r\n const px = this.pxFixedWidth(c, root);\r\n if (px != null) { reserved += px; continue; }\r\n\r\n const cell = this.getHeaderCell(j);\r\n reserved += Math.round(cell?.getBoundingClientRect().width ?? 48);\r\n continue;\r\n }\r\n\r\n const manual = manualMap[j];\r\n if (manual != null) { reserved += manual; continue; }\r\n\r\n if (c.grow) { reserved += this.pxMinWidth(c, root); continue; }\r\n\r\n reserved += 48;\r\n }\r\n\r\n return reserved;\r\n }\r\n\r\n public readField(row: any, path?: string): any {\r\n if (!path) return '';\r\n const parts = path.split('.');\r\n let cur = row;\r\n\r\n for (const p of parts) {\r\n if (cur == null) return '';\r\n cur = cur[p];\r\n }\r\n\r\n return cur ?? '';\r\n }\r\n\r\n private computeResizeMax(i: number, min: number, hardMax: number, root: HTMLElement): number {\r\n const available = root.clientWidth;\r\n const reserved = this.reservedWidthExcept(i, root);\r\n\r\n const safety = 8;\r\n const fitMax = Math.max(min, Math.floor(available - reserved - safety));\r\n\r\n return Math.max(min, Math.min(hardMax, fitMax));\r\n }\r\n\r\n public registerRowKey(key: SolarisRowKey): void {\r\n const next = new Set(this.rowKeys());\r\n next.add(key);\r\n this.rowKeys.set(next);\r\n }\r\n\r\n public unregisterRowKey(key: SolarisRowKey): void {\r\n const next = new Set(this.rowKeys());\r\n next.delete(key);\r\n this.rowKeys.set(next);\r\n }\r\n\r\n public onToggleSelectAll(checked: boolean): void {\r\n const keys = Array.from(this.rowKeys());\r\n const sel = new Set(this.selectionSig());\r\n\r\n if (checked) keys.forEach(k => sel.add(k));\r\n else keys.forEach(k => sel.delete(k));\r\n\r\n const out = Array.from(sel);\r\n this.selectionSig.set(out);\r\n this.selectionChange.emit(out);\r\n }\r\n\r\n public toggleRow(key: SolarisRowKey, checked: boolean): void {\r\n const sel = new Set(this.selectionSig());\r\n if (checked) sel.add(key);\r\n else sel.delete(key);\r\n\r\n const out = Array.from(sel);\r\n this.selectionSig.set(out);\r\n this.selectionChange.emit(out);\r\n }\r\n\r\n public isSelected(key: SolarisRowKey): boolean {\r\n return this.selectionSetSig().has(key);\r\n }\r\n\r\n public getSortFor(col: SolarisTableColumn): SolarisSort | undefined {\r\n const key = col.sortKey ?? col.field;\r\n if (!key) return undefined;\r\n return this.sortState().find(s => s.key === key);\r\n }\r\n\r\n public onHeaderSortClick(ev: MouseEvent, col: SolarisTableColumn): void {\r\n ev.stopPropagation();\r\n\r\n if (!col.sortable) return;\r\n\r\n const key = col.sortKey ?? col.field;\r\n if (!key) return;\r\n\r\n const multi = ev.shiftKey;\r\n let next = [...this.sortState()];\r\n\r\n if (!multi) next = next.filter(s => s.key === key);\r\n\r\n const idx = next.findIndex(s => s.key === key);\r\n if (idx === -1) next.push({ key, direction: 'asc', order: next.length + 1 });\r\n else {\r\n const cur = next[idx];\r\n if (cur.direction === 'asc') next[idx] = { ...cur, direction: 'desc' };\r\n else next.splice(idx, 1);\r\n }\r\n\r\n next = next.map((s, k) => ({ ...s, order: k + 1 }));\r\n this.sortState.set(next);\r\n this.sortChange.emit(next);\r\n }\r\n\r\n public ariaSort(col: SolarisTableColumn): 'none' | 'ascending' | 'descending' {\r\n const s = this.getSortFor(col);\r\n if (!s) return 'none';\r\n return s.direction === 'asc' ? 'ascending' : 'descending';\r\n }\r\n\r\n public firstPage(): void { this.pageChange.emit({ pageIndex: 0, pageSize: this.pageSize }); }\r\n public prevPage(): void { this.pageChange.emit({ pageIndex: Math.max(0, this.pageIndex - 1), pageSize: this.pageSize }); }\r\n public nextPage(): void { this.pageChange.emit({ pageIndex: Math.min(this.totalPages - 1, this.pageIndex + 1), pageSize: this.pageSize }); }\r\n public lastPage(): void { this.pageChange.emit({ pageIndex: this.totalPages - 1, pageSize: this.pageSize }); }\r\n public changePageSize(size: number): void { this.pageChange.emit({ pageIndex: 0, pageSize: size }); }\r\n\r\n private buildGridTemplateColumns(): string {\r\n const cols = this.columns();\r\n const measured = this.measuredPx();\r\n const root = this.tableRoot?.nativeElement;\r\n\r\n const minPx = (c: SolarisTableColumn) => root && c.minWidth ? this.toPx(c.minWidth, root) : 0;\r\n const fixedWidthPx = (c: SolarisTableColumn): number | null => {\r\n if (!root || !c.width) return null;\r\n const w = c.width.trim();\r\n if (w.endsWith('px') || w.endsWith('rem') || w.endsWith('em')) return this.toPx(w, root);\r\n const n = Number.parseFloat(w);\r\n return Number.isFinite(n) ? n : null;\r\n };\r\n\r\n\r\n if (!measured.length || measured.length !== cols.length) {\r\n return cols.map((c) => {\r\n if (c.width) return c.width;\r\n if (c.grow) return `minmax(${minPx(c)}px, 1fr)`;\r\n if (root && c.maxWidth) {\r\n const cap = this.toPx(c.maxWidth, root);\r\n return `minmax(0px, ${cap}px)`;\r\n }\r\n return 'minmax(0px, 1fr)';\r\n }).join(' ');\r\n }\r\n\r\n const available = root?.clientWidth ?? 0;\r\n\r\n const rawPx: number[] = [];\r\n const growMinSum = cols.reduce((acc, c) => acc + (c.grow ? minPx(c) : 0), 0);\r\n\r\n let fixedSum = 0;\r\n\r\n for (let i = 0; i < cols.length; i++) {\r\n const c = cols[i];\r\n\r\n if (c.width) {\r\n const px = fixedWidthPx(c);\r\n rawPx[i] = px ?? 0;\r\n fixedSum += px ?? 0;\r\n continue;\r\n }\r\n\r\n if (c.grow) {\r\n rawPx[i] = 0;\r\n continue;\r\n }\r\n\r\n const manual = this.manualPx()[i];\r\n const px = manual ?? (measured[i] > 0 ? measured[i] : 180);\r\n rawPx[i] = px;\r\n fixedSum += px;\r\n }\r\n\r\n if (!available) {\r\n return cols.map((c, i) => {\r\n if (c.width) return c.width;\r\n if (c.grow) return `minmax(${minPx(c)}px, 1fr)`;\r\n return `${rawPx[i]}px`;\r\n }).join(' ');\r\n }\r\n\r\n const fixedBudget = Math.max(0, available - growMinSum);\r\n const scale = fixedSum > fixedBudget && fixedSum > 0 ? (fixedBudget / fixedSum) : 1;\r\n\r\n return cols.map((c, i) => {\r\n if (c.width) {\r\n return c.width;\r\n }\r\n\r\n if (c.grow) {\r\n const min = minPx(c);\r\n return `minmax(${min}px, 1fr)`;\r\n }\r\n\r\n const px = Math.max(48, Math.floor(rawPx[i] * scale));\r\n return `${px}px`;\r\n }).join(' ');\r\n }\r\n}\r\n","<ng-content select=\"solaris-table-filters\"></ng-content>\r\n\r\n<div class=\"solaris-table\" [class.solaris-table--grid]=\"variant === 'grid'\"\r\n [class.solaris-table--zebra]=\"variant === 'zebra'\">\r\n <div #tableRoot class=\"solaris-table__inner\" role=\"table\" [attr.aria-rowcount]=\"rowsCount\">\r\n <div class=\"solaris-table__header\" role=\"rowgroup\">\r\n <div class=\"solaris-table__row solaris-table__row--header\" role=\"row\" [style.gridTemplateColumns]=\"gridTemplateColumns()\">\r\n @for (col of columns(); track col.id; let i = $index) {\r\n <div class=\"solaris-table__cell solaris-table__cell--header\" role=\"columnheader\" [attr.data-col-idx]=\"i\"\r\n [attr.aria-sort]=\"ariaSort(col)\" [style.--solaris-col-max]=\"col.maxWidth || null\">\r\n\r\n <div class=\"solaris-table__header-content\">\r\n <span class=\"solaris-table__header-left\">\r\n @if (selectable && i === 0) {\r\n <span class=\"solaris-table__select-prefix\" (click)=\"$event.stopPropagation()\">\r\n <solaris-checkbox variant=\"square\" color=\"primary\" size=\"sm\" [ngModel]=\"selectAllChecked()\"\r\n (ngModelChange)=\"onToggleSelectAll($event)\" [indeterminate]=\"selectAllIndeterminate()\">\r\n </solaris-checkbox>\r\n </span>\r\n }\r\n\r\n @if (col.headerIconClass) { <i [class]=\"col.headerIconClass\"></i> }\r\n\r\n @if (col.headerDef?.template) {\r\n <ng-container [ngTemplateOutlet]=\"col.headerDef?.template\"></ng-container>\r\n } @else {\r\n @if (col.headerKey) {\r\n <span class=\"solaris-table__header-text\">{{ col.headerKey | translate }}</span>\r\n } @else {\r\n <span class=\"solaris-table__header-text\">{{ col.header }}</span>\r\n }\r\n }\r\n </span>\r\n\r\n @if (col.sortable) {\r\n <button type=\"button\" class=\"solaris-table__sort-btn\" (click)=\"onHeaderSortClick($event, col)\">\r\n <span class=\"solaris-table__sort\">\r\n <i class=\"ph ph-arrow-up\" [class.is-active]=\"getSortFor(col)?.direction === 'asc'\"></i>\r\n <i class=\"ph ph-arrow-down\" [class.is-active]=\"getSortFor(col)?.direction === 'desc'\"></i>\r\n\r\n @if (getSortFor(col)?.order && sortState().length > 1) {\r\n <span class=\"solaris-table__sort-order\">{{ getSortFor(col)!.order }}</span>\r\n }\r\n </span>\r\n </button>\r\n }\r\n </div>\r\n\r\n @if (col.resizable && !col.width) {\r\n <span class=\"solaris-table__col-resizer\" role=\"separator\" aria-orientation=\"vertical\"\r\n (pointerdown)=\"onResizeStart($event, i)\" (dblclick)=\"clearManualWidth(i)\"\r\n (click)=\"$event.stopPropagation()\">\r\n </span>\r\n }\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n\r\n <div class=\"solaris-table__body\" role=\"rowgroup\">\r\n @if (loading) {\r\n <solaris-table-skeleton [rows]=\"pageSize\" [columns]=\"columns().length\" [selectable]=\"selectable\"\r\n [gridTemplateColumns]=\"gridTemplateColumns()\">\r\n </solaris-table-skeleton>\r\n } @else {\r\n @if (rowsCount === 0) {\r\n <div class=\"solaris-table__empty\" role=\"row\">\r\n <i [class]=\"emptyIconClass\"></i>\r\n <div class=\"solaris-table__empty-text\">{{ 'ui.solaris.tables.empty' | translate }}</div>\r\n </div>\r\n } @else {\r\n <ng-content select=\"solaris-row\"></ng-content>\r\n }\r\n }\r\n </div>\r\n\r\n <div class=\"solaris-table__footer\" role=\"rowgroup\">\r\n <div class=\"solaris-table__footer-left\">\r\n @if (selectedCount() > 0) {\r\n <div class=\"solaris-table__selected\">\r\n {{ selectedCount() }} {{ 'ui.solaris.tables.selection.selected' | translate }}\r\n </div>\r\n } @else if (tableDescription != null) {\r\n <div class=\"solaris-table__description\">\r\n {{ tableDescription }}\r\n </div>\r\n }\r\n </div>\r\n\r\n <div class=\"solaris-table__footer-right\">\r\n <div class=\"solaris-table__rows-per-page\">\r\n <span>{{ 'ui.solaris.tables.pagination.rowsPerPage' | translate }}:</span>\r\n <select [ngModel]=\"pageSize\" (ngModelChange)=\"changePageSize($event)\">\r\n @for (opt of pageSizeOptions; track opt) {\r\n <option [ngValue]=\"opt\">{{ opt }}</option>\r\n }\r\n </select>\r\n </div>\r\n\r\n <div class=\"solaris-table__range\">\r\n {{ rangeStart }}–{{ rangeEnd }} {{ 'ui.solaris.common.of' | translate }} {{ length }}\r\n </div>\r\n\r\n <div class=\"solaris-table__pager\">\r\n <button type=\"button\" (click)=\"firstPage()\" [disabled]=\"pageIndex === 0\">\r\n <i class=\"ph ph-caret-line-left\"></i>\r\n </button>\r\n <button type=\"button\" (click)=\"prevPage()\" [disabled]=\"pageIndex === 0\">\r\n <i class=\"ph ph-caret-left\"></i>\r\n </button>\r\n <button type=\"button\" (click)=\"nextPage()\" [disabled]=\"pageIndex >= totalPages - 1\">\r\n <i class=\"ph ph-caret-right\"></i>\r\n </button>\r\n <button type=\"button\" (click)=\"lastPage()\" [disabled]=\"pageIndex >= totalPages - 1\">\r\n <i class=\"ph ph-caret-line-right\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n","import { ChangeDetectionStrategy, Component, DestroyRef, Host, Input, OnInit, Optional, inject } from '@angular/core';\r\nimport { NgTemplateOutlet } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\n\r\nimport { SolarisCheckbox } from '../../../../actions/checkbox/component/checkbox';\r\nimport { SolarisTranslationPipe } from '@educarehq/solaris-services';\r\nimport { SolarisRowKey } from '../../model/table/table.types';\r\nimport { SolarisTable } from '../table/table';\r\n\r\n@Component({\r\n selector: 'solaris-row',\r\n standalone: true,\r\n imports: [\r\n FormsModule,\r\n SolarisCheckbox,\r\n SolarisTranslationPipe,\r\n NgTemplateOutlet\r\n ],\r\n templateUrl: './table-row.html',\r\n styleUrls: ['./table-row.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: { class: 'solaris-row-host' },\r\n})\r\nexport class SolarisRowComponent implements OnInit {\r\n private readonly destroyRef = inject(DestroyRef);\r\n\r\n @Input() rowKey!: SolarisRowKey;\r\n @Input({ required: true }) value!: any;\r\n\r\n\r\n constructor(@Optional() @Host() public readonly table: SolarisTable) {}\r\n\r\n ngOnInit(): void {\r\n if (!this.table) {\r\n throw new Error('<solaris-row> deve ser usado dentro de <solaris-table>.');\r\n }\r\n\r\n if (this.table.selectable && (this.rowKey === null || this.rowKey === undefined)) {\r\n throw new Error('Quando selectable=true, <solaris-row> exige [rowKey].');\r\n }\r\n\r\n if (this.table.selectable) {\r\n this.table.registerRowKey(this.rowKey);\r\n this.destroyRef.onDestroy(() => this.table.unregisterRowKey(this.rowKey));\r\n }\r\n }\r\n\r\n get isSelected(): boolean {\r\n return this.table.isSelected(this.rowKey);\r\n }\r\n}\r\n","<div class=\"solaris-row\" role=\"row\" [attr.aria-selected]=\"isSelected\" [class.is-selected]=\"isSelected\"\r\n [style.gridTemplateColumns]=\"table.gridTemplateColumns()\">\r\n\r\n @for (col of table.columns(); track col.id; let i = $index) {\r\n <div class=\"solaris-row__cell\" role=\"cell\" [attr.data-col-idx]=\"i\" [class.align-end]=\"col.align === 'end'\"\r\n [class.align-center]=\"col.align === 'center'\" [style.--solaris-col-max]=\"col.maxWidth || null\">\r\n\r\n @if (table.selectable && i === 0) {\r\n <span class=\"solaris-row__select-prefix\">\r\n <solaris-checkbox variant=\"square\" color=\"primary\" size=\"sm\" [ngModel]=\"isSelected\"\r\n (ngModelChange)=\"table.toggleRow(rowKey, $event)\" [attr.aria-label]=\"'ui.solaris.tables.aria.selectRow' | translate\"/>\r\n </span>\r\n }\r\n\r\n <span class=\"solaris-row__label\">\r\n @if (col.headerKey) { {{ col.headerKey | translate }} } @else { {{ col.header }} }\r\n </span>\r\n\r\n <span class=\"solaris-row__content\">\r\n @if (col.cellDef?.template) {\r\n <ng-container [ngTemplateOutlet]=\"col.cellDef!.template\"\r\n [ngTemplateOutletContext]=\"{ $implicit: value, row: value, col: col }\"/>\r\n } @else {\r\n {{ table.readField(value, col.field) }}\r\n }\r\n </span>\r\n </div>\r\n }\r\n</div>\r\n","import { Directive } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[solaris-header]',\r\n standalone: true,\r\n})\r\nexport class SolarisHeaderDirective {}\r\n","import { Directive } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[solaris-footer]',\r\n standalone: true,\r\n})\r\nexport class SolarisFooterDirective {}\r\n","import { Directive } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[solaris-body]',\r\n standalone: true,\r\n})\r\nexport class SolarisBodyDirective {}\r\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\r\nimport { NgClass } from '@angular/common';\r\n\r\nimport { SolarisDivider } from '../../divider/component/divider';\r\n\r\n@Component({\r\n selector: 'solaris-page',\r\n standalone: true,\r\n imports: [NgClass, SolarisDivider],\r\n templateUrl: './page.html',\r\n styleUrls: ['./page.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: {\r\n class: 'solaris-page-host',\r\n },\r\n})\r\nexport class SolarisPage {\r\n @Input() stickyHeader = false;\r\n @Input() container: 'contained' | 'fluid' = 'contained';\r\n}\r\n","<div class=\"solaris-page\" [ngClass]=\"['container-' + container]\">\r\n <header class=\"solaris-page__header\" [ngClass]=\"{ 'is-sticky': stickyHeader }\">\r\n <ng-content select=\"[solaris-header]\"></ng-content>\r\n @if (stickyHeader) { <solaris-divider class=\"solaris-page__header-divider\"/> }\r\n </header>\r\n\r\n <main class=\"solaris-page__body\">\r\n <ng-content select=\"[solaris-body]\"></ng-content>\r\n </main>\r\n\r\n <footer class=\"solaris-page__footer\">\r\n <solaris-divider class=\"solaris-page__footer-divider\"/>\r\n\r\n <div class=\"solaris-page__footer-content\">\r\n <ng-content select=\"[solaris-footer]\"></ng-content>\r\n </div>\r\n </footer>\r\n</div>\r\n","import { Directive } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[solaris-page-header-description]',\r\n standalone: true,\r\n})\r\nexport class SolarisPageHeaderDescriptionDirective {}\r\n","import { Directive } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[solaris-page-header-breadcrumb]',\r\n standalone: true,\r\n})\r\nexport class SolarisPageHeaderBreadcrumbDirective {}\r\n","import { Directive } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[solaris-page-header-title]',\r\n standalone: true,\r\n})\r\nexport class SolarisPageHeaderTitleDirective {}\r\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\r\nimport { NgClass } from '@angular/common';\r\n\r\n@Component({\r\n selector: 'solaris-page-header-title',\r\n standalone: true,\r\n imports: [NgClass],\r\n templateUrl: './page-header-title.html',\r\n styleUrl: './page-header-title.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class SolarisPageHeaderTitle {\r\n @Input() title = '';\r\n @Input() overline?: string;\r\n @Input() description?: string;\r\n @Input() size: 'md' | 'lg' = 'lg';\r\n}\r\n","<div class=\"solaris-page-title\" [ngClass]=\"['size-' + size]\">\r\n @if (overline) {\r\n <div class=\"solaris-page-title__overline\">{{ overline }}</div>\r\n }\r\n\r\n <h1 class=\"solaris-page-title__title\">{{ title }}</h1>\r\n\r\n @if (description) {\r\n <p class=\"solaris-page-title__description\">{{ description }}</p>\r\n }\r\n</div>\r\n","import { Directive } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[solaris-page-header-actions]',\r\n standalone: true,\r\n})\r\nexport class SolarisPageHeaderActionsDirective {}\r\n","import { ChangeDetectionStrategy, Component, ContentChild, Input } from '@angular/core';\r\nimport { NgClass } from '@angular/common';\r\n\r\nimport { SolarisPageHeaderDescriptionDirective } from '../directives/solaris-header-description.directive';\r\nimport { SolarisPageHeaderBreadcrumbDirective } from '../directives/solaris-header-breadcrumb.directive';\r\nimport { SolarisPageHeaderActionsDirective } from '../directives/solaris-header-actions.directive';\r\nimport { SolarisPageHeaderTitleDirective } from '../directives/solaris-header-title.directive';\r\n\r\n\r\n@Component({\r\n selector: 'solaris-page-header',\r\n standalone: true,\r\n imports: [NgClass],\r\n templateUrl: './page-header.html',\r\n styleUrl: './page-header.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class SolarisPageHeader {\r\n @Input() layout: 'split' | 'stacked' = 'split';\r\n @Input() density: 'sm' | 'md' | 'lg' = 'md';\r\n\r\n @ContentChild(SolarisPageHeaderTitleDirective) titleSlot?: SolarisPageHeaderTitleDirective;\r\n @ContentChild(SolarisPageHeaderActionsDirective) actionsSlot?: SolarisPageHeaderActionsDirective;\r\n @ContentChild(SolarisPageHeaderBreadcrumbDirective) breadcrumbSlot?: SolarisPageHeaderBreadcrumbDirective;\r\n @ContentChild(SolarisPageHeaderDescriptionDirective) descriptionSlot?: SolarisPageHeaderDescriptionDirective;\r\n}\r\n","<header class=\"solaris-page-header\" [ngClass]=\"['layout-' + layout, 'density-' + density]\">\r\n <div class=\"solaris-page-header__left\">\r\n <div class=\"solaris-page-header__breadcrumb\">\r\n <ng-content select=\"[solaris-page-header-breadcrumb]\" />\r\n </div>\r\n\r\n <div class=\"solaris-page-header__titles\">\r\n <div class=\"solaris-page-header__title-row\">\r\n <h1 class=\"solaris-page-header__title\">\r\n <span class=\"solaris-page-header__title-slot\">\r\n <ng-content select=\"[solaris-page-header-title]\" />\r\n </span>\r\n\r\n <span class=\"solaris-page-header__title-meta\">\r\n <ng-content select=\"[solaris-page-header-title-meta]\" />\r\n </span>\r\n </h1>\r\n\r\n <div class=\"solaris-page-header__title-meta\">\r\n <ng-content select=\"[solaris-page-header-title-meta]\" />\r\n </div>\r\n </div>\r\n\r\n <p class=\"solaris-page-header__description\">\r\n <ng-content select=\"[solaris-page-header-description]\" />\r\n </p>\r\n </div>\r\n </div>\r\n\r\n <div class=\"solaris-page-header__actions\">\r\n <ng-content select=\"[solaris-page-header-actions]\" />\r\n </div>\r\n</header>\r\n","import { Directive, HostBinding, Input } from '@angular/core';\r\n\r\nimport { SolarisRadiusInput } from '../models/button.type';\r\n\r\nfunction resolveRadius(v: SolarisRadiusInput): string {\r\n const s = String(v).trim();\r\n switch (s) {\r\n case 'none':\r\n return '0';\r\n case 'sm':\r\n return 'var(--solaris-radius-sm)';\r\n case 'md':\r\n return 'var(--solaris-radius-md, var(--solaris-radius-sm))';\r\n case 'lg':\r\n return 'var(--solaris-radius-lg, var(--solaris-radius-md, var(--solaris-radius-sm)))';\r\n case 'full':\r\n return 'var(--solaris-radius-full)';\r\n default:\r\n return s;\r\n }\r\n}\r\n\r\n@Directive({\r\n selector: '[solaris-button-group]',\r\n standalone: true,\r\n})\r\nexport class ButtonGroupDirective {\r\n private _radius: SolarisRadiusInput | null = null;\r\n\r\n @Input() set radius(v: SolarisRadiusInput | null | undefined) {\r\n this._radius = v == null || String(v).trim() === '' ? null : (v);\r\n }\r\n\r\n @HostBinding('attr.solaris-button-group') readonly attr = '';\r\n @HostBinding('style.--solaris-button-group-radius') get groupRadius() {\r\n return this._radius ? resolveRadius(this._radius) : null;\r\n }\r\n}\r\n","import { InjectionToken, Signal } from '@angular/core';\r\n\r\nimport { RadioCompareWith } from '../model/radio.type';\r\nimport { SolarisRadio } from '../component/radio';\r\n\r\nexport interface SolarisRadioGroupApi {\r\n readonly name: Signal<string>;\r\n readonly disabled: Signal<boolean>;\r\n readonly compareWith: Signal<RadioCompareWith>;\r\n\r\n notifyTouched(): void;\r\n select(radio: SolarisRadio): void;\r\n isSelected(value: unknown): boolean;\r\n tabIndexFor(radio: SolarisRadio): number;\r\n handleKeydown(event: KeyboardEvent, current: SolarisRadio): void;\r\n}\r\n\r\nexport const SOLARIS_RADIO_GROUP = new InjectionToken<SolarisRadioGroupApi>('SOLARIS_RADIO_GROUP');\r\n","import { ChangeDetectionStrategy, Component, ElementRef, ViewChild, computed,\r\n effect, inject, input, output, signal, forwardRef } from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\n\r\nimport { SolarisSizePreset, SolarisColorPreset } from '../../../common/model/common-configurations.type';\r\nimport { RadioAppearance, RadioColorInput, RadioVariant } from '../model/radio.type';\r\nimport { SOLARIS_RADIO_GROUP } from '../token/radio-group.token';\r\nimport { uniqueId } from '../../../common/helper/unique-id';\r\n\r\nconst PRESET_COLORS = new Set<SolarisColorPreset>([\r\n 'primary',\r\n 'success',\r\n 'warning',\r\n 'error',\r\n 'info'\r\n]);\r\n\r\n@Component({\r\n selector: 'solaris-radio',\r\n standalone: true,\r\n templateUrl: './radio.html',\r\n styleUrls: ['./radio.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => SolarisRadio),\r\n multi: true,\r\n },\r\n ],\r\n host: {\r\n class: 'solaris-radio-host',\r\n '[attr.data-size]': 'size()',\r\n '[attr.data-color]': 'colorKey()',\r\n '[attr.data-variant]': 'variant()',\r\n '[attr.data-appearance]': 'appearance()',\r\n '[attr.data-disabled]': 'disabled() ? \"true\" : null',\r\n '[attr.data-checked]': 'checked() ? \"true\" : null',\r\n '[style.--solaris-radio-custom]': 'customAccent()',\r\n },\r\n})\r\nexport class SolarisRadio implements ControlValueAccessor {\r\n readonly ariaLabel = input<string | null>(null, { alias: 'aria-label' });\r\n readonly inputId = input<string | null>(null, { alias: 'id' });\r\n readonly inputName = input<string | null>(null, { alias: 'name' });\r\n readonly size = input<SolarisSizePreset>('md');\r\n readonly variant = input<RadioVariant>('dot');\r\n readonly appearance = input<RadioAppearance>('solid');\r\n readonly color = input<RadioColorInput>('primary');\r\n readonly value = input<unknown>(true);\r\n readonly checkedInput = input<boolean>(false, { alias: 'checked' });\r\n readonly disabledInput = input<boolean>(false, { alias: 'disabled' });\r\n\r\n readonly checkedChange = output<boolean>();\r\n\r\n @ViewChild('native', { static: true })\r\n private readonly native?: ElementRef<HTMLInputElement>;\r\n\r\n private readonly group = inject(SOLARIS_RADIO_GROUP, { optional: true });\r\n private readonly autoId = uniqueId('solaris-radio');\r\n private readonly autoName = uniqueId('solaris-radio-name');\r\n\r\n private readonly localChecked = signal(false);\r\n private readonly cvaDisabled = signal(false);\r\n\r\n readonly id = computed(() => this.inputId() ?? this.autoId);\r\n readonly name = computed(() => this.group?.name() ?? this.inputName() ?? this.autoName);\r\n\r\n readonly disabled = computed(() => {\r\n return !!this.group?.disabled() || this.disabledInput() || this.cvaDisabled();\r\n });\r\n\r\n readonly checked = computed(() => {\r\n if (this.group) return this.group.isSelected(this.value());\r\n return this.localChecked();\r\n });\r\n\r\n readonly tabIndex = computed(() => {\r\n if (this.group) return this.group.tabIndexFor(this);\r\n return this.disabled() ? -1 : 0;\r\n });\r\n\r\n readonly customAccent = computed(() => {\r\n if (this.colorKey() !== 'custom') return null;\r\n const raw = String(this.color() ?? '').trim();\r\n return !raw || raw === 'custom' ? null : raw;\r\n });\r\n\r\n readonly colorKey = computed(() => {\r\n const raw = String(this.color() ?? '').trim();\r\n if (!raw || raw === 'custom') return 'custom';\r\n return PRESET_COLORS.has(raw as SolarisColorPreset) ? (raw as SolarisColorPreset) : 'custom';\r\n });\r\n\r\n private onChange: (value: boolean) => void = () => {};\r\n private onTouched: () => void = () => {};\r\n\r\n constructor() {\r\n effect(() => {\r\n if (this.group) return;\r\n this.localChecked.set(this.checkedInput());\r\n });\r\n }\r\n\r\n public onNativeChange() {\r\n if (this.disabled()) return;\r\n\r\n if (this.group) {\r\n const wasChecked = this.checked();\r\n this.group.select(this);\r\n if (!wasChecked) this.checkedChange.emit(true);\r\n return;\r\n }\r\n\r\n if (this.localChecked()) {\r\n this.onTouched();\r\n return;\r\n }\r\n\r\n this.localChecked.set(true);\r\n this.onChange(true);\r\n this.checkedChange.emit(true);\r\n this.onTouched();\r\n }\r\n\r\n public onNativeKeydown(event: KeyboardEvent) {\r\n if (this.disabled()) return;\r\n\r\n if (this.group) {\r\n this.group.handleKeydown(event, this);\r\n return;\r\n }\r\n\r\n if (event.key === ' ' || event.key === 'Enter') {\r\n event.preventDefault();\r\n this.onNativeChange();\r\n }\r\n }\r\n\r\n public onBlur() {\r\n if (this.group) {\r\n this.group.notifyTouched();\r\n return;\r\n }\r\n this.onTouched();\r\n }\r\n\r\n public focus() {\r\n this.native?.nativeElement.focus();\r\n }\r\n\r\n writeValue(value: boolean | null): void {\r\n if (this.group) return;\r\n this.localChecked.set(!!value);\r\n }\r\n\r\n registerOnTouched(fn: () => void): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n setDisabledState(isDisabled: boolean): void {\r\n this.cvaDisabled.set(isDisabled);\r\n }\r\n\r\n registerOnChange(fn: (value: boolean) => void): void {\r\n this.onChange = fn;\r\n }\r\n}\r\n","<label class=\"solaris-radio\">\r\n <input #native class=\"solaris-radio__native\" type=\"radio\" [attr.id]=\"id()\" [attr.name]=\"name()\" [checked]=\"checked()\"\r\n [disabled]=\"disabled()\" [attr.aria-label]=\"ariaLabel() ?? null\" [attr.tabindex]=\"tabIndex()\"\r\n (change)=\"onNativeChange()\" (keydown)=\"onNativeKeydown($event)\" (blur)=\"onBlur()\"/>\r\n\r\n <span class=\"solaris-radio__control\" aria-hidden=\"true\">\r\n <span class=\"solaris-radio__inner\" aria-hidden=\"true\"></span>\r\n </span>\r\n\r\n <span class=\"solaris-radio__content\">\r\n <ng-content/>\r\n </span>\r\n</label>\r\n","import { AfterContentInit, ChangeDetectionStrategy, Component, ContentChildren, DestroyRef,\r\n QueryList, computed, forwardRef, inject, input, output, signal } from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\n\r\nimport { SOLARIS_RADIO_GROUP, SolarisRadioGroupApi } from '../../token/radio-group.token';\r\nimport { SolarisSizePreset } from '../../../../common/model/common-configurations.type';\r\nimport { RadioCompareWith, RadioGroupOrientation } from '../../model/radio.type';\r\nimport { uniqueId } from '../../../../common/helper/unique-id';\r\nimport { SolarisRadio } from '../../component/radio';\r\n\r\n@Component({\r\n selector: 'solaris-radio-group',\r\n standalone: true,\r\n templateUrl: './radio-group.html',\r\n styleUrls: ['./radio-group.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => SolarisRadioGroup),\r\n multi: true,\r\n },\r\n {\r\n provide: SOLARIS_RADIO_GROUP,\r\n useExisting: forwardRef(() => SolarisRadioGroup),\r\n },\r\n ],\r\n host: {\r\n class: 'solaris-radio-group-host',\r\n role: 'radiogroup',\r\n '[attr.data-orientation]': 'orientation()',\r\n '[attr.aria-disabled]': 'disabled() ? \"true\" : null',\r\n '[attr.aria-label]': 'ariaLabel() ?? null',\r\n '[attr.aria-orientation]': 'orientation()',\r\n '[style.--solaris-radio-group-gap]': 'resolvedGap()',\r\n },\r\n})\r\nexport class SolarisRadioGroup implements ControlValueAccessor, AfterContentInit, SolarisRadioGroupApi {\r\n readonly gap = input<SolarisSizePreset | string>('md');\r\n readonly compareWith = input<RadioCompareWith>(Object.is);\r\n readonly nameInput = input<string | null>(null, { alias: 'name' });\r\n readonly disabledInput = input<boolean>(false, { alias: 'disabled' });\r\n readonly orientation = input<RadioGroupOrientation>('vertical');\r\n readonly ariaLabel = input<string | null>(null, { alias: 'aria-label' });\r\n\r\n readonly valueChange = output<unknown>();\r\n\r\n @ContentChildren(forwardRef(() => SolarisRadio), { descendants: true })\r\n private readonly radiosQuery?: QueryList<SolarisRadio>;\r\n\r\n private readonly destroyRef = inject(DestroyRef);\r\n private readonly autoName = uniqueId('solaris-radio-group');\r\n private readonly cvaDisabled = signal(false);\r\n private readonly internalValue = signal<unknown>(null);\r\n private readonly radiosVersion = signal(0);\r\n\r\n readonly name = computed(() => this.nameInput() ?? this.autoName);\r\n readonly disabled = computed(() => this.disabledInput() || this.cvaDisabled());\r\n\r\n readonly resolvedGap = computed(() => {\r\n const value = String(this.gap() ?? 'md').trim();\r\n switch (value) {\r\n case 'sm':\r\n return 'var(--solaris-space-2)';\r\n case 'md':\r\n return 'var(--solaris-space-3)';\r\n case 'lg':\r\n return 'var(--solaris-space-4)';\r\n default:\r\n return value;\r\n }\r\n });\r\n\r\n private onChange: (value: unknown) => void = () => {};\r\n private onTouched: () => void = () => {};\r\n\r\n ngAfterContentInit(): void {\r\n this.bumpRadiosVersion();\r\n\r\n this.radiosQuery?.changes\r\n .pipe(takeUntilDestroyed(this.destroyRef))\r\n .subscribe(() => this.bumpRadiosVersion());\r\n }\r\n\r\n public isSelected(value: unknown): boolean {\r\n return this.compareWith()(this.internalValue(), value);\r\n }\r\n\r\n public select(radio: SolarisRadio): void {\r\n if (this.disabled() || radio.disabled()) return;\r\n\r\n const nextValue = radio.value();\r\n if (!this.isSelected(nextValue)) {\r\n this.internalValue.set(nextValue);\r\n this.onChange(nextValue);\r\n this.valueChange.emit(nextValue);\r\n }\r\n\r\n this.onTouched();\r\n this.bumpRadiosVersion();\r\n }\r\n\r\n public tabIndexFor(radio: SolarisRadio): number {\r\n this.radiosVersion();\r\n\r\n if (this.disabled() || radio.disabled()) return -1;\r\n\r\n const enabled = this.enabledRadios();\r\n if (!enabled.length) return -1;\r\n\r\n const selected = enabled.find(item => this.isSelected(item.value()));\r\n const target = selected ?? enabled[0];\r\n\r\n return target === radio ? 0 : -1;\r\n }\r\n\r\n public handleKeydown(event: KeyboardEvent, current: SolarisRadio): void {\r\n if (this.disabled()) return;\r\n\r\n switch (event.key) {\r\n case 'ArrowRight':\r\n case 'ArrowDown':\r\n event.preventDefault();\r\n this.move(current, +1);\r\n break;\r\n case 'ArrowLeft':\r\n case 'ArrowUp':\r\n event.preventDefault();\r\n this.move(current, -1);\r\n break;\r\n case ' ':\r\n case 'Enter':\r\n event.preventDefault();\r\n this.select(current);\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n\r\n public notifyTouched(): void {\r\n this.onTouched();\r\n }\r\n\r\n writeValue(value: unknown): void {\r\n this.internalValue.set(value);\r\n this.bumpRadiosVersion();\r\n }\r\n\r\n registerOnTouched(fn: () => void): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n setDisabledState(isDisabled: boolean): void {\r\n this.cvaDisabled.set(isDisabled);\r\n this.bumpRadiosVersion();\r\n }\r\n\r\n registerOnChange(fn: (value: unknown) => void): void {\r\n this.onChange = fn;\r\n }\r\n\r\n private move(current: SolarisRadio, direction: 1 | -1): void {\r\n const enabled = this.enabledRadios();\r\n if (!enabled.length) return;\r\n\r\n const currentIndex = enabled.indexOf(current);\r\n const startIndex = Math.max(currentIndex, 0);\r\n const nextIndex = (startIndex + direction + enabled.length) % enabled.length;\r\n const next = enabled[nextIndex];\r\n\r\n this.select(next);\r\n next.focus();\r\n }\r\n\r\n private enabledRadios(): SolarisRadio[] {\r\n this.radiosVersion();\r\n return (this.radiosQuery?.toArray() ?? []).filter(radio => !radio.disabled());\r\n }\r\n\r\n private bumpRadiosVersion(): void {\r\n this.radiosVersion.update(value => value + 1);\r\n }\r\n}\r\n","<ng-content/>\r\n","import { InjectionToken, Signal } from '@angular/core';\r\n\r\nimport { CardGroupSelectionMode } from '../model/card-group.type';\r\n\r\nexport interface SolarisSelectionCardHandle {\r\n value(): unknown;\r\n disabled(): boolean;\r\n focus(): void;\r\n}\r\n\r\nexport interface SolarisCardGroupApi {\r\n readonly disabled: Signal<boolean>;\r\n readonly selectionMode: Signal<CardGroupSelectionMode>;\r\n\r\n isSelected(value: unknown): boolean;\r\n activate(card: SolarisSelectionCardHandle): void;\r\n tabIndexFor(card: SolarisSelectionCardHandle): number;\r\n handleKeydown(event: KeyboardEvent, current: SolarisSelectionCardHandle): void;\r\n notifyTouched(): void;\r\n}\r\n\r\nexport const SOLARIS_CARD_GROUP = new InjectionToken<SolarisCardGroupApi>('SOLARIS_CARD_GROUP');\r\n","import { ChangeDetectionStrategy, Component, booleanAttribute, computed, input } from '@angular/core';\r\n\r\nimport { CardOrientation, CardRadiusInput, CardSize } from '../model/cards.type';\r\n\r\n@Component({\r\n selector: 'solaris-card',\r\n standalone: true,\r\n templateUrl: './card.html',\r\n styleUrls: ['./card.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: {\r\n class: 'solaris-card-host',\r\n '[attr.data-size]': 'size()',\r\n '[attr.data-orientation]': 'orientation()',\r\n '[attr.data-interactive]': 'interactive() ? \"true\" : null',\r\n '[attr.data-disabled]': 'disabled() ? \"true\" : null',\r\n '[attr.aria-disabled]': 'disabled() ? \"true\" : null',\r\n '[style.--solaris-card-radius]': 'resolvedRadius()',\r\n },\r\n})\r\nexport class SolarisCard {\r\n readonly size = input<CardSize>('md');\r\n readonly orientation = input<CardOrientation>('vertical');\r\n readonly radius = input<CardRadiusInput | null>(null);\r\n readonly disabled = input(false, { transform: booleanAttribute });\r\n readonly interactive = input(false, { transform: booleanAttribute });\r\n\r\n readonly resolvedRadius = computed(() => resolveRadius(this.radius()));\r\n}\r\n\r\nfunction resolveRadius(v: CardRadiusInput | null | undefined): string | null {\r\n const value = v == null || String(v).trim() === '' ? null : String(v).trim();\r\n if (!value) return null;\r\n\r\n switch (value) {\r\n case 'none':\r\n return '0';\r\n case 'sm':\r\n return 'var(--solaris-radius-sm)';\r\n case 'md':\r\n return 'var(--solaris-radius-md, var(--solaris-radius-sm))';\r\n case 'lg':\r\n return 'var(--solaris-radius-lg, var(--solaris-radius-md, var(--solaris-radius-sm)))';\r\n case 'full':\r\n return 'var(--solaris-radius-full)';\r\n default:\r\n return value;\r\n }\r\n}\r\n","<article class=\"solaris-card\">\r\n <div class=\"solaris-card__media\">\r\n <ng-content select=\"[solaris-card-media]\"></ng-content>\r\n </div>\r\n\r\n <div class=\"solaris-card__content\">\r\n <div class=\"solaris-card__header\">\r\n <div class=\"solaris-card__header-main\">\r\n <div class=\"solaris-card__eyebrow\">\r\n <ng-content select=\"[solaris-card-eyebrow]\"></ng-content>\r\n </div>\r\n\r\n <div class=\"solaris-card__title\">\r\n <ng-content select=\"[solaris-card-title]\"></ng-content>\r\n </div>\r\n </div>\r\n\r\n <div class=\"solaris-card__badge\">\r\n <ng-content select=\"[solaris-card-badge]\"></ng-content>\r\n </div>\r\n </div>\r\n\r\n <div class=\"solaris-card__description\">\r\n <ng-content select=\"[solaris-card-description]\"></ng-content>\r\n </div>\r\n\r\n <div class=\"solaris-card__meta\">\r\n <ng-content select=\"[solaris-card-meta]\"></ng-content>\r\n </div>\r\n\r\n <div class=\"solaris-card__footer\">\r\n <div class=\"solaris-card__footer-main\">\r\n <ng-content select=\"[solaris-card-footer]\"></ng-content>\r\n </div>\r\n\r\n <div class=\"solaris-card__actions\">\r\n <ng-content select=\"[solaris-card-actions]\"></ng-content>\r\n </div>\r\n </div>\r\n </div>\r\n</article>\r\n","import { booleanAttribute, ChangeDetectionStrategy, Component, computed, effect, ElementRef,\r\n inject, input, output, signal } from '@angular/core';\r\n\r\n\r\nimport { ResolvedSelectionCardIndicator, SelectionCardAppearance, SelectionCardColorInput,\r\n SelectionCardIndicator, SelectionCardOrientation, SelectionCardRadiusInput, SelectionCardSize } from '../model/selection-card.type';\r\nimport { SOLARIS_CARD_GROUP, SolarisSelectionCardHandle } from '../../cards-group/token/card-group.token';\r\nimport { SolarisColorPreset } from '../../../../common/model/common-configurations.type';\r\nimport { CardGroupSelectionMode } from '../../cards-group/model/card-group.type';\r\nimport { SolarisCard } from '../../card/component/card';\r\n\r\nconst PRESET_COLORS = new Set<SolarisColorPreset>([\r\n 'primary',\r\n 'success',\r\n 'warning',\r\n 'error',\r\n 'info',\r\n]);\r\n\r\n@Component({\r\n selector: 'solaris-selection-card',\r\n standalone: true,\r\n imports: [SolarisCard],\r\n templateUrl: './selection-card.html',\r\n styleUrls: ['./selection-card.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: {\r\n class: 'solaris-selection-card-host',\r\n '[attr.data-size]': 'size()',\r\n '[attr.data-orientation]': 'orientation()',\r\n '[attr.data-selected]': 'selected() ? \"true\" : null',\r\n '[attr.data-disabled]': 'disabled() ? \"true\" : null',\r\n '[attr.data-invalid]': 'invalid() ? \"true\" : null',\r\n '[attr.data-appearance]': 'appearance()',\r\n '[attr.data-color]': 'colorKey()',\r\n '[attr.data-indicator]': 'resolvedIndicator()',\r\n '[attr.role]': 'role()',\r\n '[attr.aria-checked]': 'ariaChecked()',\r\n '[attr.aria-disabled]': 'disabled() ? \"true\" : null',\r\n '[attr.tabindex]': 'tabIndex()',\r\n '[style.--solaris-selection-card-custom]': 'customAccent()',\r\n '(click)': 'onHostClick($event)',\r\n '(keydown)': 'onHostKeydown($event)',\r\n '(blur)': 'onHostBlur()',\r\n },\r\n})\r\nexport class SolarisSelectionCard implements SolarisSelectionCardHandle {\r\n readonly value = input<unknown>(null);\r\n readonly size = input<SelectionCardSize>('md');\r\n readonly color = input<SelectionCardColorInput>('primary');\r\n readonly orientation = input<SelectionCardOrientation>('vertical');\r\n readonly radius = input<SelectionCardRadiusInput | null>(null);\r\n readonly appearance = input<SelectionCardAppearance>('outline');\r\n readonly selectionIndicator = input<SelectionCardIndicator>('auto');\r\n readonly invalid = input(false, { transform: booleanAttribute });\r\n readonly disabledInput = input(false, { alias: 'disabled', transform: booleanAttribute });\r\n readonly selectedInput = input(false, { alias: 'selected', transform: booleanAttribute });\r\n\r\n readonly selectedChange = output<boolean>();\r\n readonly cardClick = output<MouseEvent>();\r\n\r\n private readonly elementRef = inject(ElementRef<HTMLElement>);\r\n private readonly group = inject(SOLARIS_CARD_GROUP, { optional: true });\r\n\r\n private readonly localSelected = signal(false);\r\n\r\n readonly disabled = computed(() => {\r\n return !!this.group?.disabled() || this.disabledInput();\r\n });\r\n\r\n readonly selected = computed(() => {\r\n if (this.group) return this.group.isSelected(this.value());\r\n return this.localSelected();\r\n });\r\n\r\n readonly resolvedMode = computed<CardGroupSelectionMode>(() => {\r\n if (this.group) return this.group.selectionMode();\r\n return inferStandaloneMode(this.selectionIndicator());\r\n });\r\n\r\n public onHostBlur() {\r\n this.group?.notifyTouched();\r\n }\r\n\r\n readonly resolvedIndicator = computed<ResolvedSelectionCardIndicator>(() => {\r\n const requested = this.selectionIndicator();\r\n if (requested !== 'auto') return requested;\r\n\r\n switch (this.resolvedMode()) {\r\n case 'single':\r\n return 'radio';\r\n case 'multiple':\r\n return 'checkbox';\r\n case 'none':\r\n default:\r\n return 'none';\r\n }\r\n });\r\n\r\n readonly tabIndex = computed(() => {\r\n if (this.disabled()) return -1;\r\n if (this.group) return this.group.tabIndexFor(this);\r\n return 0;\r\n });\r\n\r\n readonly role = computed(() => {\r\n switch (this.resolvedMode()) {\r\n case 'single':\r\n return 'radio';\r\n case 'multiple':\r\n return 'checkbox';\r\n case 'none':\r\n default:\r\n return 'button';\r\n }\r\n });\r\n\r\n readonly ariaChecked = computed(() => {\r\n if (this.resolvedMode() === 'none') return null;\r\n return this.selected() ? 'true' : 'false';\r\n });\r\n\r\n readonly customAccent = computed(() => {\r\n if (this.colorKey() !== 'custom') return null;\r\n const raw = String(this.color() ?? '').trim();\r\n return !raw || raw === 'custom' ? null : raw;\r\n });\r\n\r\n readonly colorKey = computed(() => {\r\n const raw = String(this.color() ?? '').trim();\r\n if (!raw || raw === 'custom') return 'custom';\r\n return PRESET_COLORS.has(raw as SolarisColorPreset) ? (raw as SolarisColorPreset) : 'custom';\r\n });\r\n\r\n constructor() {\r\n effect(() => {\r\n if (this.group) return;\r\n this.localSelected.set(this.selectedInput());\r\n });\r\n }\r\n\r\n public focus() {\r\n this.elementRef.nativeElement.focus();\r\n }\r\n\r\n public onHostClick(event: MouseEvent) {\r\n if (this.isActionZone(event.target)) return;\r\n\r\n this.cardClick.emit(event);\r\n\r\n if (this.disabled()) return;\r\n\r\n const previous = this.selected();\r\n\r\n if (this.group) {\r\n this.group.activate(this);\r\n if (previous !== this.selected()) this.selectedChange.emit(this.selected());\r\n return;\r\n }\r\n\r\n const next = this.activateStandalone();\r\n if (next !== previous) this.selectedChange.emit(next);\r\n }\r\n\r\n public onHostKeydown(event: KeyboardEvent) {\r\n if (this.disabled()) return;\r\n\r\n if (this.group) {\r\n this.group.handleKeydown(event, this);\r\n return;\r\n }\r\n\r\n if (event.key === ' ' || event.key === 'Enter') {\r\n event.preventDefault();\r\n const previous = this.selected();\r\n const next = this.activateStandalone();\r\n if (next !== previous) this.selectedChange.emit(next);\r\n }\r\n }\r\n\r\n private activateStandalone(): boolean {\r\n switch (this.resolvedMode()) {\r\n case 'single':\r\n if (!this.localSelected()) this.localSelected.set(true);\r\n return this.localSelected();\r\n\r\n case 'multiple':\r\n this.localSelected.update(value => !value);\r\n return this.localSelected();\r\n\r\n case 'none':\r\n default:\r\n return this.localSelected();\r\n }\r\n }\r\n\r\n private isActionZone(target: EventTarget | null): boolean {\r\n return target instanceof HTMLElement && !!target.closest('[data-card-actions=\"true\"]');\r\n }\r\n}\r\n\r\nfunction inferStandaloneMode(indicator: SelectionCardIndicator): CardGroupSelectionMode {\r\n switch (indicator) {\r\n case 'radio':\r\n return 'single';\r\n case 'checkbox':\r\n case 'icon':\r\n case 'auto':\r\n default:\r\n return 'multiple';\r\n }\r\n}\r\n","<div class=\"solaris-selection-card\">\r\n @if (resolvedIndicator() !== 'none') {\r\n <span class=\"solaris-selection-card__indicator\" aria-hidden=\"true\">\r\n <span class=\"solaris-selection-card__indicator-control\">\r\n @switch (resolvedIndicator()) {\r\n @case ('radio') {\r\n <span class=\"solaris-selection-card__indicator-dot\"></span>\r\n }\r\n @case ('checkbox') {\r\n <i class=\"ph ph-check solaris-selection-card__indicator-check\"></i>\r\n }\r\n @case ('icon') {\r\n <span class=\"solaris-selection-card__indicator-icon-dot\"></span>\r\n }\r\n }\r\n </span>\r\n </span>\r\n }\r\n\r\n <solaris-card\r\n class=\"solaris-selection-card__card\"\r\n [orientation]=\"orientation()\"\r\n [size]=\"size()\"\r\n [radius]=\"radius()\"\r\n [interactive]=\"!disabled()\"\r\n [disabled]=\"disabled()\">\r\n\r\n <div ngProjectAs=\"[solaris-card-media]\">\r\n <ng-content select=\"[solaris-card-media]\"></ng-content>\r\n </div>\r\n\r\n <div ngProjectAs=\"[solaris-card-eyebrow]\">\r\n <ng-content select=\"[solaris-card-eyebrow]\"></ng-content>\r\n </div>\r\n\r\n <div ngProjectAs=\"[solaris-card-title]\">\r\n <ng-content select=\"[solaris-card-title]\"></ng-content>\r\n </div>\r\n\r\n <div ngProjectAs=\"[solaris-card-description]\">\r\n <ng-content select=\"[solaris-card-description]\"></ng-content>\r\n </div>\r\n\r\n <div ngProjectAs=\"[solaris-card-meta]\">\r\n <ng-content select=\"[solaris-card-meta]\"></ng-content>\r\n </div>\r\n\r\n <div ngProjectAs=\"[solaris-card-badge]\">\r\n <ng-content select=\"[solaris-card-badge]\"></ng-content>\r\n </div>\r\n\r\n <div ngProjectAs=\"[solaris-card-footer]\">\r\n <ng-content select=\"[solaris-card-footer]\"></ng-content>\r\n </div>\r\n\r\n <div ngProjectAs=\"[solaris-card-actions]\">\r\n <ng-content select=\"[solaris-card-actions]\"></ng-content>\r\n </div>\r\n\r\n </solaris-card>\r\n</div>\r\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\r\n\r\nimport { SolarisTranslationParams, SolarisTranslationPipe } from '@educarehq/solaris-services';\r\n\r\n@Component({\r\n selector: 'solaris-field-error',\r\n standalone: true,\r\n imports: [SolarisTranslationPipe],\r\n templateUrl: './field-error.html',\r\n styleUrls: ['./field-error.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class FieldErrorComponent {\r\n @Input() public text?: string;\r\n @Input() public textKey?: string;\r\n @Input() public textParams?: SolarisTranslationParams;\r\n}\r\n","<div class=\"solaris-field-error\" role=\"alert\" aria-live=\"polite\">\r\n <span class=\"solaris-field-error__text\">\r\n @if (textKey) { {{ textKey | translate:textParams }} }\r\n @else { {{ text }} }\r\n </span>\r\n</div>\r\n","import { AfterContentInit, ChangeDetectionStrategy, Component, ContentChildren, DestroyRef, QueryList, booleanAttribute,\r\n computed, effect, forwardRef, inject, input, output, signal } from '@angular/core';\r\nimport { AbstractControl, ControlValueAccessor, NG_VALIDATORS,\r\n NG_VALUE_ACCESSOR, ValidationErrors, Validator } from '@angular/forms';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\n\r\nimport { CardGroupCompareWith, CardGroupLayout, CardGroupSelectionMode, CardGroupValue, SizeInput } from '../model/card-group.type';\r\nimport { SOLARIS_CARD_GROUP, SolarisCardGroupApi, SolarisSelectionCardHandle } from '../token/card-group.token';\r\nimport { FieldErrorComponent } from '../../../../forms/form-field/messages/error/field-error';\r\nimport { SolarisShowErrors } from '../../../../common/model/common-configurations.type';\r\nimport { SolarisSelectionCard } from '../../selection-card/component/selection-card';\r\nimport { CardGroupValidationError } from '../model/card-group-error.type';\r\nimport { SolarisTranslationParams } from '@educarehq/solaris-services';\r\n\r\n@Component({\r\n selector: 'solaris-card-group',\r\n standalone: true,\r\n imports: [\r\n FieldErrorComponent\r\n ],\r\n templateUrl: './card-group.html',\r\n styleUrls: ['./card-group.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => SolarisCardGroup),\r\n multi: true,\r\n },\r\n {\r\n provide: NG_VALIDATORS,\r\n useExisting: forwardRef(() => SolarisCardGroup),\r\n multi: true,\r\n },\r\n {\r\n provide: SOLARIS_CARD_GROUP,\r\n useExisting: forwardRef(() => SolarisCardGroup),\r\n },\r\n ],\r\n host: {\r\n class: 'solaris-card-group-host',\r\n '[attr.data-layout]': 'layout()',\r\n '[attr.data-orientation]': 'orientation()',\r\n '[attr.data-selection-mode]': 'selectionMode()',\r\n '[attr.data-invalid]': 'invalidComputed() ? \"true\" : null',\r\n '[attr.data-readonly]': 'readonly() ? \"true\" : null',\r\n '[attr.role]': 'groupRole()',\r\n '[attr.aria-disabled]': 'disabled() ? \"true\" : null',\r\n '[attr.aria-invalid]': 'invalidComputed() ? \"true\" : null',\r\n '[style.--solaris-card-group-gap]': 'resolvedGap()',\r\n },\r\n})\r\nexport class SolarisCardGroup<T = unknown>\r\n implements ControlValueAccessor, Validator, AfterContentInit, SolarisCardGroupApi {\r\n\r\n readonly readonly = input(false, { transform: booleanAttribute });\r\n readonly required = input(false, { transform: booleanAttribute });\r\n readonly submitted = input(false, { transform: booleanAttribute });\r\n readonly selectOnFocus = input(false, { transform: booleanAttribute });\r\n readonly disabledInput = input(false, { transform: booleanAttribute });\r\n\r\n readonly gap = input<SizeInput>('md');\r\n readonly invalid = input<boolean | null>(null);\r\n readonly minSelected = input<number | null>(null);\r\n readonly maxSelected = input<number | null>(null);\r\n readonly layout = input<CardGroupLayout>('stack');\r\n readonly compareWith = input<CardGroupCompareWith<T>>(Object.is);\r\n readonly showErrors = input<SolarisShowErrors>('dirtyOrTouched');\r\n readonly selectionMode = input<CardGroupSelectionMode>('single');\r\n readonly orientation = input<'vertical' | 'horizontal' | 'compact'>('vertical');\r\n\r\n readonly requiredErrorKey = input('solaris.cardGroup.errors.required');\r\n readonly minSelectedErrorKey = input('solaris.cardGroup.errors.minSelected');\r\n readonly maxSelectedErrorKey = input('solaris.cardGroup.errors.maxSelected');\r\n\r\n readonly valueChange = output<CardGroupValue<T>>();\r\n readonly selectionRejected = output<{ reason: 'readonly' | 'maxSelected'; value: unknown }>();\r\n\r\n @ContentChildren(forwardRef(() => SolarisSelectionCard), { descendants: true })\r\n private readonly cardsQuery?: QueryList<SolarisSelectionCard>;\r\n\r\n private readonly destroyRef = inject(DestroyRef);\r\n\r\n private readonly controlTick = signal(0);\r\n private readonly dirtyState = signal(false);\r\n private readonly cardsVersion = signal(0);\r\n private readonly cvaDisabled = signal(false);\r\n private readonly touchedState = signal(false);\r\n private readonly internalValue = signal<CardGroupValue<T>>(null);\r\n\r\n private onTouched: () => void = () => {};\r\n private onChange: (value: CardGroupValue<T>) => void = () => {};\r\n private onValidatorChange: () => void = () => {};\r\n\r\n constructor() {\r\n effect(() => {\r\n this.selectionMode();\r\n this.required();\r\n this.minSelected();\r\n this.maxSelected();\r\n this.compareWith();\r\n this.internalValue();\r\n\r\n this.onValidatorChange();\r\n });\r\n }\r\n\r\n ngAfterContentInit(): void {\r\n this.bumpCardsVersion();\r\n\r\n this.cardsQuery?.changes\r\n .pipe(takeUntilDestroyed(this.destroyRef))\r\n .subscribe(() => this.bumpCardsVersion());\r\n }\r\n\r\n readonly resolvedGap = computed(() => {\r\n const value = String(this.gap() ?? 'md').trim();\r\n\r\n switch (value) {\r\n case 'sm':\r\n return 'var(--solaris-space-3)';\r\n case 'md':\r\n return 'var(--solaris-space-4)';\r\n case 'lg':\r\n return 'var(--solaris-space-5)';\r\n default:\r\n return value;\r\n }\r\n });\r\n\r\n readonly disabled = computed(() => this.disabledInput() || this.cvaDisabled());\r\n\r\n readonly groupRole = computed(() => {\r\n switch (this.selectionMode()) {\r\n case 'single':\r\n return 'radiogroup';\r\n case 'multiple':\r\n case 'none':\r\n default:\r\n return 'group';\r\n }\r\n });\r\n\r\n readonly selectionCount = computed(() => {\r\n const value = this.internalValue();\r\n\r\n if (Array.isArray(value)) return value.length;\r\n if (value == null) return 0;\r\n return 1;\r\n });\r\n\r\n readonly validationError = computed<CardGroupValidationError>(() => {\r\n if (this.disabled() || this.selectionMode() === 'none') return null;\r\n\r\n const count = this.selectionCount();\r\n\r\n if (this.required() && count === 0) return 'required';\r\n\r\n if (this.selectionMode() === 'multiple') {\r\n const min = this.minSelected();\r\n const max = this.maxSelected();\r\n\r\n if (min != null && count < min) return 'minSelected';\r\n if (max != null && count > max) return 'maxSelected';\r\n }\r\n\r\n return null;\r\n });\r\n\r\n readonly invalidComputed = computed(() => {\r\n const explicitInvalid = this.invalid();\r\n if (explicitInvalid !== null) return explicitInvalid;\r\n\r\n const localInvalid = this.validationError() !== null;\r\n\r\n if (this.showErrors() === 'always') return localInvalid;\r\n if (this.showErrors() === 'submitted') return localInvalid && this.submitted();\r\n\r\n return localInvalid && (this.touchedState() || this.dirtyState());\r\n });\r\n\r\n readonly errorKeyComputed = computed<string | undefined>(() => {\r\n switch (this.validationError()) {\r\n case 'required':\r\n return this.requiredErrorKey();\r\n case 'minSelected':\r\n return this.minSelectedErrorKey();\r\n case 'maxSelected':\r\n return this.maxSelectedErrorKey();\r\n default:\r\n return undefined;\r\n }\r\n });\r\n\r\n readonly errorParamsComputed = computed<SolarisTranslationParams | undefined>(() => {\r\n switch (this.validationError()) {\r\n case 'minSelected':\r\n return { min: this.minSelected() ?? undefined };\r\n case 'maxSelected':\r\n return { max: this.maxSelected() ?? undefined };\r\n default:\r\n return undefined;\r\n }\r\n });\r\n\r\n public isSelected(value: unknown): boolean {\r\n const currentValue = this.internalValue();\r\n\r\n switch (this.selectionMode()) {\r\n case 'single':\r\n return !Array.isArray(currentValue) &&\r\n currentValue !== null &&\r\n this.compareWith()(currentValue as T, value as T);\r\n\r\n case 'multiple': {\r\n const list: T[] = Array.isArray(currentValue) ? currentValue : [];\r\n return list.some(item => this.compareWith()(item, value as T));\r\n }\r\n\r\n case 'none':\r\n default:\r\n return false;\r\n }\r\n }\r\n\r\n public activate(card: SolarisSelectionCardHandle): void {\r\n if (this.disabled() || card.disabled()) return;\r\n\r\n this.notifyTouched();\r\n\r\n if (this.readonly()) {\r\n this.selectionRejected.emit({ reason: 'readonly', value: card.value() });\r\n return;\r\n }\r\n\r\n switch (this.selectionMode()) {\r\n case 'single': {\r\n const nextValue = card.value() as T;\r\n const currentValue = this.internalValue();\r\n\r\n if (Array.isArray(currentValue) || currentValue === null\r\n || !this.compareWith()(currentValue as T, nextValue)) {\r\n this.internalValue.set(nextValue);\r\n this.emitModelChange(nextValue);\r\n }\r\n\r\n break;\r\n }\r\n\r\n case 'multiple': {\r\n const currentValue = this.internalValue();\r\n const current: T[] = Array.isArray(currentValue) ? [...currentValue] : [];\r\n const cardValue = card.value() as T;\r\n\r\n const index = current.findIndex(item => this.compareWith()(item, cardValue));\r\n\r\n if (index >= 0) {\r\n current.splice(index, 1);\r\n this.internalValue.set(current);\r\n this.emitModelChange(current);\r\n break;\r\n }\r\n\r\n const max = this.maxSelected();\r\n if (max != null && current.length >= max) {\r\n this.selectionRejected.emit({ reason: 'maxSelected', value: cardValue });\r\n return;\r\n }\r\n\r\n current.push(cardValue);\r\n this.internalValue.set(current);\r\n this.emitModelChange(current);\r\n break;\r\n }\r\n\r\n case 'none':\r\n default:\r\n break;\r\n }\r\n\r\n this.bumpCardsVersion();\r\n this.bumpControlTick();\r\n }\r\n\r\n public tabIndexFor(card: SolarisSelectionCardHandle): number {\r\n this.cardsVersion();\r\n\r\n if (this.disabled() || card.disabled()) return -1;\r\n if (this.selectionMode() === 'none') return 0;\r\n\r\n const enabled = this.enabledCards();\r\n if (!enabled.length) return -1;\r\n\r\n const selected = enabled.find(item => this.isSelected(item.value()));\r\n const target = selected ?? enabled[0];\r\n\r\n return target === card ? 0 : -1;\r\n }\r\n\r\n public handleKeydown(event: KeyboardEvent, current: SolarisSelectionCardHandle): void {\r\n if (this.disabled()) return;\r\n if (this.selectionMode() === 'none') return;\r\n\r\n switch (event.key) {\r\n case 'ArrowRight':\r\n case 'ArrowDown':\r\n event.preventDefault();\r\n this.move(current, +1);\r\n break;\r\n\r\n case 'ArrowLeft':\r\n case 'ArrowUp':\r\n event.preventDefault();\r\n this.move(current, -1);\r\n break;\r\n\r\n case 'Home':\r\n event.preventDefault();\r\n this.focusFirst();\r\n break;\r\n\r\n case 'End':\r\n event.preventDefault();\r\n this.focusLast();\r\n break;\r\n\r\n case ' ':\r\n case 'Enter':\r\n event.preventDefault();\r\n this.activate(current);\r\n break;\r\n }\r\n }\r\n\r\n public notifyTouched(): void {\r\n if (!this.touchedState()) {\r\n this.touchedState.set(true);\r\n }\r\n\r\n this.onTouched();\r\n this.bumpControlTick();\r\n }\r\n\r\n writeValue(value: CardGroupValue<T>): void {\r\n this.internalValue.set(this.normalizeIncomingValue(value, this.selectionMode()));\r\n this.bumpCardsVersion();\r\n this.bumpControlTick();\r\n }\r\n\r\n registerOnTouched(fn: () => void): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n setDisabledState(isDisabled: boolean): void {\r\n this.cvaDisabled.set(isDisabled);\r\n this.bumpCardsVersion();\r\n this.bumpControlTick();\r\n }\r\n\r\n registerOnChange(fn: (value: CardGroupValue<T>) => void): void {\r\n this.onChange = fn;\r\n }\r\n\r\n validate(_: AbstractControl): ValidationErrors | null {\r\n switch (this.validationError()) {\r\n case 'required':\r\n return { required: true };\r\n case 'minSelected':\r\n return {\r\n minSelected: {\r\n min: this.minSelected(),\r\n actual: this.selectionCount(),\r\n },\r\n };\r\n case 'maxSelected':\r\n return {\r\n maxSelected: {\r\n max: this.maxSelected(),\r\n actual: this.selectionCount(),\r\n },\r\n };\r\n default:\r\n return null;\r\n }\r\n }\r\n\r\n registerOnValidatorChange(fn: () => void): void {\r\n this.onValidatorChange = fn;\r\n }\r\n\r\n private move(current: SolarisSelectionCardHandle, direction: 1 | -1): void {\r\n const enabled = this.enabledCards();\r\n if (!enabled.length) return;\r\n\r\n const currentIndex = enabled.indexOf(current);\r\n const startIndex = Math.max(currentIndex, 0);\r\n const nextIndex = (startIndex + direction + enabled.length) % enabled.length;\r\n const next = enabled[nextIndex];\r\n\r\n if (this.selectionMode() === 'single' && this.selectOnFocus()) {\r\n this.activate(next);\r\n }\r\n\r\n next.focus();\r\n }\r\n\r\n private focusFirst(): void {\r\n const first = this.enabledCards()[0];\r\n if (!first) return;\r\n\r\n if (this.selectionMode() === 'single' && this.selectOnFocus()) {\r\n this.activate(first);\r\n }\r\n\r\n first.focus();\r\n }\r\n\r\n private focusLast(): void {\r\n const enabled = this.enabledCards();\r\n const last = enabled.at(-1);\r\n if (!last) return;\r\n\r\n if (this.selectionMode() === 'single' && this.selectOnFocus()) {\r\n this.activate(last);\r\n }\r\n\r\n last.focus();\r\n }\r\n\r\n private enabledCards(): SolarisSelectionCardHandle[] {\r\n this.cardsVersion();\r\n return (this.cardsQuery?.toArray() ?? []).filter(card => !card.disabled());\r\n }\r\n\r\n private emitModelChange(value: CardGroupValue<T>): void {\r\n this.onChange(value);\r\n this.valueChange.emit(value);\r\n this.onValidatorChange();\r\n }\r\n\r\n private normalizeIncomingValue(value: CardGroupValue<T>, mode: CardGroupSelectionMode): CardGroupValue<T> {\r\n switch (mode) {\r\n case 'single':\r\n return Array.isArray(value) ? (value[0] ?? null) : value;\r\n\r\n case 'multiple':\r\n if (value == null) return [];\r\n return Array.isArray(value) ? value : [value];\r\n\r\n case 'none':\r\n default:\r\n return null;\r\n }\r\n }\r\n\r\n private bumpCardsVersion(): void {\r\n this.cardsVersion.update(value => value + 1);\r\n }\r\n\r\n private bumpControlTick(): void {\r\n this.controlTick.update(value => value + 1);\r\n }\r\n}\r\n","<div class=\"solaris-card-group__control\">\r\n <ng-content></ng-content>\r\n</div>\r\n\r\n@if (errorKeyComputed()) {\r\n <solaris-field-error [textKey]=\"errorKeyComputed()\" [textParams]=\"errorParamsComputed()\"></solaris-field-error>\r\n} @else {\r\n <ng-content select=\"[card-group-message]\"></ng-content>\r\n}\r\n","import { Directive } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[solaris-card-media]',\r\n standalone: true,\r\n host: { class: 'solaris-card-slot solaris-card-slot--media' },\r\n})\r\nexport class SolarisCardMediaDirective {}\r\n\r\n@Directive({\r\n selector: '[solaris-card-eyebrow]',\r\n standalone: true,\r\n host: { class: 'solaris-card-slot solaris-card-slot--eyebrow' },\r\n})\r\nexport class SolarisCardEyebrowDirective {}\r\n\r\n@Directive({\r\n selector: '[solaris-card-title]',\r\n standalone: true,\r\n host: { class: 'solaris-card-slot solaris-card-slot--title' },\r\n})\r\nexport class SolarisCardTitleDirective {}\r\n\r\n@Directive({\r\n selector: '[solaris-card-description]',\r\n standalone: true,\r\n host: { class: 'solaris-card-slot solaris-card-slot--description' },\r\n})\r\nexport class SolarisCardDescriptionDirective {}\r\n\r\n@Directive({\r\n selector: '[solaris-card-meta]',\r\n standalone: true,\r\n host: { class: 'solaris-card-slot solaris-card-slot--meta' },\r\n})\r\nexport class SolarisCardMetaDirective {}\r\n\r\n@Directive({\r\n selector: '[solaris-card-badge]',\r\n standalone: true,\r\n host: { class: 'solaris-card-slot solaris-card-slot--badge' },\r\n})\r\nexport class SolarisCardBadgeDirective {}\r\n\r\n@Directive({\r\n selector: '[solaris-card-actions]',\r\n standalone: true,\r\n host: {\r\n class: 'solaris-card-slot solaris-card-slot--actions',\r\n 'data-card-actions': 'true',\r\n },\r\n})\r\nexport class SolarisCardActionsDirective {}\r\n\r\n@Directive({\r\n selector: '[solaris-card-footer]',\r\n standalone: true,\r\n host: { class: 'solaris-card-slot solaris-card-slot--footer' },\r\n})\r\nexport class SolarisCardFooterDirective {}\r\n\r\nexport const SOLARIS_CARD_SLOT_DIRECTIVES = [\r\n SolarisCardMediaDirective,\r\n SolarisCardEyebrowDirective,\r\n SolarisCardTitleDirective,\r\n SolarisCardDescriptionDirective,\r\n SolarisCardMetaDirective,\r\n SolarisCardBadgeDirective,\r\n SolarisCardActionsDirective,\r\n SolarisCardFooterDirective,\r\n] as const;\r\n","import { Directive } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[solaris-avatar-overlay]',\r\n standalone: true,\r\n})\r\nexport class SolarisAvatarOverlayDirective { }\r\n","import { ChangeDetectionStrategy, Component, DestroyRef, HostBinding, Signal,\r\n booleanAttribute, computed, inject, input, signal } from '@angular/core';\r\nimport { toSignal } from '@angular/core/rxjs-interop';\r\nimport { NgClass } from '@angular/common';\r\n\r\nimport { SOLARIS_TRANSLATION, SOLARIS_TRANSLATION_CONFIGURATION, SolarisTranslationConfiguration, TranslationInterface } from '@educarehq/solaris-services';\r\nimport { SolarisPresenceQuietHours, SolarisPresenceState, TimeContext } from '../../../presence-avatar/model/presence-avatar.type';\r\nimport { SolarisAvatarShape } from '../../../avatar/model/avatar.type';\r\n\r\n@Component({\r\n selector: 'solaris-avatar-presence',\r\n standalone: true,\r\n imports: [NgClass],\r\n templateUrl: './avatar-presence.html',\r\n styleUrl: './avatar-presence.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class SolarisAvatarPresence {\r\n private readonly translation = inject<TranslationInterface | null>(SOLARIS_TRANSLATION, { optional: true });\r\n private readonly translationConfiguration =\r\n inject<SolarisTranslationConfiguration | null>(SOLARIS_TRANSLATION_CONFIGURATION, { optional: true });\r\n private readonly destroyRef = inject(DestroyRef);\r\n\r\n readonly presence = input<SolarisPresenceState>('offline');\r\n readonly timezone = input<string | null>(null);\r\n readonly lastSeenAt = input<string | Date | number | null>(null);\r\n readonly quietHours = input<SolarisPresenceQuietHours>(false);\r\n readonly workHoursStart = input(9);\r\n readonly workHoursEnd = input(18);\r\n\r\n readonly shape = input<SolarisAvatarShape>('circle');\r\n readonly ariaLabel = input<string | null>(null, { alias: 'aria-label' });\r\n readonly ariaHidden = input(false, { alias: 'aria-hidden', transform: booleanAttribute });\r\n\r\n @HostBinding('class')\r\n protected readonly hostClass = 'solaris-avatar-presence-host';\r\n\r\n private readonly nowTick = signal(Date.now());\r\n\r\n private readonly fallbackLanguage = this.translationConfiguration?.defaultLanguage ?? 'en-US';\r\n\r\n private readonly activeLanguage: Signal<string> = this.translation\r\n ? toSignal(this.translation.languageChanges(), {\r\n initialValue: this.translation.language(),\r\n })\r\n : signal(this.fallbackLanguage);\r\n\r\n private readonly browserTimezone =\r\n typeof Intl === 'undefined'\r\n ? null\r\n : Intl.DateTimeFormat().resolvedOptions().timeZone || null;\r\n\r\n constructor() {\r\n if (globalThis.window !== undefined) {\r\n const intervalId = globalThis.setInterval(() => {\r\n this.nowTick.set(Date.now());\r\n }, 60_000);\r\n\r\n this.destroyRef.onDestroy(() => {\r\n globalThis.clearInterval(intervalId);\r\n });\r\n }\r\n }\r\n\r\n readonly normalizedTimezone = computed(() => this.normalize(this.timezone()));\r\n readonly normalizedAriaLabel = computed(() => this.normalize(this.ariaLabel()));\r\n readonly parsedLastSeenAt = computed(() => this.parseDate(this.lastSeenAt()));\r\n\r\n readonly effectiveTimezone = computed(() => {\r\n return this.normalizedTimezone() || this.browserTimezone || null;\r\n });\r\n\r\n readonly intlLocale = computed(() => {\r\n const lang = this.activeLanguage() || this.fallbackLanguage || 'en-US';\r\n return lang.replace('_', '-');\r\n });\r\n\r\n readonly translationPrefix = computed(() => {\r\n const uiScope = this.translationConfiguration?.uiScope ?? 'ui';\r\n return `${uiScope}.solaris.avatar.presence`;\r\n });\r\n\r\n readonly normalizedWorkHours = computed(() => {\r\n const start = this.coerceHour(this.workHoursStart(), 9, 0, 23);\r\n const end = this.coerceHour(this.workHoursEnd(), 18, 1, 24);\r\n\r\n if (end <= start) {\r\n return { start: 9, end: 18 };\r\n }\r\n\r\n return { start, end };\r\n });\r\n\r\n readonly currentTimeContext = computed<TimeContext | null>(() => {\r\n this.nowTick();\r\n this.activeLanguage();\r\n\r\n const timezone = this.effectiveTimezone();\r\n if (!timezone || typeof Intl === 'undefined') {\r\n return null;\r\n }\r\n\r\n try {\r\n const formatter = new Intl.DateTimeFormat('en-US', {\r\n hour: 'numeric',\r\n weekday: 'short',\r\n hourCycle: 'h23',\r\n timeZone: timezone,\r\n });\r\n\r\n const parts = formatter.formatToParts(new Date(this.nowTick()));\r\n const hour = Number(parts.find((part) => part.type === 'hour')?.value ?? Number.NaN);\r\n const weekday = parts.find((part) => part.type === 'weekday')?.value ?? '';\r\n\r\n if (Number.isNaN(hour)) {\r\n return null;\r\n }\r\n\r\n const weekdayIndex = this.resolveWeekdayIndex(weekday);\r\n\r\n return {\r\n hour,\r\n timezone,\r\n isWeekend: weekdayIndex === 0 || weekdayIndex === 6,\r\n };\r\n } catch {\r\n return null;\r\n }\r\n });\r\n\r\n readonly isQuietHoursAuto = computed(() => {\r\n const context = this.currentTimeContext();\r\n if (!context) {\r\n return false;\r\n }\r\n\r\n if (context.isWeekend) {\r\n return true;\r\n }\r\n\r\n const { start, end } = this.normalizedWorkHours();\r\n return context.hour < start || context.hour >= end;\r\n });\r\n\r\n readonly showQuietHoursAccent = computed(() => {\r\n const mode = this.quietHours();\r\n\r\n if (mode === true) return true;\r\n if (mode === false) return false;\r\n\r\n return this.isQuietHoursAuto();\r\n });\r\n\r\n readonly showDndSlash = computed(() => this.presence() === 'dnd');\r\n\r\n readonly stateClasses = computed(() => ([\r\n `state-${this.presence()}`,\r\n this.showQuietHoursAccent() ? 'has-quiet-hours' : '',\r\n ]));\r\n\r\n readonly titleText = computed(() => {\r\n if (this.ariaHidden()) return null;\r\n\r\n this.activeLanguage();\r\n return this.buildSemanticText();\r\n });\r\n\r\n readonly resolvedAriaLabel = computed(() => {\r\n if (this.ariaHidden()) return null;\r\n\r\n this.activeLanguage();\r\n return this.normalizedAriaLabel() || this.buildSemanticText();\r\n });\r\n\r\n private buildSemanticText(): string {\r\n const parts: string[] = [this.translate(`states.${this.presence()}`)];\r\n\r\n if (this.presence() === 'offline') {\r\n const lastSeen = this.getLastSeenLabel(this.parsedLastSeenAt());\r\n if (lastSeen) {\r\n parts.push(lastSeen);\r\n }\r\n }\r\n\r\n if (this.showQuietHoursAccent()) {\r\n parts.push(this.translate('quietHours'));\r\n }\r\n\r\n return parts.join(' • ');\r\n }\r\n\r\n private getLastSeenLabel(value: Date | null): string | null {\r\n if (!value || Number.isNaN(value.getTime())) {\r\n return null;\r\n }\r\n\r\n const now = new Date(this.nowTick());\r\n const diffMs = Math.max(0, now.getTime() - value.getTime());\r\n\r\n const minuteMs = 60_000;\r\n const hourMs = 60 * minuteMs;\r\n\r\n if (diffMs < minuteMs) {\r\n return this.translate('lastSeen.now');\r\n }\r\n\r\n if (diffMs < hourMs) {\r\n return this.translate('lastSeen.minutesAgo', {\r\n minutes: Math.floor(diffMs / minuteMs),\r\n });\r\n }\r\n\r\n if (diffMs < 6 * hourMs) {\r\n return this.translate('lastSeen.hoursAgo', {\r\n hours: Math.floor(diffMs / hourMs),\r\n });\r\n }\r\n\r\n const timeLabel = this.formatDate(value, {\r\n hour: '2-digit',\r\n minute: '2-digit',\r\n });\r\n\r\n if (this.isSameCalendarDay(value, now)) {\r\n return this.translate('lastSeen.todayAt', {\r\n time: timeLabel,\r\n });\r\n }\r\n\r\n const yesterday = new Date(now);\r\n yesterday.setDate(now.getDate() - 1);\r\n\r\n if (this.isSameCalendarDay(value, yesterday)) {\r\n return this.translate('lastSeen.yesterdayAt', {\r\n time: timeLabel,\r\n });\r\n }\r\n\r\n return this.translate('lastSeen.onDate', {\r\n date: this.formatDate(value, {\r\n day: '2-digit',\r\n month: '2-digit',\r\n year: 'numeric',\r\n hour: '2-digit',\r\n minute: '2-digit',\r\n }),\r\n });\r\n }\r\n\r\n private formatDate(value: Date, options: Intl.DateTimeFormatOptions): string {\r\n try {\r\n return new Intl.DateTimeFormat(this.intlLocale(), options).format(value);\r\n } catch {\r\n return value.toLocaleString();\r\n }\r\n }\r\n\r\n private translate(key: string, params?: Record<string, unknown>): string {\r\n const fullKey = `${this.translationPrefix()}.${key}`;\r\n\r\n if (this.translation) {\r\n const translated = this.translation.translate(fullKey, params);\r\n if (translated && translated !== fullKey) {\r\n return translated;\r\n }\r\n }\r\n\r\n return this.fallbackTranslate(key, params);\r\n }\r\n\r\n private fallbackTranslate(key: string, params?: Record<string, unknown>): string {\r\n const isPt = this.intlLocale().toLowerCase().startsWith('pt');\r\n\r\n const dict = isPt\r\n ? {\r\n 'states.online': 'Online',\r\n 'states.offline': 'Offline',\r\n 'states.away': 'Ausente',\r\n 'states.busy': 'Ocupado',\r\n 'states.dnd': 'Não perturbe',\r\n 'quietHours': 'Fora do expediente local',\r\n 'lastSeen.now': 'Visto agora',\r\n 'lastSeen.minutesAgo': `Visto há ${params?.['minutes'] ?? 0} min`,\r\n 'lastSeen.hoursAgo': `Visto há ${params?.['hours'] ?? 0} h`,\r\n 'lastSeen.todayAt': `Visto hoje às ${params?.['time'] ?? ''}`,\r\n 'lastSeen.yesterdayAt': `Visto ontem às ${params?.['time'] ?? ''}`,\r\n 'lastSeen.onDate': `Visto em ${params?.['date'] ?? ''}`,\r\n }\r\n : {\r\n 'states.online': 'Online',\r\n 'states.offline': 'Offline',\r\n 'states.away': 'Away',\r\n 'states.busy': 'Busy',\r\n 'states.dnd': 'Do not disturb',\r\n 'quietHours': 'Outside local working hours',\r\n 'lastSeen.now': 'Seen just now',\r\n 'lastSeen.minutesAgo': `Seen ${params?.['minutes'] ?? 0} min ago`,\r\n 'lastSeen.hoursAgo': `Seen ${params?.['hours'] ?? 0} h ago`,\r\n 'lastSeen.todayAt': `Seen today at ${params?.['time'] ?? ''}`,\r\n 'lastSeen.yesterdayAt': `Seen yesterday at ${params?.['time'] ?? ''}`,\r\n 'lastSeen.onDate': `Seen on ${params?.['date'] ?? ''}`,\r\n };\r\n\r\n return dict[key as keyof typeof dict] ?? key;\r\n }\r\n\r\n private isSameCalendarDay(a: Date, b: Date): boolean {\r\n return a.getFullYear() === b.getFullYear()\r\n && a.getMonth() === b.getMonth()\r\n && a.getDate() === b.getDate();\r\n }\r\n\r\n private resolveWeekdayIndex(weekday: string): number {\r\n switch (weekday.toLowerCase()) {\r\n case 'sun': return 0;\r\n case 'mon': return 1;\r\n case 'tue': return 2;\r\n case 'wed': return 3;\r\n case 'thu': return 4;\r\n case 'fri': return 5;\r\n case 'sat': return 6;\r\n default: return -1;\r\n }\r\n }\r\n\r\n private coerceHour(value: unknown, fallback: number, min: number, max: number): number {\r\n const numeric = Number(value);\r\n if (Number.isNaN(numeric)) {\r\n return fallback;\r\n }\r\n\r\n return Math.min(Math.max(Math.floor(numeric), min), max);\r\n }\r\n\r\n private parseDate(value: string | Date | number | null): Date | null {\r\n if (value == null || value === '') {\r\n return null;\r\n }\r\n\r\n if (value instanceof Date) {\r\n return Number.isNaN(value.getTime()) ? null : value;\r\n }\r\n\r\n const parsed = new Date(value);\r\n return Number.isNaN(parsed.getTime()) ? null : parsed;\r\n }\r\n\r\n private normalize(value: unknown): string {\r\n return String(value ?? '').trim();\r\n }\r\n}\r\n","<span class=\"solaris-avatar-presence\" [attr.title]=\"titleText()\"\r\n [attr.aria-label]=\"resolvedAriaLabel()\" [attr.aria-hidden]=\"ariaHidden() ? 'true' : null\"\r\n [ngClass]=\"[...stateClasses(), shape() === 'square' ? 'shape-square' : 'shape-circle']\">\r\n <span class=\"solaris-avatar-presence__dot\" aria-hidden=\"true\">\r\n @if (showDndSlash()) {\r\n <span class=\"solaris-avatar-presence__slash\"></span>\r\n }\r\n </span>\r\n\r\n @if (showQuietHoursAccent()) {\r\n <span class=\"solaris-avatar-presence__quiet\" aria-hidden=\"true\">z</span>\r\n }\r\n</span>\r\n","import { ChangeDetectionStrategy, Component, HostBinding, booleanAttribute, computed, effect, input, signal } from '@angular/core';\r\nimport { NgClass } from '@angular/common';\r\n\r\nimport { SolarisAvatarButtonType, SolarisAvatarColorInput, SolarisAvatarColorPreset, SolarisAvatarObjectFit,\r\n SolarisAvatarRadiusInput, SolarisAvatarShape, SolarisAvatarSize, SolarisAvatarVariant } from '../model/avatar.type';\r\n\r\n@Component({\r\n selector: 'solaris-avatar',\r\n standalone: true,\r\n imports: [\r\n NgClass\r\n ],\r\n templateUrl: './avatar.html',\r\n styleUrl: './avatar.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class SolarisAvatar {\r\n readonly size = input<SolarisAvatarSize>('md');\r\n readonly shape = input<SolarisAvatarShape>('circle');\r\n readonly variant = input<SolarisAvatarVariant>('auto');\r\n\r\n readonly src = input<string | null>(null);\r\n readonly alt = input<string | null>(null);\r\n readonly name = input<string | null>(null);\r\n readonly initials = input<string | null>(null);\r\n\r\n readonly color = input<SolarisAvatarColorInput>('surface');\r\n readonly loading = input(false, { transform: booleanAttribute });\r\n readonly disabled = input(false, { transform: booleanAttribute });\r\n readonly interactive = input(false, { transform: booleanAttribute });\r\n\r\n readonly buttonType = input<SolarisAvatarButtonType>('button');\r\n readonly asButton = input(false, { transform: booleanAttribute });\r\n\r\n readonly radius = input<SolarisAvatarRadiusInput>(null);\r\n readonly objectFit = input<SolarisAvatarObjectFit>('cover');\r\n\r\n readonly ariaLabel = input<string | null>(null, { alias: 'aria-label' });\r\n readonly ariaHidden = input(false, { alias: 'aria-hidden', transform: booleanAttribute });\r\n\r\n @HostBinding('class')\r\n protected readonly hostClass = 'solaris-avatar-host';\r\n\r\n private readonly imageFailed = signal(false);\r\n\r\n private readonly presetColors = new Set<SolarisAvatarColorPreset>([\r\n 'primary',\r\n 'surface',\r\n 'success',\r\n 'warning',\r\n 'error',\r\n 'info',\r\n ]);\r\n\r\n constructor() {\r\n effect(() => {\r\n this.src();\r\n this.imageFailed.set(false);\r\n });\r\n }\r\n\r\n readonly normalizedSrc = computed(() => this.normalize(this.src()));\r\n readonly normalizedAlt = computed(() => this.normalize(this.alt()));\r\n readonly normalizedName = computed(() => this.normalize(this.name()));\r\n readonly normalizedInitials = computed(() => this.normalize(this.initials()));\r\n readonly normalizedAriaLabel = computed(() => this.normalize(this.ariaLabel()));\r\n\r\n readonly resolvedInitials = computed(() => {\r\n const explicit = this.normalizedInitials();\r\n if (explicit) return explicit.slice(0, 2).toUpperCase();\r\n\r\n const name = this.normalizedName();\r\n if (!name) return '';\r\n\r\n const parts = name.split(/\\s+/).map(part => part.trim()).filter(Boolean);\r\n\r\n if (!parts.length) return '';\r\n if (parts.length === 1) return parts[0].slice(0, 1).toUpperCase();\r\n\r\n const first = parts[0]?.slice(0, 1) ?? '';\r\n const last = parts.at(-1)?.slice(0, 1) ?? '';\r\n\r\n return `${first}${last}`.toUpperCase();\r\n });\r\n\r\n readonly showImage = computed(() => {\r\n if (this.loading()) return false;\r\n\r\n const variant = this.variant();\r\n if (variant === 'letter' || variant === 'default') return false;\r\n\r\n return !!this.normalizedSrc() && !this.imageFailed();\r\n });\r\n\r\n readonly showLetter = computed(() => {\r\n if (this.loading()) return false;\r\n\r\n const variant = this.variant();\r\n const initials = this.resolvedInitials();\r\n\r\n if (!initials) return false;\r\n if (variant === 'letter') return true;\r\n if (variant === 'default') return false;\r\n\r\n return !this.showImage();\r\n });\r\n\r\n readonly showDefault = computed(() => {\r\n if (this.loading()) return false;\r\n return !this.showImage() && !this.showLetter();\r\n });\r\n\r\n readonly isCustomColor = computed(() => !this.presetColors.has(this.color() as SolarisAvatarColorPreset));\r\n\r\n readonly colorClass = computed(() => {\r\n return this.isCustomColor() ? 'color-custom' : `color-${this.color()}`;\r\n });\r\n\r\n readonly customColorValue = computed(() => {\r\n return this.isCustomColor() ? String(this.color()) : null;\r\n });\r\n\r\n readonly resolvedRadius = computed(() => {\r\n const radius = this.normalize(this.radius());\r\n\r\n if (!radius) {\r\n return this.shape() === 'circle'\r\n ? 'var(--solaris-avatar-radius-circle)'\r\n : 'var(--solaris-avatar-radius-square)';\r\n }\r\n\r\n switch (radius) {\r\n case 'none': return 'var(--solaris-radius-none)';\r\n case 'sm': return 'var(--solaris-radius-sm)';\r\n case 'md': return 'var(--solaris-radius-md)';\r\n case 'lg': return 'var(--solaris-radius-lg)';\r\n case 'full': return 'var(--solaris-radius-full)';\r\n default: return radius;\r\n }\r\n });\r\n\r\n readonly rootClasses = computed(() => ([\r\n `size-${this.size()}`,\r\n `shape-${this.shape()}`,\r\n this.colorClass(),\r\n this.interactive() ? 'is-interactive' : '',\r\n this.disabled() ? 'is-disabled' : '',\r\n this.loading() ? 'is-loading' : '',\r\n this.asButton() ? 'is-button' : '',\r\n ]));\r\n\r\n readonly accessibleLabel = computed(() => {\r\n if (this.ariaHidden()) return null;\r\n\r\n return this.normalizedAriaLabel()\r\n || this.normalizedAlt()\r\n || this.normalizedName()\r\n || this.resolvedInitials()\r\n || 'Avatar';\r\n });\r\n\r\n readonly rootRole = computed(() => {\r\n if (this.ariaHidden() || this.asButton()) return null;\r\n return 'img';\r\n });\r\n\r\n onImageLoad(): void {\r\n this.imageFailed.set(false);\r\n }\r\n\r\n onImageError(): void {\r\n this.imageFailed.set(true);\r\n }\r\n\r\n private normalize(value: unknown): string {\r\n return String(value ?? '').trim();\r\n }\r\n}\r\n","@if (asButton()) {\r\n <button class=\"solaris-avatar\" [ngClass]=\"rootClasses()\" [type]=\"buttonType()\" [disabled]=\"disabled()\"\r\n [attr.aria-label]=\"accessibleLabel()\" [attr.aria-hidden]=\"ariaHidden() ? 'true' : null\"\r\n [style.--solaris-avatar-radius]=\"resolvedRadius()\" [style.--solaris-avatar-image-fit]=\"objectFit()\"\r\n [style.--solaris-avatar-custom-bg]=\"customColorValue()\">\r\n <span class=\"solaris-avatar__body\">\r\n @if (loading()) {\r\n <span class=\"solaris-avatar__skeleton\" aria-hidden=\"true\"></span>\r\n } @else if (showImage()) {\r\n <img class=\"solaris-avatar__image\" [src]=\"normalizedSrc()\" alt=\"\" aria-hidden=\"true\"\r\n decoding=\"async\" (load)=\"onImageLoad()\" (error)=\"onImageError()\">\r\n } @else if (showLetter()) {\r\n <span class=\"solaris-avatar__label\" aria-hidden=\"true\">\r\n {{ resolvedInitials() }}\r\n </span>\r\n } @else if (showDefault()) {\r\n <span class=\"solaris-avatar__placeholder\" aria-hidden=\"true\">\r\n <svg class=\"solaris-avatar__placeholder-svg\" viewBox=\"0 0 64 64\" preserveAspectRatio=\"xMidYMid meet\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <circle class=\"solaris-avatar__placeholder-head\" cx=\"32\" cy=\"25\" r=\"14\"></circle>\r\n <path class=\"solaris-avatar__placeholder-body\" d=\"M2 64 C6 50, 18 42, 32 45 C46 42, 58 50, 62 64 Z\"></path>\r\n </svg>\r\n </span>\r\n }\r\n </span>\r\n\r\n <span class=\"solaris-avatar__overlay\" aria-hidden=\"true\">\r\n <ng-content></ng-content>\r\n </span>\r\n </button>\r\n} @else {\r\n <span class=\"solaris-avatar\" [ngClass]=\"rootClasses()\" [attr.role]=\"rootRole()\" [attr.aria-label]=\"accessibleLabel()\"\r\n [attr.aria-hidden]=\"ariaHidden() ? 'true' : null\" [style.--solaris-avatar-radius]=\"resolvedRadius()\"\r\n [style.--solaris-avatar-image-fit]=\"objectFit()\" [style.--solaris-avatar-custom-bg]=\"customColorValue()\">\r\n <span class=\"solaris-avatar__body\">\r\n @if (loading()) {\r\n <span class=\"solaris-avatar__skeleton\" aria-hidden=\"true\"></span>\r\n } @else if (showImage()) {\r\n <img class=\"solaris-avatar__image\" [src]=\"normalizedSrc()\" alt=\"\" aria-hidden=\"true\"\r\n decoding=\"async\" (load)=\"onImageLoad()\" (error)=\"onImageError()\">\r\n } @else if (showLetter()) {\r\n <span class=\"solaris-avatar__label\" aria-hidden=\"true\">{{ resolvedInitials() }}</span>\r\n } @else if (showDefault()) {\r\n <span class=\"solaris-avatar__placeholder\" aria-hidden=\"true\">\r\n <svg class=\"solaris-avatar__placeholder-svg\" viewBox=\"0 0 64 64\" preserveAspectRatio=\"xMidYMid meet\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <circle class=\"solaris-avatar__placeholder-head\" cx=\"32\" cy=\"25\" r=\"14\"></circle>\r\n <path class=\"solaris-avatar__placeholder-body\" d=\"M2 64 C6 50, 18 42, 32 45 C46 42, 58 50, 62 64 Z\"></path>\r\n </svg>\r\n </span>\r\n }\r\n </span>\r\n\r\n <span class=\"solaris-avatar__overlay\" aria-hidden=\"true\">\r\n <ng-content></ng-content>\r\n </span>\r\n </span>\r\n}\r\n","import { booleanAttribute, ChangeDetectionStrategy, Component, computed, inject, input } from '@angular/core';\r\n\r\nimport { SolarisAvatarButtonType, SolarisAvatarColorInput, SolarisAvatarObjectFit, SolarisAvatarRadiusInput,\r\n SolarisAvatarShape, SolarisAvatarSize, SolarisAvatarVariant } from '../../avatar/model/avatar.type';\r\nimport { SolarisTooltipDirective } from '../../../feedbacks/tooltip/directives/tooltip.directive';\r\nimport { SolarisAvatarOverlayDirective } from '../../avatar/directives/avatar-overlay.directive';\r\nimport { SolarisAvatarPresence } from '../../internal/avatar-presence/component/avatar-presence';\r\nimport { SolarisPresenceQuietHours, SolarisPresenceState } from '../model/presence-avatar.type';\r\nimport { SolarisAvatar } from '../../avatar/component/avatar';\r\nimport { SOLARIS_TRANSLATION, TranslationInterface } from '@educarehq/solaris-services';\r\n\r\n@Component({\r\n selector: 'solaris-presence-avatar',\r\n standalone: true,\r\n imports: [\r\n SolarisAvatar,\r\n SolarisAvatarPresence,\r\n SolarisTooltipDirective,\r\n SolarisAvatarOverlayDirective,\r\n ],\r\n templateUrl: './presence-avatar.html',\r\n styleUrl: './presence-avatar.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class SolarisPresenceAvatar {\r\n readonly translationService: TranslationInterface = inject(SOLARIS_TRANSLATION);\r\n readonly size = input<SolarisAvatarSize>('md');\r\n readonly shape = input<SolarisAvatarShape>('circle');\r\n readonly variant = input<SolarisAvatarVariant>('auto');\r\n\r\n readonly src = input<string | null>(null);\r\n readonly alt = input<string | null>(null);\r\n readonly name = input<string | null>(null);\r\n readonly initials = input<string | null>(null);\r\n\r\n readonly color = input<SolarisAvatarColorInput>('surface');\r\n readonly loading = input(false, { transform: booleanAttribute });\r\n readonly disabled = input(false, { transform: booleanAttribute });\r\n readonly interactive = input(false, { transform: booleanAttribute });\r\n\r\n readonly buttonType = input<SolarisAvatarButtonType>('button');\r\n readonly asButton = input(false, { transform: booleanAttribute });\r\n\r\n readonly radius = input<SolarisAvatarRadiusInput>(null);\r\n readonly objectFit = input<SolarisAvatarObjectFit>('cover');\r\n\r\n readonly ariaLabel = input<string | null>(null, { alias: 'aria-label' });\r\n readonly ariaHidden = input(false, { alias: 'aria-hidden', transform: booleanAttribute });\r\n\r\n readonly presence = input<SolarisPresenceState>('offline');\r\n readonly presenceAriaLabel = input<string | null>(null);\r\n readonly timezone = input<string | null>(null);\r\n readonly lastSeenAt = input<string | Date | number | null>(null);\r\n readonly quietHours = input<SolarisPresenceQuietHours>('auto');\r\n readonly workHoursStart = input(9);\r\n readonly workHoursEnd = input(18);\r\n\r\n readonly presenceTooltipKey = computed(() => {\r\n return this.translationService.translate(`ui.solaris.avatar.presence.states.${this.presence()}`);\r\n });\r\n}\r\n","<solaris-avatar [src]=\"src()\" [alt]=\"alt()\" [name]=\"name()\" [initials]=\"initials()\" [size]=\"size()\" [shape]=\"shape()\"\r\n [variant]=\"variant()\" [color]=\"color()\" [loading]=\"loading()\" [disabled]=\"disabled()\" [interactive]=\"interactive()\"\r\n [buttonType]=\"buttonType()\" [asButton]=\"asButton()\" [radius]=\"radius()\" [objectFit]=\"objectFit()\"\r\n [aria-label]=\"ariaLabel()\" [aria-hidden]=\"ariaHidden()\" solaris-tooltip [tooltip-key]=\"presenceTooltipKey()\"\r\n tooltip-variant=\"default\" tooltip-size=\"sm\" tooltip-prefix-icon=\"ph ph-info\">\r\n\r\n <span solaris-avatar-overlay class=\"solaris-presence-avatar__overlay\" aria-hidden=\"true\">\r\n <solaris-avatar-presence [presence]=\"presence()\" [timezone]=\"timezone()\" [lastSeenAt]=\"lastSeenAt()\"\r\n [quietHours]=\"quietHours()\" [workHoursStart]=\"workHoursStart()\" [workHoursEnd]=\"workHoursEnd()\"\r\n [aria-label]=\"presenceAriaLabel()\" [aria-hidden]=\"ariaHidden()\" [shape]=\"shape()\">\r\n </solaris-avatar-presence>\r\n </span>\r\n</solaris-avatar>\r\n","import { booleanAttribute, ChangeDetectionStrategy, Component, computed, input, numberAttribute } from '@angular/core';\r\n\r\nimport { SolarisAvatarShape, SolarisAvatarSize } from '../../avatar/model/avatar.type';\r\nimport { SolarisPresenceAvatar } from '../../presence-avatar/component/presence-avatar';\r\nimport { SolarisAvatarStackItem, SolarisAvatarStackOverlap } from '../model/avatar-stack.type';\r\nimport { SolarisAvatar } from '../../avatar/component/avatar';\r\n\r\n@Component({\r\n selector: 'solaris-avatar-stack',\r\n standalone: true,\r\n imports: [\r\n SolarisPresenceAvatar,\r\n SolarisAvatar\r\n ],\r\n templateUrl: './avatar-stack.html',\r\n styleUrl: './avatar-stack.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class SolarisAvatarStack {\r\n readonly items = input<SolarisAvatarStackItem[]>([]);\r\n readonly max = input(4, { transform: numberAttribute });\r\n readonly showPresence = input(false, { transform: booleanAttribute });\r\n\r\n readonly size = input<SolarisAvatarSize>('md');\r\n readonly shape = input<SolarisAvatarShape>('circle');\r\n readonly overlap = input<SolarisAvatarStackOverlap>('md');\r\n\r\n readonly visibleItems = computed(() => {\r\n const max = Math.max(1, this.max());\r\n return this.items().slice(0, max);\r\n });\r\n\r\n readonly hiddenCount = computed(() => {\r\n return Math.max(0, this.items().length - this.visibleItems().length);\r\n });\r\n\r\n readonly hasHiddenItems = computed(() => this.hiddenCount() > 0);\r\n}\r\n","<div class=\"solaris-avatar-stack\" [attr.data-size]=\"size()\"\r\n [attr.data-shape]=\"shape()\" [attr.data-overlap]=\"overlap()\">\r\n @for (item of visibleItems(); track item.name ?? item.src ?? $index) {\r\n <span class=\"solaris-avatar-stack__item\">\r\n @if (showPresence()) {\r\n <solaris-presence-avatar [size]=\"size()\" [shape]=\"shape()\" [src]=\"item.src ?? null\" [alt]=\"item.alt ?? null\"\r\n [name]=\"item.name ?? null\" [initials]=\"item.initials ?? null\" [presence]=\"item.presence ?? 'offline'\"\r\n [timezone]=\"item.timezone ?? null\" [lastSeenAt]=\"item.lastSeenAt ?? null\" [quietHours]=\"item.quietHours ?? false\"/>\r\n } @else {\r\n <solaris-avatar [size]=\"size()\" [shape]=\"shape()\" [src]=\"item.src ?? null\" [alt]=\"item.alt ?? null\"\r\n [name]=\"item.name ?? null\" [initials]=\"item.initials ?? null\"/>\r\n }\r\n </span>\r\n }\r\n\r\n @if (hasHiddenItems()) {\r\n <span class=\"solaris-avatar-stack__item solaris-avatar-stack__more\">\r\n +{{ hiddenCount() }}\r\n </span>\r\n }\r\n</div>\r\n","import { ChangeDetectionStrategy, Component, EventEmitter, Output, booleanAttribute, input, numberAttribute } from '@angular/core';\r\n\r\nimport { SolarisAvatarDropdownItem, SolarisAvatarDropdownPlacement, SolarisAvatarDropdownSelectEvent } from '../model/avatar-dropdown.type';\r\nimport { SolarisPopoverTriggerDirective } from '../../../navigations/popover/directives/popover-trigger.directive';\r\nimport { SolarisPopoverPanelDirective } from '../../../navigations/popover/directives/popover-panel.directive';\r\nimport { SolarisAvatarShape, SolarisAvatarSize } from '../../avatar/model/avatar.type';\r\nimport { SolarisAvatarStackOverlap } from '../../avatar-stack/model/avatar-stack.type';\r\nimport { SolarisAvatarStack } from '../../avatar-stack/component/avatar-stack';\r\nimport { SolarisPopover } from '../../../navigations/popover/component/popover';\r\nimport { SolarisAvatar } from '../../avatar/component/avatar';\r\n\r\n@Component({\r\n selector: 'solaris-avatar-dropdown',\r\n standalone: true,\r\n imports: [\r\n SolarisPopover,\r\n SolarisPopoverTriggerDirective,\r\n SolarisPopoverPanelDirective,\r\n SolarisAvatarStack,\r\n SolarisAvatar\r\n ],\r\n templateUrl: './avatar-dropdown.html',\r\n styleUrl: './avatar-dropdown.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class SolarisAvatarDropdown {\r\n readonly items = input<SolarisAvatarDropdownItem[]>([]);\r\n\r\n readonly size = input<SolarisAvatarSize>('md');\r\n readonly shape = input<SolarisAvatarShape>('circle');\r\n readonly overlap = input<SolarisAvatarStackOverlap>('md');\r\n\r\n readonly maxVisible = input(4, { transform: numberAttribute });\r\n readonly placement = input<SolarisAvatarDropdownPlacement>('bottom-end');\r\n\r\n readonly disabled = input(false, { transform: booleanAttribute });\r\n readonly closeOnSelect = input(true, { transform: booleanAttribute });\r\n\r\n readonly panelLabel = input('Avatar dropdown');\r\n\r\n @Output() readonly itemSelect = new EventEmitter<SolarisAvatarDropdownSelectEvent>();\r\n @Output() readonly openChange = new EventEmitter<boolean>();\r\n\r\n onItemClick(item: SolarisAvatarDropdownItem, index: number, popover: SolarisPopover): void {\r\n if (item.disabled) return;\r\n\r\n this.itemSelect.emit({ item, index });\r\n\r\n if (this.closeOnSelect()) {\r\n popover.setOpen(false);\r\n }\r\n }\r\n}\r\n","<solaris-popover #popover [placement]=\"placement()\" [offset]=\"8\" [autoFlip]=\"true\" [autoShift]=\"true\"\r\n [closeOnEscape]=\"true\" [closeOnOutsideClick]=\"true\" panelClass=\"solaris-avatar-dropdown-popover\"\r\n (openChange)=\"openChange.emit($event)\">\r\n <button type=\"button\" solaris-popover-trigger class=\"solaris-avatar-dropdown__trigger\" [disabled]=\"disabled()\"\r\n [attr.aria-label]=\"panelLabel()\" [attr.aria-expanded]=\"popover.isOpen() ? 'true' : 'false'\"\r\n (click)=\"popover.toggle()\">\r\n <solaris-avatar-stack [items]=\"items()\" [max]=\"maxVisible()\" [size]=\"size()\" [shape]=\"shape()\" [overlap]=\"overlap()\"\r\n [showPresence]=\"false\"/>\r\n </button>\r\n\r\n <ng-template solaris-popover-panel>\r\n <div class=\"solaris-avatar-dropdown__panel\" role=\"listbox\" [attr.aria-label]=\"panelLabel()\">\r\n @for (item of items(); track item.id ?? item.name ?? item.src ?? $index) {\r\n <button type=\"button\" class=\"solaris-avatar-dropdown__item\" [disabled]=\"item.disabled\"\r\n [attr.aria-disabled]=\"item.disabled ? 'true' : null\"\r\n (click)=\"onItemClick(item, $index, popover)\">\r\n <solaris-avatar size=\"sm\" [shape]=\"shape()\" [src]=\"item.src ?? null\" [alt]=\"item.alt ?? null\"\r\n [name]=\"item.name ?? null\" [initials]=\"item.initials ?? null\"/>\r\n\r\n <span class=\"solaris-avatar-dropdown__item-body\">\r\n <span class=\"solaris-avatar-dropdown__item-title\">\r\n {{ item.name || item.initials || 'User' }}\r\n </span>\r\n </span>\r\n </button>\r\n }\r\n </div>\r\n </ng-template>\r\n</solaris-popover>\r\n","import { Directive, HostBinding } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[solaris-card-media-overlay]',\r\n standalone: true,\r\n})\r\nexport class SolarisCardMediaOverlayDirective {\r\n @HostBinding('attr.solaris-card-media-overlay')\r\n readonly attr = '';\r\n}\r\n","import { ChangeDetectionStrategy, Component, booleanAttribute, computed, input } from '@angular/core';\r\n\r\nimport { SolarisCardMediaAlign, SolarisCardMediaFit, SolarisCardMediaRadius, SolarisCardMediaRatio,\r\n SolarisCardMediaVariant } from '../model/card-media.type';\r\n\r\n@Component({\r\n selector: 'solaris-card-media',\r\n standalone: true,\r\n templateUrl: './card-media.html',\r\n styleUrls: ['./card-media.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class SolarisCardMedia {\r\n readonly variant = input<SolarisCardMediaVariant>('image');\r\n\r\n readonly src = input<string | null>(null);\r\n readonly alt = input<string | null>(null);\r\n\r\n readonly ratio = input<SolarisCardMediaRatio>('16:9');\r\n readonly fit = input<SolarisCardMediaFit>('cover');\r\n readonly align = input<SolarisCardMediaAlign>('center');\r\n readonly radius = input<SolarisCardMediaRadius>('inherit');\r\n\r\n readonly loading = input(false, { transform: booleanAttribute });\r\n readonly disabled = input(false, { transform: booleanAttribute });\r\n\r\n readonly normalizedSrc = computed(() => this.normalize(this.src()));\r\n readonly normalizedAlt = computed(() => this.normalize(this.alt()));\r\n\r\n readonly showImage = computed(() => {\r\n return !this.loading()\r\n && this.variant() === 'image'\r\n && !!this.normalizedSrc();\r\n });\r\n\r\n private normalize(value: unknown): string {\r\n return String(value ?? '').trim();\r\n }\r\n}\r\n","<div class=\"solaris-card-media\" [class.is-loading]=\"loading()\" [class.is-disabled]=\"disabled()\" [attr.data-variant]=\"variant()\"\r\n [attr.data-ratio]=\"ratio()\" [attr.data-align]=\"align()\" [attr.data-radius]=\"radius()\" [style.--solaris-card-media-fit]=\"fit()\">\r\n <div class=\"solaris-card-media__surface\">\r\n @if (loading()) {\r\n <span class=\"solaris-card-media__skeleton\" aria-hidden=\"true\"></span>\r\n } @else if (showImage()) {\r\n <img class=\"solaris-card-media__image\" [src]=\"normalizedSrc()\" [alt]=\"normalizedAlt()\" decoding=\"async\">\r\n } @else {\r\n <div class=\"solaris-card-media__content\">\r\n <ng-content></ng-content>\r\n </div>\r\n }\r\n\r\n <div class=\"solaris-card-media__overlay\">\r\n <ng-content select=\"[solaris-card-media-overlay]\"></ng-content>\r\n </div>\r\n </div>\r\n</div>\r\n","export type PhoneSanitizeConfig = {\r\n allowedChars: RegExp;\r\n};\r\n\r\nexport function sanitizePhoneInput(v: string): string {\r\n let s = (v ?? '').replace(/[^\\d+\\-\\s().]/g, '');\r\n s = s.replace(/\\+/g, (_m, offset) => (offset === 0 ? '+' : ''));\r\n return s;\r\n}\r\n\r\nexport function insertAtCursor(input: HTMLInputElement, text: string): void {\r\n const start = input.selectionStart ?? input.value.length;\r\n const end = input.selectionEnd ?? input.value.length;\r\n input.value = input.value.slice(0, start) + text + input.value.slice(end);\r\n const pos = start + text.length;\r\n input.setSelectionRange(pos, pos);\r\n}\r\n\r\nexport function enforceMaxDigitsInPlace(input: HTMLInputElement, maxDigits?: number): void {\r\n if (!maxDigits) return;\r\n\r\n const v = input.value ?? '';\r\n const sanitized = sanitizePhoneInput(v);\r\n\r\n const digits = (sanitized.match(/\\d/g) ?? []).length;\r\n if (digits <= maxDigits) {\r\n if (sanitized !== v) input.value = sanitized;\r\n return;\r\n }\r\n\r\n let digitCount = 0;\r\n let out = '';\r\n for (const ch of sanitized) {\r\n if (/\\d/.test(ch)) {\r\n if (digitCount >= maxDigits) break;\r\n digitCount++;\r\n }\r\n out += ch;\r\n }\r\n input.value = out;\r\n}\r\n\r\nexport function shouldBlockBeforeInput(ev: InputEvent, cfg: PhoneSanitizeConfig): boolean {\r\n return !!ev.data && !cfg.allowedChars.test(ev.data);\r\n}\r\n\r\nexport function shouldBlockKeyDown(ev: KeyboardEvent): boolean {\r\n if (ev.ctrlKey || ev.metaKey || ev.altKey) return false;\r\n\r\n const k = ev.key;\r\n const allowedControl = [\r\n 'Backspace', 'Delete', 'Tab', 'Enter', 'Escape',\r\n 'ArrowLeft', 'ArrowRight', 'ArrowUp', 'ArrowDown', 'Home', 'End',\r\n ];\r\n if (allowedControl.includes(k)) return false;\r\n if (/^\\d$/.test(k)) return false;\r\n return !(k === '+' || k === '-' || k === ' ' || k === '(' || k === ')' || k === '.');\r\n}\r\n","import { getCountries, getCountryCallingCode } from 'libphonenumber-js';\r\n\r\nexport function buildCallingCodeIndex(): Map<string, string[]> {\r\n const m = new Map<string, string[]>();\r\n for (const c of getCountries()) {\r\n const code = getCountryCallingCode(c);\r\n const arr = m.get(code) ?? [];\r\n arr.push(c.toLowerCase());\r\n m.set(code, arr);\r\n }\r\n return m;\r\n}\r\n\r\nexport function pickIso2ForCallingCode(\r\n callingCode: string,\r\n selectedIso2: string | null,\r\n index: Map<string, string[]>,\r\n preferredCountries?: string[],\r\n): string | null {\r\n const list = index.get(callingCode) ?? [];\r\n if (!list.length) return null;\r\n\r\n const sel = selectedIso2?.toLowerCase() ?? null;\r\n if (sel && list.includes(sel)) return sel;\r\n\r\n if (callingCode === '1') {\r\n if (list.includes('us')) return 'us';\r\n if (list.includes('ca')) return 'ca';\r\n }\r\n\r\n const preferred = (preferredCountries ?? []).map((x) => x.toLowerCase());\r\n for (const p of preferred) {\r\n if (list.includes(p)) return p;\r\n }\r\n\r\n return list[0] ?? null;\r\n}\r\n\r\nexport function getInitialCountryFromBrowser(fallbackIso2: string): string {\r\n const lang = globalThis?.navigator?.language ?? '';\r\n const region = lang.split('-')[1]?.toLowerCase() ?? '';\r\n return region.length === 2 ? region : fallbackIso2;\r\n}\r\n","import { InjectionToken } from '@angular/core';\r\n\r\nexport interface SolarisFormFieldFeature {\r\n kind: 'email' | 'password';\r\n}\r\n\r\nexport const SOLARIS_FORM_FIELD_FEATURES =\r\n new InjectionToken<ReadonlyArray<SolarisFormFieldFeature>>('SOLARIS_FORM_FIELD_FEATURES');\r\n","import { Injectable, Optional, inject, signal, DestroyRef } from '@angular/core';\r\nimport { NgControl, FormGroupDirective, NgForm } from '@angular/forms';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\n\r\nimport type { SolarisPasswordDirective } from '../../input-text/directives/input-password.directive';\r\nimport type { SolarisEmailDirective } from '../../input-text/directives/input-email.directive';\r\nimport { SOLARIS_FORM_FIELD_FEATURES } from '../tokens/form-field-features';\r\n\r\n@Injectable()\r\nexport class SolarisFormFieldController {\r\n features = inject(SOLARIS_FORM_FIELD_FEATURES, { optional: true }) ?? [];\r\n @Optional() private readonly ngForm = inject(NgForm, { optional: true });\r\n @Optional() private readonly formGroupDir = inject(FormGroupDirective, { optional: true });\r\n private readonly destroyRef = inject(DestroyRef);\r\n\r\n readonly submitted = signal<boolean>(false);\r\n readonly control = signal<NgControl | null>(null);\r\n readonly email = signal<SolarisEmailDirective | null>(null);\r\n readonly password = signal<SolarisPasswordDirective | null>(null);\r\n\r\n constructor() {\r\n this.formGroupDir?.ngSubmit\r\n .pipe(takeUntilDestroyed(this.destroyRef))\r\n .subscribe(() => this.submitted.set(true));\r\n\r\n this.ngForm?.ngSubmit\r\n .pipe(takeUntilDestroyed(this.destroyRef))\r\n .subscribe(() => this.submitted.set(true));\r\n }\r\n\r\n registerPassword(dir: SolarisPasswordDirective | null) {\r\n this.password.set(dir);\r\n }\r\n\r\n registerEmail(dir: SolarisEmailDirective | null) {\r\n this.email.set(dir);\r\n }\r\n\r\n registerControl(ctrl: NgControl | null) {\r\n if (!ctrl && this.control()) return;\r\n this.control.set(ctrl);\r\n }\r\n\r\n passwordVisible(): boolean {\r\n return this.password()?.visible() ?? false;\r\n }\r\n\r\n togglePasswordVisibility(): void {\r\n this.password()?.toggle();\r\n }\r\n\r\n resetSubmitted() {\r\n this.submitted.set(false);\r\n }\r\n}\r\n","import { InjectionToken } from '@angular/core';\r\n\r\nexport interface SolarisInputApi {\r\n element: HTMLInputElement | HTMLTextAreaElement;\r\n setType?(type: string): void;\r\n getType?(): string;\r\n}\r\n\r\nexport const SOLARIS_INPUT = new InjectionToken<SolarisInputApi>('SOLARIS_INPUT');\r\n","import { Directive, ElementRef, HostBinding, inject, Injector, Optional } from '@angular/core';\r\nimport { NgControl } from '@angular/forms';\r\n\r\nimport { SolarisFormFieldController } from '../../form-field/controller/form-field-controller';\r\nimport { SOLARIS_INPUT, SolarisInputApi } from '../tokens/input.token';\r\n\r\n@Directive({\r\n selector: 'input[solaris-input],textarea[solaris-input]',\r\n standalone: true,\r\n providers: [\r\n {\r\n provide: SOLARIS_INPUT,\r\n useFactory: (): SolarisInputApi => {\r\n const el = inject(ElementRef<HTMLInputElement | HTMLTextAreaElement>).nativeElement;\r\n return {\r\n element: el,\r\n setType: (type: string) => {\r\n if (el instanceof HTMLInputElement) el.type = type;\r\n },\r\n getType: () => (el instanceof HTMLInputElement ? el.type : 'textarea'),\r\n };\r\n },\r\n },\r\n ],\r\n})\r\nexport class InputTextDirective {\r\n private readonly el = inject(ElementRef<HTMLInputElement | HTMLTextAreaElement>);\r\n private readonly injector = inject(Injector);\r\n\r\n @Optional()\r\n private readonly field = inject(SolarisFormFieldController, { optional: true });\r\n\r\n @HostBinding('attr.solaris-input') readonly attr = '';\r\n\r\n @HostBinding('attr.placeholder') get placeholderAttr() {\r\n return this.el.nativeElement.getAttribute('placeholder');\r\n }\r\n\r\n constructor() {\r\n queueMicrotask(() => {\r\n const ngc = this.injector.get(NgControl, null, { self: true, optional: true });\r\n this.field?.registerControl(ngc);\r\n });\r\n }\r\n}\r\n","import { AfterViewInit, ChangeDetectionStrategy, Component, ElementRef, forwardRef, HostBinding, inject,\r\n Injector, Input, OnDestroy, Renderer2, ViewChild } from '@angular/core';\r\nimport {\r\n AbstractControl,\r\n ControlValueAccessor,\r\n NG_VALIDATORS,\r\n NG_VALUE_ACCESSOR,\r\n NgControl,\r\n ValidationErrors,\r\n Validator\r\n} from '@angular/forms';\r\n\r\nimport { enforceMaxDigitsInPlace, insertAtCursor, sanitizePhoneInput, shouldBlockBeforeInput, shouldBlockKeyDown } from '../helper/phone-input.sanitize';\r\nimport { buildCallingCodeIndex, getInitialCountryFromBrowser, pickIso2ForCallingCode } from '../helper/phone-input.country';\r\nimport { SolarisFormFieldController } from '../../form-field/controller/form-field-controller';\r\nimport { InputTextDirective } from '../../input-text/directives/input-text.directive';\r\nimport type { ItiInstance, ItiUtils } from '../model/phone-input.iti-types';\r\nimport { AsYouType, parsePhoneNumberFromString, } from 'libphonenumber-js';\r\nimport { PhoneFormat, Iso2 } from '../model/phone-input.type';\r\nimport intlTelInput from 'intl-tel-input';\r\n\r\n@Component({\r\n selector: 'solaris-phone-input',\r\n standalone: true,\r\n templateUrl: './phone-input.html',\r\n styleUrl: './phone-input.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => SolarisPhoneInput),\r\n multi: true,\r\n },\r\n {\r\n provide: NG_VALIDATORS,\r\n useExisting: forwardRef(() => SolarisPhoneInput),\r\n multi: true,\r\n },\r\n ],\r\n imports: [InputTextDirective],\r\n})\r\nexport class SolarisPhoneInput implements AfterViewInit, OnDestroy, ControlValueAccessor, Validator {\r\n private readonly field = inject(SolarisFormFieldController, { optional: true });\r\n private readonly renderer = inject(Renderer2);\r\n private readonly injector = inject(Injector);\r\n\r\n @HostBinding('attr.solaris-phone-input') readonly marker = '';\r\n @ViewChild('input', { static: false }) inputRef?: ElementRef<HTMLInputElement>;\r\n\r\n @Input() set placeholder(v: string | undefined) {\r\n this._placeholder = v;\r\n this.applyPlaceholderIfCustom();\r\n }\r\n get placeholder(): string | undefined {\r\n return this._placeholder;\r\n }\r\n\r\n @Input() format: PhoneFormat = 'e164';\r\n @Input({ alias: 'only-countries' }) onlyCountries?: Iso2[];\r\n @Input({ alias: 'default-country' }) defaultCountry: Iso2 = 'br';\r\n @Input({ alias: 'preferred-countries' }) preferredCountries?: Iso2[];\r\n\r\n private _raw = '';\r\n private maxDigits?: number;\r\n private _placeholder?: string;\r\n protected _disabled = false;\r\n private iti: ItiInstance | null = null;\r\n private _lastE164: string | null = null;\r\n private readonly allowedChars = /^[0-9+\\-\\s().]*$/;\r\n private callingCodeIndex = new Map<string, string[]>();\r\n\r\n private onChange: (v: string | null) => void = () => {};\r\n private onTouched: () => void = () => {};\r\n private onValidatorChange?: () => void;\r\n\r\n constructor() {\r\n queueMicrotask(() => {\r\n const ngControl = this.injector.get(NgControl, null, { self: true, optional: true });\r\n this.field?.registerControl(ngControl);\r\n });\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n const el = this.el;\r\n if (!el) return;\r\n this.callingCodeIndex = buildCallingCodeIndex();\r\n this.initIntlTelInput(el);\r\n this.setupListeners(el);\r\n\r\n if (this._raw) el.value = this._raw;\r\n\r\n this.normalizeAndFormat(true);\r\n this.recalculateLimits();\r\n this.afterUtilsReady();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n const el = this.el;\r\n if (el) this.teardownListeners(el);\r\n this.iti?.destroy?.();\r\n this.iti = null;\r\n }\r\n\r\n public writeValue(value: string | null): void {\r\n this._lastE164 = value ?? null;\r\n const el = this.el;\r\n if (!el) return;\r\n\r\n if (!value) {\r\n this._raw = '';\r\n el.value = '';\r\n this.recomputeFromRaw(true);\r\n return;\r\n }\r\n const iso2 = this.getSelectedIso2();\r\n const cc = iso2 ? iso2.toUpperCase() : undefined;\r\n const parsed = parsePhoneNumberFromString(value, cc as any);\r\n const next = parsed ? parsed.formatNational() : value;\r\n this._raw = next;\r\n el.value = next;\r\n\r\n this.recomputeFromRaw(true);\r\n }\r\n\r\n public registerOnChange(fn: (v: string | null) => void): void {\r\n this.onChange = fn;\r\n }\r\n\r\n public registerOnTouched(fn: () => void): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n public setDisabledState(isDisabled: boolean): void {\r\n this._disabled = isDisabled;\r\n const el = this.el;\r\n if (el) el.disabled = isDisabled;\r\n }\r\n\r\n public validate(): ValidationErrors | null {\r\n if (!this._raw?.trim()) return null;\r\n return this._lastE164 ? null : { solarisPhone: true };\r\n }\r\n\r\n public registerOnValidatorChange(fn: () => void): void {\r\n this.onValidatorChange = fn;\r\n }\r\n\r\n protected onInput(silent = false): void {\r\n this.normalizeAndFormat(silent);\r\n }\r\n\r\n protected onBlur(): void {\r\n this.onTouched();\r\n const el = this.el;\r\n if (!el) return;\r\n\r\n this._raw = el.value ?? '';\r\n this.recomputeFromRaw(false);\r\n }\r\n\r\n protected onFocus(): void {\r\n const el = this.el;\r\n if (!el || this._disabled) return;\r\n if ((el.value ?? '').trim().length) return;\r\n\r\n const dial = this.getSelectedDialCode();\r\n if (!dial) return;\r\n\r\n const v = `+${dial} `;\r\n el.value = v;\r\n this._raw = v;\r\n\r\n queueMicrotask(() => el.setSelectionRange(v.length, v.length));\r\n this.recomputeFromRaw(false);\r\n }\r\n\r\n private normalizeAndFormat(silent: boolean): void {\r\n const el = this.el;\r\n if (!el) return;\r\n\r\n const raw = sanitizePhoneInput(el.value ?? '');\r\n const selectedIso2 = this.getSelectedIso2();\r\n const selectedCountry = selectedIso2 ? selectedIso2.toUpperCase() : undefined;\r\n\r\n const ayt = raw.trim().startsWith('+')\r\n ? new AsYouType()\r\n : new AsYouType(selectedCountry as any);\r\n\r\n const formatted = ayt.input(raw);\r\n el.value = formatted;\r\n this._raw = formatted;\r\n\r\n const number = ayt.getNumber();\r\n if (number?.countryCallingCode && this.iti) {\r\n const nextIso2 = pickIso2ForCallingCode(\r\n number.countryCallingCode,\r\n selectedIso2,\r\n this.callingCodeIndex,\r\n this.preferredCountries,\r\n );\r\n if (nextIso2 && nextIso2 !== selectedIso2) {\r\n this.setCountrySafely(nextIso2);\r\n }\r\n }\r\n\r\n enforceMaxDigitsInPlace(el, this.maxDigits);\r\n this.recomputeFromRaw(silent);\r\n }\r\n\r\n private recomputeFromRaw(silent: boolean): void {\r\n const raw = (this._raw ?? '').trim();\r\n\r\n if (!raw) {\r\n this._lastE164 = null;\r\n if (!silent) this.emit(null);\r\n return;\r\n }\r\n\r\n const iso2 = this.getSelectedIso2();\r\n const cc = iso2 ? iso2.toUpperCase() : undefined;\r\n\r\n const parsed = raw.startsWith('+')\r\n ? parsePhoneNumberFromString(raw)\r\n : parsePhoneNumberFromString(raw, cc as any);\r\n\r\n if (parsed?.isValid()) {\r\n this._lastE164 = parsed.number;\r\n if (!silent) this.emit(parsed.number);\r\n return;\r\n }\r\n\r\n this._lastE164 = null;\r\n if (!silent) this.emit(null);\r\n }\r\n\r\n private emit(v: string | null): void {\r\n this.onChange(v);\r\n this.onValidatorChange?.();\r\n }\r\n\r\n private initIntlTelInput(el: HTMLInputElement): void {\r\n const options: Record<string, unknown> = {\r\n initialCountry: getInitialCountryFromBrowser((this.defaultCountry || 'br').toLowerCase()),\r\n separateDialCode: false,\r\n nationalMode: false,\r\n formatOnDisplay: true,\r\n autoPlaceholder: 'aggressive',\r\n loadUtils: () => import('intl-tel-input/build/js/utils.js'),\r\n };\r\n\r\n const only = this.onlyCountries?.map((x) => x.toLowerCase());\r\n if (only?.length) options['onlyCountries'] = only;\r\n const preferred = this.preferredCountries?.map((x) => x.toLowerCase());\r\n if (preferred?.length) options['preferredCountries'] = preferred;\r\n this.iti = intlTelInput(el, options) as unknown as ItiInstance;\r\n this.applyPlaceholderIfCustom();\r\n }\r\n\r\n private afterUtilsReady(): void {\r\n const itiAny: any = this.iti as any;\r\n const p: Promise<unknown> | undefined = itiAny?.promise;\r\n\r\n const run = () => {\r\n const iso2 = this.getSelectedIso2();\r\n if (iso2) this.setCountrySafely(iso2);\r\n this.recalculateLimits();\r\n };\r\n\r\n if (p?.then) p.then(run);\r\n else queueMicrotask(run);\r\n }\r\n\r\n private setCountrySafely(iso2: string): void {\r\n try { (this.iti as any)?.setCountry?.(iso2) } catch {}\r\n }\r\n\r\n private recalculateLimits(): void {\r\n this.updateMaxDigits();\r\n const el = this.el;\r\n if (el) enforceMaxDigitsInPlace(el, this.maxDigits);\r\n }\r\n\r\n private updateMaxDigits(): void {\r\n if (!this.iti) {\r\n this.maxDigits = undefined;\r\n return;\r\n }\r\n\r\n const c: any = (this.iti as any).getSelectedCountryData?.();\r\n const iso2 = String(c?.iso2 ?? '').toLowerCase();\r\n const dialDigits = String(c?.dialCode ?? '').replace(/\\D/g, '').length;\r\n\r\n const u = this.getUtils();\r\n\r\n const exNationalDigits = this.safe(() => {\r\n if (!u?.getExampleNumber) return undefined;\r\n const t = u.numberType?.MOBILE;\r\n const ex = u.getExampleNumber?.(iso2, true, t);\r\n return ex ? (String(ex).match(/\\d/g) ?? []).length : undefined;\r\n });\r\n\r\n if (exNationalDigits && exNationalDigits > 0) {\r\n this.maxDigits = dialDigits + exNationalDigits;\r\n return;\r\n }\r\n\r\n const el = this.el;\r\n const ph = el?.getAttribute('placeholder') ?? '';\r\n const phDigits = (ph.match(/\\d/g) ?? []).length;\r\n this.maxDigits = phDigits > 0 ? phDigits : undefined;\r\n }\r\n\r\n private setupListeners(el: HTMLInputElement): void {\r\n el.addEventListener('beforeinput', this.onBeforeInput as any);\r\n el.addEventListener('keydown', this.onKeyDown);\r\n el.addEventListener('paste', this.onPaste);\r\n el.addEventListener('countrychange', this.onCountryChange);\r\n }\r\n\r\n private teardownListeners(el: HTMLInputElement): void {\r\n el.removeEventListener('beforeinput', this.onBeforeInput as any);\r\n el.removeEventListener('keydown', this.onKeyDown);\r\n el.removeEventListener('paste', this.onPaste);\r\n el.removeEventListener('countrychange', this.onCountryChange);\r\n }\r\n\r\n private readonly onCountryChange = () => {\r\n this.recalculateLimits();\r\n\r\n const el = this.el;\r\n if (!el || !(el.value ?? '').trim()) return;\r\n\r\n this._raw = el.value ?? '';\r\n this.normalizeAndFormat(false);\r\n };\r\n\r\n private readonly onBeforeInput = (ev: InputEvent) => {\r\n if (shouldBlockBeforeInput(ev, { allowedChars: this.allowedChars })) {\r\n ev.preventDefault();\r\n }\r\n };\r\n\r\n private readonly onKeyDown = (ev: KeyboardEvent) => {\r\n if (shouldBlockKeyDown(ev)) ev.preventDefault();\r\n };\r\n\r\n private readonly onPaste = (ev: ClipboardEvent) => {\r\n const el = this.el;\r\n if (!el) return;\r\n\r\n const text = ev.clipboardData?.getData('text') ?? '';\r\n if (!text) return;\r\n\r\n const sanitized = sanitizePhoneInput(text);\r\n if (sanitized === text) return;\r\n\r\n ev.preventDefault();\r\n insertAtCursor(el, sanitized);\r\n\r\n queueMicrotask(() => {\r\n this.recalculateLimits();\r\n this.normalizeAndFormat(false);\r\n });\r\n };\r\n\r\n private applyPlaceholderIfCustom(): void {\r\n const el = this.el;\r\n if (!el) return;\r\n\r\n const ph = this._placeholder?.trim();\r\n if (ph) this.renderer.setAttribute(el, 'placeholder', ph);\r\n }\r\n\r\n private getSelectedIso2(): string | null {\r\n try {\r\n const data = (this.iti as any)?.getSelectedCountryData?.();\r\n return (data?.iso2 as string | undefined)?.toLowerCase() ?? null;\r\n } catch {\r\n return null;\r\n }\r\n }\r\n\r\n private getSelectedDialCode(): string | null {\r\n try {\r\n const data = (this.iti as any)?.getSelectedCountryData?.();\r\n return (data?.dialCode as string | undefined) ?? null;\r\n } catch {\r\n return null;\r\n }\r\n }\r\n\r\n private getUtils(): ItiUtils | undefined {\r\n return (globalThis as any).intlTelInputUtils as ItiUtils | undefined;\r\n }\r\n\r\n private safe<T>(fn: () => T): T | undefined {\r\n try {\r\n return fn();\r\n } catch {\r\n return undefined;\r\n }\r\n }\r\n\r\n private get el(): HTMLInputElement | null {\r\n return this.inputRef?.nativeElement ?? null;\r\n }\r\n}\r\n","<input #input solaris-input type=\"tel\" [disabled]=\"_disabled\" (focus)=\"onFocus()\" (input)=\"onInput()\"\r\n (blur)=\"onBlur()\" data-bwignore=\"true\"/>\r\n","import { Directive, HostBinding, Optional, inject, signal, WritableSignal, Input, forwardRef, Injector } from '@angular/core';\r\nimport { AbstractControl, NG_VALIDATORS, ValidationErrors, Validator, NgControl } from '@angular/forms';\r\n\r\nimport { SolarisFormFieldController } from '../../form-field/controller/form-field-controller';\r\nimport { SOLARIS_FORM_FIELD_FEATURES } from '../../form-field/tokens/form-field-features';\r\nimport { SolarisPasswordErrorBag } from '../models/password-directive.type';\r\n\r\n@Directive({\r\n selector: 'input[solaris-password]',\r\n standalone: true,\r\n providers: [\r\n { provide: NG_VALIDATORS, useExisting: forwardRef(() => SolarisPasswordDirective), multi: true },\r\n { provide: SOLARIS_FORM_FIELD_FEATURES, useValue: { kind: 'password' }, multi: true }\r\n ],\r\n})\r\nexport class SolarisPasswordDirective implements Validator {\r\n @Input() minLength = 8;\r\n @Input() requireUpper = true;\r\n @Input() requireLower = true;\r\n @Input() requireNumber = true;\r\n @Input() requireSpecial = false;\r\n\r\n @Input() set requireUpperKebab(v: any) { this.requireUpper = coerceBoolean(v); this._onChange?.(); }\r\n @Input() set requireLowerKebab(v: any) { this.requireLower = coerceBoolean(v); this._onChange?.(); }\r\n @Input() set requireNumberKebab(v: any) { this.requireNumber = coerceBoolean(v); this._onChange?.(); }\r\n @Input() set minLengthKebab(v: any) { this.minLength = coerceNumber(v, 8); this._onChange?.(); }\r\n @Input() set requireSpecialKebab(v: any) { this.requireSpecial = coerceBoolean(v); this._onChange?.(); }\r\n\r\n @HostBinding('attr.type') get type() {\r\n return this.visible() ? 'text' : 'password';\r\n }\r\n @HostBinding('attr.spellcheck') spellcheck = 'false';\r\n @HostBinding('attr.solaris-password') readonly marker = '';\r\n @HostBinding('attr.solaris-input') readonly solarisInput = '';\r\n @HostBinding('attr.autocapitalize') autocapitalize = 'none';\r\n @HostBinding('attr.autocomplete') autocomplete = 'current-password';\r\n\r\n @Optional() private readonly field = inject(SolarisFormFieldController, { optional: true });\r\n private readonly injector = inject(Injector);\r\n\r\n readonly visible: WritableSignal<boolean> = signal(false);\r\n\r\n private _onChange?: () => void;\r\n\r\n constructor() {\r\n this.field?.registerPassword(this);\r\n queueMicrotask(() => {\r\n const ngc = this.injector.get(NgControl, null, { self: true, optional: true });\r\n this.field?.registerControl(ngc);\r\n });\r\n }\r\n\r\n public toggle(): void {\r\n this.visible.set(!this.visible());\r\n }\r\n\r\n public validate(control: AbstractControl): ValidationErrors | null {\r\n const v = String(control.value ?? '');\r\n if (!v) return null;\r\n\r\n const errors: SolarisPasswordErrorBag = {};\r\n\r\n if (this.minLength && v.length < this.minLength) {\r\n errors.minLength = { requiredLength: this.minLength, actualLength: v.length };\r\n }\r\n if (this.requireLower && !/[a-z]/.test(v)) errors.lowercase = true;\r\n if (this.requireUpper && !/[A-Z]/.test(v)) errors.uppercase = true;\r\n if (this.requireNumber && !/\\d/.test(v)) errors.number = true;\r\n if (this.requireSpecial && !/[^\\w\\s]/.test(v)) errors.special = true;\r\n\r\n return Object.keys(errors).length ? { solarisPassword: errors } : null;\r\n }\r\n\r\n public registerOnValidatorChange(fn: () => void): void {\r\n this._onChange = fn;\r\n }\r\n}\r\n\r\nfunction coerceBoolean(v: any): boolean {\r\n return v === '' || v === true || v === 'true' || v === 1 || v === '1';\r\n}\r\n\r\nfunction coerceNumber(v: any, fallback: number): number {\r\n const n = Number(v);\r\n return Number.isFinite(n) ? n : fallback;\r\n}\r\n","import { AbstractControl, NG_VALIDATORS, ValidationErrors, Validator, NgControl } from '@angular/forms';\r\nimport { Directive, forwardRef, HostBinding, inject, Optional, Injector } from '@angular/core';\r\n\r\nimport { SolarisFormFieldController } from '../../form-field/controller/form-field-controller';\r\nimport { SOLARIS_FORM_FIELD_FEATURES } from '../../form-field/tokens/form-field-features';\r\n\r\n@Directive({\r\n selector: 'input[solaris-email],input[solarisEmail]',\r\n standalone: true,\r\n providers: [\r\n { provide: NG_VALIDATORS, useExisting: forwardRef(() => SolarisEmailDirective), multi: true },\r\n { provide: SOLARIS_FORM_FIELD_FEATURES, useValue: { kind: 'email' }, multi: true }\r\n ],\r\n})\r\nexport class SolarisEmailDirective implements Validator {\r\n @HostBinding('attr.type') type = 'email';\r\n @HostBinding('attr.inputmode') inputmode = 'email';\r\n @HostBinding('attr.spellcheck') spellcheck = 'false';\r\n @HostBinding('attr.autocomplete') autocomplete = 'email';\r\n @HostBinding('attr.solaris-input') readonly solarisInput = '';\r\n @HostBinding('attr.autocapitalize') autocapitalize = 'none';\r\n @Optional() private readonly field = inject(SolarisFormFieldController, { optional: true });\r\n private readonly injector = inject(Injector);\r\n\r\n constructor() {\r\n this.field?.registerEmail(this);\r\n queueMicrotask(() => {\r\n const ngc = this.injector.get(NgControl, null, { self: true, optional: true });\r\n this.field?.registerControl(ngc);\r\n });\r\n }\r\n\r\n validate(control: AbstractControl): ValidationErrors | null {\r\n const v = String(control.value ?? '').trim();\r\n if (!v) return null;\r\n const ok = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/.test(v);\r\n return ok ? null : { solarisEmail: true };\r\n }\r\n}\r\n","import { InjectionToken } from '@angular/core';\r\n\r\nexport interface SolarisFormFieldControllerLike {\r\n passwordVisible(): boolean\r\n togglePasswordVisibility(): void;\r\n}\r\n\r\nexport const SOLARIS_FORM_FIELD_CONTROLLER =\r\n new InjectionToken<SolarisFormFieldControllerLike>('SOLARIS_FORM_FIELD_CONTROLLER');\r\n","import { ChangeDetectionStrategy, Component, HostBinding, Optional, inject } from '@angular/core';\r\n\r\nimport { SOLARIS_FORM_FIELD_CONTROLLER, SolarisFormFieldControllerLike } from '../../form-field/tokens/form-field-controller.token';\r\nimport { SOLARIS_TRANSLATION, TranslationInterface } from '@educarehq/solaris-services';\r\n\r\n@Component({\r\n selector: 'solaris-password-toggle',\r\n standalone: true,\r\n templateUrl: './password-toggle.html',\r\n styleUrls: ['./password-toggle.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class PasswordToggle {\r\n private readonly translationService: TranslationInterface = inject(SOLARIS_TRANSLATION);\r\n\r\n @HostBinding('attr.solaris-suffix') readonly solarisSuffix = '';\r\n @Optional() private readonly field = inject<SolarisFormFieldControllerLike>(SOLARIS_FORM_FIELD_CONTROLLER, { optional: true });\r\n\r\n protected visible = () => this.field?.passwordVisible() ?? false;\r\n\r\n protected toggle(): void {\r\n this.field?.togglePasswordVisibility();\r\n }\r\n protected get ariaLabelHide() { return this.translationService.translate('ui.solaris.password.aria.hidePassword'); }\r\n protected get ariaLabelShow() { return this.translationService.translate('ui.solaris.password.aria.showPassword'); }\r\n}\r\n","<button class=\"solaris-password-toggle\" type=\"button\" (click)=\"toggle()\" [attr.aria-pressed]=\"visible() ? 'true' : 'false'\"\r\n [attr.aria-label]=\"visible() ? ariaLabelHide : ariaLabelShow\">\r\n @if (visible()) { <i class=\"ph ph-eye-slash\"></i> }\r\n @else { <i class=\"ph ph-eye\"></i> }\r\n</button>\r\n","import { Directive, Optional, inject } from '@angular/core';\r\nimport { NgControl } from '@angular/forms';\r\n\r\nimport { SolarisFormFieldController } from '../controller/form-field-controller';\r\n\r\n@Directive({\r\n selector: 'input[solaris-password],input[solaris-email],input[solaris-input],textarea[solaris-input]',\r\n standalone: true,\r\n})\r\nexport class SolarisControlBridgeDirective {\r\n @Optional() private readonly ctrl = inject(NgControl, { optional: true });\r\n @Optional() private readonly field = inject(SolarisFormFieldController, { optional: true });\r\n\r\n constructor() {\r\n if (this.ctrl) this.field?.registerControl(this.ctrl);\r\n }\r\n}\r\n","import { Directive, HostBinding } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[solaris-prefix]',\r\n standalone: true,\r\n})\r\nexport class SolarisPrefixDirective {\r\n @HostBinding('attr.solaris-prefix') readonly attr = '';\r\n}\r\n","import { Directive } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[solaris-suffix]',\r\n standalone: true\r\n})\r\nexport class SolarisSuffixDirective {}\r\n","import { ChangeDetectionStrategy, Component, ContentChild, Input, computed, effect, inject, signal, input } from '@angular/core';\r\n\r\nimport { SolarisFormFieldAppearance, SolarisFormFieldRadius } from '../model/form-field.type';\r\nimport { SOLARIS_FORM_FIELD_CONTROLLER } from '../tokens/form-field-controller.token';\r\nimport { SolarisShowErrors } from '../../../common/model/common-configurations.type';\r\nimport { PasswordToggle } from '../../input-text/password-toggle/password-toggle';\r\nimport { SolarisFormFieldController } from '../controller/form-field-controller';\r\nimport { SolarisPrefixDirective } from '../directives/prefix.directive';\r\nimport { SolarisSuffixDirective } from '../directives/suffix.directive';\r\nimport { SolarisTranslationPipe } from '@educarehq/solaris-services';\r\nimport { FieldErrorComponent } from '../messages/error/field-error';\r\nimport { merge } from 'rxjs';\r\n\r\n@Component({\r\n selector: 'solaris-form-field',\r\n standalone: true,\r\n imports: [PasswordToggle, FieldErrorComponent, SolarisTranslationPipe],\r\n templateUrl: './form-field.html',\r\n styleUrls: ['./form-field.scss'],\r\n providers: [\r\n SolarisFormFieldController,\r\n { provide: SOLARIS_FORM_FIELD_CONTROLLER, useExisting: SolarisFormFieldController },\r\n ],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class FormField {\r\n protected readonly field = inject(SolarisFormFieldController);\r\n @ContentChild(SolarisPrefixDirective) prefix?: SolarisPrefixDirective;\r\n @ContentChild(SolarisSuffixDirective) suffix?: SolarisSuffixDirective;\r\n\r\n @Input() public hint?: string = '';\r\n @Input() public label?: string = '';\r\n @Input() public hintKey?: string = '';\r\n @Input() public labelKey?: string = '';\r\n @Input() public radius: SolarisFormFieldRadius = 'sm';\r\n @Input() public showErrors: SolarisShowErrors = 'dirtyOrTouched';\r\n @Input() public appearance: SolarisFormFieldAppearance = 'filled';\r\n\r\n private readonly _tick = signal(0);\r\n readonly customErrorKey = input<string>('');\r\n readonly invalid = input<boolean | null>(null);\r\n readonly customErrorParams = input<Record<string, unknown> | undefined>(undefined);\r\n\r\n constructor() {\r\n effect((onCleanup) => {\r\n const ac = this.field.control()?.control;\r\n if (!ac) return;\r\n\r\n const sub = merge(ac.statusChanges, ac.valueChanges).subscribe(() => {\r\n this._tick.update(v => v + 1);\r\n });\r\n\r\n onCleanup(() => sub.unsubscribe());\r\n });\r\n }\r\n\r\n get hasPrefix(): boolean { return !!this.prefix; }\r\n get hasSuffix(): boolean { return !!this.suffix; }\r\n\r\n private getDirectErrorKey(errors: Record<string, any>): string {\r\n if (errors['required']) return 'ui.solaris.validation.required';\r\n if (errors['email'] || errors['solarisEmail']) return 'ui.solaris.validation.email';\r\n return '';\r\n }\r\n\r\n private getPasswordErrorKey(bag: any): string {\r\n if (bag?.minLength) return 'ui.solaris.validation.password.minLength';\r\n if (bag?.uppercase) return 'ui.solaris.validation.password.uppercase';\r\n if (bag?.lowercase) return 'ui.solaris.validation.password.lowercase';\r\n if (bag?.number) return 'ui.solaris.validation.password.number';\r\n if (bag?.special) return 'ui.solaris.validation.password.special';\r\n return 'ui.solaris.validation.password.invalid';\r\n }\r\n\r\n readonly showPasswordToggle = computed(() => !!this.field.password());\r\n\r\n readonly invalidComputed = computed(() => {\r\n this._tick();\r\n const invalid = this.invalid();\r\n if (invalid !== null) return invalid;\r\n const c = this.field.control();\r\n if (!c) return false;\r\n if (this.showErrors === 'always') return !!c.invalid;\r\n if (this.showErrors === 'submitted') return !!(c.invalid && this.field.submitted());\r\n return !!(c.invalid && (c.touched || c.dirty));\r\n });\r\n\r\n readonly errorParams = computed<Record<string, unknown> | undefined>(() => {\r\n this._tick();\r\n if (!this.invalidComputed()) return undefined;\r\n\r\n const customKey = this.customErrorKey()?.trim();\r\n if (customKey) {\r\n return this.customErrorParams();\r\n }\r\n\r\n const errors = this.field.control()?.errors;\r\n if (!errors) return undefined;\r\n\r\n if (errors['solarisPassword']) {\r\n return errors['solarisPassword'];\r\n }\r\n\r\n return undefined;\r\n });\r\n\r\n readonly errorKey = computed(() => {\r\n this._tick();\r\n\r\n if (!this.invalidComputed()) return '';\r\n\r\n const customKey = this.customErrorKey()?.trim();\r\n if (customKey) return customKey;\r\n\r\n const errors = this.field.control()?.errors;\r\n if (!errors) return '';\r\n\r\n const direct = this.getDirectErrorKey(errors);\r\n if (direct) return direct;\r\n\r\n if (errors['solarisPassword']) {\r\n return this.getPasswordErrorKey(errors['solarisPassword']);\r\n }\r\n\r\n return 'solaris.validation.invalid';\r\n });\r\n\r\n readonly disabledComputed = computed(() => {\r\n this._tick();\r\n const c = this.field.control();\r\n return !!c?.disabled;\r\n });\r\n}\r\n","<div class=\"solaris-form-field\" [class.solaris-form-field--has-prefix]=\"hasPrefix\" [attr.data-appearance]=\"appearance\"\r\n [attr.data-invalid]=\"invalidComputed() ? 'true' : null\" [attr.data-radius]=\"radius\"\r\n [attr.data-disabled]=\"disabledComputed() ? 'true' : null\">\r\n @if ((label || labelKey)) {\r\n <label class=\"solaris-form-field__label\">\r\n @if (labelKey) { {{ labelKey | translate }} }\r\n @else if (label) { {{ label }} }\r\n </label>\r\n }\r\n\r\n <div class=\"solaris-form-field__frame\">\r\n @if (hasPrefix) {\r\n <span class=\"solaris-form-field__prefix\" aria-hidden=\"true\">\r\n <ng-content select=\"[solaris-prefix]\"></ng-content>\r\n </span>\r\n }\r\n\r\n <div class=\"solaris-form-field__body\">\r\n <div class=\"solaris-form-field__control-slot\">\r\n <ng-content></ng-content>\r\n </div>\r\n\r\n @if (hasSuffix || showPasswordToggle() || invalidComputed() || disabledComputed()) {\r\n <span class=\"solaris-form-field__suffix\">\r\n @if (disabledComputed()) {\r\n <span class=\"solaris-form-field__status solaris-form-field__status--disabled\" aria-hidden=\"true\">\r\n <i class=\"ph ph-lock-simple\"></i>\r\n </span>\r\n } @else {\r\n <ng-content select=\"[solaris-suffix]\"></ng-content>\r\n\r\n @if (showPasswordToggle()) {\r\n <solaris-password-toggle></solaris-password-toggle>\r\n }\r\n\r\n @if (invalidComputed()) {\r\n <span class=\"solaris-form-field__status\" aria-hidden=\"true\">\r\n <i class=\"ph ph-warning-circle\"></i>\r\n </span>\r\n }\r\n }\r\n </span>\r\n }\r\n </div>\r\n </div>\r\n\r\n @if (errorKey()) {\r\n <solaris-field-error [textKey]=\"errorKey()\" [textParams]=\"errorParams()\"></solaris-field-error>\r\n } @else {\r\n <ng-content select=\"[form-field-message]\"></ng-content>\r\n }\r\n\r\n @if (hint || hintKey) {\r\n <div class=\"solaris-form-field__hint\">\r\n @if (hintKey) { {{ hintKey | translate }} }\r\n @else { {{ hint }} }\r\n </div>\r\n }\r\n</div>\r\n","import { AfterViewInit, ChangeDetectionStrategy, Component, DestroyRef, ElementRef, HostBinding, Input,\r\n Optional, ViewChild, computed, effect, inject, signal, Injector, forwardRef, OnInit } from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR, NgControl } from '@angular/forms';\r\nimport { NgOptimizedImage } from '@angular/common';\r\n\r\nimport { SolarisSelectNode, SelectionDisplay, StackLevel, SolarisSelectItem, SolarisSelectRow } from '../model/select.type';\r\nimport { SolarisPopoverTriggerDirective } from '../../../navigations/popover/directives/popover-trigger.directive';\r\nimport { SolarisPopoverPanelDirective } from '../../../navigations/popover/directives/popover-panel.directive';\r\nimport { SolarisFormFieldController } from '../../form-field/controller/form-field-controller';\r\nimport { SolarisTranslationPipe, SOLARIS_TRANSLATION } from '@educarehq/solaris-services';\r\nimport { SolarisPopover } from '../../../navigations/popover/component/popover';\r\n\r\n@Component({\r\n selector: 'solaris-select',\r\n standalone: true,\r\n imports: [\r\n SolarisPopover,\r\n SolarisPopoverTriggerDirective,\r\n SolarisPopoverPanelDirective,\r\n SolarisTranslationPipe,\r\n NgOptimizedImage,\r\n ],\r\n templateUrl: './select.html',\r\n styleUrls: ['./select.scss'],\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => SolarisSelect),\r\n multi: true,\r\n },\r\n ],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class SolarisSelect implements OnInit, ControlValueAccessor, AfterViewInit {\r\n private readonly translationService = inject(SOLARIS_TRANSLATION);\r\n private readonly destroyRef = inject(DestroyRef);\r\n private readonly injector = inject(Injector);\r\n\r\n @Optional() private readonly field = inject(SolarisFormFieldController, { optional: true });\r\n\r\n @ViewChild('tokenEl', { read: ElementRef }) tokenEl?: ElementRef<HTMLElement>;\r\n @ViewChild('measureSlot', { read: ElementRef }) measureSlot?: ElementRef<HTMLElement>;\r\n @ViewChild('triggerWrap', { read: ElementRef }) triggerWrap?: ElementRef<HTMLElement>;\r\n @ViewChild('triggerInput', { read: ElementRef }) triggerInput?: ElementRef<HTMLInputElement>;\r\n\r\n @HostBinding('attr.data-open') get dataOpen() {\r\n return this.open() ? 'true' : null;\r\n }\r\n\r\n @HostBinding('attr.data-compact') get dataCompact() {\r\n return this.compactInput() ? 'true' : null;\r\n }\r\n\r\n @HostBinding('attr.data-multiple') get dataMultiple() {\r\n return this.multiple ? 'true' : 'false';\r\n }\r\n\r\n private readonly _rootNodes = signal<SolarisSelectNode[]>([]);\r\n\r\n @Input() set items(v: SolarisSelectNode[] | null | undefined) {\r\n this._rootNodes.set(v ?? []);\r\n this.resetStack();\r\n\r\n const cur = this._value();\r\n const next = this.sanitizeValue(cur);\r\n const changed = !this.sameCvaValue(cur, next);\r\n\r\n if (changed) this._value.set(next);\r\n }\r\n\r\n private _multiple = false;\r\n\r\n @Input() set multiple(v: boolean) {\r\n this._multiple = v;\r\n\r\n const cur = this._value();\r\n\r\n if (this._multiple && !Array.isArray(cur)) this._value.set([]);\r\n if (!this._multiple && Array.isArray(cur)) this._value.set(null);\r\n }\r\n\r\n get multiple() {\r\n return this._multiple;\r\n }\r\n\r\n @Input() valueKey?: string;\r\n @Input() backKey = '';\r\n @Input() placeholder = '';\r\n @Input() placeholderKey = '';\r\n @Input() searchable = true;\r\n @Input() selectedCountKey = '';\r\n @Input() selectedFirst = true;\r\n @Input() searchPlaceholder = '';\r\n @Input() selectedCountText = '';\r\n @Input() panelMaxHeight = '32rem';\r\n @Input() searchPlaceholderKey = '';\r\n @Input() selectionSeparator = ', ';\r\n @Input() compareWith?: (a: any, b: any) => boolean;\r\n @Input() backText = 'ui.solaris.common.back';\r\n @Input() selectionDisplay: SelectionDisplay = 'auto';\r\n\r\n private readonly _disabled = signal(false);\r\n\r\n @Input() set disabled(v: boolean) {\r\n this._disabled.set(v);\r\n if (v) this.open.set(false);\r\n }\r\n\r\n get disabled() {\r\n return this._disabled();\r\n }\r\n\r\n readonly open = signal(false);\r\n readonly searchTerm = signal('');\r\n readonly activeIndex = signal(0);\r\n readonly showCount = signal(false);\r\n\r\n private readonly _value = signal<any>(null);\r\n private readonly _stack = signal<StackLevel[]>([]);\r\n\r\n readonly selectedItems = computed(() => {\r\n const all: SolarisSelectItem[] = [];\r\n this.collectAllItems(this._rootNodes(), all);\r\n\r\n const v = this._value();\r\n\r\n if (this.multiple) {\r\n const arr = Array.isArray(v) ? v : [];\r\n return all.filter(it => arr.some(s => this.eq(s, it.value)));\r\n }\r\n\r\n return all.filter(it => v != null && this.eq(v, it.value));\r\n });\r\n\r\n readonly showToken = computed(() => {\r\n return this.selectedCount() > 0;\r\n });\r\n\r\n readonly selectedText = computed(() => {\r\n const items = this.selectedItems();\r\n if (!items.length) return '';\r\n\r\n return items\r\n .map(it => this.itemLabel(it))\r\n .filter(Boolean)\r\n .join(this.selectionSeparator);\r\n });\r\n\r\n readonly triggerValue = computed(() => {\r\n if (this.isSearchMode()) return this.searchTerm();\r\n return '';\r\n });\r\n\r\n readonly activeOptionId = computed(() => {\r\n const idx = this.activeIndex();\r\n const row = this.itemRows()[idx];\r\n\r\n return row?.id ?? null;\r\n });\r\n\r\n readonly inputPlaceholderKey = computed(() => {\r\n if (this.selectedCount() > 0) return '';\r\n if (this.searchTerm().length > 0) return '';\r\n\r\n return this.open() && this.searchable\r\n ? this.searchPlaceholderKey || this.placeholderKey || ''\r\n : this.placeholderKey || '';\r\n });\r\n\r\n readonly inputPlaceholderText = computed(() => {\r\n if (this.selectedCount() > 0) return '';\r\n if (this.searchTerm().length > 0) return '';\r\n\r\n return this.open() && this.searchable\r\n ? this.searchPlaceholder || this.placeholder || 'Search...'\r\n : this.placeholder || '';\r\n });\r\n\r\n readonly viewModel = computed(() => {\r\n const lvl = this.currentLevel();\r\n const ordered = this.applySelectedFirst(lvl.nodes);\r\n const filtered = this.filterNodes(ordered, this.searchTerm());\r\n return this.buildRows(filtered);\r\n });\r\n\r\n readonly rows = computed(() => this.viewModel().rows);\r\n readonly canGoBack = computed(() => this._stack().length > 1);\r\n readonly selectedCount = computed(() => this.selectedItems().length);\r\n readonly isSearchMode = computed(() => this.open() && this.searchable);\r\n readonly itemRows = computed(() => this.viewModel().itemRows);\r\n readonly compactInput = computed(() => this.selectedCount() > 0 && this.searchTerm().length === 0);\r\n readonly currentLevel = computed(() => this._stack().at(-1) ?? { nodes: this._rootNodes() });\r\n\r\n private static seq = 0;\r\n\r\n private _measureNonce = 0;\r\n private resizeObs?: ResizeObserver;\r\n private propagateTouched: () => void = () => {};\r\n private propagateChange: (v: any) => void = () => {};\r\n private resolvedNgControl: NgControl | null | undefined = undefined;\r\n\r\n matchWidthEl: HTMLElement | null = null;\r\n\r\n public readonly _id = `solaris-select-${++SolarisSelect.seq}`;\r\n\r\n constructor() {\r\n this.resetStack();\r\n\r\n effect(() => {\r\n this.selectedText();\r\n this.compactInput();\r\n this.scheduleAutoMeasure();\r\n });\r\n\r\n effect(() => {\r\n const isOpen = this.open();\r\n\r\n if (isOpen) {\r\n this.activeIndex.set(0);\r\n this.scheduleFocusTrigger();\r\n } else {\r\n this.propagateTouched();\r\n this.searchTerm.set('');\r\n this.resetStack();\r\n }\r\n });\r\n }\r\n\r\n ngOnInit() {\r\n this.resolveNgControlOnce();\r\n }\r\n\r\n ngAfterViewInit() {\r\n const trigger = this.triggerWrap?.nativeElement;\r\n\r\n if (trigger) {\r\n this.matchWidthEl =\r\n (trigger.closest('.solaris-form-field')?.querySelector('.solaris-form-field__frame') as HTMLElement) ??\r\n null;\r\n }\r\n\r\n const el = this.triggerWrap?.nativeElement;\r\n\r\n if (!el) return;\r\n if (typeof ResizeObserver === 'undefined') return;\r\n\r\n this.resizeObs = new ResizeObserver(() => this.scheduleAutoMeasure(true));\r\n this.resizeObs.observe(el);\r\n\r\n if ((document as any).fonts?.ready) {\r\n (document as any).fonts.ready.then(() => this.scheduleAutoMeasure(true));\r\n }\r\n\r\n this.destroyRef.onDestroy(() => this.resizeObs?.disconnect());\r\n }\r\n\r\n writeValue(obj: any): void {\r\n this._value.set(this.sanitizeValue(obj));\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this.propagateChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this.propagateTouched = fn;\r\n }\r\n\r\n setDisabledState?(isDisabled: boolean): void {\r\n this._disabled.set(isDisabled);\r\n }\r\n\r\n private translate(key?: string, params?: any): string {\r\n if (!key) return '';\r\n return this.translationService.translate(key, params);\r\n }\r\n\r\n private itemLabel(item: SolarisSelectItem): string {\r\n if (item.labelKey) return this.translate(item.labelKey);\r\n return item.label ?? item.searchText ?? '';\r\n }\r\n\r\n private itemDescription(item: SolarisSelectItem): string {\r\n if (item.descriptionKey) return this.translate(item.descriptionKey);\r\n return item.description ?? '';\r\n }\r\n\r\n private itemEndText(item: SolarisSelectItem): string {\r\n if (item.endTextKey) return this.translate(item.endTextKey);\r\n return item.endText ?? '';\r\n }\r\n\r\n private itemSearchText(item: SolarisSelectItem): string {\r\n return [\r\n item.searchText,\r\n this.itemLabel(item),\r\n this.itemDescription(item),\r\n this.itemEndText(item),\r\n item.labelKey,\r\n item.descriptionKey,\r\n item.endTextKey,\r\n ]\r\n .filter(Boolean)\r\n .join(' ')\r\n .toLowerCase();\r\n }\r\n\r\n private sameCvaValue(a: any, b: any): boolean {\r\n if (this.multiple) {\r\n const aa = Array.isArray(a) ? a : [];\r\n const bb = Array.isArray(b) ? b : [];\r\n\r\n if (aa.length !== bb.length) return false;\r\n\r\n for (let i = 0; i < aa.length; i++) {\r\n if (!this.eq(aa[i], bb[i])) return false;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n if (a == null && b == null) return true;\r\n if (a == null || b == null) return false;\r\n\r\n return this.eq(a, b);\r\n }\r\n\r\n private eq(a: any, b: any): boolean {\r\n if (this.compareWith) return this.compareWith(a, b);\r\n if (this.valueKey) return a?.[this.valueKey] === b?.[this.valueKey];\r\n\r\n return Object.is(a, b);\r\n }\r\n\r\n private resolveNgControlOnce() {\r\n if (this.resolvedNgControl !== undefined) return;\r\n\r\n this.resolvedNgControl = this.injector.get(NgControl, null, {\r\n self: true,\r\n optional: true,\r\n });\r\n\r\n if (this.resolvedNgControl) {\r\n this.field?.registerControl(this.resolvedNgControl);\r\n }\r\n }\r\n\r\n private collectAllItems(nodes: SolarisSelectNode[], out: SolarisSelectItem[]) {\r\n for (const n of nodes) {\r\n if (n.kind === 'item') {\r\n out.push(n);\r\n\r\n if (n.children?.length) {\r\n this.collectAllItems(n.children, out);\r\n }\r\n } else if (n.kind === 'group') {\r\n this.collectAllItems(n.items, out);\r\n }\r\n }\r\n }\r\n\r\n private resetStack() {\r\n this._stack.set([{ nodes: this._rootNodes() }]);\r\n }\r\n\r\n public goBack() {\r\n if (!this.canGoBack()) return;\r\n\r\n const s = [...this._stack()];\r\n s.pop();\r\n\r\n this._stack.set(s);\r\n this.activeIndex.set(0);\r\n this.scheduleFocusTrigger();\r\n }\r\n\r\n private enterChildren(item: SolarisSelectItem) {\r\n if (!item.children?.length) return;\r\n\r\n this._stack.set([\r\n ...this._stack(),\r\n {\r\n title: item.childrenTitle,\r\n titleKey: item.childrenTitleKey,\r\n nodes: item.children,\r\n },\r\n ]);\r\n\r\n this.activeIndex.set(0);\r\n this.scheduleFocusTrigger();\r\n }\r\n\r\n private filterNodes(nodes: SolarisSelectNode[], termRaw: string): SolarisSelectNode[] {\r\n const term = termRaw.trim().toLowerCase();\r\n\r\n if (!term) return nodes;\r\n\r\n const matchItem = (it: SolarisSelectItem) => {\r\n return this.itemSearchText(it).includes(term);\r\n };\r\n\r\n const walk = (list: SolarisSelectNode[]): SolarisSelectNode[] => {\r\n const res: SolarisSelectNode[] = [];\r\n\r\n for (const n of list) {\r\n if (n.kind === 'divider') {\r\n res.push(n);\r\n continue;\r\n }\r\n\r\n if (n.kind === 'group') {\r\n const sub = walk(n.items);\r\n\r\n if (sub.some(x => x.kind !== 'divider')) {\r\n res.push({ ...n, items: sub });\r\n }\r\n\r\n continue;\r\n }\r\n\r\n if (n.children?.length) {\r\n const sub = walk(n.children);\r\n\r\n if (matchItem(n) || sub.some(x => x.kind !== 'divider')) {\r\n res.push({ ...n, children: sub });\r\n }\r\n } else if (matchItem(n)) {\r\n res.push(n);\r\n }\r\n }\r\n\r\n return this.cleanupDividers(res);\r\n };\r\n\r\n return walk(nodes);\r\n }\r\n\r\n private cleanupDividers(nodes: SolarisSelectNode[]): SolarisSelectNode[] {\r\n const out: SolarisSelectNode[] = [];\r\n\r\n for (const n of nodes) {\r\n if (n.kind === 'divider') {\r\n if (!out.length) continue;\r\n if (out.at(-1)?.kind === 'divider') continue;\r\n }\r\n\r\n out.push(n);\r\n }\r\n\r\n while (out.length && out[0].kind === 'divider') out.shift();\r\n while (out.length && out.at(-1)?.kind === 'divider') out.pop();\r\n\r\n return out;\r\n }\r\n\r\n private applySelectedFirst(nodes: SolarisSelectNode[]): SolarisSelectNode[] {\r\n if (!this.multiple || !this.selectedFirst) return nodes;\r\n\r\n const selected = (it: SolarisSelectItem) => {\r\n const v = this._value();\r\n const arr = Array.isArray(v) ? v : [];\r\n\r\n return arr.some(s => this.eq(s, it.value));\r\n };\r\n\r\n const reorderSegment = (segment: SolarisSelectNode[]) => {\r\n const items: SolarisSelectItem[] = [];\r\n const others: SolarisSelectNode[] = [];\r\n\r\n for (const n of segment) {\r\n if (n.kind === 'item') {\r\n items.push(n);\r\n } else if (n.kind === 'group') {\r\n others.push({ ...n, items: this.applySelectedFirst(n.items) });\r\n } else {\r\n others.push(n);\r\n }\r\n }\r\n\r\n const sel: SolarisSelectItem[] = [];\r\n const non: SolarisSelectItem[] = [];\r\n\r\n for (const it of items) {\r\n if (selected(it)) {\r\n sel.push(it);\r\n } else {\r\n non.push(it);\r\n }\r\n }\r\n\r\n return [...sel, ...non, ...others];\r\n };\r\n\r\n const res: SolarisSelectNode[] = [];\r\n let buf: SolarisSelectNode[] = [];\r\n\r\n const flush = () => {\r\n if (!buf.length) return;\r\n\r\n res.push(...reorderSegment(buf));\r\n buf = [];\r\n };\r\n\r\n for (const n of nodes) {\r\n if (n.kind === 'divider') {\r\n flush();\r\n res.push(n);\r\n } else {\r\n buf.push(n);\r\n }\r\n }\r\n\r\n flush();\r\n\r\n return this.cleanupDividers(res);\r\n }\r\n\r\n private buildRows(nodes: SolarisSelectNode[]) {\r\n const rows: SolarisSelectRow[] = [];\r\n let optionIndex = 0;\r\n\r\n const pushItem = (it: SolarisSelectItem) => {\r\n const hasChildren = !!it.children?.length;\r\n const selectable = !hasChildren;\r\n const disabled = !!it.disabled;\r\n const selected = selectable ? this.isSelected(it.value) : false;\r\n\r\n rows.push({\r\n kind: 'item',\r\n key: `item-${optionIndex}-${this.itemLabel(it)}-${String(it.value)}`,\r\n id: `${this._id}-opt-${optionIndex}`,\r\n optionIndex,\r\n item: it,\r\n disabled,\r\n selected,\r\n hasChildren,\r\n selectable,\r\n });\r\n\r\n optionIndex++;\r\n };\r\n\r\n const walk = (list: SolarisSelectNode[]) => {\r\n for (const n of list) {\r\n if (n.kind === 'divider') {\r\n rows.push({ kind: 'divider', key: `div-${rows.length}` });\r\n continue;\r\n }\r\n\r\n if (n.kind === 'group') {\r\n rows.push({\r\n kind: 'group',\r\n key: `grp-${rows.length}-${n.label ?? n.labelKey ?? ''}`,\r\n label: n.label,\r\n labelKey: n.labelKey,\r\n });\r\n\r\n walk(n.items);\r\n continue;\r\n }\r\n\r\n pushItem(n);\r\n }\r\n };\r\n\r\n walk(nodes);\r\n\r\n const itemRows = rows.filter(r => r.kind === 'item');\r\n\r\n return { rows, itemRows };\r\n }\r\n\r\n isSelected(value: any): boolean {\r\n const v = this._value();\r\n\r\n if (this.multiple) {\r\n const arr = Array.isArray(v) ? v : [];\r\n return arr.some(s => this.eq(s, value));\r\n }\r\n\r\n return v != null && this.eq(v, value);\r\n }\r\n\r\n private setValue(next: any) {\r\n const cur = this._value();\r\n\r\n if (this.sameCvaValue(cur, next)) return;\r\n\r\n this._value.set(next);\r\n this.propagateChange(next);\r\n }\r\n\r\n toggleItem(value: any) {\r\n if (!this.multiple) return;\r\n\r\n const cur = this._value();\r\n const arr = Array.isArray(cur) ? [...cur] : [];\r\n const idx = arr.findIndex(v => this.eq(v, value));\r\n\r\n if (idx >= 0) {\r\n arr.splice(idx, 1);\r\n } else {\r\n arr.push(value);\r\n }\r\n\r\n this.setValue(arr);\r\n this.searchTerm.set('');\r\n this.activeIndex.set(0);\r\n this.scheduleFocusTrigger();\r\n }\r\n\r\n selectSingle(value: any) {\r\n if (this.multiple) return;\r\n\r\n this.searchTerm.set('');\r\n this.setValue(value);\r\n this.open.set(false);\r\n }\r\n\r\n onOptionClick(item: SolarisSelectItem) {\r\n if (this.disabled) return;\r\n\r\n if (item.children?.length) {\r\n this.enterChildren(item);\r\n return;\r\n }\r\n\r\n if (this.multiple) {\r\n this.toggleItem(item.value);\r\n this.searchTerm.set('');\r\n this.activeIndex.set(0);\r\n this.scheduleFocusTrigger();\r\n } else {\r\n this.searchTerm.set('');\r\n this.selectSingle(item.value);\r\n }\r\n }\r\n\r\n openFromTrigger() {\r\n if (this.disabled) return;\r\n\r\n if (!this.open()) {\r\n this.open.set(true);\r\n }\r\n }\r\n\r\n toggleOpen() {\r\n if (this.disabled) return;\r\n\r\n const next = !this.open();\r\n\r\n if (next) {\r\n this.searchTerm.set('');\r\n }\r\n\r\n this.open.set(next);\r\n }\r\n\r\n onTriggerInput(v: string) {\r\n if (this.disabled) return;\r\n\r\n if (!this.open()) {\r\n this.open.set(true);\r\n }\r\n\r\n this.searchTerm.set(v);\r\n this.activeIndex.set(0);\r\n }\r\n\r\n onTriggerKeydown(ev: KeyboardEvent) {\r\n if (this.disabled) return;\r\n\r\n if (!this.open()) {\r\n if (ev.key === 'ArrowDown' || ev.key === 'Enter') {\r\n ev.preventDefault();\r\n this.searchTerm.set('');\r\n this.open.set(true);\r\n this.activeIndex.set(0);\r\n return;\r\n }\r\n\r\n if (this.searchable && ev.key.length === 1 && !ev.ctrlKey && !ev.metaKey && !ev.altKey) {\r\n ev.preventDefault();\r\n this.searchTerm.set(ev.key);\r\n this.open.set(true);\r\n this.activeIndex.set(0);\r\n return;\r\n }\r\n\r\n return;\r\n }\r\n\r\n if (\r\n ev.key === 'ArrowDown' ||\r\n ev.key === 'ArrowUp' ||\r\n ev.key === 'Home' ||\r\n ev.key === 'End' ||\r\n ev.key === 'Enter' ||\r\n ev.key === 'Escape'\r\n ) {\r\n this.onPanelKeydown(ev);\r\n return;\r\n }\r\n\r\n if ((ev.key === 'Backspace' || ev.key === 'ArrowLeft') && this.canGoBack() && !this.searchTerm()) {\r\n ev.preventDefault();\r\n this.goBack();\r\n }\r\n }\r\n\r\n onPanelKeydown(ev: KeyboardEvent) {\r\n const items = this.itemRows();\r\n\r\n if (!items.length) return;\r\n\r\n const max = items.length - 1;\r\n const clamp = (n: number) => Math.max(0, Math.min(max, n));\r\n\r\n switch (ev.key) {\r\n case 'ArrowDown':\r\n ev.preventDefault();\r\n this.activeIndex.set(clamp(this.activeIndex() + 1));\r\n break;\r\n\r\n case 'ArrowUp':\r\n ev.preventDefault();\r\n this.activeIndex.set(clamp(this.activeIndex() - 1));\r\n break;\r\n\r\n case 'Home':\r\n ev.preventDefault();\r\n this.activeIndex.set(0);\r\n break;\r\n\r\n case 'End':\r\n ev.preventDefault();\r\n this.activeIndex.set(max);\r\n break;\r\n\r\n case 'Enter':\r\n ev.preventDefault();\r\n this.onOptionClick(items[this.activeIndex()].item);\r\n break;\r\n\r\n case 'ArrowRight': {\r\n const row = items[this.activeIndex()];\r\n\r\n if (row?.hasChildren) {\r\n ev.preventDefault();\r\n this.enterChildren(row.item);\r\n }\r\n\r\n break;\r\n }\r\n\r\n case 'Escape':\r\n ev.preventDefault();\r\n this.open.set(false);\r\n break;\r\n }\r\n }\r\n\r\n private scheduleAutoMeasure(force = false) {\r\n if (!this.multiple) {\r\n this.showCount.set(false);\r\n return;\r\n }\r\n\r\n if (this.selectionDisplay === 'count') {\r\n this.showCount.set(true);\r\n return;\r\n }\r\n\r\n if (this.selectionDisplay === 'list') {\r\n this.showCount.set(false);\r\n return;\r\n }\r\n\r\n const nonce = ++this._measureNonce;\r\n\r\n requestAnimationFrame(() => {\r\n requestAnimationFrame(() => {\r\n if (nonce !== this._measureNonce) return;\r\n\r\n this.measureAuto(force);\r\n });\r\n });\r\n }\r\n\r\n private measureAuto(_force: boolean) {\r\n if (!this.multiple) {\r\n this.showCount.set(false);\r\n return;\r\n }\r\n\r\n if (this.selectionDisplay === 'count') {\r\n this.showCount.set(true);\r\n return;\r\n }\r\n\r\n if (this.selectionDisplay === 'list') {\r\n this.showCount.set(false);\r\n return;\r\n }\r\n\r\n if (!this.compactInput()) {\r\n if (this.showCount()) this.showCount.set(false);\r\n return;\r\n }\r\n\r\n const wrap = this.triggerWrap?.nativeElement;\r\n const inputEl = this.triggerInput?.nativeElement;\r\n const measureEl = this.measureSlot?.nativeElement;\r\n\r\n if (!wrap || !inputEl || !measureEl) return;\r\n\r\n const text = this.selectedText();\r\n\r\n if (!text) {\r\n if (this.showCount()) this.showCount.set(false);\r\n }\r\n\r\n const ws = getComputedStyle(wrap);\r\n const padL = this.px(ws.paddingLeft);\r\n const padR = this.px(ws.paddingRight);\r\n const gap = this.px(ws.columnGap || ws.gap);\r\n const contentWidth = wrap.clientWidth - padL - padR;\r\n\r\n const inputWidth = inputEl.getBoundingClientRect().width;\r\n const tokenMaxWidth = Math.max(0, contentWidth - gap - inputWidth);\r\n\r\n const needed = Math.ceil(measureEl.scrollWidth);\r\n const available = Math.floor(tokenMaxWidth);\r\n\r\n const current = this.showCount();\r\n\r\n const marginForward = 1;\r\n const marginBack = 3;\r\n\r\n const next = current\r\n ? needed > available - marginBack\r\n : needed > available + marginForward;\r\n\r\n if (next !== current) {\r\n this.showCount.set(next);\r\n }\r\n }\r\n\r\n private px(v: string): number {\r\n const first = (v ?? '0').split(' ')[0];\r\n const n = Number.parseFloat(first);\r\n\r\n return Number.isFinite(n) ? n : 0;\r\n }\r\n\r\n private scheduleFocusTrigger() {\r\n requestAnimationFrame(() => {\r\n this.triggerInput?.nativeElement?.focus?.();\r\n\r\n if (this.searchable) {\r\n this.triggerInput?.nativeElement?.select?.();\r\n }\r\n });\r\n }\r\n\r\n private isSelectableValue(v: any): boolean {\r\n if (v == null) return false;\r\n\r\n let selectable = false;\r\n\r\n const walk = (nodes: SolarisSelectNode[]) => {\r\n for (const n of nodes) {\r\n if (n.kind === 'group') {\r\n walk(n.items);\r\n continue;\r\n }\r\n\r\n if (n.kind === 'item') {\r\n if (this.eq(n.value, v)) {\r\n selectable = !n.children?.length;\r\n return;\r\n }\r\n\r\n if (n.children?.length) {\r\n walk(n.children);\r\n }\r\n }\r\n }\r\n };\r\n\r\n walk(this._rootNodes());\r\n\r\n return selectable;\r\n }\r\n\r\n private sanitizeValue(next: any): any {\r\n if (this.multiple) {\r\n const arr = Array.isArray(next) ? next : [];\r\n return arr.filter(v => this.isSelectableValue(v));\r\n }\r\n\r\n return this.isSelectableValue(next) ? next : null;\r\n }\r\n\r\n selectedCountLabel(): string {\r\n const count = this.selectedCount();\r\n\r\n if (this.selectedCountKey) {\r\n return this.translate(this.selectedCountKey, { count });\r\n }\r\n\r\n if (this.selectedCountText) {\r\n return this.selectedCountText.replace('{count}', String(count));\r\n }\r\n\r\n return `${count} selecionados`;\r\n }\r\n\r\n trackRow = (_: number, r: SolarisSelectRow) => r.key;\r\n}\r\n","<solaris-popover [open]=\"open()\" (openChange)=\"open.set($event)\" placement=\"bottom-start\" [offset]=\"6\"\r\n [matchWidth]=\"true\" [anchorElement]=\"matchWidthEl\" [matchWidthElement]=\"matchWidthEl\"\r\n [closeOnOutsideClick]=\"true\" [closeOnEscape]=\"true\" panelClass=\"solaris-select__popover\">\r\n <div #triggerWrap solaris-popover-trigger class=\"solaris-select__trigger\" (click)=\"openFromTrigger()\">\r\n @if (showToken()) {\r\n <span #tokenEl class=\"solaris-select__token\" aria-hidden=\"true\">\r\n @if (multiple && showCount()) {\r\n @if (selectedCountKey) { {{ selectedCountKey | translate:{ count: selectedCount() } }} }\r\n @else { {{ selectedCountLabel() }} }\r\n } @else {\r\n {{ selectedText() }}\r\n }\r\n </span>\r\n }\r\n\r\n <input #triggerInput type=\"text\" class=\"solaris-select__input\" [disabled]=\"disabled\"\r\n [attr.aria-activedescendant]=\"open() ? activeOptionId() : null\" (click)=\"openFromTrigger()\"\r\n [readonly]=\"!isSearchMode()\" role=\"combobox\" aria-autocomplete=\"list\" aria-haspopup=\"listbox\"\r\n aria-controls=\"{{ _id }}-listbox\" aria-expanded=\"false\" [attr.aria-expanded]=\"open() ? 'true' : 'false'\"\r\n [attr.placeholder]=\"inputPlaceholderKey() ? (inputPlaceholderKey() | translate) : inputPlaceholderText()\"\r\n [value]=\"triggerValue()\" (keydown)=\"onTriggerKeydown($event)\" (focus)=\"openFromTrigger()\" (input)=\"onTriggerInput(triggerInput.value)\"/>\r\n\r\n <button type=\"button\" class=\"solaris-select__chevron-btn\" [disabled]=\"disabled\" (click)=\"toggleOpen()\"\r\n [attr.aria-label]=\"('ui.solaris.aria.toggleOptions' | translate)\">\r\n <i class=\"ph ph-caret-down\" aria-hidden=\"true\"></i>\r\n </button>\r\n\r\n <span class=\"solaris-select__measure solaris-select__token\" #measureSlot aria-hidden=\"true\">\r\n {{ selectedText() }}\r\n </span>\r\n </div>\r\n\r\n <ng-template solaris-popover-panel>\r\n <div class=\"solaris-select__panel\" (keydown)=\"onPanelKeydown($event)\" [style.max-height]=\"panelMaxHeight\">\r\n @if (canGoBack()) {\r\n <div class=\"solaris-select__nav\">\r\n <button type=\"button\" class=\"solaris-select__back\" (click)=\"goBack()\">\r\n <i class=\"ph ph-arrow-left\"></i>\r\n <span>\r\n @if (backKey) { {{ backKey | translate }} }\r\n @else { {{ backText | translate }} }\r\n </span>\r\n </button>\r\n\r\n <div class=\"solaris-select__title\">\r\n @if (currentLevel().titleKey) { {{ currentLevel().titleKey! | translate }} }\r\n @else { {{ currentLevel().title ?? '' }} }\r\n </div>\r\n </div>\r\n }\r\n\r\n <div class=\"solaris-select__list\" role=\"listbox\" [id]=\"_id + '-listbox'\"\r\n [attr.aria-multiselectable]=\"multiple ? 'true' : null\"\r\n [attr.aria-activedescendant]=\"activeOptionId()\">\r\n @for (row of rows(); track trackRow($index, row)) {\r\n @if (row.kind === 'group') {\r\n <div class=\"solaris-select__group\">\r\n @if (row.labelKey) { {{ row.labelKey | translate }} }\r\n @else { {{ row.label }} }\r\n </div>\r\n }\r\n\r\n @if (row.kind === 'divider') {\r\n <div class=\"solaris-select__divider\" aria-hidden=\"true\"></div>\r\n }\r\n\r\n @if (row.kind === 'item') {\r\n <button type=\"button\" class=\"solaris-select__option\" [id]=\"row.id\" [disabled]=\"row.disabled\"\r\n [attr.aria-selected]=\"row.selected ? 'true' : 'false'\" [class.is-active]=\"row.optionIndex === activeIndex()\"\r\n [class.is-selected]=\"row.selected\" [class.is-navigable]=\"row.hasChildren\" (click)=\"onOptionClick(row.item)\">\r\n <span class=\"solaris-select__option-leading\">\r\n @if (multiple) {\r\n @if (!row.hasChildren) {\r\n <span class=\"solaris-select__checkbox\" aria-hidden=\"true\" [class.is-checked]=\"row.selected\">\r\n <i class=\"ph ph-check\"></i>\r\n </span>\r\n } @else {\r\n @if (row.item.imageUrl) {\r\n <img class=\"solaris-select__avatar\" [ngSrc]=\"row.item.imageUrl\" alt=\"\" fill/>\r\n } @else if (row.item.icon) {\r\n <i class=\"solaris-select__icon\" [class]=\"row.item.icon\" aria-hidden=\"true\"></i>\r\n } @else {\r\n <span class=\"solaris-select__checkbox-spacer\" aria-hidden=\"true\"></span>\r\n }\r\n }\r\n }\r\n\r\n @if (!multiple) {\r\n @if (row.item.imageUrl) {\r\n <img class=\"solaris-select__avatar\" [ngSrc]=\"row.item.imageUrl\" alt=\"\" fill />\r\n } @else if (row.item.icon) {\r\n <i class=\"solaris-select__icon\" [class]=\"row.item.icon\" aria-hidden=\"true\"></i>\r\n }\r\n }\r\n </span>\r\n\r\n <span class=\"solaris-select__option-main\">\r\n <span class=\"solaris-select__option-label\">\r\n @if (row.item.labelKey) { {{ row.item.labelKey | translate }} }\r\n @else { {{ row.item.label }} }\r\n </span>\r\n\r\n @if (row.item.description || row.item.descriptionKey) {\r\n <span class=\"solaris-select__option-desc\">\r\n @if (row.item.descriptionKey) { {{ row.item.descriptionKey | translate }} }\r\n @else { {{ row.item.description }} }\r\n </span>\r\n }\r\n </span>\r\n\r\n <span class=\"solaris-select__option-end\">\r\n @if (row.item.endTextKey) {\r\n <span class=\"solaris-select__end-text\">{{ row.item.endTextKey | translate }}</span>\r\n } @else if (row.item.endText) {\r\n <span class=\"solaris-select__end-text\">{{ row.item.endText }}</span>\r\n }\r\n\r\n @if (!multiple && row.selected) {\r\n <i class=\"ph ph-check\" aria-hidden=\"true\"></i>\r\n }\r\n\r\n @if (row.hasChildren) {\r\n <i class=\"ph ph-caret-right\" aria-hidden=\"true\"></i>\r\n }\r\n </span>\r\n </button>\r\n }\r\n }\r\n </div>\r\n </div>\r\n </ng-template>\r\n</solaris-popover>\r\n","/// <reference path=\"./typings/intl-tel-input-utils.d.ts\" />\r\n\r\nexport * from './lib/navigations/navigations.index';\r\nexport * from './lib/feedbacks/feedbacks.index';\r\nexport * from './lib/layouts/layouts.index';\r\nexport * from './lib/actions/actions.index';\r\nexport * from './lib/visual/visual.index';\r\nexport * from './services/services.index';\r\nexport * from './lib/common/common.index';\r\nexport * from './lib/forms/forms.index';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["clamp","initialXY","i1.SolarisTabs","coerceBoolean","PRESET_COLORS","resolveRadius","i1","i1.SolarisTable"],"mappings":"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"}
|