first commit
This commit is contained in:
+62
@@ -0,0 +1,62 @@
|
||||
/**
|
||||
* All of the CSS for your block editor functionality should be
|
||||
* included in this file.
|
||||
*/
|
||||
/*--------------------------------------------------------------*/
|
||||
.cnvs-block-collapsible {
|
||||
--cnvs-collapsible-border-top: 1px solid #e9ecef;
|
||||
}
|
||||
|
||||
/*--------------------------------------------------------------*/
|
||||
.cnvs-block-collapsibles > .block-editor-inner-blocks > .block-editor-block-list__layout > [data-type="canvas/collapsible"] + [data-type="canvas/collapsible"] > .canvas-component-custom-blocks {
|
||||
margin-top: -33px;
|
||||
}
|
||||
|
||||
.cnvs-block-collapsibles > .block-editor-inner-blocks > .block-editor-block-list__layout > [data-type="canvas/collapsible"] + [data-type="canvas/collapsible"] > .canvas-component-custom-blocks .cnvs-block-collapsible {
|
||||
border-top: var(--cnvs-collapsible-border-top);
|
||||
}
|
||||
|
||||
[data-type="canvas/collapsible"].is-selected {
|
||||
z-index: 120;
|
||||
}
|
||||
|
||||
[data-type="canvas/collapsible"]:not(.is-selected) > .block-editor-block-list__insertion-point {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.cnvs-block-collapsible .cnvs-block-collapsible-title {
|
||||
position: relative;
|
||||
padding: 0.75rem 0;
|
||||
padding-left: 20px;
|
||||
}
|
||||
|
||||
.cnvs-block-collapsible .cnvs-block-collapsible-toggle {
|
||||
position: absolute;
|
||||
left: 10px;
|
||||
top: 0;
|
||||
height: 100%;
|
||||
color: inherit;
|
||||
border: none;
|
||||
-webkit-box-shadow: none;
|
||||
box-shadow: none;
|
||||
text-shadow: none;
|
||||
outline: none;
|
||||
background: transparent;
|
||||
-webkit-transition: .2s transform;
|
||||
transition: .2s transform;
|
||||
}
|
||||
|
||||
.cnvs-block-collapsible .cnvs-block-collapsible-toggle:focus, .cnvs-block-collapsible .cnvs-block-collapsible-toggle:hover {
|
||||
color: inherit;
|
||||
border: none;
|
||||
-webkit-box-shadow: none;
|
||||
box-shadow: none;
|
||||
text-shadow: none;
|
||||
outline: none;
|
||||
background: transparent;
|
||||
}
|
||||
|
||||
.cnvs-block-collapsible.cnvs-block-collapsible-opened > .cnvs-block-collapsible-title > .cnvs-block-collapsible-toggle > span {
|
||||
-webkit-transform: rotate(90deg);
|
||||
transform: rotate(90deg);
|
||||
}
|
||||
+62
@@ -0,0 +1,62 @@
|
||||
/**
|
||||
* All of the CSS for your block editor functionality should be
|
||||
* included in this file.
|
||||
*/
|
||||
/*--------------------------------------------------------------*/
|
||||
.cnvs-block-collapsible {
|
||||
--cnvs-collapsible-border-top: 1px solid #e9ecef;
|
||||
}
|
||||
|
||||
/*--------------------------------------------------------------*/
|
||||
.cnvs-block-collapsibles > .block-editor-inner-blocks > .block-editor-block-list__layout > [data-type="canvas/collapsible"] + [data-type="canvas/collapsible"] > .canvas-component-custom-blocks {
|
||||
margin-top: -33px;
|
||||
}
|
||||
|
||||
.cnvs-block-collapsibles > .block-editor-inner-blocks > .block-editor-block-list__layout > [data-type="canvas/collapsible"] + [data-type="canvas/collapsible"] > .canvas-component-custom-blocks .cnvs-block-collapsible {
|
||||
border-top: var(--cnvs-collapsible-border-top);
|
||||
}
|
||||
|
||||
[data-type="canvas/collapsible"].is-selected {
|
||||
z-index: 120;
|
||||
}
|
||||
|
||||
[data-type="canvas/collapsible"]:not(.is-selected) > .block-editor-block-list__insertion-point {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.cnvs-block-collapsible .cnvs-block-collapsible-title {
|
||||
position: relative;
|
||||
padding: 0.75rem 0;
|
||||
padding-right: 20px;
|
||||
}
|
||||
|
||||
.cnvs-block-collapsible .cnvs-block-collapsible-toggle {
|
||||
position: absolute;
|
||||
right: 10px;
|
||||
top: 0;
|
||||
height: 100%;
|
||||
color: inherit;
|
||||
border: none;
|
||||
-webkit-box-shadow: none;
|
||||
box-shadow: none;
|
||||
text-shadow: none;
|
||||
outline: none;
|
||||
background: transparent;
|
||||
-webkit-transition: .2s transform;
|
||||
transition: .2s transform;
|
||||
}
|
||||
|
||||
.cnvs-block-collapsible .cnvs-block-collapsible-toggle:focus, .cnvs-block-collapsible .cnvs-block-collapsible-toggle:hover {
|
||||
color: inherit;
|
||||
border: none;
|
||||
-webkit-box-shadow: none;
|
||||
box-shadow: none;
|
||||
text-shadow: none;
|
||||
outline: none;
|
||||
background: transparent;
|
||||
}
|
||||
|
||||
.cnvs-block-collapsible.cnvs-block-collapsible-opened > .cnvs-block-collapsible-title > .cnvs-block-collapsible-toggle > span {
|
||||
-webkit-transform: rotate(90deg);
|
||||
transform: rotate(90deg);
|
||||
}
|
||||
@@ -0,0 +1,79 @@
|
||||
/**
|
||||
* All of the CSS for your block editor functionality should be
|
||||
* included in this file.
|
||||
*/
|
||||
/**
|
||||
* Environment for all styles (variables, additions, etc).
|
||||
*/
|
||||
/*--------------------------------------------------------------*/
|
||||
/*--------------------------------------------------------------*/
|
||||
.cnvs-block-collapsible {
|
||||
--cnvs-collapsible-border-top: 1px solid #e9ecef;
|
||||
--cnvs-collapsible-a-color: #212529;
|
||||
--cnvs-collapsible-a-hover-color: #adb5bd;
|
||||
}
|
||||
|
||||
/*--------------------------------------------------------------*/
|
||||
.cnvs-block-collapsible {
|
||||
position: relative;
|
||||
display: -webkit-box;
|
||||
display: -ms-flexbox;
|
||||
display: flex;
|
||||
-webkit-box-orient: vertical;
|
||||
-webkit-box-direction: normal;
|
||||
-ms-flex-direction: column;
|
||||
flex-direction: column;
|
||||
min-width: 0;
|
||||
word-wrap: break-word;
|
||||
margin-bottom: 0;
|
||||
background-clip: border-box;
|
||||
}
|
||||
|
||||
.cnvs-block-collapsible + .cnvs-block-collapsible {
|
||||
border-top: var(--cnvs-collapsible-border-top);
|
||||
}
|
||||
|
||||
.cnvs-block-collapsible .cnvs-block-collapsible-title h6 {
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.cnvs-block-collapsible .cnvs-block-collapsible-title h6 a {
|
||||
display: -webkit-box;
|
||||
display: -ms-flexbox;
|
||||
display: flex;
|
||||
-webkit-box-pack: justify;
|
||||
-ms-flex-pack: justify;
|
||||
justify-content: space-between;
|
||||
padding: 0.75rem 0;
|
||||
border: none;
|
||||
color: var(--cnvs-collapsible-a-color);
|
||||
-webkit-transition: 0.25s;
|
||||
transition: 0.25s;
|
||||
text-decoration: none !important;
|
||||
-webkit-box-shadow: none !important;
|
||||
box-shadow: none !important;
|
||||
}
|
||||
|
||||
.cnvs-block-collapsible .cnvs-block-collapsible-title h6 a:hover {
|
||||
color: var(--cnvs-collapsible-a-hover-color);
|
||||
}
|
||||
|
||||
.cnvs-block-collapsible .cnvs-block-collapsible-title h6 a:after {
|
||||
content: "\e914";
|
||||
font-family: "canvas-icons";
|
||||
-webkit-transition: 0.25s;
|
||||
transition: 0.25s;
|
||||
}
|
||||
|
||||
.cnvs-block-collapsible .cnvs-block-collapsible-content {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.cnvs-block-collapsible.cnvs-block-collapsible-opened > .cnvs-block-collapsible-title h6 a:after {
|
||||
-webkit-transform: rotate(90deg);
|
||||
transform: rotate(90deg);
|
||||
}
|
||||
|
||||
.cnvs-block-collapsible.cnvs-block-collapsible-opened > .cnvs-block-collapsible-content {
|
||||
display: block;
|
||||
}
|
||||
@@ -0,0 +1,79 @@
|
||||
/**
|
||||
* All of the CSS for your block editor functionality should be
|
||||
* included in this file.
|
||||
*/
|
||||
/**
|
||||
* Environment for all styles (variables, additions, etc).
|
||||
*/
|
||||
/*--------------------------------------------------------------*/
|
||||
/*--------------------------------------------------------------*/
|
||||
.cnvs-block-collapsible {
|
||||
--cnvs-collapsible-border-top: 1px solid #e9ecef;
|
||||
--cnvs-collapsible-a-color: #212529;
|
||||
--cnvs-collapsible-a-hover-color: #adb5bd;
|
||||
}
|
||||
|
||||
/*--------------------------------------------------------------*/
|
||||
.cnvs-block-collapsible {
|
||||
position: relative;
|
||||
display: -webkit-box;
|
||||
display: -ms-flexbox;
|
||||
display: flex;
|
||||
-webkit-box-orient: vertical;
|
||||
-webkit-box-direction: normal;
|
||||
-ms-flex-direction: column;
|
||||
flex-direction: column;
|
||||
min-width: 0;
|
||||
word-wrap: break-word;
|
||||
margin-bottom: 0;
|
||||
background-clip: border-box;
|
||||
}
|
||||
|
||||
.cnvs-block-collapsible + .cnvs-block-collapsible {
|
||||
border-top: var(--cnvs-collapsible-border-top);
|
||||
}
|
||||
|
||||
.cnvs-block-collapsible .cnvs-block-collapsible-title h6 {
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.cnvs-block-collapsible .cnvs-block-collapsible-title h6 a {
|
||||
display: -webkit-box;
|
||||
display: -ms-flexbox;
|
||||
display: flex;
|
||||
-webkit-box-pack: justify;
|
||||
-ms-flex-pack: justify;
|
||||
justify-content: space-between;
|
||||
padding: 0.75rem 0;
|
||||
border: none;
|
||||
color: var(--cnvs-collapsible-a-color);
|
||||
-webkit-transition: 0.25s;
|
||||
transition: 0.25s;
|
||||
text-decoration: none !important;
|
||||
-webkit-box-shadow: none !important;
|
||||
box-shadow: none !important;
|
||||
}
|
||||
|
||||
.cnvs-block-collapsible .cnvs-block-collapsible-title h6 a:hover {
|
||||
color: var(--cnvs-collapsible-a-hover-color);
|
||||
}
|
||||
|
||||
.cnvs-block-collapsible .cnvs-block-collapsible-title h6 a:after {
|
||||
content: "\e914";
|
||||
font-family: "canvas-icons";
|
||||
-webkit-transition: 0.25s;
|
||||
transition: 0.25s;
|
||||
}
|
||||
|
||||
.cnvs-block-collapsible .cnvs-block-collapsible-content {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.cnvs-block-collapsible.cnvs-block-collapsible-opened > .cnvs-block-collapsible-title h6 a:after {
|
||||
-webkit-transform: rotate(90deg);
|
||||
transform: rotate(90deg);
|
||||
}
|
||||
|
||||
.cnvs-block-collapsible.cnvs-block-collapsible-opened > .cnvs-block-collapsible-content {
|
||||
display: block;
|
||||
}
|
||||
File diff suppressed because one or more lines are too long
@@ -0,0 +1,48 @@
|
||||
/**
|
||||
* WordPress dependencies
|
||||
*/
|
||||
const {
|
||||
addFilter,
|
||||
} = wp.hooks;
|
||||
|
||||
/**
|
||||
* Internal dependencies
|
||||
*/
|
||||
import CollapsiblesBlockEdit from './edit.jsx';
|
||||
import CollapsiblesBlockSave from './save.jsx';
|
||||
|
||||
/**
|
||||
* Custom block Edit output for Collapsibles block.
|
||||
*
|
||||
* @param {JSX} edit Original block edit.
|
||||
* @param {Object} blockProps Block data.
|
||||
*
|
||||
* @return {JSX} Block edit.
|
||||
*/
|
||||
function editRender( edit, blockProps ) {
|
||||
if ( 'canvas/collapsibles' === blockProps.name ) {
|
||||
return (
|
||||
<CollapsiblesBlockEdit { ...blockProps } />
|
||||
);
|
||||
}
|
||||
|
||||
return edit;
|
||||
}
|
||||
|
||||
/**
|
||||
* Custom block register data for Collapsibles block.
|
||||
*
|
||||
* @param {Object} blockData Block data.
|
||||
*
|
||||
* @return {Object} Block data.
|
||||
*/
|
||||
function registerData( blockData ) {
|
||||
if ( 'canvas/collapsibles' === blockData.name ) {
|
||||
blockData.save = CollapsiblesBlockSave;
|
||||
}
|
||||
|
||||
return blockData;
|
||||
}
|
||||
|
||||
addFilter( 'canvas.customBlock.editRender', 'canvas/collapsibles/editRender', editRender );
|
||||
addFilter( 'canvas.customBlock.registerData', 'canvas/collapsibles/registerData', registerData );
|
||||
@@ -0,0 +1,85 @@
|
||||
/**
|
||||
* External dependencies
|
||||
*/
|
||||
import classnames from 'classnames';
|
||||
|
||||
/**
|
||||
* WordPress dependencies
|
||||
*/
|
||||
const {
|
||||
Component,
|
||||
Fragment,
|
||||
} = wp.element;
|
||||
|
||||
const {
|
||||
InnerBlocks,
|
||||
} = wp.blockEditor;
|
||||
|
||||
/**
|
||||
* Component
|
||||
*/
|
||||
export default class CollapsiblesBlockEdit extends Component {
|
||||
constructor() {
|
||||
super( ...arguments );
|
||||
|
||||
this.getLayoutTemplate = this.getLayoutTemplate.bind( this );
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the template configuration for a given section layout.
|
||||
*
|
||||
* @return {Object[]} Layout configuration.
|
||||
*/
|
||||
getLayoutTemplate() {
|
||||
const {
|
||||
attributes,
|
||||
} = this.props;
|
||||
|
||||
let {
|
||||
count,
|
||||
} = attributes;
|
||||
|
||||
const result = [];
|
||||
|
||||
for ( let k = 0; k < count; k++ ) {
|
||||
result.push( [
|
||||
'canvas/collapsible',
|
||||
] );
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
render() {
|
||||
const {
|
||||
setAttributes,
|
||||
} = this.props;
|
||||
|
||||
let {
|
||||
className,
|
||||
} = this.props;
|
||||
|
||||
const {
|
||||
count,
|
||||
canvasClassName,
|
||||
} = this.props.attributes;
|
||||
|
||||
className = classnames(
|
||||
'cnvs-block-collapsibles',
|
||||
`cnvs-block-collapsibles-${ count }`,
|
||||
canvasClassName
|
||||
);
|
||||
|
||||
return (
|
||||
<Fragment>
|
||||
<div className={ className }>
|
||||
<InnerBlocks
|
||||
template={ this.getLayoutTemplate() }
|
||||
templateLock="all"
|
||||
allowedBlocks={ [ 'canvas/collapsible' ] }
|
||||
/>
|
||||
</div>
|
||||
</Fragment>
|
||||
);
|
||||
}
|
||||
}
|
||||
+24
@@ -0,0 +1,24 @@
|
||||
/**
|
||||
* Block Collapsibles
|
||||
*/
|
||||
( function( $ ) {
|
||||
|
||||
$( document ).ready( function() {
|
||||
$( '.cnvs-block-collapsible-opened > .cnvs-block-collapsible-content' ).css( 'display', 'block' );
|
||||
|
||||
$( document ).on( 'click', '.cnvs-block-collapsibles .cnvs-block-collapsible-title a', function( e ) {
|
||||
e.preventDefault();
|
||||
|
||||
var $collapsible = $( this ).closest( '.cnvs-block-collapsible' );
|
||||
|
||||
$collapsible
|
||||
.siblings( '.cnvs-block-collapsible-opened' )
|
||||
.removeClass( 'cnvs-block-collapsible-opened' )
|
||||
.children( '.cnvs-block-collapsible-content' )
|
||||
.stop().slideUp();
|
||||
|
||||
$collapsible.children( '.cnvs-block-collapsible-content' ).stop().slideToggle();
|
||||
$collapsible.toggleClass( 'cnvs-block-collapsible-opened' );
|
||||
} );
|
||||
} );
|
||||
} )( jQuery );
|
||||
@@ -0,0 +1,18 @@
|
||||
<?php
|
||||
/**
|
||||
* Collapsibles block template
|
||||
*
|
||||
* @var $attributes - block attributes
|
||||
* @var $content - inner blocks
|
||||
* @var $options - layout options
|
||||
*
|
||||
* @package Canvas
|
||||
*/
|
||||
|
||||
$attributes['className'] .= ' cnvs-block-collapsibles-' . $attributes['count'];
|
||||
|
||||
?>
|
||||
|
||||
<div class="<?php echo esc_attr( $attributes['className'] ); ?>" <?php echo ( isset( $attributes['anchor'] ) ? ' id="' . esc_attr( $attributes['anchor'] ) . '"' : '' ); ?>>
|
||||
<?php echo (string) $content; // XSS. ?>
|
||||
</div>
|
||||
@@ -0,0 +1,17 @@
|
||||
/**
|
||||
* WordPress dependencies
|
||||
*/
|
||||
const { Component } = wp.element;
|
||||
|
||||
const {
|
||||
InnerBlocks,
|
||||
} = wp.blockEditor;
|
||||
|
||||
/**
|
||||
* Component
|
||||
*/
|
||||
export default class CollapsiblesBlockSave extends Component {
|
||||
render() {
|
||||
return <InnerBlocks.Content />;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user