简体   繁体   中英

Set primeNG p-dropdown width to min-content

I have a p-dropdown and its width doesn't seem to change. However, I want its width to be the width of the min-content. I couldn't find any documentation regarding this on PrimNG . So, Is there any way to set its width? Thank you!

<p-dropdown attr.data-property-name="{{ serverControl.name }}" autoWidth="false"
          [name]="serverControl.name ? serverControl.name : 'testDropdown'" [options]="options"
          [disabled]="serverControl.readOnly" [ngStyle]="{width: 'min-content'}" [required]="serverControl.required"
          [title]="serverControl.title ? serverControl.title : ''"
          [ngModel]="default" (onChange)="
            serverControl.value = $event;
            select.emit($event.value ? $event.value.toString() : null)
          " #ddList="ngModel">
</p-dropdown>

Scss

body .ui-dropdown {
  border: 0.5px solid white !important;
  max-width: 7vw !important;
  min-width: 7vw !important;
  // background: $holiday-calender-header-bg !important;
}

You can use styleClass property binding to customize the style of the p-dropdown in primeng

<p-dropdown attr.data-property-name="{{ serverControl.name }}" autoWidth="false"
          [name]="serverControl.name ? serverControl.name : 'testDropdown'" [options]="options"
          [disabled]="serverControl.readOnly" [ngStyle]="{width: 'min-content'}" [required]="serverControl.required"
          [title]="serverControl.title ? serverControl.title : ''"
          [ngModel]="default" (onChange)="
            serverControl.value = $event;
            select.emit($event.value ? $event.value.toString() : null)
          " #ddList="ngModel" styleClass="my-dropdown">
</p-dropdown>

My custom css

.my-dropdown {
  width: 7rem;
}

You can add [style]="{ width: '100%', overflow: 'visible' }"

<p-dropdown attr.data-property-name="{{ serverControl.name }}"
      [style]="{ width: '100%', overflow: 'visible' }"
      [name]="serverControl.name ? serverControl.name : 'testDropdown'" [options]="options"
      [disabled]="serverControl.readOnly" [ngStyle]="{width: 'min-content'}" [required]="serverControl.required"
      [title]="serverControl.title ? serverControl.title : ''"
      [ngModel]="default" (onChange)="
        serverControl.value = $event;
        select.emit($event.value ? $event.value.toString() : null)
      " #ddList="ngModel">

I had faced the same issue, then I overwrote custom style. I added below code, which is working fine for me.

.p-multiselect .p-multiselect-label.p-placeholder {
  color: #6c757d;
  white-space: break-spaces;
}
.p-multiselect.p-multiselect-chip .p-multiselect-token{
  margin: 2px;
}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM