UNPKG

@nextcloud/vue

Version:
245 lines (244 loc) 8.59 kB
/** * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors * SPDX-License-Identifier: AGPL-3.0-or-later */ /** * SPDX-FileCopyrightText: 2021 Nextcloud GmbH and Nextcloud contributors * SPDX-License-Identifier: AGPL-3.0-or-later */ /* * Ensure proper alignment of the vue material icons */ .material-design-icon { display: flex; align-self: center; justify-self: center; align-items: center; justify-content: center; } /*! * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors * SPDX-License-Identifier: AGPL-3.0-or-later */ /** * Similar as inputBorder but without active styles. */ /** * Create a consistent border for an input element. * With Nextcloud 32+ there is no real border anymore but we use a box-shadow. */ body { /** * Set custom vue-select CSS variables. * Needs to be on the body (not :root) for theming to apply (see nextcloud/server#36462) */ /* Search Input */ --vs-search-input-color: var(--color-main-text); --vs-search-input-bg: var(--color-main-background); --vs-search-input-placeholder-color: var(--color-text-maxcontrast); /* Font */ --vs-font-size: var(--default-font-size); --vs-line-height: var(--default-line-height); /* Disabled State */ --vs-state-disabled-bg: var(--color-background-hover); --vs-state-disabled-color: var(--color-text-maxcontrast); --vs-state-disabled-controls-color: var(--color-text-maxcontrast); --vs-state-disabled-cursor: not-allowed; --vs-disabled-bg: var(--color-background-hover); --vs-disabled-color: var(--color-text-maxcontrast); --vs-disabled-cursor: not-allowed; /* Borders */ --vs-border-color: var(--color-border-maxcontrast); --vs-border-width: var(--border-width-input, 2px) !important; --vs-border-style: solid; --vs-border-radius: var(--border-radius-element); /* Component Controls: Clear, Open Indicator */ --vs-controls-color: var(--color-main-text); /* Selected */ --vs-selected-bg: var(--color-background-hover); --vs-selected-color: var(--color-main-text); --vs-selected-border-color: var(--vs-border-color); --vs-selected-border-style: var(--vs-border-style); --vs-selected-border-width: var(--vs-border-width); /* Dropdown */ --vs-dropdown-bg: var(--color-main-background); --vs-dropdown-color: var(--color-main-text); --vs-dropdown-z-index: 9999; --vs-dropdown-box-shadow: 0px 2px 2px 0px var(--color-box-shadow); /* Options */ --vs-dropdown-option-padding: 8px 20px; /* Active State */ --vs-dropdown-option--active-bg: var(--color-background-hover); --vs-dropdown-option--active-color: var(--color-main-text); /* Keyboard Focus State */ --vs-dropdown-option--kb-focus-box-shadow: inset 0px 0px 0px 2px var(--vs-border-color); /* Deselect State */ --vs-dropdown-option--deselect-bg: var(--color-error); --vs-dropdown-option--deselect-color: #fff; /* Transitions */ --vs-transition-duration: 0ms; /* Actions */ --vs-actions-padding: 0 8px 0 4px; } .v-select.select { /* Override default vue-select styles */ min-height: calc(var(--default-clickable-area) - 2 * var(--border-width-input)); min-width: 260px; margin: 0 0 var(--default-grid-baseline); } .v-select.select.vs--open { --vs-border-width: var(--border-width-input-focused, 2px); } .v-select.select .select__label { display: block; margin-bottom: 2px; } .v-select.select .vs__selected { height: calc(var(--default-clickable-area) - 2 * var(--vs-border-width) - var(--default-grid-baseline)); margin: calc(var(--default-grid-baseline) / 2); padding-block: 0; padding-inline: 12px 8px; border-radius: 16px !important; background: var(--color-primary-element-light); border: none; } .v-select.select.vs--open .vs__selected:first-of-type { margin-inline-start: calc(var(--default-grid-baseline) / 2 - (var(--border-width-input-focused, 2px) - var(--border-width-input, 2px))) !important; } .v-select.select .vs__search { text-overflow: ellipsis; color: var(--color-main-text); min-height: unset !important; height: calc(var(--default-clickable-area) - 2 * var(--vs-border-width)) !important; } .v-select.select .vs__search::placeholder { color: var(--color-text-maxcontrast); } .v-select.select .vs__search, .v-select.select .vs__search:focus { margin: 0; } .v-select.select .vs__dropdown-toggle { position: relative; max-height: 100px; padding: var(--border-width-input); overflow-y: auto; } .v-select.select .vs__actions { position: sticky; top: 0; } .v-select.select .vs__clear { margin-inline-end: 2px; } .v-select.select.vs--open .vs__dropdown-toggle { border-color: var(--color-main-text); border-bottom-color: transparent; border-bottom-left-radius: 0; border-bottom-right-radius: 0; border-style: solid; border-width: var(--border-width-input-focused); outline: 2px solid var(--color-main-background); padding: 0; } .v-select.select:not(.vs--disabled, .vs--open) .vs__dropdown-toggle:active, .v-select.select:not(.vs--disabled, .vs--open) .vs__dropdown-toggle:focus-within { outline: 2px solid var(--color-main-background); border-color: var(--color-main-text); } .v-select.select.vs--disabled .vs__search, .v-select.select.vs--disabled .vs__selected { color: var(--color-text-maxcontrast); } .v-select.select.vs--disabled .vs__clear, .v-select.select.vs--disabled .vs__deselect { display: none; } .v-select.select--no-wrap .vs__selected-options { flex-wrap: nowrap; overflow: auto; min-width: unset; } .v-select.select--no-wrap .vs__selected-options .vs__selected { min-width: unset; } .v-select.select--drop-up.vs--open .vs__dropdown-toggle { border-radius: 0 0 var(--vs-border-radius) var(--vs-border-radius); border-top-color: transparent; border-bottom-color: var(--color-main-text); } .v-select.select .vs__selected-options { min-height: calc(var(--default-clickable-area) - 2 * var(--vs-border-width)); } .v-select.select .vs__selected-options .vs__selected ~ .vs__search[readonly] { position: absolute; } .v-select.select .vs__selected-options { padding: 0 5px; } .v-select.select.vs--single.vs--loading .vs__selected, .v-select.select.vs--single.vs--open .vs__selected { max-width: 100%; opacity: 1; color: var(--color-text-maxcontrast); } .v-select.select.vs--single .vs__selected-options { flex-wrap: nowrap; } .v-select.select.vs--single .vs__selected { background: unset !important; } .vs__dropdown-toggle { --input-border-box-shadow-light: 0 -1px var(--vs-border-color), 0 0 0 1px color-mix(in srgb, var(--vs-border-color), 65% transparent); --input-border-box-shadow-dark: 0 1px var(--vs-border-color), 0 0 0 1px color-mix(in srgb, var(--vs-border-color), 65% transparent); --input-border-box-shadow: var(--input-border-box-shadow-light); border: none; border-radius: var(--border-radius-element); box-shadow: var(--input-border-box-shadow); } .vs__dropdown-toggle:hover:not([disabled]) { box-shadow: 0 0 0 1px var(--vs-border-color); } @media (prefers-color-scheme: dark) { .vs__dropdown-toggle { --input-border-box-shadow: var(--input-border-box-shadow-dark); } } [data-theme-dark] .vs__dropdown-toggle { --input-border-box-shadow: var(--input-border-box-shadow-dark); } [data-theme-light] .vs__dropdown-toggle { --input-border-box-shadow: var(--input-border-box-shadow-light); } .select--legacy .vs__dropdown-toggle { box-shadow: 0 0 0 1px var(--vs-border-color); } .select--legacy .vs__dropdown-toggle:hover:not([disabled]) { box-shadow: 0 0 0 2px var(--vs-border-color); } .vs__dropdown-menu { border-width: var(--border-width-input-focused) !important; border-color: var(--color-main-text) !important; outline: none !important; box-shadow: -2px 0 0 var(--color-main-background), 0 2px 0 var(--color-main-background), 2px 0 0 var(--color-main-background), !important; padding: 4px !important; } .vs__dropdown-menu--floating { /* Fallback styles overidden by programmatically set inline styles */ width: max-content; position: absolute; top: 0; inset-inline-start: 0; } .vs__dropdown-menu--floating-placement-top { border-radius: var(--vs-border-radius) var(--vs-border-radius) 0 0 !important; border-top-style: var(--vs-border-style) !important; border-bottom-style: none !important; box-shadow: 0 -2px 0 var(--color-main-background), -2px 0 0 var(--color-main-background), 2px 0 0 var(--color-main-background), !important; } .vs__dropdown-menu .vs__dropdown-option { border-radius: 6px !important; } .vs__dropdown-menu .vs__no-options { color: var(--color-text-maxcontrast) !important; }