@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
@@ -1328,69 +1328,62 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
1328
1328
  * This software is released under MIT license.
1329
1329
  * The full license information can be found in LICENSE in the root directory of this project.
1330
1330
  */
1331
- var KeyCodes;
1332
- (function (KeyCodes) {
1333
- KeyCodes["ArrowLeft"] = "ArrowLeft";
1334
- KeyCodes["ArrowUp"] = "ArrowUp";
1335
- KeyCodes["ArrowRight"] = "ArrowRight";
1336
- KeyCodes["ArrowDown"] = "ArrowDown";
1337
- KeyCodes["Backspace"] = "Backspace";
1338
- KeyCodes["Tab"] = "Tab";
1339
- KeyCodes["Enter"] = "Enter";
1340
- KeyCodes["Escape"] = "Escape";
1341
- KeyCodes["Space"] = "Space";
1342
- KeyCodes["Spacebar"] = " ";
1343
- KeyCodes["Home"] = "Home";
1344
- KeyCodes["End"] = "End";
1345
- })(KeyCodes || (KeyCodes = {}));
1346
- var IEKeyCodes;
1347
- (function (IEKeyCodes) {
1348
- IEKeyCodes["ArrowUp"] = "Up";
1349
- IEKeyCodes["ArrowDown"] = "Down";
1350
- IEKeyCodes["ArrowRight"] = "Right";
1351
- IEKeyCodes["ArrowLeft"] = "Left";
1352
- IEKeyCodes["Space"] = "Spacebar";
1353
- IEKeyCodes["Escape"] = "Esc";
1354
- IEKeyCodes["Home"] = "Home";
1355
- IEKeyCodes["End"] = "End";
1356
- IEKeyCodes["Enter"] = "Enter";
1357
- IEKeyCodes["Tab"] = "Tab";
1358
- })(IEKeyCodes || (IEKeyCodes = {}));
1359
-
1360
- /*
1361
- * Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
1362
- * This software is released under MIT license.
1363
- * The full license information can be found in LICENSE in the root directory of this project.
1364
- */
1365
- function keyValidator(key) {
1366
- if (key === KeyCodes.ArrowUp || key === IEKeyCodes.ArrowUp) {
1367
- return KeyCodes.ArrowUp;
1368
- }
1369
- else if (key === KeyCodes.ArrowDown || key === IEKeyCodes.ArrowDown) {
1370
- return KeyCodes.ArrowDown;
1371
- }
1372
- else if (key === KeyCodes.ArrowRight || key === IEKeyCodes.ArrowRight) {
1373
- return KeyCodes.ArrowRight;
1374
- }
1375
- else if (key === KeyCodes.ArrowLeft || key === IEKeyCodes.ArrowLeft) {
1376
- return KeyCodes.ArrowLeft;
1377
- }
1378
- else if (key === KeyCodes.Space || key === IEKeyCodes.Space) {
1379
- return KeyCodes.Space;
1380
- }
1381
- else if (key === KeyCodes.Escape || key === IEKeyCodes.Escape) {
1382
- return KeyCodes.Escape;
1331
+ var Keys;
1332
+ (function (Keys) {
1333
+ Keys["ArrowLeft"] = "ArrowLeft";
1334
+ Keys["ArrowUp"] = "ArrowUp";
1335
+ Keys["ArrowRight"] = "ArrowRight";
1336
+ Keys["ArrowDown"] = "ArrowDown";
1337
+ Keys["Backspace"] = "Backspace";
1338
+ Keys["Tab"] = "Tab";
1339
+ Keys["Enter"] = "Enter";
1340
+ Keys["Escape"] = "Escape";
1341
+ Keys["Space"] = "Space";
1342
+ Keys["Spacebar"] = " ";
1343
+ Keys["Home"] = "Home";
1344
+ Keys["End"] = "End";
1345
+ })(Keys || (Keys = {}));
1346
+ var IEKeys;
1347
+ (function (IEKeys) {
1348
+ IEKeys["ArrowUp"] = "Up";
1349
+ IEKeys["ArrowDown"] = "Down";
1350
+ IEKeys["ArrowRight"] = "Right";
1351
+ IEKeys["ArrowLeft"] = "Left";
1352
+ IEKeys["Space"] = "Spacebar";
1353
+ IEKeys["Escape"] = "Esc";
1354
+ })(IEKeys || (IEKeys = {}));
1355
+
1356
+ /*
1357
+ * Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
1358
+ * This software is released under MIT license.
1359
+ * The full license information can be found in LICENSE in the root directory of this project.
1360
+ */
1361
+ function normalizeKey(key) {
1362
+ if (key === Keys.ArrowUp || key === IEKeys.ArrowUp) {
1363
+ return Keys.ArrowUp;
1364
+ }
1365
+ else if (key === Keys.ArrowDown || key === IEKeys.ArrowDown) {
1366
+ return Keys.ArrowDown;
1367
+ }
1368
+ else if (key === Keys.ArrowRight || key === IEKeys.ArrowRight) {
1369
+ return Keys.ArrowRight;
1370
+ }
1371
+ else if (key === Keys.ArrowLeft || key === IEKeys.ArrowLeft) {
1372
+ return Keys.ArrowLeft;
1373
+ }
1374
+ else if (key === Keys.Space || key === IEKeys.Space) {
1375
+ return Keys.Space;
1376
+ }
1377
+ else if (key === Keys.Escape || key === IEKeys.Escape) {
1378
+ return Keys.Escape;
1383
1379
  }
1384
1380
  else {
1385
1381
  return key;
1386
1382
  }
1387
1383
  }
1388
1384
  function preventArrowKeyScroll(event) {
1389
- const validKey = keyValidator(event.key);
1390
- if (validKey === KeyCodes.ArrowUp ||
1391
- validKey === KeyCodes.ArrowDown ||
1392
- validKey === KeyCodes.ArrowLeft ||
1393
- validKey === KeyCodes.ArrowRight) {
1385
+ const key = normalizeKey(event.key);
1386
+ if (key === Keys.ArrowUp || key === Keys.ArrowDown || key === Keys.ArrowLeft || key === Keys.ArrowRight) {
1394
1387
  // prevent element container scroll
1395
1388
  // MDN references this is really the only way to prevent native browser interactions
1396
1389
  // https://developer.mozilla.org/en-US/docs/Web/Accessibility/Keyboard-navigable_JavaScript_widgets
@@ -5002,10 +4995,10 @@ class ClrKeyFocus {
5002
4995
  else if (this.nextKeyPressed(event) && this.currentFocusIsNotLastItem()) {
5003
4996
  this.moveTo(this.current + 1);
5004
4997
  }
5005
- else if (event.code === KeyCodes.Home) {
4998
+ else if (event.code === Keys.Home) {
5006
4999
  this.moveTo(0);
5007
5000
  }
5008
- else if (event.code === KeyCodes.End) {
5001
+ else if (event.code === Keys.End) {
5009
5002
  this.moveTo(this.focusableItems.length - 1);
5010
5003
  }
5011
5004
  preventArrowKeyScroll(event);
@@ -5053,27 +5046,27 @@ class ClrKeyFocus {
5053
5046
  });
5054
5047
  }
5055
5048
  nextKeyPressed(event) {
5056
- const key = keyValidator(event.key);
5049
+ const key = normalizeKey(event.key);
5057
5050
  switch (this.direction) {
5058
5051
  case ClrFocusDirection.VERTICAL:
5059
- return key === KeyCodes.ArrowDown;
5052
+ return key === Keys.ArrowDown;
5060
5053
  case ClrFocusDirection.HORIZONTAL:
5061
- return key === KeyCodes.ArrowRight;
5054
+ return key === Keys.ArrowRight;
5062
5055
  case ClrFocusDirection.BOTH:
5063
- return key === KeyCodes.ArrowDown || key === KeyCodes.ArrowRight;
5056
+ return key === Keys.ArrowDown || key === Keys.ArrowRight;
5064
5057
  default:
5065
5058
  return false;
5066
5059
  }
5067
5060
  }
5068
5061
  prevKeyPressed(event) {
5069
- const key = keyValidator(event.key);
5062
+ const key = normalizeKey(event.key);
5070
5063
  switch (this.direction) {
5071
5064
  case ClrFocusDirection.VERTICAL:
5072
- return key === KeyCodes.ArrowUp;
5065
+ return key === Keys.ArrowUp;
5073
5066
  case ClrFocusDirection.HORIZONTAL:
5074
- return key === KeyCodes.ArrowLeft;
5067
+ return key === Keys.ArrowLeft;
5075
5068
  case ClrFocusDirection.BOTH:
5076
- return key === KeyCodes.ArrowUp || key === KeyCodes.ArrowLeft;
5069
+ return key === Keys.ArrowUp || key === Keys.ArrowLeft;
5077
5070
  default:
5078
5071
  return false;
5079
5072
  }
@@ -5141,10 +5134,10 @@ class ClrRovingTabindex extends ClrKeyFocus {
5141
5134
  else if (this.nextKeyPressed(event) && this.currentFocusIsNotLastItem()) {
5142
5135
  this.updateTabindex(this.current + 1);
5143
5136
  }
5144
- else if (event.code === KeyCodes.Home) {
5137
+ else if (event.code === Keys.Home) {
5145
5138
  this.updateTabindex(0);
5146
5139
  }
5147
- else if (event.code === KeyCodes.End) {
5140
+ else if (event.code === Keys.End) {
5148
5141
  this.updateTabindex(this.focusableItems.length - 1);
5149
5142
  }
5150
5143
  super.handleKeyboardEvent(event);
@@ -5338,22 +5331,6 @@ const FOCUS_SERVICE_PROVIDER = {
5338
5331
  deps: [[new Optional(), new SkipSelf(), FocusService$1], Renderer2],
5339
5332
  };
5340
5333
 
5341
- /*
5342
- * Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
5343
- * This software is released under MIT license.
5344
- * The full license information can be found in LICENSE in the root directory of this project.
5345
- */
5346
- const UP_ARROW = 38;
5347
- const DOWN_ARROW = 40;
5348
- const RIGHT_ARROW = 39;
5349
- const LEFT_ARROW = 37;
5350
- const ENTER = 13;
5351
- const SPACE = 32;
5352
- const SHIFT = 16;
5353
- const TAB = 9;
5354
- const ESC = 27;
5355
- const BACKSPACE = 8;
5356
-
5357
5334
  /*
5358
5335
  * Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
5359
5336
  * This software is released under MIT license.
@@ -5807,10 +5784,10 @@ class ComboboxFocusHandler {
5807
5784
  // this service is only interested in keys that may move the focus
5808
5785
  handleTextInput(event) {
5809
5786
  let preventDefault = false;
5810
- const key = keyValidator(event.key);
5787
+ const key = normalizeKey(event.key);
5811
5788
  if (event) {
5812
5789
  switch (key) {
5813
- case KeyCodes.Enter:
5790
+ case Keys.Enter:
5814
5791
  if (this.toggleService.open && this.pseudoFocus.model) {
5815
5792
  if (this.selectionService.multiselectable) {
5816
5793
  this.selectionService.toggle(this.pseudoFocus.model.value);
@@ -5821,27 +5798,27 @@ class ComboboxFocusHandler {
5821
5798
  preventDefault = true;
5822
5799
  }
5823
5800
  break;
5824
- case KeyCodes.Space:
5801
+ case Keys.Space:
5825
5802
  if (!this.toggleService.open) {
5826
5803
  this.toggleService.open = true;
5827
5804
  preventDefault = true;
5828
5805
  }
5829
5806
  break;
5830
- case KeyCodes.ArrowUp:
5807
+ case Keys.ArrowUp:
5831
5808
  this.preventViewportScrolling(event);
5832
5809
  this.openAndMoveTo(ArrowKeyDirection.UP);
5833
5810
  preventDefault = true;
5834
5811
  break;
5835
- case KeyCodes.ArrowDown:
5812
+ case Keys.ArrowDown:
5836
5813
  this.preventViewportScrolling(event);
5837
5814
  this.openAndMoveTo(ArrowKeyDirection.DOWN);
5838
5815
  preventDefault = true;
5839
5816
  break;
5840
5817
  default:
5841
5818
  // Any other keypress
5842
- if (event.key !== KeyCodes.Tab &&
5843
- !(this.selectionService.multiselectable && event.key === KeyCodes.Backspace) &&
5844
- !(event.key === KeyCodes.Escape) &&
5819
+ if (event.key !== Keys.Tab &&
5820
+ !(this.selectionService.multiselectable && event.key === Keys.Backspace) &&
5821
+ !(event.key === Keys.Escape) &&
5845
5822
  !this.toggleService.open) {
5846
5823
  this.toggleService.open = true;
5847
5824
  }
@@ -6294,7 +6271,7 @@ class ClrCombobox extends WrappedFormControl {
6294
6271
  }
6295
6272
  onKeyUp(event) {
6296
6273
  // if BACKSPACE in multiselect mode, delete the last pill if text is empty
6297
- if (event.keyCode === BACKSPACE && this.multiSelect && this._searchText.length === 0) {
6274
+ if (event.key === Keys.Backspace && this.multiSelect && this._searchText.length === 0) {
6298
6275
  const multiModel = this.optionSelectionService.selectionModel.model;
6299
6276
  if (multiModel && multiModel.length > 0) {
6300
6277
  const lastItem = multiModel[multiModel.length - 1];
@@ -8250,20 +8227,20 @@ class ClrCalendar {
8250
8227
  */
8251
8228
  onKeyDown(event) {
8252
8229
  if (event && this.focusedDay) {
8253
- switch (event.keyCode) {
8254
- case UP_ARROW:
8230
+ switch (normalizeKey(event.key)) {
8231
+ case Keys.ArrowUp:
8255
8232
  event.preventDefault();
8256
8233
  this._dateNavigationService.incrementFocusDay(-1 * NO_OF_DAYS_IN_A_WEEK);
8257
8234
  break;
8258
- case DOWN_ARROW:
8235
+ case Keys.ArrowDown:
8259
8236
  event.preventDefault();
8260
8237
  this._dateNavigationService.incrementFocusDay(NO_OF_DAYS_IN_A_WEEK);
8261
8238
  break;
8262
- case LEFT_ARROW:
8239
+ case Keys.ArrowLeft:
8263
8240
  event.preventDefault();
8264
8241
  this._dateNavigationService.incrementFocusDay(-1);
8265
8242
  break;
8266
- case RIGHT_ARROW:
8243
+ case Keys.ArrowRight:
8267
8244
  event.preventDefault();
8268
8245
  this._dateNavigationService.incrementFocusDay(1);
8269
8246
  break;
@@ -8448,23 +8425,23 @@ class ClrMonthpicker {
8448
8425
  // the logic is fairly simple and it didn't make sense for me
8449
8426
  // to create extra observables just to move this logic to the service.
8450
8427
  if (event) {
8451
- const keyCode = event.keyCode;
8452
- if (keyCode === UP_ARROW && this._focusedMonthIndex > 0) {
8428
+ const key = normalizeKey(event.key);
8429
+ if (key === Keys.ArrowUp && this._focusedMonthIndex > 0) {
8453
8430
  event.preventDefault();
8454
8431
  this._focusedMonthIndex--;
8455
8432
  this._datepickerFocusService.focusCell(this._elRef);
8456
8433
  }
8457
- else if (keyCode === DOWN_ARROW && this._focusedMonthIndex < 11) {
8434
+ else if (key === Keys.ArrowDown && this._focusedMonthIndex < 11) {
8458
8435
  event.preventDefault();
8459
8436
  this._focusedMonthIndex++;
8460
8437
  this._datepickerFocusService.focusCell(this._elRef);
8461
8438
  }
8462
- else if (keyCode === RIGHT_ARROW && this._focusedMonthIndex < 6) {
8439
+ else if (key === Keys.ArrowRight && this._focusedMonthIndex < 6) {
8463
8440
  event.preventDefault();
8464
8441
  this._focusedMonthIndex = this._focusedMonthIndex + 6;
8465
8442
  this._datepickerFocusService.focusCell(this._elRef);
8466
8443
  }
8467
- else if (keyCode === LEFT_ARROW && this._focusedMonthIndex > 5) {
8444
+ else if (key === Keys.ArrowLeft && this._focusedMonthIndex > 5) {
8468
8445
  event.preventDefault();
8469
8446
  this._focusedMonthIndex = this._focusedMonthIndex - 6;
8470
8447
  this._datepickerFocusService.focusCell(this._elRef);
@@ -8668,20 +8645,20 @@ class ClrYearpicker {
8668
8645
  // the logic is fairly simple and it didn't make sense for me
8669
8646
  // to create extra observables just to move this logic to the service.
8670
8647
  if (event) {
8671
- const keyCode = event.keyCode;
8672
- if (keyCode === UP_ARROW) {
8648
+ const key = normalizeKey(event.key);
8649
+ if (key === Keys.ArrowUp) {
8673
8650
  event.preventDefault();
8674
8651
  this.incrementFocusYearBy(-1);
8675
8652
  }
8676
- else if (keyCode === DOWN_ARROW) {
8653
+ else if (key === Keys.ArrowDown) {
8677
8654
  event.preventDefault();
8678
8655
  this.incrementFocusYearBy(1);
8679
8656
  }
8680
- else if (keyCode === RIGHT_ARROW) {
8657
+ else if (key === Keys.ArrowRight) {
8681
8658
  event.preventDefault();
8682
8659
  this.incrementFocusYearBy(5);
8683
8660
  }
8684
- else if (keyCode === LEFT_ARROW) {
8661
+ else if (key === Keys.ArrowLeft) {
8685
8662
  event.preventDefault();
8686
8663
  this.incrementFocusYearBy(-5);
8687
8664
  }
@@ -13464,10 +13441,10 @@ class ClrDatagridColumnSeparator {
13464
13441
  }
13465
13442
  }
13466
13443
  isArrowLeftKeyEvent(event) {
13467
- return event.key === KeyCodes.ArrowLeft || event.key === IEKeyCodes.ArrowLeft;
13444
+ return normalizeKey(event.key) === Keys.ArrowLeft;
13468
13445
  }
13469
13446
  isArrowRightKeyEvent(event) {
13470
- return event.key === KeyCodes.ArrowRight || event.key === IEKeyCodes.ArrowRight;
13447
+ return normalizeKey(event.key) === Keys.ArrowRight;
13471
13448
  }
13472
13449
  ngOnDestroy() {
13473
13450
  this.unlisteners.forEach(unlistener => unlistener());
@@ -16482,7 +16459,7 @@ class ClrDatagridDetail {
16482
16459
  }
16483
16460
  }
16484
16461
  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 });
16485
- 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: `
16462
+ 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: `
16486
16463
  <div
16487
16464
  [clrFocusTrap]="{ strict: false }"
16488
16465
  class="datagrid-detail-pane-content"
@@ -16527,7 +16504,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
16527
16504
  args: [ClrDatagridDetailHeader]
16528
16505
  }], closeCheck: [{
16529
16506
  type: HostListener,
16530
- args: ['document:keyup.esc']
16507
+ args: ['document:keyup.escape']
16531
16508
  }] } });
16532
16509
 
16533
16510
  /*
@@ -19816,32 +19793,32 @@ class ClrTreeNode {
19816
19793
  // By default, pressing arrow key makes AT focus go into the nested content of the item.
19817
19794
  preventArrowKeyScroll(event);
19818
19795
  // https://www.w3.org/TR/wai-aria-practices-1.1/#keyboard-interaction-22
19819
- switch (keyValidator(event.key)) {
19820
- case KeyCodes.ArrowUp:
19796
+ switch (normalizeKey(event.key)) {
19797
+ case Keys.ArrowUp:
19821
19798
  this.focusManager.focusNodeAbove(this._model);
19822
19799
  break;
19823
- case KeyCodes.ArrowDown:
19800
+ case Keys.ArrowDown:
19824
19801
  this.focusManager.focusNodeBelow(this._model);
19825
19802
  break;
19826
- case KeyCodes.ArrowRight:
19803
+ case Keys.ArrowRight:
19827
19804
  this.expandOrFocusFirstChild();
19828
19805
  break;
19829
- case KeyCodes.ArrowLeft:
19806
+ case Keys.ArrowLeft:
19830
19807
  this.collapseOrFocusParent();
19831
19808
  break;
19832
- case KeyCodes.Home:
19809
+ case Keys.Home:
19833
19810
  event.preventDefault();
19834
19811
  this.focusManager.focusFirstVisibleNode();
19835
19812
  break;
19836
- case KeyCodes.End:
19813
+ case Keys.End:
19837
19814
  event.preventDefault();
19838
19815
  this.focusManager.focusLastVisibleNode();
19839
19816
  break;
19840
- case KeyCodes.Enter:
19817
+ case Keys.Enter:
19841
19818
  this.toggleExpandOrTriggerDefault();
19842
19819
  break;
19843
- case KeyCodes.Space:
19844
- case KeyCodes.Spacebar:
19820
+ case Keys.Space:
19821
+ case Keys.Spacebar:
19845
19822
  // to prevent scrolling on space key in this specific case
19846
19823
  event.preventDefault();
19847
19824
  this.toggleExpandOrTriggerDefault();
@@ -20210,10 +20187,10 @@ class DropdownFocusHandler {
20210
20187
  // whether root container or not, tab key should always toggle (i.e. close) the container
20211
20188
  this._unlistenFuncs.push(this.renderer.listen(el, 'keydown.tab', event => this.toggleService.toggleWithEvent(event)));
20212
20189
  if (this.parent) {
20213
- // if it's a nested container, pressing esc has the same effect as pressing left key, which closes the current
20190
+ // if it's a nested container, pressing escape has the same effect as pressing left key, which closes the current
20214
20191
  // popup and moves up to its parent. Here, we stop propagation so that the parent container
20215
- // doesn't receive the esc keydown
20216
- this._unlistenFuncs.push(this.renderer.listen(el, 'keydown.esc', event => {
20192
+ // doesn't receive the escape keydown
20193
+ this._unlistenFuncs.push(this.renderer.listen(el, 'keydown.escape', event => {
20217
20194
  this.focusService.move(ArrowKeyDirection.LEFT);
20218
20195
  event.stopPropagation();
20219
20196
  }));
@@ -20221,8 +20198,8 @@ class DropdownFocusHandler {
20221
20198
  else {
20222
20199
  // The root container is the only one we register to the focus service, others do not need focus
20223
20200
  this.focusService.registerContainer(el);
20224
- // The root container will simply close the container when esc key is pressed
20225
- this._unlistenFuncs.push(this.renderer.listen(el, 'keydown.esc', event => this.toggleService.toggleWithEvent(event)));
20201
+ // The root container will simply close the container when escape key is pressed
20202
+ this._unlistenFuncs.push(this.renderer.listen(el, 'keydown.escape', event => this.toggleService.toggleWithEvent(event)));
20226
20203
  // When the user moves focus outside of the menu, we close the dropdown
20227
20204
  this._unlistenFuncs.push(this.renderer.listen(el, 'blur', event => {
20228
20205
  // we clear out any existing focus on the items
@@ -20446,11 +20423,9 @@ const BASIC_FOCUSABLE_ITEM_PROVIDER = [
20446
20423
  * The full license information can be found in LICENSE in the root directory of this project.
20447
20424
  */
20448
20425
  class ClrDropdownItem {
20449
- constructor(dropdown, el, _dropdownService, renderer, focusableItem) {
20426
+ constructor(dropdown, _dropdownService, focusableItem) {
20450
20427
  this.dropdown = dropdown;
20451
- this.el = el;
20452
20428
  this._dropdownService = _dropdownService;
20453
- this.renderer = renderer;
20454
20429
  this.focusableItem = focusableItem;
20455
20430
  this.setByDeprecatedDisabled = false;
20456
20431
  }
@@ -20481,22 +20456,28 @@ class ClrDropdownItem {
20481
20456
  get dropdownItemId() {
20482
20457
  return this.focusableItem.id;
20483
20458
  }
20484
- ngAfterViewInit() {
20485
- this.unlisten = this.renderer.listen(this.el.nativeElement, 'click', () => this.onDropdownItemClick());
20486
- }
20487
20459
  onDropdownItemClick() {
20488
- if (this.dropdown.isMenuClosable && !this.el.nativeElement.classList.contains('disabled')) {
20489
- this._dropdownService.closeMenus();
20490
- }
20460
+ // Ensure that the dropdown is closed after custom dropdown item click event handlers have run.
20461
+ setTimeout(() => {
20462
+ if (this.dropdown.isMenuClosable && !this.disabled) {
20463
+ this._dropdownService.closeMenus();
20464
+ }
20465
+ });
20491
20466
  }
20492
- ngOnDestroy() {
20493
- if (this.unlisten) {
20494
- this.unlisten();
20467
+ onSpaceKeydown($event) {
20468
+ this.stopImmediatePropagationIfDisabled($event);
20469
+ }
20470
+ onEnterKeydown($event) {
20471
+ this.stopImmediatePropagationIfDisabled($event);
20472
+ }
20473
+ stopImmediatePropagationIfDisabled($event) {
20474
+ if (this.disabled) {
20475
+ $event.stopImmediatePropagation();
20495
20476
  }
20496
20477
  }
20497
20478
  }
20498
- 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 });
20499
- 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 });
20479
+ 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 });
20480
+ 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 });
20500
20481
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ClrDropdownItem, decorators: [{
20501
20482
  type: Directive,
20502
20483
  args: [{
@@ -20511,7 +20492,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
20511
20492
  },
20512
20493
  providers: [BASIC_FOCUSABLE_ITEM_PROVIDER],
20513
20494
  }]
20514
- }], ctorParameters: function () { return [{ type: ClrDropdown }, { type: i0.ElementRef }, { type: RootDropdownService }, { type: i0.Renderer2 }, { type: FocusableItem }]; }, propDecorators: { disabled: [{
20495
+ }], ctorParameters: function () { return [{ type: ClrDropdown }, { type: RootDropdownService }, { type: FocusableItem }]; }, propDecorators: { disabled: [{
20515
20496
  type: Input,
20516
20497
  args: ['clrDisabled']
20517
20498
  }], disabledDeprecated: [{
@@ -20520,6 +20501,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
20520
20501
  }], dropdownItemId: [{
20521
20502
  type: Input,
20522
20503
  args: ['id']
20504
+ }], onDropdownItemClick: [{
20505
+ type: HostListener,
20506
+ args: ['click']
20507
+ }], onSpaceKeydown: [{
20508
+ type: HostListener,
20509
+ args: ['keydown.space', ['$event']]
20510
+ }], onEnterKeydown: [{
20511
+ type: HostListener,
20512
+ args: ['keydown.enter', ['$event']]
20523
20513
  }] } });
20524
20514
 
20525
20515
  /*
@@ -20792,7 +20782,6 @@ class Popover {
20792
20782
  * This software is released under MIT license.
20793
20783
  * The full license information can be found in LICENSE in the root directory of this project.
20794
20784
  */
20795
- // Literally any annotation would work here, but writing our own @HoneyBadger annotation feels overkill.
20796
20785
  class AbstractPopover {
20797
20786
  constructor(injector, parentHost) {
20798
20787
  this.parentHost = parentHost;
@@ -20871,7 +20860,7 @@ class AbstractPopover {
20871
20860
  this.ngZone.runOutsideAngular(() => {
20872
20861
  this.documentESCListener = this.renderer.listen('document', 'keydown', event => {
20873
20862
  if (event && event.key) {
20874
- if (event.key === 'Escape' || event.key === 'Esc') {
20863
+ if (normalizeKey(event.key) === Keys.Escape) {
20875
20864
  this.ngZone.run(() => {
20876
20865
  this.toggleService.open = false;
20877
20866
  this.ref.markForCheck();
@@ -22975,7 +22964,7 @@ ClrTabs.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3
22975
22964
  <!--tab links in overflow menu-->
22976
22965
  <clr-tab-overflow-content
22977
22966
  *ngIf="toggleService.open"
22978
- (document:keydown.esc)="closeOnEscapeKey()"
22967
+ (document:keydown.escape)="closeOnEscapeKey()"
22979
22968
  (document:click)="closeOnOutsideClick($event, tabOverflowTrigger)"
22980
22969
  (focusout)="closeOnFocusOut($event)"
22981
22970
  >
@@ -23039,7 +23028,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
23039
23028
  <!--tab links in overflow menu-->
23040
23029
  <clr-tab-overflow-content
23041
23030
  *ngIf="toggleService.open"
23042
- (document:keydown.esc)="closeOnEscapeKey()"
23031
+ (document:keydown.escape)="closeOnEscapeKey()"
23043
23032
  (document:click)="closeOnOutsideClick($event, tabOverflowTrigger)"
23044
23033
  (focusout)="closeOnFocusOut($event)"
23045
23034
  >
@@ -24096,6 +24085,46 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
24096
24085
  type: Injectable
24097
24086
  }] });
24098
24087
 
24088
+ /*
24089
+ * Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
24090
+ * This software is released under MIT license.
24091
+ * The full license information can be found in LICENSE in the root directory of this project.
24092
+ */
24093
+ class TooltipMouseService {
24094
+ constructor(toggleService) {
24095
+ this.toggleService = toggleService;
24096
+ }
24097
+ onMouseEnterTrigger() {
24098
+ this.mouseOverTrigger = true;
24099
+ this.toggleService.open = true;
24100
+ }
24101
+ onMouseLeaveTrigger() {
24102
+ this.mouseOverTrigger = false;
24103
+ this.hideIfMouseOut();
24104
+ }
24105
+ onMouseEnterContent() {
24106
+ this.mouseOverContent = true;
24107
+ }
24108
+ onMouseLeaveContent() {
24109
+ this.mouseOverContent = false;
24110
+ this.hideIfMouseOut();
24111
+ }
24112
+ hideIfMouseOut() {
24113
+ // A zero timeout is used so that the code has a chance to update
24114
+ // the `mouseOverContent` property after the user moves the mouse from the trigger to the content.
24115
+ setTimeout(() => {
24116
+ if (!this.mouseOverTrigger && !this.mouseOverContent) {
24117
+ this.toggleService.open = false;
24118
+ }
24119
+ }, 0);
24120
+ }
24121
+ }
24122
+ TooltipMouseService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: TooltipMouseService, deps: [{ token: ClrPopoverToggleService }], target: i0.ɵɵFactoryTarget.Injectable });
24123
+ TooltipMouseService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: TooltipMouseService });
24124
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: TooltipMouseService, decorators: [{
24125
+ type: Injectable
24126
+ }], ctorParameters: function () { return [{ type: ClrPopoverToggleService }]; } });
24127
+
24099
24128
  /*
24100
24129
  * Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
24101
24130
  * This software is released under MIT license.
@@ -24104,7 +24133,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
24104
24133
  class ClrTooltip {
24105
24134
  }
24106
24135
  ClrTooltip.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ClrTooltip, deps: [], target: i0.ɵɵFactoryTarget.Component });
24107
- 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 });
24136
+ ClrTooltip.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: ClrTooltip, selector: "clr-tooltip", host: { properties: { "class.tooltip": "true" } }, providers: [
24137
+ ClrPopoverToggleService,
24138
+ { provide: POPOVER_HOST_ANCHOR, useExisting: ElementRef },
24139
+ TooltipIdService,
24140
+ TooltipMouseService,
24141
+ ], ngImport: i0, template: `<ng-content></ng-content>`, isInline: true });
24108
24142
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ClrTooltip, decorators: [{
24109
24143
  type: Component,
24110
24144
  args: [{
@@ -24113,7 +24147,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
24113
24147
  host: {
24114
24148
  '[class.tooltip]': 'true',
24115
24149
  },
24116
- providers: [ClrPopoverToggleService, { provide: POPOVER_HOST_ANCHOR, useExisting: ElementRef }, TooltipIdService],
24150
+ providers: [
24151
+ ClrPopoverToggleService,
24152
+ { provide: POPOVER_HOST_ANCHOR, useExisting: ElementRef },
24153
+ TooltipIdService,
24154
+ TooltipMouseService,
24155
+ ],
24117
24156
  }]
24118
24157
  }] });
24119
24158
 
@@ -24136,9 +24175,10 @@ const SIZES = ['xs', 'sm', 'md', 'lg'];
24136
24175
  const defaultPosition = 'right';
24137
24176
  const defaultSize = 'sm';
24138
24177
  class ClrTooltipContent extends AbstractPopover {
24139
- constructor(injector, parentHost, tooltipIdService) {
24178
+ constructor(injector, parentHost, tooltipIdService, tooltipMouseService) {
24140
24179
  super(injector, parentHost);
24141
24180
  this.tooltipIdService = tooltipIdService;
24181
+ this.tooltipMouseService = tooltipMouseService;
24142
24182
  if (!parentHost) {
24143
24183
  throw new Error('clr-tooltip-content should only be used inside of a clr-tooltip');
24144
24184
  }
@@ -24204,13 +24244,19 @@ class ClrTooltipContent extends AbstractPopover {
24204
24244
  this.size = this.size || defaultSize;
24205
24245
  this.position = this.position || defaultPosition;
24206
24246
  }
24247
+ onMouseEnter() {
24248
+ this.tooltipMouseService.onMouseEnterContent();
24249
+ }
24250
+ onMouseLeave() {
24251
+ this.tooltipMouseService.onMouseLeaveContent();
24252
+ }
24207
24253
  updateCssClass({ oldClass, newClass }) {
24208
24254
  this.renderer.removeClass(this.el.nativeElement, oldClass);
24209
24255
  this.renderer.addClass(this.el.nativeElement, newClass);
24210
24256
  }
24211
24257
  }
24212
- 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 });
24213
- 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 });
24258
+ 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 });
24259
+ 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 });
24214
24260
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ClrTooltipContent, decorators: [{
24215
24261
  type: Component,
24216
24262
  args: [{
@@ -24229,7 +24275,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
24229
24275
  }, {
24230
24276
  type: Inject,
24231
24277
  args: [POPOVER_HOST_ANCHOR]
24232
- }] }, { type: TooltipIdService }];
24278
+ }] }, { type: TooltipIdService }, { type: TooltipMouseService }];
24233
24279
  }, propDecorators: { id: [{
24234
24280
  type: Input
24235
24281
  }], position: [{
@@ -24238,6 +24284,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
24238
24284
  }], size: [{
24239
24285
  type: Input,
24240
24286
  args: ['clrSize']
24287
+ }], onMouseEnter: [{
24288
+ type: HostListener,
24289
+ args: ['mouseenter']
24290
+ }], onMouseLeave: [{
24291
+ type: HostListener,
24292
+ args: ['mouseleave']
24241
24293
  }] } });
24242
24294
 
24243
24295
  /*
@@ -24246,25 +24298,32 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
24246
24298
  * The full license information can be found in LICENSE in the root directory of this project.
24247
24299
  */
24248
24300
  class ClrTooltipTrigger {
24249
- constructor(toggleService, tooltipIdService) {
24301
+ constructor(toggleService, tooltipIdService, tooltipMouseService) {
24250
24302
  this.toggleService = toggleService;
24251
24303
  this.tooltipIdService = tooltipIdService;
24304
+ this.tooltipMouseService = tooltipMouseService;
24252
24305
  this.subs = [];
24253
24306
  // The aria-described by comes from the id of content. It
24254
24307
  this.subs.push(this.tooltipIdService.id.subscribe(tooltipId => (this.ariaDescribedBy = tooltipId)));
24255
24308
  }
24309
+ ngOnDestroy() {
24310
+ this.subs.forEach(sub => sub.unsubscribe());
24311
+ }
24256
24312
  showTooltip() {
24257
24313
  this.toggleService.open = true;
24258
24314
  }
24259
24315
  hideTooltip() {
24260
24316
  this.toggleService.open = false;
24261
24317
  }
24262
- ngOnDestroy() {
24263
- this.subs.forEach(sub => sub.unsubscribe());
24318
+ onMouseEnter() {
24319
+ this.tooltipMouseService.onMouseEnterTrigger();
24320
+ }
24321
+ onMouseLeave() {
24322
+ this.tooltipMouseService.onMouseLeaveTrigger();
24264
24323
  }
24265
24324
  }
24266
- 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 });
24267
- 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 });
24325
+ 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 });
24326
+ 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 });
24268
24327
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ClrTooltipTrigger, decorators: [{
24269
24328
  type: Directive,
24270
24329
  args: [{
@@ -24276,18 +24335,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
24276
24335
  '[attr.role]': '"button"',
24277
24336
  },
24278
24337
  }]
24279
- }], ctorParameters: function () { return [{ type: ClrPopoverToggleService }, { type: TooltipIdService }]; }, propDecorators: { showTooltip: [{
24280
- type: HostListener,
24281
- args: ['mouseenter']
24282
- }, {
24338
+ }], ctorParameters: function () { return [{ type: ClrPopoverToggleService }, { type: TooltipIdService }, { type: TooltipMouseService }]; }, propDecorators: { showTooltip: [{
24283
24339
  type: HostListener,
24284
24340
  args: ['focus']
24285
24341
  }], hideTooltip: [{
24286
- type: HostListener,
24287
- args: ['mouseleave']
24288
- }, {
24289
24342
  type: HostListener,
24290
24343
  args: ['blur']
24344
+ }], onMouseEnter: [{
24345
+ type: HostListener,
24346
+ args: ['mouseenter']
24347
+ }], onMouseLeave: [{
24348
+ type: HostListener,
24349
+ args: ['mouseleave']
24291
24350
  }] } });
24292
24351
 
24293
24352
  /*