0.6.0-alpha.1 • Published 3 years ago

compostate-element v0.6.0-alpha.1

Weekly downloads
-
License
MIT
Repository
github
Last release
3 years ago

compostate-element

Web Components bindings for compostate

NPM JavaScript Style Guide

Install

npm install --save compostate compostate-element
yarn add compostate compostate-element
pnpm add compostate compostate-element

Usage

import { ref, effect } from 'compostate';
import { setRenderer, define } from 'compostate-element';
import { render, html } from 'lit-html';

// Setup the element's renderer using Lit
// Any renderer should work
setRenderer((root, result) => {
  render(result, root);
});

// Define an element
define({
  // Name of the element (required)
  name: 'counter-title',
  // Props to be tracked (required)
  props: ['value'],
  // Element setup
  setup(props) {
    // The setup method is run only once
    // it's useful to setup your component logic here.
    effect(() => {
      // Props are reactive
      console.log(`Current count: ${props.value}`);
    });

    // Return the template atom
    // The template's returned value depends
    // on the renderer's templates.
    // For example, you can return a JSX markup
    // if the renderer used is React or Preact.
    return () => (
      html`
        <h1>Count: ${props.value}</h1>
      `
    );
  },
});

define({
  name: 'counter-button',
  setup() {
    const count = ref(0);

    function increment() {
      count.value += 1;
    }

    function decrement() {
      count.value -= 1;
    }

    return () => (
      html`
        <button @click=${increment}>Increment</button>
        <button @click=${decrement}>Decrement</button>
        <counter-title value="${count.value}"></counter-title>
      `
    );
  },
});

License

MIT © lxsmnsyc

0.5.1

3 years ago

0.6.0-alpha.1

3 years ago

0.6.0-alpha.0

3 years ago

0.5.0

4 years ago

0.3.0

4 years ago

0.4.0

4 years ago

0.2.1-beta.10

5 years ago

0.2.1-beta.8

5 years ago

0.2.1-beta.9

5 years ago

0.2.1-beta.2

5 years ago

0.2.1-beta.3

5 years ago

0.2.1-beta.6

5 years ago

0.2.1-beta.4

5 years ago

0.2.1-beta.5

5 years ago

0.2.1-beta.0

5 years ago

0.2.1-beta.1

5 years ago

0.2.1-no-vdom.61

5 years ago

0.2.1-no-vdom.60

5 years ago

0.2.1-no-vdom.57

5 years ago

0.2.1-no-vdom.58

5 years ago

0.2.1-no-vdom.53

5 years ago

0.2.1-no-vdom.54

5 years ago

0.2.1-no-vdom.52

5 years ago

0.2.1-no-vdom.59

5 years ago

0.2.1-no-vdom.50

5 years ago

0.2.1-no-vdom.35

5 years ago

0.2.1-no-vdom.36

5 years ago

0.2.1-no-vdom.33

5 years ago

0.2.1-no-vdom.34

5 years ago

0.2.1-no-vdom.31

5 years ago

0.2.1-no-vdom.32

5 years ago

0.2.1-no-vdom.51

5 years ago

0.2.1-no-vdom.39

5 years ago

0.2.1-no-vdom.37

5 years ago

0.2.1-no-vdom.38

5 years ago

0.2.1-no-vdom.46

5 years ago

0.2.1-no-vdom.47

5 years ago

0.2.1-no-vdom.44

5 years ago

0.2.1-no-vdom.42

5 years ago

0.2.1-no-vdom.43

5 years ago

0.2.1-no-vdom.40

5 years ago

0.2.1-no-vdom.49

5 years ago

0.2.1-no-vdom.24

5 years ago

0.2.1-no-vdom.25

5 years ago

0.2.1-no-vdom.28

5 years ago

0.2.1-no-vdom.29

5 years ago

0.2.1-no-vdom.26

5 years ago

0.2.1-no-vdom.27

5 years ago

0.2.1-no-vdom.12

5 years ago

0.2.1-no-vdom.16

5 years ago

0.2.1-no-vdom.11

5 years ago

0.2.1-no-vdom.10

5 years ago

0.2.1-no-vdom.7

5 years ago

0.2.1-alpha.19

5 years ago

0.2.1-no-vdom.6

5 years ago

0.2.1-no-vdom.5

5 years ago

0.2.1-no-vdom.1

5 years ago

0.2.1-no-vdom.0

5 years ago

0.2.1-alpha.17

5 years ago

0.2.1-alpha.11

5 years ago

0.2.1-alpha.7

5 years ago

0.2.1-alpha.8

5 years ago

0.2.1-alpha.5

5 years ago

0.2.1-alpha.4

5 years ago

0.2.1-alpha.0

5 years ago