/* eslint-disable no-undef */ /* eslint-disable indent */ import _ from 'lodash' import React from 'react' import { CustomSlider, CustomToggle } from './EditorComponents' import { default as TabButton } from './EditorComponents/TabButton' import { default as Alignment } from './SettingTabs/Alignment' import { default as Backgrounds } from './SettingTabs/Backgrounds' import { default as FlexBox } from './SettingTabs/Flexbox' import { default as Grid } from './SettingTabs/Grid' import { default as Layout } from './SettingTabs/Layout' import { default as Spacing } from './SettingTabs/Spacing' window.lodash = _.noConflict() const wp = window.wp const { InnerBlocks, InspectorControls } = wp.blockEditor const { Fragment } = wp.element const { PanelBody, PanelRow } = wp.components; declare global { interface Props {} interface Window { wp:any, lodash:any } interface Math { round:(x: number) => number } } const CustomBlockAppender = () =>
wp.blocks.registerBlockType( 'agendahelsinki/tailwindblock', { title: 'Grid Block (Tailwind)', icon: { background: '#fff', foreground:'#6071f3', src: }, category: 'agendahelsinki', example:()=>null, supports:{ defaultStylePicker:false, align: [ 'left', 'right', 'center', 'wide', 'full' ] }, getEditWrapperProps:(attributes)=>{ let w='100%',d='block' switch(attributes.flexBasisLg){ case 11:w='91.66%';break; case 10:w='83.33%';break; case 9:w='75%';break; case 8:w='66.66%';break; case 7:w='58.33%';break; case 6:w='50%';break; case 5:w='41.66%';break; case 4:w='33.33%';break; case 3:w='25%';break; case 2:w='16.66%';break; case 1:w='8.33%';break; case 0:w='0';break; default:w='100%';d='block';break; } d=attributes.flex?'flex':'block'; let c = _.get(attributes,'className','') if(_.includes(c,'flex')) d='flex' return { 'data-align': null, className:'tailwind-block ' + ' lg:flex-basis-' + attributes.flexBasisLg,alignItems:'flex-start', style:{marginTop:10,marginBottom:10,display:d,flexFlow:'row wrap',width:'100%',flexBasis:w,maxWidth:w,border:'1px solid #212121'} } }, attributes: { flexBasis:{type:'integer',default:-1}, flexBasisSm:{type:'integer',default:-1}, flexBasisMd:{type:'integer',default:-1}, flexBasisLg:{type:'integer',default:-1}, flexBasisXl:{type:'integer',default:-1}, gridTemplateColumns:{type:'integer',default:-1}, gridTemplateColumnsSm:{type:'integer',default:-1}, gridTemplateColumnsMd:{type:'integer',default:-1}, gridTemplateColumnsLg:{type:'integer',default:-1}, gridTemplateColumnsXl:{type:'integer',default:-1}, gridTemplateRows:{type:'integer',default:-1}, gridTemplateRowsSm:{type:'integer',default:-1}, gridTemplateRowsMd:{type:'integer',default:-1}, gridTemplateRowsLg:{type:'integer',default:-1}, gridTemplateRowsXl:{type:'integer',default:-1}, columnSpan:{type:'integer',default:-1}, columnStart:{type:'integer',default:-1}, columnEnd:{type:'integer',default:-1}, rowSpan:{type:'integer',default:-1}, rowStart:{type:'integer',default:-1}, rowEnd:{type:'integer',default:-1}, flex:{type:'boolean',default:false}, flexWrap:{type:'boolean',default:false}, flexRow:{type:'boolean',default:false}, flexColumn:{type:'boolean',default:false}, flexGrow:{type:'boolean',default:false}, flexShrink:{type:'boolean',default:false}, container:{type:'boolean',default:false}, mxauto:{type:'boolean',default:false}, myauto:{type:'boolean',default:false}, wfull:{type:'boolean',default:false}, boxBorder:{type:'boolean',default:false}, boxContent:{type:'boolean',default:false}, backgroundColor:{type:'object',default:{r:255,g:255,b:255,a:0}}, backgroundImageId:{type:'integer',default:0}, backgroundImageUrl:{type:'string',default:'#'}, display:{type:'string',default:''}, float:{type:'string',default:''}, zIndex:{type:'string',default:''}, position:{type:'string',default:''}, justify:{type:'string',default:''}, justifyItems:{type:'string',default:''}, justifySelf:{type:'string',default:''}, items:{type:'string',default:''}, alignContent:{type:'string',default:''}, alignSelf:{type:'string',default:''}, placeContent:{type:'string',default:''}, placeItems:{type:'string',default:''}, placeSelf:{type:'string',default:''}, spacing:{type:'string',default:''}, pt:{type:'integer',default:-1}, pr:{type:'integer',default:-1}, pb:{type:'integer',default:-1}, pl:{type:'integer',default:-1}, pLg:{type:'integer',default:-1}, ptLg:{type:'integer',default:-1}, prLg:{type:'integer',default:-1}, pbLg:{type:'integer',default:-1}, plLg:{type:'integer',default:-1}, mt:{type:'integer',default:-1}, mr:{type:'integer',default:-1}, mb:{type:'integer',default:-1}, ml:{type:'integer',default:-1}, mLg:{type:'integer',default:-1}, mtLg:{type:'integer',default:-1}, mrLg:{type:'integer',default:-1}, mbLg:{type:'integer',default:-1}, mlLg:{type:'integer',default:-1}, bgimagearray: {type: 'array',default:[]}, className:{type:'string',default:''}, activeTab:{type:'integer',default:-1}, showTweaks:{type:'boolean',default:false}, showSmQuery:{type:'boolean',default:false}, showMdQuery:{type:'boolean',default:false}, showLgQuery:{type:'boolean',default:false}, showXlQuery:{type:'boolean',default:false}, }, edit:({attributes,setAttributes,className})=>{ const {showTweaks,backgroundColor} = attributes const setShowTweaks = (val) => setAttributes({showTweaks:val}) let dbgcolor = {r:255,g:255,b:255,a:0} // BLOCK OPTIONS IN A BUTTON GRID + TABS const EditGrid = ({attributes,setAttributes,wide=false}) => { const {activeTab} = attributes const setActiveTab = (val) => setAttributes({activeTab:val}) const settingtabs = ['LAYOUT','FLEXBOX','GRID','ALIGNMENT','SPACING','SIZING','TYPOGRAPHY', 'BACKGROUNDS','BORDERS','EFFECTS','TABLES'] return (
{_.map(settingtabs,(s,i)=>())}
{activeTab==0 && } {activeTab==1 && } {activeTab==2 && } {activeTab==3 && } {activeTab==4 && } {activeTab==7 && }
); } let title = ''; if(attributes.container) title+=' Container'; if(attributes.flex&&attributes.flexRow&&attributes.flexWrap) title+=' Row'; if(!attributes.container&&!(attributes.flex&&attributes.flexRow&&attributes.flexWrap)&&attributes.flexBasisLg>-1) title+=' Column'; else if(attributes.wfull&&!attributes.container&&!(attributes.flex&&attributes.flexRow&&attributes.flexWrap)&&attributes.flexBasisLg==-1&&attributes.flexBasis==12) title+=' Full Width Container'; else title+=' Grid Block'; let classes = (attributes.flexBasis>-1 ? ' flex-basis-'+attributes.flexBasis : '')+ (attributes.flexBasisSm>-1 ? ' sm:flex-basis-'+attributes.flexBasisSm : '')+ (attributes.flexBasisMd>-1 ? ' md:flex-basis-'+attributes.flexBasisMd : '')+ (attributes.flexBasisLg>-1 ? ' lg:flex-basis-'+attributes.flexBasisLg : '')+ (attributes.flexBasisXl>-1 ? ' xl:flex-basis-'+attributes.flexBasisXl : '')+ (attributes.gridTemplateColumns>-1 ? ' grid-cols-'+attributes.gridTemplateColumns : '')+ (attributes.gridTemplateColumnsSm>-1 ? ' sm:grid-cols-'+attributes.gridTemplateColumnsSm : '')+ (attributes.gridTemplateColumnsMd>-1 ? ' md:grid-cols-'+attributes.gridTemplateColumnsMd : '')+ (attributes.gridTemplateColumnsLg>-1 ? ' lg:grid-cols-'+attributes.gridTemplateColumnsLg : '')+ (attributes.gridTemplateColumnsXl>-1 ? ' xl:grid-cols-'+attributes.gridTemplateColumnsXl : '')+ (attributes.gridTemplateRows>-1 ? ' grid-cols-'+attributes.gridTemplateRows : '')+ (attributes.gridTemplateRowsSm>-1 ? ' sm:grid-cols-'+attributes.gridTemplateRowsSm : '')+ (attributes.gridTemplateRowsMd>-1 ? ' md:grid-cols-'+attributes.gridTemplateRowsMd : '')+ (attributes.gridTemplateRowsLg>-1 ? ' lg:grid-cols-'+attributes.gridTemplateRowsLg : '')+ (attributes.gridTemplateRowsXl>-1 ? ' xl:grid-cols-'+attributes.gridTemplateRowsXl : '')+ (attributes.pt>-1 ? ' pt-'+attributes.pt : '')+ (attributes.pr>-1 ? ' pr-'+attributes.pr : '')+ (attributes.pb>-1 ? ' pb-'+attributes.pb : '')+ (attributes.pl>-1 ? ' pl-'+attributes.pl : '')+ (attributes.mt>-1 ? ' mt-'+attributes.mt : '')+ (attributes.mr>-1 ? ' mr-'+attributes.mr : '')+ (attributes.mb>-1 ? ' mb-'+attributes.mb : '')+ (attributes.ml>-1 ? ' ml-'+attributes.ml : '')+ (attributes.columnSpan>-1 ? (attributes.columnSpan>12?' col-span-full':' col-span-'+attributes.columnSpan) : '')+ (attributes.columnStart>-1 ? (attributes.columnStart>12?' col-start-auto':' col-start-'+attributes.columnStart) : '')+ (attributes.columnEnd>-1 ? (attributes.columnEnd>12?' col-end-auto':' col-end-'+attributes.columnEnd) : '')+ (attributes.rowSpan>-1 ? (attributes.rowSpan>12?' row-span-full':' row-span-'+attributes.rowSpan) : '')+ (attributes.rowStart>-1 ? (attributes.rowStart>12?' row-start-auto':' row-start-'+attributes.rowStart) : '')+ (attributes.rowEnd>-1 ? (attributes.rowEnd>12?' row-end-auto':' row-end-'+attributes.rowEnd) : '')+ (attributes.flex ? ' flex' : '')+ (attributes.flexWrap ? ' flex-wrap' : '')+ (attributes.flexRow ? ' flex-row' : '')+ (attributes.flexColumn ? ' flex-column' : '')+ (attributes.flexGrow ? ' flex-grow' : '')+ (attributes.flexShrink ? ' flex-shrink' : '')+ (attributes.container ? ' container' : '')+ (attributes.mxauto ? ' mx-auto' : '')+ (attributes.myauto ? ' my-auto' : '')+ (attributes.wfull ? ' w-full' : '')+ (attributes.boxBorder ? ' box-border' : '')+ (attributes.boxContent ? ' box-content' : '')+ (!_.isEmpty(attributes.display) ? ' '+attributes.display : '')+ (!_.isEmpty(attributes.float) ? ' '+attributes.float : '')+ (!_.isEmpty(attributes.position) ? ' '+attributes.position : '')+ (!_.isEmpty(attributes.zIndex) ? ' '+attributes.zIndex : '')+ (!_.isEmpty(attributes.justify) ? ' '+attributes.justify : '')+ (!_.isEmpty(attributes.justifyItems) ? ' '+attributes.justifyItems : '')+ (!_.isEmpty(attributes.justifySelf) ? ' '+attributes.justifySelf : '')+ (!_.isEmpty(attributes.items) ? ' '+attributes.items : '')+ (!_.isEmpty(attributes.alignContent) ? ' '+attributes.alignContent : '')+ (!_.isEmpty(attributes.alignSelf) ? ' '+attributes.alignSelf : '')+ (!_.isEmpty(attributes.placeContent) ? ' '+attributes.placeContent : '')+ (!_.isEmpty(attributes.placeItems) ? ' '+attributes.placeItems : '')+ (!_.isEmpty(attributes.placeSelf) ? ' '+attributes.placeSelf : '')+ (!_.isEmpty(attributes.spacing) ? ' '+attributes.spacing : '')+ ' '+className classes = classes.trim() let topbarcolor = 'bg-white' if(attributes.container) topbarcolor='bg-blue-50' if(attributes.flex&&attributes.flexRow&&attributes.flexWrap) topbarcolor='bg-teal-50' if(!attributes.container&&attributes.flexBasisLg>-1) topbarcolor='bg-green-50' else if(attributes.wfull&&!attributes.container&&!(attributes.flex&&attributes.flexRow&&attributes.flexWrap)&&attributes.flexBasisLg==-1&&attributes.flexBasis==12) topbarcolor='bg-purple-50'; return

{title}

{showTweaks &&
{classes}
}
} />
}, save:({attributes})=>{ const {className} = attributes let bgc = attributes.backgroundColor let dbgcolor = {r:255,g:255,b:255,a:0} return
-1 ? ' flex-basis-'+attributes.flexBasis : '')+ (attributes.flexBasisSm>-1 ? ' sm:flex-basis-'+attributes.flexBasisSm : '')+ (attributes.flexBasisMd>-1 ? ' md:flex-basis-'+attributes.flexBasisMd : '')+ (attributes.flexBasisLg>-1 ? ' lg:flex-basis-'+attributes.flexBasisLg : '')+ (attributes.flexBasisXl>-1 ? ' xl:flex-basis-'+attributes.flexBasisXl : '')+ (attributes.gridTemplateColumns>-1 ? ' grid-cols-'+attributes.gridTemplateColumns : '')+ (attributes.gridTemplateColumnsSm>-1 ? ' sm:grid-cols-'+attributes.gridTemplateColumnsSm : '')+ (attributes.gridTemplateColumnsMd>-1 ? ' md:grid-cols-'+attributes.gridTemplateColumnsMd : '')+ (attributes.gridTemplateColumnsLg>-1 ? ' lg:grid-cols-'+attributes.gridTemplateColumnsLg : '')+ (attributes.gridTemplateColumnsXl>-1 ? ' xl:grid-cols-'+attributes.gridTemplateColumnsXl : '')+ (attributes.gridTemplateRows>-1 ? ' grid-cols-'+attributes.gridTemplateRows : '')+ (attributes.gridTemplateRowsSm>-1 ? ' sm:grid-cols-'+attributes.gridTemplateRowsSm : '')+ (attributes.gridTemplateRowsMd>-1 ? ' md:grid-cols-'+attributes.gridTemplateRowsMd : '')+ (attributes.gridTemplateRowsLg>-1 ? ' lg:grid-cols-'+attributes.gridTemplateRowsLg : '')+ (attributes.gridTemplateRowsXl>-1 ? ' xl:grid-cols-'+attributes.gridTemplateRowsXl : '')+ (attributes.pt>-1 ? ' pt-'+attributes.pt : '')+ (attributes.pr>-1 ? ' pr-'+attributes.pr : '')+ (attributes.pb>-1 ? ' pb-'+attributes.pb : '')+ (attributes.pl>-1 ? ' pl-'+attributes.pl : '')+ (attributes.mt>-1 ? ' mt-'+attributes.mt : '')+ (attributes.mr>-1 ? ' mr-'+attributes.mr : '')+ (attributes.mb>-1 ? ' mb-'+attributes.mb : '')+ (attributes.ml>-1 ? ' ml-'+attributes.ml : '')+ (attributes.columnSpan>-1 ? (attributes.columnSpan>12?' col-span-full':' col-span-'+attributes.columnSpan) : '')+ (attributes.columnStart>-1 ? (attributes.columnStart>12?' col-start-auto':' col-start-'+attributes.columnStart) : '')+ (attributes.columnEnd>-1 ? (attributes.columnEnd>12?' col-end-auto':' col-end-'+attributes.columnEnd) : '')+ (attributes.rowSpan>-1 ? (attributes.rowSpan>12?' row-span-full':' row-span-'+attributes.rowSpan) : '')+ (attributes.rowStart>-1 ? (attributes.rowStart>12?' row-start-auto':' row-start-'+attributes.rowStart) : '')+ (attributes.rowEnd>-1 ? (attributes.rowEnd>12?' row-end-auto':' row-end-'+attributes.rowEnd) : '')+ (attributes.flex ? ' flex' : '')+ (attributes.flexWrap ? ' flex-wrap' : '')+ (attributes.flexRow ? ' flex-row' : '')+ (attributes.flexColumn ? ' flex-column' : '')+ (attributes.flexGrow ? ' flex-grow' : '')+ (attributes.flexShrink ? ' flex-shrink' : '')+ (attributes.container ? ' container' : '')+ (attributes.mxauto ? ' mx-auto' : '')+ (attributes.myauto ? ' my-auto' : '')+ (attributes.wfull ? ' w-full' : '')+ (attributes.boxBorder ? ' box-border' : '')+ (attributes.boxContent ? ' box-content' : '')+ (!_.isEmpty(attributes.display) ? ' '+attributes.display : '')+ (!_.isEmpty(attributes.float) ? ' '+attributes.float : '')+ (!_.isEmpty(attributes.position) ? ' '+attributes.position : '')+ (!_.isEmpty(attributes.zIndex) ? ' '+attributes.zIndex : '')+ (!_.isEmpty(attributes.justify) ? ' '+attributes.justify : '')+ (!_.isEmpty(attributes.justifyItems) ? ' '+attributes.justifyItems : '')+ (!_.isEmpty(attributes.justifySelf) ? ' '+attributes.justifySelf : '')+ (!_.isEmpty(attributes.items) ? ' '+attributes.items : '')+ (!_.isEmpty(attributes.alignContent) ? ' '+attributes.alignContent : '')+ (!_.isEmpty(attributes.alignSelf) ? ' '+attributes.alignSelf : '')+ (!_.isEmpty(attributes.placeContent) ? ' '+attributes.placeContent : '')+ (!_.isEmpty(attributes.placeItems) ? ' '+attributes.placeItems : '')+ (!_.isEmpty(attributes.placeSelf) ? ' '+attributes.placeSelf : '')+ (!_.isEmpty(attributes.spacing) ? ' '+attributes.spacing : '')+ ' '+(className?className:'')} style={{ [attributes.bgimagearray.length ? 'backgroundImage' : null] : attributes.bgimagearray.length ? `url(${attributes.bgimagearray[0]})` : null, [!_.isNil(bgc)&&!_.isEqual(bgc,dbgcolor) ? 'backgroundColor' : null]: (!_.isNil(bgc)&&!_.isEqual(bgc,dbgcolor) ? `rgba(${bgc.r},${bgc.g},${bgc.b},${bgc.a})` : null) }}>
} } )