604 lines
14 KiB
Plaintext
604 lines
14 KiB
Plaintext
/* ------------------------------------------------------------------------------
|
|
*
|
|
* # Summernote editor
|
|
*
|
|
* Super simple WYSIWYG Editor for Bootstrap framework
|
|
*
|
|
* Version: 1.2
|
|
* Latest update: Mar 10, 2016
|
|
*
|
|
* ---------------------------------------------------------------------------- */
|
|
|
|
|
|
// Summernote uses its own icons
|
|
// ----------------------------------------
|
|
|
|
// Load font
|
|
@font-face{
|
|
font-family:"summernote";
|
|
font-style:normal;
|
|
font-weight:normal;
|
|
src:url("@{summernote-font-path}/summernote.eot?ad8d7e2d177d2473aecd9b35d16211fb");
|
|
src:url("@{summernote-font-path}/summernote.eot?#iefix") format("embedded-opentype"),
|
|
url("@{summernote-font-path}/summernote.woff?ad8d7e2d177d2473aecd9b35d16211fb") format("woff"),
|
|
url("@{summernote-font-path}/summernote.ttf?ad8d7e2d177d2473aecd9b35d16211fb") format("truetype")
|
|
}
|
|
|
|
// Icon styles
|
|
[class^="note-icon-"]:before,
|
|
[class*=" note-icon-"]:before {
|
|
display: inline-block;
|
|
font: normal normal normal 14px summernote;
|
|
font-size: inherit;
|
|
text-decoration: inherit;
|
|
text-rendering: auto;
|
|
text-transform: none;
|
|
vertical-align: middle;
|
|
speak: none;
|
|
-webkit-font-smoothing: antialiased;
|
|
-moz-osx-font-smoothing: grayscale
|
|
}
|
|
|
|
// Icons
|
|
.note-icon-align-center:before{content:"\f101"}
|
|
.note-icon-align-indent:before{content:"\f102"}
|
|
.note-icon-align-justify:before{content:"\f103"}
|
|
.note-icon-align-left:before{content:"\f104"}
|
|
.note-icon-align-outdent:before{content:"\f105"}
|
|
.note-icon-align-right:before{content:"\f106"}
|
|
.note-icon-align:before{content:"\f107"}
|
|
.note-icon-arrows-alt:before{content:"\f108"}
|
|
.note-icon-bold:before{content:"\f109"}
|
|
.note-icon-caret:before{content:"\f10a"}
|
|
.note-icon-chain-broken:before{content:"\f10b"}
|
|
.note-icon-circle:before{content:"\f10c"}
|
|
.note-icon-close:before{content:"\f10d"}
|
|
.note-icon-code:before{content:"\f10e"}
|
|
.note-icon-eraser:before{content:"\f10f"}
|
|
.note-icon-font:before{content:"\f110"}
|
|
.note-icon-frame:before{content:"\f111"}
|
|
.note-icon-italic:before{content:"\f112"}
|
|
.note-icon-link:before{content:"\f113"}
|
|
.note-icon-magic:before{content:"\f114"}
|
|
.note-icon-menu-check:before{content:"\f115"}
|
|
.note-icon-minus:before{content:"\f116"}
|
|
.note-icon-orderedlist:before{content:"\f117"}
|
|
.note-icon-pencil:before{content:"\f118"}
|
|
.note-icon-picture:before{content:"\f119"}
|
|
.note-icon-question:before{content:"\f11a"}
|
|
.note-icon-redo:before{content:"\f11b"}
|
|
.note-icon-special-character:before{content:"\f11c"}
|
|
.note-icon-square:before{content:"\f11d"}
|
|
.note-icon-strikethrough:before{content:"\f11e"}
|
|
.note-icon-subscript:before{content:"\f11f"}
|
|
.note-icon-summernote:before{content:"\f120"}
|
|
.note-icon-superscript:before{content:"\f121"}
|
|
.note-icon-table:before{content:"\f122"}
|
|
.note-icon-text-height:before{content:"\f123"}
|
|
.note-icon-trash:before{content:"\f124"}
|
|
.note-icon-underline:before{content:"\f125"}
|
|
.note-icon-undo:before{content:"\f126"}
|
|
.note-icon-unorderedlist:before{content:"\f127"}
|
|
.note-icon-video:before{content:"\f128"}
|
|
|
|
|
|
|
|
// Core
|
|
// ----------------------------------------
|
|
|
|
// Editor
|
|
.note-editor {
|
|
border: 1px solid @panel-default-border;
|
|
border-radius: @border-radius-base;
|
|
.box-shadow(none);
|
|
|
|
// Droppable
|
|
.note-dropzone {
|
|
position: absolute;
|
|
z-index: 1;
|
|
display: none;
|
|
color: @brand-primary;
|
|
background-color: #fff;
|
|
border: 2px dashed @brand-primary;
|
|
pointer-events: none;
|
|
.opacity(0.95);
|
|
|
|
// Message
|
|
.note-dropzone-message {
|
|
display: table-cell;
|
|
font-size: @font-size-h1;
|
|
font-weight: 500;
|
|
text-align: center;
|
|
vertical-align: middle;
|
|
}
|
|
|
|
// Hover state
|
|
&.hover {
|
|
color: @brand-primary;
|
|
border: 2px dashed @brand-primary;
|
|
}
|
|
}
|
|
&.dragover .note-dropzone {
|
|
display: table;
|
|
}
|
|
|
|
// Toolbar
|
|
.note-toolbar {
|
|
background-color: transparent;
|
|
border-bottom: 0;
|
|
padding: @content-padding-large;
|
|
padding-top: 0;
|
|
margin: 0;
|
|
}
|
|
|
|
// Fullscreen mode
|
|
&.fullscreen {
|
|
position: fixed;
|
|
top: 0;
|
|
left: 0;
|
|
z-index: 1050;
|
|
width: 100%;
|
|
|
|
// Editable
|
|
.note-editable {
|
|
background-color: @panel-bg;
|
|
}
|
|
|
|
// Hide resizer
|
|
.note-resizebar {
|
|
display: none;
|
|
}
|
|
}
|
|
|
|
// Codeview mode
|
|
&.codeview {
|
|
.note-editable {
|
|
display: none;
|
|
}
|
|
.note-codable {
|
|
display: block;
|
|
}
|
|
}
|
|
|
|
// Status bar
|
|
.note-statusbar {
|
|
background-color: @panel-footer-bg;
|
|
|
|
// Resize handle
|
|
.note-resizebar {
|
|
width: 100%;
|
|
height: 8px;
|
|
cursor: s-resize;
|
|
border-top: 1px solid @panel-inner-border;
|
|
|
|
// Icon bar
|
|
.note-icon-bar {
|
|
width: 20px;
|
|
margin: 1px auto;
|
|
border-top: 1px solid darken(@panel-inner-border, 20%);
|
|
}
|
|
}
|
|
}
|
|
|
|
// Editable area
|
|
.note-editable {
|
|
padding: @content-padding-large;
|
|
padding-top: 0;
|
|
overflow: auto;
|
|
outline: 0;
|
|
min-height: 150px;
|
|
|
|
&[contenteditable="false"] {
|
|
background-color: @gray-lighter;
|
|
}
|
|
}
|
|
|
|
// Code view
|
|
.note-codable {
|
|
display: none;
|
|
width: 100%;
|
|
padding: @content-padding-large;
|
|
margin-bottom: 0;
|
|
font-family: Menlo,Monaco, monospace, sans-serif;
|
|
color: #fff;
|
|
background-color: @gray-dark;
|
|
border: 0;
|
|
border-radius: 0;
|
|
resize: none;
|
|
.box-shadow(none);
|
|
}
|
|
|
|
// Modal title
|
|
.modal-title {
|
|
font-size: @font-size-h5;
|
|
}
|
|
}
|
|
|
|
// Air mode
|
|
.note-air-editor {
|
|
outline: 0;
|
|
}
|
|
|
|
// Popover
|
|
.note-popover {
|
|
max-width: none;
|
|
|
|
// Content
|
|
.popover-content {
|
|
padding: @content-padding-base;
|
|
padding-top: 0;
|
|
margin: 0;
|
|
|
|
a {
|
|
display: inline-block;
|
|
max-width: 200px;
|
|
overflow: hidden;
|
|
text-overflow: ellipsis;
|
|
white-space: nowrap;
|
|
vertical-align: middle;
|
|
}
|
|
|
|
> .btn-group:last-child {
|
|
margin-right: 0;
|
|
}
|
|
}
|
|
|
|
// Popover arrow
|
|
.arrow {
|
|
left: 20px;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
// Popover/toolbar elements
|
|
// ----------------------------------------
|
|
|
|
// Base
|
|
.note-popover .popover-content,
|
|
.note-toolbar {
|
|
|
|
// Buttons
|
|
> .note-btn-group {
|
|
margin-top: @content-padding-large;
|
|
margin-right: @content-padding-large;
|
|
margin-left: 0;
|
|
|
|
// Icon caret
|
|
.note-icon-caret {
|
|
&:before {
|
|
width: 9px;
|
|
margin-left: 2px;
|
|
margin-right: 2px;
|
|
}
|
|
}
|
|
|
|
// Caret spacing
|
|
i + .note-icon-caret {
|
|
margin-left: 2px;
|
|
margin-right: -5px;
|
|
}
|
|
}
|
|
|
|
// Style
|
|
.note-style {
|
|
h1, h2, h3, h4, h5, h6, blockquote {
|
|
margin: 0;
|
|
}
|
|
}
|
|
|
|
// Table
|
|
.note-table {
|
|
min-width: 0;
|
|
|
|
&.dropdown-menu {
|
|
padding: 10px;
|
|
}
|
|
|
|
// Dimension picker
|
|
.note-dimension-picker {
|
|
font-size: 18px;
|
|
margin-bottom: 10px;
|
|
|
|
// Mouse catcher
|
|
.note-dimension-picker-mousecatcher {
|
|
position: absolute!important;
|
|
z-index: 3;
|
|
width: 10em;
|
|
height: 10em;
|
|
cursor: pointer;
|
|
}
|
|
|
|
// Unhighlighted
|
|
.note-dimension-picker-unhighlighted {
|
|
position: relative!important;
|
|
z-index: 1;
|
|
width: 5em;
|
|
height: 5em;
|
|
background: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASAgMAAAAroGbEAAAACVBMVEUAAIj4+Pjp6ekKlAqjAAAAAXRSTlMAQObYZgAAAAFiS0dEAIgFHUgAAAAJcEhZcwAACxMAAAsTAQCanBgAAAAHdElNRQfYAR0BKhmnaJzPAAAAG0lEQVQI12NgAAOtVatWMTCohoaGUY+EmIkEAEruEzK2J7tvAAAAAElFTkSuQmCC') repeat;
|
|
}
|
|
|
|
// Highlighted
|
|
.note-dimension-picker-highlighted {
|
|
position: absolute!important;
|
|
z-index: 2;
|
|
width: 1em;
|
|
height: 1em;
|
|
background: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASAgMAAAAroGbEAAAACVBMVEUAAIjd6vvD2f9LKLW+AAAAAXRSTlMAQObYZgAAAAFiS0dEAIgFHUgAAAAJcEhZcwAACxMAAAsTAQCanBgAAAAHdElNRQfYAR0BKwNDEVT0AAAAG0lEQVQI12NgAAOtVatWMTCohoaGUY+EmIkEAEruEzK2J7tvAAAAAElFTkSuQmCC') repeat;
|
|
}
|
|
}
|
|
|
|
// Center the text
|
|
.note-dimension-display {
|
|
text-align: center;
|
|
}
|
|
}
|
|
|
|
// Color picker
|
|
.note-color {
|
|
.dropdown-menu {
|
|
min-width: 330px;
|
|
white-space: nowrap;
|
|
|
|
// Buttons
|
|
.btn-group {
|
|
margin: @padding-base-vertical @padding-base-horizontal;
|
|
|
|
// Title
|
|
.note-palette-title {
|
|
margin-bottom: 10px;
|
|
font-weight: 500;
|
|
}
|
|
|
|
// Rreset colors
|
|
.note-color-reset {
|
|
padding: @padding-small-vertical @padding-small-horizontal;
|
|
cursor: pointer;
|
|
background-color: #F5F5F5;
|
|
text-align: center;
|
|
margin-bottom: 10px;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
// Paragraph
|
|
.note-para {
|
|
.dropdown-menu {
|
|
min-width: 290px;
|
|
padding: 10px;
|
|
text-align: center;
|
|
|
|
> div {
|
|
&:first-child {
|
|
margin-right: 10px;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
// Dropdown menu
|
|
.dropdown-menu {
|
|
min-width: 90px;
|
|
|
|
// Right position
|
|
&.right {
|
|
right: 0;
|
|
left: auto;
|
|
|
|
&:before {
|
|
right: 9px;
|
|
left: auto!important;
|
|
}
|
|
|
|
&:after {
|
|
right: 10px;
|
|
left: auto!important;
|
|
}
|
|
}
|
|
|
|
// Items
|
|
li {
|
|
a {
|
|
i {
|
|
display: none;
|
|
}
|
|
|
|
&.checked {
|
|
background-color: #f5f5f5;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
// Color palette
|
|
.note-color-palette {
|
|
line-height: 1;
|
|
|
|
div {
|
|
.note-color-btn {
|
|
width: 17px;
|
|
height: 17px;
|
|
padding: 0;
|
|
margin: 0;
|
|
border: 1px solid #fff;
|
|
|
|
&:hover {
|
|
border: 1px solid @gray-dark;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
// Content
|
|
.note-popover .popover-content {
|
|
> .btn-group {
|
|
margin-top: @content-padding-base;
|
|
margin-right: @content-padding-base;
|
|
}
|
|
}
|
|
|
|
|
|
// Dialog
|
|
// ----------------------------------------
|
|
|
|
.note-dialog {
|
|
> div {
|
|
display: none;
|
|
}
|
|
|
|
// Dropzone
|
|
.note-image-dialog .mote-dropzone {
|
|
min-height: 100px;
|
|
margin-bottom: 10px;
|
|
font-size: @font-size-h1;
|
|
color: @gray-lighter;
|
|
text-align: center;
|
|
border: 4px dashed @gray-lighter;
|
|
}
|
|
|
|
// Help dialog
|
|
.note-help-dialog {
|
|
color: #ccc;
|
|
background-color: transparent;
|
|
background-color: @gray-dark!important;
|
|
border: 0;
|
|
.opacity(0.9);
|
|
|
|
a {
|
|
color: #fff;
|
|
}
|
|
|
|
// Title
|
|
.title {
|
|
padding-bottom: @padding-base-vertical;
|
|
font-size: @font-size-h6;
|
|
font-weight: 500;
|
|
color: #fff;
|
|
border-bottom: 1px solid #fff;
|
|
}
|
|
|
|
// Modal content
|
|
.modal-content {
|
|
background-color: transparent;
|
|
border: 1px solid #fff;
|
|
border-radius: @border-radius-base;
|
|
.box-shadow(none);
|
|
}
|
|
|
|
// Close button
|
|
.modal-close {
|
|
color: @gray-light;
|
|
cursor: pointer;
|
|
}
|
|
|
|
// Shortcut layout
|
|
.note-shortcut-layout {
|
|
width: 100%;
|
|
|
|
td {
|
|
vertical-align: top;
|
|
}
|
|
}
|
|
|
|
// Shortcut
|
|
.note-shortcut {
|
|
margin-top: 8px;
|
|
|
|
th {
|
|
color: @gray-lighter;
|
|
text-align: left;
|
|
}
|
|
|
|
td:first-child {
|
|
min-width: 110px;
|
|
padding-right: 10px;
|
|
font-family: "Courier New";
|
|
color: @gray-lighter;
|
|
text-align: right;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
// Display label
|
|
.note-group-select-from-files {
|
|
label {
|
|
display: block;
|
|
}
|
|
}
|
|
|
|
|
|
// Handle
|
|
// ----------------------------------------
|
|
|
|
.note-handle {
|
|
.note-control-selection {
|
|
position: absolute;
|
|
display: none;
|
|
border: 1px solid @gray-dark;
|
|
|
|
> div {
|
|
position: absolute;
|
|
}
|
|
|
|
// Background
|
|
.note-control-selection-bg {
|
|
width: 100%;
|
|
height: 100%;
|
|
background-color: @gray-dark;
|
|
.opacity(0.3);
|
|
}
|
|
|
|
// Control handle
|
|
.note-control-handle,
|
|
.note-control-holder,
|
|
.note-control-sizing {
|
|
width: 7px;
|
|
height: 7px;
|
|
border: 1px solid @gray-dark;
|
|
}
|
|
.note-control-sizing {
|
|
background-color: #fff;
|
|
}
|
|
|
|
// Control direction
|
|
.note-control-nw {
|
|
top: -5px;
|
|
left: -5px;
|
|
border-right: 0;
|
|
border-bottom: 0;
|
|
}
|
|
.note-control-ne {
|
|
top: -5px;
|
|
right: -5px;
|
|
border-bottom: 0;
|
|
border-left: 0;
|
|
}
|
|
.note-control-sw {
|
|
bottom: -5px;
|
|
left: -5px;
|
|
border-top: 0;
|
|
border-right: 0;
|
|
}
|
|
.note-control-se {
|
|
right: -5px;
|
|
bottom: -5px;
|
|
cursor: se-resize;
|
|
}
|
|
|
|
// Selection info
|
|
.note-control-selection-info {
|
|
right: 0;
|
|
bottom: 0;
|
|
padding: 5px;
|
|
margin: 5px;
|
|
color: #fff;
|
|
background-color: @gray-dark;
|
|
border-radius:@border-radius-base;
|
|
.opacity(0.7);
|
|
}
|
|
}
|
|
}
|