@ngstarter-ui/components 21.0.30 → 21.0.32
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/ai/component-registry.json +58 -14
- package/fesm2022/{ngstarter-ui-components-content-editor-code-block.component-CKrOhA7h.mjs → ngstarter-ui-components-content-editor-code-block.component-BZniTqu-.mjs} +2 -2
- package/fesm2022/{ngstarter-ui-components-content-editor-code-block.component-CKrOhA7h.mjs.map → ngstarter-ui-components-content-editor-code-block.component-BZniTqu-.mjs.map} +1 -1
- package/fesm2022/{ngstarter-ui-components-content-editor-embed-block-zSApBzF3.mjs → ngstarter-ui-components-content-editor-embed-block-QzDMzd3u.mjs} +2 -2
- package/fesm2022/{ngstarter-ui-components-content-editor-embed-block-zSApBzF3.mjs.map → ngstarter-ui-components-content-editor-embed-block-QzDMzd3u.mjs.map} +1 -1
- package/fesm2022/{ngstarter-ui-components-content-editor-heading-block.component-Dv8d0nCy.mjs → ngstarter-ui-components-content-editor-heading-block.component-CnYRnDBY.mjs} +2 -2
- package/fesm2022/{ngstarter-ui-components-content-editor-heading-block.component-Dv8d0nCy.mjs.map → ngstarter-ui-components-content-editor-heading-block.component-CnYRnDBY.mjs.map} +1 -1
- package/fesm2022/{ngstarter-ui-components-content-editor-image-block.component-g-H7a5Z_.mjs → ngstarter-ui-components-content-editor-image-block.component-IP_eRCQ2.mjs} +2 -2
- package/fesm2022/{ngstarter-ui-components-content-editor-image-block.component-g-H7a5Z_.mjs.map → ngstarter-ui-components-content-editor-image-block.component-IP_eRCQ2.mjs.map} +1 -1
- package/fesm2022/{ngstarter-ui-components-content-editor-list-block.component-PgqisgxY.mjs → ngstarter-ui-components-content-editor-list-block.component-amyfzXOW.mjs} +2 -2
- package/fesm2022/{ngstarter-ui-components-content-editor-list-block.component-PgqisgxY.mjs.map → ngstarter-ui-components-content-editor-list-block.component-amyfzXOW.mjs.map} +1 -1
- package/fesm2022/{ngstarter-ui-components-content-editor-ngstarter-ui-components-content-editor-BuMm25ea.mjs → ngstarter-ui-components-content-editor-ngstarter-ui-components-content-editor-DA-VnRa_.mjs} +453 -36
- package/fesm2022/ngstarter-ui-components-content-editor-ngstarter-ui-components-content-editor-DA-VnRa_.mjs.map +1 -0
- package/fesm2022/{ngstarter-ui-components-content-editor-paragraph-block.component-DS_6CzuA.mjs → ngstarter-ui-components-content-editor-paragraph-block.component-DtophI4_.mjs} +2 -2
- package/fesm2022/{ngstarter-ui-components-content-editor-paragraph-block.component-DS_6CzuA.mjs.map → ngstarter-ui-components-content-editor-paragraph-block.component-DtophI4_.mjs.map} +1 -1
- package/fesm2022/{ngstarter-ui-components-content-editor-quote-block.component-Df92Nqvp.mjs → ngstarter-ui-components-content-editor-quote-block.component-B20eHQdw.mjs} +2 -2
- package/fesm2022/{ngstarter-ui-components-content-editor-quote-block.component-Df92Nqvp.mjs.map → ngstarter-ui-components-content-editor-quote-block.component-B20eHQdw.mjs.map} +1 -1
- package/fesm2022/{ngstarter-ui-components-content-editor-table-block.component-D4rdPkGz.mjs → ngstarter-ui-components-content-editor-table-block.component-hJ4OxKRX.mjs} +4 -4
- package/fesm2022/{ngstarter-ui-components-content-editor-table-block.component-D4rdPkGz.mjs.map → ngstarter-ui-components-content-editor-table-block.component-hJ4OxKRX.mjs.map} +1 -1
- package/fesm2022/{ngstarter-ui-components-content-editor-video-block.component-DqS9Lhp_.mjs → ngstarter-ui-components-content-editor-video-block.component-Cs7L1wwX.mjs} +2 -2
- package/fesm2022/{ngstarter-ui-components-content-editor-video-block.component-DqS9Lhp_.mjs.map → ngstarter-ui-components-content-editor-video-block.component-Cs7L1wwX.mjs.map} +1 -1
- package/fesm2022/ngstarter-ui-components-content-editor.mjs +1 -1
- package/fesm2022/ngstarter-ui-components-country-select.mjs +65 -4
- package/fesm2022/ngstarter-ui-components-country-select.mjs.map +1 -1
- package/fesm2022/ngstarter-ui-components-currency-select.mjs +65 -4
- package/fesm2022/ngstarter-ui-components-currency-select.mjs.map +1 -1
- package/fesm2022/ngstarter-ui-components-menu.mjs +10 -6
- package/fesm2022/ngstarter-ui-components-menu.mjs.map +1 -1
- package/fesm2022/ngstarter-ui-components-phone-input.mjs +113 -29
- package/fesm2022/ngstarter-ui-components-phone-input.mjs.map +1 -1
- package/fesm2022/ngstarter-ui-components-toolbar.mjs +2 -2
- package/fesm2022/ngstarter-ui-components-toolbar.mjs.map +1 -1
- package/package.json +1 -1
- package/styles/_global.scss +11 -0
- package/types/ngstarter-ui-components-content-editor.d.ts +226 -7
- package/types/ngstarter-ui-components-country-select.d.ts +12 -0
- package/types/ngstarter-ui-components-currency-select.d.ts +12 -0
- package/types/ngstarter-ui-components-menu.d.ts +3 -3
- package/types/ngstarter-ui-components-phone-input.d.ts +19 -2
- package/fesm2022/ngstarter-ui-components-content-editor-ngstarter-ui-components-content-editor-BuMm25ea.mjs.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ngstarter-ui-components-menu.mjs","sources":["../../../projects/components/menu/src/menu-tokens.ts","../../../projects/components/menu/src/menu-item/menu-item.ts","../../../projects/components/menu/src/menu-item/menu-item.html","../../../projects/components/menu/src/menu-content.ts","../../../projects/components/menu/src/menu/menu.ts","../../../projects/components/menu/src/menu/menu.html","../../../projects/components/menu/src/menu-divider/menu-divider.ts","../../../projects/components/menu/src/menu-divider/menu-divider.html","../../../projects/components/menu/src/menu-heading/menu-heading.ts","../../../projects/components/menu/src/menu-heading/menu-heading.html","../../../projects/components/menu/src/menu-trigger.ts","../../../projects/components/menu/src/context-menu-trigger.ts","../../../projects/components/menu/src/menu-header/menu-header.ts","../../../projects/components/menu/src/menu-header/menu-header.html","../../../projects/components/menu/src/menu-footer/menu-footer.ts","../../../projects/components/menu/src/menu-footer/menu-footer.html","../../../projects/components/menu/src/option-parent.ts","../../../projects/components/menu/src/menu-option-group.directive.ts","../../../projects/components/menu/ngstarter-ui-components-menu.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\n\nexport const MENU_ITEM = new InjectionToken<any>('MENU_ITEM');\nexport const MENU_TRIGGER = new InjectionToken<any>('MENU_TRIGGER');\n","import {\n Component,\n ChangeDetectionStrategy,\n input,\n booleanAttribute,\n inject,\n ElementRef,\n output,\n signal,\n forwardRef,\n Injector,\n OnInit\n} from '@angular/core';\nimport { MENU_ITEM, MENU_TRIGGER } from '../menu-tokens';\nimport type { MenuTrigger } from '../menu-trigger';\nimport { Menu } from '../menu/menu';\n\n@Component({\n selector: 'ngs-menu-item, [ngs-menu-item]',\n exportAs: 'ngsMenuItem',\n standalone: true,\n imports: [],\n templateUrl: './menu-item.html',\n styleUrl: './menu-item.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: MENU_ITEM,\n useExisting: forwardRef(() => MenuItem)\n }\n ],\n host: {\n '[attr.role]': 'role()',\n '[class.ngs-menu-item]': 'true',\n '[class.ngs-menu-item-highlighted]': '_isHighlighted() || selected()',\n '[attr.disabled]': 'disabled() || null',\n '[attr.aria-disabled]': 'disabled()',\n '[tabindex]': 'disabled() ? -1 : 0',\n '(click)': '_handleClick($event)',\n '(mouseenter)': '_handleMouseEnter()',\n }\n})\nexport class MenuItem implements OnInit {\n private _injector = inject(Injector);\n protected _menuTrigger: MenuTrigger | null = null;\n readonly disabled = input(false, { transform: booleanAttribute });\n readonly role = input<'menuitem' | 'menuitem-radio' | 'menuitem-checkbox'>('menuitem');\n\n selected = input(false, {\n transform: booleanAttribute\n });\n\n readonly _triggered = output<void>();\n\n private _elementRef = inject(ElementRef<HTMLElement>);\n private _menu = inject(Menu, { optional: true });\n\n get label(): string {\n return this._elementRef.nativeElement.textContent?.trim() || '';\n }\n\n focus(): void {\n this._elementRef.nativeElement.focus();\n }\n\n ngOnInit() {\n this._menuTrigger = this._injector.get(MENU_TRIGGER, null);\n }\n\n _handleClick(event: MouseEvent): void {\n if (this.disabled()) {\n event.preventDefault();\n event.stopPropagation();\n return;\n }\n\n const menuTrigger = this._menuTrigger;\n const hasPopup = this._elementRef.nativeElement.getAttribute('aria-haspopup');\n if (menuTrigger || hasPopup === 'menu') {\n return;\n }\n\n this._triggered.emit();\n }\n\n _handleMouseEnter(): void {\n const menuTrigger = this._menuTrigger;\n if (this._menu && !menuTrigger) {\n this._menu._triggerOpened(null);\n }\n }\n\n protected readonly _isHighlighted = signal(false);\n}\n","<div class=\"icon\">\n <ng-content select=\"ngs-icon\"/>\n</div>\n\n<div class=\"ngs-menu-item-content\">\n <ng-content/>\n</div>\n\n@if (_menuTrigger) {\n <svg class=\"ngs-menu-item-submenu-icon\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\">\n <polyline points=\"9 18 15 12 9 6\"></polyline>\n </svg>\n}\n","import { Directive, inject, TemplateRef } from '@angular/core';\n\n@Directive({\n selector: '[ngsMenuContent]',\n standalone: true\n})\nexport class MenuContent {\n readonly templateRef = inject(TemplateRef);\n}\n","import {\n Component,\n ChangeDetectionStrategy,\n viewChild,\n TemplateRef,\n contentChildren,\n input,\n signal,\n inject,\n OnDestroy,\n output,\n effect,\n contentChild\n} from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { outputToObservable } from '@angular/core/rxjs-interop';\nimport { MenuItem } from '../menu-item/menu-item';\nimport { MenuContent } from '../menu-content';\nimport { MenuCloseReason } from '../menu-types';\nimport { Subscription, merge, Subject, Observable } from 'rxjs';\nimport { MENU_TRIGGER } from '../menu-tokens';\nimport type { MenuTrigger } from '../menu-trigger';\n\n@Component({\n selector: 'ngs-menu',\n exportAs: 'ngsMenu',\n standalone: true,\n imports: [\n NgTemplateOutlet\n ],\n templateUrl: './menu.html',\n styleUrl: './menu.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[attr.role]': 'role()',\n '[class.ngs-menu]': 'true',\n }\n})\nexport class Menu implements OnDestroy {\n readonly role = input<'menu' | 'menubar'>('menu');\n readonly classList = input<string>('');\n readonly xPosition = input<'before' | 'after'>('after');\n readonly yPosition = input<'above' | 'below'>('below');\n\n protected readonly _panelClasses = signal<string[]>([]);\n readonly closed = output<MenuCloseReason>();\n readonly _childMenuClosed = new Subject<void>();\n\n readonly templateRef = viewChild.required(TemplateRef);\n readonly content = contentChild(MenuContent);\n readonly items = contentChildren(MenuItem, { descendants: true });\n\n protected readonly _isNested = signal(false);\n protected readonly _context = signal<any>(undefined);\n private _parentMenu = inject(Menu, { optional: true, skipSelf: true });\n private _parentMenuTrigger = inject<MenuTrigger>(MENU_TRIGGER, { optional: true });\n private _itemSubscription = Subscription.EMPTY;\n private _openedTrigger: any = null;\n\n constructor() {\n if (this._parentMenu || this._parentMenuTrigger) {\n this._isNested.set(true);\n }\n\n effect(() => {\n const items = this.items();\n this._itemSubscription.unsubscribe();\n\n if (items.length > 0) {\n this._itemSubscription = merge(\n ...items.map(item => outputToObservable(item._triggered) as Observable<any>)\n )\n .subscribe(() => {\n this.close('click');\n });\n }\n });\n }\n\n ngOnDestroy() {\n this._itemSubscription.unsubscribe();\n }\n\n close(reason: MenuCloseReason): void {\n if (this._openedTrigger) {\n this._openedTrigger.closeMenu(reason);\n }\n this.closed.emit(reason);\n }\n\n _setPanelClasses(classes: string[]): void {\n this._panelClasses.set(classes);\n }\n\n _setContext(context: any): void {\n this._context.set(context);\n }\n\n _triggerOpened(trigger: any): void {\n if (this._openedTrigger && this._openedTrigger !== trigger) {\n this._openedTrigger.closeMenu('mouse', true);\n }\n this._openedTrigger = trigger;\n }\n\n _triggerClosed(trigger: any): void {\n if (this._openedTrigger === trigger) {\n this._openedTrigger = null;\n this._childMenuClosed.next();\n }\n }\n\n hasOpenChild(): boolean {\n return !!this._openedTrigger && this._openedTrigger.menuOpen();\n }\n}\n","<ng-template>\n <div\n class=\"ngs-menu-panel\"\n [class]=\"classList()\"\n [class.ngs-menu-before]=\"_panelClasses().includes('ngs-menu-before')\"\n [class.ngs-menu-after]=\"_panelClasses().includes('ngs-menu-after')\"\n [class.ngs-menu-above]=\"_panelClasses().includes('ngs-menu-above')\"\n [class.ngs-menu-below]=\"_panelClasses().includes('ngs-menu-below')\"\n tabindex=\"-1\"\n role=\"menu\"\n >\n <ng-content select=\"[ngs-menu-header]\"/>\n <div class=\"ngs-menu-content\">\n @if (content()) {\n <ng-container [ngTemplateOutlet]=\"content()!.templateRef\" [ngTemplateOutletContext]=\"_context()\" />\n } @else {\n <ng-content />\n }\n </div>\n <ng-content select=\"[ngs-menu-footer]\"/>\n </div>\n</ng-template>\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'ngs-menu-divider',\n imports: [],\n templateUrl: './menu-divider.html',\n styleUrl: './menu-divider.scss',\n})\nexport class MenuDivider {\n\n}\n","","import { Component } from '@angular/core';\n\n@Component({\n selector: 'ngs-menu-heading',\n imports: [],\n templateUrl: './menu-heading.html',\n styleUrl: './menu-heading.scss',\n})\nexport class MenuHeading {\n\n}\n","<ng-content/>\n","import {\n Directive,\n inject,\n ElementRef,\n ViewContainerRef,\n OnDestroy,\n booleanAttribute,\n input,\n signal,\n output,\n forwardRef,\n Injector, DestroyRef\n} from '@angular/core';\nimport { outputToObservable, takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { Overlay, OverlayRef, OverlayConfig, ConnectedPosition, FlexibleConnectedPositionStrategy } from '@angular/cdk/overlay';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport { Menu } from './menu/menu';\nimport { MenuCloseReason } from './menu-types';\nimport { Subscription, merge, EMPTY, fromEvent } from 'rxjs';\nimport { filter } from 'rxjs/operators';\nimport { MENU_TRIGGER, MENU_ITEM } from './menu-tokens';\n\n@Directive({\n selector: '[ngsMenuTriggerFor]',\n exportAs: 'ngsMenuTrigger',\n standalone: true,\n host: {\n 'aria-haspopup': 'menu',\n '[attr.aria-expanded]': 'menuOpen()',\n '[attr.aria-controls]': 'menuOpen() ? menu()?.templateRef() : null',\n '[class.ngs-menu-item-highlighted]': 'menuOpen()',\n '(click)': '_handleClick($event)',\n '(mouseenter)': '_handleMouseEnter()',\n '(mouseleave)': '_handleMouseLeave()',\n },\n providers: [\n {\n provide: MENU_TRIGGER,\n useExisting: forwardRef(() => MenuTrigger)\n }\n ]\n})\nexport class MenuTrigger implements OnDestroy {\n private _overlay = inject(Overlay);\n private _elementRef = inject(ElementRef<HTMLElement>);\n private _viewContainerRef = inject(ViewContainerRef);\n private destroyRef = inject(DestroyRef);\n private _injector = inject(Injector);\n private _parentMenu = inject(Menu, { optional: true, skipSelf: true });\n private _menu = inject(Menu, { optional: true });\n\n readonly menu = input<Menu | null>(null, { alias: 'ngsMenuTriggerFor' });\n readonly menuData = input<any>(undefined, { alias: 'ngsMenuTriggerData' });\n readonly menuDisabled = input(false, { transform: booleanAttribute, alias: 'ngsMenuDisabled' });\n readonly xPosition = input<'before' | 'after'>('after');\n readonly yPosition = input<'above' | 'below'>('below');\n\n readonly menuOpened = output<void>();\n readonly menuClosed = output<MenuCloseReason>();\n readonly restoreFocus = input(true, { transform: booleanAttribute, alias: 'ngsMenuTriggerRestoreFocus' });\n\n private _overlayRef: OverlayRef | null = null;\n private _portal: TemplatePortal | null = null;\n private _closingSubscription = Subscription.EMPTY;\n private _hoverSubscription = Subscription.EMPTY;\n private _childMenuClosedSubscription = Subscription.EMPTY;\n private _closeTimeoutId: any;\n private _previouslyFocusedElement: HTMLElement | null = null;\n\n readonly menuOpen = signal(false);\n\n ngOnDestroy() {\n if (this._overlayRef) {\n this._overlayRef.dispose();\n this._overlayRef = null;\n }\n this._closingSubscription.unsubscribe();\n this._hoverSubscription.unsubscribe();\n this._childMenuClosedSubscription.unsubscribe();\n this._clearCloseTimeout();\n }\n\n _handleMouseLeave() {\n }\n\n _clearCloseTimeout() {\n if (this._closeTimeoutId) {\n clearTimeout(this._closeTimeoutId);\n this._closeTimeoutId = null;\n }\n }\n\n _handleClick(event: MouseEvent): void {\n const menuItem = this._injector.get(MENU_ITEM, null);\n if (menuItem) {\n event.stopPropagation();\n event.stopImmediatePropagation();\n }\n this.toggleMenu();\n }\n\n toggleMenu(): void {\n if (this.menuDisabled()) {\n return;\n }\n\n if (this._parentMenu) {\n this.openMenu();\n } else {\n this.menuOpen() ? this.closeMenu('click') : this.openMenu();\n }\n }\n\n openMenu(): void {\n const menu = this.menu();\n if (this.menuOpen() || !menu) {\n return;\n }\n\n this._previouslyFocusedElement = document.activeElement as HTMLElement;\n const overlayRef = this._createOverlay();\n const strategy = overlayRef.getConfig().positionStrategy as FlexibleConnectedPositionStrategy;\n\n strategy.positionChanges.subscribe(change => {\n menu._setPanelClasses(this._getPanelClasses(change.connectionPair));\n });\n\n menu._setContext(this.menuData());\n this._portal = new TemplatePortal(menu.templateRef(), this._viewContainerRef, this._viewContainerRef.injector);\n overlayRef.attach(this._portal);\n\n if (overlayRef.hasAttached()) {\n this._setIsMenuOpen(true);\n\n const overlayElement = overlayRef.overlayElement;\n this._hoverSubscription.unsubscribe();\n this._hoverSubscription = merge(\n fromEvent<MouseEvent>(overlayElement, 'mouseenter'),\n fromEvent<MouseEvent>(overlayElement, 'mouseleave')\n ).subscribe(event => {\n if (event.type === 'mouseenter') {\n this._clearCloseTimeout();\n } else {\n this._handleMouseLeave();\n }\n });\n }\n\n if (this._menu) {\n this._menu._triggerOpened(this);\n\n this._childMenuClosedSubscription.unsubscribe();\n this._childMenuClosedSubscription = this._menu._childMenuClosed.subscribe(() => {\n this._handleMouseLeave();\n });\n }\n\n this._closingSubscription = this._menuClosingActions().subscribe(reason => this.closeMenu(reason));\n this.menuOpened.emit();\n }\n\n closeMenu(reason: MenuCloseReason, force = false): void {\n if (!this._overlayRef || !this.menuOpen()) {\n return;\n }\n\n if (!force && reason === 'mouse' && this.menu()?.hasOpenChild()) {\n return;\n }\n\n this._setIsMenuOpen(false);\n const menu = this.menu();\n\n if (menu) {\n menu.close(reason);\n }\n\n if (this._menu) {\n this._menu._triggerClosed(this);\n }\n\n this._overlayRef.detach();\n this._closingSubscription.unsubscribe();\n this._hoverSubscription.unsubscribe();\n this._childMenuClosedSubscription.unsubscribe();\n this._clearCloseTimeout();\n this.menuClosed.emit(reason);\n\n if (this.restoreFocus() && this._previouslyFocusedElement) {\n this._previouslyFocusedElement.focus();\n }\n\n this._previouslyFocusedElement = null;\n\n if (reason === 'click' && this._parentMenu) {\n this._parentMenu.close('click');\n }\n }\n\n private _setIsMenuOpen(isOpen: boolean): void {\n this.menuOpen.set(isOpen);\n }\n\n private _getPanelClasses(connectionPair: ConnectedPosition): string[] {\n const classes = [];\n const isBelow = connectionPair.overlayY === 'top';\n const isBefore = connectionPair.overlayX === 'end';\n\n if (isBelow) {\n classes.push('ngs-menu-below');\n } else {\n classes.push('ngs-menu-above');\n }\n\n if (isBefore) {\n classes.push('ngs-menu-before');\n } else {\n classes.push('ngs-menu-after');\n }\n\n return classes;\n }\n\n private _createOverlay(): OverlayRef {\n if (!this._overlayRef) {\n const config = this._getOverlayConfig();\n this._overlayRef = this._overlay.create(config);\n this._overlayRef\n .keydownEvents()\n .pipe(filter(event => event.key === 'Escape'))\n .subscribe(() => this.closeMenu('keydown'));\n this._overlayRef\n .outsidePointerEvents()\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe((event) => {\n if (this._parentMenu && this._elementRef.nativeElement.contains(event.target as HTMLElement)) {\n return;\n }\n this.closeMenu('backdrop');\n });\n }\n return this._overlayRef;\n }\n\n private _getOverlayConfig(): OverlayConfig {\n return new OverlayConfig({\n positionStrategy: this._overlay.position()\n .flexibleConnectedTo(this._elementRef)\n .withLockedPosition(false)\n .withTransformOriginOn('.ngs-menu-panel')\n .withPositions(this._getPositions())\n .withPush(false),\n scrollStrategy: this._overlay.scrollStrategies.block(),\n hasBackdrop: !this._parentMenu,\n backdropClass: 'cdk-overlay-transparent-backdrop'\n });\n }\n\n private _getPositions(): ConnectedPosition[] {\n const menu = this.menu();\n\n if (this._parentMenu) {\n return [\n {\n originX: 'end',\n originY: 'top',\n overlayX: 'start',\n overlayY: 'top',\n offsetX: 0,\n },\n {\n originX: 'start',\n originY: 'top',\n overlayX: 'end',\n overlayY: 'top',\n offsetX: 0,\n },\n {\n originX: 'end',\n originY: 'bottom',\n overlayX: 'start',\n overlayY: 'bottom',\n offsetX: 0,\n },\n {\n originX: 'start',\n originY: 'bottom',\n overlayX: 'end',\n overlayY: 'bottom',\n offsetX: 0,\n }\n ];\n }\n\n const xPosition = menu?.xPosition() || this.xPosition();\n const yPosition = menu?.yPosition() || this.yPosition();\n\n if (yPosition === 'above') {\n return [\n {\n originX: xPosition === 'before' ? 'end' : 'start',\n originY: 'top',\n overlayX: xPosition === 'before' ? 'end' : 'start',\n overlayY: 'bottom',\n },\n {\n originX: xPosition === 'before' ? 'start' : 'end',\n originY: 'top',\n overlayX: xPosition === 'before' ? 'start' : 'end',\n overlayY: 'bottom',\n },\n {\n originX: xPosition === 'before' ? 'end' : 'start',\n originY: 'bottom',\n overlayX: xPosition === 'before' ? 'end' : 'start',\n overlayY: 'top',\n },\n {\n originX: xPosition === 'before' ? 'start' : 'end',\n originY: 'bottom',\n overlayX: xPosition === 'before' ? 'start' : 'end',\n overlayY: 'top',\n },\n ];\n }\n\n return [\n {\n originX: xPosition === 'before' ? 'end' : 'start',\n originY: 'bottom',\n overlayX: xPosition === 'before' ? 'end' : 'start',\n overlayY: 'top',\n },\n {\n originX: xPosition === 'before' ? 'start' : 'end',\n originY: 'bottom',\n overlayX: xPosition === 'before' ? 'start' : 'end',\n overlayY: 'top',\n },\n {\n originX: xPosition === 'before' ? 'end' : 'start',\n originY: 'top',\n overlayX: xPosition === 'before' ? 'end' : 'start',\n overlayY: 'bottom',\n },\n {\n originX: xPosition === 'before' ? 'start' : 'end',\n originY: 'top',\n overlayX: xPosition === 'before' ? 'start' : 'end',\n overlayY: 'bottom',\n },\n ];\n }\n\n private _menuClosingActions() {\n const menu = this.menu();\n const detachments = this._overlayRef!.detachments();\n const menuClosed = menu ? outputToObservable(menu.closed) : EMPTY;\n const parentMenuClosed = this._parentMenu ? outputToObservable(this._parentMenu.closed) : EMPTY;\n return merge(detachments, menuClosed, parentMenuClosed).pipe(\n filter((reason): reason is MenuCloseReason => !!reason)\n );\n }\n\n _handleMouseEnter() {\n this._clearCloseTimeout();\n if (this._parentMenu) {\n this.openMenu();\n } else if (this._menu) {\n this.openMenu();\n }\n }\n}\n","import {\n Directive,\n inject,\n ElementRef,\n ViewContainerRef,\n OnDestroy,\n input,\n signal,\n output,\n NgZone\n} from '@angular/core';\nimport {\n Overlay,\n OverlayRef,\n OverlayConfig,\n ConnectedPosition,\n FlexibleConnectedPositionStrategy\n} from '@angular/cdk/overlay';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport { Menu } from './menu/menu';\nimport { MenuCloseReason } from './menu-types';\nimport { Subscription, merge, EMPTY } from 'rxjs';\nimport { filter } from 'rxjs/operators';\nimport { outputToObservable } from '@angular/core/rxjs-interop';\n\n@Directive({\n selector: '[ngsContextMenuTriggerFor]',\n exportAs: 'ngsContextMenuTrigger',\n standalone: true,\n host: {\n '(contextmenu)': '_handleContextMenu($event)',\n }\n})\nexport class ContextMenuTrigger implements OnDestroy {\n private _overlay = inject(Overlay);\n private _elementRef = inject(ElementRef<HTMLElement>);\n private _viewContainerRef = inject(ViewContainerRef);\n private _ngZone = inject(NgZone);\n\n readonly menu = input<Menu | null>(null, { alias: 'ngsContextMenuTriggerFor' });\n readonly menuData = input<any>(undefined, { alias: 'ngsContextMenuTriggerData' });\n\n readonly menuOpened = output<void>();\n readonly menuClosed = output<MenuCloseReason>();\n\n private _overlayRef: OverlayRef | null = null;\n private _portal: TemplatePortal | null = null;\n private _closingSubscription = Subscription.EMPTY;\n\n readonly menuOpen = signal(false);\n\n ngOnDestroy() {\n if (this._overlayRef) {\n this._overlayRef.dispose();\n this._overlayRef = null;\n }\n this._closingSubscription.unsubscribe();\n }\n\n openMenu(x: number, y: number): void {\n const menu = this.menu();\n if (this.menuOpen() || !menu) {\n return;\n }\n\n const overlayRef = this._createOverlay(x, y);\n const strategy = overlayRef.getConfig().positionStrategy as FlexibleConnectedPositionStrategy;\n\n strategy.positionChanges.subscribe(change => {\n menu._setPanelClasses(this._getPanelClasses(change.connectionPair));\n });\n\n menu._setContext(this.menuData());\n this._portal = new TemplatePortal(menu.templateRef(), this._viewContainerRef);\n overlayRef.attach(this._portal);\n\n if (overlayRef.hasAttached()) {\n this._setIsMenuOpen(true);\n }\n\n this._closingSubscription = this._menuClosingActions().subscribe(reason => this.closeMenu(reason));\n this.menuOpened.emit();\n }\n\n closeMenu(reason: MenuCloseReason): void {\n if (!this._overlayRef || !this.menuOpen()) {\n return;\n }\n\n this._setIsMenuOpen(false);\n const menu = this.menu();\n\n if (menu) {\n menu.close(reason);\n }\n\n this._overlayRef.detach();\n this._closingSubscription.unsubscribe();\n this.menuClosed.emit(reason);\n }\n\n private _setIsMenuOpen(isOpen: boolean): void {\n this.menuOpen.set(isOpen);\n }\n\n private _getPanelClasses(connectionPair: ConnectedPosition): string[] {\n const classes = [];\n const isBelow = connectionPair.overlayY === 'top';\n const isBefore = connectionPair.overlayX === 'end';\n\n if (isBelow) {\n classes.push('ngs-menu-below');\n } else {\n classes.push('ngs-menu-above');\n }\n\n if (isBefore) {\n classes.push('ngs-menu-before');\n } else {\n classes.push('ngs-menu-after');\n }\n\n return classes;\n }\n\n private _createOverlay(x: number, y: number): OverlayRef {\n if (this._overlayRef) {\n this._overlayRef.updatePositionStrategy(this._getPositionStrategy(x, y));\n return this._overlayRef;\n }\n\n const config = this._getOverlayConfig(x, y);\n this._overlayRef = this._overlay.create(config);\n\n this._overlayRef.keydownEvents()\n .pipe(filter(event => event.key === 'Escape'))\n .subscribe(() => this.closeMenu('keydown'));\n\n this._overlayRef.backdropClick().subscribe(() => this.closeMenu('backdrop'));\n\n return this._overlayRef;\n }\n\n private _getOverlayConfig(x: number, y: number): OverlayConfig {\n return new OverlayConfig({\n positionStrategy: this._getPositionStrategy(x, y),\n scrollStrategy: this._overlay.scrollStrategies.reposition(),\n hasBackdrop: true,\n backdropClass: 'cdk-overlay-transparent-backdrop',\n });\n }\n\n private _getPositionStrategy(x: number, y: number): FlexibleConnectedPositionStrategy {\n return this._overlay.position()\n .flexibleConnectedTo({ x, y })\n .withPush(false)\n .withPositions([\n {\n originX: 'start',\n originY: 'bottom',\n overlayX: 'start',\n overlayY: 'top',\n },\n {\n originX: 'start',\n originY: 'top',\n overlayX: 'start',\n overlayY: 'bottom',\n },\n {\n originX: 'end',\n originY: 'bottom',\n overlayX: 'end',\n overlayY: 'top',\n },\n {\n originX: 'end',\n originY: 'top',\n overlayX: 'end',\n overlayY: 'bottom',\n },\n ]);\n }\n\n private _menuClosingActions() {\n const menu = this.menu();\n const detachments = this._overlayRef!.detachments();\n const menuClosed = menu ? outputToObservable(menu.closed) : EMPTY;\n return merge(detachments, menuClosed).pipe(\n filter((reason): reason is MenuCloseReason => !!reason)\n );\n }\n\n _handleContextMenu(event: MouseEvent): void {\n event.preventDefault();\n\n if (this.menuOpen()) {\n this.closeMenu('click');\n }\n\n this.openMenu(event.clientX, event.clientY);\n }\n}\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'ngs-menu-header',\n imports: [],\n templateUrl: './menu-header.html',\n styleUrl: './menu-header.scss',\n})\nexport class MenuHeader {\n\n}\n","<ng-content/>\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'ngs-menu-footer',\n imports: [],\n templateUrl: './menu-footer.html',\n styleUrl: './menu-footer.scss',\n})\nexport class MenuFooter {\n\n}\n","<ng-content/>\n","import { InjectionToken, Signal } from '@angular/core';\n\n/**\n * Describes a parent component that manages a list of options.\n * Contains properties that the options can inherit.\n * @docs-private\n */\nexport interface OptionParentComponent {\n disableRipple?: boolean | Signal<boolean>;\n multiple?: boolean | Signal<boolean>;\n inertGroups?: boolean;\n hideSingleSelectionIndicator?: boolean;\n}\n\n/**\n * Injection token used to provide the parent component to options.\n */\nexport const OPTION_PARENT_COMPONENT = new InjectionToken<OptionParentComponent>('OPTION_PARENT_COMPONENT');\n","import {\n AfterContentInit,\n ChangeDetectorRef, DestroyRef,\n Directive,\n forwardRef,\n inject,\n OnInit,\n contentChildren, signal, Signal, input, booleanAttribute, computed,\n output\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { SelectionModel } from '@angular/cdk/collections';\nimport { defer, merge, Observable, Subject, switchMap, EMPTY, map, startWith } from 'rxjs';\nimport { takeUntilDestroyed, toObservable } from '@angular/core/rxjs-interop';\nimport { outputToObservable } from '@angular/core/rxjs-interop';\nimport { Option, SELECT } from '@ngstarter-ui/components/select';\nimport { OptionParentComponent, OPTION_PARENT_COMPONENT } from './option-parent';\nimport { Menu } from './menu/menu';\n\n@Directive({\n selector: '[ngsMenuOptionGroup]',\n standalone: true,\n providers: [\n {\n provide: OPTION_PARENT_COMPONENT,\n useExisting: MenuOptionGroupDirective\n },\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MenuOptionGroupDirective),\n multi: true\n },\n {\n provide: SELECT,\n useFactory: (directive: MenuOptionGroupDirective) => {\n return {\n multiple: directive.multipleSignal,\n hideCheckIcon: directive.hideCheckIcon,\n _optionsContentChanges: directive._optionsContentChanges\n };\n },\n deps: [forwardRef(() => MenuOptionGroupDirective)]\n }\n ]\n})\nexport class MenuOptionGroupDirective implements OptionParentComponent, OnInit, ControlValueAccessor, AfterContentInit {\n private _changeDetectorRef = inject(ChangeDetectorRef);\n private _destroyRef = inject(DestroyRef);\n private _menu = inject(Menu, { optional: true });\n\n disableRipple = false;\n inertGroups = false;\n hideSingleSelectionIndicator = false;\n\n multiple = input(false, { transform: booleanAttribute });\n readonly multipleSignal: Signal<boolean> = computed(() => this.multiple());\n readonly hideCheckIcon = signal(false);\n readonly _optionsContentChanges = signal(0);\n\n _selectionModel: SelectionModel<any>;\n private _value: any;\n\n readonly options = contentChildren(Option, { descendants: true });\n readonly ngsOptions = contentChildren(forwardRef(() => Option), { descendants: true });\n\n private _options$ = toObservable(this.options);\n private _ngsOptions$ = toObservable(this.ngsOptions);\n\n private _initialized = new Subject();\n\n readonly valueChange = output<any>();\n\n readonly optionSelectionChanges: Observable<any> = merge(\n this._options$,\n this._ngsOptions$\n ).pipe(\n startWith(null),\n switchMap(() => {\n const options = this.options();\n const ngsOptions = this.ngsOptions();\n const streams = [\n ...options.map(option => outputToObservable(option.onSelectionChange) as Observable<any>),\n ...ngsOptions.map(option => outputToObservable(option.onSelectionChange) as Observable<any>)\n ];\n\n if (streams.length === 0) {\n return EMPTY;\n }\n\n return merge(...streams);\n })\n );\n\n onChange: any = () => {};\n onTouched: any = () => {};\n\n ngOnInit() {\n this._selectionModel = new SelectionModel<any>(this.multiple());\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n ngAfterContentInit() {\n this.optionSelectionChanges\n .pipe(takeUntilDestroyed(this._destroyRef))\n .subscribe((res: any) => {\n let source: any;\n\n if (res instanceof Option) {\n source = res;\n } else if (res && res.source instanceof Option) {\n source = res.source;\n } else {\n source = res;\n }\n\n if (source instanceof Option) {\n this._value = source.value();\n } else if (source && typeof source.value === 'function') {\n this._value = source.value();\n } else {\n this._value = source.value;\n }\n this._selectOptionByValue();\n this.onChange(this._value);\n\n if (!this.multiple) {\n this._menu?.close('click');\n }\n })\n ;\n\n this._options$\n .pipe(takeUntilDestroyed(this._destroyRef))\n .subscribe(() => {\n this._selectOptionByValue();\n });\n\n this._ngsOptions$\n .pipe(takeUntilDestroyed(this._destroyRef))\n .subscribe(() => {\n this._selectOptionByValue();\n });\n }\n\n private _selectOptionByValue() {\n const options = this.options();\n const ngsOptions = this.ngsOptions();\n\n options.forEach(option => {\n if (option.value === this._value) {\n option.select();\n } else {\n option.deselect();\n }\n });\n\n ngsOptions.forEach(option => {\n if (option.value() === this._value) {\n option.select();\n } else {\n option.deselect();\n }\n });\n this._changeDetectorRef.markForCheck();\n }\n\n writeValue(newValue: any): void {\n if (newValue !== this._value) {\n this._value = newValue;\n this._selectOptionByValue();\n }\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ngstarter-ui-components-menu.mjs","sources":["../../../projects/components/menu/src/menu-tokens.ts","../../../projects/components/menu/src/menu-item/menu-item.ts","../../../projects/components/menu/src/menu-item/menu-item.html","../../../projects/components/menu/src/menu-content.ts","../../../projects/components/menu/src/menu/menu.ts","../../../projects/components/menu/src/menu/menu.html","../../../projects/components/menu/src/menu-divider/menu-divider.ts","../../../projects/components/menu/src/menu-divider/menu-divider.html","../../../projects/components/menu/src/menu-heading/menu-heading.ts","../../../projects/components/menu/src/menu-heading/menu-heading.html","../../../projects/components/menu/src/menu-trigger.ts","../../../projects/components/menu/src/context-menu-trigger.ts","../../../projects/components/menu/src/menu-header/menu-header.ts","../../../projects/components/menu/src/menu-header/menu-header.html","../../../projects/components/menu/src/menu-footer/menu-footer.ts","../../../projects/components/menu/src/menu-footer/menu-footer.html","../../../projects/components/menu/src/option-parent.ts","../../../projects/components/menu/src/menu-option-group.directive.ts","../../../projects/components/menu/ngstarter-ui-components-menu.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\n\nexport const MENU_ITEM = new InjectionToken<any>('MENU_ITEM');\nexport const MENU_TRIGGER = new InjectionToken<any>('MENU_TRIGGER');\n","import {\n Component,\n ChangeDetectionStrategy,\n input,\n booleanAttribute,\n inject,\n ElementRef,\n output,\n signal,\n forwardRef,\n Injector,\n OnInit\n} from '@angular/core';\nimport { MENU_ITEM, MENU_TRIGGER } from '../menu-tokens';\nimport type { MenuTrigger } from '../menu-trigger';\nimport { Menu } from '../menu/menu';\n\n@Component({\n selector: 'ngs-menu-item, [ngs-menu-item]',\n exportAs: 'ngsMenuItem',\n standalone: true,\n imports: [],\n templateUrl: './menu-item.html',\n styleUrl: './menu-item.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: MENU_ITEM,\n useExisting: forwardRef(() => MenuItem)\n }\n ],\n host: {\n '[attr.role]': 'role()',\n '[class.ngs-menu-item]': 'true',\n '[class.ngs-menu-item-highlighted]': '_isHighlighted() || selected()',\n '[attr.disabled]': 'disabled() || null',\n '[attr.aria-disabled]': 'disabled()',\n '[tabindex]': 'disabled() ? -1 : 0',\n '(click)': '_handleClick($event)',\n '(mouseenter)': '_handleMouseEnter()',\n }\n})\nexport class MenuItem implements OnInit {\n private _injector = inject(Injector);\n protected _menuTrigger: MenuTrigger | null = null;\n readonly disabled = input(false, { transform: booleanAttribute });\n readonly role = input<'menuitem' | 'menuitem-radio' | 'menuitem-checkbox'>('menuitem');\n\n selected = input(false, {\n transform: booleanAttribute\n });\n\n readonly _triggered = output<void>();\n\n private _elementRef = inject(ElementRef<HTMLElement>);\n private _menu = inject(Menu, { optional: true });\n\n get label(): string {\n return this._elementRef.nativeElement.textContent?.trim() || '';\n }\n\n focus(): void {\n this._elementRef.nativeElement.focus();\n }\n\n ngOnInit() {\n this._menuTrigger = this._injector.get(MENU_TRIGGER, null);\n }\n\n _handleClick(event: MouseEvent): void {\n if (this.disabled()) {\n event.preventDefault();\n event.stopPropagation();\n return;\n }\n\n const menuTrigger = this._menuTrigger;\n const hasPopup = this._elementRef.nativeElement.getAttribute('aria-haspopup');\n if (menuTrigger || hasPopup === 'menu') {\n return;\n }\n\n this._triggered.emit();\n }\n\n _handleMouseEnter(): void {\n const menuTrigger = this._menuTrigger;\n if (this._menu && !menuTrigger) {\n this._menu._triggerOpened(null);\n }\n }\n\n protected readonly _isHighlighted = signal(false);\n}\n","<div class=\"icon\">\n <ng-content select=\"ngs-icon\"/>\n</div>\n\n<div class=\"ngs-menu-item-content\">\n <ng-content/>\n</div>\n\n@if (_menuTrigger) {\n <svg class=\"ngs-menu-item-submenu-icon\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\">\n <polyline points=\"9 18 15 12 9 6\"></polyline>\n </svg>\n}\n","import { Directive, inject, TemplateRef } from '@angular/core';\n\n@Directive({\n selector: '[ngsMenuContent]',\n standalone: true\n})\nexport class MenuContent {\n readonly templateRef = inject(TemplateRef);\n}\n","import {\n Component,\n ChangeDetectionStrategy,\n viewChild,\n TemplateRef,\n contentChildren,\n input,\n signal,\n inject,\n OnDestroy,\n output,\n effect,\n contentChild\n} from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { outputToObservable } from '@angular/core/rxjs-interop';\nimport { MenuItem } from '../menu-item/menu-item';\nimport { MenuContent } from '../menu-content';\nimport { MenuCloseReason } from '../menu-types';\nimport { Subscription, merge, Subject, Observable } from 'rxjs';\nimport { MENU_TRIGGER } from '../menu-tokens';\nimport type { MenuTrigger } from '../menu-trigger';\n\n@Component({\n selector: 'ngs-menu',\n exportAs: 'ngsMenu',\n standalone: true,\n imports: [\n NgTemplateOutlet\n ],\n templateUrl: './menu.html',\n styleUrl: './menu.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[attr.role]': 'role()',\n '[class.ngs-menu]': 'true',\n }\n})\nexport class Menu implements OnDestroy {\n readonly role = input<'menu' | 'menubar'>('menu');\n readonly classList = input<string>('');\n readonly xPosition = input<'before' | 'after'>('after');\n readonly yPosition = input<'above' | 'below'>('below');\n\n protected readonly _panelClasses = signal<string[]>([]);\n readonly closed = output<MenuCloseReason>();\n readonly _childMenuClosed = new Subject<void>();\n\n readonly templateRef = viewChild.required(TemplateRef);\n readonly content = contentChild(MenuContent);\n readonly items = contentChildren(MenuItem, { descendants: true });\n\n protected readonly _isNested = signal(false);\n protected readonly _context = signal<any>(undefined);\n private _parentMenu = inject(Menu, { optional: true, skipSelf: true });\n private _parentMenuTrigger = inject<MenuTrigger>(MENU_TRIGGER, { optional: true });\n private _itemSubscription = Subscription.EMPTY;\n private _openedTrigger: any = null;\n\n constructor() {\n if (this._parentMenu || this._parentMenuTrigger) {\n this._isNested.set(true);\n }\n\n effect(() => {\n const items = this.items();\n this._itemSubscription.unsubscribe();\n\n if (items.length > 0) {\n this._itemSubscription = merge(\n ...items.map(item => outputToObservable(item._triggered) as Observable<any>)\n )\n .subscribe(() => {\n this.close('click');\n });\n }\n });\n }\n\n ngOnDestroy() {\n this._itemSubscription.unsubscribe();\n }\n\n close(reason: MenuCloseReason): void {\n if (this._openedTrigger) {\n this._openedTrigger.closeMenu(reason);\n }\n this.closed.emit(reason);\n }\n\n _setPanelClasses(classes: string[]): void {\n this._panelClasses.set(classes);\n }\n\n _setContext(context: any): void {\n this._context.set(context);\n }\n\n _triggerOpened(trigger: any): void {\n if (this._openedTrigger && this._openedTrigger !== trigger) {\n this._openedTrigger.closeMenu('mouse', true);\n }\n this._openedTrigger = trigger;\n }\n\n _triggerClosed(trigger: any): void {\n if (this._openedTrigger === trigger) {\n this._openedTrigger = null;\n this._childMenuClosed.next();\n }\n }\n\n hasOpenChild(): boolean {\n return !!this._openedTrigger && this._openedTrigger.menuOpen();\n }\n}\n","<ng-template>\n <div\n class=\"ngs-menu-panel\"\n [class]=\"classList()\"\n [class.ngs-menu-before]=\"_panelClasses().includes('ngs-menu-before')\"\n [class.ngs-menu-after]=\"_panelClasses().includes('ngs-menu-after')\"\n [class.ngs-menu-above]=\"_panelClasses().includes('ngs-menu-above')\"\n [class.ngs-menu-below]=\"_panelClasses().includes('ngs-menu-below')\"\n tabindex=\"-1\"\n role=\"menu\"\n >\n <ng-content select=\"ngs-menu-header,[ngs-menu-header]\"/>\n <div class=\"ngs-menu-content\">\n @if (content()) {\n <ng-container [ngTemplateOutlet]=\"content()!.templateRef\" [ngTemplateOutletContext]=\"_context()\" />\n } @else {\n <ng-content />\n }\n </div>\n <ng-content select=\"ngs-menu-footer,[ngs-menu-footer]\"/>\n </div>\n</ng-template>\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'ngs-menu-divider',\n imports: [],\n templateUrl: './menu-divider.html',\n styleUrl: './menu-divider.scss',\n})\nexport class MenuDivider {\n\n}\n","","import { Component } from '@angular/core';\n\n@Component({\n selector: 'ngs-menu-heading',\n imports: [],\n templateUrl: './menu-heading.html',\n styleUrl: './menu-heading.scss',\n})\nexport class MenuHeading {\n\n}\n","<ng-content/>\n","import {\n Directive,\n inject,\n ElementRef,\n ViewContainerRef,\n OnDestroy,\n booleanAttribute,\n input,\n signal,\n output,\n forwardRef,\n Injector, DestroyRef\n} from '@angular/core';\nimport { outputToObservable, takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { Overlay, OverlayRef, OverlayConfig, ConnectedPosition, FlexibleConnectedPositionStrategy } from '@angular/cdk/overlay';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport { Menu } from './menu/menu';\nimport { MenuCloseReason } from './menu-types';\nimport { Subscription, merge, EMPTY, fromEvent } from 'rxjs';\nimport { filter } from 'rxjs/operators';\nimport { MENU_TRIGGER, MENU_ITEM } from './menu-tokens';\n\n@Directive({\n selector: '[ngsMenuTriggerFor]',\n exportAs: 'ngsMenuTrigger',\n standalone: true,\n host: {\n 'aria-haspopup': 'menu',\n '[attr.aria-expanded]': 'menuOpen()',\n '[attr.aria-controls]': 'menuOpen() ? menu()?.templateRef() : null',\n '[class.ngs-menu-item-highlighted]': 'menuOpen()',\n '(click)': '_handleClick($event)',\n '(mouseenter)': '_handleMouseEnter()',\n '(mouseleave)': '_handleMouseLeave()',\n },\n providers: [\n {\n provide: MENU_TRIGGER,\n useExisting: forwardRef(() => MenuTrigger)\n }\n ]\n})\nexport class MenuTrigger implements OnDestroy {\n private _overlay = inject(Overlay);\n private _elementRef = inject(ElementRef<HTMLElement>);\n private _viewContainerRef = inject(ViewContainerRef);\n private destroyRef = inject(DestroyRef);\n private _injector = inject(Injector);\n private _parentMenu = inject(Menu, { optional: true, skipSelf: true });\n private _menu = inject(Menu, { optional: true });\n\n readonly menu = input<Menu | null>(null, { alias: 'ngsMenuTriggerFor' });\n readonly menuData = input<any>(undefined, { alias: 'ngsMenuTriggerData' });\n readonly menuDisabled = input(false, { transform: booleanAttribute, alias: 'ngsMenuDisabled' });\n readonly xPosition = input<'before' | 'after'>('after');\n readonly yPosition = input<'above' | 'below'>('below');\n\n readonly menuOpened = output<void>();\n readonly menuClosed = output<MenuCloseReason>();\n readonly restoreFocus = input(true, { transform: booleanAttribute, alias: 'ngsMenuTriggerRestoreFocus' });\n\n private _overlayRef: OverlayRef | null = null;\n private _portal: TemplatePortal | null = null;\n private _closingSubscription = Subscription.EMPTY;\n private _hoverSubscription = Subscription.EMPTY;\n private _childMenuClosedSubscription = Subscription.EMPTY;\n private _closeTimeoutId: any;\n private _previouslyFocusedElement: HTMLElement | null = null;\n\n readonly menuOpen = signal(false);\n\n ngOnDestroy() {\n if (this._overlayRef) {\n this._overlayRef.dispose();\n this._overlayRef = null;\n }\n this._closingSubscription.unsubscribe();\n this._hoverSubscription.unsubscribe();\n this._childMenuClosedSubscription.unsubscribe();\n this._clearCloseTimeout();\n }\n\n _handleMouseLeave() {\n }\n\n _clearCloseTimeout() {\n if (this._closeTimeoutId) {\n clearTimeout(this._closeTimeoutId);\n this._closeTimeoutId = null;\n }\n }\n\n _handleClick(event: MouseEvent): void {\n const menuItem = this._injector.get(MENU_ITEM, null);\n if (menuItem) {\n event.stopPropagation();\n event.stopImmediatePropagation();\n }\n this.toggleMenu();\n }\n\n toggleMenu(): void {\n if (this.menuDisabled()) {\n return;\n }\n\n if (this._parentMenu) {\n this.openMenu();\n } else {\n this.menuOpen() ? this.closeMenu('click') : this.openMenu();\n }\n }\n\n openMenu(): void {\n const menu = this.menu();\n if (this.menuOpen() || !menu) {\n return;\n }\n\n this._previouslyFocusedElement = document.activeElement as HTMLElement;\n const overlayRef = this._createOverlay();\n const strategy = overlayRef.getConfig().positionStrategy as FlexibleConnectedPositionStrategy;\n\n strategy.positionChanges.subscribe(change => {\n menu._setPanelClasses(this._getPanelClasses(change.connectionPair));\n });\n\n menu._setContext(this.menuData());\n this._portal = new TemplatePortal(menu.templateRef(), this._viewContainerRef, this._viewContainerRef.injector);\n overlayRef.attach(this._portal);\n\n if (overlayRef.hasAttached()) {\n this._setIsMenuOpen(true);\n\n const overlayElement = overlayRef.overlayElement;\n this._hoverSubscription.unsubscribe();\n this._hoverSubscription = merge(\n fromEvent<MouseEvent>(overlayElement, 'mouseenter'),\n fromEvent<MouseEvent>(overlayElement, 'mouseleave')\n ).subscribe(event => {\n if (event.type === 'mouseenter') {\n this._clearCloseTimeout();\n } else {\n this._handleMouseLeave();\n }\n });\n }\n\n if (this._menu) {\n this._menu._triggerOpened(this);\n\n this._childMenuClosedSubscription.unsubscribe();\n this._childMenuClosedSubscription = this._menu._childMenuClosed.subscribe(() => {\n this._handleMouseLeave();\n });\n }\n\n this._closingSubscription = this._menuClosingActions().subscribe(reason => this.closeMenu(reason));\n this.menuOpened.emit();\n }\n\n closeMenu(reason: MenuCloseReason, force = false): void {\n if (!this._overlayRef || !this.menuOpen()) {\n return;\n }\n\n if (!force && reason === 'mouse' && this.menu()?.hasOpenChild()) {\n return;\n }\n\n this._setIsMenuOpen(false);\n const menu = this.menu();\n\n if (menu) {\n menu.close(reason);\n }\n\n if (this._menu) {\n this._menu._triggerClosed(this);\n }\n\n this._overlayRef.detach();\n this._closingSubscription.unsubscribe();\n this._hoverSubscription.unsubscribe();\n this._childMenuClosedSubscription.unsubscribe();\n this._clearCloseTimeout();\n this.menuClosed.emit(reason);\n\n if (this.restoreFocus() && this._previouslyFocusedElement) {\n this._previouslyFocusedElement.focus();\n }\n\n this._previouslyFocusedElement = null;\n\n if (reason === 'click' && this._parentMenu) {\n this._parentMenu.close('click');\n }\n }\n\n private _setIsMenuOpen(isOpen: boolean): void {\n this.menuOpen.set(isOpen);\n }\n\n private _getPanelClasses(connectionPair: ConnectedPosition): string[] {\n const classes = [];\n const isBelow = connectionPair.overlayY === 'top';\n const isBefore = connectionPair.overlayX === 'end';\n\n if (isBelow) {\n classes.push('ngs-menu-below');\n } else {\n classes.push('ngs-menu-above');\n }\n\n if (isBefore) {\n classes.push('ngs-menu-before');\n } else {\n classes.push('ngs-menu-after');\n }\n\n return classes;\n }\n\n private _createOverlay(): OverlayRef {\n if (!this._overlayRef) {\n const config = this._getOverlayConfig();\n this._overlayRef = this._overlay.create(config);\n this._overlayRef\n .keydownEvents()\n .pipe(filter(event => event.key === 'Escape'))\n .subscribe(() => this.closeMenu('keydown'));\n this._overlayRef\n .outsidePointerEvents()\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe((event) => {\n if (this._parentMenu && this._elementRef.nativeElement.contains(event.target as HTMLElement)) {\n return;\n }\n this.closeMenu('backdrop');\n });\n }\n return this._overlayRef;\n }\n\n private _getOverlayConfig(): OverlayConfig {\n return new OverlayConfig({\n positionStrategy: this._overlay.position()\n .flexibleConnectedTo(this._elementRef)\n .withLockedPosition(false)\n .withTransformOriginOn('.ngs-menu-panel')\n .withPositions(this._getPositions())\n .withPush(false),\n scrollStrategy: this._overlay.scrollStrategies.block(),\n hasBackdrop: !this._parentMenu,\n backdropClass: 'cdk-overlay-transparent-backdrop'\n });\n }\n\n private _getPositions(): ConnectedPosition[] {\n const menu = this.menu();\n\n if (this._parentMenu) {\n return [\n {\n originX: 'end',\n originY: 'top',\n overlayX: 'start',\n overlayY: 'top',\n offsetX: 0,\n },\n {\n originX: 'start',\n originY: 'top',\n overlayX: 'end',\n overlayY: 'top',\n offsetX: 0,\n },\n {\n originX: 'end',\n originY: 'bottom',\n overlayX: 'start',\n overlayY: 'bottom',\n offsetX: 0,\n },\n {\n originX: 'start',\n originY: 'bottom',\n overlayX: 'end',\n overlayY: 'bottom',\n offsetX: 0,\n }\n ];\n }\n\n const xPosition = menu?.xPosition() || this.xPosition();\n const yPosition = menu?.yPosition() || this.yPosition();\n\n if (yPosition === 'above') {\n return [\n {\n originX: xPosition === 'before' ? 'end' : 'start',\n originY: 'top',\n overlayX: xPosition === 'before' ? 'end' : 'start',\n overlayY: 'bottom',\n },\n {\n originX: xPosition === 'before' ? 'start' : 'end',\n originY: 'top',\n overlayX: xPosition === 'before' ? 'start' : 'end',\n overlayY: 'bottom',\n },\n {\n originX: xPosition === 'before' ? 'end' : 'start',\n originY: 'bottom',\n overlayX: xPosition === 'before' ? 'end' : 'start',\n overlayY: 'top',\n },\n {\n originX: xPosition === 'before' ? 'start' : 'end',\n originY: 'bottom',\n overlayX: xPosition === 'before' ? 'start' : 'end',\n overlayY: 'top',\n },\n ];\n }\n\n return [\n {\n originX: xPosition === 'before' ? 'end' : 'start',\n originY: 'bottom',\n overlayX: xPosition === 'before' ? 'end' : 'start',\n overlayY: 'top',\n },\n {\n originX: xPosition === 'before' ? 'start' : 'end',\n originY: 'bottom',\n overlayX: xPosition === 'before' ? 'start' : 'end',\n overlayY: 'top',\n },\n {\n originX: xPosition === 'before' ? 'end' : 'start',\n originY: 'top',\n overlayX: xPosition === 'before' ? 'end' : 'start',\n overlayY: 'bottom',\n },\n {\n originX: xPosition === 'before' ? 'start' : 'end',\n originY: 'top',\n overlayX: xPosition === 'before' ? 'start' : 'end',\n overlayY: 'bottom',\n },\n ];\n }\n\n private _menuClosingActions() {\n const menu = this.menu();\n const detachments = this._overlayRef!.detachments();\n const menuClosed = menu ? outputToObservable(menu.closed) : EMPTY;\n const parentMenuClosed = this._parentMenu ? outputToObservable(this._parentMenu.closed) : EMPTY;\n return merge(detachments, menuClosed, parentMenuClosed).pipe(\n filter((reason): reason is MenuCloseReason => !!reason)\n );\n }\n\n _handleMouseEnter() {\n this._clearCloseTimeout();\n if (this._parentMenu) {\n this.openMenu();\n } else if (this._menu) {\n this.openMenu();\n }\n }\n}\n","import {\n Directive,\n inject,\n ElementRef,\n ViewContainerRef,\n OnDestroy,\n input,\n signal,\n output,\n NgZone\n} from '@angular/core';\nimport {\n Overlay,\n OverlayRef,\n OverlayConfig,\n ConnectedPosition,\n FlexibleConnectedPositionStrategy\n} from '@angular/cdk/overlay';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport { Menu } from './menu/menu';\nimport { MenuCloseReason } from './menu-types';\nimport { Subscription, merge, EMPTY } from 'rxjs';\nimport { filter } from 'rxjs/operators';\nimport { outputToObservable } from '@angular/core/rxjs-interop';\n\n@Directive({\n selector: '[ngsContextMenuTriggerFor]',\n exportAs: 'ngsContextMenuTrigger',\n standalone: true,\n host: {\n '(contextmenu)': '_handleContextMenu($event)',\n }\n})\nexport class ContextMenuTrigger implements OnDestroy {\n private _overlay = inject(Overlay);\n private _elementRef = inject(ElementRef<HTMLElement>);\n private _viewContainerRef = inject(ViewContainerRef);\n private _ngZone = inject(NgZone);\n\n readonly menu = input<Menu | null>(null, { alias: 'ngsContextMenuTriggerFor' });\n readonly menuData = input<any>(undefined, { alias: 'ngsContextMenuTriggerData' });\n\n readonly menuOpened = output<void>();\n readonly menuClosed = output<MenuCloseReason>();\n\n private _overlayRef: OverlayRef | null = null;\n private _portal: TemplatePortal | null = null;\n private _closingSubscription = Subscription.EMPTY;\n\n readonly menuOpen = signal(false);\n\n ngOnDestroy() {\n if (this._overlayRef) {\n this._overlayRef.dispose();\n this._overlayRef = null;\n }\n this._closingSubscription.unsubscribe();\n }\n\n openMenu(x: number, y: number): void {\n const menu = this.menu();\n if (this.menuOpen() || !menu) {\n return;\n }\n\n const overlayRef = this._createOverlay(x, y);\n const strategy = overlayRef.getConfig().positionStrategy as FlexibleConnectedPositionStrategy;\n\n strategy.positionChanges.subscribe(change => {\n menu._setPanelClasses(this._getPanelClasses(change.connectionPair));\n });\n\n menu._setContext(this.menuData());\n this._portal = new TemplatePortal(menu.templateRef(), this._viewContainerRef);\n overlayRef.attach(this._portal);\n\n if (overlayRef.hasAttached()) {\n this._setIsMenuOpen(true);\n }\n\n this._closingSubscription = this._menuClosingActions().subscribe(reason => this.closeMenu(reason));\n this.menuOpened.emit();\n }\n\n closeMenu(reason: MenuCloseReason): void {\n if (!this._overlayRef || !this.menuOpen()) {\n return;\n }\n\n this._setIsMenuOpen(false);\n const menu = this.menu();\n\n if (menu) {\n menu.close(reason);\n }\n\n this._overlayRef.detach();\n this._closingSubscription.unsubscribe();\n this.menuClosed.emit(reason);\n }\n\n private _setIsMenuOpen(isOpen: boolean): void {\n this.menuOpen.set(isOpen);\n }\n\n private _getPanelClasses(connectionPair: ConnectedPosition): string[] {\n const classes = [];\n const isBelow = connectionPair.overlayY === 'top';\n const isBefore = connectionPair.overlayX === 'end';\n\n if (isBelow) {\n classes.push('ngs-menu-below');\n } else {\n classes.push('ngs-menu-above');\n }\n\n if (isBefore) {\n classes.push('ngs-menu-before');\n } else {\n classes.push('ngs-menu-after');\n }\n\n return classes;\n }\n\n private _createOverlay(x: number, y: number): OverlayRef {\n if (this._overlayRef) {\n this._overlayRef.updatePositionStrategy(this._getPositionStrategy(x, y));\n return this._overlayRef;\n }\n\n const config = this._getOverlayConfig(x, y);\n this._overlayRef = this._overlay.create(config);\n\n this._overlayRef.keydownEvents()\n .pipe(filter(event => event.key === 'Escape'))\n .subscribe(() => this.closeMenu('keydown'));\n\n this._overlayRef.backdropClick().subscribe(() => this.closeMenu('backdrop'));\n\n return this._overlayRef;\n }\n\n private _getOverlayConfig(x: number, y: number): OverlayConfig {\n return new OverlayConfig({\n positionStrategy: this._getPositionStrategy(x, y),\n scrollStrategy: this._overlay.scrollStrategies.reposition(),\n hasBackdrop: true,\n backdropClass: 'cdk-overlay-transparent-backdrop',\n });\n }\n\n private _getPositionStrategy(x: number, y: number): FlexibleConnectedPositionStrategy {\n return this._overlay.position()\n .flexibleConnectedTo({ x, y })\n .withPush(false)\n .withPositions([\n {\n originX: 'start',\n originY: 'bottom',\n overlayX: 'start',\n overlayY: 'top',\n },\n {\n originX: 'start',\n originY: 'top',\n overlayX: 'start',\n overlayY: 'bottom',\n },\n {\n originX: 'end',\n originY: 'bottom',\n overlayX: 'end',\n overlayY: 'top',\n },\n {\n originX: 'end',\n originY: 'top',\n overlayX: 'end',\n overlayY: 'bottom',\n },\n ]);\n }\n\n private _menuClosingActions() {\n const menu = this.menu();\n const detachments = this._overlayRef!.detachments();\n const menuClosed = menu ? outputToObservable(menu.closed) : EMPTY;\n return merge(detachments, menuClosed).pipe(\n filter((reason): reason is MenuCloseReason => !!reason)\n );\n }\n\n _handleContextMenu(event: MouseEvent): void {\n event.preventDefault();\n\n if (this.menuOpen()) {\n this.closeMenu('click');\n }\n\n this.openMenu(event.clientX, event.clientY);\n }\n}\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'ngs-menu-header',\n exportAs: 'ngsMenuHeader',\n imports: [],\n templateUrl: './menu-header.html',\n styleUrl: './menu-header.scss',\n host: {\n 'class': 'ngs-menu-header',\n }\n})\nexport class MenuHeader {\n\n}\n","<ng-content/>\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'ngs-menu-footer',\n exportAs: 'ngsMenuFooter',\n imports: [],\n templateUrl: './menu-footer.html',\n styleUrl: './menu-footer.scss',\n host: {\n 'class': 'ngs-menu-footer',\n }\n})\nexport class MenuFooter {\n\n}\n","<ng-content/>\n","import { InjectionToken, Signal } from '@angular/core';\n\n/**\n * Describes a parent component that manages a list of options.\n * Contains properties that the options can inherit.\n * @docs-private\n */\nexport interface OptionParentComponent {\n disableRipple?: boolean | Signal<boolean>;\n multiple?: boolean | Signal<boolean>;\n inertGroups?: boolean;\n hideSingleSelectionIndicator?: boolean;\n}\n\n/**\n * Injection token used to provide the parent component to options.\n */\nexport const OPTION_PARENT_COMPONENT = new InjectionToken<OptionParentComponent>('OPTION_PARENT_COMPONENT');\n","import {\n AfterContentInit,\n ChangeDetectorRef, DestroyRef,\n Directive,\n forwardRef,\n inject,\n OnInit,\n contentChildren, signal, Signal, input, booleanAttribute, computed,\n output\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { SelectionModel } from '@angular/cdk/collections';\nimport { defer, merge, Observable, Subject, switchMap, EMPTY, map, startWith } from 'rxjs';\nimport { takeUntilDestroyed, toObservable } from '@angular/core/rxjs-interop';\nimport { outputToObservable } from '@angular/core/rxjs-interop';\nimport { Option, SELECT } from '@ngstarter-ui/components/select';\nimport { OptionParentComponent, OPTION_PARENT_COMPONENT } from './option-parent';\nimport { Menu } from './menu/menu';\n\n@Directive({\n selector: '[ngsMenuOptionGroup]',\n standalone: true,\n providers: [\n {\n provide: OPTION_PARENT_COMPONENT,\n useExisting: MenuOptionGroupDirective\n },\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MenuOptionGroupDirective),\n multi: true\n },\n {\n provide: SELECT,\n useFactory: (directive: MenuOptionGroupDirective) => {\n return {\n multiple: directive.multipleSignal,\n hideCheckIcon: directive.hideCheckIcon,\n _optionsContentChanges: directive._optionsContentChanges\n };\n },\n deps: [forwardRef(() => MenuOptionGroupDirective)]\n }\n ]\n})\nexport class MenuOptionGroupDirective implements OptionParentComponent, OnInit, ControlValueAccessor, AfterContentInit {\n private _changeDetectorRef = inject(ChangeDetectorRef);\n private _destroyRef = inject(DestroyRef);\n private _menu = inject(Menu, { optional: true });\n\n disableRipple = false;\n inertGroups = false;\n hideSingleSelectionIndicator = false;\n\n multiple = input(false, { transform: booleanAttribute });\n readonly multipleSignal: Signal<boolean> = computed(() => this.multiple());\n readonly hideCheckIcon = signal(false);\n readonly _optionsContentChanges = signal(0);\n\n _selectionModel: SelectionModel<any>;\n private _value: any;\n\n readonly options = contentChildren(Option, { descendants: true });\n readonly ngsOptions = contentChildren(forwardRef(() => Option), { descendants: true });\n\n private _options$ = toObservable(this.options);\n private _ngsOptions$ = toObservable(this.ngsOptions);\n\n private _initialized = new Subject();\n\n readonly valueChange = output<any>();\n\n readonly optionSelectionChanges: Observable<any> = merge(\n this._options$,\n this._ngsOptions$\n ).pipe(\n startWith(null),\n switchMap(() => {\n const options = this.options();\n const ngsOptions = this.ngsOptions();\n const streams = [\n ...options.map(option => outputToObservable(option.onSelectionChange) as Observable<any>),\n ...ngsOptions.map(option => outputToObservable(option.onSelectionChange) as Observable<any>)\n ];\n\n if (streams.length === 0) {\n return EMPTY;\n }\n\n return merge(...streams);\n })\n );\n\n onChange: any = () => {};\n onTouched: any = () => {};\n\n ngOnInit() {\n this._selectionModel = new SelectionModel<any>(this.multiple());\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n ngAfterContentInit() {\n this.optionSelectionChanges\n .pipe(takeUntilDestroyed(this._destroyRef))\n .subscribe((res: any) => {\n let source: any;\n\n if (res instanceof Option) {\n source = res;\n } else if (res && res.source instanceof Option) {\n source = res.source;\n } else {\n source = res;\n }\n\n if (source instanceof Option) {\n this._value = source.value();\n } else if (source && typeof source.value === 'function') {\n this._value = source.value();\n } else {\n this._value = source.value;\n }\n this._selectOptionByValue();\n this.onChange(this._value);\n\n if (!this.multiple) {\n this._menu?.close('click');\n }\n })\n ;\n\n this._options$\n .pipe(takeUntilDestroyed(this._destroyRef))\n .subscribe(() => {\n this._selectOptionByValue();\n });\n\n this._ngsOptions$\n .pipe(takeUntilDestroyed(this._destroyRef))\n .subscribe(() => {\n this._selectOptionByValue();\n });\n }\n\n private _selectOptionByValue() {\n const options = this.options();\n const ngsOptions = this.ngsOptions();\n\n options.forEach(option => {\n if (option.value === this._value) {\n option.select();\n } else {\n option.deselect();\n }\n });\n\n ngsOptions.forEach(option => {\n if (option.value() === this._value) {\n option.select();\n } else {\n option.deselect();\n }\n });\n this._changeDetectorRef.markForCheck();\n }\n\n writeValue(newValue: any): void {\n if (newValue !== this._value) {\n this._value = newValue;\n this._selectOptionByValue();\n }\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -1,19 +1,19 @@
|
|
|
1
1
|
import { FocusMonitor } from '@angular/cdk/a11y';
|
|
2
2
|
import { coerceBooleanProperty } from '@angular/cdk/coercion';
|
|
3
3
|
import * as i0 from '@angular/core';
|
|
4
|
-
import { Injectable,
|
|
4
|
+
import { Injectable, inject, DestroyRef, ChangeDetectorRef, ElementRef, viewChild, signal, output, computed, input, booleanAttribute, effect, Input as Input$1, Optional, Self, Component, Pipe } from '@angular/core';
|
|
5
5
|
import * as i1 from '@angular/forms';
|
|
6
6
|
import { NgForm, ReactiveFormsModule, FormsModule, NG_VALIDATORS } from '@angular/forms';
|
|
7
7
|
import * as i2 from '@ngstarter-ui/components/core';
|
|
8
8
|
import { ErrorStateMatcher, Ripple } from '@ngstarter-ui/components/core';
|
|
9
9
|
import { FormFieldControl } from '@ngstarter-ui/components/form-field';
|
|
10
|
-
import { MenuTrigger, Menu, MenuItem } from '@ngstarter-ui/components/menu';
|
|
10
|
+
import { MenuTrigger, Menu, MenuHeader, MenuItem, MenuDivider } from '@ngstarter-ui/components/menu';
|
|
11
11
|
import { parsePhoneNumber, parsePhoneNumberFromString, AsYouType } from 'libphonenumber-js';
|
|
12
12
|
import { Subject } from 'rxjs';
|
|
13
13
|
import { Icon } from '@ngstarter-ui/components/icon';
|
|
14
14
|
import { Input } from '@ngstarter-ui/components/input';
|
|
15
15
|
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
16
|
-
import {
|
|
16
|
+
import { Button } from '@ngstarter-ui/components/button';
|
|
17
17
|
|
|
18
18
|
class CountryCode {
|
|
19
19
|
allCountries = [
|
|
@@ -286,27 +286,10 @@ const phoneValidator = (control) => {
|
|
|
286
286
|
return null;
|
|
287
287
|
};
|
|
288
288
|
|
|
289
|
-
class SearchPipe {
|
|
290
|
-
transform(countries, searchCriteria) {
|
|
291
|
-
if (!searchCriteria || searchCriteria === '') {
|
|
292
|
-
return countries;
|
|
293
|
-
}
|
|
294
|
-
return countries.filter((country) => {
|
|
295
|
-
return `${country.name}${country.phoneCode}`
|
|
296
|
-
.toLowerCase()
|
|
297
|
-
.includes(searchCriteria.toLowerCase());
|
|
298
|
-
});
|
|
299
|
-
}
|
|
300
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: SearchPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
|
|
301
|
-
static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "21.2.4", ngImport: i0, type: SearchPipe, isStandalone: true, name: "search" });
|
|
302
|
-
}
|
|
303
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: SearchPipe, decorators: [{
|
|
304
|
-
type: Pipe,
|
|
305
|
-
args: [{ name: 'search' }]
|
|
306
|
-
}] });
|
|
307
|
-
|
|
308
289
|
class PhoneInput {
|
|
309
290
|
ngControl;
|
|
291
|
+
static COUNTRY_RENDER_CHUNK_SIZE = 32;
|
|
292
|
+
static COUNTRY_RENDER_CHUNK_DELAY = 50;
|
|
310
293
|
_destroyRef = inject(DestroyRef);
|
|
311
294
|
_changeDetectorRef = inject(ChangeDetectorRef);
|
|
312
295
|
countryCodeData = inject(CountryCode);
|
|
@@ -315,7 +298,7 @@ class PhoneInput {
|
|
|
315
298
|
_errorStateMatcher = inject(ErrorStateMatcher);
|
|
316
299
|
_parentForm = inject(NgForm, { optional: true });
|
|
317
300
|
static nextId = 0;
|
|
318
|
-
|
|
301
|
+
searchInput = viewChild('searchInput', ...(ngDevMode ? [{ debugName: "searchInput" }] : /* istanbul ignore next */ []));
|
|
319
302
|
focusable = viewChild.required('focusable');
|
|
320
303
|
_focused = signal(false, ...(ngDevMode ? [{ debugName: "_focused" }] : /* istanbul ignore next */ []));
|
|
321
304
|
_errorState = signal(false, ...(ngDevMode ? [{ debugName: "_errorState" }] : /* istanbul ignore next */ []));
|
|
@@ -331,8 +314,25 @@ class PhoneInput {
|
|
|
331
314
|
selectedCountry = signal(null, ...(ngDevMode ? [{ debugName: "selectedCountry" }] : /* istanbul ignore next */ []));
|
|
332
315
|
numberInstance;
|
|
333
316
|
_value;
|
|
334
|
-
|
|
317
|
+
searchTerm = signal('', ...(ngDevMode ? [{ debugName: "searchTerm" }] : /* istanbul ignore next */ []));
|
|
318
|
+
visibleCountryCount = signal(PhoneInput.COUNTRY_RENDER_CHUNK_SIZE, ...(ngDevMode ? [{ debugName: "visibleCountryCount" }] : /* istanbul ignore next */ []));
|
|
319
|
+
filteredCountries = computed(() => {
|
|
320
|
+
const searchTerm = this.searchTerm().trim().toLowerCase();
|
|
321
|
+
if (!searchTerm) {
|
|
322
|
+
return this.allCountries;
|
|
323
|
+
}
|
|
324
|
+
return this.allCountries.filter((country) => {
|
|
325
|
+
return `${country.name}${country.phoneCode}`
|
|
326
|
+
.toLowerCase()
|
|
327
|
+
.includes(searchTerm);
|
|
328
|
+
});
|
|
329
|
+
}, ...(ngDevMode ? [{ debugName: "filteredCountries" }] : /* istanbul ignore next */ []));
|
|
330
|
+
visibleCountries = computed(() => {
|
|
331
|
+
return this.filteredCountries().slice(0, this.visibleCountryCount());
|
|
332
|
+
}, ...(ngDevMode ? [{ debugName: "visibleCountries" }] : /* istanbul ignore next */ []));
|
|
335
333
|
_previousFormattedNumber;
|
|
334
|
+
_countryRenderTimeout;
|
|
335
|
+
_countrySearchFocusTimeout;
|
|
336
336
|
onTouched = () => { };
|
|
337
337
|
propagateChange = (_) => { };
|
|
338
338
|
get focused() {
|
|
@@ -445,6 +445,7 @@ class PhoneInput {
|
|
|
445
445
|
this._changeDetectorRef.detectChanges();
|
|
446
446
|
}
|
|
447
447
|
ngOnDestroy() {
|
|
448
|
+
this.clearCountryMenuTimeouts();
|
|
448
449
|
this.stateChanges.complete();
|
|
449
450
|
this._focusMonitor.stopMonitoring(this._elementRef);
|
|
450
451
|
}
|
|
@@ -492,6 +493,69 @@ class PhoneInput {
|
|
|
492
493
|
this.onPhoneNumberChange();
|
|
493
494
|
el.focus();
|
|
494
495
|
}
|
|
496
|
+
focusSearchInput() {
|
|
497
|
+
this.searchInput()?.nativeElement.focus();
|
|
498
|
+
}
|
|
499
|
+
openCountryMenu() {
|
|
500
|
+
this.visibleCountryCount.set(PhoneInput.COUNTRY_RENDER_CHUNK_SIZE);
|
|
501
|
+
this.scheduleCountryRendering();
|
|
502
|
+
this._countrySearchFocusTimeout = setTimeout(() => this.focusSearchInput());
|
|
503
|
+
}
|
|
504
|
+
closeCountryMenu() {
|
|
505
|
+
this.clearCountryMenuTimeouts();
|
|
506
|
+
this.searchTerm.set('');
|
|
507
|
+
this.visibleCountryCount.set(PhoneInput.COUNTRY_RENDER_CHUNK_SIZE);
|
|
508
|
+
}
|
|
509
|
+
onCountrySearch(searchTerm) {
|
|
510
|
+
this.searchTerm.set(searchTerm);
|
|
511
|
+
this.visibleCountryCount.set(PhoneInput.COUNTRY_RENDER_CHUNK_SIZE);
|
|
512
|
+
this.scheduleCountryRendering();
|
|
513
|
+
}
|
|
514
|
+
clearSearch(event) {
|
|
515
|
+
event.stopPropagation();
|
|
516
|
+
this.onCountrySearch('');
|
|
517
|
+
this.focusSearchInput();
|
|
518
|
+
}
|
|
519
|
+
countryFlagEmoji(shortCode) {
|
|
520
|
+
if (!shortCode || shortCode.length !== 2) {
|
|
521
|
+
return '';
|
|
522
|
+
}
|
|
523
|
+
const upperShortCode = shortCode.toUpperCase();
|
|
524
|
+
return Array.from(upperShortCode)
|
|
525
|
+
.map((letter) => String.fromCodePoint(0x1F1E6 + letter.charCodeAt(0) - 65))
|
|
526
|
+
.join('');
|
|
527
|
+
}
|
|
528
|
+
scheduleCountryRendering() {
|
|
529
|
+
this.clearCountryRenderTimeout();
|
|
530
|
+
if (this.visibleCountryCount() >= this.filteredCountries().length) {
|
|
531
|
+
return;
|
|
532
|
+
}
|
|
533
|
+
this._countryRenderTimeout = setTimeout(() => {
|
|
534
|
+
this.visibleCountryCount.update((count) => {
|
|
535
|
+
return Math.min(count + PhoneInput.COUNTRY_RENDER_CHUNK_SIZE, this.filteredCountries().length);
|
|
536
|
+
});
|
|
537
|
+
this.scheduleCountryRendering();
|
|
538
|
+
this._changeDetectorRef.markForCheck();
|
|
539
|
+
}, PhoneInput.COUNTRY_RENDER_CHUNK_DELAY);
|
|
540
|
+
}
|
|
541
|
+
clearCountryMenuTimeouts() {
|
|
542
|
+
this.clearCountryRenderTimeout();
|
|
543
|
+
this.clearCountrySearchFocusTimeout();
|
|
544
|
+
}
|
|
545
|
+
clearCountryRenderTimeout() {
|
|
546
|
+
if (!this._countryRenderTimeout) {
|
|
547
|
+
return;
|
|
548
|
+
}
|
|
549
|
+
clearTimeout(this._countryRenderTimeout);
|
|
550
|
+
this._countryRenderTimeout = undefined;
|
|
551
|
+
}
|
|
552
|
+
clearCountrySearchFocusTimeout() {
|
|
553
|
+
if (!this._countrySearchFocusTimeout) {
|
|
554
|
+
return;
|
|
555
|
+
}
|
|
556
|
+
clearTimeout(this._countrySearchFocusTimeout);
|
|
557
|
+
this._countrySearchFocusTimeout = undefined;
|
|
558
|
+
}
|
|
495
559
|
getCountry(shortCode) {
|
|
496
560
|
return (this.allCountries.find((c) => c.shortCode === shortCode.toLowerCase()) || {
|
|
497
561
|
name: 'UN',
|
|
@@ -619,7 +683,7 @@ class PhoneInput {
|
|
|
619
683
|
useValue: phoneValidator,
|
|
620
684
|
multi: true,
|
|
621
685
|
},
|
|
622
|
-
], viewQueries: [{ propertyName: "
|
|
686
|
+
], viewQueries: [{ propertyName: "searchInput", first: true, predicate: ["searchInput"], descendants: true, isSignal: true }, { propertyName: "focusable", first: true, predicate: ["focusable"], descendants: true, isSignal: true }], exportAs: ["ngsPhoneInput"], ngImport: i0, template: "<div class=\"phone-input-container\">\n <button\n type=\"button\"\n ngsRipple\n [ngsMenuTriggerFor]=\"menu\"\n class=\"country-selector pe-1.5\"\n [disabled]=\"disabled\"\n (menuOpened)=\"openCountryMenu()\"\n (menuClosed)=\"closeCountryMenu()\">\n @if (selectedCountry()) {\n <span class=\"flag-icon\" aria-hidden=\"true\">{{ countryFlagEmoji(selectedCountry()?.shortCode) }}</span>\n\n @if (selectedCountry()?.phoneCode) {\n <span class=\"country-selector-code\">{{ selectedCountry()?.phoneCode }}</span>\n }\n }\n <ngs-icon name=\"fluent:chevron-down-24-regular\" class=\"text-neutral-500 size-4 relative ms-0.5\"/>\n </button>\n\n <input\n ngsInput\n type=\"tel\"\n inputmode=\"tel\"\n [autocomplete]=\"autocomplete()\"\n (blur)=\"onTouched()\"\n (keypress)=\"onInputKeyPress($event)\"\n [(ngModel)]=\"phoneNumber\"\n (ngModelChange)=\"onPhoneNumberChange()\"\n [errorStateMatcher]=\"errorStateMatcher()\"\n [placeholder]=\"_placeholder()\"\n [disabled]=\"disabled\"\n class=\"grow\"\n #focusable>\n</div>\n\n<ngs-menu #menu=\"ngsMenu\">\n <ngs-menu-header>\n <div class=\"sticky top-0 z-1 bg-surface-container-lowest\">\n <input #searchInput\n type=\"text\"\n placeholder=\"Search...\"\n autocomplete=\"off\"\n [ngModel]=\"searchTerm()\"\n (ngModelChange)=\"onCountrySearch($event)\"\n class=\"w-full text-sm focus:outline-none border-b border-border focus:border-b-primary h-14 px-3\">\n @if (searchTerm().trim()) {\n <div class=\"absolute end-1 top-1/2 -translate-y-1/2\">\n <button\n ngsIconButton\n (click)=\"clearSearch($event)\"\n class=\"clear-button\"\n type=\"button\"\n aria-label=\"Clear search\">\n <ngs-icon name=\"fluent:dismiss-24-regular\"/>\n </button>\n </div>\n }\n </div>\n </ngs-menu-header>\n\n @for (country of preferredCountriesInDropDown; track country.shortCode) {\n <button type=\"button\" ngs-menu-item (click)=\"onCountrySelect(country, focusable)\">\n <div class=\"flex items-center gap-2\">\n <span class=\"flag-icon-option text-2xl\" aria-hidden=\"true\">{{ countryFlagEmoji(country.shortCode) }}</span>\n <div class=\"label-wrapper\">\n {{ country.name }}\n <span [class.whitespace-nowrap]=\"!searchTerm()\" class=\"text-neutral-500\">{{ country.phoneCode }}</span>\n </div>\n </div>\n </button>\n }\n\n @if (preferredCountriesInDropDown.length) {\n <ngs-menu-divider/>\n }\n\n @for (country of visibleCountries(); track country.shortCode) {\n <button type=\"button\" ngs-menu-item (click)=\"onCountrySelect(country, focusable)\">\n <div class=\"flex items-center gap-2\">\n <span class=\"flag-icon-option text-2xl\" aria-hidden=\"true\">{{ countryFlagEmoji(country.shortCode) }}</span>\n <div>\n {{ country.name }}\n <span [class.whitespace-nowrap]=\"!searchTerm()\" class=\"text-neutral-500\">{{ country.phoneCode }}</span>\n </div>\n </div>\n </button>\n } @empty {\n @if (searchTerm()) {\n <div class=\"text-sm px-4 py-3\">\n <span i18n>No countries found</span>.\n </div>\n }\n }\n\n @if (visibleCountryCount() < filteredCountries().length) {\n <div class=\"country-loading\">\n Loading more countries...\n </div>\n }\n</ngs-menu>\n", styles: [":host{--ngs-phone-input-color: var(--ngs-color-neutral-600);--ngs-phone-input-opacity: 0}@media print{:host{--ngs-phone-input-flag-display: none}}:host .flag-icon{display:var(--ngs-phone-input-flag-display, inline-flex);align-items:center;justify-content:center;width:22px;margin-inline-end:calc(var(--spacing, .25rem) * 1);font-size:22px;line-height:1}:host.is-floating .country-selector{opacity:1}:host .phone-input-container{display:flex;align-items:center}:host .country-empty,:host .country-loading{padding:calc(var(--spacing, .25rem) * 3);color:var(--ngs-color-on-surface-variant);font-size:var(--ngs-font-size-sm)}:host .country-loading{padding-block:calc(var(--spacing, .25rem) * 2)}:host .phone-input-container input{border:none;background:none;outline:none;font:inherit;width:max-content;box-sizing:border-box;padding-right:6px;padding-left:4px;position:relative;z-index:0}:host .icon-wrapper{padding-right:24px}:host .mdc-button__label{margin-right:auto}:host .country-selector{display:flex;align-items:center;line-height:0;border-radius:0;color:var(--ngs-phone-input-color);flex-shrink:0;height:initial;opacity:var(--ngs-phone-input-opacity, 0);transition:opacity .2s;border:unset}:host .country-selector:disabled{opacity:.8}:host .country-selector-code{color:var(--ngs-phone-input-color);padding-right:0}:host-context(html.dark){--ngs-phone-input-color: var(--ngs-color-neutral-500)}\n/*! tailwindcss v4.2.2 | MIT License | https://tailwindcss.com */\n"], dependencies: [{ kind: "directive", type: Ripple, selector: "[ngsRipple]", inputs: ["ngsRippleColor", "ngsRippleUnbounded", "ngsRippleCentered", "ngsRippleRadius", "ngsRippleAnimation", "ngsRippleDisabled", "ngsRippleTrigger"], outputs: ["ngsRippleCenteredChange", "ngsRippleDisabledChange", "ngsRippleTriggerChange"], exportAs: ["ngsRipple"] }, { kind: "directive", type: MenuTrigger, selector: "[ngsMenuTriggerFor]", inputs: ["ngsMenuTriggerFor", "ngsMenuTriggerData", "ngsMenuDisabled", "xPosition", "yPosition", "ngsMenuTriggerRestoreFocus"], outputs: ["menuOpened", "menuClosed"], exportAs: ["ngsMenuTrigger"] }, { kind: "component", type: Icon, selector: "ngs-icon", inputs: ["name"], exportAs: ["ngsIcon"] }, { kind: "component", type: Menu, selector: "ngs-menu", inputs: ["role", "classList", "xPosition", "yPosition"], outputs: ["closed"], exportAs: ["ngsMenu"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: MenuHeader, selector: "ngs-menu-header", exportAs: ["ngsMenuHeader"] }, { kind: "component", type: MenuItem, selector: "ngs-menu-item, [ngs-menu-item]", inputs: ["disabled", "role", "selected"], outputs: ["_triggered"], exportAs: ["ngsMenuItem"] }, { kind: "component", type: MenuDivider, selector: "ngs-menu-divider" }, { kind: "directive", type: Input, selector: "input[ngsInput], textarea[ngsInput]", inputs: ["id", "placeholder", "required", "disabled", "readonly", "errorStateMatcher"], exportAs: ["ngsInput"] }, { kind: "component", type: Button, selector: " button[ngsButton], button[ngsIconButton], a[ngsButton], a[ngsIconButton] ", inputs: ["ngsButton", "ngsIconButton", "loading", "disabled", "disabledInteractive", "disableRipple", "reverse", "fullWidth", "hideTextOnMobile"], exportAs: ["ngsButton"] }] });
|
|
623
687
|
}
|
|
624
688
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: PhoneInput, decorators: [{
|
|
625
689
|
type: Component,
|
|
@@ -630,10 +694,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.4", ngImpor
|
|
|
630
694
|
Menu,
|
|
631
695
|
ReactiveFormsModule,
|
|
632
696
|
FormsModule,
|
|
697
|
+
MenuHeader,
|
|
633
698
|
MenuItem,
|
|
699
|
+
MenuDivider,
|
|
634
700
|
Input,
|
|
635
|
-
|
|
636
|
-
Divider,
|
|
701
|
+
Button,
|
|
637
702
|
], providers: [
|
|
638
703
|
CountryCode,
|
|
639
704
|
{
|
|
@@ -648,7 +713,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.4", ngImpor
|
|
|
648
713
|
], host: {
|
|
649
714
|
'class': 'ngs-phone-input',
|
|
650
715
|
'[class.is-floating]': 'shouldLabelFloat',
|
|
651
|
-
}, template: "<div class=\"phone-input-container\">\n <button\n type=\"button\"\n ngsRipple\n [ngsMenuTriggerFor]=\"menu\"\n class=\"country-selector pe-1.5\"\n [disabled]=\"disabled\"\n (menuOpened)=\"
|
|
716
|
+
}, template: "<div class=\"phone-input-container\">\n <button\n type=\"button\"\n ngsRipple\n [ngsMenuTriggerFor]=\"menu\"\n class=\"country-selector pe-1.5\"\n [disabled]=\"disabled\"\n (menuOpened)=\"openCountryMenu()\"\n (menuClosed)=\"closeCountryMenu()\">\n @if (selectedCountry()) {\n <span class=\"flag-icon\" aria-hidden=\"true\">{{ countryFlagEmoji(selectedCountry()?.shortCode) }}</span>\n\n @if (selectedCountry()?.phoneCode) {\n <span class=\"country-selector-code\">{{ selectedCountry()?.phoneCode }}</span>\n }\n }\n <ngs-icon name=\"fluent:chevron-down-24-regular\" class=\"text-neutral-500 size-4 relative ms-0.5\"/>\n </button>\n\n <input\n ngsInput\n type=\"tel\"\n inputmode=\"tel\"\n [autocomplete]=\"autocomplete()\"\n (blur)=\"onTouched()\"\n (keypress)=\"onInputKeyPress($event)\"\n [(ngModel)]=\"phoneNumber\"\n (ngModelChange)=\"onPhoneNumberChange()\"\n [errorStateMatcher]=\"errorStateMatcher()\"\n [placeholder]=\"_placeholder()\"\n [disabled]=\"disabled\"\n class=\"grow\"\n #focusable>\n</div>\n\n<ngs-menu #menu=\"ngsMenu\">\n <ngs-menu-header>\n <div class=\"sticky top-0 z-1 bg-surface-container-lowest\">\n <input #searchInput\n type=\"text\"\n placeholder=\"Search...\"\n autocomplete=\"off\"\n [ngModel]=\"searchTerm()\"\n (ngModelChange)=\"onCountrySearch($event)\"\n class=\"w-full text-sm focus:outline-none border-b border-border focus:border-b-primary h-14 px-3\">\n @if (searchTerm().trim()) {\n <div class=\"absolute end-1 top-1/2 -translate-y-1/2\">\n <button\n ngsIconButton\n (click)=\"clearSearch($event)\"\n class=\"clear-button\"\n type=\"button\"\n aria-label=\"Clear search\">\n <ngs-icon name=\"fluent:dismiss-24-regular\"/>\n </button>\n </div>\n }\n </div>\n </ngs-menu-header>\n\n @for (country of preferredCountriesInDropDown; track country.shortCode) {\n <button type=\"button\" ngs-menu-item (click)=\"onCountrySelect(country, focusable)\">\n <div class=\"flex items-center gap-2\">\n <span class=\"flag-icon-option text-2xl\" aria-hidden=\"true\">{{ countryFlagEmoji(country.shortCode) }}</span>\n <div class=\"label-wrapper\">\n {{ country.name }}\n <span [class.whitespace-nowrap]=\"!searchTerm()\" class=\"text-neutral-500\">{{ country.phoneCode }}</span>\n </div>\n </div>\n </button>\n }\n\n @if (preferredCountriesInDropDown.length) {\n <ngs-menu-divider/>\n }\n\n @for (country of visibleCountries(); track country.shortCode) {\n <button type=\"button\" ngs-menu-item (click)=\"onCountrySelect(country, focusable)\">\n <div class=\"flex items-center gap-2\">\n <span class=\"flag-icon-option text-2xl\" aria-hidden=\"true\">{{ countryFlagEmoji(country.shortCode) }}</span>\n <div>\n {{ country.name }}\n <span [class.whitespace-nowrap]=\"!searchTerm()\" class=\"text-neutral-500\">{{ country.phoneCode }}</span>\n </div>\n </div>\n </button>\n } @empty {\n @if (searchTerm()) {\n <div class=\"text-sm px-4 py-3\">\n <span i18n>No countries found</span>.\n </div>\n }\n }\n\n @if (visibleCountryCount() < filteredCountries().length) {\n <div class=\"country-loading\">\n Loading more countries...\n </div>\n }\n</ngs-menu>\n", styles: [":host{--ngs-phone-input-color: var(--ngs-color-neutral-600);--ngs-phone-input-opacity: 0}@media print{:host{--ngs-phone-input-flag-display: none}}:host .flag-icon{display:var(--ngs-phone-input-flag-display, inline-flex);align-items:center;justify-content:center;width:22px;margin-inline-end:calc(var(--spacing, .25rem) * 1);font-size:22px;line-height:1}:host.is-floating .country-selector{opacity:1}:host .phone-input-container{display:flex;align-items:center}:host .country-empty,:host .country-loading{padding:calc(var(--spacing, .25rem) * 3);color:var(--ngs-color-on-surface-variant);font-size:var(--ngs-font-size-sm)}:host .country-loading{padding-block:calc(var(--spacing, .25rem) * 2)}:host .phone-input-container input{border:none;background:none;outline:none;font:inherit;width:max-content;box-sizing:border-box;padding-right:6px;padding-left:4px;position:relative;z-index:0}:host .icon-wrapper{padding-right:24px}:host .mdc-button__label{margin-right:auto}:host .country-selector{display:flex;align-items:center;line-height:0;border-radius:0;color:var(--ngs-phone-input-color);flex-shrink:0;height:initial;opacity:var(--ngs-phone-input-opacity, 0);transition:opacity .2s;border:unset}:host .country-selector:disabled{opacity:.8}:host .country-selector-code{color:var(--ngs-phone-input-color);padding-right:0}:host-context(html.dark){--ngs-phone-input-color: var(--ngs-color-neutral-500)}\n/*! tailwindcss v4.2.2 | MIT License | https://tailwindcss.com */\n"] }]
|
|
652
717
|
}], ctorParameters: () => [{ type: i1.NgControl, decorators: [{
|
|
653
718
|
type: Optional
|
|
654
719
|
}, {
|
|
@@ -657,11 +722,30 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.4", ngImpor
|
|
|
657
722
|
type: Optional
|
|
658
723
|
}] }, { type: i1.FormGroupDirective, decorators: [{
|
|
659
724
|
type: Optional
|
|
660
|
-
}] }, { type: i2.ErrorStateMatcher }], propDecorators: {
|
|
725
|
+
}] }, { type: i2.ErrorStateMatcher }], propDecorators: { searchInput: [{ type: i0.ViewChild, args: ['searchInput', { isSignal: true }] }], focusable: [{ type: i0.ViewChild, args: ['focusable', { isSignal: true }] }], countryChanged: [{ type: i0.Output, args: ["countryChanged"] }], autocomplete: [{ type: i0.Input, args: [{ isSignal: true, alias: "autocomplete", required: false }] }], errorStateMatcher: [{ type: i0.Input, args: [{ isSignal: true, alias: "errorStateMatcher", required: false }] }], onlyCountries: [{ type: i0.Input, args: [{ isSignal: true, alias: "onlyCountries", required: false }] }], preferredCountries: [{ type: i0.Input, args: [{ isSignal: true, alias: "preferredCountries", required: false }] }], format: [{ type: i0.Input, args: [{ isSignal: true, alias: "format", required: false }] }], defaultSelectedCountryCode: [{ type: i0.Input, args: [{ isSignal: true, alias: "defaultSelectedCountryCode", required: false }] }], _placeholder: [{ type: i0.Input, args: [{ isSignal: true, alias: "placeholder", required: false }] }], required: [{
|
|
661
726
|
type: Input$1,
|
|
662
727
|
args: [{ alias: 'required', transform: booleanAttribute }]
|
|
663
728
|
}], phoneDisabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }] } });
|
|
664
729
|
|
|
730
|
+
class SearchPipe {
|
|
731
|
+
transform(countries, searchCriteria) {
|
|
732
|
+
if (!searchCriteria || searchCriteria === '') {
|
|
733
|
+
return countries;
|
|
734
|
+
}
|
|
735
|
+
return countries.filter((country) => {
|
|
736
|
+
return `${country.name}${country.phoneCode}`
|
|
737
|
+
.toLowerCase()
|
|
738
|
+
.includes(searchCriteria.toLowerCase());
|
|
739
|
+
});
|
|
740
|
+
}
|
|
741
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: SearchPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
|
|
742
|
+
static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "21.2.4", ngImport: i0, type: SearchPipe, isStandalone: true, name: "search" });
|
|
743
|
+
}
|
|
744
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: SearchPipe, decorators: [{
|
|
745
|
+
type: Pipe,
|
|
746
|
+
args: [{ name: 'search' }]
|
|
747
|
+
}] });
|
|
748
|
+
|
|
665
749
|
/**
|
|
666
750
|
* Generated bundle index. Do not edit.
|
|
667
751
|
*/
|