package.theme.lumo.vaadin-upload-styles.js Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of upload Show documentation
Show all versions of upload Show documentation
Web Component for uploading files with drag and drop support
import '@vaadin/vaadin-lumo-styles/font-icons.js';
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/style.js';
import '@vaadin/vaadin-lumo-styles/typography.js';
import '@vaadin/button/theme/lumo/vaadin-button.js';
import '@vaadin/progress-bar/theme/lumo/vaadin-progress-bar.js';
import { fieldButton } from '@vaadin/vaadin-lumo-styles/mixins/field-button.js';
import { css, registerStyles } from '@vaadin/vaadin-themable-mixin/vaadin-themable-mixin.js';
registerStyles(
'vaadin-upload',
css`
:host {
line-height: var(--lumo-line-height-m);
}
:host(:not([nodrop])) {
overflow: hidden;
border: 1px dashed var(--lumo-contrast-20pct);
border-radius: var(--lumo-border-radius-l);
padding: var(--lumo-space-m);
transition: background-color 0.6s, border-color 0.6s;
}
[part='drop-label'] {
display: inline-block;
white-space: normal;
padding: 0 var(--lumo-space-s);
color: var(--lumo-secondary-text-color);
font-family: var(--lumo-font-family);
}
:host([dragover-valid]) {
border-color: var(--lumo-primary-color-50pct);
background: var(--lumo-primary-color-10pct);
transition: background-color 0.1s, border-color 0.1s;
}
:host([dragover-valid]) [part='drop-label'] {
color: var(--lumo-primary-text-color);
}
:host([max-files-reached]) [part='drop-label'] {
color: var(--lumo-disabled-text-color);
}
`,
{ moduleId: 'lumo-upload' },
);
registerStyles(
'vaadin-upload-icon',
css`
:host::before {
content: var(--lumo-icons-upload);
font-family: lumo-icons;
font-size: var(--lumo-icon-size-m);
line-height: 1;
vertical-align: -0.25em;
}
`,
{ moduleId: 'lumo-upload-icon' },
);
registerStyles(
'vaadin-upload-file-list',
css`
::slotted(li:not(:first-of-type)) {
border-top: 1px solid var(--lumo-contrast-10pct);
}
`,
{ moduleId: 'lumo-upload-file-list' },
);
const uploadFile = css`
:host {
padding: var(--lumo-space-s) 0;
outline: none;
--_focus-ring-color: var(--vaadin-focus-ring-color, var(--lumo-primary-color-50pct));
--_focus-ring-width: var(--vaadin-focus-ring-width, 2px);
}
:host([focus-ring]) [part='row'] {
border-radius: var(--lumo-border-radius-s);
box-shadow: 0 0 0 var(--_focus-ring-width) var(--_focus-ring-color);
}
[part='row'] {
display: flex;
align-items: baseline;
justify-content: space-between;
}
[part='status'],
[part='error'] {
color: var(--lumo-secondary-text-color);
font-size: var(--lumo-font-size-s);
}
[part='info'] {
display: flex;
align-items: baseline;
flex: auto;
}
[part='meta'] {
width: 0.001px;
flex: 1 1 auto;
}
[part='name'] {
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
[part='commands'] {
display: flex;
align-items: baseline;
flex: none;
}
[part$='icon'] {
margin-right: var(--lumo-space-xs);
font-size: var(--lumo-icon-size-m);
font-family: 'lumo-icons';
line-height: 1;
}
/* When both icons are hidden, let us keep space for one */
[part='done-icon'][hidden] + [part='warning-icon'][hidden] {
display: block !important;
visibility: hidden;
}
[part$='button'] {
flex: none;
margin-left: var(--lumo-space-xs);
cursor: var(--lumo-clickable-cursor);
}
[part$='button']:focus {
outline: none;
border-radius: var(--lumo-border-radius-s);
box-shadow: 0 0 0 var(--_focus-ring-width) var(--_focus-ring-color);
}
[part$='icon']::before,
[part$='button']::before {
vertical-align: -0.25em;
}
[part='done-icon']::before {
content: var(--lumo-icons-checkmark);
color: var(--lumo-primary-text-color);
}
[part='warning-icon']::before {
content: var(--lumo-icons-error);
color: var(--lumo-error-text-color);
}
[part='start-button']::before {
content: var(--lumo-icons-play);
}
[part='retry-button']::before {
content: var(--lumo-icons-reload);
}
[part='remove-button']::before {
content: var(--lumo-icons-cross);
}
[part='error'] {
color: var(--lumo-error-text-color);
}
::slotted([slot='progress']) {
width: auto;
margin-left: calc(var(--lumo-icon-size-m) + var(--lumo-space-xs));
margin-right: calc(var(--lumo-icon-size-m) + var(--lumo-space-xs));
}
`;
registerStyles('vaadin-upload-file', [fieldButton, uploadFile], { moduleId: 'lumo-upload-file' });