UNPKG

draftail

Version:

📝🍸 A configurable rich text editor built with Draft.js

517 lines (483 loc) 12 kB
.Draftail-Icon { fill: currentColor; pointer-events: none; vertical-align: middle; } .Draftail-Editor { --draftail-offset-inline-start: 2rem; --draftail-text-direction: 1; background-color: #fff; border: 1px solid #ddd; border-radius: 5px; position: relative; } .Draftail-Editor[dir=rtl], [dir=rtl] .Draftail-Editor { --draftail-text-direction: -1; } .Draftail-Editor--readonly { pointer-events: none; } .Draftail-Editor--readonly .DraftEditor-editorContainer { opacity: 0.5; } .Draftail-Editor--readonly .DraftEditor-editorContainer::before { content: ""; display: block; position: absolute; top: 0; inset-inline-start: 0; height: 100%; width: 100%; z-index: 21; } .Draftail-Editor .DraftEditor-root { color: #333; font-size: 1rem; line-height: 1.5; font-family: sans-serif; font-variant-ligatures: none; overflow: auto; } .Draftail-Editor .public-DraftEditor-content, .Draftail-Editor .public-DraftEditorPlaceholder-root { padding: 0.75rem; } .Draftail-Editor .public-DraftEditor-content > * > figure { margin: 0; } .Draftail-Editor .public-DraftEditorPlaceholder-inner { color: #757575; } .Draftail-block--unstyled, .Draftail-Editor .public-DraftEditorPlaceholder-inner { margin: 0.5rem 0; } .Draftail-block--empty:not([class*=-list-item])::before { position: absolute; pointer-events: none; user-select: none; color: #757575; } @media (forced-colors: active) { .Draftail-block--empty:not([class*=-list-item])::before { color: GrayText; } } .Draftail-Editor .tippy-box[data-animation=fade][data-state=hidden] { opacity: 0; } .Draftail-Editor [data-tippy-root] { max-width: calc(100vw - 10px); } .Draftail-Editor .tippy-box { position: relative; transition-property: transform, visibility, opacity; } .Draftail-Editor .tippy-box[data-placement^=top] > .tippy-arrow { bottom: 0; } .Draftail-Editor .tippy-box[data-placement^=top] > .tippy-arrow::before { bottom: -7px; inset-inline-start: 0; border-width: 8px 8px 0; border-top-color: initial; transform-origin: center top; } .Draftail-Editor .tippy-box[data-placement^=bottom] > .tippy-arrow { top: 0; } .Draftail-Editor .tippy-box[data-placement^=bottom] > .tippy-arrow::before { top: -7px; inset-inline-start: 0; border-width: 0 8px 8px; border-bottom-color: initial; transform-origin: center bottom; } .Draftail-Editor .tippy-box[data-placement^=left] > .tippy-arrow { inset-inline-end: 0; } .Draftail-Editor .tippy-box[data-placement^=left] > .tippy-arrow::before { border-width: 8px 0 8px 8px; border-inline-start-color: initial; inset-inline-end: -7px; transform-origin: center left; } .Draftail-Editor .tippy-box[data-placement^=right] > .tippy-arrow { inset-inline-start: 0; } .Draftail-Editor .tippy-box[data-placement^=right] > .tippy-arrow::before { inset-inline-start: -7px; border-width: 8px 8px 8px 0; border-inline-end-color: initial; transform-origin: center right; } .Draftail-Editor .tippy-box[data-inertia][data-state=visible] { transition-timing-function: cubic-bezier(0.54, 1.5, 0.38, 1.11); } .Draftail-Editor .tippy-arrow { width: 16px; height: 16px; } .Draftail-Editor .tippy-arrow::before { content: ""; position: absolute; border-color: transparent; border-style: solid; } .Draftail-Editor .tippy-content { position: relative; padding: 5px 9px; z-index: 1; } .Draftail-Tooltip { background: none; color: inherit; border-radius: 0; font-size: inherit; outline: var(--draftail-contrast-outline-modal, 10px solid transparent); } .Draftail-Tooltip .tippy-content { padding: 0; } .Draftail-Tooltip__target { position: absolute; pointer-events: none; visibility: hidden; } .Draftail-Tooltip__backdrop { position: relative; top: 0; inset-inline-start: 0; inset-inline-end: 0; bottom: 0; background-color: rgba(0, 0, 0, 0); transition: background-color 0.1s 0s; z-index: 41; } .Draftail-Tooltip__backdrop--visible { position: fixed; background-color: rgba(0, 0, 0, 0.1); } .Draftail-ComboBox { min-width: 240px; background: #fff; color: #333; border-radius: 5px; font-size: 1rem; box-shadow: 5px 5px 20px rgba(0, 0, 0, 0.1); outline: var(--draftail-contrast-outline-modal, 10px solid transparent); } .Draftail-ComboBox__label { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0; } .Draftail-ComboBox__field { padding: 10px; } .Draftail-ComboBox--inline input[disabled] { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0; } .Draftail-ComboBox [aria-autocomplete=list] { width: 100%; padding: 7px 20px; line-height: 1.5; border: 1px solid #ddd; border-radius: 5px; } .Draftail-ComboBox [aria-autocomplete=list]::placeholder { color: #757575; } .Draftail-ComboBox__optgroup-label { padding: 10px; font-size: 1rem; font-weight: 700; border-top: var(--draftail-contrast-outline, 2px solid transparent); } @media (forced-colors: active) { .Draftail-ComboBox__optgroup-label { color: GrayText; } } .Draftail-ComboBox__menu { max-height: 70vh; overflow-y: scroll; } .Draftail-ComboBox__option { cursor: pointer; } .Draftail-ComboBox__status, .Draftail-ComboBox__option { padding: 10px; border: var(--draftail-contrast-outline, 2px solid transparent); font-size: 0.875rem; font-weight: 700; line-height: 1.4; display: flex; align-items: center; } .Draftail-ComboBox__status[aria-selected=true], .Draftail-ComboBox__option[aria-selected=true] { background-color: #ddd; border-color: currentColor; } @media (forced-colors: active) { .Draftail-ComboBox__status[aria-selected=true], .Draftail-ComboBox__option[aria-selected=true] { background: Highlight; color: HighlightText; } } .Draftail-ComboBox__option-icon { width: 1.25rem; height: 1.25rem; margin-inline-start: 6px; margin-inline-end: 6px; } @media (forced-colors: active) { .Draftail-ComboBox__option-icon, .Draftail-ComboBox__option-text { color: CanvasText; } } .Draftail-Toolbar { position: relative; padding: 0.25rem; background-color: #ddd; color: #333; border-radius: 0; border-bottom: 1px solid #ddd; } .Draftail-Editor--focus .Draftail-Toolbar { position: sticky; top: 0; z-index: 31; } .Draftail-BlockToolbar { float: left; } [dir=rtl] .Draftail-BlockToolbar { float: right; } .Draftail-BlockToolbar ~ .Draftail-Toolbar, .Draftail-BlockToolbar ~ .DraftEditor-root { margin-inline-start: var(--draftail-offset-inline-start); } .Draftail-BlockToolbar__trigger { appearance: none; background: #fff; color: inherit; border-radius: 50%; border: 1px solid currentColor; width: 1.5rem; height: 1.5rem; padding: 0; margin: 0; margin-inline-end: 0.5rem; display: grid; align-items: center; justify-content: center; position: absolute; transform: translateY(-50%); visibility: hidden; } .Draftail-Editor--focus .Draftail-BlockToolbar__trigger, .Draftail-Editor:focus-within .Draftail-BlockToolbar__trigger, .Draftail-BlockToolbar__trigger:hover, .Draftail-BlockToolbar__trigger:focus { visibility: visible; } .Draftail-FloatingToolbar { padding: 0.25rem; background-color: #ddd; color: #333; border-radius: 0; border: 1px solid #ddd; outline: var(--draftail-contrast-outline-modal, 10px solid transparent); } .Draftail-FloatingToolbar__target { position: absolute; pointer-events: none; visibility: hidden; } .Draftail-MetaToolbar { position: relative; display: flex; justify-content: flex-end; padding: 0.25rem; background-color: #fff; color: #ddd; border-top: var(--draftail-contrast-outline, 2px solid transparent); } .Draftail-ToolbarGroup { display: inline-block; } .Draftail-ToolbarGroup::before { content: ""; display: inline-block; width: 0.0625rem; height: 1rem; vertical-align: middle; margin: 0 0.125rem; background-color: rgb(195.5, 195.5, 195.5); } .Draftail-ToolbarGroup:first-of-type::before { display: none; } .Draftail-Editor--readonly .Draftail-ToolbarGroup { opacity: 0.5; } .Draftail-ToolbarButton { -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; display: inline-block; padding: 0.5rem; min-width: 2.25rem; max-height: 2.25rem; border-radius: 0; background: transparent; color: inherit; border: 1px solid transparent; outline: var(--draftail-contrast-outline, 2px solid transparent); font-size: 1rem; font-weight: 600; cursor: pointer; user-select: none; } .Draftail-ToolbarButton--active { background-color: rgba(0, 0, 0, 0.1); border: 1px solid rgba(0, 0, 0, 0.2); } @media (forced-colors: active) { .Draftail-ToolbarButton--active { background: Highlight; color: HighlightText; border-color: currentColor; } } .Draftail-ToolbarButton__label { display: inline-block; vertical-align: middle; height: 1em; } @media (forced-colors: active) { .Draftail-ToolbarButton__label { color: CanvasText; } } [data-draftail-balloon] { position: relative; cursor: pointer; } [data-draftail-balloon]::before, [data-draftail-balloon]::after { position: absolute; z-index: 41; opacity: 0; pointer-events: none; } [data-draftail-balloon]::before { content: ""; } [data-draftail-balloon]::after { -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; background: rgba(17, 17, 17, 0.9); border-radius: 4px; outline: var(--draftail-contrast-outline-modal, 10px solid transparent); color: #fff; content: attr(aria-label); padding: 0.5em 1em; white-space: pre; font-size: 0.875em; } [data-draftail-balloon]:hover::before, [data-draftail-balloon]:hover::after { opacity: 1; transition: all 0.1s ease-out 1s; } [data-draftail-balloon=up]::after, [data-draftail-balloon=up]::before { inset-inline-start: 50%; top: 100%; transform: translate(calc(-50% * var(--draftail-text-direction)), -10px); } [data-draftail-balloon=up]:hover::after, [data-draftail-balloon=up]:hover::before { transform: translate(calc(-50% * var(--draftail-text-direction)), 0); } [data-draftail-balloon=up]::after { margin-top: 11px; } [data-draftail-balloon=up]::before { border: 9px solid transparent; border-top-width: 0; border-bottom: 6px solid rgba(17, 17, 17, 0.9); margin-top: 5px; } [data-draftail-balloon=down]::after, [data-draftail-balloon=down]::before { inset-inline-start: 50%; bottom: 100%; transform: translate(calc(-50% * var(--draftail-text-direction)), 10px); } [data-draftail-balloon=down]:hover::after, [data-draftail-balloon=down]:hover::before { transform: translate(calc(-50% * var(--draftail-text-direction)), 0); } [data-draftail-balloon=down]::after { margin-bottom: 11px; } [data-draftail-balloon=down]::before { border: 9px solid transparent; border-bottom-width: 0; border-top: 6px solid rgba(17, 17, 17, 0.9); margin-bottom: 5px; } .Draftail-ToolbarButton--pin { position: absolute; top: 0; inset-inline-end: 0; padding: 0; min-width: 1.5rem; height: 1.5rem; color: #ddd; background-color: #333; border-top-left-radius: 0; border-start-start-radius: 0; border-bottom-right-radius: 0; border-end-end-radius: 0; border: 1px solid #ddd; } .Draftail-ToolbarButton--pin .Draftail-Icon { width: 0.75rem; height: 0.75rem; } .Draftail-ToolbarButton--pin .Draftail-ToolbarButton__label { vertical-align: top; } .Draftail-ToolbarButton--pin::before { margin-bottom: 2px; } .Draftail-ToolbarButton--pin::after { margin-bottom: 8px; } .Draftail-Toolbar--pin { padding-inline-end: 1.5rem; } .Draftail-DividerBlock { border: 0; background: #ddd; height: 1px; margin: 10px 0; } @media (forced-colors: active) { .Draftail-DividerBlock { background: CanvasText; } }