UNPKG

oxe

Version:

A mighty tiny web components framework/library

241 lines (207 loc) 8.63 kB
import Code from '../modules/code.js'; import Color from '../modules/color.js'; const { Component } = Oxe; export default class BindersRoute extends Component { static attributes = [ 'test' ]; async attributed () { console.log(arguments); } async connected () { console.log('binders connected'); } title = 'Binders'; data = { text: 'Hello World', checked: true, check: 'checked', checkResult: checked => checked ? 'checked' : '', checkInput () { console.log(this.checked); }, r1: undefined, r2: undefined, color: Color(), colorChange () { this.color = Color(); }, active: true, lightblue: active => active ? 'lightblue' : '', classToggle () { this.active = !this.active; }, value: { text: 'hello world', upper: text => text?.toUpperCase(), }, fruits: [ 'apple', 'orange', 'tomato' ], log () { console.log(arguments); }, selectedPlant: undefined, selectEachResult: 'orange', multipleSelectResult: [], radio: false, agree: true, lastName: 'bond', firstName: 'james', favoriteNumber: undefined, submit (form) { console.log(form); }, hyperText: '<strong>Hyper Text Markup Language</strong>', }; css = /*css*/` .default { border: solid 5px transparent; } .lightblue { border-color: lightblue; } `; html = /*html*/ ` <section id="text"> <h3>Text Binder</h3> <pre>${Code(`<span>{{text}}</span>`, true)}</pre> <pre>${Code(`<span>{{text}}</span>`)}</pre> </section> <section id="checked"> <h3>Checked Binder</h3> <br> <pre>${Code(`<input type="checkbox" value="{{checked}}" checked="{{checked = $checked}}">`, true)}</pre> <pre>${Code(`<input type="checkbox" value="{{checked}}"{{checked ? ' checked' : ''}}>`)}</pre> <br> <label> <input value="{{checked}}" checked="{{checked = $checked}}" type="checkbox" onchange="{{checkInput()}}"> Checkbox </label> <br> <pre>${Code(` <input type="radio" name="radio" value="one"> <input type="radio" name="radio" value="two"> `, true)}</pre> <pre>${Code(` <input type="radio" name="radio" value="one"{{r1 ? ' checked': ''}}> <input type="radio" name="radio" value="two"{{r2 ? ' checked': ''}}> `)}</pre> <br> <label> <input type="radio" name="radio" value="one" checked="{{r1=$checked}}"> Radio One </label> <label> <input type="radio" name="radio" value="two" checked="{{r2=$checked}}"> Radio Two </label> </section> <section id="style"> <h2>Style Binder</h2> <br> <pre style="color: {{color}}">${Code(`<div style="color: {{color}}">Look at my style</div>`, true)}</pre> <pre style="color: {{color}}">${Code(`<div style="color: {{color}}">Look at my style</div>`)}</pre> <br> <button onclick="{{colorChange()}}">Change Color</button> </section> <section id="class"> <h3>Class Binder</h3> <br> <pre class="default {{lightblue(active)}}">${Code(`class="default {{lightblue(active)}}"`, true)}</pre> <pre class="default {{lightblue(active)}}">${Code(`class="default {{lightblue(active)}}"`)}</pre> <pre class="default {{active ? 'lightblue' : ''}}">${Code(`class="default {{active ? 'lightblue' : ''}}"`, true)}</pre> <pre class="default {{active ? 'lightblue' : ''}}">${Code(`class="default {{active ? 'lightblue' : ''}}"`)}</pre> <br> <button onclick="{{classToggle()}}">Toggle Active</button> </section> <section id="value"> <h3>Value Binder</h3> <br> <pre>${Code(` <strong>{{value.text}}</strong> <input value="{{value.text = $value.toUpperCase() }}"> <input value="{{(value.text = $value).toLowerCase()}}">`, true)}</pre> <br> <strong>{{value.text}}</strong> <br> <input value="{{value.text = $value.toUpperCase() }}"> <input value="{{(value.text = $value).toLowerCase()}}"> </section> <section id="each"> <h3>Each Binder</h3> <br> <pre>${Code(` <div each="{{key, index, fruit of fruits}}"> <div id="{{fruit.name}}"> <strong>Key: </strong>{{key}}, <strong>Index: </strong>{{index}}, <strong>Value: </strong>{{fruit}} </div> </div>`, true)}</pre> <br> <div each="{{key, index, fruit of fruits}}"> <div id="{{fruit}}"> <strong>Key: </strong>{{key}}, <strong>Index: </strong>{{index}}, <strong>Value: </strong>{{fruit}} </div> </div> </section> <section id="select"> <h3>Select Binder</h3> <br> <pre>${Code(` <div>{{selectPlant}}</div> <select value="{{selectedPlant = $value}}"> <option value="tree">Tree</option> <option value="cactus">Cactus</option> </select>`, true)}</pre> <br> <div>{{selectedPlant}}</div> <select value="{{selectedPlant = $value}}"> <option value="tree">Tree</option> <option value="cactus">Cactus</option> </select> <br> <pre>${Code(` <div>{{selectEachResult}}</div> <select value="{{selectEachResult = $value}}" each="{{fruit of fruits}}"> <option value="{{fruit}}">{{fruit}}</option> </select>`, true)}</pre> <br> <div>{{selectEachResult}}</div> <select value="{{selectEachResult = $value}}" each="{{fruit of fruits}}"> <option value="{{fruit}}">{{fruit}}</option> </select> <br> <pre>${Code(` <div>{{multipleSelectResult}}</div> <select value="{{multipleSelectResult = $value}}" multiple> <option value="volvo">Volvo</option> <option value="saab">Saab</option> <option value="opel">Opel</option> <option value="audi">Audi</option> </select>`, true)}</pre> <br> <div>{{multipleSelectResult}}</div> <select value="{{multipleSelectResult = $value}}" multiple> <option value="volvo">Volvo</option> <option value="saab">Saab</option> <option value="opel">Opel</option> <option value="audi">Audi</option> </select> </section> <section> <h3>Submit Binder</h3> <br> <form onsubmit="{{submit($form)}}"> <div>{{firstName}}</div> <input name="name.first" value="{{firstName = $value}}" placeholder="first name"> <div>{{lastName}}</div> <input name="name.last" value="{{$value ?? lastName}}" placeholder="last name"> <br> <br> <input type="checkbox" name="agree" value="{{agree ? 'yes' : 'no'}}" checked="{{agree = $checked}}">Agree? {{agree ? 'yes': 'no'}} <br> <br> <strong>Animal:</strong> <input type="radio" name="animal" value="{{'dogs'}}" checked="{{$checked}}">Dogs <input type="radio" name="animal" value="cats" checked="{{$checked}}">Cats <br> <br> <div>{{favoriteNumber}}</div> <input name="favoriteNumber" type="number" value="{{favoriteNumber = $value}}"> <br> <br> <input type="submit" value="submit"> </form> </section> <section> <h3>HTML Binder</h3> <br> <pre>${Code(`<div html="{{hyperText}}"></div>`, true)}</pre> <br> <div html="{{hyperText}}"></div> </section> `; };