UNPKG

@dnb/eufemia

Version:

DNB Eufemia Design System UI Library

260 lines 7.73 kB
/* * 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 !important; } } .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; }