Skip to content

Commit 4769955

Browse files
authored
fix: modern host bindings and default standalone (#532)
1 parent 1fa393a commit 4769955

7 files changed

Lines changed: 20 additions & 32 deletions

projects/angular-split/src/lib/gutter/split-gutter-drag-handle.directive.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ import { GUTTER_NUM_TOKEN } from './gutter-num-token'
44

55
@Directive({
66
selector: '[asSplitGutterDragHandle]',
7-
standalone: true,
87
})
98
export class SplitGutterDragHandleDirective implements OnDestroy {
109
private readonly gutterNum = inject(GUTTER_NUM_TOKEN)

projects/angular-split/src/lib/gutter/split-gutter-dynamic-injector.directive.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@ interface SplitGutterDynamicInjectorTemplateContext {
1111
*/
1212
@Directive({
1313
selector: '[asSplitGutterDynamicInjector]',
14-
standalone: true,
1514
})
1615
export class SplitGutterDynamicInjectorDirective {
1716
private readonly vcr = inject(ViewContainerRef)

projects/angular-split/src/lib/gutter/split-gutter-exclude-from-drag.directive.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ import { GUTTER_NUM_TOKEN } from './gutter-num-token'
44

55
@Directive({
66
selector: '[asSplitGutterExcludeFromDrag]',
7-
standalone: true,
87
})
98
export class SplitGutterExcludeFromDragDirective implements OnDestroy {
109
private readonly gutterNum = inject(GUTTER_NUM_TOKEN)

projects/angular-split/src/lib/gutter/split-gutter.directive.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,6 @@ export interface SplitGutterTemplateContext {
3535

3636
@Directive({
3737
selector: '[asSplitGutter]',
38-
standalone: true,
3938
})
4039
export class SplitGutterDirective {
4140
readonly template = inject<TemplateRef<SplitGutterTemplateContext>>(TemplateRef)

projects/angular-split/src/lib/split-area/split-area.component.ts

Lines changed: 15 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
import {
22
ChangeDetectionStrategy,
33
Component,
4-
HostBinding,
54
Signal,
65
booleanAttribute,
76
computed,
@@ -16,7 +15,6 @@ import { SplitAreaSize, areaSizeTransform, boundaryAreaSizeTransform } from '../
1615

1716
@Component({
1817
selector: 'as-split-area',
19-
standalone: true,
2018
exportAs: 'asSplitArea',
2119
templateUrl: './split-area.component.html',
2220
styleUrl: './split-area.component.css',
@@ -27,6 +25,12 @@ import { SplitAreaSize, areaSizeTransform, boundaryAreaSizeTransform } from '../
2725
},
2826
],
2927
changeDetection: ChangeDetectionStrategy.OnPush,
28+
host: {
29+
'[class]': 'hostClasses()',
30+
'[style.grid-column]': 'hostGridColumnStyle()',
31+
'[style.grid-row]': 'hostGridRowStyle()',
32+
'[style.position]': 'hostPositionStyle()',
33+
},
3034
})
3135
export class SplitAreaComponent {
3236
protected readonly split = inject(SplitComponent)
@@ -58,28 +62,22 @@ export class SplitAreaComponent {
5862
*/
5963
readonly _normalizedMaxSize = computed(() => this.normalizeMaxSize())
6064
private readonly index = computed(() => this.split._areas().findIndex((area) => area === this))
61-
private readonly gridAreaNum = computed(() => this.index() * 2 + 1)
62-
private readonly hostClasses = computed(() =>
65+
protected readonly gridAreaNum = computed(() => this.index() * 2 + 1)
66+
protected readonly hostClasses = computed(() =>
6367
createClassesString({
6468
['as-split-area']: true,
6569
['as-min']: this.visible() && this._internalSize() === this._normalizedMinSize(),
6670
['as-max']: this.visible() && this._internalSize() === this._normalizedMaxSize(),
6771
['as-hidden']: !this.visible(),
6872
}),
6973
)
70-
71-
@HostBinding('class') protected get hostClassesBinding() {
72-
return this.hostClasses()
73-
}
74-
@HostBinding('style.grid-column') protected get hostGridColumnStyleBinding() {
75-
return this.split.direction() === 'horizontal' ? `${this.gridAreaNum()} / ${this.gridAreaNum()}` : undefined
76-
}
77-
@HostBinding('style.grid-row') protected get hostGridRowStyleBinding() {
78-
return this.split.direction() === 'vertical' ? `${this.gridAreaNum()} / ${this.gridAreaNum()}` : undefined
79-
}
80-
@HostBinding('style.position') protected get hostPositionStyleBinding() {
81-
return this.split._isDragging() ? 'relative' : undefined
82-
}
74+
protected readonly hostGridColumnStyle = computed(() =>
75+
this.split.direction() === 'horizontal' ? `${this.gridAreaNum()} / ${this.gridAreaNum()}` : undefined,
76+
)
77+
protected readonly hostGridRowStyle = computed(() =>
78+
this.split.direction() === 'vertical' ? `${this.gridAreaNum()} / ${this.gridAreaNum()}` : undefined,
79+
)
80+
protected readonly hostPositionStyle = computed(() => (this.split._isDragging() ? 'relative' : undefined))
8381

8482
private normalizeMinSize() {
8583
const defaultMinSize = 0

projects/angular-split/src/lib/split-custom-events-behavior.directive.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,6 @@ import { DOCUMENT } from '@angular/common'
3737
*/
3838
@Directive({
3939
selector: '[asSplitCustomEventsBehavior]',
40-
standalone: true,
4140
})
4241
export class SplitCustomEventsBehaviorDirective {
4342
private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef)

projects/angular-split/src/lib/split/split.component.ts

Lines changed: 5 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ import {
33
ChangeDetectionStrategy,
44
Component,
55
ElementRef,
6-
HostBinding,
76
InjectionToken,
87
NgZone,
98
afterRenderEffect,
@@ -84,6 +83,10 @@ export const SPLIT_AREA_CONTRACT = new InjectionToken<SplitAreaComponent>('Split
8483
templateUrl: './split.component.html',
8584
styleUrl: './split.component.css',
8685
changeDetection: ChangeDetectionStrategy.OnPush,
86+
host: {
87+
'[class]': 'hostClasses()',
88+
'[dir]': 'dir()',
89+
},
8790
})
8891
export class SplitComponent {
8992
private readonly document = inject(DOCUMENT)
@@ -131,7 +134,7 @@ export class SplitComponent {
131134
*/
132135
readonly _visibleAreas = computed(() => this._areas().filter((area) => area.visible()))
133136
private readonly gridTemplateColumnsStyle = computed(() => this.createGridTemplateColumnsStyle())
134-
private readonly hostClasses = computed(() =>
137+
protected readonly hostClasses = computed(() =>
135138
createClassesString({
136139
[`as-${this.direction()}`]: true,
137140
[`as-${this.unit()}`]: true,
@@ -151,14 +154,6 @@ export class SplitComponent {
151154
*/
152155
readonly _alignedVisibleAreasSizes = computed(() => this.createAlignedVisibleAreasSize())
153156

154-
@HostBinding('class') protected get hostClassesBinding() {
155-
return this.hostClasses()
156-
}
157-
158-
@HostBinding('dir') protected get hostDirBinding() {
159-
return this.dir()
160-
}
161-
162157
constructor() {
163158
if (isDevMode()) {
164159
// Logs warnings to console when the provided areas sizes are invalid

0 commit comments

Comments
 (0)