@educarehq/solaris-components 0.3.1 → 0.3.4

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/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/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/loading/component/loading.ts","../../../projects/solaris-components/src/lib/feedbacks/loading/component/loading.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/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/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/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/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/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/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/messages/error/field-error.ts","../../../projects/solaris-components/src/lib/forms/form-field/messages/error/field-error.html","../../../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 { 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 {\r\n ApplicationRef,\r\n ChangeDetectionStrategy,\r\n Component,\r\n computed,\r\n ContentChild,\r\n DestroyRef,\r\n effect,\r\n EmbeddedViewRef,\r\n EventEmitter,\r\n HostBinding,\r\n inject,\r\n Input,\r\n Output,\r\n signal,\r\n ViewEncapsulation\r\n} 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 console.log(`[Popover#${this._id} ${this.panelClass}] input open=`, v);\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 static seq = 0;\r\n private _setting = false;\r\n private panelHost?: HTMLDivElement;\r\n private panelView?: EmbeddedViewRef<any>;\r\n private readonly _id = ++SolarisPopover.seq;\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 console.log(`[Popover#${this._id} ${this.panelClass}] outside -> close`);\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-dropdown)';\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 { 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 ButtonDirective {\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 { ButtonDirective } 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, ButtonDirective],\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 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\">\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 { ButtonDirective } 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: [ButtonDirective, 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, 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, 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 { 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 { 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 { ButtonDirective } 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 ButtonDirective,\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","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 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 } from '@angular/core';\r\n\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 @HostBinding('attr.solaris-input') readonly attr = '';\r\n @HostBinding('attr.placeholder') get placeholderAttr() {\r\n return this.el.nativeElement.getAttribute('placeholder');\r\n }\r\n}\r\n","import { AfterViewInit, ChangeDetectionStrategy, Component, ElementRef, forwardRef, HostBinding, inject, Input,\r\n OnDestroy, Renderer2, ViewChild } from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALIDATORS, NG_VALUE_ACCESSOR, ValidationErrors, Validator } 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 { 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 renderer: Renderer2 = inject(Renderer2);\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 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\r\n #input\r\n solaris-input\r\n type=\"tel\"\r\n [disabled]=\"_disabled\"\r\n (focus)=\"onFocus()\"\r\n (input)=\"onInput()\"\r\n (blur)=\"onBlur()\"\r\n data-bwignore=\"true\"\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 { 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\nimport { SOLARIS_FORM_FIELD_CONTROLLER, SolarisFormFieldControllerLike } from '../../form-field/tokens/form-field-controller.token';\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 @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 'Hide password'; }\r\n protected get ariaLabelShow() { return 'Show password'; }\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, 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 { ChangeDetectionStrategy, Component, ContentChild, Input, computed, effect, inject, signal, input } from '@angular/core';\r\n\r\nimport { SolarisFormFieldAppearance, SolarisFormFieldRadius, SolarisFormFieldShowErrors } from '../model/form-field.type';\r\nimport { SOLARIS_FORM_FIELD_CONTROLLER } from '../tokens/form-field-controller.token';\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 appearance: SolarisFormFieldAppearance = 'filled';\r\n @Input() public showErrors: SolarisFormFieldShowErrors = 'dirtyOrTouched';\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","<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 @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()) {\r\n <span class=\"solaris-form-field__suffix\">\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 </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 {\r\n AfterViewInit, ChangeDetectionStrategy, Component, DestroyRef, ElementRef, HostBinding, Input,\r\n Optional, ViewChild, computed, effect, inject, signal, Injector, forwardRef, OnInit\r\n} 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 { SolarisPopover } from '../../../navigations/popover/component/popover';\r\nimport { SolarisTranslationPipe } from '@educarehq/solaris-services';\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: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => SolarisSelect), multi: true }],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class SolarisSelect implements OnInit, ControlValueAccessor, AfterViewInit {\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 private readonly _rootNodes = signal<SolarisSelectNode[]>([]);\r\n @Input() set items(v: SolarisSelectNode[] | null | undefined) {\r\n console.count('[Select] items setter');\r\n console.log('[Select] items length:', (v ?? []).length);\r\n\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 console.log('[Select] sanitize changed?', changed, 'cur:', cur, 'next:', next);\r\n\r\n if (changed) this._value.set(next);\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 if (aa.length !== bb.length) return false;\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 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 return this.eq(a, b);\r\n }\r\n\r\n private _multiple = false;\r\n @Input() set multiple(v: boolean) {\r\n this._multiple = v;\r\n const cur = this._value();\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 get multiple() { return this._multiple; }\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 @Input() set disabled(v: boolean) {\r\n this._disabled.set(v);\r\n if (v) this.open.set(false);\r\n }\r\n get disabled() { return this._disabled(); }\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 readonly showToken = computed(() => {\r\n return this.selectedCount() > 0;\r\n });\r\n readonly selectedText = computed(() => {\r\n const items = this.selectedItems();\r\n if (!items.length) return '';\r\n return items.map(it => this.itemLabel(it)).filter(Boolean).join(this.selectionSeparator);\r\n });\r\n readonly triggerValue = computed(() => {\r\n if (this.isSearchMode()) return this.searchTerm();\r\n return '';\r\n });\r\n readonly activeOptionId = computed(() => {\r\n const idx = this.activeIndex();\r\n const row = this.itemRows()[idx];\r\n return row?.id ?? null;\r\n });\r\n readonly inputPlaceholder = computed(() => {\r\n if (this.selectedCount() > 0) return '';\r\n if (this.searchTerm().length > 0) return '';\r\n return this.searchPlaceholder || 'Search...';\r\n });\r\n private readonly _value = signal<any>(null);\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 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 return all.filter(it => v != null && this.eq(v, it.value));\r\n });\r\n private readonly _stack = signal<StackLevel[]>([]);\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 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 private _measureNonce = 0;\r\n private resizeObs?: ResizeObserver;\r\n matchWidthEl: HTMLElement | null = null;\r\n private propagateTouched: () => void = () => {};\r\n private propagateChange: (v: any) => void = () => {};\r\n private resolvedNgControl: NgControl | null | undefined = undefined;\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 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 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 const el = this.triggerWrap?.nativeElement;\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 console.count('[Select] writeValue');\r\n console.log('[Select] writeValue obj:', obj);\r\n this._value.set(this.sanitizeValue(obj));\r\n }\r\n registerOnChange(fn: any): void {\r\n console.count('[Select] registerOnChange');\r\n this.propagateChange = fn;\r\n }\r\n registerOnTouched(fn: any): void { this.propagateTouched = fn; }\r\n setDisabledState?(isDisabled: boolean): void { this._disabled.set(isDisabled); }\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 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 itemLabel(item: SolarisSelectItem): string {\r\n return item.label ?? item.searchText ?? '';\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 if (n.children?.length) this.collectAllItems(n.children, out);\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 const s = [...this._stack()];\r\n s.pop();\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 this._stack.set([...this._stack(), { title: item.childrenTitle, titleKey: item.childrenTitleKey, nodes: item.children }]);\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 if (!term) return nodes;\r\n\r\n const matchItem = (it: SolarisSelectItem) => {\r\n const hay = [it.searchText, it.label, it.description, it.endText].filter(Boolean).join(' ').toLowerCase();\r\n return hay.includes(term);\r\n };\r\n\r\n const walk = (list: SolarisSelectNode[]): SolarisSelectNode[] => {\r\n const res: SolarisSelectNode[] = [];\r\n for (const n of list) {\r\n if (n.kind === 'divider') { res.push(n); continue; }\r\n\r\n if (n.kind === 'group') {\r\n const sub = walk(n.items);\r\n if (sub.some(x => x.kind !== 'divider')) res.push({ ...n, items: sub });\r\n continue;\r\n }\r\n\r\n if (n.children?.length) {\r\n const sub = walk(n.children);\r\n if (matchItem(n) || sub.some(x => x.kind !== 'divider')) res.push({ ...n, children: sub });\r\n } else if (matchItem(n)) {\r\n res.push(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 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 out.push(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 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 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') items.push(n);\r\n else if (n.kind === 'group') others.push({ ...n, items: this.applySelectedFirst(n.items) });\r\n else others.push(n);\r\n }\r\n\r\n const sel: SolarisSelectItem[] = [];\r\n const non: SolarisSelectItem[] = [];\r\n for (const it of items) (selected(it) ? sel : non).push(it);\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 res.push(...reorderSegment(buf));\r\n buf = [];\r\n };\r\n\r\n for (const n of nodes) {\r\n if (n.kind === 'divider') { flush(); res.push(n); }\r\n else buf.push(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 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 walk(n.items);\r\n continue;\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 return { rows, itemRows };\r\n }\r\n\r\n isSelected(value: any): boolean {\r\n const v = this._value();\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 return v != null && this.eq(v, value);\r\n }\r\n\r\n private setValue(next: any) {\r\n console.count('[Select] setValue (user)');\r\n const cur = this._value();\r\n console.log('[Select] setValue cur:', cur, 'next:', next);\r\n\r\n if (this.sameCvaValue(cur, next)) return;\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 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 if (idx >= 0) arr.splice(idx, 1);\r\n else arr.push(value);\r\n this.setValue(arr);\r\n }\r\n\r\n selectSingle(value: any) {\r\n if (this.multiple) return;\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) { this.enterChildren(item); return; }\r\n\r\n if (this.multiple) this.toggleItem(item.value);\r\n else this.selectSingle(item.value);\r\n }\r\n\r\n openFromTrigger() {\r\n if (this.disabled) return;\r\n if (!this.open()) this.open.set(true);\r\n }\r\n\r\n toggleOpen() {\r\n if (this.disabled) return;\r\n const next = !this.open();\r\n if (next) this.searchTerm.set('');\r\n this.open.set(next);\r\n }\r\n\r\n onTriggerInput(v: string) {\r\n if (this.disabled) return;\r\n if (!this.open()) this.open.set(true);\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 (ev.key === 'ArrowDown' || ev.key === 'ArrowUp' || ev.key === 'Home' || ev.key === 'End' || ev.key === 'Enter' || ev.key === 'Escape') {\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 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 case 'ArrowUp':\r\n ev.preventDefault();\r\n this.activeIndex.set(clamp(this.activeIndex() - 1));\r\n break;\r\n case 'Home':\r\n ev.preventDefault();\r\n this.activeIndex.set(0);\r\n break;\r\n case 'End':\r\n ev.preventDefault();\r\n this.activeIndex.set(max);\r\n break;\r\n case 'Enter':\r\n ev.preventDefault();\r\n this.onOptionClick(items[this.activeIndex()].item);\r\n break;\r\n case 'ArrowRight': {\r\n const row = items[this.activeIndex()];\r\n if (row?.hasChildren) {\r\n ev.preventDefault();\r\n this.enterChildren(row.item);\r\n }\r\n break;\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) { this.showCount.set(false); return; }\r\n if (this.selectionDisplay === 'count') { this.showCount.set(true); return; }\r\n if (this.selectionDisplay === 'list') { this.showCount.set(false); return; }\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 this.measureAuto(force);\r\n });\r\n });\r\n }\r\n\r\n private measureAuto(_force: boolean) {\r\n if (!this.multiple) { this.showCount.set(false); return; }\r\n if (this.selectionDisplay === 'count') { this.showCount.set(true); return; }\r\n if (this.selectionDisplay === 'list') { this.showCount.set(false); return; }\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 if (!text) { if (this.showCount()) this.showCount.set(false); }\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 ? (needed > (available - marginBack)) : (needed > (available + marginForward));\r\n if (next !== current) this.showCount.set(next);\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 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 if (this.searchable) this.triggerInput?.nativeElement?.select?.();\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) walk(n.children);\r\n }\r\n }\r\n };\r\n\r\n walk(this._rootNodes());\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 return this.isSelectableValue(next) ? next : null;\r\n }\r\n\r\n selectedCountLabel(): string {\r\n const count = this.selectedCount();\r\n if (this.selectedCountText) return this.selectedCountText.replace('{count}', String(count));\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]=\"inputPlaceholder()\" (focus)=\"openFromTrigger()\" (input)=\"onTriggerInput(triggerInput.value)\"\r\n [value]=\"triggerValue()\" (keydown)=\"onTriggerKeydown($event)\"/>\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/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","i1.SolarisTabs","coerceBoolean","PRESET_COLORS","resolveRadius","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/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/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/loading/component/loading.ts","../../../projects/solaris-components/src/lib/feedbacks/loading/component/loading.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/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/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/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/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/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/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/messages/error/field-error.ts","../../../projects/solaris-components/src/lib/forms/form-field/messages/error/field-error.html","../../../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 { 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 {\r\n ApplicationRef,\r\n ChangeDetectionStrategy,\r\n Component,\r\n computed,\r\n ContentChild,\r\n DestroyRef,\r\n effect,\r\n EmbeddedViewRef,\r\n EventEmitter,\r\n HostBinding,\r\n inject,\r\n Input,\r\n Output,\r\n signal,\r\n ViewEncapsulation\r\n} 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 console.log(`[Popover#${this._id} ${this.panelClass}] input open=`, v);\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 static seq = 0;\r\n private _setting = false;\r\n private panelHost?: HTMLDivElement;\r\n private panelView?: EmbeddedViewRef<any>;\r\n private readonly _id = ++SolarisPopover.seq;\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 console.log(`[Popover#${this._id} ${this.panelClass}] outside -> close`);\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-dropdown)';\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 { 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 ButtonDirective {\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 { ButtonDirective } 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, ButtonDirective],\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 { ButtonDirective } 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: [ButtonDirective, 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, 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, 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 { 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 { 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 { ButtonDirective } 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 ButtonDirective,\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","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 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 } from '@angular/core';\r\n\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 @HostBinding('attr.solaris-input') readonly attr = '';\r\n @HostBinding('attr.placeholder') get placeholderAttr() {\r\n return this.el.nativeElement.getAttribute('placeholder');\r\n }\r\n}\r\n","import { AfterViewInit, ChangeDetectionStrategy, Component, ElementRef, forwardRef, HostBinding, inject, Input,\r\n OnDestroy, Renderer2, ViewChild } from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALIDATORS, NG_VALUE_ACCESSOR, ValidationErrors, Validator } 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 { 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 renderer: Renderer2 = inject(Renderer2);\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 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\r\n #input\r\n solaris-input\r\n type=\"tel\"\r\n [disabled]=\"_disabled\"\r\n (focus)=\"onFocus()\"\r\n (input)=\"onInput()\"\r\n (blur)=\"onBlur()\"\r\n data-bwignore=\"true\"\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 { 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\nimport { SOLARIS_FORM_FIELD_CONTROLLER, SolarisFormFieldControllerLike } from '../../form-field/tokens/form-field-controller.token';\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 @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 'Hide password'; }\r\n protected get ariaLabelShow() { return 'Show password'; }\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, 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 { ChangeDetectionStrategy, Component, ContentChild, Input, computed, effect, inject, signal, input } from '@angular/core';\r\n\r\nimport { SolarisFormFieldAppearance, SolarisFormFieldRadius, SolarisFormFieldShowErrors } from '../model/form-field.type';\r\nimport { SOLARIS_FORM_FIELD_CONTROLLER } from '../tokens/form-field-controller.token';\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 appearance: SolarisFormFieldAppearance = 'filled';\r\n @Input() public showErrors: SolarisFormFieldShowErrors = 'dirtyOrTouched';\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","<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 @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()) {\r\n <span class=\"solaris-form-field__suffix\">\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 </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 {\r\n AfterViewInit, ChangeDetectionStrategy, Component, DestroyRef, ElementRef, HostBinding, Input,\r\n Optional, ViewChild, computed, effect, inject, signal, Injector, forwardRef, OnInit\r\n} 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 { SolarisPopover } from '../../../navigations/popover/component/popover';\r\nimport { SolarisTranslationPipe } from '@educarehq/solaris-services';\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: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => SolarisSelect), multi: true }],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class SolarisSelect implements OnInit, ControlValueAccessor, AfterViewInit {\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 private readonly _rootNodes = signal<SolarisSelectNode[]>([]);\r\n @Input() set items(v: SolarisSelectNode[] | null | undefined) {\r\n this._rootNodes.set(v ?? []);\r\n this.resetStack();\r\n const cur = this._value();\r\n const next = this.sanitizeValue(cur);\r\n const changed = !this.sameCvaValue(cur, next);\r\n if (changed) this._value.set(next);\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 if (aa.length !== bb.length) return false;\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 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 return this.eq(a, b);\r\n }\r\n\r\n private _multiple = false;\r\n @Input() set multiple(v: boolean) {\r\n this._multiple = v;\r\n const cur = this._value();\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 get multiple() { return this._multiple; }\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 @Input() set disabled(v: boolean) {\r\n this._disabled.set(v);\r\n if (v) this.open.set(false);\r\n }\r\n get disabled() { return this._disabled(); }\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 readonly showToken = computed(() => {\r\n return this.selectedCount() > 0;\r\n });\r\n readonly selectedText = computed(() => {\r\n const items = this.selectedItems();\r\n if (!items.length) return '';\r\n return items.map(it => this.itemLabel(it)).filter(Boolean).join(this.selectionSeparator);\r\n });\r\n readonly triggerValue = computed(() => {\r\n if (this.isSearchMode()) return this.searchTerm();\r\n return '';\r\n });\r\n readonly activeOptionId = computed(() => {\r\n const idx = this.activeIndex();\r\n const row = this.itemRows()[idx];\r\n return row?.id ?? null;\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 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 private readonly _value = signal<any>(null);\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 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 return all.filter(it => v != null && this.eq(v, it.value));\r\n });\r\n private readonly _stack = signal<StackLevel[]>([]);\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 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 private _measureNonce = 0;\r\n private resizeObs?: ResizeObserver;\r\n matchWidthEl: HTMLElement | null = null;\r\n private propagateTouched: () => void = () => {};\r\n private propagateChange: (v: any) => void = () => {};\r\n private resolvedNgControl: NgControl | null | undefined = undefined;\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 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 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 const el = this.triggerWrap?.nativeElement;\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 console.count('[Select] writeValue');\r\n console.log('[Select] writeValue obj:', obj);\r\n this._value.set(this.sanitizeValue(obj));\r\n }\r\n registerOnChange(fn: any): void {\r\n console.count('[Select] registerOnChange');\r\n this.propagateChange = fn;\r\n }\r\n registerOnTouched(fn: any): void { this.propagateTouched = fn; }\r\n setDisabledState?(isDisabled: boolean): void { this._disabled.set(isDisabled); }\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 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 itemLabel(item: SolarisSelectItem): string {\r\n return item.label ?? item.searchText ?? '';\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 if (n.children?.length) this.collectAllItems(n.children, out);\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 const s = [...this._stack()];\r\n s.pop();\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 this._stack.set([...this._stack(), { title: item.childrenTitle, titleKey: item.childrenTitleKey, nodes: item.children }]);\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 if (!term) return nodes;\r\n\r\n const matchItem = (it: SolarisSelectItem) => {\r\n const hay = [it.searchText, it.label, it.description, it.endText].filter(Boolean).join(' ').toLowerCase();\r\n return hay.includes(term);\r\n };\r\n\r\n const walk = (list: SolarisSelectNode[]): SolarisSelectNode[] => {\r\n const res: SolarisSelectNode[] = [];\r\n for (const n of list) {\r\n if (n.kind === 'divider') { res.push(n); continue; }\r\n\r\n if (n.kind === 'group') {\r\n const sub = walk(n.items);\r\n if (sub.some(x => x.kind !== 'divider')) res.push({ ...n, items: sub });\r\n continue;\r\n }\r\n\r\n if (n.children?.length) {\r\n const sub = walk(n.children);\r\n if (matchItem(n) || sub.some(x => x.kind !== 'divider')) res.push({ ...n, children: sub });\r\n } else if (matchItem(n)) {\r\n res.push(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 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 out.push(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 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 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') items.push(n);\r\n else if (n.kind === 'group') others.push({ ...n, items: this.applySelectedFirst(n.items) });\r\n else others.push(n);\r\n }\r\n\r\n const sel: SolarisSelectItem[] = [];\r\n const non: SolarisSelectItem[] = [];\r\n for (const it of items) (selected(it) ? sel : non).push(it);\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 res.push(...reorderSegment(buf));\r\n buf = [];\r\n };\r\n\r\n for (const n of nodes) {\r\n if (n.kind === 'divider') { flush(); res.push(n); }\r\n else buf.push(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 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 walk(n.items);\r\n continue;\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 return { rows, itemRows };\r\n }\r\n\r\n isSelected(value: any): boolean {\r\n const v = this._value();\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 return v != null && this.eq(v, value);\r\n }\r\n\r\n private setValue(next: any) {\r\n console.count('[Select] setValue (user)');\r\n const cur = this._value();\r\n console.log('[Select] setValue cur:', cur, 'next:', next);\r\n\r\n if (this.sameCvaValue(cur, next)) return;\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 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 if (idx >= 0) arr.splice(idx, 1);\r\n else arr.push(value);\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 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 if (!this.open()) this.open.set(true);\r\n }\r\n\r\n toggleOpen() {\r\n if (this.disabled) return;\r\n const next = !this.open();\r\n if (next) this.searchTerm.set('');\r\n this.open.set(next);\r\n }\r\n\r\n onTriggerInput(v: string) {\r\n if (this.disabled) return;\r\n if (!this.open()) this.open.set(true);\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 (ev.key === 'ArrowDown' || ev.key === 'ArrowUp' || ev.key === 'Home' || ev.key === 'End' || ev.key === 'Enter' || ev.key === 'Escape') {\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 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 case 'ArrowUp':\r\n ev.preventDefault();\r\n this.activeIndex.set(clamp(this.activeIndex() - 1));\r\n break;\r\n case 'Home':\r\n ev.preventDefault();\r\n this.activeIndex.set(0);\r\n break;\r\n case 'End':\r\n ev.preventDefault();\r\n this.activeIndex.set(max);\r\n break;\r\n case 'Enter':\r\n ev.preventDefault();\r\n this.onOptionClick(items[this.activeIndex()].item);\r\n break;\r\n case 'ArrowRight': {\r\n const row = items[this.activeIndex()];\r\n if (row?.hasChildren) {\r\n ev.preventDefault();\r\n this.enterChildren(row.item);\r\n }\r\n break;\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) { this.showCount.set(false); return; }\r\n if (this.selectionDisplay === 'count') { this.showCount.set(true); return; }\r\n if (this.selectionDisplay === 'list') { this.showCount.set(false); return; }\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 this.measureAuto(force);\r\n });\r\n });\r\n }\r\n\r\n private measureAuto(_force: boolean) {\r\n if (!this.multiple) { this.showCount.set(false); return; }\r\n if (this.selectionDisplay === 'count') { this.showCount.set(true); return; }\r\n if (this.selectionDisplay === 'list') { this.showCount.set(false); return; }\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 if (!text) { if (this.showCount()) this.showCount.set(false); }\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 ? (needed > (available - marginBack)) : (needed > (available + marginForward));\r\n if (next !== current) this.showCount.set(next);\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 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 if (this.searchable) this.triggerInput?.nativeElement?.select?.();\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) walk(n.children);\r\n }\r\n }\r\n };\r\n\r\n walk(this._rootNodes());\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 return this.isSelectableValue(next) ? next : null;\r\n }\r\n\r\n selectedCountLabel(): string {\r\n const count = this.selectedCount();\r\n if (this.selectedCountText) return this.selectedCountText.replace('{count}', String(count));\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/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","i1.SolarisTabs","coerceBoolean","PRESET_COLORS","resolveRadius","i1.SolarisTable"],"mappings":"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"}