@wordpress/edit-site 5.28.3 → 5.28.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/components/global-styles/font-library-modal/collection-font-variant.js +2 -2
- package/build/components/global-styles/font-library-modal/collection-font-variant.js.map +1 -1
- package/build/components/global-styles/font-library-modal/context.js +51 -58
- package/build/components/global-styles/font-library-modal/context.js.map +1 -1
- package/build/components/global-styles/font-library-modal/font-card.js +10 -15
- package/build/components/global-styles/font-library-modal/font-card.js.map +1 -1
- package/build/components/global-styles/font-library-modal/font-collection.js +115 -62
- package/build/components/global-styles/font-library-modal/font-collection.js.map +1 -1
- package/build/components/global-styles/font-library-modal/font-demo.js +29 -8
- package/build/components/global-styles/font-library-modal/font-demo.js.map +1 -1
- package/build/components/global-styles/font-library-modal/index.js +17 -4
- package/build/components/global-styles/font-library-modal/index.js.map +1 -1
- package/build/components/global-styles/font-library-modal/installed-fonts.js +151 -79
- package/build/components/global-styles/font-library-modal/installed-fonts.js.map +1 -1
- package/build/components/global-styles/font-library-modal/library-font-variant.js +2 -2
- package/build/components/global-styles/font-library-modal/library-font-variant.js.map +1 -1
- package/build/components/global-styles/font-library-modal/upload-fonts.js +8 -14
- package/build/components/global-styles/font-library-modal/upload-fonts.js.map +1 -1
- package/build/components/global-styles/font-library-modal/utils/index.js +11 -4
- package/build/components/global-styles/font-library-modal/utils/index.js.map +1 -1
- package/build/components/global-styles/screen-revisions/index.js +2 -2
- package/build/components/global-styles/screen-revisions/index.js.map +1 -1
- package/build/components/global-styles/ui.js +27 -2
- package/build/components/global-styles/ui.js.map +1 -1
- package/build/components/header-edit-mode/index.js +1 -1
- package/build/components/header-edit-mode/index.js.map +1 -1
- package/build/components/page-patterns/index.js +14 -14
- package/build/components/page-patterns/index.js.map +1 -1
- package/build/components/resizable-frame/index.js +2 -1
- package/build/components/resizable-frame/index.js.map +1 -1
- package/build/components/sidebar/index.js +3 -2
- package/build/components/sidebar/index.js.map +1 -1
- package/build/components/sidebar-dataviews/default-views.js +2 -0
- package/build/components/sidebar-dataviews/default-views.js.map +1 -1
- package/build/components/sidebar-navigation-screen-templates-browse/content.js +2 -2
- package/build/components/sidebar-navigation-screen-templates-browse/content.js.map +1 -1
- package/build/components/sidebar-navigation-screen-templates-browse/index.js +7 -5
- package/build/components/sidebar-navigation-screen-templates-browse/index.js.map +1 -1
- package/build/components/style-book/index.js +2 -0
- package/build/components/style-book/index.js.map +1 -1
- package/build-module/components/global-styles/font-library-modal/collection-font-variant.js +4 -4
- package/build-module/components/global-styles/font-library-modal/collection-font-variant.js.map +1 -1
- package/build-module/components/global-styles/font-library-modal/context.js +51 -58
- package/build-module/components/global-styles/font-library-modal/context.js.map +1 -1
- package/build-module/components/global-styles/font-library-modal/font-card.js +11 -16
- package/build-module/components/global-styles/font-library-modal/font-card.js.map +1 -1
- package/build-module/components/global-styles/font-library-modal/font-collection.js +118 -65
- package/build-module/components/global-styles/font-library-modal/font-collection.js.map +1 -1
- package/build-module/components/global-styles/font-library-modal/font-demo.js +30 -9
- package/build-module/components/global-styles/font-library-modal/font-demo.js.map +1 -1
- package/build-module/components/global-styles/font-library-modal/index.js +17 -4
- package/build-module/components/global-styles/font-library-modal/index.js.map +1 -1
- package/build-module/components/global-styles/font-library-modal/installed-fonts.js +151 -79
- package/build-module/components/global-styles/font-library-modal/installed-fonts.js.map +1 -1
- package/build-module/components/global-styles/font-library-modal/library-font-variant.js +4 -4
- package/build-module/components/global-styles/font-library-modal/library-font-variant.js.map +1 -1
- package/build-module/components/global-styles/font-library-modal/upload-fonts.js +9 -15
- package/build-module/components/global-styles/font-library-modal/upload-fonts.js.map +1 -1
- package/build-module/components/global-styles/font-library-modal/utils/index.js +11 -4
- package/build-module/components/global-styles/font-library-modal/utils/index.js.map +1 -1
- package/build-module/components/global-styles/screen-revisions/index.js +2 -2
- package/build-module/components/global-styles/screen-revisions/index.js.map +1 -1
- package/build-module/components/global-styles/ui.js +27 -2
- package/build-module/components/global-styles/ui.js.map +1 -1
- package/build-module/components/header-edit-mode/index.js +1 -1
- package/build-module/components/header-edit-mode/index.js.map +1 -1
- package/build-module/components/page-patterns/index.js +14 -14
- package/build-module/components/page-patterns/index.js.map +1 -1
- package/build-module/components/resizable-frame/index.js +2 -1
- package/build-module/components/resizable-frame/index.js.map +1 -1
- package/build-module/components/sidebar/index.js +3 -2
- package/build-module/components/sidebar/index.js.map +1 -1
- package/build-module/components/sidebar-dataviews/default-views.js +3 -1
- package/build-module/components/sidebar-dataviews/default-views.js.map +1 -1
- package/build-module/components/sidebar-navigation-screen-templates-browse/content.js +2 -2
- package/build-module/components/sidebar-navigation-screen-templates-browse/content.js.map +1 -1
- package/build-module/components/sidebar-navigation-screen-templates-browse/index.js +7 -5
- package/build-module/components/sidebar-navigation-screen-templates-browse/index.js.map +1 -1
- package/build-module/components/style-book/index.js +2 -0
- package/build-module/components/style-book/index.js.map +1 -1
- package/build-style/style-rtl.css +36 -23
- package/build-style/style.css +36 -23
- package/package.json +18 -18
- package/src/components/global-styles/font-library-modal/collection-font-variant.js +4 -4
- package/src/components/global-styles/font-library-modal/context.js +92 -104
- package/src/components/global-styles/font-library-modal/font-card.js +11 -26
- package/src/components/global-styles/font-library-modal/font-collection.js +307 -211
- package/src/components/global-styles/font-library-modal/font-demo.js +38 -4
- package/src/components/global-styles/font-library-modal/index.js +21 -14
- package/src/components/global-styles/font-library-modal/installed-fonts.js +243 -114
- package/src/components/global-styles/font-library-modal/library-font-variant.js +4 -4
- package/src/components/global-styles/font-library-modal/style.scss +15 -8
- package/src/components/global-styles/font-library-modal/upload-fonts.js +16 -18
- package/src/components/global-styles/font-library-modal/utils/index.js +10 -4
- package/src/components/global-styles/font-library-modal/utils/test/getDisplaySrcFromFontFace.spec.js +7 -18
- package/src/components/global-styles/screen-revisions/index.js +5 -2
- package/src/components/global-styles/ui.js +26 -2
- package/src/components/header-edit-mode/index.js +3 -1
- package/src/components/page-patterns/index.js +20 -20
- package/src/components/resizable-frame/index.js +1 -0
- package/src/components/sidebar/index.js +2 -1
- package/src/components/sidebar-dataviews/default-views.js +3 -1
- package/src/components/sidebar-navigation-screen-templates-browse/content.js +2 -2
- package/src/components/sidebar-navigation-screen-templates-browse/index.js +5 -3
- package/src/components/style-book/index.js +5 -1
- package/build/components/global-styles/font-library-modal/collection-font-details.js +0 -50
- package/build/components/global-styles/font-library-modal/collection-font-details.js.map +0 -1
- package/build/components/global-styles/font-library-modal/confirm-delete-dialog.js +0 -30
- package/build/components/global-styles/font-library-modal/confirm-delete-dialog.js.map +0 -1
- package/build/components/global-styles/font-library-modal/library-font-card.js +0 -39
- package/build/components/global-styles/font-library-modal/library-font-card.js.map +0 -1
- package/build/components/global-styles/font-library-modal/tab-panel-layout.js +0 -67
- package/build/components/global-styles/font-library-modal/tab-panel-layout.js.map +0 -1
- package/build-module/components/global-styles/font-library-modal/collection-font-details.js +0 -42
- package/build-module/components/global-styles/font-library-modal/collection-font-details.js.map +0 -1
- package/build-module/components/global-styles/font-library-modal/confirm-delete-dialog.js +0 -23
- package/build-module/components/global-styles/font-library-modal/confirm-delete-dialog.js.map +0 -1
- package/build-module/components/global-styles/font-library-modal/library-font-card.js +0 -31
- package/build-module/components/global-styles/font-library-modal/library-font-card.js.map +0 -1
- package/build-module/components/global-styles/font-library-modal/tab-panel-layout.js +0 -60
- package/build-module/components/global-styles/font-library-modal/tab-panel-layout.js.map +0 -1
- package/src/components/global-styles/font-library-modal/collection-font-details.js +0 -56
- package/src/components/global-styles/font-library-modal/confirm-delete-dialog.js +0 -33
- package/src/components/global-styles/font-library-modal/library-font-card.js +0 -34
- package/src/components/global-styles/font-library-modal/tab-panel-layout.js +0 -85
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
*/
|
|
4
4
|
import { _n, sprintf } from '@wordpress/i18n';
|
|
5
5
|
import {
|
|
6
|
+
__experimentalUseNavigator as useNavigator,
|
|
6
7
|
__experimentalText as Text,
|
|
7
8
|
Button,
|
|
8
9
|
Flex,
|
|
@@ -14,46 +15,30 @@ import {
|
|
|
14
15
|
* Internal dependencies
|
|
15
16
|
*/
|
|
16
17
|
import FontDemo from './font-demo';
|
|
17
|
-
import { getFamilyPreviewStyle } from './utils/preview-styles';
|
|
18
18
|
import { chevronRight } from '@wordpress/icons';
|
|
19
19
|
|
|
20
|
-
function FontCard( { font, onClick, variantsText } ) {
|
|
21
|
-
const fakeFontFace = {
|
|
22
|
-
fontStyle: 'normal',
|
|
23
|
-
fontWeight: '400',
|
|
24
|
-
fontFamily: font.fontFamily,
|
|
25
|
-
fake: true,
|
|
26
|
-
};
|
|
27
|
-
|
|
28
|
-
const displayFontFace =
|
|
29
|
-
font.fontFace && font.fontFace.length
|
|
30
|
-
? font?.fontFace?.find(
|
|
31
|
-
( face ) =>
|
|
32
|
-
face.fontStyle === 'normal' && face.fontWeight === '400'
|
|
33
|
-
) || font.fontFace[ 0 ]
|
|
34
|
-
: fakeFontFace;
|
|
35
|
-
|
|
36
|
-
const demoStyle = getFamilyPreviewStyle( font );
|
|
37
|
-
|
|
20
|
+
function FontCard( { font, onClick, variantsText, navigatorPath } ) {
|
|
38
21
|
const variantsCount = font.fontFace?.length || 1;
|
|
39
22
|
|
|
40
23
|
const style = {
|
|
41
24
|
cursor: !! onClick ? 'pointer' : 'default',
|
|
42
25
|
};
|
|
43
26
|
|
|
27
|
+
const navigator = useNavigator();
|
|
28
|
+
|
|
44
29
|
return (
|
|
45
30
|
<Button
|
|
46
|
-
onClick={
|
|
31
|
+
onClick={ () => {
|
|
32
|
+
onClick();
|
|
33
|
+
if ( navigatorPath ) {
|
|
34
|
+
navigator.goTo( navigatorPath );
|
|
35
|
+
}
|
|
36
|
+
} }
|
|
47
37
|
style={ style }
|
|
48
38
|
className="font-library-modal__font-card"
|
|
49
39
|
>
|
|
50
40
|
<Flex justify="space-between" wrap={ false }>
|
|
51
|
-
<FontDemo
|
|
52
|
-
customPreviewUrl={ font.preview }
|
|
53
|
-
fontFace={ displayFontFace }
|
|
54
|
-
text={ font.name }
|
|
55
|
-
style={ demoStyle }
|
|
56
|
-
/>
|
|
41
|
+
<FontDemo font={ font } />
|
|
57
42
|
<Flex justify="flex-end">
|
|
58
43
|
<FlexItem>
|
|
59
44
|
<Text className="font-library-modal__font-card__count">
|
|
@@ -13,43 +13,58 @@ import {
|
|
|
13
13
|
__experimentalInputControl as InputControl,
|
|
14
14
|
__experimentalText as Text,
|
|
15
15
|
__experimentalHStack as HStack,
|
|
16
|
+
__experimentalVStack as VStack,
|
|
17
|
+
__experimentalNavigatorProvider as NavigatorProvider,
|
|
18
|
+
__experimentalNavigatorScreen as NavigatorScreen,
|
|
19
|
+
__experimentalNavigatorToParentButton as NavigatorToParentButton,
|
|
20
|
+
__experimentalHeading as Heading,
|
|
21
|
+
Notice,
|
|
16
22
|
SelectControl,
|
|
17
23
|
Spinner,
|
|
18
24
|
Icon,
|
|
19
25
|
FlexItem,
|
|
20
26
|
Flex,
|
|
21
27
|
Button,
|
|
28
|
+
DropdownMenu,
|
|
22
29
|
} from '@wordpress/components';
|
|
23
30
|
import { debounce } from '@wordpress/compose';
|
|
24
31
|
import { sprintf, __, _x } from '@wordpress/i18n';
|
|
25
|
-
import {
|
|
32
|
+
import {
|
|
33
|
+
search,
|
|
34
|
+
closeSmall,
|
|
35
|
+
moreVertical,
|
|
36
|
+
chevronLeft,
|
|
37
|
+
} from '@wordpress/icons';
|
|
26
38
|
|
|
27
39
|
/**
|
|
28
40
|
* Internal dependencies
|
|
29
41
|
*/
|
|
30
|
-
import TabPanelLayout from './tab-panel-layout';
|
|
31
42
|
import { FontLibraryContext } from './context';
|
|
32
43
|
import FontCard from './font-card';
|
|
33
44
|
import filterFonts from './utils/filter-fonts';
|
|
34
|
-
import CollectionFontDetails from './collection-font-details';
|
|
35
45
|
import { toggleFont } from './utils/toggleFont';
|
|
36
|
-
import {
|
|
46
|
+
import {
|
|
47
|
+
getFontsOutline,
|
|
48
|
+
isFontFontFaceInOutline,
|
|
49
|
+
} from './utils/fonts-outline';
|
|
37
50
|
import GoogleFontsConfirmDialog from './google-fonts-confirm-dialog';
|
|
38
51
|
import { downloadFontFaceAssets } from './utils';
|
|
52
|
+
import { sortFontFaces } from './utils/sort-font-faces';
|
|
53
|
+
import CollectionFontVariant from './collection-font-variant';
|
|
39
54
|
|
|
40
55
|
const DEFAULT_CATEGORY = {
|
|
41
56
|
slug: 'all',
|
|
42
57
|
name: _x( 'All', 'font categories' ),
|
|
43
58
|
};
|
|
59
|
+
|
|
60
|
+
const LOCAL_STORAGE_ITEM = 'wp-font-library-google-fonts-permission';
|
|
61
|
+
const MIN_WINDOW_HEIGHT = 500;
|
|
62
|
+
|
|
44
63
|
function FontCollection( { slug } ) {
|
|
45
64
|
const requiresPermission = slug === 'google-fonts';
|
|
46
65
|
|
|
47
66
|
const getGoogleFontsPermissionFromStorage = () => {
|
|
48
|
-
return (
|
|
49
|
-
window.localStorage.getItem(
|
|
50
|
-
'wp-font-library-google-fonts-permission'
|
|
51
|
-
) === 'true'
|
|
52
|
-
);
|
|
67
|
+
return window.localStorage.getItem( LOCAL_STORAGE_ITEM ) === 'true';
|
|
53
68
|
};
|
|
54
69
|
|
|
55
70
|
const [ selectedFont, setSelectedFont ] = useState( null );
|
|
@@ -59,8 +74,14 @@ function FontCollection( { slug } ) {
|
|
|
59
74
|
const [ renderConfirmDialog, setRenderConfirmDialog ] = useState(
|
|
60
75
|
requiresPermission && ! getGoogleFontsPermissionFromStorage()
|
|
61
76
|
);
|
|
62
|
-
const {
|
|
63
|
-
|
|
77
|
+
const {
|
|
78
|
+
collections,
|
|
79
|
+
getFontCollection,
|
|
80
|
+
installFonts,
|
|
81
|
+
isInstalling,
|
|
82
|
+
notice,
|
|
83
|
+
setNotice,
|
|
84
|
+
} = useContext( FontLibraryContext );
|
|
64
85
|
const selectedCollection = collections.find(
|
|
65
86
|
( collection ) => collection.slug === slug
|
|
66
87
|
);
|
|
@@ -76,6 +97,11 @@ function FontCollection( { slug } ) {
|
|
|
76
97
|
return () => window.removeEventListener( 'storage', handleStorage );
|
|
77
98
|
}, [ slug, requiresPermission ] );
|
|
78
99
|
|
|
100
|
+
const revokeAccess = () => {
|
|
101
|
+
window.localStorage.setItem( LOCAL_STORAGE_ITEM, 'false' );
|
|
102
|
+
window.dispatchEvent( new Event( 'storage' ) );
|
|
103
|
+
};
|
|
104
|
+
|
|
79
105
|
useEffect( () => {
|
|
80
106
|
const fetchFontCollection = async () => {
|
|
81
107
|
try {
|
|
@@ -118,7 +144,8 @@ function FontCollection( { slug } ) {
|
|
|
118
144
|
|
|
119
145
|
// NOTE: The height of the font library modal unavailable to use for rendering font family items is roughly 417px
|
|
120
146
|
// The height of each font family item is 61px.
|
|
121
|
-
const
|
|
147
|
+
const windowHeight = Math.max( window.innerHeight, MIN_WINDOW_HEIGHT );
|
|
148
|
+
const pageSize = Math.floor( ( windowHeight - 417 ) / 61 );
|
|
122
149
|
const totalPages = Math.ceil( fonts.length / pageSize );
|
|
123
150
|
const itemsStart = ( page - 1 ) * pageSize;
|
|
124
151
|
const itemsLimit = page * pageSize;
|
|
@@ -146,10 +173,6 @@ function FontCollection( { slug } ) {
|
|
|
146
173
|
setPage( 1 );
|
|
147
174
|
};
|
|
148
175
|
|
|
149
|
-
const handleUnselectFont = () => {
|
|
150
|
-
setSelectedFont( null );
|
|
151
|
-
};
|
|
152
|
-
|
|
153
176
|
const handleToggleVariant = ( font, face ) => {
|
|
154
177
|
const newFontsToInstall = toggleFont( font, face, fontsToInstall );
|
|
155
178
|
setFontsToInstall( newFontsToInstall );
|
|
@@ -191,7 +214,7 @@ function FontCollection( { slug } ) {
|
|
|
191
214
|
}
|
|
192
215
|
|
|
193
216
|
try {
|
|
194
|
-
await
|
|
217
|
+
await installFonts( [ fontFamily ] );
|
|
195
218
|
setNotice( {
|
|
196
219
|
type: 'success',
|
|
197
220
|
message: __( 'Fonts were installed successfully.' ),
|
|
@@ -205,212 +228,285 @@ function FontCollection( { slug } ) {
|
|
|
205
228
|
resetFontsToInstall();
|
|
206
229
|
};
|
|
207
230
|
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
231
|
+
const getSortedFontFaces = ( fontFamily ) => {
|
|
232
|
+
if ( ! fontFamily ) {
|
|
233
|
+
return [];
|
|
234
|
+
}
|
|
235
|
+
if ( ! fontFamily.fontFace || ! fontFamily.fontFace.length ) {
|
|
236
|
+
return [
|
|
237
|
+
{
|
|
238
|
+
fontFamily: fontFamily.fontFamily,
|
|
239
|
+
fontStyle: 'normal',
|
|
240
|
+
fontWeight: '400',
|
|
241
|
+
},
|
|
242
|
+
];
|
|
243
|
+
}
|
|
244
|
+
return sortFontFaces( fontFamily.fontFace );
|
|
245
|
+
};
|
|
246
|
+
|
|
247
|
+
if ( renderConfirmDialog ) {
|
|
248
|
+
return <GoogleFontsConfirmDialog />;
|
|
249
|
+
}
|
|
250
|
+
|
|
251
|
+
const ActionsComponent = () => {
|
|
252
|
+
if ( slug !== 'google-fonts' || renderConfirmDialog || selectedFont ) {
|
|
253
|
+
return null;
|
|
254
|
+
}
|
|
255
|
+
return (
|
|
256
|
+
<DropdownMenu
|
|
257
|
+
icon={ moreVertical }
|
|
258
|
+
label={ __( 'Actions' ) }
|
|
259
|
+
popoverProps={ {
|
|
260
|
+
position: 'bottom left',
|
|
261
|
+
} }
|
|
262
|
+
controls={ [
|
|
263
|
+
{
|
|
264
|
+
title: __( 'Revoke access to Google Fonts' ),
|
|
265
|
+
onClick: revokeAccess,
|
|
266
|
+
},
|
|
267
|
+
] }
|
|
222
268
|
/>
|
|
223
269
|
);
|
|
224
|
-
}
|
|
270
|
+
};
|
|
225
271
|
|
|
226
272
|
return (
|
|
227
|
-
<
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
<Spacer margin={
|
|
243
|
-
<
|
|
244
|
-
|
|
245
|
-
|
|
273
|
+
<div className="font-library-modal__tabpanel-layout">
|
|
274
|
+
<NavigatorProvider
|
|
275
|
+
initialPath="/"
|
|
276
|
+
className="font-library-modal__tabpanel-layout"
|
|
277
|
+
>
|
|
278
|
+
<NavigatorScreen path="/">
|
|
279
|
+
<HStack justify="space-between">
|
|
280
|
+
<VStack>
|
|
281
|
+
<Heading level={ 2 } size={ 13 }>
|
|
282
|
+
{ selectedCollection.name }
|
|
283
|
+
</Heading>
|
|
284
|
+
<Text>{ selectedCollection.description }</Text>
|
|
285
|
+
</VStack>
|
|
286
|
+
<ActionsComponent />
|
|
287
|
+
</HStack>
|
|
288
|
+
<Spacer margin={ 4 } />
|
|
289
|
+
<Flex>
|
|
290
|
+
<FlexItem>
|
|
291
|
+
<InputControl
|
|
292
|
+
value={ filters.search }
|
|
293
|
+
placeholder={ __( 'Font name…' ) }
|
|
294
|
+
label={ __( 'Search' ) }
|
|
295
|
+
onChange={ debouncedUpdateSearchInput }
|
|
296
|
+
prefix={ <Icon icon={ search } /> }
|
|
297
|
+
suffix={
|
|
298
|
+
filters?.search ? (
|
|
299
|
+
<Icon
|
|
300
|
+
icon={ closeSmall }
|
|
301
|
+
onClick={ resetSearch }
|
|
302
|
+
/>
|
|
303
|
+
) : null
|
|
304
|
+
}
|
|
305
|
+
/>
|
|
306
|
+
</FlexItem>
|
|
307
|
+
<FlexItem>
|
|
308
|
+
<SelectControl
|
|
309
|
+
label={ __( 'Category' ) }
|
|
310
|
+
value={ filters.category }
|
|
311
|
+
onChange={ handleCategoryFilter }
|
|
312
|
+
>
|
|
313
|
+
{ categories &&
|
|
314
|
+
categories.map( ( category ) => (
|
|
315
|
+
<option
|
|
316
|
+
value={ category.slug }
|
|
317
|
+
key={ category.slug }
|
|
318
|
+
>
|
|
319
|
+
{ category.name }
|
|
320
|
+
</option>
|
|
321
|
+
) ) }
|
|
322
|
+
</SelectControl>
|
|
323
|
+
</FlexItem>
|
|
324
|
+
</Flex>
|
|
325
|
+
|
|
326
|
+
<Spacer margin={ 4 } />
|
|
327
|
+
|
|
328
|
+
{ ! selectedCollection?.font_families && ! notice && (
|
|
329
|
+
<Spinner />
|
|
330
|
+
) }
|
|
331
|
+
|
|
332
|
+
{ !! selectedCollection?.font_families?.length &&
|
|
333
|
+
! fonts.length && (
|
|
334
|
+
<Text>
|
|
335
|
+
{ __(
|
|
336
|
+
'No fonts found. Try with a different search term'
|
|
337
|
+
) }
|
|
338
|
+
</Text>
|
|
339
|
+
) }
|
|
246
340
|
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
341
|
+
<div className="font-library-modal__fonts-grid__main">
|
|
342
|
+
{ items.map( ( font ) => (
|
|
343
|
+
<FontCard
|
|
344
|
+
key={ font.font_family_settings.slug }
|
|
345
|
+
font={ font.font_family_settings }
|
|
346
|
+
navigatorPath={ '/fontFamily' }
|
|
347
|
+
onClick={ () => {
|
|
348
|
+
setSelectedFont(
|
|
349
|
+
font.font_family_settings
|
|
350
|
+
);
|
|
351
|
+
} }
|
|
352
|
+
/>
|
|
353
|
+
) ) }
|
|
354
|
+
</div>
|
|
355
|
+
</NavigatorScreen>
|
|
356
|
+
|
|
357
|
+
<NavigatorScreen path="/fontFamily">
|
|
358
|
+
<Flex justify="flex-start">
|
|
359
|
+
<NavigatorToParentButton
|
|
360
|
+
icon={ chevronLeft }
|
|
361
|
+
isSmall
|
|
362
|
+
onClick={ () => {
|
|
363
|
+
setSelectedFont( null );
|
|
364
|
+
} }
|
|
365
|
+
aria-label={ __( 'Navigate to the previous view' ) }
|
|
264
366
|
/>
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
value={ filters.category }
|
|
270
|
-
onChange={ handleCategoryFilter }
|
|
367
|
+
<Heading
|
|
368
|
+
level={ 2 }
|
|
369
|
+
size={ 13 }
|
|
370
|
+
className="edit-site-global-styles-header"
|
|
271
371
|
>
|
|
272
|
-
{
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
) ) }
|
|
281
|
-
|
|
282
|
-
|
|
372
|
+
{ selectedFont?.name }
|
|
373
|
+
</Heading>
|
|
374
|
+
</Flex>
|
|
375
|
+
{ notice && (
|
|
376
|
+
<>
|
|
377
|
+
<Spacer margin={ 1 } />
|
|
378
|
+
<Notice
|
|
379
|
+
status={ notice.type }
|
|
380
|
+
onRemove={ () => setNotice( null ) }
|
|
381
|
+
>
|
|
382
|
+
{ notice.message }
|
|
383
|
+
</Notice>
|
|
384
|
+
<Spacer margin={ 1 } />
|
|
385
|
+
</>
|
|
386
|
+
) }
|
|
387
|
+
<Spacer margin={ 4 } />
|
|
388
|
+
<Text> { __( 'Select font variants to install.' ) } </Text>
|
|
389
|
+
<Spacer margin={ 4 } />
|
|
390
|
+
<VStack spacing={ 0 }>
|
|
391
|
+
<Spacer margin={ 8 } />
|
|
392
|
+
{ getSortedFontFaces( selectedFont ).map(
|
|
393
|
+
( face, i ) => (
|
|
394
|
+
<CollectionFontVariant
|
|
395
|
+
font={ selectedFont }
|
|
396
|
+
face={ face }
|
|
397
|
+
key={ `face${ i }` }
|
|
398
|
+
handleToggleVariant={ handleToggleVariant }
|
|
399
|
+
selected={ isFontFontFaceInOutline(
|
|
400
|
+
selectedFont.slug,
|
|
401
|
+
selectedFont.fontFace ? face : null, // If the font has no fontFace, we want to check if the font is in the outline
|
|
402
|
+
fontToInstallOutline
|
|
403
|
+
) }
|
|
404
|
+
/>
|
|
405
|
+
)
|
|
406
|
+
) }
|
|
407
|
+
</VStack>
|
|
408
|
+
<Spacer margin={ 16 } />
|
|
409
|
+
</NavigatorScreen>
|
|
410
|
+
</NavigatorProvider>
|
|
411
|
+
|
|
412
|
+
{ selectedFont && (
|
|
413
|
+
<Flex
|
|
414
|
+
justify="flex-end"
|
|
415
|
+
className="font-library-modal__tabpanel-layout__footer"
|
|
416
|
+
>
|
|
417
|
+
<Button
|
|
418
|
+
variant="primary"
|
|
419
|
+
onClick={ handleInstall }
|
|
420
|
+
isBusy={ isInstalling }
|
|
421
|
+
disabled={ fontsToInstall.length === 0 || isInstalling }
|
|
422
|
+
__experimentalIsFocusable
|
|
423
|
+
>
|
|
424
|
+
{ __( 'Install' ) }
|
|
425
|
+
</Button>
|
|
283
426
|
</Flex>
|
|
284
427
|
) }
|
|
285
428
|
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
{
|
|
296
|
-
|
|
429
|
+
{ ! selectedFont && (
|
|
430
|
+
<Flex
|
|
431
|
+
justify="center"
|
|
432
|
+
className="font-library-modal__tabpanel-layout__footer"
|
|
433
|
+
>
|
|
434
|
+
<Button
|
|
435
|
+
label={ __( 'First page' ) }
|
|
436
|
+
size="compact"
|
|
437
|
+
onClick={ () => setPage( 1 ) }
|
|
438
|
+
disabled={ page === 1 }
|
|
439
|
+
__experimentalIsFocusable
|
|
440
|
+
>
|
|
441
|
+
<span>«</span>
|
|
442
|
+
</Button>
|
|
443
|
+
<Button
|
|
444
|
+
label={ __( 'Previous page' ) }
|
|
445
|
+
size="compact"
|
|
446
|
+
onClick={ () => setPage( page - 1 ) }
|
|
447
|
+
disabled={ page === 1 }
|
|
448
|
+
__experimentalIsFocusable
|
|
449
|
+
>
|
|
450
|
+
<span>‹</span>
|
|
451
|
+
</Button>
|
|
452
|
+
<HStack
|
|
453
|
+
justify="flex-start"
|
|
454
|
+
expanded={ false }
|
|
455
|
+
spacing={ 2 }
|
|
456
|
+
>
|
|
457
|
+
{ createInterpolateElement(
|
|
458
|
+
sprintf(
|
|
459
|
+
// translators: %s: Total number of pages.
|
|
460
|
+
_x(
|
|
461
|
+
'Page <CurrenPageControl /> of %s',
|
|
462
|
+
'paging'
|
|
463
|
+
),
|
|
464
|
+
totalPages
|
|
465
|
+
),
|
|
466
|
+
{
|
|
467
|
+
CurrenPageControl: (
|
|
468
|
+
<SelectControl
|
|
469
|
+
aria-label={ __( 'Current page' ) }
|
|
470
|
+
value={ page }
|
|
471
|
+
options={ [
|
|
472
|
+
...Array( totalPages ),
|
|
473
|
+
].map( ( e, i ) => {
|
|
474
|
+
return {
|
|
475
|
+
label: i + 1,
|
|
476
|
+
value: i + 1,
|
|
477
|
+
};
|
|
478
|
+
} ) }
|
|
479
|
+
onChange={ ( newPage ) =>
|
|
480
|
+
setPage( parseInt( newPage ) )
|
|
481
|
+
}
|
|
482
|
+
size={ 'compact' }
|
|
483
|
+
__nextHasNoMarginBottom
|
|
484
|
+
/>
|
|
485
|
+
),
|
|
486
|
+
}
|
|
297
487
|
) }
|
|
298
|
-
</
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
/>
|
|
319
|
-
) ) }
|
|
320
|
-
</div>
|
|
488
|
+
</HStack>
|
|
489
|
+
<Button
|
|
490
|
+
label={ __( 'Next page' ) }
|
|
491
|
+
size="compact"
|
|
492
|
+
onClick={ () => setPage( page + 1 ) }
|
|
493
|
+
disabled={ page === totalPages }
|
|
494
|
+
__experimentalIsFocusable
|
|
495
|
+
>
|
|
496
|
+
<span>›</span>
|
|
497
|
+
</Button>
|
|
498
|
+
<Button
|
|
499
|
+
label={ __( 'Last page' ) }
|
|
500
|
+
size="compact"
|
|
501
|
+
onClick={ () => setPage( totalPages ) }
|
|
502
|
+
disabled={ page === totalPages }
|
|
503
|
+
__experimentalIsFocusable
|
|
504
|
+
>
|
|
505
|
+
<span>»</span>
|
|
506
|
+
</Button>
|
|
507
|
+
</Flex>
|
|
321
508
|
) }
|
|
322
|
-
</
|
|
323
|
-
);
|
|
324
|
-
}
|
|
325
|
-
|
|
326
|
-
function PaginationFooter( { page, totalPages, setPage } ) {
|
|
327
|
-
return (
|
|
328
|
-
<Flex justify="center">
|
|
329
|
-
<Button
|
|
330
|
-
label={ __( 'First page' ) }
|
|
331
|
-
size="compact"
|
|
332
|
-
onClick={ () => setPage( 1 ) }
|
|
333
|
-
disabled={ page === 1 }
|
|
334
|
-
__experimentalIsFocusable
|
|
335
|
-
>
|
|
336
|
-
<span>«</span>
|
|
337
|
-
</Button>
|
|
338
|
-
<Button
|
|
339
|
-
label={ __( 'Previous page' ) }
|
|
340
|
-
size="compact"
|
|
341
|
-
onClick={ () => setPage( page - 1 ) }
|
|
342
|
-
disabled={ page === 1 }
|
|
343
|
-
__experimentalIsFocusable
|
|
344
|
-
>
|
|
345
|
-
<span>‹</span>
|
|
346
|
-
</Button>
|
|
347
|
-
<HStack justify="flex-start" expanded={ false } spacing={ 2 }>
|
|
348
|
-
{ createInterpolateElement(
|
|
349
|
-
sprintf(
|
|
350
|
-
// translators: %s: Total number of pages.
|
|
351
|
-
_x( 'Page <CurrenPageControl /> of %s', 'paging' ),
|
|
352
|
-
totalPages
|
|
353
|
-
),
|
|
354
|
-
{
|
|
355
|
-
CurrenPageControl: (
|
|
356
|
-
<SelectControl
|
|
357
|
-
aria-label={ __( 'Current page' ) }
|
|
358
|
-
value={ page }
|
|
359
|
-
options={ [ ...Array( totalPages ) ].map(
|
|
360
|
-
( e, i ) => {
|
|
361
|
-
return {
|
|
362
|
-
label: i + 1,
|
|
363
|
-
value: i + 1,
|
|
364
|
-
};
|
|
365
|
-
}
|
|
366
|
-
) }
|
|
367
|
-
onChange={ ( newPage ) =>
|
|
368
|
-
setPage( parseInt( newPage ) )
|
|
369
|
-
}
|
|
370
|
-
size={ 'compact' }
|
|
371
|
-
__nextHasNoMarginBottom
|
|
372
|
-
/>
|
|
373
|
-
),
|
|
374
|
-
}
|
|
375
|
-
) }
|
|
376
|
-
</HStack>
|
|
377
|
-
<Button
|
|
378
|
-
label={ __( 'Next page' ) }
|
|
379
|
-
size="compact"
|
|
380
|
-
onClick={ () => setPage( page + 1 ) }
|
|
381
|
-
disabled={ page === totalPages }
|
|
382
|
-
__experimentalIsFocusable
|
|
383
|
-
>
|
|
384
|
-
<span>›</span>
|
|
385
|
-
</Button>
|
|
386
|
-
<Button
|
|
387
|
-
label={ __( 'Last page' ) }
|
|
388
|
-
size="compact"
|
|
389
|
-
onClick={ () => setPage( totalPages ) }
|
|
390
|
-
disabled={ page === totalPages }
|
|
391
|
-
__experimentalIsFocusable
|
|
392
|
-
>
|
|
393
|
-
<span>»</span>
|
|
394
|
-
</Button>
|
|
395
|
-
</Flex>
|
|
396
|
-
);
|
|
397
|
-
}
|
|
398
|
-
|
|
399
|
-
function InstallFooter( { handleInstall, isDisabled } ) {
|
|
400
|
-
const { isInstalling } = useContext( FontLibraryContext );
|
|
401
|
-
|
|
402
|
-
return (
|
|
403
|
-
<Flex justify="flex-end">
|
|
404
|
-
<Button
|
|
405
|
-
variant="primary"
|
|
406
|
-
onClick={ handleInstall }
|
|
407
|
-
isBusy={ isInstalling }
|
|
408
|
-
disabled={ isDisabled || isInstalling }
|
|
409
|
-
__experimentalIsFocusable
|
|
410
|
-
>
|
|
411
|
-
{ __( 'Install' ) }
|
|
412
|
-
</Button>
|
|
413
|
-
</Flex>
|
|
509
|
+
</div>
|
|
414
510
|
);
|
|
415
511
|
}
|
|
416
512
|
|