Browse Source

Update GrapesJS and the demo

pull/2301/head
Artur Arseniev 10 years ago
parent
commit
e37301a3f4
  1. 5
      demo-newsletter-editor.html
  2. 204
      demo.html
  3. 34
      js/grapes.min.js
  4. 109
      js/grapesjs-preset-webpage.js
  5. 4
      stylesheets/grapes.min.css
  6. 251
      stylesheets/grapesjs-preset-webpage.css
  7. 38
      stylesheets/scrolls.css

5
demo-newsletter-editor.html

@ -647,6 +647,11 @@
})
}
});
cmdm.add('tlb-edit', {
run: function(ed) {
alert('At the moment no image editor, maybe soon 😊');
},
});
pnm.addButton('options', {
id: 'view-info',
className: 'fa fa-question-circle',

204
demo.html

@ -5,12 +5,15 @@
<title>GrapesJS Demo</title>
<link rel="stylesheet" href="stylesheets/toastr.min.css">
<link rel="stylesheet" href="stylesheets/grapes.min.css">
<link rel="stylesheet" href="stylesheets/grapesjs-preset-webpage.css">
<link rel="stylesheet" href="stylesheets/tooltip.css">
<link rel="stylesheet" href="stylesheets/perfect-scrollbar.css">
<script src="http://code.jquery.com/jquery-2.2.0.min.js"></script>
<script src="js/perfect-scrollbar.min.js"></script>
<script src="js/toastr.min.js"></script>
<style type="text/css">
body, html{ height: 100%; margin: 0; }
#wte-pn-options2.wte-pn-panel{box-shadow: none;}
.icon-add-comp::before, .icon-comp100::before,.icon-comp50::before,.icon-comp30::before,.icon-rm::before{ content: '';}
.icon-add-comp {
@ -102,96 +105,22 @@
opacity: 0.95;
}
/* Grapesjs Theme */
.gjs-btnt.gjs-pn-active,
.gjs-color-active,
.gjs-pn-btn.gjs-pn-active,
.gjs-pn-btn:active,
.gjs-block:hover {
color: #c75fbe; }
#gjs-rte-toolbar .gjs-rte-btn,
.gjs-btn-prim,
.gjs-btnt,
.gjs-clm-tags .gjs-sm-composite.gjs-clm-field,
.gjs-clm-tags .gjs-sm-field.gjs-sm-composite,
.gjs-clm-tags .gjs-sm-stack #gjs-sm-add,
.gjs-color-main,
.gjs-mdl-dialog,
.gjs-off-prv,
.gjs-pn-btn,
.gjs-pn-panel,
.gjs-sm-sector .gjs-sm-composite.gjs-clm-field,
.gjs-sm-sector .gjs-sm-field.gjs-sm-composite,
.gjs-sm-sector .gjs-sm-stack #gjs-sm-add {
color: #b9a5a6;
#gjs-pn-commands {
display: none;
}
#gjs-rte-toolbar,
.gjs-bg-main,
.gjs-clm-select option,
.gjs-clm-tags .gjs-sm-colorp-c,
.gjs-editor,
.gjs-mdl-dialog,
.gjs-nv-item .gjs-nv-title-c,
.gjs-off-prv,
.gjs-pn-panel,
.gjs-select option,
.gjs-sm-sector .gjs-sm-colorp-c,
.gjs-sm-select option,
.gjs-sm-unit option,
.sp-container {
background-color: #463a3c; }
.gjs-block {
border: 1px solid rgba(0, 0, 0, 0.2);
border-radius: 3px;
margin: 10px 2.5% 5px;
box-shadow: 0 1px 0 0 rgba(0, 0, 0, 0.15);
transition: all 0.2s ease 0s; }
.gjs-block:hover {
box-shadow: 0 3px 4px 0 rgba(0, 0, 0, 0.15); }
/* Scrollbar */
.ps-container:hover > .ps-scrollbar-y-rail:hover,
.ps-container:hover > .ps-scrollbar-x-rail:hover,
.ps-container.ps-active-x > .ps-scrollbar-x-rail,
.ps-container.ps-active-y > .ps-scrollbar-y-rail,
.ps-container.ps-in-scrolling.ps-y > .ps-scrollbar-y-rail,
.ps-container.ps-in-scrolling.ps-x > .ps-scrollbar-x-rail,
.ps-container:hover.ps-in-scrolling.ps-x > .ps-scrollbar-x-rail,
.ps-container:hover.ps-in-scrolling.ps-y > .ps-scrollbar-y-rail {
background-color: rgba(0,0,0,0.3);
opacity: 1;
}
#gjs-pn-devices-c {
width: 85%;
z-index: 1;
}
.ps-container > .ps-scrollbar-y-rail > .ps-scrollbar-y,
.ps-container > .ps-scrollbar-x-rail > .ps-scrollbar-x,
.ps-container:hover > .ps-scrollbar-y-rail:hover > .ps-scrollbar-y,
.ps-container:hover > .ps-scrollbar-x-rail:hover > .ps-scrollbar-x,
.ps-container.ps-in-scrolling.ps-y > .ps-scrollbar-y-rail > .ps-scrollbar-y,
.ps-container.ps-in-scrolling.ps-x > .ps-scrollbar-x-rail > .ps-scrollbar-x,
.ps-container:hover.ps-in-scrolling.ps-x > .ps-scrollbar-x-rail > .ps-scrollbar-x,
.ps-container:hover.ps-in-scrolling.ps-y > .ps-scrollbar-y-rail > .ps-scrollbar-y{
background-color: rgba(255,255,255, 0.3);
border-radius: 1px;
width: 6px;
}
/*
.ps-container:hover > .ps-scrollbar-y-rail:hover > .ps-scrollbar-y,
.ps-container:hover > .ps-scrollbar-x-rail:hover > .ps-scrollbar-x {
background-color: rgba(255,255,255, 0.4);
}
*/
.ps-container > .ps-scrollbar-y-rail {
width: 10px;
}
#gjs-sm-float {
display: none;
}
.ps-container > .ps-scrollbar-x-rail {
height: : 10px;
}
[data-tooltip]::after {
background: rgba(51, 51, 51, 0.9);
}
</style>
</head>
@ -970,6 +899,7 @@
</div>
<script src="js/grapes.min.js"></script>
<script src="js/grapesjs-plugin-export.min.js"></script>
<script src="js/grapesjs-preset-webpage.js"></script>
<script type="text/javascript">
var lp = './img/';
@ -980,51 +910,19 @@
lp+'work-desk.jpg', lp+'phone-app.png', lp+'bg-gr-v.png'
];
var gr = grapesjs.init({
var editor = grapesjs.init({
height: '100%',
container : '#gjs',
fromElement: true,
plugins: ['gjs-plugin-export'],
// Define commands
commands: {
defaults: [{
id: 'open-github',
run: function(em, sender){
sender.set('active',false);
window.open('https://github.com/artf/grapesjs','_blank');
},
},{
id: 'undo',
run: function(em, sender){
sender.set('active',false);
em.UndoManager.undo(true);
},
},{
id: 'redo',
run: function(em, sender){
sender.set('active',false);
em.UndoManager.redo(true);
},
},{
id: 'clean-all',
run: function(em, sender){
sender.set('active',false);
if(confirm('Are you sure to clean the canvas?')){
var comps = em.DomComponents.clear();
}
},
}],
},
plugins: ['gjs-plugin-export', 'gjs-preset-webpage'],
// Insert some default images
assetManager: {
assets: images
},
// Configure Style Manager // 1481 - 1235
// Configure style
styleManager : {
sectors: [{
name: 'General',
@ -1066,7 +964,7 @@
},{
name: 'Typography',
open: false,
buildProps: ['font-family', 'font-size', 'font-weight', 'letter-spacing', 'color', 'line-height', 'text-align', 'text-shadow'],
buildProps: ['font-family', 'font-size', 'font-weight', 'letter-spacing', 'color', 'line-height', 'text-align', 'text-decoration', 'text-shadow'],
properties:[
{ name: 'Font', property: 'font-family'},
{ name: 'Weight', property: 'font-weight'},
@ -1081,6 +979,15 @@
{ value : 'right', name : 'Right', className: 'fa fa-align-right'},
{ value : 'justify', name : 'Justify', className: 'fa fa-align-justify'}
],
},{
property: 'text-decoration',
type: 'radio',
defaults: 'none',
list: [
{ value: 'none', name: 'None', className: 'fa fa-times'},
{ value: 'underline', name: 'underline', className: 'fa fa-underline' },
{ value: 'line-through', name: 'Line-through', className: 'fa fa-strikethrough'}
],
},{
property: 'text-shadow',
properties: [
@ -1302,30 +1209,24 @@
);
//Add extra buttons
gr.Panels.addButton('options', [{
id: 'undo',
className: 'fa fa-undo icon-undo',
command: 'undo',
attributes: { title: 'Undo (CTRL/CMD + Z)'}
},{
id: 'redo',
className: 'fa fa-repeat icon-redo',
command: 'redo',
attributes: { title: 'Redo (CTRL/CMD + SHIFT + Z)' }
},{
id: 'clean-all',
className: 'fa fa-trash icon-blank',
command: 'clean-all',
attributes: { title: 'Empty canvas' }
},{
id: 'view-github',
className: 'fa fa-github',
command: 'open-github',
attributes: { title: 'View on Github' }
}]);
var cmdm = editor.Commands;
cmdm.add('open-github', {
run: function(em, sender){
sender.set('active',false);
window.open('https://github.com/artf/grapesjs', '_blank');
},
});
cmdm.add('tlb-edit', {
run: function(ed) {
alert('At the moment no image editor, maybe soon 😊');
//var sel = ed.getSelected();
//editorImage = sel;
//featherEditor.launch({image: sel.get('view').el});
},
});
window.editor = editor;
window.editor = gr;
// Simple warn notifier
var origWarn = console.warn;
@ -1340,9 +1241,20 @@
origWarn(msg);
};
// Beautify tooltips
$('*[title]').each(function () {
var el = $(this);
var title = el.attr('title').trim();
if(!title)
return;
el.attr('data-tooltip', el.attr('title'));
el.attr('title', '');
});
// Beautify scrollbars
/*
gr.on('load', function() {
editor.on('load', function() {
var el = document.querySelector('#gjs-pn-views-container');
console.log(el);
Ps.initialize(el);

34
js/grapes.min.js

File diff suppressed because one or more lines are too long

109
js/grapesjs-preset-webpage.js

@ -0,0 +1,109 @@
grapesjs.plugins.add('gjs-preset-webpage', (editor, opts) => {
var opt = opts || {};
var config = editor.getConfig();
config.showDevices = 0;
var updateTooltip = function(coll, pos) {
coll.each(function(item) {
var attrs = item.get('attributes');
attrs['data-tooltip-pos'] = pos || 'bottom';
item.set('attributes', attrs);
});
}
/****************** COMMANDS *************************/
var cmdm = editor.Commands;
cmdm.add('undo', {
run: function(editor, sender) {
sender.set('active', 0);
editor.UndoManager.undo(1);
}
});
cmdm.add('redo', {
run: function(editor, sender) {
sender.set('active', 0);
editor.UndoManager.redo(1);
}
});
cmdm.add('set-device-desktop', {
run: function(editor) {
editor.setDevice('Desktop');
}
});
cmdm.add('set-device-tablet', {
run: function(editor) {
editor.setDevice('Tablet');
}
});
cmdm.add('set-device-mobile', {
run: function(editor) {
editor.setDevice('Mobile portrait');
}
});
cmdm.add('clean-all', {
run: function(editor, sender) {
sender && sender.set('active',false);
if(confirm('Are you sure to clean the canvas?')){
var comps = editor.DomComponents.clear();
localStorage.setItem('gjs-css', '');
localStorage.setItem('gjs-html', '');
}
}
});
/****************** BUTTONS *************************/
var pnm = editor.Panels;
pnm.addButton('options', [{
id: 'undo',
className: 'fa fa-undo icon-undo',
command: 'undo',
attributes: { title: 'Undo (CTRL/CMD + Z)'}
},{
id: 'redo',
className: 'fa fa-repeat icon-redo',
command: 'redo',
attributes: { title: 'Redo (CTRL/CMD + SHIFT + Z)' }
},{
id: 'clean-all',
className: 'fa fa-trash icon-blank',
command: 'clean-all',
attributes: { title: 'Empty canvas' }
},{
id: 'view-github',
className: 'fa fa-github',
command: 'open-github',
attributes: { title: 'View Github Page' }
}]);
// Add devices buttons
var panelDevices = pnm.addPanel({id: 'devices-c'});
var deviceBtns = panelDevices.get('buttons');
deviceBtns.add([{
id: 'deviceDesktop',
command: 'set-device-desktop',
className: 'fa fa-desktop',
attributes: {'title': 'Desktop'},
active: 1,
},{
id: 'deviceTablet',
command: 'set-device-tablet',
className: 'fa fa-tablet',
attributes: {'title': 'Tablet'},
},{
id: 'deviceMobile',
command: 'set-device-mobile',
className: 'fa fa-mobile',
attributes: {'title': 'Mobile'},
}]);
updateTooltip(deviceBtns);
updateTooltip(pnm.getPanel('options').get('buttons'));
updateTooltip(pnm.getPanel('options').get('buttons'));
updateTooltip(pnm.getPanel('views').get('buttons'));
});

4
stylesheets/grapes.min.css

File diff suppressed because one or more lines are too long

251
stylesheets/grapesjs-preset-webpage.css

@ -0,0 +1,251 @@
.gjs-clm-tags .gjs-sm-title,
.gjs-sm-sector .gjs-sm-title {
border-top: none;
}
.gjs-clm-tags .gjs-clm-tag {
/* background-color: $tag-color; */
border: none;
box-shadow: none;
padding: 5px 8px;
text-shadow: none;
}
.gjs-field {
background-color: rgba(0, 0, 0, 0.15);
box-shadow: none;
}
.gjs-btnt.gjs-pn-active,
.gjs-pn-btn.gjs-pn-active {
box-shadow: none;
}
.gjs-pn-btn:hover {
color: rgba(255, 255, 255, 0.75);
}
.gjs-btnt.gjs-pn-active,
.gjs-color-active,
.gjs-pn-btn.gjs-pn-active,
.gjs-pn-btn:active,
.gjs-block:hover {
color: rgb(217, 131, 166);
}
#gjs-rte-toolbar .gjs-rte-btn,
.gjs-btn-prim,
.gjs-btnt,
.gjs-clm-tags .gjs-sm-composite.gjs-clm-field,
.gjs-clm-tags .gjs-sm-field.gjs-sm-composite,
.gjs-clm-tags .gjs-sm-stack #gjs-sm-add,
.gjs-color-main,
.gjs-mdl-dialog,
.gjs-off-prv,
.gjs-pn-btn,
.gjs-pn-panel,
.gjs-sm-sector .gjs-sm-composite.gjs-clm-field,
.gjs-sm-sector .gjs-sm-field.gjs-sm-composite,
.gjs-sm-sector .gjs-sm-stack #gjs-sm-add {
color: #b9a5a6;
}
#gjs-rte-toolbar,
.gjs-bg-main,
.gjs-clm-select option,
.gjs-clm-tags .gjs-sm-colorp-c,
.gjs-editor,
.gjs-mdl-dialog,
.gjs-nv-item .gjs-nv-title-c,
.gjs-off-prv,
.gjs-pn-panel,
.gjs-select option,
.gjs-sm-sector .gjs-sm-colorp-c,
.gjs-sm-select option,
.gjs-sm-unit option,
.sp-container {
background-color: #463a3c;
}
.gjs-import-label,
.gjs-export-label {
margin-bottom: 10px;
font-size: 13px;
}
.gjs-mdl-dialog .gjs-btn-import {
margin-top: 10px;
}
.CodeMirror {
border-radius: 3px;
height: 450px;
font-family: sans-serif, monospace;
letter-spacing: 0.3px;
font-size: 12px;
}
/* Extra */
.gjs-block {
border: 1px solid rgba(0, 0, 0, 0.2);
border-radius: 3px;
margin: 10px 2.5% 5px;
box-shadow: 0 1px 0 0 rgba(0, 0, 0, 0.15);
transition: all 0.2s ease 0s;
}
.gjs-block:hover {
box-shadow: 0 3px 4px 0 rgba(0, 0, 0, 0.15);
}
#gjs-pn-views-container.gjs-pn-panel {
padding: 39px 0 0;
}
#gjs-pn-views.gjs-pn-panel {
padding: 0;
border: none;
}
#gjs-pn-views .gjs-pn-btn {
margin: 0;
height: 40px;
padding: 10px;
width: 25%;
border-bottom: 2px solid rgba(0, 0, 0, 0.3);
}
#gjs-pn-views .gjs-pn-active {
/*
color: rgba(255, 255, 255, 0.9);
border-bottom: 2px solid $active-color;
*/
border-radius: 0;
}
#gjs-pn-devices-c {
padding-left: 30px;
}
#gjs-pn-options {
padding-right: 30px;
}
.gjs-sm-composite .gjs-sm-properties {
display: flex;
flex-flow: row wrap;
justify-content: space-between;
}
#gjs-sm-border-top-left-radius,
#gjs-sm-border-top-right-radius,
#gjs-sm-border-bottom-left-radius,
#gjs-sm-border-bottom-right-radius,
#gjs-sm-margin-top,
#gjs-sm-margin-bottom,
#gjs-sm-margin-right,
#gjs-sm-margin-left,
#gjs-sm-padding-top,
#gjs-sm-padding-bottom,
#gjs-sm-padding-right,
#gjs-sm-padding-left {
flex: 999 1 60px;
}
#gjs-sm-border-width,
#gjs-sm-border-style,
#gjs-sm-border-color {
flex: 999 1 80px;
}
#gjs-sm-margin-left,
#gjs-sm-padding-left {
order: 2;
}
#gjs-sm-margin-right,
#gjs-sm-padding-right {
order: 3;
}
#gjs-sm-margin-bottom,
#gjs-sm-padding-bottom {
order: 4;
}
.gjs-field-radio {
width: 100%;
}
.gjs-field-radio #gjs-sm-input-holder {
display: flex;
}
.gjs-radio-item {
flex: 1 0 auto;
text-align: center;
}
.gjs-sm-sector .gjs-sm-property.gjs-sm-list {
width: 50%;
}
.gjs-mdl-content {
border-top: none;
}
.gjs-sm-sector .gjs-sm-property .gjs-sm-layer.gjs-sm-active {
background-color: rgba(255, 255, 255, 0.09);
}
/*
#gjs-pn-views-container,
#gjs-pn-views{
min-width: 270px;
}
*/
.gjs-f-button::before { content: 'B'; }
.gjs-f-divider::before { content: 'D'; }
.gjs-mdl-dialog-sm {
width: 300px;
}
.gjs-mdl-dialog form .gjs-sm-property {
font-size: 12px;
margin-bottom: 15px;
}
.gjs-mdl-dialog form .gjs-sm-label {
margin-bottom: 5px;
}
#gjs-clm-status-c {
display: none;
}
.anim-spin {
animation: 0.5s linear 0s normal none infinite running spin;
}
.form-status {
float: right;
font-size: 14px;
}
.text-danger {
color: #f92929;
}
@keyframes spin {
0% {
transform: rotate(0deg);
}
100% {
transform: rotate(360deg);
}
}

38
stylesheets/scrolls.css

@ -0,0 +1,38 @@
/* Scrollbar */
.ps-container:hover > .ps-scrollbar-y-rail:hover,
.ps-container:hover > .ps-scrollbar-x-rail:hover,
.ps-container.ps-active-x > .ps-scrollbar-x-rail,
.ps-container.ps-active-y > .ps-scrollbar-y-rail,
.ps-container.ps-in-scrolling.ps-y > .ps-scrollbar-y-rail,
.ps-container.ps-in-scrolling.ps-x > .ps-scrollbar-x-rail,
.ps-container:hover.ps-in-scrolling.ps-x > .ps-scrollbar-x-rail,
.ps-container:hover.ps-in-scrolling.ps-y > .ps-scrollbar-y-rail {
background-color: rgba(0,0,0,0.3);
opacity: 1;
}
.ps-container > .ps-scrollbar-y-rail > .ps-scrollbar-y,
.ps-container > .ps-scrollbar-x-rail > .ps-scrollbar-x,
.ps-container:hover > .ps-scrollbar-y-rail:hover > .ps-scrollbar-y,
.ps-container:hover > .ps-scrollbar-x-rail:hover > .ps-scrollbar-x,
.ps-container.ps-in-scrolling.ps-y > .ps-scrollbar-y-rail > .ps-scrollbar-y,
.ps-container.ps-in-scrolling.ps-x > .ps-scrollbar-x-rail > .ps-scrollbar-x,
.ps-container:hover.ps-in-scrolling.ps-x > .ps-scrollbar-x-rail > .ps-scrollbar-x,
.ps-container:hover.ps-in-scrolling.ps-y > .ps-scrollbar-y-rail > .ps-scrollbar-y{
background-color: rgba(255,255,255, 0.3);
border-radius: 1px;
width: 6px;
}
/*
.ps-container:hover > .ps-scrollbar-y-rail:hover > .ps-scrollbar-y,
.ps-container:hover > .ps-scrollbar-x-rail:hover > .ps-scrollbar-x {
background-color: rgba(255,255,255, 0.4);
}
*/
.ps-container > .ps-scrollbar-y-rail {
width: 10px;
}
.ps-container > .ps-scrollbar-x-rail {
height: 10px;
}
Loading…
Cancel
Save