Skip to content

Rulers and guides for grapesjs designer mode

License

Notifications You must be signed in to change notification settings

azatkama/grapesjs-rulers

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

31 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Grapesjs Rulers

Add rulers and guides for grapesjs designer mode

Screenshot

DEMO

HTML

<link href="https://unpkg.com/grapesjs/dist/css/grapes.min.css" rel="stylesheet">
<link href="https://unpkg.com/grapesjs-rulers/dist/grapesjs-rulers.min.css" rel="stylesheet">
<script src="https://unpkg.com/grapesjs"></script>
<script src="https://unpkg.com/grapesjs-rulers"></script>

<div id="gjs"></div>

JS

const editor = grapesjs.init({
	container: '#gjs',
  height: '100%',
  fromElement: true,
  storageManager: false,
  plugins: ['grapesjs-rulers'],
});

CSS

body, html {
  margin: 0;
  height: 100%;
}

Summary

  • Plugin name: grapesjs-rulers
  • Commands
    • ruler-visibility - toggle ruler visibility
    • guides-visibility - toggle guides visibility
    • clear-guides
    • get-guides - get array of guides
    • set-guides - set guides from array e.g. editor.runCommand('set-guides', {guides: [...]})
    • set-zoom - sets zoom and updates rulers e.g. editor.runCommand('set-zoom', {zoom: 90})
    • destroy-ruler

Options

Option Description Default
dragMode Dragmode to set when rulers are toggled translate
rulerHeight Ruler thickness 15
canvasZoom Zoom out the canvas 94
rulerOpts Options for ruler object {}

Download

  • CDN
    • https://unpkg.com/grapesjs-rulers
  • NPM
    • npm i grapesjs-rulers
  • GIT
    • git clone https://github.com/Ju99ernaut/grapesjs-rulers.git

Usage

Directly in the browser

<link href="https://unpkg.com/grapesjs/dist/css/grapes.min.css" rel="stylesheet"/>
<link href="https://unpkg.com/grapesjs-rulers/dist/grapesjs-rulers.min.css" rel="stylesheet">
<script src="https://unpkg.com/grapesjs"></script>
<script src="path/to/grapesjs-rulers.min.js"></script>

<div id="gjs"></div>

<script type="text/javascript">
  var editor = grapesjs.init({
      container: '#gjs',
      // ...
      plugins: ['grapesjs-rulers'],
      pluginsOpts: {
        'grapesjs-rulers': { /* options */ }
      }
  });
</script>

Modern javascript

import grapesjs from 'grapesjs';
import plugin from 'grapesjs-rulers';
import 'grapesjs/dist/css/grapes.min.css';
import 'grapesjs-rulers/dist/grapesjs-rulers.min.css'

const editor = grapesjs.init({
  container : '#gjs',
  // ...
  plugins: [plugin],
  pluginsOpts: {
    [plugin]: { /* options */ }
  }
  // or
  plugins: [
    editor => plugin(editor, { /* options */ }),
  ],
});

Adding rulers toggle as panel button example

const pn = editor.Panels;
const panelViews = pn.addPanel({
  id: 'options'
});
panelViews.get('buttons').add([{
  attributes: {
    title: 'Toggle Rulers'
  },
  context: 'toggle-rulers', //prevents rulers from being toggled when another views-panel button is clicked 
  label: `<svg width="18" viewBox="0 0 16 16"><path d="M0 8a.5.5 0 0 1 .5-.5h15a.5.5 0 0 1 0 1H.5A.5.5 0 0 1 0 8z"/><path d="M4 3h8a1 1 0 0 1 1 1v2.5h1V4a2 2 0 0 0-2-2H4a2 2 0 0 0-2 2v2.5h1V4a1 1 0 0 1 1-1zM3 9.5H2V12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V9.5h-1V12a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V9.5z"/></svg>`,
  command: 'ruler-visibility',
  id: 'ruler-visibility'
}]);

Disable rulers on preview

editor.on('run:preview', () => editor.stopCommand('ruler-visibility'));

Development

Clone the repository

$ git clone https://github.com/Ju99ernaut/grapesjs-rulers.git
$ cd grapesjs-rulers

Install dependencies

$ npm i

Build css

$ npm run build:css

Start the dev server

$ npm start

Build the source

$ npm run build

License

MIT

About

Rulers and guides for grapesjs designer mode

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • JavaScript 82.4%
  • HTML 9.7%
  • SCSS 7.9%