@po-ui/ng-components 19.33.0 → 19.35.0-beta.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 (31) hide show
  1. package/fesm2022/po-ui-ng-components.mjs +199 -63
  2. package/fesm2022/po-ui-ng-components.mjs.map +1 -1
  3. package/lib/components/po-button/po-button-base.component.d.ts +3 -2
  4. package/lib/components/po-dropdown/po-dropdown-action.interface.d.ts +10 -0
  5. package/lib/components/po-dropdown/po-dropdown.component.d.ts +5 -0
  6. package/lib/components/po-listbox/interfaces/po-listbox-literals.interface.d.ts +2 -0
  7. package/lib/components/po-listbox/po-item-list/po-item-list-base.component.d.ts +2 -1
  8. package/lib/components/po-listbox/po-listbox-base.component.d.ts +9 -8
  9. package/lib/components/po-listbox/po-listbox.component.d.ts +14 -3
  10. package/lib/components/po-listbox/po-listbox.module.d.ts +3 -2
  11. package/lib/components/po-modal/po-modal-action.interface.d.ts +44 -0
  12. package/lib/components/po-page/interfaces/po-page-action.interface.d.ts +6 -5
  13. package/lib/components/po-popup/po-popup-action.interface.d.ts +36 -4
  14. package/lib/components/po-popup/po-popup-base.component.d.ts +2 -1
  15. package/lib/services/po-theme/helpers/types/po-theme-dark-defaults-AA.constant.d.ts +4 -0
  16. package/lib/services/po-theme/helpers/types/po-theme-dark-defaults.constant.d.ts +5 -0
  17. package/package.json +4 -4
  18. package/po-ui-ng-components-19.35.0-beta.1.tgz +0 -0
  19. package/schematics/ng-add/index.js +1 -1
  20. package/schematics/ng-update/v14/index.js +1 -1
  21. package/schematics/ng-update/v15/index.js +1 -1
  22. package/schematics/ng-update/v16/index.js +1 -1
  23. package/schematics/ng-update/v17/index.js +1 -1
  24. package/schematics/ng-update/v18/index.js +2 -2
  25. package/schematics/ng-update/v19/index.js +2 -2
  26. package/schematics/ng-update/v2/index.js +1 -1
  27. package/schematics/ng-update/v3/index.js +1 -1
  28. package/schematics/ng-update/v4/index.js +1 -1
  29. package/schematics/ng-update/v5/index.js +1 -1
  30. package/schematics/ng-update/v6/index.js +1 -1
  31. package/po-ui-ng-components-19.33.0.tgz +0 -0
@@ -8,7 +8,7 @@ import { trigger, transition, style, animate, group, query, animateChild, state,
8
8
  import { Subject, filter, fromEvent, debounceTime, Subscription, switchMap, isObservable, of, ReplaySubject, timer, throwError, Observable, map as map$1, catchError as catchError$1, startWith, delay as delay$1 } from 'rxjs';
9
9
  import * as i1$1 from '@angular/router';
10
10
  import { RouterModule, Router, NavigationEnd, NavigationCancel } from '@angular/router';
11
- import * as i2$2 from '@angular/cdk/listbox';
11
+ import * as i4 from '@angular/cdk/listbox';
12
12
  import { CdkListboxModule } from '@angular/cdk/listbox';
13
13
  import * as i1$2 from '@angular/forms';
14
14
  import { NG_VALUE_ACCESSOR, FormsModule, NG_VALIDATORS, Validators, NgControl, NgForm, ControlContainer } from '@angular/forms';
@@ -4556,6 +4556,8 @@ class PoPopupBaseComponent {
4556
4556
  _position = poPopupDefaultPosition;
4557
4557
  _size = undefined;
4558
4558
  _target;
4559
+ // Indica se há um listbox com subitens
4560
+ listboxSubitems = false;
4559
4561
  /** Lista de ações que serão exibidas no componente. */
4560
4562
  set actions(value) {
4561
4563
  this._actions = Array.isArray(value) ? value : [];
@@ -4716,11 +4718,14 @@ class PoPopupBaseComponent {
4716
4718
  closeEvent = new EventEmitter();
4717
4719
  clickItem = new EventEmitter();
4718
4720
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.7", ngImport: i0, type: PoPopupBaseComponent, deps: [], target: i0.ɵɵFactoryTarget.Directive });
4719
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.0.7", type: PoPopupBaseComponent, isStandalone: true, inputs: { actions: ["p-actions", "actions"], hideArrow: ["p-hide-arrow", "hideArrow"], isCornerAlign: ["p-is-corner-align", "isCornerAlign"], position: ["p-position", "position"], customPositions: ["p-custom-positions", "customPositions"], size: ["p-size", "size"], target: ["p-target", "target"] }, outputs: { closeEvent: "p-close", clickItem: "p-click-item" }, ngImport: i0 });
4721
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.0.7", type: PoPopupBaseComponent, isStandalone: true, inputs: { listboxSubitems: ["p-listbox-subitems", "listboxSubitems"], actions: ["p-actions", "actions"], hideArrow: ["p-hide-arrow", "hideArrow"], isCornerAlign: ["p-is-corner-align", "isCornerAlign"], position: ["p-position", "position"], customPositions: ["p-custom-positions", "customPositions"], size: ["p-size", "size"], target: ["p-target", "target"] }, outputs: { closeEvent: "p-close", clickItem: "p-click-item" }, ngImport: i0 });
4720
4722
  }
4721
4723
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.7", ngImport: i0, type: PoPopupBaseComponent, decorators: [{
4722
4724
  type: Directive
4723
- }], propDecorators: { actions: [{
4725
+ }], propDecorators: { listboxSubitems: [{
4726
+ type: Input,
4727
+ args: ['p-listbox-subitems']
4728
+ }], actions: [{
4724
4729
  type: Input,
4725
4730
  args: ['p-actions']
4726
4731
  }], hideArrow: [{
@@ -4769,15 +4774,19 @@ var PoItemListFilterMode;
4769
4774
 
4770
4775
  const poListBoxLiteralsDefault = {
4771
4776
  en: {
4777
+ backToPreviousGroup: 'Go back to the previous list',
4772
4778
  noItems: 'No items found'
4773
4779
  },
4774
4780
  es: {
4781
+ backToPreviousGroup: 'Volver a la lista anterior',
4775
4782
  noItems: 'No se encontraron artículos'
4776
4783
  },
4777
4784
  pt: {
4785
+ backToPreviousGroup: 'Voltar para a lista anterior',
4778
4786
  noItems: 'Nenhum item encontrado'
4779
4787
  },
4780
4788
  ru: {
4789
+ backToPreviousGroup: 'Вернуться к предыдущему списку',
4781
4790
  noItems: 'ничего не найдено'
4782
4791
  }
4783
4792
  };
@@ -4791,6 +4800,7 @@ class PoListBoxBaseComponent {
4791
4800
  _literals;
4792
4801
  language = poLocaleDefault;
4793
4802
  _size = undefined;
4803
+ listboxSubitems = false;
4794
4804
  visible = false;
4795
4805
  set type(value) {
4796
4806
  this._type = PoItemListType[value] ?? 'action';
@@ -4825,16 +4835,6 @@ class PoListBoxBaseComponent {
4825
4835
  isTabs = false;
4826
4836
  // parâmetro que pode ser passado para o popup ao clicar em um item
4827
4837
  param;
4828
- selectItem = new EventEmitter();
4829
- closeEvent = new EventEmitter();
4830
- // MULTISELECT PROPERTIES
4831
- //output para evento do checkbox
4832
- change = new EventEmitter();
4833
- //output para evento do checkbox
4834
- selectCombo = new EventEmitter();
4835
- //output para evento do checkbox de selecionar todos
4836
- changeAll = new EventEmitter();
4837
- UpdateInfiniteScroll = new EventEmitter();
4838
4838
  //valor do checkbox de selecionar todos
4839
4839
  checkboxAllValue;
4840
4840
  // Propriedade que recebe a lista de opções selecionadas.
@@ -4843,8 +4843,6 @@ class PoListBoxBaseComponent {
4843
4843
  selectedOption;
4844
4844
  fieldValue = 'value';
4845
4845
  fieldLabel = 'label';
4846
- // Evento disparado a cada tecla digitada na pesquisa.
4847
- changeSearch = new EventEmitter();
4848
4846
  // Propriedade que recebe as literais definidas no componente `po-multiselect`.
4849
4847
  literalSearch;
4850
4848
  // Propriedade que recebe o valor de comparação de pesquisa
@@ -4883,6 +4881,18 @@ class PoListBoxBaseComponent {
4883
4881
  placeholderListbox;
4884
4882
  // Define se haverá ou não um separador entre todos os itens do listbox
4885
4883
  separator = false;
4884
+ // Evento disparado a cada tecla digitada na pesquisa.
4885
+ changeSearch = new EventEmitter();
4886
+ selectItem = new EventEmitter();
4887
+ closeEvent = new EventEmitter();
4888
+ // MULTISELECT PROPERTIES
4889
+ //output para evento do checkbox
4890
+ change = new EventEmitter();
4891
+ //output para evento do checkbox
4892
+ selectCombo = new EventEmitter();
4893
+ //output para evento do checkbox de selecionar todos
4894
+ changeAll = new EventEmitter();
4895
+ UpdateInfiniteScroll = new EventEmitter();
4886
4896
  // Evento disparado quando uma tab é ativada
4887
4897
  activatedTab = new EventEmitter();
4888
4898
  // Evento disparado no click de uma aba do tabs
@@ -4895,11 +4905,14 @@ class PoListBoxBaseComponent {
4895
4905
  this.language = languageService.getShortLanguage();
4896
4906
  }
4897
4907
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.7", ngImport: i0, type: PoListBoxBaseComponent, deps: [{ token: PoLanguageService }], target: i0.ɵɵFactoryTarget.Directive });
4898
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "19.0.7", type: PoListBoxBaseComponent, isStandalone: true, inputs: { visible: ["p-visible", "visible", convertToBoolean], type: ["p-type", "type"], items: ["p-items", "items"], literals: ["p-literals", "literals"], isTabs: ["p-is-tabs", "isTabs", convertToBoolean], param: ["p-param", "param"], checkboxAllValue: ["p-checkboxAllValue", "checkboxAllValue"], selectedOptions: ["p-selected-options", "selectedOptions"], selectedOption: ["p-selected-option", "selectedOption"], fieldValue: ["p-field-value", "fieldValue"], fieldLabel: ["p-field-label", "fieldLabel"], literalSearch: ["p-literal-search", "literalSearch"], fieldValueSearch: ["p-field-value-search", "fieldValueSearch"], hideSearch: ["p-hide-search", "hideSearch"], hideSelectAll: ["p-hide-select-all", "hideSelectAll"], multiselectTemplate: ["p-multiselect-template", "multiselectTemplate"], template: ["p-template", "template"], placeholderSearch: ["p-placeholder-search", "placeholderSearch"], searchValue: ["p-search-value", "searchValue"], isServerSearching: ["p-is-searching", "isServerSearching", convertToBoolean], infiniteLoading: ["p-infinite-loading", "infiniteLoading", convertToBoolean], infiniteScroll: ["p-infinite-scroll", "infiniteScroll", convertToBoolean], cache: ["p-cache", "cache", convertToBoolean], infiniteScrollDistance: ["p-infinite-scroll-distance", "infiniteScrollDistance"], filterMode: ["p-filter-mode", "filterMode"], isFiltering: ["p-filtering", "isFiltering"], shouldMarkLetters: ["p-should-mark-letter", "shouldMarkLetters"], size: ["p-size", "size"], compareCache: ["p-compare-cache", "compareCache"], comboService: ["p-combo-service", "comboService"], containerWidth: ["p-container-width", "containerWidth"], keysLabel: ["p-keys-label", "keysLabel"], footerActionListbox: ["p-footer-action-listbox", "footerActionListbox"], placeholderListbox: ["p-placeholder-listbox", "placeholderListbox"], separator: ["p-separator", "separator"] }, outputs: { selectItem: "p-select-item", closeEvent: "p-close", change: "p-change", selectCombo: "p-selectcombo-item", changeAll: "p-change-all", UpdateInfiniteScroll: "p-update-infinite-scroll", changeSearch: "p-change-search", activatedTab: "p-activated-tabs", clickTab: "p-click-tabs", changeStateTabs: "p-change-state-tabs", clickItem: "p-click-item", footerActionListboxEvent: "p-footer-action-listbox-event" }, ngImport: i0 });
4908
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "19.0.7", type: PoListBoxBaseComponent, isStandalone: true, inputs: { listboxSubitems: ["p-listbox-subitems", "listboxSubitems"], visible: ["p-visible", "visible", convertToBoolean], type: ["p-type", "type"], items: ["p-items", "items"], literals: ["p-literals", "literals"], isTabs: ["p-is-tabs", "isTabs", convertToBoolean], param: ["p-param", "param"], checkboxAllValue: ["p-checkboxAllValue", "checkboxAllValue"], selectedOptions: ["p-selected-options", "selectedOptions"], selectedOption: ["p-selected-option", "selectedOption"], fieldValue: ["p-field-value", "fieldValue"], fieldLabel: ["p-field-label", "fieldLabel"], literalSearch: ["p-literal-search", "literalSearch"], fieldValueSearch: ["p-field-value-search", "fieldValueSearch"], hideSearch: ["p-hide-search", "hideSearch"], hideSelectAll: ["p-hide-select-all", "hideSelectAll"], multiselectTemplate: ["p-multiselect-template", "multiselectTemplate"], template: ["p-template", "template"], placeholderSearch: ["p-placeholder-search", "placeholderSearch"], searchValue: ["p-search-value", "searchValue"], isServerSearching: ["p-is-searching", "isServerSearching", convertToBoolean], infiniteLoading: ["p-infinite-loading", "infiniteLoading", convertToBoolean], infiniteScroll: ["p-infinite-scroll", "infiniteScroll", convertToBoolean], cache: ["p-cache", "cache", convertToBoolean], infiniteScrollDistance: ["p-infinite-scroll-distance", "infiniteScrollDistance"], filterMode: ["p-filter-mode", "filterMode"], isFiltering: ["p-filtering", "isFiltering"], shouldMarkLetters: ["p-should-mark-letter", "shouldMarkLetters"], size: ["p-size", "size"], compareCache: ["p-compare-cache", "compareCache"], comboService: ["p-combo-service", "comboService"], containerWidth: ["p-container-width", "containerWidth"], keysLabel: ["p-keys-label", "keysLabel"], footerActionListbox: ["p-footer-action-listbox", "footerActionListbox"], placeholderListbox: ["p-placeholder-listbox", "placeholderListbox"], separator: ["p-separator", "separator"] }, outputs: { changeSearch: "p-change-search", selectItem: "p-select-item", closeEvent: "p-close", change: "p-change", selectCombo: "p-selectcombo-item", changeAll: "p-change-all", UpdateInfiniteScroll: "p-update-infinite-scroll", activatedTab: "p-activated-tabs", clickTab: "p-click-tabs", changeStateTabs: "p-change-state-tabs", clickItem: "p-click-item", footerActionListboxEvent: "p-footer-action-listbox-event" }, host: { properties: { "attr.p-size": "this.size" } }, ngImport: i0 });
4899
4909
  }
4900
4910
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.7", ngImport: i0, type: PoListBoxBaseComponent, decorators: [{
4901
4911
  type: Directive
4902
- }], ctorParameters: () => [{ type: PoLanguageService }], propDecorators: { visible: [{
4912
+ }], ctorParameters: () => [{ type: PoLanguageService }], propDecorators: { listboxSubitems: [{
4913
+ type: Input,
4914
+ args: ['p-listbox-subitems']
4915
+ }], visible: [{
4903
4916
  type: Input,
4904
4917
  args: [{ alias: 'p-visible', transform: convertToBoolean }]
4905
4918
  }], type: [{
@@ -4917,24 +4930,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.7", ngImpor
4917
4930
  }], param: [{
4918
4931
  type: Input,
4919
4932
  args: ['p-param']
4920
- }], selectItem: [{
4921
- type: Output,
4922
- args: ['p-select-item']
4923
- }], closeEvent: [{
4924
- type: Output,
4925
- args: ['p-close']
4926
- }], change: [{
4927
- type: Output,
4928
- args: ['p-change']
4929
- }], selectCombo: [{
4930
- type: Output,
4931
- args: ['p-selectcombo-item']
4932
- }], changeAll: [{
4933
- type: Output,
4934
- args: ['p-change-all']
4935
- }], UpdateInfiniteScroll: [{
4936
- type: Output,
4937
- args: ['p-update-infinite-scroll']
4938
4933
  }], checkboxAllValue: [{
4939
4934
  type: Input,
4940
4935
  args: ['p-checkboxAllValue']
@@ -4950,9 +4945,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.7", ngImpor
4950
4945
  }], fieldLabel: [{
4951
4946
  type: Input,
4952
4947
  args: ['p-field-label']
4953
- }], changeSearch: [{
4954
- type: Output,
4955
- args: ['p-change-search']
4956
4948
  }], literalSearch: [{
4957
4949
  type: Input,
4958
4950
  args: ['p-literal-search']
@@ -5002,6 +4994,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.7", ngImpor
5002
4994
  type: Input,
5003
4995
  args: ['p-should-mark-letter']
5004
4996
  }], size: [{
4997
+ type: HostBinding,
4998
+ args: ['attr.p-size']
4999
+ }, {
5005
5000
  type: Input,
5006
5001
  args: ['p-size']
5007
5002
  }], compareCache: [{
@@ -5025,6 +5020,27 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.7", ngImpor
5025
5020
  }], separator: [{
5026
5021
  type: Input,
5027
5022
  args: ['p-separator']
5023
+ }], changeSearch: [{
5024
+ type: Output,
5025
+ args: ['p-change-search']
5026
+ }], selectItem: [{
5027
+ type: Output,
5028
+ args: ['p-select-item']
5029
+ }], closeEvent: [{
5030
+ type: Output,
5031
+ args: ['p-close']
5032
+ }], change: [{
5033
+ type: Output,
5034
+ args: ['p-change']
5035
+ }], selectCombo: [{
5036
+ type: Output,
5037
+ args: ['p-selectcombo-item']
5038
+ }], changeAll: [{
5039
+ type: Output,
5040
+ args: ['p-change-all']
5041
+ }], UpdateInfiniteScroll: [{
5042
+ type: Output,
5043
+ args: ['p-update-infinite-scroll']
5028
5044
  }], activatedTab: [{
5029
5045
  type: Output,
5030
5046
  args: ['p-activated-tabs']
@@ -5522,6 +5538,8 @@ class PoItemListBaseComponent {
5522
5538
  * Define um ícone que será exibido ao lado esquerdo do rótulo.
5523
5539
  */
5524
5540
  icon;
5541
+ // Define a posição do ícone: 'left' (padrão) ou 'right'.
5542
+ iconPosition = 'left';
5525
5543
  /**
5526
5544
  * @optional
5527
5545
  *
@@ -5567,7 +5585,7 @@ class PoItemListBaseComponent {
5567
5585
  }
5568
5586
  }
5569
5587
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.7", ngImport: i0, type: PoItemListBaseComponent, deps: [], target: i0.ɵɵFactoryTarget.Directive });
5570
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "19.0.7", type: PoItemListBaseComponent, isStandalone: true, inputs: { type: ["p-type", "type"], visible: ["p-visible", "visible"], item: ["p-item", "item"], label: ["p-label", "label"], size: ["p-size", "size"], value: ["p-value", "value"], danger: ["p-danger", "danger", convertToBoolean], disabled: ["p-disabled", "disabled"], selected: ["p-selected", "selected", convertToBoolean], separator: ["p-separator", "separator", convertToBoolean], icon: ["p-icon", "icon"], checkboxValue: ["p-checkbox-value", "checkboxValue"], fieldValue: ["p-field-value", "fieldValue"], fieldLabel: ["p-field-label", "fieldLabel"], template: ["p-template", "template"], templateContext: ["p-template-context", "templateContext"], searchValue: ["p-search-value", "searchValue"], filterMode: ["p-filter-mode", "filterMode"], isFiltering: ["p-filtering", "isFiltering"], shouldMarkLetters: ["p-should-mark-letter", "shouldMarkLetters"], compareCache: ["p-compare-cache", "compareCache"], comboService: ["p-combo-service", "comboService"], isTabs: ["p-is-tabs", "isTabs"], tabHide: ["p-tab-hide", "tabHide"], activeTabs: ["p-active-tabs", "activeTabs"], keysLabel: ["p-keys-label", "keysLabel"] }, outputs: { clickItem: "p-click-item", checkboxItem: "p-selectcheckbox-item", comboItem: "p-selectcombo-item", tabsItem: "p-emit-item-tabs", activatedTab: "p-activated-tabs" }, host: { properties: { "attr.p-type": "this.type" } }, ngImport: i0 });
5588
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "19.0.7", type: PoItemListBaseComponent, isStandalone: true, inputs: { type: ["p-type", "type"], visible: ["p-visible", "visible"], item: ["p-item", "item"], label: ["p-label", "label"], size: ["p-size", "size"], value: ["p-value", "value"], danger: ["p-danger", "danger", convertToBoolean], disabled: ["p-disabled", "disabled"], selected: ["p-selected", "selected", convertToBoolean], separator: ["p-separator", "separator", convertToBoolean], icon: ["p-icon", "icon"], iconPosition: ["p-icon-position", "iconPosition"], checkboxValue: ["p-checkbox-value", "checkboxValue"], fieldValue: ["p-field-value", "fieldValue"], fieldLabel: ["p-field-label", "fieldLabel"], template: ["p-template", "template"], templateContext: ["p-template-context", "templateContext"], searchValue: ["p-search-value", "searchValue"], filterMode: ["p-filter-mode", "filterMode"], isFiltering: ["p-filtering", "isFiltering"], shouldMarkLetters: ["p-should-mark-letter", "shouldMarkLetters"], compareCache: ["p-compare-cache", "compareCache"], comboService: ["p-combo-service", "comboService"], isTabs: ["p-is-tabs", "isTabs"], tabHide: ["p-tab-hide", "tabHide"], activeTabs: ["p-active-tabs", "activeTabs"], keysLabel: ["p-keys-label", "keysLabel"] }, outputs: { clickItem: "p-click-item", checkboxItem: "p-selectcheckbox-item", comboItem: "p-selectcombo-item", tabsItem: "p-emit-item-tabs", activatedTab: "p-activated-tabs" }, host: { properties: { "attr.p-type": "this.type", "attr.p-size": "this.size" } }, ngImport: i0 });
5571
5589
  }
5572
5590
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.7", ngImport: i0, type: PoItemListBaseComponent, decorators: [{
5573
5591
  type: Directive
@@ -5587,6 +5605,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.7", ngImpor
5587
5605
  type: Input,
5588
5606
  args: ['p-label']
5589
5607
  }], size: [{
5608
+ type: HostBinding,
5609
+ args: ['attr.p-size']
5610
+ }, {
5590
5611
  type: Input,
5591
5612
  args: ['p-size']
5592
5613
  }], value: [{
@@ -5607,6 +5628,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.7", ngImpor
5607
5628
  }], icon: [{
5608
5629
  type: Input,
5609
5630
  args: ['p-icon']
5631
+ }], iconPosition: [{
5632
+ type: Input,
5633
+ args: ['p-icon-position']
5610
5634
  }], clickItem: [{
5611
5635
  type: Output,
5612
5636
  args: ['p-click-item']
@@ -6326,11 +6350,12 @@ class PoButtonBaseComponent {
6326
6350
  * @description
6327
6351
  * Ícone exibido ao lado esquerdo do label do botão.
6328
6352
  *
6329
- * É possível usar qualquer um dos ícones da [Biblioteca de ícones](https://po-ui.io/icons). conforme exemplo abaixo:
6353
+ * É possível usar qualquer um dos ícones da [Biblioteca de ícones](https://po-ui.io/icons), conforme exemplo:
6330
6354
  * ```
6331
6355
  * <po-button p-icon="an an-user" p-label="PO button"></po-button>
6332
6356
  * ```
6333
- * Também é possível utilizar outras fontes de ícones, por exemplo a biblioteca *Font Awesome*, da seguinte forma:
6357
+ * Também é possível utilizar outras fontes de ícones, por exemplo a biblioteca *Font Awesome*, desde que a biblioteca
6358
+ * esteja carregada no projeto:
6334
6359
  * ```
6335
6360
  * <po-button p-icon="fa fa-podcast" p-label="PO button"></po-button>
6336
6361
  * ```
@@ -8031,11 +8056,11 @@ class PoItemListComponent extends PoItemListBaseComponent {
8031
8056
  return value.replace(/</g, '&lt;').replace(/>/g, '&gt;');
8032
8057
  }
8033
8058
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.7", ngImport: i0, type: PoItemListComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
8034
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.7", type: PoItemListComponent, isStandalone: false, selector: "po-item-list", viewQueries: [{ propertyName: "itemList", first: true, predicate: ["itemList"], descendants: true, static: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<ng-container (keydown)=\"onCheckboxItemEmit($event)\">\n @switch (type) {\n @default {\n <div\n #itemList\n [class.po-item-list__separator]=\"separator\"\n [class.po-item-list__disabled]=\"disabled || !visible\"\n [class.po-item-list__selected]=\"(selected || activeTabs) && !disabled\"\n [class.po-item-list__hidden]=\"tabHide\"\n [attr.aria-disabled]=\"disabled || !visible\"\n [attr.aria-label]=\"label\"\n [class.po-item-list__danger]=\"danger\"\n class=\"po-item-list po-item-list__action\"\n >\n @if (icon) {\n <po-icon class=\"po-popup-icon-item\" [p-icon]=\"icon\"></po-icon>\n }\n <span class=\"po-item-list-label\">{{ label }}</span>\n </div>\n }\n @case ('option') {\n <div\n #itemList\n class=\"po-item-list po-item-list__option\"\n [class.po-item-list__separator]=\"separator\"\n [class.po-item-list__selected]=\"selected && !disabled\"\n [attr.aria-disabled]=\"disabled\"\n [attr.aria-label]=\"label\"\n (click)=\"onComboItem(item, $event)\"\n >\n @if (!template) {\n @switch (keysLabel.length) {\n @case (0) {\n <span class=\"po-item-list-label\" [innerHTML]=\"getLabelFormatted(label)\"></span>\n }\n\n @case (1) {\n <span class=\"po-item-list-label\">{{ item[keysLabel[0]] }}</span>\n }\n\n @case (2) {\n <div class=\"po-item-list-label po-item-list-label-group\">\n <span class=\"po-item-list-label\">{{ item[keysLabel[0]] }}</span>\n <span class=\"po-item-list-sublabel\">{{ item[keysLabel[1]] }}</span>\n </div>\n }\n\n @default {\n <div class=\"po-item-list-label po-item-list-label-group\">\n <span class=\"po-item-list-label\">{{ item[keysLabel[0]] }}</span>\n <span class=\"po-item-list-sublabel\">{{ item[keysLabel[1]] }} - {{ item[keysLabel[2]] }}</span>\n </div>\n }\n }\n }\n\n <ng-template\n [ngTemplateOutlet]=\"template?.templateRef\"\n [ngTemplateOutletContext]=\"{ $implicit: templateContext }\"\n >\n </ng-template>\n </div>\n }\n @case ('check') {\n <div\n class=\"po-item-list po-item-list__check\"\n [class.po-item-list__separator]=\"separator\"\n [class.po-item-list__selected]=\"selected && !disabled\"\n [class.po-item-list__disabled]=\"disabled\"\n [attr.aria-disabled]=\"disabled\"\n [attr.aria-label]=\"label\"\n (click)=\"onCheckboxItem()\"\n (keydown)=\"onCheckboxItemEmit($event)\"\n (keyup)=\"onCheckboxItemEmit($event)\"\n >\n <po-checkbox\n [p-disabled-tabindex]=\"true\"\n [p-checkboxValue]=\"checkboxValue === null ? 'mixed' : checkboxValue\"\n [p-disabled]=\"disabled\"\n [p-size]=\"size\"\n ></po-checkbox>\n @if (!template) {\n <span class=\"po-item-list__label\">{{ label }}</span>\n }\n <ng-template\n [ngTemplateOutlet]=\"template?.templateRef\"\n [ngTemplateOutletContext]=\"{ $implicit: templateContext }\"\n >\n </ng-template>\n </div>\n }\n }\n</ng-container>\n", dependencies: [{ kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: PoCheckboxComponent, selector: "po-checkbox" }, { kind: "component", type: PoIconComponent, selector: "po-icon", inputs: ["p-icon"] }] });
8059
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.7", type: PoItemListComponent, isStandalone: false, selector: "po-item-list", viewQueries: [{ propertyName: "itemList", first: true, predicate: ["itemList"], descendants: true, static: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<ng-container (keydown)=\"onCheckboxItemEmit($event)\">\n @switch (type) {\n @default {\n <div\n #itemList\n [class.po-item-list__separator]=\"separator\"\n [class.po-item-list__disabled]=\"disabled || !visible\"\n [class.po-item-list__selected]=\"(selected || activeTabs) && !disabled\"\n [class.po-item-list__hidden]=\"tabHide\"\n [attr.aria-disabled]=\"disabled || !visible\"\n [attr.aria-label]=\"label\"\n [class.po-item-list__danger]=\"danger\"\n class=\"po-item-list po-item-list__action\"\n >\n @if (icon && iconPosition === 'left') {\n <po-icon\n class=\"po-popup-icon-item po-field-icon\"\n [class.po-field-icon-aa]=\"size === 'small'\"\n [p-icon]=\"icon\"\n ></po-icon>\n }\n <span class=\"po-item-list-label\">{{ label }}</span>\n\n @if (icon && iconPosition === 'right') {\n <po-icon class=\"po-popup-icon-item-right po-field-icon\" [p-icon]=\"icon\"></po-icon>\n }\n </div>\n }\n @case ('option') {\n <div\n #itemList\n class=\"po-item-list po-item-list__option\"\n [class.po-item-list__separator]=\"separator\"\n [class.po-item-list__selected]=\"selected && !disabled\"\n [attr.aria-disabled]=\"disabled\"\n [attr.aria-label]=\"label\"\n (click)=\"onComboItem(item, $event)\"\n >\n @if (!template) {\n @switch (keysLabel.length) {\n @case (0) {\n <span class=\"po-item-list-label\" [innerHTML]=\"getLabelFormatted(label)\"></span>\n }\n\n @case (1) {\n <span class=\"po-item-list-label\">{{ item[keysLabel[0]] }}</span>\n }\n\n @case (2) {\n <div class=\"po-item-list-label po-item-list-label-group\">\n <span class=\"po-item-list-label\">{{ item[keysLabel[0]] }}</span>\n <span class=\"po-item-list-sublabel\">{{ item[keysLabel[1]] }}</span>\n </div>\n }\n\n @default {\n <div class=\"po-item-list-label po-item-list-label-group\">\n <span class=\"po-item-list-label\">{{ item[keysLabel[0]] }}</span>\n <span class=\"po-item-list-sublabel\">{{ item[keysLabel[1]] }} - {{ item[keysLabel[2]] }}</span>\n </div>\n }\n }\n }\n\n <ng-template\n [ngTemplateOutlet]=\"template?.templateRef\"\n [ngTemplateOutletContext]=\"{ $implicit: templateContext }\"\n >\n </ng-template>\n </div>\n }\n @case ('check') {\n <div\n class=\"po-item-list po-item-list__check\"\n [class.po-item-list__separator]=\"separator\"\n [class.po-item-list__selected]=\"selected && !disabled\"\n [class.po-item-list__disabled]=\"disabled\"\n [attr.aria-disabled]=\"disabled\"\n [attr.aria-label]=\"label\"\n (click)=\"onCheckboxItem()\"\n (keydown)=\"onCheckboxItemEmit($event)\"\n (keyup)=\"onCheckboxItemEmit($event)\"\n >\n <po-checkbox\n [p-disabled-tabindex]=\"true\"\n [p-checkboxValue]=\"checkboxValue === null ? 'mixed' : checkboxValue\"\n [p-disabled]=\"disabled\"\n [p-size]=\"size\"\n ></po-checkbox>\n @if (!template) {\n <span class=\"po-item-list__label\">{{ label }}</span>\n }\n <ng-template\n [ngTemplateOutlet]=\"template?.templateRef\"\n [ngTemplateOutletContext]=\"{ $implicit: templateContext }\"\n >\n </ng-template>\n </div>\n }\n }\n</ng-container>\n", dependencies: [{ kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: PoCheckboxComponent, selector: "po-checkbox" }, { kind: "component", type: PoIconComponent, selector: "po-icon", inputs: ["p-icon"] }] });
8035
8060
  }
8036
8061
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.7", ngImport: i0, type: PoItemListComponent, decorators: [{
8037
8062
  type: Component,
8038
- args: [{ selector: 'po-item-list', standalone: false, template: "<ng-container (keydown)=\"onCheckboxItemEmit($event)\">\n @switch (type) {\n @default {\n <div\n #itemList\n [class.po-item-list__separator]=\"separator\"\n [class.po-item-list__disabled]=\"disabled || !visible\"\n [class.po-item-list__selected]=\"(selected || activeTabs) && !disabled\"\n [class.po-item-list__hidden]=\"tabHide\"\n [attr.aria-disabled]=\"disabled || !visible\"\n [attr.aria-label]=\"label\"\n [class.po-item-list__danger]=\"danger\"\n class=\"po-item-list po-item-list__action\"\n >\n @if (icon) {\n <po-icon class=\"po-popup-icon-item\" [p-icon]=\"icon\"></po-icon>\n }\n <span class=\"po-item-list-label\">{{ label }}</span>\n </div>\n }\n @case ('option') {\n <div\n #itemList\n class=\"po-item-list po-item-list__option\"\n [class.po-item-list__separator]=\"separator\"\n [class.po-item-list__selected]=\"selected && !disabled\"\n [attr.aria-disabled]=\"disabled\"\n [attr.aria-label]=\"label\"\n (click)=\"onComboItem(item, $event)\"\n >\n @if (!template) {\n @switch (keysLabel.length) {\n @case (0) {\n <span class=\"po-item-list-label\" [innerHTML]=\"getLabelFormatted(label)\"></span>\n }\n\n @case (1) {\n <span class=\"po-item-list-label\">{{ item[keysLabel[0]] }}</span>\n }\n\n @case (2) {\n <div class=\"po-item-list-label po-item-list-label-group\">\n <span class=\"po-item-list-label\">{{ item[keysLabel[0]] }}</span>\n <span class=\"po-item-list-sublabel\">{{ item[keysLabel[1]] }}</span>\n </div>\n }\n\n @default {\n <div class=\"po-item-list-label po-item-list-label-group\">\n <span class=\"po-item-list-label\">{{ item[keysLabel[0]] }}</span>\n <span class=\"po-item-list-sublabel\">{{ item[keysLabel[1]] }} - {{ item[keysLabel[2]] }}</span>\n </div>\n }\n }\n }\n\n <ng-template\n [ngTemplateOutlet]=\"template?.templateRef\"\n [ngTemplateOutletContext]=\"{ $implicit: templateContext }\"\n >\n </ng-template>\n </div>\n }\n @case ('check') {\n <div\n class=\"po-item-list po-item-list__check\"\n [class.po-item-list__separator]=\"separator\"\n [class.po-item-list__selected]=\"selected && !disabled\"\n [class.po-item-list__disabled]=\"disabled\"\n [attr.aria-disabled]=\"disabled\"\n [attr.aria-label]=\"label\"\n (click)=\"onCheckboxItem()\"\n (keydown)=\"onCheckboxItemEmit($event)\"\n (keyup)=\"onCheckboxItemEmit($event)\"\n >\n <po-checkbox\n [p-disabled-tabindex]=\"true\"\n [p-checkboxValue]=\"checkboxValue === null ? 'mixed' : checkboxValue\"\n [p-disabled]=\"disabled\"\n [p-size]=\"size\"\n ></po-checkbox>\n @if (!template) {\n <span class=\"po-item-list__label\">{{ label }}</span>\n }\n <ng-template\n [ngTemplateOutlet]=\"template?.templateRef\"\n [ngTemplateOutletContext]=\"{ $implicit: templateContext }\"\n >\n </ng-template>\n </div>\n }\n }\n</ng-container>\n" }]
8063
+ args: [{ selector: 'po-item-list', standalone: false, template: "<ng-container (keydown)=\"onCheckboxItemEmit($event)\">\n @switch (type) {\n @default {\n <div\n #itemList\n [class.po-item-list__separator]=\"separator\"\n [class.po-item-list__disabled]=\"disabled || !visible\"\n [class.po-item-list__selected]=\"(selected || activeTabs) && !disabled\"\n [class.po-item-list__hidden]=\"tabHide\"\n [attr.aria-disabled]=\"disabled || !visible\"\n [attr.aria-label]=\"label\"\n [class.po-item-list__danger]=\"danger\"\n class=\"po-item-list po-item-list__action\"\n >\n @if (icon && iconPosition === 'left') {\n <po-icon\n class=\"po-popup-icon-item po-field-icon\"\n [class.po-field-icon-aa]=\"size === 'small'\"\n [p-icon]=\"icon\"\n ></po-icon>\n }\n <span class=\"po-item-list-label\">{{ label }}</span>\n\n @if (icon && iconPosition === 'right') {\n <po-icon class=\"po-popup-icon-item-right po-field-icon\" [p-icon]=\"icon\"></po-icon>\n }\n </div>\n }\n @case ('option') {\n <div\n #itemList\n class=\"po-item-list po-item-list__option\"\n [class.po-item-list__separator]=\"separator\"\n [class.po-item-list__selected]=\"selected && !disabled\"\n [attr.aria-disabled]=\"disabled\"\n [attr.aria-label]=\"label\"\n (click)=\"onComboItem(item, $event)\"\n >\n @if (!template) {\n @switch (keysLabel.length) {\n @case (0) {\n <span class=\"po-item-list-label\" [innerHTML]=\"getLabelFormatted(label)\"></span>\n }\n\n @case (1) {\n <span class=\"po-item-list-label\">{{ item[keysLabel[0]] }}</span>\n }\n\n @case (2) {\n <div class=\"po-item-list-label po-item-list-label-group\">\n <span class=\"po-item-list-label\">{{ item[keysLabel[0]] }}</span>\n <span class=\"po-item-list-sublabel\">{{ item[keysLabel[1]] }}</span>\n </div>\n }\n\n @default {\n <div class=\"po-item-list-label po-item-list-label-group\">\n <span class=\"po-item-list-label\">{{ item[keysLabel[0]] }}</span>\n <span class=\"po-item-list-sublabel\">{{ item[keysLabel[1]] }} - {{ item[keysLabel[2]] }}</span>\n </div>\n }\n }\n }\n\n <ng-template\n [ngTemplateOutlet]=\"template?.templateRef\"\n [ngTemplateOutletContext]=\"{ $implicit: templateContext }\"\n >\n </ng-template>\n </div>\n }\n @case ('check') {\n <div\n class=\"po-item-list po-item-list__check\"\n [class.po-item-list__separator]=\"separator\"\n [class.po-item-list__selected]=\"selected && !disabled\"\n [class.po-item-list__disabled]=\"disabled\"\n [attr.aria-disabled]=\"disabled\"\n [attr.aria-label]=\"label\"\n (click)=\"onCheckboxItem()\"\n (keydown)=\"onCheckboxItemEmit($event)\"\n (keyup)=\"onCheckboxItemEmit($event)\"\n >\n <po-checkbox\n [p-disabled-tabindex]=\"true\"\n [p-checkboxValue]=\"checkboxValue === null ? 'mixed' : checkboxValue\"\n [p-disabled]=\"disabled\"\n [p-size]=\"size\"\n ></po-checkbox>\n @if (!template) {\n <span class=\"po-item-list__label\">{{ label }}</span>\n }\n <ng-template\n [ngTemplateOutlet]=\"template?.templateRef\"\n [ngTemplateOutletContext]=\"{ $implicit: templateContext }\"\n >\n </ng-template>\n </div>\n }\n }\n</ng-container>\n" }]
8039
8064
  }], propDecorators: { itemList: [{
8040
8065
  type: ViewChild,
8041
8066
  args: ['itemList', { static: true }]
@@ -8142,27 +8167,50 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.7", ngImpor
8142
8167
 
8143
8168
  class PoListBoxComponent extends PoListBoxBaseComponent {
8144
8169
  element = inject(ElementRef);
8170
+ currentItems = [];
8171
+ currentGroup = null;
8172
+ navigationStack = [];
8145
8173
  renderer = inject(Renderer2);
8146
8174
  router = inject(Router);
8147
8175
  changeDetector = inject(ChangeDetectorRef);
8148
8176
  listbox;
8149
8177
  listboxItemList;
8178
+ listboxGroupHeader;
8150
8179
  searchElement;
8151
8180
  popupHeaderContainer;
8181
+ listboxItems;
8152
8182
  scrollEvent$;
8153
8183
  subscriptionScrollEvent;
8154
8184
  constructor() {
8155
8185
  const languageService = inject(PoLanguageService);
8156
8186
  super(languageService);
8157
8187
  }
8188
+ ngOnInit() {
8189
+ if (this.listboxSubitems) {
8190
+ this.currentItems = this.items;
8191
+ }
8192
+ }
8158
8193
  ngAfterViewInit() {
8159
8194
  this.setListBoxMaxHeight();
8195
+ this.setListBoxWidth();
8160
8196
  this.listboxItemList?.nativeElement.focus();
8197
+ if (this.listboxSubitems) {
8198
+ requestAnimationFrame(() => {
8199
+ const firstItem = this.listboxItems?.first.nativeElement;
8200
+ if (firstItem) {
8201
+ firstItem.focus();
8202
+ setTimeout(() => {
8203
+ firstItem.dispatchEvent(new FocusEvent('focus', { bubbles: true }));
8204
+ }, 0);
8205
+ }
8206
+ });
8207
+ }
8161
8208
  this.changeDetector.detectChanges();
8162
8209
  }
8163
8210
  ngOnChanges(changes) {
8164
8211
  if (changes?.items) {
8165
8212
  this.setListBoxMaxHeight();
8213
+ this.setListBoxWidth();
8166
8214
  }
8167
8215
  if (this.visible && this.infiniteScroll) {
8168
8216
  this.checkInfiniteScroll();
@@ -8173,7 +8221,55 @@ class PoListBoxComponent extends PoListBoxBaseComponent {
8173
8221
  this.subscriptionScrollEvent.unsubscribe();
8174
8222
  }
8175
8223
  }
8176
- onSelectItem(itemListAction) {
8224
+ openGroup(group, event) {
8225
+ event?.stopPropagation();
8226
+ this.navigationStack.push({
8227
+ group: this.currentGroup,
8228
+ items: this.currentItems
8229
+ });
8230
+ this.currentGroup = group;
8231
+ this.currentItems = group.subItems || [];
8232
+ requestAnimationFrame(() => {
8233
+ const firstItem = this.listboxGroupHeader?.nativeElement;
8234
+ if (firstItem) {
8235
+ firstItem.focus();
8236
+ setTimeout(() => {
8237
+ firstItem.dispatchEvent(new FocusEvent('focus', { bubbles: true }));
8238
+ }, 0);
8239
+ }
8240
+ });
8241
+ }
8242
+ goBack(event) {
8243
+ event?.stopPropagation();
8244
+ const previous = this.navigationStack.pop();
8245
+ if (previous) {
8246
+ this.currentGroup = previous.group;
8247
+ this.currentItems = previous.items;
8248
+ }
8249
+ else {
8250
+ this.currentGroup = null;
8251
+ this.currentItems = this.items;
8252
+ }
8253
+ this.clickItem.emit({ goBack: true });
8254
+ requestAnimationFrame(() => {
8255
+ const firstItem = this.listboxItems?.first?.nativeElement;
8256
+ if (firstItem) {
8257
+ firstItem.focus();
8258
+ setTimeout(() => {
8259
+ firstItem.dispatchEvent(new FocusEvent('focus', { bubbles: true }));
8260
+ }, 0);
8261
+ }
8262
+ });
8263
+ }
8264
+ onKeydownGoBack(event) {
8265
+ if (event.key === 'Enter') {
8266
+ this.goBack(event);
8267
+ }
8268
+ if (event?.code === 'Escape' || event.code === 'Tab') {
8269
+ this.closeEvent.emit();
8270
+ }
8271
+ }
8272
+ onSelectItem(itemListAction, event) {
8177
8273
  const isDisabled = itemListAction.hasOwnProperty('disabled') &&
8178
8274
  itemListAction.disabled !== null &&
8179
8275
  itemListAction.disabled !== undefined
@@ -8187,12 +8283,18 @@ class PoListBoxComponent extends PoListBoxBaseComponent {
8187
8283
  if (this.isTabs && !itemListAction.disabled && !itemListAction.hide) {
8188
8284
  this.onClickTabs(itemListAction);
8189
8285
  }
8190
- if (itemListAction && itemListAction.action && !isDisabled && isVisible) {
8286
+ if (itemListAction?.action && !isDisabled && isVisible) {
8191
8287
  itemListAction.action(this.param || itemListAction);
8192
8288
  }
8193
- if (itemListAction && itemListAction.url && !isDisabled && isVisible) {
8289
+ if (itemListAction?.url && !isDisabled && isVisible) {
8194
8290
  return this.openUrl(itemListAction.url);
8195
8291
  }
8292
+ if (itemListAction?.subItems?.length) {
8293
+ this.openGroup(itemListAction, event);
8294
+ }
8295
+ else if (this.listboxSubitems) {
8296
+ this.closeEvent.emit();
8297
+ }
8196
8298
  if (!isDisabled) {
8197
8299
  this.clickItem.emit(itemListAction);
8198
8300
  }
@@ -8203,7 +8305,7 @@ class PoListBoxComponent extends PoListBoxBaseComponent {
8203
8305
  }
8204
8306
  }
8205
8307
  onKeyDown(itemListAction, event) {
8206
- event.preventDefault();
8308
+ event?.preventDefault();
8207
8309
  if ((event && event.code === 'Enter') || event.code === 'Space') {
8208
8310
  if (itemListAction.type === 'footerAction') {
8209
8311
  this.handleFooterActionListbox();
@@ -8325,9 +8427,10 @@ class PoListBoxComponent extends PoListBoxBaseComponent {
8325
8427
  : itemListAction[property];
8326
8428
  }
8327
8429
  setListBoxMaxHeight() {
8430
+ const dropdownMaxHeight = 400;
8328
8431
  const itemsLength = this.items.length;
8329
8432
  const hasPopupHeaderContainer = this.popupHeaderContainer?.nativeElement?.children?.length > 0;
8330
- if (itemsLength > 6) {
8433
+ if (!this.listboxSubitems && itemsLength > 6) {
8331
8434
  if (this.type === 'check' && !this.hideSearch) {
8332
8435
  this.renderer.setStyle(this.listbox.nativeElement, 'maxHeight', `${44 * 6 - 44 / 3 + 60}px`);
8333
8436
  }
@@ -8339,6 +8442,17 @@ class PoListBoxComponent extends PoListBoxBaseComponent {
8339
8442
  this.renderer.setStyle(this.listbox.nativeElement, 'maxHeight', `${44 * 6 - 44 / 3}px`);
8340
8443
  }
8341
8444
  }
8445
+ if (this.listboxSubitems) {
8446
+ this.renderer.setStyle(this.listbox.nativeElement, 'maxHeight', `${dropdownMaxHeight}px`);
8447
+ }
8448
+ }
8449
+ setListBoxWidth() {
8450
+ const dropdownMinWidth = 240;
8451
+ const dropdownMaxWidth = 340;
8452
+ if (this.listboxSubitems && this.items) {
8453
+ this.renderer.setStyle(this.listbox.nativeElement, 'minWidth', `${dropdownMinWidth}px`);
8454
+ this.renderer.setStyle(this.listbox.nativeElement, 'maxWidth', `${dropdownMaxWidth}px`);
8455
+ }
8342
8456
  }
8343
8457
  openUrl(url) {
8344
8458
  if (isExternalLink(url)) {
@@ -8371,23 +8485,29 @@ class PoListBoxComponent extends PoListBoxBaseComponent {
8371
8485
  this.closeEvent.emit();
8372
8486
  }
8373
8487
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.7", ngImport: i0, type: PoListBoxComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
8374
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.7", type: PoListBoxComponent, isStandalone: false, selector: "po-listbox", viewQueries: [{ propertyName: "listbox", first: true, predicate: ["listbox"], descendants: true, static: true }, { propertyName: "listboxItemList", first: true, predicate: ["listboxItemList"], descendants: true }, { propertyName: "searchElement", first: true, predicate: ["searchElement"], descendants: true }, { propertyName: "popupHeaderContainer", first: true, predicate: ["popupHeaderContainer"], descendants: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div\n #listbox\n class=\"po-listbox\"\n [class.po-listbox-check]=\"type === 'check' || type === 'option'\"\n [attr.data-type]=\"type\"\n [attr.p-size]=\"size\"\n [hidden]=\"visible\"\n>\n <div #popupHeaderContainer>\n <ng-content select=\"[p-popup-header-template]\"></ng-content>\n </div>\n\n @if (!hideSearch && type === 'check') {\n <po-search-list\n #searchElement\n (p-change)=\"callChangeSearch($event)\"\n [p-literals]=\"literalSearch\"\n [p-field-value]=\"fieldValueSearch\"\n [p-placeholder]=\"placeholderSearch\"\n [p-size]=\"size\"\n ></po-search-list>\n }\n\n @if (checkTemplate()) {\n <ul #listboxItemList cdkListbox [cdkListboxMultiple]=\"type === 'check'\" class=\"po-listbox-list\">\n @if (type === 'check' && items.length && !searchElement?.inputValue && !hideSelectAll) {\n <li\n cdkOption=\"selectAll\"\n [attr.aria-checked]=\"checkboxAllValue === null ? 'mixed' : checkboxAllValue\"\n class=\"po-listbox-item-type-check\"\n (click)=\"changeAll.emit()\"\n (keydown)=\"changeAllEmit($event)\"\n (keydown)=\"onSelectAllCheckboxKeyDown($event)\"\n >\n <po-item-list\n [p-selected]=\"checkboxAllValue\"\n p-type=\"check\"\n [p-label]=\"literals.selectAll\"\n p-value=\"selectAll\"\n [p-checkbox-value]=\"checkboxAllValue\"\n [p-size]=\"size\"\n >\n </po-item-list>\n </li>\n }\n @for (item of items; track item) {\n <li\n [class.po-listbox-item]=\"visible\"\n [class.po-listbox-item-type-check]=\"type === 'check'\"\n [cdkOption]=\"item[fieldLabel]\"\n [cdkOptionDisabled]=\"\n returnBooleanValue(item, 'disabled') || returnBooleanValue(item, 'visible') === false || item.options\n \"\n [attr.aria-selected]=\"isSelectedItem(item) || item.selected\"\n (click)=\"onSelectItem(item)\"\n (keydown)=\"onKeyDown(item, $event)\"\n >\n @if (item.options) {\n <label class=\"po-combo-item-title\">\n {{ item.label }}\n </label>\n }\n @if (returnBooleanValue(item, 'visible') !== false && !item.options) {\n <po-item-list\n [p-disabled]=\"returnBooleanValue(item, 'disabled')\"\n [p-visible]=\"returnBooleanValue(item, 'visible')\"\n [p-checkbox-value]=\"isSelectedItem(item)\"\n [attr.data-item-list]=\"formatItemList(item)\"\n [p-label]=\"item[fieldLabel]\"\n [p-value]=\"item[fieldValue]\"\n [p-selected]=\"isSelectedItem(item) || item.selected\"\n [p-active-tabs]=\"item.active\"\n [p-separator]=\"item.separator || separator\"\n [p-danger]=\"item.danger || item.type === 'danger'\"\n [p-icon]=\"item.icon\"\n [p-type]=\"type\"\n [p-item]=\"item\"\n [p-tab-hide]=\"item.hide\"\n [p-is-tabs]=\"isTabs\"\n [p-field-value]=\"fieldValue\"\n [p-field-label]=\"fieldLabel\"\n [p-template]=\"template\"\n [p-template-context]=\"item\"\n (p-selectcheckbox-item)=\"checkboxClicked($event)\"\n (p-selectcombo-item)=\"optionClicked(item)\"\n (p-emit-item-tabs)=\"onSelectTabs($event)\"\n (p-activated-tabs)=\"onActivatedTabs($event)\"\n [p-search-value]=\"searchValue\"\n [p-filter-mode]=\"filterMode\"\n [p-filtering]=\"isFiltering\"\n [p-size]=\"size\"\n [p-should-mark-letter]=\"shouldMarkLetters\"\n [p-compare-cache]=\"compareCache\"\n [p-combo-service]=\"comboService\"\n [p-keys-label]=\"keysLabel\"\n ></po-item-list>\n }\n </li>\n }\n\n @if (footerActionListbox) {\n @if (placeholderListbox) {\n <div class=\"po-item-list\" aria-hidden=\"true\">\n <span>{{ placeholderListbox }}</span>\n </div>\n }\n\n @if (!placeholderListbox && !items.length) {\n <div class=\"po-item-list\" aria-hidden=\"true\">\n <span>{{ literals.noItems }}</span>\n </div>\n }\n\n <li\n class=\"po-listbox-item\"\n (click)=\"handleFooterActionListbox()\"\n (keydown)=\"onKeyDown({ type: 'footerAction' }, $event)\"\n cdkOption=\"footerActionListbox\"\n >\n <po-item-list [p-label]=\"literals.footerActionListbox\" p-separator [p-size]=\"size\" />\n </li>\n }\n </ul>\n } @else {\n @if (!items.length && !isServerSearching && type !== 'action' && !footerActionListbox) {\n <div class=\"po-listbox-container-no-data po-text-center\">\n <span> {{ literals.noItems }}</span>\n </div>\n }\n }\n\n @if (isServerSearching && type !== 'action') {\n <div [class.po-listbox-container-loading-default]=\"!infiniteLoading\">\n <po-loading-overlay [p-size]=\"getSizeLoading()\" [p-text]=\"getTextLoading()\"></po-loading-overlay>\n </div>\n }\n</div>\n", dependencies: [{ kind: "component", type: PoLoadingOverlayComponent, selector: "po-loading-overlay" }, { kind: "directive", type: i2$2.CdkListbox, selector: "[cdkListbox]", inputs: ["id", "tabindex", "cdkListboxValue", "cdkListboxMultiple", "cdkListboxDisabled", "cdkListboxUseActiveDescendant", "cdkListboxOrientation", "cdkListboxCompareWith", "cdkListboxNavigationWrapDisabled", "cdkListboxNavigatesDisabledOptions"], outputs: ["cdkListboxValueChange"], exportAs: ["cdkListbox"] }, { kind: "directive", type: i2$2.CdkOption, selector: "[cdkOption]", inputs: ["id", "cdkOption", "cdkOptionTypeaheadLabel", "cdkOptionDisabled", "tabindex"], exportAs: ["cdkOption"] }, { kind: "component", type: PoItemListComponent, selector: "po-item-list" }, { kind: "component", type: PoSearchListComponent, selector: "po-search-list", inputs: ["p-literals", "p-field-value", "p-size", "p-placeholder"], outputs: ["p-change"] }] });
8488
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.7", type: PoListBoxComponent, isStandalone: false, selector: "po-listbox", viewQueries: [{ propertyName: "listbox", first: true, predicate: ["listbox"], descendants: true, static: true }, { propertyName: "listboxItemList", first: true, predicate: ["listboxItemList"], descendants: true }, { propertyName: "listboxGroupHeader", first: true, predicate: ["listboxGroupHeader"], descendants: true }, { propertyName: "searchElement", first: true, predicate: ["searchElement"], descendants: true }, { propertyName: "popupHeaderContainer", first: true, predicate: ["popupHeaderContainer"], descendants: true }, { propertyName: "listboxItems", predicate: ["listboxItem"], descendants: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div\n #listbox\n class=\"po-listbox\"\n [class.po-listbox-check]=\"type === 'check' || type === 'option'\"\n [attr.data-type]=\"type\"\n [attr.p-size]=\"size\"\n [hidden]=\"visible\"\n>\n <div #popupHeaderContainer>\n <ng-content select=\"[p-popup-header-template]\"></ng-content>\n </div>\n\n @if (!hideSearch && type === 'check') {\n <po-search-list\n #searchElement\n (p-change)=\"callChangeSearch($event)\"\n [p-literals]=\"literalSearch\"\n [p-field-value]=\"fieldValueSearch\"\n [p-placeholder]=\"placeholderSearch\"\n [p-size]=\"size\"\n ></po-search-list>\n }\n\n @if (checkTemplate() && !listboxSubitems) {\n <ul #listboxItemList cdkListbox [cdkListboxMultiple]=\"type === 'check'\" class=\"po-listbox-list\">\n @if (type === 'check' && items.length && !searchElement?.inputValue && !hideSelectAll) {\n <li\n cdkOption=\"selectAll\"\n [attr.aria-checked]=\"checkboxAllValue === null ? 'mixed' : checkboxAllValue\"\n class=\"po-listbox-item-type-check\"\n (click)=\"changeAll.emit()\"\n (keydown)=\"changeAllEmit($event)\"\n (keydown)=\"onSelectAllCheckboxKeyDown($event)\"\n >\n <po-item-list\n [p-selected]=\"checkboxAllValue\"\n p-type=\"check\"\n [p-label]=\"literals.selectAll\"\n p-value=\"selectAll\"\n [p-checkbox-value]=\"checkboxAllValue\"\n [p-size]=\"size\"\n >\n </po-item-list>\n </li>\n }\n @for (item of items; track item) {\n <li\n [class.po-listbox-item]=\"visible\"\n [class.po-listbox-item-type-check]=\"type === 'check'\"\n [cdkOption]=\"item[fieldLabel]\"\n [cdkOptionDisabled]=\"\n returnBooleanValue(item, 'disabled') || returnBooleanValue(item, 'visible') === false || item.options\n \"\n [attr.aria-selected]=\"isSelectedItem(item) || item.selected\"\n (click)=\"onSelectItem(item)\"\n (keydown)=\"onKeyDown(item, $event)\"\n >\n @if (item.options) {\n <label class=\"po-combo-item-title\">\n {{ item.label }}\n </label>\n }\n @if (returnBooleanValue(item, 'visible') !== false) {\n <po-item-list\n [p-disabled]=\"returnBooleanValue(item, 'disabled')\"\n [p-visible]=\"returnBooleanValue(item, 'visible')\"\n [p-checkbox-value]=\"isSelectedItem(item)\"\n [attr.data-item-list]=\"formatItemList(item)\"\n [p-label]=\"item[fieldLabel]\"\n [p-value]=\"item[fieldValue]\"\n [p-selected]=\"isSelectedItem(item) || item.selected\"\n [p-active-tabs]=\"item.active\"\n [p-separator]=\"item.separator || separator\"\n [p-danger]=\"item.danger || item.type === 'danger'\"\n [p-icon]=\"item.icon\"\n [p-type]=\"type\"\n [p-item]=\"item\"\n [p-tab-hide]=\"item.hide\"\n [p-is-tabs]=\"isTabs\"\n [p-field-value]=\"fieldValue\"\n [p-field-label]=\"fieldLabel\"\n [p-template]=\"template\"\n [p-template-context]=\"item\"\n (p-selectcheckbox-item)=\"checkboxClicked($event)\"\n (p-selectcombo-item)=\"optionClicked(item)\"\n (p-emit-item-tabs)=\"onSelectTabs($event)\"\n (p-activated-tabs)=\"onActivatedTabs($event)\"\n [p-search-value]=\"searchValue\"\n [p-filter-mode]=\"filterMode\"\n [p-filtering]=\"isFiltering\"\n [p-size]=\"size\"\n [p-should-mark-letter]=\"shouldMarkLetters\"\n [p-compare-cache]=\"compareCache\"\n [p-combo-service]=\"comboService\"\n [p-keys-label]=\"keysLabel\"\n ></po-item-list>\n }\n </li>\n }\n\n @if (footerActionListbox) {\n @if (placeholderListbox) {\n <div class=\"po-item-list\" aria-hidden=\"true\">\n <span>{{ placeholderListbox }}</span>\n </div>\n }\n\n @if (!placeholderListbox && !items.length) {\n <div class=\"po-item-list\" aria-hidden=\"true\">\n <span>{{ literals.noItems }}</span>\n </div>\n }\n\n <li\n class=\"po-listbox-item\"\n (click)=\"handleFooterActionListbox()\"\n (keydown)=\"onKeyDown({ type: 'footerAction' }, $event)\"\n cdkOption=\"footerActionListbox\"\n >\n <po-item-list [p-label]=\"literals.footerActionListbox\" p-separator [p-size]=\"size\" />\n </li>\n }\n </ul>\n } @else {\n @if (!items.length && !isServerSearching && type !== 'action' && !footerActionListbox) {\n <div class=\"po-listbox-container-no-data po-text-center\">\n <span> {{ literals.noItems }}</span>\n </div>\n }\n }\n\n @if (listboxSubitems) {\n <ul cdkListbox class=\"po-listbox-list po-listbox-dropdown\">\n @if (!currentGroup) {\n @for (item of currentItems; track item) {\n <li\n #listboxItem\n [class.po-listbox-item]=\"visible\"\n [cdkOption]=\"item[fieldLabel]\"\n [cdkOptionDisabled]=\"returnBooleanValue(item, 'disabled') || returnBooleanValue(item, 'visible') === false\"\n [attr.aria-selected]=\"isSelectedItem(item) || item.selected\"\n (click)=\"onSelectItem(item, $event)\"\n (keydown)=\"onKeyDown(item, $event)\"\n >\n @if (item.subItems?.length) {\n <po-item-list\n [p-label]=\"item.label\"\n [p-item]=\"item\"\n [p-separator]=\"item.separator || separator\"\n [p-icon]=\"'po-icon-arrow-right'\"\n [p-icon-position]=\"'right'\"\n >\n </po-item-list>\n } @else if (!item.subItems?.length && returnBooleanValue(item, 'visible') !== false) {\n <po-item-list\n class=\"po-listbox-item-sub\"\n [p-disabled]=\"returnBooleanValue(item, 'disabled')\"\n [p-visible]=\"returnBooleanValue(item, 'visible')\"\n [p-label]=\"item[fieldLabel]\"\n [p-item]=\"item\"\n [p-icon]=\"item.icon\"\n [p-separator]=\"item.separator || separator\"\n [p-danger]=\"item.type === 'danger'\"\n [p-selected]=\"isSelectedItem(item) || item.selected\"\n >\n </po-item-list>\n }\n </li>\n }\n }\n\n @if (currentGroup) {\n <li\n #listboxGroupHeader\n class=\"po-listbox-group-header\"\n [cdkOption]=\"'back-option'\"\n [attr.aria-label]=\"literals?.backToPreviousGroup\"\n (click)=\"goBack($event)\"\n (keydown)=\"onKeydownGoBack($event)\"\n >\n <po-icon class=\"po-field-icon\" [p-icon]=\"'po-icon-arrow-left'\"></po-icon>\n <po-tag [p-value]=\"currentGroup.label\"></po-tag>\n </li>\n\n @for (subItem of currentItems; track subItem.label) {\n @if (subItem.subItems?.length) {\n <li\n [cdkOption]=\"subItem[fieldLabel]\"\n (click)=\"onSelectItem(subItem, $event)\"\n (keydown)=\"onKeyDown(subItem, $event)\"\n >\n <po-item-list\n [p-label]=\"subItem.label\"\n [p-item]=\"subItem\"\n [p-separator]=\"subItem.separator || separator\"\n [p-icon]=\"'po-icon-arrow-right'\"\n [p-icon-position]=\"'right'\"\n >\n </po-item-list>\n </li>\n } @else if (!subItem.subItems?.length && returnBooleanValue(subItem, 'visible') !== false) {\n <li\n [cdkOption]=\"subItem[fieldLabel]\"\n (click)=\"onSelectItem(subItem, $event)\"\n (keydown)=\"onKeyDown(subItem, $event)\"\n >\n <po-item-list\n class=\"po-listbox-item-sub\"\n [p-disabled]=\"returnBooleanValue(subItem, 'disabled')\"\n [p-visible]=\"returnBooleanValue(subItem, 'visible')\"\n [p-label]=\"subItem[fieldLabel]\"\n [p-item]=\"subItem\"\n [p-icon]=\"subItem.icon\"\n [p-separator]=\"subItem.separator || separator\"\n [p-danger]=\"subItem.type === 'danger'\"\n [p-selected]=\"isSelectedItem(subItem) || subItem.selected\"\n >\n </po-item-list>\n </li>\n }\n }\n }\n </ul>\n }\n\n @if (isServerSearching && type !== 'action') {\n <div [class.po-listbox-container-loading-default]=\"!infiniteLoading\">\n <po-loading-overlay [p-size]=\"getSizeLoading()\" [p-text]=\"getTextLoading()\"></po-loading-overlay>\n </div>\n }\n</div>\n", dependencies: [{ kind: "component", type: PoIconComponent, selector: "po-icon", inputs: ["p-icon"] }, { kind: "component", type: PoLoadingOverlayComponent, selector: "po-loading-overlay" }, { kind: "component", type: PoTagComponent, selector: "po-tag" }, { kind: "directive", type: i4.CdkListbox, selector: "[cdkListbox]", inputs: ["id", "tabindex", "cdkListboxValue", "cdkListboxMultiple", "cdkListboxDisabled", "cdkListboxUseActiveDescendant", "cdkListboxOrientation", "cdkListboxCompareWith", "cdkListboxNavigationWrapDisabled", "cdkListboxNavigatesDisabledOptions"], outputs: ["cdkListboxValueChange"], exportAs: ["cdkListbox"] }, { kind: "directive", type: i4.CdkOption, selector: "[cdkOption]", inputs: ["id", "cdkOption", "cdkOptionTypeaheadLabel", "cdkOptionDisabled", "tabindex"], exportAs: ["cdkOption"] }, { kind: "component", type: PoItemListComponent, selector: "po-item-list" }, { kind: "component", type: PoSearchListComponent, selector: "po-search-list", inputs: ["p-literals", "p-field-value", "p-size", "p-placeholder"], outputs: ["p-change"] }] });
8375
8489
  }
8376
8490
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.7", ngImport: i0, type: PoListBoxComponent, decorators: [{
8377
8491
  type: Component,
8378
- args: [{ selector: 'po-listbox', standalone: false, template: "<div\n #listbox\n class=\"po-listbox\"\n [class.po-listbox-check]=\"type === 'check' || type === 'option'\"\n [attr.data-type]=\"type\"\n [attr.p-size]=\"size\"\n [hidden]=\"visible\"\n>\n <div #popupHeaderContainer>\n <ng-content select=\"[p-popup-header-template]\"></ng-content>\n </div>\n\n @if (!hideSearch && type === 'check') {\n <po-search-list\n #searchElement\n (p-change)=\"callChangeSearch($event)\"\n [p-literals]=\"literalSearch\"\n [p-field-value]=\"fieldValueSearch\"\n [p-placeholder]=\"placeholderSearch\"\n [p-size]=\"size\"\n ></po-search-list>\n }\n\n @if (checkTemplate()) {\n <ul #listboxItemList cdkListbox [cdkListboxMultiple]=\"type === 'check'\" class=\"po-listbox-list\">\n @if (type === 'check' && items.length && !searchElement?.inputValue && !hideSelectAll) {\n <li\n cdkOption=\"selectAll\"\n [attr.aria-checked]=\"checkboxAllValue === null ? 'mixed' : checkboxAllValue\"\n class=\"po-listbox-item-type-check\"\n (click)=\"changeAll.emit()\"\n (keydown)=\"changeAllEmit($event)\"\n (keydown)=\"onSelectAllCheckboxKeyDown($event)\"\n >\n <po-item-list\n [p-selected]=\"checkboxAllValue\"\n p-type=\"check\"\n [p-label]=\"literals.selectAll\"\n p-value=\"selectAll\"\n [p-checkbox-value]=\"checkboxAllValue\"\n [p-size]=\"size\"\n >\n </po-item-list>\n </li>\n }\n @for (item of items; track item) {\n <li\n [class.po-listbox-item]=\"visible\"\n [class.po-listbox-item-type-check]=\"type === 'check'\"\n [cdkOption]=\"item[fieldLabel]\"\n [cdkOptionDisabled]=\"\n returnBooleanValue(item, 'disabled') || returnBooleanValue(item, 'visible') === false || item.options\n \"\n [attr.aria-selected]=\"isSelectedItem(item) || item.selected\"\n (click)=\"onSelectItem(item)\"\n (keydown)=\"onKeyDown(item, $event)\"\n >\n @if (item.options) {\n <label class=\"po-combo-item-title\">\n {{ item.label }}\n </label>\n }\n @if (returnBooleanValue(item, 'visible') !== false && !item.options) {\n <po-item-list\n [p-disabled]=\"returnBooleanValue(item, 'disabled')\"\n [p-visible]=\"returnBooleanValue(item, 'visible')\"\n [p-checkbox-value]=\"isSelectedItem(item)\"\n [attr.data-item-list]=\"formatItemList(item)\"\n [p-label]=\"item[fieldLabel]\"\n [p-value]=\"item[fieldValue]\"\n [p-selected]=\"isSelectedItem(item) || item.selected\"\n [p-active-tabs]=\"item.active\"\n [p-separator]=\"item.separator || separator\"\n [p-danger]=\"item.danger || item.type === 'danger'\"\n [p-icon]=\"item.icon\"\n [p-type]=\"type\"\n [p-item]=\"item\"\n [p-tab-hide]=\"item.hide\"\n [p-is-tabs]=\"isTabs\"\n [p-field-value]=\"fieldValue\"\n [p-field-label]=\"fieldLabel\"\n [p-template]=\"template\"\n [p-template-context]=\"item\"\n (p-selectcheckbox-item)=\"checkboxClicked($event)\"\n (p-selectcombo-item)=\"optionClicked(item)\"\n (p-emit-item-tabs)=\"onSelectTabs($event)\"\n (p-activated-tabs)=\"onActivatedTabs($event)\"\n [p-search-value]=\"searchValue\"\n [p-filter-mode]=\"filterMode\"\n [p-filtering]=\"isFiltering\"\n [p-size]=\"size\"\n [p-should-mark-letter]=\"shouldMarkLetters\"\n [p-compare-cache]=\"compareCache\"\n [p-combo-service]=\"comboService\"\n [p-keys-label]=\"keysLabel\"\n ></po-item-list>\n }\n </li>\n }\n\n @if (footerActionListbox) {\n @if (placeholderListbox) {\n <div class=\"po-item-list\" aria-hidden=\"true\">\n <span>{{ placeholderListbox }}</span>\n </div>\n }\n\n @if (!placeholderListbox && !items.length) {\n <div class=\"po-item-list\" aria-hidden=\"true\">\n <span>{{ literals.noItems }}</span>\n </div>\n }\n\n <li\n class=\"po-listbox-item\"\n (click)=\"handleFooterActionListbox()\"\n (keydown)=\"onKeyDown({ type: 'footerAction' }, $event)\"\n cdkOption=\"footerActionListbox\"\n >\n <po-item-list [p-label]=\"literals.footerActionListbox\" p-separator [p-size]=\"size\" />\n </li>\n }\n </ul>\n } @else {\n @if (!items.length && !isServerSearching && type !== 'action' && !footerActionListbox) {\n <div class=\"po-listbox-container-no-data po-text-center\">\n <span> {{ literals.noItems }}</span>\n </div>\n }\n }\n\n @if (isServerSearching && type !== 'action') {\n <div [class.po-listbox-container-loading-default]=\"!infiniteLoading\">\n <po-loading-overlay [p-size]=\"getSizeLoading()\" [p-text]=\"getTextLoading()\"></po-loading-overlay>\n </div>\n }\n</div>\n" }]
8492
+ args: [{ selector: 'po-listbox', standalone: false, template: "<div\n #listbox\n class=\"po-listbox\"\n [class.po-listbox-check]=\"type === 'check' || type === 'option'\"\n [attr.data-type]=\"type\"\n [attr.p-size]=\"size\"\n [hidden]=\"visible\"\n>\n <div #popupHeaderContainer>\n <ng-content select=\"[p-popup-header-template]\"></ng-content>\n </div>\n\n @if (!hideSearch && type === 'check') {\n <po-search-list\n #searchElement\n (p-change)=\"callChangeSearch($event)\"\n [p-literals]=\"literalSearch\"\n [p-field-value]=\"fieldValueSearch\"\n [p-placeholder]=\"placeholderSearch\"\n [p-size]=\"size\"\n ></po-search-list>\n }\n\n @if (checkTemplate() && !listboxSubitems) {\n <ul #listboxItemList cdkListbox [cdkListboxMultiple]=\"type === 'check'\" class=\"po-listbox-list\">\n @if (type === 'check' && items.length && !searchElement?.inputValue && !hideSelectAll) {\n <li\n cdkOption=\"selectAll\"\n [attr.aria-checked]=\"checkboxAllValue === null ? 'mixed' : checkboxAllValue\"\n class=\"po-listbox-item-type-check\"\n (click)=\"changeAll.emit()\"\n (keydown)=\"changeAllEmit($event)\"\n (keydown)=\"onSelectAllCheckboxKeyDown($event)\"\n >\n <po-item-list\n [p-selected]=\"checkboxAllValue\"\n p-type=\"check\"\n [p-label]=\"literals.selectAll\"\n p-value=\"selectAll\"\n [p-checkbox-value]=\"checkboxAllValue\"\n [p-size]=\"size\"\n >\n </po-item-list>\n </li>\n }\n @for (item of items; track item) {\n <li\n [class.po-listbox-item]=\"visible\"\n [class.po-listbox-item-type-check]=\"type === 'check'\"\n [cdkOption]=\"item[fieldLabel]\"\n [cdkOptionDisabled]=\"\n returnBooleanValue(item, 'disabled') || returnBooleanValue(item, 'visible') === false || item.options\n \"\n [attr.aria-selected]=\"isSelectedItem(item) || item.selected\"\n (click)=\"onSelectItem(item)\"\n (keydown)=\"onKeyDown(item, $event)\"\n >\n @if (item.options) {\n <label class=\"po-combo-item-title\">\n {{ item.label }}\n </label>\n }\n @if (returnBooleanValue(item, 'visible') !== false) {\n <po-item-list\n [p-disabled]=\"returnBooleanValue(item, 'disabled')\"\n [p-visible]=\"returnBooleanValue(item, 'visible')\"\n [p-checkbox-value]=\"isSelectedItem(item)\"\n [attr.data-item-list]=\"formatItemList(item)\"\n [p-label]=\"item[fieldLabel]\"\n [p-value]=\"item[fieldValue]\"\n [p-selected]=\"isSelectedItem(item) || item.selected\"\n [p-active-tabs]=\"item.active\"\n [p-separator]=\"item.separator || separator\"\n [p-danger]=\"item.danger || item.type === 'danger'\"\n [p-icon]=\"item.icon\"\n [p-type]=\"type\"\n [p-item]=\"item\"\n [p-tab-hide]=\"item.hide\"\n [p-is-tabs]=\"isTabs\"\n [p-field-value]=\"fieldValue\"\n [p-field-label]=\"fieldLabel\"\n [p-template]=\"template\"\n [p-template-context]=\"item\"\n (p-selectcheckbox-item)=\"checkboxClicked($event)\"\n (p-selectcombo-item)=\"optionClicked(item)\"\n (p-emit-item-tabs)=\"onSelectTabs($event)\"\n (p-activated-tabs)=\"onActivatedTabs($event)\"\n [p-search-value]=\"searchValue\"\n [p-filter-mode]=\"filterMode\"\n [p-filtering]=\"isFiltering\"\n [p-size]=\"size\"\n [p-should-mark-letter]=\"shouldMarkLetters\"\n [p-compare-cache]=\"compareCache\"\n [p-combo-service]=\"comboService\"\n [p-keys-label]=\"keysLabel\"\n ></po-item-list>\n }\n </li>\n }\n\n @if (footerActionListbox) {\n @if (placeholderListbox) {\n <div class=\"po-item-list\" aria-hidden=\"true\">\n <span>{{ placeholderListbox }}</span>\n </div>\n }\n\n @if (!placeholderListbox && !items.length) {\n <div class=\"po-item-list\" aria-hidden=\"true\">\n <span>{{ literals.noItems }}</span>\n </div>\n }\n\n <li\n class=\"po-listbox-item\"\n (click)=\"handleFooterActionListbox()\"\n (keydown)=\"onKeyDown({ type: 'footerAction' }, $event)\"\n cdkOption=\"footerActionListbox\"\n >\n <po-item-list [p-label]=\"literals.footerActionListbox\" p-separator [p-size]=\"size\" />\n </li>\n }\n </ul>\n } @else {\n @if (!items.length && !isServerSearching && type !== 'action' && !footerActionListbox) {\n <div class=\"po-listbox-container-no-data po-text-center\">\n <span> {{ literals.noItems }}</span>\n </div>\n }\n }\n\n @if (listboxSubitems) {\n <ul cdkListbox class=\"po-listbox-list po-listbox-dropdown\">\n @if (!currentGroup) {\n @for (item of currentItems; track item) {\n <li\n #listboxItem\n [class.po-listbox-item]=\"visible\"\n [cdkOption]=\"item[fieldLabel]\"\n [cdkOptionDisabled]=\"returnBooleanValue(item, 'disabled') || returnBooleanValue(item, 'visible') === false\"\n [attr.aria-selected]=\"isSelectedItem(item) || item.selected\"\n (click)=\"onSelectItem(item, $event)\"\n (keydown)=\"onKeyDown(item, $event)\"\n >\n @if (item.subItems?.length) {\n <po-item-list\n [p-label]=\"item.label\"\n [p-item]=\"item\"\n [p-separator]=\"item.separator || separator\"\n [p-icon]=\"'po-icon-arrow-right'\"\n [p-icon-position]=\"'right'\"\n >\n </po-item-list>\n } @else if (!item.subItems?.length && returnBooleanValue(item, 'visible') !== false) {\n <po-item-list\n class=\"po-listbox-item-sub\"\n [p-disabled]=\"returnBooleanValue(item, 'disabled')\"\n [p-visible]=\"returnBooleanValue(item, 'visible')\"\n [p-label]=\"item[fieldLabel]\"\n [p-item]=\"item\"\n [p-icon]=\"item.icon\"\n [p-separator]=\"item.separator || separator\"\n [p-danger]=\"item.type === 'danger'\"\n [p-selected]=\"isSelectedItem(item) || item.selected\"\n >\n </po-item-list>\n }\n </li>\n }\n }\n\n @if (currentGroup) {\n <li\n #listboxGroupHeader\n class=\"po-listbox-group-header\"\n [cdkOption]=\"'back-option'\"\n [attr.aria-label]=\"literals?.backToPreviousGroup\"\n (click)=\"goBack($event)\"\n (keydown)=\"onKeydownGoBack($event)\"\n >\n <po-icon class=\"po-field-icon\" [p-icon]=\"'po-icon-arrow-left'\"></po-icon>\n <po-tag [p-value]=\"currentGroup.label\"></po-tag>\n </li>\n\n @for (subItem of currentItems; track subItem.label) {\n @if (subItem.subItems?.length) {\n <li\n [cdkOption]=\"subItem[fieldLabel]\"\n (click)=\"onSelectItem(subItem, $event)\"\n (keydown)=\"onKeyDown(subItem, $event)\"\n >\n <po-item-list\n [p-label]=\"subItem.label\"\n [p-item]=\"subItem\"\n [p-separator]=\"subItem.separator || separator\"\n [p-icon]=\"'po-icon-arrow-right'\"\n [p-icon-position]=\"'right'\"\n >\n </po-item-list>\n </li>\n } @else if (!subItem.subItems?.length && returnBooleanValue(subItem, 'visible') !== false) {\n <li\n [cdkOption]=\"subItem[fieldLabel]\"\n (click)=\"onSelectItem(subItem, $event)\"\n (keydown)=\"onKeyDown(subItem, $event)\"\n >\n <po-item-list\n class=\"po-listbox-item-sub\"\n [p-disabled]=\"returnBooleanValue(subItem, 'disabled')\"\n [p-visible]=\"returnBooleanValue(subItem, 'visible')\"\n [p-label]=\"subItem[fieldLabel]\"\n [p-item]=\"subItem\"\n [p-icon]=\"subItem.icon\"\n [p-separator]=\"subItem.separator || separator\"\n [p-danger]=\"subItem.type === 'danger'\"\n [p-selected]=\"isSelectedItem(subItem) || subItem.selected\"\n >\n </po-item-list>\n </li>\n }\n }\n }\n </ul>\n }\n\n @if (isServerSearching && type !== 'action') {\n <div [class.po-listbox-container-loading-default]=\"!infiniteLoading\">\n <po-loading-overlay [p-size]=\"getSizeLoading()\" [p-text]=\"getTextLoading()\"></po-loading-overlay>\n </div>\n }\n</div>\n" }]
8379
8493
  }], ctorParameters: () => [], propDecorators: { listbox: [{
8380
8494
  type: ViewChild,
8381
8495
  args: ['listbox', { static: true }]
8382
8496
  }], listboxItemList: [{
8383
8497
  type: ViewChild,
8384
8498
  args: ['listboxItemList', { static: false }]
8499
+ }], listboxGroupHeader: [{
8500
+ type: ViewChild,
8501
+ args: ['listboxGroupHeader']
8385
8502
  }], searchElement: [{
8386
8503
  type: ViewChild,
8387
8504
  args: ['searchElement']
8388
8505
  }], popupHeaderContainer: [{
8389
8506
  type: ViewChild,
8390
8507
  args: ['popupHeaderContainer']
8508
+ }], listboxItems: [{
8509
+ type: ViewChildren,
8510
+ args: ['listboxItem']
8391
8511
  }] } });
8392
8512
 
8393
8513
  /**
@@ -8433,11 +8553,11 @@ class PoPopupComponent extends PoPopupBaseComponent {
8433
8553
  }
8434
8554
  onActionClick(popupAction) {
8435
8555
  const actionNoDisabled = popupAction && !this.returnBooleanValue(popupAction, 'disabled');
8436
- if (popupAction && popupAction.action && actionNoDisabled) {
8556
+ if (popupAction?.action && actionNoDisabled) {
8437
8557
  this.close();
8438
8558
  popupAction.action(this.param || popupAction);
8439
8559
  }
8440
- if (popupAction && popupAction.url && actionNoDisabled) {
8560
+ if (popupAction?.url && actionNoDisabled) {
8441
8561
  this.close();
8442
8562
  return this.openUrl(popupAction.url);
8443
8563
  }
@@ -8470,7 +8590,13 @@ class PoPopupComponent extends PoPopupBaseComponent {
8470
8590
  this.showPopup && this.oldTarget === this.target ? this.close() : this.open(param);
8471
8591
  }
8472
8592
  onClickItem(item) {
8473
- this.clickItem.emit(item);
8593
+ if (!item.goBack) {
8594
+ this.clickItem.emit(item);
8595
+ }
8596
+ if (item.subItems || item.goBack) {
8597
+ this.changeDetector.detectChanges();
8598
+ this.validateInitialContent();
8599
+ }
8474
8600
  }
8475
8601
  checkAllActionIsInvisible() {
8476
8602
  if (this.actions.every(item => item.visible === false)) {
@@ -8550,11 +8676,11 @@ class PoPopupComponent extends PoPopupBaseComponent {
8550
8676
  }
8551
8677
  }
8552
8678
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.7", ngImport: i0, type: PoPopupComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
8553
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.7", type: PoPopupComponent, isStandalone: false, selector: "po-popup", providers: [PoControlPositionService], viewQueries: [{ propertyName: "popupRef", first: true, predicate: ["popupRef"], descendants: true, read: ElementRef }, { propertyName: "listbox", first: true, predicate: ["listbox"], descendants: true, read: ElementRef }, { propertyName: "poListBoxRef", first: true, predicate: ["poListBoxRef"], descendants: true }], usesInheritance: true, ngImport: i0, template: "@if (showPopup && actions.length && !checkAllActionIsInvisible()) {\n <div #popupRef class=\"po-popup\">\n @if (!hideArrow) {\n <div class=\"po-popup-arrow po-arrow-{{ arrowDirection }}\"></div>\n }\n <div class=\"po-popup-container\">\n <po-listbox\n #listbox\n #poListBoxRef\n p-type=\"action\"\n [p-items]=\"actions\"\n [p-param]=\"param\"\n [p-size]=\"size\"\n (p-close)=\"close()\"\n (p-click-item)=\"onClickItem($event)\"\n >\n <ng-content p-popup-header-template select=\"[p-popup-header-template]\"></ng-content>\n </po-listbox>\n </div>\n </div>\n}\n", dependencies: [{ kind: "component", type: PoListBoxComponent, selector: "po-listbox" }] });
8679
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.7", type: PoPopupComponent, isStandalone: false, selector: "po-popup", providers: [PoControlPositionService], viewQueries: [{ propertyName: "popupRef", first: true, predicate: ["popupRef"], descendants: true, read: ElementRef }, { propertyName: "listbox", first: true, predicate: ["listbox"], descendants: true, read: ElementRef }, { propertyName: "poListBoxRef", first: true, predicate: ["poListBoxRef"], descendants: true }], usesInheritance: true, ngImport: i0, template: "@if (showPopup && actions.length && !checkAllActionIsInvisible()) {\n <div #popupRef class=\"po-popup\">\n @if (!hideArrow) {\n <div class=\"po-popup-arrow po-arrow-{{ arrowDirection }}\"></div>\n }\n <div class=\"po-popup-container\">\n <po-listbox\n #listbox\n #poListBoxRef\n p-type=\"action\"\n [p-items]=\"actions\"\n [p-param]=\"param\"\n [p-size]=\"size\"\n [p-listbox-subitems]=\"listboxSubitems\"\n (p-close)=\"close()\"\n (p-click-item)=\"onClickItem($event)\"\n >\n <ng-content p-popup-header-template select=\"[p-popup-header-template]\"></ng-content>\n </po-listbox>\n </div>\n </div>\n}\n", dependencies: [{ kind: "component", type: PoListBoxComponent, selector: "po-listbox" }] });
8554
8680
  }
8555
8681
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.7", ngImport: i0, type: PoPopupComponent, decorators: [{
8556
8682
  type: Component,
8557
- args: [{ selector: 'po-popup', providers: [PoControlPositionService], standalone: false, template: "@if (showPopup && actions.length && !checkAllActionIsInvisible()) {\n <div #popupRef class=\"po-popup\">\n @if (!hideArrow) {\n <div class=\"po-popup-arrow po-arrow-{{ arrowDirection }}\"></div>\n }\n <div class=\"po-popup-container\">\n <po-listbox\n #listbox\n #poListBoxRef\n p-type=\"action\"\n [p-items]=\"actions\"\n [p-param]=\"param\"\n [p-size]=\"size\"\n (p-close)=\"close()\"\n (p-click-item)=\"onClickItem($event)\"\n >\n <ng-content p-popup-header-template select=\"[p-popup-header-template]\"></ng-content>\n </po-listbox>\n </div>\n </div>\n}\n" }]
8683
+ args: [{ selector: 'po-popup', providers: [PoControlPositionService], standalone: false, template: "@if (showPopup && actions.length && !checkAllActionIsInvisible()) {\n <div #popupRef class=\"po-popup\">\n @if (!hideArrow) {\n <div class=\"po-popup-arrow po-arrow-{{ arrowDirection }}\"></div>\n }\n <div class=\"po-popup-container\">\n <po-listbox\n #listbox\n #poListBoxRef\n p-type=\"action\"\n [p-items]=\"actions\"\n [p-param]=\"param\"\n [p-size]=\"size\"\n [p-listbox-subitems]=\"listboxSubitems\"\n (p-close)=\"close()\"\n (p-click-item)=\"onClickItem($event)\"\n >\n <ng-content p-popup-header-template select=\"[p-popup-header-template]\"></ng-content>\n </po-listbox>\n </div>\n </div>\n}\n" }]
8558
8684
  }], propDecorators: { popupRef: [{
8559
8685
  type: ViewChild,
8560
8686
  args: ['popupRef', { read: ElementRef }]
@@ -8947,15 +9073,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.7", ngImpor
8947
9073
 
8948
9074
  class PoListBoxModule {
8949
9075
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.7", ngImport: i0, type: PoListBoxModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
8950
- static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.0.7", ngImport: i0, type: PoListBoxModule, declarations: [PoListBoxComponent, PoItemListComponent, PoSearchListComponent], imports: [CommonModule, PoCheckboxModule, PoIconModule, PoLoadingModule, CdkListboxModule], exports: [PoListBoxComponent] });
8951
- static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.0.7", ngImport: i0, type: PoListBoxModule, imports: [CommonModule, PoCheckboxModule, PoIconModule, PoLoadingModule, CdkListboxModule] });
9076
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.0.7", ngImport: i0, type: PoListBoxModule, declarations: [PoListBoxComponent, PoItemListComponent, PoSearchListComponent], imports: [CommonModule, PoCheckboxModule, PoIconModule, PoLoadingModule, PoTagModule, CdkListboxModule], exports: [PoListBoxComponent] });
9077
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.0.7", ngImport: i0, type: PoListBoxModule, imports: [CommonModule, PoCheckboxModule, PoIconModule, PoLoadingModule, PoTagModule, CdkListboxModule] });
8952
9078
  }
8953
9079
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.7", ngImport: i0, type: PoListBoxModule, decorators: [{
8954
9080
  type: NgModule,
8955
9081
  args: [{
8956
9082
  declarations: [PoListBoxComponent, PoItemListComponent, PoSearchListComponent],
8957
9083
  exports: [PoListBoxComponent],
8958
- imports: [CommonModule, PoCheckboxModule, PoIconModule, PoLoadingModule, CdkListboxModule]
9084
+ imports: [CommonModule, PoCheckboxModule, PoIconModule, PoLoadingModule, PoTagModule, CdkListboxModule]
8959
9085
  }]
8960
9086
  }] });
8961
9087
 
@@ -13205,6 +13331,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.7", ngImpor
13205
13331
  * <file name="sample-po-dropdown-basic/sample-po-dropdown-basic.component.ts"> </file>
13206
13332
  * </example>
13207
13333
  *
13334
+ * <example name="po-dropdown-subitems" title="PO Dropdown Subitems" >
13335
+ * <file name="sample-po-dropdown-subitems/sample-po-dropdown-subitems.component.html"> </file>
13336
+ * <file name="sample-po-dropdown-subitems/sample-po-dropdown-subitems.component.ts"> </file>
13337
+ * </example>
13338
+ *
13208
13339
  * <example name="po-dropdown-labs" title="PO Dropdown Labs" >
13209
13340
  * <file name="sample-po-dropdown-labs/sample-po-dropdown-labs.component.html"> </file>
13210
13341
  * <file name="sample-po-dropdown-labs/sample-po-dropdown-labs.component.ts"> </file>
@@ -13231,7 +13362,7 @@ class PoDropdownComponent extends PoDropdownBaseComponent {
13231
13362
  this.dropdownRef && !this.open && !this.disabled ? this.showDropdown() : this.hideDropdown();
13232
13363
  }
13233
13364
  checkClickArea(event) {
13234
- return this.dropdownRef && this.dropdownRef.nativeElement.contains(event.target);
13365
+ return this.dropdownRef?.nativeElement.contains(event.target);
13235
13366
  }
13236
13367
  hideDropdown() {
13237
13368
  this.icon = 'ICON_ARROW_DOWN';
@@ -13281,11 +13412,11 @@ class PoDropdownComponent extends PoDropdownBaseComponent {
13281
13412
  }
13282
13413
  }
13283
13414
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.7", ngImport: i0, type: PoDropdownComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
13284
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.0.7", type: PoDropdownComponent, isStandalone: false, selector: "po-dropdown", viewQueries: [{ propertyName: "dropdownRef", first: true, predicate: ["dropdownRef"], descendants: true, read: ElementRef, static: true }, { propertyName: "popupRef", first: true, predicate: ["popupRef"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div\n #dropdownRef\n class=\"po-dropdown\"\n [class.po-dropdown-aa]=\"size === 'small'\"\n [attr.disabled]=\"disabled\"\n tabindex=\"{{ disabled ? -1 : 0 }}\"\n (click)=\"toggleDropdown()\"\n (keydown)=\"onKeyDown($event)\"\n>\n <div\n class=\"po-dropdown-button\"\n [class.po-dropdown-button-aa]=\"size === 'small'\"\n [ngClass]=\"{ 'po-dropdown-button-disabled': disabled, 'po-dropdown-button-open': open }\"\n >\n <span>{{ label }}</span>\n <po-icon class=\"po-dropdown-icon\" [class.po-dropdown-icon-aa]=\"size === 'small'\" [p-icon]=\"icon\"></po-icon>\n </div>\n</div>\n\n<po-popup\n #popupRef\n p-hide-arrow\n p-is-corner-align\n p-position=\"bottom-left\"\n [p-actions]=\"actions\"\n [p-custom-positions]=\"['bottom-left', 'top-left']\"\n [p-size]=\"size\"\n [p-target]=\"dropdownRef\"\n>\n</po-popup>\n", dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: PoPopupComponent, selector: "po-popup" }, { kind: "component", type: PoIconComponent, selector: "po-icon", inputs: ["p-icon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
13415
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.0.7", type: PoDropdownComponent, isStandalone: false, selector: "po-dropdown", viewQueries: [{ propertyName: "dropdownRef", first: true, predicate: ["dropdownRef"], descendants: true, read: ElementRef, static: true }, { propertyName: "popupRef", first: true, predicate: ["popupRef"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div\n #dropdownRef\n class=\"po-dropdown\"\n [class.po-dropdown-aa]=\"size === 'small'\"\n [attr.disabled]=\"disabled\"\n tabindex=\"{{ disabled ? -1 : 0 }}\"\n (click)=\"toggleDropdown()\"\n (keydown)=\"onKeyDown($event)\"\n>\n <div\n class=\"po-dropdown-button\"\n [class.po-dropdown-button-aa]=\"size === 'small'\"\n [ngClass]=\"{ 'po-dropdown-button-disabled': disabled, 'po-dropdown-button-open': open }\"\n >\n <span>{{ label }}</span>\n <po-icon class=\"po-dropdown-icon\" [class.po-dropdown-icon-aa]=\"size === 'small'\" [p-icon]=\"icon\"></po-icon>\n </div>\n</div>\n\n<po-popup\n #popupRef\n p-hide-arrow\n p-is-corner-align\n p-position=\"bottom-left\"\n [p-actions]=\"actions\"\n [p-custom-positions]=\"['bottom-left', 'top-left']\"\n [p-size]=\"size\"\n [p-target]=\"dropdownRef\"\n [p-listbox-subitems]=\"true\"\n>\n</po-popup>\n", dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: PoPopupComponent, selector: "po-popup" }, { kind: "component", type: PoIconComponent, selector: "po-icon", inputs: ["p-icon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
13285
13416
  }
13286
13417
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.7", ngImport: i0, type: PoDropdownComponent, decorators: [{
13287
13418
  type: Component,
13288
- args: [{ selector: 'po-dropdown', changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, template: "<div\n #dropdownRef\n class=\"po-dropdown\"\n [class.po-dropdown-aa]=\"size === 'small'\"\n [attr.disabled]=\"disabled\"\n tabindex=\"{{ disabled ? -1 : 0 }}\"\n (click)=\"toggleDropdown()\"\n (keydown)=\"onKeyDown($event)\"\n>\n <div\n class=\"po-dropdown-button\"\n [class.po-dropdown-button-aa]=\"size === 'small'\"\n [ngClass]=\"{ 'po-dropdown-button-disabled': disabled, 'po-dropdown-button-open': open }\"\n >\n <span>{{ label }}</span>\n <po-icon class=\"po-dropdown-icon\" [class.po-dropdown-icon-aa]=\"size === 'small'\" [p-icon]=\"icon\"></po-icon>\n </div>\n</div>\n\n<po-popup\n #popupRef\n p-hide-arrow\n p-is-corner-align\n p-position=\"bottom-left\"\n [p-actions]=\"actions\"\n [p-custom-positions]=\"['bottom-left', 'top-left']\"\n [p-size]=\"size\"\n [p-target]=\"dropdownRef\"\n>\n</po-popup>\n" }]
13419
+ args: [{ selector: 'po-dropdown', changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, template: "<div\n #dropdownRef\n class=\"po-dropdown\"\n [class.po-dropdown-aa]=\"size === 'small'\"\n [attr.disabled]=\"disabled\"\n tabindex=\"{{ disabled ? -1 : 0 }}\"\n (click)=\"toggleDropdown()\"\n (keydown)=\"onKeyDown($event)\"\n>\n <div\n class=\"po-dropdown-button\"\n [class.po-dropdown-button-aa]=\"size === 'small'\"\n [ngClass]=\"{ 'po-dropdown-button-disabled': disabled, 'po-dropdown-button-open': open }\"\n >\n <span>{{ label }}</span>\n <po-icon class=\"po-dropdown-icon\" [class.po-dropdown-icon-aa]=\"size === 'small'\" [p-icon]=\"icon\"></po-icon>\n </div>\n</div>\n\n<po-popup\n #popupRef\n p-hide-arrow\n p-is-corner-align\n p-position=\"bottom-left\"\n [p-actions]=\"actions\"\n [p-custom-positions]=\"['bottom-left', 'top-left']\"\n [p-size]=\"size\"\n [p-target]=\"dropdownRef\"\n [p-listbox-subitems]=\"true\"\n>\n</po-popup>\n" }]
13289
13420
  }], propDecorators: { dropdownRef: [{
13290
13421
  type: ViewChild,
13291
13422
  args: ['dropdownRef', { read: ElementRef, static: true }]
@@ -17395,11 +17526,11 @@ class PoModalComponent extends PoModalBaseComponent {
17395
17526
  this.modalContent.nativeElement.querySelector(this.focusableElements) || this.modalContent.nativeElement;
17396
17527
  }
17397
17528
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.7", ngImport: i0, type: PoModalComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
17398
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.7", type: PoModalComponent, isStandalone: false, selector: "po-modal", queries: [{ propertyName: "modalFooter", first: true, predicate: PoModalFooterComponent, descendants: true }], viewQueries: [{ propertyName: "modalContent", first: true, predicate: ["modalContent"], descendants: true, read: ElementRef }, { propertyName: "modalContainer", first: true, predicate: ["modalContainer"], descendants: true, read: ElementRef }], usesInheritance: true, ngImport: i0, template: "@if (!isHidden) {\n <div #modalContainer class=\"po-modal\" tabindex=\"0\" (keydown.esc)=\"closeModalOnEscapeKey($event)\">\n <div class=\"po-modal-overlay\" (mousedown)=\"onClickOut($event)\"></div>\n <div class=\"po-modal-container po-pb-2 po-pt-2\">\n <div class=\"po-modal-vertical-align\">\n <div #modalContent class=\"po-modal-content po-modal-{{ size }}\" tabindex=\"-1\">\n <div class=\"po-modal-header\">\n <div class=\"po-modal-title po-text-ellipsis\">\n @if (icon) {\n <po-icon [p-icon]=\"icon\"></po-icon>\n }\n <div class=\"po-text-ellipsis\">\n {{ title }}\n </div>\n </div>\n @if (!hideClose) {\n <po-button\n [p-aria-label]=\"literals.close\"\n p-icon=\"ICON_CLOSE\"\n (p-click)=\"close(true)\"\n p-kind=\"tertiary\"\n [p-size]=\"componentsSize\"\n >\n </po-button>\n }\n </div>\n <div class=\"po-modal-body\">\n <ng-content></ng-content>\n </div>\n @if (modalFooter) {\n <ng-content select=\"po-modal-footer\"></ng-content>\n } @else {\n <po-modal-footer>\n <div class=\"po-modal-footer-basic\">\n @if (secondaryAction) {\n <po-button\n [p-danger]=\"getSecondaryActionButtonDanger()\"\n [p-disabled]=\"secondaryAction.disabled\"\n [p-label]=\"secondaryAction.label\"\n [p-loading]=\"secondaryAction.loading\"\n p-kind=\"secondary\"\n [p-size]=\"componentsSize\"\n (p-click)=\"secondaryAction.action()\"\n >\n </po-button>\n }\n <po-button\n class=\"po-button-modal-first-action\"\n [p-danger]=\"primaryAction.danger\"\n [p-disabled]=\"primaryAction.disabled\"\n [p-label]=\"primaryAction.label\"\n [p-loading]=\"primaryAction.loading\"\n p-kind=\"primary\"\n [p-size]=\"componentsSize\"\n (p-click)=\"primaryAction.action()\"\n >\n </po-button>\n </div>\n </po-modal-footer>\n }\n </div>\n </div>\n </div>\n </div>\n}\n", dependencies: [{ kind: "component", type: PoButtonComponent, selector: "po-button" }, { kind: "component", type: PoIconComponent, selector: "po-icon", inputs: ["p-icon"] }, { kind: "component", type: PoModalFooterComponent, selector: "po-modal-footer", inputs: ["p-disabled-align"] }] });
17529
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.7", type: PoModalComponent, isStandalone: false, selector: "po-modal", queries: [{ propertyName: "modalFooter", first: true, predicate: PoModalFooterComponent, descendants: true }], viewQueries: [{ propertyName: "modalContent", first: true, predicate: ["modalContent"], descendants: true, read: ElementRef }, { propertyName: "modalContainer", first: true, predicate: ["modalContainer"], descendants: true, read: ElementRef }], usesInheritance: true, ngImport: i0, template: "@if (!isHidden) {\n <div #modalContainer class=\"po-modal\" tabindex=\"0\" (keydown.esc)=\"closeModalOnEscapeKey($event)\">\n <div class=\"po-modal-overlay\" (mousedown)=\"onClickOut($event)\"></div>\n <div class=\"po-modal-container po-pb-2 po-pt-2\">\n <div class=\"po-modal-vertical-align\">\n <div #modalContent class=\"po-modal-content po-modal-{{ size }}\" tabindex=\"-1\">\n <div class=\"po-modal-header\">\n <div class=\"po-modal-title po-text-ellipsis\">\n @if (icon) {\n <po-icon [p-icon]=\"icon\"></po-icon>\n }\n <div class=\"po-text-ellipsis\">\n {{ title }}\n </div>\n </div>\n @if (!hideClose) {\n <po-button\n [p-aria-label]=\"literals.close\"\n p-icon=\"ICON_CLOSE\"\n (p-click)=\"close(true)\"\n p-kind=\"tertiary\"\n [p-size]=\"componentsSize\"\n >\n </po-button>\n }\n </div>\n <div class=\"po-modal-body\">\n <ng-content></ng-content>\n </div>\n @if (modalFooter) {\n <ng-content select=\"po-modal-footer\"></ng-content>\n } @else {\n <po-modal-footer>\n <div class=\"po-modal-footer-basic\">\n @if (secondaryAction) {\n <po-button\n [p-danger]=\"getSecondaryActionButtonDanger()\"\n [p-disabled]=\"secondaryAction.disabled\"\n [p-icon]=\"secondaryAction.icon\"\n [p-label]=\"secondaryAction.label\"\n [p-loading]=\"secondaryAction.loading\"\n p-kind=\"secondary\"\n [p-size]=\"componentsSize\"\n (p-click)=\"secondaryAction.action()\"\n >\n </po-button>\n }\n <po-button\n class=\"po-button-modal-first-action\"\n [p-danger]=\"primaryAction.danger\"\n [p-disabled]=\"primaryAction.disabled\"\n [p-icon]=\"primaryAction.icon\"\n [p-label]=\"primaryAction.label\"\n [p-loading]=\"primaryAction.loading\"\n p-kind=\"primary\"\n [p-size]=\"componentsSize\"\n (p-click)=\"primaryAction.action()\"\n >\n </po-button>\n </div>\n </po-modal-footer>\n }\n </div>\n </div>\n </div>\n </div>\n}\n", dependencies: [{ kind: "component", type: PoButtonComponent, selector: "po-button" }, { kind: "component", type: PoIconComponent, selector: "po-icon", inputs: ["p-icon"] }, { kind: "component", type: PoModalFooterComponent, selector: "po-modal-footer", inputs: ["p-disabled-align"] }] });
17399
17530
  }
17400
17531
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.7", ngImport: i0, type: PoModalComponent, decorators: [{
17401
17532
  type: Component,
17402
- args: [{ selector: 'po-modal', standalone: false, template: "@if (!isHidden) {\n <div #modalContainer class=\"po-modal\" tabindex=\"0\" (keydown.esc)=\"closeModalOnEscapeKey($event)\">\n <div class=\"po-modal-overlay\" (mousedown)=\"onClickOut($event)\"></div>\n <div class=\"po-modal-container po-pb-2 po-pt-2\">\n <div class=\"po-modal-vertical-align\">\n <div #modalContent class=\"po-modal-content po-modal-{{ size }}\" tabindex=\"-1\">\n <div class=\"po-modal-header\">\n <div class=\"po-modal-title po-text-ellipsis\">\n @if (icon) {\n <po-icon [p-icon]=\"icon\"></po-icon>\n }\n <div class=\"po-text-ellipsis\">\n {{ title }}\n </div>\n </div>\n @if (!hideClose) {\n <po-button\n [p-aria-label]=\"literals.close\"\n p-icon=\"ICON_CLOSE\"\n (p-click)=\"close(true)\"\n p-kind=\"tertiary\"\n [p-size]=\"componentsSize\"\n >\n </po-button>\n }\n </div>\n <div class=\"po-modal-body\">\n <ng-content></ng-content>\n </div>\n @if (modalFooter) {\n <ng-content select=\"po-modal-footer\"></ng-content>\n } @else {\n <po-modal-footer>\n <div class=\"po-modal-footer-basic\">\n @if (secondaryAction) {\n <po-button\n [p-danger]=\"getSecondaryActionButtonDanger()\"\n [p-disabled]=\"secondaryAction.disabled\"\n [p-label]=\"secondaryAction.label\"\n [p-loading]=\"secondaryAction.loading\"\n p-kind=\"secondary\"\n [p-size]=\"componentsSize\"\n (p-click)=\"secondaryAction.action()\"\n >\n </po-button>\n }\n <po-button\n class=\"po-button-modal-first-action\"\n [p-danger]=\"primaryAction.danger\"\n [p-disabled]=\"primaryAction.disabled\"\n [p-label]=\"primaryAction.label\"\n [p-loading]=\"primaryAction.loading\"\n p-kind=\"primary\"\n [p-size]=\"componentsSize\"\n (p-click)=\"primaryAction.action()\"\n >\n </po-button>\n </div>\n </po-modal-footer>\n }\n </div>\n </div>\n </div>\n </div>\n}\n" }]
17533
+ args: [{ selector: 'po-modal', standalone: false, template: "@if (!isHidden) {\n <div #modalContainer class=\"po-modal\" tabindex=\"0\" (keydown.esc)=\"closeModalOnEscapeKey($event)\">\n <div class=\"po-modal-overlay\" (mousedown)=\"onClickOut($event)\"></div>\n <div class=\"po-modal-container po-pb-2 po-pt-2\">\n <div class=\"po-modal-vertical-align\">\n <div #modalContent class=\"po-modal-content po-modal-{{ size }}\" tabindex=\"-1\">\n <div class=\"po-modal-header\">\n <div class=\"po-modal-title po-text-ellipsis\">\n @if (icon) {\n <po-icon [p-icon]=\"icon\"></po-icon>\n }\n <div class=\"po-text-ellipsis\">\n {{ title }}\n </div>\n </div>\n @if (!hideClose) {\n <po-button\n [p-aria-label]=\"literals.close\"\n p-icon=\"ICON_CLOSE\"\n (p-click)=\"close(true)\"\n p-kind=\"tertiary\"\n [p-size]=\"componentsSize\"\n >\n </po-button>\n }\n </div>\n <div class=\"po-modal-body\">\n <ng-content></ng-content>\n </div>\n @if (modalFooter) {\n <ng-content select=\"po-modal-footer\"></ng-content>\n } @else {\n <po-modal-footer>\n <div class=\"po-modal-footer-basic\">\n @if (secondaryAction) {\n <po-button\n [p-danger]=\"getSecondaryActionButtonDanger()\"\n [p-disabled]=\"secondaryAction.disabled\"\n [p-icon]=\"secondaryAction.icon\"\n [p-label]=\"secondaryAction.label\"\n [p-loading]=\"secondaryAction.loading\"\n p-kind=\"secondary\"\n [p-size]=\"componentsSize\"\n (p-click)=\"secondaryAction.action()\"\n >\n </po-button>\n }\n <po-button\n class=\"po-button-modal-first-action\"\n [p-danger]=\"primaryAction.danger\"\n [p-disabled]=\"primaryAction.disabled\"\n [p-icon]=\"primaryAction.icon\"\n [p-label]=\"primaryAction.label\"\n [p-loading]=\"primaryAction.loading\"\n p-kind=\"primary\"\n [p-size]=\"componentsSize\"\n (p-click)=\"primaryAction.action()\"\n >\n </po-button>\n </div>\n </po-modal-footer>\n }\n </div>\n </div>\n </div>\n </div>\n}\n" }]
17403
17534
  }], ctorParameters: () => [], propDecorators: { modalContent: [{
17404
17535
  type: ViewChild,
17405
17536
  args: ['modalContent', { read: ElementRef }]
@@ -19393,6 +19524,11 @@ const poThemeDefaultDarkValues = {
19393
19524
  /** SELECT */
19394
19525
  'po-select': {
19395
19526
  '--color-hover': 'var(--color-action-hover);'
19527
+ },
19528
+ /** DROPDOWN */
19529
+ '.po-listbox-group-header .po-tag': {
19530
+ 'color': 'var(--color-neutral-light-00);',
19531
+ 'background-color': 'var(--color-action-default);'
19396
19532
  }
19397
19533
  },
19398
19534
  onRoot: {