@clr/angular 13.11.0 → 13.11.1

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.
@@ -20317,11 +20317,9 @@ const BASIC_FOCUSABLE_ITEM_PROVIDER = [
20317
20317
  * The full license information can be found in LICENSE in the root directory of this project.
20318
20318
  */
20319
20319
  class ClrDropdownItem {
20320
- constructor(dropdown, el, _dropdownService, renderer, focusableItem) {
20320
+ constructor(dropdown, _dropdownService, focusableItem) {
20321
20321
  this.dropdown = dropdown;
20322
- this.el = el;
20323
20322
  this._dropdownService = _dropdownService;
20324
- this.renderer = renderer;
20325
20323
  this.focusableItem = focusableItem;
20326
20324
  this.setByDeprecatedDisabled = false;
20327
20325
  }
@@ -20352,22 +20350,28 @@ class ClrDropdownItem {
20352
20350
  get dropdownItemId() {
20353
20351
  return this.focusableItem.id;
20354
20352
  }
20355
- ngAfterViewInit() {
20356
- this.unlisten = this.renderer.listen(this.el.nativeElement, 'click', () => this.onDropdownItemClick());
20357
- }
20358
20353
  onDropdownItemClick() {
20359
- if (this.dropdown.isMenuClosable && !this.el.nativeElement.classList.contains('disabled')) {
20360
- this._dropdownService.closeMenus();
20361
- }
20354
+ // Ensure that the dropdown is closed after custom dropdown item click event handlers have run.
20355
+ setTimeout(() => {
20356
+ if (this.dropdown.isMenuClosable && !this.disabled) {
20357
+ this._dropdownService.closeMenus();
20358
+ }
20359
+ });
20362
20360
  }
20363
- ngOnDestroy() {
20364
- if (this.unlisten) {
20365
- this.unlisten();
20361
+ onSpaceKeydown($event) {
20362
+ this.stopImmediatePropagationIfDisabled($event);
20363
+ }
20364
+ onEnterKeydown($event) {
20365
+ this.stopImmediatePropagationIfDisabled($event);
20366
+ }
20367
+ stopImmediatePropagationIfDisabled($event) {
20368
+ if (this.disabled) {
20369
+ $event.stopImmediatePropagation();
20366
20370
  }
20367
20371
  }
20368
20372
  }
20369
- ClrDropdownItem.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ClrDropdownItem, deps: [{ token: ClrDropdown }, { token: i0.ElementRef }, { token: RootDropdownService }, { token: i0.Renderer2 }, { token: FocusableItem }], target: i0.ɵɵFactoryTarget.Directive });
20370
- ClrDropdownItem.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.3.11", type: ClrDropdownItem, selector: "[clrDropdownItem]", inputs: { disabled: ["clrDisabled", "disabled"], disabledDeprecated: ["disabled", "disabledDeprecated"], dropdownItemId: ["id", "dropdownItemId"] }, host: { properties: { "class.disabled": "disabled", "class.dropdown-item": "true", "attr.role": "\"menuitem\"", "attr.aria-disabled": "disabled", "attr.disabled": "(disabled && setByDeprecatedDisabled)? '' : null", "attr.id": "dropdownItemId" } }, providers: [BASIC_FOCUSABLE_ITEM_PROVIDER], ngImport: i0 });
20373
+ ClrDropdownItem.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ClrDropdownItem, deps: [{ token: ClrDropdown }, { token: RootDropdownService }, { token: FocusableItem }], target: i0.ɵɵFactoryTarget.Directive });
20374
+ ClrDropdownItem.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.3.11", type: ClrDropdownItem, selector: "[clrDropdownItem]", inputs: { disabled: ["clrDisabled", "disabled"], disabledDeprecated: ["disabled", "disabledDeprecated"], dropdownItemId: ["id", "dropdownItemId"] }, host: { listeners: { "click": "onDropdownItemClick()", "keydown.space": "onSpaceKeydown($event)", "keydown.enter": "onEnterKeydown($event)" }, properties: { "class.disabled": "disabled", "class.dropdown-item": "true", "attr.role": "\"menuitem\"", "attr.aria-disabled": "disabled", "attr.disabled": "(disabled && setByDeprecatedDisabled)? '' : null", "attr.id": "dropdownItemId" } }, providers: [BASIC_FOCUSABLE_ITEM_PROVIDER], ngImport: i0 });
20371
20375
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ClrDropdownItem, decorators: [{
20372
20376
  type: Directive,
20373
20377
  args: [{
@@ -20382,7 +20386,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
20382
20386
  },
20383
20387
  providers: [BASIC_FOCUSABLE_ITEM_PROVIDER],
20384
20388
  }]
20385
- }], ctorParameters: function () { return [{ type: ClrDropdown }, { type: i0.ElementRef }, { type: RootDropdownService }, { type: i0.Renderer2 }, { type: FocusableItem }]; }, propDecorators: { disabled: [{
20389
+ }], ctorParameters: function () { return [{ type: ClrDropdown }, { type: RootDropdownService }, { type: FocusableItem }]; }, propDecorators: { disabled: [{
20386
20390
  type: Input,
20387
20391
  args: ['clrDisabled']
20388
20392
  }], disabledDeprecated: [{
@@ -20391,6 +20395,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
20391
20395
  }], dropdownItemId: [{
20392
20396
  type: Input,
20393
20397
  args: ['id']
20398
+ }], onDropdownItemClick: [{
20399
+ type: HostListener,
20400
+ args: ['click']
20401
+ }], onSpaceKeydown: [{
20402
+ type: HostListener,
20403
+ args: ['keydown.space', ['$event']]
20404
+ }], onEnterKeydown: [{
20405
+ type: HostListener,
20406
+ args: ['keydown.enter', ['$event']]
20394
20407
  }] } });
20395
20408
 
20396
20409
  /*