diff options
author | (quasar) nebula <qznebula@protonmail.com> | 2023-04-15 19:35:51 -0300 |
---|---|---|
committer | (quasar) nebula <qznebula@protonmail.com> | 2023-04-15 19:35:51 -0300 |
commit | 27a1df82ac455a44965cbcaef3e3bd1765d95942 (patch) | |
tree | 047df07887a7d232a818b3c883f4d9a0542286b3 | |
parent | 357015de21e7e427f25b31a2622fb9182ec292e1 (diff) |
html, test: default slots only for null, not falsey values
-rw-r--r-- | src/util/html.js | 2 | ||||
-rw-r--r-- | test/unit/util/html.js | 31 |
2 files changed, 31 insertions, 2 deletions
diff --git a/src/util/html.js b/src/util/html.js index 65a06440..a1d6962a 100644 --- a/src/util/html.js +++ b/src/util/html.js @@ -691,7 +691,7 @@ export class Template { return providedValue; } - if (providedValue) { + if (providedValue !== null) { return providedValue; } diff --git a/test/unit/util/html.js b/test/unit/util/html.js index 97bc1e5c..6a352a3b 100644 --- a/test/unit/util/html.js +++ b/test/unit/util/html.js @@ -498,7 +498,7 @@ t.test(`Tag.toString (custom attributes)`, t => { }); t.test(`html.template`, t => { - t.plan(10); + t.plan(11); let contentCalls; @@ -544,6 +544,35 @@ t.test(`html.template`, t => { t.equal(contentCalls, 1); t.equal(template2.toString(), `<sub>r-r-really, me?</sub>`); t.equal(contentCalls, 2); + + // 11: slot uses default only for null, not falsey + + const template3 = html.template({ + slots: { + slot1: {type: 'number', default: 123}, + slot2: {type: 'number', default: 456}, + slot3: {type: 'boolean', default: true}, + slot4: {type: 'string', default: 'banana'}, + }, + + content(slots) { + return html.tag('span', [ + slots.slot1, + slots.slot2, + slots.slot3, + `(length: ${slots.slot4.length})`, + ].join(' ')); + }, + }); + + template3.setSlots({ + slot1: null, + slot2: 0, + slot3: false, + slot4: '', + }); + + t.equal(template3.toString(), `<span>123 0 false (length: 0)</span>`); }); t.test(`Template - description errors`, t => { |