/** * BLOCK: Atomic Blocks Drop Cap */ // Import block dependencies and components import classnames from 'classnames'; import Inspector from './components/inspector'; import DropCap from './components/dropcap'; import icons from './components/icons'; // Import CSS import './styles/style.scss'; import './styles/editor.scss'; // Internationalization const { __ } = wp.i18n; // Extend component const { Component } = wp.element; // Register block const { registerBlockType } = wp.blocks; // Register editor components const { RichText, AlignmentToolbar, BlockControls, BlockAlignmentToolbar, MediaUpload, } = wp.editor; // Register components const { Button, SelectControl, } = wp.components; class ABDropCapBlock extends Component { render() { // Setup the attributes const { attributes: { dropCapContent, dropCapAlignment, dropCapBackgroundColor, dropCapTextColor, dropCapFontSize, dropCapStyle }, isSelected, className, setAttributes } = this.props; return [ // Show the alignment toolbar on focus this.props.setAttributes( { dropCapAlignment: value } ) } /> , // Show the block controls on focus , // Show the block markup in the editor this.props.setAttributes( { dropCapContent: value } ) } /> ]; } } // Register the block registerBlockType( 'atomic-blocks/ab-drop-cap', { title: __( 'AB Drop Cap', 'atomic-blocks' ), description: __( 'Add a styled drop cap to the beginning of your paragraph.', 'atomic-blocks' ), icon: 'format-quote', category: 'atomic-blocks', keywords: [ __( 'drop cap', 'atomic-blocks' ), __( 'quote', 'atomic-blocks' ), __( 'atomic', 'atomic-blocks' ), ], attributes: { dropCapContent: { type: 'array', selector: '.ab-drop-cap-text', source: 'children', }, dropCapAlignment: { type: 'string', }, dropCapBackgroundColor: { type: 'string', default: '#f2f2f2' }, dropCapTextColor: { type: 'string', default: '#32373c' }, dropCapFontSize: { type: 'number', default: 3, }, dropCapStyle: { type: 'string', default: 'drop-cap-letter', }, }, // Render the block components edit: ABDropCapBlock, // Save the attributes and markup save: function( props ) { const { dropCapContent, dropCapAlignment, dropCapBackgroundColor, dropCapTextColor, dropCapFontSize, dropCapStyle } = props.attributes; // Save the block markup for the front end return ( { // Check if there is text and output dropCapContent && ( ) } ); }, } );