@progress/kendo-angular-layout 6.5.2 → 6.6.0-dev.202204071221

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 (37) hide show
  1. package/dist/cdn/js/kendo-angular-layout.js +2 -2
  2. package/dist/cdn/main.js +1 -1
  3. package/dist/es/main.js +1 -0
  4. package/dist/es/package-metadata.js +1 -1
  5. package/dist/es/panelbar/events/collapse-event.js +17 -0
  6. package/dist/es/panelbar/events/expand-event.js +17 -0
  7. package/dist/es/panelbar/events/select-event.js +17 -0
  8. package/dist/es/panelbar/events.js +7 -0
  9. package/dist/es/panelbar/panelbar-item.component.js +1 -1
  10. package/dist/es/panelbar/panelbar.component.js +120 -30
  11. package/dist/es2015/index.metadata.json +1 -1
  12. package/dist/es2015/main.d.ts +1 -0
  13. package/dist/es2015/main.js +1 -0
  14. package/dist/es2015/package-metadata.js +1 -1
  15. package/dist/es2015/panelbar/events/collapse-event.d.ts +15 -0
  16. package/dist/es2015/panelbar/events/collapse-event.js +10 -0
  17. package/dist/es2015/panelbar/events/expand-event.d.ts +15 -0
  18. package/dist/es2015/panelbar/events/expand-event.js +10 -0
  19. package/dist/es2015/panelbar/events/select-event.d.ts +15 -0
  20. package/dist/es2015/panelbar/events/select-event.js +10 -0
  21. package/dist/es2015/panelbar/events.d.ts +7 -0
  22. package/dist/es2015/panelbar/events.js +7 -0
  23. package/dist/es2015/panelbar/panelbar-item.component.js +16 -1
  24. package/dist/es2015/panelbar/panelbar.component.d.ts +23 -0
  25. package/dist/es2015/panelbar/panelbar.component.js +132 -40
  26. package/dist/fesm2015/index.js +198 -74
  27. package/dist/fesm5/index.js +187 -65
  28. package/dist/npm/main.js +1 -0
  29. package/dist/npm/package-metadata.js +1 -1
  30. package/dist/npm/panelbar/events/collapse-event.js +19 -0
  31. package/dist/npm/panelbar/events/expand-event.js +19 -0
  32. package/dist/npm/panelbar/events/select-event.js +19 -0
  33. package/dist/npm/panelbar/events.js +12 -0
  34. package/dist/npm/panelbar/panelbar-item.component.js +1 -1
  35. package/dist/npm/panelbar/panelbar.component.js +120 -30
  36. package/dist/systemjs/kendo-angular-layout.js +1 -1
  37. package/package.json +1 -1
@@ -16,6 +16,7 @@ var panelbar_service_1 = require("./panelbar.service");
16
16
  var panelbar_item_template_directive_1 = require("./panelbar-item-template.directive");
17
17
  var util_1 = require("../common/util");
18
18
  var dom_queries_1 = require("./../common/dom-queries");
19
+ var events_1 = require("./events");
19
20
  /**
20
21
  * Represents the [Kendo UI PanelBar component for Angular]({% slug overview_panelbar %}).
21
22
  */
@@ -46,17 +47,35 @@ var PanelBarComponent = /** @class */ (function () {
46
47
  * Sets the height of the component when the `"full"` expand mode is used.
47
48
  * This option is ignored in the `"multiple"` and `"single"` expand modes.
48
49
  */
49
- this.height = "400px";
50
+ this.height = '400px';
50
51
  /**
51
52
  * Fires each time the user interacts with a PanelBar item
52
53
  * ([see example]({% slug routing_panelbar %}#toc-getting-the-selected-item)).
53
54
  * The event data contains all items that are modified.
54
55
  */
55
56
  this.stateChange = new core_1.EventEmitter();
57
+ /**
58
+ * Fires when an item is about to be selected.
59
+ * ([see example]({% slug events_panelbar %}))
60
+ * This event is preventable. If you cancel it, the item will not be selected.
61
+ */
62
+ this.select = new core_1.EventEmitter();
63
+ /**
64
+ * Fires when an item is about to be expanded.
65
+ * ([see example]({% slug events_panelbar %}))
66
+ * This event is preventable. If you cancel it, the item will remain collapsed.
67
+ */
68
+ this.expand = new core_1.EventEmitter();
69
+ /**
70
+ * Fires when an item is about to be collapsed.
71
+ * ([see example]({% slug events_panelbar %}))
72
+ * This event is preventable. If you cancel it, the item will remain expanded.
73
+ */
74
+ this.collapse = new core_1.EventEmitter();
56
75
  this.tabIndex = 0;
57
- this.role = "tree";
76
+ this.role = 'tree';
58
77
  this.hostClass = true;
59
- this.activeDescendant = "";
78
+ this.activeDescendant = '';
60
79
  this.isViewInit = true;
61
80
  this.focused = false;
62
81
  this._keepItemContent = false;
@@ -68,7 +87,7 @@ var PanelBarComponent = /** @class */ (function () {
68
87
  childrenHeight += item.headerHeight();
69
88
  });
70
89
  _this.childrenItems.forEach(function (item) {
71
- item.contentHeight = panelbar_expand_mode_1.PanelBarExpandMode.Full === _this.expandMode ? (panelbarHeight - childrenHeight) + "px" : 'auto';
90
+ item.contentHeight = panelbar_expand_mode_1.PanelBarExpandMode.Full === _this.expandMode ? (panelbarHeight - childrenHeight) + 'px' : 'auto';
72
91
  item.contentOverflow = contentOverflow;
73
92
  });
74
93
  };
@@ -120,7 +139,7 @@ var PanelBarComponent = /** @class */ (function () {
120
139
  });
121
140
  Object.defineProperty(PanelBarComponent.prototype, "overflow", {
122
141
  get: function () {
123
- return this.expandMode === panelbar_expand_mode_1.PanelBarExpandMode.Full ? "hidden" : "visible";
142
+ return this.expandMode === panelbar_expand_mode_1.PanelBarExpandMode.Full ? 'hidden' : 'visible';
124
143
  },
125
144
  enumerable: true,
126
145
  configurable: true
@@ -187,7 +206,7 @@ var PanelBarComponent = /** @class */ (function () {
187
206
  this.validateConfiguration();
188
207
  };
189
208
  PanelBarComponent.prototype.ngOnChanges = function (changes) {
190
- if (changes['height'] || changes['expandMode'] || changes["items"]) { // tslint:disable-line
209
+ if (changes['height'] || changes['expandMode'] || changes['items']) { // tslint:disable-line
191
210
  if (this.childrenItems) {
192
211
  setTimeout(this.updateChildrenHeight);
193
212
  }
@@ -238,7 +257,7 @@ var PanelBarComponent = /** @class */ (function () {
238
257
  PanelBarComponent.prototype.onComponentBlur = function () {
239
258
  this.eventService.onBlur();
240
259
  this.focused = false;
241
- this.activeDescendant = "";
260
+ this.activeDescendant = '';
242
261
  };
243
262
  /**
244
263
  * @hidden
@@ -257,6 +276,26 @@ var PanelBarComponent = /** @class */ (function () {
257
276
  }
258
277
  }
259
278
  };
279
+ /**
280
+ * @hidden
281
+ */
282
+ PanelBarComponent.prototype.emitEvent = function (event, item) {
283
+ var eventArgs;
284
+ switch (event) {
285
+ case 'select':
286
+ eventArgs = new events_1.PanelBarSelectEvent();
287
+ break;
288
+ case 'collapse':
289
+ eventArgs = new events_1.PanelBarCollapseEvent();
290
+ break;
291
+ default:
292
+ eventArgs = new events_1.PanelBarExpandEvent();
293
+ break;
294
+ }
295
+ eventArgs.item = item.serialize();
296
+ this[event].emit(eventArgs);
297
+ return eventArgs;
298
+ };
260
299
  Object.defineProperty(PanelBarComponent.prototype, "viewItems", {
261
300
  get: function () {
262
301
  var treeItems = [];
@@ -272,7 +311,7 @@ var PanelBarComponent = /** @class */ (function () {
272
311
  PanelBarComponent.prototype.validateConfiguration = function () {
273
312
  if (core_1.isDevMode()) {
274
313
  if (this.items && (this.contentItems && this.contentItems.length > 0)) {
275
- throw new Error("Invalid configuration: mixed template components and items property.");
314
+ throw new Error('Invalid configuration: mixed template components and items property.');
276
315
  }
277
316
  }
278
317
  };
@@ -288,30 +327,69 @@ var PanelBarComponent = /** @class */ (function () {
288
327
  var focusedState = selectedState;
289
328
  selectedState = _this.selectable ? selectedState : currentItem.selected;
290
329
  if (currentItem.selected !== selectedState || currentItem.focused !== focusedState) {
291
- currentItem.selected = selectedState;
292
- currentItem.focused = focusedState;
293
- _this.activeDescendant = focusedState ? currentItem.itemId : "";
294
- modifiedItems.push(currentItem);
330
+ var isSelectPrevented = selectedState ? _this.emitEvent('select', currentItem).isDefaultPrevented() : false;
331
+ if (!isSelectPrevented) {
332
+ currentItem.selected = selectedState;
333
+ currentItem.focused = focusedState;
334
+ _this.activeDescendant = focusedState ? currentItem.itemId : '';
335
+ modifiedItems.push(currentItem);
336
+ }
295
337
  }
296
338
  });
297
339
  if (this.expandMode === panelbar_expand_mode_1.PanelBarExpandMode.Multiple) {
298
- if (item.hasChildItems || item.hasContent) {
299
- item.expanded = !item.expanded;
300
- }
301
- if (modifiedItems.indexOf(item) < 0) {
302
- modifiedItems.push(item);
340
+ if ((item.hasChildItems || item.hasContent) && item.selected) {
341
+ var isEventPrevented = item.expanded ?
342
+ this.emitEvent('collapse', item).isDefaultPrevented() :
343
+ this.emitEvent('expand', item).isDefaultPrevented();
344
+ if (!isEventPrevented) {
345
+ item.expanded = !item.expanded;
346
+ if (modifiedItems.indexOf(item) < 0) {
347
+ modifiedItems.push(item);
348
+ }
349
+ }
303
350
  }
304
351
  }
305
352
  else {
306
353
  var siblings = item.parent ? item.parent.childrenItems : this.childrenItems;
307
- if (item.hasChildItems || item.hasContent) {
354
+ var preventedCollapseItem_1;
355
+ var expandedItems_1 = [];
356
+ if ((item.hasChildItems || item.hasContent) && item.selected) {
308
357
  siblings
309
358
  .forEach(function (currentItem) {
310
359
  var expandedState = currentItem === item;
311
360
  if (currentItem.expanded !== expandedState) {
312
- currentItem.expanded = expandedState;
313
- if (modifiedItems.indexOf(currentItem) < 0) {
314
- modifiedItems.push(currentItem);
361
+ var isEventPrevented = currentItem.expanded ?
362
+ _this.emitEvent('collapse', currentItem).isDefaultPrevented() :
363
+ _this.emitEvent('expand', currentItem).isDefaultPrevented();
364
+ if (!isEventPrevented) {
365
+ currentItem.expanded = expandedState;
366
+ if (currentItem.expanded) {
367
+ expandedItems_1.push(currentItem);
368
+ }
369
+ if (modifiedItems.indexOf(currentItem) < 0) {
370
+ modifiedItems.push(currentItem);
371
+ }
372
+ }
373
+ else if (isEventPrevented && currentItem.expanded) {
374
+ preventedCollapseItem_1 = currentItem;
375
+ }
376
+ }
377
+ else if (currentItem.expanded === expandedState && expandedState) {
378
+ var isCollapsePrevented = _this.emitEvent('collapse', currentItem).isDefaultPrevented();
379
+ if (!isCollapsePrevented) {
380
+ currentItem.expanded = !currentItem.expanded;
381
+ if (modifiedItems.indexOf(currentItem) < 0) {
382
+ modifiedItems.push(currentItem);
383
+ }
384
+ }
385
+ }
386
+ });
387
+ expandedItems_1.forEach(function (item) {
388
+ if (preventedCollapseItem_1 && item.id !== preventedCollapseItem_1.id) {
389
+ item.expanded = false;
390
+ if (core_1.isDevMode()) {
391
+ var expandMode = panelbar_expand_mode_1.PanelBarExpandMode[_this.expandMode].toLowerCase();
392
+ console.warn("\n The " + expandMode + " expandMode allows the expansion of only one item at a time.\n See https://www.telerik.com/kendo-angular-ui-develop/components/layout/panelbar/expand-modes/");
315
393
  }
316
394
  }
317
395
  });
@@ -344,16 +422,16 @@ var PanelBarComponent = /** @class */ (function () {
344
422
  currentIndex = visibleItems.findIndex(function (item) { return item === currentItem; });
345
423
  }
346
424
  switch (action) {
347
- case "lastItem":
425
+ case 'lastItem':
348
426
  nextItem = visibleItems[visibleItems.length - 1];
349
427
  break;
350
- case "firstItem":
428
+ case 'firstItem':
351
429
  nextItem = visibleItems[0];
352
430
  break;
353
- case "nextItem":
431
+ case 'nextItem':
354
432
  nextItem = visibleItems[currentIndex < visibleItems.length - 1 ? currentIndex + 1 : 0];
355
433
  break;
356
- case "previousItem":
434
+ case 'previousItem':
357
435
  nextItem = visibleItems[currentIndex > 0 ? currentIndex - 1 : visibleItems.length - 1];
358
436
  break;
359
437
  default:
@@ -370,16 +448,16 @@ var PanelBarComponent = /** @class */ (function () {
370
448
  this.stateChange.emit(modifiedItems);
371
449
  };
372
450
  PanelBarComponent.prototype.focusLastItem = function () {
373
- this.focusItem("lastItem");
451
+ this.focusItem('lastItem');
374
452
  };
375
453
  PanelBarComponent.prototype.focusFirstItem = function () {
376
- this.focusItem("firstItem");
454
+ this.focusItem('firstItem');
377
455
  };
378
456
  PanelBarComponent.prototype.focusNextItem = function () {
379
- this.focusItem("nextItem");
457
+ this.focusItem('nextItem');
380
458
  };
381
459
  PanelBarComponent.prototype.focusPreviousItem = function () {
382
- this.focusItem("previousItem");
460
+ this.focusItem('previousItem');
383
461
  };
384
462
  PanelBarComponent.prototype.expandItem = function () {
385
463
  var currentItem = this.allItems.filter(function (item) { return item.focused; })[0];
@@ -463,6 +541,18 @@ var PanelBarComponent = /** @class */ (function () {
463
541
  core_1.Output(),
464
542
  tslib_1.__metadata("design:type", core_1.EventEmitter)
465
543
  ], PanelBarComponent.prototype, "stateChange", void 0);
544
+ tslib_1.__decorate([
545
+ core_1.Output(),
546
+ tslib_1.__metadata("design:type", core_1.EventEmitter)
547
+ ], PanelBarComponent.prototype, "select", void 0);
548
+ tslib_1.__decorate([
549
+ core_1.Output(),
550
+ tslib_1.__metadata("design:type", core_1.EventEmitter)
551
+ ], PanelBarComponent.prototype, "expand", void 0);
552
+ tslib_1.__decorate([
553
+ core_1.Output(),
554
+ tslib_1.__metadata("design:type", core_1.EventEmitter)
555
+ ], PanelBarComponent.prototype, "collapse", void 0);
466
556
  tslib_1.__decorate([
467
557
  core_1.HostBinding('attr.tabIndex'),
468
558
  tslib_1.__metadata("design:type", Number)
@@ -546,7 +636,7 @@ var PanelBarComponent = /** @class */ (function () {
546
636
  }
547
637
  ],
548
638
  selector: 'kendo-panelbar',
549
- template: "\n <ng-content *ngIf=\"contentChildItems && !items\" select=\"kendo-panelbar-item\"></ng-content>\n <ng-template [ngIf]=\"items?.length\">\n <ng-container *ngFor=\"let item of items\">\n <kendo-panelbar-item *ngIf=\"!item.hidden\"\n [title]=\"item.title\"\n [id]=\"item.id\"\n [icon]=\"item.icon\"\n [iconClass]=\"item.iconClass\"\n [imageUrl]=\"item.imageUrl\"\n [selected]=\"!!item.selected\"\n [expanded]=\"!!item.expanded\"\n [disabled]=\"!!item.disabled\"\n [template]=\"templateRef\"\n [items]=\"item.children\"\n [content]=\"item.content\"\n >\n </kendo-panelbar-item>\n </ng-container>\n </ng-template>\n "
639
+ template: "\n <ng-content *ngIf=\"contentChildItems && !items\" select=\"kendo-panelbar-item\"></ng-content>\n <ng-template [ngIf]=\"items?.length\">\n <ng-container *ngFor=\"let item of items\">\n <kendo-panelbar-item *ngIf=\"!item.hidden\"\n [title]=\"item.title\"\n [id]=\"item.id\"\n [icon]=\"item.icon\"\n [iconClass]=\"item.iconClass\"\n [imageUrl]=\"item.imageUrl\"\n [selected]=\"!!item.selected\"\n [expanded]=\"!!item.expanded\"\n [disabled]=\"!!item.disabled\"\n [template]=\"templateRef\"\n [items]=\"item.children\"\n [content]=\"item.content\"\n >\n </kendo-panelbar-item>\n </ng-container>\n </ng-template>\n "
550
640
  })
551
641
  // TODO: add styles as input prop
552
642
  ,