Skip to content

Commit 2c723d4

Browse files
committed
Failing tests: not updating
1 parent 72b1793 commit 2c723d4

2 files changed

Lines changed: 16 additions & 10 deletions

File tree

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
@@ -388,7 +388,7 @@ describe('template-instance', () => {
388388
part.replace()
389389
}
390390
} else {
391-
processPropertyIdentity(part, value, state)
391+
processPropertyIdentity(part, value)
392392
}
393393
})
394394
const template = Object.assign(document.createElement('template'), {
@@ -403,12 +403,12 @@ describe('template-instance', () => {
403403
expect(root.innerHTML).to.equal('x')
404404
})
405405

406-
it('makes outer state available to InnerTemplatePart elements without attributes', () => {
406+
it('makes outer state available to InnerTemplatePart elements without attributes with default propertyIdentity processing', () => {
407407
let callCount = 0
408-
const processor = createProcessor((part, value, state) => {
408+
const processor = createProcessor((part, value) => {
409409
if (part instanceof InnerTemplatePart && value === part.expression) {
410410
callCount += 1
411-
processPropertyIdentity(part, value, state)
411+
processPropertyIdentity(part, value)
412412
}
413413
})
414414
const template = Object.assign(document.createElement('template'), {

0 commit comments

Comments
 (0)