Skip to content

Commit 700fc1f

Browse files
committed
fix tests, cleanup code
1 parent 9deb152 commit 700fc1f

File tree

4 files changed

+20
-29
lines changed

4 files changed

+20
-29
lines changed

packages/angular-table/src/flex-render.ts

Lines changed: 11 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -73,13 +73,13 @@ export class FlexRenderDirective<TProps extends NonNullable<unknown>>
7373
) {}
7474

7575
ngOnChanges(changes: SimpleChanges) {
76-
if (changes['content']) {
77-
this.renderFlags |= FlexRenderFlags.ContentChanged
78-
}
7976
if (changes['props']) {
8077
this.renderFlags |= FlexRenderFlags.PropsReferenceChanged
8178
}
82-
this.checkView()
79+
if (changes['content']) {
80+
this.renderFlags |= FlexRenderFlags.ContentChanged
81+
this.checkView()
82+
}
8383
}
8484

8585
ngDoCheck(): void {
@@ -90,25 +90,18 @@ export class FlexRenderDirective<TProps extends NonNullable<unknown>>
9090
return
9191
}
9292

93-
if (
94-
this.renderFlags &
95-
(FlexRenderFlags.PropsReferenceChanged | FlexRenderFlags.ContentChanged)
96-
) {
97-
return
98-
}
99-
10093
const contentToRender = this.#getContentValue(this.props)
10194

10295
if (contentToRender.kind === 'null' || !this.renderView) {
10396
this.renderFlags |= FlexRenderFlags.Creation
10497
} else {
10598
this.renderView.setContent(contentToRender.content)
106-
const previousContentInfo = this.renderView.previousContent
99+
this.renderFlags |= FlexRenderFlags.DirtyCheck
107100

108-
this.renderFlags |=
109-
contentToRender.kind === previousContentInfo.kind
110-
? FlexRenderFlags.DirtyCheck
111-
: FlexRenderFlags.ContentChanged
101+
const previousContentInfo = this.renderView.previousContent
102+
if (contentToRender.kind !== previousContentInfo.kind) {
103+
this.renderFlags |= FlexRenderFlags.ContentChanged
104+
}
112105
}
113106

114107
this.checkView()
@@ -126,12 +119,11 @@ export class FlexRenderDirective<TProps extends NonNullable<unknown>>
126119
if (this.renderFlags & FlexRenderFlags.PropsReferenceChanged) {
127120
if (this.renderView) this.renderView.updateProps(this.props)
128121
this.renderFlags &= ~FlexRenderFlags.PropsReferenceChanged
129-
return
130122
}
131123

132124
if (this.renderFlags & FlexRenderFlags.DirtyCheck) {
133125
if (this.renderView) this.renderView.dirtyCheck()
134-
this.renderFlags &= ~FlexRenderFlags.DirtyCheck
126+
this.renderFlags = FlexRenderFlags.Pristine
135127
}
136128
}
137129

@@ -143,9 +135,7 @@ export class FlexRenderDirective<TProps extends NonNullable<unknown>>
143135
return
144136
}
145137
this.renderView = this.#renderViewByContent(resolvedContent)
146-
this.renderFlags &= ~(
147-
FlexRenderFlags.ContentChanged | FlexRenderFlags.PropsReferenceChanged
148-
)
138+
this.renderFlags = FlexRenderFlags.Pristine
149139
}
150140

151141
#renderViewByContent(

packages/angular-table/src/flex-render/flags.ts

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,21 +3,25 @@ export enum FlexRenderFlags {
33
* Whether the view has not been created yet or the current view will be cleared during the update phase.
44
*/
55
Creation = 1 << 0,
6+
/**
7+
* Whether the view is not dirty.
8+
*/
9+
Pristine = 1 << 1,
610
/**
711
* Indicates that the `content` property has changed or the view need a complete re-rendering.
812
* When this flag is enabled, the view is recreated from scratch after clearing the previous one.
913
*/
10-
ContentChanged = 1 << 1,
14+
ContentChanged = 1 << 2,
1115
/**
1216
* Indicates that the `props` property reference has changed.
1317
* When this flag is enabled, the view context is updated based on the type of the content.
1418
*
1519
* For Component view, inputs will be updated and view will be marked as dirty.
1620
* For TemplateRef and primitive values, view will be marked as dirty
1721
*/
18-
PropsReferenceChanged = 1 << 2,
22+
PropsReferenceChanged = 1 << 3,
1923
/**
2024
* Indicates the current rendered view has to be dirty checked.
2125
*/
22-
DirtyCheck = 1 << 3,
26+
DirtyCheck = 1 << 4,
2327
}

packages/angular-table/src/flex-render/view.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -125,6 +125,7 @@ export class FlexRenderComponentView extends FlexRenderView<
125125
if (this.view.eqType(this.content.content)) {
126126
this.view.update(this.content.content)
127127
}
128+
this.view.markAsDirty()
128129
break
129130
}
130131
}

packages/angular-table/tests/flex-render.test.ts

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -138,11 +138,7 @@ describe('FlexRenderDirective', () => {
138138
class FakeComponent {
139139
row = input.required<{ property: string }>()
140140

141-
constructor() {
142-
effect(() => {
143-
console.log('row', this.row())
144-
})
145-
}
141+
constructor() {}
146142
}
147143

148144
const fixture = TestBed.createComponent(TestRenderComponent)

0 commit comments

Comments
 (0)