• Stars
    star
    107
  • Rank 323,587 (Top 7 %)
  • Language
    JavaScript
  • Created about 7 years ago
  • Updated almost 2 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Easy configurable gradient picker, with no dependencies

Grapick

Easy configurable gradient picker, with no dependencies.

Demo

Download

You can download the file from here (CSS), via npm i grapick or directly from the /dist folder of this repo

Usage

<link rel="stylesheet" href="path/to/grapick.min.css">
<script src="path/to/grapick.min.js"></script>

<div id="gp"></div>

<script type="text/javascript">
  const gp = new Grapick({el: '#gp'});

  // Handlers are color stops
  gp.addHandler(0, 'red');
  gp.addHandler(100, 'blue');

  // Do stuff on change of the gradient
  gp.on('change', complete => {
    document.body.style.background = gp.getSafeValue();
  })
</script>

Configurations

  • pfx - Class prefix (string)
  • el - Element on which the picker will be attached (HTMLElement or query string)
  • colorEl - Element to use for the custom color picker, eg. '
    '
  • min - Minimum handler position, default: 0 (integer)
  • max - Maximum handler position, default: 100 (integer)
  • direction - Any supported gradient direction: '90deg' (default), 'top', 'bottom', 'right', '135deg', etc.
  • type - Gradient type, available options: 'linear' (default) | 'radial' | 'repeating-linear' | 'repeating-radial'
  • height - Gradient input height, default: '30px'
  • width - Gradient input width, default: '100%'
  • emptyColor - Default empty color (when you click on an empty color picker area)
  • onValuePos - Format handler position value, default (to avoid floats): val => parseInt(val)

Add custom color picker

Grapick is color picker independent and uses the browser's native one, by default, just to make it more accessible, but you can easily switch it with one of your choices (recommended as not all browsers support properly input[type=color]).

In the example below we use spectrum color picker just as the proof of concept

<script src="//code.jquery.com/jquery-3.2.1.min.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/spectrum/1.8.0/spectrum.min.js"></script>
<link rel="stylesheet" type="text/css" href="//cdnjs.cloudflare.com/ajax/libs/spectrum/1.8.0/spectrum.min.css">

<div id="gp"></div>

<script type="text/javascript">
  const gp = new Grapick({
    el: '#gp',
    colorEl: '<input id="colorpicker"/>' // I'll use this for the custom color picker
  });

  gp.setColorPicker(handler => {
    const el = handler.getEl().querySelector('#colorpicker');
    const $el = $(el);

    $el.spectrum({
        color: handler.getColor(),
        showAlpha: true,
        change(color) {
          handler.setColor(color.toRgbString());
        },
        move(color) {
          handler.setColor(color.toRgbString(), 0);
        }
    });

    // return a function in order to destroy the custom color picker
    return () => {
      $el.spectrum('destroy');
    }
  });
</script>

Events

Available events

  • change - Gradient is changed
  • handler:drag:start - Started dragging the handler
  • handler:drag - Dragging the handler
  • handler:drag:end - Stopped dragging the handler
  • handler:select - Handler selected
  • handler:deselect - Handler deselected
  • handler:add - New handler added
  • handler:remove - Handler removed
  • handler:color:change - The color of the handler is changed
  • handler:position:change - The position of the handler is changed

Development

Clone the repository and enter inside the folder

$ git clone https://github.com/artf/grapick.git
$ cd grapick

Install it

$ npm i

Start the dev server

$ npm start

API

API Reference here

Testing

Run tests

$ npm test

Run and watch tests

$ npm run test:dev

License

MIT

More Repositories

1

grapesjs

Free and Open source Web Builder Framework. Next generation tool for building templates without coding
TypeScript
17,231
star
2

grapesjs-mjml

Newsletter Builder with MJML components in GrapesJS
TypeScript
527
star
3

cimice

Experimental user session recorder http://artf.github.io/cimice/
JavaScript
328
star
4

grapesjs-preset-webpage

GrapesJS Plugin Webpage Preset
TypeScript
246
star
5

grapesjs-preset-newsletter

GrapesJS preset configuration for the newsletter editor http://grapesjs.com
JavaScript
143
star
6

ajaxable

Make your forms instantly ajaxable
JavaScript
94
star
7

grapesjs-plugin-ckeditor

This plugin replaces the default Rich Text Editor with the one from CKEditor
JavaScript
74
star
8

grapesjs-cli

GrapesJS CLI helper for the development
JavaScript
63
star
9

grapesjs-tui-image-editor

GrapesJS TOAST UI Image Editor
TypeScript
62
star
10

grapesjs-blocks-basic

Basic blocks for the GrapesJS editor
TypeScript
53
star
11

grapesjs-plugin-export

Export GrapesJS templates in a zip archive
TypeScript
53
star
12

grapesjs-plugin-forms

Set of form components and blocks for the GrapesJS editor
TypeScript
47
star
13

grapesjs-custom-code

GrapesJS component for the embed of custom code
TypeScript
45
star
14

grapesjs-firestore

Cloud Firestore storage wrapper for GrapesJS
TypeScript
30
star
15

grapesjs-plugin-boilerplate

[DEPRECATED use https://github.com/artf/grapesjs-cli] GrapesJS Plugin Boilerplate
JavaScript
29
star
16

grapesjs-blocks-flexbox

Add the flexbox block
JavaScript
29
star
17

grapesjs-tabs

Simple tabs component plugin for GrapesJS
JavaScript
27
star
18

grapesjs-aviary

Add the Aviary Image Editor in GrapesJS
JavaScript
26
star
19

grapesjs-navbar

Simple navbar component for the GrapesJS editor
TypeScript
24
star
20

codemirror-formatting

Codemirror formatting addon http://codemirror.net/2/demo/formatting.html
JavaScript
21
star
21

grapesjs-lory-slider

GrapesJS Slider Component by using lory
JavaScript
20
star
22

grapesjs-style-bg

Full-stack background style property type for GrapesJS, with the possibility to add images, colors, and gradients
TypeScript
20
star
23

grapesjs-parser-postcss

Custom CSS parser for GrapesJS by using PostCSS
JavaScript
18
star
24

grapesjs-tooltip

Simple, CSS only, tooltip component for GrapesJS
TypeScript
17
star
25

grapesjs-indexeddb

IndexedDB storage wrapper for GrapesJS
TypeScript
17
star
26

grapesjs-style-filter

Add filter type input to the Style Manager in GrapesJS
JavaScript
16
star
27

grapesjs-typed

GrapesJS Typed component made by wrapping Typed.js library
JavaScript
16
star
28

grapesjs-plugin-filestack

Enable Filestack uploader inside the Asset Manager
JavaScript
16
star
29

grapesjs-touch

Enable touch support in GrapesJS
JavaScript
14
star
30

grapesjs-component-countdown

Simple countdown component for the GrapesJS Editor
TypeScript
14
star
31

grapesjs-style-gradient

Add gradient input to the Style Manager in GrapesJS
TypeScript
11
star
32

EmojiBelt

A Chrome Extension which tries to enable emoji panel on inputs
JavaScript
4
star