0.6.0-alpha.1 • Published 1 year ago

compostate-element v0.6.0-alpha.1

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

1 year ago

0.6.0-alpha.1

1 year ago

0.6.0-alpha.0

1 year ago

0.5.0

2 years ago

0.3.0

2 years ago

0.4.0

2 years ago

0.2.1-beta.10

3 years ago

0.2.1-beta.8

3 years ago

0.2.1-beta.9

3 years ago

0.2.1-beta.2

3 years ago

0.2.1-beta.3

3 years ago

0.2.1-beta.6

3 years ago

0.2.1-beta.4

3 years ago

0.2.1-beta.5

3 years ago

0.2.1-beta.0

3 years ago

0.2.1-beta.1

3 years ago

0.2.1-no-vdom.61

3 years ago

0.2.1-no-vdom.60

3 years ago

0.2.1-no-vdom.57

3 years ago

0.2.1-no-vdom.58

3 years ago

0.2.1-no-vdom.53

3 years ago

0.2.1-no-vdom.54

3 years ago

0.2.1-no-vdom.52

3 years ago

0.2.1-no-vdom.59

3 years ago

0.2.1-no-vdom.50

3 years ago

0.2.1-no-vdom.35

3 years ago

0.2.1-no-vdom.36

3 years ago

0.2.1-no-vdom.33

3 years ago

0.2.1-no-vdom.34

3 years ago

0.2.1-no-vdom.31

3 years ago

0.2.1-no-vdom.32

3 years ago

0.2.1-no-vdom.51

3 years ago

0.2.1-no-vdom.39

3 years ago

0.2.1-no-vdom.37

3 years ago

0.2.1-no-vdom.38

3 years ago

0.2.1-no-vdom.46

3 years ago

0.2.1-no-vdom.47

3 years ago

0.2.1-no-vdom.44

3 years ago

0.2.1-no-vdom.42

3 years ago

0.2.1-no-vdom.43

3 years ago

0.2.1-no-vdom.40

3 years ago

0.2.1-no-vdom.49

3 years ago

0.2.1-no-vdom.24

3 years ago

0.2.1-no-vdom.25

3 years ago

0.2.1-no-vdom.28

3 years ago

0.2.1-no-vdom.29

3 years ago

0.2.1-no-vdom.26

3 years ago

0.2.1-no-vdom.27

3 years ago

0.2.1-no-vdom.12

3 years ago

0.2.1-no-vdom.16

3 years ago

0.2.1-no-vdom.11

3 years ago

0.2.1-no-vdom.10

3 years ago

0.2.1-no-vdom.7

3 years ago

0.2.1-alpha.19

3 years ago

0.2.1-no-vdom.6

3 years ago

0.2.1-no-vdom.5

3 years ago

0.2.1-no-vdom.1

3 years ago

0.2.1-no-vdom.0

3 years ago

0.2.1-alpha.17

3 years ago

0.2.1-alpha.11

3 years ago

0.2.1-alpha.7

3 years ago

0.2.1-alpha.8

3 years ago

0.2.1-alpha.5

3 years ago

0.2.1-alpha.4

3 years ago

0.2.1-alpha.0

3 years ago