diff --git a/lib/block-supports/behaviors.php b/lib/block-supports/behaviors.php index cf668ed22d887..6f442d7b0d2d7 100644 --- a/lib/block-supports/behaviors.php +++ b/lib/block-supports/behaviors.php @@ -233,7 +233,9 @@ function gutenberg_render_behaviors_support_lightbox( $block_content, $block ) { data-wp-bind--aria-modal="context.core.image.lightboxEnabled" data-wp-effect="effects.core.image.initLightbox" data-wp-on--keydown="actions.core.image.handleKeydown" - data-wp-on--mousewheel="actions.core.image.hideLightbox" + data-wp-on--touchstart="actions.core.image.handleTouchStart" + data-wp-on--touchmove="actions.core.image.handleTouchMove" + data-wp-on--touchend="actions.core.image.handleTouchEnd" data-wp-on--click="actions.core.image.hideLightbox" > + + `.${ ext }` + ).join( ',' ) } + multiple={ true } + onChange={ onFilesUpload } + render={ ( { openFileDialog } ) => ( + + ) } + /> + { notice && ( + + + + { notice.message } + + ) } - /> + + + { sprintf( + /* translators: %s: supported font formats: ex: .ttf, .woff and .woff2 */ + __( + 'Uploaded fonts appear in your library and can be used in your theme. Supported formats: %s.' + ), + supportedFormats + ) } + + ); } diff --git a/packages/edit-site/src/components/global-styles/font-library-modal/style.scss b/packages/edit-site/src/components/global-styles/font-library-modal/style.scss index 663aef94ab7e6..86cac4244dea9 100644 --- a/packages/edit-site/src/components/global-styles/font-library-modal/style.scss +++ b/packages/edit-site/src/components/global-styles/font-library-modal/style.scss @@ -92,11 +92,24 @@ align-items: center; display: flex; justify-content: center; - height: 100px; + height: 250px; width: 100%; background-color: #f0f0f0; } +.font-library-modal__local-fonts { + margin: 0 auto; + width: 80%; + + .font-library-modal__upload-area__text { + color: #6e6e6e; + } + + .font-library-modal__upload-area__notice { + margin: 0; + } +} + .font-library-modal__font-name { font-weight: bold; } @@ -137,3 +150,7 @@ max-width: 350px; } } + +.font-library-modal__font-collection__notice { + margin: 0; +} diff --git a/packages/edit-site/src/components/global-styles/font-library-modal/upload-fonts.js b/packages/edit-site/src/components/global-styles/font-library-modal/upload-fonts.js new file mode 100644 index 0000000000000..effc4a2a5227c --- /dev/null +++ b/packages/edit-site/src/components/global-styles/font-library-modal/upload-fonts.js @@ -0,0 +1,20 @@ +/** + * WordPress dependencies + */ +import { __experimentalSpacer as Spacer } from '@wordpress/components'; + +/** + * Internal dependencies + */ +import LocalFonts from './local-fonts'; + +function UploadFonts() { + return ( + <> + + + + ); +} + +export default UploadFonts; diff --git a/packages/edit-site/src/components/global-styles/font-library-modal/utils/fonts-outline.js b/packages/edit-site/src/components/global-styles/font-library-modal/utils/fonts-outline.js index 0414681a432ad..bef9353e94350 100644 --- a/packages/edit-site/src/components/global-styles/font-library-modal/utils/fonts-outline.js +++ b/packages/edit-site/src/components/global-styles/font-library-modal/utils/fonts-outline.js @@ -15,7 +15,8 @@ export function getFontsOutline( fonts ) { } export function isFontFontFaceInOutline( slug, face, outline ) { - return ( - outline[ slug ]?.[ `${ face.fontStyle }-${ face.fontWeight }` ] || false - ); + if ( ! face ) { + return !! outline[ slug ]; + } + return !! outline[ slug ]?.[ `${ face.fontStyle }-${ face.fontWeight }` ]; } diff --git a/packages/edit-site/src/components/global-styles/font-library-modal/utils/get-notice-from-response.js b/packages/edit-site/src/components/global-styles/font-library-modal/utils/get-notice-from-response.js new file mode 100644 index 0000000000000..b22bd0afe2324 --- /dev/null +++ b/packages/edit-site/src/components/global-styles/font-library-modal/utils/get-notice-from-response.js @@ -0,0 +1,62 @@ +/** + * WordPress dependencies + */ +import { __ } from '@wordpress/i18n'; + +export function getNoticeFromInstallResponse( response ) { + const { errors = [], successes = [] } = response; + // Everything failed. + if ( errors.length && ! successes.length ) { + return { + type: 'error', + message: __( 'Error installing the fonts.' ), + }; + } + + // Eveerything succeeded. + if ( ! errors.length && successes.length ) { + return { + type: 'success', + message: __( 'Fonts were installed successfully.' ), + }; + } + + // Some succeeded, some failed. + if ( errors.length && successes.length ) { + return { + type: 'warning', + message: __( + 'Some fonts were installed successfully and some failed.' + ), + }; + } +} + +export function getNoticeFromUninstallResponse( response ) { + const { errors = [], successes = [] } = response; + // Everything failed. + if ( errors.length && ! successes.length ) { + return { + type: 'error', + message: __( 'Error uninstalling the fonts.' ), + }; + } + + // Everything succeeded. + if ( ! errors.length && successes.length ) { + return { + type: 'success', + message: __( 'Fonts were uninstalled successfully.' ), + }; + } + + // Some succeeded, some failed. + if ( errors.length && successes.length ) { + return { + type: 'warning', + message: __( + 'Some fonts were uninstalled successfully and some failed.' + ), + }; + } +} diff --git a/packages/edit-site/src/components/global-styles/font-library-modal/utils/index.js b/packages/edit-site/src/components/global-styles/font-library-modal/utils/index.js index 49e7e7e4684ee..7afa0f7aee17a 100644 --- a/packages/edit-site/src/components/global-styles/font-library-modal/utils/index.js +++ b/packages/edit-site/src/components/global-styles/font-library-modal/utils/index.js @@ -109,6 +109,10 @@ export async function loadFontFaceInBrowser( fontFace, source, addTo = 'all' ) { } export function getDisplaySrcFromFontFace( input, urlPrefix ) { + if ( ! input ) { + return; + } + let src; if ( Array.isArray( input ) ) { src = input[ 0 ]; diff --git a/packages/edit-site/src/components/page-patterns/grid.js b/packages/edit-site/src/components/page-patterns/grid.js index 32fa6ebe55b39..59a8cc431567f 100644 --- a/packages/edit-site/src/components/page-patterns/grid.js +++ b/packages/edit-site/src/components/page-patterns/grid.js @@ -9,7 +9,7 @@ export default function Grid( { categoryId, items, ...props } ) { } return ( -