UNPKG

@vaadin/field-base

Version:
208 lines (180 loc) 5.74 kB
/** * @license * Copyright (c) 2021 - 2026 Vaadin Ltd. * This program is available under Apache License Version 2.0, available at https://vaadin.com/license/ */ import '@vaadin/component-base/src/styles/style-props.js'; import { css } from 'lit'; export const field = css` :host { --_helper-below-field: initial; --_helper-above-field: ; --_no-label: initial; --_has-label: ; --_no-helper: initial; --_has-helper: ; --_no-error: initial; --_has-error: ; --_gap: var(--vaadin-input-field-container-gap, var(--vaadin-gap-xs)); --_gap-s: round(var(--_gap) / 3, 2px); display: inline-grid; grid-template: 'label' auto var(--_helper-above-field, 'helper' auto) 'baseline' 0 'input' 1fr var( --_helper-below-field, 'helper' auto ) 'error' auto / 100%; outline: none; cursor: default; -webkit-tap-highlight-color: transparent; } :host([has-label]) { --_has-label: initial; --_no-label: ; } :host([has-helper]) { --_has-helper: initial; --_no-helper: ; } :host([has-error-message]) { --_has-error: initial; --_no-error: ; } :host([hidden]) { display: none !important; } :host(:not([has-label])) [part='label'], :host(:not([has-helper])) [part='helper-text'], :host(:not([has-error-message])) [part='error-message'] { display: none; } /* Baseline alignment guide */ :host::before { content: '\\2003' / ''; grid-column: 1; grid-row: var(--_has-label, label / baseline) var(--_no-label, label / input); align-self: var(--_has-label, end) var(--_no-label, start); font-size: var(--vaadin-input-field-value-font-size, inherit); line-height: var(--vaadin-input-field-value-line-height, inherit); padding: var( --vaadin-input-field-padding, var(--vaadin-padding-block-container) var(--vaadin-padding-inline-container) ); border: var(--vaadin-input-field-border-width, 1px) solid transparent; pointer-events: none; margin-bottom: var(--_no-label, 0) var( --_has-label, calc( var( --vaadin-field-baseline-input-height, (1lh + var(--vaadin-padding-block-container) * 2 + var(--vaadin-input-field-border-width, 1px) * 2) ) * -1 ) ); } [class$='container'] { display: contents; } [part] { grid-column: 1; } [part='label'] { font-size: var(--vaadin-input-field-label-font-size, inherit); line-height: var(--vaadin-input-field-label-line-height, inherit); font-weight: var(--vaadin-input-field-label-font-weight, 500); color: var(--vaadin-input-field-label-color, var(--vaadin-text-color)); word-break: break-word; position: relative; grid-area: label; margin-bottom: var(--_helper-below-field, var(--_gap)) var(--_helper-above-field, var(--_no-helper, var(--_gap))); } ::slotted(label) { cursor: inherit; } :host([disabled]) [part='label'], :host([disabled]) ::slotted(label) { opacity: 0.5; } :host([disabled]) [part='label'] ::slotted(label) { opacity: 1; } :host([required]) [part='label'] { padding-inline-end: 1em; } [part='required-indicator'] { display: inline-block; position: absolute; width: 1em; text-align: center; color: var(--vaadin-input-field-required-indicator-color, var(--vaadin-text-color-secondary)); } [part='required-indicator']::after { content: var(--vaadin-input-field-required-indicator, '*'); } :host(:not([required])) [part='required-indicator'] { display: none; } [part='label'], [part='helper-text'], [part='error-message'] { width: min-content; min-width: 100%; box-sizing: border-box; } [part='input-field'], [part='group-field'], [part='input-fields'] { grid-area: input; } [part='input-field'] { width: var(--vaadin-field-default-width, 12em); max-width: 100%; min-width: 100%; } :host([readonly]) [part='input-field'] { cursor: default; } :host([disabled]) [part='input-field'] { cursor: var(--vaadin-disabled-cursor); } [part='helper-text'] { font-size: var(--vaadin-input-field-helper-font-size, inherit); line-height: var(--vaadin-input-field-helper-line-height, inherit); font-weight: var(--vaadin-input-field-helper-font-weight, 400); color: var(--vaadin-input-field-helper-color, var(--vaadin-text-color-secondary)); grid-area: helper; margin-top: var(--_helper-above-field, var(--_gap-s)) var(--_helper-below-field, var(--_gap)); margin-bottom: var(--_helper-above-field, var(--_gap)); } [part='error-message'] { font-size: var(--vaadin-input-field-error-font-size, inherit); line-height: var(--vaadin-input-field-error-line-height, inherit); font-weight: var(--vaadin-input-field-error-font-weight, 400); color: var(--vaadin-input-field-error-color, var(--vaadin-text-color)); display: flex; gap: var(--vaadin-gap-xs); grid-area: error; margin-top: var(--_has-helper, var(--_helper-below-field, var(--_gap-s)) var(--_helper-above-field, var(--_gap))) var(--_no-helper, var(--_gap)); } [part='error-message']::before { content: ''; display: inline-block; flex: none; width: var(--vaadin-icon-size, 1lh); height: var(--vaadin-icon-size, 1lh); mask: var(--_vaadin-icon-warn) 50% / var(--vaadin-icon-visual-size, 100%) no-repeat; background: currentColor; } :host([theme~='helper-above-field']) { --_helper-above-field: initial; --_helper-below-field: ; } @media (forced-colors: active) { [part='error-message']::before { background: CanvasText; } } `;