@frame-ui-ng/components 0.3.0-beta.0 → 0.4.0-beta.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 (51) hide show
  1. package/button/src/styles/button.css +5 -1
  2. package/button-group/src/styles/button-group.css +6 -0
  3. package/fesm2022/frame-ui-ng-components-combobox.mjs +48 -51
  4. package/fesm2022/frame-ui-ng-components-combobox.mjs.map +1 -1
  5. package/fesm2022/frame-ui-ng-components-confirm-modal.mjs +162 -0
  6. package/fesm2022/frame-ui-ng-components-confirm-modal.mjs.map +1 -0
  7. package/fesm2022/frame-ui-ng-components-dropdown-menu.mjs +1 -1
  8. package/fesm2022/frame-ui-ng-components-dropdown-menu.mjs.map +1 -1
  9. package/fesm2022/frame-ui-ng-components-input-otp.mjs +64 -69
  10. package/fesm2022/frame-ui-ng-components-input-otp.mjs.map +1 -1
  11. package/fesm2022/frame-ui-ng-components-modal.mjs +93 -15
  12. package/fesm2022/frame-ui-ng-components-modal.mjs.map +1 -1
  13. package/fesm2022/frame-ui-ng-components-pagination.mjs +37 -36
  14. package/fesm2022/frame-ui-ng-components-pagination.mjs.map +1 -1
  15. package/fesm2022/frame-ui-ng-components-progress.mjs +2 -1
  16. package/fesm2022/frame-ui-ng-components-progress.mjs.map +1 -1
  17. package/fesm2022/frame-ui-ng-components-resizable.mjs +16 -26
  18. package/fesm2022/frame-ui-ng-components-resizable.mjs.map +1 -1
  19. package/fesm2022/frame-ui-ng-components-sheet.mjs +19 -16
  20. package/fesm2022/frame-ui-ng-components-sheet.mjs.map +1 -1
  21. package/fesm2022/frame-ui-ng-components-sidebar.mjs +19 -13
  22. package/fesm2022/frame-ui-ng-components-sidebar.mjs.map +1 -1
  23. package/fesm2022/frame-ui-ng-components-slider.mjs +53 -59
  24. package/fesm2022/frame-ui-ng-components-slider.mjs.map +1 -1
  25. package/fesm2022/frame-ui-ng-components-tooltip.mjs +44 -0
  26. package/fesm2022/frame-ui-ng-components-tooltip.mjs.map +1 -1
  27. package/fesm2022/frame-ui-ng-components-utils.mjs +20 -0
  28. package/fesm2022/frame-ui-ng-components-utils.mjs.map +1 -0
  29. package/fesm2022/frame-ui-ng-components-virtual-scroll.mjs +10 -12
  30. package/fesm2022/frame-ui-ng-components-virtual-scroll.mjs.map +1 -1
  31. package/fesm2022/frame-ui-ng-components.mjs +353 -296
  32. package/fesm2022/frame-ui-ng-components.mjs.map +1 -1
  33. package/item/src/styles/item.css +188 -187
  34. package/modal/src/styles/modal.css +10 -1
  35. package/package.json +10 -2
  36. package/sidebar/src/styles/sidebar.css +10 -4
  37. package/src/styles/blueprint.css +98 -0
  38. package/src/styles/components.css +4 -4
  39. package/styles/blueprint.css +98 -0
  40. package/styles/components.css +4 -4
  41. package/styles.css +4 -4
  42. package/tooltip/src/styles/tooltip.css +4 -4
  43. package/types/frame-ui-ng-components-combobox.d.ts +1 -1
  44. package/types/frame-ui-ng-components-confirm-modal.d.ts +48 -0
  45. package/types/frame-ui-ng-components-input-otp.d.ts +1 -1
  46. package/types/frame-ui-ng-components-modal.d.ts +18 -7
  47. package/types/frame-ui-ng-components-sheet.d.ts +2 -0
  48. package/types/frame-ui-ng-components-sidebar.d.ts +2 -2
  49. package/types/frame-ui-ng-components-tooltip.d.ts +5 -0
  50. package/types/frame-ui-ng-components-utils.d.ts +5 -0
  51. package/types/frame-ui-ng-components.d.ts +68 -55
@@ -0,0 +1 @@
1
+ {"version":3,"file":"frame-ui-ng-components-confirm-modal.mjs","sources":["../../../projects/components/confirm-modal/src/confirm-modal.service.ts","../../../projects/components/confirm-modal/src/confirm-modal.trigger.ts","../../../projects/components/confirm-modal/confirm-modal.module.ts","../../../projects/components/confirm-modal/frame-ui-ng-components-confirm-modal.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, Injectable, inject } from '@angular/core';\r\nimport { FrButton, FrButtonLabel } from '@frame-ui-ng/components/button';\r\nimport { FrModalConfig, FrModalRef, FrModalService } from '@frame-ui-ng/components/modal';\r\nimport {\r\n FR_MODAL_DATA,\r\n FrModalClose,\r\n FrModalDescription,\r\n FrModalFooter,\r\n FrModalHeader,\r\n FrModalPanel,\r\n FrModalTitle,\r\n} from '@frame-ui-ng/components/modal';\r\n\r\nimport { FrConfirmModalData, FrConfirmModalResult } from './confirm-modal';\r\n\r\n@Component({\r\n selector: 'frame-confirm-modal',\r\n imports: [\r\n FrButton,\r\n FrButtonLabel,\r\n FrModalClose,\r\n FrModalDescription,\r\n FrModalFooter,\r\n FrModalHeader,\r\n FrModalPanel,\r\n FrModalTitle,\r\n ],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n template: `\r\n <div frModalPanel data-confirm-modal size=\"sm\" [showCloseButton]=\"false\">\r\n <div frModalHeader>\r\n <h2 frModalTitle>{{ data.title }}</h2>\r\n\r\n @if (data.description) {\r\n <p frModalDescription>{{ data.description }}</p>\r\n }\r\n </div>\r\n\r\n <div frModalFooter>\r\n <button frButton appearance=\"outline\" type=\"button\" [frModalClose]=\"'cancel'\">\r\n <span frButtonLabel>{{ data.cancelLabel }}</span>\r\n </button>\r\n <button frButton type=\"button\" [frModalClose]=\"'confirm'\">\r\n <span frButtonLabel>{{ data.confirmLabel }}</span>\r\n </button>\r\n </div>\r\n </div>\r\n `,\r\n})\r\nclass FrConfirmModalContent {\r\n readonly data = inject<FrConfirmModalData>(FR_MODAL_DATA);\r\n}\r\n\r\nexport type FrConfirmModalConfig = Omit<\r\n FrModalConfig<FrConfirmModalData, FrConfirmModalResult, unknown>,\r\n 'data' | 'description' | 'footerActions' | 'inputs' | 'showCloseButton' | 'size' | 'title'\r\n> & {\r\n cancelLabel?: string;\r\n confirmLabel?: string;\r\n description?: string;\r\n title?: string;\r\n};\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class FrConfirmModalService {\r\n private readonly modal = inject(FrModalService);\r\n\r\n open(config: FrConfirmModalConfig = {}): FrModalRef<unknown, FrConfirmModalResult> {\r\n const {\r\n cancelLabel = 'Cancel',\r\n confirmLabel = 'Confirm',\r\n description,\r\n title = 'Are you sure?',\r\n ...modalConfig\r\n } = config;\r\n\r\n const internalConfig = {\r\n ...(modalConfig as Omit<\r\n FrModalConfig<FrConfirmModalData, FrConfirmModalResult, FrConfirmModalContent>,\r\n 'data' | 'description' | 'footerActions' | 'inputs' | 'showCloseButton' | 'size' | 'title'\r\n >),\r\n ariaLabel: modalConfig.ariaLabel ?? title,\r\n data: {\r\n cancelLabel,\r\n confirmLabel,\r\n description,\r\n title,\r\n },\r\n disableClose: modalConfig.disableClose ?? true,\r\n } satisfies FrModalConfig<FrConfirmModalData, FrConfirmModalResult, FrConfirmModalContent>;\r\n\r\n return this.modal.open<FrConfirmModalResult, FrConfirmModalData, FrConfirmModalContent>(\r\n FrConfirmModalContent,\r\n internalConfig,\r\n ) as FrModalRef<unknown, FrConfirmModalResult>;\r\n }\r\n}\r\n","import { Directive, inject, input, output } from '@angular/core';\r\nimport { take } from 'rxjs';\r\n\r\nimport { FrConfirmModalResult } from './confirm-modal';\r\nimport { FrConfirmModalConfig, FrConfirmModalService } from './confirm-modal.service';\r\n\r\n@Directive({\r\n selector: '[frConfirmModal]',\r\n exportAs: 'frConfirmModal',\r\n host: {\r\n '(click)': 'open()',\r\n },\r\n})\r\nexport class FrConfirmModalTrigger {\r\n private readonly confirmModal = inject(FrConfirmModalService);\r\n\r\n readonly config = input<FrConfirmModalConfig | string>({}, { alias: 'frConfirmModal' });\r\n readonly title = input<string | undefined>(undefined, { alias: 'frConfirmModalTitle' });\r\n readonly description = input<string | undefined>(undefined, { alias: 'frConfirmModalDescription' });\r\n readonly cancelLabel = input<string | undefined>(undefined, { alias: 'frConfirmModalCancelLabel' });\r\n readonly confirmLabel = input<string | undefined>(undefined, { alias: 'frConfirmModalConfirmLabel' });\r\n\r\n readonly closed = output<FrConfirmModalResult | undefined>({ alias: 'frConfirmModalClosed' });\r\n readonly cancelled = output<void>({ alias: 'frConfirmModalCancelled' });\r\n readonly confirmed = output<void>({ alias: 'frConfirmModalConfirmed' });\r\n\r\n open(): void {\r\n this.confirmModal\r\n .open(this.resolvedConfig())\r\n .closed\r\n .pipe(take(1))\r\n .subscribe((result) => {\r\n this.closed.emit(result);\r\n\r\n if (result === 'confirm') {\r\n this.confirmed.emit();\r\n return;\r\n }\r\n\r\n if (result === 'cancel') {\r\n this.cancelled.emit();\r\n }\r\n });\r\n }\r\n\r\n private resolvedConfig(): FrConfirmModalConfig {\r\n const config = this.config();\r\n const baseConfig: FrConfirmModalConfig = typeof config === 'string' ? { title: config } : config;\r\n\r\n return {\r\n ...baseConfig,\r\n cancelLabel: this.cancelLabel() ?? baseConfig.cancelLabel,\r\n confirmLabel: this.confirmLabel() ?? baseConfig.confirmLabel,\r\n description: this.description() ?? baseConfig.description,\r\n title: this.title() ?? baseConfig.title,\r\n };\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\n\r\nimport { FrConfirmModalTrigger } from './src/confirm-modal.trigger';\r\n\r\n@NgModule({\r\n imports: [FrConfirmModalTrigger],\r\n exports: [FrConfirmModalTrigger],\r\n})\r\nexport class FrConfirmModalModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
@@ -5,7 +5,7 @@ import { InjectionToken, Injectable, input, Directive, inject, signal, effect, T
5
5
  import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
6
6
 
7
7
  const DEFAULT_SIDE_OFFSET = 4;
8
- const MIN_SUBMENU_SIDE_OFFSET = 16;
8
+ const MIN_SUBMENU_SIDE_OFFSET = 8;
9
9
  function defaultPositions(isSubmenu) {
10
10
  return buildConnectedPositions({
11
11
  align: 'start',
@@ -1 +1 @@
1
- {"version":3,"file":"frame-ui-ng-components-dropdown-menu.mjs","sources":["../../../projects/components/dropdown-menu/src/dropdown-menu.position.ts","../../../projects/components/dropdown-menu/src/dropdown-menu.root.ts","../../../projects/components/dropdown-menu/src/dropdown-menu.content.ts","../../../projects/components/dropdown-menu/src/dropdown-menu.items.ts","../../../projects/components/dropdown-menu/src/dropdown-menu.trigger.ts","../../../projects/components/dropdown-menu/src/dropdown-menu.types.ts","../../../projects/components/dropdown-menu/dropdown-menu.module.ts","../../../projects/components/dropdown-menu/frame-ui-ng-components-dropdown-menu.ts"],"sourcesContent":["import { ConnectedPosition } from '@angular/cdk/overlay';\r\n\r\nimport { FrDropdownMenuAlignment, FrDropdownMenuSide } from './dropdown-menu.types';\r\n\r\ntype ConcreteDropdownMenuSide = Exclude<FrDropdownMenuSide, 'auto'>;\r\n\r\nconst DEFAULT_SIDE_OFFSET = 4;\r\nconst MIN_SUBMENU_SIDE_OFFSET = 16;\r\n\r\nexport function defaultPositions(isSubmenu: boolean): ConnectedPosition[] {\r\n return buildConnectedPositions({\r\n align: 'start',\r\n alignOffset: 0,\r\n isSubmenu,\r\n side: 'auto',\r\n sideOffset: DEFAULT_SIDE_OFFSET,\r\n });\r\n}\r\n\r\nexport function buildConnectedPositions(options: {\r\n align: FrDropdownMenuAlignment;\r\n alignOffset: number;\r\n isSubmenu: boolean;\r\n side: FrDropdownMenuSide;\r\n sideOffset: number;\r\n}): ConnectedPosition[] {\r\n const side = normalizeSide(options.side, options.isSubmenu);\r\n\r\n if (side === 'auto') {\r\n return autoSides(options.isSubmenu).flatMap((side) =>\r\n primaryPlacement({\r\n ...options,\r\n side,\r\n }),\r\n );\r\n }\r\n\r\n return primaryPlacement({\r\n ...options,\r\n side,\r\n });\r\n}\r\n\r\nfunction primaryPlacement(options: {\r\n align: FrDropdownMenuAlignment;\r\n alignOffset: number;\r\n isSubmenu: boolean;\r\n side: ConcreteDropdownMenuSide;\r\n sideOffset: number;\r\n}): ConnectedPosition[] {\r\n if (options.side === 'left' || options.side === 'right') {\r\n const isRight = options.side === 'right';\r\n const sideOffset = options.isSubmenu\r\n ? Math.max(options.sideOffset, MIN_SUBMENU_SIDE_OFFSET)\r\n : options.sideOffset;\r\n const horizontalOffset = isRight ? sideOffset : -sideOffset;\r\n const originY = horizontalOriginY(options.align);\r\n const overlayY = horizontalOverlayY(options.align);\r\n\r\n return [\r\n {\r\n originX: isRight ? 'end' : 'start',\r\n originY,\r\n overlayX: isRight ? 'start' : 'end',\r\n overlayY,\r\n offsetX: horizontalOffset,\r\n offsetY: options.alignOffset,\r\n },\r\n {\r\n originX: isRight ? 'start' : 'end',\r\n originY,\r\n overlayX: isRight ? 'end' : 'start',\r\n overlayY,\r\n offsetX: -horizontalOffset,\r\n offsetY: options.alignOffset,\r\n },\r\n ];\r\n }\r\n\r\n const isBottom = options.side === 'bottom';\r\n const verticalOffset = isBottom ? options.sideOffset : -options.sideOffset;\r\n const originX = rootOriginX(options.align);\r\n const overlayX = rootOverlayX(options.align);\r\n\r\n return [\r\n {\r\n originX,\r\n originY: isBottom ? 'bottom' : 'top',\r\n overlayX,\r\n overlayY: isBottom ? 'top' : 'bottom',\r\n offsetX: options.alignOffset,\r\n offsetY: verticalOffset,\r\n },\r\n {\r\n originX,\r\n originY: isBottom ? 'top' : 'bottom',\r\n overlayX,\r\n overlayY: isBottom ? 'bottom' : 'top',\r\n offsetX: options.alignOffset,\r\n offsetY: -verticalOffset,\r\n },\r\n ];\r\n}\r\n\r\nfunction normalizeSide(side: FrDropdownMenuSide, isSubmenu: boolean): FrDropdownMenuSide {\r\n if (!isSubmenu || side === 'left' || side === 'right') {\r\n return side;\r\n }\r\n\r\n return 'auto';\r\n}\r\n\r\nfunction autoSides(isSubmenu: boolean): ConcreteDropdownMenuSide[] {\r\n return isSubmenu ? ['right', 'left'] : ['bottom', 'top', 'right', 'left'];\r\n}\r\n\r\nfunction rootOriginX(align: FrDropdownMenuAlignment): 'center' | 'end' | 'start' {\r\n if (align === 'center') {\r\n return 'center';\r\n }\r\n\r\n return align;\r\n}\r\n\r\nfunction rootOverlayX(align: FrDropdownMenuAlignment): 'center' | 'end' | 'start' {\r\n if (align === 'center') {\r\n return 'center';\r\n }\r\n\r\n return align;\r\n}\r\n\r\nfunction horizontalOriginY(align: FrDropdownMenuAlignment): 'bottom' | 'center' | 'top' {\r\n if (align === 'center') {\r\n return 'center';\r\n }\r\n\r\n return align === 'end' ? 'bottom' : 'top';\r\n}\r\n\r\nfunction horizontalOverlayY(align: FrDropdownMenuAlignment): 'bottom' | 'center' | 'top' {\r\n if (align === 'center') {\r\n return 'center';\r\n }\r\n\r\n return align === 'end' ? 'bottom' : 'top';\r\n}\r\n","import { Directive, Injectable, InjectionToken, effect, inject, input, signal } from '@angular/core';\n\nimport { FrDropdownMenuTriggerMode } from './dropdown-menu.types';\n\nexport interface FrDropdownMenuParent {\n readonly closeDelay: () => number;\n readonly triggerMode: () => FrDropdownMenuTriggerMode;\n}\n\nexport const FR_DROPDOWN_MENU_PARENT = new InjectionToken<FrDropdownMenuParent>(\n 'FrDropdownMenuParent',\n);\n\n@Injectable()\nexport class FrDropdownMenuTree {\n private readonly triggers = new Set<{ close(): void }>();\n private closeTimeoutId: ReturnType<typeof setTimeout> | null = null;\n private pointerInsideCount = 0;\n\n register(trigger: { close(): void }): void {\n this.triggers.add(trigger);\n }\n\n unregister(trigger: { close(): void }): void {\n this.triggers.delete(trigger);\n }\n\n cancelClose(): void {\n if (this.closeTimeoutId !== null) {\n clearTimeout(this.closeTimeoutId);\n this.closeTimeoutId = null;\n }\n }\n\n enterInteractiveArea(): void {\n this.pointerInsideCount += 1;\n this.cancelClose();\n }\n\n leaveInteractiveArea(delay: number): void {\n this.pointerInsideCount = Math.max(0, this.pointerInsideCount - 1);\n\n if (this.pointerInsideCount === 0) {\n this.scheduleClose(delay);\n }\n }\n\n scheduleClose(delay: number): void {\n this.cancelClose();\n this.closeTimeoutId = setTimeout(() => {\n this.closeAll();\n }, delay);\n }\n\n closeAll(): void {\n this.cancelClose();\n\n for (const trigger of this.triggers) {\n trigger.close();\n }\n }\n}\n\n@Directive({\n selector: '[frDropdownMenu]',\n providers: [\n FrDropdownMenuTree,\n {\n provide: FR_DROPDOWN_MENU_PARENT,\n useExisting: FrDropdownMenu,\n },\n ],\n host: {\n class: 'frame-dropdown-menu-root',\n },\n})\nexport class FrDropdownMenu implements FrDropdownMenuParent {\n readonly closeDelay = input(140);\n readonly triggerMode = input<FrDropdownMenuTriggerMode>('click');\n}\n\n@Directive({\n selector: '[frDropdownMenuSub]',\n providers: [\n {\n provide: FR_DROPDOWN_MENU_PARENT,\n useExisting: FrDropdownMenuSub,\n },\n ],\n host: {\n class: 'frame-dropdown-menu-sub',\n },\n})\nexport class FrDropdownMenuSub implements FrDropdownMenuParent {\n private readonly parent = inject(FR_DROPDOWN_MENU_PARENT, { skipSelf: true });\n\n readonly closeDelayInput = input<number | null>(null, { alias: 'closeDelay' });\n readonly triggerModeInput = input<FrDropdownMenuTriggerMode | null>(null, {\n alias: 'triggerMode',\n });\n\n readonly closeDelay = signal(this.parent.closeDelay());\n readonly triggerMode = signal(this.parent.triggerMode());\n\n constructor() {\n effect(() => {\n this.closeDelay.set(this.closeDelayInput() ?? this.parent.closeDelay());\n this.triggerMode.set(this.triggerModeInput() ?? this.parent.triggerMode());\n });\n }\n}\n","import { CdkMenu, CdkTargetMenuAim } from '@angular/cdk/menu';\r\nimport { ConnectedPosition } from '@angular/cdk/overlay';\r\nimport {\r\n Directive,\r\n InjectionToken,\r\n TemplateRef,\r\n booleanAttribute,\r\n inject,\r\n input,\r\n} from '@angular/core';\r\n\r\nimport { buildConnectedPositions } from './dropdown-menu.position';\r\nimport { FR_DROPDOWN_MENU_PARENT, FrDropdownMenuTree } from './dropdown-menu.root';\r\nimport { FrDropdownMenuAlignment, FrDropdownMenuSide } from './dropdown-menu.types';\r\n\r\nexport const FR_DROPDOWN_MENU_CONTENT = new InjectionToken<FrDropdownMenuContent>(\r\n 'FrDropdownMenuContent',\r\n);\r\n\r\n@Directive({\r\n selector: 'ng-template[frDropdownMenuContent], ng-template[frDropdownMenuSubContent]',\r\n exportAs: 'frDropdownMenuContent',\r\n providers: [\r\n {\r\n provide: FR_DROPDOWN_MENU_CONTENT,\r\n useExisting: FrDropdownMenuContent,\r\n },\r\n ],\r\n})\r\nexport class FrDropdownMenuContent {\r\n readonly templateRef = inject(TemplateRef<unknown>);\r\n\r\n readonly align = input<FrDropdownMenuAlignment>('start');\r\n readonly alignOffset = input(0);\r\n readonly debugVisible = input(false, { transform: booleanAttribute });\r\n readonly side = input<FrDropdownMenuSide>('auto');\r\n readonly sideOffset = input(4);\r\n\r\n isDebugVisible(): boolean {\r\n return this.debugVisible();\r\n }\r\n\r\n getPositions(isSubmenu: boolean): ConnectedPosition[] {\r\n return buildConnectedPositions({\r\n align: this.align(),\r\n alignOffset: this.alignOffset(),\r\n isSubmenu,\r\n side: this.side(),\r\n sideOffset: this.sideOffset(),\r\n });\r\n }\r\n}\r\n\r\n@Directive({\r\n selector: '[frDropdownMenuPanel]',\r\n hostDirectives: [CdkMenu, CdkTargetMenuAim],\r\n host: {\r\n class: 'frame-dropdown-menu__content',\r\n '[attr.data-side]': 'side()',\r\n tabindex: '-1',\r\n '(mouseenter)': 'handleMouseEnter()',\r\n '(mouseleave)': 'handleMouseLeave()'\r\n },\r\n})\r\nexport class FrDropdownMenuPanel {\r\n protected readonly side = inject(FR_DROPDOWN_MENU_CONTENT).side;\r\n private readonly tree = inject(FrDropdownMenuTree);\r\n private readonly parent = inject(FR_DROPDOWN_MENU_PARENT);\r\n\r\n protected handleMouseEnter(): void {\r\n this.tree.enterInteractiveArea();\r\n }\r\n\r\n protected handleMouseLeave(): void {\r\n this.tree.leaveInteractiveArea(this.parent.closeDelay());\r\n }\r\n}\r\n","import { CdkMenuGroup, CdkMenuItem, CdkMenuItemCheckbox, CdkMenuItemRadio } from '@angular/cdk/menu';\nimport { Directive, booleanAttribute, effect, inject, input } from '@angular/core';\n\nimport { FrDropdownMenuItemVariant } from './dropdown-menu.types';\n\n@Directive({\n selector: '[frDropdownMenuItem]',\n hostDirectives: [CdkMenuItem],\n host: {\n class: 'frame-dropdown-menu__item',\n '[attr.data-inset]': 'inset() ? \"\" : null',\n '[attr.data-variant]': 'variant()',\n },\n})\nexport class FrDropdownMenuItem {\n readonly inset = input(false, { transform: booleanAttribute });\n readonly variant = input<FrDropdownMenuItemVariant>('default');\n}\n\n@Directive({\n selector: 'button[frDropdownMenuCheckboxItem]',\n hostDirectives: [CdkMenuItemCheckbox],\n host: {\n class: 'frame-dropdown-menu__item frame-dropdown-menu__checkbox-item',\n '[attr.data-checked]': 'checkboxItem.checked ? \"\" : null',\n '[attr.data-inset]': 'inset() ? \"\" : null',\n '[attr.data-variant]': 'variant()',\n },\n})\nexport class FrDropdownMenuCheckboxItem {\n protected readonly checkboxItem = inject(CdkMenuItemCheckbox);\n\n readonly checked = input(false, {\n alias: 'checked',\n transform: booleanAttribute,\n });\n readonly inset = input(false, { transform: booleanAttribute });\n readonly variant = input<FrDropdownMenuItemVariant>('default');\n\n constructor() {\n effect(() => {\n this.checkboxItem.checked = this.checked();\n });\n }\n}\n\n@Directive({\n selector: '[frDropdownMenuRadioGroup]',\n hostDirectives: [CdkMenuGroup],\n host: {\n class: 'frame-dropdown-menu__radio-group',\n },\n})\nexport class FrDropdownMenuRadioGroup {}\n\n@Directive({\n selector: 'button[frDropdownMenuRadioItem]',\n hostDirectives: [CdkMenuItemRadio],\n host: {\n class: 'frame-dropdown-menu__item frame-dropdown-menu__radio-item',\n '[attr.data-checked]': 'radioItem.checked ? \"\" : null',\n '[attr.data-inset]': 'inset() ? \"\" : null',\n '[attr.data-variant]': 'variant()',\n },\n})\nexport class FrDropdownMenuRadioItem {\n protected readonly radioItem = inject(CdkMenuItemRadio);\n\n readonly checked = input(false, {\n alias: 'checked',\n transform: booleanAttribute,\n });\n readonly inset = input(false, { transform: booleanAttribute });\n readonly variant = input<FrDropdownMenuItemVariant>('default');\n\n constructor() {\n effect(() => {\n this.radioItem.checked = this.checked();\n });\n }\n}\n\n@Directive({\n selector: '[frDropdownMenuLabel]',\n host: {\n class: 'frame-dropdown-menu__label',\n '[attr.data-inset]': 'inset() ? \"\" : null',\n },\n})\nexport class FrDropdownMenuLabel {\n readonly inset = input(false, { transform: booleanAttribute });\n}\n\n@Directive({\n selector: '[frDropdownMenuSeparator]',\n host: {\n class: 'frame-dropdown-menu__separator',\n role: 'separator',\n },\n})\nexport class FrDropdownMenuSeparator {}\n\n@Directive({\n selector: '[frDropdownMenuShortcut]',\n host: {\n class: 'frame-dropdown-menu__shortcut',\n },\n})\nexport class FrDropdownMenuShortcut {}\n\n@Directive({\n selector: '[frDropdownMenuItemIndicator]',\n host: {\n class: 'frame-dropdown-menu__indicator',\n 'aria-hidden': 'true',\n },\n})\nexport class FrDropdownMenuItemIndicator {}\n","import { CdkMenuItem, CdkMenuTrigger } from '@angular/cdk/menu';\nimport { ConnectedPosition } from '@angular/cdk/overlay';\nimport {\n DestroyRef,\n Directive,\n ElementRef,\n InputSignal,\n booleanAttribute,\n effect,\n inject,\n input,\n signal,\n OnDestroy,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\nimport { FrDropdownMenuContent } from './dropdown-menu.content';\nimport { defaultPositions } from './dropdown-menu.position';\nimport { FR_DROPDOWN_MENU_PARENT, FrDropdownMenuTree } from './dropdown-menu.root';\nimport { FrDropdownMenuItemVariant, FrDropdownMenuTriggerMode } from './dropdown-menu.types';\n\n@Directive({\n host: {\n '(mouseenter)': 'handleMouseEnter()',\n '(mouseleave)': 'handleMouseLeave()',\n },\n})\nabstract class FrDropdownMenuTriggerBase implements OnDestroy {\n private static readonly CUSTOM_PROPERTY_PREFIX = '--frame-dropdown-menu-';\n\n protected readonly cdkMenuTrigger = inject(CdkMenuTrigger);\n private readonly destroyRef = inject(DestroyRef);\n private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly tree = inject(FrDropdownMenuTree);\n private readonly parent = inject(FR_DROPDOWN_MENU_PARENT);\n protected readonly isOpen = signal(false);\n\n constructor() {\n this.tree.register(this);\n\n effect(() => {\n const content = this.menuContent();\n\n this.cdkMenuTrigger.menuTemplateRef = content?.templateRef ?? null;\n this.cdkMenuTrigger.menuPosition = this.resolvePositions();\n\n if (content?.isDebugVisible() && !this.cdkMenuTrigger.isOpen()) {\n queueMicrotask(() => {\n if (!this.cdkMenuTrigger.isOpen()) {\n this.cdkMenuTrigger.open();\n }\n });\n }\n });\n\n this.cdkMenuTrigger.opened.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {\n this.tree.cancelClose();\n this.isOpen.set(true);\n queueMicrotask(() => {\n this.syncCustomPropertiesToOverlay();\n });\n });\n\n this.cdkMenuTrigger.closed.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {\n if (this.menuContent()?.isDebugVisible()) {\n queueMicrotask(() => {\n if (!this.cdkMenuTrigger.isOpen()) {\n this.cdkMenuTrigger.open();\n }\n });\n return;\n }\n\n this.isOpen.set(false);\n });\n }\n\n protected abstract readonly menuContent: () => FrDropdownMenuContent | null;\n protected abstract readonly isSubmenuTrigger: boolean;\n protected abstract readonly triggerModeInput: InputSignal<FrDropdownMenuTriggerMode | null>;\n\n protected get triggerMode(): FrDropdownMenuTriggerMode {\n return this.triggerModeInput() ?? this.parent.triggerMode();\n }\n\n protected get closeDelay(): number {\n return this.parent.closeDelay();\n }\n\n protected resolvePositions(): ConnectedPosition[] {\n return (\n this.menuContent()?.getPositions(this.isSubmenuTrigger) ??\n defaultPositions(this.isSubmenuTrigger)\n );\n }\n\n protected openFromHover(): void {\n if (this.triggerMode === 'hover' || this.triggerMode === 'both') {\n this.tree.cancelClose();\n\n if (!this.cdkMenuTrigger.isOpen()) {\n this.cdkMenuTrigger.open();\n }\n }\n }\n\n protected handleMouseEnter(): void {\n this.tree.enterInteractiveArea();\n this.openFromHover();\n }\n\n protected handleMouseLeave(): void {\n if (this.menuContent()?.isDebugVisible()) {\n return;\n }\n\n if (this.triggerMode === 'hover' || this.triggerMode === 'both') {\n this.tree.leaveInteractiveArea(this.closeDelay);\n }\n }\n\n close(): void {\n if (this.menuContent()?.isDebugVisible()) {\n return;\n }\n\n if (this.cdkMenuTrigger.isOpen()) {\n this.cdkMenuTrigger.close();\n }\n }\n\n ngOnDestroy(): void {\n this.tree.unregister(this);\n }\n\n private syncCustomPropertiesToOverlay(): void {\n const overlayRef = (this.cdkMenuTrigger as unknown as { overlayRef?: { overlayElement?: HTMLElement | null } })\n .overlayRef;\n const overlayElement = overlayRef?.overlayElement ?? null;\n\n if (!overlayElement) {\n return;\n }\n\n const menuPanel =\n overlayElement.querySelector<HTMLElement>('.frame-dropdown-menu__content') ?? overlayElement;\n const sourceStyles = getComputedStyle(this.elementRef.nativeElement);\n\n for (let index = 0; index < sourceStyles.length; index += 1) {\n const propertyName = sourceStyles.item(index);\n\n if (!propertyName.startsWith(FrDropdownMenuTriggerBase.CUSTOM_PROPERTY_PREFIX)) {\n continue;\n }\n\n const propertyValue = sourceStyles.getPropertyValue(propertyName);\n\n overlayElement.style.setProperty(propertyName, propertyValue);\n menuPanel.style.setProperty(propertyName, propertyValue);\n }\n }\n}\n\n@Directive({\n selector: '[frDropdownMenuTrigger]',\n hostDirectives: [CdkMenuTrigger],\n host: {\n class: 'frame-dropdown-menu__trigger',\n '[attr.data-state]': 'isOpen() ? \"open\" : \"closed\"',\n },\n})\nexport class FrDropdownMenuTrigger extends FrDropdownMenuTriggerBase {\n readonly menuContent = input<FrDropdownMenuContent | null>(null, {\n alias: 'frDropdownMenuTrigger',\n });\n readonly triggerModeInput = input<FrDropdownMenuTriggerMode | null>(null, {\n alias: 'triggerMode',\n });\n protected readonly isSubmenuTrigger = false;\n}\n\n@Directive({\n selector: '[frDropdownMenuSubTrigger]',\n hostDirectives: [CdkMenuItem, CdkMenuTrigger],\n host: {\n class: 'frame-dropdown-menu__item frame-dropdown-menu__sub-trigger',\n '[attr.data-inset]': 'inset() ? \"\" : null',\n '[attr.data-state]': 'isOpen() ? \"open\" : \"closed\"',\n '[attr.data-variant]': 'variant()',\n },\n})\nexport class FrDropdownMenuSubTrigger extends FrDropdownMenuTriggerBase {\n readonly menuContent = input<FrDropdownMenuContent | null>(null, {\n alias: 'frDropdownMenuSubTrigger',\n });\n readonly inset = input(false, { transform: booleanAttribute });\n readonly triggerModeInput = input<FrDropdownMenuTriggerMode | null>(null, {\n alias: 'triggerMode',\n });\n readonly variant = input<FrDropdownMenuItemVariant>('default');\n protected readonly isSubmenuTrigger = true;\n}\n","export const FR_DROPDOWN_MENU_ALIGNMENTS = ['center', 'end', 'start'] as const;\r\nexport const FR_DROPDOWN_MENU_SIDES = ['auto', 'bottom', 'left', 'right', 'top'] as const;\r\nexport const FR_DROPDOWN_MENU_TRIGGER_MODES = ['both', 'click', 'hover'] as const;\r\nexport const FR_DROPDOWN_MENU_ITEM_VARIANTS = ['default', 'destructive'] as const;\r\n\r\nexport type FrDropdownMenuAlignment = (typeof FR_DROPDOWN_MENU_ALIGNMENTS)[number];\r\nexport type FrDropdownMenuSide = (typeof FR_DROPDOWN_MENU_SIDES)[number];\r\nexport type FrDropdownMenuTriggerMode = (typeof FR_DROPDOWN_MENU_TRIGGER_MODES)[number];\r\nexport type FrDropdownMenuItemVariant = (typeof FR_DROPDOWN_MENU_ITEM_VARIANTS)[number];\r\n","import { NgModule } from '@angular/core';\nimport {\n FrDropdownMenu,\n FrDropdownMenuCheckboxItem,\n FrDropdownMenuContent,\n FrDropdownMenuItem,\n FrDropdownMenuItemIndicator,\n FrDropdownMenuLabel,\n FrDropdownMenuPanel,\n FrDropdownMenuRadioGroup,\n FrDropdownMenuRadioItem,\n FrDropdownMenuSeparator,\n FrDropdownMenuShortcut,\n FrDropdownMenuSub,\n FrDropdownMenuSubTrigger,\n FrDropdownMenuTrigger,\n} from './src/dropdown-menu';\n\n@NgModule({\n imports: [\n FrDropdownMenu,\n FrDropdownMenuCheckboxItem,\n FrDropdownMenuContent,\n FrDropdownMenuItem,\n FrDropdownMenuItemIndicator,\n FrDropdownMenuLabel,\n FrDropdownMenuPanel,\n FrDropdownMenuRadioGroup,\n FrDropdownMenuRadioItem,\n FrDropdownMenuSeparator,\n FrDropdownMenuShortcut,\n FrDropdownMenuSub,\n FrDropdownMenuSubTrigger,\n FrDropdownMenuTrigger,\n ],\n exports: [\n FrDropdownMenu,\n FrDropdownMenuCheckboxItem,\n FrDropdownMenuContent,\n FrDropdownMenuItem,\n FrDropdownMenuItemIndicator,\n FrDropdownMenuLabel,\n FrDropdownMenuPanel,\n FrDropdownMenuRadioGroup,\n FrDropdownMenuRadioItem,\n FrDropdownMenuSeparator,\n FrDropdownMenuShortcut,\n FrDropdownMenuSub,\n FrDropdownMenuSubTrigger,\n FrDropdownMenuTrigger,\n ],\n})\nexport class FrDropdownMenuModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"frame-ui-ng-components-dropdown-menu.mjs","sources":["../../../projects/components/dropdown-menu/src/dropdown-menu.position.ts","../../../projects/components/dropdown-menu/src/dropdown-menu.root.ts","../../../projects/components/dropdown-menu/src/dropdown-menu.content.ts","../../../projects/components/dropdown-menu/src/dropdown-menu.items.ts","../../../projects/components/dropdown-menu/src/dropdown-menu.trigger.ts","../../../projects/components/dropdown-menu/src/dropdown-menu.types.ts","../../../projects/components/dropdown-menu/dropdown-menu.module.ts","../../../projects/components/dropdown-menu/frame-ui-ng-components-dropdown-menu.ts"],"sourcesContent":["import { ConnectedPosition } from '@angular/cdk/overlay';\r\n\r\nimport { FrDropdownMenuAlignment, FrDropdownMenuSide } from './dropdown-menu.types';\r\n\r\ntype ConcreteDropdownMenuSide = Exclude<FrDropdownMenuSide, 'auto'>;\r\n\r\nconst DEFAULT_SIDE_OFFSET = 4;\r\nconst MIN_SUBMENU_SIDE_OFFSET = 8;\r\n\r\nexport function defaultPositions(isSubmenu: boolean): ConnectedPosition[] {\r\n return buildConnectedPositions({\r\n align: 'start',\r\n alignOffset: 0,\r\n isSubmenu,\r\n side: 'auto',\r\n sideOffset: DEFAULT_SIDE_OFFSET,\r\n });\r\n}\r\n\r\nexport function buildConnectedPositions(options: {\r\n align: FrDropdownMenuAlignment;\r\n alignOffset: number;\r\n isSubmenu: boolean;\r\n side: FrDropdownMenuSide;\r\n sideOffset: number;\r\n}): ConnectedPosition[] {\r\n const side = normalizeSide(options.side, options.isSubmenu);\r\n\r\n if (side === 'auto') {\r\n return autoSides(options.isSubmenu).flatMap((side) =>\r\n primaryPlacement({\r\n ...options,\r\n side,\r\n }),\r\n );\r\n }\r\n\r\n return primaryPlacement({\r\n ...options,\r\n side,\r\n });\r\n}\r\n\r\nfunction primaryPlacement(options: {\r\n align: FrDropdownMenuAlignment;\r\n alignOffset: number;\r\n isSubmenu: boolean;\r\n side: ConcreteDropdownMenuSide;\r\n sideOffset: number;\r\n}): ConnectedPosition[] {\r\n if (options.side === 'left' || options.side === 'right') {\r\n const isRight = options.side === 'right';\r\n const sideOffset = options.isSubmenu\r\n ? Math.max(options.sideOffset, MIN_SUBMENU_SIDE_OFFSET)\r\n : options.sideOffset;\r\n const horizontalOffset = isRight ? sideOffset : -sideOffset;\r\n const originY = horizontalOriginY(options.align);\r\n const overlayY = horizontalOverlayY(options.align);\r\n\r\n return [\r\n {\r\n originX: isRight ? 'end' : 'start',\r\n originY,\r\n overlayX: isRight ? 'start' : 'end',\r\n overlayY,\r\n offsetX: horizontalOffset,\r\n offsetY: options.alignOffset,\r\n },\r\n {\r\n originX: isRight ? 'start' : 'end',\r\n originY,\r\n overlayX: isRight ? 'end' : 'start',\r\n overlayY,\r\n offsetX: -horizontalOffset,\r\n offsetY: options.alignOffset,\r\n },\r\n ];\r\n }\r\n\r\n const isBottom = options.side === 'bottom';\r\n const verticalOffset = isBottom ? options.sideOffset : -options.sideOffset;\r\n const originX = rootOriginX(options.align);\r\n const overlayX = rootOverlayX(options.align);\r\n\r\n return [\r\n {\r\n originX,\r\n originY: isBottom ? 'bottom' : 'top',\r\n overlayX,\r\n overlayY: isBottom ? 'top' : 'bottom',\r\n offsetX: options.alignOffset,\r\n offsetY: verticalOffset,\r\n },\r\n {\r\n originX,\r\n originY: isBottom ? 'top' : 'bottom',\r\n overlayX,\r\n overlayY: isBottom ? 'bottom' : 'top',\r\n offsetX: options.alignOffset,\r\n offsetY: -verticalOffset,\r\n },\r\n ];\r\n}\r\n\r\nfunction normalizeSide(side: FrDropdownMenuSide, isSubmenu: boolean): FrDropdownMenuSide {\r\n if (!isSubmenu || side === 'left' || side === 'right') {\r\n return side;\r\n }\r\n\r\n return 'auto';\r\n}\r\n\r\nfunction autoSides(isSubmenu: boolean): ConcreteDropdownMenuSide[] {\r\n return isSubmenu ? ['right', 'left'] : ['bottom', 'top', 'right', 'left'];\r\n}\r\n\r\nfunction rootOriginX(align: FrDropdownMenuAlignment): 'center' | 'end' | 'start' {\r\n if (align === 'center') {\r\n return 'center';\r\n }\r\n\r\n return align;\r\n}\r\n\r\nfunction rootOverlayX(align: FrDropdownMenuAlignment): 'center' | 'end' | 'start' {\r\n if (align === 'center') {\r\n return 'center';\r\n }\r\n\r\n return align;\r\n}\r\n\r\nfunction horizontalOriginY(align: FrDropdownMenuAlignment): 'bottom' | 'center' | 'top' {\r\n if (align === 'center') {\r\n return 'center';\r\n }\r\n\r\n return align === 'end' ? 'bottom' : 'top';\r\n}\r\n\r\nfunction horizontalOverlayY(align: FrDropdownMenuAlignment): 'bottom' | 'center' | 'top' {\r\n if (align === 'center') {\r\n return 'center';\r\n }\r\n\r\n return align === 'end' ? 'bottom' : 'top';\r\n}\r\n","import { Directive, Injectable, InjectionToken, effect, inject, input, signal } from '@angular/core';\n\nimport { FrDropdownMenuTriggerMode } from './dropdown-menu.types';\n\nexport interface FrDropdownMenuParent {\n readonly closeDelay: () => number;\n readonly triggerMode: () => FrDropdownMenuTriggerMode;\n}\n\nexport const FR_DROPDOWN_MENU_PARENT = new InjectionToken<FrDropdownMenuParent>(\n 'FrDropdownMenuParent',\n);\n\n@Injectable()\nexport class FrDropdownMenuTree {\n private readonly triggers = new Set<{ close(): void }>();\n private closeTimeoutId: ReturnType<typeof setTimeout> | null = null;\n private pointerInsideCount = 0;\n\n register(trigger: { close(): void }): void {\n this.triggers.add(trigger);\n }\n\n unregister(trigger: { close(): void }): void {\n this.triggers.delete(trigger);\n }\n\n cancelClose(): void {\n if (this.closeTimeoutId !== null) {\n clearTimeout(this.closeTimeoutId);\n this.closeTimeoutId = null;\n }\n }\n\n enterInteractiveArea(): void {\n this.pointerInsideCount += 1;\n this.cancelClose();\n }\n\n leaveInteractiveArea(delay: number): void {\n this.pointerInsideCount = Math.max(0, this.pointerInsideCount - 1);\n\n if (this.pointerInsideCount === 0) {\n this.scheduleClose(delay);\n }\n }\n\n scheduleClose(delay: number): void {\n this.cancelClose();\n this.closeTimeoutId = setTimeout(() => {\n this.closeAll();\n }, delay);\n }\n\n closeAll(): void {\n this.cancelClose();\n\n for (const trigger of this.triggers) {\n trigger.close();\n }\n }\n}\n\n@Directive({\n selector: '[frDropdownMenu]',\n providers: [\n FrDropdownMenuTree,\n {\n provide: FR_DROPDOWN_MENU_PARENT,\n useExisting: FrDropdownMenu,\n },\n ],\n host: {\n class: 'frame-dropdown-menu-root',\n },\n})\nexport class FrDropdownMenu implements FrDropdownMenuParent {\n readonly closeDelay = input(140);\n readonly triggerMode = input<FrDropdownMenuTriggerMode>('click');\n}\n\n@Directive({\n selector: '[frDropdownMenuSub]',\n providers: [\n {\n provide: FR_DROPDOWN_MENU_PARENT,\n useExisting: FrDropdownMenuSub,\n },\n ],\n host: {\n class: 'frame-dropdown-menu-sub',\n },\n})\nexport class FrDropdownMenuSub implements FrDropdownMenuParent {\n private readonly parent = inject(FR_DROPDOWN_MENU_PARENT, { skipSelf: true });\n\n readonly closeDelayInput = input<number | null>(null, { alias: 'closeDelay' });\n readonly triggerModeInput = input<FrDropdownMenuTriggerMode | null>(null, {\n alias: 'triggerMode',\n });\n\n readonly closeDelay = signal(this.parent.closeDelay());\n readonly triggerMode = signal(this.parent.triggerMode());\n\n constructor() {\n effect(() => {\n this.closeDelay.set(this.closeDelayInput() ?? this.parent.closeDelay());\n this.triggerMode.set(this.triggerModeInput() ?? this.parent.triggerMode());\n });\n }\n}\n","import { CdkMenu, CdkTargetMenuAim } from '@angular/cdk/menu';\r\nimport { ConnectedPosition } from '@angular/cdk/overlay';\r\nimport {\r\n Directive,\r\n InjectionToken,\r\n TemplateRef,\r\n booleanAttribute,\r\n inject,\r\n input,\r\n} from '@angular/core';\r\n\r\nimport { buildConnectedPositions } from './dropdown-menu.position';\r\nimport { FR_DROPDOWN_MENU_PARENT, FrDropdownMenuTree } from './dropdown-menu.root';\r\nimport { FrDropdownMenuAlignment, FrDropdownMenuSide } from './dropdown-menu.types';\r\n\r\nexport const FR_DROPDOWN_MENU_CONTENT = new InjectionToken<FrDropdownMenuContent>(\r\n 'FrDropdownMenuContent',\r\n);\r\n\r\n@Directive({\r\n selector: 'ng-template[frDropdownMenuContent], ng-template[frDropdownMenuSubContent]',\r\n exportAs: 'frDropdownMenuContent',\r\n providers: [\r\n {\r\n provide: FR_DROPDOWN_MENU_CONTENT,\r\n useExisting: FrDropdownMenuContent,\r\n },\r\n ],\r\n})\r\nexport class FrDropdownMenuContent {\r\n readonly templateRef = inject(TemplateRef<unknown>);\r\n\r\n readonly align = input<FrDropdownMenuAlignment>('start');\r\n readonly alignOffset = input(0);\r\n readonly debugVisible = input(false, { transform: booleanAttribute });\r\n readonly side = input<FrDropdownMenuSide>('auto');\r\n readonly sideOffset = input(4);\r\n\r\n isDebugVisible(): boolean {\r\n return this.debugVisible();\r\n }\r\n\r\n getPositions(isSubmenu: boolean): ConnectedPosition[] {\r\n return buildConnectedPositions({\r\n align: this.align(),\r\n alignOffset: this.alignOffset(),\r\n isSubmenu,\r\n side: this.side(),\r\n sideOffset: this.sideOffset(),\r\n });\r\n }\r\n}\r\n\r\n@Directive({\r\n selector: '[frDropdownMenuPanel]',\r\n hostDirectives: [CdkMenu, CdkTargetMenuAim],\r\n host: {\r\n class: 'frame-dropdown-menu__content',\r\n '[attr.data-side]': 'side()',\r\n tabindex: '-1',\r\n '(mouseenter)': 'handleMouseEnter()',\r\n '(mouseleave)': 'handleMouseLeave()'\r\n },\r\n})\r\nexport class FrDropdownMenuPanel {\r\n protected readonly side = inject(FR_DROPDOWN_MENU_CONTENT).side;\r\n private readonly tree = inject(FrDropdownMenuTree);\r\n private readonly parent = inject(FR_DROPDOWN_MENU_PARENT);\r\n\r\n protected handleMouseEnter(): void {\r\n this.tree.enterInteractiveArea();\r\n }\r\n\r\n protected handleMouseLeave(): void {\r\n this.tree.leaveInteractiveArea(this.parent.closeDelay());\r\n }\r\n}\r\n","import { CdkMenuGroup, CdkMenuItem, CdkMenuItemCheckbox, CdkMenuItemRadio } from '@angular/cdk/menu';\nimport { Directive, booleanAttribute, effect, inject, input } from '@angular/core';\n\nimport { FrDropdownMenuItemVariant } from './dropdown-menu.types';\n\n@Directive({\n selector: '[frDropdownMenuItem]',\n hostDirectives: [CdkMenuItem],\n host: {\n class: 'frame-dropdown-menu__item',\n '[attr.data-inset]': 'inset() ? \"\" : null',\n '[attr.data-variant]': 'variant()',\n },\n})\nexport class FrDropdownMenuItem {\n readonly inset = input(false, { transform: booleanAttribute });\n readonly variant = input<FrDropdownMenuItemVariant>('default');\n}\n\n@Directive({\n selector: 'button[frDropdownMenuCheckboxItem]',\n hostDirectives: [CdkMenuItemCheckbox],\n host: {\n class: 'frame-dropdown-menu__item frame-dropdown-menu__checkbox-item',\n '[attr.data-checked]': 'checkboxItem.checked ? \"\" : null',\n '[attr.data-inset]': 'inset() ? \"\" : null',\n '[attr.data-variant]': 'variant()',\n },\n})\nexport class FrDropdownMenuCheckboxItem {\n protected readonly checkboxItem = inject(CdkMenuItemCheckbox);\n\n readonly checked = input(false, {\n alias: 'checked',\n transform: booleanAttribute,\n });\n readonly inset = input(false, { transform: booleanAttribute });\n readonly variant = input<FrDropdownMenuItemVariant>('default');\n\n constructor() {\n effect(() => {\n this.checkboxItem.checked = this.checked();\n });\n }\n}\n\n@Directive({\n selector: '[frDropdownMenuRadioGroup]',\n hostDirectives: [CdkMenuGroup],\n host: {\n class: 'frame-dropdown-menu__radio-group',\n },\n})\nexport class FrDropdownMenuRadioGroup {}\n\n@Directive({\n selector: 'button[frDropdownMenuRadioItem]',\n hostDirectives: [CdkMenuItemRadio],\n host: {\n class: 'frame-dropdown-menu__item frame-dropdown-menu__radio-item',\n '[attr.data-checked]': 'radioItem.checked ? \"\" : null',\n '[attr.data-inset]': 'inset() ? \"\" : null',\n '[attr.data-variant]': 'variant()',\n },\n})\nexport class FrDropdownMenuRadioItem {\n protected readonly radioItem = inject(CdkMenuItemRadio);\n\n readonly checked = input(false, {\n alias: 'checked',\n transform: booleanAttribute,\n });\n readonly inset = input(false, { transform: booleanAttribute });\n readonly variant = input<FrDropdownMenuItemVariant>('default');\n\n constructor() {\n effect(() => {\n this.radioItem.checked = this.checked();\n });\n }\n}\n\n@Directive({\n selector: '[frDropdownMenuLabel]',\n host: {\n class: 'frame-dropdown-menu__label',\n '[attr.data-inset]': 'inset() ? \"\" : null',\n },\n})\nexport class FrDropdownMenuLabel {\n readonly inset = input(false, { transform: booleanAttribute });\n}\n\n@Directive({\n selector: '[frDropdownMenuSeparator]',\n host: {\n class: 'frame-dropdown-menu__separator',\n role: 'separator',\n },\n})\nexport class FrDropdownMenuSeparator {}\n\n@Directive({\n selector: '[frDropdownMenuShortcut]',\n host: {\n class: 'frame-dropdown-menu__shortcut',\n },\n})\nexport class FrDropdownMenuShortcut {}\n\n@Directive({\n selector: '[frDropdownMenuItemIndicator]',\n host: {\n class: 'frame-dropdown-menu__indicator',\n 'aria-hidden': 'true',\n },\n})\nexport class FrDropdownMenuItemIndicator {}\n","import { CdkMenuItem, CdkMenuTrigger } from '@angular/cdk/menu';\nimport { ConnectedPosition } from '@angular/cdk/overlay';\nimport {\n DestroyRef,\n Directive,\n ElementRef,\n InputSignal,\n booleanAttribute,\n effect,\n inject,\n input,\n signal,\n OnDestroy,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\nimport { FrDropdownMenuContent } from './dropdown-menu.content';\nimport { defaultPositions } from './dropdown-menu.position';\nimport { FR_DROPDOWN_MENU_PARENT, FrDropdownMenuTree } from './dropdown-menu.root';\nimport { FrDropdownMenuItemVariant, FrDropdownMenuTriggerMode } from './dropdown-menu.types';\n\n@Directive({\n host: {\n '(mouseenter)': 'handleMouseEnter()',\n '(mouseleave)': 'handleMouseLeave()',\n },\n})\nabstract class FrDropdownMenuTriggerBase implements OnDestroy {\n private static readonly CUSTOM_PROPERTY_PREFIX = '--frame-dropdown-menu-';\n\n protected readonly cdkMenuTrigger = inject(CdkMenuTrigger);\n private readonly destroyRef = inject(DestroyRef);\n private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly tree = inject(FrDropdownMenuTree);\n private readonly parent = inject(FR_DROPDOWN_MENU_PARENT);\n protected readonly isOpen = signal(false);\n\n constructor() {\n this.tree.register(this);\n\n effect(() => {\n const content = this.menuContent();\n\n this.cdkMenuTrigger.menuTemplateRef = content?.templateRef ?? null;\n this.cdkMenuTrigger.menuPosition = this.resolvePositions();\n\n if (content?.isDebugVisible() && !this.cdkMenuTrigger.isOpen()) {\n queueMicrotask(() => {\n if (!this.cdkMenuTrigger.isOpen()) {\n this.cdkMenuTrigger.open();\n }\n });\n }\n });\n\n this.cdkMenuTrigger.opened.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {\n this.tree.cancelClose();\n this.isOpen.set(true);\n queueMicrotask(() => {\n this.syncCustomPropertiesToOverlay();\n });\n });\n\n this.cdkMenuTrigger.closed.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {\n if (this.menuContent()?.isDebugVisible()) {\n queueMicrotask(() => {\n if (!this.cdkMenuTrigger.isOpen()) {\n this.cdkMenuTrigger.open();\n }\n });\n return;\n }\n\n this.isOpen.set(false);\n });\n }\n\n protected abstract readonly menuContent: () => FrDropdownMenuContent | null;\n protected abstract readonly isSubmenuTrigger: boolean;\n protected abstract readonly triggerModeInput: InputSignal<FrDropdownMenuTriggerMode | null>;\n\n protected get triggerMode(): FrDropdownMenuTriggerMode {\n return this.triggerModeInput() ?? this.parent.triggerMode();\n }\n\n protected get closeDelay(): number {\n return this.parent.closeDelay();\n }\n\n protected resolvePositions(): ConnectedPosition[] {\n return (\n this.menuContent()?.getPositions(this.isSubmenuTrigger) ??\n defaultPositions(this.isSubmenuTrigger)\n );\n }\n\n protected openFromHover(): void {\n if (this.triggerMode === 'hover' || this.triggerMode === 'both') {\n this.tree.cancelClose();\n\n if (!this.cdkMenuTrigger.isOpen()) {\n this.cdkMenuTrigger.open();\n }\n }\n }\n\n protected handleMouseEnter(): void {\n this.tree.enterInteractiveArea();\n this.openFromHover();\n }\n\n protected handleMouseLeave(): void {\n if (this.menuContent()?.isDebugVisible()) {\n return;\n }\n\n if (this.triggerMode === 'hover' || this.triggerMode === 'both') {\n this.tree.leaveInteractiveArea(this.closeDelay);\n }\n }\n\n close(): void {\n if (this.menuContent()?.isDebugVisible()) {\n return;\n }\n\n if (this.cdkMenuTrigger.isOpen()) {\n this.cdkMenuTrigger.close();\n }\n }\n\n ngOnDestroy(): void {\n this.tree.unregister(this);\n }\n\n private syncCustomPropertiesToOverlay(): void {\n const overlayRef = (this.cdkMenuTrigger as unknown as { overlayRef?: { overlayElement?: HTMLElement | null } })\n .overlayRef;\n const overlayElement = overlayRef?.overlayElement ?? null;\n\n if (!overlayElement) {\n return;\n }\n\n const menuPanel =\n overlayElement.querySelector<HTMLElement>('.frame-dropdown-menu__content') ?? overlayElement;\n const sourceStyles = getComputedStyle(this.elementRef.nativeElement);\n\n for (let index = 0; index < sourceStyles.length; index += 1) {\n const propertyName = sourceStyles.item(index);\n\n if (!propertyName.startsWith(FrDropdownMenuTriggerBase.CUSTOM_PROPERTY_PREFIX)) {\n continue;\n }\n\n const propertyValue = sourceStyles.getPropertyValue(propertyName);\n\n overlayElement.style.setProperty(propertyName, propertyValue);\n menuPanel.style.setProperty(propertyName, propertyValue);\n }\n }\n}\n\n@Directive({\n selector: '[frDropdownMenuTrigger]',\n hostDirectives: [CdkMenuTrigger],\n host: {\n class: 'frame-dropdown-menu__trigger',\n '[attr.data-state]': 'isOpen() ? \"open\" : \"closed\"',\n },\n})\nexport class FrDropdownMenuTrigger extends FrDropdownMenuTriggerBase {\n readonly menuContent = input<FrDropdownMenuContent | null>(null, {\n alias: 'frDropdownMenuTrigger',\n });\n readonly triggerModeInput = input<FrDropdownMenuTriggerMode | null>(null, {\n alias: 'triggerMode',\n });\n protected readonly isSubmenuTrigger = false;\n}\n\n@Directive({\n selector: '[frDropdownMenuSubTrigger]',\n hostDirectives: [CdkMenuItem, CdkMenuTrigger],\n host: {\n class: 'frame-dropdown-menu__item frame-dropdown-menu__sub-trigger',\n '[attr.data-inset]': 'inset() ? \"\" : null',\n '[attr.data-state]': 'isOpen() ? \"open\" : \"closed\"',\n '[attr.data-variant]': 'variant()',\n },\n})\nexport class FrDropdownMenuSubTrigger extends FrDropdownMenuTriggerBase {\n readonly menuContent = input<FrDropdownMenuContent | null>(null, {\n alias: 'frDropdownMenuSubTrigger',\n });\n readonly inset = input(false, { transform: booleanAttribute });\n readonly triggerModeInput = input<FrDropdownMenuTriggerMode | null>(null, {\n alias: 'triggerMode',\n });\n readonly variant = input<FrDropdownMenuItemVariant>('default');\n protected readonly isSubmenuTrigger = true;\n}\n","export const FR_DROPDOWN_MENU_ALIGNMENTS = ['center', 'end', 'start'] as const;\r\nexport const FR_DROPDOWN_MENU_SIDES = ['auto', 'bottom', 'left', 'right', 'top'] as const;\r\nexport const FR_DROPDOWN_MENU_TRIGGER_MODES = ['both', 'click', 'hover'] as const;\r\nexport const FR_DROPDOWN_MENU_ITEM_VARIANTS = ['default', 'destructive'] as const;\r\n\r\nexport type FrDropdownMenuAlignment = (typeof FR_DROPDOWN_MENU_ALIGNMENTS)[number];\r\nexport type FrDropdownMenuSide = (typeof FR_DROPDOWN_MENU_SIDES)[number];\r\nexport type FrDropdownMenuTriggerMode = (typeof FR_DROPDOWN_MENU_TRIGGER_MODES)[number];\r\nexport type FrDropdownMenuItemVariant = (typeof FR_DROPDOWN_MENU_ITEM_VARIANTS)[number];\r\n","import { NgModule } from '@angular/core';\nimport {\n FrDropdownMenu,\n FrDropdownMenuCheckboxItem,\n FrDropdownMenuContent,\n FrDropdownMenuItem,\n FrDropdownMenuItemIndicator,\n FrDropdownMenuLabel,\n FrDropdownMenuPanel,\n FrDropdownMenuRadioGroup,\n FrDropdownMenuRadioItem,\n FrDropdownMenuSeparator,\n FrDropdownMenuShortcut,\n FrDropdownMenuSub,\n FrDropdownMenuSubTrigger,\n FrDropdownMenuTrigger,\n} from './src/dropdown-menu';\n\n@NgModule({\n imports: [\n FrDropdownMenu,\n FrDropdownMenuCheckboxItem,\n FrDropdownMenuContent,\n FrDropdownMenuItem,\n FrDropdownMenuItemIndicator,\n FrDropdownMenuLabel,\n FrDropdownMenuPanel,\n FrDropdownMenuRadioGroup,\n FrDropdownMenuRadioItem,\n FrDropdownMenuSeparator,\n FrDropdownMenuShortcut,\n FrDropdownMenuSub,\n FrDropdownMenuSubTrigger,\n FrDropdownMenuTrigger,\n ],\n exports: [\n FrDropdownMenu,\n FrDropdownMenuCheckboxItem,\n FrDropdownMenuContent,\n FrDropdownMenuItem,\n FrDropdownMenuItemIndicator,\n FrDropdownMenuLabel,\n FrDropdownMenuPanel,\n FrDropdownMenuRadioGroup,\n FrDropdownMenuRadioItem,\n FrDropdownMenuSeparator,\n FrDropdownMenuShortcut,\n FrDropdownMenuSub,\n FrDropdownMenuSubTrigger,\n FrDropdownMenuTrigger,\n ],\n})\nexport class FrDropdownMenuModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
@@ -1,14 +1,15 @@
1
1
  import { NgClass } from '@angular/common';
2
2
  import * as i0 from '@angular/core';
3
- import { InjectionToken, input, numberAttribute, booleanAttribute, output, signal, computed, ViewChild, ChangeDetectionStrategy, Component, Directive, inject, NgModule } from '@angular/core';
3
+ import { InjectionToken, viewChild, input, numberAttribute, booleanAttribute, output, signal, computed, ChangeDetectionStrategy, Component, Directive, inject, NgModule } from '@angular/core';
4
4
  import { FrControlValueAccessor, provideDsValueAccessor } from '@frame-ui-ng/components/forms';
5
5
  import { FrInput } from '@frame-ui-ng/components/input';
6
+ import { clampNumber } from '@frame-ui-ng/components/utils';
6
7
 
7
8
  const FR_INPUT_OTP_PATTERN_DIGITS = /^[0-9]$/;
8
9
  const FR_INPUT_OTP_PATTERN_DIGITS_AND_CHARS = /^[a-zA-Z0-9]$/;
9
10
  const FR_INPUT_OTP_CONTROLLER = new InjectionToken('FrInputOtpController');
10
11
  class FrInputOtp extends FrControlValueAccessor {
11
- nativeInput;
12
+ nativeInput = viewChild('nativeInput', ...(ngDevMode ? [{ debugName: "nativeInput" }] : /* istanbul ignore next */ []));
12
13
  maxLength = input(6, { ...(ngDevMode ? { debugName: "maxLength" } : /* istanbul ignore next */ {}), transform: numberAttribute });
13
14
  pattern = input(FR_INPUT_OTP_PATTERN_DIGITS, ...(ngDevMode ? [{ debugName: "pattern" }] : /* istanbul ignore next */ []));
14
15
  disabledInput = input(false, { ...(ngDevMode ? { debugName: "disabledInput" } : /* istanbul ignore next */ {}), alias: 'disabled', transform: booleanAttribute });
@@ -25,11 +26,11 @@ class FrInputOtp extends FrControlValueAccessor {
25
26
  if (this.disabled()) {
26
27
  return;
27
28
  }
28
- const inputElement = this.nativeInput?.nativeElement;
29
+ const inputElement = this.nativeInput()?.nativeElement;
29
30
  if (!inputElement) {
30
31
  return;
31
32
  }
32
- const nextIndex = clamp(index, 0, this.maxLength());
33
+ const nextIndex = clampNumber(index, 0, this.maxLength());
33
34
  inputElement.focus();
34
35
  inputElement.setSelectionRange(nextIndex, nextIndex);
35
36
  this.activeIndex.set(nextIndex);
@@ -76,9 +77,9 @@ class FrInputOtp extends FrControlValueAccessor {
76
77
  this.focus(Math.min(next.length, this.maxLength()));
77
78
  }
78
79
  syncActiveIndex() {
79
- const inputElement = this.nativeInput?.nativeElement;
80
+ const inputElement = this.nativeInput()?.nativeElement;
80
81
  const index = inputElement?.selectionStart ?? this.value().length;
81
- this.activeIndex.set(clamp(index, 0, this.maxLength()));
82
+ this.activeIndex.set(clampNumber(index, 0, this.maxLength()));
82
83
  }
83
84
  markTouched() {
84
85
  this.markAsTouched();
@@ -108,7 +109,7 @@ class FrInputOtp extends FrControlValueAccessor {
108
109
  }
109
110
  replaceFrom(index, text) {
110
111
  const value = this.value();
111
- const start = clamp(index, 0, this.maxLength());
112
+ const start = clampNumber(index, 0, this.maxLength());
112
113
  const next = `${value.slice(0, start)}${text}${value.slice(start + text.length)}`;
113
114
  return this.sanitize(next);
114
115
  }
@@ -127,35 +128,35 @@ class FrInputOtp extends FrControlValueAccessor {
127
128
  return characters.slice(0, this.maxLength()).join('');
128
129
  }
129
130
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrInputOtp, deps: null, target: i0.ɵɵFactoryTarget.Component });
130
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.16", type: FrInputOtp, isStandalone: true, selector: "frame-input-otp", inputs: { maxLength: { classPropertyName: "maxLength", publicName: "maxLength", isSignal: true, isRequired: false, transformFunction: null }, pattern: { classPropertyName: "pattern", publicName: "pattern", isSignal: true, isRequired: false, transformFunction: null }, disabledInput: { classPropertyName: "disabledInput", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, invalidInput: { classPropertyName: "invalidInput", publicName: "invalid", isSignal: true, isRequired: false, transformFunction: null }, ariaLabel: { classPropertyName: "ariaLabel", publicName: "ariaLabel", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { valueChange: "valueChange", complete: "complete" }, host: { attributes: { "role": "group" }, listeners: { "click": "focus(activeIndex())" }, properties: { "attr.data-disabled": "disabled() ? \"\" : null", "attr.data-invalid": "invalid() ? \"\" : null", "attr.data-complete": "isComplete() ? \"\" : null" }, classAttribute: "frame-input-otp" }, providers: [
131
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "21.2.16", type: FrInputOtp, isStandalone: true, selector: "frame-input-otp", inputs: { maxLength: { classPropertyName: "maxLength", publicName: "maxLength", isSignal: true, isRequired: false, transformFunction: null }, pattern: { classPropertyName: "pattern", publicName: "pattern", isSignal: true, isRequired: false, transformFunction: null }, disabledInput: { classPropertyName: "disabledInput", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, invalidInput: { classPropertyName: "invalidInput", publicName: "invalid", isSignal: true, isRequired: false, transformFunction: null }, ariaLabel: { classPropertyName: "ariaLabel", publicName: "ariaLabel", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { valueChange: "valueChange", complete: "complete" }, host: { attributes: { "role": "group" }, listeners: { "click": "focus(activeIndex())" }, properties: { "attr.data-disabled": "disabled() ? \"\" : null", "attr.data-invalid": "invalid() ? \"\" : null", "attr.data-complete": "isComplete() ? \"\" : null" }, classAttribute: "frame-input-otp" }, providers: [
131
132
  provideDsValueAccessor(FrInputOtp),
132
133
  {
133
134
  provide: FR_INPUT_OTP_CONTROLLER,
134
135
  useExisting: FrInputOtp,
135
136
  },
136
- ], viewQueries: [{ propertyName: "nativeInput", first: true, predicate: ["nativeInput"], descendants: true }], exportAs: ["frInputOtp"], usesInheritance: true, ngImport: i0, template: `
137
- <input
138
- #nativeInput
139
- frInput
140
- class="frame-input-otp__native"
141
- type="text"
142
- inputmode="numeric"
143
- autocomplete="one-time-code"
144
- [attr.aria-invalid]="invalid() ? 'true' : null"
145
- [attr.aria-label]="ariaLabel()"
146
- [disabled]="disabled()"
147
- [maxLength]="maxLength()"
148
- [value]="value()"
149
- (blur)="markTouched()"
150
- (focus)="syncActiveIndex()"
151
- (input)="handleNativeInput($any($event.target).value)"
152
- (keydown)="handleKeydown($event)"
153
- (paste)="handlePaste($event)"
154
- (select)="syncActiveIndex()"
155
- (click)="syncActiveIndex()"
156
- />
157
-
158
- <ng-content />
137
+ ], viewQueries: [{ propertyName: "nativeInput", first: true, predicate: ["nativeInput"], descendants: true, isSignal: true }], exportAs: ["frInputOtp"], usesInheritance: true, ngImport: i0, template: `
138
+ <input
139
+ #nativeInput
140
+ frInput
141
+ class="frame-input-otp__native"
142
+ type="text"
143
+ inputmode="numeric"
144
+ autocomplete="one-time-code"
145
+ [attr.aria-invalid]="invalid() ? 'true' : null"
146
+ [attr.aria-label]="ariaLabel()"
147
+ [disabled]="disabled()"
148
+ [maxLength]="maxLength()"
149
+ [value]="value()"
150
+ (blur)="markTouched()"
151
+ (focus)="syncActiveIndex()"
152
+ (input)="handleNativeInput($any($event.target).value)"
153
+ (keydown)="handleKeydown($event)"
154
+ (paste)="handlePaste($event)"
155
+ (select)="syncActiveIndex()"
156
+ (click)="syncActiveIndex()"
157
+ />
158
+
159
+ <ng-content />
159
160
  `, isInline: true, dependencies: [{ kind: "directive", type: FrInput, selector: "input[frInput]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
160
161
  }
161
162
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrInputOtp, decorators: [{
@@ -180,35 +181,32 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
180
181
  '[attr.data-complete]': 'isComplete() ? "" : null',
181
182
  '(click)': 'focus(activeIndex())',
182
183
  },
183
- template: `
184
- <input
185
- #nativeInput
186
- frInput
187
- class="frame-input-otp__native"
188
- type="text"
189
- inputmode="numeric"
190
- autocomplete="one-time-code"
191
- [attr.aria-invalid]="invalid() ? 'true' : null"
192
- [attr.aria-label]="ariaLabel()"
193
- [disabled]="disabled()"
194
- [maxLength]="maxLength()"
195
- [value]="value()"
196
- (blur)="markTouched()"
197
- (focus)="syncActiveIndex()"
198
- (input)="handleNativeInput($any($event.target).value)"
199
- (keydown)="handleKeydown($event)"
200
- (paste)="handlePaste($event)"
201
- (select)="syncActiveIndex()"
202
- (click)="syncActiveIndex()"
203
- />
204
-
205
- <ng-content />
184
+ template: `
185
+ <input
186
+ #nativeInput
187
+ frInput
188
+ class="frame-input-otp__native"
189
+ type="text"
190
+ inputmode="numeric"
191
+ autocomplete="one-time-code"
192
+ [attr.aria-invalid]="invalid() ? 'true' : null"
193
+ [attr.aria-label]="ariaLabel()"
194
+ [disabled]="disabled()"
195
+ [maxLength]="maxLength()"
196
+ [value]="value()"
197
+ (blur)="markTouched()"
198
+ (focus)="syncActiveIndex()"
199
+ (input)="handleNativeInput($any($event.target).value)"
200
+ (keydown)="handleKeydown($event)"
201
+ (paste)="handlePaste($event)"
202
+ (select)="syncActiveIndex()"
203
+ (click)="syncActiveIndex()"
204
+ />
205
+
206
+ <ng-content />
206
207
  `,
207
208
  }]
208
- }], propDecorators: { nativeInput: [{
209
- type: ViewChild,
210
- args: ['nativeInput']
211
- }], maxLength: [{ type: i0.Input, args: [{ isSignal: true, alias: "maxLength", required: false }] }], pattern: [{ type: i0.Input, args: [{ isSignal: true, alias: "pattern", required: false }] }], disabledInput: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], invalidInput: [{ type: i0.Input, args: [{ isSignal: true, alias: "invalid", required: false }] }], ariaLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "ariaLabel", required: false }] }], valueChange: [{ type: i0.Output, args: ["valueChange"] }], complete: [{ type: i0.Output, args: ["complete"] }] } });
209
+ }], propDecorators: { nativeInput: [{ type: i0.ViewChild, args: ['nativeInput', { isSignal: true }] }], maxLength: [{ type: i0.Input, args: [{ isSignal: true, alias: "maxLength", required: false }] }], pattern: [{ type: i0.Input, args: [{ isSignal: true, alias: "pattern", required: false }] }], disabledInput: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], invalidInput: [{ type: i0.Input, args: [{ isSignal: true, alias: "invalid", required: false }] }], ariaLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "ariaLabel", required: false }] }], valueChange: [{ type: i0.Output, args: ["valueChange"] }], complete: [{ type: i0.Output, args: ["complete"] }] } });
212
210
  class FrInputOtpGroup {
213
211
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrInputOtpGroup, deps: [], target: i0.ɵɵFactoryTarget.Directive });
214
212
  static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: FrInputOtpGroup, isStandalone: true, selector: "[frInputOtpGroup], frame-input-otp-group", host: { classAttribute: "frame-input-otp__group" }, ngImport: i0 });
@@ -230,10 +228,10 @@ class FrInputOtpSlot {
230
228
  filled = computed(() => !!this.char(), ...(ngDevMode ? [{ debugName: "filled" }] : /* istanbul ignore next */ []));
231
229
  active = computed(() => this.root.activeIndex() === this.index(), ...(ngDevMode ? [{ debugName: "active" }] : /* istanbul ignore next */ []));
232
230
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrInputOtpSlot, deps: [], target: i0.ɵɵFactoryTarget.Component });
233
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.16", type: FrInputOtpSlot, isStandalone: true, selector: "[frInputOtpSlot], frame-input-otp-slot", inputs: { index: { classPropertyName: "index", publicName: "index", isSignal: true, isRequired: true, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "role": "presentation" }, listeners: { "click": "root.focus(index())" }, properties: { "attr.data-active": "active() ? \"\" : null", "attr.data-filled": "filled() ? \"\" : null", "attr.data-invalid": "root.invalid() ? \"\" : null", "attr.data-disabled": "root.disabled() ? \"\" : null" }, classAttribute: "frame-input-otp__slot" }, ngImport: i0, template: `
234
- <span class="frame-input-otp__slot-char" [ngClass]="{ 'frame-input-otp__slot-char--empty': !filled() }">
235
- {{ char() || placeholder() }}
236
- </span>
231
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.16", type: FrInputOtpSlot, isStandalone: true, selector: "[frInputOtpSlot], frame-input-otp-slot", inputs: { index: { classPropertyName: "index", publicName: "index", isSignal: true, isRequired: true, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "role": "presentation" }, listeners: { "click": "root.focus(index())" }, properties: { "attr.data-active": "active() ? \"\" : null", "attr.data-filled": "filled() ? \"\" : null", "attr.data-invalid": "root.invalid() ? \"\" : null", "attr.data-disabled": "root.disabled() ? \"\" : null" }, classAttribute: "frame-input-otp__slot" }, ngImport: i0, template: `
232
+ <span class="frame-input-otp__slot-char" [ngClass]="{ 'frame-input-otp__slot-char--empty': !filled() }">
233
+ {{ char() || placeholder() }}
234
+ </span>
237
235
  `, isInline: true, dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
238
236
  }
239
237
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrInputOtpSlot, decorators: [{
@@ -251,10 +249,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
251
249
  '[attr.data-disabled]': 'root.disabled() ? "" : null',
252
250
  '(click)': 'root.focus(index())',
253
251
  },
254
- template: `
255
- <span class="frame-input-otp__slot-char" [ngClass]="{ 'frame-input-otp__slot-char--empty': !filled() }">
256
- {{ char() || placeholder() }}
257
- </span>
252
+ template: `
253
+ <span class="frame-input-otp__slot-char" [ngClass]="{ 'frame-input-otp__slot-char--empty': !filled() }">
254
+ {{ char() || placeholder() }}
255
+ </span>
258
256
  `,
259
257
  }]
260
258
  }], propDecorators: { index: [{ type: i0.Input, args: [{ isSignal: true, alias: "index", required: true }] }], placeholder: [{ type: i0.Input, args: [{ isSignal: true, alias: "placeholder", required: false }] }] } });
@@ -286,9 +284,6 @@ function toMatcher(pattern) {
286
284
  const regex = new RegExp(pattern);
287
285
  return (character) => regex.test(character);
288
286
  }
289
- function clamp(value, min, max) {
290
- return Math.max(min, Math.min(max, value));
291
- }
292
287
 
293
288
  class FrInputOtpModule {
294
289
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrInputOtpModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
@@ -1 +1 @@
1
- {"version":3,"file":"frame-ui-ng-components-input-otp.mjs","sources":["../../../projects/components/input-otp/src/input-otp.ts","../../../projects/components/input-otp/input-otp.module.ts","../../../projects/components/input-otp/frame-ui-ng-components-input-otp.ts"],"sourcesContent":["import { NgClass } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n Directive,\n ElementRef,\n InjectionToken,\n ViewChild,\n booleanAttribute,\n computed,\n inject,\n input,\n numberAttribute,\n output,\n signal,\n} from '@angular/core';\n\nimport { FrControlValueAccessor, provideDsValueAccessor } from '@frame-ui-ng/components/forms';\nimport { FrInput } from '@frame-ui-ng/components/input';\n\nexport const FR_INPUT_OTP_PATTERN_DIGITS = /^[0-9]$/;\nexport const FR_INPUT_OTP_PATTERN_DIGITS_AND_CHARS = /^[a-zA-Z0-9]$/;\n\nexport type FrInputOtpPattern = RegExp | string | null;\n\ntype FrInputOtpController = {\n activeIndex: () => number;\n charAt: (index: number) => string;\n disabled: () => boolean;\n focus: (index?: number) => void;\n invalid: () => boolean;\n};\n\nconst FR_INPUT_OTP_CONTROLLER = new InjectionToken<FrInputOtpController>('FrInputOtpController');\n\n@Component({\n selector: 'frame-input-otp',\n exportAs: 'frInputOtp',\n imports: [FrInput],\n providers: [\n provideDsValueAccessor(FrInputOtp),\n {\n provide: FR_INPUT_OTP_CONTROLLER,\n useExisting: FrInputOtp,\n },\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'frame-input-otp',\n role: 'group',\n '[attr.data-disabled]': 'disabled() ? \"\" : null',\n '[attr.data-invalid]': 'invalid() ? \"\" : null',\n '[attr.data-complete]': 'isComplete() ? \"\" : null',\n '(click)': 'focus(activeIndex())',\n },\n template: `\n <input\n #nativeInput\n frInput\n class=\"frame-input-otp__native\"\n type=\"text\"\n inputmode=\"numeric\"\n autocomplete=\"one-time-code\"\n [attr.aria-invalid]=\"invalid() ? 'true' : null\"\n [attr.aria-label]=\"ariaLabel()\"\n [disabled]=\"disabled()\"\n [maxLength]=\"maxLength()\"\n [value]=\"value()\"\n (blur)=\"markTouched()\"\n (focus)=\"syncActiveIndex()\"\n (input)=\"handleNativeInput($any($event.target).value)\"\n (keydown)=\"handleKeydown($event)\"\n (paste)=\"handlePaste($event)\"\n (select)=\"syncActiveIndex()\"\n (click)=\"syncActiveIndex()\"\n />\n\n <ng-content />\n `,\n})\nexport class FrInputOtp extends FrControlValueAccessor<string> {\n @ViewChild('nativeInput') private readonly nativeInput?: ElementRef<HTMLInputElement>;\n\n readonly maxLength = input(6, { transform: numberAttribute });\n readonly pattern = input<FrInputOtpPattern>(FR_INPUT_OTP_PATTERN_DIGITS);\n readonly disabledInput = input(false, { alias: 'disabled', transform: booleanAttribute });\n readonly invalidInput = input(false, { alias: 'invalid', transform: booleanAttribute });\n readonly ariaLabel = input('One-time password');\n\n readonly valueChange = output<string>();\n readonly complete = output<string>();\n\n protected readonly value = signal('');\n readonly activeIndex = signal(0);\n readonly disabled = computed(() => this.disabledInput() || this.formDisabled());\n readonly invalid = computed(() => this.invalidInput() || this.formInvalid());\n readonly isComplete = computed(() => this.value().length >= this.maxLength());\n\n focus(index = this.activeIndex()): void {\n if (this.disabled()) {\n return;\n }\n\n const inputElement = this.nativeInput?.nativeElement;\n\n if (!inputElement) {\n return;\n }\n\n const nextIndex = clamp(index, 0, this.maxLength());\n inputElement.focus();\n inputElement.setSelectionRange(nextIndex, nextIndex);\n this.activeIndex.set(nextIndex);\n }\n\n charAt(index: number): string {\n return this.value().at(index) ?? '';\n }\n\n handleNativeInput(rawValue: string): void {\n this.commitValue(this.sanitize(rawValue));\n this.syncActiveIndex();\n }\n\n handleKeydown(event: KeyboardEvent): void {\n if (this.disabled()) {\n return;\n }\n\n if (event.key === 'ArrowLeft') {\n event.preventDefault();\n this.focus(this.activeIndex() - 1);\n return;\n }\n\n if (event.key === 'ArrowRight') {\n event.preventDefault();\n this.focus(this.activeIndex() + 1);\n return;\n }\n\n if (event.key === 'Backspace') {\n event.preventDefault();\n this.removeAt(this.activeIndex());\n return;\n }\n\n if (event.key.length === 1 && !event.ctrlKey && !event.metaKey && !event.altKey) {\n event.preventDefault();\n this.insertAt(event.key, this.activeIndex());\n }\n }\n\n handlePaste(event: ClipboardEvent): void {\n const text = event.clipboardData?.getData('text') ?? '';\n\n if (!text) {\n return;\n }\n\n event.preventDefault();\n const next = this.replaceFrom(this.activeIndex(), this.sanitize(text));\n this.commitValue(next);\n this.focus(Math.min(next.length, this.maxLength()));\n }\n\n syncActiveIndex(): void {\n const inputElement = this.nativeInput?.nativeElement;\n const index = inputElement?.selectionStart ?? this.value().length;\n this.activeIndex.set(clamp(index, 0, this.maxLength()));\n }\n\n markTouched(): void {\n this.markAsTouched();\n }\n\n protected setViewValue(value: string | null): void {\n this.value.set(this.sanitize(value ?? ''));\n this.activeIndex.set(Math.min(this.value().length, this.maxLength()));\n }\n\n private insertAt(character: string, index: number): void {\n const sanitized = this.sanitize(character);\n\n if (!sanitized) {\n return;\n }\n\n const next = this.replaceFrom(index, sanitized.at(0) ?? '');\n this.commitValue(next);\n this.focus(Math.min(index + 1, this.maxLength()));\n }\n\n private removeAt(index: number): void {\n const value = this.value();\n const targetIndex = value.at(index) ? index : index - 1;\n\n if (targetIndex < 0) {\n return;\n }\n\n const next = `${value.slice(0, targetIndex)}${value.slice(targetIndex + 1)}`;\n this.commitValue(next);\n this.focus(targetIndex);\n }\n\n private replaceFrom(index: number, text: string): string {\n const value = this.value();\n const start = clamp(index, 0, this.maxLength());\n const next = `${value.slice(0, start)}${text}${value.slice(start + text.length)}`;\n\n return this.sanitize(next);\n }\n\n private commitValue(value: string): void {\n const next = this.sanitize(value);\n this.value.set(next);\n this.notifyValueChange(next);\n this.valueChange.emit(next);\n\n if (next.length >= this.maxLength()) {\n this.complete.emit(next);\n }\n }\n\n private sanitize(value: string): string {\n const matcher = toMatcher(this.pattern());\n const characters = Array.from(value).filter((character) => matcher(character));\n\n return characters.slice(0, this.maxLength()).join('');\n }\n}\n\n@Directive({\n selector: '[frInputOtpGroup], frame-input-otp-group',\n host: {\n class: 'frame-input-otp__group',\n },\n})\nexport class FrInputOtpGroup {}\n\n@Component({\n selector: '[frInputOtpSlot], frame-input-otp-slot',\n imports: [NgClass],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'frame-input-otp__slot',\n role: 'presentation',\n '[attr.data-active]': 'active() ? \"\" : null',\n '[attr.data-filled]': 'filled() ? \"\" : null',\n '[attr.data-invalid]': 'root.invalid() ? \"\" : null',\n '[attr.data-disabled]': 'root.disabled() ? \"\" : null',\n '(click)': 'root.focus(index())',\n },\n template: `\n <span class=\"frame-input-otp__slot-char\" [ngClass]=\"{ 'frame-input-otp__slot-char--empty': !filled() }\">\n {{ char() || placeholder() }}\n </span>\n `,\n})\nexport class FrInputOtpSlot {\n protected readonly root = inject(FR_INPUT_OTP_CONTROLLER);\n\n readonly index = input.required<number>();\n readonly placeholder = input('');\n\n readonly char = computed(() => this.root.charAt(this.index()));\n readonly filled = computed(() => !!this.char());\n readonly active = computed(() => this.root.activeIndex() === this.index());\n}\n\n@Directive({\n selector: '[frInputOtpSeparator], frame-input-otp-separator',\n host: {\n class: 'frame-input-otp__separator',\n role: 'separator',\n 'aria-hidden': 'true',\n },\n})\nexport class FrInputOtpSeparator {}\n\nfunction toMatcher(pattern: FrInputOtpPattern): (character: string) => boolean {\n if (!pattern) {\n return () => true;\n }\n\n if (pattern instanceof RegExp) {\n return (character) => {\n pattern.lastIndex = 0;\n return pattern.test(character);\n };\n }\n\n const regex = new RegExp(pattern);\n return (character) => regex.test(character);\n}\n\nfunction clamp(value: number, min: number, max: number): number {\n return Math.max(min, Math.min(max, value));\n}\n\r\n","import { NgModule } from '@angular/core';\nimport {\n FrInputOtp,\n FrInputOtpGroup,\n FrInputOtpSeparator,\n FrInputOtpSlot,\n} from './src/input-otp';\n\n@NgModule({\n imports: [\n FrInputOtp,\n FrInputOtpGroup,\n FrInputOtpSeparator,\n FrInputOtpSlot,\n ],\n exports: [\n FrInputOtp,\n FrInputOtpGroup,\n FrInputOtpSeparator,\n FrInputOtpSlot,\n ],\n})\nexport class FrInputOtpModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"frame-ui-ng-components-input-otp.mjs","sources":["../../../projects/components/input-otp/src/input-otp.ts","../../../projects/components/input-otp/input-otp.module.ts","../../../projects/components/input-otp/frame-ui-ng-components-input-otp.ts"],"sourcesContent":["import { NgClass } from '@angular/common';\r\nimport {\r\n ChangeDetectionStrategy,\r\n Component,\r\n Directive,\r\n ElementRef,\r\n InjectionToken,\r\n booleanAttribute,\r\n computed,\r\n inject,\r\n input,\r\n numberAttribute,\r\n output,\r\n signal,\r\n viewChild,\r\n} from '@angular/core';\r\n\r\nimport { FrControlValueAccessor, provideDsValueAccessor } from '@frame-ui-ng/components/forms';\r\nimport { FrInput } from '@frame-ui-ng/components/input';\r\nimport { clampNumber } from '@frame-ui-ng/components/utils';\r\n\r\nexport const FR_INPUT_OTP_PATTERN_DIGITS = /^[0-9]$/;\r\nexport const FR_INPUT_OTP_PATTERN_DIGITS_AND_CHARS = /^[a-zA-Z0-9]$/;\r\n\r\nexport type FrInputOtpPattern = RegExp | string | null;\r\n\r\ntype FrInputOtpController = {\r\n activeIndex: () => number;\r\n charAt: (index: number) => string;\r\n disabled: () => boolean;\r\n focus: (index?: number) => void;\r\n invalid: () => boolean;\r\n};\r\n\r\nconst FR_INPUT_OTP_CONTROLLER = new InjectionToken<FrInputOtpController>('FrInputOtpController');\r\n\r\n@Component({\r\n selector: 'frame-input-otp',\r\n exportAs: 'frInputOtp',\r\n imports: [FrInput],\r\n providers: [\r\n provideDsValueAccessor(FrInputOtp),\r\n {\r\n provide: FR_INPUT_OTP_CONTROLLER,\r\n useExisting: FrInputOtp,\r\n },\r\n ],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: {\r\n class: 'frame-input-otp',\r\n role: 'group',\r\n '[attr.data-disabled]': 'disabled() ? \"\" : null',\r\n '[attr.data-invalid]': 'invalid() ? \"\" : null',\r\n '[attr.data-complete]': 'isComplete() ? \"\" : null',\r\n '(click)': 'focus(activeIndex())',\r\n },\r\n template: `\r\n <input\r\n #nativeInput\r\n frInput\r\n class=\"frame-input-otp__native\"\r\n type=\"text\"\r\n inputmode=\"numeric\"\r\n autocomplete=\"one-time-code\"\r\n [attr.aria-invalid]=\"invalid() ? 'true' : null\"\r\n [attr.aria-label]=\"ariaLabel()\"\r\n [disabled]=\"disabled()\"\r\n [maxLength]=\"maxLength()\"\r\n [value]=\"value()\"\r\n (blur)=\"markTouched()\"\r\n (focus)=\"syncActiveIndex()\"\r\n (input)=\"handleNativeInput($any($event.target).value)\"\r\n (keydown)=\"handleKeydown($event)\"\r\n (paste)=\"handlePaste($event)\"\r\n (select)=\"syncActiveIndex()\"\r\n (click)=\"syncActiveIndex()\"\r\n />\r\n\r\n <ng-content />\r\n `,\r\n})\r\nexport class FrInputOtp extends FrControlValueAccessor<string> {\r\n private readonly nativeInput = viewChild<ElementRef<HTMLInputElement>>('nativeInput');\r\n\r\n readonly maxLength = input(6, { transform: numberAttribute });\r\n readonly pattern = input<FrInputOtpPattern>(FR_INPUT_OTP_PATTERN_DIGITS);\r\n readonly disabledInput = input(false, { alias: 'disabled', transform: booleanAttribute });\r\n readonly invalidInput = input(false, { alias: 'invalid', transform: booleanAttribute });\r\n readonly ariaLabel = input('One-time password');\r\n\r\n readonly valueChange = output<string>();\r\n readonly complete = output<string>();\r\n\r\n protected readonly value = signal('');\r\n readonly activeIndex = signal(0);\r\n readonly disabled = computed(() => this.disabledInput() || this.formDisabled());\r\n readonly invalid = computed(() => this.invalidInput() || this.formInvalid());\r\n readonly isComplete = computed(() => this.value().length >= this.maxLength());\r\n\r\n focus(index = this.activeIndex()): void {\r\n if (this.disabled()) {\r\n return;\r\n }\r\n\r\n const inputElement = this.nativeInput()?.nativeElement;\r\n\r\n if (!inputElement) {\r\n return;\r\n }\r\n\r\n const nextIndex = clampNumber(index, 0, this.maxLength());\r\n inputElement.focus();\r\n inputElement.setSelectionRange(nextIndex, nextIndex);\r\n this.activeIndex.set(nextIndex);\r\n }\r\n\r\n charAt(index: number): string {\r\n return this.value().at(index) ?? '';\r\n }\r\n\r\n handleNativeInput(rawValue: string): void {\r\n this.commitValue(this.sanitize(rawValue));\r\n this.syncActiveIndex();\r\n }\r\n\r\n handleKeydown(event: KeyboardEvent): void {\r\n if (this.disabled()) {\r\n return;\r\n }\r\n\r\n if (event.key === 'ArrowLeft') {\r\n event.preventDefault();\r\n this.focus(this.activeIndex() - 1);\r\n return;\r\n }\r\n\r\n if (event.key === 'ArrowRight') {\r\n event.preventDefault();\r\n this.focus(this.activeIndex() + 1);\r\n return;\r\n }\r\n\r\n if (event.key === 'Backspace') {\r\n event.preventDefault();\r\n this.removeAt(this.activeIndex());\r\n return;\r\n }\r\n\r\n if (event.key.length === 1 && !event.ctrlKey && !event.metaKey && !event.altKey) {\r\n event.preventDefault();\r\n this.insertAt(event.key, this.activeIndex());\r\n }\r\n }\r\n\r\n handlePaste(event: ClipboardEvent): void {\r\n const text = event.clipboardData?.getData('text') ?? '';\r\n\r\n if (!text) {\r\n return;\r\n }\r\n\r\n event.preventDefault();\r\n const next = this.replaceFrom(this.activeIndex(), this.sanitize(text));\r\n this.commitValue(next);\r\n this.focus(Math.min(next.length, this.maxLength()));\r\n }\r\n\r\n syncActiveIndex(): void {\r\n const inputElement = this.nativeInput()?.nativeElement;\r\n const index = inputElement?.selectionStart ?? this.value().length;\r\n this.activeIndex.set(clampNumber(index, 0, this.maxLength()));\r\n }\r\n\r\n markTouched(): void {\r\n this.markAsTouched();\r\n }\r\n\r\n protected setViewValue(value: string | null): void {\r\n this.value.set(this.sanitize(value ?? ''));\r\n this.activeIndex.set(Math.min(this.value().length, this.maxLength()));\r\n }\r\n\r\n private insertAt(character: string, index: number): void {\r\n const sanitized = this.sanitize(character);\r\n\r\n if (!sanitized) {\r\n return;\r\n }\r\n\r\n const next = this.replaceFrom(index, sanitized.at(0) ?? '');\r\n this.commitValue(next);\r\n this.focus(Math.min(index + 1, this.maxLength()));\r\n }\r\n\r\n private removeAt(index: number): void {\r\n const value = this.value();\r\n const targetIndex = value.at(index) ? index : index - 1;\r\n\r\n if (targetIndex < 0) {\r\n return;\r\n }\r\n\r\n const next = `${value.slice(0, targetIndex)}${value.slice(targetIndex + 1)}`;\r\n this.commitValue(next);\r\n this.focus(targetIndex);\r\n }\r\n\r\n private replaceFrom(index: number, text: string): string {\r\n const value = this.value();\r\n const start = clampNumber(index, 0, this.maxLength());\r\n const next = `${value.slice(0, start)}${text}${value.slice(start + text.length)}`;\r\n\r\n return this.sanitize(next);\r\n }\r\n\r\n private commitValue(value: string): void {\r\n const next = this.sanitize(value);\r\n this.value.set(next);\r\n this.notifyValueChange(next);\r\n this.valueChange.emit(next);\r\n\r\n if (next.length >= this.maxLength()) {\r\n this.complete.emit(next);\r\n }\r\n }\r\n\r\n private sanitize(value: string): string {\r\n const matcher = toMatcher(this.pattern());\r\n const characters = Array.from(value).filter((character) => matcher(character));\r\n\r\n return characters.slice(0, this.maxLength()).join('');\r\n }\r\n}\r\n\r\n@Directive({\r\n selector: '[frInputOtpGroup], frame-input-otp-group',\r\n host: {\r\n class: 'frame-input-otp__group',\r\n },\r\n})\r\nexport class FrInputOtpGroup {}\r\n\r\n@Component({\r\n selector: '[frInputOtpSlot], frame-input-otp-slot',\r\n imports: [NgClass],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: {\r\n class: 'frame-input-otp__slot',\r\n role: 'presentation',\r\n '[attr.data-active]': 'active() ? \"\" : null',\r\n '[attr.data-filled]': 'filled() ? \"\" : null',\r\n '[attr.data-invalid]': 'root.invalid() ? \"\" : null',\r\n '[attr.data-disabled]': 'root.disabled() ? \"\" : null',\r\n '(click)': 'root.focus(index())',\r\n },\r\n template: `\r\n <span class=\"frame-input-otp__slot-char\" [ngClass]=\"{ 'frame-input-otp__slot-char--empty': !filled() }\">\r\n {{ char() || placeholder() }}\r\n </span>\r\n `,\r\n})\r\nexport class FrInputOtpSlot {\r\n protected readonly root = inject(FR_INPUT_OTP_CONTROLLER);\r\n\r\n readonly index = input.required<number>();\r\n readonly placeholder = input('');\r\n\r\n readonly char = computed(() => this.root.charAt(this.index()));\r\n readonly filled = computed(() => !!this.char());\r\n readonly active = computed(() => this.root.activeIndex() === this.index());\r\n}\r\n\r\n@Directive({\r\n selector: '[frInputOtpSeparator], frame-input-otp-separator',\r\n host: {\r\n class: 'frame-input-otp__separator',\r\n role: 'separator',\r\n 'aria-hidden': 'true',\r\n },\r\n})\r\nexport class FrInputOtpSeparator {}\r\n\r\nfunction toMatcher(pattern: FrInputOtpPattern): (character: string) => boolean {\r\n if (!pattern) {\r\n return () => true;\r\n }\r\n\r\n if (pattern instanceof RegExp) {\r\n return (character) => {\r\n pattern.lastIndex = 0;\r\n return pattern.test(character);\r\n };\r\n }\r\n\r\n const regex = new RegExp(pattern);\r\n return (character) => regex.test(character);\r\n}\r\n\r\n","import { NgModule } from '@angular/core';\nimport {\n FrInputOtp,\n FrInputOtpGroup,\n FrInputOtpSeparator,\n FrInputOtpSlot,\n} from './src/input-otp';\n\n@NgModule({\n imports: [\n FrInputOtp,\n FrInputOtpGroup,\n FrInputOtpSeparator,\n FrInputOtpSlot,\n ],\n exports: [\n FrInputOtp,\n FrInputOtpGroup,\n FrInputOtpSeparator,\n FrInputOtpSlot,\n ],\n})\nexport class FrInputOtpModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}