Skip to content

Commit d64b4a6

Browse files
jcorrea97rafaellmarques
authored andcommitted
feat(combo): cria propriedade p-append-in-body
cria propriedade `p-append-in-body` para renderizar o dropdown do componente fora do conteúdo principal fixes DTHFUI-7742
1 parent 5809027 commit d64b4a6

File tree

2 files changed

+54
-27
lines changed

2 files changed

+54
-27
lines changed

projects/ui/src/lib/components/po-field/po-combo/po-combo-base.component.ts

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -602,6 +602,20 @@ export abstract class PoComboBaseComponent implements ControlValueAccessor, OnIn
602602
*/
603603
@Input({ alias: 'p-cache', transform: convertToBoolean }) cache: boolean = true;
604604

605+
/**
606+
* @optional
607+
*
608+
* @description
609+
*
610+
* Define que o dropdown do combo será incluido no body da página e não suspenso com a caixa de texto do componente.
611+
* Opção necessária para o caso de uso do componente em páginas que necessitam renderizar o combo fora do conteúdo principal.
612+
*
613+
* > Obs: O uso dessa propriedade pode acarretar na perda sequencial da tabulação da página
614+
*
615+
* @default `false`
616+
*/
617+
@Input({ alias: 'p-append-in-body', transform: convertToBoolean }) appendBox?: boolean = false;
618+
605619
constructor(languageService: PoLanguageService) {
606620
this.language = languageService.getShortLanguage();
607621
}

projects/ui/src/lib/components/po-field/po-combo/po-combo.component.html

Lines changed: 40 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -49,33 +49,46 @@
4949
</div>
5050
</div>
5151

52-
<ng-template cdkConnectedOverlay [cdkConnectedOverlayOrigin]="trigger" [cdkConnectedOverlayOpen]="true">
53-
<div #containerElement class="po-combo-container" [hidden]="!comboOpen && !isServerSearching">
54-
<po-listbox
55-
#poListbox
56-
#contentElement
57-
p-type="option"
58-
[p-items]="visibleOptions"
59-
[p-field-value]="dynamicValue"
60-
[p-field-label]="dynamicLabel"
61-
[p-template]="comboOptionTemplate"
62-
[p-search-value]="getInputValue()"
63-
[p-infinite-loading]="infiniteLoading"
64-
[p-infinite-scroll]="infiniteScroll"
65-
[p-filtering]="isFiltering"
66-
[p-cache]="cache"
67-
(p-selectcombo-item)="onOptionClick($event, $event.event)"
68-
[p-filter-mode]="filterMode"
69-
[p-visible]="comboOpen"
70-
[p-is-searching]="isServerSearching"
71-
[p-should-mark-letter]="shouldMarkLetters"
72-
[p-compare-cache]="compareObjects(cacheOptions, visibleOptions)"
73-
[p-combo-service]="service"
74-
[p-infinite-scroll-distance]="infiniteScrollDistance"
75-
(p-update-infinite-scroll)="showMoreInfiniteScroll()"
76-
(p-close)="onCloseCombo()"
77-
></po-listbox>
78-
</div>
52+
<ng-container *ngIf="appendBox; then dropdownCDK; else dropdownDefault"> </ng-container>
53+
54+
<ng-template #dropdownDefault>
55+
<ng-container *ngTemplateOutlet="dropdownListbox"> </ng-container>
56+
</ng-template>
57+
58+
<ng-template #dropdownCDK>
59+
<ng-template cdkConnectedOverlay [cdkConnectedOverlayOrigin]="trigger" [cdkConnectedOverlayOpen]="true">
60+
<ng-container *ngTemplateOutlet="dropdownListbox"></ng-container>
61+
</ng-template>
7962
</ng-template>
63+
8064
<po-field-container-bottom [p-help]="help" [p-disabled]="disabled"></po-field-container-bottom>
8165
</po-field-container>
66+
67+
<ng-template #dropdownListbox>
68+
<div #containerElement class="po-combo-container" [hidden]="!comboOpen && !isServerSearching">
69+
<po-listbox
70+
#poListbox
71+
#contentElement
72+
p-type="option"
73+
[p-items]="visibleOptions"
74+
[p-field-value]="dynamicValue"
75+
[p-field-label]="dynamicLabel"
76+
[p-template]="comboOptionTemplate"
77+
[p-search-value]="getInputValue()"
78+
[p-infinite-loading]="infiniteLoading"
79+
[p-infinite-scroll]="infiniteScroll"
80+
[p-filtering]="isFiltering"
81+
[p-cache]="cache"
82+
(p-selectcombo-item)="onOptionClick($event, $event.event)"
83+
[p-filter-mode]="filterMode"
84+
[p-visible]="comboOpen"
85+
[p-is-searching]="isServerSearching"
86+
[p-should-mark-letter]="shouldMarkLetters"
87+
[p-compare-cache]="compareObjects(cacheOptions, visibleOptions)"
88+
[p-combo-service]="service"
89+
[p-infinite-scroll-distance]="infiniteScrollDistance"
90+
(p-update-infinite-scroll)="showMoreInfiniteScroll()"
91+
(p-close)="onCloseCombo()"
92+
></po-listbox>
93+
</div>
94+
</ng-template>

0 commit comments

Comments
 (0)