diff --git a/block-editor/index.js b/block-editor/index.js new file mode 100644 index 0000000..6a03d0c --- /dev/null +++ b/block-editor/index.js @@ -0,0 +1 @@ +import './style.scss' \ No newline at end of file diff --git a/block-editor/style.scss b/block-editor/style.scss new file mode 100644 index 0000000..163c5c4 --- /dev/null +++ b/block-editor/style.scss @@ -0,0 +1,7 @@ +.editor-inserter__block .svg-inline--fa { + margin-bottom: 3px; +} + +.components-icon-button .svg-inline--fa { + margin: auto; +} \ No newline at end of file diff --git a/blocks/colour-cta/block.js b/blocks/colour-cta/block.js index c72ecc1..3699b8a 100644 --- a/blocks/colour-cta/block.js +++ b/blocks/colour-cta/block.js @@ -26,6 +26,7 @@ import { import { relativeRange } from '@gblx/utils/math' +import Icon from '@gblx/fontawesome' import Wrapper from './wrapper' import Content from './content' import Callout from './callout' @@ -39,7 +40,7 @@ import './block.scss' */ class ColourCTABlock { title = __('Colour CTA', 'gblx') - icon = 'megaphone' + icon = category = 'widgets' attributes = { headerText: { diff --git a/blocks/featured-posts/block.js b/blocks/featured-posts/block.js new file mode 100644 index 0000000..478ed0a --- /dev/null +++ b/blocks/featured-posts/block.js @@ -0,0 +1,21 @@ +import { __ } from '@wordpress/i18n' +import { + registerBlockType +} from '@wordpress/blocks' +import Icon from '@gblx/fontawesome' + +class FeaturedPostsBlock { + title = __('Featured Posts', 'gblx') + icon = + category = 'widgets' + attributes = { + } + edit = () => { + return '' + } + save = () => { + return '' + } +} + +registerBlockType('gblx/featured-posts', new FeaturedPostsBlock()) \ No newline at end of file diff --git a/blocks/featured-posts/pkg.js b/blocks/featured-posts/pkg.js new file mode 100644 index 0000000..e69de29 diff --git a/blocks/image-cta/block.js b/blocks/image-cta/block.js index 850c0d3..2798cea 100644 --- a/blocks/image-cta/block.js +++ b/blocks/image-cta/block.js @@ -26,6 +26,7 @@ import { import { relativeRange } from '@gblx/utils/math' +import Icon from '@gblx/fontawesome' import Wrapper from './wrapper' import Content from './content' import Callout from './callout' @@ -39,7 +40,7 @@ import './block.scss' */ class ImageCTABlock { title = __('Image CTA', 'gblx') - icon = 'megaphone' + icon = category = 'widgets' attributes = { headerText: { diff --git a/blocks/widget-columns/block.js b/blocks/widget-columns/block.js index 0120f28..fbe4018 100644 --- a/blocks/widget-columns/block.js +++ b/blocks/widget-columns/block.js @@ -20,6 +20,7 @@ import { import { RangeControl } from '@gblx/components' +import Icon from '@gblx/fontawesome' import Range from 'lodash/range' import classNames from 'classnames' import Image from './image' @@ -31,7 +32,7 @@ import './block.scss' class WidgetColumnsBlock { title = __('Widget Columns', 'gblx') - icon = 'columns' + icon = category = 'widgets' attributes = { spacing: { diff --git a/core/fontawesome/index.js b/core/fontawesome/index.js new file mode 100644 index 0000000..5f92367 --- /dev/null +++ b/core/fontawesome/index.js @@ -0,0 +1,9 @@ +import fontawesome from '@fortawesome/fontawesome' + +fontawesome.library.add( + require('@fortawesome/fontawesome-free-solid/faMousePointer'), + require('@fortawesome/fontawesome-free-solid/faColumns'), + require('@fortawesome/fontawesome-free-solid/faThumbtack') +) + +export { default } from '@fortawesome/react-fontawesome' \ No newline at end of file diff --git a/includes/functions-blocks.php b/includes/functions-blocks.php index 1551191..27bf68a 100644 --- a/includes/functions-blocks.php +++ b/includes/functions-blocks.php @@ -46,7 +46,16 @@ function register_block_types() { 'script' => 'gblx-widget-columns', 'style' => 'gblx-widget-columns' ) - ) + ), + 'gblx/featured-posts' => array( + 'basename' => 'featured-posts', + 'config' => array( + 'editor_script' => 'gblx-featured-posts-editor', + 'editor_style' => 'gblx-featured-posts-editor', + 'script' => 'gblx-featured-posts', + 'style' => 'gblx-featured-posts' + ) + ) ); foreach( $block_types as $type => $block ) { diff --git a/includes/functions-scripts.php b/includes/functions-scripts.php index b9fae8b..6f97434 100644 --- a/includes/functions-scripts.php +++ b/includes/functions-scripts.php @@ -10,6 +10,9 @@ // Register default scripts add_action( 'init', 'gblx\register_default_scripts' ); +// Enqueue block editor scripts +add_action( 'enqueue_block_editor_assets', 'gblx\enqueue_block_editor_scripts' ); + /** * Register frontend and admin scripts for a block * @@ -84,6 +87,18 @@ function get_script_version( $file ) { if ( in_dev_mode() ) { return @filemtime( plugin_dir( $file ) ); } - return VERSION; +} + +/** + * Enqueue scripts for the Gutenberg editor + * + * @action enqueue_block_editor_assets + * + * @since 1.0.1 + * @return void + */ +function enqueue_block_editor_scripts() { + $version = get_script_version( plugin_dir( 'dist/block-editor.js' ) ); + wp_enqueue_script( 'gblx-block-editor', plugins_url( 'dist/block-editor.js', plugin_file() ), null, $version ); } \ No newline at end of file diff --git a/package.json b/package.json index 39a52e6..809ca01 100644 --- a/package.json +++ b/package.json @@ -34,9 +34,12 @@ "webpack-merge": "^4.1.2" }, "dependencies": { + "@fortawesome/fontawesome": "^1.1.5", + "@fortawesome/fontawesome-free-solid": "^5.0.9", + "@fortawesome/react-fontawesome": "^0.0.18", "classnames": "^2.2.5", "lodash": "^4.17.5", "prop-types": "^15.6.1", - "react": "^16.2.0" + "react": "^16.2.0" } } diff --git a/webpack.config.js b/webpack.config.js index 6978faf..1e88cac 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -3,17 +3,24 @@ const { flatMap, assign } = require('lodash') const BLOCKS = [ 'colour-cta', 'image-cta', - 'widget-columns' + 'widget-columns', + 'featured-posts' ] -const ENTRY_POINTS = flatMap(BLOCKS, entry => [ - { [`${entry}/editor`]: `${__dirname}/blocks/${entry}/block.js` }, - { [`${entry}/public`]: `${__dirname}/blocks/${entry}/pkg.js` } +const ENTRY_POINTS = { + 'block-editor': `${__dirname}/block-editor/index.js` +} + +const blockPaths = flatMap(BLOCKS, entry => [ + { [`${entry}/editor`]: `${__dirname}/blocks/${entry}/block.js` }, + { [`${entry}/public`]: `${__dirname}/blocks/${entry}/pkg.js` } ]) -.reduce((entries, entry) => assign(entries, entry)); +.reduce( + (entries, entry) => assign(entries, entry) +) module.exports = { - entry: ENTRY_POINTS, + entry: assign(ENTRY_POINTS, blockPaths), module: { rules: [ { diff --git a/yarn.lock b/yarn.lock index 4120559..b1e739a 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,6 +2,28 @@ # yarn lockfile v1 +"@fortawesome/fontawesome-common-types@^0.1.3": + version "0.1.3" + resolved "https://registry.yarnpkg.com/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-0.1.3.tgz#8475e0f2d1ad1f858c4ec2e76ed9a2456a09ad83" + +"@fortawesome/fontawesome-free-solid@^5.0.9": + version "5.0.9" + resolved "https://registry.yarnpkg.com/@fortawesome/fontawesome-free-solid/-/fontawesome-free-solid-5.0.9.tgz#456155a1cd82a0342ffe6a869d5a54fdadd78548" + dependencies: + "@fortawesome/fontawesome-common-types" "^0.1.3" + +"@fortawesome/fontawesome@^1.1.5": + version "1.1.5" + resolved "https://registry.yarnpkg.com/@fortawesome/fontawesome/-/fontawesome-1.1.5.tgz#c7cfafdd3364245626293cc670357f9fb8487170" + dependencies: + "@fortawesome/fontawesome-common-types" "^0.1.3" + +"@fortawesome/react-fontawesome@^0.0.18": + version "0.0.18" + resolved "https://registry.yarnpkg.com/@fortawesome/react-fontawesome/-/react-fontawesome-0.0.18.tgz#4e0eb1cf9797715a67bb7705ae084fa0a410f185" + dependencies: + humps "^2.0.1" + "@sindresorhus/is@^0.7.0": version "0.7.0" resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-0.7.0.tgz#9a06f4f137ee84d7df0460c1fdb1135ffa6c50fd" @@ -2721,6 +2743,10 @@ https-browserify@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73" +humps@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/humps/-/humps-2.0.1.tgz#dd02ea6081bd0568dc5d073184463957ba9ef9aa" + iconv-lite@^0.4.17, iconv-lite@~0.4.13: version "0.4.19" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.19.tgz#f7468f60135f5e5dad3399c0a81be9a1603a082b" @@ -4474,7 +4500,7 @@ promise@^7.1.1: dependencies: asap "~2.0.3" -prop-types@^15.6.0, prop-types@^15.6.1: +prop-types@^15.5.6, prop-types@^15.6.0, prop-types@^15.6.1: version "15.6.1" resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.6.1.tgz#36644453564255ddda391191fb3a125cbdf654ca" dependencies: @@ -4591,6 +4617,12 @@ rc@^1.1.7: minimist "^1.2.0" strip-json-comments "~2.0.1" +react-fontawesome@^1.6.1: + version "1.6.1" + resolved "https://registry.yarnpkg.com/react-fontawesome/-/react-fontawesome-1.6.1.tgz#eddce17e7dc731aa09fd4a186688a61793a16c5c" + dependencies: + prop-types "^15.5.6" + react@^16.2.0: version "16.2.0" resolved "https://registry.yarnpkg.com/react/-/react-16.2.0.tgz#a31bd2dab89bff65d42134fa187f24d054c273ba"