@dnb/eufemia
Version:
DNB Eufemia Design System UI Library
260 lines • 7.73 kB
CSS
/*
* Textarea component
*
*/
/*
* Utilities
*/
.dnb-textarea {
--textarea-border-radius: 0.25rem;
--textarea-rows: 2;
--textarea-background-color: var(--color-white);
--textarea-placeholder-color: grey;
--textarea-size--small: 0.25rem;
--textarea-size--medium: 0.5rem;
--textarea-size--large: 0.75rem;
display: inline-flex;
font-size: var(--font-size-small);
line-height: var(--line-height-basis);
}
.dnb-textarea__inner {
display: inline-flex;
flex-direction: column;
}
.dnb-textarea__shell {
display: inline-flex;
position: relative;
font-size: var(--font-size-basis);
}
.dnb-textarea__shell::after {
--size: 0.5rem;
--bg-size: cover;
--bg-pos: 0;
pointer-events: none;
position: absolute;
z-index: 2;
bottom: 0;
right: 0;
width: var(--size);
height: var(--size);
background-image: url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" width="8" height="8" fill="none"><path stroke="%23000" stroke-linecap="round" stroke-width=".5" d="m1 7 6-6M3.5 7 7 3.5M6 7l1-1"/></svg>');
background-size: var(--bg-size);
background-position: var(--bg-pos) var(--bg-pos);
background-color: var(--textarea-background-color);
}
.dnb-textarea__resize--medium .dnb-textarea__shell::after {
content: "";
}
.dnb-textarea__resize--large .dnb-textarea__shell::after {
content: "";
--size: 1rem;
--bg-size: 60%;
--bg-pos: 0.25rem;
}
.dnb-textarea__autoresize .dnb-textarea__shell::after {
content: none;
}
.dnb-textarea__state {
position: absolute;
z-index: 1;
top: calc(var(--textarea-size-vertical) * -1);
left: calc(var(--textarea-size-horizontal) * -1);
bottom: calc(var(--textarea-size-vertical) * -1);
right: calc(var(--textarea-size-vertical) * -1);
background-color: var(--textarea-background-color);
--border-color: var(--textarea-border-color);
--border-width: var(--textarea-border-width);
box-shadow: var(--textarea-border-inset, inset) 0 0 0 var(--border-width) var(--border-color);
border-color: transparent;
border-radius: var(--textarea-border-radius);
}
.dnb-textarea__row {
display: inline-flex;
margin: var(--textarea-size-vertical) var(--textarea-size-vertical) var(--textarea-size-vertical) var(--textarea-size-horizontal);
}
.dnb-textarea__suffix.dnb-suffix {
padding-left: 1rem;
}
.dnb-textarea__textarea {
position: relative;
z-index: 2;
width: 100%;
cursor: auto;
border: none;
margin: 0;
padding: 0;
outline: none;
font-size: var(--font-size-basis);
line-height: var(--line-height-basis);
color: var(--textarea-color, var(--color-black));
background-color: var(--textarea-background-color, var(--color-white));
overflow-y: auto;
overscroll-behavior: contain;
}
html:not([data-visual-test]) .dnb-textarea__textarea {
scroll-behavior: smooth;
}
@media (prefers-reduced-motion: reduce) {
html:not([data-visual-test]) .dnb-textarea__textarea {
scroll-behavior: auto;
}
}
.dnb-textarea__textarea {
-webkit-overflow-scrolling: touch;
-ms-overflow-style: auto;
scrollbar-color: var(--scrollbar-thumb-color, #888) transparent;
}
@supports not (scrollbar-color: auto) {
.dnb-textarea__textarea::-webkit-scrollbar:vertical {
width: var(--scrollbar-track-width, 0.5rem);
}
.dnb-textarea__textarea::-webkit-scrollbar:horizontal {
height: var(--scrollbar-track-width, 0.5rem);
}
.dnb-textarea__textarea::-webkit-scrollbar {
border-radius: var(--scrollbar-thumb-width, 0.5rem);
background-color: var(--scrollbar-track-color, #eee);
}
.dnb-textarea__textarea::-webkit-scrollbar-thumb {
background-color: var(--scrollbar-thumb-color, #888);
}
.dnb-textarea__textarea::-webkit-scrollbar-thumb:hover {
background-color: var(--scrollbar-thumb-hover-color, #666);
}
.dnb-textarea__textarea::-webkit-scrollbar-thumb {
border-radius: var(--scrollbar-thumb-width, 0.5rem);
}
}
@-moz-document url-prefix() {
.dnb-textarea__textarea {
overflow-x: clip ;
}
}
.dnb-textarea__placeholder {
pointer-events: none;
position: absolute;
z-index: 3;
top: 0;
left: 0;
overflow: hidden;
width: 100%;
height: 100%;
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-line-clamp: var(--textarea-rows, 2);
cursor: auto;
border: none;
margin: 0;
padding: 0;
outline: none;
font-size: var(--font-size-basis);
line-height: var(--line-height-basis);
color: var(--textarea-color, var(--color-black));
background-color: var(--textarea-background-color, var(--color-white));
color: var(--textarea-placeholder-color);
background-color: transparent;
}
.dnb-textarea__textarea, .dnb-textarea__placeholder {
text-align: left;
}
.dnb-textarea__textarea:-webkit-autofill {
box-shadow: 0 0 0 10em var(--textarea-background-color, var(--color-white)) inset;
}
.dnb-textarea__textarea:autofill {
box-shadow: 0 0 0 10em var(--textarea-background-color, var(--color-white)) inset;
}
.dnb-textarea__align--right .dnb-textarea__textarea, .dnb-textarea__align--right .dnb-textarea__placeholder {
text-align: right;
}
.dnb-textarea, .dnb-textarea__size--small {
--textarea-size-vertical: var(--textarea-size--small);
--textarea-size-horizontal: 1rem;
}
.dnb-textarea__size--medium {
--textarea-size-vertical: var(--textarea-size--medium);
--textarea-size-horizontal: 1rem;
}
.dnb-textarea__size--large {
--textarea-size-vertical: var(--textarea-size--large);
--textarea-size-horizontal: 1rem;
}
.dnb-textarea__autoresize .dnb-textarea__textarea {
resize: none;
}
.dnb-textarea--disabled .dnb-textarea__textarea, .dnb-textarea__textarea[disabled] {
-webkit-user-select: none;
user-select: none;
}
.dnb-textarea--disabled .dnb-textarea__textarea::-webkit-scrollbar, .dnb-textarea__textarea[disabled]::-webkit-scrollbar {
width: 0;
}
.dnb-textarea__inner > .dnb-form-status {
order: 2;
margin-top: 0.5rem;
}
.dnb-textarea:not(.dnb-textarea--vertical) .dnb-form-label {
margin-top: var(--textarea-size-vertical);
}
.dnb-textarea--vertical {
display: flex;
flex-direction: column;
align-items: flex-start;
}
.dnb-textarea:not(.dnb-textarea--vertical)[class*=__status] {
align-items: flex-start;
}
.dnb-textarea:not(.dnb-textarea--vertical)[class*=__status] > .dnb-form-label {
margin-top: 0.25rem;
}
@media screen and (max-width: 40em) {
.dnb-textarea {
flex-wrap: wrap;
}
.dnb-textarea > .dnb-form-label {
margin-bottom: 0.5rem;
margin-top: 0.5rem;
}
}
.dnb-textarea--stretch {
display: flex;
flex-grow: 1;
}
.dnb-textarea--stretch .dnb-textarea__inner {
flex-grow: 1;
}
.dnb-textarea--stretch .dnb-textarea__shell, .dnb-textarea--stretch .dnb-textarea__inner, .dnb-textarea--stretch .dnb-textarea__textarea {
width: 100%;
}
.dnb-textarea--stretch .dnb-form-label + .dnb-textarea__inner {
width: auto;
}
.dnb-textarea--vertical.dnb-textarea--stretch .dnb-textarea__inner {
width: 100%;
}
.dnb-textarea--keep-placeholder.dnb-textarea--focus .dnb-textarea__placeholder {
--textarea-placeholder-color: var(--textarea-placeholder-color--focus);
display: block;
}
.dnb-form-row--horizontal .dnb-textarea--stretch {
width: 100%;
}
@media screen and (max-width: 40em) {
.dnb-responsive-component .dnb-textarea {
display: flex;
flex-direction: column;
align-items: flex-start;
margin-bottom: 0.5rem;
}
.dnb-responsive-component .dnb-textarea > .dnb-form-label {
margin-bottom: 0.5rem;
}
}
html[data-visual-test] .dnb-textarea__textarea {
caret-color: var(--color-white);
}
.dnb-textarea.dnb-skeleton .dnb-textarea__inner {
border-radius: var(--textarea-border-radius);
}
.dnb-textarea.dnb-skeleton .dnb-textarea__state, .dnb-textarea.dnb-skeleton .dnb-textarea__textarea {
visibility: hidden;
}