@progress/kendo-angular-layout 6.3.6-dev.202111110855 → 6.4.0

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 (44) hide show
  1. package/LICENSE.md +1 -1
  2. package/NOTICE.txt +119 -79
  3. package/README.md +1 -1
  4. package/dist/cdn/js/kendo-angular-layout.js +2 -2
  5. package/dist/cdn/main.js +1 -1
  6. package/dist/es/avatar/avatar.component.js +120 -90
  7. package/dist/es/avatar/models/models.js +4 -0
  8. package/dist/es/avatar/models/rounded.js +4 -0
  9. package/dist/es/common/styling-classes.js +4 -0
  10. package/dist/es/common/util.js +40 -0
  11. package/dist/es/main.js +1 -0
  12. package/dist/es/package-metadata.js +1 -1
  13. package/dist/es2015/avatar/avatar.component.d.ts +30 -30
  14. package/dist/es2015/avatar/avatar.component.js +111 -81
  15. package/dist/es2015/avatar/models/fill.d.ts +2 -8
  16. package/dist/es2015/avatar/models/models.d.ts +9 -0
  17. package/dist/es2015/avatar/models/models.js +4 -0
  18. package/dist/es2015/avatar/models/rounded.d.ts +8 -0
  19. package/dist/es2015/avatar/models/rounded.js +4 -0
  20. package/dist/es2015/avatar/models/shape.d.ts +2 -8
  21. package/dist/es2015/avatar/models/size.d.ts +1 -8
  22. package/dist/es2015/avatar/models/theme-color.d.ts +2 -17
  23. package/dist/es2015/common/styling-classes.d.ts +11 -0
  24. package/dist/es2015/common/styling-classes.js +4 -0
  25. package/dist/es2015/common/util.d.ts +12 -0
  26. package/dist/es2015/common/util.js +40 -0
  27. package/dist/es2015/index.metadata.json +1 -1
  28. package/dist/es2015/main.d.ts +1 -4
  29. package/dist/es2015/main.js +1 -0
  30. package/dist/es2015/package-metadata.js +1 -1
  31. package/dist/es2015/tilelayout/tilelayout-item.component.d.ts +2 -2
  32. package/dist/es2015/tilelayout/tilelayout-resize-handle.directive.d.ts +2 -2
  33. package/dist/es2015/tilelayout/tilelayout.component.d.ts +2 -2
  34. package/dist/fesm2015/index.js +151 -82
  35. package/dist/fesm5/index.js +160 -91
  36. package/dist/npm/avatar/avatar.component.js +120 -90
  37. package/dist/npm/avatar/models/models.js +6 -0
  38. package/dist/npm/avatar/models/rounded.js +6 -0
  39. package/dist/npm/common/styling-classes.js +6 -0
  40. package/dist/npm/common/util.js +40 -0
  41. package/dist/npm/main.js +1 -0
  42. package/dist/npm/package-metadata.js +1 -1
  43. package/dist/systemjs/kendo-angular-layout.js +1 -1
  44. package/package.json +13 -11
@@ -36,10 +36,7 @@ export { LocalizedStepperMessagesDirective } from './stepper/localization/locali
36
36
  export * from './stepper/template-directives';
37
37
  export * from './stepper/types';
38
38
  export { AvatarComponent } from './avatar/avatar.component';
39
- export { AvatarShape, Shape } from './avatar/models/shape';
40
- export { AvatarSize } from './avatar/models/size';
41
- export { AvatarFill } from './avatar/models/fill';
42
- export { AvatarThemeColor } from './avatar/models/theme-color';
39
+ export { AvatarShape, Shape, AvatarRounded, AvatarFillMode, AvatarFillMode as AvatarFill, AvatarSize, AvatarThemeColor } from './avatar/models/models';
43
40
  export { CardComponent } from './card/card.component';
44
41
  export { CardHeaderComponent } from './card/card-header.component';
45
42
  export { CardBodyComponent } from './card/card-body.component';
@@ -29,6 +29,7 @@ export { StepperActivateEvent } from './stepper/events/activate-event';
29
29
  export { StepperCustomMessagesComponent } from './stepper/localization/custom-messages.component';
30
30
  export { LocalizedStepperMessagesDirective } from './stepper/localization/localized-messages.directive';
31
31
  export * from './stepper/template-directives';
32
+ // Avatar exports
32
33
  export { AvatarComponent } from './avatar/avatar.component';
33
34
  // Card exports
34
35
  export { CardComponent } from './card/card.component';
@@ -9,7 +9,7 @@ export const packageMetadata = {
9
9
  name: '@progress/kendo-angular-layout',
10
10
  productName: 'Kendo UI for Angular',
11
11
  productCodes: ['KENDOUIANGULAR', 'KENDOUICOMPLETE'],
12
- publishDate: 1636620848,
12
+ publishDate: 1642588031,
13
13
  version: '',
14
14
  licensingDocsUrl: 'https://www.telerik.com/kendo-angular-ui/my-license/?utm_medium=product&utm_source=kendoangular&utm_campaign=kendo-ui-angular-purchase-license-keys-warning'
15
15
  };
@@ -2,13 +2,13 @@
2
2
  * Copyright © 2021 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 { ElementRef, Renderer2, SimpleChanges } from '@angular/core';
5
+ import { AfterViewInit, ElementRef, OnChanges, OnDestroy, Renderer2, SimpleChanges } from '@angular/core';
6
6
  import { LocalizationService } from '@progress/kendo-angular-l10n';
7
7
  import { TileLayoutDraggingService } from './dragging-service';
8
8
  /**
9
9
  * Represents a tile item within the TileLayoutComponent.
10
10
  */
11
- export declare class TileLayoutItemComponent {
11
+ export declare class TileLayoutItemComponent implements AfterViewInit, OnDestroy, OnChanges {
12
12
  elem: ElementRef;
13
13
  private renderer;
14
14
  private localization;
@@ -2,11 +2,11 @@
2
2
  * Copyright © 2021 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 { ElementRef, Renderer2 } from '@angular/core';
5
+ import { ElementRef, OnInit, Renderer2 } from '@angular/core';
6
6
  /**
7
7
  * @hidden
8
8
  */
9
- export declare class TileLayoutResizeHandleDirective {
9
+ export declare class TileLayoutResizeHandleDirective implements OnInit {
10
10
  private el;
11
11
  private renderer;
12
12
  resizeDirection: string;
@@ -2,7 +2,7 @@
2
2
  * Copyright © 2021 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 { EventEmitter, QueryList, SimpleChanges, ElementRef, Renderer2, NgZone } from '@angular/core';
5
+ import { EventEmitter, QueryList, SimpleChanges, ElementRef, Renderer2, NgZone, OnInit, AfterViewInit, OnDestroy, AfterContentInit, OnChanges } from '@angular/core';
6
6
  import { TileLayoutDraggingService } from './dragging-service';
7
7
  import { TileLayoutResizeEvent } from './resize-event';
8
8
  import { TileLayoutItemComponent } from './tilelayout-item.component';
@@ -13,7 +13,7 @@ import { TileLayoutFlowMode } from './models/flowmode.type';
13
13
  /**
14
14
  * Represents the [Kendo UI TileLayout component for Angular]({% slug overview_tilelayout %})
15
15
  */
16
- export declare class TileLayoutComponent {
16
+ export declare class TileLayoutComponent implements OnInit, AfterViewInit, AfterContentInit, OnDestroy, OnChanges {
17
17
  private elem;
18
18
  private renderer;
19
19
  private localization;
@@ -21,7 +21,7 @@ const packageMetadata = {
21
21
  name: '@progress/kendo-angular-layout',
22
22
  productName: 'Kendo UI for Angular',
23
23
  productCodes: ['KENDOUIANGULAR', 'KENDOUICOMPLETE'],
24
- publishDate: 1636620848,
24
+ publishDate: 1642588031,
25
25
  version: '',
26
26
  licensingDocsUrl: 'https://www.telerik.com/kendo-angular-ui/my-license/?utm_medium=product&utm_source=kendoangular&utm_campaign=kendo-ui-angular-purchase-license-keys-warning'
27
27
  };
@@ -144,6 +144,21 @@ PanelBarItemTitleDirective = __decorate([
144
144
  ], PanelBarItemTitleDirective);
145
145
 
146
146
  let nextId = 0;
147
+ const SIZES = {
148
+ small: 'sm',
149
+ medium: 'md',
150
+ large: 'lg'
151
+ };
152
+ const ROUNDNESS = {
153
+ small: 'sm',
154
+ medium: 'md',
155
+ large: 'lg',
156
+ full: 'full'
157
+ };
158
+ const SHAPE_TO_ROUNDED = {
159
+ rounded: 'large',
160
+ circle: 'full'
161
+ };
147
162
  const parsePanelBarItems = (data) => {
148
163
  return data.map((item) => {
149
164
  if (!item.id) {
@@ -179,6 +194,31 @@ const isArrowKey = keyCode => isHorizontalArrowKey(keyCode) || isVerticalArrowKe
179
194
  */
180
195
  const isNavigationKey = keyCode => keyCode === Keys.PageUp || keyCode === Keys.PageDown ||
181
196
  keyCode === Keys.Home || keyCode === Keys.End;
197
+ /**
198
+ * @hidden
199
+ *
200
+ * Returns the styling classes to be added and removed
201
+ */
202
+ const getStylingClasses = (componentType, stylingOption, previousValue, newValue) => {
203
+ switch (stylingOption) {
204
+ case 'size':
205
+ return {
206
+ toRemove: `k-${componentType}-${SIZES[previousValue]}`,
207
+ toAdd: newValue ? `k-${componentType}-${SIZES[newValue]}` : null
208
+ };
209
+ case 'rounded':
210
+ return {
211
+ toRemove: `k-rounded-${ROUNDNESS[previousValue]}`,
212
+ toAdd: newValue ? `k-rounded-${ROUNDNESS[newValue]}` : null
213
+ };
214
+ default:
215
+ break;
216
+ }
217
+ };
218
+ /**
219
+ * @hidden
220
+ */
221
+ const mapShapeToRounded = (shape) => SHAPE_TO_ROUNDED[shape] || null;
182
222
 
183
223
  const focusableRegex = /^(?:a|input|select|option|textarea|button|object)$/i;
184
224
  const toClassList = (classNames) => String(classNames).trim().split(' ');
@@ -4532,17 +4572,6 @@ LocalizedStepperMessagesDirective = LocalizedStepperMessagesDirective_1 = __deco
4532
4572
  __metadata("design:paramtypes", [LocalizationService])
4533
4573
  ], LocalizedStepperMessagesDirective);
4534
4574
 
4535
- const SIZE_CLASSES = {
4536
- 'small': 'k-avatar-sm',
4537
- 'medium': 'k-avatar-md',
4538
- 'large': 'k-avatar-lg'
4539
- };
4540
- const SHAPE_CLASSES = {
4541
- 'circle': 'k-avatar-circle',
4542
- 'square': 'k-avatar-square',
4543
- 'rectangle': 'k-avatar-rectangle',
4544
- 'rounded': 'k-avatar-rounded'
4545
- };
4546
4575
  /**
4547
4576
  * Displays images, icons or initials representing people or other entities.
4548
4577
  */
@@ -4551,37 +4580,16 @@ let AvatarComponent = class AvatarComponent {
4551
4580
  this.renderer = renderer;
4552
4581
  this.element = element;
4553
4582
  this.hostClass = true;
4554
- /**
4555
- * Specifies the appearance fill style of the avatar.
4556
- *
4557
- * The possible values are:
4558
- * * `solid` (Default)
4559
- * * `outline`
4560
- *
4561
- */
4562
- this.fill = 'solid';
4563
4583
  /**
4564
4584
  * Sets a border to the avatar.
4565
4585
  */
4566
4586
  this.border = false;
4567
4587
  this._themeColor = 'primary';
4568
4588
  this._size = 'medium';
4569
- this._shape = 'square';
4570
- this.avatar = this.element.nativeElement;
4589
+ this._fillMode = 'solid';
4590
+ this._rounded = 'full';
4571
4591
  validatePackage(packageMetadata);
4572
4592
  }
4573
- /**
4574
- * @hidden
4575
- */
4576
- get solidClass() {
4577
- return this.fill === 'solid';
4578
- }
4579
- /**
4580
- * @hidden
4581
- */
4582
- get outlineClass() {
4583
- return this.fill === 'outline';
4584
- }
4585
4593
  /**
4586
4594
  * @hidden
4587
4595
  */
@@ -4596,21 +4604,10 @@ let AvatarComponent = class AvatarComponent {
4596
4604
  }
4597
4605
  /**
4598
4606
  * Sets the shape for the avatar.
4599
- *
4600
- * Possible values are:
4601
- * * (Default) `square`
4602
- * * `circle`
4603
- * * `rectangle`
4604
- * * `rounded`
4605
- *
4607
+ * @hidden
4606
4608
  */
4607
4609
  set shape(shape) {
4608
- this.renderer.removeClass(this.avatar, SHAPE_CLASSES[this.shape]);
4609
- this.renderer.addClass(this.avatar, SHAPE_CLASSES[shape]);
4610
- this._shape = shape;
4611
- }
4612
- get shape() {
4613
- return this._shape;
4610
+ this.rounded = mapShapeToRounded(shape);
4614
4611
  }
4615
4612
  /**
4616
4613
  * Specifies the size of the avatar
@@ -4623,22 +4620,44 @@ let AvatarComponent = class AvatarComponent {
4623
4620
  *
4624
4621
  */
4625
4622
  set size(size) {
4626
- this.renderer.removeClass(this.avatar, SIZE_CLASSES[this.size]);
4627
- this.renderer.addClass(this.avatar, SIZE_CLASSES[size]);
4628
- this._size = size;
4623
+ if (size !== this._size) {
4624
+ this.handleClasses('size', size);
4625
+ this._size = size === null ? null : size || 'medium';
4626
+ }
4629
4627
  }
4630
4628
  get size() {
4631
4629
  return this._size;
4632
4630
  }
4631
+ /**
4632
+ * Specifies the rounded styling of the avatar
4633
+ * ([see example]({% slug appearance_avatar %}#toc-rounded-corners)).
4634
+ *
4635
+ * The possible values are:
4636
+ * * `small`
4637
+ * * `medium`
4638
+ * * `large`
4639
+ * * `full` (Default)
4640
+ * * null
4641
+ *
4642
+ */
4643
+ set rounded(rounded) {
4644
+ if (rounded !== this._rounded) {
4645
+ this.handleClasses('rounded', rounded);
4646
+ this._rounded = rounded === null ? null : rounded || 'full';
4647
+ }
4648
+ }
4649
+ get rounded() {
4650
+ return this._rounded;
4651
+ }
4633
4652
  /**
4634
4653
  * Specifies the theme color of the avatar.
4635
4654
  * The theme color will be applied as background and border color, while also amending the text color accordingly.
4636
4655
  *
4637
4656
  * The possible values are:
4657
+ * * `base`— Applies the base coloring value.
4638
4658
  * * `primary` (Default)—Applies coloring based on primary theme color.
4639
4659
  * * `secondary`—Applies coloring based on secondary theme color.
4640
4660
  * * `tertiary`— Applies coloring based on tertiary theme color.
4641
- * * `inherit`— Applies inherited coloring value.
4642
4661
  * * `info`—Applies coloring based on info theme color.
4643
4662
  * * `success`— Applies coloring based on success theme color.
4644
4663
  * * `warning`— Applies coloring based on warning theme color.
@@ -4646,40 +4665,65 @@ let AvatarComponent = class AvatarComponent {
4646
4665
  * * `dark`— Applies coloring based on dark theme color.
4647
4666
  * * `light`— Applies coloring based on light theme color.
4648
4667
  * * `inverse`— Applies coloring based on inverted theme color.
4649
- *
4650
4668
  */
4651
4669
  set themeColor(themeColor) {
4652
- this.renderer.removeClass(this.avatar, `k-avatar-${this.themeColor}`);
4653
- this.renderer.addClass(this.avatar, `k-avatar-${themeColor}`);
4654
- this._themeColor = themeColor;
4670
+ if (themeColor !== this._themeColor) {
4671
+ this._themeColor = themeColor === null ? null : (themeColor || 'primary');
4672
+ this.handleFillModeAndThemeColorClasses(this.fillMode, this.themeColor);
4673
+ }
4655
4674
  }
4656
4675
  get themeColor() {
4657
4676
  return this._themeColor;
4658
4677
  }
4659
4678
  /**
4660
- * @hidden
4679
+ * Specifies the appearance fill style of the avatar.
4680
+ *
4681
+ * The possible values are:
4682
+ * * `solid` (Default)
4683
+ * * `outline`
4684
+ * * null
4685
+ *
4661
4686
  */
4662
- get avatarWidth() {
4663
- return this.width;
4687
+ set fillMode(fillMode) {
4688
+ if (fillMode !== this.fillMode) {
4689
+ this._fillMode = fillMode === null ? null : (fillMode || 'solid');
4690
+ this.handleFillModeAndThemeColorClasses(this.fillMode, this.themeColor);
4691
+ }
4692
+ }
4693
+ get fillMode() {
4694
+ return this._fillMode;
4664
4695
  }
4665
4696
  /**
4697
+ * Specifies the appearance fill style of the avatar.
4698
+ * Deprecated, left for backward compatibility.
4699
+ *
4666
4700
  * @hidden
4667
4701
  */
4668
- get avatarHeight() {
4669
- return this.height;
4702
+ set fill(fillMode) {
4703
+ this.fillMode = fillMode;
4670
4704
  }
4671
- ngAfterViewInit() {
4672
- this.setAvatarClasses();
4705
+ /**
4706
+ * @hidden
4707
+ */
4708
+ get avatarWidth() {
4709
+ return this.width;
4673
4710
  }
4674
4711
  /**
4675
4712
  * @hidden
4676
4713
  */
4677
- get imageUrl() {
4678
- return `url(${this.imageSrc})`;
4714
+ get avatarHeight() {
4715
+ return this.height;
4679
4716
  }
4680
4717
  ngOnInit() {
4681
4718
  this.verifyProperties();
4682
4719
  }
4720
+ ngAfterViewInit() {
4721
+ const stylingInputs = ['size', 'rounded'];
4722
+ stylingInputs.forEach(input => {
4723
+ this.handleClasses(input, this[input]);
4724
+ });
4725
+ this.handleFillModeAndThemeColorClasses(this.fillMode, this.themeColor);
4726
+ }
4683
4727
  /**
4684
4728
  * @hidden
4685
4729
  */
@@ -4711,26 +4755,38 @@ let AvatarComponent = class AvatarComponent {
4711
4755
  `);
4712
4756
  }
4713
4757
  }
4714
- setAvatarClasses() {
4715
- this.renderer.addClass(this.avatar, SHAPE_CLASSES[this.shape]);
4716
- this.renderer.addClass(this.avatar, `k-avatar-${this.themeColor}`);
4717
- this.renderer.addClass(this.avatar, SIZE_CLASSES[this.size]);
4758
+ handleClasses(styleType, value) {
4759
+ const elem = this.element.nativeElement;
4760
+ const classes = getStylingClasses('avatar', styleType, this[styleType], value);
4761
+ if (classes.toRemove) {
4762
+ this.renderer.removeClass(elem, classes.toRemove);
4763
+ }
4764
+ if (classes.toAdd) {
4765
+ this.renderer.addClass(elem, classes.toAdd);
4766
+ }
4767
+ }
4768
+ handleFillModeAndThemeColorClasses(fill, themeColor) {
4769
+ const wrapperElement = this.element.nativeElement;
4770
+ // remove existing fill and theme color classes
4771
+ const currentClasses = Array.from(wrapperElement.classList);
4772
+ const classesToRemove = currentClasses.filter(cl => {
4773
+ return cl.startsWith('k-avatar-solid') || cl.startsWith('k-avatar-outline');
4774
+ });
4775
+ classesToRemove.forEach((cl => this.renderer.removeClass(wrapperElement, cl)));
4776
+ // add fill if needed
4777
+ if (fill !== null) {
4778
+ this.renderer.addClass(wrapperElement, `k-avatar-${fill}`);
4779
+ }
4780
+ // add theme color class if fill and theme color
4781
+ if (fill !== null && themeColor !== null) {
4782
+ this.renderer.addClass(wrapperElement, `k-avatar-${fill}-${themeColor}`);
4783
+ }
4718
4784
  }
4719
4785
  };
4720
4786
  __decorate([
4721
4787
  HostBinding('class.k-avatar'),
4722
4788
  __metadata("design:type", Boolean)
4723
4789
  ], AvatarComponent.prototype, "hostClass", void 0);
4724
- __decorate([
4725
- HostBinding('class.k-avatar-solid'),
4726
- __metadata("design:type", Boolean),
4727
- __metadata("design:paramtypes", [])
4728
- ], AvatarComponent.prototype, "solidClass", null);
4729
- __decorate([
4730
- HostBinding('class.k-avatar-outline'),
4731
- __metadata("design:type", Boolean),
4732
- __metadata("design:paramtypes", [])
4733
- ], AvatarComponent.prototype, "outlineClass", null);
4734
4790
  __decorate([
4735
4791
  HostBinding('class.k-avatar-bordered'),
4736
4792
  __metadata("design:type", Boolean),
@@ -4751,6 +4807,11 @@ __decorate([
4751
4807
  __metadata("design:type", String),
4752
4808
  __metadata("design:paramtypes", [String])
4753
4809
  ], AvatarComponent.prototype, "size", null);
4810
+ __decorate([
4811
+ Input(),
4812
+ __metadata("design:type", String),
4813
+ __metadata("design:paramtypes", [String])
4814
+ ], AvatarComponent.prototype, "rounded", null);
4754
4815
  __decorate([
4755
4816
  Input(),
4756
4817
  __metadata("design:type", String),
@@ -4758,8 +4819,14 @@ __decorate([
4758
4819
  ], AvatarComponent.prototype, "themeColor", null);
4759
4820
  __decorate([
4760
4821
  Input(),
4761
- __metadata("design:type", String)
4762
- ], AvatarComponent.prototype, "fill", void 0);
4822
+ __metadata("design:type", String),
4823
+ __metadata("design:paramtypes", [String])
4824
+ ], AvatarComponent.prototype, "fillMode", null);
4825
+ __decorate([
4826
+ Input(),
4827
+ __metadata("design:type", String),
4828
+ __metadata("design:paramtypes", [String])
4829
+ ], AvatarComponent.prototype, "fill", null);
4763
4830
  __decorate([
4764
4831
  Input(),
4765
4832
  __metadata("design:type", Boolean)
@@ -4809,7 +4876,9 @@ AvatarComponent = __decorate([
4809
4876
  <ng-content *ngIf="customAvatar"></ng-content>
4810
4877
 
4811
4878
  <ng-container *ngIf="imageSrc">
4812
- <div class="k-avatar-image" [ngStyle]="cssStyle" [style.backgroundImage]="imageUrl"></div>
4879
+ <span class="k-avatar-image">
4880
+ <img src="{{imageSrc}}" [ngStyle]="cssStyle" />
4881
+ </span>
4813
4882
  </ng-container>
4814
4883
 
4815
4884
  <ng-container *ngIf="initials">