@itkyk/view
TypeScript icon, indicating that this package has built-in type declarations

1.2.4 • Public • Published

@itkyk/view

This module is JavaScript library.
It is designed based on component orientation. We recommend that you design your existing HTML template engine with Atomic design and use this library together.

Install

$ npm i @itkyk/view

How to use this module.

<div data-view="sample"></div>
import View from "@itkyk/view";
// OR
const View = require("@itkyk/view");

View.createComponent("sample", class extends View.Component {
  constructor(props) {
    super(props);
    this.init(()=> {
      console.log("Hello, World!") // output console "Hello,World!"
    })
  }
})

Methods

Ref

<div data-view="sample">
  <h1 data-sample-ref="title">Hello, World!</h1>
</div> 
View.creareComponent("sample", class extends View.Component {
  constructor(props) {
    super(props);
    this.init(() => {
      this.getHeaderText(); // output console "Hello, World!";
    })
  }
  
  getHeaderText = () => {
    const text = this.refs.title.innerText;
    console.log(text)
  }
})

Events

When add events for Node, you should set Data Attributes.

HTML

<div data-{data-view Name}-{eventName}="functionName"></div>

Example

<div data-view="sample">
  <!--- When you click button, popup "You clicked Alert! button." --->
  <button type="button" data-sample-click="onClick">Alert!</button>
</div>
createComponent("sample", class extends View.Component {
  constructor(props) {
    super(props);
    this.init(() => {});
  }
  
  onClick = (e: Event) => {
    const target = e.target;
    const text = `You clicked ${target.innerText} button.`
    alert(text);
  }
})

Event Type

event ex
click data-xx-click
scroll data-xx-scroll
load data-xx-load
mouseenter data-xx-mouseenter
mouseleave data-xx-mouseleave
mouseover data-xx-mouseover
change data-xx-change

Watch

This library has watch function like a NuxtJS.

createComponent("sample", class extends View.Component {
  private count: number;
  constructor(props) {
    super(props);
    this.count = 0;
    this.init(()=>{
      this.setCountUp();
    });
  }
  
  watch = () => {
    return {
      count: () => {
        // when this.count is updated, 
        // the function is executed below.
        console.log(`count: ${this.count}`);
      }
    }
  }
  
  setCountUp = () => {
    setInterval(() => {
      this.count ++;
    }, 1000)
  }
})

style

This library includes EmotionJS.

<div data-view="sample">
  <div data-sample-css="red-block"></div>
  <div data-sample-css="blue-block"></div>
  <div data-sample-css="green-block"></div>
</div>
import {css} from "@emotion/css";
createComponent("sample", class extends View.Component {
  constructor(props) {
    super(props);
    this.init(()=>{});
  }
  
  style = () => {
    const block = css({
      width: "100px",
      height: "100px"
    })
    return {
      "red-block": css(block, {
        backgroundColor: "red"
      }),
      "blue-block": css(clock, {
        backgroundColor: "blue"
      }),
      "green-block"; css(block, {
        backgroundColor: "greeen"
      })
    }
  }
})

this variables

<!--- Exsample --->
<div data-view="sample">
  <h1 data-sample-ref="title">Hello, world!</h1>
</div>
id value ex
section HTMLElement <div data-view="sample"></div>
refs Record<string, HTMLElement> this.refs.title ▼
<h1 data-sample-ref="title">Hello, world!</h1>

Readme

Keywords

none

Package Sidebar

Install

npm i @itkyk/view

Weekly Downloads

0

Version

1.2.4

License

ISC

Unpacked Size

30.5 kB

Total Files

7

Last publish

Collaborators

  • i_takayuki