Skip to content

ketch-in/components

Repository files navigation

KETCH IN COMPONENTS


Features

  • Toast UI
  • Modal UI
  • Select Modal UI
  • Toolbar UI

Setup

npm install

And then you can access to http://127.0.0.1:4173/example

Command

Run

npm run dev

Build

npm run build

Usage

Toast

const toastRoot = document.querySelector("#toast");
const { ToastController } = window.ketchInComponents;
const toastController = new ToastController(toastRoot, { removeDelay: 2000 });

for (let i = 1; i < 5; i++) {
  setTimeout(() => {
    const p = document.createElement("p");
    p.innerText = `Toast ${i} TEST`;
    toastController.add({
      children: p,
      data: { i },
      momentDelay: 3000,
      onClick: (item) => {
        item.unmount(true);
        console.log(item.getData());
      },
      onClose: (item, action) => {
        console.log("456", i, item, action);
      },
    });
  }, i * 500);
}

Toolbar

const root = document.querySelector("#app");
const { ToolbarController } = window.ketchInComponents;
const toolbarController = new ToolbarController(root, {});

toolbarController.add({
  status: "KetchIn",
  handlePen: () => console.log("switch to drawing line mode"),
  handleShape: (selectedShape) =>
    console.log(`switch to drawing [${selectedShape.type}] shape mode`),
  // TODO: selectedShape 객체의 svg 필드 활용
  handleColor: (selectedColor) =>
    console.log(`pen color is now [${selectedColor}]`),
  onClear: () => console.log("clear canvas"),
});

Modal

const root = document.querySelector("#app");
const { ModalController } = window.ketchInComponents;
const modalController = new ModalController(root, {
  removeDelay: 2000,
  modalWidth: 200,
});

const p = document.createElement("p");
p.innerText = `Modal (${i})`;
modalController.add({
  children: p,
  onClose: (item) => {
    console.log(item);
  },
});

Select Modal

const { SelectModalController } = window.ketchInComponents;
const selectController = new SelectModalController(root, {
  removeDelay: 2000,
  modalWidth: 400,
});

const p = document.createElement("p");
p.innerText = `SelectModal TEST (${i})`;
selectController.add({
  children: p,
  buttons: { yes: "확인", no: "취소" },
  onClick: (item, id, label) => {
    console.log(item, id, label);
  },
});

License

ketch in components is MIT licensed.