/** * @license * Copyright 2023 Google LLC * SPDX-License-Identifier: Apache-2.0 */ import '@material/web/button/outlined-button.js'; import '@material/web/button/text-button.js'; import '@material/web/icon/icon.js'; import '@material/web/iconbutton/icon-button.js'; import '@material/web/textfield/filled-text-field.js'; import '@material/web/textfield/outlined-text-field.js'; import {MaterialStoryInit} from './material-collection.js'; import {MdFilledTextField} from '@material/web/textfield/filled-text-field.js'; import {css, html, nothing} from 'lit'; /** Knob types for Textfield stories. */ export interface StoryKnobs { label: string; placeholder: string; disabled: boolean; prefixText: string; suffixText: string; supportingText: string; } // Set min-height for resizable textareas const styles = css` .row { align-items: flex-start; display: flex; flex-wrap: wrap; gap: 16px; } md-filled-text-field, md-outlined-text-field { width: 200px; } [type='textarea'] { min-height: 56px; } [type='textarea'][supporting-text] { min-height: 76px; } `; const textfields: MaterialStoryInit = { name: 'Text fields', styles, render(knobs) { return html`
`; }, }; const textareas: MaterialStoryInit = { name: 'Text areas', styles, render(knobs) { return html`
`; }, }; const icons: MaterialStoryInit = { name: 'Icons', styles, render(knobs) { return html`
search clear search clear
`; }, }; const validation: MaterialStoryInit = { name: 'Validation', styles, render(knobs) { return html`
`; }, }; const forms: MaterialStoryInit = { name: 'Forms', styles: [ styles, css` .buttons { justify-content: flex-end; padding: 16px; } `, ], render(knobs) { return html`
Reset Submit
`; }, }; async function reportValidity(event: Event) { const textField = event.target as MdFilledTextField; textField.reportValidity(); } function clearInput(event: Event) { const iconButton = event.target as HTMLElement; const textField = iconButton.parentElement as MdFilledTextField; iconButton.blur(); textField.value = ''; textField.focus(); } function alertValues(event: SubmitEvent) { event.preventDefault(); const data = new FormData(event.target as HTMLFormElement); const first = data.get('first-name') || ''; const last = data.get('last-name') || ''; alert(`First name: ${first}, Last name: ${last}`); } /** Textfield stories. */ export const stories = [textfields, textareas, icons, validation, forms];