UNPKG

slate-editor-icons

Version:
163 lines (127 loc) 4.15 kB
# slate-editor-icons [![NPM version][npm-image]][npm-url] [![Build Status][travis-image]][travis-url] [![Dependency Status][daviddm-image]][daviddm-url] > icons ([quill-icons](https://github.com/Canner/quill-icons)) for slate editors ## Installation ```sh $ npm install --save slate-editor-icons ``` ## Icons support #### Blocks - Icons.blocks.Blockquote (blockquote) - icon: `Blockquote` - default slate type: `blockquote` - Icons.blocks.Heading (heading, \<h1/\>, \<h2/\> ..., this is a dropdown menu) - icon: `Header` - default slate type: h1 - `heading1`, h2 - `heading2`, h3 - `heading3`, h4 - `heading4`. - Icons.blocks.OlList (\<ol/\> list) - icon: `ListOrdered` - default slate type: `list-ol` - Icons.blocks.UlList (\<ul/\> list) - icon: `ListBullet` - default slate type: `list-ul` #### Inlines - Icons.inlines.Link (link \<a/\>) - icon: `Link` - default slate type: `link` #### Marks - Icons.marks.Bold (\<b/\>) - icon: `Bold` - default slate type: `bold` - Icons.marks.Code (\<code/\>) - icon: `Code` - default slate type: `code` - Icons.marks.Italic (\<i/\>) - icon: `Italic` - default slate type: `italic` - Icons.marks.StrikeThrough (\<s/\>) - icon: `Strike` - default slate type: `strikethrough` - Icons.marks.Underline (\<u/\>) - icon: `Underline` - default slate type: `underline` ## Usage Every icons in [Icons support](#icons-support) are React element, you can use it any where you like in your React component as below. ```js import React from 'react'; import ReactDOM from 'react-dom'; import {Editor, Raw} from 'slate'; import Icons from 'slate-editor-icons'; const initialState = Raw.deserialize({ nodes: [ { kind: 'block', type: 'paragraph', nodes: [ { kind: 'text', text: 'A line of text in a paragraph.' } ] } ] }, {terse: true}); const icons = [ // load marks icons Icons.marks.Bold, Icons.marks.Italic, Icons.marks.Underline, Icons.marks.Code, Icons.marks.StrikeThrough, // load inlines icons Icons.inlines.Link, // load blocks icons Icons.blocks.Heading, Icons.blocks.Blockquote, Icons.blocks.OlList, Icons.blocks.UlList ]; class App extends React.Component { // Set the initial state when the app is first constructed. state = { state: initialState } render() { const {state} = this.state; const onChange = state => this.setState({state}); return ( <div style={{margin: '50px'}}> {icons.map((Type, i) => { return React.createElement(Type, { key: i, state: state, onChange: onChange }); })} <Editor state={state} onChange={onChange} /> </div> ); } } ReactDOM.render( <App/> , document.getElementById('root')); ``` example: https://github.com/Canner/slate-editor-icons/blob/master/docs/index.js ## Props | **props** | **type** | **required** | **default** | **description** | |-----------|----------|--------------|-------------|------------------| | state | object | true | null | slate state | | onChange | func | true | null | onChange function usually `state => this.setState({state})` to update slate state | | icon | string | false | every items have it's own icon see [icons support](#icons-support) | the icon | type | string | false | every items have it's own type see [icons support](#icons-support) | slate block, inline, mark type. ## Start example server ``` node devServer.js ``` ## Maintainer [chilijung](https://github.com/chilijung) ## License MIT © [Canner](https://github.com/Canner) [npm-image]: https://badge.fury.io/js/slate-editor-icons.svg [npm-url]: https://npmjs.org/package/slate-editor-icons [travis-image]: https://travis-ci.org/Canner/slate-editor-icons.svg?branch=master [travis-url]: https://travis-ci.org/Canner/slate-editor-icons [daviddm-image]: https://david-dm.org/Canner/slate-editor-icons.svg?theme=shields.io [daviddm-url]: https://david-dm.org/Canner/slate-editor-icons