flash.js
export default function flash(element) { requestAnimationFrame(() => { element.style.transition = 'none'; element.style.color = 'rgba(255,62,0,1)'; element.style.backgroundColor = 'rgba(255,62,0,0.2)'; setTimeout(() => { element.style.transition = 'color 1s, background 1s'; element.style.color = ''; element.style.backgroundColor = ''; }); }); }
ImmutableTodo.svelte
<svelte:options immutable/> <script> import { afterUpdate } from 'svelte'; import flash from '../sources/flash'; export let todo; let div; afterUpdate(() => { flash(div); }); </script> <!-- the text will flash red whenever the `todo` object changes --> <div bind:this={div} on:click> {todo.done ? '๐': ''} {todo.text} </div> <style> div { cursor: pointer; line-height: 1.5; } </style>
MutableTodo.svelte
<script> import { afterUpdate } from 'svelte'; import flash from '../sources/flash'; export let todo; let div; afterUpdate(() => { flash(div); }); </script> <!-- the text will flash red whenever the `todo` object changes --> <div bind:this={div} on:click> {todo.done ? '๐': ''} {todo.text} </div> <style> div { cursor: pointer; line-height: 1.5; } </style>
Immutable.svelte
<script> import ImmutableTodo from './components/ImmutableTodo.svelte'; import MutableTodo from './components/MutableTodo.svelte'; let todos = [ { id: 1, done: true, text: 'wash the car' }, { id: 2, done: false, text: 'take the dog for a walk' }, { id: 3, done: false, text: 'mow the lawn' } ]; function toggle(id) { todos = todos.map(todo => { if (todo.id === id) { // return a new object return { id, done: !todo.done, text: todo.text }; } // return the same object return todo; }); } </script> <h2>Immutable</h2> {#each todos as todo} <ImmutableTodo {todo} on:click="{() => toggle(todo.id)}"/> {/each} <h2>Mutable</h2> {#each todos as todo} <MutableTodo {todo} on:click="{() => toggle(todo.id)}"/> {/each}
dan import ke App.svelte
<CRUD /> <CircleDrawer /> <!-- <HackerNews /> --> <Immutable />
hasilnya akan seperti ini …
Okay sudah berhasil ya…. berikut link github ada disini … cya….