From c1177d47eaa598e15e0f7c9d19364a5875cfb0eb Mon Sep 17 00:00:00 2001 From: Goutham Ponnada Date: Thu, 9 Nov 2023 10:19:17 -0800 Subject: [PATCH] refactor(skeleton): refactor code --- .../ebay-skeleton-loader/examples/image.marko | 1 + .../examples/withContent.marko | 29 +++++++++++ .../ebay-skeleton-loader/index.marko | 51 +++++++++++-------- .../ebay-skeleton-loader/marko-tag.json | 19 ++++++- .../skeleton-loader.stories.js | 41 ++++++++++++++- 5 files changed, 117 insertions(+), 24 deletions(-) create mode 100644 src/components/ebay-skeleton-loader/examples/image.marko create mode 100644 src/components/ebay-skeleton-loader/examples/withContent.marko diff --git a/src/components/ebay-skeleton-loader/examples/image.marko b/src/components/ebay-skeleton-loader/examples/image.marko new file mode 100644 index 0000000000..be8152612c --- /dev/null +++ b/src/components/ebay-skeleton-loader/examples/image.marko @@ -0,0 +1 @@ + diff --git a/src/components/ebay-skeleton-loader/examples/withContent.marko b/src/components/ebay-skeleton-loader/examples/withContent.marko new file mode 100644 index 0000000000..e792d8c1d1 --- /dev/null +++ b/src/components/ebay-skeleton-loader/examples/withContent.marko @@ -0,0 +1,29 @@ +class { + onCreate() { + this.state = { + isLoading: true, + data: null, + }; + } + async getData() { + return new Promise((resolve, reject) => { + setTimeout(() => resolve("Button"), 2000); + }); + } + async onMount() { + try { + this.state.data = await this.getData(); + } catch (err) { + this.state.error = err; + } finally { + this.state.isLoading = false; + } + } +} + + + + + + ${state.data} + diff --git a/src/components/ebay-skeleton-loader/index.marko b/src/components/ebay-skeleton-loader/index.marko index f5514fe303..fdd9c855b5 100644 --- a/src/components/ebay-skeleton-loader/index.marko +++ b/src/components/ebay-skeleton-loader/index.marko @@ -7,9 +7,12 @@ static var ignoredAttributes = [ "multiline", "count", "columns", + "isVisible", ]; -$ var size = input.size || "default"; -$ var type = input.type || "button"; +static var validTypes = ["avatar", "button", "text", "form", "image", "tile"]; +static var validSizes = ["large", "small"]; +$ var size = validSizes.includes(input.size) ? input.size : "default"; +$ var type = validTypes.includes(input.type) ? input.type : "button"; $ var typeClass = type === "button" ? "skeleton--btn" : `skeleton--${type}`; $ var skeletonClass = ( size !== "default" @@ -19,23 +22,27 @@ $ var skeletonClass = ( : typeClass ); -