Skip to content

Commit a6e6b05

Browse files
committed
feat(split): migrate si-split to OnPush
BREAKING CHANGE: si-split and si-split-part inputs were migrated to signal inputs
1 parent 01d5cc9 commit a6e6b05

6 files changed

Lines changed: 279 additions & 276 deletions

File tree

api-goldens/element-ng/split/index.api.md

Lines changed: 25 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,9 @@
44
55
```ts
66

7-
import { AfterContentInit } from '@angular/core';
87
import * as _angular_core from '@angular/core';
98
import { EventEmitter } from '@angular/core';
10-
import { OnChanges } from '@angular/core';
11-
import { QueryList } from '@angular/core';
129
import { Signal } from '@angular/core';
13-
import { SimpleChanges } from '@angular/core';
1410
import { TemplateRef } from '@angular/core';
1511
import { TranslatableString } from '@siemens/element-translate-ng/translate';
1612

@@ -39,69 +35,46 @@ export interface PartState {
3935
export type Scale = 'none' | 'auto';
4036

4137
// @public (undocumented)
42-
export class SiSplitComponent implements AfterContentInit, OnChanges {
43-
// (undocumented)
44-
gutterSize: number;
45-
// (undocumented)
46-
get orientation(): SplitOrientation;
47-
set orientation(value: SplitOrientation);
48-
// (undocumented)
49-
sizes: number[];
38+
export class SiSplitComponent {
39+
constructor();
40+
readonly gutterSize: _angular_core.InputSignal<number>;
41+
readonly orientation: _angular_core.InputSignal<SplitOrientation>;
42+
readonly sizes: _angular_core.InputSignal<number[]>;
5043
// (undocumented)
5144
readonly sizesChange: EventEmitter<number[]>;
52-
stateId?: string;
45+
readonly stateId: _angular_core.InputSignal<string | undefined>;
5346
}
5447

5548
// @public (undocumented)
5649
export class SiSplitModule {
5750
}
5851

5952
// @public (undocumented)
60-
export class SiSplitPartComponent implements OnChanges {
61-
// (undocumented)
62-
actions: Action[];
53+
export class SiSplitPartComponent {
54+
constructor();
55+
readonly actions: _angular_core.InputSignal<Action[]>;
6356
// (undocumented)
6457
readonly collapseChanged: EventEmitter<boolean>;
6558
get collapsed(): boolean;
66-
// (undocumented)
67-
collapseDirection: CollapseTo;
68-
collapseIconClass: string;
69-
collapseLabel: TranslatableString;
70-
collapseOthers: boolean;
71-
collapseToMinSize: boolean;
72-
set expanded(value: boolean);
73-
// (undocumented)
74-
get expanded(): boolean;
75-
// (undocumented)
76-
headerTemplate?: TemplateRef<{
59+
readonly collapseDirection: _angular_core.InputSignal<CollapseTo>;
60+
readonly collapseIconClass: _angular_core.InputSignal<string>;
61+
readonly collapseLabel: _angular_core.InputSignal<TranslatableString>;
62+
readonly collapseOthers: _angular_core.InputSignalWithTransform<boolean, unknown>;
63+
readonly collapseToMinSize: _angular_core.InputSignalWithTransform<boolean, unknown>;
64+
readonly expanded: _angular_core.InputSignalWithTransform<boolean, unknown>;
65+
readonly headerTemplate: _angular_core.InputSignal<TemplateRef<{
7766
$implicit: SiSplitPartComponent;
78-
}>;
79-
heading: TranslatableString;
80-
minSize: number;
81-
// (undocumented)
82-
static ngAcceptInputType_collapseOthers: unknown;
83-
// (undocumented)
84-
static ngAcceptInputType_collapseToMinSize: unknown;
85-
// (undocumented)
86-
static ngAcceptInputType_expanded: unknown;
87-
// (undocumented)
88-
static ngAcceptInputType_minSize: unknown;
89-
// (undocumented)
90-
static ngAcceptInputType_removeContentOnCollapse: unknown;
91-
// (undocumented)
92-
static ngAcceptInputType_showCollapseButton: unknown;
93-
// (undocumented)
94-
static ngAcceptInputType_showHeader: unknown;
95-
// (undocumented)
96-
static ngAcceptInputType_size: unknown;
97-
removeContentOnCollapse: boolean;
98-
scale: Scale;
99-
showCollapseButton: boolean;
100-
showHeader: boolean;
101-
size?: number;
67+
}> | undefined>;
68+
readonly heading: _angular_core.InputSignal<TranslatableString | undefined>;
69+
readonly minSize: _angular_core.InputSignalWithTransform<number, unknown>;
70+
readonly removeContentOnCollapse: _angular_core.InputSignalWithTransform<boolean, unknown>;
71+
readonly scale: _angular_core.InputSignal<Scale>;
72+
readonly showCollapseButton: _angular_core.InputSignalWithTransform<boolean, unknown>;
73+
readonly showHeader: _angular_core.InputSignalWithTransform<boolean, unknown>;
74+
readonly size: _angular_core.InputSignalWithTransform<number | undefined, unknown>;
10275
// (undocumented)
10376
readonly stateChange: EventEmitter<PartState>;
104-
stateId?: string;
77+
readonly stateId: _angular_core.InputSignal<string | undefined>;
10578
toggleCollapse(): void;
10679
}
10780

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
1-
@if (!headerTemplate && showHeader) {
1+
@if (!headerTemplate() && showHeader()) {
22
<div class="si-split-part-header" [class.is-collapsed]="collapsedState()">
33
<div class="si-split-part-title text-truncate">
4-
{{ heading | translate }}
4+
{{ heading() | translate }}
55
</div>
66
@if (!collapsedState()) {
77
<div class="si-split-part-actions">
8-
@for (action of actions; track $index) {
8+
@for (action of actions(); track $index) {
99
<button
1010
type="button"
1111
class="si-split-button"
@@ -18,30 +18,30 @@
1818
}
1919
</div>
2020
}
21-
@if (showCollapseButton) {
21+
@if (showCollapseButton()) {
2222
<div class="si-split-part-collapse-button">
2323
<button
2424
type="button"
2525
class="si-split-button"
26-
[attr.aria-label]="collapseLabel | translate"
26+
[attr.aria-label]="collapseLabel() | translate"
2727
(click)="toggleCollapse()"
2828
>
29-
<si-icon class="collapse-icon" [icon]="collapseIconClass" />
29+
<si-icon class="collapse-icon" [icon]="collapseIconClass()" />
3030
</button>
3131
</div>
3232
}
3333
</div>
3434
}
3535

36-
@if (headerTemplate) {
37-
<ng-container *ngTemplateOutlet="headerTemplate; context: headerContext" />
36+
@if (headerTemplate()) {
37+
<ng-container *ngTemplateOutlet="headerTemplate()!; context: headerContext" />
3838
}
3939

4040
<div
4141
class="si-split-part-content"
42-
[class.d-none]="!removeContentOnCollapse && collapsedState() && !collapseToMinSize"
42+
[class.d-none]="!removeContentOnCollapse() && collapsedState() && !collapseToMinSize()"
4343
>
44-
@if (!removeContentOnCollapse || !collapsedState()) {
44+
@if (!removeContentOnCollapse() || !collapsedState()) {
4545
<ng-content />
4646
}
4747
</div>

0 commit comments

Comments
 (0)