0.6.0-alpha.1 • Published 2 years ago

compostate-element v0.6.0-alpha.1

Weekly downloads
-
License
MIT
Repository
github
Last release
2 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

2 years ago

0.6.0-alpha.1

2 years ago

0.6.0-alpha.0

2 years ago

0.5.0

3 years ago

0.3.0

3 years ago

0.4.0

3 years ago

0.2.1-beta.10

4 years ago

0.2.1-beta.8

4 years ago

0.2.1-beta.9

4 years ago

0.2.1-beta.2

4 years ago

0.2.1-beta.3

4 years ago

0.2.1-beta.6

4 years ago

0.2.1-beta.4

4 years ago

0.2.1-beta.5

4 years ago

0.2.1-beta.0

4 years ago

0.2.1-beta.1

4 years ago

0.2.1-no-vdom.61

4 years ago

0.2.1-no-vdom.60

4 years ago

0.2.1-no-vdom.57

4 years ago

0.2.1-no-vdom.58

4 years ago

0.2.1-no-vdom.53

4 years ago

0.2.1-no-vdom.54

4 years ago

0.2.1-no-vdom.52

4 years ago

0.2.1-no-vdom.59

4 years ago

0.2.1-no-vdom.50

4 years ago

0.2.1-no-vdom.35

4 years ago

0.2.1-no-vdom.36

4 years ago

0.2.1-no-vdom.33

4 years ago

0.2.1-no-vdom.34

4 years ago

0.2.1-no-vdom.31

4 years ago

0.2.1-no-vdom.32

4 years ago

0.2.1-no-vdom.51

4 years ago

0.2.1-no-vdom.39

4 years ago

0.2.1-no-vdom.37

4 years ago

0.2.1-no-vdom.38

4 years ago

0.2.1-no-vdom.46

4 years ago

0.2.1-no-vdom.47

4 years ago

0.2.1-no-vdom.44

4 years ago

0.2.1-no-vdom.42

4 years ago

0.2.1-no-vdom.43

4 years ago

0.2.1-no-vdom.40

4 years ago

0.2.1-no-vdom.49

4 years ago

0.2.1-no-vdom.24

4 years ago

0.2.1-no-vdom.25

4 years ago

0.2.1-no-vdom.28

4 years ago

0.2.1-no-vdom.29

4 years ago

0.2.1-no-vdom.26

4 years ago

0.2.1-no-vdom.27

4 years ago

0.2.1-no-vdom.12

4 years ago

0.2.1-no-vdom.16

4 years ago

0.2.1-no-vdom.11

4 years ago

0.2.1-no-vdom.10

4 years ago

0.2.1-no-vdom.7

4 years ago

0.2.1-alpha.19

4 years ago

0.2.1-no-vdom.6

4 years ago

0.2.1-no-vdom.5

4 years ago

0.2.1-no-vdom.1

4 years ago

0.2.1-no-vdom.0

4 years ago

0.2.1-alpha.17

4 years ago

0.2.1-alpha.11

4 years ago

0.2.1-alpha.7

4 years ago

0.2.1-alpha.8

4 years ago

0.2.1-alpha.5

4 years ago

0.2.1-alpha.4

4 years ago

0.2.1-alpha.0

4 years ago