Compare commits

...

3 Commits

  1. 8
      javascript/blocks/wpsi-menu/build/block.json
  2. 32
      javascript/blocks/wpsi-menu/build/index-rtl.css
  3. 2
      javascript/blocks/wpsi-menu/build/index.asset.php
  4. 34
      javascript/blocks/wpsi-menu/build/index.css
  5. 1
      javascript/blocks/wpsi-menu/build/index.css.map
  6. 617
      javascript/blocks/wpsi-menu/build/index.js
  7. 1
      javascript/blocks/wpsi-menu/build/index.js.map
  8. 3
      javascript/blocks/wpsi-menu/build/render.php
  9. 37
      javascript/blocks/wpsi-menu/build/style-index-rtl.css
  10. 39
      javascript/blocks/wpsi-menu/build/style-index.css
  11. 1
      javascript/blocks/wpsi-menu/build/style-index.css.map
  12. 8
      javascript/blocks/wpsi-menu/src/block.json
  13. 21
      javascript/blocks/wpsi-menu/src/edit.js
  14. 3
      javascript/blocks/wpsi-menu/src/render.php
  15. 2
      javascript/blocks/wpsi-menu/src/save.js
  16. 1
      lang/wpsocialicons-de_DE-massivedynamic-wpsi-menu-editor-script.json
  17. BIN
      lang/wpsocialicons-de_DE.mo
  18. 70
      lang/wpsocialicons-de_DE.po
  19. 7
      src/Blocks.php
  20. 7
      src/Frontend.php
  21. 9
      src/Plugin.php
  22. 10
      src/Settings.php
  23. 3
      views/settings.html
  24. 4
      wp-social-icons.php

@ -2,7 +2,7 @@
"$schema": "https://schemas.wp.org/trunk/block.json",
"apiVersion": 3,
"name": "massivedynamic/wpsi-menu",
"version": "0.0.1",
"version": "0.2.0",
"title": "WP Social Icons Menu",
"category": "widgets",
"icon": "networking",
@ -32,9 +32,13 @@
"exclude": {
"type": "array",
"default": []
},
"openInNewTab": {
"type": "boolean",
"default": false
}
},
"textdomain": "wpsi-menu",
"textdomain": "wpsocialicons",
"editorScript": "file:./index.js",
"editorStyle": "file:./index.css",
"style": "file:./style-index.css",

@ -1,31 +1 @@
/*!****************************************************************************************************************************************************************************************************************************************!*\
!*** css ./node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[4].use[1]!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[4].use[2]!./node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[4].use[3]!./src/editor.scss ***!
\****************************************************************************************************************************************************************************************************************************************/
.wpsi-menu {
padding: 2rem 0;
}
.wpsi-menu a {
text-decoration: none;
}
.wpsi-menu.align-left {
text-align: right;
}
.wpsi-menu.align-center {
text-align: center;
}
.wpsi-menu.align-right {
text-align: left;
}
.wpsi-menu.horizontal a:not(:last-of-type) {
margin-left: 2rem;
}
.wpsi-menu.vertical a {
display: block;
}
.wpsi-menu.vertical a:not(:last-of-type) {
margin-bottom: 2rem;
}
.wpsi-menu .wpsi {
font-size: 2rem;
color: #333;
}
.wpsi-menu{padding:2rem 0}.wpsi-menu a{text-decoration:none}.wpsi-menu.align-left{text-align:right}.wpsi-menu.align-center{text-align:center}.wpsi-menu.align-right{text-align:left}.wpsi-menu.horizontal a:not(:last-of-type){margin-left:2rem}.wpsi-menu.vertical a{display:block}.wpsi-menu.vertical a:not(:last-of-type){margin-bottom:2rem}.wpsi-menu .wpsi{color:#333;font-size:2rem}

@ -1 +1 @@
<?php return array('dependencies' => array('react-jsx-runtime', 'wp-api-fetch', 'wp-block-editor', 'wp-blocks', 'wp-components', 'wp-element', 'wp-i18n', 'wp-primitives'), 'version' => '0f8272dc7fc5d65bc4e2');
<?php return array('dependencies' => array('react-jsx-runtime', 'wp-api-fetch', 'wp-block-editor', 'wp-blocks', 'wp-components', 'wp-element', 'wp-i18n', 'wp-primitives'), 'version' => '3150b6ecc167e7e38de7');

@ -1,33 +1 @@
/*!****************************************************************************************************************************************************************************************************************************************!*\
!*** css ./node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[4].use[1]!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[4].use[2]!./node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[4].use[3]!./src/editor.scss ***!
\****************************************************************************************************************************************************************************************************************************************/
.wpsi-menu {
padding: 2rem 0;
}
.wpsi-menu a {
text-decoration: none;
}
.wpsi-menu.align-left {
text-align: left;
}
.wpsi-menu.align-center {
text-align: center;
}
.wpsi-menu.align-right {
text-align: right;
}
.wpsi-menu.horizontal a:not(:last-of-type) {
margin-right: 2rem;
}
.wpsi-menu.vertical a {
display: block;
}
.wpsi-menu.vertical a:not(:last-of-type) {
margin-bottom: 2rem;
}
.wpsi-menu .wpsi {
font-size: 2rem;
color: #333;
}
/*# sourceMappingURL=index.css.map*/
.wpsi-menu{padding:2rem 0}.wpsi-menu a{text-decoration:none}.wpsi-menu.align-left{text-align:left}.wpsi-menu.align-center{text-align:center}.wpsi-menu.align-right{text-align:right}.wpsi-menu.horizontal a:not(:last-of-type){margin-right:2rem}.wpsi-menu.vertical a{display:block}.wpsi-menu.vertical a:not(:last-of-type){margin-bottom:2rem}.wpsi-menu .wpsi{color:#333;font-size:2rem}

@ -1 +0,0 @@
{"version":3,"file":"index.css","mappings":";;;AAAA;EACC;AACD;AACC;EACC;AACF;AAEC;EACC;AAAF;AAEC;EACC;AAAF;AAEC;EACC;AAAF;AAKG;EACC;AAHJ;AASE;EACC;AAPH;AASG;EACC;AAPJ;AAYC;EACC;EACA;AAVF,C","sources":["webpack://wpsi-menu/./src/editor.scss"],"sourcesContent":[".wpsi-menu {\n\tpadding: 2rem 0;\n\n\ta {\n\t\ttext-decoration: none;\n\t}\n\n\t&.align-left {\n\t\ttext-align: left;\n\t}\n\t&.align-center {\n\t\ttext-align: center;\n\t}\n\t&.align-right {\n\t\ttext-align: right;\n\t}\n\n\t&.horizontal {\n\t\ta {\n\t\t\t&:not(:last-of-type) {\n\t\t\t\tmargin-right: 2rem;\n\t\t\t}\n\t\t}\n\t}\n\n\t&.vertical {\n\t\ta {\n\t\t\tdisplay: block;\n\t\t\t\n\t\t\t&:not(:last-of-type) {\n\t\t\t\tmargin-bottom: 2rem;\n\t\t\t}\n\t\t}\n\t}\n\n\t.wpsi {\n\t\tfont-size: 2rem;\n\t\tcolor: #333;\n\t}\n}"],"names":[],"sourceRoot":""}

@ -1,616 +1 @@
/******/ (() => { // webpackBootstrap
/******/ "use strict";
/******/ var __webpack_modules__ = ({
/***/ "./node_modules/@wordpress/icons/build-module/library/align-center.js":
/*!****************************************************************************!*\
!*** ./node_modules/@wordpress/icons/build-module/library/align-center.js ***!
\****************************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
/* harmony export */ });
/* harmony import */ var _wordpress_primitives__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @wordpress/primitives */ "@wordpress/primitives");
/* harmony import */ var _wordpress_primitives__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_wordpress_primitives__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react/jsx-runtime */ "react/jsx-runtime");
/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__);
/**
* WordPress dependencies
*/
const alignCenter = /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(_wordpress_primitives__WEBPACK_IMPORTED_MODULE_0__.SVG, {
xmlns: "http://www.w3.org/2000/svg",
viewBox: "0 0 24 24",
children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(_wordpress_primitives__WEBPACK_IMPORTED_MODULE_0__.Path, {
d: "M7.5 5.5h9V4h-9v1.5Zm-3.5 7h16V11H4v1.5Zm3.5 7h9V18h-9v1.5Z"
})
});
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (alignCenter);
//# sourceMappingURL=align-center.js.map
/***/ }),
/***/ "./node_modules/@wordpress/icons/build-module/library/align-left.js":
/*!**************************************************************************!*\
!*** ./node_modules/@wordpress/icons/build-module/library/align-left.js ***!
\**************************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
/* harmony export */ });
/* harmony import */ var _wordpress_primitives__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @wordpress/primitives */ "@wordpress/primitives");
/* harmony import */ var _wordpress_primitives__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_wordpress_primitives__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react/jsx-runtime */ "react/jsx-runtime");
/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__);
/**
* WordPress dependencies
*/
const alignLeft = /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(_wordpress_primitives__WEBPACK_IMPORTED_MODULE_0__.SVG, {
xmlns: "http://www.w3.org/2000/svg",
viewBox: "0 0 24 24",
children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(_wordpress_primitives__WEBPACK_IMPORTED_MODULE_0__.Path, {
d: "M13 5.5H4V4h9v1.5Zm7 7H4V11h16v1.5Zm-7 7H4V18h9v1.5Z"
})
});
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (alignLeft);
//# sourceMappingURL=align-left.js.map
/***/ }),
/***/ "./node_modules/@wordpress/icons/build-module/library/align-right.js":
/*!***************************************************************************!*\
!*** ./node_modules/@wordpress/icons/build-module/library/align-right.js ***!
\***************************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
/* harmony export */ });
/* harmony import */ var _wordpress_primitives__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @wordpress/primitives */ "@wordpress/primitives");
/* harmony import */ var _wordpress_primitives__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_wordpress_primitives__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react/jsx-runtime */ "react/jsx-runtime");
/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__);
/**
* WordPress dependencies
*/
const alignRight = /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(_wordpress_primitives__WEBPACK_IMPORTED_MODULE_0__.SVG, {
xmlns: "http://www.w3.org/2000/svg",
viewBox: "0 0 24 24",
children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(_wordpress_primitives__WEBPACK_IMPORTED_MODULE_0__.Path, {
d: "M11.111 5.5H20V4h-8.889v1.5ZM4 12.5h16V11H4v1.5Zm7.111 7H20V18h-8.889v1.5Z"
})
});
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (alignRight);
//# sourceMappingURL=align-right.js.map
/***/ }),
/***/ "./node_modules/@wordpress/icons/build-module/library/justify-center-vertical.js":
/*!***************************************************************************************!*\
!*** ./node_modules/@wordpress/icons/build-module/library/justify-center-vertical.js ***!
\***************************************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
/* harmony export */ });
/* harmony import */ var _wordpress_primitives__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @wordpress/primitives */ "@wordpress/primitives");
/* harmony import */ var _wordpress_primitives__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_wordpress_primitives__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react/jsx-runtime */ "react/jsx-runtime");
/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__);
/**
* WordPress dependencies
*/
const justifyCenterVertical = /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(_wordpress_primitives__WEBPACK_IMPORTED_MODULE_0__.SVG, {
xmlns: "http://www.w3.org/2000/svg",
viewBox: "0 0 24 24",
children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(_wordpress_primitives__WEBPACK_IMPORTED_MODULE_0__.Path, {
d: "M20 11h-5V4H9v7H4v1.5h5V20h6v-7.5h5z"
})
});
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (justifyCenterVertical);
//# sourceMappingURL=justify-center-vertical.js.map
/***/ }),
/***/ "./node_modules/@wordpress/icons/build-module/library/justify-center.js":
/*!******************************************************************************!*\
!*** ./node_modules/@wordpress/icons/build-module/library/justify-center.js ***!
\******************************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
/* harmony export */ });
/* harmony import */ var _wordpress_primitives__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @wordpress/primitives */ "@wordpress/primitives");
/* harmony import */ var _wordpress_primitives__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_wordpress_primitives__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react/jsx-runtime */ "react/jsx-runtime");
/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__);
/**
* WordPress dependencies
*/
const justifyCenter = /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(_wordpress_primitives__WEBPACK_IMPORTED_MODULE_0__.SVG, {
xmlns: "http://www.w3.org/2000/svg",
viewBox: "0 0 24 24",
children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(_wordpress_primitives__WEBPACK_IMPORTED_MODULE_0__.Path, {
d: "M12.5 15v5H11v-5H4V9h7V4h1.5v5h7v6h-7Z"
})
});
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (justifyCenter);
//# sourceMappingURL=justify-center.js.map
/***/ }),
/***/ "./src/block.json":
/*!************************!*\
!*** ./src/block.json ***!
\************************/
/***/ ((module) => {
module.exports = /*#__PURE__*/JSON.parse('{"$schema":"https://schemas.wp.org/trunk/block.json","apiVersion":3,"name":"massivedynamic/wpsi-menu","version":"0.0.1","title":"WP Social Icons Menu","category":"widgets","icon":"networking","description":"WP Social Icons Menu Block for Gutenberg","example":{},"supports":{"html":false},"attributes":{"orientation":{"type":"string","enum":["horizontal","vertical"],"default":"horizontal"},"alignment":{"type":"string","enum":["left","center","right"],"default":"center"},"exclude":{"type":"array","default":[]}},"textdomain":"wpsi-menu","editorScript":"file:./index.js","editorStyle":"file:./index.css","style":"file:./style-index.css","render":"file:./render.php"}');
/***/ }),
/***/ "./src/edit.js":
/*!*********************!*\
!*** ./src/edit.js ***!
\*********************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
/* harmony export */ });
/* harmony import */ var _wordpress_i18n__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n");
/* harmony import */ var _wordpress_i18n__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var _wordpress_block_editor__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @wordpress/block-editor */ "@wordpress/block-editor");
/* harmony import */ var _wordpress_block_editor__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_wordpress_block_editor__WEBPACK_IMPORTED_MODULE_1__);
/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @wordpress/element */ "@wordpress/element");
/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_wordpress_element__WEBPACK_IMPORTED_MODULE_2__);
/* harmony import */ var _wordpress_api_fetch__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @wordpress/api-fetch */ "@wordpress/api-fetch");
/* harmony import */ var _wordpress_api_fetch__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_wordpress_api_fetch__WEBPACK_IMPORTED_MODULE_3__);
/* harmony import */ var _wordpress_components__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @wordpress/components */ "@wordpress/components");
/* harmony import */ var _wordpress_components__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_wordpress_components__WEBPACK_IMPORTED_MODULE_4__);
/* harmony import */ var _wordpress_icons__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @wordpress/icons */ "./node_modules/@wordpress/icons/build-module/library/justify-center.js");
/* harmony import */ var _wordpress_icons__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @wordpress/icons */ "./node_modules/@wordpress/icons/build-module/library/justify-center-vertical.js");
/* harmony import */ var _wordpress_icons__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @wordpress/icons */ "./node_modules/@wordpress/icons/build-module/library/align-left.js");
/* harmony import */ var _wordpress_icons__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @wordpress/icons */ "./node_modules/@wordpress/icons/build-module/library/align-center.js");
/* harmony import */ var _wordpress_icons__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! @wordpress/icons */ "./node_modules/@wordpress/icons/build-module/library/align-right.js");
/* harmony import */ var _editor_scss__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./editor.scss */ "./src/editor.scss");
/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! react/jsx-runtime */ "react/jsx-runtime");
/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__);
const Edit = ({
attributes,
setAttributes
}) => {
const [items, setItems] = (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_2__.useState)([]);
const {
alignment,
orientation,
exclude
} = attributes;
const iterator = (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_2__.useMemo)(() => {
const out = [];
for (const [key, value] of Object.entries(items)) out.push({
key,
value
});
return out;
}, [items]);
const activeItems = (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_2__.useMemo)(() => {
return iterator.filter(item => !exclude.includes(item.key));
}, [iterator, exclude]);
const excludeService = service => {
setAttributes({
exclude: exclude.includes(service) ? exclude.filter(item => item !== service) : [...exclude, service]
});
};
(0,_wordpress_element__WEBPACK_IMPORTED_MODULE_2__.useEffect)(() => {
_wordpress_api_fetch__WEBPACK_IMPORTED_MODULE_3___default()({
path: "/wp-social-icons/items"
}).then(response => {
setItems(response);
}).catch(error => console.error("ERR", error));
}, []);
return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsxs)("section", {
...(0,_wordpress_block_editor__WEBPACK_IMPORTED_MODULE_1__.useBlockProps)(),
children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsx)(_wordpress_block_editor__WEBPACK_IMPORTED_MODULE_1__.InspectorControls, {
children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsx)(_wordpress_components__WEBPACK_IMPORTED_MODULE_4__.PanelBody, {
title: "Active Services",
initialOpen: true,
children: iterator.map(item => /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsx)(_wordpress_components__WEBPACK_IMPORTED_MODULE_4__.PanelRow, {
children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsx)(_wordpress_components__WEBPACK_IMPORTED_MODULE_4__.ToggleControl, {
label: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.Fragment, {
children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsx)("span", {
className: `wpsi-${item.key}`,
style: {
fontSize: "1.2rem",
verticalAlign: "middle",
marginRight: "0.5rem"
}
}), " ", /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsx)("span", {
style: {
verticalAlign: "middle"
},
children: item.key
})]
}),
checked: !exclude.includes(item.key),
onChange: () => excludeService(item.key)
})
}))
})
}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsxs)(_wordpress_block_editor__WEBPACK_IMPORTED_MODULE_1__.BlockControls, {
children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsxs)(_wordpress_components__WEBPACK_IMPORTED_MODULE_4__.ToolbarGroup, {
children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsx)(_wordpress_components__WEBPACK_IMPORTED_MODULE_4__.ToolbarButton, {
isActive: orientation === "horizontal",
icon: _wordpress_icons__WEBPACK_IMPORTED_MODULE_7__["default"],
onClick: () => setAttributes({
orientation: "horizontal"
})
}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsx)(_wordpress_components__WEBPACK_IMPORTED_MODULE_4__.ToolbarButton, {
isActive: orientation === "vertical",
icon: _wordpress_icons__WEBPACK_IMPORTED_MODULE_8__["default"],
title: "wdwdwd",
onClick: () => setAttributes({
orientation: "vertical"
})
})]
}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsxs)(_wordpress_components__WEBPACK_IMPORTED_MODULE_4__.ToolbarGroup, {
children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsx)(_wordpress_components__WEBPACK_IMPORTED_MODULE_4__.ToolbarButton, {
isActive: alignment === "left",
icon: _wordpress_icons__WEBPACK_IMPORTED_MODULE_9__["default"],
title: "align left",
onClick: () => setAttributes({
alignment: "left"
})
}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsx)(_wordpress_components__WEBPACK_IMPORTED_MODULE_4__.ToolbarButton, {
isActive: alignment === "center",
icon: _wordpress_icons__WEBPACK_IMPORTED_MODULE_10__["default"],
title: "align center",
onClick: () => setAttributes({
alignment: "center"
})
}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsx)(_wordpress_components__WEBPACK_IMPORTED_MODULE_4__.ToolbarButton, {
isActive: alignment === "right",
icon: _wordpress_icons__WEBPACK_IMPORTED_MODULE_11__["default"],
title: "align right",
onClick: () => setAttributes({
alignment: "right"
})
})]
})]
}), activeItems.length < 1 ? /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsx)("section", {
children: "No elements"
}) : /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsx)("nav", {
className: `wpsi-menu ${orientation} align-${alignment}`,
children: activeItems.map(item => /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsx)("a", {
href: item.value,
children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsx)("span", {
className: `wpsi wpsi-${item.key}`
})
}))
})]
});
};
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (Edit);
/***/ }),
/***/ "./src/editor.scss":
/*!*************************!*\
!*** ./src/editor.scss ***!
\*************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
__webpack_require__.r(__webpack_exports__);
// extracted by mini-css-extract-plugin
/***/ }),
/***/ "./src/index.js":
/*!**********************!*\
!*** ./src/index.js ***!
\**********************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _wordpress_blocks__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @wordpress/blocks */ "@wordpress/blocks");
/* harmony import */ var _wordpress_blocks__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_wordpress_blocks__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var _edit__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./edit */ "./src/edit.js");
/* harmony import */ var _block_json__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./block.json */ "./src/block.json");
/* harmony import */ var _style_scss__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./style.scss */ "./src/style.scss");
(0,_wordpress_blocks__WEBPACK_IMPORTED_MODULE_0__.registerBlockType)(_block_json__WEBPACK_IMPORTED_MODULE_2__.name, {
edit: _edit__WEBPACK_IMPORTED_MODULE_1__["default"]
});
/***/ }),
/***/ "./src/style.scss":
/*!************************!*\
!*** ./src/style.scss ***!
\************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
__webpack_require__.r(__webpack_exports__);
// extracted by mini-css-extract-plugin
/***/ }),
/***/ "@wordpress/api-fetch":
/*!**********************************!*\
!*** external ["wp","apiFetch"] ***!
\**********************************/
/***/ ((module) => {
module.exports = window["wp"]["apiFetch"];
/***/ }),
/***/ "@wordpress/block-editor":
/*!*************************************!*\
!*** external ["wp","blockEditor"] ***!
\*************************************/
/***/ ((module) => {
module.exports = window["wp"]["blockEditor"];
/***/ }),
/***/ "@wordpress/blocks":
/*!********************************!*\
!*** external ["wp","blocks"] ***!
\********************************/
/***/ ((module) => {
module.exports = window["wp"]["blocks"];
/***/ }),
/***/ "@wordpress/components":
/*!************************************!*\
!*** external ["wp","components"] ***!
\************************************/
/***/ ((module) => {
module.exports = window["wp"]["components"];
/***/ }),
/***/ "@wordpress/element":
/*!*********************************!*\
!*** external ["wp","element"] ***!
\*********************************/
/***/ ((module) => {
module.exports = window["wp"]["element"];
/***/ }),
/***/ "@wordpress/i18n":
/*!******************************!*\
!*** external ["wp","i18n"] ***!
\******************************/
/***/ ((module) => {
module.exports = window["wp"]["i18n"];
/***/ }),
/***/ "@wordpress/primitives":
/*!************************************!*\
!*** external ["wp","primitives"] ***!
\************************************/
/***/ ((module) => {
module.exports = window["wp"]["primitives"];
/***/ }),
/***/ "react/jsx-runtime":
/*!**********************************!*\
!*** external "ReactJSXRuntime" ***!
\**********************************/
/***/ ((module) => {
module.exports = window["ReactJSXRuntime"];
/***/ })
/******/ });
/************************************************************************/
/******/ // The module cache
/******/ var __webpack_module_cache__ = {};
/******/
/******/ // The require function
/******/ function __webpack_require__(moduleId) {
/******/ // Check if module is in cache
/******/ var cachedModule = __webpack_module_cache__[moduleId];
/******/ if (cachedModule !== undefined) {
/******/ return cachedModule.exports;
/******/ }
/******/ // Create a new module (and put it into the cache)
/******/ var module = __webpack_module_cache__[moduleId] = {
/******/ // no module.id needed
/******/ // no module.loaded needed
/******/ exports: {}
/******/ };
/******/
/******/ // Execute the module function
/******/ __webpack_modules__[moduleId](module, module.exports, __webpack_require__);
/******/
/******/ // Return the exports of the module
/******/ return module.exports;
/******/ }
/******/
/******/ // expose the modules object (__webpack_modules__)
/******/ __webpack_require__.m = __webpack_modules__;
/******/
/************************************************************************/
/******/ /* webpack/runtime/chunk loaded */
/******/ (() => {
/******/ var deferred = [];
/******/ __webpack_require__.O = (result, chunkIds, fn, priority) => {
/******/ if(chunkIds) {
/******/ priority = priority || 0;
/******/ for(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];
/******/ deferred[i] = [chunkIds, fn, priority];
/******/ return;
/******/ }
/******/ var notFulfilled = Infinity;
/******/ for (var i = 0; i < deferred.length; i++) {
/******/ var [chunkIds, fn, priority] = deferred[i];
/******/ var fulfilled = true;
/******/ for (var j = 0; j < chunkIds.length; j++) {
/******/ if ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {
/******/ chunkIds.splice(j--, 1);
/******/ } else {
/******/ fulfilled = false;
/******/ if(priority < notFulfilled) notFulfilled = priority;
/******/ }
/******/ }
/******/ if(fulfilled) {
/******/ deferred.splice(i--, 1)
/******/ var r = fn();
/******/ if (r !== undefined) result = r;
/******/ }
/******/ }
/******/ return result;
/******/ };
/******/ })();
/******/
/******/ /* webpack/runtime/compat get default export */
/******/ (() => {
/******/ // getDefaultExport function for compatibility with non-harmony modules
/******/ __webpack_require__.n = (module) => {
/******/ var getter = module && module.__esModule ?
/******/ () => (module['default']) :
/******/ () => (module);
/******/ __webpack_require__.d(getter, { a: getter });
/******/ return getter;
/******/ };
/******/ })();
/******/
/******/ /* webpack/runtime/define property getters */
/******/ (() => {
/******/ // define getter functions for harmony exports
/******/ __webpack_require__.d = (exports, definition) => {
/******/ for(var key in definition) {
/******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {
/******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });
/******/ }
/******/ }
/******/ };
/******/ })();
/******/
/******/ /* webpack/runtime/hasOwnProperty shorthand */
/******/ (() => {
/******/ __webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))
/******/ })();
/******/
/******/ /* webpack/runtime/make namespace object */
/******/ (() => {
/******/ // define __esModule on exports
/******/ __webpack_require__.r = (exports) => {
/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
/******/ }
/******/ Object.defineProperty(exports, '__esModule', { value: true });
/******/ };
/******/ })();
/******/
/******/ /* webpack/runtime/jsonp chunk loading */
/******/ (() => {
/******/ // no baseURI
/******/
/******/ // object to store loaded and loading chunks
/******/ // undefined = chunk not loaded, null = chunk preloaded/prefetched
/******/ // [resolve, reject, Promise] = chunk loading, 0 = chunk loaded
/******/ var installedChunks = {
/******/ "index": 0,
/******/ "./style-index": 0
/******/ };
/******/
/******/ // no chunk on demand loading
/******/
/******/ // no prefetching
/******/
/******/ // no preloaded
/******/
/******/ // no HMR
/******/
/******/ // no HMR manifest
/******/
/******/ __webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);
/******/
/******/ // install a JSONP callback for chunk loading
/******/ var webpackJsonpCallback = (parentChunkLoadingFunction, data) => {
/******/ var [chunkIds, moreModules, runtime] = data;
/******/ // add "moreModules" to the modules object,
/******/ // then flag all "chunkIds" as loaded and fire callback
/******/ var moduleId, chunkId, i = 0;
/******/ if(chunkIds.some((id) => (installedChunks[id] !== 0))) {
/******/ for(moduleId in moreModules) {
/******/ if(__webpack_require__.o(moreModules, moduleId)) {
/******/ __webpack_require__.m[moduleId] = moreModules[moduleId];
/******/ }
/******/ }
/******/ if(runtime) var result = runtime(__webpack_require__);
/******/ }
/******/ if(parentChunkLoadingFunction) parentChunkLoadingFunction(data);
/******/ for(;i < chunkIds.length; i++) {
/******/ chunkId = chunkIds[i];
/******/ if(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {
/******/ installedChunks[chunkId][0]();
/******/ }
/******/ installedChunks[chunkId] = 0;
/******/ }
/******/ return __webpack_require__.O(result);
/******/ }
/******/
/******/ var chunkLoadingGlobal = globalThis["webpackChunkwpsi_menu"] = globalThis["webpackChunkwpsi_menu"] || [];
/******/ chunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));
/******/ chunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));
/******/ })();
/******/
/************************************************************************/
/******/
/******/ // startup
/******/ // Load entry module and return exports
/******/ // This entry module depends on other loaded chunks and execution need to be delayed
/******/ var __webpack_exports__ = __webpack_require__.O(undefined, ["./style-index"], () => (__webpack_require__("./src/index.js")))
/******/ __webpack_exports__ = __webpack_require__.O(__webpack_exports__);
/******/
/******/ })()
;
//# sourceMappingURL=index.js.map
(()=>{"use strict";var e,i={487:(e,i,n)=>{const o=window.wp.blocks,t=window.wp.i18n,s=window.wp.blockEditor,l=window.wp.element,r=window.wp.apiFetch;var a=n.n(r);const c=window.wp.components,h=window.wp.primitives,w=window.ReactJSXRuntime,v=(0,w.jsx)(h.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,w.jsx)(h.Path,{d:"M12.5 15v5H11v-5H4V9h7V4h1.5v5h7v6h-7Z"})}),p=(0,w.jsx)(h.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,w.jsx)(h.Path,{d:"M20 11h-5V4H9v7H4v1.5h5V20h6v-7.5h5z"})}),d=(0,w.jsx)(h.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,w.jsx)(h.Path,{d:"M13 5.5H4V4h9v1.5Zm7 7H4V11h16v1.5Zm-7 7H4V18h9v1.5Z"})}),x=(0,w.jsx)(h.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,w.jsx)(h.Path,{d:"M7.5 5.5h9V4h-9v1.5Zm-3.5 7h16V11H4v1.5Zm3.5 7h9V18h-9v1.5Z"})}),u=(0,w.jsx)(h.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,w.jsx)(h.Path,{d:"M11.111 5.5H20V4h-8.889v1.5ZM4 12.5h16V11H4v1.5Zm7.111 7H20V18h-8.889v1.5Z"})}),g=JSON.parse('{"UU":"massivedynamic/wpsi-menu"}');(0,o.registerBlockType)(g.UU,{edit:({attributes:e,setAttributes:i})=>{const[n,o]=(0,l.useState)([]),{alignment:r,orientation:h,exclude:g,openInNewTab:m}=e,j=(0,l.useMemo)((()=>{const e=[];for(const[i,o]of Object.entries(n))e.push({key:i,value:o});return e}),[n]),b=(0,l.useMemo)((()=>j.filter((e=>!g.includes(e.key)))),[j,g]);return(0,l.useEffect)((()=>{a()({path:"/wp-social-icons/items"}).then((e=>{o(e)})).catch((e=>console.error("ERR",e)))}),[]),(0,w.jsxs)("section",{...(0,s.useBlockProps)(),children:[(0,w.jsxs)(s.InspectorControls,{children:[(0,w.jsx)(c.PanelBody,{title:(0,t.__)("Active Services","wpsocialicons"),initialOpen:!0,children:j.map((e=>(0,w.jsx)(c.PanelRow,{children:(0,w.jsx)(c.ToggleControl,{label:(0,w.jsxs)(w.Fragment,{children:[(0,w.jsx)("span",{className:`wpsi-${e.key}`,style:{fontSize:"1.2rem",verticalAlign:"middle",marginRight:"0.5rem"}})," ",(0,w.jsx)("span",{style:{verticalAlign:"middle"},children:e.key})]}),checked:!g.includes(e.key),onChange:()=>{return n=e.key,void i({exclude:g.includes(n)?g.filter((e=>e!==n)):[...g,n]});var n}})})))}),(0,w.jsx)(c.PanelBody,{title:(0,t.__)("Link Behavior","wpsocialicons"),initialOpen:!0,children:(0,w.jsx)(c.PanelRow,{children:(0,w.jsx)(c.ToggleControl,{label:(0,t.__)("Open links in new tab","wpsocialicons"),checked:m,onChange:e=>i({openInNewTab:e})})})})]}),(0,w.jsxs)(s.BlockControls,{children:[(0,w.jsxs)(c.ToolbarGroup,{children:[(0,w.jsx)(c.ToolbarButton,{isActive:"horizontal"===h,icon:v,title:(0,t.__)("align horizontal","wpsocialicons"),onClick:()=>i({orientation:"horizontal"})}),(0,w.jsx)(c.ToolbarButton,{isActive:"vertical"===h,icon:p,title:(0,t.__)("align vertical","wpsocialicons"),onClick:()=>i({orientation:"vertical"})})]}),(0,w.jsxs)(c.ToolbarGroup,{children:[(0,w.jsx)(c.ToolbarButton,{isActive:"left"===r,icon:d,title:(0,t.__)("align left","wpsocialicons"),onClick:()=>i({alignment:"left"})}),(0,w.jsx)(c.ToolbarButton,{isActive:"center"===r,icon:x,title:(0,t.__)("align center","wpsocialicons"),onClick:()=>i({alignment:"center"})}),(0,w.jsx)(c.ToolbarButton,{isActive:"right"===r,icon:u,title:(0,t.__)("align right","wpsocialicons"),onClick:()=>i({alignment:"right"})})]})]}),b.length<1?(0,w.jsx)("section",{children:"No elements"}):(0,w.jsx)("nav",{className:`wpsi-menu ${h} align-${r}`,children:b.map((e=>(0,w.jsx)("a",{href:e.value,children:(0,w.jsx)("span",{className:`wpsi wpsi-${e.key}`})})))})]})}})}},n={};function o(e){var t=n[e];if(void 0!==t)return t.exports;var s=n[e]={exports:{}};return i[e](s,s.exports,o),s.exports}o.m=i,e=[],o.O=(i,n,t,s)=>{if(!n){var l=1/0;for(h=0;h<e.length;h++){for(var[n,t,s]=e[h],r=!0,a=0;a<n.length;a++)(!1&s||l>=s)&&Object.keys(o.O).every((e=>o.O[e](n[a])))?n.splice(a--,1):(r=!1,s<l&&(l=s));if(r){e.splice(h--,1);var c=t();void 0!==c&&(i=c)}}return i}s=s||0;for(var h=e.length;h>0&&e[h-1][2]>s;h--)e[h]=e[h-1];e[h]=[n,t,s]},o.n=e=>{var i=e&&e.__esModule?()=>e.default:()=>e;return o.d(i,{a:i}),i},o.d=(e,i)=>{for(var n in i)o.o(i,n)&&!o.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:i[n]})},o.o=(e,i)=>Object.prototype.hasOwnProperty.call(e,i),(()=>{var e={57:0,350:0};o.O.j=i=>0===e[i];var i=(i,n)=>{var t,s,[l,r,a]=n,c=0;if(l.some((i=>0!==e[i]))){for(t in r)o.o(r,t)&&(o.m[t]=r[t]);if(a)var h=a(o)}for(i&&i(n);c<l.length;c++)s=l[c],o.o(e,s)&&e[s]&&e[s][0](),e[s]=0;return o.O(h)},n=globalThis.webpackChunkwpsi_menu=globalThis.webpackChunkwpsi_menu||[];n.forEach(i.bind(null,0)),n.push=i.bind(null,n.push.bind(n))})();var t=o.O(void 0,[350],(()=>o(487)));t=o.O(t)})();

File diff suppressed because one or more lines are too long

@ -2,10 +2,11 @@
use wpsocialicons\Settings;
["exclude" => $exclude, "orientation" => $orientation, "alignment" => $alignment] = $attributes ?? [];
["exclude" => $exclude, "orientation" => $orientation, "alignment" => $alignment, "openInNewTab" => $openInNewTab] = $attributes ?? [];
$services = array_filter((array) Settings::Services(), fn ($value, $key) => !in_array($key, $exclude), ARRAY_FILTER_USE_BOTH);
the_wp_social_icons([
"exclude" => $exclude,
"container_class" => "wp-social-icons $orientation align-$alignment",
"openInNewTab" => $openInNewTab
]);

@ -1,36 +1 @@
/*!***************************************************************************************************************************************************************************************************************************************!*\
!*** css ./node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[4].use[1]!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[4].use[2]!./node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[4].use[3]!./src/style.scss ***!
\***************************************************************************************************************************************************************************************************************************************/
.wp-block-create-block-wpsi-menu {
background-color: #21759b;
color: #fff;
padding: 2px;
}
nav.wp-social-icons {
display: flex;
padding: 2rem 0;
gap: 2rem;
align-items: center;
}
nav.wp-social-icons > a .wpsi {
font-size: 1.8rem;
}
nav.wp-social-icons.align-center {
justify-content: center;
}
nav.wp-social-icons.align-left {
justify-content: flex-start;
}
nav.wp-social-icons.align-right {
justify-content: flex-end;
}
nav.wp-social-icons.vertical {
flex-direction: column;
}
nav.wp-social-icons.vertical.align-left {
align-items: flex-start;
}
nav.wp-social-icons.vertical.align-right {
align-items: flex-end;
}
.wp-block-create-block-wpsi-menu{background-color:#21759b;color:#fff;padding:2px}nav.wp-social-icons{align-items:center;display:flex;gap:2rem;padding:2rem 0}nav.wp-social-icons>a .wpsi{font-size:1.8rem}nav.wp-social-icons.align-center{justify-content:center}nav.wp-social-icons.align-left{justify-content:flex-start}nav.wp-social-icons.align-right{justify-content:flex-end}nav.wp-social-icons.vertical{flex-direction:column}nav.wp-social-icons.vertical.align-left{align-items:flex-start}nav.wp-social-icons.vertical.align-right{align-items:flex-end}

@ -1,38 +1 @@
/*!***************************************************************************************************************************************************************************************************************************************!*\
!*** css ./node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[4].use[1]!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[4].use[2]!./node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[4].use[3]!./src/style.scss ***!
\***************************************************************************************************************************************************************************************************************************************/
.wp-block-create-block-wpsi-menu {
background-color: #21759b;
color: #fff;
padding: 2px;
}
nav.wp-social-icons {
display: flex;
padding: 2rem 0;
gap: 2rem;
align-items: center;
}
nav.wp-social-icons > a .wpsi {
font-size: 1.8rem;
}
nav.wp-social-icons.align-center {
justify-content: center;
}
nav.wp-social-icons.align-left {
justify-content: flex-start;
}
nav.wp-social-icons.align-right {
justify-content: flex-end;
}
nav.wp-social-icons.vertical {
flex-direction: column;
}
nav.wp-social-icons.vertical.align-left {
align-items: flex-start;
}
nav.wp-social-icons.vertical.align-right {
align-items: flex-end;
}
/*# sourceMappingURL=style-index.css.map*/
.wp-block-create-block-wpsi-menu{background-color:#21759b;color:#fff;padding:2px}nav.wp-social-icons{align-items:center;display:flex;gap:2rem;padding:2rem 0}nav.wp-social-icons>a .wpsi{font-size:1.8rem}nav.wp-social-icons.align-center{justify-content:center}nav.wp-social-icons.align-left{justify-content:flex-start}nav.wp-social-icons.align-right{justify-content:flex-end}nav.wp-social-icons.vertical{flex-direction:column}nav.wp-social-icons.vertical.align-left{align-items:flex-start}nav.wp-social-icons.vertical.align-right{align-items:flex-end}

@ -1 +0,0 @@
{"version":3,"file":"./style-index.css","mappings":";;;AAAA;EACC;EACA;EACA;AACD;;AAEA;EACC;EACA;EACA;EACA;AACD;AAEE;EACC;AAAH;AAIC;EACC;AAFF;AAKC;EACC;AAHF;AAMC;EACC;AAJF;AAOC;EACC;AALF;AAOE;EACC;AALH;AAQE;EACC;AANH,C","sources":["webpack://wpsi-menu/./src/style.scss"],"sourcesContent":[".wp-block-create-block-wpsi-menu {\n\tbackground-color: #21759b;\n\tcolor: #fff;\n\tpadding: 2px;\n}\n\nnav.wp-social-icons {\n\tdisplay: flex;\n\tpadding: 2rem 0;\n\tgap: 2rem;\n\talign-items: center;\n\n\t> a {\n\t\t.wpsi {\n\t\t\tfont-size: 1.8rem;\n\t\t}\n\t}\n\n\t&.align-center {\n\t\tjustify-content: center;\n\t}\n\n\t&.align-left {\n\t\tjustify-content: flex-start;\n\t}\n\n\t&.align-right {\n\t\tjustify-content: flex-end;\n\t}\n\n\t&.vertical {\n\t\tflex-direction: column;\n\n\t\t&.align-left {\n\t\t\talign-items: flex-start;\n\t\t}\n\t\t\n\t\t&.align-right {\n\t\t\talign-items: flex-end;\n\t\t}\n\t}\n}\n"],"names":[],"sourceRoot":""}

@ -2,7 +2,7 @@
"$schema" : "https://schemas.wp.org/trunk/block.json",
"apiVersion" : 3,
"name" : "massivedynamic/wpsi-menu",
"version" : "0.0.1",
"version" : "0.2.0",
"title" : "WP Social Icons Menu",
"category" : "widgets",
"icon" : "networking",
@ -25,9 +25,13 @@
"exclude" : {
"type" : "array",
"default" : []
},
"openInNewTab" : {
"type" : "boolean",
"default" : false
}
},
"textdomain" : "wpsi-menu",
"textdomain" : "wpsocialicons",
"editorScript" : "file:./index.js",
"editorStyle" : "file:./index.css",
"style" : "file:./style-index.css",

@ -34,7 +34,7 @@ import "./editor.scss";
const Edit = ({attributes, setAttributes}) => {
const [items, setItems] = useState([]);
const {alignment, orientation, exclude} = attributes;
const {alignment, orientation, exclude, openInNewTab} = attributes;
const iterator = useMemo(() => {
const out = [];
@ -62,23 +62,28 @@ const Edit = ({attributes, setAttributes}) => {
return (
<section {...useBlockProps()}>
<InspectorControls>
<PanelBody title="Active Services" initialOpen={true}>
<PanelBody title={__("Active Services", "wpsocialicons")} initialOpen={true}>
{iterator.map(item => (
<PanelRow>
<ToggleControl label={<><span className={`wpsi-${item.key}`} style={{fontSize : "1.2rem", verticalAlign : "middle", marginRight : "0.5rem"}}></span> <span style={{verticalAlign : "middle"}}>{item.key}</span></>} checked={!exclude.includes(item.key)} onChange={() => excludeService(item.key)} />
</PanelRow>
))}
</PanelBody>
</PanelBody>
<PanelBody title={__("Link Behavior", "wpsocialicons")} initialOpen={true}>
<PanelRow>
<ToggleControl label={__("Open links in new tab", "wpsocialicons")} checked={openInNewTab} onChange={value => setAttributes({openInNewTab : value})} />
</PanelRow>
</PanelBody>
</InspectorControls>
<BlockControls>
<ToolbarGroup>
<ToolbarButton isActive={orientation === "horizontal"} icon={justifyCenter} onClick={() => setAttributes({ orientation : "horizontal"})} />
<ToolbarButton isActive={orientation === "vertical"} icon={justifyCenterVertical} title="wdwdwd" onClick={() => setAttributes({orientation : "vertical"})} />
<ToolbarButton isActive={orientation === "horizontal"} icon={justifyCenter} title={__("align horizontal", "wpsocialicons")} onClick={() => setAttributes({ orientation : "horizontal"})} />
<ToolbarButton isActive={orientation === "vertical"} icon={justifyCenterVertical} title={__("align vertical", "wpsocialicons")} onClick={() => setAttributes({orientation : "vertical"})} />
</ToolbarGroup>
<ToolbarGroup>
<ToolbarButton isActive={alignment === "left"} icon={alignLeft} title="align left" onClick={() => setAttributes({alignment : "left"})} />
<ToolbarButton isActive={alignment === "center"} icon={alignCenter} title="align center" onClick={() => setAttributes({alignment : "center"})} />
<ToolbarButton isActive={alignment === "right"} icon={alignRight} title="align right" onClick={() => setAttributes({alignment : "right"})} />
<ToolbarButton isActive={alignment === "left"} icon={alignLeft} title={__("align left", "wpsocialicons")} onClick={() => setAttributes({alignment : "left"})} />
<ToolbarButton isActive={alignment === "center"} icon={alignCenter} title={__("align center", "wpsocialicons")} onClick={() => setAttributes({alignment : "center"})} />
<ToolbarButton isActive={alignment === "right"} icon={alignRight} title={__("align right", "wpsocialicons")} onClick={() => setAttributes({alignment : "right"})} />
</ToolbarGroup>
</BlockControls>
{activeItems.length < 1 ?

@ -2,10 +2,11 @@
use wpsocialicons\Settings;
["exclude" => $exclude, "orientation" => $orientation, "alignment" => $alignment] = $attributes ?? [];
["exclude" => $exclude, "orientation" => $orientation, "alignment" => $alignment, "openInNewTab" => $openInNewTab] = $attributes ?? [];
$services = array_filter((array) Settings::Services(), fn ($value, $key) => !in_array($key, $exclude), ARRAY_FILTER_USE_BOTH);
the_wp_social_icons([
"exclude" => $exclude,
"container_class" => "wp-social-icons $orientation align-$alignment",
"openInNewTab" => $openInNewTab
]);

@ -15,7 +15,7 @@ export default function save({attributes}) {
}).catch(error => console.error("ERR", error));
}, []);
*/
const {orientation, alignment} = attributes;
const {orientation, alignment, openInNewTab} = attributes;
const props = useBlockProps.save();
console.log("SAVE PROPS", attributes);

@ -0,0 +1 @@
{"translation-revision-date":"2026-02-02 11:24+0100","generator":"WP-CLI\/2.12.0","source":"javascript\/blocks\/wpsi-menu\/src\/edit.js","domain":"messages","locale_data":{"messages":{"":{"domain":"messages","lang":"de","plural-forms":"nplurals=2; plural=(n != 1);"},"Active Services":["Aktive Dienste"],"Link Behavior":["Linkverhalten"],"Open links in new tab":["Links in neuem Tab \u00f6ffnen"],"align horizontal":["horizontal ausrichten"],"align vertical":["vertikal ausrichten"],"align left":["Links ausrichten"],"align center":["mittig ausrichten"],"align right":["Rechts ausrichten"]}}}

Binary file not shown.

@ -0,0 +1,70 @@
msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-02-02 11:55+0100\n"
"PO-Revision-Date: 2026-02-02 11:55+0100\n"
"Last-Translator: \n"
"Language-Team: \n"
"Language: de\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Poedit 3.8\n"
"X-Poedit-Basepath: ..\n"
"X-Poedit-KeywordsList: __\n"
"X-Poedit-SearchPath-0: src\n"
"X-Poedit-SearchPath-1: javascript\n"
"X-Poedit-SearchPathExcluded-0: javascript/blocks/wpsi-menu/node_modules\n"
#: javascript/blocks/wpsi-menu/src/edit.js:65
msgid "Active Services"
msgstr "Aktive Dienste"
#: javascript/blocks/wpsi-menu/src/edit.js:72
msgid "Link Behavior"
msgstr "Linkverhalten"
#: javascript/blocks/wpsi-menu/src/edit.js:74
msgid "Open links in new tab"
msgstr "Links in neuem Tab öffnen"
#: javascript/blocks/wpsi-menu/src/edit.js:80
msgid "align horizontal"
msgstr "horizontal ausrichten"
#: javascript/blocks/wpsi-menu/src/edit.js:81
msgid "align vertical"
msgstr "vertikal ausrichten"
#: javascript/blocks/wpsi-menu/src/edit.js:84
msgid "align left"
msgstr "Links ausrichten"
#: javascript/blocks/wpsi-menu/src/edit.js:85
msgid "align center"
msgstr "mittig ausrichten"
#: javascript/blocks/wpsi-menu/src/edit.js:86
msgid "align right"
msgstr "Rechts ausrichten"
#: src/Blocks.php:16
msgid "WP Social Icons Menu"
msgstr "WP Social Icons Menü"
#: src/Blocks.php:17
msgid "WP Social Icons Menu Block for Gutenberg"
msgstr "Der WP Social Icons Menüblock für Gutenberg"
#: src/Settings.php:18 src/Settings.php:19
msgid "Social Icons"
msgstr "Social Icons"
#: src/Settings.php:58
msgid ""
"Just add the corresponding URL to your social media account to the field "
"below the service you want to activate."
msgstr ""
"Füge einfach die URL zu deinem respektiven Social Media Account in das "
"Textfeld unter dem Dienst ein, um Ihn zu aktivieren."

@ -3,6 +3,7 @@
namespace wpsocialicons;
use WP_REST_Request;
use wpsocialicons\Plugin;
class Blocks {
public function __construct(private Settings $settings) {
@ -11,7 +12,11 @@ class Blocks {
}
public function registerBlocks() : void {
register_block_type(dirname(__FILE__)."/../javascript/blocks/wpsi-menu/build");
register_block_type(dirname(__FILE__)."/../javascript/blocks/wpsi-menu/build", [
"title" => __("WP Social Icons Menu", "wpsocialicons"),
"description" => __("WP Social Icons Menu Block for Gutenberg", "wpsocialicons")
]);
wp_set_script_translations("massivedynamic-wpsi-menu-editor-script", Plugin::TEXTDOMAIN, dirname(__FILE__)."/../lang");
}
public function registerAPIRoute() : void {

@ -10,7 +10,8 @@ class Frontend {
"after" => "",
"icon_before" => "",
"icon_after" => "",
"exclude" => []
"exclude" => [],
"openInNewTab" => false
];
public function __construct(private Settings $settings) {
add_action("wp_enqueue_scripts", [$this, "enqueueFont"]);
@ -29,7 +30,9 @@ class Frontend {
$iconBefore = $args["icon_before"];
$iconAfter = $args["icon_after"];
$exclude = $args["exclude"];
$openInNewTab = $args["openInNewTab"];
$newTab = $openInNewTab ? " target='_blank'" : "";
$out = "<$container class='$containerClass'>";
$services = Settings::Services();
@ -38,7 +41,7 @@ class Frontend {
continue;
$out .= sprintf(
"$before<a href='%s' class='wp-social-icon-link'>$iconBefore<span class='wpsi wpsi-%s'></span>$iconAfter</a>$after\n",
"$before<a href='%s' class='wp-social-icon-link'$newTab>$iconBefore<span class='wpsi wpsi-%s'></span>$iconAfter</a>$after\n",
$url,
$service
);

@ -8,6 +8,7 @@ use wpsocialicons\Frontend;
use wpsocialicons\Settings;
class Plugin {
const TEXTDOMAIN = "wpsocialicons";
const OPTIONS_KEY = "wpsi-services";
private Backend $backend;
@ -17,7 +18,7 @@ class Plugin {
public readonly array $available;
public function __construct() {
public function __construct(private string $baseName) {
spl_autoload_register([$this, "autoload"]);
$this->loadAvailable();
@ -25,6 +26,12 @@ class Plugin {
$this->backend = new Backend();
$this->blocks = new Blocks($this->settings);
$this->frontend = new Frontend($this->settings);
add_action("init", [$this, "init"], 0);
}
public function init() : void {
load_plugin_textdomain(self::TEXTDOMAIN, false, "$this->baseName/lang");
}
public function autoload(string $className) : void {

@ -54,7 +54,8 @@ class Settings {
}
echo $template->render([
"icons" => $icons
"icons" => $icons,
"description" => __("Just add the corresponding URL to your social media account to the field below the service you want to activate.", "wpsocialicons")
]);
}
@ -70,7 +71,12 @@ class Settings {
// someone needs to do something useful with the information
// submitted. The filter is called
// "wpsi_save_services"
$value = json_decode(html_entity_decode(stripslashes($_POST["services"])));
$value = json_decode(html_entity_decode(stripslashes($_POST["services"])));
// here we delete empty entries, because they should be deactivated
foreach ($value as $key => $url) {
if ($url === "")
unset($value->$key);
}
$services = json_encode(apply_filters("wpsi_save_services", $value));
update_option(Plugin::OPTIONS_KEY, $services);

@ -1,8 +1,7 @@
<section class=wrap>
<h1>WP Social Icons</h1>
<p>
Just add the corresponding URL to your social media account to the
field below the service you want to activate.
{{description}}
</p>
<section class="wpsi-icons">
{{icons}}

@ -7,11 +7,11 @@
* License: MIT
* Text Domain: wpsocialicons
* Domain Path: /lang
* Version: 0.0.1
* Version: 0.2.0
*/
require_once("src/Plugin.php");
use wpsocialicons\Plugin;
new Plugin;
new Plugin(dirname(plugin_basename( __FILE__ )));
Loading…
Cancel
Save