File: /var/www/html/wpmuhibbah_err/wp-content/plugins/give/blocks/donation-form-grid/edit/inspector.js
/**
* WordPress dependencies
*/
import {__} from '@wordpress/i18n'
import { select } from '@wordpress/data';
import {InspectorControls, PanelColorSettings, store } from '@wordpress/block-editor';
import {
ColorPalette,
FormTokenField, Panel,
PanelBody,
SelectControl,
TextControl,
ToggleControl,
} from '@wordpress/components';
/**
* Internal dependencies
*/
import giveFormOptions from '../data/options';
import ColumnSelector from '../../components/column-selector';
import './style.scss'
/**
* Render Inspector Controls
*/
const Inspector = ({attributes, setAttributes}) => {
const {
formsPerPage,
paged,
imageSize,
imageHeight,
formIDs,
excludeForms,
excludedFormIDs,
orderBy,
order,
categories,
tags,
columns,
showTitle,
showExcerpt,
excerptLength,
showGoal,
showFeaturedImage,
showDonateButton,
tagBackgroundColor,
donateButtonTextColor,
displayType,
filterOptions,
tagTextColor,
imageHeightOptions,
progressBarColor
} = attributes;
const saveSetting = (name, value) => {
setAttributes({
[name]: value,
});
};
const getAsArray = value => {
if (Array.isArray(value)) {
return value;
}
// Backward compatibility
if (formIDs.indexOf(',')) {
return value.split(',');
}
return [value];
};
const getImageSizes = () => select(store).getSettings().imageSizes.map(({slug, name}) => {
return {
value: slug,
label: name
};
});
const handleImageOptions = (value) => {
saveSetting('imageHeightOptions', value)
saveSetting('imageHeight', value)
}
const filterValue = () => {
if (filterOptions === 'categories') {
return <>
<FormTokenField
className="give-form-grid-inspector__filter"
name="categories"
value={getAsArray(categories)}
onChange={(value) => saveSetting('categories', value)}
/>
<p className="components-form-token-field__help">
{__('Type the name of your category to add it to the list. Only forms within the categories you choose will be displayed in this grid.', 'give')}
</p>
</>
} else if (filterOptions === 'tags') {
return <>
<FormTokenField
className="give-form-grid-inspector__filter"
name="tags"
value={getAsArray(tags)}
onChange={(value) => saveSetting('tags', value)}
/>
<p className="components-form-token-field__help">
{__('Type the name of your tag to add it to the list. Only forms with these tags you choose will be displayed in this grid.', 'give')}
</p></>
} else if (filterOptions === 'formIDs'){
return <>
<FormTokenField
className="give-form-grid-inspector__filter"
name="formIDs"
value={getAsArray(formIDs)}
onChange={(value) => saveSetting('formIDs', value)}
/>
<p className="components-form-token-field__help">
{__('Type the ID of your form to add it to the list. Only forms with these IDs you choose will be displayed in this grid.', 'give')}
</p></>
}
}
return (
<InspectorControls key="inspector">
<Panel>
<PanelBody title= {__('Layout', 'give')} initialOpen={ true }>
<ColumnSelector
label={__('Columns', 'give')}
selected={columns}
onClick={(value) => saveSetting('columns', value)}
help={__('Controls how many columns of the Form Grid appear. "Best Fit" will adjust responsively to the space available.', 'give')}
/>
<SelectControl
label={ __( 'Columns', 'give' ) }
name="columns"
value={ columns }
options={ giveFormOptions.columns }
onChange={ ( value ) => saveSetting( 'columns', value ) } />
</PanelBody>
</Panel>
<Panel>
<PanelBody title= {__('Display Elements', 'give')} initialOpen={ true }>
<ToggleControl
className="give-form-grid-inspector"
name="showTitle"
label={__('Show Title', 'give')}
checked={!!showTitle}
onChange={(value) => saveSetting('showTitle', value)}/>
<ToggleControl
className="give-form-grid-inspector"
name="showGoal"
label={__('Show Goal', 'give')}
checked={!!showGoal}
onChange={(value) => saveSetting('showGoal', value)}
/>
<ToggleControl
className="give-form-grid-inspector"
name="showExcerpt"
label={__('Show Excerpt', 'give')}
checked={!!showExcerpt}
onChange={(value) => saveSetting('showExcerpt', value)}
/>
<ToggleControl
className="give-form-grid-inspector"
name="showDonateButton"
label={__('Show Donate Button', 'give')}
checked={!!showDonateButton}
onChange={(value) => saveSetting('showDonateButton', value)}
/>
<ToggleControl
className="give-form-grid-inspector"
align="right"
name="showFeaturedImage"
label={__('Show Featured Image', 'give')}
checked={!!showFeaturedImage}
onChange={(value) => saveSetting('showFeaturedImage', value)}
/>
{showFeaturedImage && (
<>
<SelectControl
className="give-form-grid-inspector"
name="imageSize"
label={__('Image Size', 'give')}
value={imageSize}
options={getImageSizes()}
onChange={(value) => saveSetting('imageSize', value)}
/>
<SelectControl
className="give-form-grid-inspector"
name="imageHeightOptions"
label={__('Image Height', 'give')}
value={imageHeightOptions}
options={giveFormOptions.imageHeight}
onChange={(value) => handleImageOptions(value)}
/>
{imageHeightOptions === 'custom' && <TextControl
className="give-form-grid-inspector__filter" name="imageHeight"
value={imageHeight}
onChange={(value) => saveSetting('imageHeight', value)}
help={__('Featured image height. Default "auto". Accepts valid heights in px, em, or rem.', 'give')}/>
}
</>
)}
</PanelBody>
</Panel>
<Panel>
<PanelBody className="give-donation-form-grid--grid-settings" title= {__('Grid Settings', 'give')} initialOpen={ true }>
<SelectControl
className="give-form-grid-inspector"
label={__('Order By', 'give')}
name="orderBy"
value={orderBy}
options={giveFormOptions.orderBy}
onChange={(value) => saveSetting('orderBy', value)}
help={__('The order forms are displayed in.', 'give')}
/>
<SelectControl
className="give-form-grid-inspector"
label={__('Order', 'give')}
name="order"
value={order}
options={giveFormOptions.order}
onChange={(value) => saveSetting('order', value)}
help={__('Whether the order ascends or descends.', 'give')}
/>
<SelectControl
className="give-form-grid-inspector"
label={ __( 'Filter', 'give' ) }
name="filter" value={filterOptions}
options={ giveFormOptions.filter }
onChange={ ( value ) => saveSetting( 'filterOptions', value ) } />
{filterValue(filterOptions)}
<ToggleControl
className="give-form-grid-inspector exclude__form"
name="excludeForms"
label={__('Exclude specific forms?', 'give')}
checked={!!excludeForms}
onChange={(value) => saveSetting('excludeForms', value)}
/>
{excludeForms && (
<>
<FormTokenField
name="excludedFormIDs"
label={__('Excluded Form IDs', 'give')}
value={getAsArray(excludedFormIDs)}
onChange={(value) => saveSetting('excludedFormIDs', value)}
/>
<p className="components-form-token-field__help">
{__('Type the ID of your form to exclude it from the list. Forms with these IDs you choose will not be displayed in this grid.', 'give')}
</p>
</>
)}
</PanelBody>
</Panel>
<Panel>
<PanelBody title= {__('Grid Interaction', 'give')} initialOpen={ true }>
<SelectControl
className="give-form-grid-inspector"
label={__('Display Type', 'give')}
name="displayType"
value={displayType}
options={giveFormOptions.displayType}
onChange={(value) => saveSetting('displayType', value)}
/>
{displayType === 'redirect' ?
<p className="give-form-grid-inspector__help">
{__('Users will be redirected to the donation form page.', 'give')}
</p> :
<p className="give-form-grid-inspector__help">
{__('Modal with the donation form will be displayed on the same page.', 'give')}
</p>
}
<TextControl
className="give-form-grid-inspector"
name="formsPerPage"
label={__('Forms Per Page', 'give')}
value={formsPerPage}
onChange={(value) => saveSetting('formsPerPage', value)}
help={__('Sets the number of forms to be displayed on the first page load.', 'give')}
/>
<ToggleControl
className="give-form-grid-inspector"
name="paged"
label={__('Show Pagination', 'give')}
checked={!!paged}
onChange={(value) => saveSetting('paged', value)}
help={__('Enable form display to multiple pages.', 'give')}
/>
</PanelBody>
</Panel>
<PanelColorSettings
title={ __( 'Color Settings', 'give' ) }
colorSettings={ [
{
value: tagBackgroundColor
, onChange: (value) => saveSetting('tagBackgroundColor', value),
label: __('Tag Background Color', 'give')
},
{
value: tagTextColor,
onChange: (value) => saveSetting('tagTextColor', value),
label: __('Tag Text Color', 'give')
},
{
value: donateButtonTextColor,
onChange: (value) => saveSetting('donateButtonTextColor', value),
label: __('Donate Button Text Color', 'give')
},
{
value: progressBarColor,
onChange: (value) => saveSetting('progressBarColor', value),
label: __('Progress Bar Color', 'give')
},
] }
/>
</InspectorControls>
);
};
export default Inspector;