Compare commits

...

11 Commits

46 changed files with 12055 additions and 88 deletions

View File

@ -0,0 +1,18 @@
# This file is for unifying the coding style for different editors and IDEs
# editorconfig.org
# WordPress Coding Standards
# https://make.wordpress.org/core/handbook/coding-standards/
root = true
[*]
charset = utf-8
end_of_line = lf
insert_final_newline = true
trim_trailing_whitespace = true
indent_style = tab
[*.{yml,yaml}]
indent_style = space
indent_size = 2

30
blocks/explainer-screen/.gitignore vendored Normal file
View File

@ -0,0 +1,30 @@
# Logs
logs
*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*
# Coverage directory used by tools like istanbul
coverage
# Compiled binary addons (https://nodejs.org/api/addons.html)
build/Release
# Dependency directories
node_modules/
# Optional npm cache directory
.npm
# Optional eslint cache
.eslintcache
# Output of `npm pack`
*.tgz
# Output of `wp-scripts plugin-zip`
*.zip
# dotenv environment variables file
.env

View File

@ -0,0 +1,17 @@
{
"$schema": "https://schemas.wp.org/trunk/block.json",
"apiVersion": 2,
"name": "homegrade-content-blocks/explainer-screen",
"version": "0.1.0",
"title": "Écran Explicatif",
"category": "homegrade-blocks",
"icon": "smiley",
"description": "Un bloc pour expliquer un écran ou une sérier d'écran afin d'accompagner l'utilisateur dans une démarche",
"supports": {
"html": false
},
"textdomain": "homegrade-blocks",
"editorScript": "file:./index.js",
"editorStyle": "file:./index.css",
"style": "file:./style-index.css"
}

View File

@ -0,0 +1 @@
<?php return array('dependencies' => array('react', 'wp-block-editor', 'wp-blocks', 'wp-i18n'), 'version' => '383126b56e7d6fa643a6');

View File

@ -0,0 +1,13 @@
/*!***********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
!*** css ./node_modules/.pnpm/css-loader@6.10.0_webpack@5.90.3/node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[4].use[1]!./node_modules/.pnpm/postcss-loader@6.2.1_postcss@8.4.35_webpack@5.90.3/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[4].use[2]!./node_modules/.pnpm/sass-loader@12.6.0_sass@1.71.1_webpack@5.90.3/node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[4].use[3]!./src/editor.scss ***!
\***********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
/**
* The following styles get applied inside the editor only.
*
* Replace them with your own styles or remove the file completely.
*/
.wp-block-create-block-multiblocks {
border: 1px dotted #f00;
}
/*# sourceMappingURL=index.css.map*/

View File

@ -0,0 +1,360 @@
/******/ (() => { // webpackBootstrap
/******/ "use strict";
/******/ var __webpack_modules__ = ({
/***/ "./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": () => (/* binding */ Edit)
/* harmony export */ });
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var _wordpress_i18n__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n");
/* harmony import */ var _wordpress_i18n__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_1__);
/* harmony import */ var _editor_scss__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./editor.scss */ "./src/editor.scss");
/* harmony import */ var _wordpress_block_editor__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @wordpress/block-editor */ "@wordpress/block-editor");
/* harmony import */ var _wordpress_block_editor__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_wordpress_block_editor__WEBPACK_IMPORTED_MODULE_3__);
function Edit() {
return (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", {
...(0,_wordpress_block_editor__WEBPACK_IMPORTED_MODULE_3__.useBlockProps)({
className: `homegrade-blocks-explainer-screen`
})
}, (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)(_wordpress_block_editor__WEBPACK_IMPORTED_MODULE_3__.InnerBlocks, {
template: [["core/paragraph", {
content: "Étape 1",
className: "homegrade-blocks-explainer-screen__step-position"
}], ["core/heading", {
level: 3,
className: "homegrade-blocks-explainer-screen__step-title",
content: "Titre de l'étape"
}], ["core/paragraph", {
content: "Prow scuttle parrel provost Sail ho shrouds spirits boom mizzenmast yardarm. Pinnace holystone mizzenmast quarter crow's nest nipperkin grog yardarm hempen halter furl. Swab barque interloper chantey doubloon starboard grog black jack gangway rutters."
}], ["homegrade-content-blocks/focused-schema"]],
allowedBlocks: ["core/title", "core/paragraph", "homegrade-content-blocks/focused-schema", "core/button"],
renderAppender: () => (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)(_wordpress_block_editor__WEBPACK_IMPORTED_MODULE_3__.BlockControls, null, (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)("button", {
className: "wp-block-button__button is-primary"
}, (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_1__.__)("Add a newwwww block", "multiblocks")))
}));
}
/***/ }),
/***/ "./src/index.js":
/*!**********************!*\
!*** ./src/index.js ***!
\**********************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var _wordpress_blocks__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @wordpress/blocks */ "@wordpress/blocks");
/* harmony import */ var _wordpress_blocks__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_wordpress_blocks__WEBPACK_IMPORTED_MODULE_1__);
/* harmony import */ var _style_scss__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./style.scss */ "./src/style.scss");
/* harmony import */ var _edit__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./edit */ "./src/edit.js");
/* harmony import */ var _save__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./save */ "./src/save.js");
/* harmony import */ var _block_json__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./block.json */ "./src/block.json");
(0,_wordpress_blocks__WEBPACK_IMPORTED_MODULE_1__.registerBlockType)(_block_json__WEBPACK_IMPORTED_MODULE_5__.name, {
icon: {
src: (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)("svg", {
xmlns: "http://www.w3.org/2000/svg",
viewBox: "0 0 65.7 55.5"
}, (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)("g", {
id: "Calque_1-2"
}, (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)("path", {
d: "M24.1,29h3.3c.3,1.4,1.5,2.4,3,2.4s3.1-1.4,3.1-3.1-1.4-3.1-3.1-3.1-2.7,1-3,2.4h-3.3c-3,0-5.5,2.5-5.5,5.5s2.5,5.5,5.5,5.5h10.6l-1.5,1.5,1,1,3.2-3.2-3.2-3.2-1,1,1.5,1.5h-10.6c-2.3,0-4.1-1.9-4.1-4.2s1.9-4.1,4.1-4.1ZM36.8,21.8c1.4,0,2.7-1,3-2.4h1.5c2.3,0,4.1,1.9,4.1,4.2s-1.9,4.1-4.1,4.1h-4.4l1.5-1.5-1-1-3.2,3.2,3.2,3.2,1-1-1.5-1.5h4.4c3,0,5.5-2.5,5.5-5.5s-2.5-5.5-5.6-5.5h-1.5c-.3-1.4-1.5-2.4-3-2.4s-3.1,1.4-3.1,3.1,1.4,3.1,3.1,3.1ZM1.8,17.1c1,0,1.8-.8,1.8-1.8V5.5c0-1,.8-1.8,1.8-1.8h9.7c1,0,1.8-.8,1.8-1.8s-.8-1.8-1.8-1.8H5.5C2.5,0,0,2.5,0,5.5v9.7c0,1,.8,1.8,1.8,1.8ZM21.3,21.8c1.4,0,2.7-1,3-2.4h5.9l-1.5,1.5,1,1,3.2-3.2-3.2-3.2-1,1,1.5,1.5h-5.8c-.3-1.4-1.5-2.4-3-2.4s-3.1,1.4-3.1,3.1c0,1.7,1.4,3.1,3,3.1ZM41.3,34.9c-1.7,0-3.1,1.4-3.1,3.1s1.4,3.1,3.1,3.1,3.1-1.4,3.1-3.1-1.4-3.1-3.1-3.1ZM63.8,38.4c-1,0-1.8.8-1.8,1.8v9.7c0,1-.8,1.8-1.8,1.8h-9.7c-1,0-1.8.8-1.8,1.8s.8,1.8,1.8,1.8h9.7c3.1,0,5.5-2.5,5.5-5.5v-9.7c0-1-.8-1.8-1.8-1.8ZM60.1,0h-9.7c-1,0-1.8.8-1.8,1.8s.8,1.8,1.8,1.8h9.7c1,0,1.8.8,1.8,1.8v9.7c0,1,.8,1.8,1.8,1.8s1.8-.8,1.8-1.8V5.5c0-3.1-2.5-5.5-5.5-5.5ZM9.3,17.4v20.7c0,4.2,3.4,7.7,7.7,7.7h31.7c4.2,0,7.7-3.4,7.7-7.7v-20.7c0-4.2-3.4-7.7-7.7-7.7h-31.7c-4.2,0-7.7,3.4-7.7,7.7ZM13.3,24s0,0,0,0v-6.5c0-2,1.7-3.7,3.7-3.7h31.7c2,0,3.7,1.7,3.7,3.7v20.7c0,2-1.7,3.7-3.7,3.7h-31.7c-2,0-3.7-1.7-3.7-3.7v-14.1ZM15.3,51.8H5.5c-1,0-1.8-.8-1.8-1.8v-9.7c0-1-.8-1.8-1.8-1.8s-1.8.8-1.8,1.8v9.7c0,3.1,2.5,5.5,5.5,5.5h9.7c1,0,1.8-.8,1.8-1.8s-.8-1.8-1.8-1.8Z"
}))),
foreground: "#DF1E1E"
},
edit: _edit__WEBPACK_IMPORTED_MODULE_3__["default"],
save: _save__WEBPACK_IMPORTED_MODULE_4__["default"]
});
/***/ }),
/***/ "./src/save.js":
/*!*********************!*\
!*** ./src/save.js ***!
\*********************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ "default": () => (/* binding */ save)
/* harmony export */ });
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__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__);
function save({
attributes
}) {
return (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", {
..._wordpress_block_editor__WEBPACK_IMPORTED_MODULE_1__.useBlockProps.save({
className: `homegrade-blocks-explainer-screen`
})
}, (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)(_wordpress_block_editor__WEBPACK_IMPORTED_MODULE_1__.InnerBlocks.Content, null));
}
/***/ }),
/***/ "./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/style.scss":
/*!************************!*\
!*** ./src/style.scss ***!
\************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
__webpack_require__.r(__webpack_exports__);
// extracted by mini-css-extract-plugin
/***/ }),
/***/ "react":
/*!************************!*\
!*** external "React" ***!
\************************/
/***/ ((module) => {
module.exports = window["React"];
/***/ }),
/***/ "@wordpress/block-editor":
/*!*************************************!*\
!*** external ["wp","blockEditor"] ***!
\*************************************/
/***/ ((module) => {
module.exports = window["wp"]["blockEditor"];
/***/ }),
/***/ "@wordpress/blocks":
/*!********************************!*\
!*** external ["wp","blocks"] ***!
\********************************/
/***/ ((module) => {
module.exports = window["wp"]["blocks"];
/***/ }),
/***/ "@wordpress/i18n":
/*!******************************!*\
!*** external ["wp","i18n"] ***!
\******************************/
/***/ ((module) => {
module.exports = window["wp"]["i18n"];
/***/ }),
/***/ "./src/block.json":
/*!************************!*\
!*** ./src/block.json ***!
\************************/
/***/ ((module) => {
module.exports = /*#__PURE__*/JSON.parse('{"$schema":"https://schemas.wp.org/trunk/block.json","apiVersion":2,"name":"homegrade-content-blocks/explainer-screen","version":"0.1.0","title":"Écran Explicatif","category":"homegrade-blocks","icon":"smiley","description":"Un bloc pour expliquer un écran ou une sérier d\'écran afin d\'accompagner l\'utilisateur dans une démarche","supports":{"html":false},"textdomain":"homegrade-blocks","editorScript":"file:./index.js","editorStyle":"file:./index.css","style":"file:./style-index.css"}');
/***/ })
/******/ });
/************************************************************************/
/******/ // 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["webpackChunkmultiblocks"] = globalThis["webpackChunkmultiblocks"] || [];
/******/ 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

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,16 @@
/*!**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
!*** css ./node_modules/.pnpm/css-loader@6.10.0_webpack@5.90.3/node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[4].use[1]!./node_modules/.pnpm/postcss-loader@6.2.1_postcss@8.4.35_webpack@5.90.3/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[4].use[2]!./node_modules/.pnpm/sass-loader@12.6.0_sass@1.71.1_webpack@5.90.3/node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[4].use[3]!./src/style.scss ***!
\**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
/**
* The following styles get applied both on the front of your site
* and in the editor.
*
* Replace them with your own styles or remove the file completely.
*/
.wp-block-create-block-multiblocks {
background-color: #21759b;
color: #fff;
padding: 2px;
}
/*# sourceMappingURL=style-index.css.map*/

View File

@ -0,0 +1,20 @@
{
"name": "multiblocks",
"version": "0.1.0",
"description": "Example block scaffolded with Create Block tool.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
"main": "build/index.js",
"scripts": {
"build": "wp-scripts build",
"format": "wp-scripts format",
"lint:css": "wp-scripts lint-style",
"lint:js": "wp-scripts lint-js",
"packages-update": "wp-scripts packages-update",
"plugin-zip": "wp-scripts plugin-zip",
"start": "wp-scripts start"
},
"devDependencies": {
"@wordpress/scripts": "^26.9.0"
}
}

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,17 @@
{
"$schema": "https://schemas.wp.org/trunk/block.json",
"apiVersion": 2,
"name": "homegrade-content-blocks/explainer-screen",
"version": "0.1.0",
"title": "Écran Explicatif",
"category": "homegrade-blocks",
"icon": "smiley",
"description": "Un bloc pour expliquer un écran ou une sérier d'écran afin d'accompagner l'utilisateur dans une démarche",
"supports": {
"html": false
},
"textdomain": "homegrade-blocks",
"editorScript": "file:./index.js",
"editorStyle": "file:./index.css",
"style": "file:./style-index.css"
}

View File

@ -0,0 +1,62 @@
import { __ } from "@wordpress/i18n";
import "./editor.scss";
import {
useBlockProps,
RichText,
BlockControls,
} from "@wordpress/block-editor";
import { InnerBlocks } from "@wordpress/block-editor";
export default function Edit() {
return (
<div
{...useBlockProps({
className: `homegrade-blocks-explainer-screen`,
})}
>
<InnerBlocks
template={[
[
"core/paragraph",
{
content: "Étape 1",
className: "homegrade-blocks-explainer-screen__step-position",
},
],
[
"core/heading",
{
level: 3,
className: "homegrade-blocks-explainer-screen__step-title",
content: "Titre de l'étape",
},
],
[
"core/paragraph",
{
content:
"Prow scuttle parrel provost Sail ho shrouds spirits boom mizzenmast yardarm. Pinnace holystone mizzenmast quarter crow's nest nipperkin grog yardarm hempen halter furl. Swab barque interloper chantey doubloon starboard grog black jack gangway rutters.",
},
],
["homegrade-content-blocks/focused-schema"],
]}
allowedBlocks={[
"core/title",
"core/paragraph",
"homegrade-content-blocks/focused-schema",
"core/button",
]}
renderAppender={() => (
<BlockControls>
<button className="wp-block-button__button is-primary">
{__("Add a newwwww block", "multiblocks")}
</button>
</BlockControls>
)}
/>
</div>
);
}

View File

@ -0,0 +1,9 @@
/**
* The following styles get applied inside the editor only.
*
* Replace them with your own styles or remove the file completely.
*/
.wp-block-create-block-multiblocks {
border: 1px dotted #f00;
}

View File

@ -0,0 +1,21 @@
import { registerBlockType } from "@wordpress/blocks";
import "./style.scss";
import Edit from "./edit";
import save from "./save";
import metadata from "./block.json";
registerBlockType(metadata.name, {
icon: {
src: (
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 65.7 55.5">
<g id="Calque_1-2">
<path d="M24.1,29h3.3c.3,1.4,1.5,2.4,3,2.4s3.1-1.4,3.1-3.1-1.4-3.1-3.1-3.1-2.7,1-3,2.4h-3.3c-3,0-5.5,2.5-5.5,5.5s2.5,5.5,5.5,5.5h10.6l-1.5,1.5,1,1,3.2-3.2-3.2-3.2-1,1,1.5,1.5h-10.6c-2.3,0-4.1-1.9-4.1-4.2s1.9-4.1,4.1-4.1ZM36.8,21.8c1.4,0,2.7-1,3-2.4h1.5c2.3,0,4.1,1.9,4.1,4.2s-1.9,4.1-4.1,4.1h-4.4l1.5-1.5-1-1-3.2,3.2,3.2,3.2,1-1-1.5-1.5h4.4c3,0,5.5-2.5,5.5-5.5s-2.5-5.5-5.6-5.5h-1.5c-.3-1.4-1.5-2.4-3-2.4s-3.1,1.4-3.1,3.1,1.4,3.1,3.1,3.1ZM1.8,17.1c1,0,1.8-.8,1.8-1.8V5.5c0-1,.8-1.8,1.8-1.8h9.7c1,0,1.8-.8,1.8-1.8s-.8-1.8-1.8-1.8H5.5C2.5,0,0,2.5,0,5.5v9.7c0,1,.8,1.8,1.8,1.8ZM21.3,21.8c1.4,0,2.7-1,3-2.4h5.9l-1.5,1.5,1,1,3.2-3.2-3.2-3.2-1,1,1.5,1.5h-5.8c-.3-1.4-1.5-2.4-3-2.4s-3.1,1.4-3.1,3.1c0,1.7,1.4,3.1,3,3.1ZM41.3,34.9c-1.7,0-3.1,1.4-3.1,3.1s1.4,3.1,3.1,3.1,3.1-1.4,3.1-3.1-1.4-3.1-3.1-3.1ZM63.8,38.4c-1,0-1.8.8-1.8,1.8v9.7c0,1-.8,1.8-1.8,1.8h-9.7c-1,0-1.8.8-1.8,1.8s.8,1.8,1.8,1.8h9.7c3.1,0,5.5-2.5,5.5-5.5v-9.7c0-1-.8-1.8-1.8-1.8ZM60.1,0h-9.7c-1,0-1.8.8-1.8,1.8s.8,1.8,1.8,1.8h9.7c1,0,1.8.8,1.8,1.8v9.7c0,1,.8,1.8,1.8,1.8s1.8-.8,1.8-1.8V5.5c0-3.1-2.5-5.5-5.5-5.5ZM9.3,17.4v20.7c0,4.2,3.4,7.7,7.7,7.7h31.7c4.2,0,7.7-3.4,7.7-7.7v-20.7c0-4.2-3.4-7.7-7.7-7.7h-31.7c-4.2,0-7.7,3.4-7.7,7.7ZM13.3,24s0,0,0,0v-6.5c0-2,1.7-3.7,3.7-3.7h31.7c2,0,3.7,1.7,3.7,3.7v20.7c0,2-1.7,3.7-3.7,3.7h-31.7c-2,0-3.7-1.7-3.7-3.7v-14.1ZM15.3,51.8H5.5c-1,0-1.8-.8-1.8-1.8v-9.7c0-1-.8-1.8-1.8-1.8s-1.8.8-1.8,1.8v9.7c0,3.1,2.5,5.5,5.5,5.5h9.7c1,0,1.8-.8,1.8-1.8s-.8-1.8-1.8-1.8Z" />
</g>
</svg>
),
foreground: "#DF1E1E",
},
edit: Edit,
save,
});

View File

@ -0,0 +1,14 @@
import { useBlockProps } from "@wordpress/block-editor";
import { InnerBlocks } from "@wordpress/block-editor";
export default function save({ attributes }) {
return (
<div
{...useBlockProps.save({
className: `homegrade-blocks-explainer-screen`,
})}
>
<InnerBlocks.Content />
</div>
);
}

View File

@ -0,0 +1,12 @@
/**
* The following styles get applied both on the front of your site
* and in the editor.
*
* Replace them with your own styles or remove the file completely.
*/
.wp-block-create-block-multiblocks {
background-color: #21759b;
color: #fff;
padding: 2px;
}

View File

@ -3,7 +3,7 @@
"apiVersion": 2,
"name": "homegrade-content-blocks/labelled-picture",
"version": "0.1.0",
"title": "Image + Légende Autocollante",
"title": "Image + Légende",
"category": "homegrade-blocks",
"icon": "smiley",
"description": "Bloc image contenant une légende autocollante",
@ -15,9 +15,36 @@
"editorStyle": "file:./index.css",
"style": "file:./style-index.css",
"attributes": {
"hasStickyLegend": {
"type": "boolean",
"default": "true"
},
"legendLocation": {
"type": "string",
"default": "after"
},
"hasLightbox": {
"type": "boolean",
"default": "false"
},
"hasRoundedShadow": {
"type": "boolean",
"default": "false"
},
"hasFixedHeight": {
"type": "boolean",
"default": "true"
},
"showTitle": {
"type": "boolean",
"default": "true"
},
"pictureUrl": {
"type": "string"
},
"pictureTitle": {
"type": "string"
},
"pictureAlt": {
"type": "string"
},

View File

@ -1 +1 @@
<?php return array('dependencies' => array('wp-block-editor', 'wp-blocks', 'wp-components', 'wp-element', 'wp-i18n', 'wp-primitives'), 'version' => '49e83b88e7e47ccb671c');
<?php return array('dependencies' => array('react', 'wp-block-editor', 'wp-blocks', 'wp-components', 'wp-element', 'wp-i18n', 'wp-primitives'), 'version' => 'bc58aa87b993f5997c0d');

View File

@ -1,4 +1,4 @@
/*!****************************************************************************************************************************************************************************************************************************************!*\
!*** 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 ***!
\****************************************************************************************************************************************************************************************************************************************/
/*!***********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
!*** css ./node_modules/.pnpm/css-loader@6.10.0_webpack@5.90.3/node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[4].use[1]!./node_modules/.pnpm/postcss-loader@6.2.1_postcss@8.4.35_webpack@5.90.3/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[4].use[2]!./node_modules/.pnpm/sass-loader@12.6.0_sass@1.71.1_webpack@5.90.3/node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[4].use[3]!./src/editor.scss ***!
\***********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/

View File

@ -12,8 +12,8 @@ __webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ "default": () => (/* binding */ Edit)
/* harmony export */ });
/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @wordpress/element */ "@wordpress/element");
/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var _wordpress_i18n__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n");
/* harmony import */ var _wordpress_i18n__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_1__);
/* harmony import */ var _editor_scss__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./editor.scss */ "./src/editor.scss");
@ -36,9 +36,16 @@ function Edit({
noticeUI
}) {
const {
hasStickyLegend,
hasLightbox,
legendLocation,
hasFixedHeight,
hasRoundedShadow,
showTitle,
pictureUrl,
pictureAlt,
pictureId,
pictureTitle,
pictureCaption
} = attributes;
function removePictureImg() {
@ -50,10 +57,12 @@ function Edit({
});
}
function updatePictureImg(image) {
console.log(image);
if (!image || !image.url) {
removePictureImg();
}
setAttributes({
pictureTitle: image.title,
pictureUrl: image.url,
pictureId: image.id,
pictureAlt: image.alt,
@ -64,35 +73,108 @@ function Edit({
noticeOperations.removeAllNotices();
noticeOperations.createErrorNotice(message);
}
return (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.Fragment, null, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)(_wordpress_block_editor__WEBPACK_IMPORTED_MODULE_3__.InspectorControls, null, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)(_wordpress_components__WEBPACK_IMPORTED_MODULE_4__.PanelBody, {
function handleHasStickyLegend(hasStickyLegend) {
setAttributes({
hasStickyLegend
});
}
function handleHasFixedHeight(hasFixedHeight) {
setAttributes({
hasFixedHeight
});
}
function handleShowTitle(showTitle) {
setAttributes({
showTitle
});
}
function handleHasRoundedShadow(hasRoundedShadow) {
setAttributes({
hasRoundedShadow
});
}
function handleLegendLocationChange(legendLocation) {
setAttributes({
legendLocation
});
}
function handleHasLightbox(hasLightbox) {
setAttributes({
hasLightbox
});
}
const renderCaption = () => (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)("figcaption", null, showTitle && pictureTitle && (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)("span", {
className: "figcaption-title"
}, pictureTitle), " ", pictureCaption);
return (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)(react__WEBPACK_IMPORTED_MODULE_0__.Fragment, null, (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)(_wordpress_block_editor__WEBPACK_IMPORTED_MODULE_3__.InspectorControls, null, (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)(_wordpress_components__WEBPACK_IMPORTED_MODULE_4__.PanelBody, {
title: "Param\xE8tres",
className: "homegrade-blocks-components-image__panel-body "
}, (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)(_wordpress_components__WEBPACK_IMPORTED_MODULE_4__.ToggleControl, {
label: "L\xE9gende Autocollante",
checked: hasStickyLegend,
onChange: handleHasStickyLegend,
help: "Coch\xE9, la l\xE9gende sera ajout\xE9 sur un bandeau au dessus de l'image"
}), (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)(_wordpress_components__WEBPACK_IMPORTED_MODULE_4__.ToggleControl, {
label: "Hauteur de l'image Fixed",
checked: hasFixedHeight,
onChange: handleHasFixedHeight,
help: "Coch\xE9, la hauteur de l'image est fixe"
}), (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)(_wordpress_components__WEBPACK_IMPORTED_MODULE_4__.ToggleControl, {
label: "Afficher le titre",
checked: showTitle,
onChange: handleShowTitle
}), (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)(_wordpress_components__WEBPACK_IMPORTED_MODULE_4__.ToggleControl, {
label: "Rounded & Shadow",
checked: hasRoundedShadow,
onChange: handleHasRoundedShadow
}), (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)(_wordpress_components__WEBPACK_IMPORTED_MODULE_4__.ToggleControl, {
label: "Afficher une lightbox",
checked: hasLightbox,
onChange: handleHasLightbox
}), (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)(_wordpress_components__WEBPACK_IMPORTED_MODULE_4__.__experimentalToggleGroupControl, {
label: "Emplacement de la l\xE9gende",
value: "before",
onChange: handleLegendLocationChange,
isBlock: true,
__nextHasNoMarginBottom: true
}, (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)(_wordpress_components__WEBPACK_IMPORTED_MODULE_4__.__experimentalToggleGroupControlOption, {
value: "before",
label: "Avant l'Image"
}), (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)(_wordpress_components__WEBPACK_IMPORTED_MODULE_4__.__experimentalToggleGroupControlOption, {
value: "after",
label: "Apr\xE8s l'image"
}))), (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)(_wordpress_components__WEBPACK_IMPORTED_MODULE_4__.PanelBody, {
title: "Source de l'image",
className: "homegrade-blocks-components-image__panel-body "
}, pictureUrl && (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("img", {
}, pictureUrl && (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)("img", {
src: pictureUrl,
alt: pictureAlt
}), (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", {
}), (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", {
className: "media-replace-container"
}, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)(_wordpress_block_editor__WEBPACK_IMPORTED_MODULE_3__.MediaReplaceFlow, {
}, (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)(_wordpress_block_editor__WEBPACK_IMPORTED_MODULE_3__.MediaReplaceFlow, {
mediaId: pictureId,
mediaUrl: pictureUrl,
allowedTypes: ["image"],
accept: "image/*",
onSelect: updatePictureImg,
name: !pictureUrl ? (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_1__.__)("Ajouter", "homegrade-blocks__texte-backoffice") : (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_1__.__)("Remplacer", "homegrade-blocks__texte-backoffice")
}), pictureUrl && (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", null, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)(_wordpress_components__WEBPACK_IMPORTED_MODULE_4__.Button, {
}), pictureUrl && (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", null, (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)(_wordpress_components__WEBPACK_IMPORTED_MODULE_4__.Button, {
className: "custom-flow-button",
variant: "primary",
icon: _wordpress_icons__WEBPACK_IMPORTED_MODULE_5__["default"],
label: "Supprimer",
onClick: removePictureImg
}))), (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)(_wordpress_components__WEBPACK_IMPORTED_MODULE_4__.Tip, null, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("p", null, "Le texte de votre L\xE9gende est automatiquement attribu\xE9 depuis le champ \"L\xE9gende\" de votre image dans la gallerie des m\xE9dias")))), (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", null, pictureUrl && (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("figure", {
}))), (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)(_wordpress_components__WEBPACK_IMPORTED_MODULE_4__.Tip, null, (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)("p", null, "Le texte de votre L\xE9gende est automatiquement attribu\xE9 depuis le champ \"L\xE9gende\" de votre image dans la gallerie des m\xE9dias")))), (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", null, pictureUrl && (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)("figure", {
...(0,_wordpress_block_editor__WEBPACK_IMPORTED_MODULE_3__.useBlockProps)({
className: `homegrade-blocks-labelled-picture`
className: `homegrade-blocks-labelled-picture homegrade-blocks-labelled-picture--legend-${hasStickyLegend ? "sticky" : "normal"}
${hasFixedHeight ? "homegrade-blocks-labelled-picture--fixed-height" : ""}
${showTitle && pictureTitle ? "homegrade-blocks-labelled-picture--legend-has-title" : ""}
${hasRoundedShadow ? "homegrade-blocks-labelled-picture--rounded-shadow" : ""}`
})
}, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("img", {
}, legendLocation === "before" && renderCaption(), (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)("img", {
src: pictureUrl,
alt: pictureAlt
}), (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("figcaption", null, pictureCaption)), !pictureUrl && (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)(_wordpress_block_editor__WEBPACK_IMPORTED_MODULE_3__.MediaPlaceholder, {
}), legendLocation === "after" && renderCaption()), !pictureUrl && (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)(_wordpress_block_editor__WEBPACK_IMPORTED_MODULE_3__.MediaPlaceholder, {
disableMediaButtons: pictureUrl,
icon: "admin-appearance",
onSelect: updatePictureImg,
@ -115,8 +197,8 @@ function Edit({
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @wordpress/element */ "@wordpress/element");
/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var _wordpress_blocks__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @wordpress/blocks */ "@wordpress/blocks");
/* harmony import */ var _wordpress_blocks__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_wordpress_blocks__WEBPACK_IMPORTED_MODULE_1__);
/* harmony import */ var _style_scss__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./style.scss */ "./src/style.scss");
@ -131,15 +213,15 @@ __webpack_require__.r(__webpack_exports__);
(0,_wordpress_blocks__WEBPACK_IMPORTED_MODULE_1__.registerBlockType)(_block_json__WEBPACK_IMPORTED_MODULE_5__.name, {
icon: {
src: (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("svg", {
src: (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)("svg", {
id: "Calque_2",
"data-name": "Calque 2",
xmlns: "http://www.w3.org/2000/svg",
viewBox: "0 0 28 28"
}, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("g", {
}, (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)("g", {
id: "Calque_1-2",
"data-name": "Calque 1"
}, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("path", {
}, (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)("path", {
class: "cls-1",
d: "m1.56,27.15c.68.53,1.52.85,2.44.85h12.29l-7.79-7.79-6.94,6.94Zm12.65-2.65l3.5,3.5h2.29c1.18,0,2.23-.52,2.96-1.33l-5.46-5.46-3.29,3.29Zm-.21-7.5c-.55,0-1,.45-1,1s.45,1,1,1,1-.45,1-1-.45-1-1-1Zm6-5H4c-2.21,0-4,1.79-4,4v8c0,.92.33,1.76.85,2.44l7.29-7.29c.2-.2.51-.2.71,0l4.65,4.65,3.65-3.65c.2-.2.51-.2.71,0l5.68,5.68c.29-.55.46-1.17.46-1.83v-8c0-2.21-1.79-4-4-4Zm-6,8c-1.1,0-2-.9-2-2s.9-2,2-2,2,.9,2,2-.9,2-2,2ZM26,0h-8c-1.1,0-2,.9-2,2v4c0,1.1.9,2,2,2h1v2.5c0,.2.12.38.31.46.06.03.13.04.19.04.13,0,.26-.05.35-.15l2.85-2.85h3.29c1.1,0,2-.9,2-2V2c0-1.1-.9-2-2-2Z"
}))),
@ -161,8 +243,8 @@ __webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ "default": () => (/* binding */ save)
/* harmony export */ });
/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @wordpress/element */ "@wordpress/element");
/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__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__);
@ -171,19 +253,33 @@ function save({
attributes
}) {
const {
hasStickyLegend,
hasLightbox,
legendLocation,
hasFixedHeight,
hasRoundedShadow,
showTitle,
pictureUrl,
pictureAlt,
pictureId,
pictureTitle,
pictureCaption
} = attributes;
return (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.Fragment, null, pictureUrl && (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("figure", {
const renderCaption = () => (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)("figcaption", null, showTitle && pictureTitle && (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)("span", {
className: "figcaption-title"
}, pictureTitle), " ", pictureCaption);
return (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)(react__WEBPACK_IMPORTED_MODULE_0__.Fragment, null, pictureUrl && (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)("figure", {
..._wordpress_block_editor__WEBPACK_IMPORTED_MODULE_1__.useBlockProps.save({
className: `homegrade-blocks-labelled-picture`
className: `homegrade-blocks-labelled-picture homegrade-blocks-labelled-picture--legend-${hasStickyLegend ? "sticky" : "normal"} ${hasFixedHeight ? "homegrade-blocks-labelled-picture--fixed-height" : ""}
${showTitle && pictureTitle ? "homegrade-blocks-labelled-picture--legend-has-title" : ""}
${hasRoundedShadow ? "homegrade-blocks-labelled-picture--rounded-shadow" : ""}
${hasLightbox ? "singleLightbox-link" : ""}
`
})
}, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("img", {
}, legendLocation === "before" && renderCaption(), (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)("img", {
src: pictureUrl,
alt: pictureAlt
}), (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("figcaption", null, pictureCaption)));
}), legendLocation === "after" && renderCaption()));
}
/***/ }),
@ -243,6 +339,16 @@ const trash = (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)(
/***/ }),
/***/ "react":
/*!************************!*\
!*** external "React" ***!
\************************/
/***/ ((module) => {
module.exports = window["React"];
/***/ }),
/***/ "@wordpress/block-editor":
/*!*************************************!*\
!*** external ["wp","blockEditor"] ***!
@ -309,7 +415,7 @@ module.exports = window["wp"]["primitives"];
\************************/
/***/ ((module) => {
module.exports = JSON.parse('{"$schema":"https://schemas.wp.org/trunk/block.json","apiVersion":2,"name":"homegrade-content-blocks/labelled-picture","version":"0.1.0","title":"Image + Légende Autocollante","category":"homegrade-blocks","icon":"smiley","description":"Bloc image contenant une légende autocollante","supports":{"html":false},"textdomain":"homegrade-blocks","editorScript":"file:./index.js","editorStyle":"file:./index.css","style":"file:./style-index.css","attributes":{"pictureUrl":{"type":"string"},"pictureAlt":{"type":"string"},"pictureId":{"type":"number"},"pictureCaption":{"type":"string"}}}');
module.exports = /*#__PURE__*/JSON.parse('{"$schema":"https://schemas.wp.org/trunk/block.json","apiVersion":2,"name":"homegrade-content-blocks/labelled-picture","version":"0.1.0","title":"Image + Légende","category":"homegrade-blocks","icon":"smiley","description":"Bloc image contenant une légende autocollante","supports":{"html":false},"textdomain":"homegrade-blocks","editorScript":"file:./index.js","editorStyle":"file:./index.css","style":"file:./style-index.css","attributes":{"hasStickyLegend":{"type":"boolean","default":"true"},"legendLocation":{"type":"string","default":"after"},"hasLightbox":{"type":"boolean","default":"false"},"hasRoundedShadow":{"type":"boolean","default":"false"},"hasFixedHeight":{"type":"boolean","default":"true"},"showTitle":{"type":"boolean","default":"true"},"pictureUrl":{"type":"string"},"pictureTitle":{"type":"string"},"pictureAlt":{"type":"string"},"pictureId":{"type":"number"},"pictureCaption":{"type":"string"}}}');
/***/ })
@ -355,9 +461,7 @@ module.exports = JSON.parse('{"$schema":"https://schemas.wp.org/trunk/block.json
/******/ }
/******/ var notFulfilled = Infinity;
/******/ for (var i = 0; i < deferred.length; i++) {
/******/ var chunkIds = deferred[i][0];
/******/ var fn = deferred[i][1];
/******/ var priority = deferred[i][2];
/******/ 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])))) {
@ -443,9 +547,7 @@ module.exports = JSON.parse('{"$schema":"https://schemas.wp.org/trunk/block.json
/******/
/******/ // install a JSONP callback for chunk loading
/******/ var webpackJsonpCallback = (parentChunkLoadingFunction, data) => {
/******/ var chunkIds = data[0];
/******/ var moreModules = data[1];
/******/ var runtime = data[2];
/******/ 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;
@ -468,7 +570,7 @@ module.exports = JSON.parse('{"$schema":"https://schemas.wp.org/trunk/block.json
/******/ return __webpack_require__.O(result);
/******/ }
/******/
/******/ var chunkLoadingGlobal = self["webpackChunkmultiblocks"] = self["webpackChunkmultiblocks"] || [];
/******/ var chunkLoadingGlobal = globalThis["webpackChunkmultiblocks"] = globalThis["webpackChunkmultiblocks"] || [];
/******/ chunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));
/******/ chunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));
/******/ })();

File diff suppressed because one or more lines are too long

View File

@ -1,4 +1,4 @@
/*!***************************************************************************************************************************************************************************************************************************************!*\
!*** 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 ***!
\***************************************************************************************************************************************************************************************************************************************/
/*!**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
!*** css ./node_modules/.pnpm/css-loader@6.10.0_webpack@5.90.3/node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[4].use[1]!./node_modules/.pnpm/postcss-loader@6.2.1_postcss@8.4.35_webpack@5.90.3/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[4].use[2]!./node_modules/.pnpm/sass-loader@12.6.0_sass@1.71.1_webpack@5.90.3/node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[4].use[3]!./src/style.scss ***!
\**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/

View File

@ -3,7 +3,7 @@
"apiVersion": 2,
"name": "homegrade-content-blocks/labelled-picture",
"version": "0.1.0",
"title": "Image + Légende Autocollante",
"title": "Image + Légende",
"category": "homegrade-blocks",
"icon": "smiley",
"description": "Bloc image contenant une légende autocollante",
@ -15,9 +15,36 @@
"editorStyle": "file:./index.css",
"style": "file:./style-index.css",
"attributes": {
"hasStickyLegend": {
"type": "boolean",
"default": "true"
},
"legendLocation": {
"type": "string",
"default": "after"
},
"hasLightbox": {
"type": "boolean",
"default": "false"
},
"hasRoundedShadow": {
"type": "boolean",
"default": "false"
},
"hasFixedHeight": {
"type": "boolean",
"default": "true"
},
"showTitle": {
"type": "boolean",
"default": "true"
},
"pictureUrl": {
"type": "string"
},
"pictureTitle": {
"type": "string"
},
"pictureAlt": {
"type": "string"
},

View File

@ -10,11 +10,6 @@ import {
import {
Button,
ToolbarGroup,
ToolbarButton,
Spinner,
withNotices,
FocalPointPicker,
PanelBody,
Tip,
ToggleControl,
@ -30,7 +25,19 @@ export default function Edit({
noticeList,
noticeUI,
}) {
const { pictureUrl, pictureAlt, pictureId, pictureCaption } = attributes;
const {
hasStickyLegend,
hasLightbox,
legendLocation,
hasFixedHeight,
hasRoundedShadow,
showTitle,
pictureUrl,
pictureAlt,
pictureId,
pictureTitle,
pictureCaption,
} = attributes;
function removePictureImg() {
setAttributes({
@ -42,10 +49,12 @@ export default function Edit({
}
function updatePictureImg(image) {
console.log(image);
if (!image || !image.url) {
removePictureImg();
}
setAttributes({
pictureTitle: image.title,
pictureUrl: image.url,
pictureId: image.id,
pictureAlt: image.alt,
@ -56,9 +65,81 @@ export default function Edit({
noticeOperations.removeAllNotices();
noticeOperations.createErrorNotice(message);
}
function handleHasStickyLegend(hasStickyLegend) {
setAttributes({ hasStickyLegend });
}
function handleHasFixedHeight(hasFixedHeight) {
setAttributes({ hasFixedHeight });
}
function handleShowTitle(showTitle) {
setAttributes({ showTitle });
}
function handleHasRoundedShadow(hasRoundedShadow) {
setAttributes({ hasRoundedShadow });
}
function handleLegendLocationChange(legendLocation) {
setAttributes({ legendLocation });
}
function handleHasLightbox(hasLightbox) {
setAttributes({ hasLightbox });
}
const renderCaption = () => (
<figcaption>
{showTitle && pictureTitle && (
<span className="figcaption-title">{pictureTitle}</span>
)}{" "}
{pictureCaption}
</figcaption>
);
return (
<>
<InspectorControls>
<PanelBody
title="Paramètres"
className="homegrade-blocks-components-image__panel-body "
>
<ToggleControl
label="Légende Autocollante"
checked={hasStickyLegend}
onChange={handleHasStickyLegend}
help="Coché, la légende sera ajouté sur un bandeau au dessus de l'image"
/>
<ToggleControl
label="Hauteur de l'image Fixed"
checked={hasFixedHeight}
onChange={handleHasFixedHeight}
help="Coché, la hauteur de l'image est fixe"
/>
<ToggleControl
label="Afficher le titre"
checked={showTitle}
onChange={handleShowTitle}
/>
<ToggleControl
label="Rounded & Shadow"
checked={hasRoundedShadow}
onChange={handleHasRoundedShadow}
/>
<ToggleControl
label="Afficher une lightbox"
checked={hasLightbox}
onChange={handleHasLightbox}
/>
<ToggleGroupControl
label="Emplacement de la légende"
value="before"
onChange={handleLegendLocationChange}
isBlock
__nextHasNoMarginBottom
>
<ToggleGroupControlOption value="before" label="Avant l'Image" />
<ToggleGroupControlOption value="after" label="Après l'image" />
</ToggleGroupControl>
</PanelBody>
<PanelBody
title="Source de l'image"
className="homegrade-blocks-components-image__panel-body "
@ -101,11 +182,21 @@ export default function Edit({
{pictureUrl && (
<figure
{...useBlockProps({
className: `homegrade-blocks-labelled-picture`,
className: `homegrade-blocks-labelled-picture homegrade-blocks-labelled-picture--legend-${
hasStickyLegend ? "sticky" : "normal"
}
${hasFixedHeight ? "homegrade-blocks-labelled-picture--fixed-height" : ""}
${
showTitle && pictureTitle
? "homegrade-blocks-labelled-picture--legend-has-title"
: ""
}
${hasRoundedShadow ? "homegrade-blocks-labelled-picture--rounded-shadow" : ""}`,
})}
>
{legendLocation === "before" && renderCaption()}
<img src={pictureUrl} alt={pictureAlt} />
<figcaption>{pictureCaption}</figcaption>
{legendLocation === "after" && renderCaption()}
</figure>
)}

View File

@ -1,18 +1,54 @@
import { useBlockProps } from "@wordpress/block-editor";
export default function save({ attributes }) {
const { pictureUrl, pictureAlt, pictureId, pictureCaption } = attributes;
const {
hasStickyLegend,
hasLightbox,
legendLocation,
hasFixedHeight,
hasRoundedShadow,
showTitle,
pictureUrl,
pictureAlt,
pictureTitle,
pictureCaption,
} = attributes;
const renderCaption = () => (
<figcaption>
{showTitle && pictureTitle && (
<span className="figcaption-title">{pictureTitle}</span>
)}{" "}
{pictureCaption}
</figcaption>
);
return (
<>
{pictureUrl && (
<figure
{...useBlockProps.save({
className: `homegrade-blocks-labelled-picture`,
className: `homegrade-blocks-labelled-picture homegrade-blocks-labelled-picture--legend-${
hasStickyLegend ? "sticky" : "normal"
} ${
hasFixedHeight
? "homegrade-blocks-labelled-picture--fixed-height"
: ""
}
${
showTitle && pictureTitle
? "homegrade-blocks-labelled-picture--legend-has-title"
: ""
}
${hasRoundedShadow ? "homegrade-blocks-labelled-picture--rounded-shadow" : ""}
${hasLightbox ? "singleLightbox-link" : ""}
`,
})}
>
{legendLocation === "before" && renderCaption()}
<img src={pictureUrl} alt={pictureAlt} />
<figcaption>{pictureCaption}</figcaption>
{legendLocation === "after" && renderCaption()}
</figure>
)}
</>

View File

@ -22,6 +22,13 @@
"postType": {
"type": "string",
"default": "conseils"
},
"hasDescription": {
"type": "boolean",
"default": false
},
"postDescription": {
"type": "string"
}
}
}

View File

@ -1 +1 @@
<?php return array('dependencies' => array('react', 'wp-block-editor', 'wp-blocks', 'wp-components', 'wp-core-data', 'wp-data', 'wp-element', 'wp-html-entities', 'wp-i18n'), 'version' => '831260fc67b39b194bb9');
<?php return array('dependencies' => array('react', 'wp-block-editor', 'wp-blocks', 'wp-components', 'wp-core-data', 'wp-data', 'wp-element', 'wp-html-entities', 'wp-i18n'), 'version' => '354aaf4f576100a5c65a');

View File

@ -39,6 +39,8 @@ __webpack_require__.r(__webpack_exports__);
function OptionsSelectControl({
setAttributes,
relatedPostId,
postDescription,
hasDescription,
postType
}) {
if (!postType || !setAttributes) return (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)("p", null, "Loading");
@ -70,6 +72,11 @@ function OptionsSelectControl({
}
return c_value;
}
function handleHasDescriptionChange(hasDescription) {
setAttributes({
hasDescription
});
}
function handleRelatedPostChange(postId) {
setAttributes({
relatedPostId: Number(postId)
@ -133,10 +140,18 @@ function OptionsSelectControl({
value: relatedPostId,
options: postOptions,
onChange: e => handleRelatedPostChange(e)
}), relatedPostId && (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)(_wordpress_components__WEBPACK_IMPORTED_MODULE_3__.Tip, null, (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_1__.__)("Pour modifier le contenu de la question affichée ici, rendez-vous dans la fiche question correspondante.", "homegrade-blocks")), relatedPostId && editUrl && (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)("a", {
}), relatedPostId && (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)(_wordpress_components__WEBPACK_IMPORTED_MODULE_3__.Tip, null, (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_1__.__)("Pourrrrrr modifier le contenu de la question affichée ici, rendez-vous dans la fiche question correspondante.", "homegrade-blocks")), relatedPostId && editUrl && (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)("a", {
href: editUrl,
className: "edit-question-button"
}, "\xC9diter le post")));
}, "\xC9diter le post")), (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)(_wordpress_components__WEBPACK_IMPORTED_MODULE_3__.PanelBody, {
title: (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_1__.__)("Texte descriptif", "homegrade-blocks"),
initialOpen: false
}, (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)(_wordpress_components__WEBPACK_IMPORTED_MODULE_3__.CheckboxControl, {
label: "Texte descriptif",
help: "\xC0 cocher pour afficher un texte descriptif libre",
checked: hasDescription,
onChange: handleHasDescriptionChange
})));
}
/***/ }),
@ -160,13 +175,11 @@ __webpack_require__.r(__webpack_exports__);
/* harmony import */ var _wordpress_data__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @wordpress/data */ "@wordpress/data");
/* harmony import */ var _wordpress_data__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_wordpress_data__WEBPACK_IMPORTED_MODULE_3__);
/* harmony import */ var _editor_scss__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./editor.scss */ "./src/editor.scss");
/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @wordpress/element */ "@wordpress/element");
/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_wordpress_element__WEBPACK_IMPORTED_MODULE_5__);
/* harmony import */ var _wordpress_html_entities__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @wordpress/html-entities */ "@wordpress/html-entities");
/* harmony import */ var _wordpress_html_entities__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_wordpress_html_entities__WEBPACK_IMPORTED_MODULE_6__);
/* harmony import */ var _OptionsSelectControl__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./OptionsSelectControl */ "./src/OptionsSelectControl.js");
/* harmony import */ var _wordpress_core_data__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @wordpress/core-data */ "@wordpress/core-data");
/* harmony import */ var _wordpress_core_data__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(_wordpress_core_data__WEBPACK_IMPORTED_MODULE_8__);
/* harmony import */ var _wordpress_html_entities__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @wordpress/html-entities */ "@wordpress/html-entities");
/* harmony import */ var _wordpress_html_entities__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_wordpress_html_entities__WEBPACK_IMPORTED_MODULE_5__);
/* harmony import */ var _OptionsSelectControl__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./OptionsSelectControl */ "./src/OptionsSelectControl.js");
/* harmony import */ var _wordpress_core_data__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @wordpress/core-data */ "@wordpress/core-data");
/* harmony import */ var _wordpress_core_data__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(_wordpress_core_data__WEBPACK_IMPORTED_MODULE_7__);
@ -176,14 +189,15 @@ __webpack_require__.r(__webpack_exports__);
function Edit({
attributes,
setAttributes
}) {
const {
relatedPostId,
postType
postType,
hasDescription,
postDescription
} = attributes;
const currentRelatedPost = (0,_wordpress_data__WEBPACK_IMPORTED_MODULE_3__.useSelect)(select => relatedPostId && postType ? select("core").getEntityRecord("postType", postType, relatedPostId) : null, [relatedPostId, postType]);
const post = (0,_wordpress_data__WEBPACK_IMPORTED_MODULE_3__.useSelect)(select => select("core").getEntityRecord("postType", postType, relatedPostId));
@ -204,9 +218,16 @@ function Edit({
return (_media$source_url = media?.source_url) !== null && _media$source_url !== void 0 ? _media$source_url : null;
}, [postParentTaxonomy]);
const postTypeDatas = (0,_wordpress_data__WEBPACK_IMPORTED_MODULE_3__.useSelect)(select => select("core").getEntityConfig("postType", postType));
return (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)(react__WEBPACK_IMPORTED_MODULE_0__.Fragment, null, (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)(_OptionsSelectControl__WEBPACK_IMPORTED_MODULE_7__["default"], {
function handlePostDescriptionChange(description) {
setAttributes({
postDescription: description
});
}
return (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)(react__WEBPACK_IMPORTED_MODULE_0__.Fragment, null, (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)(_OptionsSelectControl__WEBPACK_IMPORTED_MODULE_6__["default"], {
relatedPostId: relatedPostId,
postType: postType,
hasDescription: hasDescription,
postDescription: postDescription,
setAttributes: setAttributes
}), (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", {
...(0,_wordpress_block_editor__WEBPACK_IMPORTED_MODULE_2__.useBlockProps)({
@ -226,7 +247,12 @@ function Edit({
class: "tag post-type-tag"
}, postTypeDatas.label)), currentRelatedPost && currentRelatedPost.title && (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)("h2", {
class: "post-card__title"
}, (0,_wordpress_html_entities__WEBPACK_IMPORTED_MODULE_6__.decodeEntities)(currentRelatedPost.title.rendered))), !relatedPostId && (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)(react__WEBPACK_IMPORTED_MODULE_0__.Fragment, null, (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)("p", null, (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_1__.__)("Ce bloc n'est relié à aucun post. Rattachez-le à un post dans la barre latérale.", "homegrade-blocks__texte-backoffice")))));
}, (0,_wordpress_html_entities__WEBPACK_IMPORTED_MODULE_5__.decodeEntities)(currentRelatedPost.title.rendered)), hasDescription && (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)(_wordpress_block_editor__WEBPACK_IMPORTED_MODULE_2__.RichText, {
tagName: "p",
onChange: handlePostDescriptionChange // Store updated content as a block attribute
,
placeholder: (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_1__.__)("Heading...") // Insérez votre description
})), !relatedPostId && (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)(react__WEBPACK_IMPORTED_MODULE_0__.Fragment, null, (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)("p", null, (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_1__.__)("Ce bloc n'est relié à aucun post. Rattachez-le à un post dans la barre latérale.", "homegrade-blocks__texte-backoffice")))));
}
/***/ }),
@ -388,7 +414,7 @@ module.exports = window["wp"]["i18n"];
\************************/
/***/ ((module) => {
module.exports = /*#__PURE__*/JSON.parse('{"$schema":"https://schemas.wp.org/trunk/block.json","apiVersion":2,"name":"homegrade-content-blocks/post-card","version":"0.1.0","title":"Post Link","category":"homegrade-blocks","description":"Pour afficher le lien vers un post (conseil, fiche-info, …) dans une carte","supports":{"anchor":true,"html":false},"textdomain":"homegrade-theme__bloks-texte-fonctionnel","editorScript":"file:./index.js","editorStyle":"file:./index.css","style":"file:./style-index.css","render":"file:./render.php","attributes":{"relatedPostId":{"type":"number"},"postType":{"type":"string","default":"conseils"}}}');
module.exports = /*#__PURE__*/JSON.parse('{"$schema":"https://schemas.wp.org/trunk/block.json","apiVersion":2,"name":"homegrade-content-blocks/post-card","version":"0.1.0","title":"Post Link","category":"homegrade-blocks","description":"Pour afficher le lien vers un post (conseil, fiche-info, …) dans une carte","supports":{"anchor":true,"html":false},"textdomain":"homegrade-theme__bloks-texte-fonctionnel","editorScript":"file:./index.js","editorStyle":"file:./index.css","style":"file:./style-index.css","render":"file:./render.php","attributes":{"relatedPostId":{"type":"number"},"postType":{"type":"string","default":"conseils"},"hasDescription":{"type":"boolean","default":false},"postDescription":{"type":"string"}}}');
/***/ })

File diff suppressed because one or more lines are too long

View File

@ -1,6 +1,4 @@
<?php
$relatedPostId = $attributes['relatedPostId'] ?? null;
$postType = get_post_type_object(get_post_type($relatedPostId));
@ -14,11 +12,14 @@ $mainThematique = getMainThematique($thematique);
$thematiqueColorSlug = $mainThematique->slug;
$thematique_icon = get_field('taxonomy_pictures', 'thematiques' . '_' . $mainThematique->term_id)['icon'];
$postDescription = $attributes['postDescription'];
$coverUrl = $postType->name === 'videos-webinaires' && $postThumbnail ? $postThumbnail : ($thematique_icon ? $thematique_icon['url'] : null);
$thematiqueColorSlug = getThematiqueFamilySlug($mainThematique->slug);
?>
<a class="post-card" href="<?php echo $relatedPostUrl ?>" target="<?php echo $target ?>">
<a class="post-card post-card--<?php echo $mainThematique->slug ?>" href="<?php echo $relatedPostUrl ?>">
<img class="post-card__cover post-card__cover--<?php echo $postType->name ?>" src="<?php echo $coverUrl ?>" alt="">
@ -30,5 +31,9 @@ $coverUrl = $postType->name === 'videos-webinaires' && $postThumbnail ? $postTh
<div class="tag post-type-tag"><?php echo $postType->label ?></div>
</div>
<h2 class="post-card__title"><?php echo $relatedPost->post_title ?></h2>
<?php if ($postDescription): ?>
<p><?php echo $postDescription ?></p>
<?php endif; ?>
<p></p>
</div>
</a>

View File

@ -6,7 +6,7 @@ import {
ComboboxControl,
} from "@wordpress/components";
import "./editor.scss";
import { Tip } from "@wordpress/components";
import { Tip, CheckboxControl } from "@wordpress/components";
import { useSelect } from "@wordpress/data";
import { useEffect, useState } from "@wordpress/element";
@ -15,6 +15,8 @@ import { decodeEntities } from "@wordpress/html-entities";
export default function OptionsSelectControl({
setAttributes,
relatedPostId,
postDescription,
hasDescription,
postType,
}) {
if (!postType || !setAttributes) return <p>Loading</p>;
@ -54,6 +56,10 @@ export default function OptionsSelectControl({
return c_value;
}
function handleHasDescriptionChange(hasDescription) {
setAttributes({ hasDescription });
}
function handleRelatedPostChange(postId) {
setAttributes({ relatedPostId: Number(postId) });
}
@ -112,7 +118,7 @@ export default function OptionsSelectControl({
{relatedPostId && (
<Tip>
{__(
"Pour modifier le contenu de la question affichée ici, rendez-vous dans la fiche question correspondante.",
"Pourrrrrr modifier le contenu de la question affichée ici, rendez-vous dans la fiche question correspondante.",
"homegrade-blocks",
)}
</Tip>
@ -123,6 +129,17 @@ export default function OptionsSelectControl({
</a>
)}
</PanelBody>
<PanelBody
title={__("Texte descriptif", "homegrade-blocks")}
initialOpen={false}
>
<CheckboxControl
label="Texte descriptif"
help="À cocher pour afficher un texte descriptif libre"
checked={hasDescription}
onChange={handleHasDescriptionChange}
/>
</PanelBody>
</InspectorControls>
);
}

View File

@ -22,6 +22,13 @@
"postType": {
"type": "string",
"default": "conseils"
},
"hasDescription": {
"type": "boolean",
"default": false
},
"postDescription": {
"type": "string"
}
}
}

View File

@ -3,15 +3,15 @@ import { useBlockProps } from "@wordpress/block-editor";
import { useSelect } from "@wordpress/data"; // pour les querry
import "./editor.scss";
import { RawHTML } from "@wordpress/element";
import { useEffect } from "@wordpress/element";
import { decodeEntities } from "@wordpress/html-entities";
import OptionsSelectControl from "./OptionsSelectControl";
import { RichText } from "@wordpress/block-editor";
import { useEntityProp } from "@wordpress/core-data";
export default function Edit({ attributes, setAttributes }) {
const { relatedPostId, postType } = attributes;
const { relatedPostId, postType, hasDescription, postDescription } =
attributes;
const currentRelatedPost = useSelect(
(select) =>
@ -61,12 +61,17 @@ export default function Edit({ attributes, setAttributes }) {
const postTypeDatas = useSelect((select) =>
select("core").getEntityConfig("postType", postType),
);
function handlePostDescriptionChange(description) {
setAttributes({ postDescription: description });
}
return (
<>
<OptionsSelectControl
relatedPostId={relatedPostId}
postType={postType}
hasDescription={hasDescription}
postDescription={postDescription}
setAttributes={setAttributes}
/>
@ -75,7 +80,6 @@ export default function Edit({ attributes, setAttributes }) {
className: `post-card`,
})}
>
{/* postParentTaxonomy */}
<img class="post-card__cover" alt="" src={thematiqueCoverUrl} />
<div class="post-card__details">
<div class="post-card__tags">
@ -98,6 +102,13 @@ export default function Edit({ attributes, setAttributes }) {
{decodeEntities(currentRelatedPost.title.rendered)}
</h2>
)}
{hasDescription && (
<RichText
tagName="p"
onChange={handlePostDescriptionChange} // Store updated content as a block attribute
placeholder={__("Heading...")} // Insérez votre description
/>
)}
</div>
{!relatedPostId && (
<>

View File

@ -12,11 +12,14 @@ $mainThematique = getMainThematique($thematique);
$thematiqueColorSlug = $mainThematique->slug;
$thematique_icon = get_field('taxonomy_pictures', 'thematiques' . '_' . $mainThematique->term_id)['icon'];
$postDescription = $attributes['postDescription'];
$coverUrl = $postType->name === 'videos-webinaires' && $postThumbnail ? $postThumbnail : ($thematique_icon ? $thematique_icon['url'] : null);
$thematiqueColorSlug = getThematiqueFamilySlug($mainThematique->slug);
?>
<a class="post-card" href="<?php echo $relatedPostUrl ?>">
<a class="post-card post-card--<?php echo $mainThematique->slug ?>" href="<?php echo $relatedPostUrl ?>">
<img class="post-card__cover post-card__cover--<?php echo $postType->name ?>" src="<?php echo $coverUrl ?>" alt="">
@ -28,5 +31,9 @@ $coverUrl = $postType->name === 'videos-webinaires' && $postThumbnail ? $postTh
<div class="tag post-type-tag"><?php echo $postType->label ?></div>
</div>
<h2 class="post-card__title"><?php echo $relatedPost->post_title ?></h2>
<?php if ($postDescription): ?>
<p><?php echo $postDescription ?></p>
<?php endif; ?>
<p></p>
</div>
</a>

View File

@ -1 +1 @@
<?php return array('dependencies' => array('react', 'wp-block-editor', 'wp-blocks', 'wp-components', 'wp-data', 'wp-element', 'wp-html-entities', 'wp-i18n'), 'version' => 'f8adefcd282fd42751be');
<?php return array('dependencies' => array('react', 'wp-block-editor', 'wp-blocks', 'wp-components', 'wp-data', 'wp-element', 'wp-html-entities', 'wp-i18n'), 'version' => 'd1bff0478a28e4096c46');

View File

@ -223,6 +223,25 @@ function Edit({
});
}
}, [currentRelatedPost]);
// const editedContent = wp.data.select("core/editor").getEditedPostContent();
// function getContent() {
// // Récupérer et retourner le contenu personnalisé ici
// return 'Votre contenu personnalisé';
// }
// useEffect(() => {
// if (!rankMathEditor) return;
// console.log("rankMathEditor", rankMathEditor);
// console.log("wp.hooks", wp.hooks);
// console.log(`editedContent`, editedContent);
// wp.hooks.addFilter("rank_math_content", "rank-math", updateContent);
// function updateContent() {
// return editedContent;
// }
// rankMathEditor.refresh("content");
// }, [rankMathEditor]);
return (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)(react__WEBPACK_IMPORTED_MODULE_0__.Fragment, null, (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)(_OptionsSelectControl__WEBPACK_IMPORTED_MODULE_7__["default"], {
relatedPostId: relatedPostId,
postType: postType,

File diff suppressed because one or more lines are too long

View File

@ -72,6 +72,24 @@ export default function Edit({ attributes, setAttributes }) {
}
}, [currentRelatedPost]);
// const editedContent = wp.data.select("core/editor").getEditedPostContent();
// function getContent() {
// // Récupérer et retourner le contenu personnalisé ici
// return 'Votre contenu personnalisé';
// }
// useEffect(() => {
// if (!rankMathEditor) return;
// console.log("rankMathEditor", rankMathEditor);
// console.log("wp.hooks", wp.hooks);
// console.log(`editedContent`, editedContent);
// wp.hooks.addFilter("rank_math_content", "rank-math", updateContent);
// function updateContent() {
// return editedContent;
// }
// rankMathEditor.refresh("content");
// }, [rankMathEditor]);
return (
<>
<OptionsSelectControl

View File

@ -6,5 +6,5 @@ $relatedPost = get_post($relatedPostId);
<section id="questions-container-<?php echo $relatedPostId ?>" class="questions-container-block">
<h2 class="questions-container-block__title"><?php echo $relatedPost->post_title ?></h2>
<?php echo $relatedPost->post_content ?>
<?php echo do_blocks($relatedPost->post_content) ?>
</section>

View File

@ -1 +1 @@
<?php return array('dependencies' => array('react', 'wp-block-editor', 'wp-blocks', 'wp-core-data', 'wp-data', 'wp-element', 'wp-i18n'), 'version' => '26852ebc6e130b4f3af8');
<?php return array('dependencies' => array('react', 'wp-block-editor', 'wp-blocks', 'wp-core-data', 'wp-data', 'wp-element', 'wp-i18n'), 'version' => '205e7edeb29596567b3d');

View File

@ -20,7 +20,7 @@ function getThematiqueFamilySlug(thematique_slug) {
case "urbanisme":
return "energies-urbanisme";
case "acoustique":
case "petites-coproprietes":
case "coproprietes":
return "acoustique-coproprietes";
case "isolation":
case "au-quotidien":
@ -100,7 +100,8 @@ function Edit({
let {
tooltipWords
} = attributes;
console.log("tooltipWords ATTRIBUTES", tooltipWords);
// console.log("tooltipWords ATTRIBUTES", tooltipWords);
let [hasFetchedDatas, setHasFetchedDatas] = (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_5__.useState)(false);
function parseContentTooltips(editorContent) {
const parser = new DOMParser();
@ -174,7 +175,6 @@ function Edit({
include: tooltipWordsIds
});
}, [tooltipWordsIds]);
console.log("vocabulairePosts", vocabulairePosts);
const currentLang = (0,_utilities_js__WEBPACK_IMPORTED_MODULE_8__.getAdminLanguageFromCookie)("wp-wpml_current_language");
const localBlockName = currentLang === "fr" ? "Vocabulaire" : "Woordenschat";
(0,_wordpress_element__WEBPACK_IMPORTED_MODULE_5__.useEffect)(() => {

File diff suppressed because one or more lines are too long

View File

@ -11,7 +11,7 @@ import { getAdminLanguageFromCookie } from "../../utilities.js";
export default function Edit({ attributes, setAttributes }) {
let { tooltipWords } = attributes;
console.log("tooltipWords ATTRIBUTES", tooltipWords);
// console.log("tooltipWords ATTRIBUTES", tooltipWords);
let [hasFetchedDatas, setHasFetchedDatas] = useState(false);
@ -128,7 +128,6 @@ export default function Edit({ attributes, setAttributes }) {
},
[tooltipWordsIds],
);
console.log("vocabulairePosts", vocabulairePosts);
const currentLang = getAdminLanguageFromCookie("wp-wpml_current_language");
const localBlockName = currentLang === "fr" ? "Vocabulaire" : "Woordenschat";

View File

@ -96,6 +96,7 @@ function create_block_multiblocks_block_init()
register_block_type(__DIR__ . '/blocks/parcours-chapter/build');
register_block_type(__DIR__ . '/blocks/parcours-step/build');
register_block_type(__DIR__ . '/blocks/figure/build');
register_block_type(__DIR__ . '/blocks/explainer-screen/build');
// CONTAINERS (STATIC)
register_block_type(__DIR__ . '/blocks/content-box/build');