Skip to content

Commit a6880e3

Browse files
committed
feat(material/slide-togge): Add option to hide label
1 parent 76f2603 commit a6880e3

File tree

5 files changed

+18
-4
lines changed

5 files changed

+18
-4
lines changed

goldens/material/slide-toggle/index.api.md

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@ export class MatSlideToggle implements OnDestroy, AfterContentInit, OnChanges, C
5050
_getAriaLabelledBy(): string | null;
5151
_handleClick(): void;
5252
hideIcon: boolean;
53+
hideLabel: boolean;
5354
id: string;
5455
get inputId(): string;
5556
_labelId: string;
@@ -66,6 +67,8 @@ export class MatSlideToggle implements OnDestroy, AfterContentInit, OnChanges, C
6667
// (undocumented)
6768
static ngAcceptInputType_hideIcon: unknown;
6869
// (undocumented)
70+
static ngAcceptInputType_hideLabel: unknown;
71+
// (undocumented)
6972
static ngAcceptInputType_required: unknown;
7073
// (undocumented)
7174
static ngAcceptInputType_tabIndex: unknown;
@@ -88,7 +91,7 @@ export class MatSlideToggle implements OnDestroy, AfterContentInit, OnChanges, C
8891
validate(control: AbstractControl<boolean>): ValidationErrors | null;
8992
writeValue(value: any): void;
9093
// (undocumented)
91-
static ɵcmp: i0.ɵɵComponentDeclaration<MatSlideToggle, "mat-slide-toggle", ["matSlideToggle"], { "name": { "alias": "name"; "required": false; }; "id": { "alias": "id"; "required": false; }; "labelPosition": { "alias": "labelPosition"; "required": false; }; "ariaLabel": { "alias": "aria-label"; "required": false; }; "ariaLabelledby": { "alias": "aria-labelledby"; "required": false; }; "ariaDescribedby": { "alias": "aria-describedby"; "required": false; }; "required": { "alias": "required"; "required": false; }; "color": { "alias": "color"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "disableRipple": { "alias": "disableRipple"; "required": false; }; "tabIndex": { "alias": "tabIndex"; "required": false; }; "checked": { "alias": "checked"; "required": false; }; "hideIcon": { "alias": "hideIcon"; "required": false; }; "disabledInteractive": { "alias": "disabledInteractive"; "required": false; }; }, { "change": "change"; "toggleChange": "toggleChange"; }, never, ["*"], true, never>;
94+
static ɵcmp: i0.ɵɵComponentDeclaration<MatSlideToggle, "mat-slide-toggle", ["matSlideToggle"], { "name": { "alias": "name"; "required": false; }; "id": { "alias": "id"; "required": false; }; "labelPosition": { "alias": "labelPosition"; "required": false; }; "ariaLabel": { "alias": "aria-label"; "required": false; }; "ariaLabelledby": { "alias": "aria-labelledby"; "required": false; }; "ariaDescribedby": { "alias": "aria-describedby"; "required": false; }; "required": { "alias": "required"; "required": false; }; "color": { "alias": "color"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "disableRipple": { "alias": "disableRipple"; "required": false; }; "tabIndex": { "alias": "tabIndex"; "required": false; }; "checked": { "alias": "checked"; "required": false; }; "hideLabel": { "alias": "hideLabel"; "required": false; }; "hideIcon": { "alias": "hideIcon"; "required": false; }; "disabledInteractive": { "alias": "disabledInteractive"; "required": false; }; }, { "change": "change"; "toggleChange": "toggleChange"; }, never, ["*"], true, never>;
9295
// (undocumented)
9396
static ɵfac: i0.ɵɵFactoryDeclaration<MatSlideToggle, never>;
9497
}

src/dev-app/slide-toggle/slide-toggle-demo.html

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,10 @@
1212
<mat-slide-toggle labelPosition="before" [disabled]="firstToggle">Disable Bound</mat-slide-toggle>
1313
<mat-slide-toggle labelPosition="before" hideIcon [(ngModel)]="firstToggle">No icon</mat-slide-toggle>
1414

15+
<p>With no label.</p>
16+
17+
<mat-slide-toggle aria-label="Toggle only" hideLabel color="primary" [(ngModel)]="firstToggle" />
18+
1519
<p>Example where the slide toggle is required inside of a form.</p>
1620

1721
<form #form="ngForm" (ngSubmit)="onFormSubmit()">

src/material/slide-toggle/slide-toggle.html

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,9 @@
5757
Clicking on the label will trigger another click event from the button.
5858
Stop propagation here so other listeners further up in the DOM don't execute twice.
5959
-->
60-
<label class="mdc-label" [for]="buttonId" [attr.id]="_labelId" (click)="$event.stopPropagation()">
61-
<ng-content></ng-content>
62-
</label>
60+
@if (!hideLabel) {
61+
<label class="mdc-label" [for]="buttonId" [attr.id]="_labelId" (click)="$event.stopPropagation()">
62+
<ng-content></ng-content>
63+
</label>
64+
}
6365
</div>

src/material/slide-toggle/slide-toggle.spec.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -654,6 +654,8 @@ describe('MatSlideToggle with forms', () => {
654654

655655
it('should update checked state on click if control is checked initially', fakeAsync(() => {
656656
fixture = TestBed.createComponent(SlideToggleWithModel);
657+
fixture.detectChanges();
658+
657659
slideToggle = fixture.debugElement.query(By.directive(MatSlideToggle))!.componentInstance;
658660
labelElement = fixture.debugElement.query(By.css('label'))!.nativeElement;
659661

src/material/slide-toggle/slide-toggle.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -186,6 +186,9 @@ export class MatSlideToggle
186186
/** Whether to hide the icon inside of the slide toggle. */
187187
@Input({transform: booleanAttribute}) hideIcon: boolean;
188188

189+
/** Whether to hide label for the slide toggle. */
190+
@Input({transform: booleanAttribute}) hideLabel: boolean;
191+
189192
/** Whether the slide toggle should remain interactive when it is disabled. */
190193
@Input({transform: booleanAttribute}) disabledInteractive: boolean;
191194

0 commit comments

Comments
 (0)