Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 6 additions & 8 deletions src/lib/components/select-button/select-button.component.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
import { Component, EventEmitter, Input, Optional, Output, Self } from '@angular/core';
import { NgClass } from '@angular/common';
import { ControlValueAccessor, FormsModule, NgControl } from '@angular/forms';
import { SelectButton, SelectButtonChangeEvent } from 'primeng/selectbutton';
import { SharedModule } from 'primeng/api';
Expand All @@ -21,8 +20,11 @@ export type ExtraSelectButtonSize = 'sm' | 'base' | 'lg' | 'xlg';
@Component({
selector: 'extra-select-button',
standalone: true,
imports: [SelectButton, SharedModule, FormsModule, NgClass],
imports: [SelectButton, SharedModule, FormsModule],
template: `
<!-- Ступень xlg навешивается классом на корень: styleClass в PrimeNG 20 на корне
p-selectbutton не остаётся, а раздаётся вниз каждому p-togglebutton, и стили
ступени (.p-selectbutton-xlarge .p-togglebutton) не находят свой корень. -->
<p-selectbutton
[options]="options"
[ngModel]="value"
Expand All @@ -35,7 +37,7 @@ export type ExtraSelectButtonSize = 'sm' | 'base' | 'lg' | 'xlg';
[allowEmpty]="allowEmpty"
[disabled]="isDisabled"
[size]="primeSize"
[styleClass]="primeStyleClass"
[class.p-selectbutton-xlarge]="size === 'xlg'"
>
<ng-template pTemplate="item" let-item>
@if ($any(item)['icon']) {
Expand All @@ -44,7 +46,7 @@ export type ExtraSelectButtonSize = 'sm' | 'base' | 'lg' | 'xlg';
<span>{{ $any(item)[optionLabel] }}</span>
</ng-template>
</p-selectbutton>
`,
`
})
export class ExtraSelectButtonComponent implements ControlValueAccessor {
@Input() options: ExtraSelectButtonOption[] | any[] = [];
Expand Down Expand Up @@ -77,10 +79,6 @@ export class ExtraSelectButtonComponent implements ControlValueAccessor {
return undefined;
}

get primeStyleClass(): string {
return this.size === 'xlg' ? 'p-selectbutton-xlarge' : '';
}

writeValue(value: any): void {
this.value = value ?? null;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -78,8 +78,11 @@ export const selectbuttonCss = ({ dt }: { dt: (token: string) => string }): stri
font-size: ${dt('selectbutton.extend.iconSize.lg')};
}

/* Size: xlarge */
/* Size: xlarge — PrimeNG не вешает на дочерний p-togglebutton класс размера (у него нет
ступени xlg), поэтому паддинги остаются базовыми: задаём их сами, как у отдельного
togglebutton в этой же ступени. */
.p-selectbutton.p-selectbutton-xlarge.p-component .p-togglebutton.p-component {
padding: ${dt('togglebutton.extend.extXlg.padding')};
font-size: ${dt('fonts.fontSize.600')};
line-height: ${dt('fonts.lineHeight.550')};
height: ${dt('togglebutton.extend.extXlg.iconOnlyWidth')};
Expand Down
Loading