@fundamental-ngx/core 0.65.0-rc.15 → 0.65.0-rc.17
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/fesm2022/fundamental-ngx-core-avatar-group.mjs +1 -1
- package/fesm2022/fundamental-ngx-core-avatar-group.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-datetime-picker.mjs +21 -0
- package/fesm2022/fundamental-ngx-core-datetime-picker.mjs.map +1 -1
- package/package.json +3 -3
- package/schematics/package.json +1 -1
- package/types/fundamental-ngx-core-datetime-picker.d.ts +3 -1
|
@@ -83,7 +83,7 @@ class AvatarGroupItemRendererDirective {
|
|
|
83
83
|
const width = rect.width;
|
|
84
84
|
const marginLeft = parseFloat(style.marginLeft);
|
|
85
85
|
const marginRight = parseFloat(style.marginRight);
|
|
86
|
-
if (
|
|
86
|
+
if (width > 0 && !isNaN(marginLeft) && !isNaN(marginRight)) {
|
|
87
87
|
this._lastSavedWidth = width + marginLeft + marginRight;
|
|
88
88
|
}
|
|
89
89
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fundamental-ngx-core-avatar-group.mjs","sources":["../../../../libs/core/avatar-group/tokens.ts","../../../../libs/core/avatar-group/directives/avatar-group-item.directive.ts","../../../../libs/core/avatar-group/directives/avatar-group-item-renderer.directive.ts","../../../../libs/core/avatar-group/components/avatar-group-host.component.ts","../../../../libs/core/avatar-group/components/avatar-group-overflow-button.component.ts","../../../../libs/core/avatar-group/components/default-avatar-group-overflow-body/default-avatar-group-overflow-body.component.ts","../../../../libs/core/avatar-group/components/default-avatar-group-overflow-body/default-avatar-group-overflow-body.component.html","../../../../libs/core/avatar-group/directives/avatar-group-internal-overflow-button.directive.ts","../../../../libs/core/avatar-group/directives/avatar-group-overflow-body.directive.ts","../../../../libs/core/avatar-group/directives/avatar-group-overflow-button.directive.ts","../../../../libs/core/avatar-group/avatar-group.component.ts","../../../../libs/core/avatar-group/avatar-group.component.html","../../../../libs/core/avatar-group/components/avatar-group-overflow-body/avatar-group-overflow-body.component.ts","../../../../libs/core/avatar-group/components/avatar-group-overflow-body/avatar-group-overflow-body.component.html","../../../../libs/core/avatar-group/avatar-group.module.ts","../../../../libs/core/avatar-group/fundamental-ngx-core-avatar-group.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\nimport { AvatarGroupHostConfig } from './types';\n\nexport const AVATAR_GROUP_HOST_CONFIG = new InjectionToken<AvatarGroupHostConfig>(\n 'AvatarGroup host configuration. Is provided by AvatarGroupComponent.'\n);\n","import { Directive, inject, Input, TemplateRef } from '@angular/core';\n\n/**\n * Avatar group item directive, used to provide a template for the avatar group item.\n */\n@Directive({\n selector: '[fdAvatarGroupItem]',\n standalone: true\n})\nexport class AvatarGroupItemDirective {\n /**\n * Text, which will be displayed when in overflow popover and activated\n * */\n @Input('fdAvatarGroupItemTitle')\n title: string;\n\n /**\n * If set to true, item will never be hidden in overflow popover\n * */\n @Input('fdAvatarGroupItemForceVisibility')\n forceVisibility = false;\n\n /** @hidden */\n _templateRef: TemplateRef<void> = inject(TemplateRef);\n\n /**\n * Template for the details of the avatar group item.\n * This template it used to render additional information in the overflow popover.\n * */\n @Input('fdAvatarGroupItem')\n set details(detailsTemplate: TemplateRef<void> | string) {\n if (typeof detailsTemplate === 'string') {\n return;\n }\n this._details = detailsTemplate;\n }\n\n get details(): TemplateRef<void> {\n return this._details;\n }\n\n /** @hidden */\n private _details: TemplateRef<void>;\n}\n","import { CdkPortalOutlet, TemplatePortal } from '@angular/cdk/portal';\nimport { Directive, EmbeddedViewRef, Input, OnInit, ViewContainerRef, inject } from '@angular/core';\nimport { FDK_FOCUSABLE_ITEM_DIRECTIVE, FocusableItem, Nullable } from '@fundamental-ngx/cdk/utils';\nimport { BehaviorSubject, Observable, fromEvent } from 'rxjs';\nimport { filter, switchMap } from 'rxjs/operators';\nimport { AVATAR_GROUP_HOST_CONFIG } from '../tokens';\nimport { AvatarGroupItemDirective } from './avatar-group-item.directive';\n@Directive({\n selector: '[fdAvatarGroupItemPortal]',\n exportAs: 'fdAvatarGroupItemPortal',\n standalone: true,\n providers: [\n {\n provide: FDK_FOCUSABLE_ITEM_DIRECTIVE,\n useExisting: AvatarGroupItemRendererDirective\n },\n CdkPortalOutlet\n ]\n})\nexport class AvatarGroupItemRendererDirective implements OnInit, FocusableItem {\n /**\n * Avatar group item to be rendered.\n **/\n @Input() avatarGroupItem: AvatarGroupItemDirective;\n\n /**\n * Whether the item should be forced to be visible.\n **/\n @Input()\n forceVisibility = false;\n\n /**\n * HTML element of the item.\n **/\n element$: Observable<Nullable<HTMLElement>>;\n\n /** @hidden */\n keydown: Observable<KeyboardEvent>;\n\n /**\n * Whether the item is visible.\n **/\n get visible(): boolean {\n return this._portalOutlet.hasAttached();\n }\n\n /**\n * Currently rendered element's HTMLElement.\n **/\n get element(): HTMLElement {\n return this._embeddedViewRef?.rootNodes[0] as HTMLElement;\n }\n\n /**\n * Rendered element's width or it's last saved width.\n **/\n get width(): number {\n if (this.visible) {\n const rect = this.element.getBoundingClientRect();\n const style = getComputedStyle(this.element);\n const width = rect.width;\n const marginLeft = parseFloat(style.marginLeft);\n const marginRight = parseFloat(style.marginRight);\n\n if (!isNaN(width) && !isNaN(marginLeft) && !isNaN(marginRight)) {\n this._lastSavedWidth = width + marginLeft + marginRight;\n }\n }\n return this._lastSavedWidth;\n }\n\n /**\n * Rendered element's height or it's last saved height.\n **/\n get height(): number {\n if (this.visible) {\n this._lastSavedHeight =\n this.element.getBoundingClientRect().height +\n parseFloat(getComputedStyle(this.element).marginTop) +\n parseFloat(getComputedStyle(this.element).marginBottom);\n }\n return this._lastSavedHeight;\n }\n\n /** @hidden */\n private _portalOutlet = inject(CdkPortalOutlet, { host: true });\n\n /** @hidden */\n private _viewContainerRef = inject(ViewContainerRef);\n\n /**\n * @hidden\n **/\n private _element$ = new BehaviorSubject<Nullable<HTMLElement>>(null);\n\n /** @hidden */\n private _templatePortal?: TemplatePortal<void>;\n\n /** @hidden */\n private _isFocusable = true;\n\n /** @hidden */\n private _embeddedViewRef: EmbeddedViewRef<void>;\n\n /** @hidden */\n private _lastSavedWidth = 0;\n\n /** @hidden */\n private _lastSavedHeight = 0;\n\n /** @hidden */\n private _posInSet = 0;\n\n /** @hidden */\n private _setSize = 0;\n\n /** @hidden */\n private _hostConfig = inject(AVATAR_GROUP_HOST_CONFIG);\n\n /** @hidden */\n constructor() {\n this.element$ = this._element$.asObservable();\n this.keydown = this._element$.pipe(\n filter((element) => !!element),\n switchMap((element) => fromEvent(element as unknown as HTMLElement, 'keydown') as Observable<KeyboardEvent>)\n );\n }\n\n /** @hidden */\n ngOnInit(): void {\n this.show();\n }\n\n /**\n * Hides the item.\n **/\n hide(): void {\n this._portalOutlet.detach();\n this.setTabbable(false);\n this._isFocusable = false;\n }\n\n /**\n * Shows the item.\n **/\n show(): void {\n if (this.visible) {\n return;\n }\n if (!this._templatePortal) {\n this._templatePortal = new TemplatePortal(this.avatarGroupItem._templateRef, this._viewContainerRef);\n }\n this._embeddedViewRef = this._portalOutlet.attach(this._templatePortal);\n this._embeddedViewRef.detectChanges();\n this._element$.next(this.element);\n this.setTabbable(this._hostConfig.type === 'individual');\n this._isFocusable = this._hostConfig.type === 'individual';\n this._applyAriaPosition();\n }\n\n /**\n * Whether the item is focusable.\n **/\n isFocusable = (): boolean => this._isFocusable && this.visible;\n\n /**\n * Sets the tabbable state of the item.\n **/\n setTabbable(tabbable: boolean): void {\n this.element.tabIndex = tabbable ? 0 : -1;\n }\n\n /**\n * Sets aria-posinset and aria-setsize on the rendered element.\n * Stored values are applied immediately if the item is visible,\n * and re-applied on the next show() call otherwise.\n **/\n @Input()\n set posInSet(value: number) {\n this._posInSet = value;\n if (this.visible) {\n this._applyAriaPosition();\n }\n }\n\n get posInSet(): number {\n return this._posInSet;\n }\n\n /** @hidden */\n @Input()\n set setSize(value: number) {\n this._setSize = value;\n if (this.visible) {\n this._applyAriaPosition();\n }\n }\n\n get setSize(): number {\n return this._setSize;\n }\n\n /** @hidden */\n focus(): void {\n this.element?.focus();\n }\n\n /** @hidden */\n private _applyAriaPosition(): void {\n const el = this.element;\n if (!el || !this._posInSet || !this._setSize) {\n return;\n }\n el.setAttribute('aria-posinset', String(this._posInSet));\n el.setAttribute('aria-setsize', String(this._setSize));\n }\n}\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChildren,\n DestroyRef,\n ElementRef,\n inject,\n Input,\n OnChanges,\n OnInit,\n QueryList,\n signal,\n SimpleChanges,\n ViewEncapsulation\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport {\n applyCssClass,\n CssClassBuilder,\n HasElementRef,\n Nullable,\n ResizeObserverDirective\n} from '@fundamental-ngx/cdk/utils';\nimport { animationFrames, combineLatest, delayWhen, map, Observable, startWith, Subject } from 'rxjs';\nimport { AvatarGroupItemRendererDirective } from '../directives/avatar-group-item-renderer.directive';\nimport { AvatarGroupItemDirective } from '../directives/avatar-group-item.directive';\nimport { AvatarGroupHostConfig } from '../types';\n\n@Component({\n selector: 'fd-avatar-group-host',\n template: '<ng-content></ng-content>',\n imports: [],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n styleUrl: './avatar-group-host.component.scss'\n})\nexport class AvatarGroupHostComponent\n implements OnInit, AfterViewInit, OnChanges, HasElementRef, AvatarGroupHostConfig, CssClassBuilder\n{\n /**\n * The class to apply to the host element.\n **/\n @Input()\n class: Nullable<string>;\n\n /**\n * The type of the avatar group.\n * Options include 'individual' and 'group'.\n **/\n @Input()\n type: AvatarGroupHostConfig['type'];\n\n /**\n * The orientation of the avatar group.\n * Options include 'horizontal' and 'vertical'.\n **/\n @Input()\n orientation: AvatarGroupHostConfig['orientation'];\n\n /**\n * The size of the avatar group.\n * Options include 'xs', 's', 'm', 'l', and 'xl'.\n **/\n @Input()\n size: AvatarGroupHostConfig['size'];\n\n /**\n * The items to be rendered in the avatar group.\n **/\n @Input()\n items: QueryList<AvatarGroupItemDirective>;\n\n /**\n * @hidden\n * The portals to be rendered in the avatar group.\n **/\n @ContentChildren(AvatarGroupItemRendererDirective, { descendants: true })\n _portals: QueryList<AvatarGroupItemRendererDirective>;\n\n /** @hidden */\n _resizeEmitter: Observable<ResizeObserverEntry[]> = inject(ResizeObserverDirective).resizeEvents$;\n\n /** The reference to the host element */\n readonly elementRef = inject(ElementRef);\n\n /** @hidden */\n _hiddenItems = signal<AvatarGroupItemRendererDirective[]>([]);\n\n /** @hidden */\n private readonly _destroyRef = inject(DestroyRef);\n\n /** @hidden */\n private _cdr = inject(ChangeDetectorRef);\n\n /** @hidden */\n private _onChanges$ = new Subject<SimpleChanges>();\n\n /** @hidden */\n @applyCssClass\n buildComponentCssClass(): string[] {\n return [\n this.class || '',\n 'fd-avatar-group',\n this.type === 'individual' ? 'fd-avatar-group--individual-type' : '',\n this.type === 'group' ? 'fd-avatar-group--group-type' : '',\n this.orientation ? 'fd-avatar-group--' + this.orientation : '',\n this.size ? 'fd-avatar-group--' + this.size : ''\n ];\n }\n\n /** @hidden */\n ngOnInit(): void {\n this.buildComponentCssClass();\n }\n\n /** @hidden */\n ngOnChanges(changes: SimpleChanges): void {\n this.buildComponentCssClass();\n this._onChanges$.next(changes);\n }\n\n /** @hidden */\n ngAfterViewInit(): void {\n combineLatest([\n this._resizeEmitter.pipe(map((entries) => entries[0].contentRect.width)),\n this._portals.changes.pipe(\n startWith(this._portals),\n map((r) => r.toArray())\n ),\n this._onChanges$.pipe(startWith({}))\n ])\n .pipe(\n map(([containerWidth, items]) => this._calculateVisibility(containerWidth, items)),\n delayWhen(() => animationFrames()),\n takeUntilDestroyed(this._destroyRef)\n )\n .subscribe(({ hiddenItems, visibleItems }) => {\n const allItems = this._portals.toArray();\n const total = allItems.length;\n allItems.forEach((item, index) => {\n item.posInSet = index + 1;\n item.setSize = total;\n });\n visibleItems.forEach((item) => item.show());\n hiddenItems.forEach((item) => item.hide());\n this._cdr.detectChanges();\n this._hiddenItems.set(hiddenItems);\n });\n }\n\n /** @hidden */\n private _calculateVisibility(\n containerWidth: number,\n items: AvatarGroupItemRendererDirective[]\n ): {\n hiddenItems: AvatarGroupItemRendererDirective[];\n visibleItems: AvatarGroupItemRendererDirective[];\n } {\n if (this.orientation === 'vertical') {\n return {\n visibleItems: items,\n hiddenItems: []\n };\n }\n const visibleItems = items.filter((i) => i.forceVisibility);\n const hiddenItems: AvatarGroupItemRendererDirective[] = [];\n let accWidth = items.reduce((acc, item) => (item.forceVisibility ? acc + item.width : acc), 0);\n for (const item of items) {\n if (item.forceVisibility) {\n continue;\n }\n accWidth += item.width;\n if (accWidth <= containerWidth) {\n visibleItems.push(item);\n } else if (!item.forceVisibility) {\n hiddenItems.push(item);\n }\n }\n /* take last item from the visibleItems which is not forced to be visible and push it to the hiddenItems\n * This is done to free up the space for the overflow button\n */\n if (hiddenItems.length > 0) {\n const lastAllowedToBeHidden = visibleItems.reverse().findIndex((item) => !item.forceVisibility);\n hiddenItems.push(...visibleItems.splice(lastAllowedToBeHidden * -1, 1));\n }\n return {\n visibleItems,\n hiddenItems\n };\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n forwardRef,\n HostBinding,\n inject,\n Input,\n OnChanges,\n OnInit,\n ViewEncapsulation\n} from '@angular/core';\nimport {\n applyCssClass,\n ColorAccent,\n CssClassBuilder,\n FDK_FOCUSABLE_ITEM_DIRECTIVE,\n FocusableItemDirective,\n Nullable,\n Size\n} from '@fundamental-ngx/cdk/utils';\nimport { AVATAR_GROUP_HOST_CONFIG } from '../tokens';\n\n/**\n * Avatar group overflow button component.\n * This is used for the overflow button template.\n * Although any content can be projected as the overflow button, this component provides some styling and accessibility features.\n */\n@Component({\n selector: 'fd-avatar-group-overflow-button',\n template: ` <ng-content></ng-content>`,\n host: {\n role: 'button',\n '(keydown.enter)': 'elementRef.nativeElement.click()',\n '(keydown.space)': 'elementRef.nativeElement.click(); $event.preventDefault()'\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n standalone: true,\n providers: [\n {\n provide: FDK_FOCUSABLE_ITEM_DIRECTIVE,\n useExisting: forwardRef(() => AvatarGroupOverflowButtonComponent)\n }\n ]\n})\nexport class AvatarGroupOverflowButtonComponent\n extends FocusableItemDirective\n implements OnChanges, OnInit, CssClassBuilder\n{\n /**\n * Size of the overflow button.\n */\n @Input()\n size: Size = 'l';\n\n /**\n * Whether the overflow button should be displayed as a circle.\n */\n @Input()\n @HostBinding('class.fd-avatar--circle')\n circle = false;\n\n /**\n * A number from 1 to 10 representing the background color of the Avatar.\n */\n @Input() colorAccent: Nullable<ColorAccent> = null;\n\n /**\n * The class to apply to the host element.\n **/\n @Input()\n class: Nullable<string>;\n\n /** @hidden */\n constructor() {\n super();\n this.setFocusable(inject(AVATAR_GROUP_HOST_CONFIG).type === 'individual');\n }\n\n /** @hidden */\n @applyCssClass\n buildComponentCssClass(): string[] {\n return [\n this.class || '',\n 'fd-avatar fd-avatar--overflow',\n 'fd-avatar--' + this.size,\n this.colorAccent ? 'fd-avatar--' + this.colorAccent : ''\n ];\n }\n\n /** @hidden */\n ngOnInit(): void {\n this.buildComponentCssClass();\n }\n\n /** @hidden */\n ngOnChanges(): void {\n this.buildComponentCssClass();\n }\n}\n","import { PortalModule } from '@angular/cdk/portal';\nimport { NgTemplateOutlet } from '@angular/common';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n Input,\n OnDestroy,\n QueryList,\n Renderer2,\n ViewChildren,\n ViewEncapsulation,\n computed,\n inject,\n input,\n output\n} from '@angular/core';\nimport { FocusableListDirective, RtlService, elementClick$ } from '@fundamental-ngx/cdk/utils';\nimport { BarComponent, BarElementDirective, BarLeftDirective, ButtonBarComponent } from '@fundamental-ngx/core/bar';\nimport { PopoverBodyHeaderDirective } from '@fundamental-ngx/core/popover';\nimport { FdTranslatePipe } from '@fundamental-ngx/i18n';\nimport { Subscription, map, merge, startWith } from 'rxjs';\nimport { filter, switchMap } from 'rxjs/operators';\nimport { AvatarGroupItemRendererDirective } from '../../directives/avatar-group-item-renderer.directive';\nimport { AvatarGroupItemDirective } from '../../directives/avatar-group-item.directive';\nimport { AVATAR_GROUP_HOST_CONFIG } from '../../tokens';\nimport { AvatarGroupHostConfig } from '../../types';\n\n@Component({\n selector: 'fd-default-avatar-group-overflow-body',\n templateUrl: './default-avatar-group-overflow-body.component.html',\n imports: [\n PortalModule,\n AvatarGroupItemRendererDirective,\n FocusableListDirective,\n NgTemplateOutlet,\n PopoverBodyHeaderDirective,\n BarComponent,\n ButtonBarComponent,\n BarElementDirective,\n BarLeftDirective,\n FdTranslatePipe\n ],\n host: {\n class: 'fd-popover__wrapper',\n '[style.max-width.rem]': '20'\n },\n providers: [\n {\n // Override the parent group config so that items inside the overflow popup are always\n // rendered as individually focusable. Without this, a group-type parent would set\n // tabindex=-1 and isFocusable=false on each avatar via AvatarGroupItemRendererDirective,\n // making them invisible to fdkFocusableList and unreachable by keyboard.\n provide: AVATAR_GROUP_HOST_CONFIG,\n useValue: { type: 'individual', orientation: 'horizontal', size: 's' } as AvatarGroupHostConfig\n }\n ],\n styleUrl: './default-avatar-group-overflow-body.component.scss',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class DefaultAvatarGroupOverflowBodyComponent implements AfterViewInit, OnDestroy {\n /**\n * List of avatars to be rendered in the overflow popover.\n **/\n @Input()\n avatars: Iterable<AvatarGroupItemRendererDirective> = [];\n\n /**\n * Title of the overflow popover.\n * */\n @Input()\n overflowPopoverTitle: string;\n\n /** @hidden */\n @ViewChildren(AvatarGroupItemRendererDirective)\n _avatarGroupItemPortals: QueryList<AvatarGroupItemRendererDirective>;\n\n /** Emitted when the Escape key is pressed inside the overflow body. */\n readonly escapePressed = output<void>();\n\n /**\n * Heading level for the overflow popover title.\n * @default 5\n */\n readonly overflowHeadingLevel = input<1 | 2 | 3 | 4 | 5 | 6>(5);\n\n /** @hidden */\n _overflowPopoverStage: 'main' | 'details' = 'main';\n\n /** @hidden */\n _selectedItem: AvatarGroupItemDirective;\n\n /** @hidden */\n get _isDetailStage(): boolean {\n return this._overflowPopoverStage === 'details';\n }\n\n /** @hidden */\n protected readonly navigationArrow = computed(() =>\n this._rtlService?.rtl() ? 'navigation-right-arrow' : 'navigation-left-arrow'\n );\n\n /** @hidden */\n private _itemClickSubscription: Subscription;\n\n /** @hidden */\n private _escapeUnlisten: () => void;\n\n /** @hidden */\n private readonly _elementRef = inject(ElementRef<HTMLElement>);\n\n /** @hidden */\n private readonly _changeDetectorRef = inject(ChangeDetectorRef);\n\n /** @hidden */\n private readonly _renderer = inject(Renderer2);\n\n /** @hidden */\n private readonly _rtlService = inject(RtlService, { optional: true });\n\n /** @hidden */\n ngAfterViewInit(): void {\n this._registerEscapeListener();\n this._avatarGroupItemPortals.changes\n .pipe(\n startWith(this._avatarGroupItemPortals),\n map((avatarGroupItemPortals) => avatarGroupItemPortals.toArray())\n )\n .subscribe((items: AvatarGroupItemRendererDirective[]) => {\n if (this._itemClickSubscription) {\n this._itemClickSubscription.unsubscribe();\n }\n this._itemClickSubscription = merge(\n ...items.map((item) =>\n item.element$.pipe(\n filter(Boolean),\n switchMap((el) => elementClick$(el, this._renderer).pipe(map(() => item)))\n )\n )\n ).subscribe((item: AvatarGroupItemRendererDirective) => {\n this._overflowPopoverStage = 'details';\n this._selectedItem = item.avatarGroupItem;\n this._changeDetectorRef.detectChanges();\n this._focusFirstTabbableElement();\n });\n });\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._itemClickSubscription?.unsubscribe();\n this._escapeUnlisten();\n }\n\n /** @hidden */\n protected openOverflowMain(): void {\n this._overflowPopoverStage = 'main';\n this._changeDetectorRef.detectChanges();\n const target = this._avatarGroupItemPortals.find((r) => r.avatarGroupItem === this._selectedItem);\n if (target?.element) {\n target.element.focus();\n } else {\n this._focusFirstTabbableElement();\n }\n }\n\n /** @hidden */\n private _focusFirstTabbableElement(): void {\n requestAnimationFrame(() => {\n const el: HTMLElement | null = this._elementRef.nativeElement.querySelector(\n '[tabindex=\"0\"], button, a, input'\n );\n el?.focus();\n });\n }\n\n /** @hidden */\n private _registerEscapeListener(): void {\n const el = this._elementRef.nativeElement;\n const escapeHandler = (event: KeyboardEvent): void => {\n if (event.key === 'Escape') {\n this.escapePressed.emit();\n }\n };\n // Capture phase is required: child elements (e.g. fdkFocusableList items) call\n // stopPropagation() on keydown, which would prevent the event from bubbling up.\n el.addEventListener('keydown', escapeHandler, true);\n this._escapeUnlisten = () => el.removeEventListener('keydown', escapeHandler, true);\n }\n}\n","<div fd-popover-body-header>\n <div fd-bar barDesign=\"header\">\n <div fd-bar-left>\n @if (_isDetailStage) {\n <fd-button-bar\n (click)=\"openOverflowMain()\"\n [glyph]=\"navigationArrow()\"\n fdType=\"transparent\"\n [attr.aria-label]=\"('coreAvatarGroup.backButton' | fdTranslate)()\"\n [title]=\"('coreAvatarGroup.backButton' | fdTranslate)()\"\n ></fd-button-bar>\n }\n <fd-bar-element\n ><span\n class=\"fd-title\"\n [class]=\"'fd-title--h' + overflowHeadingLevel()\"\n role=\"heading\"\n [attr.aria-level]=\"overflowHeadingLevel()\"\n >\n {{ _isDetailStage ? _selectedItem.title : overflowPopoverTitle }}\n </span></fd-bar-element\n >\n @if (_isDetailStage) {\n <fd-bar-element> </fd-bar-element>\n }\n </div>\n </div>\n</div>\n<div\n class=\"fd-avatar-group__overflow-body\"\n [class.fd-avatar-group__overflow-body--no-padding]=\"_isDetailStage\"\n [class.fd-avatar-group__overflow-body--no-horizontal-scroll]=\"_isDetailStage\"\n fdkFocusableList\n role=\"list\"\n navigationDirection=\"horizontal\"\n>\n @if (_overflowPopoverStage === 'main') {\n @for (item of avatars; track item) {\n <ng-template\n cdkPortalOutlet\n fdAvatarGroupItemPortal\n [avatarGroupItem]=\"item.avatarGroupItem\"\n [forceVisibility]=\"true\"\n [posInSet]=\"item.posInSet\"\n [setSize]=\"item.setSize\"\n >\n </ng-template>\n }\n } @else {\n <ng-template [ngTemplateOutlet]=\"_selectedItem.details\"></ng-template>\n }\n</div>\n","import { Directive, EmbeddedViewRef, inject, Input, OnDestroy, TemplateRef, ViewContainerRef } from '@angular/core';\nimport { AvatarGroupItemRendererDirective } from './avatar-group-item-renderer.directive';\n\n@Directive({\n selector: '[fdAvatarGroupInternalOverflowButton]',\n standalone: true\n})\nexport class AvatarGroupInternalOverflowButtonDirective implements OnDestroy {\n /**\n * List of hidden items to be rendered in the overflow popover.\n **/\n @Input('fdAvatarGroupInternalOverflowButton')\n set hiddenItems(value: AvatarGroupItemRendererDirective[] | null) {\n const hiddenItems = value || [];\n if (hiddenItems.length > 0) {\n this._show(hiddenItems);\n } else {\n this._hide();\n }\n }\n\n /** @hidden */\n private readonly _templateContext: { $implicit: AvatarGroupItemRendererDirective[] } = { $implicit: [] };\n /** @hidden */\n private readonly _templateRef: TemplateRef<{ $implicit: AvatarGroupItemRendererDirective[] }> = inject(TemplateRef);\n /** @hidden */\n private readonly _viewContainerRef = inject(ViewContainerRef);\n /** @hidden */\n private _embeddedView?: EmbeddedViewRef<any>;\n\n /** @hidden */\n static ngTemplateContextGuard(\n _directive: AvatarGroupInternalOverflowButtonDirective,\n context: unknown\n ): context is { $implicit: AvatarGroupItemRendererDirective[] } {\n return true;\n }\n /** @hidden */\n ngOnDestroy(): void {\n this._hide();\n }\n\n /** @hidden */\n private _show(hiddenItems: AvatarGroupItemRendererDirective[]): void {\n this._templateContext.$implicit = hiddenItems;\n if (this._embeddedView) {\n this._embeddedView.detectChanges();\n return;\n }\n this._viewContainerRef.clear();\n this._embeddedView = this._viewContainerRef.createEmbeddedView(this._templateRef, this._templateContext);\n this._embeddedView.detectChanges();\n }\n\n /** @hidden */\n private _hide(): void {\n this._viewContainerRef.clear();\n this._embeddedView = undefined;\n }\n}\n","import { Directive, inject, TemplateRef } from '@angular/core';\nimport { AvatarGroupItemRendererDirective } from './avatar-group-item-renderer.directive';\n\n/**\n * Avatar group overflow body directive, used to provide a template for the avatar group overflow body.\n * If nothing is provided, default overflow body will be used.\n */\n@Directive({\n selector: '[fdAvatarGroupOverflowBody]',\n standalone: true\n})\nexport class AvatarGroupOverflowBodyDirective {\n /** @hidden */\n readonly _templateRef: TemplateRef<{ hiddenItems: AvatarGroupItemRendererDirective[] }> = inject(TemplateRef);\n}\n","import { Directive, inject, TemplateRef } from '@angular/core';\nimport { AvatarGroupItemRendererDirective } from './avatar-group-item-renderer.directive';\n\n/**\n * Avatar group overflow button directive, used to provide a template for the avatar group overflow button.\n * If nothing is provided, default overflow button will be used.\n */\n@Directive({\n selector: '[fdAvatarGroupOverflowButton]',\n standalone: true\n})\nexport class AvatarGroupOverflowButtonDirective {\n /** @hidden */\n readonly _templateRef: TemplateRef<{ hiddenItems: AvatarGroupItemRendererDirective[] }> = inject(TemplateRef);\n}\n","import { LiveAnnouncer } from '@angular/cdk/a11y';\nimport { Direction } from '@angular/cdk/bidi';\nimport { NgTemplateOutlet } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChild,\n ContentChildren,\n Input,\n QueryList,\n ViewChildren,\n ViewEncapsulation,\n computed,\n inject,\n input,\n signal,\n viewChild\n} from '@angular/core';\nimport {\n FocusableListDirective,\n FocusableListItemFocusedEvent,\n ResizeObserverDirective,\n RtlService\n} from '@fundamental-ngx/cdk/utils';\nimport { PopoverBodyDirective, PopoverComponent, PopoverControlComponent } from '@fundamental-ngx/core/popover';\nimport { resolveTranslationSignalFn } from '@fundamental-ngx/i18n';\nimport { AvatarGroupHostComponent } from './components/avatar-group-host.component';\nimport { AvatarGroupOverflowButtonComponent } from './components/avatar-group-overflow-button.component';\nimport { DefaultAvatarGroupOverflowBodyComponent } from './components/default-avatar-group-overflow-body/default-avatar-group-overflow-body.component';\nimport { AvatarGroupInternalOverflowButtonDirective } from './directives/avatar-group-internal-overflow-button.directive';\nimport { AvatarGroupItemRendererDirective } from './directives/avatar-group-item-renderer.directive';\nimport { AvatarGroupItemDirective } from './directives/avatar-group-item.directive';\nimport { AvatarGroupOverflowBodyDirective } from './directives/avatar-group-overflow-body.directive';\nimport { AvatarGroupOverflowButtonDirective } from './directives/avatar-group-overflow-button.directive';\nimport { AVATAR_GROUP_HOST_CONFIG } from './tokens';\nimport { AvatarGroupHostConfig } from './types';\n\n@Component({\n selector: 'fd-avatar-group',\n templateUrl: './avatar-group.component.html',\n styleUrl: './avatar-group.component.scss',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: AVATAR_GROUP_HOST_CONFIG,\n useExisting: AvatarGroupComponent\n }\n ],\n imports: [\n AvatarGroupHostComponent,\n PopoverComponent,\n PopoverControlComponent,\n PopoverBodyDirective,\n NgTemplateOutlet,\n FocusableListDirective,\n AvatarGroupItemRendererDirective,\n AvatarGroupOverflowButtonComponent,\n DefaultAvatarGroupOverflowBodyComponent,\n AvatarGroupInternalOverflowButtonDirective,\n ResizeObserverDirective\n ]\n})\nexport class AvatarGroupComponent implements AvatarGroupHostConfig {\n /**\n * The AvatarGroup control has two group types:\n *\n * `group`: The avatars are displayed as partially overlapped on top of each other and the entire group has one click/tap area.\n * `individual`: The avatars are displayed side-by-side and each avatar has its own click/tap area.\n * */\n @Input()\n type: AvatarGroupHostConfig['type'] = 'individual';\n\n /**\n * Orientation of the AvatarGroup control.\n *\n * `horizontal`: The avatars are displayed horizontally.\n * `vertical`: The avatars are displayed vertically.\n */\n @Input()\n orientation: AvatarGroupHostConfig['orientation'] = 'horizontal';\n\n /**\n * The spacing between the items depends on the size of the avatars in the group.\n * The size is also used for the default overflow button.\n * `xs`, `s`, `m`, `l`, `xl`\n */\n @Input()\n size: AvatarGroupHostConfig['size'] = 'l';\n\n /**\n * The title which is displayed when user opens the overflow popover.\n * This takes effect only when default overflow popover body is used,\n * otherwise the title should be set on the custom overflow popover body component.\n */\n @Input()\n overflowPopoverTitle: string;\n\n /**\n * Aria label for the avatar group container.\n * When not provided, a default label is generated from the i18n `coreAvatarGroup.ariaLabelGroup` key\n * for group type, or `coreAvatarGroup.ariaLabelIndividual` for individual type,\n * using the current displayed and hidden avatar counts as context.\n */\n @Input()\n ariaLabel: string;\n\n /** @hidden */\n @ViewChildren(AvatarGroupItemRendererDirective)\n _avatarRenderers: QueryList<AvatarGroupItemRendererDirective>;\n\n /** @hidden */\n @ContentChildren(AvatarGroupItemDirective)\n _avatars: QueryList<AvatarGroupItemDirective>;\n\n /** @hidden */\n @ContentChild(AvatarGroupOverflowButtonDirective)\n _overflowButton: AvatarGroupOverflowButtonDirective;\n\n /** @hidden */\n @ContentChild(AvatarGroupOverflowBodyDirective)\n _avatarGroupPopoverBody: AvatarGroupOverflowBodyDirective;\n\n /**\n * Heading level for the overflow popover title.\n * @default 5\n */\n readonly overflowHeadingLevel = input<1 | 2 | 3 | 4 | 5 | 6>(5);\n\n /** @hidden */\n readonly _avatarGroupHost = viewChild(AvatarGroupHostComponent);\n\n /** @hidden */\n protected readonly contentDirection = computed<Direction>(() => (this._rtlService?.rtl() ? 'rtl' : 'ltr'));\n\n /** @hidden */\n protected readonly _defaultAriaLabelGroup = computed(() =>\n this._translate('coreAvatarGroup.ariaLabelGroup', this._ariaLabelContext)()\n );\n\n /** @hidden */\n protected readonly _defaultAriaLabelIndividual = computed(() =>\n this._translate('coreAvatarGroup.ariaLabelIndividual', this._ariaLabelContext)()\n );\n\n /** @hidden */\n private readonly _translate = resolveTranslationSignalFn();\n\n /** @hidden */\n private readonly _ariaLabelContext = computed(() => {\n const hiddenItems = this._avatarGroupHost()?._hiddenItems() ?? [];\n const hiddenCount = hiddenItems.length;\n const count = (this._avatars?.length ?? 0) - hiddenCount;\n return { count, hiddenCount };\n });\n\n /** @hidden */\n private readonly _cdr = inject(ChangeDetectorRef);\n\n /** @hidden */\n private readonly _rtlService = inject(RtlService, { optional: true });\n\n /** @hidden */\n private readonly _liveAnnouncer = inject(LiveAnnouncer);\n\n /** @hidden */\n _detectChanges(): void {\n this._cdr.detectChanges();\n }\n\n /** @hidden */\n protected _onItemFocused(event: FocusableListItemFocusedEvent): void {\n this._liveAnnouncer.announce(`${event.index + 1} of ${event.total}`);\n }\n\n /** @hidden */\n protected _popupBodyAriaLabel(count: number): string {\n return this._translate('coreAvatarGroup.popupBodyAriaLabel', signal({ count }))();\n }\n}\n","<ng-content></ng-content>\n@if (type === 'individual') {\n <fd-avatar-group-host\n #avatarGroupHostComponent\n [type]=\"type\"\n [size]=\"size\"\n [orientation]=\"orientation\"\n fdkResizeObserver\n fdkFocusableList\n [contentDirection]=\"contentDirection()\"\n [wrap]=\"true\"\n [navigationDirection]=\"orientation\"\n [items]=\"_avatars\"\n [attr.aria-label]=\"ariaLabel || _defaultAriaLabelIndividual()\"\n (resized)=\"_detectChanges()\"\n (itemFocused)=\"_onItemFocused($event)\"\n >\n @for (item of _avatars; track item) {\n <fd-popover [noArrow]=\"false\" [focusAutoCapture]=\"true\">\n <fd-popover-control\n class=\"fd-avatar-group__popover-control\"\n tabindex=\"-1\"\n (click)=\"outletItem.element.focus()\"\n >\n <ng-template\n #outletItem=\"fdAvatarGroupItemPortal\"\n cdkPortalOutlet\n fdAvatarGroupItemPortal\n [forceVisibility]=\"item.forceVisibility\"\n [avatarGroupItem]=\"item\"\n >\n </ng-template>\n </fd-popover-control>\n @if (item.details) {\n <ng-template fdPopoverBody>\n <ng-template [ngTemplateOutlet]=\"item.details\"></ng-template>\n </ng-template>\n }\n </fd-popover>\n }\n <ng-template [fdAvatarGroupInternalOverflowButton]=\"avatarGroupHostComponent._hiddenItems()\" let-hiddenItems>\n <fd-popover\n #overflowPopover\n [noArrow]=\"false\"\n [focusAutoCapture]=\"true\"\n [bodyAriaLabel]=\"_popupBodyAriaLabel(hiddenItems.length)\"\n >\n <fd-popover-control class=\"fd-avatar-group__popover-control\" tabindex=\"-1\">\n @if (_overflowButton) {\n <ng-template\n [ngTemplateOutlet]=\"_overflowButton._templateRef\"\n [ngTemplateOutletContext]=\"{ hiddenItems: hiddenItems }\"\n />\n } @else {\n <fd-avatar-group-overflow-button [size]=\"size\" [colorAccent]=\"1\">\n +{{ hiddenItems.length }}\n </fd-avatar-group-overflow-button>\n }\n </fd-popover-control>\n <ng-template fdPopoverBody>\n <ng-template\n [ngTemplateOutlet]=\"avatarGroupOverflowBodyTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: hiddenItems, popoverRef: overflowPopover }\"\n ></ng-template>\n </ng-template>\n </fd-popover>\n </ng-template>\n </fd-avatar-group-host>\n} @else {\n <fd-popover\n #groupPopover\n [noArrow]=\"false\"\n [focusAutoCapture]=\"true\"\n [bodyAriaLabel]=\"_popupBodyAriaLabel(_avatars.length)\"\n fdkResizeObserver\n (resized)=\"_detectChanges()\"\n >\n <fd-popover-control class=\"fd-avatar-group__popover-control\">\n <fd-avatar-group-host\n #avatarGroupHostComponent\n [type]=\"type\"\n [size]=\"size\"\n [orientation]=\"orientation\"\n [attr.aria-label]=\"ariaLabel || _defaultAriaLabelGroup()\"\n role=\"button\"\n tabindex=\"0\"\n >\n @for (item of _avatars; track item) {\n <ng-template\n cdkPortalOutlet\n fdAvatarGroupItemPortal\n [forceVisibility]=\"item.forceVisibility\"\n [avatarGroupItem]=\"item\"\n >\n </ng-template>\n }\n <ng-template\n [fdAvatarGroupInternalOverflowButton]=\"avatarGroupHostComponent._hiddenItems()\"\n let-hiddenItems\n >\n <ng-template\n [ngTemplateOutlet]=\"overflowButtonTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: hiddenItems }\"\n ></ng-template>\n </ng-template>\n </fd-avatar-group-host>\n </fd-popover-control>\n <ng-template fdPopoverBody>\n <ng-template\n [ngTemplateOutlet]=\"avatarGroupOverflowBodyTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: _avatarRenderers, popoverRef: groupPopover }\"\n ></ng-template>\n </ng-template>\n </fd-popover>\n}\n<ng-template #overflowButtonTemplate let-hiddenItems>\n @if (_overflowButton) {\n <ng-template\n [ngTemplateOutlet]=\"_overflowButton._templateRef\"\n [ngTemplateOutletContext]=\"{ hiddenItems: hiddenItems }\"\n />\n } @else {\n <fd-avatar-group-overflow-button [size]=\"size\" [colorAccent]=\"1\" [fdkFocusableItem]=\"false\">\n +{{ hiddenItems.length }}\n </fd-avatar-group-overflow-button>\n }\n</ng-template>\n<ng-template #avatarGroupOverflowBodyTemplate let-hiddenItems let-popoverRef=\"popoverRef\">\n @if (_avatarGroupPopoverBody) {\n <ng-template\n [ngTemplateOutlet]=\"_avatarGroupPopoverBody._templateRef\"\n [ngTemplateOutletContext]=\"{ hiddenItems: hiddenItems }\"\n />\n } @else {\n <fd-default-avatar-group-overflow-body\n [avatars]=\"hiddenItems\"\n [overflowPopoverTitle]=\"overflowPopoverTitle\"\n [overflowHeadingLevel]=\"overflowHeadingLevel()\"\n (escapePressed)=\"popoverRef?.close()\"\n />\n }\n</ng-template>\n","import { ChangeDetectionStrategy, Component, Input, ViewEncapsulation } from '@angular/core';\n\n/**\n * Avatar group overflow body component, used to provide a template for the avatar group overflow body.\n */\n@Component({\n selector: 'fd-avatar-group-overflow-body',\n templateUrl: './avatar-group-overflow-body.component.html',\n host: {\n class: 'fd-popover__wrapper'\n },\n styleUrl: './avatar-group-overflow-body.component.scss',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true\n})\nexport class AvatarGroupOverflowBodyComponent {\n /** Remove the padding from the overflow body. */\n @Input()\n noPadding = false;\n\n /** Hide horizontal scrollbar from the overflow body. */\n @Input()\n noHorizontalScroll = true;\n\n /** Hide vertical scrollbar from the overflow body. */\n @Input()\n noVerticalScroll = true;\n\n /** Additional popover body class */\n @Input()\n additionalPopoverBodyClass = '';\n}\n","<ng-content select=\"[fd-popover-body-header]\"></ng-content>\n<div\n class=\"fd-avatar-group__overflow-body\"\n [class.fd-avatar-group__overflow-body--no-padding]=\"noPadding\"\n [class.fd-avatar-group__overflow-body--no-horizontal-scroll]=\"noHorizontalScroll\"\n [class.fd-avatar-group__overflow-body--no-vertical-scroll]=\"noVerticalScroll\"\n>\n <ng-content select=\"[fd-avatar-group-overflow-body-content]\"></ng-content>\n</div>\n","import { PortalModule } from '@angular/cdk/portal';\nimport { NgModule } from '@angular/core';\nimport { AvatarGroupComponent } from './avatar-group.component';\nimport { AvatarGroupOverflowBodyComponent } from './components/avatar-group-overflow-body/avatar-group-overflow-body.component';\nimport { AvatarGroupOverflowButtonComponent } from './components/avatar-group-overflow-button.component';\nimport { AvatarGroupItemDirective } from './directives/avatar-group-item.directive';\nimport { AvatarGroupOverflowBodyDirective } from './directives/avatar-group-overflow-body.directive';\nimport { AvatarGroupOverflowButtonDirective } from './directives/avatar-group-overflow-button.directive';\n\n/**\n * @deprecated\n * Use direct imports of components and directives.\n */\n@NgModule({\n imports: [\n AvatarGroupComponent,\n AvatarGroupItemDirective,\n AvatarGroupOverflowButtonComponent,\n AvatarGroupOverflowButtonDirective,\n AvatarGroupOverflowBodyComponent,\n AvatarGroupOverflowBodyDirective,\n PortalModule\n ],\n exports: [\n AvatarGroupComponent,\n AvatarGroupItemDirective,\n AvatarGroupOverflowButtonComponent,\n AvatarGroupOverflowButtonDirective,\n AvatarGroupOverflowBodyComponent,\n AvatarGroupOverflowBodyDirective\n ]\n})\nexport class AvatarGroupModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"fundamental-ngx-core-avatar-group.mjs","sources":["../../../../libs/core/avatar-group/tokens.ts","../../../../libs/core/avatar-group/directives/avatar-group-item.directive.ts","../../../../libs/core/avatar-group/directives/avatar-group-item-renderer.directive.ts","../../../../libs/core/avatar-group/components/avatar-group-host.component.ts","../../../../libs/core/avatar-group/components/avatar-group-overflow-button.component.ts","../../../../libs/core/avatar-group/components/default-avatar-group-overflow-body/default-avatar-group-overflow-body.component.ts","../../../../libs/core/avatar-group/components/default-avatar-group-overflow-body/default-avatar-group-overflow-body.component.html","../../../../libs/core/avatar-group/directives/avatar-group-internal-overflow-button.directive.ts","../../../../libs/core/avatar-group/directives/avatar-group-overflow-body.directive.ts","../../../../libs/core/avatar-group/directives/avatar-group-overflow-button.directive.ts","../../../../libs/core/avatar-group/avatar-group.component.ts","../../../../libs/core/avatar-group/avatar-group.component.html","../../../../libs/core/avatar-group/components/avatar-group-overflow-body/avatar-group-overflow-body.component.ts","../../../../libs/core/avatar-group/components/avatar-group-overflow-body/avatar-group-overflow-body.component.html","../../../../libs/core/avatar-group/avatar-group.module.ts","../../../../libs/core/avatar-group/fundamental-ngx-core-avatar-group.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\nimport { AvatarGroupHostConfig } from './types';\n\nexport const AVATAR_GROUP_HOST_CONFIG = new InjectionToken<AvatarGroupHostConfig>(\n 'AvatarGroup host configuration. Is provided by AvatarGroupComponent.'\n);\n","import { Directive, inject, Input, TemplateRef } from '@angular/core';\n\n/**\n * Avatar group item directive, used to provide a template for the avatar group item.\n */\n@Directive({\n selector: '[fdAvatarGroupItem]',\n standalone: true\n})\nexport class AvatarGroupItemDirective {\n /**\n * Text, which will be displayed when in overflow popover and activated\n * */\n @Input('fdAvatarGroupItemTitle')\n title: string;\n\n /**\n * If set to true, item will never be hidden in overflow popover\n * */\n @Input('fdAvatarGroupItemForceVisibility')\n forceVisibility = false;\n\n /** @hidden */\n _templateRef: TemplateRef<void> = inject(TemplateRef);\n\n /**\n * Template for the details of the avatar group item.\n * This template it used to render additional information in the overflow popover.\n * */\n @Input('fdAvatarGroupItem')\n set details(detailsTemplate: TemplateRef<void> | string) {\n if (typeof detailsTemplate === 'string') {\n return;\n }\n this._details = detailsTemplate;\n }\n\n get details(): TemplateRef<void> {\n return this._details;\n }\n\n /** @hidden */\n private _details: TemplateRef<void>;\n}\n","import { CdkPortalOutlet, TemplatePortal } from '@angular/cdk/portal';\nimport { Directive, EmbeddedViewRef, Input, OnInit, ViewContainerRef, inject } from '@angular/core';\nimport { FDK_FOCUSABLE_ITEM_DIRECTIVE, FocusableItem, Nullable } from '@fundamental-ngx/cdk/utils';\nimport { BehaviorSubject, Observable, fromEvent } from 'rxjs';\nimport { filter, switchMap } from 'rxjs/operators';\nimport { AVATAR_GROUP_HOST_CONFIG } from '../tokens';\nimport { AvatarGroupItemDirective } from './avatar-group-item.directive';\n@Directive({\n selector: '[fdAvatarGroupItemPortal]',\n exportAs: 'fdAvatarGroupItemPortal',\n standalone: true,\n providers: [\n {\n provide: FDK_FOCUSABLE_ITEM_DIRECTIVE,\n useExisting: AvatarGroupItemRendererDirective\n },\n CdkPortalOutlet\n ]\n})\nexport class AvatarGroupItemRendererDirective implements OnInit, FocusableItem {\n /**\n * Avatar group item to be rendered.\n **/\n @Input() avatarGroupItem: AvatarGroupItemDirective;\n\n /**\n * Whether the item should be forced to be visible.\n **/\n @Input()\n forceVisibility = false;\n\n /**\n * HTML element of the item.\n **/\n element$: Observable<Nullable<HTMLElement>>;\n\n /** @hidden */\n keydown: Observable<KeyboardEvent>;\n\n /**\n * Whether the item is visible.\n **/\n get visible(): boolean {\n return this._portalOutlet.hasAttached();\n }\n\n /**\n * Currently rendered element's HTMLElement.\n **/\n get element(): HTMLElement {\n return this._embeddedViewRef?.rootNodes[0] as HTMLElement;\n }\n\n /**\n * Rendered element's width or it's last saved width.\n **/\n get width(): number {\n if (this.visible) {\n const rect = this.element.getBoundingClientRect();\n const style = getComputedStyle(this.element);\n const width = rect.width;\n const marginLeft = parseFloat(style.marginLeft);\n const marginRight = parseFloat(style.marginRight);\n\n if (width > 0 && !isNaN(marginLeft) && !isNaN(marginRight)) {\n this._lastSavedWidth = width + marginLeft + marginRight;\n }\n }\n return this._lastSavedWidth;\n }\n\n /**\n * Rendered element's height or it's last saved height.\n **/\n get height(): number {\n if (this.visible) {\n this._lastSavedHeight =\n this.element.getBoundingClientRect().height +\n parseFloat(getComputedStyle(this.element).marginTop) +\n parseFloat(getComputedStyle(this.element).marginBottom);\n }\n return this._lastSavedHeight;\n }\n\n /** @hidden */\n private _portalOutlet = inject(CdkPortalOutlet, { host: true });\n\n /** @hidden */\n private _viewContainerRef = inject(ViewContainerRef);\n\n /**\n * @hidden\n **/\n private _element$ = new BehaviorSubject<Nullable<HTMLElement>>(null);\n\n /** @hidden */\n private _templatePortal?: TemplatePortal<void>;\n\n /** @hidden */\n private _isFocusable = true;\n\n /** @hidden */\n private _embeddedViewRef: EmbeddedViewRef<void>;\n\n /** @hidden */\n private _lastSavedWidth = 0;\n\n /** @hidden */\n private _lastSavedHeight = 0;\n\n /** @hidden */\n private _posInSet = 0;\n\n /** @hidden */\n private _setSize = 0;\n\n /** @hidden */\n private _hostConfig = inject(AVATAR_GROUP_HOST_CONFIG);\n\n /** @hidden */\n constructor() {\n this.element$ = this._element$.asObservable();\n this.keydown = this._element$.pipe(\n filter((element) => !!element),\n switchMap((element) => fromEvent(element as unknown as HTMLElement, 'keydown') as Observable<KeyboardEvent>)\n );\n }\n\n /** @hidden */\n ngOnInit(): void {\n this.show();\n }\n\n /**\n * Hides the item.\n **/\n hide(): void {\n this._portalOutlet.detach();\n this.setTabbable(false);\n this._isFocusable = false;\n }\n\n /**\n * Shows the item.\n **/\n show(): void {\n if (this.visible) {\n return;\n }\n if (!this._templatePortal) {\n this._templatePortal = new TemplatePortal(this.avatarGroupItem._templateRef, this._viewContainerRef);\n }\n this._embeddedViewRef = this._portalOutlet.attach(this._templatePortal);\n this._embeddedViewRef.detectChanges();\n this._element$.next(this.element);\n this.setTabbable(this._hostConfig.type === 'individual');\n this._isFocusable = this._hostConfig.type === 'individual';\n this._applyAriaPosition();\n }\n\n /**\n * Whether the item is focusable.\n **/\n isFocusable = (): boolean => this._isFocusable && this.visible;\n\n /**\n * Sets the tabbable state of the item.\n **/\n setTabbable(tabbable: boolean): void {\n this.element.tabIndex = tabbable ? 0 : -1;\n }\n\n /**\n * Sets aria-posinset and aria-setsize on the rendered element.\n * Stored values are applied immediately if the item is visible,\n * and re-applied on the next show() call otherwise.\n **/\n @Input()\n set posInSet(value: number) {\n this._posInSet = value;\n if (this.visible) {\n this._applyAriaPosition();\n }\n }\n\n get posInSet(): number {\n return this._posInSet;\n }\n\n /** @hidden */\n @Input()\n set setSize(value: number) {\n this._setSize = value;\n if (this.visible) {\n this._applyAriaPosition();\n }\n }\n\n get setSize(): number {\n return this._setSize;\n }\n\n /** @hidden */\n focus(): void {\n this.element?.focus();\n }\n\n /** @hidden */\n private _applyAriaPosition(): void {\n const el = this.element;\n if (!el || !this._posInSet || !this._setSize) {\n return;\n }\n el.setAttribute('aria-posinset', String(this._posInSet));\n el.setAttribute('aria-setsize', String(this._setSize));\n }\n}\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChildren,\n DestroyRef,\n ElementRef,\n inject,\n Input,\n OnChanges,\n OnInit,\n QueryList,\n signal,\n SimpleChanges,\n ViewEncapsulation\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport {\n applyCssClass,\n CssClassBuilder,\n HasElementRef,\n Nullable,\n ResizeObserverDirective\n} from '@fundamental-ngx/cdk/utils';\nimport { animationFrames, combineLatest, delayWhen, map, Observable, startWith, Subject } from 'rxjs';\nimport { AvatarGroupItemRendererDirective } from '../directives/avatar-group-item-renderer.directive';\nimport { AvatarGroupItemDirective } from '../directives/avatar-group-item.directive';\nimport { AvatarGroupHostConfig } from '../types';\n\n@Component({\n selector: 'fd-avatar-group-host',\n template: '<ng-content></ng-content>',\n imports: [],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n styleUrl: './avatar-group-host.component.scss'\n})\nexport class AvatarGroupHostComponent\n implements OnInit, AfterViewInit, OnChanges, HasElementRef, AvatarGroupHostConfig, CssClassBuilder\n{\n /**\n * The class to apply to the host element.\n **/\n @Input()\n class: Nullable<string>;\n\n /**\n * The type of the avatar group.\n * Options include 'individual' and 'group'.\n **/\n @Input()\n type: AvatarGroupHostConfig['type'];\n\n /**\n * The orientation of the avatar group.\n * Options include 'horizontal' and 'vertical'.\n **/\n @Input()\n orientation: AvatarGroupHostConfig['orientation'];\n\n /**\n * The size of the avatar group.\n * Options include 'xs', 's', 'm', 'l', and 'xl'.\n **/\n @Input()\n size: AvatarGroupHostConfig['size'];\n\n /**\n * The items to be rendered in the avatar group.\n **/\n @Input()\n items: QueryList<AvatarGroupItemDirective>;\n\n /**\n * @hidden\n * The portals to be rendered in the avatar group.\n **/\n @ContentChildren(AvatarGroupItemRendererDirective, { descendants: true })\n _portals: QueryList<AvatarGroupItemRendererDirective>;\n\n /** @hidden */\n _resizeEmitter: Observable<ResizeObserverEntry[]> = inject(ResizeObserverDirective).resizeEvents$;\n\n /** The reference to the host element */\n readonly elementRef = inject(ElementRef);\n\n /** @hidden */\n _hiddenItems = signal<AvatarGroupItemRendererDirective[]>([]);\n\n /** @hidden */\n private readonly _destroyRef = inject(DestroyRef);\n\n /** @hidden */\n private _cdr = inject(ChangeDetectorRef);\n\n /** @hidden */\n private _onChanges$ = new Subject<SimpleChanges>();\n\n /** @hidden */\n @applyCssClass\n buildComponentCssClass(): string[] {\n return [\n this.class || '',\n 'fd-avatar-group',\n this.type === 'individual' ? 'fd-avatar-group--individual-type' : '',\n this.type === 'group' ? 'fd-avatar-group--group-type' : '',\n this.orientation ? 'fd-avatar-group--' + this.orientation : '',\n this.size ? 'fd-avatar-group--' + this.size : ''\n ];\n }\n\n /** @hidden */\n ngOnInit(): void {\n this.buildComponentCssClass();\n }\n\n /** @hidden */\n ngOnChanges(changes: SimpleChanges): void {\n this.buildComponentCssClass();\n this._onChanges$.next(changes);\n }\n\n /** @hidden */\n ngAfterViewInit(): void {\n combineLatest([\n this._resizeEmitter.pipe(map((entries) => entries[0].contentRect.width)),\n this._portals.changes.pipe(\n startWith(this._portals),\n map((r) => r.toArray())\n ),\n this._onChanges$.pipe(startWith({}))\n ])\n .pipe(\n map(([containerWidth, items]) => this._calculateVisibility(containerWidth, items)),\n delayWhen(() => animationFrames()),\n takeUntilDestroyed(this._destroyRef)\n )\n .subscribe(({ hiddenItems, visibleItems }) => {\n const allItems = this._portals.toArray();\n const total = allItems.length;\n allItems.forEach((item, index) => {\n item.posInSet = index + 1;\n item.setSize = total;\n });\n visibleItems.forEach((item) => item.show());\n hiddenItems.forEach((item) => item.hide());\n this._cdr.detectChanges();\n this._hiddenItems.set(hiddenItems);\n });\n }\n\n /** @hidden */\n private _calculateVisibility(\n containerWidth: number,\n items: AvatarGroupItemRendererDirective[]\n ): {\n hiddenItems: AvatarGroupItemRendererDirective[];\n visibleItems: AvatarGroupItemRendererDirective[];\n } {\n if (this.orientation === 'vertical') {\n return {\n visibleItems: items,\n hiddenItems: []\n };\n }\n const visibleItems = items.filter((i) => i.forceVisibility);\n const hiddenItems: AvatarGroupItemRendererDirective[] = [];\n let accWidth = items.reduce((acc, item) => (item.forceVisibility ? acc + item.width : acc), 0);\n for (const item of items) {\n if (item.forceVisibility) {\n continue;\n }\n accWidth += item.width;\n if (accWidth <= containerWidth) {\n visibleItems.push(item);\n } else if (!item.forceVisibility) {\n hiddenItems.push(item);\n }\n }\n /* take last item from the visibleItems which is not forced to be visible and push it to the hiddenItems\n * This is done to free up the space for the overflow button\n */\n if (hiddenItems.length > 0) {\n const lastAllowedToBeHidden = visibleItems.reverse().findIndex((item) => !item.forceVisibility);\n hiddenItems.push(...visibleItems.splice(lastAllowedToBeHidden * -1, 1));\n }\n return {\n visibleItems,\n hiddenItems\n };\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n forwardRef,\n HostBinding,\n inject,\n Input,\n OnChanges,\n OnInit,\n ViewEncapsulation\n} from '@angular/core';\nimport {\n applyCssClass,\n ColorAccent,\n CssClassBuilder,\n FDK_FOCUSABLE_ITEM_DIRECTIVE,\n FocusableItemDirective,\n Nullable,\n Size\n} from '@fundamental-ngx/cdk/utils';\nimport { AVATAR_GROUP_HOST_CONFIG } from '../tokens';\n\n/**\n * Avatar group overflow button component.\n * This is used for the overflow button template.\n * Although any content can be projected as the overflow button, this component provides some styling and accessibility features.\n */\n@Component({\n selector: 'fd-avatar-group-overflow-button',\n template: ` <ng-content></ng-content>`,\n host: {\n role: 'button',\n '(keydown.enter)': 'elementRef.nativeElement.click()',\n '(keydown.space)': 'elementRef.nativeElement.click(); $event.preventDefault()'\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n standalone: true,\n providers: [\n {\n provide: FDK_FOCUSABLE_ITEM_DIRECTIVE,\n useExisting: forwardRef(() => AvatarGroupOverflowButtonComponent)\n }\n ]\n})\nexport class AvatarGroupOverflowButtonComponent\n extends FocusableItemDirective\n implements OnChanges, OnInit, CssClassBuilder\n{\n /**\n * Size of the overflow button.\n */\n @Input()\n size: Size = 'l';\n\n /**\n * Whether the overflow button should be displayed as a circle.\n */\n @Input()\n @HostBinding('class.fd-avatar--circle')\n circle = false;\n\n /**\n * A number from 1 to 10 representing the background color of the Avatar.\n */\n @Input() colorAccent: Nullable<ColorAccent> = null;\n\n /**\n * The class to apply to the host element.\n **/\n @Input()\n class: Nullable<string>;\n\n /** @hidden */\n constructor() {\n super();\n this.setFocusable(inject(AVATAR_GROUP_HOST_CONFIG).type === 'individual');\n }\n\n /** @hidden */\n @applyCssClass\n buildComponentCssClass(): string[] {\n return [\n this.class || '',\n 'fd-avatar fd-avatar--overflow',\n 'fd-avatar--' + this.size,\n this.colorAccent ? 'fd-avatar--' + this.colorAccent : ''\n ];\n }\n\n /** @hidden */\n ngOnInit(): void {\n this.buildComponentCssClass();\n }\n\n /** @hidden */\n ngOnChanges(): void {\n this.buildComponentCssClass();\n }\n}\n","import { PortalModule } from '@angular/cdk/portal';\nimport { NgTemplateOutlet } from '@angular/common';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n Input,\n OnDestroy,\n QueryList,\n Renderer2,\n ViewChildren,\n ViewEncapsulation,\n computed,\n inject,\n input,\n output\n} from '@angular/core';\nimport { FocusableListDirective, RtlService, elementClick$ } from '@fundamental-ngx/cdk/utils';\nimport { BarComponent, BarElementDirective, BarLeftDirective, ButtonBarComponent } from '@fundamental-ngx/core/bar';\nimport { PopoverBodyHeaderDirective } from '@fundamental-ngx/core/popover';\nimport { FdTranslatePipe } from '@fundamental-ngx/i18n';\nimport { Subscription, map, merge, startWith } from 'rxjs';\nimport { filter, switchMap } from 'rxjs/operators';\nimport { AvatarGroupItemRendererDirective } from '../../directives/avatar-group-item-renderer.directive';\nimport { AvatarGroupItemDirective } from '../../directives/avatar-group-item.directive';\nimport { AVATAR_GROUP_HOST_CONFIG } from '../../tokens';\nimport { AvatarGroupHostConfig } from '../../types';\n\n@Component({\n selector: 'fd-default-avatar-group-overflow-body',\n templateUrl: './default-avatar-group-overflow-body.component.html',\n imports: [\n PortalModule,\n AvatarGroupItemRendererDirective,\n FocusableListDirective,\n NgTemplateOutlet,\n PopoverBodyHeaderDirective,\n BarComponent,\n ButtonBarComponent,\n BarElementDirective,\n BarLeftDirective,\n FdTranslatePipe\n ],\n host: {\n class: 'fd-popover__wrapper',\n '[style.max-width.rem]': '20'\n },\n providers: [\n {\n // Override the parent group config so that items inside the overflow popup are always\n // rendered as individually focusable. Without this, a group-type parent would set\n // tabindex=-1 and isFocusable=false on each avatar via AvatarGroupItemRendererDirective,\n // making them invisible to fdkFocusableList and unreachable by keyboard.\n provide: AVATAR_GROUP_HOST_CONFIG,\n useValue: { type: 'individual', orientation: 'horizontal', size: 's' } as AvatarGroupHostConfig\n }\n ],\n styleUrl: './default-avatar-group-overflow-body.component.scss',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class DefaultAvatarGroupOverflowBodyComponent implements AfterViewInit, OnDestroy {\n /**\n * List of avatars to be rendered in the overflow popover.\n **/\n @Input()\n avatars: Iterable<AvatarGroupItemRendererDirective> = [];\n\n /**\n * Title of the overflow popover.\n * */\n @Input()\n overflowPopoverTitle: string;\n\n /** @hidden */\n @ViewChildren(AvatarGroupItemRendererDirective)\n _avatarGroupItemPortals: QueryList<AvatarGroupItemRendererDirective>;\n\n /** Emitted when the Escape key is pressed inside the overflow body. */\n readonly escapePressed = output<void>();\n\n /**\n * Heading level for the overflow popover title.\n * @default 5\n */\n readonly overflowHeadingLevel = input<1 | 2 | 3 | 4 | 5 | 6>(5);\n\n /** @hidden */\n _overflowPopoverStage: 'main' | 'details' = 'main';\n\n /** @hidden */\n _selectedItem: AvatarGroupItemDirective;\n\n /** @hidden */\n get _isDetailStage(): boolean {\n return this._overflowPopoverStage === 'details';\n }\n\n /** @hidden */\n protected readonly navigationArrow = computed(() =>\n this._rtlService?.rtl() ? 'navigation-right-arrow' : 'navigation-left-arrow'\n );\n\n /** @hidden */\n private _itemClickSubscription: Subscription;\n\n /** @hidden */\n private _escapeUnlisten: () => void;\n\n /** @hidden */\n private readonly _elementRef = inject(ElementRef<HTMLElement>);\n\n /** @hidden */\n private readonly _changeDetectorRef = inject(ChangeDetectorRef);\n\n /** @hidden */\n private readonly _renderer = inject(Renderer2);\n\n /** @hidden */\n private readonly _rtlService = inject(RtlService, { optional: true });\n\n /** @hidden */\n ngAfterViewInit(): void {\n this._registerEscapeListener();\n this._avatarGroupItemPortals.changes\n .pipe(\n startWith(this._avatarGroupItemPortals),\n map((avatarGroupItemPortals) => avatarGroupItemPortals.toArray())\n )\n .subscribe((items: AvatarGroupItemRendererDirective[]) => {\n if (this._itemClickSubscription) {\n this._itemClickSubscription.unsubscribe();\n }\n this._itemClickSubscription = merge(\n ...items.map((item) =>\n item.element$.pipe(\n filter(Boolean),\n switchMap((el) => elementClick$(el, this._renderer).pipe(map(() => item)))\n )\n )\n ).subscribe((item: AvatarGroupItemRendererDirective) => {\n this._overflowPopoverStage = 'details';\n this._selectedItem = item.avatarGroupItem;\n this._changeDetectorRef.detectChanges();\n this._focusFirstTabbableElement();\n });\n });\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._itemClickSubscription?.unsubscribe();\n this._escapeUnlisten();\n }\n\n /** @hidden */\n protected openOverflowMain(): void {\n this._overflowPopoverStage = 'main';\n this._changeDetectorRef.detectChanges();\n const target = this._avatarGroupItemPortals.find((r) => r.avatarGroupItem === this._selectedItem);\n if (target?.element) {\n target.element.focus();\n } else {\n this._focusFirstTabbableElement();\n }\n }\n\n /** @hidden */\n private _focusFirstTabbableElement(): void {\n requestAnimationFrame(() => {\n const el: HTMLElement | null = this._elementRef.nativeElement.querySelector(\n '[tabindex=\"0\"], button, a, input'\n );\n el?.focus();\n });\n }\n\n /** @hidden */\n private _registerEscapeListener(): void {\n const el = this._elementRef.nativeElement;\n const escapeHandler = (event: KeyboardEvent): void => {\n if (event.key === 'Escape') {\n this.escapePressed.emit();\n }\n };\n // Capture phase is required: child elements (e.g. fdkFocusableList items) call\n // stopPropagation() on keydown, which would prevent the event from bubbling up.\n el.addEventListener('keydown', escapeHandler, true);\n this._escapeUnlisten = () => el.removeEventListener('keydown', escapeHandler, true);\n }\n}\n","<div fd-popover-body-header>\n <div fd-bar barDesign=\"header\">\n <div fd-bar-left>\n @if (_isDetailStage) {\n <fd-button-bar\n (click)=\"openOverflowMain()\"\n [glyph]=\"navigationArrow()\"\n fdType=\"transparent\"\n [attr.aria-label]=\"('coreAvatarGroup.backButton' | fdTranslate)()\"\n [title]=\"('coreAvatarGroup.backButton' | fdTranslate)()\"\n ></fd-button-bar>\n }\n <fd-bar-element\n ><span\n class=\"fd-title\"\n [class]=\"'fd-title--h' + overflowHeadingLevel()\"\n role=\"heading\"\n [attr.aria-level]=\"overflowHeadingLevel()\"\n >\n {{ _isDetailStage ? _selectedItem.title : overflowPopoverTitle }}\n </span></fd-bar-element\n >\n @if (_isDetailStage) {\n <fd-bar-element> </fd-bar-element>\n }\n </div>\n </div>\n</div>\n<div\n class=\"fd-avatar-group__overflow-body\"\n [class.fd-avatar-group__overflow-body--no-padding]=\"_isDetailStage\"\n [class.fd-avatar-group__overflow-body--no-horizontal-scroll]=\"_isDetailStage\"\n fdkFocusableList\n role=\"list\"\n navigationDirection=\"horizontal\"\n>\n @if (_overflowPopoverStage === 'main') {\n @for (item of avatars; track item) {\n <ng-template\n cdkPortalOutlet\n fdAvatarGroupItemPortal\n [avatarGroupItem]=\"item.avatarGroupItem\"\n [forceVisibility]=\"true\"\n [posInSet]=\"item.posInSet\"\n [setSize]=\"item.setSize\"\n >\n </ng-template>\n }\n } @else {\n <ng-template [ngTemplateOutlet]=\"_selectedItem.details\"></ng-template>\n }\n</div>\n","import { Directive, EmbeddedViewRef, inject, Input, OnDestroy, TemplateRef, ViewContainerRef } from '@angular/core';\nimport { AvatarGroupItemRendererDirective } from './avatar-group-item-renderer.directive';\n\n@Directive({\n selector: '[fdAvatarGroupInternalOverflowButton]',\n standalone: true\n})\nexport class AvatarGroupInternalOverflowButtonDirective implements OnDestroy {\n /**\n * List of hidden items to be rendered in the overflow popover.\n **/\n @Input('fdAvatarGroupInternalOverflowButton')\n set hiddenItems(value: AvatarGroupItemRendererDirective[] | null) {\n const hiddenItems = value || [];\n if (hiddenItems.length > 0) {\n this._show(hiddenItems);\n } else {\n this._hide();\n }\n }\n\n /** @hidden */\n private readonly _templateContext: { $implicit: AvatarGroupItemRendererDirective[] } = { $implicit: [] };\n /** @hidden */\n private readonly _templateRef: TemplateRef<{ $implicit: AvatarGroupItemRendererDirective[] }> = inject(TemplateRef);\n /** @hidden */\n private readonly _viewContainerRef = inject(ViewContainerRef);\n /** @hidden */\n private _embeddedView?: EmbeddedViewRef<any>;\n\n /** @hidden */\n static ngTemplateContextGuard(\n _directive: AvatarGroupInternalOverflowButtonDirective,\n context: unknown\n ): context is { $implicit: AvatarGroupItemRendererDirective[] } {\n return true;\n }\n /** @hidden */\n ngOnDestroy(): void {\n this._hide();\n }\n\n /** @hidden */\n private _show(hiddenItems: AvatarGroupItemRendererDirective[]): void {\n this._templateContext.$implicit = hiddenItems;\n if (this._embeddedView) {\n this._embeddedView.detectChanges();\n return;\n }\n this._viewContainerRef.clear();\n this._embeddedView = this._viewContainerRef.createEmbeddedView(this._templateRef, this._templateContext);\n this._embeddedView.detectChanges();\n }\n\n /** @hidden */\n private _hide(): void {\n this._viewContainerRef.clear();\n this._embeddedView = undefined;\n }\n}\n","import { Directive, inject, TemplateRef } from '@angular/core';\nimport { AvatarGroupItemRendererDirective } from './avatar-group-item-renderer.directive';\n\n/**\n * Avatar group overflow body directive, used to provide a template for the avatar group overflow body.\n * If nothing is provided, default overflow body will be used.\n */\n@Directive({\n selector: '[fdAvatarGroupOverflowBody]',\n standalone: true\n})\nexport class AvatarGroupOverflowBodyDirective {\n /** @hidden */\n readonly _templateRef: TemplateRef<{ hiddenItems: AvatarGroupItemRendererDirective[] }> = inject(TemplateRef);\n}\n","import { Directive, inject, TemplateRef } from '@angular/core';\nimport { AvatarGroupItemRendererDirective } from './avatar-group-item-renderer.directive';\n\n/**\n * Avatar group overflow button directive, used to provide a template for the avatar group overflow button.\n * If nothing is provided, default overflow button will be used.\n */\n@Directive({\n selector: '[fdAvatarGroupOverflowButton]',\n standalone: true\n})\nexport class AvatarGroupOverflowButtonDirective {\n /** @hidden */\n readonly _templateRef: TemplateRef<{ hiddenItems: AvatarGroupItemRendererDirective[] }> = inject(TemplateRef);\n}\n","import { LiveAnnouncer } from '@angular/cdk/a11y';\nimport { Direction } from '@angular/cdk/bidi';\nimport { NgTemplateOutlet } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChild,\n ContentChildren,\n Input,\n QueryList,\n ViewChildren,\n ViewEncapsulation,\n computed,\n inject,\n input,\n signal,\n viewChild\n} from '@angular/core';\nimport {\n FocusableListDirective,\n FocusableListItemFocusedEvent,\n ResizeObserverDirective,\n RtlService\n} from '@fundamental-ngx/cdk/utils';\nimport { PopoverBodyDirective, PopoverComponent, PopoverControlComponent } from '@fundamental-ngx/core/popover';\nimport { resolveTranslationSignalFn } from '@fundamental-ngx/i18n';\nimport { AvatarGroupHostComponent } from './components/avatar-group-host.component';\nimport { AvatarGroupOverflowButtonComponent } from './components/avatar-group-overflow-button.component';\nimport { DefaultAvatarGroupOverflowBodyComponent } from './components/default-avatar-group-overflow-body/default-avatar-group-overflow-body.component';\nimport { AvatarGroupInternalOverflowButtonDirective } from './directives/avatar-group-internal-overflow-button.directive';\nimport { AvatarGroupItemRendererDirective } from './directives/avatar-group-item-renderer.directive';\nimport { AvatarGroupItemDirective } from './directives/avatar-group-item.directive';\nimport { AvatarGroupOverflowBodyDirective } from './directives/avatar-group-overflow-body.directive';\nimport { AvatarGroupOverflowButtonDirective } from './directives/avatar-group-overflow-button.directive';\nimport { AVATAR_GROUP_HOST_CONFIG } from './tokens';\nimport { AvatarGroupHostConfig } from './types';\n\n@Component({\n selector: 'fd-avatar-group',\n templateUrl: './avatar-group.component.html',\n styleUrl: './avatar-group.component.scss',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: AVATAR_GROUP_HOST_CONFIG,\n useExisting: AvatarGroupComponent\n }\n ],\n imports: [\n AvatarGroupHostComponent,\n PopoverComponent,\n PopoverControlComponent,\n PopoverBodyDirective,\n NgTemplateOutlet,\n FocusableListDirective,\n AvatarGroupItemRendererDirective,\n AvatarGroupOverflowButtonComponent,\n DefaultAvatarGroupOverflowBodyComponent,\n AvatarGroupInternalOverflowButtonDirective,\n ResizeObserverDirective\n ]\n})\nexport class AvatarGroupComponent implements AvatarGroupHostConfig {\n /**\n * The AvatarGroup control has two group types:\n *\n * `group`: The avatars are displayed as partially overlapped on top of each other and the entire group has one click/tap area.\n * `individual`: The avatars are displayed side-by-side and each avatar has its own click/tap area.\n * */\n @Input()\n type: AvatarGroupHostConfig['type'] = 'individual';\n\n /**\n * Orientation of the AvatarGroup control.\n *\n * `horizontal`: The avatars are displayed horizontally.\n * `vertical`: The avatars are displayed vertically.\n */\n @Input()\n orientation: AvatarGroupHostConfig['orientation'] = 'horizontal';\n\n /**\n * The spacing between the items depends on the size of the avatars in the group.\n * The size is also used for the default overflow button.\n * `xs`, `s`, `m`, `l`, `xl`\n */\n @Input()\n size: AvatarGroupHostConfig['size'] = 'l';\n\n /**\n * The title which is displayed when user opens the overflow popover.\n * This takes effect only when default overflow popover body is used,\n * otherwise the title should be set on the custom overflow popover body component.\n */\n @Input()\n overflowPopoverTitle: string;\n\n /**\n * Aria label for the avatar group container.\n * When not provided, a default label is generated from the i18n `coreAvatarGroup.ariaLabelGroup` key\n * for group type, or `coreAvatarGroup.ariaLabelIndividual` for individual type,\n * using the current displayed and hidden avatar counts as context.\n */\n @Input()\n ariaLabel: string;\n\n /** @hidden */\n @ViewChildren(AvatarGroupItemRendererDirective)\n _avatarRenderers: QueryList<AvatarGroupItemRendererDirective>;\n\n /** @hidden */\n @ContentChildren(AvatarGroupItemDirective)\n _avatars: QueryList<AvatarGroupItemDirective>;\n\n /** @hidden */\n @ContentChild(AvatarGroupOverflowButtonDirective)\n _overflowButton: AvatarGroupOverflowButtonDirective;\n\n /** @hidden */\n @ContentChild(AvatarGroupOverflowBodyDirective)\n _avatarGroupPopoverBody: AvatarGroupOverflowBodyDirective;\n\n /**\n * Heading level for the overflow popover title.\n * @default 5\n */\n readonly overflowHeadingLevel = input<1 | 2 | 3 | 4 | 5 | 6>(5);\n\n /** @hidden */\n readonly _avatarGroupHost = viewChild(AvatarGroupHostComponent);\n\n /** @hidden */\n protected readonly contentDirection = computed<Direction>(() => (this._rtlService?.rtl() ? 'rtl' : 'ltr'));\n\n /** @hidden */\n protected readonly _defaultAriaLabelGroup = computed(() =>\n this._translate('coreAvatarGroup.ariaLabelGroup', this._ariaLabelContext)()\n );\n\n /** @hidden */\n protected readonly _defaultAriaLabelIndividual = computed(() =>\n this._translate('coreAvatarGroup.ariaLabelIndividual', this._ariaLabelContext)()\n );\n\n /** @hidden */\n private readonly _translate = resolveTranslationSignalFn();\n\n /** @hidden */\n private readonly _ariaLabelContext = computed(() => {\n const hiddenItems = this._avatarGroupHost()?._hiddenItems() ?? [];\n const hiddenCount = hiddenItems.length;\n const count = (this._avatars?.length ?? 0) - hiddenCount;\n return { count, hiddenCount };\n });\n\n /** @hidden */\n private readonly _cdr = inject(ChangeDetectorRef);\n\n /** @hidden */\n private readonly _rtlService = inject(RtlService, { optional: true });\n\n /** @hidden */\n private readonly _liveAnnouncer = inject(LiveAnnouncer);\n\n /** @hidden */\n _detectChanges(): void {\n this._cdr.detectChanges();\n }\n\n /** @hidden */\n protected _onItemFocused(event: FocusableListItemFocusedEvent): void {\n this._liveAnnouncer.announce(`${event.index + 1} of ${event.total}`);\n }\n\n /** @hidden */\n protected _popupBodyAriaLabel(count: number): string {\n return this._translate('coreAvatarGroup.popupBodyAriaLabel', signal({ count }))();\n }\n}\n","<ng-content></ng-content>\n@if (type === 'individual') {\n <fd-avatar-group-host\n #avatarGroupHostComponent\n [type]=\"type\"\n [size]=\"size\"\n [orientation]=\"orientation\"\n fdkResizeObserver\n fdkFocusableList\n [contentDirection]=\"contentDirection()\"\n [wrap]=\"true\"\n [navigationDirection]=\"orientation\"\n [items]=\"_avatars\"\n [attr.aria-label]=\"ariaLabel || _defaultAriaLabelIndividual()\"\n (resized)=\"_detectChanges()\"\n (itemFocused)=\"_onItemFocused($event)\"\n >\n @for (item of _avatars; track item) {\n <fd-popover [noArrow]=\"false\" [focusAutoCapture]=\"true\">\n <fd-popover-control\n class=\"fd-avatar-group__popover-control\"\n tabindex=\"-1\"\n (click)=\"outletItem.element.focus()\"\n >\n <ng-template\n #outletItem=\"fdAvatarGroupItemPortal\"\n cdkPortalOutlet\n fdAvatarGroupItemPortal\n [forceVisibility]=\"item.forceVisibility\"\n [avatarGroupItem]=\"item\"\n >\n </ng-template>\n </fd-popover-control>\n @if (item.details) {\n <ng-template fdPopoverBody>\n <ng-template [ngTemplateOutlet]=\"item.details\"></ng-template>\n </ng-template>\n }\n </fd-popover>\n }\n <ng-template [fdAvatarGroupInternalOverflowButton]=\"avatarGroupHostComponent._hiddenItems()\" let-hiddenItems>\n <fd-popover\n #overflowPopover\n [noArrow]=\"false\"\n [focusAutoCapture]=\"true\"\n [bodyAriaLabel]=\"_popupBodyAriaLabel(hiddenItems.length)\"\n >\n <fd-popover-control class=\"fd-avatar-group__popover-control\" tabindex=\"-1\">\n @if (_overflowButton) {\n <ng-template\n [ngTemplateOutlet]=\"_overflowButton._templateRef\"\n [ngTemplateOutletContext]=\"{ hiddenItems: hiddenItems }\"\n />\n } @else {\n <fd-avatar-group-overflow-button [size]=\"size\" [colorAccent]=\"1\">\n +{{ hiddenItems.length }}\n </fd-avatar-group-overflow-button>\n }\n </fd-popover-control>\n <ng-template fdPopoverBody>\n <ng-template\n [ngTemplateOutlet]=\"avatarGroupOverflowBodyTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: hiddenItems, popoverRef: overflowPopover }\"\n ></ng-template>\n </ng-template>\n </fd-popover>\n </ng-template>\n </fd-avatar-group-host>\n} @else {\n <fd-popover\n #groupPopover\n [noArrow]=\"false\"\n [focusAutoCapture]=\"true\"\n [bodyAriaLabel]=\"_popupBodyAriaLabel(_avatars.length)\"\n fdkResizeObserver\n (resized)=\"_detectChanges()\"\n >\n <fd-popover-control class=\"fd-avatar-group__popover-control\">\n <fd-avatar-group-host\n #avatarGroupHostComponent\n [type]=\"type\"\n [size]=\"size\"\n [orientation]=\"orientation\"\n [attr.aria-label]=\"ariaLabel || _defaultAriaLabelGroup()\"\n role=\"button\"\n tabindex=\"0\"\n >\n @for (item of _avatars; track item) {\n <ng-template\n cdkPortalOutlet\n fdAvatarGroupItemPortal\n [forceVisibility]=\"item.forceVisibility\"\n [avatarGroupItem]=\"item\"\n >\n </ng-template>\n }\n <ng-template\n [fdAvatarGroupInternalOverflowButton]=\"avatarGroupHostComponent._hiddenItems()\"\n let-hiddenItems\n >\n <ng-template\n [ngTemplateOutlet]=\"overflowButtonTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: hiddenItems }\"\n ></ng-template>\n </ng-template>\n </fd-avatar-group-host>\n </fd-popover-control>\n <ng-template fdPopoverBody>\n <ng-template\n [ngTemplateOutlet]=\"avatarGroupOverflowBodyTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: _avatarRenderers, popoverRef: groupPopover }\"\n ></ng-template>\n </ng-template>\n </fd-popover>\n}\n<ng-template #overflowButtonTemplate let-hiddenItems>\n @if (_overflowButton) {\n <ng-template\n [ngTemplateOutlet]=\"_overflowButton._templateRef\"\n [ngTemplateOutletContext]=\"{ hiddenItems: hiddenItems }\"\n />\n } @else {\n <fd-avatar-group-overflow-button [size]=\"size\" [colorAccent]=\"1\" [fdkFocusableItem]=\"false\">\n +{{ hiddenItems.length }}\n </fd-avatar-group-overflow-button>\n }\n</ng-template>\n<ng-template #avatarGroupOverflowBodyTemplate let-hiddenItems let-popoverRef=\"popoverRef\">\n @if (_avatarGroupPopoverBody) {\n <ng-template\n [ngTemplateOutlet]=\"_avatarGroupPopoverBody._templateRef\"\n [ngTemplateOutletContext]=\"{ hiddenItems: hiddenItems }\"\n />\n } @else {\n <fd-default-avatar-group-overflow-body\n [avatars]=\"hiddenItems\"\n [overflowPopoverTitle]=\"overflowPopoverTitle\"\n [overflowHeadingLevel]=\"overflowHeadingLevel()\"\n (escapePressed)=\"popoverRef?.close()\"\n />\n }\n</ng-template>\n","import { ChangeDetectionStrategy, Component, Input, ViewEncapsulation } from '@angular/core';\n\n/**\n * Avatar group overflow body component, used to provide a template for the avatar group overflow body.\n */\n@Component({\n selector: 'fd-avatar-group-overflow-body',\n templateUrl: './avatar-group-overflow-body.component.html',\n host: {\n class: 'fd-popover__wrapper'\n },\n styleUrl: './avatar-group-overflow-body.component.scss',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true\n})\nexport class AvatarGroupOverflowBodyComponent {\n /** Remove the padding from the overflow body. */\n @Input()\n noPadding = false;\n\n /** Hide horizontal scrollbar from the overflow body. */\n @Input()\n noHorizontalScroll = true;\n\n /** Hide vertical scrollbar from the overflow body. */\n @Input()\n noVerticalScroll = true;\n\n /** Additional popover body class */\n @Input()\n additionalPopoverBodyClass = '';\n}\n","<ng-content select=\"[fd-popover-body-header]\"></ng-content>\n<div\n class=\"fd-avatar-group__overflow-body\"\n [class.fd-avatar-group__overflow-body--no-padding]=\"noPadding\"\n [class.fd-avatar-group__overflow-body--no-horizontal-scroll]=\"noHorizontalScroll\"\n [class.fd-avatar-group__overflow-body--no-vertical-scroll]=\"noVerticalScroll\"\n>\n <ng-content select=\"[fd-avatar-group-overflow-body-content]\"></ng-content>\n</div>\n","import { PortalModule } from '@angular/cdk/portal';\nimport { NgModule } from '@angular/core';\nimport { AvatarGroupComponent } from './avatar-group.component';\nimport { AvatarGroupOverflowBodyComponent } from './components/avatar-group-overflow-body/avatar-group-overflow-body.component';\nimport { AvatarGroupOverflowButtonComponent } from './components/avatar-group-overflow-button.component';\nimport { AvatarGroupItemDirective } from './directives/avatar-group-item.directive';\nimport { AvatarGroupOverflowBodyDirective } from './directives/avatar-group-overflow-body.directive';\nimport { AvatarGroupOverflowButtonDirective } from './directives/avatar-group-overflow-button.directive';\n\n/**\n * @deprecated\n * Use direct imports of components and directives.\n */\n@NgModule({\n imports: [\n AvatarGroupComponent,\n AvatarGroupItemDirective,\n AvatarGroupOverflowButtonComponent,\n AvatarGroupOverflowButtonDirective,\n AvatarGroupOverflowBodyComponent,\n AvatarGroupOverflowBodyDirective,\n PortalModule\n ],\n exports: [\n AvatarGroupComponent,\n AvatarGroupItemDirective,\n AvatarGroupOverflowButtonComponent,\n AvatarGroupOverflowButtonDirective,\n AvatarGroupOverflowBodyComponent,\n AvatarGroupOverflowBodyDirective\n ]\n})\nexport class AvatarGroupModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;;;;;;;;MAGa,wBAAwB,GAAG,IAAI,cAAc,CACtD,sEAAsE;;ACF1E;;AAEG;MAKU,wBAAwB,CAAA;AAJrC,IAAA,WAAA,GAAA;AAWI;;AAEK;QAEL,IAAA,CAAA,eAAe,GAAG,KAAK;;AAGvB,QAAA,IAAA,CAAA,YAAY,GAAsB,MAAM,CAAC,WAAW,CAAC;AAoBxD,IAAA;AAlBG;;;AAGK;IACL,IACI,OAAO,CAAC,eAA2C,EAAA;AACnD,QAAA,IAAI,OAAO,eAAe,KAAK,QAAQ,EAAE;YACrC;QACJ;AACA,QAAA,IAAI,CAAC,QAAQ,GAAG,eAAe;IACnC;AAEA,IAAA,IAAI,OAAO,GAAA;QACP,OAAO,IAAI,CAAC,QAAQ;IACxB;8GA9BS,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAxB,wBAAwB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,CAAA,wBAAA,EAAA,OAAA,CAAA,EAAA,eAAA,EAAA,CAAA,kCAAA,EAAA,iBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,mBAAA,EAAA,SAAA,CAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAxB,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAJpC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,qBAAqB;AAC/B,oBAAA,UAAU,EAAE;AACf,iBAAA;;sBAKI,KAAK;uBAAC,wBAAwB;;sBAM9B,KAAK;uBAAC,kCAAkC;;sBAUxC,KAAK;uBAAC,mBAAmB;;;MCVjB,gCAAgC,CAAA;AAoBzC;;AAEI;AACJ,IAAA,IAAI,OAAO,GAAA;AACP,QAAA,OAAO,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE;IAC3C;AAEA;;AAEI;AACJ,IAAA,IAAI,OAAO,GAAA;QACP,OAAO,IAAI,CAAC,gBAAgB,EAAE,SAAS,CAAC,CAAC,CAAgB;IAC7D;AAEA;;AAEI;AACJ,IAAA,IAAI,KAAK,GAAA;AACL,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE;YACd,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,qBAAqB,EAAE;YACjD,MAAM,KAAK,GAAG,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC;AAC5C,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK;YACxB,MAAM,UAAU,GAAG,UAAU,CAAC,KAAK,CAAC,UAAU,CAAC;YAC/C,MAAM,WAAW,GAAG,UAAU,CAAC,KAAK,CAAC,WAAW,CAAC;AAEjD,YAAA,IAAI,KAAK,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE;gBACxD,IAAI,CAAC,eAAe,GAAG,KAAK,GAAG,UAAU,GAAG,WAAW;YAC3D;QACJ;QACA,OAAO,IAAI,CAAC,eAAe;IAC/B;AAEA;;AAEI;AACJ,IAAA,IAAI,MAAM,GAAA;AACN,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE;AACd,YAAA,IAAI,CAAC,gBAAgB;AACjB,gBAAA,IAAI,CAAC,OAAO,CAAC,qBAAqB,EAAE,CAAC,MAAM;oBAC3C,UAAU,CAAC,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC;oBACpD,UAAU,CAAC,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,YAAY,CAAC;QAC/D;QACA,OAAO,IAAI,CAAC,gBAAgB;IAChC;;AAsCA,IAAA,WAAA,GAAA;AA/FA;;AAEI;QAEJ,IAAA,CAAA,eAAe,GAAG,KAAK;;QAwDf,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,eAAe,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;;AAGvD,QAAA,IAAA,CAAA,iBAAiB,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAEpD;;AAEI;AACI,QAAA,IAAA,CAAA,SAAS,GAAG,IAAI,eAAe,CAAwB,IAAI,CAAC;;QAM5D,IAAA,CAAA,YAAY,GAAG,IAAI;;QAMnB,IAAA,CAAA,eAAe,GAAG,CAAC;;QAGnB,IAAA,CAAA,gBAAgB,GAAG,CAAC;;QAGpB,IAAA,CAAA,SAAS,GAAG,CAAC;;QAGb,IAAA,CAAA,QAAQ,GAAG,CAAC;;AAGZ,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,wBAAwB,CAAC;AA2CtD;;AAEI;QACJ,IAAA,CAAA,WAAW,GAAG,MAAe,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,OAAO;QA1C1D,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE;AAC7C,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAC9B,MAAM,CAAC,CAAC,OAAO,KAAK,CAAC,CAAC,OAAO,CAAC,EAC9B,SAAS,CAAC,CAAC,OAAO,KAAK,SAAS,CAAC,OAAiC,EAAE,SAAS,CAA8B,CAAC,CAC/G;IACL;;IAGA,QAAQ,GAAA;QACJ,IAAI,CAAC,IAAI,EAAE;IACf;AAEA;;AAEI;IACJ,IAAI,GAAA;AACA,QAAA,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE;AAC3B,QAAA,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;AACvB,QAAA,IAAI,CAAC,YAAY,GAAG,KAAK;IAC7B;AAEA;;AAEI;IACJ,IAAI,GAAA;AACA,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE;YACd;QACJ;AACA,QAAA,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;AACvB,YAAA,IAAI,CAAC,eAAe,GAAG,IAAI,cAAc,CAAC,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE,IAAI,CAAC,iBAAiB,CAAC;QACxG;AACA,QAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC;AACvE,QAAA,IAAI,CAAC,gBAAgB,CAAC,aAAa,EAAE;QACrC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;QACjC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,KAAK,YAAY,CAAC;QACxD,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,KAAK,YAAY;QAC1D,IAAI,CAAC,kBAAkB,EAAE;IAC7B;AAOA;;AAEI;AACJ,IAAA,WAAW,CAAC,QAAiB,EAAA;AACzB,QAAA,IAAI,CAAC,OAAO,CAAC,QAAQ,GAAG,QAAQ,GAAG,CAAC,GAAG,CAAC,CAAC;IAC7C;AAEA;;;;AAII;IACJ,IACI,QAAQ,CAAC,KAAa,EAAA;AACtB,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK;AACtB,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE;YACd,IAAI,CAAC,kBAAkB,EAAE;QAC7B;IACJ;AAEA,IAAA,IAAI,QAAQ,GAAA;QACR,OAAO,IAAI,CAAC,SAAS;IACzB;;IAGA,IACI,OAAO,CAAC,KAAa,EAAA;AACrB,QAAA,IAAI,CAAC,QAAQ,GAAG,KAAK;AACrB,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE;YACd,IAAI,CAAC,kBAAkB,EAAE;QAC7B;IACJ;AAEA,IAAA,IAAI,OAAO,GAAA;QACP,OAAO,IAAI,CAAC,QAAQ;IACxB;;IAGA,KAAK,GAAA;AACD,QAAA,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE;IACzB;;IAGQ,kBAAkB,GAAA;AACtB,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,OAAO;AACvB,QAAA,IAAI,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YAC1C;QACJ;AACA,QAAA,EAAE,CAAC,YAAY,CAAC,eAAe,EAAE,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AACxD,QAAA,EAAE,CAAC,YAAY,CAAC,cAAc,EAAE,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC1D;8GApMS,gCAAgC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAhC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,gCAAgC,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,2BAAA,EAAA,MAAA,EAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,SAAA,EAR9B;AACP,YAAA;AACI,gBAAA,OAAO,EAAE,4BAA4B;AACrC,gBAAA,WAAW,EAAE;AAChB,aAAA;YACD;AACH,SAAA,EAAA,QAAA,EAAA,CAAA,yBAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAEQ,gCAAgC,EAAA,UAAA,EAAA,CAAA;kBAZ5C,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,2BAA2B;AACrC,oBAAA,QAAQ,EAAE,yBAAyB;AACnC,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,SAAS,EAAE;AACP,wBAAA;AACI,4BAAA,OAAO,EAAE,4BAA4B;AACrC,4BAAA,WAAW,EAAA;AACd,yBAAA;wBACD;AACH;AACJ,iBAAA;;sBAKI;;sBAKA;;sBAqJA;;sBAaA;;;MCxJQ,wBAAwB,CAAA;AARrC,IAAA,WAAA,GAAA;;AAoDI,QAAA,IAAA,CAAA,cAAc,GAAsC,MAAM,CAAC,uBAAuB,CAAC,CAAC,aAAa;;AAGxF,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;;QAGxC,IAAA,CAAA,YAAY,GAAG,MAAM,CAAqC,EAAE;yFAAC;;AAG5C,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC;;AAGzC,QAAA,IAAA,CAAA,IAAI,GAAG,MAAM,CAAC,iBAAiB,CAAC;;AAGhC,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,OAAO,EAAiB;AA+FrD,IAAA;;IA3FG,sBAAsB,GAAA;QAClB,OAAO;YACH,IAAI,CAAC,KAAK,IAAI,EAAE;YAChB,iBAAiB;YACjB,IAAI,CAAC,IAAI,KAAK,YAAY,GAAG,kCAAkC,GAAG,EAAE;YACpE,IAAI,CAAC,IAAI,KAAK,OAAO,GAAG,6BAA6B,GAAG,EAAE;AAC1D,YAAA,IAAI,CAAC,WAAW,GAAG,mBAAmB,GAAG,IAAI,CAAC,WAAW,GAAG,EAAE;AAC9D,YAAA,IAAI,CAAC,IAAI,GAAG,mBAAmB,GAAG,IAAI,CAAC,IAAI,GAAG;SACjD;IACL;;IAGA,QAAQ,GAAA;QACJ,IAAI,CAAC,sBAAsB,EAAE;IACjC;;AAGA,IAAA,WAAW,CAAC,OAAsB,EAAA;QAC9B,IAAI,CAAC,sBAAsB,EAAE;AAC7B,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC;IAClC;;IAGA,eAAe,GAAA;AACX,QAAA,aAAa,CAAC;YACV,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;YACxE,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CACtB,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,EACxB,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC,CAC1B;YACD,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;SACtC;AACI,aAAA,IAAI,CACD,GAAG,CAAC,CAAC,CAAC,cAAc,EAAE,KAAK,CAAC,KAAK,IAAI,CAAC,oBAAoB,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC,EAClF,SAAS,CAAC,MAAM,eAAe,EAAE,CAAC,EAClC,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC;aAEvC,SAAS,CAAC,CAAC,EAAE,WAAW,EAAE,YAAY,EAAE,KAAI;YACzC,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE;AACxC,YAAA,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM;YAC7B,QAAQ,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,KAAI;AAC7B,gBAAA,IAAI,CAAC,QAAQ,GAAG,KAAK,GAAG,CAAC;AACzB,gBAAA,IAAI,CAAC,OAAO,GAAG,KAAK;AACxB,YAAA,CAAC,CAAC;AACF,YAAA,YAAY,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,EAAE,CAAC;AAC3C,YAAA,WAAW,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,EAAE,CAAC;AAC1C,YAAA,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;AACzB,YAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,WAAW,CAAC;AACtC,QAAA,CAAC,CAAC;IACV;;IAGQ,oBAAoB,CACxB,cAAsB,EACtB,KAAyC,EAAA;AAKzC,QAAA,IAAI,IAAI,CAAC,WAAW,KAAK,UAAU,EAAE;YACjC,OAAO;AACH,gBAAA,YAAY,EAAE,KAAK;AACnB,gBAAA,WAAW,EAAE;aAChB;QACL;AACA,QAAA,MAAM,YAAY,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,eAAe,CAAC;QAC3D,MAAM,WAAW,GAAuC,EAAE;AAC1D,QAAA,IAAI,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,MAAM,IAAI,CAAC,eAAe,GAAG,GAAG,GAAG,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC;AAC9F,QAAA,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;AACtB,YAAA,IAAI,IAAI,CAAC,eAAe,EAAE;gBACtB;YACJ;AACA,YAAA,QAAQ,IAAI,IAAI,CAAC,KAAK;AACtB,YAAA,IAAI,QAAQ,IAAI,cAAc,EAAE;AAC5B,gBAAA,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC;YAC3B;AAAO,iBAAA,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;AAC9B,gBAAA,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC;YAC1B;QACJ;AACA;;AAEG;AACH,QAAA,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE;AACxB,YAAA,MAAM,qBAAqB,GAAG,YAAY,CAAC,OAAO,EAAE,CAAC,SAAS,CAAC,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC;AAC/F,YAAA,WAAW,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,MAAM,CAAC,qBAAqB,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAC3E;QACA,OAAO;YACH,YAAY;YACZ;SACH;IACL;8GAzJS,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAxB,wBAAwB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,IAAA,EAAA,MAAA,EAAA,WAAA,EAAA,aAAA,EAAA,IAAA,EAAA,MAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,UAAA,EAAA,SAAA,EAwChB,gCAAgC,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EA9CvC,2BAA2B,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,2CAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;AAqErC,UAAA,CAAA;IADC,aAAa;;;;AAUb,CAAA,EAAA,wBAAA,CAAA,SAAA,EAAA,wBAAA,EAAA,IAAA,CAAA;2FAxEQ,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBARpC,SAAS;+BACI,sBAAsB,EAAA,QAAA,EACtB,2BAA2B,EAAA,OAAA,EAC5B,EAAE,EAAA,eAAA,EACM,uBAAuB,CAAC,MAAM,EAAA,aAAA,EAChC,iBAAiB,CAAC,IAAI,EAAA,MAAA,EAAA,CAAA,2CAAA,CAAA,EAAA;;sBASpC;;sBAOA;;sBAOA;;sBAOA;;sBAMA;;sBAOA,eAAe;AAAC,gBAAA,IAAA,EAAA,CAAA,gCAAgC,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE;;;ACxD5E;;;;AAIG;AAmBG,MAAO,kCACT,SAAQ,sBAAsB,CAAA;;AA4B9B,IAAA,WAAA,GAAA;AACI,QAAA,KAAK,EAAE;AA1BX;;AAEG;QAEH,IAAA,CAAA,IAAI,GAAS,GAAG;AAEhB;;AAEG;QAGH,IAAA,CAAA,MAAM,GAAG,KAAK;AAEd;;AAEG;QACM,IAAA,CAAA,WAAW,GAA0B,IAAI;AAW9C,QAAA,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,wBAAwB,CAAC,CAAC,IAAI,KAAK,YAAY,CAAC;IAC7E;;IAIA,sBAAsB,GAAA;QAClB,OAAO;YACH,IAAI,CAAC,KAAK,IAAI,EAAE;YAChB,+BAA+B;YAC/B,aAAa,GAAG,IAAI,CAAC,IAAI;AACzB,YAAA,IAAI,CAAC,WAAW,GAAG,aAAa,GAAG,IAAI,CAAC,WAAW,GAAG;SACzD;IACL;;IAGA,QAAQ,GAAA;QACJ,IAAI,CAAC,sBAAsB,EAAE;IACjC;;IAGA,WAAW,GAAA;QACP,IAAI,CAAC,sBAAsB,EAAE;IACjC;8GArDS,kCAAkC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAlC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,kCAAkC,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iCAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,MAAA,EAAA,QAAA,EAAA,WAAA,EAAA,aAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,SAAA,EAAA,EAAA,eAAA,EAAA,kCAAA,EAAA,eAAA,EAAA,2DAAA,EAAA,EAAA,UAAA,EAAA,EAAA,yBAAA,EAAA,aAAA,EAAA,EAAA,EAAA,SAAA,EAPhC;AACP,YAAA;AACI,gBAAA,OAAO,EAAE,4BAA4B;AACrC,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,kCAAkC;AACnE;AACJ,SAAA,EAAA,eAAA,EAAA,IAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAdS,CAAA,0BAAA,CAA4B,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;AAoDtC,UAAA,CAAA;IADC,aAAa;;;;AAQb,CAAA,EAAA,kCAAA,CAAA,SAAA,EAAA,wBAAA,EAAA,IAAA,CAAA;2FA3CQ,kCAAkC,EAAA,UAAA,EAAA,CAAA;kBAlB9C,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,iCAAiC;AAC3C,oBAAA,QAAQ,EAAE,CAAA,0BAAA,CAA4B;AACtC,oBAAA,IAAI,EAAE;AACF,wBAAA,IAAI,EAAE,QAAQ;AACd,wBAAA,iBAAiB,EAAE,kCAAkC;AACrD,wBAAA,iBAAiB,EAAE;AACtB,qBAAA;oBACD,eAAe,EAAE,uBAAuB,CAAC,MAAM;oBAC/C,aAAa,EAAE,iBAAiB,CAAC,IAAI;AACrC,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,SAAS,EAAE;AACP,wBAAA;AACI,4BAAA,OAAO,EAAE,4BAA4B;AACrC,4BAAA,WAAW,EAAE,UAAU,CAAC,wCAAwC;AACnE;AACJ;AACJ,iBAAA;;sBAQI;;sBAMA;;sBACA,WAAW;uBAAC,yBAAyB;;sBAMrC;;sBAKA;;;MCPQ,uCAAuC,CAAA;AAjCpD,IAAA,WAAA,GAAA;AAkCI;;AAEI;QAEJ,IAAA,CAAA,OAAO,GAA+C,EAAE;;QAa/C,IAAA,CAAA,aAAa,GAAG,MAAM,EAAQ;AAEvC;;;AAGG;QACM,IAAA,CAAA,oBAAoB,GAAG,KAAK,CAAwB,CAAC;iGAAC;;QAG/D,IAAA,CAAA,qBAAqB,GAAuB,MAAM;;AAW/B,QAAA,IAAA,CAAA,eAAe,GAAG,QAAQ,CAAC,MAC1C,IAAI,CAAC,WAAW,EAAE,GAAG,EAAE,GAAG,wBAAwB,GAAG,uBAAuB;4FAC/E;;AASgB,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,EAAC,UAAuB,EAAC;;AAG7C,QAAA,IAAA,CAAA,kBAAkB,GAAG,MAAM,CAAC,iBAAiB,CAAC;;AAG9C,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;;QAG7B,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,UAAU,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AAuExE,IAAA;;AAhGG,IAAA,IAAI,cAAc,GAAA;AACd,QAAA,OAAO,IAAI,CAAC,qBAAqB,KAAK,SAAS;IACnD;;IA0BA,eAAe,GAAA;QACX,IAAI,CAAC,uBAAuB,EAAE;QAC9B,IAAI,CAAC,uBAAuB,CAAC;aACxB,IAAI,CACD,SAAS,CAAC,IAAI,CAAC,uBAAuB,CAAC,EACvC,GAAG,CAAC,CAAC,sBAAsB,KAAK,sBAAsB,CAAC,OAAO,EAAE,CAAC;AAEpE,aAAA,SAAS,CAAC,CAAC,KAAyC,KAAI;AACrD,YAAA,IAAI,IAAI,CAAC,sBAAsB,EAAE;AAC7B,gBAAA,IAAI,CAAC,sBAAsB,CAAC,WAAW,EAAE;YAC7C;AACA,YAAA,IAAI,CAAC,sBAAsB,GAAG,KAAK,CAC/B,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,KACd,IAAI,CAAC,QAAQ,CAAC,IAAI,CACd,MAAM,CAAC,OAAO,CAAC,EACf,SAAS,CAAC,CAAC,EAAE,KAAK,aAAa,CAAC,EAAE,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,CAC7E,CACJ,CACJ,CAAC,SAAS,CAAC,CAAC,IAAsC,KAAI;AACnD,gBAAA,IAAI,CAAC,qBAAqB,GAAG,SAAS;AACtC,gBAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,eAAe;AACzC,gBAAA,IAAI,CAAC,kBAAkB,CAAC,aAAa,EAAE;gBACvC,IAAI,CAAC,0BAA0B,EAAE;AACrC,YAAA,CAAC,CAAC;AACN,QAAA,CAAC,CAAC;IACV;;IAGA,WAAW,GAAA;AACP,QAAA,IAAI,CAAC,sBAAsB,EAAE,WAAW,EAAE;QAC1C,IAAI,CAAC,eAAe,EAAE;IAC1B;;IAGU,gBAAgB,GAAA;AACtB,QAAA,IAAI,CAAC,qBAAqB,GAAG,MAAM;AACnC,QAAA,IAAI,CAAC,kBAAkB,CAAC,aAAa,EAAE;QACvC,MAAM,MAAM,GAAG,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,eAAe,KAAK,IAAI,CAAC,aAAa,CAAC;AACjG,QAAA,IAAI,MAAM,EAAE,OAAO,EAAE;AACjB,YAAA,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE;QAC1B;aAAO;YACH,IAAI,CAAC,0BAA0B,EAAE;QACrC;IACJ;;IAGQ,0BAA0B,GAAA;QAC9B,qBAAqB,CAAC,MAAK;AACvB,YAAA,MAAM,EAAE,GAAuB,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,aAAa,CACvE,kCAAkC,CACrC;YACD,EAAE,EAAE,KAAK,EAAE;AACf,QAAA,CAAC,CAAC;IACN;;IAGQ,uBAAuB,GAAA;AAC3B,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa;AACzC,QAAA,MAAM,aAAa,GAAG,CAAC,KAAoB,KAAU;AACjD,YAAA,IAAI,KAAK,CAAC,GAAG,KAAK,QAAQ,EAAE;AACxB,gBAAA,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE;YAC7B;AACJ,QAAA,CAAC;;;QAGD,EAAE,CAAC,gBAAgB,CAAC,SAAS,EAAE,aAAa,EAAE,IAAI,CAAC;AACnD,QAAA,IAAI,CAAC,eAAe,GAAG,MAAM,EAAE,CAAC,mBAAmB,CAAC,SAAS,EAAE,aAAa,EAAE,IAAI,CAAC;IACvF;8GAhIS,uCAAuC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAvC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,uCAAuC,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,uCAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,oBAAA,EAAA,EAAA,iBAAA,EAAA,sBAAA,EAAA,UAAA,EAAA,sBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,oBAAA,EAAA,EAAA,iBAAA,EAAA,sBAAA,EAAA,UAAA,EAAA,sBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,aAAA,EAAA,eAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,qBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,qBAAA,EAAA,EAAA,SAAA,EAdrC;AACP,YAAA;;;;;AAKI,gBAAA,OAAO,EAAE,wBAAwB;AACjC,gBAAA,QAAQ,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,IAAI,EAAE,GAAG;AACvE;SACJ,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,yBAAA,EAAA,SAAA,EAmBa,gCAAgC,gDC7ElD,o6DAoDA,EAAA,MAAA,EAAA,CAAA,6EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDlBQ,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACZ,gCAAgC,EAAA,QAAA,EAAA,2BAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,QAAA,EAAA,CAAA,yBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAChC,sBAAsB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,qBAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,2BAAA,CAAA,EAAA,OAAA,EAAA,CAAA,2BAAA,EAAA,wBAAA,EAAA,aAAA,CAAA,EAAA,QAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACtB,gBAAgB,oJAChB,0BAA0B,EAAA,QAAA,EAAA,iDAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAC1B,YAAY,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,QAAA,EAAA,YAAA,EAAA,OAAA,EAAA,MAAA,EAAA,wBAAA,EAAA,0BAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACZ,kBAAkB,4HAClB,mBAAmB,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACnB,gBAAgB,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAChB,eAAe,EAAA,IAAA,EAAA,aAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;2FAoBV,uCAAuC,EAAA,UAAA,EAAA,CAAA;kBAjCnD,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,uCAAuC,EAAA,OAAA,EAExC;wBACL,YAAY;wBACZ,gCAAgC;wBAChC,sBAAsB;wBACtB,gBAAgB;wBAChB,0BAA0B;wBAC1B,YAAY;wBACZ,kBAAkB;wBAClB,mBAAmB;wBACnB,gBAAgB;wBAChB;qBACH,EAAA,IAAA,EACK;AACF,wBAAA,KAAK,EAAE,qBAAqB;AAC5B,wBAAA,uBAAuB,EAAE;qBAC5B,EAAA,SAAA,EACU;AACP,wBAAA;;;;;AAKI,4BAAA,OAAO,EAAE,wBAAwB;AACjC,4BAAA,QAAQ,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,IAAI,EAAE,GAAG;AACvE;AACJ,qBAAA,EAAA,aAAA,EAEc,iBAAiB,CAAC,IAAI,EAAA,eAAA,EACpB,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,o6DAAA,EAAA,MAAA,EAAA,CAAA,6EAAA,CAAA,EAAA;;sBAM9C;;sBAMA;;sBAIA,YAAY;uBAAC,gCAAgC;;;MEtErC,0CAA0C,CAAA;AAJvD,IAAA,WAAA,GAAA;;AAmBqB,QAAA,IAAA,CAAA,gBAAgB,GAAsD,EAAE,SAAS,EAAE,EAAE,EAAE;;AAEvF,QAAA,IAAA,CAAA,YAAY,GAAmE,MAAM,CAAC,WAAW,CAAC;;AAElG,QAAA,IAAA,CAAA,iBAAiB,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAiChE,IAAA;AAnDG;;AAEI;IACJ,IACI,WAAW,CAAC,KAAgD,EAAA;AAC5D,QAAA,MAAM,WAAW,GAAG,KAAK,IAAI,EAAE;AAC/B,QAAA,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE;AACxB,YAAA,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC;QAC3B;aAAO;YACH,IAAI,CAAC,KAAK,EAAE;QAChB;IACJ;;AAYA,IAAA,OAAO,sBAAsB,CACzB,UAAsD,EACtD,OAAgB,EAAA;AAEhB,QAAA,OAAO,IAAI;IACf;;IAEA,WAAW,GAAA;QACP,IAAI,CAAC,KAAK,EAAE;IAChB;;AAGQ,IAAA,KAAK,CAAC,WAA+C,EAAA;AACzD,QAAA,IAAI,CAAC,gBAAgB,CAAC,SAAS,GAAG,WAAW;AAC7C,QAAA,IAAI,IAAI,CAAC,aAAa,EAAE;AACpB,YAAA,IAAI,CAAC,aAAa,CAAC,aAAa,EAAE;YAClC;QACJ;AACA,QAAA,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE;AAC9B,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,iBAAiB,CAAC,kBAAkB,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,gBAAgB,CAAC;AACxG,QAAA,IAAI,CAAC,aAAa,CAAC,aAAa,EAAE;IACtC;;IAGQ,KAAK,GAAA;AACT,QAAA,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE;AAC9B,QAAA,IAAI,CAAC,aAAa,GAAG,SAAS;IAClC;8GAnDS,0CAA0C,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAA1C,0CAA0C,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,uCAAA,EAAA,MAAA,EAAA,EAAA,WAAA,EAAA,CAAA,qCAAA,EAAA,aAAA,CAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAA1C,0CAA0C,EAAA,UAAA,EAAA,CAAA;kBAJtD,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,uCAAuC;AACjD,oBAAA,UAAU,EAAE;AACf,iBAAA;;sBAKI,KAAK;uBAAC,qCAAqC;;;ACRhD;;;AAGG;MAKU,gCAAgC,CAAA;AAJ7C,IAAA,WAAA,GAAA;;AAMa,QAAA,IAAA,CAAA,YAAY,GAAqE,MAAM,CAAC,WAAW,CAAC;AAChH,IAAA;8GAHY,gCAAgC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAhC,gCAAgC,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAhC,gCAAgC,EAAA,UAAA,EAAA,CAAA;kBAJ5C,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,6BAA6B;AACvC,oBAAA,UAAU,EAAE;AACf,iBAAA;;;ACPD;;;AAGG;MAKU,kCAAkC,CAAA;AAJ/C,IAAA,WAAA,GAAA;;AAMa,QAAA,IAAA,CAAA,YAAY,GAAqE,MAAM,CAAC,WAAW,CAAC;AAChH,IAAA;8GAHY,kCAAkC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAlC,kCAAkC,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,+BAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAlC,kCAAkC,EAAA,UAAA,EAAA,CAAA;kBAJ9C,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,+BAA+B;AACzC,oBAAA,UAAU,EAAE;AACf,iBAAA;;;MCsDY,oBAAoB,CAAA;AA1BjC,IAAA,WAAA,GAAA;AA2BI;;;;;AAKK;QAEL,IAAA,CAAA,IAAI,GAAkC,YAAY;AAElD;;;;;AAKG;QAEH,IAAA,CAAA,WAAW,GAAyC,YAAY;AAEhE;;;;AAIG;QAEH,IAAA,CAAA,IAAI,GAAkC,GAAG;AAmCzC;;;AAGG;QACM,IAAA,CAAA,oBAAoB,GAAG,KAAK,CAAwB,CAAC;iGAAC;;QAGtD,IAAA,CAAA,gBAAgB,GAAG,SAAS,CAAC,wBAAwB;6FAAC;;QAG5C,IAAA,CAAA,gBAAgB,GAAG,QAAQ,CAAY,OAAO,IAAI,CAAC,WAAW,EAAE,GAAG,EAAE,GAAG,KAAK,GAAG,KAAK,CAAC;6FAAC;;AAGvF,QAAA,IAAA,CAAA,sBAAsB,GAAG,QAAQ,CAAC,MACjD,IAAI,CAAC,UAAU,CAAC,gCAAgC,EAAE,IAAI,CAAC,iBAAiB,CAAC,EAAE;mGAC9E;;AAGkB,QAAA,IAAA,CAAA,2BAA2B,GAAG,QAAQ,CAAC,MACtD,IAAI,CAAC,UAAU,CAAC,qCAAqC,EAAE,IAAI,CAAC,iBAAiB,CAAC,EAAE;wGACnF;;QAGgB,IAAA,CAAA,UAAU,GAAG,0BAA0B,EAAE;;AAGzC,QAAA,IAAA,CAAA,iBAAiB,GAAG,QAAQ,CAAC,MAAK;YAC/C,MAAM,WAAW,GAAG,IAAI,CAAC,gBAAgB,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE;AACjE,YAAA,MAAM,WAAW,GAAG,WAAW,CAAC,MAAM;AACtC,YAAA,MAAM,KAAK,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,IAAI,CAAC,IAAI,WAAW;AACxD,YAAA,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE;QACjC,CAAC;8FAAC;;AAGe,QAAA,IAAA,CAAA,IAAI,GAAG,MAAM,CAAC,iBAAiB,CAAC;;QAGhC,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,UAAU,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;AAGpD,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAC,aAAa,CAAC;AAgB1D,IAAA;;IAbG,cAAc,GAAA;AACV,QAAA,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;IAC7B;;AAGU,IAAA,cAAc,CAAC,KAAoC,EAAA;AACzD,QAAA,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,GAAG,KAAK,CAAC,KAAK,GAAG,CAAC,CAAA,IAAA,EAAO,KAAK,CAAC,KAAK,CAAA,CAAE,CAAC;IACxE;;AAGU,IAAA,mBAAmB,CAAC,KAAa,EAAA;AACvC,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,oCAAoC,EAAE,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE;IACrF;8GAnHS,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAApB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,oBAAoB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,oBAAA,EAAA,EAAA,iBAAA,EAAA,sBAAA,EAAA,UAAA,EAAA,sBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,oBAAA,EAAA,EAAA,iBAAA,EAAA,sBAAA,EAAA,UAAA,EAAA,sBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,SAAA,EApBlB;AACP,YAAA;AACI,gBAAA,OAAO,EAAE,wBAAwB;AACjC,gBAAA,WAAW,EAAE;AAChB;AACJ,SAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAoEa,kCAAkC,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,yBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAIlC,gCAAgC,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,UAAA,EAAA,SAAA,EAR7B,wBAAwB,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAkBH,wBAAwB,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,SAAA,EAtBhD,gCAAgC,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC7GlD,85LA8IA,EAAA,MAAA,EAAA,CAAA,4pxCAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,ED3FQ,wBAAwB,4HACxB,gBAAgB,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,QAAA,EAAA,cAAA,EAAA,uBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,qBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,cAAA,EAAA,kBAAA,EAAA,qBAAA,EAAA,SAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,gBAAA,EAAA,cAAA,EAAA,cAAA,EAAA,qBAAA,EAAA,wBAAA,EAAA,mBAAA,EAAA,eAAA,EAAA,WAAA,EAAA,eAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,QAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,EAAA,cAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAChB,uBAAuB,EAAA,QAAA,EAAA,wCAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACvB,oBAAoB,EAAA,QAAA,EAAA,iBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACpB,gBAAgB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAChB,sBAAsB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,qBAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,2BAAA,CAAA,EAAA,OAAA,EAAA,CAAA,2BAAA,EAAA,wBAAA,EAAA,aAAA,CAAA,EAAA,QAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACtB,gCAAgC,EAAA,QAAA,EAAA,2BAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,QAAA,EAAA,CAAA,yBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAChC,kCAAkC,EAAA,QAAA,EAAA,iCAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,aAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAClC,uCAAuC,EAAA,QAAA,EAAA,uCAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,sBAAA,EAAA,sBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACvC,0CAA0C,mIAC1C,uBAAuB,EAAA,QAAA,EAAA,qBAAA,EAAA,OAAA,EAAA,CAAA,SAAA,CAAA,EAAA,QAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;2FAGlB,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBA1BhC,SAAS;+BACI,iBAAiB,EAAA,aAAA,EAGZ,iBAAiB,CAAC,IAAI,mBACpB,uBAAuB,CAAC,MAAM,EAAA,SAAA,EACpC;AACP,wBAAA;AACI,4BAAA,OAAO,EAAE,wBAAwB;AACjC,4BAAA,WAAW,EAAA;AACd;qBACJ,EAAA,OAAA,EACQ;wBACL,wBAAwB;wBACxB,gBAAgB;wBAChB,uBAAuB;wBACvB,oBAAoB;wBACpB,gBAAgB;wBAChB,sBAAsB;wBACtB,gCAAgC;wBAChC,kCAAkC;wBAClC,uCAAuC;wBACvC,0CAA0C;wBAC1C;AACH,qBAAA,EAAA,QAAA,EAAA,85LAAA,EAAA,MAAA,EAAA,CAAA,4pxCAAA,CAAA,EAAA;;sBASA;;sBASA;;sBAQA;;sBAQA;;sBASA;;sBAIA,YAAY;uBAAC,gCAAgC;;sBAI7C,eAAe;uBAAC,wBAAwB;;sBAIxC,YAAY;uBAAC,kCAAkC;;sBAI/C,YAAY;uBAAC,gCAAgC;4MAUR,wBAAwB,CAAA,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;AEjIlE;;AAEG;MAYU,gCAAgC,CAAA;AAX7C,IAAA,WAAA,GAAA;;QAcI,IAAA,CAAA,SAAS,GAAG,KAAK;;QAIjB,IAAA,CAAA,kBAAkB,GAAG,IAAI;;QAIzB,IAAA,CAAA,gBAAgB,GAAG,IAAI;;QAIvB,IAAA,CAAA,0BAA0B,GAAG,EAAE;AAClC,IAAA;8GAhBY,gCAAgC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAhC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,gCAAgC,wTChB7C,scASA,EAAA,MAAA,EAAA,CAAA,qEAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;2FDOa,gCAAgC,EAAA,UAAA,EAAA,CAAA;kBAX5C,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,+BAA+B,EAAA,IAAA,EAEnC;AACF,wBAAA,KAAK,EAAE;qBACV,EAAA,aAAA,EAEc,iBAAiB,CAAC,IAAI,EAAA,eAAA,EACpB,uBAAuB,CAAC,MAAM,cACnC,IAAI,EAAA,QAAA,EAAA,scAAA,EAAA,MAAA,EAAA,CAAA,qEAAA,CAAA,EAAA;;sBAIf;;sBAIA;;sBAIA;;sBAIA;;;AErBL;;;AAGG;MAoBU,iBAAiB,CAAA;8GAAjB,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAjB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,YAjBtB,oBAAoB;YACpB,wBAAwB;YACxB,kCAAkC;YAClC,kCAAkC;YAClC,gCAAgC;YAChC,gCAAgC;AAChC,YAAA,YAAY,aAGZ,oBAAoB;YACpB,wBAAwB;YACxB,kCAAkC;YAClC,kCAAkC;YAClC,gCAAgC;YAChC,gCAAgC,CAAA,EAAA,CAAA,CAAA;AAG3B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,YAjBtB,oBAAoB;YAMpB,YAAY,CAAA,EAAA,CAAA,CAAA;;2FAWP,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAnB7B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACN,oBAAA,OAAO,EAAE;wBACL,oBAAoB;wBACpB,wBAAwB;wBACxB,kCAAkC;wBAClC,kCAAkC;wBAClC,gCAAgC;wBAChC,gCAAgC;wBAChC;AACH,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACL,oBAAoB;wBACpB,wBAAwB;wBACxB,kCAAkC;wBAClC,kCAAkC;wBAClC,gCAAgC;wBAChC;AACH;AACJ,iBAAA;;;AC/BD;;AAEG;;;;"}
|
|
@@ -472,6 +472,7 @@ class DatetimePickerComponent {
|
|
|
472
472
|
* Method that is triggered when 'OK' button is pressed.
|
|
473
473
|
*/
|
|
474
474
|
submit() {
|
|
475
|
+
const previousDate = this.date;
|
|
475
476
|
// Initialize date and time values, defaulting to the current date if invalid
|
|
476
477
|
let currentDate = this._tempDate;
|
|
477
478
|
let currentTime = this._tempTime;
|
|
@@ -482,16 +483,21 @@ class DatetimePickerComponent {
|
|
|
482
483
|
if (!this._tempTime || !this._dateTimeAdapter.isValid(this._tempTime)) {
|
|
483
484
|
currentTime = this._dateTimeAdapter.today();
|
|
484
485
|
}
|
|
486
|
+
let isSubmissionSuccessful = true;
|
|
485
487
|
try {
|
|
486
488
|
this.date = this._dateTimeAdapter.setTime(currentDate, this._dateTimeAdapter.getHours(currentTime), this._dateTimeAdapter.getMinutes(currentTime), this._dateTimeAdapter.getSeconds(currentTime));
|
|
487
489
|
this._refreshCurrentlyDisplayedCalendarDate(this.date);
|
|
488
490
|
}
|
|
489
491
|
catch {
|
|
490
492
|
this.date = null;
|
|
493
|
+
isSubmissionSuccessful = false;
|
|
491
494
|
}
|
|
492
495
|
this._isInvalidDateInput = !this.isCurrentModelValid();
|
|
493
496
|
this._setInput(this.date);
|
|
494
497
|
this.onChange(this.date);
|
|
498
|
+
if (isSubmissionSuccessful) {
|
|
499
|
+
this._emitDateChange(previousDate);
|
|
500
|
+
}
|
|
495
501
|
if (this.showFooter) {
|
|
496
502
|
this.closePopover();
|
|
497
503
|
}
|
|
@@ -525,11 +531,13 @@ class DatetimePickerComponent {
|
|
|
525
531
|
// if processInputOnBlur === false, ignore blur/enter event
|
|
526
532
|
return;
|
|
527
533
|
}
|
|
534
|
+
const previousDate = this.date;
|
|
528
535
|
this._inputFieldDate = inputStr ?? '';
|
|
529
536
|
if (!inputStr) {
|
|
530
537
|
this._isInvalidDateInput = !this.allowNull;
|
|
531
538
|
this.date = null;
|
|
532
539
|
this.onChange(null);
|
|
540
|
+
this._emitDateChange(previousDate);
|
|
533
541
|
return;
|
|
534
542
|
}
|
|
535
543
|
inputStr = convertToDesiredFormat(inputStr.toString());
|
|
@@ -540,6 +548,7 @@ class DatetimePickerComponent {
|
|
|
540
548
|
this._refreshCurrentlyDisplayedCalendarDate(this.date);
|
|
541
549
|
}
|
|
542
550
|
this.onChange(this.date);
|
|
551
|
+
this._emitDateChange(previousDate);
|
|
543
552
|
}
|
|
544
553
|
/** @hidden */
|
|
545
554
|
dialogApprove() {
|
|
@@ -658,6 +667,18 @@ class DatetimePickerComponent {
|
|
|
658
667
|
injector
|
|
659
668
|
});
|
|
660
669
|
}
|
|
670
|
+
_emitDateChange(previousDate) {
|
|
671
|
+
if (this._isInvalidDateInput || this._datesAreEqual(previousDate, this.date)) {
|
|
672
|
+
return;
|
|
673
|
+
}
|
|
674
|
+
this.dateChange.emit(this.date);
|
|
675
|
+
}
|
|
676
|
+
_datesAreEqual(firstDate, secondDate) {
|
|
677
|
+
if (!firstDate && !secondDate) {
|
|
678
|
+
return true;
|
|
679
|
+
}
|
|
680
|
+
return !!firstDate && !!secondDate && this._dateTimeAdapter.dateTimesEqual(firstDate, secondDate);
|
|
681
|
+
}
|
|
661
682
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: DatetimePickerComponent, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i1.DatetimeAdapter, optional: true }, { token: DATE_TIME_FORMATS, optional: true }, { token: i2.PopoverFormMessageService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
662
683
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.5", type: DatetimePickerComponent, isStandalone: true, selector: "fd-datetime-picker", inputs: { placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: false, isRequired: false, transformFunction: null }, placement: { classPropertyName: "placement", publicName: "placement", isSignal: false, isRequired: false, transformFunction: null }, appendTo: { classPropertyName: "appendTo", publicName: "appendTo", isSignal: false, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: false, isRequired: false, transformFunction: null }, inputId: { classPropertyName: "inputId", publicName: "inputId", isSignal: false, isRequired: false, transformFunction: null }, required: { classPropertyName: "required", publicName: "required", isSignal: false, isRequired: false, transformFunction: null }, customDateTimeFormat: { classPropertyName: "customDateTimeFormat", publicName: "customDateTimeFormat", isSignal: false, isRequired: false, transformFunction: null }, meridian: { classPropertyName: "meridian", publicName: "meridian", isSignal: false, isRequired: false, transformFunction: null }, displaySeconds: { classPropertyName: "displaySeconds", publicName: "displaySeconds", isSignal: false, isRequired: false, transformFunction: null }, ariaLabelledBy: { classPropertyName: "ariaLabelledBy", publicName: "ariaLabelledBy", isSignal: false, isRequired: false, transformFunction: null }, message: { classPropertyName: "message", publicName: "message", isSignal: false, isRequired: false, transformFunction: null }, messageTriggers: { classPropertyName: "messageTriggers", publicName: "messageTriggers", isSignal: false, isRequired: false, transformFunction: null }, displayMinutes: { classPropertyName: "displayMinutes", publicName: "displayMinutes", isSignal: false, isRequired: false, transformFunction: null }, displayHours: { classPropertyName: "displayHours", publicName: "displayHours", isSignal: false, isRequired: false, transformFunction: null }, useValidation: { classPropertyName: "useValidation", publicName: "useValidation", isSignal: false, isRequired: false, transformFunction: null }, date: { classPropertyName: "date", publicName: "date", isSignal: false, isRequired: false, transformFunction: null }, isOpen: { classPropertyName: "isOpen", publicName: "isOpen", isSignal: false, isRequired: false, transformFunction: null }, startingDayOfWeek: { classPropertyName: "startingDayOfWeek", publicName: "startingDayOfWeek", isSignal: false, isRequired: false, transformFunction: null }, activeView: { classPropertyName: "activeView", publicName: "activeView", isSignal: false, isRequired: false, transformFunction: null }, allowNull: { classPropertyName: "allowNull", publicName: "allowNull", isSignal: false, isRequired: false, transformFunction: null }, keepTwoDigitsTime: { classPropertyName: "keepTwoDigitsTime", publicName: "keepTwoDigitsTime", isSignal: false, isRequired: false, transformFunction: null }, state: { classPropertyName: "state", publicName: "state", isSignal: false, isRequired: false, transformFunction: null }, buttonFocusable: { classPropertyName: "buttonFocusable", publicName: "buttonFocusable", isSignal: false, isRequired: false, transformFunction: null }, yearGrid: { classPropertyName: "yearGrid", publicName: "yearGrid", isSignal: false, isRequired: false, transformFunction: null }, aggregatedYearGrid: { classPropertyName: "aggregatedYearGrid", publicName: "aggregatedYearGrid", isSignal: false, isRequired: false, transformFunction: null }, markWeekends: { classPropertyName: "markWeekends", publicName: "markWeekends", isSignal: false, isRequired: false, transformFunction: null }, spinnerButtons: { classPropertyName: "spinnerButtons", publicName: "spinnerButtons", isSignal: false, isRequired: false, transformFunction: null }, showWeekNumbers: { classPropertyName: "showWeekNumbers", publicName: "showWeekNumbers", isSignal: false, isRequired: false, transformFunction: null }, showFooter: { classPropertyName: "showFooter", publicName: "showFooter", isSignal: false, isRequired: false, transformFunction: null }, processInputOnBlur: { classPropertyName: "processInputOnBlur", publicName: "processInputOnBlur", isSignal: false, isRequired: false, transformFunction: booleanAttribute }, preventScrollOnFocus: { classPropertyName: "preventScrollOnFocus", publicName: "preventScrollOnFocus", isSignal: false, isRequired: false, transformFunction: null }, mobile: { classPropertyName: "mobile", publicName: "mobile", isSignal: false, isRequired: false, transformFunction: null }, mobileConfig: { classPropertyName: "mobileConfig", publicName: "mobileConfig", isSignal: false, isRequired: false, transformFunction: null }, mobileLandscape: { classPropertyName: "mobileLandscape", publicName: "mobileLandscape", isSignal: false, isRequired: false, transformFunction: null }, mobilePortrait: { classPropertyName: "mobilePortrait", publicName: "mobilePortrait", isSignal: false, isRequired: false, transformFunction: null }, isFullWidth: { classPropertyName: "isFullWidth", publicName: "isFullWidth", isSignal: false, isRequired: false, transformFunction: null }, specialDaysRules: { classPropertyName: "specialDaysRules", publicName: "specialDaysRules", isSignal: true, isRequired: false, transformFunction: null }, showCalendarLegend: { classPropertyName: "showCalendarLegend", publicName: "showCalendarLegend", isSignal: true, isRequired: false, transformFunction: null }, legendCol: { classPropertyName: "legendCol", publicName: "legendCol", isSignal: true, isRequired: false, transformFunction: null }, disableFunction: { classPropertyName: "disableFunction", publicName: "disableFunction", isSignal: false, isRequired: false, transformFunction: null } }, outputs: { isOpenChange: "isOpenChange", activeViewChange: "activeViewChange", dateChange: "dateChange", calendarChange: "calendarChange", timeChange: "timeChange", onClose: "onClose", touched: "touched" }, host: { classAttribute: "fd-datetime" }, providers: [
|
|
663
684
|
{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fundamental-ngx-core-datetime-picker.mjs","sources":["../../../../libs/core/datetime-picker/tokens.ts","../../../../libs/core/datetime-picker/datetime-picker-mobile/datetime-picker-mobile.component.ts","../../../../libs/core/datetime-picker/datetime-picker-mobile/datetime-picker-mobile.component.html","../../../../libs/core/datetime-picker/errors.ts","../../../../libs/core/datetime-picker/datetime-picker.component.ts","../../../../libs/core/datetime-picker/datetime-picker.component.html","../../../../libs/core/datetime-picker/datetime-picker.module.ts","../../../../libs/core/datetime-picker/fundamental-ngx-core-datetime-picker.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\nimport { MobileModeConfig } from '@fundamental-ngx/core/mobile-mode';\nimport { DateTimePicker } from './datetime-picker.model';\n\nexport const FD_DATETIME_PICKER_COMPONENT = new InjectionToken<DateTimePicker<any>>('FdDateTimePickerComponent');\nexport const FD_DATETIME_PICKER_MOBILE_CONFIG = new InjectionToken<MobileModeConfig>('FdDateTimePickerMobileConfig');\n","import { NgTemplateOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, Inject, TemplateRef, ViewChild, ViewEncapsulation } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { InitialFocusDirective, Nullable } from '@fundamental-ngx/cdk/utils';\nimport { ButtonBarComponent } from '@fundamental-ngx/core/bar';\nimport {\n DialogBodyComponent,\n DialogCloseButtonComponent,\n DialogComponent,\n DialogFooterComponent,\n DialogHeaderComponent\n} from '@fundamental-ngx/core/dialog';\nimport { MobileModeBase, MobileModeControl } from '@fundamental-ngx/core/mobile-mode';\nimport { TitleComponent } from '@fundamental-ngx/core/title';\nimport { DateTimePicker } from '../datetime-picker.model';\nimport { FD_DATETIME_PICKER_COMPONENT, FD_DATETIME_PICKER_MOBILE_CONFIG } from '../tokens';\n\n@Component({\n selector: 'fd-datetime-picker-mobile',\n templateUrl: './datetime-picker-mobile.component.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n TitleComponent,\n NgTemplateOutlet,\n DialogComponent,\n DialogBodyComponent,\n DialogFooterComponent,\n DialogHeaderComponent,\n DialogCloseButtonComponent,\n ButtonBarComponent,\n InitialFocusDirective\n ]\n})\nexport class DatetimePickerMobileComponent<D> extends MobileModeBase<DateTimePicker<D>> {\n /** @hidden */\n @ViewChild('dialogTemplate') dialogTemplate: TemplateRef<any>;\n\n /** @hidden */\n private _selectedBackup: Nullable<D>;\n\n /** @hidden */\n constructor(\n @Inject(FD_DATETIME_PICKER_MOBILE_CONFIG)\n public dateTimePickerConfig: { pickerTemplate: TemplateRef<any> },\n @Inject(FD_DATETIME_PICKER_COMPONENT) datePickerComponent: DateTimePicker<D>\n ) {\n super(datePickerComponent, MobileModeControl.DATETIME_PICKER);\n\n this._component.isOpenChange.subscribe((isOpen) => {\n this._toggleDialog(isOpen);\n });\n }\n\n /** @hidden */\n handleApprove(): void {\n this.dialogRef.close();\n this._component.dialogApprove();\n }\n\n /** @hidden */\n handleDismiss(): void {\n this.dialogRef.dismiss();\n this._component.dialogDismiss(this._selectedBackup);\n }\n\n /** @hidden */\n private _toggleDialog(open: boolean): void {\n if (open) {\n this._selectedBackup = this._component.date!;\n if (!this._dialogService.hasOpenDialogs()) {\n this._open();\n }\n }\n }\n\n /** @hidden */\n private _open(): void {\n this.dialogRef = this._dialogService.open(this.dialogTemplate, {\n mobile: true,\n backdropClickCloseable: false,\n disablePaddings: true,\n ...this.dialogConfig,\n container: this._elementRef.nativeElement\n });\n\n this._selectedBackup = this._component.date;\n\n const refSub = this.dialogRef.afterClosed.pipe(takeUntilDestroyed(this._destroyRef)).subscribe({\n error: (type) => {\n if (type === 'escape') {\n this._component.dialogDismiss(this._selectedBackup);\n refSub.unsubscribe();\n }\n }\n });\n }\n}\n","<ng-template [fdDialogTemplate] let-dialog let-dialogConfig=\"dialogConfig\" #dialogTemplate>\n <fd-dialog [dialogConfig]=\"dialogConfig\" [dialogRef]=\"dialog\">\n <fd-dialog-header>\n @if (mobileConfig.title) {\n <h1 fd-title>{{ mobileConfig.title }}</h1>\n }\n @if (mobileConfig.hasCloseButton) {\n <button title=\"Close\" fd-dialog-close-button [mobile]=\"true\" (click)=\"handleDismiss()\"></button>\n }\n </fd-dialog-header>\n <fd-dialog-body>\n <ng-template [ngTemplateOutlet]=\"dateTimePickerConfig.pickerTemplate || null\"></ng-template>\n </fd-dialog-body>\n <fd-dialog-footer>\n @if (mobileConfig.approveButtonText) {\n <fd-button-bar fdType=\"emphasized\" [label]=\"mobileConfig.approveButtonText!\" (click)=\"handleApprove()\">\n </fd-button-bar>\n }\n @if (mobileConfig.cancelButtonText) {\n <fd-button-bar fdkInitialFocus [label]=\"mobileConfig.cancelButtonText!\" (click)=\"handleDismiss()\">\n </fd-button-bar>\n }\n </fd-dialog-footer>\n </fd-dialog>\n</ng-template>\n","/** Creates an error to be thrown when attempting to use an invalid date implementation. */\nexport function createMissingDateImplementationError(provider: string): Error {\n return Error(\n `FdDatetimePicker: No provider found for ${provider}. You must import one of the following ` +\n `modules at your application root: FdDatetimeModule, or provide a ` +\n `custom implementation.`\n );\n}\n","import {\n AfterViewInit,\n booleanAttribute,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ComponentRef,\n ElementRef,\n EventEmitter,\n forwardRef,\n inject,\n Inject,\n Injector,\n input,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Optional,\n Output,\n TemplateRef,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport { ControlValueAccessor, FormsModule, NG_VALIDATORS, NG_VALUE_ACCESSOR, Validator } from '@angular/forms';\n\nimport {\n CalendarComponent,\n CalendarYearGrid,\n DaysOfWeek,\n FdCalendarView,\n FdCalendarViewEnum\n} from '@fundamental-ngx/core/calendar';\nimport {\n convertToDesiredFormat,\n DATE_TIME_FORMATS,\n DatetimeAdapter,\n DateTimeFormats,\n TranslateDayPeriodPipe\n} from '@fundamental-ngx/core/datetime';\nimport {\n FormItemControl,\n FormMessageComponent,\n PopoverFormMessageService,\n registerFormItemControl\n} from '@fundamental-ngx/core/form';\nimport { InputGroupComponent, InputGroupInputDirective } from '@fundamental-ngx/core/input-group';\nimport {\n PopoverBodyComponent,\n PopoverBodyFooterDirective,\n PopoverComponent,\n PopoverControlComponent,\n PopoverService\n} from '@fundamental-ngx/core/popover';\nimport { Placement, SpecialDayRule } from '@fundamental-ngx/core/shared';\n\nimport { NgClass, NgTemplateOutlet } from '@angular/common';\nimport { FormStates } from '@fundamental-ngx/cdk/forms';\nimport { DynamicComponentService, FocusTrapService, Nullable, onLocaleChange } from '@fundamental-ngx/cdk/utils';\nimport { BarComponent, BarElementDirective, BarRightDirective } from '@fundamental-ngx/core/bar';\nimport { ButtonComponent } from '@fundamental-ngx/core/button';\nimport { MobileModeConfig } from '@fundamental-ngx/core/mobile-mode';\nimport { SegmentedButtonComponent } from '@fundamental-ngx/core/segmented-button';\nimport { TimeComponent } from '@fundamental-ngx/core/time';\nimport { FdTranslatePipe } from '@fundamental-ngx/i18n';\nimport { DatetimePickerMobileComponent } from './datetime-picker-mobile/datetime-picker-mobile.component';\nimport { DateTimePicker } from './datetime-picker.model';\nimport { createMissingDateImplementationError } from './errors';\nimport { FD_DATETIME_PICKER_COMPONENT, FD_DATETIME_PICKER_MOBILE_CONFIG } from './tokens';\n\n/**\n * The datetime picker component is an opinionated composition of the fd-popover,\n * fd-calendar and fd-time components to accomplish the UI pattern for picking a date and time.\n * Supports Angular Forms.\n * ```html\n * <fd-date-time-picker [(ngModel)]=\"dateTime\"></fd-date-time-picker>\n * ```\n */\n@Component({\n selector: 'fd-datetime-picker',\n templateUrl: './datetime-picker.component.html',\n styleUrl: './datetime-picker.component.scss',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => DatetimePickerComponent),\n multi: true\n },\n {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => DatetimePickerComponent),\n multi: true\n },\n {\n provide: FD_DATETIME_PICKER_COMPONENT,\n useExisting: DatetimePickerComponent\n },\n registerFormItemControl(DatetimePickerComponent),\n PopoverFormMessageService,\n PopoverService,\n DynamicComponentService\n ],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'fd-datetime'\n },\n imports: [\n NgTemplateOutlet,\n PopoverControlComponent,\n PopoverBodyComponent,\n PopoverBodyFooterDirective,\n PopoverComponent,\n InputGroupComponent,\n InputGroupInputDirective,\n FormsModule,\n FormMessageComponent,\n SegmentedButtonComponent,\n ButtonComponent,\n CalendarComponent,\n NgClass,\n TimeComponent,\n BarComponent,\n BarRightDirective,\n BarElementDirective,\n FdTranslatePipe,\n TranslateDayPeriodPipe\n ]\n})\nexport class DatetimePickerComponent<D>\n implements\n DateTimePicker<D>,\n OnInit,\n OnDestroy,\n OnChanges,\n AfterViewInit,\n ControlValueAccessor,\n Validator,\n FormItemControl\n{\n /** Placeholder for the inner input element. */\n @Input()\n placeholder = '';\n\n /**\n * The placement of the popover. It can be one of: top, top-start, top-end, bottom,\n * bottom-start, bottom-end, right, right-start, right-end, left, left-start, left-end.\n */\n @Input()\n placement: Placement = 'bottom-start';\n\n /** The element to which the popover should be appended. */\n @Input()\n appendTo: ElementRef;\n\n /** Whether the component is disabled. */\n @Input()\n disabled: boolean;\n\n /** Id attribute for input element inside DateTimePicker component */\n @Input()\n inputId: string;\n\n /** If it is mandatory field */\n @Input()\n required = false;\n\n /** Define a custom datetime format. Can be a string for DayjsDatetimeAdapter or object for FdDatetimeAdapter */\n @Input()\n customDateTimeFormat: unknown;\n\n /**\n * Whether the time component should be meridian (am/pm).\n * Default value is based on the current locale format option\n * */\n @Input()\n meridian: boolean;\n\n /**\n * Whether the time component shows seconds.\n * Default value is based on the current locale format option\n * */\n @Input()\n displaySeconds: boolean;\n\n /** aria-labelledby for element describing date-picker. */\n @Input()\n ariaLabelledBy: Nullable<string>;\n\n /** Text displayed in message */\n @Input()\n set message(message: string) {\n this._message = message;\n }\n\n /** The trigger events that will open/close the message box.\n * Accepts any [HTML DOM Events](https://www.w3schools.com/jsref/dom_obj_event.asp). */\n @Input()\n set messageTriggers(triggers: string[]) {\n this._messageTriggers = triggers;\n }\n\n /**\n * Whether the time component shows minutes.\n * Default value is based on the current locale format option\n * */\n @Input()\n displayMinutes: boolean;\n\n /**\n * Whether the time component shows hours.\n * Default value is based on the current locale format option\n * */\n @Input()\n displayHours: boolean;\n\n /** Whether to perform visual validation on the picker input. */\n @Input()\n useValidation = true;\n\n /** Current selected date. Two-way binding is supported. */\n @Input()\n date: Nullable<D>;\n\n /** Whether the popover is open. Two-way binding is supported. */\n @Input()\n isOpen = false;\n\n /** The disableFunction for the calendar. */\n @Input()\n startingDayOfWeek: DaysOfWeek = 1;\n\n /** Actually shown active view one of 'day' | 'month' | 'year' in calendar component*/\n @Input()\n activeView: FdCalendarView = FdCalendarViewEnum.Day;\n\n /** Whether a null input is considered valid. */\n @Input()\n allowNull = true;\n\n /**\n * @Input when set to true time component will use 2 digits for each number.\n * For example 9 will become 09\n * but 12 will be kept as 12.\n * Only uses by time component and does not change input format\n */\n @Input()\n keepTwoDigitsTime = false;\n\n /**\n * The state of the form control - applies css classes.\n * Also this is applied to message.\n * Can be `success`, `error`, `warning`, `information` or blank for default.\n */\n @Input()\n set state(state: FormStates) {\n this._state = state;\n }\n\n get state(): FormStates {\n if (this.useValidation && this.isInvalidDateInput) {\n return 'error';\n }\n return this._state;\n }\n\n /**\n * @deprecated Popover is toggled with f4 key\n */\n @Input()\n buttonFocusable = false;\n\n /**\n * Object to customize year grid,\n * Row, Columns and method to display year can be modified\n */\n @Input()\n yearGrid: CalendarYearGrid = {\n rows: 4,\n cols: 5\n };\n\n /**\n * Object to customize aggregated year grid,\n * Row, Columns and method to display year can be modified\n */\n @Input()\n aggregatedYearGrid: CalendarYearGrid = {\n rows: 4,\n cols: 3\n };\n\n /**\n * Whether user wants to mark sunday/saturday with `fd-calendar__item--weekend` class\n */\n @Input()\n markWeekends = true;\n\n /** @Input Whether to show spinner buttons */\n @Input()\n spinnerButtons = true;\n\n /**\n * Whether user wants to show week numbers next to days\n */\n @Input()\n showWeekNumbers = true;\n\n /** Whether or not to show the datetime picker footer with OK/cancel buttons. */\n @Input()\n showFooter = true;\n\n /**\n * Whether to recalculate value from the input as user types or on blur.\n * By default, updates the value as user types.\n * @default false\n */\n @Input({ transform: booleanAttribute })\n processInputOnBlur = false;\n\n /**\n * Whether to prevent page scrolling when focusing date picker input field after calendar has been closed.\n */\n @Input()\n preventScrollOnFocus = false;\n\n /** Whether to render datetime picker in mobile mode. */\n @Input()\n mobile = false;\n\n /** Mobile mode configuration. */\n @Input()\n mobileConfig: MobileModeConfig;\n\n /** Whether calendar is used inside mobile in landscape mode, it also adds close button on right side */\n @Input()\n mobileLandscape = false;\n\n /** Whether calendar is used inside mobile in portrait mode */\n @Input()\n mobilePortrait = false;\n\n /** To set input width 100% */\n @Input() isFullWidth = false;\n\n /** Event emitted when the state of the isOpen property changes. */\n @Output()\n isOpenChange = new EventEmitter<boolean>();\n\n /** Event thrown every time calendar active view is changed */\n @Output()\n public readonly activeViewChange: EventEmitter<FdCalendarView> = new EventEmitter<FdCalendarView>();\n\n /** Event emitted when the date changes. This can be a time or day change. */\n @Output()\n readonly dateChange: EventEmitter<D> = new EventEmitter<D>();\n\n /** Event emitted when the day changes from the calendar. */\n @Output()\n readonly calendarChange: EventEmitter<D> = new EventEmitter<D>();\n\n /** Event emitted when the time changes from the time component. */\n @Output()\n readonly timeChange: EventEmitter<D> = new EventEmitter<D>();\n\n /** Event emitted when popover closes. */\n @Output()\n // eslint-disable-next-line @angular-eslint/no-output-on-prefix\n readonly onClose: EventEmitter<void> = new EventEmitter<void>();\n\n /** Event emitted when datepicker changes it's \"touched\" state. */\n @Output()\n readonly touched: EventEmitter<void> = new EventEmitter<void>();\n\n /** @hidden */\n @ViewChild('inputGroupComponent', {\n read: ElementRef\n })\n _inputGroupElement: ElementRef;\n\n /** @hidden */\n @ViewChild(InputGroupInputDirective, {\n read: ElementRef\n })\n _inputElement: ElementRef<HTMLInputElement>;\n\n /** @hidden */\n @ViewChild('formMessageTemplate')\n private readonly _formMessageTemplate: TemplateRef<any>;\n\n /** @hidden */\n @ViewChild('pickerTemplate')\n private readonly _pickerTemplate: TemplateRef<any>;\n\n /**\n * Special days mark, it can be used by passing array of object with\n * Special day number, list 1-20 [class:`fd-calendar__item--legend-{{number}}`] is available there:\n * https://sap.github.io/fundamental-styles/components/calendar.html calendar special days section\n * Rule accepts method with FdDate object as a parameter. ex:\n * `rule: (fdDate: FdDate) => fdDate.getDay() === 1`, which will mark all sundays as special day.\n */\n specialDaysRules = input<SpecialDayRule<D>[]>([]);\n\n /**\n * Whether to show the calendar legend below the calendar.\n * The legend displays explanations for special day markers.\n */\n showCalendarLegend = input(false, { transform: booleanAttribute });\n\n /**\n * Whether the calendar legend should display in a single column layout.\n * When false (default), the legend items flow into multiple columns automatically.\n */\n legendCol = input(false, { transform: booleanAttribute });\n\n /** Indicates when datetime input is in invalid state. */\n get isInvalidDateInput(): boolean {\n return this._isInvalidDateInput && this._touched;\n }\n\n /** @hidden Reference to the inner calendar component. */\n @ViewChild(CalendarComponent, { static: false })\n private set _calendarCmp(calendar: CalendarComponent<D>) {\n setTimeout(() => {\n calendar?.setCurrentlyDisplayed(this._calendarPendingDate);\n calendar?.initialFocus();\n });\n this._calendarComponent = calendar;\n }\n\n /** @hidden */\n _calendarComponent: CalendarComponent<D>;\n\n /** @hidden */\n _message: string | null = null;\n\n /** @hidden */\n _messageTriggers: string[] = ['focusin', 'focusout'];\n\n /**\n * @hidden\n * Date of the input field. Internal use.\n * For programmatic selection, use two-way binding on the date input.\n */\n _inputFieldDate: string | null = null;\n\n /** @hidden */\n _isInvalidDateInput = false;\n\n /** @hidden The temporary Time object for use before 'OK' is pressed. Internal use. */\n _tempTime: Nullable<D>;\n\n /** @hidden The temporary CalendarDay object for use before 'OK' is pressed. Internal use. */\n _tempDate: Nullable<D>;\n\n /** @hidden */\n _meridian: boolean;\n\n /** @hidden */\n _displaySeconds: boolean;\n\n /** @hidden */\n _displayMinutes: boolean;\n\n /** @hidden */\n _displayHours: boolean;\n\n /** @hidden whether to display date or time in mobile mode */\n _displayType: 'date' | 'time' = 'date';\n\n /** @hidden */\n _showPopoverContents = false;\n\n /** @hidden */\n private _state: FormStates = 'default';\n\n /** @hidden */\n private _calendarPendingDate: Nullable<D>;\n\n /** @hidden */\n private readonly _injector = inject(Injector);\n\n /** @hidden */\n private readonly _dynamicComponentService = inject(DynamicComponentService);\n\n /** @hidden */\n private readonly _focusTrapService = inject(FocusTrapService, {\n optional: true\n });\n\n /** @hidden */\n private _mobileComponentRef: Nullable<ComponentRef<DatetimePickerMobileComponent<D>>>;\n\n /** @hidden */\n private _touched = false;\n\n /** @hidden */\n constructor(\n private _elRef: ElementRef,\n private _changeDetRef: ChangeDetectorRef,\n // Use @Optional to avoid angular injection error message and throw our own which is more precise one\n @Optional() private _dateTimeAdapter: DatetimeAdapter<D>,\n @Optional() @Inject(DATE_TIME_FORMATS) private _dateTimeFormats: DateTimeFormats,\n private _popoverFormMessage: PopoverFormMessageService\n ) {\n if (!this._dateTimeAdapter) {\n throw createMissingDateImplementationError('DateTimeAdapter');\n }\n if (!this._dateTimeFormats) {\n throw createMissingDateImplementationError('DATE_TIME_FORMATS');\n }\n\n // default model value\n this.date = _dateTimeAdapter.now();\n\n onLocaleChange(this._dateTimeAdapter, () => {\n if (this._inputFieldDate) {\n this._setInput(this.date);\n this._calculateTimeOptions();\n this._changeDetRef.markForCheck();\n }\n });\n }\n\n /**\n * Function used to disable certain dates in the calendar.\n * @param fdDate FdDate\n */\n @Input()\n disableFunction: (value: D) => boolean = () => false;\n\n /** @hidden */\n onChange: (value: D | null) => void = () => {};\n\n /** @hidden */\n onTouched = (): void => {};\n\n /** @hidden */\n ngOnChanges(changes): void {\n if (changes.date) {\n this._setTempDateTime();\n }\n\n if (['displayHours', 'displayMinutes', 'displaySeconds', 'meridian'].some((prop) => prop in changes)) {\n this._calculateTimeOptions();\n }\n\n if ('isOpen' in changes) {\n this._showPopoverContents = this.isOpen;\n this._changeDetRef.detectChanges();\n }\n }\n\n /** @hidden */\n ngOnInit(): void {\n if (this.date) {\n this._setTempDateTime();\n }\n\n this._calculateTimeOptions();\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._mobileComponentRef?.destroy();\n }\n\n /** @hidden */\n ngAfterViewInit(): void {\n this._InitialiseVariablesInMessageService();\n\n if (this.mobile) {\n this._setUpMobileMode();\n }\n\n // update bindings after rendering\n // is needed to preperly reflect error state\n setTimeout(() => {\n this._changeDetRef.markForCheck();\n });\n }\n\n /**\n * @hidden\n * Function that implements Validator Interface, adds validation support for forms\n */\n validate(): { [key: string]: any } | null {\n return this.isCurrentModelValid() && !this._isInvalidDateInput\n ? null\n : {\n dateValidation: {\n valid: false\n }\n };\n }\n\n /** Toggles the popover. */\n togglePopover(): void {\n if (this.isOpen) {\n this.closePopover();\n } else {\n this.openPopover();\n }\n }\n\n /**\n * Method that handles calendar active view change and throws event.\n */\n handleCalendarActiveViewChange(activeView: FdCalendarView): void {\n this.activeViewChange.emit(activeView);\n }\n\n /** Method that handles blur events on datetime picker input */\n handleOnTouched(event?: FocusEvent): void {\n this._touched = true;\n this.onTouched();\n this.touched.next();\n if (event) {\n this.handleInputChange((<HTMLInputElement>event.target).value, false);\n }\n }\n\n /** Opens the popover. */\n openPopover(): void {\n if (!this.isOpen && !this.disabled) {\n this._focusTrapService?.pauseCurrentFocusTrap();\n this._showPopoverContents = true;\n this._changeDetRef.detectChanges();\n this.isOpen = true;\n this._onOpenStateChanged(this.isOpen);\n }\n }\n\n /** Closes the popover and refresh model */\n closePopover(): void {\n if (!this.isOpen) {\n return;\n }\n this.onClose.emit();\n this.isOpen = false;\n this._changeDetRef.detectChanges();\n this._onOpenStateChanged(this.isOpen);\n this._focusTrapService?.unpauseCurrentFocusTrap();\n this.handleOnTouched();\n this._showPopoverContents = false;\n }\n\n /** @hidden */\n setInvalidDateInputHandler(isInvalid: boolean): void {\n this._isInvalidDateInput = isInvalid;\n }\n\n /** @hidden */\n registerOnChange(fn: (selected: any) => { void }): void {\n this.onChange = fn;\n }\n\n /** @hidden */\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n /** @hidden */\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n this._changeDetRef.detectChanges();\n }\n\n /**\n * @hidden\n * Function that provides support for ControlValueAccessor that allows to use [(ngModel)] or forms\n */\n writeValue(selected: Nullable<D>): void {\n this.date = this._parseDate(selected);\n this._isInvalidDateInput = !this._isModelValid(this.date);\n if (this.isCurrentModelValid()) {\n this._setTempDateTime();\n this._refreshCurrentlyDisplayedCalendarDate(this.date);\n }\n this._setInput(this.date);\n }\n\n /**\n * @hidden\n * Method that is triggered by events from calendar component, when there is selected date changed.\n * If invalid time model is detected, it takes time model data from TimeComponent.\n */\n handleDateChange(date: D): void {\n this._tempDate = date;\n if (!this.showFooter) {\n this.submit();\n }\n }\n\n /**\n * @hidden\n * Method that is triggered by events from time component, when there is selected time changed\n */\n handleTimeChange(time: D): void {\n this._tempTime = time;\n if (!this.showFooter) {\n this.submit();\n }\n }\n\n /**\n * @hidden\n * Method that is triggered when 'OK' button is pressed.\n */\n submit(): void {\n // Initialize date and time values, defaulting to the current date if invalid\n let currentDate = this._tempDate!;\n let currentTime = this._tempTime!;\n\n // Initialize date and time values, defaulting to the current date if invalid\n if (!this._tempDate || !this._dateTimeAdapter.isValid(this._tempDate)) {\n currentDate = this._dateTimeAdapter.today()!;\n }\n if (!this._tempTime || !this._dateTimeAdapter.isValid(this._tempTime)) {\n currentTime = this._dateTimeAdapter.today()!;\n }\n\n try {\n this.date = this._dateTimeAdapter.setTime(\n currentDate,\n this._dateTimeAdapter.getHours(currentTime),\n this._dateTimeAdapter.getMinutes(currentTime),\n this._dateTimeAdapter.getSeconds(currentTime)\n );\n this._refreshCurrentlyDisplayedCalendarDate(this.date);\n } catch {\n this.date = null;\n }\n this._isInvalidDateInput = !this.isCurrentModelValid();\n\n this._setInput(this.date);\n\n this.onChange(this.date);\n\n if (this.showFooter) {\n this.closePopover();\n }\n }\n\n /**\n * @hidden\n * Function that is called when 'Cancel' button is pressed.\n */\n cancel(): void {\n this._tempDate = this.date;\n this._tempTime = this.date;\n this.closePopover();\n }\n\n /**\n * @hidden\n * Looks like no one uses it. Should be removed?\n */\n focusArrowLeft(): void {\n if (this._elRef.nativeElement.querySelector('#' + this._calendarComponent.id + '-left-arrow')) {\n this._elRef.nativeElement.querySelector('#' + this._calendarComponent.id + '-left-arrow').focus();\n }\n }\n\n /**\n * @hidden\n * Method, which is responsible for transforming string to datetime, depending on type or\n * validation the results are different. It also changes to state of _isInvalidDateInput.\n */\n handleInputChange(inputStr: string, isTypeEvent: boolean): void {\n if ((isTypeEvent && this.processInputOnBlur) || (!isTypeEvent && !this.processInputOnBlur)) {\n // if processInputOnBlur === true, ignore type event\n // if processInputOnBlur === false, ignore blur/enter event\n return;\n }\n this._inputFieldDate = inputStr ?? '';\n if (!inputStr) {\n this._isInvalidDateInput = !this.allowNull;\n this.date = null;\n this.onChange(null);\n return;\n }\n\n inputStr = convertToDesiredFormat(inputStr.toString());\n\n this.date = this._parseDate(inputStr);\n this._isInvalidDateInput = !this._isModelValid(this.date);\n\n if (!this._isInvalidDateInput) {\n this._setTempDateTime();\n this._refreshCurrentlyDisplayedCalendarDate(this.date);\n }\n this.onChange(this.date);\n }\n\n /** @hidden */\n dialogApprove(): void {\n this.isOpen = false;\n this.submit();\n }\n\n /** Method used to restore original value for mobile mode. */\n dialogDismiss(value: D): void {\n this.date = value;\n this.isOpen = false;\n this._setInput(this.date);\n\n this.onChange(this.date);\n }\n\n /** @hidden */\n _changeMessageVisibility(): void {\n if (this.isOpen) {\n this._popoverFormMessage.hide();\n } else {\n this._popoverFormMessage.show();\n }\n }\n\n /** @hidden */\n _onOpenStateChanged(isOpen: boolean): void {\n this.isOpenChange.emit(isOpen);\n this._changeMessageVisibility();\n // focus input control every time popup is closed\n if (!isOpen && this._inputElement) {\n this._inputElement.nativeElement.focus({\n preventScroll: this.preventScrollOnFocus\n });\n }\n if (!isOpen) {\n this._showPopoverContents = false;\n this._changeDetRef.detectChanges();\n }\n }\n\n /** Method that provides information if model selected date/dates have properly types and are valid */\n isCurrentModelValid(): boolean {\n return this._isModelValid(this.date);\n }\n\n /** Method that provides information if FdDateTime passed as arg has properly types and is valid */\n private _isModelValid(date: Nullable<D>): boolean {\n return (date === null && this.allowNull) || this._dateTimeAdapter.isValid(date);\n }\n\n /** @hidden */\n private _setInput(dateTime: Nullable<D>): void {\n this._inputFieldDate = dateTime ? this._formatDateTime(dateTime) : '';\n this._changeDetRef.detectChanges();\n }\n\n /** @hidden */\n private _refreshCurrentlyDisplayedCalendarDate(date: Nullable<D>): void {\n this._calendarPendingDate = date;\n }\n\n /**\n * @hidden\n * Format date time entity.\n */\n private _formatDateTime(dateTime: D): string {\n const formattedDate: string = this.customDateTimeFormat\n ? this._dateTimeAdapter.format(dateTime, this.customDateTimeFormat)\n : this._dateTimeAdapter.format(dateTime, this._dateTimeFormats.display.dateTimeInput);\n return formattedDate || '';\n }\n\n /** @hidden */\n private _InitialiseVariablesInMessageService(): void {\n this._popoverFormMessage.init(this._inputGroupElement);\n this._popoverFormMessage.message = this._formMessageTemplate;\n this._popoverFormMessage.triggers = this._messageTriggers;\n }\n\n /** @hidden */\n private _parseDate(date: unknown): D | null {\n const format = this.customDateTimeFormat ?? this._dateTimeFormats.parse.dateTimeInput;\n return this._dateTimeAdapter.parse(date, format);\n }\n\n /** @hidden */\n private _setTempDateTime(): void {\n this._tempDate = this.date;\n this._tempTime = this.date;\n }\n\n /** @hidden */\n private _calculateTimeOptions(): void {\n const format = this._dateTimeFormats.display.dateTimeInput;\n\n // default meridian option based on format option\n this._meridian =\n this.meridian != null ? this.meridian : this._dateTimeAdapter.isTimeFormatIncludesDayPeriod(format);\n\n // default seconds option based on format option\n this._displaySeconds =\n this.displaySeconds != null\n ? this.displaySeconds\n : this._dateTimeAdapter.isTimeFormatIncludesSeconds(format);\n\n // default minutes option based on format option\n this._displayMinutes =\n this.displayMinutes != null\n ? this.displayMinutes\n : this._dateTimeAdapter.isTimeFormatIncludesMinutes(format);\n\n // default hours option based on format option\n this._displayHours =\n this.displayHours != null ? this.displayHours : this._dateTimeAdapter.isTimeFormatIncludesHours(format);\n }\n\n /** @hidden */\n private _setUpMobileMode(): void {\n const injector = Injector.create({\n providers: [\n { provide: FD_DATETIME_PICKER_COMPONENT, useValue: this },\n {\n provide: FD_DATETIME_PICKER_MOBILE_CONFIG,\n useValue: { pickerTemplate: this._pickerTemplate }\n }\n ],\n parent: this._injector\n });\n\n this._mobileComponentRef = this._dynamicComponentService.createDynamicComponent(\n {},\n DatetimePickerMobileComponent<D>,\n {\n container: 'body'\n },\n {\n injector\n }\n );\n }\n}\n","<ng-template [ngTemplateOutlet]=\"mobile ? controlTemplate : desktopTemplate\"></ng-template>\n<ng-template #desktopTemplate>\n <fd-popover\n [(isOpen)]=\"isOpen\"\n (isOpenChange)=\"_onOpenStateChanged($event)\"\n [focusTrapped]=\"true\"\n [focusAutoCapture]=\"false\"\n [triggers]=\"[]\"\n [disabled]=\"disabled\"\n [placement]=\"placement\"\n [appendTo]=\"appendTo\"\n [class.fd-popover-full-width]=\"isFullWidth\"\n >\n <fd-popover-control>\n <ng-template [ngTemplateOutlet]=\"controlTemplate\"></ng-template>\n </fd-popover-control>\n <fd-popover-body\n aria-labelledby=\"fd-form-message\"\n [attr.aria-expanded]=\"isOpen\"\n [attr.aria-hidden]=\"!isOpen\"\n [style.display]=\"'block'\"\n >\n @if (_showPopoverContents) {\n <ng-template [ngTemplateOutlet]=\"pickerTemplate\"></ng-template>\n }\n </fd-popover-body>\n </fd-popover>\n</ng-template>\n<ng-template #controlTemplate>\n <fd-input-group\n #inputGroupComponent\n [state]=\"state\"\n [disabled]=\"disabled\"\n [isControl]=\"true\"\n [button]=\"true\"\n [buttonFocusable]=\"buttonFocusable\"\n [class.fd-datetime__mobile-control]=\"mobile\"\n glyph=\"date-time\"\n [isExpanded]=\"isOpen\"\n [glyphAriaLabel]=\"('coreDatetimePicker.displayDatetimeToggleLabel' | fdTranslate)()\"\n [iconTitle]=\"('coreDatetimePicker.displayDatetimeToggleLabel' | fdTranslate)()\"\n (addOnButtonClicked)=\"togglePopover()\"\n >\n <input\n type=\"text\"\n class=\"fd-input\"\n fd-input-group-input\n [attr.aria-labelledby]=\"ariaLabelledBy\"\n [attr.aria-label]=\"('coreDatetimePicker.datetimeInputLabel' | fdTranslate)()\"\n [attr.id]=\"inputId\"\n [attr.aria-required]=\"required\"\n [placeholder]=\"placeholder\"\n [disabled]=\"disabled\"\n [ngModel]=\"_inputFieldDate | translateDayPeriod\"\n (keydown.f4)=\"togglePopover()\"\n (keyup.enter)=\"handleInputChange($any($event.target).value, false)\"\n (ngModelChange)=\"handleInputChange($event, true)\"\n (blur)=\"handleOnTouched($event)\"\n (click)=\"mobile && openPopover()\"\n />\n </fd-input-group>\n</ng-template>\n<ng-template #formMessageTemplate>\n @if (_message) {\n <fd-form-message id=\"fd-form-message\" [embedded]=\"true\" [type]=\"state\">\n {{ _message }}\n </fd-form-message>\n }\n</ng-template>\n<ng-template #pickerTemplate>\n <div class=\"fd-datetime__wrapper\">\n <ng-template [ngTemplateOutlet]=\"formMessageTemplate\"></ng-template>\n <div\n class=\"fd-datetime__display-type-switcher\"\n [class.fd-datetime__display-type-switcher--desktop]=\"!mobile || (mobile && mobileLandscape)\"\n [class.fd-datetime__display-type-switcher--mobile]=\"mobile && mobilePortrait\"\n >\n <fd-segmented-button [(ngModel)]=\"_displayType\">\n <button\n fd-button\n [label]=\"('coreDatetimePicker.displayTypeDateLabel' | fdTranslate)()\"\n value=\"date\"\n ></button>\n <button\n fd-button\n [label]=\"('coreDatetimePicker.displayTypeTimeLabel' | fdTranslate)()\"\n value=\"time\"\n ></button>\n </fd-segmented-button>\n </div>\n <ng-content></ng-content>\n <div class=\"fd-datetime__container\" [class.fd-datetime__container--mobile-portrait]=\"mobile && mobilePortrait\">\n <fd-calendar\n [ngClass]=\"[\n !mobile && _displayType === 'date' ? 'fd-datetime__active-display-type' : '',\n mobile && mobilePortrait && _displayType === 'date' ? 'fd-datetime__mobile-display' : ''\n ]\"\n calType=\"single\"\n [activeView]=\"activeView\"\n [disableFunction]=\"disableFunction || null\"\n [selectedDate]=\"_tempDate\"\n [escapeFocusFunction]=\"null\"\n [markWeekends]=\"markWeekends\"\n [specialDaysRules]=\"specialDaysRules()\"\n [showCalendarLegend]=\"showCalendarLegend()\"\n [legendCol]=\"legendCol()\"\n [showWeekNumbers]=\"showWeekNumbers\"\n [aggregatedYearGrid]=\"aggregatedYearGrid\"\n [yearGrid]=\"yearGrid\"\n [startingDayOfWeek]=\"startingDayOfWeek\"\n (activeViewChange)=\"handleCalendarActiveViewChange($event)\"\n (selectedDateChange)=\"handleDateChange($event)\"\n (isValidDateChange)=\"setInvalidDateInputHandler($event)\"\n ></fd-calendar>\n @if (!mobilePortrait) {\n <div class=\"fd-datetime__separator\"></div>\n }\n @if (isOpen) {\n <fd-time\n [ngClass]=\"[\n !mobile && _displayType === 'time' ? 'fd-datetime__active-display-type' : '',\n mobile && mobilePortrait && _displayType === 'time' ? 'fd-datetime__mobile-display' : ''\n ]\"\n [disabled]=\"disabled\"\n [elementsAtOnce]=\"5\"\n [keepTwoDigits]=\"keepTwoDigitsTime\"\n [ngModel]=\"_tempTime\"\n [spinnerButtons]=\"spinnerButtons\"\n [meridian]=\"_meridian\"\n [displaySeconds]=\"_displaySeconds\"\n [displayMinutes]=\"_displayMinutes\"\n [displayHours]=\"_displayHours\"\n (ngModelChange)=\"handleTimeChange($event)\"\n ></fd-time>\n }\n </div>\n @if (!mobile && showFooter) {\n <div fd-popover-body-footer>\n <div class=\"fd-datetime__bar\" fd-bar barDesign=\"footer\">\n <div fd-bar-right>\n <fd-bar-element>\n <button\n fd-button\n fdType=\"emphasized\"\n [disabled]=\"!_tempDate\"\n [label]=\"('coreDatetimePicker.datetimeOkLabel' | fdTranslate)()\"\n [ariaLabel]=\"('coreDatetimePicker.datetimeOkLabel' | fdTranslate)()\"\n (click)=\"submit()\"\n ></button>\n </fd-bar-element>\n <fd-bar-element>\n <button\n fd-button\n fdType=\"transparent\"\n [label]=\"('coreDatetimePicker.datetimeCancelLabel' | fdTranslate)()\"\n [ariaLabel]=\"('coreDatetimePicker.datetimeCancelLabel' | fdTranslate)()\"\n (click)=\"cancel()\"\n ></button>\n </fd-bar-element>\n </div>\n </div>\n </div>\n }\n </div>\n</ng-template>\n","import { NgModule } from '@angular/core';\nimport { DatetimePickerMobileComponent } from './datetime-picker-mobile/datetime-picker-mobile.component';\nimport { DatetimePickerComponent } from './datetime-picker.component';\n\n/**\n * @deprecated\n * Use direct imports of components and directives.\n */\n@NgModule({\n imports: [DatetimePickerComponent, DatetimePickerMobileComponent],\n exports: [DatetimePickerComponent, DatetimePickerMobileComponent]\n})\nexport class DatetimePickerModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"fundamental-ngx-core-datetime-picker.mjs","sources":["../../../../libs/core/datetime-picker/tokens.ts","../../../../libs/core/datetime-picker/datetime-picker-mobile/datetime-picker-mobile.component.ts","../../../../libs/core/datetime-picker/datetime-picker-mobile/datetime-picker-mobile.component.html","../../../../libs/core/datetime-picker/errors.ts","../../../../libs/core/datetime-picker/datetime-picker.component.ts","../../../../libs/core/datetime-picker/datetime-picker.component.html","../../../../libs/core/datetime-picker/datetime-picker.module.ts","../../../../libs/core/datetime-picker/fundamental-ngx-core-datetime-picker.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\nimport { MobileModeConfig } from '@fundamental-ngx/core/mobile-mode';\nimport { DateTimePicker } from './datetime-picker.model';\n\nexport const FD_DATETIME_PICKER_COMPONENT = new InjectionToken<DateTimePicker<any>>('FdDateTimePickerComponent');\nexport const FD_DATETIME_PICKER_MOBILE_CONFIG = new InjectionToken<MobileModeConfig>('FdDateTimePickerMobileConfig');\n","import { NgTemplateOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, Inject, TemplateRef, ViewChild, ViewEncapsulation } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { InitialFocusDirective, Nullable } from '@fundamental-ngx/cdk/utils';\nimport { ButtonBarComponent } from '@fundamental-ngx/core/bar';\nimport {\n DialogBodyComponent,\n DialogCloseButtonComponent,\n DialogComponent,\n DialogFooterComponent,\n DialogHeaderComponent\n} from '@fundamental-ngx/core/dialog';\nimport { MobileModeBase, MobileModeControl } from '@fundamental-ngx/core/mobile-mode';\nimport { TitleComponent } from '@fundamental-ngx/core/title';\nimport { DateTimePicker } from '../datetime-picker.model';\nimport { FD_DATETIME_PICKER_COMPONENT, FD_DATETIME_PICKER_MOBILE_CONFIG } from '../tokens';\n\n@Component({\n selector: 'fd-datetime-picker-mobile',\n templateUrl: './datetime-picker-mobile.component.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n TitleComponent,\n NgTemplateOutlet,\n DialogComponent,\n DialogBodyComponent,\n DialogFooterComponent,\n DialogHeaderComponent,\n DialogCloseButtonComponent,\n ButtonBarComponent,\n InitialFocusDirective\n ]\n})\nexport class DatetimePickerMobileComponent<D> extends MobileModeBase<DateTimePicker<D>> {\n /** @hidden */\n @ViewChild('dialogTemplate') dialogTemplate: TemplateRef<any>;\n\n /** @hidden */\n private _selectedBackup: Nullable<D>;\n\n /** @hidden */\n constructor(\n @Inject(FD_DATETIME_PICKER_MOBILE_CONFIG)\n public dateTimePickerConfig: { pickerTemplate: TemplateRef<any> },\n @Inject(FD_DATETIME_PICKER_COMPONENT) datePickerComponent: DateTimePicker<D>\n ) {\n super(datePickerComponent, MobileModeControl.DATETIME_PICKER);\n\n this._component.isOpenChange.subscribe((isOpen) => {\n this._toggleDialog(isOpen);\n });\n }\n\n /** @hidden */\n handleApprove(): void {\n this.dialogRef.close();\n this._component.dialogApprove();\n }\n\n /** @hidden */\n handleDismiss(): void {\n this.dialogRef.dismiss();\n this._component.dialogDismiss(this._selectedBackup);\n }\n\n /** @hidden */\n private _toggleDialog(open: boolean): void {\n if (open) {\n this._selectedBackup = this._component.date!;\n if (!this._dialogService.hasOpenDialogs()) {\n this._open();\n }\n }\n }\n\n /** @hidden */\n private _open(): void {\n this.dialogRef = this._dialogService.open(this.dialogTemplate, {\n mobile: true,\n backdropClickCloseable: false,\n disablePaddings: true,\n ...this.dialogConfig,\n container: this._elementRef.nativeElement\n });\n\n this._selectedBackup = this._component.date;\n\n const refSub = this.dialogRef.afterClosed.pipe(takeUntilDestroyed(this._destroyRef)).subscribe({\n error: (type) => {\n if (type === 'escape') {\n this._component.dialogDismiss(this._selectedBackup);\n refSub.unsubscribe();\n }\n }\n });\n }\n}\n","<ng-template [fdDialogTemplate] let-dialog let-dialogConfig=\"dialogConfig\" #dialogTemplate>\n <fd-dialog [dialogConfig]=\"dialogConfig\" [dialogRef]=\"dialog\">\n <fd-dialog-header>\n @if (mobileConfig.title) {\n <h1 fd-title>{{ mobileConfig.title }}</h1>\n }\n @if (mobileConfig.hasCloseButton) {\n <button title=\"Close\" fd-dialog-close-button [mobile]=\"true\" (click)=\"handleDismiss()\"></button>\n }\n </fd-dialog-header>\n <fd-dialog-body>\n <ng-template [ngTemplateOutlet]=\"dateTimePickerConfig.pickerTemplate || null\"></ng-template>\n </fd-dialog-body>\n <fd-dialog-footer>\n @if (mobileConfig.approveButtonText) {\n <fd-button-bar fdType=\"emphasized\" [label]=\"mobileConfig.approveButtonText!\" (click)=\"handleApprove()\">\n </fd-button-bar>\n }\n @if (mobileConfig.cancelButtonText) {\n <fd-button-bar fdkInitialFocus [label]=\"mobileConfig.cancelButtonText!\" (click)=\"handleDismiss()\">\n </fd-button-bar>\n }\n </fd-dialog-footer>\n </fd-dialog>\n</ng-template>\n","/** Creates an error to be thrown when attempting to use an invalid date implementation. */\nexport function createMissingDateImplementationError(provider: string): Error {\n return Error(\n `FdDatetimePicker: No provider found for ${provider}. You must import one of the following ` +\n `modules at your application root: FdDatetimeModule, or provide a ` +\n `custom implementation.`\n );\n}\n","import {\n AfterViewInit,\n booleanAttribute,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ComponentRef,\n ElementRef,\n EventEmitter,\n forwardRef,\n inject,\n Inject,\n Injector,\n input,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Optional,\n Output,\n TemplateRef,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport { ControlValueAccessor, FormsModule, NG_VALIDATORS, NG_VALUE_ACCESSOR, Validator } from '@angular/forms';\n\nimport {\n CalendarComponent,\n CalendarYearGrid,\n DaysOfWeek,\n FdCalendarView,\n FdCalendarViewEnum\n} from '@fundamental-ngx/core/calendar';\nimport {\n convertToDesiredFormat,\n DATE_TIME_FORMATS,\n DatetimeAdapter,\n DateTimeFormats,\n TranslateDayPeriodPipe\n} from '@fundamental-ngx/core/datetime';\nimport {\n FormItemControl,\n FormMessageComponent,\n PopoverFormMessageService,\n registerFormItemControl\n} from '@fundamental-ngx/core/form';\nimport { InputGroupComponent, InputGroupInputDirective } from '@fundamental-ngx/core/input-group';\nimport {\n PopoverBodyComponent,\n PopoverBodyFooterDirective,\n PopoverComponent,\n PopoverControlComponent,\n PopoverService\n} from '@fundamental-ngx/core/popover';\nimport { Placement, SpecialDayRule } from '@fundamental-ngx/core/shared';\n\nimport { NgClass, NgTemplateOutlet } from '@angular/common';\nimport { FormStates } from '@fundamental-ngx/cdk/forms';\nimport { DynamicComponentService, FocusTrapService, Nullable, onLocaleChange } from '@fundamental-ngx/cdk/utils';\nimport { BarComponent, BarElementDirective, BarRightDirective } from '@fundamental-ngx/core/bar';\nimport { ButtonComponent } from '@fundamental-ngx/core/button';\nimport { MobileModeConfig } from '@fundamental-ngx/core/mobile-mode';\nimport { SegmentedButtonComponent } from '@fundamental-ngx/core/segmented-button';\nimport { TimeComponent } from '@fundamental-ngx/core/time';\nimport { FdTranslatePipe } from '@fundamental-ngx/i18n';\nimport { DatetimePickerMobileComponent } from './datetime-picker-mobile/datetime-picker-mobile.component';\nimport { DateTimePicker } from './datetime-picker.model';\nimport { createMissingDateImplementationError } from './errors';\nimport { FD_DATETIME_PICKER_COMPONENT, FD_DATETIME_PICKER_MOBILE_CONFIG } from './tokens';\n\n/**\n * The datetime picker component is an opinionated composition of the fd-popover,\n * fd-calendar and fd-time components to accomplish the UI pattern for picking a date and time.\n * Supports Angular Forms.\n * ```html\n * <fd-date-time-picker [(ngModel)]=\"dateTime\"></fd-date-time-picker>\n * ```\n */\n@Component({\n selector: 'fd-datetime-picker',\n templateUrl: './datetime-picker.component.html',\n styleUrl: './datetime-picker.component.scss',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => DatetimePickerComponent),\n multi: true\n },\n {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => DatetimePickerComponent),\n multi: true\n },\n {\n provide: FD_DATETIME_PICKER_COMPONENT,\n useExisting: DatetimePickerComponent\n },\n registerFormItemControl(DatetimePickerComponent),\n PopoverFormMessageService,\n PopoverService,\n DynamicComponentService\n ],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'fd-datetime'\n },\n imports: [\n NgTemplateOutlet,\n PopoverControlComponent,\n PopoverBodyComponent,\n PopoverBodyFooterDirective,\n PopoverComponent,\n InputGroupComponent,\n InputGroupInputDirective,\n FormsModule,\n FormMessageComponent,\n SegmentedButtonComponent,\n ButtonComponent,\n CalendarComponent,\n NgClass,\n TimeComponent,\n BarComponent,\n BarRightDirective,\n BarElementDirective,\n FdTranslatePipe,\n TranslateDayPeriodPipe\n ]\n})\nexport class DatetimePickerComponent<D>\n implements\n DateTimePicker<D>,\n OnInit,\n OnDestroy,\n OnChanges,\n AfterViewInit,\n ControlValueAccessor,\n Validator,\n FormItemControl\n{\n /** Placeholder for the inner input element. */\n @Input()\n placeholder = '';\n\n /**\n * The placement of the popover. It can be one of: top, top-start, top-end, bottom,\n * bottom-start, bottom-end, right, right-start, right-end, left, left-start, left-end.\n */\n @Input()\n placement: Placement = 'bottom-start';\n\n /** The element to which the popover should be appended. */\n @Input()\n appendTo: ElementRef;\n\n /** Whether the component is disabled. */\n @Input()\n disabled: boolean;\n\n /** Id attribute for input element inside DateTimePicker component */\n @Input()\n inputId: string;\n\n /** If it is mandatory field */\n @Input()\n required = false;\n\n /** Define a custom datetime format. Can be a string for DayjsDatetimeAdapter or object for FdDatetimeAdapter */\n @Input()\n customDateTimeFormat: unknown;\n\n /**\n * Whether the time component should be meridian (am/pm).\n * Default value is based on the current locale format option\n * */\n @Input()\n meridian: boolean;\n\n /**\n * Whether the time component shows seconds.\n * Default value is based on the current locale format option\n * */\n @Input()\n displaySeconds: boolean;\n\n /** aria-labelledby for element describing date-picker. */\n @Input()\n ariaLabelledBy: Nullable<string>;\n\n /** Text displayed in message */\n @Input()\n set message(message: string) {\n this._message = message;\n }\n\n /** The trigger events that will open/close the message box.\n * Accepts any [HTML DOM Events](https://www.w3schools.com/jsref/dom_obj_event.asp). */\n @Input()\n set messageTriggers(triggers: string[]) {\n this._messageTriggers = triggers;\n }\n\n /**\n * Whether the time component shows minutes.\n * Default value is based on the current locale format option\n * */\n @Input()\n displayMinutes: boolean;\n\n /**\n * Whether the time component shows hours.\n * Default value is based on the current locale format option\n * */\n @Input()\n displayHours: boolean;\n\n /** Whether to perform visual validation on the picker input. */\n @Input()\n useValidation = true;\n\n /** Current selected date. Two-way binding is supported. */\n @Input()\n date: Nullable<D>;\n\n /** Whether the popover is open. Two-way binding is supported. */\n @Input()\n isOpen = false;\n\n /** The disableFunction for the calendar. */\n @Input()\n startingDayOfWeek: DaysOfWeek = 1;\n\n /** Actually shown active view one of 'day' | 'month' | 'year' in calendar component*/\n @Input()\n activeView: FdCalendarView = FdCalendarViewEnum.Day;\n\n /** Whether a null input is considered valid. */\n @Input()\n allowNull = true;\n\n /**\n * @Input when set to true time component will use 2 digits for each number.\n * For example 9 will become 09\n * but 12 will be kept as 12.\n * Only uses by time component and does not change input format\n */\n @Input()\n keepTwoDigitsTime = false;\n\n /**\n * The state of the form control - applies css classes.\n * Also this is applied to message.\n * Can be `success`, `error`, `warning`, `information` or blank for default.\n */\n @Input()\n set state(state: FormStates) {\n this._state = state;\n }\n\n get state(): FormStates {\n if (this.useValidation && this.isInvalidDateInput) {\n return 'error';\n }\n return this._state;\n }\n\n /**\n * @deprecated Popover is toggled with f4 key\n */\n @Input()\n buttonFocusable = false;\n\n /**\n * Object to customize year grid,\n * Row, Columns and method to display year can be modified\n */\n @Input()\n yearGrid: CalendarYearGrid = {\n rows: 4,\n cols: 5\n };\n\n /**\n * Object to customize aggregated year grid,\n * Row, Columns and method to display year can be modified\n */\n @Input()\n aggregatedYearGrid: CalendarYearGrid = {\n rows: 4,\n cols: 3\n };\n\n /**\n * Whether user wants to mark sunday/saturday with `fd-calendar__item--weekend` class\n */\n @Input()\n markWeekends = true;\n\n /** @Input Whether to show spinner buttons */\n @Input()\n spinnerButtons = true;\n\n /**\n * Whether user wants to show week numbers next to days\n */\n @Input()\n showWeekNumbers = true;\n\n /** Whether or not to show the datetime picker footer with OK/cancel buttons. */\n @Input()\n showFooter = true;\n\n /**\n * Whether to recalculate value from the input as user types or on blur.\n * By default, updates the value as user types.\n * @default false\n */\n @Input({ transform: booleanAttribute })\n processInputOnBlur = false;\n\n /**\n * Whether to prevent page scrolling when focusing date picker input field after calendar has been closed.\n */\n @Input()\n preventScrollOnFocus = false;\n\n /** Whether to render datetime picker in mobile mode. */\n @Input()\n mobile = false;\n\n /** Mobile mode configuration. */\n @Input()\n mobileConfig: MobileModeConfig;\n\n /** Whether calendar is used inside mobile in landscape mode, it also adds close button on right side */\n @Input()\n mobileLandscape = false;\n\n /** Whether calendar is used inside mobile in portrait mode */\n @Input()\n mobilePortrait = false;\n\n /** To set input width 100% */\n @Input() isFullWidth = false;\n\n /** Event emitted when the state of the isOpen property changes. */\n @Output()\n isOpenChange = new EventEmitter<boolean>();\n\n /** Event thrown every time calendar active view is changed */\n @Output()\n public readonly activeViewChange: EventEmitter<FdCalendarView> = new EventEmitter<FdCalendarView>();\n\n /** Event emitted when the date changes. This can be a time or day change. */\n @Output()\n readonly dateChange: EventEmitter<D | null> = new EventEmitter<D | null>();\n\n /** Event emitted when the day changes from the calendar. */\n @Output()\n readonly calendarChange: EventEmitter<D> = new EventEmitter<D>();\n\n /** Event emitted when the time changes from the time component. */\n @Output()\n readonly timeChange: EventEmitter<D> = new EventEmitter<D>();\n\n /** Event emitted when popover closes. */\n @Output()\n // eslint-disable-next-line @angular-eslint/no-output-on-prefix\n readonly onClose: EventEmitter<void> = new EventEmitter<void>();\n\n /** Event emitted when datepicker changes it's \"touched\" state. */\n @Output()\n readonly touched: EventEmitter<void> = new EventEmitter<void>();\n\n /** @hidden */\n @ViewChild('inputGroupComponent', {\n read: ElementRef\n })\n _inputGroupElement: ElementRef;\n\n /** @hidden */\n @ViewChild(InputGroupInputDirective, {\n read: ElementRef\n })\n _inputElement: ElementRef<HTMLInputElement>;\n\n /** @hidden */\n @ViewChild('formMessageTemplate')\n private readonly _formMessageTemplate: TemplateRef<any>;\n\n /** @hidden */\n @ViewChild('pickerTemplate')\n private readonly _pickerTemplate: TemplateRef<any>;\n\n /**\n * Special days mark, it can be used by passing array of object with\n * Special day number, list 1-20 [class:`fd-calendar__item--legend-{{number}}`] is available there:\n * https://sap.github.io/fundamental-styles/components/calendar.html calendar special days section\n * Rule accepts method with FdDate object as a parameter. ex:\n * `rule: (fdDate: FdDate) => fdDate.getDay() === 1`, which will mark all sundays as special day.\n */\n specialDaysRules = input<SpecialDayRule<D>[]>([]);\n\n /**\n * Whether to show the calendar legend below the calendar.\n * The legend displays explanations for special day markers.\n */\n showCalendarLegend = input(false, { transform: booleanAttribute });\n\n /**\n * Whether the calendar legend should display in a single column layout.\n * When false (default), the legend items flow into multiple columns automatically.\n */\n legendCol = input(false, { transform: booleanAttribute });\n\n /** Indicates when datetime input is in invalid state. */\n get isInvalidDateInput(): boolean {\n return this._isInvalidDateInput && this._touched;\n }\n\n /** @hidden Reference to the inner calendar component. */\n @ViewChild(CalendarComponent, { static: false })\n private set _calendarCmp(calendar: CalendarComponent<D>) {\n setTimeout(() => {\n calendar?.setCurrentlyDisplayed(this._calendarPendingDate);\n calendar?.initialFocus();\n });\n this._calendarComponent = calendar;\n }\n\n /** @hidden */\n _calendarComponent: CalendarComponent<D>;\n\n /** @hidden */\n _message: string | null = null;\n\n /** @hidden */\n _messageTriggers: string[] = ['focusin', 'focusout'];\n\n /**\n * @hidden\n * Date of the input field. Internal use.\n * For programmatic selection, use two-way binding on the date input.\n */\n _inputFieldDate: string | null = null;\n\n /** @hidden */\n _isInvalidDateInput = false;\n\n /** @hidden The temporary Time object for use before 'OK' is pressed. Internal use. */\n _tempTime: Nullable<D>;\n\n /** @hidden The temporary CalendarDay object for use before 'OK' is pressed. Internal use. */\n _tempDate: Nullable<D>;\n\n /** @hidden */\n _meridian: boolean;\n\n /** @hidden */\n _displaySeconds: boolean;\n\n /** @hidden */\n _displayMinutes: boolean;\n\n /** @hidden */\n _displayHours: boolean;\n\n /** @hidden whether to display date or time in mobile mode */\n _displayType: 'date' | 'time' = 'date';\n\n /** @hidden */\n _showPopoverContents = false;\n\n /** @hidden */\n private _state: FormStates = 'default';\n\n /** @hidden */\n private _calendarPendingDate: Nullable<D>;\n\n /** @hidden */\n private readonly _injector = inject(Injector);\n\n /** @hidden */\n private readonly _dynamicComponentService = inject(DynamicComponentService);\n\n /** @hidden */\n private readonly _focusTrapService = inject(FocusTrapService, {\n optional: true\n });\n\n /** @hidden */\n private _mobileComponentRef: Nullable<ComponentRef<DatetimePickerMobileComponent<D>>>;\n\n /** @hidden */\n private _touched = false;\n\n /** @hidden */\n constructor(\n private _elRef: ElementRef,\n private _changeDetRef: ChangeDetectorRef,\n // Use @Optional to avoid angular injection error message and throw our own which is more precise one\n @Optional() private _dateTimeAdapter: DatetimeAdapter<D>,\n @Optional() @Inject(DATE_TIME_FORMATS) private _dateTimeFormats: DateTimeFormats,\n private _popoverFormMessage: PopoverFormMessageService\n ) {\n if (!this._dateTimeAdapter) {\n throw createMissingDateImplementationError('DateTimeAdapter');\n }\n if (!this._dateTimeFormats) {\n throw createMissingDateImplementationError('DATE_TIME_FORMATS');\n }\n\n // default model value\n this.date = _dateTimeAdapter.now();\n\n onLocaleChange(this._dateTimeAdapter, () => {\n if (this._inputFieldDate) {\n this._setInput(this.date);\n this._calculateTimeOptions();\n this._changeDetRef.markForCheck();\n }\n });\n }\n\n /**\n * Function used to disable certain dates in the calendar.\n * @param fdDate FdDate\n */\n @Input()\n disableFunction: (value: D) => boolean = () => false;\n\n /** @hidden */\n onChange: (value: D | null) => void = () => {};\n\n /** @hidden */\n onTouched = (): void => {};\n\n /** @hidden */\n ngOnChanges(changes): void {\n if (changes.date) {\n this._setTempDateTime();\n }\n\n if (['displayHours', 'displayMinutes', 'displaySeconds', 'meridian'].some((prop) => prop in changes)) {\n this._calculateTimeOptions();\n }\n\n if ('isOpen' in changes) {\n this._showPopoverContents = this.isOpen;\n this._changeDetRef.detectChanges();\n }\n }\n\n /** @hidden */\n ngOnInit(): void {\n if (this.date) {\n this._setTempDateTime();\n }\n\n this._calculateTimeOptions();\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._mobileComponentRef?.destroy();\n }\n\n /** @hidden */\n ngAfterViewInit(): void {\n this._InitialiseVariablesInMessageService();\n\n if (this.mobile) {\n this._setUpMobileMode();\n }\n\n // update bindings after rendering\n // is needed to preperly reflect error state\n setTimeout(() => {\n this._changeDetRef.markForCheck();\n });\n }\n\n /**\n * @hidden\n * Function that implements Validator Interface, adds validation support for forms\n */\n validate(): { [key: string]: any } | null {\n return this.isCurrentModelValid() && !this._isInvalidDateInput\n ? null\n : {\n dateValidation: {\n valid: false\n }\n };\n }\n\n /** Toggles the popover. */\n togglePopover(): void {\n if (this.isOpen) {\n this.closePopover();\n } else {\n this.openPopover();\n }\n }\n\n /**\n * Method that handles calendar active view change and throws event.\n */\n handleCalendarActiveViewChange(activeView: FdCalendarView): void {\n this.activeViewChange.emit(activeView);\n }\n\n /** Method that handles blur events on datetime picker input */\n handleOnTouched(event?: FocusEvent): void {\n this._touched = true;\n this.onTouched();\n this.touched.next();\n if (event) {\n this.handleInputChange((<HTMLInputElement>event.target).value, false);\n }\n }\n\n /** Opens the popover. */\n openPopover(): void {\n if (!this.isOpen && !this.disabled) {\n this._focusTrapService?.pauseCurrentFocusTrap();\n this._showPopoverContents = true;\n this._changeDetRef.detectChanges();\n this.isOpen = true;\n this._onOpenStateChanged(this.isOpen);\n }\n }\n\n /** Closes the popover and refresh model */\n closePopover(): void {\n if (!this.isOpen) {\n return;\n }\n this.onClose.emit();\n this.isOpen = false;\n this._changeDetRef.detectChanges();\n this._onOpenStateChanged(this.isOpen);\n this._focusTrapService?.unpauseCurrentFocusTrap();\n this.handleOnTouched();\n this._showPopoverContents = false;\n }\n\n /** @hidden */\n setInvalidDateInputHandler(isInvalid: boolean): void {\n this._isInvalidDateInput = isInvalid;\n }\n\n /** @hidden */\n registerOnChange(fn: (selected: any) => { void }): void {\n this.onChange = fn;\n }\n\n /** @hidden */\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n /** @hidden */\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n this._changeDetRef.detectChanges();\n }\n\n /**\n * @hidden\n * Function that provides support for ControlValueAccessor that allows to use [(ngModel)] or forms\n */\n writeValue(selected: Nullable<D>): void {\n this.date = this._parseDate(selected);\n this._isInvalidDateInput = !this._isModelValid(this.date);\n if (this.isCurrentModelValid()) {\n this._setTempDateTime();\n this._refreshCurrentlyDisplayedCalendarDate(this.date);\n }\n this._setInput(this.date);\n }\n\n /**\n * @hidden\n * Method that is triggered by events from calendar component, when there is selected date changed.\n * If invalid time model is detected, it takes time model data from TimeComponent.\n */\n handleDateChange(date: D): void {\n this._tempDate = date;\n if (!this.showFooter) {\n this.submit();\n }\n }\n\n /**\n * @hidden\n * Method that is triggered by events from time component, when there is selected time changed\n */\n handleTimeChange(time: D): void {\n this._tempTime = time;\n if (!this.showFooter) {\n this.submit();\n }\n }\n\n /**\n * @hidden\n * Method that is triggered when 'OK' button is pressed.\n */\n submit(): void {\n const previousDate = this.date;\n // Initialize date and time values, defaulting to the current date if invalid\n let currentDate = this._tempDate!;\n let currentTime = this._tempTime!;\n\n // Initialize date and time values, defaulting to the current date if invalid\n if (!this._tempDate || !this._dateTimeAdapter.isValid(this._tempDate)) {\n currentDate = this._dateTimeAdapter.today()!;\n }\n if (!this._tempTime || !this._dateTimeAdapter.isValid(this._tempTime)) {\n currentTime = this._dateTimeAdapter.today()!;\n }\n\n let isSubmissionSuccessful = true;\n try {\n this.date = this._dateTimeAdapter.setTime(\n currentDate,\n this._dateTimeAdapter.getHours(currentTime),\n this._dateTimeAdapter.getMinutes(currentTime),\n this._dateTimeAdapter.getSeconds(currentTime)\n );\n this._refreshCurrentlyDisplayedCalendarDate(this.date);\n } catch {\n this.date = null;\n isSubmissionSuccessful = false;\n }\n this._isInvalidDateInput = !this.isCurrentModelValid();\n\n this._setInput(this.date);\n\n this.onChange(this.date);\n if (isSubmissionSuccessful) {\n this._emitDateChange(previousDate);\n }\n\n if (this.showFooter) {\n this.closePopover();\n }\n }\n\n /**\n * @hidden\n * Function that is called when 'Cancel' button is pressed.\n */\n cancel(): void {\n this._tempDate = this.date;\n this._tempTime = this.date;\n this.closePopover();\n }\n\n /**\n * @hidden\n * Looks like no one uses it. Should be removed?\n */\n focusArrowLeft(): void {\n if (this._elRef.nativeElement.querySelector('#' + this._calendarComponent.id + '-left-arrow')) {\n this._elRef.nativeElement.querySelector('#' + this._calendarComponent.id + '-left-arrow').focus();\n }\n }\n\n /**\n * @hidden\n * Method, which is responsible for transforming string to datetime, depending on type or\n * validation the results are different. It also changes to state of _isInvalidDateInput.\n */\n handleInputChange(inputStr: string, isTypeEvent: boolean): void {\n if ((isTypeEvent && this.processInputOnBlur) || (!isTypeEvent && !this.processInputOnBlur)) {\n // if processInputOnBlur === true, ignore type event\n // if processInputOnBlur === false, ignore blur/enter event\n return;\n }\n const previousDate = this.date;\n this._inputFieldDate = inputStr ?? '';\n if (!inputStr) {\n this._isInvalidDateInput = !this.allowNull;\n this.date = null;\n this.onChange(null);\n this._emitDateChange(previousDate);\n return;\n }\n\n inputStr = convertToDesiredFormat(inputStr.toString());\n\n this.date = this._parseDate(inputStr);\n this._isInvalidDateInput = !this._isModelValid(this.date);\n\n if (!this._isInvalidDateInput) {\n this._setTempDateTime();\n this._refreshCurrentlyDisplayedCalendarDate(this.date);\n }\n this.onChange(this.date);\n this._emitDateChange(previousDate);\n }\n\n /** @hidden */\n dialogApprove(): void {\n this.isOpen = false;\n this.submit();\n }\n\n /** Method used to restore original value for mobile mode. */\n dialogDismiss(value: D): void {\n this.date = value;\n this.isOpen = false;\n this._setInput(this.date);\n\n this.onChange(this.date);\n }\n\n /** @hidden */\n _changeMessageVisibility(): void {\n if (this.isOpen) {\n this._popoverFormMessage.hide();\n } else {\n this._popoverFormMessage.show();\n }\n }\n\n /** @hidden */\n _onOpenStateChanged(isOpen: boolean): void {\n this.isOpenChange.emit(isOpen);\n this._changeMessageVisibility();\n // focus input control every time popup is closed\n if (!isOpen && this._inputElement) {\n this._inputElement.nativeElement.focus({\n preventScroll: this.preventScrollOnFocus\n });\n }\n if (!isOpen) {\n this._showPopoverContents = false;\n this._changeDetRef.detectChanges();\n }\n }\n\n /** Method that provides information if model selected date/dates have properly types and are valid */\n isCurrentModelValid(): boolean {\n return this._isModelValid(this.date);\n }\n\n /** Method that provides information if FdDateTime passed as arg has properly types and is valid */\n private _isModelValid(date: Nullable<D>): boolean {\n return (date === null && this.allowNull) || this._dateTimeAdapter.isValid(date);\n }\n\n /** @hidden */\n private _setInput(dateTime: Nullable<D>): void {\n this._inputFieldDate = dateTime ? this._formatDateTime(dateTime) : '';\n this._changeDetRef.detectChanges();\n }\n\n /** @hidden */\n private _refreshCurrentlyDisplayedCalendarDate(date: Nullable<D>): void {\n this._calendarPendingDate = date;\n }\n\n /**\n * @hidden\n * Format date time entity.\n */\n private _formatDateTime(dateTime: D): string {\n const formattedDate: string = this.customDateTimeFormat\n ? this._dateTimeAdapter.format(dateTime, this.customDateTimeFormat)\n : this._dateTimeAdapter.format(dateTime, this._dateTimeFormats.display.dateTimeInput);\n return formattedDate || '';\n }\n\n /** @hidden */\n private _InitialiseVariablesInMessageService(): void {\n this._popoverFormMessage.init(this._inputGroupElement);\n this._popoverFormMessage.message = this._formMessageTemplate;\n this._popoverFormMessage.triggers = this._messageTriggers;\n }\n\n /** @hidden */\n private _parseDate(date: unknown): D | null {\n const format = this.customDateTimeFormat ?? this._dateTimeFormats.parse.dateTimeInput;\n return this._dateTimeAdapter.parse(date, format);\n }\n\n /** @hidden */\n private _setTempDateTime(): void {\n this._tempDate = this.date;\n this._tempTime = this.date;\n }\n\n /** @hidden */\n private _calculateTimeOptions(): void {\n const format = this._dateTimeFormats.display.dateTimeInput;\n\n // default meridian option based on format option\n this._meridian =\n this.meridian != null ? this.meridian : this._dateTimeAdapter.isTimeFormatIncludesDayPeriod(format);\n\n // default seconds option based on format option\n this._displaySeconds =\n this.displaySeconds != null\n ? this.displaySeconds\n : this._dateTimeAdapter.isTimeFormatIncludesSeconds(format);\n\n // default minutes option based on format option\n this._displayMinutes =\n this.displayMinutes != null\n ? this.displayMinutes\n : this._dateTimeAdapter.isTimeFormatIncludesMinutes(format);\n\n // default hours option based on format option\n this._displayHours =\n this.displayHours != null ? this.displayHours : this._dateTimeAdapter.isTimeFormatIncludesHours(format);\n }\n\n /** @hidden */\n private _setUpMobileMode(): void {\n const injector = Injector.create({\n providers: [\n { provide: FD_DATETIME_PICKER_COMPONENT, useValue: this },\n {\n provide: FD_DATETIME_PICKER_MOBILE_CONFIG,\n useValue: { pickerTemplate: this._pickerTemplate }\n }\n ],\n parent: this._injector\n });\n\n this._mobileComponentRef = this._dynamicComponentService.createDynamicComponent(\n {},\n DatetimePickerMobileComponent<D>,\n {\n container: 'body'\n },\n {\n injector\n }\n );\n }\n\n private _emitDateChange(previousDate: Nullable<D>): void {\n if (this._isInvalidDateInput || this._datesAreEqual(previousDate, this.date)) {\n return;\n }\n\n this.dateChange.emit(this.date);\n }\n\n private _datesAreEqual(firstDate: Nullable<D>, secondDate: Nullable<D>): boolean {\n if (!firstDate && !secondDate) {\n return true;\n }\n\n return !!firstDate && !!secondDate && this._dateTimeAdapter.dateTimesEqual(firstDate, secondDate);\n }\n}\n","<ng-template [ngTemplateOutlet]=\"mobile ? controlTemplate : desktopTemplate\"></ng-template>\n<ng-template #desktopTemplate>\n <fd-popover\n [(isOpen)]=\"isOpen\"\n (isOpenChange)=\"_onOpenStateChanged($event)\"\n [focusTrapped]=\"true\"\n [focusAutoCapture]=\"false\"\n [triggers]=\"[]\"\n [disabled]=\"disabled\"\n [placement]=\"placement\"\n [appendTo]=\"appendTo\"\n [class.fd-popover-full-width]=\"isFullWidth\"\n >\n <fd-popover-control>\n <ng-template [ngTemplateOutlet]=\"controlTemplate\"></ng-template>\n </fd-popover-control>\n <fd-popover-body\n aria-labelledby=\"fd-form-message\"\n [attr.aria-expanded]=\"isOpen\"\n [attr.aria-hidden]=\"!isOpen\"\n [style.display]=\"'block'\"\n >\n @if (_showPopoverContents) {\n <ng-template [ngTemplateOutlet]=\"pickerTemplate\"></ng-template>\n }\n </fd-popover-body>\n </fd-popover>\n</ng-template>\n<ng-template #controlTemplate>\n <fd-input-group\n #inputGroupComponent\n [state]=\"state\"\n [disabled]=\"disabled\"\n [isControl]=\"true\"\n [button]=\"true\"\n [buttonFocusable]=\"buttonFocusable\"\n [class.fd-datetime__mobile-control]=\"mobile\"\n glyph=\"date-time\"\n [isExpanded]=\"isOpen\"\n [glyphAriaLabel]=\"('coreDatetimePicker.displayDatetimeToggleLabel' | fdTranslate)()\"\n [iconTitle]=\"('coreDatetimePicker.displayDatetimeToggleLabel' | fdTranslate)()\"\n (addOnButtonClicked)=\"togglePopover()\"\n >\n <input\n type=\"text\"\n class=\"fd-input\"\n fd-input-group-input\n [attr.aria-labelledby]=\"ariaLabelledBy\"\n [attr.aria-label]=\"('coreDatetimePicker.datetimeInputLabel' | fdTranslate)()\"\n [attr.id]=\"inputId\"\n [attr.aria-required]=\"required\"\n [placeholder]=\"placeholder\"\n [disabled]=\"disabled\"\n [ngModel]=\"_inputFieldDate | translateDayPeriod\"\n (keydown.f4)=\"togglePopover()\"\n (keyup.enter)=\"handleInputChange($any($event.target).value, false)\"\n (ngModelChange)=\"handleInputChange($event, true)\"\n (blur)=\"handleOnTouched($event)\"\n (click)=\"mobile && openPopover()\"\n />\n </fd-input-group>\n</ng-template>\n<ng-template #formMessageTemplate>\n @if (_message) {\n <fd-form-message id=\"fd-form-message\" [embedded]=\"true\" [type]=\"state\">\n {{ _message }}\n </fd-form-message>\n }\n</ng-template>\n<ng-template #pickerTemplate>\n <div class=\"fd-datetime__wrapper\">\n <ng-template [ngTemplateOutlet]=\"formMessageTemplate\"></ng-template>\n <div\n class=\"fd-datetime__display-type-switcher\"\n [class.fd-datetime__display-type-switcher--desktop]=\"!mobile || (mobile && mobileLandscape)\"\n [class.fd-datetime__display-type-switcher--mobile]=\"mobile && mobilePortrait\"\n >\n <fd-segmented-button [(ngModel)]=\"_displayType\">\n <button\n fd-button\n [label]=\"('coreDatetimePicker.displayTypeDateLabel' | fdTranslate)()\"\n value=\"date\"\n ></button>\n <button\n fd-button\n [label]=\"('coreDatetimePicker.displayTypeTimeLabel' | fdTranslate)()\"\n value=\"time\"\n ></button>\n </fd-segmented-button>\n </div>\n <ng-content></ng-content>\n <div class=\"fd-datetime__container\" [class.fd-datetime__container--mobile-portrait]=\"mobile && mobilePortrait\">\n <fd-calendar\n [ngClass]=\"[\n !mobile && _displayType === 'date' ? 'fd-datetime__active-display-type' : '',\n mobile && mobilePortrait && _displayType === 'date' ? 'fd-datetime__mobile-display' : ''\n ]\"\n calType=\"single\"\n [activeView]=\"activeView\"\n [disableFunction]=\"disableFunction || null\"\n [selectedDate]=\"_tempDate\"\n [escapeFocusFunction]=\"null\"\n [markWeekends]=\"markWeekends\"\n [specialDaysRules]=\"specialDaysRules()\"\n [showCalendarLegend]=\"showCalendarLegend()\"\n [legendCol]=\"legendCol()\"\n [showWeekNumbers]=\"showWeekNumbers\"\n [aggregatedYearGrid]=\"aggregatedYearGrid\"\n [yearGrid]=\"yearGrid\"\n [startingDayOfWeek]=\"startingDayOfWeek\"\n (activeViewChange)=\"handleCalendarActiveViewChange($event)\"\n (selectedDateChange)=\"handleDateChange($event)\"\n (isValidDateChange)=\"setInvalidDateInputHandler($event)\"\n ></fd-calendar>\n @if (!mobilePortrait) {\n <div class=\"fd-datetime__separator\"></div>\n }\n @if (isOpen) {\n <fd-time\n [ngClass]=\"[\n !mobile && _displayType === 'time' ? 'fd-datetime__active-display-type' : '',\n mobile && mobilePortrait && _displayType === 'time' ? 'fd-datetime__mobile-display' : ''\n ]\"\n [disabled]=\"disabled\"\n [elementsAtOnce]=\"5\"\n [keepTwoDigits]=\"keepTwoDigitsTime\"\n [ngModel]=\"_tempTime\"\n [spinnerButtons]=\"spinnerButtons\"\n [meridian]=\"_meridian\"\n [displaySeconds]=\"_displaySeconds\"\n [displayMinutes]=\"_displayMinutes\"\n [displayHours]=\"_displayHours\"\n (ngModelChange)=\"handleTimeChange($event)\"\n ></fd-time>\n }\n </div>\n @if (!mobile && showFooter) {\n <div fd-popover-body-footer>\n <div class=\"fd-datetime__bar\" fd-bar barDesign=\"footer\">\n <div fd-bar-right>\n <fd-bar-element>\n <button\n fd-button\n fdType=\"emphasized\"\n [disabled]=\"!_tempDate\"\n [label]=\"('coreDatetimePicker.datetimeOkLabel' | fdTranslate)()\"\n [ariaLabel]=\"('coreDatetimePicker.datetimeOkLabel' | fdTranslate)()\"\n (click)=\"submit()\"\n ></button>\n </fd-bar-element>\n <fd-bar-element>\n <button\n fd-button\n fdType=\"transparent\"\n [label]=\"('coreDatetimePicker.datetimeCancelLabel' | fdTranslate)()\"\n [ariaLabel]=\"('coreDatetimePicker.datetimeCancelLabel' | fdTranslate)()\"\n (click)=\"cancel()\"\n ></button>\n </fd-bar-element>\n </div>\n </div>\n </div>\n }\n </div>\n</ng-template>\n","import { NgModule } from '@angular/core';\nimport { DatetimePickerMobileComponent } from './datetime-picker-mobile/datetime-picker-mobile.component';\nimport { DatetimePickerComponent } from './datetime-picker.component';\n\n/**\n * @deprecated\n * Use direct imports of components and directives.\n */\n@NgModule({\n imports: [DatetimePickerComponent, DatetimePickerMobileComponent],\n exports: [DatetimePickerComponent, DatetimePickerMobileComponent]\n})\nexport class DatetimePickerModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@fundamental-ngx/core",
|
|
3
|
-
"version": "0.65.0-rc.
|
|
3
|
+
"version": "0.65.0-rc.17",
|
|
4
4
|
"schematics": "./schematics/collection.json",
|
|
5
5
|
"ng-update": {
|
|
6
6
|
"packageGroupName": "@fundamental-ngx/core",
|
|
@@ -37,8 +37,8 @@
|
|
|
37
37
|
"@angular/forms": "^22.0.0",
|
|
38
38
|
"@angular/platform-browser": "^22.0.0",
|
|
39
39
|
"@angular/router": "^22.0.0",
|
|
40
|
-
"@fundamental-ngx/cdk": "0.65.0-rc.
|
|
41
|
-
"@fundamental-ngx/i18n": "0.65.0-rc.
|
|
40
|
+
"@fundamental-ngx/cdk": "0.65.0-rc.17",
|
|
41
|
+
"@fundamental-ngx/i18n": "0.65.0-rc.17",
|
|
42
42
|
"@sap-theming/theming-base-content": "^11.36.0",
|
|
43
43
|
"fundamental-styles": "0.41.9",
|
|
44
44
|
"rxjs": "^7.8.0"
|
package/schematics/package.json
CHANGED
|
@@ -175,7 +175,7 @@ declare class DatetimePickerComponent<D> implements DateTimePicker<D>, OnInit, O
|
|
|
175
175
|
/** Event thrown every time calendar active view is changed */
|
|
176
176
|
readonly activeViewChange: EventEmitter<FdCalendarView>;
|
|
177
177
|
/** Event emitted when the date changes. This can be a time or day change. */
|
|
178
|
-
readonly dateChange: EventEmitter<D>;
|
|
178
|
+
readonly dateChange: EventEmitter<D | null>;
|
|
179
179
|
/** Event emitted when the day changes from the calendar. */
|
|
180
180
|
readonly calendarChange: EventEmitter<D>;
|
|
181
181
|
/** Event emitted when the time changes from the time component. */
|
|
@@ -374,6 +374,8 @@ declare class DatetimePickerComponent<D> implements DateTimePicker<D>, OnInit, O
|
|
|
374
374
|
private _calculateTimeOptions;
|
|
375
375
|
/** @hidden */
|
|
376
376
|
private _setUpMobileMode;
|
|
377
|
+
private _emitDateChange;
|
|
378
|
+
private _datesAreEqual;
|
|
377
379
|
static ɵfac: i0.ɵɵFactoryDeclaration<DatetimePickerComponent<any>, [null, null, { optional: true; }, { optional: true; }, null]>;
|
|
378
380
|
static ɵcmp: i0.ɵɵComponentDeclaration<DatetimePickerComponent<any>, "fd-datetime-picker", never, { "placeholder": { "alias": "placeholder"; "required": false; }; "placement": { "alias": "placement"; "required": false; }; "appendTo": { "alias": "appendTo"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "inputId": { "alias": "inputId"; "required": false; }; "required": { "alias": "required"; "required": false; }; "customDateTimeFormat": { "alias": "customDateTimeFormat"; "required": false; }; "meridian": { "alias": "meridian"; "required": false; }; "displaySeconds": { "alias": "displaySeconds"; "required": false; }; "ariaLabelledBy": { "alias": "ariaLabelledBy"; "required": false; }; "message": { "alias": "message"; "required": false; }; "messageTriggers": { "alias": "messageTriggers"; "required": false; }; "displayMinutes": { "alias": "displayMinutes"; "required": false; }; "displayHours": { "alias": "displayHours"; "required": false; }; "useValidation": { "alias": "useValidation"; "required": false; }; "date": { "alias": "date"; "required": false; }; "isOpen": { "alias": "isOpen"; "required": false; }; "startingDayOfWeek": { "alias": "startingDayOfWeek"; "required": false; }; "activeView": { "alias": "activeView"; "required": false; }; "allowNull": { "alias": "allowNull"; "required": false; }; "keepTwoDigitsTime": { "alias": "keepTwoDigitsTime"; "required": false; }; "state": { "alias": "state"; "required": false; }; "buttonFocusable": { "alias": "buttonFocusable"; "required": false; }; "yearGrid": { "alias": "yearGrid"; "required": false; }; "aggregatedYearGrid": { "alias": "aggregatedYearGrid"; "required": false; }; "markWeekends": { "alias": "markWeekends"; "required": false; }; "spinnerButtons": { "alias": "spinnerButtons"; "required": false; }; "showWeekNumbers": { "alias": "showWeekNumbers"; "required": false; }; "showFooter": { "alias": "showFooter"; "required": false; }; "processInputOnBlur": { "alias": "processInputOnBlur"; "required": false; }; "preventScrollOnFocus": { "alias": "preventScrollOnFocus"; "required": false; }; "mobile": { "alias": "mobile"; "required": false; }; "mobileConfig": { "alias": "mobileConfig"; "required": false; }; "mobileLandscape": { "alias": "mobileLandscape"; "required": false; }; "mobilePortrait": { "alias": "mobilePortrait"; "required": false; }; "isFullWidth": { "alias": "isFullWidth"; "required": false; }; "specialDaysRules": { "alias": "specialDaysRules"; "required": false; "isSignal": true; }; "showCalendarLegend": { "alias": "showCalendarLegend"; "required": false; "isSignal": true; }; "legendCol": { "alias": "legendCol"; "required": false; "isSignal": true; }; "disableFunction": { "alias": "disableFunction"; "required": false; }; }, { "isOpenChange": "isOpenChange"; "activeViewChange": "activeViewChange"; "dateChange": "dateChange"; "calendarChange": "calendarChange"; "timeChange": "timeChange"; "onClose": "onClose"; "touched": "touched"; }, never, ["*"], true, never>;
|
|
379
381
|
static ngAcceptInputType_processInputOnBlur: unknown;
|