/* 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
{showTweaks && }
} />
},
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)
}}>
}
} )