@seniorsistemas/angular-components 17.28.0 → 17.28.1

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/bundles/seniorsistemas-angular-components.umd.js +129 -17
  2. package/bundles/seniorsistemas-angular-components.umd.js.map +1 -1
  3. package/bundles/seniorsistemas-angular-components.umd.min.js +2 -2
  4. package/bundles/seniorsistemas-angular-components.umd.min.js.map +1 -1
  5. package/components/accessibility-events/directives/accessibility-event.directive.d.ts +4 -2
  6. package/components/grid-menu/components/grid-menu-item/grid-menu-item.component.d.ts +7 -0
  7. package/components/grid-menu/grid-menu.component.d.ts +9 -1
  8. package/components/grid-menu/types/grid-menu-item.d.ts +6 -1
  9. package/components/ia-insight/components/ia-insight-sidebar/ia-insight-sidebar.component.d.ts +3 -1
  10. package/components/ia-insight/ia-insight.component.d.ts +5 -1
  11. package/components/ia-insight/models/ia-insight-item.d.ts +12 -0
  12. package/esm2015/components/accessibility-events/directives/accessibility-event.directive.js +9 -3
  13. package/esm2015/components/fieldset/fieldset.module.js +2 -3
  14. package/esm2015/components/grid-menu/components/grid-menu-item/grid-menu-item.component.js +36 -6
  15. package/esm2015/components/grid-menu/grid-menu.component.js +43 -4
  16. package/esm2015/components/grid-menu/grid-menu.module.js +3 -2
  17. package/esm2015/components/grid-menu/types/grid-menu-item.js +1 -1
  18. package/esm2015/components/ia-insight/components/ia-insight-card/ia-insight-card.component.js +15 -3
  19. package/esm2015/components/ia-insight/components/ia-insight-sidebar/ia-insight-sidebar.component.js +12 -2
  20. package/esm2015/components/ia-insight/ia-insight.component.js +17 -3
  21. package/esm2015/components/ia-insight/models/ia-insight-item.js +1 -1
  22. package/esm5/components/accessibility-events/directives/accessibility-event.directive.js +10 -4
  23. package/esm5/components/fieldset/fieldset.module.js +2 -3
  24. package/esm5/components/grid-menu/components/grid-menu-item/grid-menu-item.component.js +38 -6
  25. package/esm5/components/grid-menu/grid-menu.component.js +43 -4
  26. package/esm5/components/grid-menu/grid-menu.module.js +3 -2
  27. package/esm5/components/grid-menu/types/grid-menu-item.js +1 -1
  28. package/esm5/components/ia-insight/components/ia-insight-card/ia-insight-card.component.js +15 -3
  29. package/esm5/components/ia-insight/components/ia-insight-sidebar/ia-insight-sidebar.component.js +12 -2
  30. package/esm5/components/ia-insight/ia-insight.component.js +17 -3
  31. package/esm5/components/ia-insight/models/ia-insight-item.js +1 -1
  32. package/fesm2015/seniorsistemas-angular-components.js +122 -13
  33. package/fesm2015/seniorsistemas-angular-components.js.map +1 -1
  34. package/fesm5/seniorsistemas-angular-components.js +125 -14
  35. package/fesm5/seniorsistemas-angular-components.js.map +1 -1
  36. package/package.json +1 -1
  37. package/seniorsistemas-angular-components.metadata.json +1 -1
@@ -53,7 +53,6 @@ import { EditorModule } from 'primeng/editor';
53
53
  import { ConfirmationService } from 'primeng/api';
54
54
  import { ConfirmDialogModule } from 'primeng/confirmdialog';
55
55
  import Cropper from 'cropperjs';
56
- import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
57
56
  import marked from 'marked';
58
57
  import { moveItemInArray, transferArrayItem, DragDropModule } from '@angular/cdk/drag-drop';
59
58
  import { FocusTrapFactory, A11yModule } from '@angular/cdk/a11y';
@@ -14045,6 +14044,7 @@ var AccessibilityEventDirective = /** @class */ (function () {
14045
14044
  this.elementRef = elementRef;
14046
14045
  this.sActivatedContent = new EventEmitter();
14047
14046
  this.tabindex = 0;
14047
+ this.disabled = false;
14048
14048
  this.EVENT_LISTENER = function (event) {
14049
14049
  if (event instanceof KeyboardEvent) {
14050
14050
  var key = event.key;
@@ -14055,11 +14055,13 @@ var AccessibilityEventDirective = /** @class */ (function () {
14055
14055
  }
14056
14056
  _this.sActivatedContent.next(event);
14057
14057
  };
14058
+ }
14059
+ AccessibilityEventDirective.prototype.ngOnInit = function () {
14058
14060
  this.setTabIndex();
14059
14061
  this.checkAccessbilityEvents();
14060
- }
14062
+ };
14061
14063
  AccessibilityEventDirective.prototype.setTabIndex = function () {
14062
- var hasTabIndex = this.element.tabIndex >= 0;
14064
+ var hasTabIndex = this.element.tabIndex !== 0;
14063
14065
  if (hasTabIndex) {
14064
14066
  return;
14065
14067
  }
@@ -14089,6 +14091,9 @@ var AccessibilityEventDirective = /** @class */ (function () {
14089
14091
  __decorate([
14090
14092
  Input()
14091
14093
  ], AccessibilityEventDirective.prototype, "tabindex", void 0);
14094
+ __decorate([
14095
+ Input()
14096
+ ], AccessibilityEventDirective.prototype, "disabled", void 0);
14092
14097
  AccessibilityEventDirective = __decorate([
14093
14098
  Directive({
14094
14099
  selector: '[sActivatedContent]'
@@ -14117,7 +14122,7 @@ var FieldsetModule = /** @class */ (function () {
14117
14122
  }
14118
14123
  FieldsetModule = __decorate([
14119
14124
  NgModule({
14120
- imports: [CommonModule, AccessibilityEventsModule, BrowserAnimationsModule],
14125
+ imports: [CommonModule, AccessibilityEventsModule],
14121
14126
  declarations: [FieldsetComponent$1],
14122
14127
  exports: [FieldsetComponent$1],
14123
14128
  })
@@ -17161,8 +17166,17 @@ var IAInsightCardComponent = /** @class */ (function () {
17161
17166
  this.dislikeSelected = false;
17162
17167
  }
17163
17168
  IAInsightCardComponent.prototype.toggle = function () {
17164
- this.open = !this.open;
17165
- this._requestInsight();
17169
+ var newOpenState = !this.open;
17170
+ this.open = newOpenState;
17171
+ if (newOpenState === true && this.insight.onOpenSidebar) {
17172
+ this.insight.onOpenSidebar();
17173
+ }
17174
+ else if (newOpenState === false && this.insight.onCloseSideBar) {
17175
+ this.insight.onCloseSideBar();
17176
+ }
17177
+ if (newOpenState === true) {
17178
+ this._requestInsight();
17179
+ }
17166
17180
  };
17167
17181
  IAInsightCardComponent.prototype.onLikeSelected = function () {
17168
17182
  var _a, _b;
@@ -17206,6 +17220,9 @@ var IAInsightCardComponent = /** @class */ (function () {
17206
17220
  .pipe(first(), finalize(function () { return (_this.isLoading = false); }))
17207
17221
  .subscribe(function (content) {
17208
17222
  _this.content = marked.marked(content);
17223
+ if (_this.insight.onContentLoaded) {
17224
+ _this.insight.onContentLoaded();
17225
+ }
17209
17226
  });
17210
17227
  };
17211
17228
  IAInsightCardComponent.ctorParameters = function () { return [
@@ -17229,6 +17246,8 @@ var IAInsightCardComponent = /** @class */ (function () {
17229
17246
  var IAInsightSidebarComponent = /** @class */ (function () {
17230
17247
  function IAInsightSidebarComponent() {
17231
17248
  this.insights = [];
17249
+ this.closedSidebar = new EventEmitter();
17250
+ this.openedSidebar = new EventEmitter();
17232
17251
  this.opened = false;
17233
17252
  }
17234
17253
  IAInsightSidebarComponent.prototype.toggle = function () {
@@ -17236,9 +17255,11 @@ var IAInsightSidebarComponent = /** @class */ (function () {
17236
17255
  };
17237
17256
  IAInsightSidebarComponent.prototype.open = function () {
17238
17257
  this.opened = true;
17258
+ this.openedSidebar.emit();
17239
17259
  };
17240
17260
  IAInsightSidebarComponent.prototype.close = function () {
17241
17261
  this.opened = false;
17262
+ this.closedSidebar.emit();
17242
17263
  };
17243
17264
  __decorate([
17244
17265
  Input()
@@ -17264,6 +17285,12 @@ var IAInsightSidebarComponent = /** @class */ (function () {
17264
17285
  __decorate([
17265
17286
  Input()
17266
17287
  ], IAInsightSidebarComponent.prototype, "noPermissionTemplate", void 0);
17288
+ __decorate([
17289
+ Output()
17290
+ ], IAInsightSidebarComponent.prototype, "closedSidebar", void 0);
17291
+ __decorate([
17292
+ Output()
17293
+ ], IAInsightSidebarComponent.prototype, "openedSidebar", void 0);
17267
17294
  IAInsightSidebarComponent = __decorate([
17268
17295
  Component({
17269
17296
  selector: "s-ia-insight-sidebar",
@@ -17298,6 +17325,8 @@ var IAInsightComponent = /** @class */ (function () {
17298
17325
  function IAInsightComponent() {
17299
17326
  this.insights = [];
17300
17327
  this.hasPermission = true;
17328
+ this.openIAInsight = new EventEmitter();
17329
+ this.closedIAInsight = new EventEmitter();
17301
17330
  }
17302
17331
  IAInsightComponent.prototype.ngAfterContentInit = function () {
17303
17332
  this._getTemplates();
@@ -17308,6 +17337,12 @@ var IAInsightComponent = /** @class */ (function () {
17308
17337
  IAInsightComponent.prototype.close = function () {
17309
17338
  this.sidebar.close();
17310
17339
  };
17340
+ IAInsightComponent.prototype.onOpenSidebar = function () {
17341
+ this.openIAInsight.emit();
17342
+ };
17343
+ IAInsightComponent.prototype.onCloseSidebar = function () {
17344
+ this.closedIAInsight.emit();
17345
+ };
17311
17346
  IAInsightComponent.prototype.getIntroTemplate = function () {
17312
17347
  return this._getCustomTemplate(IAInsightTemplateTypes.Intro);
17313
17348
  };
@@ -17341,6 +17376,12 @@ var IAInsightComponent = /** @class */ (function () {
17341
17376
  __decorate([
17342
17377
  Input()
17343
17378
  ], IAInsightComponent.prototype, "noPermissionText", void 0);
17379
+ __decorate([
17380
+ Output()
17381
+ ], IAInsightComponent.prototype, "openIAInsight", void 0);
17382
+ __decorate([
17383
+ Output()
17384
+ ], IAInsightComponent.prototype, "closedIAInsight", void 0);
17344
17385
  __decorate([
17345
17386
  ViewChild(IAInsightSidebarComponent)
17346
17387
  ], IAInsightComponent.prototype, "sidebar", void 0);
@@ -17350,7 +17391,7 @@ var IAInsightComponent = /** @class */ (function () {
17350
17391
  IAInsightComponent = __decorate([
17351
17392
  Component({
17352
17393
  selector: "s-ia-insight",
17353
- template: "<s-ia-insight-sidebar\n #sidebar\n [insights]=\"insights\"\n [hasPermission]=\"hasPermission\"\n [introText]=\"introText\"\n [introTemplate]=\"introTemplate\"\n [emptyText]=\"emptyText\"\n [emptyTemplate]=\"emptyTemplate\"\n [noPermissionText]=\"noPermissionText\"\n [noPermissionTemplate]=\"noPermissionTemplate\">\n</s-ia-insight-sidebar>",
17394
+ template: "<s-ia-insight-sidebar\n #sidebar\n [insights]=\"insights\"\n [hasPermission]=\"hasPermission\"\n [introText]=\"introText\"\n [introTemplate]=\"introTemplate\"\n [emptyText]=\"emptyText\"\n [emptyTemplate]=\"emptyTemplate\"\n [noPermissionText]=\"noPermissionText\"\n (openedSidebar)=\"onOpenSidebar()\"\n (closedSidebar)=\"onCloseSidebar()\"\n [noPermissionTemplate]=\"noPermissionTemplate\"\n>\n</s-ia-insight-sidebar>\n",
17354
17395
  styles: [""]
17355
17396
  })
17356
17397
  ], IAInsightComponent);
@@ -17388,22 +17429,60 @@ var IAInsightModule = /** @class */ (function () {
17388
17429
 
17389
17430
  var GridMenuComponent = /** @class */ (function () {
17390
17431
  function GridMenuComponent() {
17432
+ this.useFontAwesomeIcons = false;
17391
17433
  this.itemsArray = [];
17434
+ this.selectable = false;
17435
+ this.selectedChange = new EventEmitter();
17392
17436
  }
17393
17437
  Object.defineProperty(GridMenuComponent.prototype, "items", {
17394
17438
  set: function (items) {
17395
- this.itemsArray = Array.isArray(items) ? items : [items];
17439
+ if (isNullOrUndefined(items)) {
17440
+ this.itemsArray = [];
17441
+ }
17442
+ else {
17443
+ this.itemsArray = Array.isArray(items) ? items : [items];
17444
+ }
17396
17445
  },
17397
17446
  enumerable: true,
17398
17447
  configurable: true
17399
17448
  });
17449
+ GridMenuComponent.prototype.ngOnChanges = function (changes) {
17450
+ if (changes.selected && changes.selected.isFirstChange()) {
17451
+ if (this.selectable) {
17452
+ this.selected.active = true;
17453
+ }
17454
+ }
17455
+ };
17456
+ GridMenuComponent.prototype.onClickGridMenuItem = function (gridMenuItem) {
17457
+ if (!this.selectable) {
17458
+ return;
17459
+ }
17460
+ if (this.previousGridMenuItemClicked) {
17461
+ this.previousGridMenuItemClicked.active = false;
17462
+ }
17463
+ gridMenuItem.active = !gridMenuItem.active;
17464
+ this.previousGridMenuItemClicked = gridMenuItem;
17465
+ this.selectedChange.next(gridMenuItem);
17466
+ };
17400
17467
  __decorate([
17401
17468
  Input()
17402
17469
  ], GridMenuComponent.prototype, "items", null);
17470
+ __decorate([
17471
+ Input()
17472
+ ], GridMenuComponent.prototype, "useFontAwesomeIcons", void 0);
17473
+ __decorate([
17474
+ Input()
17475
+ ], GridMenuComponent.prototype, "selectable", void 0);
17476
+ __decorate([
17477
+ Input()
17478
+ ], GridMenuComponent.prototype, "selected", void 0);
17479
+ __decorate([
17480
+ Output()
17481
+ ], GridMenuComponent.prototype, "selectedChange", void 0);
17403
17482
  GridMenuComponent = __decorate([
17404
17483
  Component({
17405
17484
  selector: "s-grid-menu",
17406
- template: "<s-grid-menu-item *ngFor=\"let item of itemsArray\" [item]=\"item\"></s-grid-menu-item>\n",
17485
+ template: "<section class=\"grid-menu\">\n <s-grid-menu-item\n *ngFor=\"let item of itemsArray\"\n [item]=\"item\"\n [iconIsFromFontAwesome]=\"useFontAwesomeIcons\"\n (clickedGridMenuItem)=\"onClickGridMenuItem($event)\"\n ></s-grid-menu-item>\n</section>\n",
17407
17486
  styles: [".grid-menu{display:-ms-grid;display:grid;gap:20px;grid-template-columns:repeat(auto-fill,200px);-ms-flex-pack:space-evenly;justify-content:space-evenly}"]
17408
17487
  })
17409
17488
  ], GridMenuComponent);
@@ -17412,13 +17491,38 @@ var GridMenuComponent = /** @class */ (function () {
17412
17491
 
17413
17492
  var GridMenuItemComponent = /** @class */ (function () {
17414
17493
  function GridMenuItemComponent() {
17494
+ this.iconIsFromFontAwesome = false;
17495
+ this.clickedGridMenuItem = new EventEmitter();
17496
+ this.fontAwesomePrefix = 'fal';
17415
17497
  }
17416
17498
  GridMenuItemComponent.prototype.onClick = function () {
17417
17499
  var _a, _b;
17418
- if (this.disabled)
17500
+ if (this.disabled) {
17419
17501
  return;
17502
+ }
17420
17503
  (_b = (_a = this.item).action) === null || _b === void 0 ? void 0 : _b.call(_a);
17504
+ this.clickedGridMenuItem.emit(this.item);
17505
+ };
17506
+ GridMenuItemComponent.prototype.onMouseEnter = function () {
17507
+ if (this.disabled) {
17508
+ return;
17509
+ }
17510
+ this.fontAwesomePrefix = 'fas';
17421
17511
  };
17512
+ GridMenuItemComponent.prototype.onMouseLeave = function () {
17513
+ if (this.disabled) {
17514
+ return;
17515
+ }
17516
+ this.fontAwesomePrefix = 'fal';
17517
+ };
17518
+ Object.defineProperty(GridMenuItemComponent.prototype, "iconFontAwesomeClassName", {
17519
+ get: function () {
17520
+ var prefix = this.item.active ? 'fas' : this.fontAwesomePrefix;
17521
+ return prefix + " " + this.item.icon;
17522
+ },
17523
+ enumerable: true,
17524
+ configurable: true
17525
+ });
17422
17526
  Object.defineProperty(GridMenuItemComponent.prototype, "initialLetter", {
17423
17527
  get: function () {
17424
17528
  var initialLetter = "";
@@ -17436,7 +17540,8 @@ var GridMenuItemComponent = /** @class */ (function () {
17436
17540
  });
17437
17541
  Object.defineProperty(GridMenuItemComponent.prototype, "disabled", {
17438
17542
  get: function () {
17439
- return typeof this.item.disabled === "function" ? !!this.item.disabled() : !!this.item.disabled;
17543
+ var _a, _b;
17544
+ return typeof ((_a = this.item) === null || _a === void 0 ? void 0 : _a.disabled) === "function" ? !!this.item.disabled() : !!((_b = this.item) === null || _b === void 0 ? void 0 : _b.disabled);
17440
17545
  },
17441
17546
  enumerable: true,
17442
17547
  configurable: true
@@ -17444,11 +17549,17 @@ var GridMenuItemComponent = /** @class */ (function () {
17444
17549
  __decorate([
17445
17550
  Input()
17446
17551
  ], GridMenuItemComponent.prototype, "item", void 0);
17552
+ __decorate([
17553
+ Input()
17554
+ ], GridMenuItemComponent.prototype, "iconIsFromFontAwesome", void 0);
17555
+ __decorate([
17556
+ Output()
17557
+ ], GridMenuItemComponent.prototype, "clickedGridMenuItem", void 0);
17447
17558
  GridMenuItemComponent = __decorate([
17448
17559
  Component({
17449
17560
  selector: "s-grid-menu-item",
17450
- template: "<button\n class=\"icon-button\"\n [class.icon-button--disabled]=\"disabled\"\n (click)=\"onClick()\">\n <div class=\"icon-wrapper\">\n <span\n *ngIf=\"item.icon; else initialsTemplate\"\n class=\"icon\"\n style=\"background-image: url('{{ item.icon }}');\">\n </span>\n <ng-template #initialsTemplate>\n <span class=\"initials\">{{ initialLetter }}</span>\n </ng-template>\n </div>\n <span class=\"title\">{{ item.label }}</span>\n</button>\n",
17451
- styles: [".icon-button{-ms-flex-align:center;align-items:center;background-color:transparent;border:none;cursor:pointer;display:-ms-inline-flexbox;display:inline-flex;-ms-flex-direction:column;flex-direction:column;gap:12px;-ms-flex-pack:center;justify-content:center;padding:5px;transition:transform .3s ease-in-out;width:200px}.icon-button .icon-wrapper{-ms-flex-item-align:center;align-self:center;background-color:#dedce5;border-radius:10px;display:-ms-flexbox;display:flex;height:64px;-ms-flex-pack:center;justify-content:center;overflow:hidden;padding:8px;width:64px}.icon-button .icon-wrapper .icon{background-position:center;background-repeat:no-repeat;background-size:cover;display:inline-block;height:100%;width:100%}.icon-button .icon-wrapper .initials{-ms-flex-align:center;align-items:center;color:#428bca;display:-ms-flexbox;display:flex;font-family:\"Open Sans\",sans-serif;font-size:20px;font-weight:700}.icon-button .title{-webkit-box-orient:vertical;-webkit-line-clamp:2;color:#428bca;display:-webkit-box;font-family:\"Open Sans\",sans-serif;font-size:14px;line-clamp:2;overflow:hidden;text-overflow:ellipsis;width:100%}.icon-button--disabled{cursor:default;opacity:.5}.icon-button:not(.icon-button--disabled):hover{transform:scale(1.05)}"]
17561
+ template: "<button\n class=\"icon-button\"\n [class.icon-button-active]=\"item.active\"\n [class.icon-button--disabled]=\"disabled\"\n (sActivatedContent)=\"onClick()\"\n [disabled]=\"disabled\"\n [tabindex]=\"disabled ? -1 : 0\"\n [class.icon-font-awesome]=\"iconIsFromFontAwesome\"\n (mouseenter)=\"onMouseEnter()\"\n (mouseleave)=\"onMouseLeave()\"\n *ngIf=\"item\"\n>\n <div class=\"icon-wrapper\" [class.icon-image]=\"!iconIsFromFontAwesome\">\n <ng-container *ngIf=\"item.icon\">\n <i *ngIf=\"iconIsFromFontAwesome\" [class]=\"iconFontAwesomeClassName\"> </i>\n <span *ngIf=\"!iconIsFromFontAwesome\" class=\"icon\" style=\"background-image: url('{{ item.icon }}');\"> </span>\n </ng-container>\n\n <ng-container *ngIf=\"!item.icon\">\n <span class=\"initials\">{{ initialLetter }}</span>\n </ng-container>\n </div>\n <span class=\"title\">{{ item.label }}</span>\n</button>\n",
17562
+ styles: [".icon-button{-ms-flex-align:center;align-items:center;background-color:transparent;border:none;cursor:pointer;display:-ms-inline-flexbox;display:inline-flex;-ms-flex-direction:column;flex-direction:column;gap:12px;-ms-flex-pack:center;justify-content:center;padding:5px;transition:transform .3s ease-in-out;width:200px}.icon-button:not(.icon-button--disabled):hover .initials,.icon-button:not(.icon-button--disabled):hover .title{font-weight:700}.icon-button.icon-font-awesome .title{padding-bottom:1em}.icon-button.icon-font-awesome:not(.icon-button--disabled):hover{border-radius:10px;background-color:#dedce5}.icon-button.icon-font-awesome .icon-wrapper i{color:#009494}.icon-button .icon-wrapper{-ms-flex-item-align:center;align-self:center;border-radius:10px;display:-ms-flexbox;display:flex;height:64px;-ms-flex-pack:center;justify-content:center;overflow:hidden;padding:8px;width:64px;-ms-flex-align:center;align-items:center;font-size:3em}.icon-button .icon-wrapper.icon-image{background-color:#dedce5}.icon-button .icon-wrapper .icon{background-position:center;background-repeat:no-repeat;background-size:cover;display:inline-block;height:100%;width:100%}.icon-button .icon-wrapper .initials{-ms-flex-align:center;align-items:center;display:-ms-flexbox;display:flex;font-family:\"Open Sans\",sans-serif;font-size:20px;font-weight:700}.icon-button .title{-webkit-box-orient:vertical;-webkit-line-clamp:2;display:-webkit-box;font-family:\"Open Sans\",sans-serif;font-size:14px;line-clamp:2;overflow:hidden;text-overflow:ellipsis;width:100%}.icon-button--disabled{cursor:default;opacity:.5}.icon-button:not(.icon-button--disabled):hover{transform:scale(1.05)}.icon-button-active{transform:scale(1.05);border-radius:10px;background-color:#dedce5}.icon-button-active .initials,.icon-button-active .title{font-weight:700}"]
17452
17563
  })
17453
17564
  ], GridMenuItemComponent);
17454
17565
  return GridMenuItemComponent;
@@ -17459,7 +17570,7 @@ var GridMenuModule = /** @class */ (function () {
17459
17570
  }
17460
17571
  GridMenuModule = __decorate([
17461
17572
  NgModule({
17462
- imports: [CommonModule],
17573
+ imports: [CommonModule, AccessibilityEventsModule],
17463
17574
  declarations: [GridMenuItemComponent, GridMenuComponent],
17464
17575
  exports: [GridMenuItemComponent, GridMenuComponent],
17465
17576
  })