/** * External dependencies */ import classnames from 'classnames'; /** * WordPress dependencies */ const { __ } = wp.i18n; const { Component, Fragment, } = wp.element; const { PanelBody, RangeControl, } = wp.components; const { InspectorControls, InnerBlocks, RichText, } = wp.blockEditor; /** * Component */ export default class TabsBlockEdit extends Component { constructor() { super( ...arguments ); this.state = { // fix for WP 5.2 // styles control generates error showInnerBlocks: !! this.props.clientId, }; 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 { tabsData, } = attributes; const result = []; console.log(tabsData); for ( let k = 0; k < tabsData.length; k++ ) { result.push( [ 'canvas/tab', {}, ] ); } return result; } render() { const { setAttributes, } = this.props; let { className, } = this.props; const { tabActive, tabsData, tabsPosition, canvasClassName, } = this.props.attributes; className = classnames( 'cnvs-block-tabs', `cnvs-block-tabs-${ tabsData.length }`, 'vertical' === tabsPosition ? `cnvs-block-tabs-${ tabsPosition }` : '', canvasClassName, className, ); return ( { const newTabsData = []; for ( let k = 0; k < val; k += 1 ) { if ( tabsData[ k ] ) { newTabsData.push( tabsData[ k ] ); } else { newTabsData.push( `Tab ${ k + 1 }` ); } } setAttributes( { tabsData: newTabsData } ); } } />
{ tabsData.map( ( title, i ) => { const selected = tabActive === i; return (
setAttributes( { tabActive: i } ) } onChange={ ( value ) => { if ( tabsData[ i ] ) { const newTabsData = tabsData.map( ( oldTabData, newIndex ) => { if ( i === newIndex ) { return value; } return oldTabData; } ); setAttributes( { tabsData: newTabsData, } ); } } } keepPlaceholderOnFocus />
); } ) }
{ this.state.showInnerBlocks ? ( ) : __( 'Tab content' ) }
); } }