-
Notifications
You must be signed in to change notification settings - Fork 0
Examples
Anil Maharjan edited this page Dec 16, 2020
·
5 revisions
<div id="my-component">
<div>
Count:
<span data-bind="count">
<!-- This placeholder will be updated with value of count state -->
</span>
</div>
<div>Show plus: <span data-bind="showPlus">x</span></div>
<div>Hide minus: <span data-bind="hideMinus">x</span></div>
<div class="buttons">
<!-- Increment button will be visible if showPlus state is set to true -->
<button id="increment" data-bind-visible="showPlus">+</button>
<button id="decrement" data-bind-hidden="hideMinus">-</button>
<!-- Bind attribute, state :: attr :: value, $ for stateValue placeholder -->
<button id="increment" data-bind-attr="disablePlus::disabled::">+</button>
<div>
Count:<span
data-bind-attr="count::style::font-size: $rem"
data-bind="count"
>x</span
>
</div>
<div>
NumberStatus:
<span data-bind-visible="numberStatus::medium">Medium</span>
<span data-bind-visible="numberStatus::max">Max</span>
<span data-bind-visible="numberStatus::min">Min</span>
</div>
</div>
</div>
import Comfey from 'comfey';
const app = new Comfey(document.getElementById('app'));
// Select buttons
const btnIncrement = document.getElementById('increment');
const btnDecrement = document.getElementById('decrement');
// Initialize states
const [, setShowPlus] = app.useState('showPlus', true);
const [, setHideMinus] = app.useState('hideMinus', false);
const [count, setCount] = app.useState('count', 3, countWatcher);
function countWatcher(newVal) {
if (newVal > 4) {
setShowPlus(false);
} else {
setShowPlus(true);
if (newVal < 1) {
setHideMinus(true);
} else {
setHideMinus(false);
}
}
}
// Button behaviours
btnIncrement.addEventListener('click', () => {
setCount(count() + 1);
});
btnDecrement.addEventListener('click', () => {
setCount(count() - 1);
});
Read more on ← Comfey Templating | Author's Blog