<with-presets>
A freeform text field with visible presets
<datalist>
)<select>
and <input>
or custom elements!With select:
<with-presets id="with_select">
<select>
<option value="[time(time, 'minutes')]">HH:ii</option>
<option value="[time(time, 'hours')]">HH:00</option>
<option value="[time(time, 'seconds')]">HH:ii:ss</option>
<option value="[time(time, 'ms')]">HH:ii:ss.ms</option>
</select>
<input />
</with-presets>
With <button-group>
:
<button-group>
<button>1</button>
<button value="2">Two</button>
<button value="3">Three</button>
<button value="custom">Custom…</button>
</button-group>
<with-presets id="with_buttongroup">
<button-group>
<button>1</button>
<button value="2">Two</button>
<button value="3">Three</button>
<button value="custom">Custom…</button>
</button-group>
<input />
</with-presets>
<button onclick='with_buttongroup.value = Math.floor(Math.random() * 5)'>Set random number 0-4</button>
With dynamic select:
<with-presets vertical id="with_dynamic_select">
<select size="4">
</select>
<input value="3">
</with-presets>
<button onclick='with_dynamic_select.children[0].insertAdjacentHTML("beforeend", `<option>${with_dynamic_select.select.children.length}</option>`)'>Add option</button>
Just include the component's JS file and you're good:
<script src="https://nudeui.com/with-presets/with-presets.js" type="module"></script>
In case you want to link to local files: CSS is fetched automatically, and assumed to be in the same directory as the JS file.