igniteui-angular 22.1.0-beta.6 → 22.1.0-beta.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (107) hide show
  1. package/fesm2022/igniteui-angular-accordion.mjs +4 -4
  2. package/fesm2022/igniteui-angular-accordion.mjs.map +1 -1
  3. package/fesm2022/igniteui-angular-action-strip.mjs +0 -1
  4. package/fesm2022/igniteui-angular-action-strip.mjs.map +1 -1
  5. package/fesm2022/igniteui-angular-avatar.mjs.map +1 -1
  6. package/fesm2022/igniteui-angular-badge.mjs +0 -1
  7. package/fesm2022/igniteui-angular-badge.mjs.map +1 -1
  8. package/fesm2022/igniteui-angular-banner.mjs +2 -2
  9. package/fesm2022/igniteui-angular-banner.mjs.map +1 -1
  10. package/fesm2022/igniteui-angular-button-group.mjs.map +1 -1
  11. package/fesm2022/igniteui-angular-calendar.mjs +4 -5
  12. package/fesm2022/igniteui-angular-calendar.mjs.map +1 -1
  13. package/fesm2022/igniteui-angular-card.mjs.map +1 -1
  14. package/fesm2022/igniteui-angular-carousel.mjs.map +1 -1
  15. package/fesm2022/igniteui-angular-chips.mjs.map +1 -1
  16. package/fesm2022/igniteui-angular-combo.mjs +17 -6
  17. package/fesm2022/igniteui-angular-combo.mjs.map +1 -1
  18. package/fesm2022/igniteui-angular-core.mjs +16 -337
  19. package/fesm2022/igniteui-angular-core.mjs.map +1 -1
  20. package/fesm2022/igniteui-angular-date-picker.mjs +12 -14
  21. package/fesm2022/igniteui-angular-date-picker.mjs.map +1 -1
  22. package/fesm2022/igniteui-angular-dialog.mjs +1 -1
  23. package/fesm2022/igniteui-angular-dialog.mjs.map +1 -1
  24. package/fesm2022/igniteui-angular-directives.mjs +45 -47
  25. package/fesm2022/igniteui-angular-directives.mjs.map +1 -1
  26. package/fesm2022/igniteui-angular-drop-down.mjs +3 -2
  27. package/fesm2022/igniteui-angular-drop-down.mjs.map +1 -1
  28. package/fesm2022/igniteui-angular-expansion-panel.mjs +23 -12
  29. package/fesm2022/igniteui-angular-expansion-panel.mjs.map +1 -1
  30. package/fesm2022/igniteui-angular-grids-core.mjs +484 -202
  31. package/fesm2022/igniteui-angular-grids-core.mjs.map +1 -1
  32. package/fesm2022/igniteui-angular-grids-grid.mjs +115 -94
  33. package/fesm2022/igniteui-angular-grids-grid.mjs.map +1 -1
  34. package/fesm2022/igniteui-angular-grids-hierarchical-grid.mjs +15 -19
  35. package/fesm2022/igniteui-angular-grids-hierarchical-grid.mjs.map +1 -1
  36. package/fesm2022/igniteui-angular-grids-lite.mjs.map +1 -1
  37. package/fesm2022/igniteui-angular-grids-pivot-grid.mjs +75 -153
  38. package/fesm2022/igniteui-angular-grids-pivot-grid.mjs.map +1 -1
  39. package/fesm2022/igniteui-angular-grids-tree-grid.mjs +28 -35
  40. package/fesm2022/igniteui-angular-grids-tree-grid.mjs.map +1 -1
  41. package/fesm2022/igniteui-angular-icon.mjs.map +1 -1
  42. package/fesm2022/igniteui-angular-input-group.mjs +1 -1
  43. package/fesm2022/igniteui-angular-input-group.mjs.map +1 -1
  44. package/fesm2022/igniteui-angular-list.mjs.map +1 -1
  45. package/fesm2022/igniteui-angular-navbar.mjs.map +1 -1
  46. package/fesm2022/igniteui-angular-navigation-drawer.mjs +2 -3
  47. package/fesm2022/igniteui-angular-navigation-drawer.mjs.map +1 -1
  48. package/fesm2022/igniteui-angular-paginator.mjs.map +1 -1
  49. package/fesm2022/igniteui-angular-progressbar.mjs +5 -2
  50. package/fesm2022/igniteui-angular-progressbar.mjs.map +1 -1
  51. package/fesm2022/igniteui-angular-query-builder.mjs +18 -19
  52. package/fesm2022/igniteui-angular-query-builder.mjs.map +1 -1
  53. package/fesm2022/igniteui-angular-radio.mjs +1 -1
  54. package/fesm2022/igniteui-angular-radio.mjs.map +1 -1
  55. package/fesm2022/igniteui-angular-select.mjs.map +1 -1
  56. package/fesm2022/igniteui-angular-simple-combo.mjs +10 -7
  57. package/fesm2022/igniteui-angular-simple-combo.mjs.map +1 -1
  58. package/fesm2022/igniteui-angular-slider.mjs +3 -3
  59. package/fesm2022/igniteui-angular-slider.mjs.map +1 -1
  60. package/fesm2022/igniteui-angular-splitter.mjs +1 -1
  61. package/fesm2022/igniteui-angular-splitter.mjs.map +1 -1
  62. package/fesm2022/igniteui-angular-stepper.mjs +1 -1
  63. package/fesm2022/igniteui-angular-stepper.mjs.map +1 -1
  64. package/fesm2022/igniteui-angular-tabs.mjs.map +1 -1
  65. package/fesm2022/igniteui-angular-time-picker.mjs +3 -6
  66. package/fesm2022/igniteui-angular-time-picker.mjs.map +1 -1
  67. package/fesm2022/igniteui-angular-tree.mjs +8 -10
  68. package/fesm2022/igniteui-angular-tree.mjs.map +1 -1
  69. package/migrations/migration-collection.json +0 -7
  70. package/package.json +1 -1
  71. package/types/igniteui-angular-avatar.d.ts +1 -1
  72. package/types/igniteui-angular-banner.d.ts +3 -3
  73. package/types/igniteui-angular-calendar.d.ts +9 -9
  74. package/types/igniteui-angular-card.d.ts +1 -1
  75. package/types/igniteui-angular-carousel.d.ts +9 -9
  76. package/types/igniteui-angular-chat.d.ts +1 -1
  77. package/types/igniteui-angular-chips.d.ts +5 -5
  78. package/types/igniteui-angular-combo.d.ts +17 -13
  79. package/types/igniteui-angular-core.d.ts +200 -495
  80. package/types/igniteui-angular-date-picker.d.ts +3 -3
  81. package/types/igniteui-angular-dialog.d.ts +4 -4
  82. package/types/igniteui-angular-directives.d.ts +60 -59
  83. package/types/igniteui-angular-drop-down.d.ts +16 -16
  84. package/types/igniteui-angular-expansion-panel.d.ts +6 -6
  85. package/types/igniteui-angular-grids-core.d.ts +1053 -791
  86. package/types/igniteui-angular-grids-grid.d.ts +104 -267
  87. package/types/igniteui-angular-grids-hierarchical-grid.d.ts +68 -547
  88. package/types/igniteui-angular-grids-lite.d.ts +7 -7
  89. package/types/igniteui-angular-grids-pivot-grid.d.ts +94 -129
  90. package/types/igniteui-angular-grids-tree-grid.d.ts +5 -51
  91. package/types/igniteui-angular-icon.d.ts +2 -2
  92. package/types/igniteui-angular-input-group.d.ts +4 -4
  93. package/types/igniteui-angular-list.d.ts +4 -4
  94. package/types/igniteui-angular-navigation-drawer.d.ts +3 -3
  95. package/types/igniteui-angular-progressbar.d.ts +1 -0
  96. package/types/igniteui-angular-query-builder.d.ts +9 -9
  97. package/types/igniteui-angular-radio.d.ts +1 -1
  98. package/types/igniteui-angular-select.d.ts +5 -5
  99. package/types/igniteui-angular-simple-combo.d.ts +2 -2
  100. package/types/igniteui-angular-slider.d.ts +4 -4
  101. package/types/igniteui-angular-splitter.d.ts +3 -3
  102. package/types/igniteui-angular-time-picker.d.ts +8 -8
  103. package/types/igniteui-angular-tree.d.ts +8 -8
  104. package/migrations/update-22_1_0_import-migration/index.d.ts +0 -2
  105. package/migrations/update-22_1_0_import-migration/index.js +0 -228
  106. package/migrations/update-22_1_0_import-migration/index.spec.d.ts +0 -1
  107. package/migrations/update-22_1_0_import-migration/index.spec.js +0 -188
@@ -485,7 +485,7 @@ class IgxRadioGroupDirective {
485
485
  });
486
486
  this._selected = args.owner;
487
487
  this._value = args.value;
488
- if (this._isInitialized()) {
488
+ if (this._isInitialized) {
489
489
  this.change.emit(args);
490
490
  this._onChangeCallback(this.value);
491
491
  }
@@ -1 +1 @@
1
- {"version":3,"file":"igniteui-angular-radio.mjs","sources":["../../../projects/igniteui-angular/radio/src/radio/radio-group/radio-group.directive.ts","../../../projects/igniteui-angular/radio/src/radio/radio.component.ts","../../../projects/igniteui-angular/radio/src/radio/radio.component.html","../../../projects/igniteui-angular/radio/src/radio/radio-group/public_api.ts","../../../projects/igniteui-angular/radio/src/radio/radio-group/radio-group.module.ts","../../../projects/igniteui-angular/radio/src/igniteui-angular-radio.ts"],"sourcesContent":["import {\n ChangeDetectorRef,\n Directive,\n DoCheck,\n EventEmitter,\n HostBinding,\n HostListener,\n Input,\n OnDestroy,\n Output,\n QueryList,\n booleanAttribute,\n effect,\n signal,\n inject,\n ElementRef\n} from '@angular/core';\nimport { ControlValueAccessor, NgControl, Validators } from '@angular/forms';\nimport { fromEvent, noop, Subject, takeUntil } from 'rxjs';\nimport { IgxRadioComponent } from '../radio.component';\nimport { isLeftToRight } from 'igniteui-angular/core';\nimport { IChangeCheckboxEventArgs } from 'igniteui-angular/directives';\n/**\n * Determines the Radio Group alignment\n */\nexport const RadioGroupAlignment = {\n horizontal: 'horizontal',\n vertical: 'vertical'\n} as const;\nexport type RadioGroupAlignment = typeof RadioGroupAlignment[keyof typeof RadioGroupAlignment];\n\nlet nextId = 0;\n\n/**\n * Radio group directive renders set of radio buttons.\n *\n * @igxModule IgxRadioModule\n *\n * @igxTheme igx-radio-theme\n *\n * @igxKeywords radiogroup, radio, button, input\n *\n * @igxGroup Data Entry & Display\n *\n * @remarks\n * The Ignite UI Radio Group allows the user to select a single option from an available set of options that are listed side by side.\n *\n * @example:\n * ```html\n * <igx-radio-group name=\"radioGroup\">\n * <igx-radio *ngFor=\"let item of ['Foo', 'Bar', 'Baz']\" value=\"{{item}}\">\n * {{item}}\n * </igx-radio>\n * </igx-radio-group>\n * ```\n */\n@Directive({\n exportAs: 'igxRadioGroup',\n selector: '[igxRadioGroup],igx-radio-group',\n standalone: true\n})\nexport class IgxRadioGroupDirective implements ControlValueAccessor, OnDestroy, DoCheck {\n public ngControl = inject(NgControl, { optional: true, self: true });\n private cdr = inject(ChangeDetectorRef);\n private readonly _element = inject<ElementRef<HTMLElement>>(ElementRef);\n\n private _radioButtons = signal<IgxRadioComponent[]>([]);\n private _radioButtonsList = new QueryList<IgxRadioComponent>();\n\n /**\n * Returns reference to the child radio buttons.\n *\n * @example\n * ```typescript\n * let radioButtons = this.radioGroup.radioButtons;\n * ```\n */\n public get radioButtons(): QueryList<IgxRadioComponent> {\n this._radioButtonsList.reset(this._radioButtons());\n return this._radioButtonsList;\n }\n\n /**\n * Sets/gets the value attribute.\n *\n * @example\n * ```html\n * <igx-radio-group [value]=\"'radioButtonValue'\"></igx-radio-group>\n * ```\n */\n @Input()\n public get value(): any {\n return this._value;\n }\n\n public set value(newValue: any) {\n if (this._value !== newValue) {\n this._value = newValue;\n this._selectRadioButton();\n }\n }\n\n /**\n * Sets/gets the `name` attribute of the radio group component. All child radio buttons inherits this name.\n *\n * @example\n * ```html\n * <igx-radio-group name = \"Radio1\"></igx-radio-group>\n * ```\n */\n @Input()\n public get name(): string {\n return this._name;\n }\n\n public set name(newValue: string) {\n if (this._name !== newValue) {\n this._name = newValue;\n this._setRadioButtonNames();\n }\n }\n\n /**\n * Sets/gets whether the radio group is required.\n *\n * @remarks\n * If not set, `required` will have value `false`.\n *\n * @example\n * ```html\n * <igx-radio-group [required] = \"true\"></igx-radio-group>\n * ```\n */\n @Input({ transform: booleanAttribute })\n public get required(): boolean {\n return this._required;\n }\n\n public set required(value: boolean) {\n this._required = value;\n this._setRadioButtonsRequired();\n }\n\n /**\n * Sets/gets the selected child radio button.\n *\n * @example\n * ```typescript\n * let selectedButton = this.radioGroup.selected;\n * this.radioGroup.selected = selectedButton;\n * ```\n */\n @Input()\n public get selected() {\n return this._selected;\n }\n\n public set selected(selected: IgxRadioComponent | null) {\n if (this._selected !== selected) {\n this._selected = selected;\n this.value = selected ? selected.value : null;\n }\n }\n\n /**\n * Sets/gets whether the radio group is invalid.\n *\n * @remarks\n * If not set, `invalid` will have value `false`.\n *\n * @example\n * ```html\n * <igx-radio-group [invalid] = \"true\"></igx-radio-group>\n * ```\n */\n @Input({ transform: booleanAttribute })\n public get invalid(): boolean {\n return this._invalid;\n }\n\n public set invalid(value: boolean) {\n this._invalid = value;\n this._setRadioButtonsInvalid();\n }\n\n /**\n * An event that is emitted after the radio group value is changed.\n *\n * @remarks\n * Provides references to the selected radio and the value property as event arguments.\n *\n * @example\n * ```html\n * <igx-radio-group (change)=\"handler($event)\"></igx-radio-group>\n * ```\n */\n // eslint-disable-next-line @angular-eslint/no-output-native\n @Output() public readonly change: EventEmitter<IChangeCheckboxEventArgs> = new EventEmitter<IChangeCheckboxEventArgs>();\n\n /**\n * The css class applied to the component.\n *\n * @hidden\n * @internal\n */\n @HostBinding('class.igx-radio-group')\n public cssClass = 'igx-radio-group';\n\n /**\n * @hidden\n * @internal\n * Sets vertical alignment to the radio group, if `alignment` is set to `vertical`.\n * By default the alignment is horizontal.\n *\n * @example\n * ```html\n * <igx-radio-group alignment=\"vertical\"></igx-radio-group>\n * ```\n */\n @HostBinding('class.igx-radio-group--vertical')\n protected vertical = false;\n\n /**\n * A css class applied to the component if any of the\n * child radio buttons labelPosition is set to `before`.\n *\n * @hidden\n * @internal\n */\n @HostBinding('class.igx-radio-group--before')\n protected get labelBefore() {\n return this._radioButtons().some((radio) => radio.labelPosition === 'before');\n }\n\n /**\n * A css class applied to the component if all\n * child radio buttons are disabled.\n *\n * @hidden\n * @internal\n */\n @HostBinding('class.igx-radio-group--disabled')\n protected get disabled() {\n return this._radioButtons().every((radio) => radio.disabled);\n }\n\n @HostListener('click', ['$event'])\n protected handleClick(event: MouseEvent) {\n event.stopPropagation();\n\n if (this.selected) {\n this.selected.nativeElement.focus();\n }\n }\n\n @HostListener('keydown', ['$event'])\n protected handleKeyDown(event: KeyboardEvent) {\n const { key } = event;\n const buttons = this._radioButtons().filter(radio => !radio.disabled);\n const checked = buttons.find((radio) => radio.checked);\n\n if (['ArrowUp', 'ArrowDown', 'ArrowLeft', 'ArrowRight'].includes(key)) {\n let index = checked ? buttons.indexOf(checked) : -1;\n const ltr = isLeftToRight(this._element.nativeElement);\n\n switch (key) {\n case 'ArrowUp':\n index += -1;\n break;\n case 'ArrowLeft':\n index += ltr ? -1 : 1;\n break;\n case 'ArrowRight':\n index += ltr ? 1 : -1;\n break;\n default:\n index += 1;\n }\n\n if (index < 0) index = buttons.length - 1;\n if (index > buttons.length - 1) index = 0;\n\n buttons.forEach((radio) => {\n radio.deselect();\n radio.nativeElement.blur();\n });\n\n buttons[index].focused = true;\n buttons[index].nativeElement.focus();\n buttons[index].select();\n event.preventDefault();\n }\n\n if (event.key === \"Tab\") {\n buttons.forEach((radio) => {\n if (radio !== checked) {\n event.stopPropagation();\n }\n });\n }\n }\n\n /**\n * Returns the alignment of the `igx-radio-group`.\n * ```typescript\n * @ViewChild(\"MyRadioGroup\")\n * public radioGroup: IgxRadioGroupDirective;\n * ngAfterViewInit(){\n * let radioAlignment = this.radioGroup.alignment;\n * }\n * ```\n */\n @Input()\n public get alignment(): RadioGroupAlignment {\n return this.vertical ? RadioGroupAlignment.vertical : RadioGroupAlignment.horizontal;\n }\n /**\n * Allows you to set the radio group alignment.\n * Available options are `RadioGroupAlignment.horizontal` (default) and `RadioGroupAlignment.vertical`.\n * ```typescript\n * public alignment = RadioGroupAlignment.vertical;\n * //..\n * ```\n * ```html\n * <igx-radio-group [alignment]=\"alignment\"></igx-radio-group>\n * ```\n */\n public set alignment(value: RadioGroupAlignment) {\n this.vertical = value === RadioGroupAlignment.vertical;\n }\n\n /**\n * @hidden\n * @internal\n */\n private _onChangeCallback: (_: any) => void = noop;\n\n /**\n * @hidden\n * @internal\n */\n private _name = `igx-radio-group-${nextId++}`;\n\n /**\n * @hidden\n * @internal\n */\n private _value: any = null;\n\n /**\n * @hidden\n * @internal\n */\n private _selected: IgxRadioComponent | null = null;\n\n /**\n * @hidden\n * @internal\n */\n private _isInitialized = signal(false);\n\n /**\n * @hidden\n * @internal\n */\n private _required = false;\n\n /**\n * @hidden\n * @internal\n */\n private _invalid = false;\n\n /**\n * @hidden\n * @internal\n */\n private destroy$ = new Subject<boolean>();\n\n /**\n * @hidden\n * @internal\n */\n private queryChange$ = new Subject<void>();\n\n /**\n * @hidden\n * @internal\n */\n private updateValidityOnBlur() {\n this._radioButtons().forEach((button) => {\n button.focused = false;\n\n if (button.invalid) {\n this.invalid = true;\n }\n });\n }\n\n /**\n * @hidden\n * @internal\n */\n private updateOnKeyUp(event: KeyboardEvent) {\n const checked = this._radioButtons().find(x => x.checked);\n\n if (event.key === \"Tab\") {\n this._radioButtons().forEach((radio) => {\n if (radio === checked) {\n checked.focused = true;\n }\n });\n }\n }\n\n public ngDoCheck(): void {\n this._updateTabIndex();\n }\n\n private _updateTabIndex() {\n // Needed so that the keyboard navigation of a radio group\n // placed inside a dialog works properly\n if (this._radioButtons) {\n const checked = this._radioButtons().find(x => x.checked);\n\n if (checked) {\n this._radioButtons().forEach((button) => {\n checked.nativeElement.tabIndex = 0;\n\n if (button !== checked) {\n button.nativeElement.tabIndex = -1;\n button.focused = false;\n }\n });\n }\n }\n }\n\n /**\n * Sets the \"checked\" property value on the radio input element.\n *\n * @remarks\n * Checks whether the provided value is consistent to the current radio button.\n * If it is, the checked attribute will have value `true` and selected property will contain the selected radio.\n *\n * @example\n * ```typescript\n * this.radioGroup.writeValue('radioButtonValue');\n * ```\n */\n public writeValue(value: any) {\n this.value = value;\n }\n\n /**\n * Registers a function called when the control value changes.\n *\n * @hidden\n * @internal\n */\n public registerOnChange(fn: (_: any) => void) {\n this._onChangeCallback = fn;\n }\n\n /**\n * Registers a function called when the control is touched.\n *\n * @hidden\n * @internal\n */\n public registerOnTouched(fn: () => void) {\n if (this._radioButtons) {\n this._radioButtons().forEach((button) => {\n button.registerOnTouched(fn);\n });\n }\n }\n\n /**\n * @hidden\n * @internal\n */\n public ngOnDestroy(): void {\n this.destroy$.next(true);\n this.destroy$.complete();\n }\n\n constructor() {\n if (this.ngControl !== null) {\n this.ngControl.valueAccessor = this;\n }\n\n effect(() => {\n this.initialize();\n this.setRadioButtons();\n });\n }\n\n /**\n * @hidden\n * @internal\n */\n private initialize() {\n // The initial value can possibly be set by NgModel and it is possible that\n // the OnInit of the NgModel occurs after the OnInit of this class.\n this._isInitialized.set(true);\n\n if (this.ngControl) {\n this.ngControl.statusChanges!\n .pipe(takeUntil(this.destroy$))\n .subscribe(() => {\n this.invalid = false;\n });\n\n if (this.ngControl.control!.validator || this.ngControl.control!.asyncValidator) {\n this._required = this.ngControl?.control?.hasValidator(Validators.required)!;\n }\n\n this._radioButtons().forEach((button) => {\n if (this.ngControl!.disabled) {\n button.disabled = this.ngControl!.disabled;\n }\n });\n }\n }\n\n /**\n * @hidden\n * @internal\n */\n private setRadioButtons() {\n this._radioButtons().forEach((button) => {\n Promise.resolve().then(() => {\n button.name = this._name;\n button.required = this._required;\n });\n\n if (button.value === this._value) {\n button.checked = true;\n this._selected = button;\n this.cdr.markForCheck();\n }\n\n this._setRadioButtonEvents(button);\n });\n }\n\n /**\n * @hidden\n * @internal\n */\n private _setRadioButtonEvents(button: any) {\n button.change.pipe(\n takeUntil(button.destroy$),\n takeUntil(this.destroy$),\n takeUntil(this.queryChange$)\n ).subscribe((ev: IChangeCheckboxEventArgs) => this._selectedRadioButtonChanged(ev));\n\n button.blurRadio\n .pipe(takeUntil(this.destroy$))\n .subscribe(() => this.updateValidityOnBlur());\n\n fromEvent<KeyboardEvent>(button.nativeElement, 'keyup')\n .pipe(takeUntil(this.destroy$))\n .subscribe((event: KeyboardEvent) => this.updateOnKeyUp(event));\n }\n\n /**\n * @hidden\n * @internal\n */\n private _selectedRadioButtonChanged(args: IChangeCheckboxEventArgs) {\n this._radioButtons().forEach((button) => {\n button.checked = button.id === args.owner.id;\n if (button.checked && button.ngControl) {\n this.invalid = button.ngControl.invalid!;\n } else if (button.checked) {\n this.invalid = false;\n }\n });\n\n this._selected = args.owner;\n this._value = args.value;\n\n if (this._isInitialized()) {\n this.change.emit(args);\n this._onChangeCallback(this.value);\n }\n }\n\n /**\n * @hidden\n * @internal\n */\n private _setRadioButtonNames() {\n if (this._radioButtons) {\n this._radioButtons().forEach((button) => {\n button.name = this._name;\n });\n }\n }\n\n /**\n * @hidden\n * @internal\n */\n private _selectRadioButton() {\n if (this._radioButtons) {\n this._radioButtons().forEach((button) => {\n if (this._value === null) {\n // no value - uncheck all radio buttons\n if (button.checked) {\n button.checked = false;\n }\n } else {\n if (this._value === button.value) {\n // selected button\n if (this._selected !== button) {\n this._selected = button;\n }\n\n if (!button.checked) {\n button.checked = true;\n }\n } else {\n // non-selected button\n if (button.checked) {\n button.checked = false;\n }\n }\n }\n });\n }\n }\n\n /**\n * @hidden\n * @internal\n */\n private _setRadioButtonsRequired() {\n if (this._radioButtons) {\n this._radioButtons().forEach((button) => {\n button.required = this._required;\n });\n }\n }\n\n\n /**\n * Registers a radio button with this radio group.\n * This method is called by radio button components when they are created.\n * @hidden @internal\n */\n public _addRadioButton(radioButton: IgxRadioComponent): void {\n this._radioButtons.update(buttons => {\n if (!buttons.includes(radioButton)) {\n this._setRadioButtonEvents(radioButton);\n\n return [...buttons, radioButton];\n }\n return buttons;\n });\n }\n\n /**\n * Unregisters a radio button from this radio group.\n * This method is called by radio button components when they are destroyed.\n * @hidden @internal\n */\n public _removeRadioButton(radioButton: IgxRadioComponent): void {\n this._radioButtons.update(buttons =>\n buttons.filter(btn => btn !== radioButton)\n );\n }\n\n /**\n * @hidden\n * @internal\n */\n private _setRadioButtonsInvalid() {\n if (this._radioButtons) {\n this._radioButtons().forEach((button) => {\n button.invalid = this._invalid;\n });\n }\n }\n}\n","import {\n AfterViewInit,\n Component,\n EventEmitter,\n HostBinding,\n HostListener,\n Input,\n booleanAttribute,\n OnDestroy,\n inject,\n ChangeDetectionStrategy,\n ViewEncapsulation\n} from '@angular/core';\nimport { ControlValueAccessor } from '@angular/forms';\nimport { EditorProvider, EDITOR_PROVIDER } from 'igniteui-angular/core';\nimport { CheckboxBaseDirective, IgxRippleDirective, IChangeCheckboxEventArgs } from 'igniteui-angular/directives';\nimport { IgxRadioGroupDirective } from './radio-group/radio-group.directive';\n\n/**\n * **Ignite UI for Angular Radio Button** -\n * [Documentation](https://www.infragistics.com/products/ignite-ui-angular/angular/components/radio_button.html)\n *\n * The Ignite UI Radio Button allows the user to select a single option from an available set of options that are listed side by side.\n *\n * Example:\n * ```html\n * <igx-radio>\n * Simple radio button\n * </igx-radio>\n * ```\n */\n@Component({\n selector: 'igx-radio',\n providers: [{\n provide: EDITOR_PROVIDER,\n useExisting: IgxRadioComponent,\n multi: true\n }],\n templateUrl: 'radio.component.html',\n styleUrl: 'radio.component.css',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.Eager,\n imports: [IgxRippleDirective]\n})\n\nexport class IgxRadioComponent\n extends CheckboxBaseDirective\n implements AfterViewInit, OnDestroy, ControlValueAccessor, EditorProvider {\n /** @hidden @internal */\n public blurRadio = new EventEmitter();\n\n private radioGroup = inject(IgxRadioGroupDirective, { optional: true, skipSelf: true });\n\n /**\n * Returns the class of the radio component.\n * ```typescript\n * let radioClass = this.radio.cssClass;\n * ```\n *\n * @memberof IgxRadioComponent\n */\n @HostBinding('class.igx-radio')\n public override cssClass = 'igx-radio';\n\n /**\n * Sets/gets the `checked` attribute.\n * Default value is `false`.\n * ```html\n * <igx-radio [checked]=\"true\"></igx-radio>\n * ```\n * ```typescript\n * let isChecked = this.radio.checked;\n * ```\n *\n * @memberof IgxRadioComponent\n */\n @HostBinding('class.igx-radio--checked')\n @Input({ transform: booleanAttribute })\n public override set checked(value: boolean) {\n this._checked = value;\n }\n public override get checked() {\n return this._checked;\n }\n\n /**\n * Sets/gets the `disabled` attribute.\n * Default value is `false`.\n * ```html\n * <igx-radio disabled></igx-radio>\n * ```\n * ```typescript\n * let isDisabled = this.radio.disabled;\n * ```\n *\n * @memberof IgxRadioComponent\n */\n @HostBinding('class.igx-radio--disabled')\n @Input({ transform: booleanAttribute })\n public override disabled = false;\n\n /**\n * Sets/gets whether the radio button is invalid.\n * Default value is `false`.\n * ```html\n * <igx-radio invalid></igx-radio>\n * ```\n * ```typescript\n * let isInvalid = this.radio.invalid;\n * ```\n *\n * @memberof IgxRadioComponent\n */\n @HostBinding('class.igx-radio--invalid')\n @Input({ transform: booleanAttribute })\n public override invalid = false;\n\n /**\n * Sets/gets whether the radio component is on focus.\n * Default value is `false`.\n * ```typescript\n * this.radio.focus = true;\n * ```\n * ```typescript\n * let isFocused = this.radio.focused;\n * ```\n *\n * @memberof IgxRadioComponent\n */\n @HostBinding('class.igx-radio--focused')\n public override focused = false;\n\n /**\n * @hidden\n * @internal\n */\n @HostListener('change', ['$event'])\n public _changed(event: IChangeCheckboxEventArgs) {\n if (event instanceof Event) {\n event.preventDefault();\n }\n }\n\n /**\n * @hidden\n */\n @HostListener('click')\n public override _onCheckboxClick() {\n this.select();\n }\n\n /**\n * Selects the current radio button.\n * ```typescript\n * this.radio.select();\n * ```\n *\n * @memberof IgxRadioComponent\n */\n public select() {\n if (!this.checked) {\n this.checked = true;\n this.change.emit({\n value: this.value,\n owner: this,\n checked: this.checked,\n });\n this._onChangeCallback(this.value);\n }\n }\n\n /**\n * Deselects the current radio button.\n * ```typescript\n * this.radio.deselect();\n * ```\n *\n * @memberof IgxRadioComponent\n */\n public deselect() {\n this.checked = false;\n this.focused = false;\n this.cdr.markForCheck();\n }\n\n /**\n * Checks whether the provided value is consistent to the current radio button.\n * If it is, the checked attribute will have value `true`;\n * ```typescript\n * this.radio.writeValue('radioButtonValue');\n * ```\n */\n public override writeValue(value: any) {\n this.value = this.value ?? value;\n\n if (value === this.value) {\n if (!this.checked) {\n this.checked = true;\n }\n } else {\n this.deselect();\n }\n }\n\n /**\n * @hidden\n */\n @HostListener('blur')\n public override onBlur() {\n super.onBlur();\n this.blurRadio.emit();\n }\n\n /**\n * @hidden\n * @internal\n */\n public override ngAfterViewInit(): void {\n super.ngAfterViewInit();\n\n // Register with parent radio group if it exists\n if (this.radioGroup) {\n this.radioGroup._addRadioButton(this);\n }\n }\n\n /**\n * @hidden\n * @internal\n */\n public ngOnDestroy(): void {\n // Unregister from parent radio group if it exists\n if (this.radioGroup) {\n this.radioGroup._removeRadioButton(this);\n }\n }\n}\n","<input #checkbox class=\"igx-radio__input\" type=\"radio\"\n [id]=\"inputId\"\n [name]=\"name\"\n [value]=\"value\"\n [tabindex]=\"tabindex\"\n [disabled]=\"disabled\"\n [checked]=\"checked\"\n [required]=\"required\"\n [attr.aria-required]=\"required\"\n [attr.aria-invalid]=\"invalid\"\n [attr.aria-checked]=\"checked\"\n [attr.aria-labelledby]=\"ariaLabel ? null : ariaLabelledBy\"\n [attr.aria-label]=\"ariaLabel\"\n (blur)=\"onBlur()\" />\n\n<span #label class=\"igx-radio__composite\" igxRipple\n igxRippleTarget=\".igx-radio__ripple\"\n [igxRippleDisabled]=\"disableRipple\"\n [igxRippleCentered]=\"true\"\n [igxRippleDuration]=\"300\">\n <div class=\"igx-radio__ripple\"></div>\n</span>\n\n<span #placeholderLabel\n [id]=\"labelId\"\n [class]=\"labelClass\">\n <ng-content></ng-content>\n</span>\n","import { IgxRadioComponent } from '../../radio/radio.component';\nimport { IgxRadioGroupDirective } from './radio-group.directive';\n\nexport * from './radio-group.directive';\n\n/* NOTE: Radio Group directives collection for ease-of-use import in standalone components scenario */\nexport const IGX_RADIO_GROUP_DIRECTIVES = [\n IgxRadioGroupDirective,\n IgxRadioComponent\n] as const;\n","import { NgModule } from '@angular/core';\nimport { IgxRadioGroupDirective } from './radio-group.directive';\nimport { IgxRadioComponent } from '../radio.component';\n\n/**\n * @hidden\n * @deprecated\n * IMPORTANT: The following is NgModule exported for backwards-compatibility before standalone components\n */\n@NgModule({\n imports: [IgxRadioGroupDirective, IgxRadioComponent],\n exports: [IgxRadioGroupDirective, IgxRadioComponent]\n})\nexport class IgxRadioModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"igniteui-angular-radio.mjs","sources":["../../../projects/igniteui-angular/radio/src/radio/radio-group/radio-group.directive.ts","../../../projects/igniteui-angular/radio/src/radio/radio.component.ts","../../../projects/igniteui-angular/radio/src/radio/radio.component.html","../../../projects/igniteui-angular/radio/src/radio/radio-group/public_api.ts","../../../projects/igniteui-angular/radio/src/radio/radio-group/radio-group.module.ts","../../../projects/igniteui-angular/radio/src/igniteui-angular-radio.ts"],"sourcesContent":["import {\n ChangeDetectorRef,\n Directive,\n DoCheck,\n EventEmitter,\n HostBinding,\n HostListener,\n Input,\n OnDestroy,\n Output,\n QueryList,\n booleanAttribute,\n effect,\n signal,\n inject,\n ElementRef\n} from '@angular/core';\nimport { ControlValueAccessor, NgControl, Validators } from '@angular/forms';\nimport { fromEvent, noop, Subject, takeUntil } from 'rxjs';\nimport { IgxRadioComponent } from '../radio.component';\nimport { isLeftToRight } from 'igniteui-angular/core';\nimport { IChangeCheckboxEventArgs } from 'igniteui-angular/directives';\n/**\n * Determines the Radio Group alignment\n */\nexport const RadioGroupAlignment = {\n horizontal: 'horizontal',\n vertical: 'vertical'\n} as const;\nexport type RadioGroupAlignment = typeof RadioGroupAlignment[keyof typeof RadioGroupAlignment];\n\nlet nextId = 0;\n\n/**\n * Radio group directive renders set of radio buttons.\n *\n * @igxModule IgxRadioModule\n *\n * @igxTheme igx-radio-theme\n *\n * @igxKeywords radiogroup, radio, button, input\n *\n * @igxGroup Data Entry & Display\n *\n * @remarks\n * The Ignite UI Radio Group allows the user to select a single option from an available set of options that are listed side by side.\n *\n * @example:\n * ```html\n * <igx-radio-group name=\"radioGroup\">\n * <igx-radio *ngFor=\"let item of ['Foo', 'Bar', 'Baz']\" value=\"{{item}}\">\n * {{item}}\n * </igx-radio>\n * </igx-radio-group>\n * ```\n */\n@Directive({\n exportAs: 'igxRadioGroup',\n selector: '[igxRadioGroup],igx-radio-group',\n standalone: true\n})\nexport class IgxRadioGroupDirective implements ControlValueAccessor, OnDestroy, DoCheck {\n public ngControl = inject(NgControl, { optional: true, self: true });\n private cdr = inject(ChangeDetectorRef);\n private readonly _element = inject<ElementRef<HTMLElement>>(ElementRef);\n\n private _radioButtons = signal<IgxRadioComponent[]>([]);\n private _radioButtonsList = new QueryList<IgxRadioComponent>();\n\n /**\n * Returns reference to the child radio buttons.\n *\n * @example\n * ```typescript\n * let radioButtons = this.radioGroup.radioButtons;\n * ```\n */\n public get radioButtons(): QueryList<IgxRadioComponent> {\n this._radioButtonsList.reset(this._radioButtons());\n return this._radioButtonsList;\n }\n\n /**\n * Sets/gets the value attribute.\n *\n * @example\n * ```html\n * <igx-radio-group [value]=\"'radioButtonValue'\"></igx-radio-group>\n * ```\n */\n @Input()\n public get value(): any {\n return this._value;\n }\n\n public set value(newValue: any) {\n if (this._value !== newValue) {\n this._value = newValue;\n this._selectRadioButton();\n }\n }\n\n /**\n * Sets/gets the `name` attribute of the radio group component. All child radio buttons inherits this name.\n *\n * @example\n * ```html\n * <igx-radio-group name = \"Radio1\"></igx-radio-group>\n * ```\n */\n @Input()\n public get name(): string {\n return this._name;\n }\n\n public set name(newValue: string) {\n if (this._name !== newValue) {\n this._name = newValue;\n this._setRadioButtonNames();\n }\n }\n\n /**\n * Sets/gets whether the radio group is required.\n *\n * @remarks\n * If not set, `required` will have value `false`.\n *\n * @example\n * ```html\n * <igx-radio-group [required] = \"true\"></igx-radio-group>\n * ```\n */\n @Input({ transform: booleanAttribute })\n public get required(): boolean {\n return this._required;\n }\n\n public set required(value: boolean) {\n this._required = value;\n this._setRadioButtonsRequired();\n }\n\n /**\n * Sets/gets the selected child radio button.\n *\n * @example\n * ```typescript\n * let selectedButton = this.radioGroup.selected;\n * this.radioGroup.selected = selectedButton;\n * ```\n */\n @Input()\n public get selected() {\n return this._selected;\n }\n\n public set selected(selected: IgxRadioComponent | null) {\n if (this._selected !== selected) {\n this._selected = selected;\n this.value = selected ? selected.value : null;\n }\n }\n\n /**\n * Sets/gets whether the radio group is invalid.\n *\n * @remarks\n * If not set, `invalid` will have value `false`.\n *\n * @example\n * ```html\n * <igx-radio-group [invalid] = \"true\"></igx-radio-group>\n * ```\n */\n @Input({ transform: booleanAttribute })\n public get invalid(): boolean {\n return this._invalid;\n }\n\n public set invalid(value: boolean) {\n this._invalid = value;\n this._setRadioButtonsInvalid();\n }\n\n /**\n * An event that is emitted after the radio group value is changed.\n *\n * @remarks\n * Provides references to the selected radio and the value property as event arguments.\n *\n * @example\n * ```html\n * <igx-radio-group (change)=\"handler($event)\"></igx-radio-group>\n * ```\n */\n // eslint-disable-next-line @angular-eslint/no-output-native\n @Output() public readonly change: EventEmitter<IChangeCheckboxEventArgs> = new EventEmitter<IChangeCheckboxEventArgs>();\n\n /**\n * The css class applied to the component.\n *\n * @hidden\n * @internal\n */\n @HostBinding('class.igx-radio-group')\n public cssClass = 'igx-radio-group';\n\n /**\n * @hidden\n * @internal\n * Sets vertical alignment to the radio group, if `alignment` is set to `vertical`.\n * By default the alignment is horizontal.\n *\n * @example\n * ```html\n * <igx-radio-group alignment=\"vertical\"></igx-radio-group>\n * ```\n */\n @HostBinding('class.igx-radio-group--vertical')\n protected vertical = false;\n\n /**\n * A css class applied to the component if any of the\n * child radio buttons labelPosition is set to `before`.\n *\n * @hidden\n * @internal\n */\n @HostBinding('class.igx-radio-group--before')\n protected get labelBefore() {\n return this._radioButtons().some((radio) => radio.labelPosition === 'before');\n }\n\n /**\n * A css class applied to the component if all\n * child radio buttons are disabled.\n *\n * @hidden\n * @internal\n */\n @HostBinding('class.igx-radio-group--disabled')\n protected get disabled() {\n return this._radioButtons().every((radio) => radio.disabled);\n }\n\n @HostListener('click', ['$event'])\n protected handleClick(event: MouseEvent) {\n event.stopPropagation();\n\n if (this.selected) {\n this.selected.nativeElement.focus();\n }\n }\n\n @HostListener('keydown', ['$event'])\n protected handleKeyDown(event: KeyboardEvent) {\n const { key } = event;\n const buttons = this._radioButtons().filter(radio => !radio.disabled);\n const checked = buttons.find((radio) => radio.checked);\n\n if (['ArrowUp', 'ArrowDown', 'ArrowLeft', 'ArrowRight'].includes(key)) {\n let index = checked ? buttons.indexOf(checked) : -1;\n const ltr = isLeftToRight(this._element.nativeElement);\n\n switch (key) {\n case 'ArrowUp':\n index += -1;\n break;\n case 'ArrowLeft':\n index += ltr ? -1 : 1;\n break;\n case 'ArrowRight':\n index += ltr ? 1 : -1;\n break;\n default:\n index += 1;\n }\n\n if (index < 0) index = buttons.length - 1;\n if (index > buttons.length - 1) index = 0;\n\n buttons.forEach((radio) => {\n radio.deselect();\n radio.nativeElement.blur();\n });\n\n buttons[index].focused = true;\n buttons[index].nativeElement.focus();\n buttons[index].select();\n event.preventDefault();\n }\n\n if (event.key === \"Tab\") {\n buttons.forEach((radio) => {\n if (radio !== checked) {\n event.stopPropagation();\n }\n });\n }\n }\n\n /**\n * Returns the alignment of the `igx-radio-group`.\n * ```typescript\n * @ViewChild(\"MyRadioGroup\")\n * public radioGroup: IgxRadioGroupDirective;\n * ngAfterViewInit(){\n * let radioAlignment = this.radioGroup.alignment;\n * }\n * ```\n */\n @Input()\n public get alignment(): RadioGroupAlignment {\n return this.vertical ? RadioGroupAlignment.vertical : RadioGroupAlignment.horizontal;\n }\n /**\n * Allows you to set the radio group alignment.\n * Available options are `RadioGroupAlignment.horizontal` (default) and `RadioGroupAlignment.vertical`.\n * ```typescript\n * public alignment = RadioGroupAlignment.vertical;\n * //..\n * ```\n * ```html\n * <igx-radio-group [alignment]=\"alignment\"></igx-radio-group>\n * ```\n */\n public set alignment(value: RadioGroupAlignment) {\n this.vertical = value === RadioGroupAlignment.vertical;\n }\n\n /**\n * @hidden\n * @internal\n */\n private _onChangeCallback: (_: any) => void = noop;\n\n /**\n * @hidden\n * @internal\n */\n private _name = `igx-radio-group-${nextId++}`;\n\n /**\n * @hidden\n * @internal\n */\n private _value: any = null;\n\n /**\n * @hidden\n * @internal\n */\n private _selected: IgxRadioComponent | null = null;\n\n /**\n * @hidden\n * @internal\n */\n private _isInitialized = signal(false);\n\n /**\n * @hidden\n * @internal\n */\n private _required = false;\n\n /**\n * @hidden\n * @internal\n */\n private _invalid = false;\n\n /**\n * @hidden\n * @internal\n */\n private destroy$ = new Subject<boolean>();\n\n /**\n * @hidden\n * @internal\n */\n private queryChange$ = new Subject<void>();\n\n /**\n * @hidden\n * @internal\n */\n private updateValidityOnBlur() {\n this._radioButtons().forEach((button) => {\n button.focused = false;\n\n if (button.invalid) {\n this.invalid = true;\n }\n });\n }\n\n /**\n * @hidden\n * @internal\n */\n private updateOnKeyUp(event: KeyboardEvent) {\n const checked = this._radioButtons().find(x => x.checked);\n\n if (event.key === \"Tab\") {\n this._radioButtons().forEach((radio) => {\n if (radio === checked) {\n checked.focused = true;\n }\n });\n }\n }\n\n public ngDoCheck(): void {\n this._updateTabIndex();\n }\n\n private _updateTabIndex() {\n // Needed so that the keyboard navigation of a radio group\n // placed inside a dialog works properly\n if (this._radioButtons) {\n const checked = this._radioButtons().find(x => x.checked);\n\n if (checked) {\n this._radioButtons().forEach((button) => {\n checked.nativeElement.tabIndex = 0;\n\n if (button !== checked) {\n button.nativeElement.tabIndex = -1;\n button.focused = false;\n }\n });\n }\n }\n }\n\n /**\n * Sets the \"checked\" property value on the radio input element.\n *\n * @remarks\n * Checks whether the provided value is consistent to the current radio button.\n * If it is, the checked attribute will have value `true` and selected property will contain the selected radio.\n *\n * @example\n * ```typescript\n * this.radioGroup.writeValue('radioButtonValue');\n * ```\n */\n public writeValue(value: any) {\n this.value = value;\n }\n\n /**\n * Registers a function called when the control value changes.\n *\n * @hidden\n * @internal\n */\n public registerOnChange(fn: (_: any) => void) {\n this._onChangeCallback = fn;\n }\n\n /**\n * Registers a function called when the control is touched.\n *\n * @hidden\n * @internal\n */\n public registerOnTouched(fn: () => void) {\n if (this._radioButtons) {\n this._radioButtons().forEach((button) => {\n button.registerOnTouched(fn);\n });\n }\n }\n\n /**\n * @hidden\n * @internal\n */\n public ngOnDestroy(): void {\n this.destroy$.next(true);\n this.destroy$.complete();\n }\n\n constructor() {\n if (this.ngControl !== null) {\n this.ngControl.valueAccessor = this;\n }\n\n effect(() => {\n this.initialize();\n this.setRadioButtons();\n });\n }\n\n /**\n * @hidden\n * @internal\n */\n private initialize() {\n // The initial value can possibly be set by NgModel and it is possible that\n // the OnInit of the NgModel occurs after the OnInit of this class.\n this._isInitialized.set(true);\n\n if (this.ngControl) {\n this.ngControl.statusChanges\n .pipe(takeUntil(this.destroy$))\n .subscribe(() => {\n this.invalid = false;\n });\n\n if (this.ngControl.control.validator || this.ngControl.control.asyncValidator) {\n this._required = this.ngControl?.control?.hasValidator(Validators.required);\n }\n\n this._radioButtons().forEach((button) => {\n if (this.ngControl.disabled) {\n button.disabled = this.ngControl.disabled;\n }\n });\n }\n }\n\n /**\n * @hidden\n * @internal\n */\n private setRadioButtons() {\n this._radioButtons().forEach((button) => {\n Promise.resolve().then(() => {\n button.name = this._name;\n button.required = this._required;\n });\n\n if (button.value === this._value) {\n button.checked = true;\n this._selected = button;\n this.cdr.markForCheck();\n }\n\n this._setRadioButtonEvents(button);\n });\n }\n\n /**\n * @hidden\n * @internal\n */\n private _setRadioButtonEvents(button: any) {\n button.change.pipe(\n takeUntil(button.destroy$),\n takeUntil(this.destroy$),\n takeUntil(this.queryChange$)\n ).subscribe((ev: IChangeCheckboxEventArgs) => this._selectedRadioButtonChanged(ev));\n\n button.blurRadio\n .pipe(takeUntil(this.destroy$))\n .subscribe(() => this.updateValidityOnBlur());\n\n fromEvent(button.nativeElement, 'keyup')\n .pipe(takeUntil(this.destroy$))\n .subscribe((event: KeyboardEvent) => this.updateOnKeyUp(event));\n }\n\n /**\n * @hidden\n * @internal\n */\n private _selectedRadioButtonChanged(args: IChangeCheckboxEventArgs) {\n this._radioButtons().forEach((button) => {\n button.checked = button.id === args.owner.id;\n if (button.checked && button.ngControl) {\n this.invalid = button.ngControl.invalid;\n } else if (button.checked) {\n this.invalid = false;\n }\n });\n\n this._selected = args.owner;\n this._value = args.value;\n\n if (this._isInitialized) {\n this.change.emit(args);\n this._onChangeCallback(this.value);\n }\n }\n\n /**\n * @hidden\n * @internal\n */\n private _setRadioButtonNames() {\n if (this._radioButtons) {\n this._radioButtons().forEach((button) => {\n button.name = this._name;\n });\n }\n }\n\n /**\n * @hidden\n * @internal\n */\n private _selectRadioButton() {\n if (this._radioButtons) {\n this._radioButtons().forEach((button) => {\n if (this._value === null) {\n // no value - uncheck all radio buttons\n if (button.checked) {\n button.checked = false;\n }\n } else {\n if (this._value === button.value) {\n // selected button\n if (this._selected !== button) {\n this._selected = button;\n }\n\n if (!button.checked) {\n button.checked = true;\n }\n } else {\n // non-selected button\n if (button.checked) {\n button.checked = false;\n }\n }\n }\n });\n }\n }\n\n /**\n * @hidden\n * @internal\n */\n private _setRadioButtonsRequired() {\n if (this._radioButtons) {\n this._radioButtons().forEach((button) => {\n button.required = this._required;\n });\n }\n }\n\n\n /**\n * Registers a radio button with this radio group.\n * This method is called by radio button components when they are created.\n * @hidden @internal\n */\n public _addRadioButton(radioButton: IgxRadioComponent): void {\n this._radioButtons.update(buttons => {\n if (!buttons.includes(radioButton)) {\n this._setRadioButtonEvents(radioButton);\n\n return [...buttons, radioButton];\n }\n return buttons;\n });\n }\n\n /**\n * Unregisters a radio button from this radio group.\n * This method is called by radio button components when they are destroyed.\n * @hidden @internal\n */\n public _removeRadioButton(radioButton: IgxRadioComponent): void {\n this._radioButtons.update(buttons =>\n buttons.filter(btn => btn !== radioButton)\n );\n }\n\n /**\n * @hidden\n * @internal\n */\n private _setRadioButtonsInvalid() {\n if (this._radioButtons) {\n this._radioButtons().forEach((button) => {\n button.invalid = this._invalid;\n });\n }\n }\n}\n","import {\n AfterViewInit,\n Component,\n EventEmitter,\n HostBinding,\n HostListener,\n Input,\n booleanAttribute,\n OnDestroy,\n inject,\n ChangeDetectionStrategy,\n ViewEncapsulation\n} from '@angular/core';\nimport { ControlValueAccessor } from '@angular/forms';\nimport { EditorProvider, EDITOR_PROVIDER } from 'igniteui-angular/core';\nimport { CheckboxBaseDirective, IgxRippleDirective, IChangeCheckboxEventArgs } from 'igniteui-angular/directives';\nimport { IgxRadioGroupDirective } from './radio-group/radio-group.directive';\n\n/**\n * **Ignite UI for Angular Radio Button** -\n * [Documentation](https://www.infragistics.com/products/ignite-ui-angular/angular/components/radio_button.html)\n *\n * The Ignite UI Radio Button allows the user to select a single option from an available set of options that are listed side by side.\n *\n * Example:\n * ```html\n * <igx-radio>\n * Simple radio button\n * </igx-radio>\n * ```\n */\n@Component({\n selector: 'igx-radio',\n providers: [{\n provide: EDITOR_PROVIDER,\n useExisting: IgxRadioComponent,\n multi: true\n }],\n templateUrl: 'radio.component.html',\n styleUrl: 'radio.component.css',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.Eager,\n imports: [IgxRippleDirective]\n})\n\nexport class IgxRadioComponent\n extends CheckboxBaseDirective\n implements AfterViewInit, OnDestroy, ControlValueAccessor, EditorProvider {\n /** @hidden @internal */\n public blurRadio = new EventEmitter();\n\n private radioGroup = inject(IgxRadioGroupDirective, { optional: true, skipSelf: true });\n\n /**\n * Returns the class of the radio component.\n * ```typescript\n * let radioClass = this.radio.cssClass;\n * ```\n *\n * @memberof IgxRadioComponent\n */\n @HostBinding('class.igx-radio')\n public override cssClass = 'igx-radio';\n\n /**\n * Sets/gets the `checked` attribute.\n * Default value is `false`.\n * ```html\n * <igx-radio [checked]=\"true\"></igx-radio>\n * ```\n * ```typescript\n * let isChecked = this.radio.checked;\n * ```\n *\n * @memberof IgxRadioComponent\n */\n @HostBinding('class.igx-radio--checked')\n @Input({ transform: booleanAttribute })\n public override set checked(value: boolean) {\n this._checked = value;\n }\n public override get checked() {\n return this._checked;\n }\n\n /**\n * Sets/gets the `disabled` attribute.\n * Default value is `false`.\n * ```html\n * <igx-radio disabled></igx-radio>\n * ```\n * ```typescript\n * let isDisabled = this.radio.disabled;\n * ```\n *\n * @memberof IgxRadioComponent\n */\n @HostBinding('class.igx-radio--disabled')\n @Input({ transform: booleanAttribute })\n public override disabled = false;\n\n /**\n * Sets/gets whether the radio button is invalid.\n * Default value is `false`.\n * ```html\n * <igx-radio invalid></igx-radio>\n * ```\n * ```typescript\n * let isInvalid = this.radio.invalid;\n * ```\n *\n * @memberof IgxRadioComponent\n */\n @HostBinding('class.igx-radio--invalid')\n @Input({ transform: booleanAttribute })\n public override invalid = false;\n\n /**\n * Sets/gets whether the radio component is on focus.\n * Default value is `false`.\n * ```typescript\n * this.radio.focus = true;\n * ```\n * ```typescript\n * let isFocused = this.radio.focused;\n * ```\n *\n * @memberof IgxRadioComponent\n */\n @HostBinding('class.igx-radio--focused')\n public override focused = false;\n\n /**\n * @hidden\n * @internal\n */\n @HostListener('change', ['$event'])\n public _changed(event: IChangeCheckboxEventArgs) {\n if (event instanceof Event) {\n event.preventDefault();\n }\n }\n\n /**\n * @hidden\n */\n @HostListener('click')\n public override _onCheckboxClick() {\n this.select();\n }\n\n /**\n * Selects the current radio button.\n * ```typescript\n * this.radio.select();\n * ```\n *\n * @memberof IgxRadioComponent\n */\n public select() {\n if (!this.checked) {\n this.checked = true;\n this.change.emit({\n value: this.value,\n owner: this,\n checked: this.checked,\n });\n this._onChangeCallback(this.value);\n }\n }\n\n /**\n * Deselects the current radio button.\n * ```typescript\n * this.radio.deselect();\n * ```\n *\n * @memberof IgxRadioComponent\n */\n public deselect() {\n this.checked = false;\n this.focused = false;\n this.cdr.markForCheck();\n }\n\n /**\n * Checks whether the provided value is consistent to the current radio button.\n * If it is, the checked attribute will have value `true`;\n * ```typescript\n * this.radio.writeValue('radioButtonValue');\n * ```\n */\n public override writeValue(value: any) {\n this.value = this.value ?? value;\n\n if (value === this.value) {\n if (!this.checked) {\n this.checked = true;\n }\n } else {\n this.deselect();\n }\n }\n\n /**\n * @hidden\n */\n @HostListener('blur')\n public override onBlur() {\n super.onBlur();\n this.blurRadio.emit();\n }\n\n /**\n * @hidden\n * @internal\n */\n public override ngAfterViewInit(): void {\n super.ngAfterViewInit();\n\n // Register with parent radio group if it exists\n if (this.radioGroup) {\n this.radioGroup._addRadioButton(this);\n }\n }\n\n /**\n * @hidden\n * @internal\n */\n public ngOnDestroy(): void {\n // Unregister from parent radio group if it exists\n if (this.radioGroup) {\n this.radioGroup._removeRadioButton(this);\n }\n }\n}\n","<input #checkbox class=\"igx-radio__input\" type=\"radio\"\n [id]=\"inputId\"\n [name]=\"name\"\n [value]=\"value\"\n [tabindex]=\"tabindex\"\n [disabled]=\"disabled\"\n [checked]=\"checked\"\n [required]=\"required\"\n [attr.aria-required]=\"required\"\n [attr.aria-invalid]=\"invalid\"\n [attr.aria-checked]=\"checked\"\n [attr.aria-labelledby]=\"ariaLabel ? null : ariaLabelledBy\"\n [attr.aria-label]=\"ariaLabel\"\n (blur)=\"onBlur()\" />\n\n<span #label class=\"igx-radio__composite\" igxRipple\n igxRippleTarget=\".igx-radio__ripple\"\n [igxRippleDisabled]=\"disableRipple\"\n [igxRippleCentered]=\"true\"\n [igxRippleDuration]=\"300\">\n <div class=\"igx-radio__ripple\"></div>\n</span>\n\n<span #placeholderLabel\n [id]=\"labelId\"\n [class]=\"labelClass\">\n <ng-content></ng-content>\n</span>\n","import { IgxRadioComponent } from '../../radio/radio.component';\nimport { IgxRadioGroupDirective } from './radio-group.directive';\n\nexport * from './radio-group.directive';\n\n/* NOTE: Radio Group directives collection for ease-of-use import in standalone components scenario */\nexport const IGX_RADIO_GROUP_DIRECTIVES = [\n IgxRadioGroupDirective,\n IgxRadioComponent\n] as const;\n","import { NgModule } from '@angular/core';\nimport { IgxRadioGroupDirective } from './radio-group.directive';\nimport { IgxRadioComponent } from '../radio.component';\n\n/**\n * @hidden\n * @deprecated\n * IMPORTANT: The following is NgModule exported for backwards-compatibility before standalone components\n */\n@NgModule({\n imports: [IgxRadioGroupDirective, IgxRadioComponent],\n exports: [IgxRadioGroupDirective, IgxRadioComponent]\n})\nexport class IgxRadioModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"igniteui-angular-select.mjs","sources":["../../../projects/igniteui-angular/select/src/select/select-group.component.ts","../../../projects/igniteui-angular/select/src/select/select-item.component.ts","../../../projects/igniteui-angular/select/src/select/select-item.component.html","../../../projects/igniteui-angular/select/src/select/select-navigation.directive.ts","../../../projects/igniteui-angular/select/src/select/select.component.ts","../../../projects/igniteui-angular/select/src/select/select.component.html","../../../projects/igniteui-angular/select/src/select/select-overlap-positioning-strategy.ts","../../../projects/igniteui-angular/select/src/select/public_api.ts","../../../projects/igniteui-angular/select/src/select/select.module.ts","../../../projects/igniteui-angular/select/src/igniteui-angular-select.ts"],"sourcesContent":["import { Component, ChangeDetectionStrategy } from '@angular/core';\nimport { IgxDropDownGroupComponent } from 'igniteui-angular/drop-down';\n\n/**\n * The `<igx-select-item>` is a container intended for row items in\n * a `<igx-select>` container.\n */\n@Component({\n selector: 'igx-select-item-group',\n template: `\n <label id=\"{{labelId}}\">{{ label }}</label>\n <ng-content select=\"igx-select-item\"></ng-content>\n `,\n changeDetection: ChangeDetectionStrategy.Eager,\n standalone: true\n})\nexport class IgxSelectGroupComponent extends IgxDropDownGroupComponent {\n}\n","import { Component, Input, ChangeDetectionStrategy } from '@angular/core';\nimport { IgxDropDownItemComponent } from 'igniteui-angular/drop-down';\n\n@Component({\n selector: 'igx-select-item',\n\ttemplateUrl: 'select-item.component.html',\n changeDetection: ChangeDetectionStrategy.Eager,\n standalone: true\n})\nexport class IgxSelectItemComponent extends IgxDropDownItemComponent {\n /** @hidden @internal */\n public override isHeader!: boolean;\n\n private _text: any;\n\n /**\n * Gets/Sets the item's text to be displayed in the select component's input when the item is selected.\n *\n * ```typescript\n * //get\n * let mySelectedItem = this.dropDown.selectedItem;\n * let selectedItemText = mySelectedItem.text;\n * ```\n *\n * ```html\n * // set\n * <igx-select-item [text]=\"'London'\"></igx-select-item>\n * ```\n */\n @Input()\n public get text(): string {\n return this._text;\n }\n\n public set text(text: string) {\n this._text = text;\n }\n\n /** @hidden @internal */\n public get itemText() {\n if (this._text !== undefined) {\n return this._text;\n }\n // If text @Input is undefined, try extract a meaningful item text out of the item template\n return this.elementRef.nativeElement.textContent.trim();\n }\n\n /**\n * Sets/Gets if the item is the currently selected one in the select\n *\n * ```typescript\n * let mySelectedItem = this.select.selectedItem;\n * let isMyItemSelected = mySelectedItem.selected; // true\n * ```\n */\n public override get selected() {\n return !this.isHeader && !this.disabled && this.selection!.is_item_selected(this.dropDown.id, this);\n }\n\n public override set selected(value: any) {\n if (value && !this.isHeader && !this.disabled) {\n this.dropDown.selectItem(this);\n }\n }\n}\n","<span class=\"igx-drop-down__content\">\n <ng-content select=\"igx-prefix, [igxPrefix]\"></ng-content>\n <span class=\"igx-drop-down__inner\"><ng-content></ng-content></span>\n <ng-content select=\"igx-suffix, [igxSuffix]\"></ng-content>\n</span>\n","import { Directive, Input, OnDestroy } from '@angular/core';\nimport { Subscription, timer } from 'rxjs';\nimport { IgxSelectItemComponent } from './select-item.component';\nimport { IgxSelectBase } from './select.common';\nimport { IgxDropDownItemNavigationDirective } from 'igniteui-angular/drop-down';\n\n/** @hidden @internal */\n@Directive({\n selector: '[igxSelectItemNavigation]',\n standalone: true\n})\nexport class IgxSelectItemNavigationDirective extends IgxDropDownItemNavigationDirective implements OnDestroy {\n protected override _target: IgxSelectBase = null!;\n\n @Input('igxSelectItemNavigation')\n public override get target(): IgxSelectBase {\n return this._target;\n }\n public override set target(target: IgxSelectBase) {\n this._target = target ? target : this.dropdown as IgxSelectBase;\n }\n\n /** Captures keydown events and calls the appropriate handlers on the target component */\n public override handleKeyDown(event: KeyboardEvent) {\n if (!event) {\n return;\n }\n\n const key = event.key.toLowerCase();\n if (event.altKey && (key === 'arrowdown' || key === 'arrowup' || key === 'down' || key === 'up')) {\n this.target.toggle();\n return;\n }\n\n if (this.target.collapsed) {\n switch (key) {\n case 'space':\n case 'spacebar':\n case ' ':\n case 'enter':\n event.preventDefault();\n this.target.open();\n return;\n case 'arrowdown':\n case 'down':\n this.target.navigateNext();\n this.target.selectItem(this.target.focusedItem!);\n event.preventDefault();\n return;\n case 'arrowup':\n case 'up':\n this.target.navigatePrev();\n this.target.selectItem(this.target.focusedItem!);\n event.preventDefault();\n return;\n default:\n break;\n }\n } else if (key === 'tab' || event.shiftKey && key === 'tab') {\n this.target.close();\n }\n\n super.handleKeyDown(event);\n this.captureKey(event);\n }\n\n private inputStream = '';\n private clearStream$ = Subscription.EMPTY;\n\n public captureKey(event: KeyboardEvent) {\n // relying only on key, available on all major browsers:\n // https://caniuse.com/#feat=keyboardevent-key (IE/Edge quirk doesn't affect letter typing)\n if (!event || !event.key || event.key.length > 1 || event.key === ' ' || event.key === 'spacebar') {\n // ignore longer keys ('Alt', 'ArrowDown', etc) AND spacebar (used of open/close)\n return;\n }\n\n this.clearStream$.unsubscribe();\n this.clearStream$ = timer(500).subscribe(() => {\n this.inputStream = '';\n });\n\n this.inputStream += event.key;\n const focusedItem = this.target.focusedItem as IgxSelectItemComponent;\n\n // select the item\n if (focusedItem && this.inputStream.length > 1 && focusedItem.itemText.toLowerCase().startsWith(this.inputStream.toLowerCase())) {\n return;\n }\n this.activateItemByText(this.inputStream);\n }\n\n public activateItemByText(text: string) {\n const items = this.target.items as IgxSelectItemComponent[];\n\n // ^ this is focused OR selected if the dd is closed\n\n let nextItem = this.findNextItem(items, text);\n\n // If there is no such an item starting with the current text input stream AND the last Char in the input stream\n // is the same as the first one, find next item starting with the same first Char.\n // Covers cases of holding down the same key Ex: \"pppppp\" that iterates trough list items starting with \"p\".\n if (!nextItem && text.charAt(0) === text.charAt(text.length - 1)) {\n text = text.slice(0, 1);\n nextItem = this.findNextItem(items, text);\n }\n\n // If there is no other item to be found, do not change the active item.\n if (!nextItem) {\n return;\n }\n\n if (this.target.collapsed) {\n this.target.selectItem(nextItem);\n }\n this.target.navigateItem(items.indexOf(nextItem));\n }\n\n public ngOnDestroy(): void {\n this.clearStream$.unsubscribe();\n }\n\n private findNextItem(items: IgxSelectItemComponent[], text: string) {\n const activeItemIndex = items.indexOf(this.target.focusedItem as IgxSelectItemComponent) || 0;\n\n // Match next item in ddl items and wrap around if needed\n return items.slice(activeItemIndex + 1).find(x => !x.disabled && (x.itemText.toLowerCase().startsWith(text.toLowerCase()))) ||\n items.slice(0, activeItemIndex).find(x => !x.disabled && (x.itemText.toLowerCase().startsWith(text.toLowerCase())));\n }\n}\n","import {\n AfterContentChecked,\n AfterContentInit,\n AfterViewInit,\n booleanAttribute,\n Component,\n ContentChild,\n ContentChildren,\n Directive,\n ElementRef,\n EventEmitter,\n forwardRef,\n HostBinding,\n Injector,\n Input,\n OnDestroy,\n OnInit,\n Output,\n QueryList,\n TemplateRef,\n ViewChild,\n ViewChildren,\n inject,\n ChangeDetectionStrategy,\n ViewEncapsulation\n} from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { AbstractControl, ControlValueAccessor, NgControl, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { noop } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport {\n EditorProvider,\n IBaseCancelableBrowserEventArgs,\n IBaseEventArgs,\n AbsoluteScrollStrategy,\n AutoPositionStrategy,\n OverlaySettings\n} from 'igniteui-angular/core';\nimport { IgxSelectItemComponent } from './select-item.component';\nimport { IgxSelectBase } from './select.common';\nimport { IgxHintDirective, IgxInputGroupType, IgxPrefixDirective, IGX_INPUT_GROUP_TYPE, IgxInputGroupComponent, IgxInputDirective, IgxInputState, IgxLabelDirective, IgxReadOnlyInputDirective, IgxSuffixDirective } from 'igniteui-angular/input-group';\nimport { ToggleViewCancelableEventArgs, ToggleViewEventArgs, IgxToggleDirective } from 'igniteui-angular/directives';\nimport { IgxOverlayService } from 'igniteui-angular/core';\nimport { IgxIconComponent } from 'igniteui-angular/icon';\nimport { IgxSelectItemNavigationDirective } from './select-navigation.directive';\nimport { IGX_DROPDOWN_BASE, IgxDropDownComponent, IgxDropDownItemBaseDirective, ISelectionEventArgs, Navigate } from 'igniteui-angular/drop-down';\n\n/** @hidden @internal */\n@Directive({\n selector: '[igxSelectToggleIcon]',\n standalone: true\n})\nexport class IgxSelectToggleIconDirective {\n}\n\n/** @hidden @internal */\n@Directive({\n selector: '[igxSelectHeader]',\n standalone: true\n})\nexport class IgxSelectHeaderDirective {\n}\n\n/** @hidden @internal */\n@Directive({\n selector: '[igxSelectFooter]',\n standalone: true\n})\nexport class IgxSelectFooterDirective {\n}\n\n/**\n * **Ignite UI for Angular Select** -\n * [Documentation](https://www.infragistics.com/products/ignite-ui-angular/angular/components/select)\n *\n * The `igxSelect` provides an input with dropdown list allowing selection of a single item.\n *\n * Example:\n * ```html\n * <igx-select #select1 [placeholder]=\"'Pick One'\">\n * <label igxLabel>Select Label</label>\n * <igx-select-item *ngFor=\"let item of items\" [value]=\"item.field\">\n * {{ item.field }}\n * </igx-select-item>\n * </igx-select>\n * ```\n */\n@Component({\n selector: 'igx-select',\n templateUrl: './select.component.html',\n providers: [\n { provide: NG_VALUE_ACCESSOR, useExisting: IgxSelectComponent, multi: true },\n { provide: IGX_DROPDOWN_BASE, useExisting: IgxSelectComponent }\n ],\n styleUrls: ['../../../drop-down/src/drop-down/drop-down.component.css', 'select.component.css'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.Eager,\n imports: [IgxInputGroupComponent, IgxInputDirective, IgxSelectItemNavigationDirective, IgxSuffixDirective, IgxReadOnlyInputDirective, NgTemplateOutlet, IgxIconComponent, IgxToggleDirective]\n})\nexport class IgxSelectComponent extends IgxDropDownComponent implements IgxSelectBase, ControlValueAccessor,\n AfterContentInit, OnInit, AfterViewInit, OnDestroy, EditorProvider, AfterContentChecked {\n protected overlayService = inject<IgxOverlayService>(IgxOverlayService);\n private _inputGroupType = inject<IgxInputGroupType>(IGX_INPUT_GROUP_TYPE, { optional: true });\n private _injector = inject(Injector);\n\n\n /** @hidden @internal */\n @ViewChild('inputGroup', { read: IgxInputGroupComponent, static: true }) public inputGroup!: IgxInputGroupComponent;\n\n /** @hidden @internal */\n @ViewChild('input', { read: IgxInputDirective, static: true }) public input!: IgxInputDirective;\n\n /** @hidden @internal */\n @ContentChildren(forwardRef(() => IgxSelectItemComponent), { descendants: true })\n public override children!: QueryList<IgxSelectItemComponent>;\n\n @ContentChildren(IgxPrefixDirective, { descendants: true })\n protected prefixes!: QueryList<IgxPrefixDirective>;\n\n @ContentChildren(IgxSuffixDirective, { descendants: true })\n protected suffixes!: QueryList<IgxSuffixDirective>;\n\n @ContentChildren(IgxHintDirective, { descendants: true })\n protected contentHints!: QueryList<IgxHintDirective>;\n\n @ViewChildren(IgxSuffixDirective)\n protected internalSuffixes!: QueryList<IgxSuffixDirective>;\n\n /** @hidden @internal */\n @ContentChild(forwardRef(() => IgxLabelDirective), { static: true }) public label?: IgxLabelDirective;\n\n /**\n * Sets input placeholder.\n *\n */\n @Input() public placeholder!: string;\n\n /**\n * Disables the component.\n * ```html\n * <igx-select [disabled]=\"'true'\"></igx-select>\n * ```\n */\n @Input({ transform: booleanAttribute }) public disabled = false;\n\n /**\n * Sets custom overlay settings for the select component.\n * ```html\n * <igx-select [overlaySettings]=\"customOverlaySettings\"></igx-select>\n * ```\n */\n @Input()\n public overlaySettings!: OverlaySettings;\n\n @HostBinding('class.igx-select')\n public defaultClass = true;\n\n /** @hidden @internal */\n @HostBinding('style.maxHeight')\n public override maxHeight = '256px';\n\n /**\n * Emitted before the dropdown is opened\n *\n * ```html\n * <igx-select opening='handleOpening($event)'></igx-select>\n * ```\n */\n @Output()\n public override opening = new EventEmitter<IBaseCancelableBrowserEventArgs>();\n\n /**\n * Emitted after the dropdown is opened\n *\n * ```html\n * <igx-select (opened)='handleOpened($event)'></igx-select>\n * ```\n */\n @Output()\n public override opened = new EventEmitter<IBaseEventArgs>();\n\n /**\n * Emitted before the dropdown is closed\n *\n * ```html\n * <igx-select (closing)='handleClosing($event)'></igx-select>\n * ```\n */\n @Output()\n public override closing = new EventEmitter<IBaseCancelableBrowserEventArgs>();\n\n /**\n * Emitted after the dropdown is closed\n *\n * ```html\n * <igx-select (closed)='handleClosed($event)'></igx-select>\n * ```\n */\n @Output()\n public override closed = new EventEmitter<IBaseEventArgs>();\n\n /**\n * The custom template, if any, that should be used when rendering the select TOGGLE(open/close) button\n *\n * ```typescript\n * // Set in typescript\n * const myCustomTemplate: TemplateRef<any> = myComponent.customTemplate;\n * myComponent.select.toggleIconTemplate = myCustomTemplate;\n * ```\n * ```html\n * <!-- Set in markup -->\n * <igx-select #select>\n * ...\n * <ng-template igxSelectToggleIcon let-collapsed>\n * <igx-icon>{{ collapsed ? 'remove_circle' : 'remove_circle_outline'}}</igx-icon>\n * </ng-template>\n * </igx-select>\n * ```\n */\n @ContentChild(IgxSelectToggleIconDirective, { read: TemplateRef })\n public toggleIconTemplate: TemplateRef<any> = null!;\n\n /**\n * The custom template, if any, that should be used when rendering the HEADER for the select items list\n *\n * ```typescript\n * // Set in typescript\n * const myCustomTemplate: TemplateRef<any> = myComponent.customTemplate;\n * myComponent.select.headerTemplate = myCustomTemplate;\n * ```\n * ```html\n * <!-- Set in markup -->\n * <igx-select #select>\n * ...\n * <ng-template igxSelectHeader>\n * <div class=\"select__header\">\n * This is a custom header\n * </div>\n * </ng-template>\n * </igx-select>\n * ```\n */\n @ContentChild(IgxSelectHeaderDirective, { read: TemplateRef, static: false })\n public headerTemplate: TemplateRef<any> = null!;\n\n /**\n * The custom template, if any, that should be used when rendering the FOOTER for the select items list\n *\n * ```typescript\n * // Set in typescript\n * const myCustomTemplate: TemplateRef<any> = myComponent.customTemplate;\n * myComponent.select.footerTemplate = myCustomTemplate;\n * ```\n * ```html\n * <!-- Set in markup -->\n * <igx-select #select>\n * ...\n * <ng-template igxSelectFooter>\n * <div class=\"select__footer\">\n * This is a custom footer\n * </div>\n * </ng-template>\n * </igx-select>\n * ```\n */\n @ContentChild(IgxSelectFooterDirective, { read: TemplateRef, static: false })\n public footerTemplate: TemplateRef<any> = null!;\n\n @ContentChild(IgxHintDirective, { read: ElementRef }) private hintElement!: ElementRef;\n\n /** @hidden @internal */\n public override width!: string;\n\n /** @hidden @internal */\n public override allowItemsFocus = false;\n\n /** @hidden @internal */\n public override height!: string;\n\n private ngControl: NgControl = null!;\n private _overlayDefaults!: OverlaySettings;\n private _value: any;\n private _type: IgxInputGroupType | null = null;\n\n /**\n * Gets/Sets the component value.\n *\n * ```typescript\n * // get\n * let selectValue = this.select.value;\n * ```\n *\n * ```typescript\n * // set\n * this.select.value = 'London';\n * ```\n * ```html\n * <igx-select [value]=\"value\"></igx-select>\n * ```\n */\n @Input()\n public get value(): any {\n return this._value;\n }\n public set value(v: any) {\n if (this._value === v) {\n return;\n }\n this._value = v;\n this.setSelection(this.items.find(x => x.value === this.value)!);\n }\n\n /**\n * Sets how the select will be styled.\n * The allowed values are `line`, `box` and `border`. Defaults to `box` if no input-group type is set.\n * ```html\n * <igx-select [type]=\"'border'\"></igx-select>\n * ```\n */\n @Input()\n public get type(): IgxInputGroupType {\n return this._type || this._inputGroupType || 'box';\n }\n\n public set type(val: IgxInputGroupType) {\n this._type = val;\n }\n\n /** @hidden @internal */\n public get selectionValue() {\n const selectedItem = this.selectedItem;\n return selectedItem ? selectedItem.itemText : '';\n }\n\n /** @hidden @internal */\n public override get selectedItem(): IgxSelectItemComponent {\n return this.selection.first_item(this.id);\n }\n\n private _onChangeCallback: (_: any) => void = noop;\n private _onTouchedCallback: () => void = noop;\n\n //#region ControlValueAccessor\n\n /** @hidden @internal */\n public writeValue = (value: any) => {\n this.value = value;\n };\n\n /** @hidden @internal */\n public registerOnChange(fn: any): void {\n this._onChangeCallback = fn;\n }\n\n /** @hidden @internal */\n public registerOnTouched(fn: any): void {\n this._onTouchedCallback = fn;\n }\n\n /** @hidden @internal */\n public setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n //#endregion\n\n /** @hidden @internal */\n public getEditElement(): HTMLInputElement {\n return this.input.nativeElement;\n }\n\n /** @hidden @internal */\n public override selectItem(newSelection: IgxDropDownItemBaseDirective, event?: any) {\n const oldSelection = this.selectedItem ?? <IgxDropDownItemBaseDirective>{};\n\n if (newSelection === null || newSelection.disabled || newSelection.isHeader) {\n return;\n }\n\n if (newSelection === oldSelection) {\n this.toggleDirective.close();\n return;\n }\n\n const args: ISelectionEventArgs = { oldSelection, newSelection, cancel: false, owner: this };\n this.selectionChanging.emit(args);\n\n if (args.cancel) {\n return;\n }\n\n this.setSelection(newSelection);\n this._value = newSelection.value;\n\n if (event) {\n this.toggleDirective.close();\n }\n\n this.cdr.detectChanges();\n this._onChangeCallback(this.value);\n }\n\n /** @hidden @internal */\n public getFirstItemElement(): HTMLElement {\n return this.children.first.element.nativeElement;\n }\n\n /**\n * Opens the select\n *\n * ```typescript\n * this.select.open();\n * ```\n */\n public override open(overlaySettings?: OverlaySettings) {\n if (this.disabled || this.items.length === 0) {\n return;\n }\n\n if (!this.selectedItem) {\n this.navigateFirst();\n }\n\n super.open(this.getMergedOverlaySettings(overlaySettings));\n }\n\n protected inputGroupClick(event: MouseEvent, overlaySettings?: OverlaySettings) {\n const targetElement = event.target as HTMLElement;\n\n if (this.hintElement && targetElement.contains(this.hintElement.nativeElement)) {\n return;\n }\n this.toggle(this.getMergedOverlaySettings(overlaySettings));\n }\n\n /** @hidden @internal */\n public ngAfterContentInit() {\n const changes$ = this.children.changes.pipe(takeUntil(this.destroy$)).subscribe(() => {\n this.setSelection(this.items.find(x => x.value === this.value)!);\n this.cdr.detectChanges();\n });\n Promise.resolve().then(() => {\n if (!changes$.closed) {\n this.children.notifyOnChanges();\n }\n });\n }\n\n /**\n * Event handlers\n *\n * @hidden @internal\n */\n public handleOpening(e: ToggleViewCancelableEventArgs) {\n const args: IBaseCancelableBrowserEventArgs = { owner: this, event: e.event, cancel: e.cancel };\n this.opening.emit(args);\n\n e.cancel = args.cancel;\n if (args.cancel) {\n return;\n }\n }\n\n /** @hidden @internal */\n public override onToggleContentAppended(event: ToggleViewEventArgs) {\n const info = this.overlayService.getOverlayById(event.id);\n if ((info?.settings?.positionStrategy as { isItemOverlapPositioning?: boolean })?.isItemOverlapPositioning) {\n return;\n }\n super.onToggleContentAppended(event);\n }\n\n /** @hidden @internal */\n public handleOpened() {\n this.updateItemFocus();\n this.opened.emit({ owner: this });\n }\n\n /** @hidden @internal */\n public handleClosing(e: ToggleViewCancelableEventArgs) {\n const args: IBaseCancelableBrowserEventArgs = { owner: this, event: e.event, cancel: e.cancel };\n this.closing.emit(args);\n e.cancel = args.cancel;\n }\n\n /** @hidden @internal */\n public handleClosed() {\n this.focusItem(false);\n this.closed.emit({ owner: this });\n }\n\n /** @hidden @internal */\n public onBlur(): void {\n this._onTouchedCallback();\n if (this.ngControl && this.ngControl.invalid) {\n this.input.valid = IgxInputState.INVALID;\n } else {\n this.input.valid = IgxInputState.INITIAL;\n }\n }\n\n /** @hidden @internal */\n public onFocus(): void {\n this._onTouchedCallback();\n }\n\n /**\n * @hidden @internal\n */\n public override ngOnInit() {\n this.ngControl = this._injector.get<NgControl>(NgControl, null);\n }\n\n /**\n * @hidden @internal\n */\n public override ngAfterViewInit() {\n super.ngAfterViewInit();\n\n if (this.ngControl) {\n this.ngControl.statusChanges!.pipe(takeUntil(this.destroy$)).subscribe(this.onStatusChanged.bind(this));\n this.manageRequiredAsterisk();\n }\n\n const targetElement = this.inputGroup.element.nativeElement.querySelector('.igx-input-group__bundle') as HTMLElement;\n this._overlayDefaults = {\n target: targetElement,\n modal: false,\n positionStrategy: new AutoPositionStrategy(),\n scrollStrategy: new AbsoluteScrollStrategy(),\n excludeFromOutsideClick: [targetElement]\n };\n\n this.cdr.detectChanges();\n }\n\n /** @hidden @internal */\n public ngAfterContentChecked() {\n if (this.inputGroup && this.prefixes?.length > 0) {\n this.inputGroup.prefixes = this.prefixes;\n }\n\n if (this.inputGroup) {\n const suffixesArray = this.suffixes?.toArray() ?? [];\n const internalSuffixesArray = this.internalSuffixes?.toArray() ?? [];\n const mergedSuffixes = new QueryList<IgxSuffixDirective>();\n mergedSuffixes.reset([\n ...suffixesArray,\n ...internalSuffixesArray\n ]);\n this.inputGroup.suffixes = mergedSuffixes;\n }\n\n if (this.inputGroup) {\n this.inputGroup.hints = this.contentHints;\n }\n }\n\n /** @hidden @internal */\n public get toggleIcon(): string {\n return this.collapsed ? 'input_expand' : 'input_collapse';\n }\n\n /**\n * @hidden @internal\n * Prevent input blur - closing the items container on Header/Footer Template click.\n */\n public mousedownHandler(event: MouseEvent) {\n event.preventDefault();\n }\n\n protected onStatusChanged() {\n this.manageRequiredAsterisk();\n\n if (this.ngControl && !this.ngControl.disabled && this.isTouchedOrDirty) {\n if (this.hasValidators && this.inputGroup.isFocused) {\n this.input.valid = this.ngControl.valid ? IgxInputState.VALID : IgxInputState.INVALID;\n } else {\n // B.P. 18 May 2021: IgxDatePicker does not reset its state upon resetForm #9526\n this.input.valid = this.ngControl.valid ? IgxInputState.INITIAL : IgxInputState.INVALID;\n }\n } else {\n this.input.valid = IgxInputState.INITIAL;\n }\n }\n\n private get isTouchedOrDirty(): boolean {\n return (this.ngControl.control!.touched || this.ngControl.control!.dirty);\n }\n\n private get hasValidators(): boolean {\n return (!!this.ngControl.control!.validator || !!this.ngControl.control!.asyncValidator);\n }\n\n protected override navigate(direction: Navigate, currentIndex?: number) {\n if (this.collapsed && this.selectedItem) {\n this.navigateItem(this.selectedItem.itemIndex);\n }\n super.navigate(direction, currentIndex);\n }\n\n protected manageRequiredAsterisk(): void {\n const hasRequiredHTMLAttribute = this.elementRef.nativeElement.hasAttribute('required');\n let isRequired = false;\n\n if (this.ngControl && this.ngControl.control!.validator) {\n const error = this.ngControl.control!.validator({} as AbstractControl);\n isRequired = !!(error && error.required);\n }\n\n this.inputGroup.isRequired = isRequired;\n\n if (this.input?.nativeElement) {\n this.input.nativeElement.setAttribute('aria-required', isRequired.toString());\n }\n\n // Handle validator removal case\n if (!isRequired && !hasRequiredHTMLAttribute) {\n this.input.valid = IgxInputState.INITIAL;\n }\n\n this.cdr.markForCheck();\n }\n\n private getMergedOverlaySettings(overlaySettings?: OverlaySettings): OverlaySettings {\n const merged = Object.assign({}, this._overlayDefaults, this.overlaySettings, overlaySettings);\n if ((merged.positionStrategy as { isItemOverlapPositioning?: boolean })?.isItemOverlapPositioning) {\n merged.target = this.getEditElement();\n }\n return merged;\n }\n\n private setSelection(item: IgxDropDownItemBaseDirective) {\n if (item && item.value !== undefined && item.value !== null) {\n this.selection.set(this.id, new Set([item]));\n } else {\n this.selection.clear(this.id);\n }\n }\n}\n\n","<igx-input-group #inputGroup class=\"input-group\" (click)=\"inputGroupClick($event)\" [type]=\"type === 'search' ? 'line' : type\">\n <ng-container ngProjectAs=\"[igxLabel]\">\n <ng-content select=\"[igxLabel]\"></ng-content>\n </ng-container>\n <ng-container ngProjectAs=\"igx-prefix\">\n <ng-content select=\"igx-prefix,[igxPrefix]\"></ng-content>\n </ng-container>\n <input #input class=\"input\" type=\"text\" igxInput [igxSelectItemNavigation]=\"this\"\n [disabled]=\"disabled\"\n readonly=\"true\"\n [igxReadOnlyInput]=\"false\"\n [attr.placeholder]=\"this.placeholder\"\n [value]=\"this.selectionValue\"\n role=\"combobox\"\n aria-haspopup=\"listbox\"\n [attr.aria-labelledby]=\"labelledBy || label?.id\"\n [attr.aria-expanded]=\"!this.collapsed\"\n [attr.aria-owns]=\"this.listId\"\n [attr.aria-activedescendant]=\"!this.collapsed ? this.focusedItem?.id : null\"\n (blur)=\"onBlur()\"\n (focus)=\"onFocus()\"\n />\n <ng-container ngProjectAs=\"igx-suffix\">\n <ng-content select=\"igx-suffix,[igxSuffix]\"></ng-content>\n </ng-container>\n <igx-suffix class=\"igx-input-group__toggle-button\">\n @if (toggleIconTemplate) {\n <ng-container *ngTemplateOutlet=\"toggleIconTemplate; context: {$implicit: this.collapsed}\"></ng-container>\n }\n @if (!toggleIconTemplate) {\n <igx-icon family=\"default\" [name]=\"toggleIcon\"></igx-icon>\n }\n </igx-suffix>\n <ng-container ngProjectAs=\"igx-hint, [igxHint]\" >\n <ng-content select=\"igx-hint, [igxHint]\"></ng-content>\n </ng-container>\n</igx-input-group>\n<div igxToggle class=\"igx-drop-down\" (mousedown)=\"mousedownHandler($event);\"\n (appended)=\"onToggleContentAppended($event)\"\n (opening)=\"handleOpening($event)\"\n (opened)=\"handleOpened()\"\n (closing)=\"handleClosing($event)\"\n (closed)=\"handleClosed()\">\n\n @if (headerTemplate) {\n <div class=\"igx-drop-down__select-header\">\n <ng-content *ngTemplateOutlet=\"headerTemplate\"></ng-content>\n </div>\n }\n\n <!-- #7436 LMB scrolling closes items container - unselectable attribute is IE specific -->\n <div #scrollContainer class=\"igx-drop-down__list-scroll\" unselectable=\"on\" [style.maxHeight]=\"maxHeight\"\n [attr.id]=\"this.listId\" role=\"listbox\" [attr.aria-labelledby]=\"labelledBy || label?.id\">\n <ng-content select=\"igx-select-item, igx-select-item-group\"></ng-content>\n </div>\n\n @if (footerTemplate) {\n <div class=\"igx-drop-down__select-footer\">\n <ng-container *ngTemplateOutlet=\"footerTemplate\"></ng-container>\n </div>\n }\n</div>\n","import { VerticalAlignment, HorizontalAlignment, PositionSettings, ConnectedFit, Point, Size, BaseFitPositionStrategy, Util } from 'igniteui-angular/core';\nimport { IPositionStrategy } from 'igniteui-angular/core';\n\nimport type { IgxSelectComponent } from './select.component';\nimport { fadeIn, fadeOut } from 'igniteui-angular/animations';\n\n/**\n * Positions the select dropdown so that the active item's text overlaps\n * the value displayed in the select input box.\n */\nexport class IgxSelectOverlapPositionStrategy extends BaseFitPositionStrategy implements IPositionStrategy {\n private _selectDefaultSettings = {\n horizontalDirection: HorizontalAlignment.Right,\n verticalDirection: VerticalAlignment.Bottom,\n horizontalStartPoint: HorizontalAlignment.Left,\n verticalStartPoint: VerticalAlignment.Top,\n openAnimation: fadeIn,\n closeAnimation: fadeOut\n };\n\n // Global variables required for cases of !initialCall (page scroll/overlay repositionAll)\n private global_yOffset = 0;\n private global_xOffset = 0;\n private global_styles: SelectStyles = {};\n\n /** @hidden @internal */\n public isItemOverlapPositioning = true;\n\n constructor(private select: IgxSelectComponent, settings?: PositionSettings) {\n super();\n this.settings = Object.assign({}, this._selectDefaultSettings, settings);\n }\n\n /**\n * Position the element based on the PositionStrategy implementing this interface.\n *\n * @param contentElement The HTML element to be positioned\n * @param size Size of the element\n * @param document reference to the Document object\n * @param initialCall should be true if this is the initial call to the method\n * @param target attaching target for the component to show\n * ```typescript\n * settings.positionStrategy.position(content, size, document, true);\n * ```\n */\n public override position(contentElement: HTMLElement,\n _size: Size,\n document?: Document,\n initialCall?: boolean,\n target?: Point | HTMLElement): void {\n const targetElement = target;\n const rects = super.calculateElementRectangles(contentElement, targetElement!);\n // selectFit obj, to be used for both cases of initialCall and !initialCall(page scroll/overlay repositionAll)\n const selectFit: SelectFit = {\n verticalOffset: this.global_yOffset,\n horizontalOffset: this.global_xOffset,\n targetRect: rects.targetRect,\n contentElementRect: rects.elementRect,\n styles: this.global_styles,\n scrollContainer: this.select.scrollContainer,\n scrollContainerRect: this.select.scrollContainer.getBoundingClientRect()\n };\n\n if (initialCall) {\n this.select.scrollContainer.scrollTop = 0;\n // Fill in the required selectFit object properties.\n selectFit.viewPortRect = Util.getViewportRect(document!);\n selectFit.itemElement = this.getInteractionItemElement();\n selectFit.itemRect = selectFit.itemElement.getBoundingClientRect();\n\n // Calculate input and selected item elements style related variables\n selectFit.styles = this.calculateStyles(selectFit, targetElement!);\n\n selectFit.scrollAmount = this.calculateScrollAmount(selectFit);\n // Calculate how much to offset the overlay container.\n this.calculateYoffset(selectFit);\n this.calculateXoffset(selectFit);\n\n super.updateViewPortFit(selectFit);\n // container does not fit in viewPort and is out on Top or Bottom\n if (selectFit.fitVertical!.back < 0 || selectFit.fitVertical!.forward < 0) {\n this.fitInViewport(contentElement, selectFit);\n }\n // Calculate scrollTop independently of the dropdown, as we cover all `igsSelect` specific positioning and\n // scrolling to selected item scenarios here.\n this.select.scrollContainer.scrollTop = selectFit.scrollAmount;\n }\n this.setStyles(contentElement, selectFit);\n }\n\n /**\n * Obtain the selected item if there is such one or otherwise use the first one\n */\n private getInteractionItemElement(): HTMLElement {\n let itemElement;\n if (this.select.selectedItem) {\n itemElement = this.select.selectedItem.element.nativeElement;\n } else {\n itemElement = this.select.getFirstItemElement();\n }\n return itemElement;\n }\n\n /**\n * Position the items outer container so selected item text is positioned over input text and if header\n * And/OR footer - both header/footer are visible\n *\n * @param selectFit selectFit to use for computation.\n */\n protected override fitInViewport(_contentElement: HTMLElement, selectFit: SelectFit) {\n const footer = selectFit.scrollContainerRect.bottom - selectFit.contentElementRect!.bottom!;\n const header = selectFit.scrollContainerRect.top - selectFit.contentElementRect!.top!;\n const lastItemFitSize = selectFit.targetRect!.bottom! + selectFit.styles!.itemTextToInputTextDiff! - footer;\n const firstItemFitSize = selectFit.targetRect!.top! - selectFit.styles!.itemTextToInputTextDiff! - header;\n // out of viewPort on Top\n if (selectFit.fitVertical!.back < 0) {\n const possibleScrollAmount = selectFit.scrollContainer.scrollHeight -\n selectFit.scrollContainerRect.height - selectFit.scrollAmount!;\n if (possibleScrollAmount + selectFit.fitVertical!.back > 0 && firstItemFitSize > selectFit.viewPortRect!.top!) {\n selectFit.scrollAmount! -= selectFit.fitVertical!.back;\n selectFit.verticalOffset! -= selectFit.fitVertical!.back;\n this.global_yOffset = selectFit.verticalOffset!;\n } else {\n selectFit.verticalOffset = 0 ;\n this.global_yOffset = 0;\n }\n // out of viewPort on Bottom\n } else if (selectFit.fitVertical!.forward < 0) {\n if (selectFit.scrollAmount! + selectFit.fitVertical!.forward > 0 && lastItemFitSize < selectFit.viewPortRect!.bottom!) {\n selectFit.scrollAmount! += selectFit.fitVertical!.forward;\n selectFit.verticalOffset! += selectFit.fitVertical!.forward;\n this.global_yOffset = selectFit.verticalOffset!;\n } else {\n selectFit.verticalOffset = -selectFit.contentElementRect!.height! + selectFit.targetRect!.height!;\n this.global_yOffset = selectFit.verticalOffset;\n }\n }\n }\n\n /**\n * Sets element's style which effectively positions the provided element\n *\n * @param element Element to position\n * @param selectFit selectFit to use for computation.\n * @param initialCall should be true if this is the initial call to the position method calling setStyles\n */\n protected setStyles(contentElement: HTMLElement, selectFit: SelectFit) {\n super.setStyle(contentElement, selectFit.targetRect!, selectFit.contentElementRect!, selectFit);\n contentElement.style.width = `${selectFit.styles!.contentElementNewWidth}px`; // manage container based on paddings?\n this.global_styles.contentElementNewWidth = selectFit.styles!.contentElementNewWidth;\n }\n\n /**\n * Calculate selected item scroll position.\n */\n private calculateScrollAmount(selectFit: SelectFit): number {\n const itemElementRect = selectFit.itemRect;\n const scrollContainer = selectFit.scrollContainer;\n const scrollContainerRect = selectFit.scrollContainerRect;\n const scrollDelta = scrollContainerRect.top - itemElementRect!.top;\n let scrollPosition = scrollContainer.scrollTop - scrollDelta;\n\n const dropDownHeight = scrollContainer.clientHeight;\n scrollPosition -= dropDownHeight / 2;\n scrollPosition += itemElementRect!.height / 2;\n\n return Math.round(Math.min(Math.max(0, scrollPosition), scrollContainer.scrollHeight - scrollContainerRect.height));\n }\n\n /**\n * Calculate the necessary input and selected item styles to be used for positioning item text over input text.\n * Calculate & Set default items container width.\n *\n * @param selectFit selectFit to use for computation.\n */\n private calculateStyles(selectFit: SelectFit, target: Point | HTMLElement): SelectStyles {\n const styles: SelectStyles = {};\n const inputElementStyles = window.getComputedStyle(target as Element);\n const itemElementStyles = window.getComputedStyle(selectFit.itemElement!);\n const numericInputFontSize = parseFloat(inputElementStyles.fontSize);\n const numericInputPaddingTop = parseFloat(inputElementStyles.paddingTop);\n const numericInputPaddingBottom = parseFloat(inputElementStyles.paddingBottom);\n const numericItemFontSize = parseFloat(itemElementStyles.fontSize);\n const inputTextToInputTop = ((selectFit.targetRect!.bottom! - numericInputPaddingBottom)\n - (selectFit.targetRect!.top! + numericInputPaddingTop) - numericInputFontSize) / 2;\n const itemTextToItemTop = (selectFit.itemRect!.height - numericItemFontSize) / 2;\n styles.itemTextToInputTextDiff = Math.round(itemTextToItemTop - inputTextToInputTop - numericInputPaddingTop);\n\n const numericLeftPadding = parseFloat(itemElementStyles.paddingLeft);\n const numericTextIndent = parseFloat(itemElementStyles.textIndent);\n\n styles.itemTextPadding = numericLeftPadding;\n styles.itemTextIndent = numericTextIndent;\n // 24 is the input's toggle ddl icon width\n styles.contentElementNewWidth = selectFit.targetRect!.width! + 24 + numericLeftPadding * 2;\n\n return styles;\n }\n\n /**\n * Calculate how much to offset the overlay container for Y-axis.\n */\n private calculateYoffset(selectFit: SelectFit) {\n selectFit.verticalOffset = -(selectFit.itemRect!.top - selectFit.contentElementRect!.top! +\n selectFit.styles!.itemTextToInputTextDiff! - selectFit.scrollAmount!);\n this.global_yOffset = selectFit.verticalOffset;\n }\n\n /**\n * Calculate how much to offset the overlay container for X-axis.\n */\n private calculateXoffset(selectFit: SelectFit) {\n selectFit.horizontalOffset = selectFit.styles!.itemTextIndent! - selectFit.styles!.itemTextPadding!;\n this.global_xOffset = selectFit.horizontalOffset;\n }\n}\n\n/** @hidden */\ninterface SelectFit extends ConnectedFit {\n itemElement?: HTMLElement;\n scrollContainer: HTMLElement;\n scrollContainerRect: DOMRect;\n itemRect?: DOMRect;\n styles?: SelectStyles;\n scrollAmount?: number;\n}\n\n/** @hidden */\ninterface SelectStyles {\n itemTextPadding?: number;\n itemTextIndent?: number;\n itemTextToInputTextDiff?: number;\n contentElementNewWidth?: number;\n numericLeftPadding?: number;\n}\n","import { IgxHintDirective, IgxLabelDirective, IgxPrefixDirective, IgxSuffixDirective } from 'igniteui-angular/input-group';\nimport { IgxSelectGroupComponent } from './select-group.component';\nimport { IgxSelectItemComponent } from './select-item.component';\nimport { IgxSelectComponent, IgxSelectFooterDirective, IgxSelectHeaderDirective, IgxSelectToggleIconDirective } from './select.component';\n\nexport * from './select-group.component';\nexport * from './select-item.component';\nexport * from './select.component';\nexport * from './select-overlap-positioning-strategy';\n\n/* NOTE: Select directives collection for ease-of-use import in standalone components scenario */\nexport const IGX_SELECT_DIRECTIVES = [\n IgxSelectComponent,\n IgxSelectItemComponent,\n IgxSelectGroupComponent,\n IgxSelectHeaderDirective,\n IgxSelectFooterDirective,\n IgxSelectToggleIconDirective,\n IgxLabelDirective,\n IgxPrefixDirective,\n IgxSuffixDirective,\n IgxHintDirective\n] as const;\n","import { NgModule } from '@angular/core';\nimport { IGX_SELECT_DIRECTIVES } from './public_api';\n\n/**\n * @hidden\n * @deprecated\n * IMPORTANT: The following is NgModule exported for backwards-compatibility before standalone components\n */\n@NgModule({\n imports: [\n ...IGX_SELECT_DIRECTIVES\n ],\n exports: [\n ...IGX_SELECT_DIRECTIVES\n ]\n})\nexport class IgxSelectModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i1.IgxSelectComponent","i2.IgxSelectItemComponent","i3.IgxSelectGroupComponent","i1.IgxSelectHeaderDirective","i1.IgxSelectFooterDirective","i1.IgxSelectToggleIconDirective"],"mappings":"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"}
1
+ {"version":3,"file":"igniteui-angular-select.mjs","sources":["../../../projects/igniteui-angular/select/src/select/select-group.component.ts","../../../projects/igniteui-angular/select/src/select/select-item.component.ts","../../../projects/igniteui-angular/select/src/select/select-item.component.html","../../../projects/igniteui-angular/select/src/select/select-navigation.directive.ts","../../../projects/igniteui-angular/select/src/select/select.component.ts","../../../projects/igniteui-angular/select/src/select/select.component.html","../../../projects/igniteui-angular/select/src/select/select-overlap-positioning-strategy.ts","../../../projects/igniteui-angular/select/src/select/public_api.ts","../../../projects/igniteui-angular/select/src/select/select.module.ts","../../../projects/igniteui-angular/select/src/igniteui-angular-select.ts"],"sourcesContent":["import { Component, ChangeDetectionStrategy } from '@angular/core';\nimport { IgxDropDownGroupComponent } from 'igniteui-angular/drop-down';\n\n/**\n * The `<igx-select-item>` is a container intended for row items in\n * a `<igx-select>` container.\n */\n@Component({\n selector: 'igx-select-item-group',\n template: `\n <label id=\"{{labelId}}\">{{ label }}</label>\n <ng-content select=\"igx-select-item\"></ng-content>\n `,\n changeDetection: ChangeDetectionStrategy.Eager,\n standalone: true\n})\nexport class IgxSelectGroupComponent extends IgxDropDownGroupComponent {\n}\n","import { Component, Input, ChangeDetectionStrategy } from '@angular/core';\nimport { IgxDropDownItemComponent } from 'igniteui-angular/drop-down';\n\n@Component({\n selector: 'igx-select-item',\n\ttemplateUrl: 'select-item.component.html',\n changeDetection: ChangeDetectionStrategy.Eager,\n standalone: true\n})\nexport class IgxSelectItemComponent extends IgxDropDownItemComponent {\n /** @hidden @internal */\n public override isHeader: boolean;\n\n private _text: any;\n\n /**\n * Gets/Sets the item's text to be displayed in the select component's input when the item is selected.\n *\n * ```typescript\n * //get\n * let mySelectedItem = this.dropDown.selectedItem;\n * let selectedItemText = mySelectedItem.text;\n * ```\n *\n * ```html\n * // set\n * <igx-select-item [text]=\"'London'\"></igx-select-item>\n * ```\n */\n @Input()\n public get text(): string {\n return this._text;\n }\n\n public set text(text: string) {\n this._text = text;\n }\n\n /** @hidden @internal */\n public get itemText() {\n if (this._text !== undefined) {\n return this._text;\n }\n // If text @Input is undefined, try extract a meaningful item text out of the item template\n return this.elementRef.nativeElement.textContent.trim();\n }\n\n /**\n * Sets/Gets if the item is the currently selected one in the select\n *\n * ```typescript\n * let mySelectedItem = this.select.selectedItem;\n * let isMyItemSelected = mySelectedItem.selected; // true\n * ```\n */\n public override get selected() {\n return !this.isHeader && !this.disabled && this.selection.is_item_selected(this.dropDown.id, this);\n }\n\n public override set selected(value: any) {\n if (value && !this.isHeader && !this.disabled) {\n this.dropDown.selectItem(this);\n }\n }\n}\n","<span class=\"igx-drop-down__content\">\n <ng-content select=\"igx-prefix, [igxPrefix]\"></ng-content>\n <span class=\"igx-drop-down__inner\"><ng-content></ng-content></span>\n <ng-content select=\"igx-suffix, [igxSuffix]\"></ng-content>\n</span>\n","import { Directive, Input, OnDestroy } from '@angular/core';\nimport { Subscription, timer } from 'rxjs';\nimport { IgxSelectItemComponent } from './select-item.component';\nimport { IgxSelectBase } from './select.common';\nimport { IgxDropDownItemNavigationDirective } from 'igniteui-angular/drop-down';\n\n/** @hidden @internal */\n@Directive({\n selector: '[igxSelectItemNavigation]',\n standalone: true\n})\nexport class IgxSelectItemNavigationDirective extends IgxDropDownItemNavigationDirective implements OnDestroy {\n protected override _target: IgxSelectBase = null;\n\n @Input('igxSelectItemNavigation')\n public override get target(): IgxSelectBase {\n return this._target;\n }\n public override set target(target: IgxSelectBase) {\n this._target = target ? target : this.dropdown as IgxSelectBase;\n }\n\n /** Captures keydown events and calls the appropriate handlers on the target component */\n public override handleKeyDown(event: KeyboardEvent) {\n if (!event) {\n return;\n }\n\n const key = event.key.toLowerCase();\n if (event.altKey && (key === 'arrowdown' || key === 'arrowup' || key === 'down' || key === 'up')) {\n this.target.toggle();\n return;\n }\n\n if (this.target.collapsed) {\n switch (key) {\n case 'space':\n case 'spacebar':\n case ' ':\n case 'enter':\n event.preventDefault();\n this.target.open();\n return;\n case 'arrowdown':\n case 'down':\n this.target.navigateNext();\n this.target.selectItem(this.target.focusedItem);\n event.preventDefault();\n return;\n case 'arrowup':\n case 'up':\n this.target.navigatePrev();\n this.target.selectItem(this.target.focusedItem);\n event.preventDefault();\n return;\n default:\n break;\n }\n } else if (key === 'tab' || event.shiftKey && key === 'tab') {\n this.target.close();\n }\n\n super.handleKeyDown(event);\n this.captureKey(event);\n }\n\n private inputStream = '';\n private clearStream$ = Subscription.EMPTY;\n\n public captureKey(event: KeyboardEvent) {\n // relying only on key, available on all major browsers:\n // https://caniuse.com/#feat=keyboardevent-key (IE/Edge quirk doesn't affect letter typing)\n if (!event || !event.key || event.key.length > 1 || event.key === ' ' || event.key === 'spacebar') {\n // ignore longer keys ('Alt', 'ArrowDown', etc) AND spacebar (used of open/close)\n return;\n }\n\n this.clearStream$.unsubscribe();\n this.clearStream$ = timer(500).subscribe(() => {\n this.inputStream = '';\n });\n\n this.inputStream += event.key;\n const focusedItem = this.target.focusedItem as IgxSelectItemComponent;\n\n // select the item\n if (focusedItem && this.inputStream.length > 1 && focusedItem.itemText.toLowerCase().startsWith(this.inputStream.toLowerCase())) {\n return;\n }\n this.activateItemByText(this.inputStream);\n }\n\n public activateItemByText(text: string) {\n const items = this.target.items as IgxSelectItemComponent[];\n\n // ^ this is focused OR selected if the dd is closed\n\n let nextItem = this.findNextItem(items, text);\n\n // If there is no such an item starting with the current text input stream AND the last Char in the input stream\n // is the same as the first one, find next item starting with the same first Char.\n // Covers cases of holding down the same key Ex: \"pppppp\" that iterates trough list items starting with \"p\".\n if (!nextItem && text.charAt(0) === text.charAt(text.length - 1)) {\n text = text.slice(0, 1);\n nextItem = this.findNextItem(items, text);\n }\n\n // If there is no other item to be found, do not change the active item.\n if (!nextItem) {\n return;\n }\n\n if (this.target.collapsed) {\n this.target.selectItem(nextItem);\n }\n this.target.navigateItem(items.indexOf(nextItem));\n }\n\n public ngOnDestroy(): void {\n this.clearStream$.unsubscribe();\n }\n\n private findNextItem(items: IgxSelectItemComponent[], text: string) {\n const activeItemIndex = items.indexOf(this.target.focusedItem as IgxSelectItemComponent) || 0;\n\n // Match next item in ddl items and wrap around if needed\n return items.slice(activeItemIndex + 1).find(x => !x.disabled && (x.itemText.toLowerCase().startsWith(text.toLowerCase()))) ||\n items.slice(0, activeItemIndex).find(x => !x.disabled && (x.itemText.toLowerCase().startsWith(text.toLowerCase())));\n }\n}\n","import {\n AfterContentChecked,\n AfterContentInit,\n AfterViewInit,\n booleanAttribute,\n Component,\n ContentChild,\n ContentChildren,\n Directive,\n ElementRef,\n EventEmitter,\n forwardRef,\n HostBinding,\n Injector,\n Input,\n OnDestroy,\n OnInit,\n Output,\n QueryList,\n TemplateRef,\n ViewChild,\n ViewChildren,\n inject,\n ChangeDetectionStrategy,\n ViewEncapsulation\n} from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { AbstractControl, ControlValueAccessor, NgControl, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { noop } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport {\n EditorProvider,\n IBaseCancelableBrowserEventArgs,\n IBaseEventArgs,\n AbsoluteScrollStrategy,\n AutoPositionStrategy,\n OverlaySettings\n} from 'igniteui-angular/core';\nimport { IgxSelectItemComponent } from './select-item.component';\nimport { IgxSelectBase } from './select.common';\nimport { IgxHintDirective, IgxInputGroupType, IgxPrefixDirective, IGX_INPUT_GROUP_TYPE, IgxInputGroupComponent, IgxInputDirective, IgxInputState, IgxLabelDirective, IgxReadOnlyInputDirective, IgxSuffixDirective } from 'igniteui-angular/input-group';\nimport { ToggleViewCancelableEventArgs, ToggleViewEventArgs, IgxToggleDirective } from 'igniteui-angular/directives';\nimport { IgxOverlayService } from 'igniteui-angular/core';\nimport { IgxIconComponent } from 'igniteui-angular/icon';\nimport { IgxSelectItemNavigationDirective } from './select-navigation.directive';\nimport { IGX_DROPDOWN_BASE, IgxDropDownComponent, IgxDropDownItemBaseDirective, ISelectionEventArgs, Navigate } from 'igniteui-angular/drop-down';\n\n/** @hidden @internal */\n@Directive({\n selector: '[igxSelectToggleIcon]',\n standalone: true\n})\nexport class IgxSelectToggleIconDirective {\n}\n\n/** @hidden @internal */\n@Directive({\n selector: '[igxSelectHeader]',\n standalone: true\n})\nexport class IgxSelectHeaderDirective {\n}\n\n/** @hidden @internal */\n@Directive({\n selector: '[igxSelectFooter]',\n standalone: true\n})\nexport class IgxSelectFooterDirective {\n}\n\n/**\n * **Ignite UI for Angular Select** -\n * [Documentation](https://www.infragistics.com/products/ignite-ui-angular/angular/components/select)\n *\n * The `igxSelect` provides an input with dropdown list allowing selection of a single item.\n *\n * Example:\n * ```html\n * <igx-select #select1 [placeholder]=\"'Pick One'\">\n * <label igxLabel>Select Label</label>\n * <igx-select-item *ngFor=\"let item of items\" [value]=\"item.field\">\n * {{ item.field }}\n * </igx-select-item>\n * </igx-select>\n * ```\n */\n@Component({\n selector: 'igx-select',\n templateUrl: './select.component.html',\n providers: [\n { provide: NG_VALUE_ACCESSOR, useExisting: IgxSelectComponent, multi: true },\n { provide: IGX_DROPDOWN_BASE, useExisting: IgxSelectComponent }\n ],\n styleUrls: ['../../../drop-down/src/drop-down/drop-down.component.css', 'select.component.css'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.Eager,\n imports: [IgxInputGroupComponent, IgxInputDirective, IgxSelectItemNavigationDirective, IgxSuffixDirective, IgxReadOnlyInputDirective, NgTemplateOutlet, IgxIconComponent, IgxToggleDirective]\n})\nexport class IgxSelectComponent extends IgxDropDownComponent implements IgxSelectBase, ControlValueAccessor,\n AfterContentInit, OnInit, AfterViewInit, OnDestroy, EditorProvider, AfterContentChecked {\n protected overlayService = inject<IgxOverlayService>(IgxOverlayService);\n private _inputGroupType = inject<IgxInputGroupType>(IGX_INPUT_GROUP_TYPE, { optional: true });\n private _injector = inject(Injector);\n\n\n /** @hidden @internal */\n @ViewChild('inputGroup', { read: IgxInputGroupComponent, static: true }) public inputGroup: IgxInputGroupComponent;\n\n /** @hidden @internal */\n @ViewChild('input', { read: IgxInputDirective, static: true }) public input: IgxInputDirective;\n\n /** @hidden @internal */\n @ContentChildren(forwardRef(() => IgxSelectItemComponent), { descendants: true })\n public override children: QueryList<IgxSelectItemComponent>;\n\n @ContentChildren(IgxPrefixDirective, { descendants: true })\n protected prefixes: QueryList<IgxPrefixDirective>;\n\n @ContentChildren(IgxSuffixDirective, { descendants: true })\n protected suffixes: QueryList<IgxSuffixDirective>;\n\n @ContentChildren(IgxHintDirective, { descendants: true })\n protected contentHints: QueryList<IgxHintDirective>;\n\n @ViewChildren(IgxSuffixDirective)\n protected internalSuffixes: QueryList<IgxSuffixDirective>;\n\n /** @hidden @internal */\n @ContentChild(forwardRef(() => IgxLabelDirective), { static: true }) public label: IgxLabelDirective;\n\n /**\n * Sets input placeholder.\n *\n */\n @Input() public placeholder;\n\n /**\n * Disables the component.\n * ```html\n * <igx-select [disabled]=\"'true'\"></igx-select>\n * ```\n */\n @Input({ transform: booleanAttribute }) public disabled = false;\n\n /**\n * Sets custom overlay settings for the select component.\n * ```html\n * <igx-select [overlaySettings]=\"customOverlaySettings\"></igx-select>\n * ```\n */\n @Input()\n public overlaySettings: OverlaySettings;\n\n @HostBinding('class.igx-select')\n public defaultClass = true;\n\n /** @hidden @internal */\n @HostBinding('style.maxHeight')\n public override maxHeight = '256px';\n\n /**\n * Emitted before the dropdown is opened\n *\n * ```html\n * <igx-select opening='handleOpening($event)'></igx-select>\n * ```\n */\n @Output()\n public override opening = new EventEmitter<IBaseCancelableBrowserEventArgs>();\n\n /**\n * Emitted after the dropdown is opened\n *\n * ```html\n * <igx-select (opened)='handleOpened($event)'></igx-select>\n * ```\n */\n @Output()\n public override opened = new EventEmitter<IBaseEventArgs>();\n\n /**\n * Emitted before the dropdown is closed\n *\n * ```html\n * <igx-select (closing)='handleClosing($event)'></igx-select>\n * ```\n */\n @Output()\n public override closing = new EventEmitter<IBaseCancelableBrowserEventArgs>();\n\n /**\n * Emitted after the dropdown is closed\n *\n * ```html\n * <igx-select (closed)='handleClosed($event)'></igx-select>\n * ```\n */\n @Output()\n public override closed = new EventEmitter<IBaseEventArgs>();\n\n /**\n * The custom template, if any, that should be used when rendering the select TOGGLE(open/close) button\n *\n * ```typescript\n * // Set in typescript\n * const myCustomTemplate: TemplateRef<any> = myComponent.customTemplate;\n * myComponent.select.toggleIconTemplate = myCustomTemplate;\n * ```\n * ```html\n * <!-- Set in markup -->\n * <igx-select #select>\n * ...\n * <ng-template igxSelectToggleIcon let-collapsed>\n * <igx-icon>{{ collapsed ? 'remove_circle' : 'remove_circle_outline'}}</igx-icon>\n * </ng-template>\n * </igx-select>\n * ```\n */\n @ContentChild(IgxSelectToggleIconDirective, { read: TemplateRef })\n public toggleIconTemplate: TemplateRef<any> = null;\n\n /**\n * The custom template, if any, that should be used when rendering the HEADER for the select items list\n *\n * ```typescript\n * // Set in typescript\n * const myCustomTemplate: TemplateRef<any> = myComponent.customTemplate;\n * myComponent.select.headerTemplate = myCustomTemplate;\n * ```\n * ```html\n * <!-- Set in markup -->\n * <igx-select #select>\n * ...\n * <ng-template igxSelectHeader>\n * <div class=\"select__header\">\n * This is a custom header\n * </div>\n * </ng-template>\n * </igx-select>\n * ```\n */\n @ContentChild(IgxSelectHeaderDirective, { read: TemplateRef, static: false })\n public headerTemplate: TemplateRef<any> = null;\n\n /**\n * The custom template, if any, that should be used when rendering the FOOTER for the select items list\n *\n * ```typescript\n * // Set in typescript\n * const myCustomTemplate: TemplateRef<any> = myComponent.customTemplate;\n * myComponent.select.footerTemplate = myCustomTemplate;\n * ```\n * ```html\n * <!-- Set in markup -->\n * <igx-select #select>\n * ...\n * <ng-template igxSelectFooter>\n * <div class=\"select__footer\">\n * This is a custom footer\n * </div>\n * </ng-template>\n * </igx-select>\n * ```\n */\n @ContentChild(IgxSelectFooterDirective, { read: TemplateRef, static: false })\n public footerTemplate: TemplateRef<any> = null;\n\n @ContentChild(IgxHintDirective, { read: ElementRef }) private hintElement: ElementRef;\n\n /** @hidden @internal */\n public override width: string;\n\n /** @hidden @internal */\n public override allowItemsFocus = false;\n\n /** @hidden @internal */\n public override height: string;\n\n private ngControl: NgControl = null;\n private _overlayDefaults: OverlaySettings;\n private _value: any;\n private _type = null;\n\n /**\n * Gets/Sets the component value.\n *\n * ```typescript\n * // get\n * let selectValue = this.select.value;\n * ```\n *\n * ```typescript\n * // set\n * this.select.value = 'London';\n * ```\n * ```html\n * <igx-select [value]=\"value\"></igx-select>\n * ```\n */\n @Input()\n public get value(): any {\n return this._value;\n }\n public set value(v: any) {\n if (this._value === v) {\n return;\n }\n this._value = v;\n this.setSelection(this.items.find(x => x.value === this.value));\n }\n\n /**\n * Sets how the select will be styled.\n * The allowed values are `line`, `box` and `border`. Defaults to `box` if no input-group type is set.\n * ```html\n * <igx-select [type]=\"'border'\"></igx-select>\n * ```\n */\n @Input()\n public get type(): IgxInputGroupType {\n return this._type || this._inputGroupType || 'box';\n }\n\n public set type(val: IgxInputGroupType) {\n this._type = val;\n }\n\n /** @hidden @internal */\n public get selectionValue() {\n const selectedItem = this.selectedItem;\n return selectedItem ? selectedItem.itemText : '';\n }\n\n /** @hidden @internal */\n public override get selectedItem(): IgxSelectItemComponent {\n return this.selection.first_item(this.id);\n }\n\n private _onChangeCallback: (_: any) => void = noop;\n private _onTouchedCallback: () => void = noop;\n\n //#region ControlValueAccessor\n\n /** @hidden @internal */\n public writeValue = (value: any) => {\n this.value = value;\n };\n\n /** @hidden @internal */\n public registerOnChange(fn: any): void {\n this._onChangeCallback = fn;\n }\n\n /** @hidden @internal */\n public registerOnTouched(fn: any): void {\n this._onTouchedCallback = fn;\n }\n\n /** @hidden @internal */\n public setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n //#endregion\n\n /** @hidden @internal */\n public getEditElement(): HTMLInputElement {\n return this.input.nativeElement;\n }\n\n /** @hidden @internal */\n public override selectItem(newSelection: IgxDropDownItemBaseDirective, event?) {\n const oldSelection = this.selectedItem ?? <IgxDropDownItemBaseDirective>{};\n\n if (newSelection === null || newSelection.disabled || newSelection.isHeader) {\n return;\n }\n\n if (newSelection === oldSelection) {\n this.toggleDirective.close();\n return;\n }\n\n const args: ISelectionEventArgs = { oldSelection, newSelection, cancel: false, owner: this };\n this.selectionChanging.emit(args);\n\n if (args.cancel) {\n return;\n }\n\n this.setSelection(newSelection);\n this._value = newSelection.value;\n\n if (event) {\n this.toggleDirective.close();\n }\n\n this.cdr.detectChanges();\n this._onChangeCallback(this.value);\n }\n\n /** @hidden @internal */\n public getFirstItemElement(): HTMLElement {\n return this.children.first.element.nativeElement;\n }\n\n /**\n * Opens the select\n *\n * ```typescript\n * this.select.open();\n * ```\n */\n public override open(overlaySettings?: OverlaySettings) {\n if (this.disabled || this.items.length === 0) {\n return;\n }\n\n if (!this.selectedItem) {\n this.navigateFirst();\n }\n\n super.open(this.getMergedOverlaySettings(overlaySettings));\n }\n\n protected inputGroupClick(event: MouseEvent, overlaySettings?: OverlaySettings) {\n const targetElement = event.target as HTMLElement;\n\n if (this.hintElement && targetElement.contains(this.hintElement.nativeElement)) {\n return;\n }\n this.toggle(this.getMergedOverlaySettings(overlaySettings));\n }\n\n /** @hidden @internal */\n public ngAfterContentInit() {\n const changes$ = this.children.changes.pipe(takeUntil(this.destroy$)).subscribe(() => {\n this.setSelection(this.items.find(x => x.value === this.value));\n this.cdr.detectChanges();\n });\n Promise.resolve().then(() => {\n if (!changes$.closed) {\n this.children.notifyOnChanges();\n }\n });\n }\n\n /**\n * Event handlers\n *\n * @hidden @internal\n */\n public handleOpening(e: ToggleViewCancelableEventArgs) {\n const args: IBaseCancelableBrowserEventArgs = { owner: this, event: e.event, cancel: e.cancel };\n this.opening.emit(args);\n\n e.cancel = args.cancel;\n if (args.cancel) {\n return;\n }\n }\n\n /** @hidden @internal */\n public override onToggleContentAppended(event: ToggleViewEventArgs) {\n const info = this.overlayService.getOverlayById(event.id);\n if ((info?.settings?.positionStrategy as { isItemOverlapPositioning?: boolean })?.isItemOverlapPositioning) {\n return;\n }\n super.onToggleContentAppended(event);\n }\n\n /** @hidden @internal */\n public handleOpened() {\n this.updateItemFocus();\n this.opened.emit({ owner: this });\n }\n\n /** @hidden @internal */\n public handleClosing(e: ToggleViewCancelableEventArgs) {\n const args: IBaseCancelableBrowserEventArgs = { owner: this, event: e.event, cancel: e.cancel };\n this.closing.emit(args);\n e.cancel = args.cancel;\n }\n\n /** @hidden @internal */\n public handleClosed() {\n this.focusItem(false);\n this.closed.emit({ owner: this });\n }\n\n /** @hidden @internal */\n public onBlur(): void {\n this._onTouchedCallback();\n if (this.ngControl && this.ngControl.invalid) {\n this.input.valid = IgxInputState.INVALID;\n } else {\n this.input.valid = IgxInputState.INITIAL;\n }\n }\n\n /** @hidden @internal */\n public onFocus(): void {\n this._onTouchedCallback();\n }\n\n /**\n * @hidden @internal\n */\n public override ngOnInit() {\n this.ngControl = this._injector.get<NgControl>(NgControl, null);\n }\n\n /**\n * @hidden @internal\n */\n public override ngAfterViewInit() {\n super.ngAfterViewInit();\n\n if (this.ngControl) {\n this.ngControl.statusChanges.pipe(takeUntil(this.destroy$)).subscribe(this.onStatusChanged.bind(this));\n this.manageRequiredAsterisk();\n }\n\n const targetElement = this.inputGroup.element.nativeElement.querySelector('.igx-input-group__bundle') as HTMLElement;\n this._overlayDefaults = {\n target: targetElement,\n modal: false,\n positionStrategy: new AutoPositionStrategy(),\n scrollStrategy: new AbsoluteScrollStrategy(),\n excludeFromOutsideClick: [targetElement]\n };\n\n this.cdr.detectChanges();\n }\n\n /** @hidden @internal */\n public ngAfterContentChecked() {\n if (this.inputGroup && this.prefixes?.length > 0) {\n this.inputGroup.prefixes = this.prefixes;\n }\n\n if (this.inputGroup) {\n const suffixesArray = this.suffixes?.toArray() ?? [];\n const internalSuffixesArray = this.internalSuffixes?.toArray() ?? [];\n const mergedSuffixes = new QueryList<IgxSuffixDirective>();\n mergedSuffixes.reset([\n ...suffixesArray,\n ...internalSuffixesArray\n ]);\n this.inputGroup.suffixes = mergedSuffixes;\n }\n\n if (this.inputGroup) {\n this.inputGroup.hints = this.contentHints;\n }\n }\n\n /** @hidden @internal */\n public get toggleIcon(): string {\n return this.collapsed ? 'input_expand' : 'input_collapse';\n }\n\n /**\n * @hidden @internal\n * Prevent input blur - closing the items container on Header/Footer Template click.\n */\n public mousedownHandler(event) {\n event.preventDefault();\n }\n\n protected onStatusChanged() {\n this.manageRequiredAsterisk();\n\n if (this.ngControl && !this.ngControl.disabled && this.isTouchedOrDirty) {\n if (this.hasValidators && this.inputGroup.isFocused) {\n this.input.valid = this.ngControl.valid ? IgxInputState.VALID : IgxInputState.INVALID;\n } else {\n // B.P. 18 May 2021: IgxDatePicker does not reset its state upon resetForm #9526\n this.input.valid = this.ngControl.valid ? IgxInputState.INITIAL : IgxInputState.INVALID;\n }\n } else {\n this.input.valid = IgxInputState.INITIAL;\n }\n }\n\n private get isTouchedOrDirty(): boolean {\n return (this.ngControl.control.touched || this.ngControl.control.dirty);\n }\n\n private get hasValidators(): boolean {\n return (!!this.ngControl.control.validator || !!this.ngControl.control.asyncValidator);\n }\n\n protected override navigate(direction: Navigate, currentIndex?: number) {\n if (this.collapsed && this.selectedItem) {\n this.navigateItem(this.selectedItem.itemIndex);\n }\n super.navigate(direction, currentIndex);\n }\n\n protected manageRequiredAsterisk(): void {\n const hasRequiredHTMLAttribute = this.elementRef.nativeElement.hasAttribute('required');\n let isRequired = false;\n\n if (this.ngControl && this.ngControl.control.validator) {\n const error = this.ngControl.control.validator({} as AbstractControl);\n isRequired = !!(error && error.required);\n }\n\n this.inputGroup.isRequired = isRequired;\n\n if (this.input?.nativeElement) {\n this.input.nativeElement.setAttribute('aria-required', isRequired.toString());\n }\n\n // Handle validator removal case\n if (!isRequired && !hasRequiredHTMLAttribute) {\n this.input.valid = IgxInputState.INITIAL;\n }\n\n this.cdr.markForCheck();\n }\n\n private getMergedOverlaySettings(overlaySettings?: OverlaySettings): OverlaySettings {\n const merged = Object.assign({}, this._overlayDefaults, this.overlaySettings, overlaySettings);\n if ((merged.positionStrategy as { isItemOverlapPositioning?: boolean })?.isItemOverlapPositioning) {\n merged.target = this.getEditElement();\n }\n return merged;\n }\n\n private setSelection(item: IgxDropDownItemBaseDirective) {\n if (item && item.value !== undefined && item.value !== null) {\n this.selection.set(this.id, new Set([item]));\n } else {\n this.selection.clear(this.id);\n }\n }\n}\n\n","<igx-input-group #inputGroup class=\"input-group\" (click)=\"inputGroupClick($event)\" [type]=\"type === 'search' ? 'line' : type\">\n <ng-container ngProjectAs=\"[igxLabel]\">\n <ng-content select=\"[igxLabel]\"></ng-content>\n </ng-container>\n <ng-container ngProjectAs=\"igx-prefix\">\n <ng-content select=\"igx-prefix,[igxPrefix]\"></ng-content>\n </ng-container>\n <input #input class=\"input\" type=\"text\" igxInput [igxSelectItemNavigation]=\"this\"\n [disabled]=\"disabled\"\n readonly=\"true\"\n [igxReadOnlyInput]=\"false\"\n [attr.placeholder]=\"this.placeholder\"\n [value]=\"this.selectionValue\"\n role=\"combobox\"\n aria-haspopup=\"listbox\"\n [attr.aria-labelledby]=\"labelledBy || label?.id\"\n [attr.aria-expanded]=\"!this.collapsed\"\n [attr.aria-owns]=\"this.listId\"\n [attr.aria-activedescendant]=\"!this.collapsed ? this.focusedItem?.id : null\"\n (blur)=\"onBlur()\"\n (focus)=\"onFocus()\"\n />\n <ng-container ngProjectAs=\"igx-suffix\">\n <ng-content select=\"igx-suffix,[igxSuffix]\"></ng-content>\n </ng-container>\n <igx-suffix class=\"igx-input-group__toggle-button\">\n @if (toggleIconTemplate) {\n <ng-container *ngTemplateOutlet=\"toggleIconTemplate; context: {$implicit: this.collapsed}\"></ng-container>\n }\n @if (!toggleIconTemplate) {\n <igx-icon family=\"default\" [name]=\"toggleIcon\"></igx-icon>\n }\n </igx-suffix>\n <ng-container ngProjectAs=\"igx-hint, [igxHint]\" >\n <ng-content select=\"igx-hint, [igxHint]\"></ng-content>\n </ng-container>\n</igx-input-group>\n<div igxToggle class=\"igx-drop-down\" (mousedown)=\"mousedownHandler($event);\"\n (appended)=\"onToggleContentAppended($event)\"\n (opening)=\"handleOpening($event)\"\n (opened)=\"handleOpened()\"\n (closing)=\"handleClosing($event)\"\n (closed)=\"handleClosed()\">\n\n @if (headerTemplate) {\n <div class=\"igx-drop-down__select-header\">\n <ng-content *ngTemplateOutlet=\"headerTemplate\"></ng-content>\n </div>\n }\n\n <!-- #7436 LMB scrolling closes items container - unselectable attribute is IE specific -->\n <div #scrollContainer class=\"igx-drop-down__list-scroll\" unselectable=\"on\" [style.maxHeight]=\"maxHeight\"\n [attr.id]=\"this.listId\" role=\"listbox\" [attr.aria-labelledby]=\"labelledBy || label?.id\">\n <ng-content select=\"igx-select-item, igx-select-item-group\"></ng-content>\n </div>\n\n @if (footerTemplate) {\n <div class=\"igx-drop-down__select-footer\">\n <ng-container *ngTemplateOutlet=\"footerTemplate\"></ng-container>\n </div>\n }\n</div>\n","import { VerticalAlignment, HorizontalAlignment, PositionSettings, ConnectedFit, Point, Size, BaseFitPositionStrategy, Util } from 'igniteui-angular/core';\nimport { IPositionStrategy } from 'igniteui-angular/core';\n\nimport type { IgxSelectComponent } from './select.component';\nimport { fadeIn, fadeOut } from 'igniteui-angular/animations';\n\n/**\n * Positions the select dropdown so that the active item's text overlaps\n * the value displayed in the select input box.\n */\nexport class IgxSelectOverlapPositionStrategy extends BaseFitPositionStrategy implements IPositionStrategy {\n private _selectDefaultSettings = {\n horizontalDirection: HorizontalAlignment.Right,\n verticalDirection: VerticalAlignment.Bottom,\n horizontalStartPoint: HorizontalAlignment.Left,\n verticalStartPoint: VerticalAlignment.Top,\n openAnimation: fadeIn,\n closeAnimation: fadeOut\n };\n\n // Global variables required for cases of !initialCall (page scroll/overlay repositionAll)\n private global_yOffset = 0;\n private global_xOffset = 0;\n private global_styles: SelectStyles = {};\n\n /** @hidden @internal */\n public isItemOverlapPositioning = true;\n\n constructor(private select: IgxSelectComponent, settings?: PositionSettings) {\n super();\n this.settings = Object.assign({}, this._selectDefaultSettings, settings);\n }\n\n /**\n * Position the element based on the PositionStrategy implementing this interface.\n *\n * @param contentElement The HTML element to be positioned\n * @param size Size of the element\n * @param document reference to the Document object\n * @param initialCall should be true if this is the initial call to the method\n * @param target attaching target for the component to show\n * ```typescript\n * settings.positionStrategy.position(content, size, document, true);\n * ```\n */\n public override position(contentElement: HTMLElement,\n _size: Size,\n document?: Document,\n initialCall?: boolean,\n target?: Point | HTMLElement): void {\n const targetElement = target;\n const rects = super.calculateElementRectangles(contentElement, targetElement);\n // selectFit obj, to be used for both cases of initialCall and !initialCall(page scroll/overlay repositionAll)\n const selectFit: SelectFit = {\n verticalOffset: this.global_yOffset,\n horizontalOffset: this.global_xOffset,\n targetRect: rects.targetRect,\n contentElementRect: rects.elementRect,\n styles: this.global_styles,\n scrollContainer: this.select.scrollContainer,\n scrollContainerRect: this.select.scrollContainer.getBoundingClientRect()\n };\n\n if (initialCall) {\n this.select.scrollContainer.scrollTop = 0;\n // Fill in the required selectFit object properties.\n selectFit.viewPortRect = Util.getViewportRect(document);\n selectFit.itemElement = this.getInteractionItemElement();\n selectFit.itemRect = selectFit.itemElement.getBoundingClientRect();\n\n // Calculate input and selected item elements style related variables\n selectFit.styles = this.calculateStyles(selectFit, targetElement);\n\n selectFit.scrollAmount = this.calculateScrollAmount(selectFit);\n // Calculate how much to offset the overlay container.\n this.calculateYoffset(selectFit);\n this.calculateXoffset(selectFit);\n\n super.updateViewPortFit(selectFit);\n // container does not fit in viewPort and is out on Top or Bottom\n if (selectFit.fitVertical.back < 0 || selectFit.fitVertical.forward < 0) {\n this.fitInViewport(contentElement, selectFit);\n }\n // Calculate scrollTop independently of the dropdown, as we cover all `igsSelect` specific positioning and\n // scrolling to selected item scenarios here.\n this.select.scrollContainer.scrollTop = selectFit.scrollAmount;\n }\n this.setStyles(contentElement, selectFit);\n }\n\n /**\n * Obtain the selected item if there is such one or otherwise use the first one\n */\n private getInteractionItemElement(): HTMLElement {\n let itemElement;\n if (this.select.selectedItem) {\n itemElement = this.select.selectedItem.element.nativeElement;\n } else {\n itemElement = this.select.getFirstItemElement();\n }\n return itemElement;\n }\n\n /**\n * Position the items outer container so selected item text is positioned over input text and if header\n * And/OR footer - both header/footer are visible\n *\n * @param selectFit selectFit to use for computation.\n */\n protected override fitInViewport(_contentElement: HTMLElement, selectFit: SelectFit) {\n const footer = selectFit.scrollContainerRect.bottom - selectFit.contentElementRect.bottom;\n const header = selectFit.scrollContainerRect.top - selectFit.contentElementRect.top;\n const lastItemFitSize = selectFit.targetRect.bottom + selectFit.styles.itemTextToInputTextDiff - footer;\n const firstItemFitSize = selectFit.targetRect.top - selectFit.styles.itemTextToInputTextDiff - header;\n // out of viewPort on Top\n if (selectFit.fitVertical.back < 0) {\n const possibleScrollAmount = selectFit.scrollContainer.scrollHeight -\n selectFit.scrollContainerRect.height - selectFit.scrollAmount;\n if (possibleScrollAmount + selectFit.fitVertical.back > 0 && firstItemFitSize > selectFit.viewPortRect.top) {\n selectFit.scrollAmount -= selectFit.fitVertical.back;\n selectFit.verticalOffset -= selectFit.fitVertical.back;\n this.global_yOffset = selectFit.verticalOffset;\n } else {\n selectFit.verticalOffset = 0 ;\n this.global_yOffset = 0;\n }\n // out of viewPort on Bottom\n } else if (selectFit.fitVertical.forward < 0) {\n if (selectFit.scrollAmount + selectFit.fitVertical.forward > 0 && lastItemFitSize < selectFit.viewPortRect.bottom) {\n selectFit.scrollAmount += selectFit.fitVertical.forward;\n selectFit.verticalOffset += selectFit.fitVertical.forward;\n this.global_yOffset = selectFit.verticalOffset;\n } else {\n selectFit.verticalOffset = -selectFit.contentElementRect.height + selectFit.targetRect.height;\n this.global_yOffset = selectFit.verticalOffset;\n }\n }\n }\n\n /**\n * Sets element's style which effectively positions the provided element\n *\n * @param element Element to position\n * @param selectFit selectFit to use for computation.\n * @param initialCall should be true if this is the initial call to the position method calling setStyles\n */\n protected setStyles(contentElement: HTMLElement, selectFit: SelectFit) {\n super.setStyle(contentElement, selectFit.targetRect, selectFit.contentElementRect, selectFit);\n contentElement.style.width = `${selectFit.styles.contentElementNewWidth}px`; // manage container based on paddings?\n this.global_styles.contentElementNewWidth = selectFit.styles.contentElementNewWidth;\n }\n\n /**\n * Calculate selected item scroll position.\n */\n private calculateScrollAmount(selectFit: SelectFit): number {\n const itemElementRect = selectFit.itemRect;\n const scrollContainer = selectFit.scrollContainer;\n const scrollContainerRect = selectFit.scrollContainerRect;\n const scrollDelta = scrollContainerRect.top - itemElementRect.top;\n let scrollPosition = scrollContainer.scrollTop - scrollDelta;\n\n const dropDownHeight = scrollContainer.clientHeight;\n scrollPosition -= dropDownHeight / 2;\n scrollPosition += itemElementRect.height / 2;\n\n return Math.round(Math.min(Math.max(0, scrollPosition), scrollContainer.scrollHeight - scrollContainerRect.height));\n }\n\n /**\n * Calculate the necessary input and selected item styles to be used for positioning item text over input text.\n * Calculate & Set default items container width.\n *\n * @param selectFit selectFit to use for computation.\n */\n private calculateStyles(selectFit: SelectFit, target: Point | HTMLElement): SelectStyles {\n const styles: SelectStyles = {};\n const inputElementStyles = window.getComputedStyle(target as Element);\n const itemElementStyles = window.getComputedStyle(selectFit.itemElement);\n const numericInputFontSize = parseFloat(inputElementStyles.fontSize);\n const numericInputPaddingTop = parseFloat(inputElementStyles.paddingTop);\n const numericInputPaddingBottom = parseFloat(inputElementStyles.paddingBottom);\n const numericItemFontSize = parseFloat(itemElementStyles.fontSize);\n const inputTextToInputTop = ((selectFit.targetRect.bottom - numericInputPaddingBottom)\n - (selectFit.targetRect.top + numericInputPaddingTop) - numericInputFontSize) / 2;\n const itemTextToItemTop = (selectFit.itemRect.height - numericItemFontSize) / 2;\n styles.itemTextToInputTextDiff = Math.round(itemTextToItemTop - inputTextToInputTop - numericInputPaddingTop);\n\n const numericLeftPadding = parseFloat(itemElementStyles.paddingLeft);\n const numericTextIndent = parseFloat(itemElementStyles.textIndent);\n\n styles.itemTextPadding = numericLeftPadding;\n styles.itemTextIndent = numericTextIndent;\n // 24 is the input's toggle ddl icon width\n styles.contentElementNewWidth = selectFit.targetRect.width + 24 + numericLeftPadding * 2;\n\n return styles;\n }\n\n /**\n * Calculate how much to offset the overlay container for Y-axis.\n */\n private calculateYoffset(selectFit: SelectFit) {\n selectFit.verticalOffset = -(selectFit.itemRect.top - selectFit.contentElementRect.top +\n selectFit.styles.itemTextToInputTextDiff - selectFit.scrollAmount);\n this.global_yOffset = selectFit.verticalOffset;\n }\n\n /**\n * Calculate how much to offset the overlay container for X-axis.\n */\n private calculateXoffset(selectFit: SelectFit) {\n selectFit.horizontalOffset = selectFit.styles.itemTextIndent - selectFit.styles.itemTextPadding;\n this.global_xOffset = selectFit.horizontalOffset;\n }\n}\n\n/** @hidden */\ninterface SelectFit extends ConnectedFit {\n itemElement?: HTMLElement;\n scrollContainer: HTMLElement;\n scrollContainerRect: ClientRect;\n itemRect?: ClientRect;\n styles?: SelectStyles;\n scrollAmount?: number;\n}\n\n/** @hidden */\ninterface SelectStyles {\n itemTextPadding?: number;\n itemTextIndent?: number;\n itemTextToInputTextDiff?: number;\n contentElementNewWidth?: number;\n numericLeftPadding?: number;\n}\n","import { IgxHintDirective, IgxLabelDirective, IgxPrefixDirective, IgxSuffixDirective } from 'igniteui-angular/input-group';\nimport { IgxSelectGroupComponent } from './select-group.component';\nimport { IgxSelectItemComponent } from './select-item.component';\nimport { IgxSelectComponent, IgxSelectFooterDirective, IgxSelectHeaderDirective, IgxSelectToggleIconDirective } from './select.component';\n\nexport * from './select-group.component';\nexport * from './select-item.component';\nexport * from './select.component';\nexport * from './select-overlap-positioning-strategy';\n\n/* NOTE: Select directives collection for ease-of-use import in standalone components scenario */\nexport const IGX_SELECT_DIRECTIVES = [\n IgxSelectComponent,\n IgxSelectItemComponent,\n IgxSelectGroupComponent,\n IgxSelectHeaderDirective,\n IgxSelectFooterDirective,\n IgxSelectToggleIconDirective,\n IgxLabelDirective,\n IgxPrefixDirective,\n IgxSuffixDirective,\n IgxHintDirective\n] as const;\n","import { NgModule } from '@angular/core';\nimport { IGX_SELECT_DIRECTIVES } from './public_api';\n\n/**\n * @hidden\n * @deprecated\n * IMPORTANT: The following is NgModule exported for backwards-compatibility before standalone components\n */\n@NgModule({\n imports: [\n ...IGX_SELECT_DIRECTIVES\n ],\n exports: [\n ...IGX_SELECT_DIRECTIVES\n ]\n})\nexport class IgxSelectModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i1.IgxSelectComponent","i2.IgxSelectItemComponent","i3.IgxSelectGroupComponent","i1.IgxSelectHeaderDirective","i1.IgxSelectFooterDirective","i1.IgxSelectToggleIconDirective"],"mappings":"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"}