custom-fieldpackage.theme.lumo.vaadin-custom-field-styles.js Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of vaadin-webcomponents Show documentation
Show all versions of vaadin-webcomponents Show documentation
Mvnpm composite: Vaadin webcomponents
The newest version!
/**
* @license
* Copyright (c) 2019 - 2024 Vaadin Ltd.
* This program is available under Apache License Version 2.0, available at https://vaadin.com/license/
*/
import '@vaadin/vaadin-lumo-styles/color.js';
import '@vaadin/vaadin-lumo-styles/sizing.js';
import '@vaadin/vaadin-lumo-styles/spacing.js';
import '@vaadin/vaadin-lumo-styles/typography.js';
import { helper } from '@vaadin/vaadin-lumo-styles/mixins/helper.js';
import { requiredField } from '@vaadin/vaadin-lumo-styles/mixins/required-field.js';
import { css, registerStyles } from '@vaadin/vaadin-themable-mixin/vaadin-themable-mixin.js';
const customField = css`
:host {
--lumo-text-field-size: var(--lumo-size-m);
color: var(--lumo-body-text-color);
font-size: var(--lumo-font-size-m);
/* align with text-field height + vertical paddings */
line-height: calc(var(--lumo-text-field-size) + 2 * var(--lumo-space-xs));
font-family: var(--lumo-font-family);
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
-webkit-tap-highlight-color: transparent;
padding: 0;
}
:host::before {
margin-top: var(--lumo-space-xs);
height: var(--lumo-text-field-size);
box-sizing: border-box;
display: inline-flex;
align-items: center;
}
/* align with text-field label */
:host([has-label]) [part='label'] {
padding-bottom: calc(0.5em - var(--lumo-space-xs));
}
:host(:not([has-label])) [part='label'],
:host(:not([has-label]))::before {
display: none;
}
/* align with text-field error message */
:host([has-error-message]) [part='error-message']::before {
height: calc(0.4em - var(--lumo-space-xs));
}
:host([focused]:not([readonly]):not([disabled])) [part='label'] {
color: var(--lumo-primary-text-color);
}
:host(:hover:not([readonly]):not([disabled]):not([focused])) [part='label'],
:host(:hover:not([readonly]):not([disabled]):not([focused])) [part='helper-text'] {
color: var(--lumo-body-text-color);
}
/* Touch device adjustment */
@media (pointer: coarse) {
:host(:hover:not([readonly]):not([disabled]):not([focused])) [part='label'] {
color: var(--lumo-secondary-text-color);
}
}
/* Disabled */
:host([disabled]) [part='label'] {
color: var(--lumo-disabled-text-color);
-webkit-text-fill-color: var(--lumo-disabled-text-color);
}
/* Small theme */
:host([theme~='small']) {
font-size: var(--lumo-font-size-s);
--lumo-text-field-size: var(--lumo-size-s);
}
:host([theme~='small'][has-label]) [part='label'] {
font-size: var(--lumo-font-size-xs);
}
:host([theme~='small'][has-label]) [part='error-message'] {
font-size: var(--lumo-font-size-xxs);
}
/* When custom-field is used with components without outer margin */
:host([theme~='whitespace'][has-label]) [part='label'] {
padding-bottom: 0.5em;
}
`;
registerStyles('vaadin-custom-field', [requiredField, helper, customField], {
moduleId: 'lumo-custom-field',
});
export { customField };