@raintonic/formaui 0.3.0 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (30) hide show
  1. package/fesm2022/raintonic-formaui-cdk-overlay.mjs +8 -1
  2. package/fesm2022/raintonic-formaui-cdk-overlay.mjs.map +1 -1
  3. package/fesm2022/raintonic-formaui-components-checkbox.mjs +2 -2
  4. package/fesm2022/raintonic-formaui-components-checkbox.mjs.map +1 -1
  5. package/fesm2022/raintonic-formaui-components-date-picker.mjs +2 -2
  6. package/fesm2022/raintonic-formaui-components-date-picker.mjs.map +1 -1
  7. package/fesm2022/raintonic-formaui-components-form-field.mjs +2 -2
  8. package/fesm2022/raintonic-formaui-components-form-field.mjs.map +1 -1
  9. package/fesm2022/raintonic-formaui-components-menu.mjs +2 -2
  10. package/fesm2022/raintonic-formaui-components-menu.mjs.map +1 -1
  11. package/fesm2022/raintonic-formaui-components-paginator.mjs +2 -2
  12. package/fesm2022/raintonic-formaui-components-paginator.mjs.map +1 -1
  13. package/fesm2022/raintonic-formaui-components-popover.mjs +2 -2
  14. package/fesm2022/raintonic-formaui-components-popover.mjs.map +1 -1
  15. package/fesm2022/raintonic-formaui-components-radio.mjs +6 -5
  16. package/fesm2022/raintonic-formaui-components-radio.mjs.map +1 -1
  17. package/fesm2022/raintonic-formaui-components-select.mjs +2 -2
  18. package/fesm2022/raintonic-formaui-components-select.mjs.map +1 -1
  19. package/fesm2022/raintonic-formaui-components-time-picker.mjs +2 -2
  20. package/fesm2022/raintonic-formaui-components-time-picker.mjs.map +1 -1
  21. package/fesm2022/raintonic-formaui-components-tooltip.mjs +2 -2
  22. package/fesm2022/raintonic-formaui-components-tooltip.mjs.map +1 -1
  23. package/fesm2022/raintonic-formaui.mjs +1 -1
  24. package/fesm2022/raintonic-formaui.mjs.map +1 -1
  25. package/llms-full.txt +1 -0
  26. package/package.json +1 -1
  27. package/types/raintonic-formaui-cdk-overlay.d.ts.map +1 -1
  28. package/types/raintonic-formaui-components-radio.d.ts +2 -1
  29. package/types/raintonic-formaui-components-radio.d.ts.map +1 -1
  30. package/types/raintonic-formaui.d.ts +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"raintonic-formaui-components-time-picker.mjs","sources":["../../../lib/components/time-picker/time-picker.utils.ts","../../../lib/components/time-picker/time-picker.intl.ts","../../../lib/components/time-picker/time-list.component.ts","../../../lib/components/time-picker/time-list.component.html","../../../lib/components/time-picker/time-picker.component.ts","../../../lib/components/time-picker/time-picker.component.html","../../../lib/components/time-picker/raintonic-formaui-components-time-picker.ts"],"sourcesContent":["import { TimeFormat, TimeOption, TimeValue } from './time-picker.types';\r\n\r\n/**\r\n * Convert a TimeValue to total minutes for comparison purposes.\r\n */\r\nexport function timeToMinutes(time: TimeValue): number {\r\n return time.hours * 60 + time.minutes + (time.seconds ? time.seconds / 60 : 0);\r\n}\r\n\r\n/**\r\n * Compare two TimeValue objects.\r\n * Returns -1 if a < b, 0 if equal, 1 if a > b.\r\n */\r\nexport function compareTime(a: TimeValue, b: TimeValue): number {\r\n const aMin = timeToMinutes(a);\r\n const bMin = timeToMinutes(b);\r\n if (aMin < bMin) return -1;\r\n if (aMin > bMin) return 1;\r\n return 0;\r\n}\r\n\r\n/**\r\n * Check if a time is within an optional min/max range (inclusive).\r\n */\r\nexport function isTimeInRange(time: TimeValue, min?: TimeValue, max?: TimeValue): boolean {\r\n if (min && compareTime(time, min) < 0) return false;\r\n if (max && compareTime(time, max) > 0) return false;\r\n return true;\r\n}\r\n\r\n/**\r\n * Format a TimeValue for display.\r\n * - 24h: \"14:30\" or \"14:30:00\"\r\n * - 12h: \"2:30 PM\" or \"2:30:00 PM\"\r\n */\r\nexport function formatTime(value: TimeValue | null, format: TimeFormat, showSeconds: boolean): string {\r\n if (!value) return '';\r\n\r\n const h = value.hours;\r\n const m = value.minutes;\r\n const s = value.seconds ?? 0;\r\n\r\n const pad = (n: number): string => n.toString().padStart(2, '0');\r\n\r\n if (format === '24h') {\r\n const base = `${pad(h)}:${pad(m)}`;\r\n return showSeconds ? `${base}:${pad(s)}` : base;\r\n }\r\n\r\n // 12h format\r\n const period = h >= 12 ? 'PM' : 'AM';\r\n let displayHour = h;\r\n if (h === 0) displayHour = 12;\r\n else if (h > 12) displayHour = h - 12;\r\n const base = `${displayHour}:${pad(m)}`;\r\n return showSeconds ? `${base}:${pad(s)} ${period}` : `${base} ${period}`;\r\n}\r\n\r\n/**\r\n * Parse a time string into a TimeValue.\r\n * Supports formats: \"HH:mm\", \"HH:mm:ss\", \"h:mm AM/PM\", \"h:mm:ss AM/PM\"\r\n * Returns null if the string cannot be parsed.\r\n */\r\nexport function parseTimeString(str: string, format: TimeFormat): TimeValue | null {\r\n if (!str?.trim()) return null;\r\n\r\n const trimmed = str.trim();\r\n\r\n if (format === '12h') {\r\n // Match patterns like \"2:30 PM\", \"12:30:45 AM\"\r\n const match12 = /^(\\d{1,2}):(\\d{2})(?::(\\d{2}))?\\s*(AM|PM)$/i.exec(trimmed);\r\n if (!match12) return null;\r\n\r\n let hours = parseInt(match12[1], 10);\r\n const minutes = parseInt(match12[2], 10);\r\n const seconds = match12[3] ? parseInt(match12[3], 10) : undefined;\r\n const period = match12[4].toUpperCase();\r\n\r\n if (hours < 1 || hours > 12 || minutes < 0 || minutes > 59) return null;\r\n if (seconds !== undefined && (seconds < 0 || seconds > 59)) return null;\r\n\r\n if (period === 'AM' && hours === 12) hours = 0;\r\n else if (period === 'PM' && hours !== 12) hours += 12;\r\n\r\n return { hours, minutes, ...(seconds !== undefined ? { seconds } : {}) };\r\n }\r\n\r\n // 24h format: \"HH:mm\" or \"HH:mm:ss\"\r\n const match24 = /^(\\d{1,2}):(\\d{2})(?::(\\d{2}))?$/.exec(trimmed);\r\n if (!match24) return null;\r\n\r\n const hours = parseInt(match24[1], 10);\r\n const minutes = parseInt(match24[2], 10);\r\n const seconds = match24[3] ? parseInt(match24[3], 10) : undefined;\r\n\r\n if (hours < 0 || hours > 23 || minutes < 0 || minutes > 59) return null;\r\n if (seconds !== undefined && (seconds < 0 || seconds > 59)) return null;\r\n\r\n return { hours, minutes, ...(seconds !== undefined ? { seconds } : {}) };\r\n}\r\n\r\n/**\r\n * Generate time options for the dropdown list.\r\n */\r\nexport function generateTimeOptions(\r\n format: TimeFormat,\r\n minuteStep: number,\r\n showSeconds: boolean,\r\n min?: TimeValue,\r\n max?: TimeValue,\r\n): TimeOption[] {\r\n const options: TimeOption[] = [];\r\n const step = Math.max(1, Math.min(60, minuteStep));\r\n\r\n for (let h = 0; h < 24; h++) {\r\n for (let m = 0; m < 60; m += step) {\r\n const value: TimeValue = { hours: h, minutes: m, ...(showSeconds ? { seconds: 0 } : {}) };\r\n const label = formatTime(value, format, showSeconds);\r\n const disabled = !isTimeInRange(value, min, max);\r\n options.push({ label, value, disabled });\r\n }\r\n }\r\n\r\n return options;\r\n}\r\n\r\n/**\r\n * Convert a TimeValue to an ISO-like string \"HH:mm\" or \"HH:mm:ss\".\r\n */\r\nexport function timeValueToString(value: TimeValue | null, showSeconds: boolean): string {\r\n if (!value) return '';\r\n const pad = (n: number): string => n.toString().padStart(2, '0');\r\n const base = `${pad(value.hours)}:${pad(value.minutes)}`;\r\n return showSeconds ? `${base}:${pad(value.seconds ?? 0)}` : base;\r\n}\r\n\r\n/**\r\n * Parse an ISO-like time string \"HH:mm\" or \"HH:mm:ss\" into a TimeValue.\r\n * This always parses in 24h format regardless of display format.\r\n */\r\nexport function parseISOTimeString(str: string): TimeValue | null {\r\n if (!str?.trim()) return null;\r\n return parseTimeString(str.trim(), '24h');\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { FuiIntlBase } from '@raintonic/formaui/core';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class FuiTimePickerIntl extends FuiIntlBase {\r\n toggleAriaLabel = 'Toggle time picker';\r\n dialogAriaLabel = 'Time selection';\r\n availableTimesAriaLabel = 'Available times';\r\n}\r\n","import {\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n ElementRef,\r\n inject,\r\n input,\r\n output,\r\n signal,\r\n ViewChild,\r\n ViewEncapsulation,\r\n AfterViewInit,\r\n effect,\r\n} from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { TimeFormat, TimeOption, TimeValue } from './time-picker.types';\r\nimport { compareTime } from './time-picker.utils';\r\nimport { FuiTimePickerIntl } from './time-picker.intl';\r\n\r\n@Component({\r\n selector: 'fui-time-list',\r\n standalone: true,\r\n templateUrl: './time-list.component.html',\r\n styleUrls: ['./time-list.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n encapsulation: ViewEncapsulation.None,\r\n host: {\r\n class: 'fui-time-list',\r\n },\r\n})\r\nexport class FuiTimeListComponent implements AfterViewInit {\r\n /** The list of time options to display. */\r\n readonly options = input.required<TimeOption[]>();\r\n\r\n /** Currently selected time value. */\r\n readonly selectedValue = input<TimeValue | null>(null);\r\n\r\n /** Time format for display. */\r\n readonly format = input<TimeFormat>('24h');\r\n\r\n /** Emitted when an option is selected. */\r\n readonly optionSelected = output<TimeValue>();\r\n\r\n /** Index of the currently focused option for keyboard navigation. */\r\n readonly _focusedIndex = signal(-1);\r\n\r\n @ViewChild('listContainer', { static: false }) listContainer?: ElementRef<HTMLDivElement>;\r\n\r\n readonly intl = inject(FuiTimePickerIntl);\r\n private readonly _cdr = inject(ChangeDetectorRef);\r\n\r\n constructor() {\r\n this.intl.changes.pipe(takeUntilDestroyed()).subscribe(() => { this._cdr.markForCheck(); });\r\n\r\n // Scroll to selected option when options change\r\n effect(() => {\r\n this.selectedValue();\r\n this.options();\r\n // Defer to next microtask so DOM is rendered\r\n void Promise.resolve().then(() => {\r\n this._scrollToSelected();\r\n });\r\n });\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n this._scrollToSelected();\r\n }\r\n\r\n /** Check if an option matches the selected value. */\r\n _isSelected(option: TimeOption): boolean {\r\n const selected = this.selectedValue();\r\n if (!selected) return false;\r\n return compareTime(option.value, selected) === 0;\r\n }\r\n\r\n /** Handle option click. */\r\n _selectOption(option: TimeOption): void {\r\n if (option.disabled) return;\r\n this.optionSelected.emit(option.value);\r\n }\r\n\r\n /** Handle keyboard navigation. */\r\n onKeydown(event: KeyboardEvent): void {\r\n const opts = this.options();\r\n if (!opts.length) return;\r\n\r\n switch (event.key) {\r\n case 'ArrowDown':\r\n event.preventDefault();\r\n this._moveFocus(1);\r\n break;\r\n case 'ArrowUp':\r\n event.preventDefault();\r\n this._moveFocus(-1);\r\n break;\r\n case 'Enter':\r\n event.preventDefault();\r\n this._selectFocused();\r\n break;\r\n case 'Home':\r\n event.preventDefault();\r\n this._setFocusedIndex(0);\r\n break;\r\n case 'End':\r\n event.preventDefault();\r\n this._setFocusedIndex(opts.length - 1);\r\n break;\r\n }\r\n }\r\n\r\n /** Move focus by delta, skipping disabled options. */\r\n private _moveFocus(delta: number): void {\r\n const opts = this.options();\r\n if (!opts.length) return;\r\n\r\n let current = this._focusedIndex();\r\n const len = opts.length;\r\n let attempts = 0;\r\n\r\n do {\r\n current = (current + delta + len) % len;\r\n attempts++;\r\n } while (opts[current].disabled && attempts < len);\r\n\r\n if (!opts[current].disabled) {\r\n this._setFocusedIndex(current);\r\n }\r\n }\r\n\r\n /** Set focused index and scroll into view. */\r\n private _setFocusedIndex(index: number): void {\r\n this._focusedIndex.set(index);\r\n this._scrollToIndex(index);\r\n }\r\n\r\n /** Select the currently focused option. */\r\n private _selectFocused(): void {\r\n const idx = this._focusedIndex();\r\n const opts = this.options();\r\n if (idx >= 0 && idx < opts.length && !opts[idx].disabled) {\r\n this.optionSelected.emit(opts[idx].value);\r\n }\r\n }\r\n\r\n /** Scroll to a specific index in the list. */\r\n private _scrollToIndex(index: number): void {\r\n const container = this.listContainer?.nativeElement;\r\n if (!container) return;\r\n\r\n const items = container.querySelectorAll('.fui-time-list__option');\r\n const item = items[index] as HTMLElement;\r\n if (!item) return;\r\n\r\n const itemTop = item.offsetTop;\r\n const itemBottom = itemTop + item.offsetHeight;\r\n const scrollTop = container.scrollTop;\r\n const scrollBottom = scrollTop + container.clientHeight;\r\n\r\n if (itemTop < scrollTop) {\r\n container.scrollTop = itemTop;\r\n } else if (itemBottom > scrollBottom) {\r\n container.scrollTop = itemBottom - container.clientHeight;\r\n }\r\n }\r\n\r\n /** Scroll to the selected option. */\r\n private _scrollToSelected(): void {\r\n const selected = this.selectedValue();\r\n if (!selected) return;\r\n\r\n const opts = this.options();\r\n const index = opts.findIndex((o) => compareTime(o.value, selected) === 0);\r\n if (index >= 0) {\r\n this._focusedIndex.set(index);\r\n // Defer scroll to ensure DOM is rendered\r\n requestAnimationFrame(() => {\r\n this._scrollToIndex(index);\r\n });\r\n }\r\n }\r\n}\r\n","<div\r\n #listContainer\r\n class=\"fui-time-list__container\"\r\n role=\"listbox\"\r\n tabindex=\"0\"\r\n [attr.aria-label]=\"intl.availableTimesAriaLabel\"\r\n (keydown)=\"onKeydown($event)\"\r\n>\r\n @for (option of options(); track option.label) {\r\n <div\r\n class=\"fui-time-list__option\"\r\n [class.fui-time-list__option--selected]=\"_isSelected(option)\"\r\n [class.fui-time-list__option--disabled]=\"option.disabled\"\r\n [class.fui-time-list__option--focused]=\"_focusedIndex() === $index\"\r\n [attr.id]=\"'fui-time-option-' + $index\"\r\n [attr.aria-selected]=\"_isSelected(option)\"\r\n [attr.aria-disabled]=\"option.disabled\"\r\n role=\"option\"\r\n (click)=\"_selectOption(option)\"\r\n >\r\n {{ option.label }}\r\n </div>\r\n }\r\n</div>\r\n","import {\r\n booleanAttribute,\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n computed,\r\n DoCheck,\r\n effect,\r\n ElementRef,\r\n inject,\r\n NgZone,\r\n input,\r\n InputSignal,\r\n InputSignalWithTransform,\r\n OnDestroy,\r\n output,\r\n OutputEmitterRef,\r\n signal,\r\n ViewChild,\r\n ViewEncapsulation,\r\n WritableSignal,\r\n} from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { ControlValueAccessor, FormGroupDirective, NG_VALUE_ACCESSOR, NgControl, NgForm } from '@angular/forms';\r\nimport { DOCUMENT } from '@angular/common';\r\nimport { fromEvent, Subject, Subscription } from 'rxjs';\r\nimport { filter } from 'rxjs/operators';\r\nimport { injectNgControl, updateErrorState, syncRequiredState, syncNgControlDisabled } from '@raintonic/formaui/cdk/form-field';\r\nimport { FUI_FORM_FIELD_CONTROL, FuiFormFieldControl } from '@raintonic/formaui/core';\r\nimport { DefaultErrorStateMatcher, ErrorStateMatcher } from '@raintonic/formaui/core';\r\nimport { FuiConnectedPosition, FuiOverlayRef, FuiOverlayService } from '@raintonic/formaui/cdk/overlay';\r\nimport { FuiIconComponent } from '@raintonic/formaui/components/icon';\r\nimport { FuiTimeListComponent } from './time-list.component';\r\nimport { FuiTimePickerIntl } from './time-picker.intl';\r\nimport { TimeFormat, TimeOption, TimeValue } from './time-picker.types';\r\nimport {\r\n formatTime,\r\n generateTimeOptions,\r\n parseISOTimeString,\r\n parseTimeString,\r\n timeValueToString,\r\n} from './time-picker.utils';\r\n\r\n@Component({\r\n selector: 'fui-time-picker',\r\n standalone: true,\r\n imports: [FuiIconComponent, FuiTimeListComponent],\r\n templateUrl: './time-picker.component.html',\r\n styleUrls: ['./time-picker.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n encapsulation: ViewEncapsulation.None,\r\n host: {\r\n class: 'fui-time-picker',\r\n '[attr.id]': 'id',\r\n '[class.fui-time-picker--open]': '_panelOpen()',\r\n '[class.fui-time-picker--disabled]': 'disabled()',\r\n '[class.fui-time-picker--focused]': 'focused()',\r\n '[class.fui-time-picker--error]': 'errorState()',\r\n '[class.fui-time-picker--readonly]': '_readOnly()',\r\n },\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: FuiTimePickerComponent,\r\n multi: true,\r\n },\r\n {\r\n provide: FUI_FORM_FIELD_CONTROL,\r\n useExisting: FuiTimePickerComponent,\r\n },\r\n ],\r\n})\r\nexport class FuiTimePickerComponent implements ControlValueAccessor, FuiFormFieldControl<string>, DoCheck, OnDestroy {\r\n static nextId = 0;\r\n readonly controlType = 'fui-time-picker';\r\n\r\n // --- Inputs ---\r\n readonly formatInput: InputSignal<TimeFormat> = input<TimeFormat>('24h', { alias: 'format' });\r\n readonly showSeconds: InputSignalWithTransform<boolean, unknown> = input<boolean, unknown>(false, {\r\n transform: booleanAttribute,\r\n });\r\n readonly minuteStep: InputSignal<number> = input(15);\r\n readonly min: InputSignal<string> = input('');\r\n readonly max: InputSignal<string> = input('');\r\n readonly placeholderInput: InputSignal<string> = input('', { alias: 'placeholder' });\r\n readonly disabledInput: InputSignalWithTransform<boolean, unknown> = input<boolean, unknown>(false, {\r\n alias: 'disabled',\r\n transform: booleanAttribute,\r\n });\r\n readonly readonly: InputSignalWithTransform<boolean, unknown> = input<boolean, unknown>(false, {\r\n transform: booleanAttribute,\r\n });\r\n readonly errorStateMatcher: InputSignal<ErrorStateMatcher | null> = input<ErrorStateMatcher | null>(null);\r\n\r\n // --- Outputs ---\r\n readonly timeChange: OutputEmitterRef<string> = output<string>();\r\n\r\n // --- Internal state ---\r\n /** @internal */ readonly _value: WritableSignal<TimeValue | null> = signal(null);\r\n private readonly _focused: WritableSignal<boolean> = signal(false);\r\n private readonly _disabled: WritableSignal<boolean> = signal(false);\r\n private readonly _ngControlDisabled: WritableSignal<boolean> = signal(false);\r\n private readonly _required: WritableSignal<boolean> = signal(false);\r\n private readonly _errorState: WritableSignal<boolean> = signal(false);\r\n readonly _readOnly: WritableSignal<boolean> = signal(false);\r\n readonly _panelOpen = signal(false);\r\n\r\n // --- FuiFormFieldControl ---\r\n readonly stateChanges = new Subject<void>();\r\n private _uid = `fui-time-picker-${FuiTimePickerComponent.nextId++}`;\r\n _ariaDescribedby: string | null = null;\r\n\r\n // Form references\r\n private _parentForm = inject(NgForm, { optional: true });\r\n private _parentFormGroup = inject(FormGroupDirective, { optional: true });\r\n private _defaultErrorStateMatcher = inject(DefaultErrorStateMatcher);\r\n private readonly _ngControlRef = injectNgControl();\r\n get ngControl(): NgControl | null {\r\n return this._ngControlRef.ngControl;\r\n }\r\n\r\n // Interface signals\r\n readonly placeholder = computed(() => this.placeholderInput());\r\n readonly required = this._required;\r\n readonly value = computed(() => {\r\n const tv = this._value();\r\n return tv ? timeValueToString(tv, this.showSeconds()) : null;\r\n });\r\n readonly focused = this._focused;\r\n readonly disabled = computed(() => this._disabled() || this.disabledInput() || this._ngControlDisabled());\r\n readonly errorState = this._errorState;\r\n readonly id = this._uid;\r\n\r\n readonly empty = computed(() => {\r\n return this._value() === null;\r\n });\r\n\r\n // Display value formatted for current format\r\n readonly _displayValue = computed(() => {\r\n return formatTime(this._value(), this.formatInput(), this.showSeconds());\r\n });\r\n\r\n // Display value for form-field readOnly mode\r\n readonly displayValue = this._displayValue;\r\n\r\n // Computed time options for dropdown\r\n readonly _timeOptions = computed<TimeOption[]>(() => {\r\n const minVal = this.min() ? parseISOTimeString(this.min()) : undefined;\r\n const maxVal = this.max() ? parseISOTimeString(this.max()) : undefined;\r\n return generateTimeOptions(\r\n this.formatInput(),\r\n this.minuteStep(),\r\n this.showSeconds(),\r\n minVal ?? undefined,\r\n maxVal ?? undefined,\r\n );\r\n });\r\n\r\n // ViewChild\r\n @ViewChild('inputElement', { static: false }) inputElement?: ElementRef<HTMLInputElement>;\r\n @ViewChild('timeListPanel', { static: false }) timeListPanel?: ElementRef<HTMLDivElement>;\r\n\r\n // Overlay\r\n private _overlayRef: FuiOverlayRef | null = null;\r\n private _overlaySubscriptions = new Subscription();\r\n private readonly _overlayService = inject(FuiOverlayService);\r\n private readonly _elementRef = inject(ElementRef);\r\n private readonly _document = inject(DOCUMENT);\r\n private readonly _ngZone = inject(NgZone);\r\n readonly intl = inject(FuiTimePickerIntl);\r\n private readonly _cdr = inject(ChangeDetectorRef);\r\n private _outsideClickSub?: Subscription;\r\n\r\n // CVA callbacks\r\n private _onChange: (value: string | null) => void = () => {\r\n /* noop */\r\n };\r\n private _onTouched: () => void = () => {\r\n /* noop */\r\n };\r\n\r\n constructor() {\r\n this.intl.changes.pipe(takeUntilDestroyed()).subscribe(() => { this._cdr.markForCheck(); });\r\n\r\n void Promise.resolve().then(() => {\r\n if (this._ngControlRef.ngControl) {\r\n this._ngControlRef.ngControl.valueAccessor = this;\r\n }\r\n });\r\n\r\n // Effect to emit state changes\r\n effect(() => {\r\n this.placeholderInput();\r\n this.readonly();\r\n this.disabledInput();\r\n this.formatInput();\r\n this.showSeconds();\r\n this.minuteStep();\r\n this.min();\r\n this.max();\r\n this.errorStateMatcher();\r\n this._focused();\r\n this._disabled();\r\n this._value();\r\n this._ngControlDisabled();\r\n this._required();\r\n this._errorState();\r\n\r\n this.stateChanges.next();\r\n });\r\n }\r\n\r\n ngDoCheck(): void {\r\n if (this.ngControl) {\r\n updateErrorState(\r\n this.ngControl,\r\n this._errorState,\r\n this.errorStateMatcher(),\r\n this._defaultErrorStateMatcher,\r\n this._parentForm,\r\n this._parentFormGroup,\r\n this.stateChanges,\r\n );\r\n syncRequiredState(this.ngControl, this._required, this.stateChanges);\r\n syncNgControlDisabled(this.ngControl, this._ngControlDisabled, this.stateChanges);\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.stateChanges.complete();\r\n this._outsideClickSub?.unsubscribe();\r\n this._disposeOverlay();\r\n }\r\n\r\n // --- CVA ---\r\n\r\n writeValue(value: string | null): void {\r\n if (value) {\r\n const parsed = parseISOTimeString(value);\r\n this._value.set(parsed);\r\n } else {\r\n this._value.set(null);\r\n }\r\n this.stateChanges.next();\r\n }\r\n\r\n registerOnChange(fn: (value: string | null) => void): void {\r\n this._onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: () => void): void {\r\n this._onTouched = fn;\r\n }\r\n\r\n setDisabledState(isDisabled: boolean): void {\r\n this._disabled.set(isDisabled);\r\n this.stateChanges.next();\r\n }\r\n\r\n // --- FuiFormFieldControl ---\r\n\r\n onContainerClick(_event: MouseEvent): void {\r\n if (!this.disabled()) {\r\n this.inputElement?.nativeElement.focus();\r\n if (!this._panelOpen()) {\r\n this.open();\r\n }\r\n }\r\n }\r\n\r\n setDescribedByIds(ids: string[]): void {\r\n this._ariaDescribedby = ids.length ? ids.join(' ') : null;\r\n }\r\n\r\n setReadOnly(readOnly: boolean): void {\r\n this._readOnly.set(readOnly);\r\n }\r\n\r\n // --- Panel open/close ---\r\n\r\n open(): void {\r\n if (this.disabled() || this.readonly() || this._panelOpen()) return;\r\n\r\n requestAnimationFrame(() => {\r\n this._panelOpen.set(true);\r\n this._focused.set(true);\r\n\r\n setTimeout(() => {\r\n this._createOverlay();\r\n this._listenForOutsideClicks();\r\n });\r\n });\r\n }\r\n\r\n close(): void {\r\n if (!this._panelOpen()) return;\r\n this._outsideClickSub?.unsubscribe();\r\n\r\n this._panelOpen.set(false);\r\n this._focused.set(false);\r\n this._disposeOverlay();\r\n this._onTouched();\r\n\r\n setTimeout(() => {\r\n this.inputElement?.nativeElement.focus();\r\n }, 0);\r\n }\r\n\r\n _togglePanel(): void {\r\n if (this.disabled() || this.readonly()) return;\r\n if (this._panelOpen()) {\r\n this.close();\r\n } else {\r\n this.open();\r\n }\r\n }\r\n\r\n // --- Event handlers ---\r\n\r\n _onManualInput(_event: Event): void {\r\n // We handle parsing on blur, not on every keystroke\r\n }\r\n\r\n _onKeydown(event: KeyboardEvent): void {\r\n if (event.key === 'Escape' && this._panelOpen()) {\r\n event.preventDefault();\r\n this.close();\r\n } else if (event.key === 'ArrowDown' && !this._panelOpen()) {\r\n event.preventDefault();\r\n this.open();\r\n } else if (event.key === 'Enter' && !this._panelOpen()) {\r\n event.preventDefault();\r\n this.open();\r\n }\r\n }\r\n\r\n _onFocus(): void {\r\n this._focused.set(true);\r\n }\r\n\r\n _onBlur(): void {\r\n const input = this.inputElement?.nativeElement;\r\n if (!input) return;\r\n\r\n const text = input.value;\r\n if (!text) {\r\n this._setValue(null);\r\n return;\r\n }\r\n\r\n const parsed = parseTimeString(text, this.formatInput());\r\n if (parsed) {\r\n this._setValue(parsed);\r\n } else {\r\n // Invalid input — revert to previous formatted value\r\n input.value = this._displayValue();\r\n }\r\n\r\n if (!this._panelOpen()) {\r\n this._onTouched();\r\n }\r\n }\r\n\r\n /** Called when user selects an option from the time list dropdown. */\r\n _onOptionSelected(value: TimeValue): void {\r\n this._setValue(value);\r\n this.close();\r\n }\r\n\r\n // Start listening for outside clicks when panel opens\r\n private _listenForOutsideClicks(): void {\r\n this._outsideClickSub?.unsubscribe();\r\n\r\n this._ngZone.runOutsideAngular(() => {\r\n setTimeout(() => {\r\n this._outsideClickSub = fromEvent<MouseEvent>(this._document, 'click')\r\n .pipe(\r\n filter(() => this._panelOpen()),\r\n filter((event) => {\r\n const target = event.target as HTMLElement;\r\n const hostElement = this._elementRef.nativeElement;\r\n const overlayElement = this._overlayRef?.overlayElement;\r\n return !hostElement.contains(target) && !overlayElement?.contains(target);\r\n }),\r\n )\r\n .subscribe(() => {\r\n this._ngZone.run(() => {\r\n this.close();\r\n });\r\n });\r\n });\r\n });\r\n }\r\n\r\n // --- Private helpers ---\r\n\r\n private _setValue(value: TimeValue | null): void {\r\n this._value.set(value);\r\n const stringVal = value ? timeValueToString(value, this.showSeconds()) : null;\r\n this._onChange(stringVal);\r\n this.timeChange.emit(stringVal ?? '');\r\n this.stateChanges.next();\r\n }\r\n\r\n private _createOverlay(): void {\r\n if (this._overlayRef || !this.timeListPanel) return;\r\n\r\n const triggerElement = this._elementRef.nativeElement;\r\n const triggerWidth = triggerElement.getBoundingClientRect().width;\r\n\r\n const positions: FuiConnectedPosition[] = [\r\n { originX: 'start', originY: 'bottom', overlayX: 'start', overlayY: 'top', offsetY: 4 },\r\n { originX: 'start', originY: 'top', overlayX: 'start', overlayY: 'bottom', offsetY: -4 },\r\n ];\r\n\r\n const positionStrategy = this._overlayService\r\n .position()\r\n .connectedTo(triggerElement, positions)\r\n .withPush(true)\r\n .withViewportMargin(8);\r\n\r\n this._overlayRef = this._overlayService.create({\r\n positionStrategy,\r\n scrollStrategy: this._overlayService.scrollStrategies.reposition(),\r\n hasBackdrop: true,\r\n backdropClass: 'fui-time-picker-backdrop',\r\n backdropClickBehavior: 'close',\r\n panelClass: ['fui-time-picker-overlay-panel'],\r\n minWidth: Math.max(triggerWidth, 160),\r\n });\r\n\r\n // Track overlay subscriptions for proper cleanup\r\n this._overlaySubscriptions.unsubscribe();\r\n this._overlaySubscriptions = new Subscription();\r\n\r\n this._overlaySubscriptions.add(\r\n this._overlayRef.backdropClick.subscribe(() => {\r\n this.close();\r\n }),\r\n );\r\n\r\n this._overlaySubscriptions.add(\r\n this._overlayRef.keydownEvents.subscribe((event) => {\r\n if (event.key === 'Escape') {\r\n this.close();\r\n }\r\n }),\r\n );\r\n\r\n const panelElement = this.timeListPanel.nativeElement;\r\n this._overlayRef.attach(panelElement);\r\n }\r\n\r\n private _disposeOverlay(): void {\r\n this._overlaySubscriptions.unsubscribe();\r\n if (this._overlayRef) {\r\n this._overlayRef.dispose();\r\n this._overlayRef = null;\r\n }\r\n }\r\n}\r\n","<div class=\"fui-time-picker__wrapper\">\r\n <input\r\n #inputElement\r\n class=\"fui-time-picker__input\"\r\n type=\"text\"\r\n [attr.placeholder]=\"placeholder()\"\r\n [attr.disabled]=\"disabled() ? '' : null\"\r\n [attr.readonly]=\"readonly() ? '' : null\"\r\n [value]=\"_displayValue()\"\r\n [attr.aria-expanded]=\"_panelOpen()\"\r\n [attr.aria-haspopup]=\"'listbox'\"\r\n [attr.aria-describedby]=\"_ariaDescribedby\"\r\n [attr.aria-required]=\"required()\"\r\n [attr.aria-invalid]=\"errorState()\"\r\n role=\"combobox\"\r\n autocomplete=\"off\"\r\n (input)=\"_onManualInput($event)\"\r\n (keydown)=\"_onKeydown($event)\"\r\n (focus)=\"_onFocus()\"\r\n (blur)=\"_onBlur()\"\r\n />\r\n @if (!_readOnly()) {\r\n <button\r\n type=\"button\"\r\n class=\"fui-time-picker__toggle\"\r\n (click)=\"_togglePanel()\"\r\n [disabled]=\"disabled() || readonly()\"\r\n tabindex=\"-1\"\r\n [attr.aria-label]=\"intl.toggleAriaLabel\"\r\n >\r\n <fui-icon name=\"clock\" size=\"sm\"></fui-icon>\r\n </button>\r\n }\r\n</div>\r\n\r\n@if (_panelOpen()) {\r\n <div #timeListPanel class=\"fui-time-picker__panel\" role=\"dialog\" [attr.aria-label]=\"intl.dialogAriaLabel\">\r\n <fui-time-list\r\n [options]=\"_timeOptions()\"\r\n [selectedValue]=\"_value()\"\r\n [format]=\"formatInput()\"\r\n (optionSelected)=\"_onOptionSelected($event)\"\r\n />\r\n </div>\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"raintonic-formaui-components-time-picker.mjs","sources":["../../../lib/components/time-picker/time-picker.utils.ts","../../../lib/components/time-picker/time-picker.intl.ts","../../../lib/components/time-picker/time-list.component.ts","../../../lib/components/time-picker/time-list.component.html","../../../lib/components/time-picker/time-picker.component.ts","../../../lib/components/time-picker/time-picker.component.html","../../../lib/components/time-picker/raintonic-formaui-components-time-picker.ts"],"sourcesContent":["import { TimeFormat, TimeOption, TimeValue } from './time-picker.types';\r\n\r\n/**\r\n * Convert a TimeValue to total minutes for comparison purposes.\r\n */\r\nexport function timeToMinutes(time: TimeValue): number {\r\n return time.hours * 60 + time.minutes + (time.seconds ? time.seconds / 60 : 0);\r\n}\r\n\r\n/**\r\n * Compare two TimeValue objects.\r\n * Returns -1 if a < b, 0 if equal, 1 if a > b.\r\n */\r\nexport function compareTime(a: TimeValue, b: TimeValue): number {\r\n const aMin = timeToMinutes(a);\r\n const bMin = timeToMinutes(b);\r\n if (aMin < bMin) return -1;\r\n if (aMin > bMin) return 1;\r\n return 0;\r\n}\r\n\r\n/**\r\n * Check if a time is within an optional min/max range (inclusive).\r\n */\r\nexport function isTimeInRange(time: TimeValue, min?: TimeValue, max?: TimeValue): boolean {\r\n if (min && compareTime(time, min) < 0) return false;\r\n if (max && compareTime(time, max) > 0) return false;\r\n return true;\r\n}\r\n\r\n/**\r\n * Format a TimeValue for display.\r\n * - 24h: \"14:30\" or \"14:30:00\"\r\n * - 12h: \"2:30 PM\" or \"2:30:00 PM\"\r\n */\r\nexport function formatTime(value: TimeValue | null, format: TimeFormat, showSeconds: boolean): string {\r\n if (!value) return '';\r\n\r\n const h = value.hours;\r\n const m = value.minutes;\r\n const s = value.seconds ?? 0;\r\n\r\n const pad = (n: number): string => n.toString().padStart(2, '0');\r\n\r\n if (format === '24h') {\r\n const base = `${pad(h)}:${pad(m)}`;\r\n return showSeconds ? `${base}:${pad(s)}` : base;\r\n }\r\n\r\n // 12h format\r\n const period = h >= 12 ? 'PM' : 'AM';\r\n let displayHour = h;\r\n if (h === 0) displayHour = 12;\r\n else if (h > 12) displayHour = h - 12;\r\n const base = `${displayHour}:${pad(m)}`;\r\n return showSeconds ? `${base}:${pad(s)} ${period}` : `${base} ${period}`;\r\n}\r\n\r\n/**\r\n * Parse a time string into a TimeValue.\r\n * Supports formats: \"HH:mm\", \"HH:mm:ss\", \"h:mm AM/PM\", \"h:mm:ss AM/PM\"\r\n * Returns null if the string cannot be parsed.\r\n */\r\nexport function parseTimeString(str: string, format: TimeFormat): TimeValue | null {\r\n if (!str?.trim()) return null;\r\n\r\n const trimmed = str.trim();\r\n\r\n if (format === '12h') {\r\n // Match patterns like \"2:30 PM\", \"12:30:45 AM\"\r\n const match12 = /^(\\d{1,2}):(\\d{2})(?::(\\d{2}))?\\s*(AM|PM)$/i.exec(trimmed);\r\n if (!match12) return null;\r\n\r\n let hours = parseInt(match12[1], 10);\r\n const minutes = parseInt(match12[2], 10);\r\n const seconds = match12[3] ? parseInt(match12[3], 10) : undefined;\r\n const period = match12[4].toUpperCase();\r\n\r\n if (hours < 1 || hours > 12 || minutes < 0 || minutes > 59) return null;\r\n if (seconds !== undefined && (seconds < 0 || seconds > 59)) return null;\r\n\r\n if (period === 'AM' && hours === 12) hours = 0;\r\n else if (period === 'PM' && hours !== 12) hours += 12;\r\n\r\n return { hours, minutes, ...(seconds !== undefined ? { seconds } : {}) };\r\n }\r\n\r\n // 24h format: \"HH:mm\" or \"HH:mm:ss\"\r\n const match24 = /^(\\d{1,2}):(\\d{2})(?::(\\d{2}))?$/.exec(trimmed);\r\n if (!match24) return null;\r\n\r\n const hours = parseInt(match24[1], 10);\r\n const minutes = parseInt(match24[2], 10);\r\n const seconds = match24[3] ? parseInt(match24[3], 10) : undefined;\r\n\r\n if (hours < 0 || hours > 23 || minutes < 0 || minutes > 59) return null;\r\n if (seconds !== undefined && (seconds < 0 || seconds > 59)) return null;\r\n\r\n return { hours, minutes, ...(seconds !== undefined ? { seconds } : {}) };\r\n}\r\n\r\n/**\r\n * Generate time options for the dropdown list.\r\n */\r\nexport function generateTimeOptions(\r\n format: TimeFormat,\r\n minuteStep: number,\r\n showSeconds: boolean,\r\n min?: TimeValue,\r\n max?: TimeValue,\r\n): TimeOption[] {\r\n const options: TimeOption[] = [];\r\n const step = Math.max(1, Math.min(60, minuteStep));\r\n\r\n for (let h = 0; h < 24; h++) {\r\n for (let m = 0; m < 60; m += step) {\r\n const value: TimeValue = { hours: h, minutes: m, ...(showSeconds ? { seconds: 0 } : {}) };\r\n const label = formatTime(value, format, showSeconds);\r\n const disabled = !isTimeInRange(value, min, max);\r\n options.push({ label, value, disabled });\r\n }\r\n }\r\n\r\n return options;\r\n}\r\n\r\n/**\r\n * Convert a TimeValue to an ISO-like string \"HH:mm\" or \"HH:mm:ss\".\r\n */\r\nexport function timeValueToString(value: TimeValue | null, showSeconds: boolean): string {\r\n if (!value) return '';\r\n const pad = (n: number): string => n.toString().padStart(2, '0');\r\n const base = `${pad(value.hours)}:${pad(value.minutes)}`;\r\n return showSeconds ? `${base}:${pad(value.seconds ?? 0)}` : base;\r\n}\r\n\r\n/**\r\n * Parse an ISO-like time string \"HH:mm\" or \"HH:mm:ss\" into a TimeValue.\r\n * This always parses in 24h format regardless of display format.\r\n */\r\nexport function parseISOTimeString(str: string): TimeValue | null {\r\n if (!str?.trim()) return null;\r\n return parseTimeString(str.trim(), '24h');\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { FuiIntlBase } from '@raintonic/formaui/core';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class FuiTimePickerIntl extends FuiIntlBase {\r\n toggleAriaLabel = 'Toggle time picker';\r\n dialogAriaLabel = 'Time selection';\r\n availableTimesAriaLabel = 'Available times';\r\n}\r\n","import {\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n ElementRef,\r\n inject,\r\n input,\r\n output,\r\n signal,\r\n ViewChild,\r\n ViewEncapsulation,\r\n AfterViewInit,\r\n effect,\r\n} from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { TimeFormat, TimeOption, TimeValue } from './time-picker.types';\r\nimport { compareTime } from './time-picker.utils';\r\nimport { FuiTimePickerIntl } from './time-picker.intl';\r\n\r\n@Component({\r\n selector: 'fui-time-list',\r\n standalone: true,\r\n templateUrl: './time-list.component.html',\r\n styleUrls: ['./time-list.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n encapsulation: ViewEncapsulation.None,\r\n host: {\r\n class: 'fui-time-list',\r\n },\r\n})\r\nexport class FuiTimeListComponent implements AfterViewInit {\r\n /** The list of time options to display. */\r\n readonly options = input.required<TimeOption[]>();\r\n\r\n /** Currently selected time value. */\r\n readonly selectedValue = input<TimeValue | null>(null);\r\n\r\n /** Time format for display. */\r\n readonly format = input<TimeFormat>('24h');\r\n\r\n /** Emitted when an option is selected. */\r\n readonly optionSelected = output<TimeValue>();\r\n\r\n /** Index of the currently focused option for keyboard navigation. */\r\n readonly _focusedIndex = signal(-1);\r\n\r\n @ViewChild('listContainer', { static: false }) listContainer?: ElementRef<HTMLDivElement>;\r\n\r\n readonly intl = inject(FuiTimePickerIntl);\r\n private readonly _cdr = inject(ChangeDetectorRef);\r\n\r\n constructor() {\r\n this.intl.changes.pipe(takeUntilDestroyed()).subscribe(() => { this._cdr.markForCheck(); });\r\n\r\n // Scroll to selected option when options change\r\n effect(() => {\r\n this.selectedValue();\r\n this.options();\r\n // Defer to next microtask so DOM is rendered\r\n void Promise.resolve().then(() => {\r\n this._scrollToSelected();\r\n });\r\n });\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n this._scrollToSelected();\r\n }\r\n\r\n /** Check if an option matches the selected value. */\r\n _isSelected(option: TimeOption): boolean {\r\n const selected = this.selectedValue();\r\n if (!selected) return false;\r\n return compareTime(option.value, selected) === 0;\r\n }\r\n\r\n /** Handle option click. */\r\n _selectOption(option: TimeOption): void {\r\n if (option.disabled) return;\r\n this.optionSelected.emit(option.value);\r\n }\r\n\r\n /** Handle keyboard navigation. */\r\n onKeydown(event: KeyboardEvent): void {\r\n const opts = this.options();\r\n if (!opts.length) return;\r\n\r\n switch (event.key) {\r\n case 'ArrowDown':\r\n event.preventDefault();\r\n this._moveFocus(1);\r\n break;\r\n case 'ArrowUp':\r\n event.preventDefault();\r\n this._moveFocus(-1);\r\n break;\r\n case 'Enter':\r\n event.preventDefault();\r\n this._selectFocused();\r\n break;\r\n case 'Home':\r\n event.preventDefault();\r\n this._setFocusedIndex(0);\r\n break;\r\n case 'End':\r\n event.preventDefault();\r\n this._setFocusedIndex(opts.length - 1);\r\n break;\r\n }\r\n }\r\n\r\n /** Move focus by delta, skipping disabled options. */\r\n private _moveFocus(delta: number): void {\r\n const opts = this.options();\r\n if (!opts.length) return;\r\n\r\n let current = this._focusedIndex();\r\n const len = opts.length;\r\n let attempts = 0;\r\n\r\n do {\r\n current = (current + delta + len) % len;\r\n attempts++;\r\n } while (opts[current].disabled && attempts < len);\r\n\r\n if (!opts[current].disabled) {\r\n this._setFocusedIndex(current);\r\n }\r\n }\r\n\r\n /** Set focused index and scroll into view. */\r\n private _setFocusedIndex(index: number): void {\r\n this._focusedIndex.set(index);\r\n this._scrollToIndex(index);\r\n }\r\n\r\n /** Select the currently focused option. */\r\n private _selectFocused(): void {\r\n const idx = this._focusedIndex();\r\n const opts = this.options();\r\n if (idx >= 0 && idx < opts.length && !opts[idx].disabled) {\r\n this.optionSelected.emit(opts[idx].value);\r\n }\r\n }\r\n\r\n /** Scroll to a specific index in the list. */\r\n private _scrollToIndex(index: number): void {\r\n const container = this.listContainer?.nativeElement;\r\n if (!container) return;\r\n\r\n const items = container.querySelectorAll('.fui-time-list__option');\r\n const item = items[index] as HTMLElement;\r\n if (!item) return;\r\n\r\n const itemTop = item.offsetTop;\r\n const itemBottom = itemTop + item.offsetHeight;\r\n const scrollTop = container.scrollTop;\r\n const scrollBottom = scrollTop + container.clientHeight;\r\n\r\n if (itemTop < scrollTop) {\r\n container.scrollTop = itemTop;\r\n } else if (itemBottom > scrollBottom) {\r\n container.scrollTop = itemBottom - container.clientHeight;\r\n }\r\n }\r\n\r\n /** Scroll to the selected option. */\r\n private _scrollToSelected(): void {\r\n const selected = this.selectedValue();\r\n if (!selected) return;\r\n\r\n const opts = this.options();\r\n const index = opts.findIndex((o) => compareTime(o.value, selected) === 0);\r\n if (index >= 0) {\r\n this._focusedIndex.set(index);\r\n // Defer scroll to ensure DOM is rendered\r\n requestAnimationFrame(() => {\r\n this._scrollToIndex(index);\r\n });\r\n }\r\n }\r\n}\r\n","<div\r\n #listContainer\r\n class=\"fui-time-list__container\"\r\n role=\"listbox\"\r\n tabindex=\"0\"\r\n [attr.aria-label]=\"intl.availableTimesAriaLabel\"\r\n (keydown)=\"onKeydown($event)\"\r\n>\r\n @for (option of options(); track option.label) {\r\n <div\r\n class=\"fui-time-list__option\"\r\n [class.fui-time-list__option--selected]=\"_isSelected(option)\"\r\n [class.fui-time-list__option--disabled]=\"option.disabled\"\r\n [class.fui-time-list__option--focused]=\"_focusedIndex() === $index\"\r\n [attr.id]=\"'fui-time-option-' + $index\"\r\n [attr.aria-selected]=\"_isSelected(option)\"\r\n [attr.aria-disabled]=\"option.disabled\"\r\n role=\"option\"\r\n (click)=\"_selectOption(option)\"\r\n >\r\n {{ option.label }}\r\n </div>\r\n }\r\n</div>\r\n","import {\r\n booleanAttribute,\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n computed,\r\n DoCheck,\r\n effect,\r\n ElementRef,\r\n inject,\r\n NgZone,\r\n input,\r\n InputSignal,\r\n InputSignalWithTransform,\r\n OnDestroy,\r\n output,\r\n OutputEmitterRef,\r\n signal,\r\n ViewChild,\r\n ViewEncapsulation,\r\n WritableSignal,\r\n} from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { ControlValueAccessor, FormGroupDirective, NG_VALUE_ACCESSOR, NgControl, NgForm } from '@angular/forms';\r\nimport { DOCUMENT } from '@angular/common';\r\nimport { fromEvent, Subject, Subscription } from 'rxjs';\r\nimport { filter } from 'rxjs/operators';\r\nimport { injectNgControl, updateErrorState, syncRequiredState, syncNgControlDisabled } from '@raintonic/formaui/cdk/form-field';\r\nimport { FUI_FORM_FIELD_CONTROL, FuiFormFieldControl } from '@raintonic/formaui/core';\r\nimport { DefaultErrorStateMatcher, ErrorStateMatcher } from '@raintonic/formaui/core';\r\nimport { FuiConnectedPosition, FuiOverlayRef, FuiOverlayService } from '@raintonic/formaui/cdk/overlay';\r\nimport { FuiIconComponent } from '@raintonic/formaui/components/icon';\r\nimport { FuiTimeListComponent } from './time-list.component';\r\nimport { FuiTimePickerIntl } from './time-picker.intl';\r\nimport { TimeFormat, TimeOption, TimeValue } from './time-picker.types';\r\nimport {\r\n formatTime,\r\n generateTimeOptions,\r\n parseISOTimeString,\r\n parseTimeString,\r\n timeValueToString,\r\n} from './time-picker.utils';\r\n\r\n@Component({\r\n selector: 'fui-time-picker',\r\n standalone: true,\r\n imports: [FuiIconComponent, FuiTimeListComponent],\r\n templateUrl: './time-picker.component.html',\r\n styleUrls: ['./time-picker.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n encapsulation: ViewEncapsulation.None,\r\n host: {\r\n class: 'fui-time-picker',\r\n '[attr.id]': 'id',\r\n '[class.fui-time-picker--open]': '_panelOpen()',\r\n '[class.fui-time-picker--disabled]': 'disabled()',\r\n '[class.fui-time-picker--focused]': 'focused()',\r\n '[class.fui-time-picker--error]': 'errorState()',\r\n '[class.fui-time-picker--readonly]': '_readOnly()',\r\n },\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: FuiTimePickerComponent,\r\n multi: true,\r\n },\r\n {\r\n provide: FUI_FORM_FIELD_CONTROL,\r\n useExisting: FuiTimePickerComponent,\r\n },\r\n ],\r\n})\r\nexport class FuiTimePickerComponent implements ControlValueAccessor, FuiFormFieldControl<string>, DoCheck, OnDestroy {\r\n static nextId = 0;\r\n readonly controlType = 'fui-time-picker';\r\n\r\n // --- Inputs ---\r\n readonly formatInput: InputSignal<TimeFormat> = input<TimeFormat>('24h', { alias: 'format' });\r\n readonly showSeconds: InputSignalWithTransform<boolean, unknown> = input<boolean, unknown>(false, {\r\n transform: booleanAttribute,\r\n });\r\n readonly minuteStep: InputSignal<number> = input(15);\r\n readonly min: InputSignal<string> = input('');\r\n readonly max: InputSignal<string> = input('');\r\n readonly placeholderInput: InputSignal<string> = input('', { alias: 'placeholder' });\r\n readonly disabledInput: InputSignalWithTransform<boolean, unknown> = input<boolean, unknown>(false, {\r\n alias: 'disabled',\r\n transform: booleanAttribute,\r\n });\r\n readonly readonly: InputSignalWithTransform<boolean, unknown> = input<boolean, unknown>(false, {\r\n transform: booleanAttribute,\r\n });\r\n readonly errorStateMatcher: InputSignal<ErrorStateMatcher | null> = input<ErrorStateMatcher | null>(null);\r\n\r\n // --- Outputs ---\r\n readonly timeChange: OutputEmitterRef<string> = output<string>();\r\n\r\n // --- Internal state ---\r\n /** @internal */ readonly _value: WritableSignal<TimeValue | null> = signal(null);\r\n private readonly _focused: WritableSignal<boolean> = signal(false);\r\n private readonly _disabled: WritableSignal<boolean> = signal(false);\r\n private readonly _ngControlDisabled: WritableSignal<boolean> = signal(false);\r\n private readonly _required: WritableSignal<boolean> = signal(false);\r\n private readonly _errorState: WritableSignal<boolean> = signal(false);\r\n readonly _readOnly: WritableSignal<boolean> = signal(false);\r\n readonly _panelOpen = signal(false);\r\n\r\n // --- FuiFormFieldControl ---\r\n readonly stateChanges = new Subject<void>();\r\n private _uid = `fui-time-picker-${FuiTimePickerComponent.nextId++}`;\r\n _ariaDescribedby: string | null = null;\r\n\r\n // Form references\r\n private _parentForm = inject(NgForm, { optional: true });\r\n private _parentFormGroup = inject(FormGroupDirective, { optional: true });\r\n private _defaultErrorStateMatcher = inject(DefaultErrorStateMatcher);\r\n private readonly _ngControlRef = injectNgControl();\r\n get ngControl(): NgControl | null {\r\n return this._ngControlRef.ngControl;\r\n }\r\n\r\n // Interface signals\r\n readonly placeholder = computed(() => this.placeholderInput());\r\n readonly required = this._required;\r\n readonly value = computed(() => {\r\n const tv = this._value();\r\n return tv ? timeValueToString(tv, this.showSeconds()) : null;\r\n });\r\n readonly focused = this._focused;\r\n readonly disabled = computed(() => this._disabled() || this.disabledInput() || this._ngControlDisabled());\r\n readonly errorState = this._errorState;\r\n readonly id = this._uid;\r\n\r\n readonly empty = computed(() => {\r\n return this._value() === null;\r\n });\r\n\r\n // Display value formatted for current format\r\n readonly _displayValue = computed(() => {\r\n return formatTime(this._value(), this.formatInput(), this.showSeconds());\r\n });\r\n\r\n // Display value for form-field readOnly mode\r\n readonly displayValue = this._displayValue;\r\n\r\n // Computed time options for dropdown\r\n readonly _timeOptions = computed<TimeOption[]>(() => {\r\n const minVal = this.min() ? parseISOTimeString(this.min()) : undefined;\r\n const maxVal = this.max() ? parseISOTimeString(this.max()) : undefined;\r\n return generateTimeOptions(\r\n this.formatInput(),\r\n this.minuteStep(),\r\n this.showSeconds(),\r\n minVal ?? undefined,\r\n maxVal ?? undefined,\r\n );\r\n });\r\n\r\n // ViewChild\r\n @ViewChild('inputElement', { static: false }) inputElement?: ElementRef<HTMLInputElement>;\r\n @ViewChild('timeListPanel', { static: false }) timeListPanel?: ElementRef<HTMLDivElement>;\r\n\r\n // Overlay\r\n private _overlayRef: FuiOverlayRef | null = null;\r\n private _overlaySubscriptions = new Subscription();\r\n private readonly _overlayService = inject(FuiOverlayService);\r\n private readonly _elementRef = inject(ElementRef);\r\n private readonly _document = inject(DOCUMENT);\r\n private readonly _ngZone = inject(NgZone);\r\n readonly intl = inject(FuiTimePickerIntl);\r\n private readonly _cdr = inject(ChangeDetectorRef);\r\n private _outsideClickSub?: Subscription;\r\n\r\n // CVA callbacks\r\n private _onChange: (value: string | null) => void = () => {\r\n /* noop */\r\n };\r\n private _onTouched: () => void = () => {\r\n /* noop */\r\n };\r\n\r\n constructor() {\r\n this.intl.changes.pipe(takeUntilDestroyed()).subscribe(() => { this._cdr.markForCheck(); });\r\n\r\n void Promise.resolve().then(() => {\r\n if (this._ngControlRef.ngControl) {\r\n this._ngControlRef.ngControl.valueAccessor = this;\r\n }\r\n });\r\n\r\n // Effect to emit state changes\r\n effect(() => {\r\n this.placeholderInput();\r\n this.readonly();\r\n this.disabledInput();\r\n this.formatInput();\r\n this.showSeconds();\r\n this.minuteStep();\r\n this.min();\r\n this.max();\r\n this.errorStateMatcher();\r\n this._focused();\r\n this._disabled();\r\n this._value();\r\n this._ngControlDisabled();\r\n this._required();\r\n this._errorState();\r\n\r\n this.stateChanges.next();\r\n });\r\n }\r\n\r\n ngDoCheck(): void {\r\n if (this.ngControl) {\r\n updateErrorState(\r\n this.ngControl,\r\n this._errorState,\r\n this.errorStateMatcher(),\r\n this._defaultErrorStateMatcher,\r\n this._parentForm,\r\n this._parentFormGroup,\r\n this.stateChanges,\r\n );\r\n syncRequiredState(this.ngControl, this._required, this.stateChanges);\r\n syncNgControlDisabled(this.ngControl, this._ngControlDisabled, this.stateChanges);\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.stateChanges.complete();\r\n this._outsideClickSub?.unsubscribe();\r\n this._disposeOverlay();\r\n }\r\n\r\n // --- CVA ---\r\n\r\n writeValue(value: string | null): void {\r\n if (value) {\r\n const parsed = parseISOTimeString(value);\r\n this._value.set(parsed);\r\n } else {\r\n this._value.set(null);\r\n }\r\n this.stateChanges.next();\r\n }\r\n\r\n registerOnChange(fn: (value: string | null) => void): void {\r\n this._onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: () => void): void {\r\n this._onTouched = fn;\r\n }\r\n\r\n setDisabledState(isDisabled: boolean): void {\r\n this._disabled.set(isDisabled);\r\n this.stateChanges.next();\r\n }\r\n\r\n // --- FuiFormFieldControl ---\r\n\r\n onContainerClick(_event: MouseEvent): void {\r\n if (!this.disabled()) {\r\n this.inputElement?.nativeElement.focus();\r\n if (!this._panelOpen()) {\r\n this.open();\r\n }\r\n }\r\n }\r\n\r\n setDescribedByIds(ids: string[]): void {\r\n this._ariaDescribedby = ids.length ? ids.join(' ') : null;\r\n }\r\n\r\n setReadOnly(readOnly: boolean): void {\r\n this._readOnly.set(readOnly);\r\n }\r\n\r\n // --- Panel open/close ---\r\n\r\n open(): void {\r\n if (this.disabled() || this.readonly() || this._panelOpen()) return;\r\n\r\n requestAnimationFrame(() => {\r\n this._panelOpen.set(true);\r\n this._focused.set(true);\r\n\r\n setTimeout(() => {\r\n this._createOverlay();\r\n this._listenForOutsideClicks();\r\n });\r\n });\r\n }\r\n\r\n close(): void {\r\n if (!this._panelOpen()) return;\r\n this._outsideClickSub?.unsubscribe();\r\n\r\n this._panelOpen.set(false);\r\n this._focused.set(false);\r\n this._disposeOverlay();\r\n this._onTouched();\r\n\r\n setTimeout(() => {\r\n this.inputElement?.nativeElement.focus();\r\n }, 0);\r\n }\r\n\r\n _togglePanel(): void {\r\n if (this.disabled() || this.readonly()) return;\r\n if (this._panelOpen()) {\r\n this.close();\r\n } else {\r\n this.open();\r\n }\r\n }\r\n\r\n // --- Event handlers ---\r\n\r\n _onManualInput(_event: Event): void {\r\n // We handle parsing on blur, not on every keystroke\r\n }\r\n\r\n _onKeydown(event: KeyboardEvent): void {\r\n if (event.key === 'Escape' && this._panelOpen()) {\r\n event.preventDefault();\r\n this.close();\r\n } else if (event.key === 'ArrowDown' && !this._panelOpen()) {\r\n event.preventDefault();\r\n this.open();\r\n } else if (event.key === 'Enter' && !this._panelOpen()) {\r\n event.preventDefault();\r\n this.open();\r\n }\r\n }\r\n\r\n _onFocus(): void {\r\n this._focused.set(true);\r\n }\r\n\r\n _onBlur(): void {\r\n const input = this.inputElement?.nativeElement;\r\n if (!input) return;\r\n\r\n const text = input.value;\r\n if (!text) {\r\n this._setValue(null);\r\n return;\r\n }\r\n\r\n const parsed = parseTimeString(text, this.formatInput());\r\n if (parsed) {\r\n this._setValue(parsed);\r\n } else {\r\n // Invalid input — revert to previous formatted value\r\n input.value = this._displayValue();\r\n }\r\n\r\n if (!this._panelOpen()) {\r\n this._onTouched();\r\n }\r\n }\r\n\r\n /** Called when user selects an option from the time list dropdown. */\r\n _onOptionSelected(value: TimeValue): void {\r\n this._setValue(value);\r\n this.close();\r\n }\r\n\r\n // Start listening for outside clicks when panel opens\r\n private _listenForOutsideClicks(): void {\r\n this._outsideClickSub?.unsubscribe();\r\n\r\n this._ngZone.runOutsideAngular(() => {\r\n setTimeout(() => {\r\n this._outsideClickSub = fromEvent<MouseEvent>(this._document, 'click')\r\n .pipe(\r\n filter(() => this._panelOpen()),\r\n filter((event) => {\r\n const target = event.target as HTMLElement;\r\n const hostElement = this._elementRef.nativeElement;\r\n const overlayElement = this._overlayRef?.overlayElement;\r\n return !hostElement.contains(target) && !overlayElement?.contains(target);\r\n }),\r\n )\r\n .subscribe(() => {\r\n this._ngZone.run(() => {\r\n this.close();\r\n });\r\n });\r\n });\r\n });\r\n }\r\n\r\n // --- Private helpers ---\r\n\r\n private _setValue(value: TimeValue | null): void {\r\n this._value.set(value);\r\n const stringVal = value ? timeValueToString(value, this.showSeconds()) : null;\r\n this._onChange(stringVal);\r\n this.timeChange.emit(stringVal ?? '');\r\n this.stateChanges.next();\r\n }\r\n\r\n private _createOverlay(): void {\r\n if (this._overlayRef || !this.timeListPanel) return;\r\n\r\n const triggerElement = this._elementRef.nativeElement;\r\n const triggerWidth = triggerElement.getBoundingClientRect().width;\r\n\r\n const positions: FuiConnectedPosition[] = [\r\n { originX: 'start', originY: 'bottom', overlayX: 'start', overlayY: 'top', offsetY: 4 },\r\n { originX: 'start', originY: 'top', overlayX: 'start', overlayY: 'bottom', offsetY: -4 },\r\n ];\r\n\r\n const positionStrategy = this._overlayService\r\n .position()\r\n .connectedTo(triggerElement, positions)\r\n .withPush(true)\r\n .withViewportMargin(8);\r\n\r\n this._overlayRef = this._overlayService.create({\r\n positionStrategy,\r\n scrollStrategy: this._overlayService.scrollStrategies.reposition(),\r\n hasBackdrop: true,\r\n backdropClass: 'fui-time-picker-backdrop',\r\n backdropClickBehavior: 'close',\r\n panelClass: ['fui-time-picker-overlay-panel'],\r\n minWidth: Math.max(triggerWidth, 160),\r\n });\r\n\r\n // Track overlay subscriptions for proper cleanup\r\n this._overlaySubscriptions.unsubscribe();\r\n this._overlaySubscriptions = new Subscription();\r\n\r\n this._overlaySubscriptions.add(\r\n this._overlayRef.backdropClick.subscribe(() => {\r\n this.close();\r\n }),\r\n );\r\n\r\n this._overlaySubscriptions.add(\r\n this._overlayRef.keydownEvents.subscribe((event) => {\r\n if (event.key === 'Escape') {\r\n this.close();\r\n }\r\n }),\r\n );\r\n\r\n const panelElement = this.timeListPanel.nativeElement;\r\n this._overlayRef.attach(panelElement);\r\n }\r\n\r\n private _disposeOverlay(): void {\r\n this._overlaySubscriptions.unsubscribe();\r\n if (this._overlayRef) {\r\n this._overlayRef.dispose();\r\n this._overlayRef = null;\r\n }\r\n }\r\n}\r\n","<div class=\"fui-time-picker__wrapper\">\r\n <input\r\n #inputElement\r\n class=\"fui-time-picker__input\"\r\n type=\"text\"\r\n [attr.placeholder]=\"placeholder()\"\r\n [attr.disabled]=\"disabled() ? '' : null\"\r\n [attr.readonly]=\"readonly() ? '' : null\"\r\n [value]=\"_displayValue()\"\r\n [attr.aria-expanded]=\"_panelOpen()\"\r\n [attr.aria-haspopup]=\"'listbox'\"\r\n [attr.aria-describedby]=\"_ariaDescribedby\"\r\n [attr.aria-required]=\"required()\"\r\n [attr.aria-invalid]=\"errorState()\"\r\n role=\"combobox\"\r\n autocomplete=\"off\"\r\n (input)=\"_onManualInput($event)\"\r\n (keydown)=\"_onKeydown($event)\"\r\n (focus)=\"_onFocus()\"\r\n (blur)=\"_onBlur()\"\r\n />\r\n @if (!_readOnly()) {\r\n <button\r\n type=\"button\"\r\n class=\"fui-time-picker__toggle\"\r\n (click)=\"_togglePanel()\"\r\n [disabled]=\"disabled() || readonly()\"\r\n tabindex=\"-1\"\r\n [attr.aria-label]=\"intl.toggleAriaLabel\"\r\n >\r\n <fui-icon name=\"clock\" size=\"sm\"></fui-icon>\r\n </button>\r\n }\r\n</div>\r\n\r\n@if (_panelOpen()) {\r\n <div #timeListPanel class=\"fui-time-picker__panel\" role=\"dialog\" [attr.aria-label]=\"intl.dialogAriaLabel\">\r\n <fui-time-list\r\n [options]=\"_timeOptions()\"\r\n [selectedValue]=\"_value()\"\r\n [format]=\"formatInput()\"\r\n (optionSelected)=\"_onOptionSelected($event)\"\r\n />\r\n </div>\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -97,7 +97,7 @@ class FuiTooltipComponent {
97
97
  return baseClass;
98
98
  }, ...(ngDevMode ? [{ debugName: "arrowClasses" }] : /* istanbul ignore next */ []));
99
99
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: FuiTooltipComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
100
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.6", type: FuiTooltipComponent, isStandalone: true, selector: "fui-tooltip", inputs: { content: { classPropertyName: "content", publicName: "content", isSignal: true, isRequired: true, transformFunction: null }, position: { classPropertyName: "position", publicName: "position", isSignal: true, isRequired: true, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: true, transformFunction: null }, maxWidth: { classPropertyName: "maxWidth", publicName: "maxWidth", isSignal: true, isRequired: true, transformFunction: null }, arrow: { classPropertyName: "arrow", publicName: "arrow", isSignal: true, isRequired: true, transformFunction: null }, tooltipId: { classPropertyName: "tooltipId", publicName: "tooltipId", isSignal: true, isRequired: true, transformFunction: null } }, host: { properties: { "class": "computedClasses()", "id": "tooltipId()", "attr.role": "\"tooltip\"", "style.max-width": "maxWidth()" }, classAttribute: "fui-tooltip" }, ngImport: i0, template: "<div class=\"fui-tooltip__content\">\r\n {{ content() }}\r\n</div>\r\n@if (arrow()) {\r\n <div [class]=\"arrowClasses()\"></div>\r\n}\r\n", styles: ["@keyframes fui-skeleton-pulse{0%{opacity:1}50%{opacity:.4}to{opacity:1}}@keyframes fui-spin{to{transform:rotate(360deg)}}@keyframes fui-shake{0%,to{transform:translate(0)}10%,30%,50%,70%,90%{transform:translate(-2px)}20%,40%,60%,80%{transform:translate(2px)}}.fui-motion-fade-in{transition:opacity var(--fui-duration-fast-02) var(--fui-ease-entrance) 0ms}.fui-motion-fade-out{transition:opacity var(--fui-duration-fast-01) var(--fui-ease-exit) 0ms}.fui-motion-slide-in-bottom{transition:transform var(--fui-duration-moderate-01) var(--fui-ease-entrance) 0ms;transform:translateY(0)}.fui-motion-slide-in-bottom.fui-motion-entering{transform:translateY(1rem)}.fui-motion-slide-in-top{transition:transform var(--fui-duration-moderate-01) var(--fui-ease-entrance) 0ms;transform:translateY(0)}.fui-motion-slide-in-top.fui-motion-entering{transform:translateY(-1rem)}.fui-motion-scale-in{transition:transform,opacity var(--fui-duration-moderate-01) var(--fui-ease-entrance) 0ms;transform:scale(1);opacity:1}.fui-motion-scale-in.fui-motion-entering{transform:scale(.95);opacity:0}.fui-no-motion{transition:none!important;animation:none!important}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}@keyframes fui-pulse{0%{transform:scale(1);opacity:1}50%{transform:scale(1.05)}to{transform:scale(1);opacity:1}}@keyframes fui-slide-in{0%{transform:translate(120%)}to{transform:translate(0)}}.fui-slide-in{animation:fui-slide-in var(--fui-duration-moderate-01) var(--fui-ease-entrance)}@keyframes fui-popover-enter{0%{opacity:0;transform:translateY(-14px)}60%{opacity:1}to{opacity:1;transform:translateY(0)}}::ng-deep .fui-tooltip{--fui-tooltip-border-radius: var(--fui-border-radius-sm);--fui-tooltip-shadow: var(--fui-shadow-03);--fui-tooltip-font-size: var(--fui-font-size-02);--fui-tooltip-padding-x: var(--fui-spacing-04);--fui-tooltip-padding-y: var(--fui-spacing-03);z-index:var(--fui-z-tooltip, 1000);display:block;font-family:var(--fui-font-family-sans);font-weight:var(--fui-font-weight-regular);line-height:var(--fui-line-height-body);border-radius:var(--fui-tooltip-border-radius);background-color:var(--fui-tooltip-background);color:var(--fui-tooltip-text);box-shadow:var(--fui-tooltip-shadow);transition:opacity var(--fui-duration-fast-01) var(--fui-ease-standard) 0ms;opacity:0;animation:fui-tooltip-fade-in var(--fui-duration-fast-02) ease-out forwards}::ng-deep .fui-tooltip__content{padding:var(--fui-tooltip-padding-y) var(--fui-tooltip-padding-x);word-wrap:break-word;hyphens:auto}::ng-deep .fui-tooltip__arrow{position:absolute;width:0;height:0;border-style:solid;border-color:transparent;--arrow-size: 6px}::ng-deep .fui-tooltip__arrow--top{bottom:100%;left:50%;transform:translate(-50%);border-width:0 var(--arrow-size) var(--arrow-size) var(--arrow-size);border-bottom-color:var(--fui-tooltip-background)}::ng-deep .fui-tooltip__arrow--bottom{top:100%;left:50%;transform:translate(-50%);border-width:var(--arrow-size) var(--arrow-size) 0 var(--arrow-size);border-top-color:var(--fui-tooltip-background)}::ng-deep .fui-tooltip__arrow--left{right:100%;top:50%;transform:translateY(-50%);border-width:var(--arrow-size) var(--arrow-size) var(--arrow-size) 0;border-right-color:var(--fui-tooltip-background)}::ng-deep .fui-tooltip__arrow--right{left:100%;top:50%;transform:translateY(-50%);border-width:var(--arrow-size) 0 var(--arrow-size) var(--arrow-size);border-left-color:var(--fui-tooltip-background)}::ng-deep .fui-tooltip--right{transform:translate(-50%)}::ng-deep .fui-tooltip--top-start .fui-tooltip__arrow,::ng-deep .fui-tooltip--bottom-start .fui-tooltip__arrow{left:var(--fui-spacing-04);transform:none}::ng-deep .fui-tooltip--top-end .fui-tooltip__arrow,::ng-deep .fui-tooltip--bottom-end .fui-tooltip__arrow{right:var(--fui-spacing-04);left:auto;transform:none}::ng-deep .fui-tooltip--left-start .fui-tooltip__arrow,::ng-deep .fui-tooltip--right-start .fui-tooltip__arrow{top:var(--fui-spacing-04);transform:none}::ng-deep .fui-tooltip--left-end .fui-tooltip__arrow,::ng-deep .fui-tooltip--right-end .fui-tooltip__arrow{bottom:var(--fui-spacing-04);top:auto;transform:none}::ng-deep .fui-tooltip--sm{font-size:var(--fui-font-size-01)}::ng-deep .fui-tooltip--sm .fui-tooltip__content{padding:var(--fui-spacing-02) var(--fui-spacing-03)}::ng-deep .fui-tooltip--sm .fui-tooltip__arrow{--arrow-size: 4px}::ng-deep .fui-tooltip--md{font-size:var(--fui-font-size-02)}::ng-deep .fui-tooltip--md .fui-tooltip__content{padding:var(--fui-spacing-03) var(--fui-spacing-04)}::ng-deep .fui-tooltip--md .fui-tooltip__arrow{--arrow-size: 6px}::ng-deep .fui-tooltip--lg{font-size:var(--fui-font-size-03)}::ng-deep .fui-tooltip--lg .fui-tooltip__content{padding:var(--fui-spacing-04) var(--fui-spacing-05)}::ng-deep .fui-tooltip--lg .fui-tooltip__arrow{--arrow-size: 8px}@media(prefers-contrast:more){::ng-deep .fui-tooltip{border:2px solid var(--fui-text-primary);box-shadow:var(--fui-shadow-04)}}@media(prefers-reduced-motion:reduce){::ng-deep .fui-tooltip{animation:none;opacity:1}}@media print{::ng-deep .fui-tooltip{display:none!important}}@keyframes fui-tooltip-fade-in{0%{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
100
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.6", type: FuiTooltipComponent, isStandalone: true, selector: "fui-tooltip", inputs: { content: { classPropertyName: "content", publicName: "content", isSignal: true, isRequired: true, transformFunction: null }, position: { classPropertyName: "position", publicName: "position", isSignal: true, isRequired: true, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: true, transformFunction: null }, maxWidth: { classPropertyName: "maxWidth", publicName: "maxWidth", isSignal: true, isRequired: true, transformFunction: null }, arrow: { classPropertyName: "arrow", publicName: "arrow", isSignal: true, isRequired: true, transformFunction: null }, tooltipId: { classPropertyName: "tooltipId", publicName: "tooltipId", isSignal: true, isRequired: true, transformFunction: null } }, host: { properties: { "class": "computedClasses()", "id": "tooltipId()", "attr.role": "\"tooltip\"", "style.max-width": "maxWidth()" }, classAttribute: "fui-tooltip" }, ngImport: i0, template: "<div class=\"fui-tooltip__content\">\r\n {{ content() }}\r\n</div>\r\n@if (arrow()) {\r\n <div [class]=\"arrowClasses()\"></div>\r\n}\r\n", styles: ["@keyframes fui-skeleton-pulse{0%{opacity:1}50%{opacity:.4}to{opacity:1}}@keyframes fui-spin{to{transform:rotate(360deg)}}@keyframes fui-shake{0%,to{transform:translate(0)}10%,30%,50%,70%,90%{transform:translate(-2px)}20%,40%,60%,80%{transform:translate(2px)}}.fui-motion-fade-in{transition:opacity var(--fui-duration-fast-02) var(--fui-ease-entrance) 0ms}.fui-motion-fade-out{transition:opacity var(--fui-duration-fast-01) var(--fui-ease-exit) 0ms}.fui-motion-slide-in-bottom{transition:transform var(--fui-duration-moderate-01) var(--fui-ease-entrance) 0ms;transform:translateY(0)}.fui-motion-slide-in-bottom.fui-motion-entering{transform:translateY(1rem)}.fui-motion-slide-in-top{transition:transform var(--fui-duration-moderate-01) var(--fui-ease-entrance) 0ms;transform:translateY(0)}.fui-motion-slide-in-top.fui-motion-entering{transform:translateY(-1rem)}.fui-motion-scale-in{transition:transform,opacity var(--fui-duration-moderate-01) var(--fui-ease-entrance) 0ms;transform:scale(1);opacity:1}.fui-motion-scale-in.fui-motion-entering{transform:scale(.95);opacity:0}.fui-no-motion{transition:none!important;animation:none!important}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}@keyframes fui-pulse{0%{transform:scale(1);opacity:1}50%{transform:scale(1.05)}to{transform:scale(1);opacity:1}}@keyframes fui-slide-in{0%{transform:translate(120%)}to{transform:translate(0)}}.fui-slide-in{animation:fui-slide-in var(--fui-duration-moderate-01) var(--fui-ease-entrance)}@keyframes fui-popover-enter{0%{opacity:0;transform:translateY(-14px)}60%{opacity:1}to{opacity:1;transform:translateY(0)}}.fui-tooltip{--fui-tooltip-border-radius: var(--fui-border-radius-sm);--fui-tooltip-shadow: var(--fui-shadow-03);--fui-tooltip-font-size: var(--fui-font-size-02);--fui-tooltip-padding-x: var(--fui-spacing-04);--fui-tooltip-padding-y: var(--fui-spacing-03);z-index:var(--fui-z-tooltip, 1000);display:block;font-family:var(--fui-font-family-sans);font-weight:var(--fui-font-weight-regular);line-height:var(--fui-line-height-body);border-radius:var(--fui-tooltip-border-radius);background-color:var(--fui-tooltip-background);color:var(--fui-tooltip-text);box-shadow:var(--fui-tooltip-shadow);transition:opacity var(--fui-duration-fast-01) var(--fui-ease-standard) 0ms;opacity:0;animation:fui-tooltip-fade-in var(--fui-duration-fast-02) ease-out forwards}.fui-tooltip__content{padding:var(--fui-tooltip-padding-y) var(--fui-tooltip-padding-x);word-wrap:break-word;hyphens:auto;font-size:var(--fui-font-size-01);line-height:var(--fui-line-height-01)}.fui-tooltip__arrow{position:absolute;width:0;height:0;border-style:solid;border-color:transparent;--arrow-size: 6px}.fui-tooltip__arrow--top{bottom:100%;left:50%;transform:translate(-50%);border-width:0 var(--arrow-size) var(--arrow-size) var(--arrow-size);border-bottom-color:var(--fui-tooltip-background)}.fui-tooltip__arrow--bottom{top:100%;left:50%;transform:translate(-50%);border-width:var(--arrow-size) var(--arrow-size) 0 var(--arrow-size);border-top-color:var(--fui-tooltip-background)}.fui-tooltip__arrow--left{right:100%;top:50%;transform:translateY(-50%);border-width:var(--arrow-size) var(--arrow-size) var(--arrow-size) 0;border-right-color:var(--fui-tooltip-background)}.fui-tooltip__arrow--right{left:100%;top:50%;transform:translateY(-50%);border-width:var(--arrow-size) 0 var(--arrow-size) var(--arrow-size);border-left-color:var(--fui-tooltip-background)}.fui-tooltip--right{transform:translate(-50%)}.fui-tooltip--top-start .fui-tooltip__arrow,.fui-tooltip--bottom-start .fui-tooltip__arrow{left:var(--fui-spacing-04);transform:none}.fui-tooltip--top-end .fui-tooltip__arrow,.fui-tooltip--bottom-end .fui-tooltip__arrow{right:var(--fui-spacing-04);left:auto;transform:none}.fui-tooltip--left-start .fui-tooltip__arrow,.fui-tooltip--right-start .fui-tooltip__arrow{top:var(--fui-spacing-04);transform:none}.fui-tooltip--left-end .fui-tooltip__arrow,.fui-tooltip--right-end .fui-tooltip__arrow{bottom:var(--fui-spacing-04);top:auto;transform:none}.fui-tooltip--sm{font-size:var(--fui-font-size-01)}.fui-tooltip--sm .fui-tooltip__content{padding:var(--fui-spacing-02) var(--fui-spacing-03)}.fui-tooltip--sm .fui-tooltip__arrow{--arrow-size: 4px}.fui-tooltip--md{font-size:var(--fui-font-size-02)}.fui-tooltip--md .fui-tooltip__content{padding:var(--fui-spacing-03) var(--fui-spacing-04)}.fui-tooltip--md .fui-tooltip__arrow{--arrow-size: 6px}.fui-tooltip--lg{font-size:var(--fui-font-size-03)}.fui-tooltip--lg .fui-tooltip__content{padding:var(--fui-spacing-04) var(--fui-spacing-05)}.fui-tooltip--lg .fui-tooltip__arrow{--arrow-size: 8px}@media(prefers-contrast:more){.fui-tooltip{border:2px solid var(--fui-text-primary);box-shadow:var(--fui-shadow-04)}}@media(prefers-reduced-motion:reduce){.fui-tooltip{animation:none;opacity:1}}@media print{.fui-tooltip{display:none!important}}@keyframes fui-tooltip-fade-in{0%{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
101
101
  }
102
102
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: FuiTooltipComponent, decorators: [{
103
103
  type: Component,
@@ -107,7 +107,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImpor
107
107
  '[id]': 'tooltipId()',
108
108
  '[attr.role]': '"tooltip"',
109
109
  '[style.max-width]': 'maxWidth()',
110
- }, template: "<div class=\"fui-tooltip__content\">\r\n {{ content() }}\r\n</div>\r\n@if (arrow()) {\r\n <div [class]=\"arrowClasses()\"></div>\r\n}\r\n", styles: ["@keyframes fui-skeleton-pulse{0%{opacity:1}50%{opacity:.4}to{opacity:1}}@keyframes fui-spin{to{transform:rotate(360deg)}}@keyframes fui-shake{0%,to{transform:translate(0)}10%,30%,50%,70%,90%{transform:translate(-2px)}20%,40%,60%,80%{transform:translate(2px)}}.fui-motion-fade-in{transition:opacity var(--fui-duration-fast-02) var(--fui-ease-entrance) 0ms}.fui-motion-fade-out{transition:opacity var(--fui-duration-fast-01) var(--fui-ease-exit) 0ms}.fui-motion-slide-in-bottom{transition:transform var(--fui-duration-moderate-01) var(--fui-ease-entrance) 0ms;transform:translateY(0)}.fui-motion-slide-in-bottom.fui-motion-entering{transform:translateY(1rem)}.fui-motion-slide-in-top{transition:transform var(--fui-duration-moderate-01) var(--fui-ease-entrance) 0ms;transform:translateY(0)}.fui-motion-slide-in-top.fui-motion-entering{transform:translateY(-1rem)}.fui-motion-scale-in{transition:transform,opacity var(--fui-duration-moderate-01) var(--fui-ease-entrance) 0ms;transform:scale(1);opacity:1}.fui-motion-scale-in.fui-motion-entering{transform:scale(.95);opacity:0}.fui-no-motion{transition:none!important;animation:none!important}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}@keyframes fui-pulse{0%{transform:scale(1);opacity:1}50%{transform:scale(1.05)}to{transform:scale(1);opacity:1}}@keyframes fui-slide-in{0%{transform:translate(120%)}to{transform:translate(0)}}.fui-slide-in{animation:fui-slide-in var(--fui-duration-moderate-01) var(--fui-ease-entrance)}@keyframes fui-popover-enter{0%{opacity:0;transform:translateY(-14px)}60%{opacity:1}to{opacity:1;transform:translateY(0)}}::ng-deep .fui-tooltip{--fui-tooltip-border-radius: var(--fui-border-radius-sm);--fui-tooltip-shadow: var(--fui-shadow-03);--fui-tooltip-font-size: var(--fui-font-size-02);--fui-tooltip-padding-x: var(--fui-spacing-04);--fui-tooltip-padding-y: var(--fui-spacing-03);z-index:var(--fui-z-tooltip, 1000);display:block;font-family:var(--fui-font-family-sans);font-weight:var(--fui-font-weight-regular);line-height:var(--fui-line-height-body);border-radius:var(--fui-tooltip-border-radius);background-color:var(--fui-tooltip-background);color:var(--fui-tooltip-text);box-shadow:var(--fui-tooltip-shadow);transition:opacity var(--fui-duration-fast-01) var(--fui-ease-standard) 0ms;opacity:0;animation:fui-tooltip-fade-in var(--fui-duration-fast-02) ease-out forwards}::ng-deep .fui-tooltip__content{padding:var(--fui-tooltip-padding-y) var(--fui-tooltip-padding-x);word-wrap:break-word;hyphens:auto}::ng-deep .fui-tooltip__arrow{position:absolute;width:0;height:0;border-style:solid;border-color:transparent;--arrow-size: 6px}::ng-deep .fui-tooltip__arrow--top{bottom:100%;left:50%;transform:translate(-50%);border-width:0 var(--arrow-size) var(--arrow-size) var(--arrow-size);border-bottom-color:var(--fui-tooltip-background)}::ng-deep .fui-tooltip__arrow--bottom{top:100%;left:50%;transform:translate(-50%);border-width:var(--arrow-size) var(--arrow-size) 0 var(--arrow-size);border-top-color:var(--fui-tooltip-background)}::ng-deep .fui-tooltip__arrow--left{right:100%;top:50%;transform:translateY(-50%);border-width:var(--arrow-size) var(--arrow-size) var(--arrow-size) 0;border-right-color:var(--fui-tooltip-background)}::ng-deep .fui-tooltip__arrow--right{left:100%;top:50%;transform:translateY(-50%);border-width:var(--arrow-size) 0 var(--arrow-size) var(--arrow-size);border-left-color:var(--fui-tooltip-background)}::ng-deep .fui-tooltip--right{transform:translate(-50%)}::ng-deep .fui-tooltip--top-start .fui-tooltip__arrow,::ng-deep .fui-tooltip--bottom-start .fui-tooltip__arrow{left:var(--fui-spacing-04);transform:none}::ng-deep .fui-tooltip--top-end .fui-tooltip__arrow,::ng-deep .fui-tooltip--bottom-end .fui-tooltip__arrow{right:var(--fui-spacing-04);left:auto;transform:none}::ng-deep .fui-tooltip--left-start .fui-tooltip__arrow,::ng-deep .fui-tooltip--right-start .fui-tooltip__arrow{top:var(--fui-spacing-04);transform:none}::ng-deep .fui-tooltip--left-end .fui-tooltip__arrow,::ng-deep .fui-tooltip--right-end .fui-tooltip__arrow{bottom:var(--fui-spacing-04);top:auto;transform:none}::ng-deep .fui-tooltip--sm{font-size:var(--fui-font-size-01)}::ng-deep .fui-tooltip--sm .fui-tooltip__content{padding:var(--fui-spacing-02) var(--fui-spacing-03)}::ng-deep .fui-tooltip--sm .fui-tooltip__arrow{--arrow-size: 4px}::ng-deep .fui-tooltip--md{font-size:var(--fui-font-size-02)}::ng-deep .fui-tooltip--md .fui-tooltip__content{padding:var(--fui-spacing-03) var(--fui-spacing-04)}::ng-deep .fui-tooltip--md .fui-tooltip__arrow{--arrow-size: 6px}::ng-deep .fui-tooltip--lg{font-size:var(--fui-font-size-03)}::ng-deep .fui-tooltip--lg .fui-tooltip__content{padding:var(--fui-spacing-04) var(--fui-spacing-05)}::ng-deep .fui-tooltip--lg .fui-tooltip__arrow{--arrow-size: 8px}@media(prefers-contrast:more){::ng-deep .fui-tooltip{border:2px solid var(--fui-text-primary);box-shadow:var(--fui-shadow-04)}}@media(prefers-reduced-motion:reduce){::ng-deep .fui-tooltip{animation:none;opacity:1}}@media print{::ng-deep .fui-tooltip{display:none!important}}@keyframes fui-tooltip-fade-in{0%{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}\n"] }]
110
+ }, template: "<div class=\"fui-tooltip__content\">\r\n {{ content() }}\r\n</div>\r\n@if (arrow()) {\r\n <div [class]=\"arrowClasses()\"></div>\r\n}\r\n", styles: ["@keyframes fui-skeleton-pulse{0%{opacity:1}50%{opacity:.4}to{opacity:1}}@keyframes fui-spin{to{transform:rotate(360deg)}}@keyframes fui-shake{0%,to{transform:translate(0)}10%,30%,50%,70%,90%{transform:translate(-2px)}20%,40%,60%,80%{transform:translate(2px)}}.fui-motion-fade-in{transition:opacity var(--fui-duration-fast-02) var(--fui-ease-entrance) 0ms}.fui-motion-fade-out{transition:opacity var(--fui-duration-fast-01) var(--fui-ease-exit) 0ms}.fui-motion-slide-in-bottom{transition:transform var(--fui-duration-moderate-01) var(--fui-ease-entrance) 0ms;transform:translateY(0)}.fui-motion-slide-in-bottom.fui-motion-entering{transform:translateY(1rem)}.fui-motion-slide-in-top{transition:transform var(--fui-duration-moderate-01) var(--fui-ease-entrance) 0ms;transform:translateY(0)}.fui-motion-slide-in-top.fui-motion-entering{transform:translateY(-1rem)}.fui-motion-scale-in{transition:transform,opacity var(--fui-duration-moderate-01) var(--fui-ease-entrance) 0ms;transform:scale(1);opacity:1}.fui-motion-scale-in.fui-motion-entering{transform:scale(.95);opacity:0}.fui-no-motion{transition:none!important;animation:none!important}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}@keyframes fui-pulse{0%{transform:scale(1);opacity:1}50%{transform:scale(1.05)}to{transform:scale(1);opacity:1}}@keyframes fui-slide-in{0%{transform:translate(120%)}to{transform:translate(0)}}.fui-slide-in{animation:fui-slide-in var(--fui-duration-moderate-01) var(--fui-ease-entrance)}@keyframes fui-popover-enter{0%{opacity:0;transform:translateY(-14px)}60%{opacity:1}to{opacity:1;transform:translateY(0)}}.fui-tooltip{--fui-tooltip-border-radius: var(--fui-border-radius-sm);--fui-tooltip-shadow: var(--fui-shadow-03);--fui-tooltip-font-size: var(--fui-font-size-02);--fui-tooltip-padding-x: var(--fui-spacing-04);--fui-tooltip-padding-y: var(--fui-spacing-03);z-index:var(--fui-z-tooltip, 1000);display:block;font-family:var(--fui-font-family-sans);font-weight:var(--fui-font-weight-regular);line-height:var(--fui-line-height-body);border-radius:var(--fui-tooltip-border-radius);background-color:var(--fui-tooltip-background);color:var(--fui-tooltip-text);box-shadow:var(--fui-tooltip-shadow);transition:opacity var(--fui-duration-fast-01) var(--fui-ease-standard) 0ms;opacity:0;animation:fui-tooltip-fade-in var(--fui-duration-fast-02) ease-out forwards}.fui-tooltip__content{padding:var(--fui-tooltip-padding-y) var(--fui-tooltip-padding-x);word-wrap:break-word;hyphens:auto;font-size:var(--fui-font-size-01);line-height:var(--fui-line-height-01)}.fui-tooltip__arrow{position:absolute;width:0;height:0;border-style:solid;border-color:transparent;--arrow-size: 6px}.fui-tooltip__arrow--top{bottom:100%;left:50%;transform:translate(-50%);border-width:0 var(--arrow-size) var(--arrow-size) var(--arrow-size);border-bottom-color:var(--fui-tooltip-background)}.fui-tooltip__arrow--bottom{top:100%;left:50%;transform:translate(-50%);border-width:var(--arrow-size) var(--arrow-size) 0 var(--arrow-size);border-top-color:var(--fui-tooltip-background)}.fui-tooltip__arrow--left{right:100%;top:50%;transform:translateY(-50%);border-width:var(--arrow-size) var(--arrow-size) var(--arrow-size) 0;border-right-color:var(--fui-tooltip-background)}.fui-tooltip__arrow--right{left:100%;top:50%;transform:translateY(-50%);border-width:var(--arrow-size) 0 var(--arrow-size) var(--arrow-size);border-left-color:var(--fui-tooltip-background)}.fui-tooltip--right{transform:translate(-50%)}.fui-tooltip--top-start .fui-tooltip__arrow,.fui-tooltip--bottom-start .fui-tooltip__arrow{left:var(--fui-spacing-04);transform:none}.fui-tooltip--top-end .fui-tooltip__arrow,.fui-tooltip--bottom-end .fui-tooltip__arrow{right:var(--fui-spacing-04);left:auto;transform:none}.fui-tooltip--left-start .fui-tooltip__arrow,.fui-tooltip--right-start .fui-tooltip__arrow{top:var(--fui-spacing-04);transform:none}.fui-tooltip--left-end .fui-tooltip__arrow,.fui-tooltip--right-end .fui-tooltip__arrow{bottom:var(--fui-spacing-04);top:auto;transform:none}.fui-tooltip--sm{font-size:var(--fui-font-size-01)}.fui-tooltip--sm .fui-tooltip__content{padding:var(--fui-spacing-02) var(--fui-spacing-03)}.fui-tooltip--sm .fui-tooltip__arrow{--arrow-size: 4px}.fui-tooltip--md{font-size:var(--fui-font-size-02)}.fui-tooltip--md .fui-tooltip__content{padding:var(--fui-spacing-03) var(--fui-spacing-04)}.fui-tooltip--md .fui-tooltip__arrow{--arrow-size: 6px}.fui-tooltip--lg{font-size:var(--fui-font-size-03)}.fui-tooltip--lg .fui-tooltip__content{padding:var(--fui-spacing-04) var(--fui-spacing-05)}.fui-tooltip--lg .fui-tooltip__arrow{--arrow-size: 8px}@media(prefers-contrast:more){.fui-tooltip{border:2px solid var(--fui-text-primary);box-shadow:var(--fui-shadow-04)}}@media(prefers-reduced-motion:reduce){.fui-tooltip{animation:none;opacity:1}}@media print{.fui-tooltip{display:none!important}}@keyframes fui-tooltip-fade-in{0%{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}\n"] }]
111
111
  }], propDecorators: { content: [{ type: i0.Input, args: [{ isSignal: true, alias: "content", required: true }] }], position: [{ type: i0.Input, args: [{ isSignal: true, alias: "position", required: true }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: true }] }], maxWidth: [{ type: i0.Input, args: [{ isSignal: true, alias: "maxWidth", required: true }] }], arrow: [{ type: i0.Input, args: [{ isSignal: true, alias: "arrow", required: true }] }], tooltipId: [{ type: i0.Input, args: [{ isSignal: true, alias: "tooltipId", required: true }] }] } });
112
112
 
113
113
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"raintonic-formaui-components-tooltip.mjs","sources":["../../../lib/components/tooltip/tooltip.types.ts","../../../lib/components/tooltip/tooltip.component.ts","../../../lib/components/tooltip/tooltip.component.html","../../../lib/components/tooltip/tooltip.directive.ts","../../../lib/components/tooltip/index.ts","../../../lib/components/tooltip/raintonic-formaui-components-tooltip.ts"],"sourcesContent":["/**\r\n * Available tooltip positions relative to the trigger element\r\n */\r\nexport type TooltipPosition =\r\n | 'top'\r\n | 'top-start'\r\n | 'top-end'\r\n | 'bottom'\r\n | 'bottom-start'\r\n | 'bottom-end'\r\n | 'left'\r\n | 'left-start'\r\n | 'left-end'\r\n | 'right'\r\n | 'right-start'\r\n | 'right-end';\r\n\r\n/**\r\n * Available tooltip sizes\r\n */\r\nexport type TooltipSize = 'sm' | 'md' | 'lg';\r\n\r\n/**\r\n * Tooltip trigger events\r\n */\r\nexport type TooltipTrigger = 'hover' | 'focus' | 'click' | 'manual';\r\n\r\n/**\r\n * Constants for validation\r\n */\r\nexport const TOOLTIP_POSITIONS = [\r\n 'top',\r\n 'top-start',\r\n 'top-end',\r\n 'bottom',\r\n 'bottom-start',\r\n 'bottom-end',\r\n 'left',\r\n 'left-start',\r\n 'left-end',\r\n 'right',\r\n 'right-start',\r\n 'right-end',\r\n] as const;\r\n\r\nexport const TOOLTIP_SIZES = ['sm', 'md', 'lg'] as const;\r\nexport const TOOLTIP_TRIGGERS = ['hover', 'focus', 'click', 'manual'] as const;\r\n\r\n/**\r\n * Tooltip configuration interface\r\n */\r\nexport interface TooltipConfig {\r\n position?: TooltipPosition;\r\n size?: TooltipSize;\r\n trigger?: TooltipTrigger;\r\n showDelay?: number;\r\n hideDelay?: number;\r\n disabled?: boolean;\r\n maxWidth?: string;\r\n offset?: number;\r\n arrow?: boolean;\r\n}\r\n","import { Component, input, computed, Signal, ChangeDetectionStrategy, ViewEncapsulation } from '@angular/core';\r\n\r\nimport { TooltipPosition, TooltipSize } from './tooltip.types';\r\n\r\n/**\r\n * @component FuiTooltipComponent\r\n * @selector fui-tooltip\r\n * @description Internal tooltip component rendered by FuiTooltipDirective via the overlay system.\r\n * Not intended for direct use; created programmatically by the directive.\r\n *\r\n * @input content - (required) Tooltip text content.\r\n * @input position - (required) Tooltip position relative to the trigger element.\r\n * @input size - (required) Tooltip size variant.\r\n * @input maxWidth - (required) Maximum CSS width of the tooltip.\r\n * @input arrow - (required) Whether to render an arrow indicator.\r\n * @input tooltipId - (required) Unique ID for ARIA accessibility linking.\r\n *\r\n * @example\r\n * <!-- Used internally by FuiTooltipDirective -->\r\n * <button fuiTooltip=\"Save your changes\">Save</button>\r\n *\r\n * @internal\r\n */\r\n@Component({\r\n selector: 'fui-tooltip',\r\n standalone: true,\r\n imports: [],\r\n templateUrl: './tooltip.component.html',\r\n styleUrl: './tooltip.component.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n encapsulation: ViewEncapsulation.None,\r\n host: {\r\n class: 'fui-tooltip',\r\n '[class]': 'computedClasses()',\r\n '[id]': 'tooltipId()',\r\n '[attr.role]': '\"tooltip\"',\r\n '[style.max-width]': 'maxWidth()',\r\n },\r\n})\r\nexport class FuiTooltipComponent {\r\n /**\r\n * Tooltip content text\r\n */\r\n readonly content = input.required<string>();\r\n\r\n /**\r\n * Tooltip position\r\n */\r\n readonly position = input.required<TooltipPosition>();\r\n\r\n /**\r\n * Tooltip size\r\n */\r\n readonly size = input.required<TooltipSize>();\r\n\r\n /**\r\n * Maximum width of the tooltip\r\n */\r\n readonly maxWidth = input.required<string>();\r\n\r\n /**\r\n * Whether to show arrow\r\n */\r\n readonly arrow = input.required<boolean>();\r\n\r\n /**\r\n * Tooltip ID for accessibility\r\n */\r\n readonly tooltipId = input.required<string>();\r\n\r\n /**\r\n * Computed CSS classes for the tooltip\r\n */\r\n readonly computedClasses: Signal<string> = computed(() => {\r\n const classes: string[] = ['fui-tooltip', `fui-tooltip--${this.size()}`, `fui-tooltip--${this.position()}`];\r\n\r\n if (this.arrow()) {\r\n classes.push('fui-tooltip--with-arrow');\r\n }\r\n\r\n return classes.join(' ');\r\n });\r\n\r\n /**\r\n * Computed arrow classes based on position\r\n */\r\n readonly arrowClasses: Signal<string> = computed(() => {\r\n const position = this.position();\r\n const baseClass = 'fui-tooltip__arrow';\r\n\r\n if (position.startsWith('top')) {\r\n return `${baseClass} ${baseClass}--bottom`;\r\n } else if (position.startsWith('bottom')) {\r\n return `${baseClass} ${baseClass}--top`;\r\n } else if (position.startsWith('left')) {\r\n return `${baseClass} ${baseClass}--right`;\r\n } else if (position.startsWith('right')) {\r\n return `${baseClass} ${baseClass}--left`;\r\n }\r\n\r\n return baseClass;\r\n });\r\n}\r\n","<div class=\"fui-tooltip__content\">\r\n {{ content() }}\r\n</div>\r\n@if (arrow()) {\r\n <div [class]=\"arrowClasses()\"></div>\r\n}\r\n","import {\r\n Directive,\r\n ElementRef,\r\n input,\r\n computed,\r\n effect,\r\n HostListener,\r\n inject,\r\n Signal,\r\n OnDestroy,\r\n booleanAttribute,\r\n numberAttribute,\r\n ComponentRef,\r\n createComponent,\r\n EnvironmentInjector,\r\n signal,\r\n WritableSignal,\r\n} from '@angular/core';\r\nimport {\r\n TooltipPosition,\r\n TooltipSize,\r\n TooltipTrigger,\r\n TOOLTIP_POSITIONS,\r\n TOOLTIP_SIZES,\r\n TOOLTIP_TRIGGERS,\r\n} from './tooltip.types';\r\nimport { FuiTooltipComponent } from './tooltip.component';\r\nimport { FuiOverlayService, FuiOverlayRef, FuiConnectedPosition } from '@raintonic/formaui/cdk/overlay';\r\n\r\n/**\r\n * # Tooltip Directive\r\n *\r\n * A professional tooltip directive that provides contextual information on hover, focus, or click.\r\n * Follows Material Design patterns with full accessibility support and advanced positioning.\r\n *\r\n * ## Features\r\n * - Multiple positioning options (12 positions)\r\n * - Configurable trigger events (hover, focus, click, manual)\r\n * - Multiple variants for different semantic meanings\r\n * - Flexible sizing options\r\n * - Smart positioning with collision detection\r\n * - Customizable delays and animations\r\n * - Full accessibility support (ARIA attributes, keyboard navigation)\r\n * - Arrow indicator support\r\n * - Responsive design with max-width control\r\n * - Theme support (light/dark)\r\n *\r\n * ## Usage\r\n *\r\n * ### Basic Tooltip\r\n * ```html\r\n * <button fuiTooltip=\"Save your changes\">Save</button>\r\n * ```\r\n *\r\n * ### Advanced Configuration\r\n * ```html\r\n * <button fuiTooltip=\"Delete this item permanently\"\r\n * fuiTooltipPosition=\"top\"\r\n * fuiTooltipVariant=\"error\"\r\n * fuiTooltipSize=\"lg\"\r\n * [fuiTooltipShowDelay]=\"500\">\r\n * Delete\r\n * </button>\r\n * ```\r\n *\r\n * ### Click Trigger\r\n * ```html\r\n * <span fuiTooltip=\"Click to copy\"\r\n * fuiTooltipTrigger=\"click\"\r\n * fuiTooltipPosition=\"bottom\">\r\n * 📋 Copy to clipboard\r\n * </span>\r\n * ```\r\n *\r\n * ### Manual Control\r\n * ```html\r\n * <div fuiTooltip=\"Manual tooltip\"\r\n * fuiTooltipTrigger=\"manual\"\r\n * [fuiTooltipShow]=\"showTooltip\">\r\n * Hover me\r\n * </div>\r\n * ```\r\n *\r\n * @example\r\n * ```typescript\r\n * import { FuiTooltipDirective } from '@raintonic/formaui/components/tooltip';\r\n *\r\n * @Component({\r\n * standalone: true,\r\n * imports: [FuiTooltipDirective],\r\n * template: `\r\n * <button fuiTooltip=\"This will save your work\"\r\n * fuiTooltipPosition=\"top\"\r\n * fuiTooltipVariant=\"info\">\r\n * Save Document\r\n * </button>\r\n * `\r\n * })\r\n * export class MyComponent { }\r\n * ```\r\n */\r\n@Directive({\r\n selector: '[fuiTooltip]',\r\n standalone: true,\r\n host: {\r\n '[attr.aria-describedby]': 'isVisible() ? tooltipId() : null',\r\n },\r\n})\r\nexport class FuiTooltipDirective implements OnDestroy {\r\n private static _nextId = 0;\r\n /**\r\n * Tooltip content text\r\n */\r\n readonly fuiTooltip = input.required<string>();\r\n\r\n /**\r\n * Tooltip position relative to the trigger element\r\n * @default 'top'\r\n */\r\n readonly fuiTooltipPosition = input<TooltipPosition, TooltipPosition | string>('top', {\r\n transform: (v) => ((TOOLTIP_POSITIONS as readonly string[]).includes(v) ? (v as TooltipPosition) : 'top'),\r\n });\r\n\r\n /**\r\n * Tooltip size\r\n * @default 'md'\r\n */\r\n readonly fuiTooltipSize = input<TooltipSize, TooltipSize | string>('md', {\r\n transform: (v) => ((TOOLTIP_SIZES as readonly string[]).includes(v) ? (v as TooltipSize) : 'md'),\r\n });\r\n\r\n /**\r\n * Tooltip trigger event\r\n * @default 'hover'\r\n */\r\n readonly fuiTooltipTrigger = input<TooltipTrigger, TooltipTrigger | string>('hover', {\r\n transform: (v) => ((TOOLTIP_TRIGGERS as readonly string[]).includes(v) ? (v as TooltipTrigger) : 'hover'),\r\n });\r\n\r\n /**\r\n * Delay before showing tooltip (in milliseconds)\r\n * @default 500\r\n */\r\n readonly fuiTooltipShowDelay = input<number, unknown>(500, { transform: numberAttribute });\r\n\r\n /**\r\n * Delay before hiding tooltip (in milliseconds)\r\n * @default 0\r\n */\r\n readonly fuiTooltipHideDelay = input<number, unknown>(0, { transform: numberAttribute });\r\n\r\n /**\r\n * Whether the tooltip is disabled\r\n * @default false\r\n */\r\n readonly fuiTooltipDisabled = input<boolean, unknown>(false, { transform: booleanAttribute });\r\n\r\n /**\r\n * Maximum width of the tooltip\r\n * @default '200px'\r\n */\r\n readonly fuiTooltipMaxWidth = input('200px');\r\n\r\n /**\r\n * Offset distance from the trigger element (in pixels)\r\n * @default 8\r\n */\r\n readonly fuiTooltipOffset = input<number, unknown>(8, { transform: numberAttribute });\r\n\r\n /**\r\n * Whether to show an arrow pointing to the trigger element\r\n * @default true\r\n */\r\n readonly fuiTooltipArrow = input<boolean, unknown>(true, { transform: booleanAttribute });\r\n\r\n /**\r\n * Manual control for showing/hiding tooltip (only works with trigger=\"manual\")\r\n * @default false\r\n */\r\n readonly fuiTooltipShow = input<boolean, unknown>(false, { transform: booleanAttribute });\r\n\r\n // Internal state\r\n private readonly _isVisible: WritableSignal<boolean> = signal(false);\r\n private readonly _tooltipId: WritableSignal<string> = signal('');\r\n private _overlayRef: FuiOverlayRef | null = null;\r\n private _tooltipComponent: ComponentRef<FuiTooltipComponent> | null = null;\r\n private _showTimeout: number | null = null;\r\n private _hideTimeout: number | null = null;\r\n private _isHoveringTooltip = false;\r\n\r\n // Computed properties\r\n readonly isVisible: Signal<boolean> = computed(() => this._isVisible());\r\n readonly tooltipId: Signal<string> = computed(() => this._tooltipId());\r\n\r\n // Injected dependencies\r\n private readonly _elementRef: ElementRef<HTMLElement> = inject(ElementRef);\r\n private readonly _overlayService: FuiOverlayService = inject(FuiOverlayService);\r\n private readonly _environmentInjector: EnvironmentInjector = inject(EnvironmentInjector);\r\n\r\n constructor() {\r\n // Generate unique tooltip ID\r\n this._tooltipId.set(`fui-tooltip-${FuiTooltipDirective._nextId++}`);\r\n\r\n // Handle manual control\r\n effect(() => {\r\n if (this.fuiTooltipTrigger() === 'manual') {\r\n if (this.fuiTooltipShow()) {\r\n this._showTooltip();\r\n } else {\r\n this._hideTooltip();\r\n }\r\n }\r\n });\r\n\r\n // Handle disabled state\r\n effect(() => {\r\n if (this.fuiTooltipDisabled() && this._isVisible()) {\r\n this._hideTooltip();\r\n }\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this._clearTimeouts();\r\n this._destroyTooltip();\r\n }\r\n\r\n @HostListener('mouseenter')\r\n onMouseEnter(): void {\r\n if (this.fuiTooltipTrigger() === 'hover' && !this.fuiTooltipDisabled()) {\r\n this._scheduleShow();\r\n }\r\n }\r\n\r\n @HostListener('mouseleave')\r\n onMouseLeave(): void {\r\n if (this.fuiTooltipTrigger() === 'hover' && !this.fuiTooltipDisabled()) {\r\n this._scheduleHide();\r\n }\r\n }\r\n\r\n @HostListener('focus')\r\n onFocus(): void {\r\n if ((this.fuiTooltipTrigger() === 'focus' || this.fuiTooltipTrigger() === 'hover') && !this.fuiTooltipDisabled()) {\r\n this._scheduleShow();\r\n }\r\n }\r\n\r\n @HostListener('blur')\r\n onBlur(): void {\r\n if ((this.fuiTooltipTrigger() === 'focus' || this.fuiTooltipTrigger() === 'hover') && !this.fuiTooltipDisabled()) {\r\n this._scheduleHide();\r\n }\r\n }\r\n\r\n @HostListener('click')\r\n onClick(): void {\r\n if (this.fuiTooltipTrigger() === 'click' && !this.fuiTooltipDisabled()) {\r\n if (this._isVisible()) {\r\n this._hideTooltip();\r\n } else {\r\n this._showTooltip();\r\n }\r\n }\r\n }\r\n\r\n @HostListener('keydown', ['$event'])\r\n onKeydown(event: KeyboardEvent): void {\r\n if (event.key === 'Escape' && this._isVisible()) {\r\n this._hideTooltip();\r\n event.preventDefault();\r\n }\r\n }\r\n\r\n /**\r\n * Programmatically show the tooltip\r\n */\r\n show(): void {\r\n if (!this.fuiTooltipDisabled()) {\r\n this._showTooltip();\r\n }\r\n }\r\n\r\n /**\r\n * Programmatically hide the tooltip\r\n */\r\n hide(): void {\r\n this._hideTooltip();\r\n }\r\n\r\n /**\r\n * Toggle tooltip visibility\r\n */\r\n toggle(): void {\r\n if (this._isVisible()) {\r\n this.hide();\r\n } else {\r\n this.show();\r\n }\r\n }\r\n\r\n private _scheduleShow(): void {\r\n this._clearTimeouts();\r\n\r\n if (this.fuiTooltipShowDelay() > 0) {\r\n this._showTimeout = window.setTimeout(() => {\r\n this._showTooltip();\r\n }, this.fuiTooltipShowDelay());\r\n } else {\r\n this._showTooltip();\r\n }\r\n }\r\n\r\n private _scheduleHide(): void {\r\n this._clearTimeouts();\r\n\r\n if (this.fuiTooltipHideDelay() > 0) {\r\n this._hideTimeout = window.setTimeout(() => {\r\n if (!this._isHoveringTooltip) {\r\n this._hideTooltip();\r\n }\r\n }, this.fuiTooltipHideDelay());\r\n } else {\r\n if (!this._isHoveringTooltip) {\r\n this._hideTooltip();\r\n }\r\n }\r\n }\r\n\r\n private _showTooltip(): void {\r\n if (this._isVisible() || this.fuiTooltipDisabled() || !this.fuiTooltip().trim()) {\r\n return;\r\n }\r\n\r\n this._createTooltip();\r\n this._isVisible.set(true);\r\n\r\n // Add click outside listener for click trigger\r\n if (this.fuiTooltipTrigger() === 'click') {\r\n setTimeout(() => {\r\n document.addEventListener('click', this._onDocumentClick, true);\r\n });\r\n }\r\n }\r\n\r\n private _hideTooltip(): void {\r\n if (!this._isVisible()) {\r\n return;\r\n }\r\n\r\n this._isVisible.set(false);\r\n this._destroyTooltip();\r\n document.removeEventListener('click', this._onDocumentClick, true);\r\n }\r\n\r\n private _createTooltip(): void {\r\n if (this._overlayRef) {\r\n return;\r\n }\r\n\r\n // Create tooltip component first\r\n this._tooltipComponent = createComponent(FuiTooltipComponent, {\r\n environmentInjector: this._environmentInjector,\r\n });\r\n\r\n // Set tooltip properties immediately\r\n this._tooltipComponent.setInput('content', this.fuiTooltip());\r\n this._tooltipComponent.setInput('position', this.fuiTooltipPosition());\r\n this._tooltipComponent.setInput('size', this.fuiTooltipSize());\r\n this._tooltipComponent.setInput('maxWidth', this.fuiTooltipMaxWidth());\r\n this._tooltipComponent.setInput('arrow', this.fuiTooltipArrow());\r\n this._tooltipComponent.setInput('tooltipId', this.tooltipId());\r\n\r\n // Trigger change detection to ensure component is rendered with correct props\r\n this._tooltipComponent.changeDetectorRef.detectChanges();\r\n\r\n // Now create overlay with positioning strategy\r\n const positions = this._getPositionsForTooltipPosition(this.fuiTooltipPosition());\r\n const positionStrategy = this._overlayService\r\n .position()\r\n .connectedTo(this._elementRef, positions)\r\n .withPush(true)\r\n .withViewportMargin(8);\r\n\r\n // Create overlay\r\n this._overlayRef = this._overlayService.create({\r\n positionStrategy,\r\n scrollStrategy: this._overlayService.scrollStrategies.reposition(20),\r\n panelClass: 'fui-tooltip-panel',\r\n });\r\n\r\n // Attach component to overlay\r\n this._overlayRef.attach(this._tooltipComponent);\r\n\r\n // Set up hover events for tooltip persistence\r\n const tooltipElement = this._tooltipComponent.location.nativeElement;\r\n\r\n tooltipElement.addEventListener('mouseenter', () => {\r\n this._isHoveringTooltip = true;\r\n this._clearTimeouts();\r\n });\r\n\r\n tooltipElement.addEventListener('mouseleave', () => {\r\n this._isHoveringTooltip = false;\r\n if (this.fuiTooltipTrigger() === 'hover') {\r\n this._scheduleHide();\r\n }\r\n });\r\n }\r\n\r\n private _getPositionsForTooltipPosition(position: TooltipPosition): FuiConnectedPosition[] {\r\n const offset = this.fuiTooltipOffset();\r\n const positionMap: Record<TooltipPosition, FuiConnectedPosition[]> = {\r\n top: [\r\n { originX: 'center', originY: 'top', overlayX: 'center', overlayY: 'bottom', offsetY: -offset },\r\n { originX: 'center', originY: 'bottom', overlayX: 'center', overlayY: 'top', offsetY: offset },\r\n ],\r\n 'top-start': [\r\n { originX: 'start', originY: 'top', overlayX: 'start', overlayY: 'bottom', offsetY: -offset },\r\n { originX: 'start', originY: 'bottom', overlayX: 'start', overlayY: 'top', offsetY: offset },\r\n ],\r\n 'top-end': [\r\n { originX: 'end', originY: 'top', overlayX: 'end', overlayY: 'bottom', offsetY: -offset },\r\n { originX: 'end', originY: 'bottom', overlayX: 'end', overlayY: 'top', offsetY: offset },\r\n ],\r\n bottom: [\r\n { originX: 'center', originY: 'bottom', overlayX: 'center', overlayY: 'top', offsetY: offset },\r\n { originX: 'center', originY: 'top', overlayX: 'center', overlayY: 'bottom', offsetY: -offset },\r\n ],\r\n 'bottom-start': [\r\n { originX: 'start', originY: 'bottom', overlayX: 'start', overlayY: 'top', offsetY: offset },\r\n { originX: 'start', originY: 'top', overlayX: 'start', overlayY: 'bottom', offsetY: -offset },\r\n ],\r\n 'bottom-end': [\r\n { originX: 'end', originY: 'bottom', overlayX: 'end', overlayY: 'top', offsetY: offset },\r\n { originX: 'end', originY: 'top', overlayX: 'end', overlayY: 'bottom', offsetY: -offset },\r\n ],\r\n left: [\r\n { originX: 'start', originY: 'center', overlayX: 'end', overlayY: 'center', offsetX: -offset },\r\n { originX: 'end', originY: 'center', overlayX: 'start', overlayY: 'center', offsetX: offset },\r\n ],\r\n 'left-start': [\r\n { originX: 'start', originY: 'top', overlayX: 'end', overlayY: 'top', offsetX: -offset },\r\n { originX: 'end', originY: 'top', overlayX: 'start', overlayY: 'top', offsetX: offset },\r\n ],\r\n 'left-end': [\r\n { originX: 'start', originY: 'bottom', overlayX: 'end', overlayY: 'bottom', offsetX: -offset },\r\n { originX: 'end', originY: 'bottom', overlayX: 'start', overlayY: 'bottom', offsetX: offset },\r\n ],\r\n right: [\r\n { originX: 'end', originY: 'center', overlayX: 'start', overlayY: 'center', offsetX: offset },\r\n { originX: 'start', originY: 'center', overlayX: 'end', overlayY: 'center', offsetX: -offset },\r\n ],\r\n 'right-start': [\r\n { originX: 'end', originY: 'top', overlayX: 'start', overlayY: 'top', offsetX: offset },\r\n { originX: 'start', originY: 'top', overlayX: 'end', overlayY: 'top', offsetX: -offset },\r\n ],\r\n 'right-end': [\r\n { originX: 'end', originY: 'bottom', overlayX: 'start', overlayY: 'bottom', offsetX: offset },\r\n { originX: 'start', originY: 'bottom', overlayX: 'end', overlayY: 'bottom', offsetX: -offset },\r\n ],\r\n };\r\n\r\n return positionMap[position] || positionMap.top;\r\n }\r\n\r\n private _destroyTooltip(): void {\r\n if (this._overlayRef) {\r\n this._overlayRef.dispose();\r\n this._overlayRef = null;\r\n }\r\n\r\n if (this._tooltipComponent) {\r\n this._tooltipComponent.destroy();\r\n this._tooltipComponent = null;\r\n }\r\n }\r\n\r\n private _clearTimeouts(): void {\r\n if (this._showTimeout) {\r\n clearTimeout(this._showTimeout);\r\n this._showTimeout = null;\r\n }\r\n if (this._hideTimeout) {\r\n clearTimeout(this._hideTimeout);\r\n this._hideTimeout = null;\r\n }\r\n }\r\n\r\n private readonly _onDocumentClick = (event: Event): void => {\r\n const target = event.target as HTMLElement;\r\n const triggerElement = this._elementRef.nativeElement;\r\n const tooltipElement = this._tooltipComponent?.location.nativeElement;\r\n\r\n if (target && !triggerElement.contains(target) && !tooltipElement?.contains(target)) {\r\n this._hideTooltip();\r\n }\r\n };\r\n}\r\n","// Public API for tooltip component\r\nexport * from './tooltip.directive';\r\nexport * from './tooltip.component';\r\nexport * from './tooltip.types';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"raintonic-formaui-components-tooltip.mjs","sources":["../../../lib/components/tooltip/tooltip.types.ts","../../../lib/components/tooltip/tooltip.component.ts","../../../lib/components/tooltip/tooltip.component.html","../../../lib/components/tooltip/tooltip.directive.ts","../../../lib/components/tooltip/index.ts","../../../lib/components/tooltip/raintonic-formaui-components-tooltip.ts"],"sourcesContent":["/**\r\n * Available tooltip positions relative to the trigger element\r\n */\r\nexport type TooltipPosition =\r\n | 'top'\r\n | 'top-start'\r\n | 'top-end'\r\n | 'bottom'\r\n | 'bottom-start'\r\n | 'bottom-end'\r\n | 'left'\r\n | 'left-start'\r\n | 'left-end'\r\n | 'right'\r\n | 'right-start'\r\n | 'right-end';\r\n\r\n/**\r\n * Available tooltip sizes\r\n */\r\nexport type TooltipSize = 'sm' | 'md' | 'lg';\r\n\r\n/**\r\n * Tooltip trigger events\r\n */\r\nexport type TooltipTrigger = 'hover' | 'focus' | 'click' | 'manual';\r\n\r\n/**\r\n * Constants for validation\r\n */\r\nexport const TOOLTIP_POSITIONS = [\r\n 'top',\r\n 'top-start',\r\n 'top-end',\r\n 'bottom',\r\n 'bottom-start',\r\n 'bottom-end',\r\n 'left',\r\n 'left-start',\r\n 'left-end',\r\n 'right',\r\n 'right-start',\r\n 'right-end',\r\n] as const;\r\n\r\nexport const TOOLTIP_SIZES = ['sm', 'md', 'lg'] as const;\r\nexport const TOOLTIP_TRIGGERS = ['hover', 'focus', 'click', 'manual'] as const;\r\n\r\n/**\r\n * Tooltip configuration interface\r\n */\r\nexport interface TooltipConfig {\r\n position?: TooltipPosition;\r\n size?: TooltipSize;\r\n trigger?: TooltipTrigger;\r\n showDelay?: number;\r\n hideDelay?: number;\r\n disabled?: boolean;\r\n maxWidth?: string;\r\n offset?: number;\r\n arrow?: boolean;\r\n}\r\n","import { Component, input, computed, Signal, ChangeDetectionStrategy, ViewEncapsulation } from '@angular/core';\r\n\r\nimport { TooltipPosition, TooltipSize } from './tooltip.types';\r\n\r\n/**\r\n * @component FuiTooltipComponent\r\n * @selector fui-tooltip\r\n * @description Internal tooltip component rendered by FuiTooltipDirective via the overlay system.\r\n * Not intended for direct use; created programmatically by the directive.\r\n *\r\n * @input content - (required) Tooltip text content.\r\n * @input position - (required) Tooltip position relative to the trigger element.\r\n * @input size - (required) Tooltip size variant.\r\n * @input maxWidth - (required) Maximum CSS width of the tooltip.\r\n * @input arrow - (required) Whether to render an arrow indicator.\r\n * @input tooltipId - (required) Unique ID for ARIA accessibility linking.\r\n *\r\n * @example\r\n * <!-- Used internally by FuiTooltipDirective -->\r\n * <button fuiTooltip=\"Save your changes\">Save</button>\r\n *\r\n * @internal\r\n */\r\n@Component({\r\n selector: 'fui-tooltip',\r\n standalone: true,\r\n imports: [],\r\n templateUrl: './tooltip.component.html',\r\n styleUrl: './tooltip.component.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n encapsulation: ViewEncapsulation.None,\r\n host: {\r\n class: 'fui-tooltip',\r\n '[class]': 'computedClasses()',\r\n '[id]': 'tooltipId()',\r\n '[attr.role]': '\"tooltip\"',\r\n '[style.max-width]': 'maxWidth()',\r\n },\r\n})\r\nexport class FuiTooltipComponent {\r\n /**\r\n * Tooltip content text\r\n */\r\n readonly content = input.required<string>();\r\n\r\n /**\r\n * Tooltip position\r\n */\r\n readonly position = input.required<TooltipPosition>();\r\n\r\n /**\r\n * Tooltip size\r\n */\r\n readonly size = input.required<TooltipSize>();\r\n\r\n /**\r\n * Maximum width of the tooltip\r\n */\r\n readonly maxWidth = input.required<string>();\r\n\r\n /**\r\n * Whether to show arrow\r\n */\r\n readonly arrow = input.required<boolean>();\r\n\r\n /**\r\n * Tooltip ID for accessibility\r\n */\r\n readonly tooltipId = input.required<string>();\r\n\r\n /**\r\n * Computed CSS classes for the tooltip\r\n */\r\n readonly computedClasses: Signal<string> = computed(() => {\r\n const classes: string[] = ['fui-tooltip', `fui-tooltip--${this.size()}`, `fui-tooltip--${this.position()}`];\r\n\r\n if (this.arrow()) {\r\n classes.push('fui-tooltip--with-arrow');\r\n }\r\n\r\n return classes.join(' ');\r\n });\r\n\r\n /**\r\n * Computed arrow classes based on position\r\n */\r\n readonly arrowClasses: Signal<string> = computed(() => {\r\n const position = this.position();\r\n const baseClass = 'fui-tooltip__arrow';\r\n\r\n if (position.startsWith('top')) {\r\n return `${baseClass} ${baseClass}--bottom`;\r\n } else if (position.startsWith('bottom')) {\r\n return `${baseClass} ${baseClass}--top`;\r\n } else if (position.startsWith('left')) {\r\n return `${baseClass} ${baseClass}--right`;\r\n } else if (position.startsWith('right')) {\r\n return `${baseClass} ${baseClass}--left`;\r\n }\r\n\r\n return baseClass;\r\n });\r\n}\r\n","<div class=\"fui-tooltip__content\">\r\n {{ content() }}\r\n</div>\r\n@if (arrow()) {\r\n <div [class]=\"arrowClasses()\"></div>\r\n}\r\n","import {\r\n Directive,\r\n ElementRef,\r\n input,\r\n computed,\r\n effect,\r\n HostListener,\r\n inject,\r\n Signal,\r\n OnDestroy,\r\n booleanAttribute,\r\n numberAttribute,\r\n ComponentRef,\r\n createComponent,\r\n EnvironmentInjector,\r\n signal,\r\n WritableSignal,\r\n} from '@angular/core';\r\nimport {\r\n TooltipPosition,\r\n TooltipSize,\r\n TooltipTrigger,\r\n TOOLTIP_POSITIONS,\r\n TOOLTIP_SIZES,\r\n TOOLTIP_TRIGGERS,\r\n} from './tooltip.types';\r\nimport { FuiTooltipComponent } from './tooltip.component';\r\nimport { FuiOverlayService, FuiOverlayRef, FuiConnectedPosition } from '@raintonic/formaui/cdk/overlay';\r\n\r\n/**\r\n * # Tooltip Directive\r\n *\r\n * A professional tooltip directive that provides contextual information on hover, focus, or click.\r\n * Follows Material Design patterns with full accessibility support and advanced positioning.\r\n *\r\n * ## Features\r\n * - Multiple positioning options (12 positions)\r\n * - Configurable trigger events (hover, focus, click, manual)\r\n * - Multiple variants for different semantic meanings\r\n * - Flexible sizing options\r\n * - Smart positioning with collision detection\r\n * - Customizable delays and animations\r\n * - Full accessibility support (ARIA attributes, keyboard navigation)\r\n * - Arrow indicator support\r\n * - Responsive design with max-width control\r\n * - Theme support (light/dark)\r\n *\r\n * ## Usage\r\n *\r\n * ### Basic Tooltip\r\n * ```html\r\n * <button fuiTooltip=\"Save your changes\">Save</button>\r\n * ```\r\n *\r\n * ### Advanced Configuration\r\n * ```html\r\n * <button fuiTooltip=\"Delete this item permanently\"\r\n * fuiTooltipPosition=\"top\"\r\n * fuiTooltipVariant=\"error\"\r\n * fuiTooltipSize=\"lg\"\r\n * [fuiTooltipShowDelay]=\"500\">\r\n * Delete\r\n * </button>\r\n * ```\r\n *\r\n * ### Click Trigger\r\n * ```html\r\n * <span fuiTooltip=\"Click to copy\"\r\n * fuiTooltipTrigger=\"click\"\r\n * fuiTooltipPosition=\"bottom\">\r\n * 📋 Copy to clipboard\r\n * </span>\r\n * ```\r\n *\r\n * ### Manual Control\r\n * ```html\r\n * <div fuiTooltip=\"Manual tooltip\"\r\n * fuiTooltipTrigger=\"manual\"\r\n * [fuiTooltipShow]=\"showTooltip\">\r\n * Hover me\r\n * </div>\r\n * ```\r\n *\r\n * @example\r\n * ```typescript\r\n * import { FuiTooltipDirective } from '@raintonic/formaui/components/tooltip';\r\n *\r\n * @Component({\r\n * standalone: true,\r\n * imports: [FuiTooltipDirective],\r\n * template: `\r\n * <button fuiTooltip=\"This will save your work\"\r\n * fuiTooltipPosition=\"top\"\r\n * fuiTooltipVariant=\"info\">\r\n * Save Document\r\n * </button>\r\n * `\r\n * })\r\n * export class MyComponent { }\r\n * ```\r\n */\r\n@Directive({\r\n selector: '[fuiTooltip]',\r\n standalone: true,\r\n host: {\r\n '[attr.aria-describedby]': 'isVisible() ? tooltipId() : null',\r\n },\r\n})\r\nexport class FuiTooltipDirective implements OnDestroy {\r\n private static _nextId = 0;\r\n /**\r\n * Tooltip content text\r\n */\r\n readonly fuiTooltip = input.required<string>();\r\n\r\n /**\r\n * Tooltip position relative to the trigger element\r\n * @default 'top'\r\n */\r\n readonly fuiTooltipPosition = input<TooltipPosition, TooltipPosition | string>('top', {\r\n transform: (v) => ((TOOLTIP_POSITIONS as readonly string[]).includes(v) ? (v as TooltipPosition) : 'top'),\r\n });\r\n\r\n /**\r\n * Tooltip size\r\n * @default 'md'\r\n */\r\n readonly fuiTooltipSize = input<TooltipSize, TooltipSize | string>('md', {\r\n transform: (v) => ((TOOLTIP_SIZES as readonly string[]).includes(v) ? (v as TooltipSize) : 'md'),\r\n });\r\n\r\n /**\r\n * Tooltip trigger event\r\n * @default 'hover'\r\n */\r\n readonly fuiTooltipTrigger = input<TooltipTrigger, TooltipTrigger | string>('hover', {\r\n transform: (v) => ((TOOLTIP_TRIGGERS as readonly string[]).includes(v) ? (v as TooltipTrigger) : 'hover'),\r\n });\r\n\r\n /**\r\n * Delay before showing tooltip (in milliseconds)\r\n * @default 500\r\n */\r\n readonly fuiTooltipShowDelay = input<number, unknown>(500, { transform: numberAttribute });\r\n\r\n /**\r\n * Delay before hiding tooltip (in milliseconds)\r\n * @default 0\r\n */\r\n readonly fuiTooltipHideDelay = input<number, unknown>(0, { transform: numberAttribute });\r\n\r\n /**\r\n * Whether the tooltip is disabled\r\n * @default false\r\n */\r\n readonly fuiTooltipDisabled = input<boolean, unknown>(false, { transform: booleanAttribute });\r\n\r\n /**\r\n * Maximum width of the tooltip\r\n * @default '200px'\r\n */\r\n readonly fuiTooltipMaxWidth = input('200px');\r\n\r\n /**\r\n * Offset distance from the trigger element (in pixels)\r\n * @default 8\r\n */\r\n readonly fuiTooltipOffset = input<number, unknown>(8, { transform: numberAttribute });\r\n\r\n /**\r\n * Whether to show an arrow pointing to the trigger element\r\n * @default true\r\n */\r\n readonly fuiTooltipArrow = input<boolean, unknown>(true, { transform: booleanAttribute });\r\n\r\n /**\r\n * Manual control for showing/hiding tooltip (only works with trigger=\"manual\")\r\n * @default false\r\n */\r\n readonly fuiTooltipShow = input<boolean, unknown>(false, { transform: booleanAttribute });\r\n\r\n // Internal state\r\n private readonly _isVisible: WritableSignal<boolean> = signal(false);\r\n private readonly _tooltipId: WritableSignal<string> = signal('');\r\n private _overlayRef: FuiOverlayRef | null = null;\r\n private _tooltipComponent: ComponentRef<FuiTooltipComponent> | null = null;\r\n private _showTimeout: number | null = null;\r\n private _hideTimeout: number | null = null;\r\n private _isHoveringTooltip = false;\r\n\r\n // Computed properties\r\n readonly isVisible: Signal<boolean> = computed(() => this._isVisible());\r\n readonly tooltipId: Signal<string> = computed(() => this._tooltipId());\r\n\r\n // Injected dependencies\r\n private readonly _elementRef: ElementRef<HTMLElement> = inject(ElementRef);\r\n private readonly _overlayService: FuiOverlayService = inject(FuiOverlayService);\r\n private readonly _environmentInjector: EnvironmentInjector = inject(EnvironmentInjector);\r\n\r\n constructor() {\r\n // Generate unique tooltip ID\r\n this._tooltipId.set(`fui-tooltip-${FuiTooltipDirective._nextId++}`);\r\n\r\n // Handle manual control\r\n effect(() => {\r\n if (this.fuiTooltipTrigger() === 'manual') {\r\n if (this.fuiTooltipShow()) {\r\n this._showTooltip();\r\n } else {\r\n this._hideTooltip();\r\n }\r\n }\r\n });\r\n\r\n // Handle disabled state\r\n effect(() => {\r\n if (this.fuiTooltipDisabled() && this._isVisible()) {\r\n this._hideTooltip();\r\n }\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this._clearTimeouts();\r\n this._destroyTooltip();\r\n }\r\n\r\n @HostListener('mouseenter')\r\n onMouseEnter(): void {\r\n if (this.fuiTooltipTrigger() === 'hover' && !this.fuiTooltipDisabled()) {\r\n this._scheduleShow();\r\n }\r\n }\r\n\r\n @HostListener('mouseleave')\r\n onMouseLeave(): void {\r\n if (this.fuiTooltipTrigger() === 'hover' && !this.fuiTooltipDisabled()) {\r\n this._scheduleHide();\r\n }\r\n }\r\n\r\n @HostListener('focus')\r\n onFocus(): void {\r\n if ((this.fuiTooltipTrigger() === 'focus' || this.fuiTooltipTrigger() === 'hover') && !this.fuiTooltipDisabled()) {\r\n this._scheduleShow();\r\n }\r\n }\r\n\r\n @HostListener('blur')\r\n onBlur(): void {\r\n if ((this.fuiTooltipTrigger() === 'focus' || this.fuiTooltipTrigger() === 'hover') && !this.fuiTooltipDisabled()) {\r\n this._scheduleHide();\r\n }\r\n }\r\n\r\n @HostListener('click')\r\n onClick(): void {\r\n if (this.fuiTooltipTrigger() === 'click' && !this.fuiTooltipDisabled()) {\r\n if (this._isVisible()) {\r\n this._hideTooltip();\r\n } else {\r\n this._showTooltip();\r\n }\r\n }\r\n }\r\n\r\n @HostListener('keydown', ['$event'])\r\n onKeydown(event: KeyboardEvent): void {\r\n if (event.key === 'Escape' && this._isVisible()) {\r\n this._hideTooltip();\r\n event.preventDefault();\r\n }\r\n }\r\n\r\n /**\r\n * Programmatically show the tooltip\r\n */\r\n show(): void {\r\n if (!this.fuiTooltipDisabled()) {\r\n this._showTooltip();\r\n }\r\n }\r\n\r\n /**\r\n * Programmatically hide the tooltip\r\n */\r\n hide(): void {\r\n this._hideTooltip();\r\n }\r\n\r\n /**\r\n * Toggle tooltip visibility\r\n */\r\n toggle(): void {\r\n if (this._isVisible()) {\r\n this.hide();\r\n } else {\r\n this.show();\r\n }\r\n }\r\n\r\n private _scheduleShow(): void {\r\n this._clearTimeouts();\r\n\r\n if (this.fuiTooltipShowDelay() > 0) {\r\n this._showTimeout = window.setTimeout(() => {\r\n this._showTooltip();\r\n }, this.fuiTooltipShowDelay());\r\n } else {\r\n this._showTooltip();\r\n }\r\n }\r\n\r\n private _scheduleHide(): void {\r\n this._clearTimeouts();\r\n\r\n if (this.fuiTooltipHideDelay() > 0) {\r\n this._hideTimeout = window.setTimeout(() => {\r\n if (!this._isHoveringTooltip) {\r\n this._hideTooltip();\r\n }\r\n }, this.fuiTooltipHideDelay());\r\n } else {\r\n if (!this._isHoveringTooltip) {\r\n this._hideTooltip();\r\n }\r\n }\r\n }\r\n\r\n private _showTooltip(): void {\r\n if (this._isVisible() || this.fuiTooltipDisabled() || !this.fuiTooltip().trim()) {\r\n return;\r\n }\r\n\r\n this._createTooltip();\r\n this._isVisible.set(true);\r\n\r\n // Add click outside listener for click trigger\r\n if (this.fuiTooltipTrigger() === 'click') {\r\n setTimeout(() => {\r\n document.addEventListener('click', this._onDocumentClick, true);\r\n });\r\n }\r\n }\r\n\r\n private _hideTooltip(): void {\r\n if (!this._isVisible()) {\r\n return;\r\n }\r\n\r\n this._isVisible.set(false);\r\n this._destroyTooltip();\r\n document.removeEventListener('click', this._onDocumentClick, true);\r\n }\r\n\r\n private _createTooltip(): void {\r\n if (this._overlayRef) {\r\n return;\r\n }\r\n\r\n // Create tooltip component first\r\n this._tooltipComponent = createComponent(FuiTooltipComponent, {\r\n environmentInjector: this._environmentInjector,\r\n });\r\n\r\n // Set tooltip properties immediately\r\n this._tooltipComponent.setInput('content', this.fuiTooltip());\r\n this._tooltipComponent.setInput('position', this.fuiTooltipPosition());\r\n this._tooltipComponent.setInput('size', this.fuiTooltipSize());\r\n this._tooltipComponent.setInput('maxWidth', this.fuiTooltipMaxWidth());\r\n this._tooltipComponent.setInput('arrow', this.fuiTooltipArrow());\r\n this._tooltipComponent.setInput('tooltipId', this.tooltipId());\r\n\r\n // Trigger change detection to ensure component is rendered with correct props\r\n this._tooltipComponent.changeDetectorRef.detectChanges();\r\n\r\n // Now create overlay with positioning strategy\r\n const positions = this._getPositionsForTooltipPosition(this.fuiTooltipPosition());\r\n const positionStrategy = this._overlayService\r\n .position()\r\n .connectedTo(this._elementRef, positions)\r\n .withPush(true)\r\n .withViewportMargin(8);\r\n\r\n // Create overlay\r\n this._overlayRef = this._overlayService.create({\r\n positionStrategy,\r\n scrollStrategy: this._overlayService.scrollStrategies.reposition(20),\r\n panelClass: 'fui-tooltip-panel',\r\n });\r\n\r\n // Attach component to overlay\r\n this._overlayRef.attach(this._tooltipComponent);\r\n\r\n // Set up hover events for tooltip persistence\r\n const tooltipElement = this._tooltipComponent.location.nativeElement;\r\n\r\n tooltipElement.addEventListener('mouseenter', () => {\r\n this._isHoveringTooltip = true;\r\n this._clearTimeouts();\r\n });\r\n\r\n tooltipElement.addEventListener('mouseleave', () => {\r\n this._isHoveringTooltip = false;\r\n if (this.fuiTooltipTrigger() === 'hover') {\r\n this._scheduleHide();\r\n }\r\n });\r\n }\r\n\r\n private _getPositionsForTooltipPosition(position: TooltipPosition): FuiConnectedPosition[] {\r\n const offset = this.fuiTooltipOffset();\r\n const positionMap: Record<TooltipPosition, FuiConnectedPosition[]> = {\r\n top: [\r\n { originX: 'center', originY: 'top', overlayX: 'center', overlayY: 'bottom', offsetY: -offset },\r\n { originX: 'center', originY: 'bottom', overlayX: 'center', overlayY: 'top', offsetY: offset },\r\n ],\r\n 'top-start': [\r\n { originX: 'start', originY: 'top', overlayX: 'start', overlayY: 'bottom', offsetY: -offset },\r\n { originX: 'start', originY: 'bottom', overlayX: 'start', overlayY: 'top', offsetY: offset },\r\n ],\r\n 'top-end': [\r\n { originX: 'end', originY: 'top', overlayX: 'end', overlayY: 'bottom', offsetY: -offset },\r\n { originX: 'end', originY: 'bottom', overlayX: 'end', overlayY: 'top', offsetY: offset },\r\n ],\r\n bottom: [\r\n { originX: 'center', originY: 'bottom', overlayX: 'center', overlayY: 'top', offsetY: offset },\r\n { originX: 'center', originY: 'top', overlayX: 'center', overlayY: 'bottom', offsetY: -offset },\r\n ],\r\n 'bottom-start': [\r\n { originX: 'start', originY: 'bottom', overlayX: 'start', overlayY: 'top', offsetY: offset },\r\n { originX: 'start', originY: 'top', overlayX: 'start', overlayY: 'bottom', offsetY: -offset },\r\n ],\r\n 'bottom-end': [\r\n { originX: 'end', originY: 'bottom', overlayX: 'end', overlayY: 'top', offsetY: offset },\r\n { originX: 'end', originY: 'top', overlayX: 'end', overlayY: 'bottom', offsetY: -offset },\r\n ],\r\n left: [\r\n { originX: 'start', originY: 'center', overlayX: 'end', overlayY: 'center', offsetX: -offset },\r\n { originX: 'end', originY: 'center', overlayX: 'start', overlayY: 'center', offsetX: offset },\r\n ],\r\n 'left-start': [\r\n { originX: 'start', originY: 'top', overlayX: 'end', overlayY: 'top', offsetX: -offset },\r\n { originX: 'end', originY: 'top', overlayX: 'start', overlayY: 'top', offsetX: offset },\r\n ],\r\n 'left-end': [\r\n { originX: 'start', originY: 'bottom', overlayX: 'end', overlayY: 'bottom', offsetX: -offset },\r\n { originX: 'end', originY: 'bottom', overlayX: 'start', overlayY: 'bottom', offsetX: offset },\r\n ],\r\n right: [\r\n { originX: 'end', originY: 'center', overlayX: 'start', overlayY: 'center', offsetX: offset },\r\n { originX: 'start', originY: 'center', overlayX: 'end', overlayY: 'center', offsetX: -offset },\r\n ],\r\n 'right-start': [\r\n { originX: 'end', originY: 'top', overlayX: 'start', overlayY: 'top', offsetX: offset },\r\n { originX: 'start', originY: 'top', overlayX: 'end', overlayY: 'top', offsetX: -offset },\r\n ],\r\n 'right-end': [\r\n { originX: 'end', originY: 'bottom', overlayX: 'start', overlayY: 'bottom', offsetX: offset },\r\n { originX: 'start', originY: 'bottom', overlayX: 'end', overlayY: 'bottom', offsetX: -offset },\r\n ],\r\n };\r\n\r\n return positionMap[position] || positionMap.top;\r\n }\r\n\r\n private _destroyTooltip(): void {\r\n if (this._overlayRef) {\r\n this._overlayRef.dispose();\r\n this._overlayRef = null;\r\n }\r\n\r\n if (this._tooltipComponent) {\r\n this._tooltipComponent.destroy();\r\n this._tooltipComponent = null;\r\n }\r\n }\r\n\r\n private _clearTimeouts(): void {\r\n if (this._showTimeout) {\r\n clearTimeout(this._showTimeout);\r\n this._showTimeout = null;\r\n }\r\n if (this._hideTimeout) {\r\n clearTimeout(this._hideTimeout);\r\n this._hideTimeout = null;\r\n }\r\n }\r\n\r\n private readonly _onDocumentClick = (event: Event): void => {\r\n const target = event.target as HTMLElement;\r\n const triggerElement = this._elementRef.nativeElement;\r\n const tooltipElement = this._tooltipComponent?.location.nativeElement;\r\n\r\n if (target && !triggerElement.contains(target) && !tooltipElement?.contains(target)) {\r\n this._hideTooltip();\r\n }\r\n };\r\n}\r\n","// Public API for tooltip component\r\nexport * from './tooltip.directive';\r\nexport * from './tooltip.component';\r\nexport * from './tooltip.types';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- const FORMAUI_VERSION = '0.3.0';
1
+ const FORMAUI_VERSION = '0.4.0';
2
2
  // FormaUI - Primary entry point
3
3
  // Secondary entry points are imported directly, e.g.:
4
4
  // import { FuiButtonDirective } from '@raintonic/formaui/components/button';
@@ -1 +1 @@
1
- {"version":3,"file":"raintonic-formaui.mjs","sources":["../../../lib/src/public-api.ts","../../../lib/src/raintonic-formaui.ts"],"sourcesContent":["export const FORMAUI_VERSION = '0.3.0';\r\n\r\n// FormaUI - Primary entry point\r\n// Secondary entry points are imported directly, e.g.:\r\n// import { FuiButtonDirective } from '@raintonic/formaui/components/button';\r\n// import { FuiIconComponent } from '@raintonic/formaui/components/icon';\r\n// import { ThemeService } from '@raintonic/formaui/services/theme';\r\n// import { FuiOverlayService } from '@raintonic/formaui/cdk/overlay';\r\n// import { FuiCoreModule } from '@raintonic/formaui/core';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"AAAO,MAAM,eAAe,GAAG;AAE/B;AACA;AACA;AACA;AACA;AACA;AACA;;ACRA;;AAEG;;;;"}
1
+ {"version":3,"file":"raintonic-formaui.mjs","sources":["../../../lib/src/public-api.ts","../../../lib/src/raintonic-formaui.ts"],"sourcesContent":["export const FORMAUI_VERSION = '0.4.0';\r\n\r\n// FormaUI - Primary entry point\r\n// Secondary entry points are imported directly, e.g.:\r\n// import { FuiButtonDirective } from '@raintonic/formaui/components/button';\r\n// import { FuiIconComponent } from '@raintonic/formaui/components/icon';\r\n// import { ThemeService } from '@raintonic/formaui/services/theme';\r\n// import { FuiOverlayService } from '@raintonic/formaui/cdk/overlay';\r\n// import { FuiCoreModule } from '@raintonic/formaui/core';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"AAAO,MAAM,eAAe,GAAG;AAE/B;AACA;AACA;AACA;AACA;AACA;AACA;;ACRA;;AAEG;;;;"}
package/llms-full.txt CHANGED
@@ -751,6 +751,7 @@ A progress bar component compatible with Angular Material's mat-progress-bar int
751
751
  | Name | Type | Default | Required |
752
752
  |------|------|---------|----------|
753
753
  | disabled | boolean | false | no |
754
+ | disableRipple | boolean | false | no |
754
755
  | aria-label | string | null | null | no |
755
756
  | aria-labelledby | string | null | null | no |
756
757
  | value | unknown | - | yes |
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@raintonic/formaui",
3
- "version": "0.3.0",
3
+ "version": "0.4.0",
4
4
  "description": "A modern Angular UI component library with theming support",
5
5
  "license": "MIT",
6
6
  "keywords": [
@@ -1 +1 @@
1
- {"version":3,"file":"raintonic-formaui-cdk-overlay.d.ts","sources":["../../../lib/cdk/overlay/overlay.types.ts","../../../lib/cdk/overlay/position/global-position-strategy.ts","../../../lib/cdk/overlay/position/connected-position-strategy.ts","../../../lib/cdk/overlay/scroll/scroll-strategies.ts","../../../lib/cdk/overlay/overlay.service.ts","../../../lib/cdk/overlay/overlay-ref.ts","../../../lib/cdk/overlay/overlay-container.component.ts","../../../lib/cdk/overlay/portal.service.ts"],"mappings":"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","names":[]}
1
+ {"version":3,"file":"raintonic-formaui-cdk-overlay.d.ts","sources":["../../../lib/cdk/overlay/overlay.types.ts","../../../lib/cdk/overlay/position/global-position-strategy.ts","../../../lib/cdk/overlay/position/connected-position-strategy.ts","../../../lib/cdk/overlay/scroll/scroll-strategies.ts","../../../lib/cdk/overlay/overlay.service.ts","../../../lib/cdk/overlay/overlay-ref.ts","../../../lib/cdk/overlay/overlay-container.component.ts","../../../lib/cdk/overlay/portal.service.ts"],"mappings":";;;;AAGA;;AAEG;AACH,cAAa,qBAAqB,EAAA,cAAA,CAAA,WAAA;AAElC;;AAEG;AACH,cAAa,2BAA2B,EAAA,cAAA,OAA4B,iBAAiB;AAErF;;AAEG;UACc,oBAAoB;;AAEnC;;AAEA;;AAEA;;AAEA;;;;;;;AAOD;AAED;;AAEG;UACc,iBAAiB;;AAEhC;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACD;AAED;;AAEG;AACG,KAAM,qBAAqB;AAEjC;;AAEG;KACS,wBAAwB;AAEpC;;AAEG;UACc,gBAAgB;;uBAEZ,mBAAmB;;qBAErB,iBAAiB;;;;AAIlC;;4BAEwB,wBAAwB;;AAEhD;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;;;eAIW,QAAQ;AACpB;AAED;;AAEG;UACc,aAAa;;AAE5B;;AAEA,6BAAyB,WAAW;;AAEpC,8BAA0B,WAAW;;AAErC,4BAAwB,UAAU,CAAC,UAAU;;AAE7C,4BAAwB,UAAU,CAAC,aAAa;;AAEhD,0BAAsB,UAAU;;AAEhC,0BAAsB,UAAU;;AAEhC;AAEA;;;;AAIG;AACH,iCACW,YAAY,MAAM,WAAW,YAAY,WAAW,aAClD,QAAQ,GAClB,YAAY;AAEf;;AAEG;;AAGH;;AAEG;;AAGH;;AAEG;;AAGH;;AAEG;wBAEQ,IAAI,CAAC,gBAAgB;AAGhC;;AAEG;;AAGH;;AAEG;;AAGH;;AAEG;iBACU,gBAAgB;AAE7B;;AAEG;yBACkB,OAAO,CAAC,gBAAgB;AAC9C;AAED;;AAEG;UACc,mBAAmB;;;;;;;;AAQlC,+BAA2B,WAAW;;AAEtC,8BAA0B,UAAU,CAAC,iCAAiC;AACvE;AAED;;AAEG;UACc,iBAAiB;;;;;;AAMhC,uBAAmB,aAAa;;;AAGjC;AAED;;AAEG;UACc,iCAAiC;;oBAEhC,oBAAoB;;8BAEV,2BAA2B;AACtD;AAED;;AAEG;UACc,2BAA2B;;AAE1C;;;;;AAEA;;;;AACD;AAED;;AAEG;AACG,KAAM,iBAAiB,gBAAgB,YAAY,MAAM,WAAW,YAAY,WAAW;AAEjG;;AAEG;AACG,KAAM,wBAAwB,SAAS,iBAAiB;AAE9D;;AAEG;UACc,mCAAmC;;AAElD,YAAQ,UAAU,CAAC,WAAW,IAAI,WAAW;;eAElC,oBAAoB;;;;;;;;;;;;4BAYP,UAAU,CAAC,WAAW,IAAI,WAAW;;;;;AAK9D;AAED;;AAEG;AACG,UAAW,gCAAiC,SAAQ,iBAAiB;;;;;AAK1E;AAED;;AAEG;UACc,oBAAoB;AACnC;AACA;AACA;AACA;AACA;AACA;AACD;AAED;;AAEG;UACc,eAAe;;;;;;UAMxB,oBAAoB;;AAE1B,sBAAkB,mBAAmB;;AAErC,oBAAgB,iBAAiB;AAClC;;ACrSD;;;;;;;;;;;;;AAaG;AACH,cAAa,yBAA0B,YAAW,mBAAmB;AAMjE;AACA;;AALF;;AAIU,2BAAW,SAAS,aACV,gCAAqC;;AAIzD,2BAAuB,UAAU,CAAC,iCAAiC;AAInE;;AAEG;AACH,+BAA2B,WAAW;AAItC;;AAEG;AACH;AAkBA;;AAEG;AACH;AAMA;;AAEG;AACH;AAMA;;AAEG;AACH;AAMA;;AAEG;AACH;AAMA;;AAEG;AACH;AAOA;;AAEG;AACH;AAOA;;AAEG;AACH;AAKA;;AAEG;AACH;AAKA;;AAEG;AACH;AAKA;;AAEG;AACH;AAKA;;AAEG;AACH;AAKA;;AAEG;AACH;AAKA;;AAEG;AACH;AASA;;AAEG;AACH;AAIA;AA0BA;AA2BA;AAgCA;AAGD;;AC1QD;;;;;;;;;;;;;;AAcG;AACH,cAAa,4BAA6B,YAAW,mBAAmB;AAsBpE;;;;;;;;AAbF;;;;;;;;;AAaU,2BAAW,SAAS,WACnB,mCAAmC;;AAoC9C,2BAAuB,UAAU,CAAC,iCAAiC;AAInE;;AAEG;AACH,+BAA2B,WAAW;AAItC;;AAEG;AACH;AA8BA;;AAEG;AACH,6BAAyB,oBAAoB;AAK7C;;AAEG;AACH;AAKA;;AAEG;AACH;AAKA;;AAEG;AACH;AAKA;;AAEG;AACH;AAKA;;AAEG;AACH;AAKA;;AAEG;mCAC4B,UAAU,CAAC,WAAW,IAAI,WAAW;AAKpE;;AAEG;AACH;AAKA;;AAEG;AACH;AAKA;;AAEG;AACH;AAUA;;AAEG;AACH;AAIA;AAwCA;AAqCA;AAqEA;AAaA;AAuBA;AAsCA;AA0BA;AAyBA;AAYA;AAOA;AAUD;;ACtgBD;;;;;;AAMG;AACH,cAAa,qBAAsB,YAAW,iBAAiB;AAC7D;AAIA;AAIA,wBAAoB,aAAa;AAIjC;AAGD;AAED;;;;;;AAMG;AACH,cAAa,sBAAuB,YAAW,iBAAiB;AAKlD;;;;AAAQ;AAEpB;AAeA;AASA,uBAAmB,aAAa;AAIhC;AAKA;AAMD;AAED;;;;;;AAMG;AACH,cAAa,2BAA4B,YAAW,iBAAiB;AAMjE;AACA;;;;;AAGF;AA2BA;AASA,uBAAmB,aAAa;AAIhC;AAKA;AAOA;AAMD;AAED;;;;;;AAMG;AACH,cAAa,sBAAuB,YAAW,iBAAiB;;;;;4BAK9B,QAAQ;AAExC;AA6BA;AAwBA,wBAAoB,aAAa;AAIjC;AAID;AAED;;AAEG;AACH,cAAa,qBAAqB;AAChC;;AAEG;gBACO,qBAAqB;AAE/B;;AAEG;mCACqB,sBAAsB;AAE9C;;AAEG;kEACmD,2BAA2B;AAGjF;;;AAGG;AACW,kBAAA,QAAQ,KAAG,sBAAsB;;;ACtLjD,cAGa,iBAAiB;AAC5B;AACA;AACA;AACA;;;;;;AAWA;;AAEG;AACH,oBAAe,gBAAqB,GAAG,aAAa;AA6BpD;;AAEG;AACH;AAKA;;;AAGG;AACH;AAMA;;AAEG;AACH,gBAAY,yBAAyB;AAIrC;;AAEG;AACH,mCAA+B,qBAAqB;AAIpD;;AAEG;yBACkB,aAAa;AAIlC;;AAEG;AACH;AAOA;AAOA;AAKA;AAaA;yCAzHW,iBAAiB;6CAAjB,iBAAiB;AAqI7B;AAED;;;;;AAKG;AACH,cAAa,yBAAyB;AACxB;AAAQ,2BAAW,SAAS;AAExC;;AAEG;AACH,qBAAgB,gCAAqC,GAAG,yBAAyB;AAIjF;;AAEG;AACH,wBACU,UAAU,CAAC,WAAW,IAAI,WAAW,cACjC,oBAAoB,KAC/B,4BAA4B;AAwB/B;;AAEG;gCAEO,UAAU,CAAC,WAAW,IAAI,WAAW,4DAE5C,4BAA4B;AAc/B;AAwCD;;AC9TD;;;;;;;;;;;;;AAaG;AACH,cAAa,iBAAkB,YAAW,aAAa;AACrD;AACA;AACA;AACA;;;;;AAOA;AACA;AACA;AACA;;;AAMY,gCAAgB,WAAW,UAAU,gBAAgB,YAAY,SAAS;;;;0BA4BhE,WAAW;;AAKjC,2BAAuB,WAAW;;AAKlC,yBAAqB,UAAU,CAAC,UAAU;;AAK1C,yBAAqB,UAAU,CAAC,aAAa;;AAK7C,uBAAmB,UAAU;;AAK7B,uBAAmB,UAAU;;;AAS7B;;AAEG;AACH,iCACW,YAAY,MAAM,WAAW,YAAY,WAAW,aAClD,QAAQ,GAClB,YAAY;AAwDf;;AAEG;AACH;AA6BA;;AAEG;AACH;AAkCA;;AAEG;AACH;AAMA;;AAEG;wBAEQ,IAAI,CAAC,gBAAgB;AAShC;;AAEG;;AAUH;;AAEG;;AAUH;;AAEG;AACH,iBAAa,gBAAgB;AAI7B;;AAEG;yBACkB,OAAO,CAAC,gBAAgB;AAkE7C;AA0BA;AAMA;AAyCA;AAeA;AASA;AAYA;AA4BA;AAIA;AAGD;;AC9eD;;;;;;;;;;;;;;;;AAgBG;AACH,cAuBa,4BAA6B,YAAW,MAAM,EAAE,SAAS;AACpE;AACA;AAEA;AAOA;AAQA;;AAEG;AACH,2BAAuB,WAAW;yCAtBvB,4BAA4B;2CAA5B,4BAA4B;AAyBxC;;AClED;;AAEG;UACc,gBAAgB;;aAEtB,WAAW;;;AAGrB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8BG;AACH,cAGa,aAAa;AACxB;AACA;AACA;;AAMA;;;;AAIG;AACH,0BAAsB,WAAW,GAAG,gBAAgB;AAIpD;;;;;AAKG;+BACwB,WAAW,aAAa,WAAW,GAAG,gBAAgB;AAwBjF;;;;AAIG;AACH,0CAAsC,WAAW;AAmBjD;;;AAGG;AACH,yBAAqB,WAAW;AAMhC;;;;AAIG;AACH,gCAA4B,WAAW;yCAvF5B,aAAa;6CAAb,aAAa;AA4FzB;;;;","names":[]}