mirror of
https://github.com/fastmail/Squire.git
synced 2024-12-22 07:13:08 -05:00
fe0dfdf6c4
This is a massive refactor to port Squire to TypeScript, fix a bunch of small bugs and modernise our tooling. The development was done on an internal repository, so apologies to anyone following externally for the commit dump; updates from here should come as real commits again. Co-authored-by: Joe Woods <woods@fastmailteam.com>
150 lines
4.8 KiB
HTML
150 lines
4.8 KiB
HTML
<!DOCTYPE html>
|
||
<html lang="en">
|
||
<head>
|
||
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
|
||
<meta charset="UTF-8">
|
||
<title>Squire Editor Demo</title>
|
||
<style type="text/css" media="screen">
|
||
body {
|
||
position: relative;
|
||
margin: 0 auto;
|
||
padding: 50px;
|
||
width: 540px;
|
||
font: 400 14px/1.24 helvetica, arial, sans-serif;
|
||
text-shadow: 0 1px 0 white;
|
||
}
|
||
h1 {
|
||
font-size: 1.95em;
|
||
}
|
||
span {
|
||
cursor: pointer;
|
||
text-decoration: underline;
|
||
}
|
||
p {
|
||
margin: 5px 0;
|
||
}
|
||
#editor {
|
||
-moz-box-sizing: border-box;
|
||
-webkit-box-sizing: border-box;
|
||
box-sizing: border-box;
|
||
min-height: 200px;
|
||
border: 1px solid #888;
|
||
padding: 1em;
|
||
background: transparent;
|
||
color: #2b2b2b;
|
||
font: 13px/1.35 Helvetica, arial, sans-serif;
|
||
cursor: text;
|
||
}
|
||
a {
|
||
text-decoration: underline;
|
||
}
|
||
h2 {
|
||
font-size: 123.1%;
|
||
}
|
||
h3 {
|
||
font-size: 108%;
|
||
}
|
||
h1,h2,h3,p {
|
||
margin: 1em 0;
|
||
}
|
||
h4,h5,h6 {
|
||
margin: 0;
|
||
}
|
||
ul, ol {
|
||
margin: 0 1em;
|
||
padding: 0 1em;
|
||
}
|
||
blockquote {
|
||
border-left: 2px solid blue;
|
||
margin: 0;
|
||
padding: 0 10px;
|
||
}
|
||
pre {
|
||
white-space: pre-wrap;word-wrap: break-word;overflow-wrap: break-word;border-radius: 3px;border: 1px solid #ccc; padding: 7px 10px; background: #f6f6f6; font-family: menlo, consolas, monospace; font-size: 90%; }
|
||
code {
|
||
border-radius: 3px;
|
||
border: 1px solid #ccc;
|
||
padding: 1px 3px;
|
||
background: #f6f6f6;
|
||
font-family: menlo, consolas, monospace;
|
||
font-size: 90%;
|
||
}
|
||
</style>
|
||
</head>
|
||
<body>
|
||
<h1>Squire Editor Demo</h1>
|
||
<header>
|
||
<p>Squire is a rich text editor primarily built for email apps. It’s designed to be integrated with your own UI framework, and so does not provide its own UI toolbar, widgets or overlays. This is a really simple demo, with the most trivial of UI integrations, to show the raw component in action. <a href="https://github.com/neilj/squire">Learn more and see the source on GitHub</a>.</p>
|
||
<p>
|
||
<span id="bold">Bold</span>
|
||
<span id="removeBold">Unbold</span>
|
||
<span id="italic">Italic</span>
|
||
|
||
<span id="removeItalic">Unitalic</span>
|
||
<span id="underline">Underline</span>
|
||
<span id="removeUnderline">Deunderline</span>
|
||
|
||
<span id="removeAllFormatting">Remove formatting</span>
|
||
|
||
<span id="setFontSize" class="prompt">Font size</span>
|
||
<span id="setFontFace" class="prompt">Font face</span>
|
||
</p>
|
||
<p>
|
||
<span id="setTextColor" class="prompt">Text color</span>
|
||
<span id="setHighlightColor" class="prompt">Text highlight</span>
|
||
<span id="makeLink" class="prompt">Link</span>
|
||
</p>
|
||
<p>
|
||
<span id="increaseQuoteLevel">Quote</span>
|
||
<span id="decreaseQuoteLevel">Dequote</span>
|
||
|
||
<span id="makeUnorderedList">List</span>
|
||
<span id="removeList">Unlist</span>
|
||
<span id="increaseListLevel">Increase list level</span>
|
||
<span id="decreaseListLevel">Decrease list level</span>
|
||
|
||
<span id="code">Code</span>
|
||
<span id="removeCode">Uncode</span>
|
||
|
||
<span id="insertImage" class="prompt">Insert image</span>
|
||
<span id="setHTML" class="prompt">Set HTML</span>
|
||
|
||
<span id="undo">Undo</span>
|
||
<span id="redo">Redo</span>
|
||
</p>
|
||
</header>
|
||
<div id="editor"></div>
|
||
<script src="https://cdnjs.cloudflare.com/ajax/libs/dompurify/2.4.3/purify.min.js" integrity="sha512-3dcbndbDLLWfKWevQu8C/1qVRcxx6h+eRDSnn3/pcBZHISRJgsj3u71U/Ad6nQVHrEi05hOSr6Hnb/p0pWc94w==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
|
||
<script type="text/javascript" src="dist/squire-raw.js"></script>
|
||
<script type="module" charset="utf-8">
|
||
var div = document.getElementById( 'editor' );
|
||
var editor = new Squire( div, {
|
||
blockTag: 'div',
|
||
blockAttributes: {'class': 'paragraph'},
|
||
tagAttributes: {
|
||
ul: {'class': 'UL'},
|
||
ol: {'class': 'OL'},
|
||
li: {'class': 'listItem'},
|
||
a: {'target': '_blank'},
|
||
pre: {
|
||
style: 'border-radius:3px;border:1px solid #ccc;padding:7px 10px;background:#f6f6f6;font-family:menlo,consolas,monospace;font-size:90%;white-space:pre-wrap;word-wrap:break-word;overflow-wrap:break-word;'
|
||
},
|
||
code: {
|
||
style: 'border-radius:3px;border:1px solid #ccc;padding:1px 3px;background:#f6f6f6;font-family:menlo,consolas,monospace;font-size:90%;'
|
||
},
|
||
}
|
||
});
|
||
|
||
document.addEventListener( 'click', function ( e ) {
|
||
var id = e.target.id,
|
||
value;
|
||
if ( id && editor && editor[ id ] ) {
|
||
if ( e.target.className === 'prompt' ) {
|
||
value = prompt( 'Value:' );
|
||
}
|
||
editor[ id ]( value );
|
||
}
|
||
}, false );
|
||
</script>
|
||
</body>
|
||
</html>
|