@fundamental-ngx/core 0.64.2-rc.2 → 0.64.2-rc.21

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"fundamental-ngx-core-input-group.mjs","sources":["../../../../libs/core/input-group/input-group-directives.ts","../../../../libs/core/input-group/input-group.component.ts","../../../../libs/core/input-group/input-group.component.html","../../../../libs/core/input-group/input-group.module.ts","../../../../libs/core/input-group/fundamental-ngx-core-input-group.ts"],"sourcesContent":["import {\n AfterContentInit,\n Directive,\n ElementRef,\n HostBinding,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Renderer2\n} from '@angular/core';\nimport { FormStates } from '@fundamental-ngx/cdk/forms';\nimport { CssClassBuilder, applyCssClass } from '@fundamental-ngx/cdk/utils';\nimport { ContentDensityObserver, contentDensityObserverProviders } from '@fundamental-ngx/core/content-density';\nimport { Subscription } from 'rxjs';\nimport { InputGroupPlacement } from './types';\n\n@Directive({\n selector: '[fdInputGroupInput], [fd-input-group-input]',\n providers: [contentDensityObserverProviders()],\n standalone: true\n})\nexport class InputGroupInputDirective implements CssClassBuilder, OnInit, OnChanges, OnDestroy {\n /** user's custom classes */\n @Input()\n class: string;\n\n /** @hidden */\n private _subscriptions = new Subscription();\n\n /** @hidden */\n constructor(\n public readonly elementRef: ElementRef,\n _contentDensityObserver: ContentDensityObserver\n ) {\n _contentDensityObserver.subscribe();\n }\n\n /** @hidden\n * CssClassBuilder interface implementation\n * function must return single string\n * function is responsible for order which css classes are applied\n */\n @applyCssClass\n buildComponentCssClass(): string[] {\n return ['fd-input', 'fd-input-group__input'];\n }\n\n /** @hidden */\n ngOnInit(): void {\n this.buildComponentCssClass();\n }\n\n /** @hidden */\n ngOnChanges(): void {\n this.buildComponentCssClass();\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n }\n}\n\n@Directive({\n selector: '[fdTextareaGroupInput], [fd-textarea-group-input]',\n standalone: true\n})\nexport class InputGroupTextareaDirective {}\n\n@Directive({\n selector: '[fdInputGroupAddon], [fd-input-group-addon]',\n providers: [contentDensityObserverProviders()],\n standalone: true\n})\nexport class InputGroupAddOnDirective implements OnInit, OnChanges, CssClassBuilder, AfterContentInit, OnDestroy {\n /** user's custom classes */\n @Input()\n class: string;\n\n /** @hidden */\n @HostBinding('class.fd-input-group__addon')\n fdInputGroupAddonClass = true;\n\n /**\n * The placement of the add-on. Options include *before* and *after*\n */\n @Input()\n placement: InputGroupPlacement = 'after';\n\n /**\n * The placement of the add-on. Options include *before* and *after*\n */\n @Input()\n type: string;\n\n /**\n * The state of the form control - applies css classes.\n * Can be `success`, `error`, `warning`, `information` or blank for default.\n */\n @Input()\n state?: FormStates;\n\n /**\n * Whether the icon add-on or the text add-on is a button.\n */\n @Input()\n button = false;\n\n /** @hidden */\n private _subscriptions = new Subscription();\n\n /** @hidden */\n constructor(\n public readonly elementRef: ElementRef,\n private readonly renderer: Renderer2,\n _contentDensityObserver: ContentDensityObserver\n ) {\n _contentDensityObserver.subscribe();\n }\n\n /** @hidden\n * CssClassBuilder interface implementation\n * function must return single string\n * function is responsible for order which css classes are applied\n */\n @applyCssClass\n buildComponentCssClass(): string[] {\n return [\n 'fd-input-group__addon',\n this.button ? 'fd-input-group__addon--button' : '',\n this.type ? 'fd-input-group__addon--' + this.type : '',\n this.state ? 'is-' + this.state : ''\n ];\n }\n\n /** @hidden */\n ngOnInit(): void {\n this.buildComponentCssClass();\n }\n\n /** @hidden */\n ngOnChanges(): void {\n this.buildComponentCssClass();\n }\n\n /** @hidden */\n ngAfterContentInit(): void {\n /** Add fd-input-group__button to button child element */\n const button = this.elementRef.nativeElement.querySelector('button');\n if (button) {\n this.renderer.addClass(button, 'fd-input-group__button');\n }\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n }\n}\n\n@Directive({\n selector: '[fdInputGroupAddonButton], [fd-input-group-addon-button]',\n host: {\n class: 'fd-input-group__button'\n },\n standalone: true\n})\nexport class InputGroupAddonButtonDirective {}\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChild,\n DestroyRef,\n ElementRef,\n EventEmitter,\n HostListener,\n inject,\n Input,\n OnInit,\n Output,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { ContentDensityObserver, contentDensityObserverProviders } from '@fundamental-ngx/core/content-density';\nimport { debounceTime, filter, fromEvent, map, merge, Observable } from 'rxjs';\n\nimport { Nullable } from '@fundamental-ngx/cdk/utils';\nimport { FormItemControl, registerFormItemControl } from '@fundamental-ngx/core/form';\n\nimport { AsyncPipe, NgTemplateOutlet } from '@angular/common';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { CvaControl, CvaDirective, FD_FORM_FIELD_CONTROL } from '@fundamental-ngx/cdk/forms';\nimport { ButtonComponent } from '@fundamental-ngx/core/button';\nimport { FD_DEFAULT_ICON_FONT_FAMILY, IconComponent, IconFont } from '@fundamental-ngx/core/icon';\nimport {\n InputGroupAddonButtonDirective,\n InputGroupAddOnDirective,\n InputGroupInputDirective\n} from './input-group-directives';\nimport { InputGroupPlacement } from './types';\n\nlet addOnNonButtonRandomId = 0;\nlet addOnButtonRandomId = 0;\nlet addOnInputRandomId = 0;\n\n/**\n * The component that represents an input group.\n * The input group includes form inputs with add-ons that allow the user to better understand the information being entered.\n *\n * ```html\n * <fd-input-group placement=\"after\" addOnText=\"$\" placeholder=\"Amount\">\n * </fd-input-group>\n * ```\n */\n@Component({\n selector: 'fd-input-group',\n templateUrl: './input-group.component.html',\n styleUrl: './input-group.component.scss',\n hostDirectives: [\n {\n directive: CvaDirective,\n inputs: ['placeholder', 'disabled', 'readonly', 'state', 'name', 'stateMessage', 'type']\n }\n ],\n providers: [\n CvaControl,\n { provide: FD_FORM_FIELD_CONTROL, useExisting: InputGroupComponent, multi: true },\n contentDensityObserverProviders(),\n registerFormItemControl(InputGroupComponent)\n ],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n NgTemplateOutlet,\n InputGroupAddOnDirective,\n ButtonComponent,\n InputGroupAddonButtonDirective,\n FormsModule,\n InputGroupInputDirective,\n AsyncPipe,\n IconComponent\n ]\n})\nexport class InputGroupComponent implements AfterViewInit, FormItemControl, OnInit {\n /**\n * The placement of the add-on.\n * Options include *before* and *after*\n */\n @Input()\n placement: InputGroupPlacement = 'after';\n\n /** If it is mandatory field */\n @Input()\n required = false;\n\n /** Whether the input group is inline. */\n @Input()\n inline = false;\n\n /** The text for the add-on. */\n @Input()\n addOnText: string;\n\n /** Whether AddOn Button should be focusable */\n @Input()\n buttonFocusable = true;\n\n /** The type of the input, used in Input Group. By default, value is set to 'text' */\n @Input()\n type = 'text';\n\n /** The icon value for the add-on. */\n @Input()\n glyph: Nullable<string>;\n\n /** Glyph font family */\n @Input()\n glyphFont: IconFont = FD_DEFAULT_ICON_FONT_FAMILY;\n\n /** Whether the icon add-on or the text add-on is a button. */\n @Input()\n button: boolean;\n\n /**\n * Whether the input group is a popover control\n */\n @Input()\n isControl = false;\n\n /**\n * Whether should show focus outline\n */\n @Input()\n showFocus = true;\n\n /** @hidden */\n @Input()\n isExpanded = false;\n\n /** Label applied to button with glyph element. */\n @Input()\n glyphAriaLabel: Nullable<string>;\n\n /**\n * Whether the input group addon button should be aria-hidden\n * Useful in cases when the title is already applied on the\n * input group parent component\n **/\n @Input()\n addonButtonAriaHidden: Nullable<boolean>;\n\n /** @deprecated Title attributes are being removed from the library. */\n @Input()\n iconTitle: Nullable<string>;\n\n /** the associated ids for the input aria-labelledby field */\n @Input()\n ariaLabelledBy: Nullable<string>;\n\n /** aria-label for the input field */\n @Input()\n ariaLabel: Nullable<string>;\n\n /** Event emitted when the add-on button is clicked. */\n @Output()\n addOnButtonClicked = new EventEmitter<Event>();\n\n /**\n * Event emitted when the native clear button is clicked, or when native search is executed.\n * Works only for native search for input[type=\"search\"]\n */\n // eslint-disable-next-line @angular-eslint/no-output-native\n @Output() search = new EventEmitter<Event>();\n\n /** @hidden */\n @ContentChild(InputGroupInputDirective)\n inputElement: InputGroupInputDirective;\n\n /** @hidden */\n @ViewChild(InputGroupInputDirective)\n localInputElement: InputGroupInputDirective;\n\n /** @hidden */\n @ContentChild(InputGroupAddOnDirective)\n addOnElement: InputGroupAddOnDirective;\n\n /** @hidden */\n @ViewChild(InputGroupAddonButtonDirective, { static: false, read: ElementRef })\n private readonly _localButtonElement: ElementRef;\n\n /** @hidden */\n _inputTextValue: string;\n\n /** @hidden */\n _inputId = `fd-input-group-input-id-${addOnInputRandomId++}`;\n\n /** @hidden */\n _addOnNonButtonId = `fd-input-group-non-button-id-${addOnNonButtonRandomId++}`;\n\n /** @hidden */\n _addOnButtonId = `fd-input-group-button-id-${addOnButtonRandomId++}`;\n\n /** @hidden */\n _inputFocused$: Observable<boolean>;\n\n /**\n * Whether the input group is in the shellbar. Only for internal use by combobox component.\n * @hidden\n */\n inShellbar = false;\n\n /** An RxJS Subject that will kill the stream upon component’s destruction (for unsubscribing) */\n private readonly _destroyRef = inject(DestroyRef);\n\n /** Value of the text input. */\n set inputText(value) {\n this._cva.setValue(value, true);\n this._cva.onTouched();\n }\n\n get inputText(): string {\n return this._cva.value;\n }\n /** @hidden\n * Calculate the correct ids for input aria-labelledby\n */\n get _inputAriaLabelledBy(): string {\n let ariaLabelledByIds = this.ariaLabelledBy ? this.ariaLabelledBy + ' ' : '';\n\n if (!this.button) {\n ariaLabelledByIds += this._addOnNonButtonId;\n }\n\n return ariaLabelledByIds;\n }\n\n /** @hidden */\n constructor(\n readonly _cvaControl: CvaControl<string | number>,\n readonly elementRef: ElementRef,\n private readonly _changeDetectorRef: ChangeDetectorRef,\n private _contentDensityObserver: ContentDensityObserver,\n private readonly _cva: CvaDirective\n ) {\n this._contentDensityObserver.subscribe();\n }\n\n /** @hidden */\n @HostListener('focusout', ['$event'])\n protected _focusOut(event: FocusEvent): void {\n if (!this.elementRef.nativeElement.contains(event.relatedTarget)) {\n this._cva.onTouched();\n }\n }\n\n /** @hidden */\n ngOnInit(): void {\n this._cvaControl.listenToChanges();\n }\n\n /** @hidden */\n ngAfterViewInit(): void {\n this._listenInputFocus();\n }\n\n /** @hidden */\n setDisabledState(isDisabled: boolean): void {\n this._cva.disabled = isDisabled;\n\n this._changeDetectorRef.detectChanges();\n }\n\n /** @hidden */\n setInShellbar(value: boolean): void {\n this.inShellbar = value;\n\n this._changeDetectorRef.detectChanges();\n }\n\n /** @hidden */\n _buttonClicked(event: Event): void {\n this.addOnButtonClicked.emit(event);\n }\n\n /** @hidden */\n _onSearchEvent(event: Event): void {\n this.search.emit(event);\n }\n\n /** @hidden */\n _preventFocus(event: MouseEvent): void {\n if (!this.buttonFocusable) {\n event.preventDefault();\n }\n }\n\n /** @hidden */\n private _listenInputFocus(): void {\n const inputElement =\n this.inputElement?.elementRef?.nativeElement || this.localInputElement?.elementRef?.nativeElement;\n\n if (!inputElement) {\n return;\n }\n\n const focusEvents = [\n fromEvent(inputElement, 'focusin').pipe(map(() => true)),\n fromEvent(inputElement, 'focusout').pipe(map(() => false))\n ];\n\n if (this._localButtonElement) {\n focusEvents.push(\n fromEvent(this._localButtonElement.nativeElement, 'mousedown').pipe(map(() => !this.buttonFocusable))\n );\n }\n\n this._inputFocused$ = merge(...focusEvents).pipe(\n // debounceTime is needed in order to filter subsequent focus-blur events, that happen simultaneously\n debounceTime(10),\n filter(() => this.showFocus),\n takeUntilDestroyed(this._destroyRef)\n );\n\n this._changeDetectorRef.markForCheck();\n }\n}\n","<div\n class=\"fd-input-group\"\n [class.fd-input-group--inline]=\"inline\"\n [class.is-disabled]=\"_cvaControl.cvaDirective?.disabled\"\n [class.is-readonly]=\"_cvaControl.cvaDirective?.readonly\"\n [class.fd-shellbar__input-group]=\"inShellbar\"\n [class.fd-input-group--control]=\"isControl\"\n [class.is-focus]=\"_inputFocused$ | async\"\n [class]=\"_cvaControl.cvaDirective?.state ? 'is-' + _cvaControl.cvaDirective.state : ' '\"\n>\n @if (placement === 'after' && !inputElement) {\n <ng-template [ngTemplateOutlet]=\"input\"></ng-template>\n }\n <ng-content></ng-content>\n @if (!addOnElement && (glyph || addOnText)) {\n @if (button) {\n <span\n fd-input-group-addon\n [button]=\"true\"\n [placement]=\"placement\"\n [class.fd-shellbar__input-group-addon]=\"inShellbar\"\n >\n <button\n fd-button\n fdInputGroupAddonButton\n type=\"button\"\n [attr.aria-hidden]=\"addonButtonAriaHidden\"\n [fdType]=\"inShellbar ? 'standard' : 'transparent'\"\n [id]=\"_addOnButtonId\"\n [attr.tabindex]=\"buttonFocusable ? 0 : -1\"\n [glyph]=\"glyph\"\n [glyphFont]=\"glyphFont\"\n [class.fd-shellbar__button]=\"inShellbar\"\n [class.is-expanded]=\"isExpanded\"\n [attr.aria-haspopup]=\"isControl\"\n [attr.aria-expanded]=\"inShellbar ? isExpanded : null\"\n [ariaLabel]=\"glyphAriaLabel || glyph || addOnText\"\n [attr.aria-controls]=\"_inputId\"\n [disabled]=\"_cvaControl.cvaDirective?.disabled\"\n (mousedown)=\"_preventFocus($event)\"\n (keydown.enter)=\"$event.preventDefault()\"\n (keyup.enter)=\"_buttonClicked($event)\"\n (click)=\"_buttonClicked($event)\"\n >\n @if (!glyph) {\n {{ addOnText }}\n }\n </button>\n </span>\n } @else {\n <span\n fd-input-group-addon\n [id]=\"_addOnNonButtonId\"\n [placement]=\"placement\"\n [attr.aria-label]=\"glyphAriaLabel || glyph || addOnText\"\n >\n @if (!glyph) {\n {{ addOnText }}\n } @else {\n <fd-icon [glyph]=\"glyph\" [font]=\"glyphFont\"></fd-icon>\n }\n </span>\n }\n }\n @if (placement === 'before' && !inputElement) {\n <ng-template [ngTemplateOutlet]=\"input\"></ng-template>\n }\n</div>\n<ng-template #input>\n <input\n [(ngModel)]=\"inputText\"\n [id]=\"_inputId\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-labelledby]=\"ariaLabel ? null : _inputAriaLabelledBy\"\n [class.fd-shellbar__input-group-input]=\"inShellbar\"\n fd-input-group-input\n [type]=\"type\"\n [class.is-disabled]=\"!!_cvaControl.cvaDirective?.disabled\"\n [disabled]=\"!!_cvaControl.cvaDirective?.disabled\"\n [readonly]=\"_cvaControl.cvaDirective?.readonly\"\n [attr.placeholder]=\"_cvaControl.cvaDirective?.placeholder || null\"\n [attr.aria-required]=\"required\"\n (search)=\"_onSearchEvent($event)\"\n />\n</ng-template>\n","import { NgModule } from '@angular/core';\n\nimport {\n InputGroupAddonButtonDirective,\n InputGroupAddOnDirective,\n InputGroupInputDirective,\n InputGroupTextareaDirective\n} from './input-group-directives';\nimport { InputGroupComponent } from './input-group.component';\n\nconst components = [\n InputGroupComponent,\n InputGroupInputDirective,\n InputGroupTextareaDirective,\n InputGroupAddOnDirective,\n InputGroupAddonButtonDirective\n];\n\n/**\n * @deprecated\n * Use direct imports of components and directives.\n */\n@NgModule({\n imports: [...components],\n exports: [...components]\n})\nexport class InputGroupModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i2"],"mappings":"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"}
1
+ {"version":3,"file":"fundamental-ngx-core-input-group.mjs","sources":["../../../../libs/core/input-group/input-group-directives.ts","../../../../libs/core/input-group/input-group.component.ts","../../../../libs/core/input-group/input-group.component.html","../../../../libs/core/input-group/input-group.module.ts","../../../../libs/core/input-group/fundamental-ngx-core-input-group.ts"],"sourcesContent":["import {\n AfterContentInit,\n Directive,\n ElementRef,\n HostBinding,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Renderer2\n} from '@angular/core';\nimport { FormStates } from '@fundamental-ngx/cdk/forms';\nimport { CssClassBuilder, applyCssClass } from '@fundamental-ngx/cdk/utils';\nimport { ContentDensityObserver, contentDensityObserverProviders } from '@fundamental-ngx/core/content-density';\nimport { Subscription } from 'rxjs';\nimport { InputGroupPlacement } from './types';\n\n@Directive({\n selector: '[fdInputGroupInput], [fd-input-group-input]',\n providers: [contentDensityObserverProviders()],\n standalone: true\n})\nexport class InputGroupInputDirective implements CssClassBuilder, OnInit, OnChanges, OnDestroy {\n /** user's custom classes */\n @Input()\n class: string;\n\n /** @hidden */\n private _subscriptions = new Subscription();\n\n /** @hidden */\n constructor(\n public readonly elementRef: ElementRef,\n _contentDensityObserver: ContentDensityObserver\n ) {\n _contentDensityObserver.subscribe();\n }\n\n /** @hidden\n * CssClassBuilder interface implementation\n * function must return single string\n * function is responsible for order which css classes are applied\n */\n @applyCssClass\n buildComponentCssClass(): string[] {\n return ['fd-input', 'fd-input-group__input'];\n }\n\n /** @hidden */\n ngOnInit(): void {\n this.buildComponentCssClass();\n }\n\n /** @hidden */\n ngOnChanges(): void {\n this.buildComponentCssClass();\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n }\n}\n\n@Directive({\n selector: '[fdTextareaGroupInput], [fd-textarea-group-input]',\n standalone: true\n})\nexport class InputGroupTextareaDirective {}\n\n@Directive({\n selector: '[fdInputGroupAddon], [fd-input-group-addon]',\n providers: [contentDensityObserverProviders()],\n standalone: true\n})\nexport class InputGroupAddOnDirective implements OnInit, OnChanges, CssClassBuilder, AfterContentInit, OnDestroy {\n /** user's custom classes */\n @Input()\n class: string;\n\n /** @hidden */\n @HostBinding('class.fd-input-group__addon')\n fdInputGroupAddonClass = true;\n\n /**\n * The placement of the add-on. Options include *before* and *after*\n */\n @Input()\n placement: InputGroupPlacement = 'after';\n\n /**\n * The placement of the add-on. Options include *before* and *after*\n */\n @Input()\n type: string;\n\n /**\n * The state of the form control - applies css classes.\n * Can be `success`, `error`, `warning`, `information` or blank for default.\n */\n @Input()\n state?: FormStates;\n\n /**\n * Whether the icon add-on or the text add-on is a button.\n */\n @Input()\n button = false;\n\n /** @hidden */\n private _subscriptions = new Subscription();\n\n /** @hidden */\n constructor(\n public readonly elementRef: ElementRef,\n private readonly renderer: Renderer2,\n _contentDensityObserver: ContentDensityObserver\n ) {\n _contentDensityObserver.subscribe();\n }\n\n /** @hidden\n * CssClassBuilder interface implementation\n * function must return single string\n * function is responsible for order which css classes are applied\n */\n @applyCssClass\n buildComponentCssClass(): string[] {\n return [\n 'fd-input-group__addon',\n this.button ? 'fd-input-group__addon--button' : '',\n this.type ? 'fd-input-group__addon--' + this.type : '',\n this.state ? 'is-' + this.state : ''\n ];\n }\n\n /** @hidden */\n ngOnInit(): void {\n this.buildComponentCssClass();\n }\n\n /** @hidden */\n ngOnChanges(): void {\n this.buildComponentCssClass();\n }\n\n /** @hidden */\n ngAfterContentInit(): void {\n /** Add fd-input-group__button to button child element */\n const button = this.elementRef.nativeElement.querySelector('button');\n if (button) {\n this.renderer.addClass(button, 'fd-input-group__button');\n }\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n }\n}\n\n@Directive({\n selector: '[fdInputGroupAddonButton], [fd-input-group-addon-button]',\n host: {\n class: 'fd-input-group__button'\n },\n standalone: true\n})\nexport class InputGroupAddonButtonDirective {}\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChild,\n DestroyRef,\n ElementRef,\n EventEmitter,\n HostListener,\n inject,\n Input,\n OnInit,\n Output,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { ContentDensityObserver, contentDensityObserverProviders } from '@fundamental-ngx/core/content-density';\nimport { debounceTime, filter, fromEvent, map, merge, Observable } from 'rxjs';\n\nimport { Nullable } from '@fundamental-ngx/cdk/utils';\nimport { FormItemControl, registerFormItemControl } from '@fundamental-ngx/core/form';\n\nimport { AsyncPipe, NgTemplateOutlet } from '@angular/common';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { CvaControl, CvaDirective, FD_FORM_FIELD_CONTROL } from '@fundamental-ngx/cdk/forms';\nimport { ButtonComponent } from '@fundamental-ngx/core/button';\nimport { FD_DEFAULT_ICON_FONT_FAMILY, IconComponent, IconFont } from '@fundamental-ngx/core/icon';\nimport {\n InputGroupAddonButtonDirective,\n InputGroupAddOnDirective,\n InputGroupInputDirective\n} from './input-group-directives';\nimport { InputGroupPlacement } from './types';\n\nlet addOnNonButtonRandomId = 0;\nlet addOnButtonRandomId = 0;\nlet addOnInputRandomId = 0;\n\n/**\n * The component that represents an input group.\n * The input group includes form inputs with add-ons that allow the user to better understand the information being entered.\n *\n * ```html\n * <fd-input-group placement=\"after\" addOnText=\"$\" placeholder=\"Amount\">\n * </fd-input-group>\n * ```\n */\n@Component({\n selector: 'fd-input-group',\n templateUrl: './input-group.component.html',\n styleUrl: './input-group.component.scss',\n hostDirectives: [\n {\n directive: CvaDirective,\n inputs: ['placeholder', 'disabled', 'readonly', 'state', 'name', 'stateMessage', 'type']\n }\n ],\n providers: [\n CvaControl,\n { provide: FD_FORM_FIELD_CONTROL, useExisting: InputGroupComponent, multi: true },\n contentDensityObserverProviders(),\n registerFormItemControl(InputGroupComponent)\n ],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n NgTemplateOutlet,\n InputGroupAddOnDirective,\n ButtonComponent,\n InputGroupAddonButtonDirective,\n FormsModule,\n InputGroupInputDirective,\n AsyncPipe,\n IconComponent\n ]\n})\nexport class InputGroupComponent implements AfterViewInit, FormItemControl, OnInit {\n /**\n * The placement of the add-on.\n * Options include *before* and *after*\n */\n @Input()\n placement: InputGroupPlacement = 'after';\n\n /** If it is mandatory field */\n @Input()\n required = false;\n\n /** Whether the input group is inline. */\n @Input()\n inline = false;\n\n /** The text for the add-on. */\n @Input()\n addOnText: string;\n\n /** Whether AddOn Button should be focusable */\n @Input()\n buttonFocusable = true;\n\n /** The type of the input, used in Input Group. By default, value is set to 'text' */\n @Input()\n type = 'text';\n\n /** The icon value for the add-on. */\n @Input()\n glyph: Nullable<string>;\n\n /** Glyph font family */\n @Input()\n glyphFont: IconFont = FD_DEFAULT_ICON_FONT_FAMILY;\n\n /** Whether the icon add-on or the text add-on is a button. */\n @Input()\n button: boolean;\n\n /**\n * Whether the input group is a popover control\n */\n @Input()\n isControl = false;\n\n /**\n * Whether should show focus outline\n */\n @Input()\n showFocus = true;\n\n /** @hidden */\n @Input()\n isExpanded = false;\n\n /** Label applied to button with glyph element. */\n @Input()\n glyphAriaLabel: Nullable<string>;\n\n /**\n * Whether the input group addon button should be aria-hidden\n * Useful in cases when the title is already applied on the\n * input group parent component\n **/\n @Input()\n addonButtonAriaHidden: Nullable<boolean>;\n\n /** @deprecated Title attributes are being removed from the library. */\n @Input()\n iconTitle: Nullable<string>;\n\n /** the associated ids for the input aria-labelledby field */\n @Input()\n ariaLabelledBy: Nullable<string>;\n\n /** aria-label for the input field */\n @Input()\n ariaLabel: Nullable<string>;\n\n /** Event emitted when the add-on button is clicked. */\n @Output()\n addOnButtonClicked = new EventEmitter<Event>();\n\n /**\n * Event emitted when the native clear button is clicked, or when native search is executed.\n * Works only for native search for input[type=\"search\"]\n */\n // eslint-disable-next-line @angular-eslint/no-output-native\n @Output() search = new EventEmitter<Event>();\n\n /** @hidden */\n @ContentChild(InputGroupInputDirective)\n inputElement: InputGroupInputDirective;\n\n /** @hidden */\n @ViewChild(InputGroupInputDirective)\n localInputElement: InputGroupInputDirective;\n\n /** @hidden */\n @ContentChild(InputGroupAddOnDirective)\n addOnElement: InputGroupAddOnDirective;\n\n /** @hidden */\n @ViewChild(InputGroupAddonButtonDirective, { static: false, read: ElementRef })\n private readonly _localButtonElement: ElementRef;\n\n /** @hidden */\n _inputTextValue: string;\n\n /** @hidden */\n _inputId = `fd-input-group-input-id-${addOnInputRandomId++}`;\n\n /** @hidden */\n _addOnNonButtonId = `fd-input-group-non-button-id-${addOnNonButtonRandomId++}`;\n\n /** @hidden */\n _addOnButtonId = `fd-input-group-button-id-${addOnButtonRandomId++}`;\n\n /** @hidden */\n _inputFocused$: Observable<boolean>;\n\n /**\n * Whether the input group is in the shellbar. Only for internal use by combobox component.\n * @hidden\n */\n inShellbar = false;\n\n /** An RxJS Subject that will kill the stream upon component’s destruction (for unsubscribing) */\n private readonly _destroyRef = inject(DestroyRef);\n\n /** Value of the text input. */\n set inputText(value) {\n this._cva.setValue(value, true);\n this._cva.onTouched();\n }\n\n get inputText(): string {\n return this._cva.value;\n }\n /** @hidden\n * Calculate the correct ids for input aria-labelledby\n */\n get _inputAriaLabelledBy(): string {\n let ariaLabelledByIds = this.ariaLabelledBy ? this.ariaLabelledBy + ' ' : '';\n\n if (!this.button) {\n ariaLabelledByIds += this._addOnNonButtonId;\n }\n\n return ariaLabelledByIds;\n }\n\n /** @hidden */\n constructor(\n readonly _cvaControl: CvaControl<string | number>,\n readonly elementRef: ElementRef,\n private readonly _changeDetectorRef: ChangeDetectorRef,\n private _contentDensityObserver: ContentDensityObserver,\n private readonly _cva: CvaDirective\n ) {\n this._contentDensityObserver.subscribe();\n }\n\n /** @hidden */\n @HostListener('focusout', ['$event'])\n protected _focusOut(event: FocusEvent): void {\n if (!this.elementRef.nativeElement.contains(event.relatedTarget)) {\n this._cva.onTouched();\n }\n }\n\n /** @hidden */\n ngOnInit(): void {\n this._cvaControl.listenToChanges();\n }\n\n /** @hidden */\n ngAfterViewInit(): void {\n this._listenInputFocus();\n }\n\n /** @hidden */\n setDisabledState(isDisabled: boolean): void {\n this._cva.disabled = isDisabled;\n\n this._changeDetectorRef.detectChanges();\n }\n\n /** @hidden */\n setInShellbar(value: boolean): void {\n this.inShellbar = value;\n\n this._changeDetectorRef.detectChanges();\n }\n\n /** @hidden */\n _buttonClicked(event: Event): void {\n this.addOnButtonClicked.emit(event);\n }\n\n /** @hidden */\n _onSearchEvent(event: Event): void {\n this.search.emit(event);\n }\n\n /** @hidden */\n _preventFocus(event: MouseEvent): void {\n if (!this.buttonFocusable) {\n event.preventDefault();\n }\n }\n\n /** @hidden */\n private _listenInputFocus(): void {\n const inputElement =\n this.inputElement?.elementRef?.nativeElement || this.localInputElement?.elementRef?.nativeElement;\n\n if (!inputElement) {\n return;\n }\n\n const focusEvents = [\n fromEvent(inputElement, 'focusin').pipe(map(() => true)),\n fromEvent(inputElement, 'focusout').pipe(map(() => false))\n ];\n\n if (this._localButtonElement) {\n focusEvents.push(\n fromEvent(this._localButtonElement.nativeElement, 'mousedown').pipe(map(() => !this.buttonFocusable))\n );\n }\n\n this._inputFocused$ = merge(...focusEvents).pipe(\n // debounceTime is needed in order to filter subsequent focus-blur events, that happen simultaneously\n debounceTime(10),\n filter(() => this.showFocus),\n takeUntilDestroyed(this._destroyRef)\n );\n\n this._changeDetectorRef.markForCheck();\n }\n}\n","<div\n class=\"fd-input-group\"\n [class.fd-input-group--inline]=\"inline\"\n [class.is-disabled]=\"_cvaControl.cvaDirective?.disabled\"\n [class.is-readonly]=\"_cvaControl.cvaDirective?.readonly\"\n [class.fd-shellbar__input-group]=\"inShellbar\"\n [class.fd-input-group--control]=\"isControl\"\n [class.is-focus]=\"_inputFocused$ | async\"\n [class]=\"_cvaControl.cvaDirective?.state ? 'is-' + _cvaControl.cvaDirective.state : ' '\"\n>\n @if (placement === 'after' && !inputElement) {\n <ng-template [ngTemplateOutlet]=\"input\"></ng-template>\n }\n <ng-content></ng-content>\n @if (!addOnElement && (glyph || addOnText)) {\n @if (button) {\n <span\n fd-input-group-addon\n [button]=\"true\"\n [placement]=\"placement\"\n [class.fd-shellbar__input-group-addon]=\"inShellbar\"\n >\n <button\n fd-button\n fdInputGroupAddonButton\n type=\"button\"\n [attr.aria-hidden]=\"addonButtonAriaHidden\"\n [fdType]=\"inShellbar ? 'standard' : 'transparent'\"\n [id]=\"_addOnButtonId\"\n [attr.tabindex]=\"buttonFocusable ? 0 : -1\"\n [glyph]=\"glyph\"\n [glyphFont]=\"glyphFont\"\n [class.fd-shellbar__button]=\"inShellbar\"\n [class.is-expanded]=\"isExpanded\"\n [attr.aria-haspopup]=\"isControl\"\n [attr.aria-expanded]=\"inShellbar ? isExpanded : null\"\n [ariaLabel]=\"glyphAriaLabel || glyph || addOnText\"\n [attr.aria-controls]=\"_inputId\"\n [disabled]=\"_cvaControl.cvaDirective?.disabled\"\n (mousedown)=\"_preventFocus($event)\"\n (keydown.enter)=\"$event.preventDefault()\"\n (keyup.enter)=\"_buttonClicked($event)\"\n (click)=\"_buttonClicked($event)\"\n >\n @if (!glyph) {\n {{ addOnText }}\n }\n </button>\n </span>\n } @else {\n <span fd-input-group-addon [id]=\"_addOnNonButtonId\" [placement]=\"placement\">\n @if (!glyph) {\n {{ addOnText }}\n } @else {\n <fd-icon [glyph]=\"glyph\" [font]=\"glyphFont\" [ariaLabel]=\"glyphAriaLabel || glyph\"></fd-icon>\n }\n </span>\n }\n }\n @if (placement === 'before' && !inputElement) {\n <ng-template [ngTemplateOutlet]=\"input\"></ng-template>\n }\n</div>\n<ng-template #input>\n <input\n [(ngModel)]=\"inputText\"\n [id]=\"_inputId\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-labelledby]=\"ariaLabel ? null : _inputAriaLabelledBy\"\n [class.fd-shellbar__input-group-input]=\"inShellbar\"\n fd-input-group-input\n [type]=\"type\"\n [class.is-disabled]=\"!!_cvaControl.cvaDirective?.disabled\"\n [disabled]=\"!!_cvaControl.cvaDirective?.disabled\"\n [readonly]=\"_cvaControl.cvaDirective?.readonly\"\n [attr.placeholder]=\"_cvaControl.cvaDirective?.placeholder || null\"\n [attr.aria-required]=\"required\"\n (search)=\"_onSearchEvent($event)\"\n />\n</ng-template>\n","import { NgModule } from '@angular/core';\n\nimport {\n InputGroupAddonButtonDirective,\n InputGroupAddOnDirective,\n InputGroupInputDirective,\n InputGroupTextareaDirective\n} from './input-group-directives';\nimport { InputGroupComponent } from './input-group.component';\n\nconst components = [\n InputGroupComponent,\n InputGroupInputDirective,\n InputGroupTextareaDirective,\n InputGroupAddOnDirective,\n InputGroupAddonButtonDirective\n];\n\n/**\n * @deprecated\n * Use direct imports of components and directives.\n */\n@NgModule({\n imports: [...components],\n exports: [...components]\n})\nexport class InputGroupModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i2"],"mappings":"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"}
@@ -704,7 +704,13 @@ class ListItemComponent extends ListFocusItem {
704
704
  /** Handler for mouse events */
705
705
  onClick(event) {
706
706
  if (!this.preventClick) {
707
- this._clicked$.next(event);
707
+ const target = event.target;
708
+ // Don't emit _clicked$ if user clicked on an interactive element
709
+ // This prevents the list from stealing focus from buttons/inputs/etc inside list items
710
+ const clickedInteractiveElement = this._isInteractiveElement(target);
711
+ if (!clickedInteractiveElement) {
712
+ this._clicked$.next(event);
713
+ }
708
714
  if (this.checkbox && !this.checkbox.disabled && !this.link) {
709
715
  if (!this.checkbox.elementRef.nativeElement.contains(event.target)) {
710
716
  // clicking on the checkbox is not suppressed
@@ -756,6 +762,22 @@ class ListItemComponent extends ListFocusItem {
756
762
  event.stopPropagation();
757
763
  event.preventDefault();
758
764
  }
765
+ /**
766
+ * Checks if an element or any of its ancestors (up to this list item) is an interactive element.
767
+ * Interactive elements are those that can receive focus and handle user interaction.
768
+ * @hidden
769
+ */
770
+ _isInteractiveElement(element) {
771
+ // Check if the element itself or any parent (up to this element) is an interactive element
772
+ // We exclude elements with [fd-list-item] or [fdListItem] attributes because the list item
773
+ // itself has tabindex for roving tabindex functionality, but shouldn't block click handling
774
+ const interactiveElement = element.closest('button, a, input, textarea, select, [tabindex]:not([fd-list-item]):not([fdListItem])');
775
+ if (!interactiveElement) {
776
+ return false;
777
+ }
778
+ // Also verify the interactive element is inside this list item (not the list item itself)
779
+ return this.elementRef.nativeElement.contains(interactiveElement);
780
+ }
759
781
  /** @hidden Reads checked state from embedded checkbox/radio and writes it to `selected`. */
760
782
  _syncSelectionFromControl() {
761
783
  if (this.checkbox) {