//import 'whatwg-fetch'; import Select from 'react-select'; import { __ } from '@wordpress/i18n'; import { registerBlockType } from '@wordpress/blocks'; import { InspectorControls } from '@wordpress/block-editor'; import { PanelBody } from '@wordpress/components'; import { Fragment } from '@wordpress/element'; import DownloadButton from './components/DownloadButton'; import DownloadInput from './components/DownloadInput'; import VersionInput from './components/VersionInput'; import TemplateInput from './components/TemplateInput'; //setLocaleData( window.gutenberg_dlm_blocks.localeData, 'download-monitor' ); registerBlockType( 'download-monitor/download-button', { title: __( 'Download Button', 'download-monitor' ), icon: 'download', keywords: [ __( 'download', 'download-monitor' ), 'download monitor', __( 'file', 'download-monitor' ), ], category: 'common', attributes: { download_id: { type: 'number', default: 0, }, version_id: { type: 'number', default: 0, }, template: { type: 'string', default: 'settings', }, custom_template: { type: 'string', default: '', }, autop: { type: 'number', default: 0, }, }, edit: ( props ) => { const { attributes: { download_id, version_id, template, custom_template, autop, }, setAttributes, } = props; const valueFromId = ( opts, id ) => opts.find( ( o ) => o.value === id ); const autoPOptions = [ { value: 0, label: 'No' }, { value: 1, label: 'Yes' }, ]; return ( <Fragment> <InspectorControls> <PanelBody title={ __( 'Download Information', 'download-monitor' ) } > <div className="components-base-control"> <span className="components-base-control__label"> { __( 'Download', 'download-monitor' ) } </span> <DownloadInput onChange={ ( v ) => setAttributes( { download_id: v } ) } selectedDownloadId={ download_id } /> </div> <div className="components-base-control"> <span className="components-base-control__label"> { __( 'Version', 'download-monitor' ) } </span> <VersionInput onChange={ ( v ) => setAttributes( { version_id: v } ) } selectedVersionId={ version_id } downloadId={ download_id } /> </div> </PanelBody> <PanelBody title={ __( 'Template', 'download-monitor' ) }> <div className="components-base-control dlmGbEditorTemplateWrapper"> <span className="components-base-control__label"> { __( 'Template', 'download-monitor' ) } </span> <TemplateInput onChange={ ( v ) => setAttributes( { template: v } ) } selectedTemplate={ template } templatesStr={ window.dlmBlocks.templates } /> </div> { template === 'custom' && ( <div className="components-base-control"> <span className="components-base-control__label"> { __( 'Custom Template', 'download-monitor' ) } </span> <input className="components-text-control__input" onChange={ ( e ) => setAttributes( { custom_template: e.target.value, } ) } value={ custom_template } /> </div> ) } <div className="components-base-control dlmGbEditorTemplateWrapper"> <span className="components-base-control__label"> { __( 'Wrap in paragraph tag (<p>)?', 'download-monitor' ) } </span> <Select value={ valueFromId( autoPOptions, autop ) } onChange={ ( selectedOption ) => { setAttributes( { autop: selectedOption.value, } ); } } options={ autoPOptions } isSearchable="false" /> </div> </PanelBody> </InspectorControls> <DownloadButton download_id={ download_id } version_id={ version_id } template={ template } custom_template={ custom_template } /> </Fragment> ); }, save: () => null, } );