From cf92a24168fa3eb4ff9f4a9c743c544134255483 Mon Sep 17 00:00:00 2001 From: ashubawork Date: Thu, 31 Oct 2024 14:10:34 +0200 Subject: [PATCH] - update blocks --- build/blocks-manifest.php | 59 ++++++++++ build/um-account/block.json | 15 +++ build/um-account/src/index.asset.php | 1 + build/um-account/src/index.js | 1 + build/um-forms/block.json | 15 +++ build/um-forms/src/index.asset.php | 1 + build/um-forms/src/index.js | 1 + build/um-member-directories/block.json | 15 +++ .../um-member-directories/src/index.asset.php | 1 + build/um-member-directories/src/index.js | 1 + build/um-password-reset/block.json | 10 ++ build/um-password-reset/src/index.asset.php | 1 + build/um-password-reset/src/index.js | 1 + includes/blocks/um-account/block.json | 2 +- .../blocks/um-account/build/index.asset.php | 1 - includes/blocks/um-account/build/index.js | 1 - includes/blocks/um-account/src/index.js | 79 ++++++------- includes/blocks/um-forms/block.json | 2 +- .../blocks/um-forms/build/index.asset.php | 1 - includes/blocks/um-forms/build/index.js | 1 - includes/blocks/um-forms/src/index.js | 109 ++++++++---------- .../blocks/um-member-directories/block.json | 2 +- .../build/index.asset.php | 1 - .../um-member-directories/build/index.js | 1 - .../blocks/um-member-directories/src/index.js | 105 ++++++++--------- includes/blocks/um-password-reset/block.json | 2 +- .../um-password-reset/build/index.asset.php | 1 - .../blocks/um-password-reset/build/index.js | 1 - .../blocks/um-password-reset/src/index.js | 8 +- includes/core/class-blocks.php | 12 +- package.json | 20 ++-- 31 files changed, 279 insertions(+), 192 deletions(-) create mode 100644 build/blocks-manifest.php create mode 100644 build/um-account/block.json create mode 100644 build/um-account/src/index.asset.php create mode 100644 build/um-account/src/index.js create mode 100644 build/um-forms/block.json create mode 100644 build/um-forms/src/index.asset.php create mode 100644 build/um-forms/src/index.js create mode 100644 build/um-member-directories/block.json create mode 100644 build/um-member-directories/src/index.asset.php create mode 100644 build/um-member-directories/src/index.js create mode 100644 build/um-password-reset/block.json create mode 100644 build/um-password-reset/src/index.asset.php create mode 100644 build/um-password-reset/src/index.js delete mode 100644 includes/blocks/um-account/build/index.asset.php delete mode 100644 includes/blocks/um-account/build/index.js delete mode 100644 includes/blocks/um-forms/build/index.asset.php delete mode 100644 includes/blocks/um-forms/build/index.js delete mode 100644 includes/blocks/um-member-directories/build/index.asset.php delete mode 100644 includes/blocks/um-member-directories/build/index.js delete mode 100644 includes/blocks/um-password-reset/build/index.asset.php delete mode 100644 includes/blocks/um-password-reset/build/index.js diff --git a/build/blocks-manifest.php b/build/blocks-manifest.php new file mode 100644 index 00000000..7bfc80cd --- /dev/null +++ b/build/blocks-manifest.php @@ -0,0 +1,59 @@ + array( + 'apiVersion' => 2, + 'name' => 'um-block/um-account', + 'title' => 'Account', + 'description' => 'Displaying the account page of the current user', + 'icon' => 'id', + 'category' => 'um-blocks', + 'attributes' => array( + 'tab' => array( + 'type' => 'string' + ) + ), + 'editorScript' => 'file:./src/index.js', + 'textdomain' => 'ultimate-member' + ), + 'um-forms' => array( + 'apiVersion' => 2, + 'name' => 'um-block/um-forms', + 'title' => 'Form', + 'description' => 'Choose display form', + 'icon' => 'forms', + 'category' => 'um-blocks', + 'attributes' => array( + 'form_id' => array( + 'type' => 'integer' + ) + ), + 'editorScript' => 'file:./src/index.js', + 'textdomain' => 'ultimate-member' + ), + 'um-member-directories' => array( + 'apiVersion' => 2, + 'name' => 'um-block/um-member-directories', + 'title' => 'Member Directory', + 'description' => 'Choose display directory', + 'icon' => 'groups', + 'category' => 'um-blocks', + 'attributes' => array( + 'member_id' => array( + 'type' => 'integer' + ) + ), + 'editorScript' => 'file:./src/index.js', + 'textdomain' => 'ultimate-member' + ), + 'um-password-reset' => array( + 'apiVersion' => 2, + 'name' => 'um-block/um-password-reset', + 'title' => 'Password Reset', + 'description' => 'Displaying the password reset form', + 'icon' => 'unlock', + 'category' => 'um-blocks', + 'editorScript' => 'file:./src/index.js', + 'textdomain' => 'ultimate-member' + ) +); diff --git a/build/um-account/block.json b/build/um-account/block.json new file mode 100644 index 00000000..b95c89b9 --- /dev/null +++ b/build/um-account/block.json @@ -0,0 +1,15 @@ +{ + "apiVersion": 2, + "name": "um-block/um-account", + "title": "Account", + "description": "Displaying the account page of the current user", + "icon": "id", + "category": "um-blocks", + "attributes": { + "tab": { + "type": "string" + } + }, + "editorScript": "file:./src/index.js", + "textdomain": "ultimate-member" +} \ No newline at end of file diff --git a/build/um-account/src/index.asset.php b/build/um-account/src/index.asset.php new file mode 100644 index 00000000..0b7c5e12 --- /dev/null +++ b/build/um-account/src/index.asset.php @@ -0,0 +1 @@ + array('react-jsx-runtime', 'wp-block-editor', 'wp-blocks', 'wp-components', 'wp-element', 'wp-server-side-render'), 'version' => 'a9e99ac324b1bd5538e3'); diff --git a/build/um-account/src/index.js b/build/um-account/src/index.js new file mode 100644 index 00000000..bab6a5f8 --- /dev/null +++ b/build/um-account/src/index.js @@ -0,0 +1 @@ +(()=>{"use strict";var t={n:e=>{var n=e&&e.__esModule?()=>e.default:()=>e;return t.d(n,{a:n}),n},d:(e,n)=>{for(var a in n)t.o(n,a)&&!t.o(e,a)&&Object.defineProperty(e,a,{enumerable:!0,get:n[a]})},o:(t,e)=>Object.prototype.hasOwnProperty.call(t,e)};const e=window.wp.blocks,n=window.wp.serverSideRender;var a=t.n(n);const o=window.wp.blockEditor,c=window.wp.components,u=window.wp.element,i=window.ReactJSXRuntime;(0,e.registerBlockType)("um-block/um-account",{edit:function(t){const{attributes:e,setAttributes:n}=t,{tab:r}=e,s=(0,o.useBlockProps)(),l=(0,u.useMemo)((()=>{const t=[{label:wp.i18n.__("All","ultimate-member"),value:"all"}];for(const e in um_account_settings)um_account_settings.hasOwnProperty(e)&&um_account_settings[e].enabled&&t.push({label:um_account_settings[e].label,value:e});return t}),[]),d=(0,u.useCallback)((t=>{n({tab:t}),n({content:`[ultimatemember_account${"all"!==t?` tab="${t}"`:""}]`})}),[n]);return(0,i.jsxs)("div",{...s,children:[(0,i.jsx)(a(),{block:"um-block/um-account",attributes:e}),(0,i.jsx)(o.InspectorControls,{children:(0,i.jsx)(c.PanelBody,{title:wp.i18n.__("Account Tab","ultimate-member"),children:(0,i.jsx)(c.SelectControl,{label:wp.i18n.__("Select Tab","ultimate-member"),className:"um_select_account_tab",value:r,options:l,style:{height:"35px",lineHeight:"20px",padding:"0 7px"},onChange:d})})})]})},save:()=>null}),jQuery(window).on("load",(function(t){new MutationObserver((function(t){t.forEach((function(t){jQuery(t.addedNodes).find(".um.um-account").each((function(){let t=jQuery(this).find(".um-account-main").attr("data-current_tab"),e=document.querySelector(".um-form");t&&(jQuery(this).find('.um-account-tab[data-tab="'+t+'"]').show(),jQuery(this).find(".um-account-tab:not(:visible)").find("input, select, textarea").not(":disabled").addClass("um_account_inactive").prop("disabled",!0).attr("disabled",!0),um_responsive()),e&&e.addEventListener("click",(t=>{t.target!==e&&(t.preventDefault(),t.stopPropagation())}))}))}))})).observe(document,{attributes:!1,childList:!0,characterData:!1,subtree:!0})}))})(); \ No newline at end of file diff --git a/build/um-forms/block.json b/build/um-forms/block.json new file mode 100644 index 00000000..b6acee9f --- /dev/null +++ b/build/um-forms/block.json @@ -0,0 +1,15 @@ +{ + "apiVersion": 2, + "name": "um-block/um-forms", + "title": "Form", + "description": "Choose display form", + "icon": "forms", + "category": "um-blocks", + "attributes": { + "form_id": { + "type": "integer" + } + }, + "editorScript": "file:./src/index.js", + "textdomain": "ultimate-member" +} \ No newline at end of file diff --git a/build/um-forms/src/index.asset.php b/build/um-forms/src/index.asset.php new file mode 100644 index 00000000..2bb40790 --- /dev/null +++ b/build/um-forms/src/index.asset.php @@ -0,0 +1 @@ + array('react-jsx-runtime', 'wp-block-editor', 'wp-blocks', 'wp-components', 'wp-data', 'wp-element', 'wp-server-side-render'), 'version' => 'cf4974d44ac78244494c'); diff --git a/build/um-forms/src/index.js b/build/um-forms/src/index.js new file mode 100644 index 00000000..285e5656 --- /dev/null +++ b/build/um-forms/src/index.js @@ -0,0 +1 @@ +(()=>{"use strict";var e={n:t=>{var o=t&&t.__esModule?()=>t.default:()=>t;return e.d(o,{a:o}),o},d:(t,o)=>{for(var r in o)e.o(o,r)&&!e.o(t,r)&&Object.defineProperty(t,r,{enumerable:!0,get:o[r]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t)};const t=window.wp.data,o=window.wp.components,r=window.wp.blockEditor,n=window.wp.serverSideRender;var l=e.n(n);const i=window.wp.blocks,a=window.wp.element,s=window.ReactJSXRuntime;(0,i.registerBlockType)("um-block/um-forms",{edit:function(e){const n=(0,r.useBlockProps)(),{attributes:i,setAttributes:u}=e,{form_id:c}=i,d=(0,t.useSelect)((e=>e("core").getEntityRecords("postType","um_form",{per_page:-1,_fields:["id","title"]})),[]),m=(0,a.useMemo)((()=>d?0===d.length?[{label:wp.i18n.__("No forms found.","ultimate-member"),value:""}]:[{label:wp.i18n.__("Select Form","ultimate-member"),value:""}].concat(d.map((e=>({label:e.title.rendered,value:e.id})))):[{label:wp.i18n.__("Loading...","ultimate-member"),value:""}]),[d]);return(0,s.jsxs)("div",{...n,children:[(0,s.jsx)(l(),{block:"um-block/um-forms",attributes:i}),(0,s.jsx)(r.InspectorControls,{children:(0,s.jsx)(o.PanelBody,{title:wp.i18n.__("Select Forms","ultimate-member"),children:(0,s.jsx)(o.SelectControl,{label:wp.i18n.__("Select Forms","ultimate-member"),className:"um_select_forms",value:c,options:m,onChange:e=>u({form_id:e})})})})]})},save:()=>null}),jQuery(window).on("load",(function(e){new MutationObserver((function(e){e.forEach((function(e){jQuery(e.addedNodes).find(".um-form").each((function(){let e=document.querySelector(".um-form");e&&e.addEventListener("click",(t=>{t.target!==e&&(t.preventDefault(),t.stopPropagation())}))}))}))})).observe(document,{attributes:!1,childList:!0,characterData:!1,subtree:!0})}))})(); \ No newline at end of file diff --git a/build/um-member-directories/block.json b/build/um-member-directories/block.json new file mode 100644 index 00000000..46492735 --- /dev/null +++ b/build/um-member-directories/block.json @@ -0,0 +1,15 @@ +{ + "apiVersion": 2, + "name": "um-block/um-member-directories", + "title": "Member Directory", + "description": "Choose display directory", + "icon": "groups", + "category": "um-blocks", + "attributes": { + "member_id": { + "type": "integer" + } + }, + "editorScript": "file:./src/index.js", + "textdomain": "ultimate-member" +} \ No newline at end of file diff --git a/build/um-member-directories/src/index.asset.php b/build/um-member-directories/src/index.asset.php new file mode 100644 index 00000000..7ac488fc --- /dev/null +++ b/build/um-member-directories/src/index.asset.php @@ -0,0 +1 @@ + array('react-jsx-runtime', 'wp-block-editor', 'wp-blocks', 'wp-components', 'wp-data', 'wp-element', 'wp-server-side-render'), 'version' => 'cced871823424b7be338'); diff --git a/build/um-member-directories/src/index.js b/build/um-member-directories/src/index.js new file mode 100644 index 00000000..38fffc0c --- /dev/null +++ b/build/um-member-directories/src/index.js @@ -0,0 +1 @@ +(()=>{"use strict";var e={n:t=>{var r=t&&t.__esModule?()=>t.default:()=>t;return e.d(r,{a:r}),r},d:(t,r)=>{for(var i in r)e.o(r,i)&&!e.o(t,i)&&Object.defineProperty(t,i,{enumerable:!0,get:r[i]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t)};const t=window.wp.data,r=window.wp.components,i=window.wp.blockEditor,n=window.wp.serverSideRender;var o=e.n(n);const l=window.wp.blocks,a=window.wp.element,c=window.ReactJSXRuntime;(0,l.registerBlockType)("um-block/um-member-directories",{edit:function(e){const n=(0,i.useBlockProps)(),{attributes:l,setAttributes:d}=e,{member_id:u}=l,m=(0,t.useSelect)((e=>e("core").getEntityRecords("postType","um_directory",{per_page:-1,_fields:["id","title"]})),[]),s=(0,a.useMemo)((()=>m?0===m.length?[{label:wp.i18n.__("No posts found.","ultimate-member"),value:""}]:[{label:wp.i18n.__("Select Directory","ultimate-member"),value:""}].concat(m.map((e=>({label:e.title.rendered,value:e.id})))):[{label:wp.i18n.__("Loading...","ultimate-member"),value:""}]),[m]);return m?(0,c.jsxs)("div",{...n,children:[(0,c.jsx)(o(),{block:"um-block/um-member-directories",attributes:l}),(0,c.jsx)(i.InspectorControls,{children:(0,c.jsx)(r.PanelBody,{title:wp.i18n.__("Select Directories","ultimate-member"),children:(0,c.jsx)(r.SelectControl,{label:wp.i18n.__("Select Directories","ultimate-member"),className:"um_select_directory",value:u,options:s,onChange:e=>d({member_id:e})})})})]}):(0,c.jsxs)("p",{children:[(0,c.jsx)(r.Spinner,{}),wp.i18n.__("Loading...","ultimate-member")]})},save:()=>null}),jQuery(window).on("load",(function(e){new MutationObserver((function(e){e.forEach((function(e){jQuery(e.addedNodes).find(".um.um-directory").each((function(){let e=document.querySelector(".um-directory"),t=jQuery(this);um_ajax_get_members(t),um_slider_filter_init(t),um_datepicker_filter_init(t),um_timepicker_filter_init(t),e&&e.addEventListener("click",(t=>{t.target!==e&&(t.preventDefault(),t.stopPropagation())}))})),jQuery(e.addedNodes).find(".um-member").each((function(){let e=document.querySelector(".um-member"),t=jQuery(this).parent();UM_Member_Grid(t),e&&e.addEventListener("click",(t=>{t.target!==e&&(t.preventDefault(),t.stopPropagation())}))}))}))})).observe(document,{attributes:!1,childList:!0,characterData:!1,subtree:!0})}))})(); \ No newline at end of file diff --git a/build/um-password-reset/block.json b/build/um-password-reset/block.json new file mode 100644 index 00000000..e9ba86f6 --- /dev/null +++ b/build/um-password-reset/block.json @@ -0,0 +1,10 @@ +{ + "apiVersion": 2, + "name": "um-block/um-password-reset", + "title": "Password Reset", + "description": "Displaying the password reset form", + "icon": "unlock", + "category": "um-blocks", + "editorScript": "file:./src/index.js", + "textdomain": "ultimate-member" +} \ No newline at end of file diff --git a/build/um-password-reset/src/index.asset.php b/build/um-password-reset/src/index.asset.php new file mode 100644 index 00000000..4cf5f6d3 --- /dev/null +++ b/build/um-password-reset/src/index.asset.php @@ -0,0 +1 @@ + array('react-jsx-runtime', 'wp-block-editor', 'wp-blocks', 'wp-server-side-render'), 'version' => 'd1e8ad89d47a20d3414b'); diff --git a/build/um-password-reset/src/index.js b/build/um-password-reset/src/index.js new file mode 100644 index 00000000..32865158 --- /dev/null +++ b/build/um-password-reset/src/index.js @@ -0,0 +1 @@ +(()=>{"use strict";var e={n:o=>{var r=o&&o.__esModule?()=>o.default:()=>o;return e.d(r,{a:r}),r},d:(o,r)=>{for(var t in r)e.o(r,t)&&!e.o(o,t)&&Object.defineProperty(o,t,{enumerable:!0,get:r[t]})},o:(e,o)=>Object.prototype.hasOwnProperty.call(e,o)};const o=window.wp.blocks,r=window.wp.serverSideRender;var t=e.n(r);const n=window.wp.blockEditor,s=window.ReactJSXRuntime;(0,o.registerBlockType)("um-block/um-password-reset",{edit:function(){const e=(0,n.useBlockProps)();return(0,s.jsx)("div",{...e,children:(0,s.jsx)(t(),{block:"um-block/um-password-reset"})})},save:()=>null})})(); \ No newline at end of file diff --git a/includes/blocks/um-account/block.json b/includes/blocks/um-account/block.json index 2085aec7..8a5c803d 100644 --- a/includes/blocks/um-account/block.json +++ b/includes/blocks/um-account/block.json @@ -10,6 +10,6 @@ "type": "string" } }, - "editorScript": "file:./build/index.js", + "editorScript": "file:./src/index.js", "textdomain": "ultimate-member" } diff --git a/includes/blocks/um-account/build/index.asset.php b/includes/blocks/um-account/build/index.asset.php deleted file mode 100644 index cf48a0d1..00000000 --- a/includes/blocks/um-account/build/index.asset.php +++ /dev/null @@ -1 +0,0 @@ - array('wp-block-editor', 'wp-blocks', 'wp-components', 'wp-element', 'wp-server-side-render'), 'version' => '98a99fd44cd9deb95734'); diff --git a/includes/blocks/um-account/build/index.js b/includes/blocks/um-account/build/index.js deleted file mode 100644 index d8d1e5fe..00000000 --- a/includes/blocks/um-account/build/index.js +++ /dev/null @@ -1 +0,0 @@ -(()=>{"use strict";var t={n:e=>{var n=e&&e.__esModule?()=>e.default:()=>e;return t.d(n,{a:n}),n},d:(e,n)=>{for(var a in n)t.o(n,a)&&!t.o(e,a)&&Object.defineProperty(e,a,{enumerable:!0,get:n[a]})},o:(t,e)=>Object.prototype.hasOwnProperty.call(t,e)};const e=window.wp.element,n=window.wp.blocks,a=window.wp.serverSideRender;var o=t.n(a);const u=window.wp.blockEditor,r=window.wp.components;(0,n.registerBlockType)("um-block/um-account",{edit:function(t){let{tab:n,setAttributes:a}=t.attributes;const c=(0,u.useBlockProps)();return(0,e.createElement)("div",c,(0,e.createElement)(o(),{block:"um-block/um-account",attributes:t.attributes}),(0,e.createElement)(u.InspectorControls,null,(0,e.createElement)(r.PanelBody,{title:wp.i18n.__("Account Tab","ultimate-member")},(0,e.createElement)(r.SelectControl,{label:wp.i18n.__("Select Tab","ultimate-member"),className:"um_select_account_tab",value:n,options:function(){var t=[];for(var e in t.push({label:wp.i18n.__("All","ultimate-member"),value:"all"}),um_account_settings)um_account_settings.hasOwnProperty(e)&&um_account_settings[e].enabled&&t.push({label:um_account_settings[e].label,value:e});return t}(),style:{height:"35px",lineHeight:"20px",padding:"0 7px"},onChange:e=>{t.setAttributes({tab:e}),function(e){var n="[ultimatemember_account";"all"!==e&&(n=n+' tab="'+e+'"'),n+="]",t.setAttributes({content:n})}(e)}}))))},save:function(t){return null}}),jQuery(window).on("load",(function(t){new MutationObserver((function(t){t.forEach((function(t){jQuery(t.addedNodes).find(".um.um-account").each((function(){var t=jQuery(this).find(".um-account-main").attr("data-current_tab");t&&(jQuery(this).find('.um-account-tab[data-tab="'+t+'"]').show(),jQuery(this).find(".um-account-tab:not(:visible)").find("input, select, textarea").not(":disabled").addClass("um_account_inactive").prop("disabled",!0).attr("disabled",!0),um_responsive(),um_modal_responsive())}))}))})).observe(document,{attributes:!1,childList:!0,characterData:!1,subtree:!0})}))})(); \ No newline at end of file diff --git a/includes/blocks/um-account/src/index.js b/includes/blocks/um-account/src/index.js index cb62aee3..18345342 100644 --- a/includes/blocks/um-account/src/index.js +++ b/includes/blocks/um-account/src/index.js @@ -1,84 +1,77 @@ import { registerBlockType } from '@wordpress/blocks'; import ServerSideRender from '@wordpress/server-side-render'; -import {InspectorControls, useBlockProps} from '@wordpress/block-editor'; -import {PanelBody, SelectControl} from "@wordpress/components"; +import { InspectorControls, useBlockProps } from '@wordpress/block-editor'; +import { PanelBody, SelectControl } from "@wordpress/components"; +import { useMemo, useCallback } from '@wordpress/element'; registerBlockType('um-block/um-account', { edit: function (props) { - let { tab, setAttributes } = props.attributes; + const { attributes, setAttributes } = props; + const { tab } = attributes; const blockProps = useBlockProps(); - function get_options() { - var option = []; - - option.push( { label: wp.i18n.__( 'All', 'ultimate-member' ), value: 'all' } ); - - for ( var key in um_account_settings ) { - if ( um_account_settings.hasOwnProperty( key ) && um_account_settings[ key ]['enabled'] ) { - option.push( - { - label: um_account_settings[ key ]['label'], - value: key - } - ) + const options = useMemo(() => { + const option = [{ label: wp.i18n.__('All', 'ultimate-member'), value: 'all' }]; + for (const key in um_account_settings) { + if (um_account_settings.hasOwnProperty(key) && um_account_settings[key]['enabled']) { + option.push({ + label: um_account_settings[key]['label'], + value: key + }); } } - return option; - } + }, []); - function umShortcode( value ) { - - var shortcode = '[ultimatemember_account'; - - if ( value !== 'all' ) { - shortcode = shortcode + ' tab="' + value + '"'; - } - - shortcode = shortcode + ']'; - - props.setAttributes({ content: shortcode }); - } + const onTabChange = useCallback((value) => { + setAttributes({ tab: value }); + const shortcode = `[ultimatemember_account${value !== 'all' ? ` tab="${value}"` : ''}]`; + setAttributes({ content: shortcode }); + }, [setAttributes]); return (
- + { - props.setAttributes({ tab: value }); - umShortcode(value); - }} + onChange={onTabChange} />
); - }, - save: function save(props) { - return null; - } + + save: () => null }); jQuery(window).on( 'load', function($) { - var observer = new MutationObserver(function(mutations) { + let observer = new MutationObserver(function(mutations) { mutations.forEach(function(mutation) { jQuery(mutation.addedNodes).find('.um.um-account').each(function() { - var current_tab = jQuery(this).find('.um-account-main').attr('data-current_tab'); + let current_tab = jQuery(this).find('.um-account-main').attr('data-current_tab'); + let wrapper = document.querySelector('.um-form'); if ( current_tab ) { jQuery(this).find('.um-account-tab[data-tab="'+current_tab+'"]').show(); jQuery(this).find('.um-account-tab:not(:visible)').find( 'input, select, textarea' ).not( ':disabled' ).addClass('um_account_inactive').prop( 'disabled', true ).attr( 'disabled', true ); um_responsive(); - // um_modal_responsive(); + } + + if (wrapper) { + wrapper.addEventListener('click', (event) => { + if (event.target !== wrapper) { + event.preventDefault(); + event.stopPropagation(); + } + }); } }); }); diff --git a/includes/blocks/um-forms/block.json b/includes/blocks/um-forms/block.json index 563f7399..2d5dce4a 100644 --- a/includes/blocks/um-forms/block.json +++ b/includes/blocks/um-forms/block.json @@ -10,6 +10,6 @@ "type": "integer" } }, - "editorScript": "file:./build/index.js", + "editorScript": "file:./src/index.js", "textdomain": "ultimate-member" } diff --git a/includes/blocks/um-forms/build/index.asset.php b/includes/blocks/um-forms/build/index.asset.php deleted file mode 100644 index 6ef4166a..00000000 --- a/includes/blocks/um-forms/build/index.asset.php +++ /dev/null @@ -1 +0,0 @@ - array('wp-block-editor', 'wp-blocks', 'wp-components', 'wp-data', 'wp-element', 'wp-server-side-render'), 'version' => '9dc130f3a0af7db5d679'); diff --git a/includes/blocks/um-forms/build/index.js b/includes/blocks/um-forms/build/index.js deleted file mode 100644 index eaaac6a4..00000000 --- a/includes/blocks/um-forms/build/index.js +++ /dev/null @@ -1 +0,0 @@ -(()=>{"use strict";var e={n:t=>{var r=t&&t.__esModule?()=>t.default:()=>t;return e.d(r,{a:r}),r},d:(t,r)=>{for(var n in r)e.o(r,n)&&!e.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:r[n]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t)};const t=window.wp.element,r=window.wp.data,n=window.wp.components,l=window.wp.blockEditor,o=window.wp.serverSideRender;var i=e.n(o);(0,window.wp.blocks.registerBlockType)("um-block/um-forms",{edit:function(e){let{form_id:o,setAttributes:a}=e.attributes;const s=(0,l.useBlockProps)(),m=(0,r.useSelect)((e=>e("core").getEntityRecords("postType","um_form",{per_page:-1,_fields:["id","title"]})));if(!m)return(0,t.createElement)("p",null,(0,t.createElement)(n.Spinner,null),wp.i18n.__("Loading...","ultimate-member"));if(0===m.length)return"No forms found.";let c=[{id:"",title:""}].concat(m).map((e=>({label:e.title.rendered,value:e.id})));return(0,t.createElement)("div",s,(0,t.createElement)(i(),{block:"um-block/um-forms",attributes:e.attributes}),(0,t.createElement)(l.InspectorControls,null,(0,t.createElement)(n.PanelBody,{title:wp.i18n.__("Select Forms","ultimate-member")},(0,t.createElement)(n.SelectControl,{label:wp.i18n.__("Select Forms","ultimate-member"),className:"um_select_forms",value:o,options:c,style:{height:"35px",lineHeight:"20px",padding:"0 7px"},onChange:t=>{e.setAttributes({form_id:t})}}))))},save:function(e){return null}})})(); \ No newline at end of file diff --git a/includes/blocks/um-forms/src/index.js b/includes/blocks/um-forms/src/index.js index 27cc2418..5c7852e2 100644 --- a/includes/blocks/um-forms/src/index.js +++ b/includes/blocks/um-forms/src/index.js @@ -2,90 +2,73 @@ import { useSelect } from '@wordpress/data'; import { PanelBody, SelectControl, Spinner } from '@wordpress/components'; import { InspectorControls, useBlockProps } from '@wordpress/block-editor'; import ServerSideRender from '@wordpress/server-side-render'; -import { registerBlockType } from "@wordpress/blocks"; +import { registerBlockType } from '@wordpress/blocks'; +import { useMemo } from '@wordpress/element'; registerBlockType('um-block/um-forms', { edit: function (props) { - let { form_id, setAttributes } = props.attributes; const blockProps = useBlockProps(); - const posts = useSelect((select) => { - return select('core').getEntityRecords('postType', 'um_form', { - per_page: -1, - _fields: ['id', 'title'] - }); - }); + const { attributes, setAttributes } = props; + const { form_id } = attributes; - if (!posts) { - return ( -

- - {wp.i18n.__('Loading...', 'ultimate-member')} -

- ); - } + const posts = useSelect( + (select) => select('core').getEntityRecords('postType', 'um_form', { per_page: -1, _fields: ['id', 'title'] }), + [] + ); - if (posts.length === 0) { - return 'No forms found.'; - } - - function get_option( posts ) { - var option = []; - - posts.map( function( post ) { - option.push( - { - label: post.title.rendered, - value: post.id - } - ); - }); - - return option; - } - - function umShortcode( value ) { - - var shortcode = ''; - - if (value !== undefined && value !== '') { - shortcode = '[ultimatemember form_id="' + value + '"]'; + const options = useMemo(() => { + if (!posts) { + return [{ label: wp.i18n.__('Loading...', 'ultimate-member'), value: '' }]; } + if (posts.length === 0) { + return [{ label: wp.i18n.__('No forms found.', 'ultimate-member'), value: '' }]; + } + return [{ label: wp.i18n.__('Select Form', 'ultimate-member'), value: '' }].concat( + posts.map((post) => ({ label: post.title.rendered, value: post.id })) + ); + }, [posts]); - return shortcode; - } - - let posts_data = [{ id: '', title: '' }].concat(posts); - - let get_post = posts_data.map((post) => { - return { - label: post.title.rendered, - value: post.id - }; - }); + const onFormChange = (value) => setAttributes({ form_id: value }); return (
- + { - props.setAttributes({ form_id: value }); - umShortcode(value); - }} + options={options} + onChange={onFormChange} />
); - }, - save: function save(props) { - return null; - } + + save: () => null +}); + +jQuery(window).on( 'load', function($) { + let observer = new MutationObserver(function(mutations) { + mutations.forEach(function(mutation) { + + jQuery(mutation.addedNodes).find('.um-form').each(function() { + let wrapper = document.querySelector('.um-form'); + + if (wrapper) { + wrapper.addEventListener('click', (event) => { + if (event.target !== wrapper) { + event.preventDefault(); + event.stopPropagation(); + } + }); + } + }); + }); + }); + + observer.observe(document, {attributes: false, childList: true, characterData: false, subtree:true}); }); diff --git a/includes/blocks/um-member-directories/block.json b/includes/blocks/um-member-directories/block.json index ddaabf37..cdffceea 100644 --- a/includes/blocks/um-member-directories/block.json +++ b/includes/blocks/um-member-directories/block.json @@ -10,6 +10,6 @@ "type": "integer" } }, - "editorScript": "file:./build/index.js", + "editorScript": "file:./src/index.js", "textdomain": "ultimate-member" } diff --git a/includes/blocks/um-member-directories/build/index.asset.php b/includes/blocks/um-member-directories/build/index.asset.php deleted file mode 100644 index 83e8be83..00000000 --- a/includes/blocks/um-member-directories/build/index.asset.php +++ /dev/null @@ -1 +0,0 @@ - array('react', 'wp-block-editor', 'wp-blocks', 'wp-components', 'wp-data', 'wp-server-side-render'), 'version' => '5b1a8ec016836a5c26cd'); diff --git a/includes/blocks/um-member-directories/build/index.js b/includes/blocks/um-member-directories/build/index.js deleted file mode 100644 index 7492c2d3..00000000 --- a/includes/blocks/um-member-directories/build/index.js +++ /dev/null @@ -1 +0,0 @@ -(()=>{"use strict";var e={n:t=>{var r=t&&t.__esModule?()=>t.default:()=>t;return e.d(r,{a:r}),r},d:(t,r)=>{for(var i in r)e.o(r,i)&&!e.o(t,i)&&Object.defineProperty(t,i,{enumerable:!0,get:r[i]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t)};const t=window.React,r=window.wp.data,i=window.wp.components,n=window.wp.blockEditor,o=window.wp.serverSideRender;var l=e.n(o);(0,window.wp.blocks.registerBlockType)("um-block/um-member-directories",{edit:function(e){let{member_id:o,setAttributes:a}=e.attributes;const c=(0,n.useBlockProps)(),u=(0,r.useSelect)((e=>e("core").getEntityRecords("postType","um_directory",{per_page:-1,_fields:["id","title"]})));if(!u)return(0,t.createElement)("p",null,(0,t.createElement)(i.Spinner,null),wp.i18n.__("Loading...","ultimate-member"));if(0===u.length)return"No posts found.";let d=[{id:"",title:""}].concat(u).map((e=>({label:e.title.rendered,value:e.id})));return(0,t.createElement)("div",{...c},(0,t.createElement)(l(),{block:"um-block/um-member-directories",attributes:e.attributes}),(0,t.createElement)(n.InspectorControls,null,(0,t.createElement)(i.PanelBody,{title:wp.i18n.__("Select Directories","ultimate-member")},(0,t.createElement)(i.SelectControl,{label:wp.i18n.__("Select Directories","ultimate-member"),className:"um_select_directory",value:o,options:d,style:{height:"35px",lineHeight:"20px",padding:"0 7px"},onChange:t=>{e.setAttributes({member_id:t})}}))))},save:function(e){return null}}),jQuery(window).on("load",(function(e){new MutationObserver((function(e){e.forEach((function(e){jQuery(e.addedNodes).find(".um.um-directory").each((function(){var e=jQuery(this);um_ajax_get_members(e),um_slider_filter_init(e),um_datepicker_filter_init(e),um_timepicker_filter_init(e)})),jQuery(e.addedNodes).find(".um-member").each((function(){var e=jQuery(this).parent();UM_Member_Grid(e)}))}))})).observe(document,{attributes:!1,childList:!0,characterData:!1,subtree:!0})}))})(); \ No newline at end of file diff --git a/includes/blocks/um-member-directories/src/index.js b/includes/blocks/um-member-directories/src/index.js index 41e606b3..c5415fff 100644 --- a/includes/blocks/um-member-directories/src/index.js +++ b/includes/blocks/um-member-directories/src/index.js @@ -3,17 +3,37 @@ import { PanelBody, SelectControl, Spinner } from '@wordpress/components'; import { InspectorControls, useBlockProps } from '@wordpress/block-editor'; import ServerSideRender from '@wordpress/server-side-render'; import { registerBlockType } from "@wordpress/blocks"; +import { useMemo } from '@wordpress/element'; registerBlockType('um-block/um-member-directories', { edit: function (props) { - let { member_id, setAttributes } = props.attributes; const blockProps = useBlockProps(); + const { attributes, setAttributes } = props; + const { member_id } = attributes; + const posts = useSelect((select) => { return select('core').getEntityRecords('postType', 'um_directory', { per_page: -1, _fields: ['id', 'title'] }); - }); + }, []); + + const options = useMemo(() => { + if (!posts) { + return [{ label: wp.i18n.__('Loading...', 'ultimate-member'), value: '' }]; + } + if (posts.length === 0) { + return [{ label: wp.i18n.__('No posts found.', 'ultimate-member'), value: '' }]; + } + return [{ label: wp.i18n.__('Select Directory', 'ultimate-member'), value: '' }].concat( + posts.map((post) => ({ + label: post.title.rendered, + value: post.id + })) + ); + }, [posts]); + + const onMemberIdChange = (value) => setAttributes({ member_id: value }); if (!posts) { return ( @@ -24,86 +44,61 @@ registerBlockType('um-block/um-member-directories', { ); } - if (posts.length === 0) { - return 'No posts found.'; - } - - function get_option( posts ) { - var option = []; - - posts.map( function( post ) { - option.push( - { - label: post.title.rendered, - value: post.id - } - ); - }); - - return option; - } - - function umShortcode( value ) { - - var shortcode = ''; - - if (value !== undefined && value !== '') { - shortcode = '[ultimatemember form_id="' + value + '"]'; - } - - return shortcode; - } - - let posts_data = [{ id: '', title: '' }].concat(posts); - - let get_post = posts_data.map((post) => { - return { - label: post.title.rendered, - value: post.id - }; - }); - return (
- + { - props.setAttributes({ member_id: value }); - umShortcode(value); - }} + options={options} + onChange={onMemberIdChange} />
); - }, - save: function save(props) { - return null; - } + + save: () => null }); jQuery(window).on( 'load', function($) { - var observer = new MutationObserver(function(mutations) { + let observer = new MutationObserver(function(mutations) { mutations.forEach(function(mutation) { jQuery(mutation.addedNodes).find('.um.um-directory').each(function() { - var directory = jQuery(this); + let wrapper = document.querySelector('.um-directory'); + let directory = jQuery(this); um_ajax_get_members( directory ); um_slider_filter_init( directory ); um_datepicker_filter_init( directory ); um_timepicker_filter_init( directory ); + + if (wrapper) { + wrapper.addEventListener('click', (event) => { + if (event.target !== wrapper) { + event.preventDefault(); + event.stopPropagation(); + } + }); + } }); jQuery(mutation.addedNodes).find('.um-member').each(function() { - var directory = jQuery(this).parent(); + let wrapper = document.querySelector('.um-member'); + let directory = jQuery(this).parent(); UM_Member_Grid(directory); + + if (wrapper) { + wrapper.addEventListener('click', (event) => { + if (event.target !== wrapper) { + event.preventDefault(); + event.stopPropagation(); + } + }); + } }); }); }); diff --git a/includes/blocks/um-password-reset/block.json b/includes/blocks/um-password-reset/block.json index f73a45ee..2e1548c2 100644 --- a/includes/blocks/um-password-reset/block.json +++ b/includes/blocks/um-password-reset/block.json @@ -5,6 +5,6 @@ "description": "Displaying the password reset form", "icon": "unlock", "category": "um-blocks", - "editorScript": "file:./build/index.js", + "editorScript": "file:./src/index.js", "textdomain": "ultimate-member" } diff --git a/includes/blocks/um-password-reset/build/index.asset.php b/includes/blocks/um-password-reset/build/index.asset.php deleted file mode 100644 index 75ba44e5..00000000 --- a/includes/blocks/um-password-reset/build/index.asset.php +++ /dev/null @@ -1 +0,0 @@ - array('wp-block-editor', 'wp-blocks', 'wp-element', 'wp-server-side-render'), 'version' => '95e8fe2695e681505871'); diff --git a/includes/blocks/um-password-reset/build/index.js b/includes/blocks/um-password-reset/build/index.js deleted file mode 100644 index 5f96959e..00000000 --- a/includes/blocks/um-password-reset/build/index.js +++ /dev/null @@ -1 +0,0 @@ -(()=>{"use strict";var e={n:r=>{var o=r&&r.__esModule?()=>r.default:()=>r;return e.d(o,{a:o}),o},d:(r,o)=>{for(var t in o)e.o(o,t)&&!e.o(r,t)&&Object.defineProperty(r,t,{enumerable:!0,get:o[t]})},o:(e,r)=>Object.prototype.hasOwnProperty.call(e,r)};const r=window.wp.element,o=window.wp.blocks,t=window.wp.serverSideRender;var n=e.n(t);const s=window.wp.blockEditor;(0,o.registerBlockType)("um-block/um-password-reset",{edit:function(e){const o=(0,s.useBlockProps)();return(0,r.createElement)("div",o,(0,r.createElement)(n(),{block:"um-block/um-password-reset"}))},save:function(e){return null}})})(); \ No newline at end of file diff --git a/includes/blocks/um-password-reset/src/index.js b/includes/blocks/um-password-reset/src/index.js index 56ab795b..74e89369 100644 --- a/includes/blocks/um-password-reset/src/index.js +++ b/includes/blocks/um-password-reset/src/index.js @@ -3,7 +3,7 @@ import ServerSideRender from '@wordpress/server-side-render'; import { useBlockProps } from '@wordpress/block-editor'; registerBlockType('um-block/um-password-reset', { - edit: function (props) { + edit: function () { const blockProps = useBlockProps(); return ( @@ -11,9 +11,7 @@ registerBlockType('um-block/um-password-reset', { ); - }, - save: function save(props) { - return null; - } + + save: () => null }); diff --git a/includes/core/class-blocks.php b/includes/core/class-blocks.php index 8e76e467..e37830f8 100644 --- a/includes/core/class-blocks.php +++ b/includes/core/class-blocks.php @@ -17,8 +17,9 @@ if ( ! class_exists( 'um\core\Blocks' ) ) { * Blocks constructor. */ public function __construct() { - add_action( 'init', array( &$this, 'block_editor_render' ) ); +// add_action( 'init', array( &$this, 'block_editor_render' ) ); add_filter( 'block_type_metadata_settings', array( &$this, 'block_type_metadata_settings' ), 9999, 2 ); + add_action( 'init', array( &$this, 'wp_register_block_metadata_collection' ), 11 ); } /** @@ -69,7 +70,7 @@ if ( ! class_exists( 'um\core\Blocks' ) ) { * * @uses register_block_type_from_metadata() */ - public function block_editor_render() { + public function wp_register_block_metadata_collection() { /** * Filters the variable to disable adding UM Blocks to Gutenberg editor. * @@ -99,6 +100,11 @@ if ( ! class_exists( 'um\core\Blocks' ) ) { return; } + wp_register_block_metadata_collection( + UM_PATH . 'build', + UM_PATH . 'build/blocks-manifest.php' + ); + $blocks = array( 'um-block/um-member-directories' => array( 'render_callback' => array( $this, 'member_directories_render' ), @@ -131,7 +137,7 @@ if ( ! class_exists( 'um\core\Blocks' ) ) { foreach ( $blocks as $k => $block_data ) { $block_type = str_replace( 'um-block/', '', $k ); - register_block_type_from_metadata( UM_PATH . 'includes/blocks/' . $block_type, $block_data ); + register_block_type_from_metadata( UM_PATH . 'build/' . $block_type, $block_data ); } } diff --git a/package.json b/package.json index d08fe57d..bd4de023 100644 --- a/package.json +++ b/package.json @@ -23,11 +23,9 @@ "scripts": { "build:docs": "rm -rf docs/hooks/ && jsdoc -c hookdoc-conf.json", "build": "npm-run-all build:*", - "build:all-blocks": "npm-run-all --parallel build-block-*", - "build-block-um-member-directories": "cd includes/blocks/um-member-directories && wp-scripts build src/index.js", - "build-block-um-forms": "cd includes/blocks/um-forms && wp-scripts build src/index.js", - "build-block-um-password-reset": "cd includes/blocks/um-password-reset && wp-scripts build src/index.js", - "build-block-um-account": "cd includes/blocks/um-account && wp-scripts build src/index.js" + "build-blocks": "wp-scripts build --webpack-src-dir=includes/blocks --output-path=build", + "build-manifest": "wp-scripts build-blocks-manifest", + "build:all-blocks": "npm-run-all build-blocks build-manifest" }, "engines": { "node": ">= 0.10.0" @@ -43,12 +41,12 @@ "jsdoc": "~4.0.2", "wp-hookdoc": "^0.2.0", "npm-run-all": "^4.1.5", - "@wordpress/block-editor": "^11.5.0", - "@wordpress/blocks": "^12.5.0", - "@wordpress/components": "^23.5.0", - "@wordpress/i18n": "^4.28.0", - "@wordpress/scripts": "^25.5.1", - "@wordpress/server-side-render": "^4.5.0" + "@wordpress/block-editor": "^14.5.0", + "@wordpress/blocks": "^13.10.0", + "@wordpress/components": "^28.10.0", + "@wordpress/i18n": "^5.10.0", + "@wordpress/scripts": "^30.3.0", + "@wordpress/server-side-render": "^5.10.0" }, "dependencies": { "react": "^18.2.0",