UNPKG

@vaadin/vaadin-lumo-styles

Version:

Lumo is a design system foundation for modern web applications, used by Vaadin components

122 lines (102 loc) 3.81 kB
/** * @license * Copyright (c) 2017 - 2026 Vaadin Ltd. * This program is available under Apache License Version 2.0, available at https://vaadin.com/license/ */ import { issueWarning } from '@vaadin/component-base/src/warnings.js'; import { css, registerStyles } from '@vaadin/vaadin-themable-mixin/vaadin-themable-mixin.js'; issueWarning('Lumo .js mixins are deprecated and will be removed in V26'); const requiredField = css` [part='label'] { align-self: flex-start; color: var(--vaadin-input-field-label-color, var(--lumo-secondary-text-color)); font-weight: var(--vaadin-input-field-label-font-weight, 500); font-size: var(--vaadin-input-field-label-font-size, var(--lumo-font-size-s)); transition: color 0.2s; line-height: 1; padding-inline: calc(var(--lumo-border-radius-m) / 4) 1em; padding-bottom: 0.5em; /* As a workaround for diacritics being cut off, add a top padding and a negative margin to compensate */ padding-top: 0.25em; margin-top: -0.25em; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; position: relative; max-width: 100%; box-sizing: border-box; } :host([focused]:not([readonly])) [part='label'] { color: var(--vaadin-input-field-focused-label-color, var(--lumo-primary-text-color)); } :host(:hover:not([readonly]):not([focused])) [part='label'] { color: var(--vaadin-input-field-hovered-label-color, var(--lumo-body-text-color)); } /* Touch device adjustment */ @media (pointer: coarse) { :host(:hover:not([readonly]):not([focused])) [part='label'] { color: var(--vaadin-input-field-label-color, var(--lumo-secondary-text-color)); } } :host([has-label])::before { margin-top: calc(var(--lumo-font-size-s) * 1.5); } :host([has-label][theme~='small'])::before { margin-top: calc(var(--lumo-font-size-xs) * 1.5); } :host([has-label]) { padding-top: var(--lumo-space-m); } :host([has-label]) ::slotted([slot='tooltip']) { --vaadin-tooltip-offset-bottom: calc((var(--lumo-space-m) - var(--lumo-space-xs)) * -1); } :host([required]) [part='required-indicator']::after { content: var(--vaadin-input-field-required-indicator, var(--lumo-required-field-indicator, '\\2022')); color: var( --vaadin-input-field-required-indicator-color, var(--lumo-required-field-indicator-color, var(--lumo-primary-text-color)) ); position: absolute; right: 0; width: 1em; text-align: center; } :host([invalid]) [part='required-indicator']::after { color: var( --vaadin-input-field-required-indicator-color, var(--lumo-required-field-indicator-color, var(--lumo-error-text-color)) ); } [part='error-message'] { margin-left: calc(var(--lumo-border-radius-m) / 4); font-size: var(--vaadin-input-field-error-font-size, var(--lumo-font-size-xs)); line-height: var(--lumo-line-height-xs); font-weight: var(--vaadin-input-field-error-font-weight, 400); color: var(--vaadin-input-field-error-color, var(--lumo-error-text-color)); will-change: max-height; transition: 0.4s max-height; max-height: 5em; } :host([has-error-message]) [part='error-message']::before, :host([has-error-message]) [part='error-message']::after { content: ''; display: block; height: 0.4em; } :host(:not([invalid])) [part='error-message'] { max-height: 0; overflow: hidden; } /* RTL specific styles */ :host([dir='rtl']) [part='required-indicator']::after { right: auto; left: 0; } :host([dir='rtl']) [part='error-message'] { margin-left: 0; margin-right: calc(var(--lumo-border-radius-m) / 4); } `; registerStyles('', requiredField, { moduleId: 'lumo-required-field' }); export { requiredField };