We have 153 possible forms:
Aerosol
Aerosol, foam
Aerosol, metered
Aerosol, powder
Aerosol, spray
Bar, chewable
Bead
Capsule
| <template> | |
| <validation-summary errors.bind="errors"></validation-summary> | |
| <table class="table table-striped table-compact"> | |
| <thead> | |
| <tr> | |
| <th>First Name</th> | |
| <th>Last Name</th> | |
| <th>Email</th> | |
| <th class="text-right">Age</th> | |
| </tr> |
| <template> | |
| <require from="./bootstrap-select"></require> | |
| <!-- bootstrap select --> | |
| <bootstrap-select items.bind="planets" | |
| value.bind="selectedPlanet" | |
| options.bind="{}"> | |
| <template replace-part="item-template"> | |
| ${item.name} (${item.diameter}) |
| <template> | |
| <require from="./widget-picker"></require> | |
| <widget-picker widget.bind="shipment.widget" widgets.bind="widgets"></widget-picker> | |
| </template> |
| <template> | |
| <require from="./registration-form"></require> | |
| <registration-form></registration-form> | |
| </template> |
| <template> | |
| <h1>${message}</h1> | |
| </template> |
| import { set } from 'jsonpointer'; | |
| import { maxDate, minDate } from './date'; | |
| export function parseForm<T extends object>( | |
| data: FormData | URLSearchParams | |
| ): T { | |
| const obj = Object.create(null) as T; | |
| for (const [key, value] of data) { | |
| if (typeof value !== 'string') { | |
| throw new Error(`Unexpected value type: ${value}`); |
We have 153 possible forms:
Aerosol
Aerosol, foam
Aerosol, metered
Aerosol, powder
Aerosol, spray
Bar, chewable
Bead
Capsule
| <template> | |
| <h1>${message}</h1> | |
| </template> |
| <template> | |
| <require from="./dynamic-expression-binding-behavior"></require> | |
| <require from="./debug"></require> | |
| <label repeat.for="property of properties"> | |
| ${property.label} | |
| <input value.bind="model & dynamicExpression:property.expression"> | |
| </label> | |
| <debug></debug> |
| const { base64url } = await import('https://cdn.skypack.dev/rfc4648'); | |
| /** | |
| * @param {JsonWebKey} key | |
| */ | |
| async function generateThumbprint(key) { | |
| // https://datatracker.ietf.org/doc/html/rfc7638 | |
| const { e, kty, n } = key; | |
| const json = JSON.stringify({ e, kty, n }); | |
| const encoder = new TextEncoder(); | |
| const digest = await crypto.subtle.digest('SHA-256', encoder.encode(json)); |