import { createElement, useRef } from '@wordpress/element'
import { __ } from 'ct-i18n'
import {
InspectorControls,
useBlockProps,
withColors,
} from '@wordpress/block-editor'
import Preview from './Preview'
import ColorsPanel from '../../components/ColorsPanel'
import BasicEdit from '../../components/BasicEdit'
import { options } from '.'
import { colors } from './colors'
const Edit = ({
attributes,
setAttributes,
clientId,
className,
textColor,
setTextColor,
textInitialColor,
setTextInitialColor,
textHoverColor,
setTextHoverColor,
iconsColor,
setIconsColor,
iconsHoverColor,
setIconsHoverColor,
backgroundColor,
setBackgroundColor,
backgroundHoverColor,
setBackgroundHoverColor,
borderColor,
setBorderColor,
borderHoverColor,
setBorderHoverColor,
}) => {
const {
contacts_items_direction = 'column',
contacts_icons_size = 20,
contacts_items_spacing = '',
contacts_icon_shape = 'rounded',
contacts_icon_fill_type = 'outline',
} = attributes
const navRef = useRef()
const blockProps = useBlockProps({
ref: navRef,
className: {
'ct-contact-info-block': true,
className,
},
style: {
'--theme-block-text-color': textColor?.color,
'--theme-link-initial-color': textInitialColor?.color,
'--theme-link-hover-color': textHoverColor?.color,
'--theme-icon-color': iconsColor?.color,
'--theme-icon-hover-color': iconsHoverColor?.color,
'--background-color':
contacts_icon_fill_type === 'solid'
? backgroundColor?.color
: borderColor?.color,
'--background-hover-color':
contacts_icon_fill_type === 'solid'
? backgroundHoverColor?.color
: borderHoverColor?.color,
...(contacts_icons_size
? {
'--theme-icon-size': `${contacts_icons_size}px`,
}
: {}),
...(contacts_items_spacing
? {
'--items-spacing': `${contacts_items_spacing}px`,
}
: {}),
...(contacts_items_direction === 'column'
? {
'--items-direction': contacts_items_direction,
}
: {}),
},
})
return (
{
setTextColor(colors.textColor)
setTextInitialColor(colors.textInitialColor)
setTextHoverColor(colors.textHoverColor)
}}
panelId={clientId}
settings={[
{
colorValue: textColor.color,
enableAlpha: true,
label: __('Text', 'blocksy'),
onColorChange: (value) =>
setTextColor(value || colors.textColor),
},
{
colorValue: textInitialColor.color,
enableAlpha: true,
label: __('Link Initial', 'blocksy'),
onColorChange: (value) =>
setTextInitialColor(
value || colors.textInitialColor
),
},
{
colorValue: textHoverColor.color,
enableAlpha: true,
label: __('Link Hover', 'blocksy'),
onColorChange: (value) =>
setTextHoverColor(
value || colors.textHoverColor
),
},
]}
/>
{
setIconsColor(colors.iconsColor)
setIconsHoverColor(colors.iconsHoverColor)
}}
panelId={clientId}
settings={[
{
colorValue: iconsColor.color,
enableAlpha: true,
label: __('Initial', 'blocksy'),
onColorChange: (value) =>
setIconsColor(value || colors.iconsColor),
},
{
colorValue: iconsHoverColor.color,
enableAlpha: true,
label: __('Hover', 'blocksy'),
onColorChange: (value) =>
setIconsHoverColor(
value || colors.iconsHoverColor
),
},
]}
/>
{contacts_icon_shape !== 'simple' &&
(contacts_icon_fill_type === 'solid' ? (
{
setBackgroundColor(colors.backgroundColor)
setBackgroundHoverColor(
colors.backgroundHoverColor
)
}}
panelId={clientId}
settings={[
{
colorValue: backgroundColor.color,
enableAlpha: true,
label: __('Initial', 'blocksy'),
onColorChange: (value) =>
setBackgroundColor(
value || colors.backgroundColor
),
},
{
colorValue: backgroundHoverColor.color,
enableAlpha: true,
label: __('Hover', 'blocksy'),
onColorChange: (value) =>
setBackgroundHoverColor(
value || colors.backgroundHoverColor
),
},
]}
/>
) : (
{
setBorderColor(colors.borderColor)
setBorderHoverColor(colors.borderHoverColor)
}}
panelId={clientId}
settings={[
{
colorValue: borderColor.color,
enableAlpha: true,
label: __('Initial', 'blocksy'),
onColorChange: (value) =>
setBorderColor(
value || colors.borderColor
),
},
{
colorValue: borderHoverColor.color,
enableAlpha: true,
label: __('Hover', 'blocksy'),
onColorChange: (value) =>
setBorderHoverColor(
value || colors.borderHoverColor
),
},
]}
/>
))}
)
}
export default withColors(
{ textColor: 'color' },
{ textInitialColor: 'color' },
{ textHoverColor: 'color' },
{ iconsColor: 'color' },
{ iconsHoverColor: 'color' },
{ backgroundColor: 'color' },
{ backgroundHoverColor: 'color' },
{ borderColor: 'color' },
{ borderHoverColor: 'color' }
)(Edit)