@clr/angular 13.11.0 → 13.11.2

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 (35) hide show
  1. package/clarity.api.md +6 -11
  2. package/esm2020/data/datagrid/datagrid-column-separator.mjs +5 -4
  3. package/esm2020/data/datagrid/datagrid-detail.mjs +3 -3
  4. package/esm2020/data/tree-view/tree-node.mjs +13 -13
  5. package/esm2020/forms/combobox/combobox.mjs +3 -3
  6. package/esm2020/forms/combobox/providers/combobox-focus-handler.service.mjs +11 -11
  7. package/esm2020/forms/datepicker/calendar.mjs +8 -7
  8. package/esm2020/forms/datepicker/monthpicker.mjs +8 -7
  9. package/esm2020/forms/datepicker/yearpicker.mjs +8 -7
  10. package/esm2020/layout/tabs/tabs.mjs +3 -3
  11. package/esm2020/popover/common/abstract-popover.mjs +4 -3
  12. package/esm2020/popover/dropdown/dropdown-item.mjs +30 -17
  13. package/esm2020/popover/dropdown/providers/dropdown-focus-handler.service.mjs +6 -6
  14. package/esm2020/popover/tooltip/providers/tooltip-mouse.service.mjs +43 -0
  15. package/esm2020/popover/tooltip/tooltip-content.mjs +20 -6
  16. package/esm2020/popover/tooltip/tooltip-trigger.mjs +21 -13
  17. package/esm2020/popover/tooltip/tooltip.mjs +14 -3
  18. package/esm2020/utils/enums/keys.enum.mjs +30 -0
  19. package/esm2020/utils/focus/key-focus/key-focus.mjs +13 -13
  20. package/esm2020/utils/focus/key-focus/roving-tabindex.mjs +4 -4
  21. package/esm2020/utils/focus/key-focus/util.mjs +17 -20
  22. package/fesm2015/clr-angular.mjs +224 -165
  23. package/fesm2015/clr-angular.mjs.map +1 -1
  24. package/fesm2020/clr-angular.mjs +224 -165
  25. package/fesm2020/clr-angular.mjs.map +1 -1
  26. package/package.json +1 -1
  27. package/popover/dropdown/dropdown-item.d.ts +6 -9
  28. package/popover/tooltip/providers/tooltip-mouse.service.d.ts +15 -0
  29. package/popover/tooltip/tooltip-content.d.ts +6 -2
  30. package/popover/tooltip/tooltip-trigger.d.ts +6 -2
  31. package/utils/enums/{key-codes.enum.d.ts → keys.enum.d.ts} +3 -7
  32. package/utils/focus/key-focus/util.d.ts +1 -1
  33. package/esm2020/utils/enums/key-codes.enum.mjs +0 -34
  34. package/esm2020/utils/key-codes/key-codes.mjs +0 -16
  35. package/utils/key-codes/key-codes.d.ts +0 -10
@@ -1318,69 +1318,62 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
1318
1318
  * This software is released under MIT license.
1319
1319
  * The full license information can be found in LICENSE in the root directory of this project.
1320
1320
  */
1321
- var KeyCodes;
1322
- (function (KeyCodes) {
1323
- KeyCodes["ArrowLeft"] = "ArrowLeft";
1324
- KeyCodes["ArrowUp"] = "ArrowUp";
1325
- KeyCodes["ArrowRight"] = "ArrowRight";
1326
- KeyCodes["ArrowDown"] = "ArrowDown";
1327
- KeyCodes["Backspace"] = "Backspace";
1328
- KeyCodes["Tab"] = "Tab";
1329
- KeyCodes["Enter"] = "Enter";
1330
- KeyCodes["Escape"] = "Escape";
1331
- KeyCodes["Space"] = "Space";
1332
- KeyCodes["Spacebar"] = " ";
1333
- KeyCodes["Home"] = "Home";
1334
- KeyCodes["End"] = "End";
1335
- })(KeyCodes || (KeyCodes = {}));
1336
- var IEKeyCodes;
1337
- (function (IEKeyCodes) {
1338
- IEKeyCodes["ArrowUp"] = "Up";
1339
- IEKeyCodes["ArrowDown"] = "Down";
1340
- IEKeyCodes["ArrowRight"] = "Right";
1341
- IEKeyCodes["ArrowLeft"] = "Left";
1342
- IEKeyCodes["Space"] = "Spacebar";
1343
- IEKeyCodes["Escape"] = "Esc";
1344
- IEKeyCodes["Home"] = "Home";
1345
- IEKeyCodes["End"] = "End";
1346
- IEKeyCodes["Enter"] = "Enter";
1347
- IEKeyCodes["Tab"] = "Tab";
1348
- })(IEKeyCodes || (IEKeyCodes = {}));
1349
-
1350
- /*
1351
- * Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
1352
- * This software is released under MIT license.
1353
- * The full license information can be found in LICENSE in the root directory of this project.
1354
- */
1355
- function keyValidator(key) {
1356
- if (key === KeyCodes.ArrowUp || key === IEKeyCodes.ArrowUp) {
1357
- return KeyCodes.ArrowUp;
1358
- }
1359
- else if (key === KeyCodes.ArrowDown || key === IEKeyCodes.ArrowDown) {
1360
- return KeyCodes.ArrowDown;
1361
- }
1362
- else if (key === KeyCodes.ArrowRight || key === IEKeyCodes.ArrowRight) {
1363
- return KeyCodes.ArrowRight;
1364
- }
1365
- else if (key === KeyCodes.ArrowLeft || key === IEKeyCodes.ArrowLeft) {
1366
- return KeyCodes.ArrowLeft;
1367
- }
1368
- else if (key === KeyCodes.Space || key === IEKeyCodes.Space) {
1369
- return KeyCodes.Space;
1370
- }
1371
- else if (key === KeyCodes.Escape || key === IEKeyCodes.Escape) {
1372
- return KeyCodes.Escape;
1321
+ var Keys;
1322
+ (function (Keys) {
1323
+ Keys["ArrowLeft"] = "ArrowLeft";
1324
+ Keys["ArrowUp"] = "ArrowUp";
1325
+ Keys["ArrowRight"] = "ArrowRight";
1326
+ Keys["ArrowDown"] = "ArrowDown";
1327
+ Keys["Backspace"] = "Backspace";
1328
+ Keys["Tab"] = "Tab";
1329
+ Keys["Enter"] = "Enter";
1330
+ Keys["Escape"] = "Escape";
1331
+ Keys["Space"] = "Space";
1332
+ Keys["Spacebar"] = " ";
1333
+ Keys["Home"] = "Home";
1334
+ Keys["End"] = "End";
1335
+ })(Keys || (Keys = {}));
1336
+ var IEKeys;
1337
+ (function (IEKeys) {
1338
+ IEKeys["ArrowUp"] = "Up";
1339
+ IEKeys["ArrowDown"] = "Down";
1340
+ IEKeys["ArrowRight"] = "Right";
1341
+ IEKeys["ArrowLeft"] = "Left";
1342
+ IEKeys["Space"] = "Spacebar";
1343
+ IEKeys["Escape"] = "Esc";
1344
+ })(IEKeys || (IEKeys = {}));
1345
+
1346
+ /*
1347
+ * Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
1348
+ * This software is released under MIT license.
1349
+ * The full license information can be found in LICENSE in the root directory of this project.
1350
+ */
1351
+ function normalizeKey(key) {
1352
+ if (key === Keys.ArrowUp || key === IEKeys.ArrowUp) {
1353
+ return Keys.ArrowUp;
1354
+ }
1355
+ else if (key === Keys.ArrowDown || key === IEKeys.ArrowDown) {
1356
+ return Keys.ArrowDown;
1357
+ }
1358
+ else if (key === Keys.ArrowRight || key === IEKeys.ArrowRight) {
1359
+ return Keys.ArrowRight;
1360
+ }
1361
+ else if (key === Keys.ArrowLeft || key === IEKeys.ArrowLeft) {
1362
+ return Keys.ArrowLeft;
1363
+ }
1364
+ else if (key === Keys.Space || key === IEKeys.Space) {
1365
+ return Keys.Space;
1366
+ }
1367
+ else if (key === Keys.Escape || key === IEKeys.Escape) {
1368
+ return Keys.Escape;
1373
1369
  }
1374
1370
  else {
1375
1371
  return key;
1376
1372
  }
1377
1373
  }
1378
1374
  function preventArrowKeyScroll(event) {
1379
- const validKey = keyValidator(event.key);
1380
- if (validKey === KeyCodes.ArrowUp ||
1381
- validKey === KeyCodes.ArrowDown ||
1382
- validKey === KeyCodes.ArrowLeft ||
1383
- validKey === KeyCodes.ArrowRight) {
1375
+ const key = normalizeKey(event.key);
1376
+ if (key === Keys.ArrowUp || key === Keys.ArrowDown || key === Keys.ArrowLeft || key === Keys.ArrowRight) {
1384
1377
  // prevent element container scroll
1385
1378
  // MDN references this is really the only way to prevent native browser interactions
1386
1379
  // https://developer.mozilla.org/en-US/docs/Web/Accessibility/Keyboard-navigable_JavaScript_widgets
@@ -4959,10 +4952,10 @@ class ClrKeyFocus {
4959
4952
  else if (this.nextKeyPressed(event) && this.currentFocusIsNotLastItem()) {
4960
4953
  this.moveTo(this.current + 1);
4961
4954
  }
4962
- else if (event.code === KeyCodes.Home) {
4955
+ else if (event.code === Keys.Home) {
4963
4956
  this.moveTo(0);
4964
4957
  }
4965
- else if (event.code === KeyCodes.End) {
4958
+ else if (event.code === Keys.End) {
4966
4959
  this.moveTo(this.focusableItems.length - 1);
4967
4960
  }
4968
4961
  preventArrowKeyScroll(event);
@@ -5010,27 +5003,27 @@ class ClrKeyFocus {
5010
5003
  });
5011
5004
  }
5012
5005
  nextKeyPressed(event) {
5013
- const key = keyValidator(event.key);
5006
+ const key = normalizeKey(event.key);
5014
5007
  switch (this.direction) {
5015
5008
  case ClrFocusDirection.VERTICAL:
5016
- return key === KeyCodes.ArrowDown;
5009
+ return key === Keys.ArrowDown;
5017
5010
  case ClrFocusDirection.HORIZONTAL:
5018
- return key === KeyCodes.ArrowRight;
5011
+ return key === Keys.ArrowRight;
5019
5012
  case ClrFocusDirection.BOTH:
5020
- return key === KeyCodes.ArrowDown || key === KeyCodes.ArrowRight;
5013
+ return key === Keys.ArrowDown || key === Keys.ArrowRight;
5021
5014
  default:
5022
5015
  return false;
5023
5016
  }
5024
5017
  }
5025
5018
  prevKeyPressed(event) {
5026
- const key = keyValidator(event.key);
5019
+ const key = normalizeKey(event.key);
5027
5020
  switch (this.direction) {
5028
5021
  case ClrFocusDirection.VERTICAL:
5029
- return key === KeyCodes.ArrowUp;
5022
+ return key === Keys.ArrowUp;
5030
5023
  case ClrFocusDirection.HORIZONTAL:
5031
- return key === KeyCodes.ArrowLeft;
5024
+ return key === Keys.ArrowLeft;
5032
5025
  case ClrFocusDirection.BOTH:
5033
- return key === KeyCodes.ArrowUp || key === KeyCodes.ArrowLeft;
5026
+ return key === Keys.ArrowUp || key === Keys.ArrowLeft;
5034
5027
  default:
5035
5028
  return false;
5036
5029
  }
@@ -5098,10 +5091,10 @@ class ClrRovingTabindex extends ClrKeyFocus {
5098
5091
  else if (this.nextKeyPressed(event) && this.currentFocusIsNotLastItem()) {
5099
5092
  this.updateTabindex(this.current + 1);
5100
5093
  }
5101
- else if (event.code === KeyCodes.Home) {
5094
+ else if (event.code === Keys.Home) {
5102
5095
  this.updateTabindex(0);
5103
5096
  }
5104
- else if (event.code === KeyCodes.End) {
5097
+ else if (event.code === Keys.End) {
5105
5098
  this.updateTabindex(this.focusableItems.length - 1);
5106
5099
  }
5107
5100
  super.handleKeyboardEvent(event);
@@ -5295,22 +5288,6 @@ const FOCUS_SERVICE_PROVIDER = {
5295
5288
  deps: [[new Optional(), new SkipSelf(), FocusService$1], Renderer2],
5296
5289
  };
5297
5290
 
5298
- /*
5299
- * Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
5300
- * This software is released under MIT license.
5301
- * The full license information can be found in LICENSE in the root directory of this project.
5302
- */
5303
- const UP_ARROW = 38;
5304
- const DOWN_ARROW = 40;
5305
- const RIGHT_ARROW = 39;
5306
- const LEFT_ARROW = 37;
5307
- const ENTER = 13;
5308
- const SPACE = 32;
5309
- const SHIFT = 16;
5310
- const TAB = 9;
5311
- const ESC = 27;
5312
- const BACKSPACE = 8;
5313
-
5314
5291
  /*
5315
5292
  * Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
5316
5293
  * This software is released under MIT license.
@@ -5762,10 +5739,10 @@ class ComboboxFocusHandler {
5762
5739
  // this service is only interested in keys that may move the focus
5763
5740
  handleTextInput(event) {
5764
5741
  let preventDefault = false;
5765
- const key = keyValidator(event.key);
5742
+ const key = normalizeKey(event.key);
5766
5743
  if (event) {
5767
5744
  switch (key) {
5768
- case KeyCodes.Enter:
5745
+ case Keys.Enter:
5769
5746
  if (this.toggleService.open && this.pseudoFocus.model) {
5770
5747
  if (this.selectionService.multiselectable) {
5771
5748
  this.selectionService.toggle(this.pseudoFocus.model.value);
@@ -5776,27 +5753,27 @@ class ComboboxFocusHandler {
5776
5753
  preventDefault = true;
5777
5754
  }
5778
5755
  break;
5779
- case KeyCodes.Space:
5756
+ case Keys.Space:
5780
5757
  if (!this.toggleService.open) {
5781
5758
  this.toggleService.open = true;
5782
5759
  preventDefault = true;
5783
5760
  }
5784
5761
  break;
5785
- case KeyCodes.ArrowUp:
5762
+ case Keys.ArrowUp:
5786
5763
  this.preventViewportScrolling(event);
5787
5764
  this.openAndMoveTo(ArrowKeyDirection.UP);
5788
5765
  preventDefault = true;
5789
5766
  break;
5790
- case KeyCodes.ArrowDown:
5767
+ case Keys.ArrowDown:
5791
5768
  this.preventViewportScrolling(event);
5792
5769
  this.openAndMoveTo(ArrowKeyDirection.DOWN);
5793
5770
  preventDefault = true;
5794
5771
  break;
5795
5772
  default:
5796
5773
  // Any other keypress
5797
- if (event.key !== KeyCodes.Tab &&
5798
- !(this.selectionService.multiselectable && event.key === KeyCodes.Backspace) &&
5799
- !(event.key === KeyCodes.Escape) &&
5774
+ if (event.key !== Keys.Tab &&
5775
+ !(this.selectionService.multiselectable && event.key === Keys.Backspace) &&
5776
+ !(event.key === Keys.Escape) &&
5800
5777
  !this.toggleService.open) {
5801
5778
  this.toggleService.open = true;
5802
5779
  }
@@ -6243,7 +6220,7 @@ class ClrCombobox extends WrappedFormControl {
6243
6220
  }
6244
6221
  onKeyUp(event) {
6245
6222
  // if BACKSPACE in multiselect mode, delete the last pill if text is empty
6246
- if (event.keyCode === BACKSPACE && this.multiSelect && this._searchText.length === 0) {
6223
+ if (event.key === Keys.Backspace && this.multiSelect && this._searchText.length === 0) {
6247
6224
  const multiModel = this.optionSelectionService.selectionModel.model;
6248
6225
  if (multiModel && multiModel.length > 0) {
6249
6226
  const lastItem = multiModel[multiModel.length - 1];
@@ -8183,20 +8160,20 @@ class ClrCalendar {
8183
8160
  */
8184
8161
  onKeyDown(event) {
8185
8162
  if (event && this.focusedDay) {
8186
- switch (event.keyCode) {
8187
- case UP_ARROW:
8163
+ switch (normalizeKey(event.key)) {
8164
+ case Keys.ArrowUp:
8188
8165
  event.preventDefault();
8189
8166
  this._dateNavigationService.incrementFocusDay(-1 * NO_OF_DAYS_IN_A_WEEK);
8190
8167
  break;
8191
- case DOWN_ARROW:
8168
+ case Keys.ArrowDown:
8192
8169
  event.preventDefault();
8193
8170
  this._dateNavigationService.incrementFocusDay(NO_OF_DAYS_IN_A_WEEK);
8194
8171
  break;
8195
- case LEFT_ARROW:
8172
+ case Keys.ArrowLeft:
8196
8173
  event.preventDefault();
8197
8174
  this._dateNavigationService.incrementFocusDay(-1);
8198
8175
  break;
8199
- case RIGHT_ARROW:
8176
+ case Keys.ArrowRight:
8200
8177
  event.preventDefault();
8201
8178
  this._dateNavigationService.incrementFocusDay(1);
8202
8179
  break;
@@ -8379,23 +8356,23 @@ class ClrMonthpicker {
8379
8356
  // the logic is fairly simple and it didn't make sense for me
8380
8357
  // to create extra observables just to move this logic to the service.
8381
8358
  if (event) {
8382
- const keyCode = event.keyCode;
8383
- if (keyCode === UP_ARROW && this._focusedMonthIndex > 0) {
8359
+ const key = normalizeKey(event.key);
8360
+ if (key === Keys.ArrowUp && this._focusedMonthIndex > 0) {
8384
8361
  event.preventDefault();
8385
8362
  this._focusedMonthIndex--;
8386
8363
  this._datepickerFocusService.focusCell(this._elRef);
8387
8364
  }
8388
- else if (keyCode === DOWN_ARROW && this._focusedMonthIndex < 11) {
8365
+ else if (key === Keys.ArrowDown && this._focusedMonthIndex < 11) {
8389
8366
  event.preventDefault();
8390
8367
  this._focusedMonthIndex++;
8391
8368
  this._datepickerFocusService.focusCell(this._elRef);
8392
8369
  }
8393
- else if (keyCode === RIGHT_ARROW && this._focusedMonthIndex < 6) {
8370
+ else if (key === Keys.ArrowRight && this._focusedMonthIndex < 6) {
8394
8371
  event.preventDefault();
8395
8372
  this._focusedMonthIndex = this._focusedMonthIndex + 6;
8396
8373
  this._datepickerFocusService.focusCell(this._elRef);
8397
8374
  }
8398
- else if (keyCode === LEFT_ARROW && this._focusedMonthIndex > 5) {
8375
+ else if (key === Keys.ArrowLeft && this._focusedMonthIndex > 5) {
8399
8376
  event.preventDefault();
8400
8377
  this._focusedMonthIndex = this._focusedMonthIndex - 6;
8401
8378
  this._datepickerFocusService.focusCell(this._elRef);
@@ -8599,20 +8576,20 @@ class ClrYearpicker {
8599
8576
  // the logic is fairly simple and it didn't make sense for me
8600
8577
  // to create extra observables just to move this logic to the service.
8601
8578
  if (event) {
8602
- const keyCode = event.keyCode;
8603
- if (keyCode === UP_ARROW) {
8579
+ const key = normalizeKey(event.key);
8580
+ if (key === Keys.ArrowUp) {
8604
8581
  event.preventDefault();
8605
8582
  this.incrementFocusYearBy(-1);
8606
8583
  }
8607
- else if (keyCode === DOWN_ARROW) {
8584
+ else if (key === Keys.ArrowDown) {
8608
8585
  event.preventDefault();
8609
8586
  this.incrementFocusYearBy(1);
8610
8587
  }
8611
- else if (keyCode === RIGHT_ARROW) {
8588
+ else if (key === Keys.ArrowRight) {
8612
8589
  event.preventDefault();
8613
8590
  this.incrementFocusYearBy(5);
8614
8591
  }
8615
- else if (keyCode === LEFT_ARROW) {
8592
+ else if (key === Keys.ArrowLeft) {
8616
8593
  event.preventDefault();
8617
8594
  this.incrementFocusYearBy(-5);
8618
8595
  }
@@ -13354,10 +13331,10 @@ class ClrDatagridColumnSeparator {
13354
13331
  }
13355
13332
  }
13356
13333
  isArrowLeftKeyEvent(event) {
13357
- return event.key === KeyCodes.ArrowLeft || event.key === IEKeyCodes.ArrowLeft;
13334
+ return normalizeKey(event.key) === Keys.ArrowLeft;
13358
13335
  }
13359
13336
  isArrowRightKeyEvent(event) {
13360
- return event.key === KeyCodes.ArrowRight || event.key === IEKeyCodes.ArrowRight;
13337
+ return normalizeKey(event.key) === Keys.ArrowRight;
13361
13338
  }
13362
13339
  ngOnDestroy() {
13363
13340
  this.unlisteners.forEach(unlistener => unlistener());
@@ -16355,7 +16332,7 @@ class ClrDatagridDetail {
16355
16332
  }
16356
16333
  }
16357
16334
  ClrDatagridDetail.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ClrDatagridDetail, deps: [{ token: DetailService }, { token: ClrCommonStringsService }], target: i0.ɵɵFactoryTarget.Component });
16358
- ClrDatagridDetail.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: ClrDatagridDetail, selector: "clr-dg-detail", host: { listeners: { "document:keyup.esc": "closeCheck()" }, properties: { "class.datagrid-detail-pane": "true" } }, queries: [{ propertyName: "header", first: true, predicate: ClrDatagridDetailHeader, descendants: true }], ngImport: i0, template: `
16335
+ ClrDatagridDetail.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: ClrDatagridDetail, selector: "clr-dg-detail", host: { listeners: { "document:keyup.escape": "closeCheck()" }, properties: { "class.datagrid-detail-pane": "true" } }, queries: [{ propertyName: "header", first: true, predicate: ClrDatagridDetailHeader, descendants: true }], ngImport: i0, template: `
16359
16336
  <div
16360
16337
  [clrFocusTrap]="{ strict: false }"
16361
16338
  class="datagrid-detail-pane-content"
@@ -16400,7 +16377,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
16400
16377
  args: [ClrDatagridDetailHeader]
16401
16378
  }], closeCheck: [{
16402
16379
  type: HostListener,
16403
- args: ['document:keyup.esc']
16380
+ args: ['document:keyup.escape']
16404
16381
  }] } });
16405
16382
 
16406
16383
  /*
@@ -19695,32 +19672,32 @@ class ClrTreeNode {
19695
19672
  // By default, pressing arrow key makes AT focus go into the nested content of the item.
19696
19673
  preventArrowKeyScroll(event);
19697
19674
  // https://www.w3.org/TR/wai-aria-practices-1.1/#keyboard-interaction-22
19698
- switch (keyValidator(event.key)) {
19699
- case KeyCodes.ArrowUp:
19675
+ switch (normalizeKey(event.key)) {
19676
+ case Keys.ArrowUp:
19700
19677
  this.focusManager.focusNodeAbove(this._model);
19701
19678
  break;
19702
- case KeyCodes.ArrowDown:
19679
+ case Keys.ArrowDown:
19703
19680
  this.focusManager.focusNodeBelow(this._model);
19704
19681
  break;
19705
- case KeyCodes.ArrowRight:
19682
+ case Keys.ArrowRight:
19706
19683
  this.expandOrFocusFirstChild();
19707
19684
  break;
19708
- case KeyCodes.ArrowLeft:
19685
+ case Keys.ArrowLeft:
19709
19686
  this.collapseOrFocusParent();
19710
19687
  break;
19711
- case KeyCodes.Home:
19688
+ case Keys.Home:
19712
19689
  event.preventDefault();
19713
19690
  this.focusManager.focusFirstVisibleNode();
19714
19691
  break;
19715
- case KeyCodes.End:
19692
+ case Keys.End:
19716
19693
  event.preventDefault();
19717
19694
  this.focusManager.focusLastVisibleNode();
19718
19695
  break;
19719
- case KeyCodes.Enter:
19696
+ case Keys.Enter:
19720
19697
  this.toggleExpandOrTriggerDefault();
19721
19698
  break;
19722
- case KeyCodes.Space:
19723
- case KeyCodes.Spacebar:
19699
+ case Keys.Space:
19700
+ case Keys.Spacebar:
19724
19701
  // to prevent scrolling on space key in this specific case
19725
19702
  event.preventDefault();
19726
19703
  this.toggleExpandOrTriggerDefault();
@@ -20087,10 +20064,10 @@ class DropdownFocusHandler {
20087
20064
  // whether root container or not, tab key should always toggle (i.e. close) the container
20088
20065
  this._unlistenFuncs.push(this.renderer.listen(el, 'keydown.tab', event => this.toggleService.toggleWithEvent(event)));
20089
20066
  if (this.parent) {
20090
- // if it's a nested container, pressing esc has the same effect as pressing left key, which closes the current
20067
+ // if it's a nested container, pressing escape has the same effect as pressing left key, which closes the current
20091
20068
  // popup and moves up to its parent. Here, we stop propagation so that the parent container
20092
- // doesn't receive the esc keydown
20093
- this._unlistenFuncs.push(this.renderer.listen(el, 'keydown.esc', event => {
20069
+ // doesn't receive the escape keydown
20070
+ this._unlistenFuncs.push(this.renderer.listen(el, 'keydown.escape', event => {
20094
20071
  this.focusService.move(ArrowKeyDirection.LEFT);
20095
20072
  event.stopPropagation();
20096
20073
  }));
@@ -20098,8 +20075,8 @@ class DropdownFocusHandler {
20098
20075
  else {
20099
20076
  // The root container is the only one we register to the focus service, others do not need focus
20100
20077
  this.focusService.registerContainer(el);
20101
- // The root container will simply close the container when esc key is pressed
20102
- this._unlistenFuncs.push(this.renderer.listen(el, 'keydown.esc', event => this.toggleService.toggleWithEvent(event)));
20078
+ // The root container will simply close the container when escape key is pressed
20079
+ this._unlistenFuncs.push(this.renderer.listen(el, 'keydown.escape', event => this.toggleService.toggleWithEvent(event)));
20103
20080
  // When the user moves focus outside of the menu, we close the dropdown
20104
20081
  this._unlistenFuncs.push(this.renderer.listen(el, 'blur', event => {
20105
20082
  // we clear out any existing focus on the items
@@ -20317,11 +20294,9 @@ const BASIC_FOCUSABLE_ITEM_PROVIDER = [
20317
20294
  * The full license information can be found in LICENSE in the root directory of this project.
20318
20295
  */
20319
20296
  class ClrDropdownItem {
20320
- constructor(dropdown, el, _dropdownService, renderer, focusableItem) {
20297
+ constructor(dropdown, _dropdownService, focusableItem) {
20321
20298
  this.dropdown = dropdown;
20322
- this.el = el;
20323
20299
  this._dropdownService = _dropdownService;
20324
- this.renderer = renderer;
20325
20300
  this.focusableItem = focusableItem;
20326
20301
  this.setByDeprecatedDisabled = false;
20327
20302
  }
@@ -20352,22 +20327,28 @@ class ClrDropdownItem {
20352
20327
  get dropdownItemId() {
20353
20328
  return this.focusableItem.id;
20354
20329
  }
20355
- ngAfterViewInit() {
20356
- this.unlisten = this.renderer.listen(this.el.nativeElement, 'click', () => this.onDropdownItemClick());
20357
- }
20358
20330
  onDropdownItemClick() {
20359
- if (this.dropdown.isMenuClosable && !this.el.nativeElement.classList.contains('disabled')) {
20360
- this._dropdownService.closeMenus();
20361
- }
20331
+ // Ensure that the dropdown is closed after custom dropdown item click event handlers have run.
20332
+ setTimeout(() => {
20333
+ if (this.dropdown.isMenuClosable && !this.disabled) {
20334
+ this._dropdownService.closeMenus();
20335
+ }
20336
+ });
20362
20337
  }
20363
- ngOnDestroy() {
20364
- if (this.unlisten) {
20365
- this.unlisten();
20338
+ onSpaceKeydown($event) {
20339
+ this.stopImmediatePropagationIfDisabled($event);
20340
+ }
20341
+ onEnterKeydown($event) {
20342
+ this.stopImmediatePropagationIfDisabled($event);
20343
+ }
20344
+ stopImmediatePropagationIfDisabled($event) {
20345
+ if (this.disabled) {
20346
+ $event.stopImmediatePropagation();
20366
20347
  }
20367
20348
  }
20368
20349
  }
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 });
20350
+ 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 });
20351
+ 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
20352
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ClrDropdownItem, decorators: [{
20372
20353
  type: Directive,
20373
20354
  args: [{
@@ -20382,7 +20363,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
20382
20363
  },
20383
20364
  providers: [BASIC_FOCUSABLE_ITEM_PROVIDER],
20384
20365
  }]
20385
- }], ctorParameters: function () { return [{ type: ClrDropdown }, { type: i0.ElementRef }, { type: RootDropdownService }, { type: i0.Renderer2 }, { type: FocusableItem }]; }, propDecorators: { disabled: [{
20366
+ }], ctorParameters: function () { return [{ type: ClrDropdown }, { type: RootDropdownService }, { type: FocusableItem }]; }, propDecorators: { disabled: [{
20386
20367
  type: Input,
20387
20368
  args: ['clrDisabled']
20388
20369
  }], disabledDeprecated: [{
@@ -20391,6 +20372,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
20391
20372
  }], dropdownItemId: [{
20392
20373
  type: Input,
20393
20374
  args: ['id']
20375
+ }], onDropdownItemClick: [{
20376
+ type: HostListener,
20377
+ args: ['click']
20378
+ }], onSpaceKeydown: [{
20379
+ type: HostListener,
20380
+ args: ['keydown.space', ['$event']]
20381
+ }], onEnterKeydown: [{
20382
+ type: HostListener,
20383
+ args: ['keydown.enter', ['$event']]
20394
20384
  }] } });
20395
20385
 
20396
20386
  /*
@@ -20663,7 +20653,6 @@ class Popover {
20663
20653
  * This software is released under MIT license.
20664
20654
  * The full license information can be found in LICENSE in the root directory of this project.
20665
20655
  */
20666
- // Literally any annotation would work here, but writing our own @HoneyBadger annotation feels overkill.
20667
20656
  class AbstractPopover {
20668
20657
  constructor(injector, parentHost) {
20669
20658
  this.parentHost = parentHost;
@@ -20742,7 +20731,7 @@ class AbstractPopover {
20742
20731
  this.ngZone.runOutsideAngular(() => {
20743
20732
  this.documentESCListener = this.renderer.listen('document', 'keydown', event => {
20744
20733
  if (event && event.key) {
20745
- if (event.key === 'Escape' || event.key === 'Esc') {
20734
+ if (normalizeKey(event.key) === Keys.Escape) {
20746
20735
  this.ngZone.run(() => {
20747
20736
  this.toggleService.open = false;
20748
20737
  this.ref.markForCheck();
@@ -22825,7 +22814,7 @@ ClrTabs.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3
22825
22814
  <!--tab links in overflow menu-->
22826
22815
  <clr-tab-overflow-content
22827
22816
  *ngIf="toggleService.open"
22828
- (document:keydown.esc)="closeOnEscapeKey()"
22817
+ (document:keydown.escape)="closeOnEscapeKey()"
22829
22818
  (document:click)="closeOnOutsideClick($event, tabOverflowTrigger)"
22830
22819
  (focusout)="closeOnFocusOut($event)"
22831
22820
  >
@@ -22889,7 +22878,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
22889
22878
  <!--tab links in overflow menu-->
22890
22879
  <clr-tab-overflow-content
22891
22880
  *ngIf="toggleService.open"
22892
- (document:keydown.esc)="closeOnEscapeKey()"
22881
+ (document:keydown.escape)="closeOnEscapeKey()"
22893
22882
  (document:click)="closeOnOutsideClick($event, tabOverflowTrigger)"
22894
22883
  (focusout)="closeOnFocusOut($event)"
22895
22884
  >
@@ -23938,6 +23927,46 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
23938
23927
  type: Injectable
23939
23928
  }] });
23940
23929
 
23930
+ /*
23931
+ * Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
23932
+ * This software is released under MIT license.
23933
+ * The full license information can be found in LICENSE in the root directory of this project.
23934
+ */
23935
+ class TooltipMouseService {
23936
+ constructor(toggleService) {
23937
+ this.toggleService = toggleService;
23938
+ }
23939
+ onMouseEnterTrigger() {
23940
+ this.mouseOverTrigger = true;
23941
+ this.toggleService.open = true;
23942
+ }
23943
+ onMouseLeaveTrigger() {
23944
+ this.mouseOverTrigger = false;
23945
+ this.hideIfMouseOut();
23946
+ }
23947
+ onMouseEnterContent() {
23948
+ this.mouseOverContent = true;
23949
+ }
23950
+ onMouseLeaveContent() {
23951
+ this.mouseOverContent = false;
23952
+ this.hideIfMouseOut();
23953
+ }
23954
+ hideIfMouseOut() {
23955
+ // A zero timeout is used so that the code has a chance to update
23956
+ // the `mouseOverContent` property after the user moves the mouse from the trigger to the content.
23957
+ setTimeout(() => {
23958
+ if (!this.mouseOverTrigger && !this.mouseOverContent) {
23959
+ this.toggleService.open = false;
23960
+ }
23961
+ }, 0);
23962
+ }
23963
+ }
23964
+ TooltipMouseService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: TooltipMouseService, deps: [{ token: ClrPopoverToggleService }], target: i0.ɵɵFactoryTarget.Injectable });
23965
+ TooltipMouseService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: TooltipMouseService });
23966
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: TooltipMouseService, decorators: [{
23967
+ type: Injectable
23968
+ }], ctorParameters: function () { return [{ type: ClrPopoverToggleService }]; } });
23969
+
23941
23970
  /*
23942
23971
  * Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
23943
23972
  * This software is released under MIT license.
@@ -23946,7 +23975,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
23946
23975
  class ClrTooltip {
23947
23976
  }
23948
23977
  ClrTooltip.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ClrTooltip, deps: [], target: i0.ɵɵFactoryTarget.Component });
23949
- ClrTooltip.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: ClrTooltip, selector: "clr-tooltip", host: { properties: { "class.tooltip": "true" } }, providers: [ClrPopoverToggleService, { provide: POPOVER_HOST_ANCHOR, useExisting: ElementRef }, TooltipIdService], ngImport: i0, template: `<ng-content></ng-content>`, isInline: true });
23978
+ ClrTooltip.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: ClrTooltip, selector: "clr-tooltip", host: { properties: { "class.tooltip": "true" } }, providers: [
23979
+ ClrPopoverToggleService,
23980
+ { provide: POPOVER_HOST_ANCHOR, useExisting: ElementRef },
23981
+ TooltipIdService,
23982
+ TooltipMouseService,
23983
+ ], ngImport: i0, template: `<ng-content></ng-content>`, isInline: true });
23950
23984
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ClrTooltip, decorators: [{
23951
23985
  type: Component,
23952
23986
  args: [{
@@ -23955,7 +23989,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
23955
23989
  host: {
23956
23990
  '[class.tooltip]': 'true',
23957
23991
  },
23958
- providers: [ClrPopoverToggleService, { provide: POPOVER_HOST_ANCHOR, useExisting: ElementRef }, TooltipIdService],
23992
+ providers: [
23993
+ ClrPopoverToggleService,
23994
+ { provide: POPOVER_HOST_ANCHOR, useExisting: ElementRef },
23995
+ TooltipIdService,
23996
+ TooltipMouseService,
23997
+ ],
23959
23998
  }]
23960
23999
  }] });
23961
24000
 
@@ -23978,9 +24017,10 @@ const SIZES = ['xs', 'sm', 'md', 'lg'];
23978
24017
  const defaultPosition = 'right';
23979
24018
  const defaultSize = 'sm';
23980
24019
  class ClrTooltipContent extends AbstractPopover {
23981
- constructor(injector, parentHost, tooltipIdService) {
24020
+ constructor(injector, parentHost, tooltipIdService, tooltipMouseService) {
23982
24021
  super(injector, parentHost);
23983
24022
  this.tooltipIdService = tooltipIdService;
24023
+ this.tooltipMouseService = tooltipMouseService;
23984
24024
  if (!parentHost) {
23985
24025
  throw new Error('clr-tooltip-content should only be used inside of a clr-tooltip');
23986
24026
  }
@@ -24046,13 +24086,19 @@ class ClrTooltipContent extends AbstractPopover {
24046
24086
  this.size = this.size || defaultSize;
24047
24087
  this.position = this.position || defaultPosition;
24048
24088
  }
24089
+ onMouseEnter() {
24090
+ this.tooltipMouseService.onMouseEnterContent();
24091
+ }
24092
+ onMouseLeave() {
24093
+ this.tooltipMouseService.onMouseLeaveContent();
24094
+ }
24049
24095
  updateCssClass({ oldClass, newClass }) {
24050
24096
  this.renderer.removeClass(this.el.nativeElement, oldClass);
24051
24097
  this.renderer.addClass(this.el.nativeElement, newClass);
24052
24098
  }
24053
24099
  }
24054
- ClrTooltipContent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ClrTooltipContent, deps: [{ token: i0.Injector }, { token: POPOVER_HOST_ANCHOR, optional: true }, { token: TooltipIdService }], target: i0.ɵɵFactoryTarget.Component });
24055
- ClrTooltipContent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: ClrTooltipContent, selector: "clr-tooltip-content", inputs: { id: "id", position: ["clrPosition", "position"], size: ["clrSize", "size"] }, host: { properties: { "class.tooltip-content": "true", "style.opacity": "1", "attr.role": "\"tooltip\"", "id": "id" } }, usesInheritance: true, ngImport: i0, template: `<ng-content></ng-content>`, isInline: true });
24100
+ ClrTooltipContent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ClrTooltipContent, deps: [{ token: i0.Injector }, { token: POPOVER_HOST_ANCHOR, optional: true }, { token: TooltipIdService }, { token: TooltipMouseService }], target: i0.ɵɵFactoryTarget.Component });
24101
+ ClrTooltipContent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: ClrTooltipContent, selector: "clr-tooltip-content", inputs: { id: "id", position: ["clrPosition", "position"], size: ["clrSize", "size"] }, host: { listeners: { "mouseenter": "onMouseEnter()", "mouseleave": "onMouseLeave()" }, properties: { "class.tooltip-content": "true", "style.opacity": "1", "attr.role": "\"tooltip\"", "id": "id" } }, usesInheritance: true, ngImport: i0, template: `<ng-content></ng-content>`, isInline: true });
24056
24102
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ClrTooltipContent, decorators: [{
24057
24103
  type: Component,
24058
24104
  args: [{
@@ -24070,7 +24116,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
24070
24116
  }, {
24071
24117
  type: Inject,
24072
24118
  args: [POPOVER_HOST_ANCHOR]
24073
- }] }, { type: TooltipIdService }]; }, propDecorators: { id: [{
24119
+ }] }, { type: TooltipIdService }, { type: TooltipMouseService }]; }, propDecorators: { id: [{
24074
24120
  type: Input
24075
24121
  }], position: [{
24076
24122
  type: Input,
@@ -24078,6 +24124,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
24078
24124
  }], size: [{
24079
24125
  type: Input,
24080
24126
  args: ['clrSize']
24127
+ }], onMouseEnter: [{
24128
+ type: HostListener,
24129
+ args: ['mouseenter']
24130
+ }], onMouseLeave: [{
24131
+ type: HostListener,
24132
+ args: ['mouseleave']
24081
24133
  }] } });
24082
24134
 
24083
24135
  /*
@@ -24086,25 +24138,32 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
24086
24138
  * The full license information can be found in LICENSE in the root directory of this project.
24087
24139
  */
24088
24140
  class ClrTooltipTrigger {
24089
- constructor(toggleService, tooltipIdService) {
24141
+ constructor(toggleService, tooltipIdService, tooltipMouseService) {
24090
24142
  this.toggleService = toggleService;
24091
24143
  this.tooltipIdService = tooltipIdService;
24144
+ this.tooltipMouseService = tooltipMouseService;
24092
24145
  this.subs = [];
24093
24146
  // The aria-described by comes from the id of content. It
24094
24147
  this.subs.push(this.tooltipIdService.id.subscribe(tooltipId => (this.ariaDescribedBy = tooltipId)));
24095
24148
  }
24149
+ ngOnDestroy() {
24150
+ this.subs.forEach(sub => sub.unsubscribe());
24151
+ }
24096
24152
  showTooltip() {
24097
24153
  this.toggleService.open = true;
24098
24154
  }
24099
24155
  hideTooltip() {
24100
24156
  this.toggleService.open = false;
24101
24157
  }
24102
- ngOnDestroy() {
24103
- this.subs.forEach(sub => sub.unsubscribe());
24158
+ onMouseEnter() {
24159
+ this.tooltipMouseService.onMouseEnterTrigger();
24160
+ }
24161
+ onMouseLeave() {
24162
+ this.tooltipMouseService.onMouseLeaveTrigger();
24104
24163
  }
24105
24164
  }
24106
- ClrTooltipTrigger.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ClrTooltipTrigger, deps: [{ token: ClrPopoverToggleService }, { token: TooltipIdService }], target: i0.ɵɵFactoryTarget.Directive });
24107
- ClrTooltipTrigger.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.3.11", type: ClrTooltipTrigger, selector: "[clrTooltipTrigger]", host: { attributes: { "tabindex": "0" }, listeners: { "mouseenter": "showTooltip()", "focus": "showTooltip()", "mouseleave": "hideTooltip()", "blur": "hideTooltip()" }, properties: { "class.tooltip-trigger": "true", "attr.aria-describedby": "ariaDescribedBy", "attr.role": "\"button\"" } }, ngImport: i0 });
24165
+ ClrTooltipTrigger.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ClrTooltipTrigger, deps: [{ token: ClrPopoverToggleService }, { token: TooltipIdService }, { token: TooltipMouseService }], target: i0.ɵɵFactoryTarget.Directive });
24166
+ ClrTooltipTrigger.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.3.11", type: ClrTooltipTrigger, selector: "[clrTooltipTrigger]", host: { attributes: { "tabindex": "0" }, listeners: { "focus": "showTooltip()", "blur": "hideTooltip()", "mouseenter": "onMouseEnter()", "mouseleave": "onMouseLeave()" }, properties: { "class.tooltip-trigger": "true", "attr.aria-describedby": "ariaDescribedBy", "attr.role": "\"button\"" } }, ngImport: i0 });
24108
24167
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ClrTooltipTrigger, decorators: [{
24109
24168
  type: Directive,
24110
24169
  args: [{
@@ -24116,18 +24175,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
24116
24175
  '[attr.role]': '"button"',
24117
24176
  },
24118
24177
  }]
24119
- }], ctorParameters: function () { return [{ type: ClrPopoverToggleService }, { type: TooltipIdService }]; }, propDecorators: { showTooltip: [{
24120
- type: HostListener,
24121
- args: ['mouseenter']
24122
- }, {
24178
+ }], ctorParameters: function () { return [{ type: ClrPopoverToggleService }, { type: TooltipIdService }, { type: TooltipMouseService }]; }, propDecorators: { showTooltip: [{
24123
24179
  type: HostListener,
24124
24180
  args: ['focus']
24125
24181
  }], hideTooltip: [{
24126
- type: HostListener,
24127
- args: ['mouseleave']
24128
- }, {
24129
24182
  type: HostListener,
24130
24183
  args: ['blur']
24184
+ }], onMouseEnter: [{
24185
+ type: HostListener,
24186
+ args: ['mouseenter']
24187
+ }], onMouseLeave: [{
24188
+ type: HostListener,
24189
+ args: ['mouseleave']
24131
24190
  }] } });
24132
24191
 
24133
24192
  /*