Changeset 10952
- Timestamp:
- 05/05/2021 08:13:22 PM (2 years ago)
- Location:
- sites/trunk/wordpress.org/public_html/wp-content/themes/pub/wporg-patterns
- Files:
-
- 1 added
- 9 edited
Legend:
- Unmodified
- Added
- Removed
-
sites/trunk/wordpress.org/public_html/wp-content/themes/pub/wporg-patterns/build/index.asset.php
r10930 r10952 1 <?php return array('dependencies' => array('react', 'wp- components', 'wp-compose', 'wp-data', 'wp-data-controls', 'wp-element', 'wp-i18n', 'wp-keycodes', 'wp-polyfill', 'wp-primitives', 'wp-url', 'wp-viewport'), 'version' => '51d417961bbb5e88ef5cc17bcdd3e65e');1 <?php return array('dependencies' => array('react', 'wp-a11y', 'wp-components', 'wp-compose', 'wp-data', 'wp-data-controls', 'wp-element', 'wp-i18n', 'wp-keycodes', 'wp-polyfill', 'wp-primitives', 'wp-url', 'wp-viewport'), 'version' => '6cc4550be1812ff312e84305d20a109c'); -
sites/trunk/wordpress.org/public_html/wp-content/themes/pub/wporg-patterns/build/index.js
r10930 r10952 11073 11073 /* harmony import */ var _wordpress_components__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @wordpress/components */ "@wordpress/components"); 11074 11074 /* harmony import */ var _wordpress_components__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_wordpress_components__WEBPACK_IMPORTED_MODULE_2__); 11075 /* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../utils */ "./src/utils/index.js"); 11075 11076 11076 11077 … … 11081 11082 11082 11083 /** 11083 * Uses a hidden textarea that is added and removed from the DOM in order to copy to clipboard via the Browser. 11084 * 11085 * @param {string} stringToCopy A string that will be copied to the clipboard 11086 * @return {boolean} Whether the copy function succeeded 11087 */ 11088 11089 var copyToClipboard = function copyToClipboard(stringToCopy) { 11090 var element = document.createElement('textarea'); // We don't want the text area to be selected since it's temporary. 11091 11092 element.setAttribute('readonly', ''); // We don't want the text area to be visible since it's temporary. 11093 11094 element.style.position = 'absolute'; 11095 element.style.left = '-9999px'; 11096 element.value = stringToCopy; 11097 document.body.appendChild(element); 11098 element.select(); 11099 var success = document.execCommand('copy'); 11100 document.body.removeChild(element); 11101 return success; 11102 }; 11084 * Internal dependencies 11085 */ 11086 11087 11103 11088 11104 11089 var CopyPatternButton = function CopyPatternButton(_ref) { … … 11110 11095 var blockData = document.getElementById('block-data'); 11111 11096 var blockPattern = JSON.parse(decodeURIComponent(blockData.value)); 11112 var success = copyToClipboard(blockPattern); // Make sure we reset focus in case it was lost in the 'copy' command.11097 var success = Object(_utils__WEBPACK_IMPORTED_MODULE_3__["copyToClipboard"])(blockPattern); // Make sure we reset focus in case it was lost in the 'copy' command. 11113 11098 11114 11099 target.focus(); … … 12048 12033 /* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @wordpress/element */ "@wordpress/element"); 12049 12034 /* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_wordpress_element__WEBPACK_IMPORTED_MODULE_1__); 12050 /* harmony import */ var _wordpress_i18n__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n"); 12051 /* harmony import */ var _wordpress_i18n__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_2__); 12052 /* harmony import */ var _wordpress_components__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @wordpress/components */ "@wordpress/components"); 12053 /* harmony import */ var _wordpress_components__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_wordpress_components__WEBPACK_IMPORTED_MODULE_3__); 12054 /* harmony import */ var _icons_heart_outline__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../icons/heart-outline */ "./src/components/icons/heart-outline.js"); 12055 /* harmony import */ var _icons_heart_filled__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../icons/heart-filled */ "./src/components/icons/heart-filled.js"); 12056 /* harmony import */ var _canvas__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./canvas */ "./src/components/pattern-thumbnail/canvas.js"); 12057 12058 12059 12060 /** 12061 * WordPress dependencies 12062 */ 12035 /* harmony import */ var _wordpress_a11y__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @wordpress/a11y */ "@wordpress/a11y"); 12036 /* harmony import */ var _wordpress_a11y__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_wordpress_a11y__WEBPACK_IMPORTED_MODULE_2__); 12037 /* harmony import */ var _wordpress_i18n__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n"); 12038 /* harmony import */ var _wordpress_i18n__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_3__); 12039 /* harmony import */ var _wordpress_components__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @wordpress/components */ "@wordpress/components"); 12040 /* harmony import */ var _wordpress_components__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_wordpress_components__WEBPACK_IMPORTED_MODULE_4__); 12041 /* harmony import */ var _icons_heart_outline__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../icons/heart-outline */ "./src/components/icons/heart-outline.js"); 12042 /* harmony import */ var _icons_heart_filled__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../icons/heart-filled */ "./src/components/icons/heart-filled.js"); 12043 /* harmony import */ var _canvas__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./canvas */ "./src/components/pattern-thumbnail/canvas.js"); 12044 /* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../utils */ "./src/utils/index.js"); 12045 12046 12047 12048 /** 12049 * WordPress dependencies 12050 */ 12051 12063 12052 12064 12053 … … 12067 12056 * Internal dependencies 12068 12057 */ 12058 12069 12059 12070 12060 … … 12081 12071 setFavorite = _useState2[1]; 12082 12072 12073 var _useState3 = Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_1__["useState"])(false), 12074 _useState4 = _babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_0___default()(_useState3, 2), 12075 copied = _useState4[0], 12076 setCopied = _useState4[1]; 12077 12078 var handleCopy = function handleCopy() { 12079 var result = Object(_utils__WEBPACK_IMPORTED_MODULE_8__["copyToClipboard"])(pattern.pattern_content); 12080 setCopied(result); 12081 }; 12082 12083 Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_1__["useEffect"])(function () { 12084 if (!copied) { 12085 return; 12086 } 12087 12088 Object(_wordpress_a11y__WEBPACK_IMPORTED_MODULE_2__["speak"])(Object(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_3__["sprintf"])( 12089 /* translators: %s: pattern title. */ 12090 Object(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_3__["__"])('Copied %s pattern to clipboard.', 'wporg-patterns'), pattern.title.rendered)); 12091 var timer = setTimeout(function () { 12092 return setCopied(false); 12093 }, 20000); 12094 return function () { 12095 clearTimeout(timer); 12096 }; 12097 }, [copied]); 12083 12098 return Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_1__["createElement"])("div", { 12084 12099 className: "pattern-grid__pattern" … … 12088 12103 }, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_1__["createElement"])("span", { 12089 12104 className: "screen-reader-text" 12090 }, pattern.title.rendered), Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_1__["createElement"])(_wordpress_components__WEBPACK_IMPORTED_MODULE_ 3__["Disabled"], null, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_1__["createElement"])(_canvas__WEBPACK_IMPORTED_MODULE_6__["default"], {12105 }, pattern.title.rendered), Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_1__["createElement"])(_wordpress_components__WEBPACK_IMPORTED_MODULE_4__["Disabled"], null, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_1__["createElement"])(_canvas__WEBPACK_IMPORTED_MODULE_7__["default"], { 12091 12106 className: "pattern-grid__preview", 12092 12107 html: pattern.content.rendered … … 12095 12110 }, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_1__["createElement"])("h2", { 12096 12111 className: "pattern-grid__title" 12097 }, pattern.title.rendered), Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_1__["createElement"])(_wordpress_components__WEBPACK_IMPORTED_MODULE_ 3__["Tooltip"], {12098 text: isFavorite ? Object(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_ 2__["__"])('Remove pattern from favorites', 'wporg-patterns') : Object(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_2__["__"])('Favorite pattern', 'wporg-patterns')12112 }, pattern.title.rendered), Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_1__["createElement"])(_wordpress_components__WEBPACK_IMPORTED_MODULE_4__["Tooltip"], { 12113 text: isFavorite ? Object(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_3__["__"])('Remove pattern from favorites', 'wporg-patterns') : Object(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_3__["__"])('Favorite pattern', 'wporg-patterns') 12099 12114 }, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_1__["createElement"])("button", { 12100 12115 className: 'button button-link pattern__favorite-button' + (isFavorite ? ' is-favorited' : ''), … … 12102 12117 return setFavorite(!isFavorite); 12103 12118 } 12104 }, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_1__["createElement"])(_icons_heart_filled__WEBPACK_IMPORTED_MODULE_ 5__["default"], {12119 }, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_1__["createElement"])(_icons_heart_filled__WEBPACK_IMPORTED_MODULE_6__["default"], { 12105 12120 className: "pattern__favorite-filled" 12106 }), Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_1__["createElement"])(_icons_heart_outline__WEBPACK_IMPORTED_MODULE_ 4__["default"], {12121 }), Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_1__["createElement"])(_icons_heart_outline__WEBPACK_IMPORTED_MODULE_5__["default"], { 12107 12122 className: "pattern__favorite-outline" 12108 }))), Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_1__["createElement"])(_wordpress_components__WEBPACK_IMPORTED_MODULE_ 3__["Button"], {12123 }))), Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_1__["createElement"])(_wordpress_components__WEBPACK_IMPORTED_MODULE_4__["Button"], { 12109 12124 className: "pattern__copy-button is-small", 12110 isPrimary: true 12111 }, Object(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_2__["__"])('Copy', 'wporg-patterns')))); 12125 isPrimary: true, 12126 onClick: handleCopy 12127 }, copied ? Object(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_3__["__"])('Copied!', 'wporg-patterns') : Object(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_3__["__"])('Copy', 'wporg-patterns')))); 12112 12128 } 12113 12129 … … 13113 13129 /***/ }), 13114 13130 13131 /***/ "./src/utils/copy-to-clipboard.js": 13132 /*!****************************************!*\ 13133 !*** ./src/utils/copy-to-clipboard.js ***! 13134 \****************************************/ 13135 /*! exports provided: copyToClipboard */ 13136 /***/ (function(module, __webpack_exports__, __webpack_require__) { 13137 13138 "use strict"; 13139 __webpack_require__.r(__webpack_exports__); 13140 /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "copyToClipboard", function() { return copyToClipboard; }); 13141 /** 13142 * Uses a hidden textarea that is added and removed from the DOM in order to copy to clipboard via the Browser. 13143 * 13144 * @param {string} stringToCopy A string that will be copied to the clipboard 13145 * @return {boolean} Whether the copy function succeeded 13146 */ 13147 var copyToClipboard = function copyToClipboard(stringToCopy) { 13148 var element = document.createElement('textarea'); // We don't want the text area to be selected since it's temporary. 13149 13150 element.setAttribute('readonly', ''); // We don't want screen readers to read the content since it's pattern markup 13151 13152 element.setAttribute('aria-hidden', 'true'); // We don't want the text area to be visible since it's temporary. 13153 13154 element.style.position = 'absolute'; 13155 element.style.left = '-9999px'; 13156 element.value = stringToCopy; 13157 document.body.appendChild(element); 13158 element.select(); 13159 var success = document.execCommand('copy'); 13160 document.body.removeChild(element); 13161 return success; 13162 }; 13163 13164 /***/ }), 13165 13115 13166 /***/ "./src/utils/index.js": 13116 13167 /*!****************************!*\ 13117 13168 !*** ./src/utils/index.js ***! 13118 13169 \****************************/ 13119 /*! exports provided: getCategoryFromPath, removeQueryString, removeEmptyArgs */13170 /*! exports provided: getCategoryFromPath, removeQueryString, removeEmptyArgs, copyToClipboard */ 13120 13171 /***/ (function(module, __webpack_exports__, __webpack_require__) { 13121 13172 … … 13128 13179 13129 13180 /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "removeEmptyArgs", function() { return _category__WEBPACK_IMPORTED_MODULE_0__["removeEmptyArgs"]; }); 13181 13182 /* harmony import */ var _copy_to_clipboard__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./copy-to-clipboard */ "./src/utils/copy-to-clipboard.js"); 13183 /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "copyToClipboard", function() { return _copy_to_clipboard__WEBPACK_IMPORTED_MODULE_1__["copyToClipboard"]; }); 13184 13130 13185 13131 13186 … … 13144 13199 /***/ }), 13145 13200 13201 /***/ "@wordpress/a11y": 13202 /*!******************************!*\ 13203 !*** external ["wp","a11y"] ***! 13204 \******************************/ 13205 /*! no static exports found */ 13206 /***/ (function(module, exports) { 13207 13208 (function() { module.exports = window["wp"]["a11y"]; }()); 13209 13210 /***/ }), 13211 13146 13212 /***/ "@wordpress/components": 13147 13213 /*!************************************!*\ -
sites/trunk/wordpress.org/public_html/wp-content/themes/pub/wporg-patterns/index.php
r10924 r10952 10 10 * @link https://codex.wordpress.org/Template_Hierarchy 11 11 * 12 * @package WordPressdotorg\ Theme12 * @package WordPressdotorg\Pattern_Directory\Theme 13 13 */ 14 14 15 namespace WordPressdotorg\ Theme;15 namespace WordPressdotorg\Pattern_Directory\Theme; 16 16 17 17 get_header(); -
sites/trunk/wordpress.org/public_html/wp-content/themes/pub/wporg-patterns/package.json
r10930 r10952 26 26 ], 27 27 "devDependencies": { 28 "@wordpress/a11y": "2.15.2", 28 29 "@wordpress/block-editor": "5.3.0", 29 30 "@wordpress/browserslist-config": "3.0.1", -
sites/trunk/wordpress.org/public_html/wp-content/themes/pub/wporg-patterns/single-wporg-pattern.php
r10924 r10952 5 5 * @link https://developer.wordpress.org/themes/basics/template-hierarchy/#single-post 6 6 * 7 * @package WordPressdotorg\ Theme7 * @package WordPressdotorg\Pattern_Directory\Theme 8 8 */ 9 9 10 namespace WordPressdotorg\ Theme;10 namespace WordPressdotorg\Pattern_Directory\Theme; 11 11 12 12 get_header(); -
sites/trunk/wordpress.org/public_html/wp-content/themes/pub/wporg-patterns/src/components/copy-pattern-button/index.js
r10924 r10952 6 6 7 7 /** 8 * Uses a hidden textarea that is added and removed from the DOM in order to copy to clipboard via the Browser. 9 * 10 * @param {string} stringToCopy A string that will be copied to the clipboard 11 * @return {boolean} Whether the copy function succeeded 8 * Internal dependencies 12 9 */ 13 const copyToClipboard = ( stringToCopy ) => { 14 const element = document.createElement( 'textarea' ); 15 16 // We don't want the text area to be selected since it's temporary. 17 element.setAttribute( 'readonly', '' ); 18 19 // We don't want the text area to be visible since it's temporary. 20 element.style.position = 'absolute'; 21 element.style.left = '-9999px'; 22 23 element.value = stringToCopy; 24 25 document.body.appendChild( element ); 26 element.select(); 27 28 const success = document.execCommand( 'copy' ); 29 document.body.removeChild( element ); 30 31 return success; 32 }; 10 import { copyToClipboard } from '../../utils'; 33 11 34 12 const CopyPatternButton = ( { onSuccess } ) => { -
sites/trunk/wordpress.org/public_html/wp-content/themes/pub/wporg-patterns/src/components/pattern-thumbnail/index.js
r10882 r10952 2 2 * WordPress dependencies 3 3 */ 4 import { __ } from '@wordpress/i18n'; 4 import { speak } from '@wordpress/a11y'; 5 import { __, sprintf } from '@wordpress/i18n'; 5 6 import { Button, Disabled, Tooltip } from '@wordpress/components'; 6 import { use State } from '@wordpress/element';7 import { useEffect, useState } from '@wordpress/element'; 7 8 8 9 /** … … 12 13 import IconHeartFilled from '../icons/heart-filled'; 13 14 import Canvas from './canvas'; 15 import { copyToClipboard } from '../../utils'; 14 16 15 17 function PatternThumbnail( { pattern } ) { 16 18 // @todo Implement a real favoriting process. 17 19 const [ isFavorite, setFavorite ] = useState( Math.random() < 0.3 ); 20 const [ copied, setCopied ] = useState( false ); 21 22 const handleCopy = () => { 23 const result = copyToClipboard( pattern.pattern_content ); 24 25 setCopied( result ); 26 }; 27 28 useEffect( () => { 29 if ( ! copied ) { 30 return; 31 } 32 33 speak( 34 sprintf( 35 /* translators: %s: pattern title. */ 36 __( 'Copied %s pattern to clipboard.', 'wporg-patterns' ), 37 pattern.title.rendered 38 ) 39 ); 40 41 const timer = setTimeout( () => setCopied( false ), 20000 ); 42 return () => { 43 clearTimeout( timer ); 44 }; 45 }, [ copied ] ); 18 46 19 47 return ( … … 44 72 </button> 45 73 </Tooltip> 46 <Button className="pattern__copy-button is-small" isPrimary >47 { __( 'Copy', 'wporg-patterns' ) }74 <Button className="pattern__copy-button is-small" isPrimary onClick={ handleCopy }> 75 { copied ? __( 'Copied!', 'wporg-patterns' ) : __( 'Copy', 'wporg-patterns' ) } 48 76 </Button> 49 77 </div> -
sites/trunk/wordpress.org/public_html/wp-content/themes/pub/wporg-patterns/src/utils/index.js
r10924 r10952 1 1 export { getCategoryFromPath, removeQueryString, removeEmptyArgs } from './category'; 2 export { copyToClipboard } from './copy-to-clipboard'; -
sites/trunk/wordpress.org/public_html/wp-content/themes/pub/wporg-patterns/template-parts/content-grid.php
r10869 r10952 3 3 * The template part for displaying content 4 4 * 5 * @package WordPressdotorg\ Theme;5 * @package WordPressdotorg\Pattern_Directory\Theme; 6 6 */ 7 7 8 namespace WordPressdotorg\ Theme;8 namespace WordPressdotorg\Pattern_Directory\Theme; 9 9 10 10 ?>
Note: See TracChangeset
for help on using the changeset viewer.