From 460602c7483dbc560484142be9287c3207086426 Mon Sep 17 00:00:00 2001 From: Filip Siderov Date: Wed, 17 Nov 2021 18:14:41 +0200 Subject: [PATCH 1/2] fix(ui5-badge): allow usage of html element in the default slot --- packages/main/src/Badge.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/main/src/Badge.js b/packages/main/src/Badge.js index 02f0d39d9e77..59808a1e7365 100644 --- a/packages/main/src/Badge.js +++ b/packages/main/src/Badge.js @@ -67,6 +67,7 @@ const metadata = { * @public */ "default": { + propertyName: "text", type: Node, }, @@ -144,7 +145,7 @@ class Badge extends UI5Element { } get hasText() { - return !!this.textContent.trim().length; + return !!this.text.length; } get hasIcon() { From c9738cda2515f3fdc551febab53cc265ce212706 Mon Sep 17 00:00:00 2001 From: Filip Siderov Date: Mon, 29 Nov 2021 17:35:21 +0200 Subject: [PATCH 2/2] fix comments --- packages/base/src/util/isDefaultSlotProvided.js | 8 ++++++++ packages/main/src/Badge.js | 4 ++-- packages/main/src/Button.js | 6 ++---- 3 files changed, 12 insertions(+), 6 deletions(-) create mode 100644 packages/base/src/util/isDefaultSlotProvided.js diff --git a/packages/base/src/util/isDefaultSlotProvided.js b/packages/base/src/util/isDefaultSlotProvided.js new file mode 100644 index 000000000000..c9df3e67914d --- /dev/null +++ b/packages/base/src/util/isDefaultSlotProvided.js @@ -0,0 +1,8 @@ +const isDefaultSlotProvided = element => { + return Array.from(element.childNodes).filter(node => { + return node.nodeType !== Node.COMMENT_NODE + && (node.nodeType !== Node.TEXT_NODE || node.nodeValue.trim().length !== 0); + }).length; +}; + +export default isDefaultSlotProvided; diff --git a/packages/main/src/Badge.js b/packages/main/src/Badge.js index 59808a1e7365..3625f2c90794 100644 --- a/packages/main/src/Badge.js +++ b/packages/main/src/Badge.js @@ -1,6 +1,7 @@ import UI5Element from "@ui5/webcomponents-base/dist/UI5Element.js"; import litRender from "@ui5/webcomponents-base/dist/renderer/LitRenderer.js"; import { getI18nBundle } from "@ui5/webcomponents-base/dist/i18nBundle.js"; +import isDefaultSlotProvided from "@ui5/webcomponents-base/dist/util/isDefaultSlotProvided.js"; // Template import BadgeTemplate from "./generated/templates/BadgeTemplate.lit.js"; @@ -67,7 +68,6 @@ const metadata = { * @public */ "default": { - propertyName: "text", type: Node, }, @@ -145,7 +145,7 @@ class Badge extends UI5Element { } get hasText() { - return !!this.text.length; + return isDefaultSlotProvided(this); } get hasIcon() { diff --git a/packages/main/src/Button.js b/packages/main/src/Button.js index 5589c42bbba2..6e25658b96c0 100644 --- a/packages/main/src/Button.js +++ b/packages/main/src/Button.js @@ -10,6 +10,7 @@ import { isCombi, isSafari, } from "@ui5/webcomponents-base/dist/Device.js"; +import isDefaultSlotProvided from "@ui5/webcomponents-base/dist/util/isDefaultSlotProvided.js"; import ButtonDesign from "./types/ButtonDesign.js"; import ButtonTemplate from "./generated/templates/ButtonTemplate.lit.js"; import Icon from "./Icon.js"; @@ -421,10 +422,7 @@ class Button extends UI5Element { } get isIconOnly() { - return !Array.from(this.childNodes).filter(node => { - return node.nodeType !== Node.COMMENT_NODE - && (node.nodeType !== Node.TEXT_NODE || node.nodeValue.trim().length !== 0); - }).length; + return !isDefaultSlotProvided(this); } get accInfo() {