@progress/kendo-angular-buttons 11.3.0-develop.1 → 11.3.0-develop.11

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.
@@ -178,6 +178,13 @@ export declare class ButtonComponent implements OnDestroy, AfterViewInit {
178
178
  * @hidden
179
179
  */
180
180
  set look(value: 'flat' | 'outline' | 'clear' | 'default');
181
+ /**
182
+ * Alias for ElementRef.nativeElement to workaround
183
+ * ViewChild() selectors that used to return the host element before v11.
184
+ *
185
+ * @hidden
186
+ */
187
+ get nativeElement(): any;
181
188
  constructor(element: ElementRef, renderer: Renderer2, service: KendoButtonService, localization: LocalizationService, ngZone: NgZone);
182
189
  ngOnInit(): void;
183
190
  ngOnChanges(change: SimpleChanges): void;
@@ -4,18 +4,19 @@
4
4
  *-------------------------------------------------------------------------------------------*/
5
5
  import { Component, ElementRef, EventEmitter, HostBinding, HostListener, Input, Renderer2, Output, Optional, NgZone, isDevMode } from '@angular/core';
6
6
  import { KendoButtonService } from './button.service';
7
- import { isDocumentAvailable, isChanged, hasObservers, Keys } from '@progress/kendo-angular-common';
7
+ import { isDocumentAvailable, isChanged, hasObservers, Keys, isSafari, isFirefox } from '@progress/kendo-angular-common';
8
8
  import { LocalizationService, L10N_PREFIX } from '@progress/kendo-angular-l10n';
9
9
  import { Subscription } from 'rxjs';
10
10
  import { validatePackage } from '@progress/kendo-licensing';
11
11
  import { packageMetadata } from '../package-metadata';
12
- import { getStylingClasses, getThemeColorClasses, isFirefox } from '../util';
12
+ import { getStylingClasses, getThemeColorClasses } from '../util';
13
13
  import * as i0 from "@angular/core";
14
14
  import * as i1 from "./button.service";
15
15
  import * as i2 from "@progress/kendo-angular-l10n";
16
16
  import * as i3 from "@progress/kendo-angular-icons";
17
17
  import * as i4 from "@angular/common";
18
18
  const SPAN_TAG_NAME = 'SPAN';
19
+ const BUTTON_TAG_NAME = 'BUTTON';
19
20
  const KENDO_BUTTON_TAG_NAME = 'KENDO-BUTTON';
20
21
  const DEFAULT_ROUNDED = 'medium';
21
22
  const DEFAULT_SIZE = 'medium';
@@ -288,6 +289,15 @@ export class ButtonComponent {
288
289
  break;
289
290
  }
290
291
  }
292
+ /**
293
+ * Alias for ElementRef.nativeElement to workaround
294
+ * ViewChild() selectors that used to return the host element before v11.
295
+ *
296
+ * @hidden
297
+ */
298
+ get nativeElement() {
299
+ return this.element;
300
+ }
291
301
  ngOnInit() {
292
302
  const elementTagName = this.element.tagName;
293
303
  const isSpanOrKendoButton = elementTagName === SPAN_TAG_NAME || elementTagName === KENDO_BUTTON_TAG_NAME;
@@ -311,6 +321,15 @@ export class ButtonComponent {
311
321
  this._onButtonClick();
312
322
  }
313
323
  }));
324
+ this.subs.add(this.renderer.listen(this.element, 'mousedown', (event) => {
325
+ const elementTagName = this.element.tagName;
326
+ const isButton = elementTagName === BUTTON_TAG_NAME;
327
+ const isBrowserSafari = isDocumentAvailable() && isSafari(navigator.userAgent);
328
+ if (!this.isDisabled && isButton && isBrowserSafari) {
329
+ event.preventDefault();
330
+ this.element.focus();
331
+ }
332
+ }));
314
333
  });
315
334
  }
316
335
  ngOnChanges(change) {
@@ -167,7 +167,7 @@ export class ListButton {
167
167
  if (this._disabled) {
168
168
  return;
169
169
  }
170
- this._toggle(!this.openState);
170
+ this._toggle(!this.openState, true);
171
171
  if (!this.isClosePrevented) {
172
172
  this.focusService.focus(this.openState ? 0 : -1);
173
173
  }
@@ -229,7 +229,8 @@ export class ListButton {
229
229
  if (this.disabled) {
230
230
  return;
231
231
  }
232
- this._toggle((open === undefined) ? !this.openState : open);
232
+ const value = open === undefined ? !this.openState : open;
233
+ this._toggle(value, false);
233
234
  }
234
235
  /**
235
236
  * @hidden
@@ -343,20 +344,22 @@ export class ListButton {
343
344
  onArrowKeyNavigate({ index }) {
344
345
  this.focusService.focus(index);
345
346
  }
346
- _toggle(open) {
347
+ _toggle(open, emitEvent) {
347
348
  if (this.openState === open) {
348
349
  return;
349
350
  }
350
351
  const eventArgs = new PreventableEvent();
351
- if (open && !this.openState) {
352
- this.open.emit(eventArgs);
353
- }
354
- else if (!open && this.openState) {
355
- this.close.emit(eventArgs);
356
- }
357
- if (eventArgs.isDefaultPrevented()) {
358
- this.isClosePrevented = true;
359
- return;
352
+ if (emitEvent) {
353
+ if (open && !this.openState) {
354
+ this.open.emit(eventArgs);
355
+ }
356
+ else if (!open && this.openState) {
357
+ this.close.emit(eventArgs);
358
+ }
359
+ if (eventArgs.isDefaultPrevented()) {
360
+ this.isClosePrevented = true;
361
+ return;
362
+ }
360
363
  }
361
364
  this.openState = open;
362
365
  this.destroyPopup();
@@ -9,7 +9,7 @@ export const packageMetadata = {
9
9
  name: '@progress/kendo-angular-buttons',
10
10
  productName: 'Kendo UI for Angular',
11
11
  productCodes: ['KENDOUIANGULAR', 'KENDOUICOMPLETE'],
12
- publishDate: 1676463576,
13
- version: '11.3.0-develop.1',
12
+ publishDate: 1677599157,
13
+ version: '11.3.0-develop.11',
14
14
  licensingDocsUrl: 'https://www.telerik.com/kendo-angular-ui/my-license/'
15
15
  };
package/esm2020/util.mjs CHANGED
@@ -2,7 +2,6 @@
2
2
  * Copyright © 2023 Progress Software Corporation. All rights reserved.
3
3
  * Licensed under commercial license. See LICENSE.md in the project root for more information
4
4
  *-------------------------------------------------------------------------------------------*/
5
- import { detectDesktopBrowser, detectMobileOS } from "@progress/kendo-common";
6
5
  /**
7
6
  * @hidden
8
7
  */
@@ -94,13 +93,3 @@ export const getThemeColorClasses = (componentType, prevFillMode, fillMode, prev
94
93
  toAdd: newValue !== 'none' ? `k-${componentType}-${fillMode}-${newValue}` : ''
95
94
  };
96
95
  };
97
- /**
98
- * @hidden
99
- *
100
- * Returns true if the used browser is Firefox.
101
- */
102
- export const isFirefox = (userAgent) => {
103
- const desktopBrowser = detectDesktopBrowser(userAgent);
104
- const mobileOS = detectMobileOS(userAgent);
105
- return (desktopBrowser && desktopBrowser.mozilla) || (mobileOS && mobileOS.browser === 'firefox');
106
- };
@@ -5,12 +5,11 @@
5
5
  import * as i0 from '@angular/core';
6
6
  import { Injectable, EventEmitter, isDevMode, Component, Optional, Input, Output, HostBinding, HostListener, ContentChildren, NgModule, Directive, InjectionToken, Inject, forwardRef, ElementRef, ViewContainerRef, ContentChild, ViewChild } from '@angular/core';
7
7
  import * as i9 from '@progress/kendo-angular-common';
8
- import { isDocumentAvailable, Keys, isChanged, hasObservers, guid, anyChanged, EventsModule } from '@progress/kendo-angular-common';
8
+ import { isDocumentAvailable, isFirefox, Keys, isSafari, isChanged, hasObservers, guid, anyChanged, EventsModule } from '@progress/kendo-angular-common';
9
9
  import * as i1 from '@progress/kendo-angular-l10n';
10
10
  import { LocalizationService, L10N_PREFIX, ComponentMessages } from '@progress/kendo-angular-l10n';
11
11
  import { Subject, Subscription, fromEvent, merge } from 'rxjs';
12
12
  import { validatePackage } from '@progress/kendo-licensing';
13
- import { detectDesktopBrowser, detectMobileOS } from '@progress/kendo-common';
14
13
  import * as i2 from '@progress/kendo-angular-icons';
15
14
  import { IconsModule } from '@progress/kendo-angular-icons';
16
15
  import * as i3 from '@angular/common';
@@ -29,8 +28,8 @@ const packageMetadata = {
29
28
  name: '@progress/kendo-angular-buttons',
30
29
  productName: 'Kendo UI for Angular',
31
30
  productCodes: ['KENDOUIANGULAR', 'KENDOUICOMPLETE'],
32
- publishDate: 1676463576,
33
- version: '11.3.0-develop.1',
31
+ publishDate: 1677599157,
32
+ version: '11.3.0-develop.11',
34
33
  licensingDocsUrl: 'https://www.telerik.com/kendo-angular-ui/my-license/'
35
34
  };
36
35
 
@@ -125,16 +124,6 @@ const getThemeColorClasses = (componentType, prevFillMode, fillMode, previousVal
125
124
  toAdd: newValue !== 'none' ? `k-${componentType}-${fillMode}-${newValue}` : ''
126
125
  };
127
126
  };
128
- /**
129
- * @hidden
130
- *
131
- * Returns true if the used browser is Firefox.
132
- */
133
- const isFirefox = (userAgent) => {
134
- const desktopBrowser = detectDesktopBrowser(userAgent);
135
- const mobileOS = detectMobileOS(userAgent);
136
- return (desktopBrowser && desktopBrowser.mozilla) || (mobileOS && mobileOS.browser === 'firefox');
137
- };
138
127
 
139
128
  /**
140
129
  * @hidden
@@ -155,6 +144,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
155
144
  }] });
156
145
 
157
146
  const SPAN_TAG_NAME = 'SPAN';
147
+ const BUTTON_TAG_NAME = 'BUTTON';
158
148
  const KENDO_BUTTON_TAG_NAME = 'KENDO-BUTTON';
159
149
  const DEFAULT_ROUNDED$3 = 'medium';
160
150
  const DEFAULT_SIZE$2 = 'medium';
@@ -427,6 +417,15 @@ class ButtonComponent {
427
417
  break;
428
418
  }
429
419
  }
420
+ /**
421
+ * Alias for ElementRef.nativeElement to workaround
422
+ * ViewChild() selectors that used to return the host element before v11.
423
+ *
424
+ * @hidden
425
+ */
426
+ get nativeElement() {
427
+ return this.element;
428
+ }
430
429
  ngOnInit() {
431
430
  const elementTagName = this.element.tagName;
432
431
  const isSpanOrKendoButton = elementTagName === SPAN_TAG_NAME || elementTagName === KENDO_BUTTON_TAG_NAME;
@@ -450,6 +449,15 @@ class ButtonComponent {
450
449
  this._onButtonClick();
451
450
  }
452
451
  }));
452
+ this.subs.add(this.renderer.listen(this.element, 'mousedown', (event) => {
453
+ const elementTagName = this.element.tagName;
454
+ const isButton = elementTagName === BUTTON_TAG_NAME;
455
+ const isBrowserSafari = isDocumentAvailable() && isSafari(navigator.userAgent);
456
+ if (!this.isDisabled && isButton && isBrowserSafari) {
457
+ event.preventDefault();
458
+ this.element.focus();
459
+ }
460
+ }));
453
461
  });
454
462
  }
455
463
  ngOnChanges(change) {
@@ -1708,7 +1716,7 @@ class ListButton {
1708
1716
  if (this._disabled) {
1709
1717
  return;
1710
1718
  }
1711
- this._toggle(!this.openState);
1719
+ this._toggle(!this.openState, true);
1712
1720
  if (!this.isClosePrevented) {
1713
1721
  this.focusService.focus(this.openState ? 0 : -1);
1714
1722
  }
@@ -1770,7 +1778,8 @@ class ListButton {
1770
1778
  if (this.disabled) {
1771
1779
  return;
1772
1780
  }
1773
- this._toggle((open === undefined) ? !this.openState : open);
1781
+ const value = open === undefined ? !this.openState : open;
1782
+ this._toggle(value, false);
1774
1783
  }
1775
1784
  /**
1776
1785
  * @hidden
@@ -1884,20 +1893,22 @@ class ListButton {
1884
1893
  onArrowKeyNavigate({ index }) {
1885
1894
  this.focusService.focus(index);
1886
1895
  }
1887
- _toggle(open) {
1896
+ _toggle(open, emitEvent) {
1888
1897
  if (this.openState === open) {
1889
1898
  return;
1890
1899
  }
1891
1900
  const eventArgs = new PreventableEvent();
1892
- if (open && !this.openState) {
1893
- this.open.emit(eventArgs);
1894
- }
1895
- else if (!open && this.openState) {
1896
- this.close.emit(eventArgs);
1897
- }
1898
- if (eventArgs.isDefaultPrevented()) {
1899
- this.isClosePrevented = true;
1900
- return;
1901
+ if (emitEvent) {
1902
+ if (open && !this.openState) {
1903
+ this.open.emit(eventArgs);
1904
+ }
1905
+ else if (!open && this.openState) {
1906
+ this.close.emit(eventArgs);
1907
+ }
1908
+ if (eventArgs.isDefaultPrevented()) {
1909
+ this.isClosePrevented = true;
1910
+ return;
1911
+ }
1901
1912
  }
1902
1913
  this.openState = open;
1903
1914
  this.destroyPopup();
@@ -6,11 +6,10 @@ import * as i0 from '@angular/core';
6
6
  import { Injectable, EventEmitter, isDevMode, Component, Optional, Input, Output, HostBinding, HostListener, ContentChildren, NgModule, Directive, InjectionToken, Inject, forwardRef, ElementRef, ViewContainerRef, ContentChild, ViewChild } from '@angular/core';
7
7
  import { Subject, Subscription, fromEvent, merge } from 'rxjs';
8
8
  import * as i9 from '@progress/kendo-angular-common';
9
- import { isDocumentAvailable, Keys, isChanged, hasObservers, guid, anyChanged, EventsModule } from '@progress/kendo-angular-common';
9
+ import { isDocumentAvailable, isFirefox, Keys, isSafari, isChanged, hasObservers, guid, anyChanged, EventsModule } from '@progress/kendo-angular-common';
10
10
  import * as i1 from '@progress/kendo-angular-l10n';
11
11
  import { LocalizationService, L10N_PREFIX, ComponentMessages } from '@progress/kendo-angular-l10n';
12
12
  import { validatePackage } from '@progress/kendo-licensing';
13
- import { detectDesktopBrowser, detectMobileOS } from '@progress/kendo-common';
14
13
  import * as i2 from '@progress/kendo-angular-icons';
15
14
  import { IconsModule } from '@progress/kendo-angular-icons';
16
15
  import * as i3 from '@angular/common';
@@ -47,8 +46,8 @@ const packageMetadata = {
47
46
  name: '@progress/kendo-angular-buttons',
48
47
  productName: 'Kendo UI for Angular',
49
48
  productCodes: ['KENDOUIANGULAR', 'KENDOUICOMPLETE'],
50
- publishDate: 1676463576,
51
- version: '11.3.0-develop.1',
49
+ publishDate: 1677599157,
50
+ version: '11.3.0-develop.11',
52
51
  licensingDocsUrl: 'https://www.telerik.com/kendo-angular-ui/my-license/'
53
52
  };
54
53
 
@@ -143,18 +142,9 @@ const getThemeColorClasses = (componentType, prevFillMode, fillMode, previousVal
143
142
  toAdd: newValue !== 'none' ? `k-${componentType}-${fillMode}-${newValue}` : ''
144
143
  };
145
144
  };
146
- /**
147
- * @hidden
148
- *
149
- * Returns true if the used browser is Firefox.
150
- */
151
- const isFirefox = (userAgent) => {
152
- const desktopBrowser = detectDesktopBrowser(userAgent);
153
- const mobileOS = detectMobileOS(userAgent);
154
- return (desktopBrowser && desktopBrowser.mozilla) || (mobileOS && mobileOS.browser === 'firefox');
155
- };
156
145
 
157
146
  const SPAN_TAG_NAME = 'SPAN';
147
+ const BUTTON_TAG_NAME = 'BUTTON';
158
148
  const KENDO_BUTTON_TAG_NAME = 'KENDO-BUTTON';
159
149
  const DEFAULT_ROUNDED$3 = 'medium';
160
150
  const DEFAULT_SIZE$2 = 'medium';
@@ -427,6 +417,15 @@ class ButtonComponent {
427
417
  break;
428
418
  }
429
419
  }
420
+ /**
421
+ * Alias for ElementRef.nativeElement to workaround
422
+ * ViewChild() selectors that used to return the host element before v11.
423
+ *
424
+ * @hidden
425
+ */
426
+ get nativeElement() {
427
+ return this.element;
428
+ }
430
429
  ngOnInit() {
431
430
  const elementTagName = this.element.tagName;
432
431
  const isSpanOrKendoButton = elementTagName === SPAN_TAG_NAME || elementTagName === KENDO_BUTTON_TAG_NAME;
@@ -450,6 +449,15 @@ class ButtonComponent {
450
449
  this._onButtonClick();
451
450
  }
452
451
  }));
452
+ this.subs.add(this.renderer.listen(this.element, 'mousedown', (event) => {
453
+ const elementTagName = this.element.tagName;
454
+ const isButton = elementTagName === BUTTON_TAG_NAME;
455
+ const isBrowserSafari = isDocumentAvailable() && isSafari(navigator.userAgent);
456
+ if (!this.isDisabled && isButton && isBrowserSafari) {
457
+ event.preventDefault();
458
+ this.element.focus();
459
+ }
460
+ }));
453
461
  });
454
462
  }
455
463
  ngOnChanges(change) {
@@ -1704,7 +1712,7 @@ class ListButton {
1704
1712
  if (this._disabled) {
1705
1713
  return;
1706
1714
  }
1707
- this._toggle(!this.openState);
1715
+ this._toggle(!this.openState, true);
1708
1716
  if (!this.isClosePrevented) {
1709
1717
  this.focusService.focus(this.openState ? 0 : -1);
1710
1718
  }
@@ -1766,7 +1774,8 @@ class ListButton {
1766
1774
  if (this.disabled) {
1767
1775
  return;
1768
1776
  }
1769
- this._toggle((open === undefined) ? !this.openState : open);
1777
+ const value = open === undefined ? !this.openState : open;
1778
+ this._toggle(value, false);
1770
1779
  }
1771
1780
  /**
1772
1781
  * @hidden
@@ -1880,20 +1889,22 @@ class ListButton {
1880
1889
  onArrowKeyNavigate({ index }) {
1881
1890
  this.focusService.focus(index);
1882
1891
  }
1883
- _toggle(open) {
1892
+ _toggle(open, emitEvent) {
1884
1893
  if (this.openState === open) {
1885
1894
  return;
1886
1895
  }
1887
1896
  const eventArgs = new PreventableEvent();
1888
- if (open && !this.openState) {
1889
- this.open.emit(eventArgs);
1890
- }
1891
- else if (!open && this.openState) {
1892
- this.close.emit(eventArgs);
1893
- }
1894
- if (eventArgs.isDefaultPrevented()) {
1895
- this.isClosePrevented = true;
1896
- return;
1897
+ if (emitEvent) {
1898
+ if (open && !this.openState) {
1899
+ this.open.emit(eventArgs);
1900
+ }
1901
+ else if (!open && this.openState) {
1902
+ this.close.emit(eventArgs);
1903
+ }
1904
+ if (eventArgs.isDefaultPrevented()) {
1905
+ this.isClosePrevented = true;
1906
+ return;
1907
+ }
1897
1908
  }
1898
1909
  this.openState = open;
1899
1910
  this.destroyPopup();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@progress/kendo-angular-buttons",
3
- "version": "11.3.0-develop.1",
3
+ "version": "11.3.0-develop.11",
4
4
  "description": "Buttons Package for Angular",
5
5
  "license": "SEE LICENSE IN LICENSE.md",
6
6
  "author": "Progress",
@@ -25,15 +25,15 @@
25
25
  "@angular/core": "13 - 15",
26
26
  "@angular/platform-browser": "13 - 15",
27
27
  "@progress/kendo-licensing": "^1.0.2",
28
- "@progress/kendo-angular-common": "11.3.0-develop.1",
29
- "@progress/kendo-angular-l10n": "11.3.0-develop.1",
30
- "@progress/kendo-angular-popup": "11.3.0-develop.1",
31
- "@progress/kendo-angular-icons": "11.3.0-develop.1",
28
+ "@progress/kendo-angular-common": "11.3.0-develop.11",
29
+ "@progress/kendo-angular-l10n": "11.3.0-develop.11",
30
+ "@progress/kendo-angular-popup": "11.3.0-develop.11",
31
+ "@progress/kendo-angular-icons": "11.3.0-develop.11",
32
32
  "rxjs": "^6.5.3 || ^7.0.0"
33
33
  },
34
34
  "dependencies": {
35
35
  "tslib": "^2.3.1",
36
- "@progress/kendo-angular-schematics": "11.3.0-develop.1",
36
+ "@progress/kendo-angular-schematics": "11.3.0-develop.11",
37
37
  "@progress/kendo-common": "^0.2.1"
38
38
  },
39
39
  "schematics": "./schematics/collection.json",
package/util.d.ts CHANGED
@@ -39,9 +39,3 @@ export declare const getStylingClasses: (componentType: any, stylingOption: stri
39
39
  * Returns the themeColor classes to be added and removed
40
40
  */
41
41
  export declare const getThemeColorClasses: (componentType: any, prevFillMode: any, fillMode: any, previousValue: any, newValue: any) => ButtonStylingClasses;
42
- /**
43
- * @hidden
44
- *
45
- * Returns true if the used browser is Firefox.
46
- */
47
- export declare const isFirefox: (userAgent: any) => boolean;