Skip to content

Commit 34c3e25

Browse files
committed
Failing tests: not updating
1 parent 98d8733 commit 34c3e25

File tree

2 files changed

+16
-10
lines changed

2 files changed

+16
-10
lines changed

src/processors.ts

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import type {TemplatePart, TemplateTypeInit} from './types.js'
22
import {TemplateInstance} from './template-instance.js'
3-
import {AttributeTemplatePart} from './attribute-template-part.js'
43
import {InnerTemplatePart} from './inner-template-part.js'
4+
import {AttributeTemplatePart} from './attribute-template-part.js'
55

66
type PartProcessor = (part: TemplatePart, value: unknown, state: unknown) => void
77

@@ -21,16 +21,22 @@ export function createProcessor(processPart: PartProcessor): TemplateTypeInit {
2121
}
2222
}
2323

24-
export function processPropertyIdentity(part: TemplatePart, value: unknown, state: unknown): void {
24+
export function processPropertyIdentity(part: TemplatePart, value: unknown, state?: unknown): void {
2525
if (part instanceof InnerTemplatePart) {
26-
part.template.content.replaceChildren(new TemplateInstance(part.template, state))
26+
const instance = new TemplateInstance(part.template, state)
27+
part.template.content.replaceChildren(instance)
2728
} else {
2829
part.value = value instanceof Node ? value : String(value)
2930
}
3031
}
3132

32-
export function processBooleanAttribute(part: TemplatePart, value: unknown): boolean {
33-
if (
33+
export function processBooleanAttribute(part: TemplatePart, value: unknown, state?: unknown): boolean {
34+
if (part instanceof InnerTemplatePart) {
35+
const instance = new TemplateInstance(part.template, state, propertyIdentityOrBooleanAttribute)
36+
part.template.content.replaceChildren(instance)
37+
38+
return true
39+
} else if (
3440
typeof value === 'boolean' &&
3541
part instanceof AttributeTemplatePart &&
3642
typeof part.element[part.attributeName as keyof Element] === 'boolean'
@@ -44,7 +50,7 @@ export function processBooleanAttribute(part: TemplatePart, value: unknown): boo
4450
export const propertyIdentity = createProcessor(processPropertyIdentity)
4551
export const propertyIdentityOrBooleanAttribute = createProcessor(
4652
(part: TemplatePart, value: unknown, state: unknown) => {
47-
if (!processBooleanAttribute(part, value)) {
53+
if (!processBooleanAttribute(part, value, state)) {
4854
processPropertyIdentity(part, value, state)
4955
}
5056
},

test/template-instance.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -384,7 +384,7 @@ describe('template-instance', () => {
384384
part.replace()
385385
}
386386
} else {
387-
processPropertyIdentity(part, value, state)
387+
processPropertyIdentity(part, value)
388388
}
389389
})
390390
const template = Object.assign(document.createElement('template'), {
@@ -399,12 +399,12 @@ describe('template-instance', () => {
399399
expect(root.innerHTML).to.equal('x')
400400
})
401401

402-
it('makes outer state available to InnerTemplatePart elements without attributes', () => {
402+
it('makes outer state available to InnerTemplatePart elements without attributes with default propertyIdentity processing', () => {
403403
let callCount = 0
404-
const processor = createProcessor((part, value, state) => {
404+
const processor = createProcessor((part, value) => {
405405
if (part instanceof InnerTemplatePart && value === part.expression) {
406406
callCount += 1
407-
processPropertyIdentity(part, value, state)
407+
processPropertyIdentity(part, value)
408408
}
409409
})
410410
const template = Object.assign(document.createElement('template'), {

0 commit comments

Comments
 (0)