PluginProbe
Better Payment – Instant Payments, Donations, Fundraising with Subscriptions & More / 2.2.1
Better Payment – Instant Payments, Donations, Fundraising with Subscriptions & More v2.2.1
2.4.1 2.4.0 2.3.4 2.3.3 2.3.2 2.3.1 2.3.0 2.2.2 2.2.1 2.2.0 2.1.2 2.1.1 trunk 0.0.1 0.0.2 0.0.3 0.0.4 0.0.5 0.0.6 0.0.7 1.0.0 1.0.1 1.0.2 1.0.3 1.0.4 All 68 releases
better-payment / src / campaign-builder / components / Canvas.js

Canvas.js in Better Payment – Instant Payments, Donations, Fundraising with Subscriptions & More 2.2.1, at src/campaign-builder/components/Canvas.js

53 lines 2.2 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 import { __ } from '@wordpress/i18n';
2 import Column from './Column';
3
4 /**
5 * Campaign canvas — renders the page-level column layout.
6 * Empty state shows a "+" icon prompting the user to drag elements in.
7 * @dnd-kit DndContext is wired in App.js (parent).
8 */
9 export default function Canvas( { layout, meta, campaignId, selectedElementId, dispatch, activeDragSource, dropTargetElementId } ) {
10 const columns = layout?.columns || [];
11
12 if ( columns.length === 0 ) {
13 return (
14 <div className="bp-cb-canvas bp-cb-canvas--empty">
15 <div className="bp-cb-canvas-placeholder">
16 <button
17 className="bp-cb-canvas-placeholder__add"
18 title={ __( 'Choose a template to start', 'better-payment' ) }
19 onClick={ () => dispatch( { type: 'OPEN_TEMPLATE_MODAL' } ) }
20 >
21 <svg width="32" height="32" viewBox="0 0 32 32" fill="none">
22 <circle cx="16" cy="16" r="15" stroke="#bbb" strokeWidth="1.5"/>
23 <path d="M16 10v12M10 16h12" stroke="#bbb" strokeWidth="2" strokeLinecap="round"/>
24 </svg>
25 </button>
26 <p>{ __( 'Drag elements from the right panel, or choose a template.', 'better-payment' ) }</p>
27 </div>
28 </div>
29 );
30 }
31
32 const layoutClass = `bp-cb-canvas bp-cb-canvas--${ layout.layout || '1-column' }`;
33
34 return (
35 <div className={ layoutClass } onClick={ () => dispatch( { type: 'DESELECT_ELEMENT' } ) }>
36 <div className="bp-canvas-columns-wrap">
37 { columns.map( ( column ) => (
38 <Column
39 key={ column.id }
40 column={ column }
41 meta={ meta }
42 campaignId={ campaignId }
43 selectedElementId={ selectedElementId }
44 dispatch={ dispatch }
45 isActiveDropTarget={ activeDragSource === 'panel' }
46 dropTargetElementId={ dropTargetElementId }
47 />
48 ) ) }
49 </div>
50 </div>
51 );
52 }
53