diff --git a/client/public/components/compact-listing.mjs b/client/public/components/compact-listing.mjs new file mode 100644 index 0000000..8faf313 --- /dev/null +++ b/client/public/components/compact-listing.mjs @@ -0,0 +1,22 @@ +import { RegisterComponent, Component, SideLoad } from './components.mjs'; + +class CompactProductListing extends Component { + static __IDENTIFY => 'compact-listing'; + + constructor() { + super(CompactProductListing); + } + + Render() { + return { + template: SideLoad('./components/templates/compact-listing.html'), + style: SideLoad('./components/css/compact-listing.css'), + }; + } + + OnceRendered() { + + } +} + +RegisterComponent(CompactProductListing); diff --git a/client/public/components/components.mjs b/client/public/components/components.mjs index 1c7f9be..d7a82dd 100644 --- a/client/public/components/components.mjs +++ b/client/public/components/components.mjs @@ -39,11 +39,12 @@ export class Component extends HTMLElement { // be sure to include them in the state to be sure that // they can be resolved for (const attribute of this.attributes) { - console.log(attribute); this.SetState({ ...this.state, [attribute.name]: attribute.value }); } - this.__INVOKE_RENDER(); + if (this.attributes.length === 0) { + this.__INVOKE_RENDER(); + } } disconnectedCallback() { @@ -82,7 +83,6 @@ export class Component extends HTMLElement { } async __INVOKE_RENDER() { - console.log('invoking render'); const res = this.Render(Object.bind(this)); if (!res.template || !res.style) { diff --git a/client/public/components/css/compact-listing.css b/client/public/components/css/compact-listing.css new file mode 100644 index 0000000..e69de29 diff --git a/client/public/components/css/storefront.css b/client/public/components/css/storefront.css new file mode 100644 index 0000000..e69de29 diff --git a/client/public/components/storefront.mjs b/client/public/components/storefront.mjs new file mode 100644 index 0000000..0c172f4 --- /dev/null +++ b/client/public/components/storefront.mjs @@ -0,0 +1,27 @@ +import { RegisterComponent, Component, SideLoad } from './components.mjs'; + +class StoreFront extends Component { + static __IDENTIFY() { return 'storefront'; } + + constructor() { + super(StoreFront); + } + + Render() { + return { + template: SideLoad('./components/templates/storefront.html'), + style: SideLoad('./components/css/storefront.css'), + }; + } + + OnceRendered() { + const items = ['item1', 'item2', 'item3', 'item4', 'item5', 'item6', 'item7', 'item8', 'item9', 'item10']; + for (const item of items) { + const itemElement = document.createElement('compact-listing-component'); + itemElement.setAttribute('item', item); + this.root.appendChild(itemElement); + } + } +} + +RegisterComponent(StoreFront); diff --git a/client/public/components/templates/compact-listing.html b/client/public/components/templates/compact-listing.html new file mode 100644 index 0000000..7f2c95f --- /dev/null +++ b/client/public/components/templates/compact-listing.html @@ -0,0 +1 @@ +{this.state.item} \ No newline at end of file diff --git a/client/public/components/templates/storefront.html b/client/public/components/templates/storefront.html new file mode 100644 index 0000000..466b38b --- /dev/null +++ b/client/public/components/templates/storefront.html @@ -0,0 +1,3 @@ +
+ +
diff --git a/client/public/index.html b/client/public/index.html index 7bbf779..b7eb9a3 100644 --- a/client/public/index.html +++ b/client/public/index.html @@ -12,6 +12,8 @@ + + @@ -21,13 +23,8 @@ - - -
- Today's Top Picks -
+ -