@wordpress/edit-site 5.25.1-next.79a6196f.0 → 5.27.0
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/CHANGELOG.md +4 -0
- package/build/components/actions/index.js +139 -36
- package/build/components/actions/index.js.map +1 -1
- package/build/components/editor-canvas-container/index.js +1 -1
- package/build/components/editor-canvas-container/index.js.map +1 -1
- package/build/components/global-styles/font-families.js +3 -2
- package/build/components/global-styles/font-families.js.map +1 -1
- package/build/components/global-styles/font-family-item.js +3 -4
- package/build/components/global-styles/font-family-item.js.map +1 -1
- package/build/components/global-styles/font-library-modal/context.js +80 -41
- package/build/components/global-styles/font-library-modal/context.js.map +1 -1
- package/build/components/global-styles/font-library-modal/font-collection.js +49 -22
- package/build/components/global-styles/font-library-modal/font-collection.js.map +1 -1
- package/build/components/global-styles/font-library-modal/fonts-grid.js +4 -1
- package/build/components/global-styles/font-library-modal/fonts-grid.js.map +1 -1
- package/build/components/global-styles/font-library-modal/index.js +4 -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 +16 -8
- package/build/components/global-styles/font-library-modal/installed-fonts.js.map +1 -1
- package/build/components/global-styles/font-library-modal/library-font-card.js +1 -1
- package/build/components/global-styles/font-library-modal/library-font-card.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/local-fonts.js +13 -4
- package/build/components/global-styles/font-library-modal/local-fonts.js.map +1 -1
- package/build/components/global-styles/font-library-modal/resolvers.js +49 -20
- package/build/components/global-styles/font-library-modal/resolvers.js.map +1 -1
- package/build/components/global-styles/font-library-modal/utils/filter-fonts.js +17 -2
- package/build/components/global-styles/font-library-modal/utils/filter-fonts.js.map +1 -1
- package/build/components/global-styles/font-library-modal/utils/index.js +103 -17
- package/build/components/global-styles/font-library-modal/utils/index.js.map +1 -1
- package/build/components/global-styles/font-library-modal/utils/preview-styles.js +4 -3
- package/build/components/global-styles/font-library-modal/utils/preview-styles.js.map +1 -1
- package/build/components/global-styles/screen-typography.js +4 -1
- package/build/components/global-styles/screen-typography.js.map +1 -1
- package/build/components/layout/hooks.js +6 -5
- package/build/components/layout/hooks.js.map +1 -1
- package/build/components/layout/index.js +19 -28
- package/build/components/layout/index.js.map +1 -1
- package/build/components/layout/router.js +135 -0
- package/build/components/layout/router.js.map +1 -0
- package/build/components/page-pages/index.js +92 -69
- package/build/components/page-pages/index.js.map +1 -1
- package/build/components/page-patterns/dataviews-pattern-actions.js +11 -6
- package/build/components/page-patterns/dataviews-pattern-actions.js.map +1 -1
- package/build/components/page-patterns/index.js +295 -15
- package/build/components/page-patterns/index.js.map +1 -1
- package/build/components/{page-templates/template-actions.js → page-templates-template-parts/actions.js} +51 -23
- package/build/components/page-templates-template-parts/actions.js.map +1 -0
- package/build/components/page-templates-template-parts/add-new-template-part.js.map +1 -0
- package/build/components/page-templates-template-parts/index.js +395 -0
- package/build/components/page-templates-template-parts/index.js.map +1 -0
- package/build/components/preferences-modal/index.js +9 -134
- package/build/components/preferences-modal/index.js.map +1 -1
- package/build/components/revisions/index.js +1 -1
- package/build/components/revisions/index.js.map +1 -1
- package/build/components/save-button/index.js +4 -2
- package/build/components/save-button/index.js.map +1 -1
- package/build/components/save-panel/index.js +6 -5
- package/build/components/save-panel/index.js.map +1 -1
- package/build/components/sidebar/index.js +3 -1
- package/build/components/sidebar/index.js.map +1 -1
- package/build/components/sidebar-dataviews/dataview-item.js +3 -1
- package/build/components/sidebar-dataviews/dataview-item.js.map +1 -1
- package/build/components/sidebar-dataviews/default-views.js +4 -2
- package/build/components/sidebar-dataviews/default-views.js.map +1 -1
- package/build/components/sidebar-dataviews/index.js +2 -2
- package/build/components/sidebar-dataviews/index.js.map +1 -1
- package/build/components/sidebar-navigation-screen/index.js +8 -7
- package/build/components/sidebar-navigation-screen/index.js.map +1 -1
- package/build/components/sidebar-navigation-screen-pages/index.js +2 -10
- package/build/components/sidebar-navigation-screen-pages/index.js.map +1 -1
- package/build/components/sidebar-navigation-screen-pages-dataviews/index.js +26 -3
- package/build/components/sidebar-navigation-screen-pages-dataviews/index.js.map +1 -1
- package/build/components/sidebar-navigation-screen-templates-browse/content.js +76 -0
- package/build/components/sidebar-navigation-screen-templates-browse/content.js.map +1 -0
- package/build/components/sidebar-navigation-screen-templates-browse/index.js +9 -2
- package/build/components/sidebar-navigation-screen-templates-browse/index.js.map +1 -1
- package/build/components/site-hub/index.js +3 -1
- package/build/components/site-hub/index.js.map +1 -1
- package/build/components/sync-state-with-url/use-init-edited-entity-from-url.js +47 -12
- package/build/components/sync-state-with-url/use-init-edited-entity-from-url.js.map +1 -1
- package/build/components/sync-state-with-url/use-sync-path-with-url.js +25 -2
- package/build/components/sync-state-with-url/use-sync-path-with-url.js.map +1 -1
- package/build/hooks/commands/use-edit-mode-commands.js +33 -5
- package/build/hooks/commands/use-edit-mode-commands.js.map +1 -1
- package/build/hooks/push-changes-to-global-styles/index.js +13 -6
- package/build/hooks/push-changes-to-global-styles/index.js.map +1 -1
- package/build/hooks/template-part-edit.js +7 -6
- package/build/hooks/template-part-edit.js.map +1 -1
- package/build/index.js +1 -1
- package/build/index.js.map +1 -1
- package/build/store/actions.js +11 -29
- package/build/store/actions.js.map +1 -1
- package/build/store/private-actions.js +85 -1
- package/build/store/private-actions.js.map +1 -1
- package/build/store/selectors.js +2 -2
- package/build/store/selectors.js.map +1 -1
- package/build/utils/get-is-list-page.js +1 -1
- package/build/utils/get-is-list-page.js.map +1 -1
- package/build/utils/use-actual-current-theme.js +32 -0
- package/build/utils/use-actual-current-theme.js.map +1 -0
- package/build-module/components/actions/index.js +139 -36
- package/build-module/components/actions/index.js.map +1 -1
- package/build-module/components/editor-canvas-container/index.js +1 -1
- package/build-module/components/editor-canvas-container/index.js.map +1 -1
- package/build-module/components/global-styles/font-families.js +3 -2
- package/build-module/components/global-styles/font-families.js.map +1 -1
- package/build-module/components/global-styles/font-family-item.js +4 -5
- package/build-module/components/global-styles/font-family-item.js.map +1 -1
- package/build-module/components/global-styles/font-library-modal/context.js +82 -42
- package/build-module/components/global-styles/font-library-modal/context.js.map +1 -1
- package/build-module/components/global-styles/font-library-modal/font-collection.js +49 -22
- package/build-module/components/global-styles/font-library-modal/font-collection.js.map +1 -1
- package/build-module/components/global-styles/font-library-modal/fonts-grid.js +4 -1
- package/build-module/components/global-styles/font-library-modal/fonts-grid.js.map +1 -1
- package/build-module/components/global-styles/font-library-modal/index.js +4 -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 +16 -8
- 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-card.js +1 -1
- package/build-module/components/global-styles/font-library-modal/library-font-card.js.map +1 -1
- package/build-module/components/global-styles/font-library-modal/library-font-variant.js +2 -2
- 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/local-fonts.js +13 -4
- package/build-module/components/global-styles/font-library-modal/local-fonts.js.map +1 -1
- package/build-module/components/global-styles/font-library-modal/resolvers.js +45 -18
- package/build-module/components/global-styles/font-library-modal/resolvers.js.map +1 -1
- package/build-module/components/global-styles/font-library-modal/utils/filter-fonts.js +17 -2
- package/build-module/components/global-styles/font-library-modal/utils/filter-fonts.js.map +1 -1
- package/build-module/components/global-styles/font-library-modal/utils/index.js +99 -16
- package/build-module/components/global-styles/font-library-modal/utils/index.js.map +1 -1
- package/build-module/components/global-styles/font-library-modal/utils/preview-styles.js +4 -3
- package/build-module/components/global-styles/font-library-modal/utils/preview-styles.js.map +1 -1
- package/build-module/components/global-styles/screen-typography.js +4 -1
- package/build-module/components/global-styles/screen-typography.js.map +1 -1
- package/build-module/components/layout/hooks.js +6 -5
- package/build-module/components/layout/hooks.js.map +1 -1
- package/build-module/components/layout/index.js +19 -28
- package/build-module/components/layout/index.js.map +1 -1
- package/build-module/components/layout/router.js +127 -0
- package/build-module/components/layout/router.js.map +1 -0
- package/build-module/components/page-pages/index.js +91 -70
- package/build-module/components/page-pages/index.js.map +1 -1
- package/build-module/components/page-patterns/dataviews-pattern-actions.js +11 -6
- package/build-module/components/page-patterns/dataviews-pattern-actions.js.map +1 -1
- package/build-module/components/page-patterns/index.js +296 -16
- package/build-module/components/page-patterns/index.js.map +1 -1
- package/build-module/components/{page-templates/template-actions.js → page-templates-template-parts/actions.js} +52 -24
- package/build-module/components/page-templates-template-parts/actions.js.map +1 -0
- package/build-module/components/page-templates-template-parts/add-new-template-part.js.map +1 -0
- package/build-module/components/page-templates-template-parts/index.js +385 -0
- package/build-module/components/page-templates-template-parts/index.js.map +1 -0
- package/build-module/components/preferences-modal/index.js +12 -136
- package/build-module/components/preferences-modal/index.js.map +1 -1
- package/build-module/components/revisions/index.js +1 -1
- package/build-module/components/revisions/index.js.map +1 -1
- package/build-module/components/save-button/index.js +4 -2
- package/build-module/components/save-button/index.js.map +1 -1
- package/build-module/components/save-panel/index.js +7 -6
- package/build-module/components/save-panel/index.js.map +1 -1
- package/build-module/components/sidebar/index.js +3 -1
- package/build-module/components/sidebar/index.js.map +1 -1
- package/build-module/components/sidebar-dataviews/dataview-item.js +3 -1
- package/build-module/components/sidebar-dataviews/dataview-item.js.map +1 -1
- package/build-module/components/sidebar-dataviews/default-views.js +4 -2
- package/build-module/components/sidebar-dataviews/default-views.js.map +1 -1
- package/build-module/components/sidebar-dataviews/index.js +2 -2
- package/build-module/components/sidebar-dataviews/index.js.map +1 -1
- package/build-module/components/sidebar-navigation-screen/index.js +8 -7
- package/build-module/components/sidebar-navigation-screen/index.js.map +1 -1
- package/build-module/components/sidebar-navigation-screen-pages/index.js +2 -10
- package/build-module/components/sidebar-navigation-screen-pages/index.js.map +1 -1
- package/build-module/components/sidebar-navigation-screen-pages-dataviews/index.js +27 -4
- package/build-module/components/sidebar-navigation-screen-pages-dataviews/index.js.map +1 -1
- package/build-module/components/sidebar-navigation-screen-templates-browse/content.js +68 -0
- package/build-module/components/sidebar-navigation-screen-templates-browse/content.js.map +1 -0
- package/build-module/components/sidebar-navigation-screen-templates-browse/index.js +9 -2
- package/build-module/components/sidebar-navigation-screen-templates-browse/index.js.map +1 -1
- package/build-module/components/site-hub/index.js +3 -1
- package/build-module/components/site-hub/index.js.map +1 -1
- package/build-module/components/sync-state-with-url/use-init-edited-entity-from-url.js +47 -11
- package/build-module/components/sync-state-with-url/use-init-edited-entity-from-url.js.map +1 -1
- package/build-module/components/sync-state-with-url/use-sync-path-with-url.js +25 -2
- package/build-module/components/sync-state-with-url/use-sync-path-with-url.js.map +1 -1
- package/build-module/hooks/commands/use-edit-mode-commands.js +33 -5
- package/build-module/hooks/commands/use-edit-mode-commands.js.map +1 -1
- package/build-module/hooks/push-changes-to-global-styles/index.js +13 -6
- package/build-module/hooks/push-changes-to-global-styles/index.js.map +1 -1
- package/build-module/hooks/template-part-edit.js +7 -6
- package/build-module/hooks/template-part-edit.js.map +1 -1
- package/build-module/index.js +1 -1
- package/build-module/index.js.map +1 -1
- package/build-module/store/actions.js +13 -30
- package/build-module/store/actions.js.map +1 -1
- package/build-module/store/private-actions.js +83 -0
- package/build-module/store/private-actions.js.map +1 -1
- package/build-module/store/selectors.js +2 -2
- package/build-module/store/selectors.js.map +1 -1
- package/build-module/utils/get-is-list-page.js +1 -1
- package/build-module/utils/get-is-list-page.js.map +1 -1
- package/build-module/utils/use-actual-current-theme.js +24 -0
- package/build-module/utils/use-actual-current-theme.js.map +1 -0
- package/build-style/style-rtl.css +293 -188
- package/build-style/style.css +293 -188
- package/package.json +42 -42
- package/src/components/actions/index.js +236 -84
- package/src/components/editor-canvas-container/index.js +1 -1
- package/src/components/global-styles/font-families.js +14 -8
- package/src/components/global-styles/font-family-item.js +7 -4
- package/src/components/global-styles/font-library-modal/context.js +156 -50
- package/src/components/global-styles/font-library-modal/font-collection.js +56 -21
- package/src/components/global-styles/font-library-modal/fonts-grid.js +6 -2
- package/src/components/global-styles/font-library-modal/index.js +4 -4
- package/src/components/global-styles/font-library-modal/installed-fonts.js +18 -8
- package/src/components/global-styles/font-library-modal/library-font-card.js +2 -1
- package/src/components/global-styles/font-library-modal/library-font-variant.js +10 -9
- package/src/components/global-styles/font-library-modal/local-fonts.js +14 -4
- package/src/components/global-styles/font-library-modal/resolvers.js +50 -17
- package/src/components/global-styles/font-library-modal/style.scss +1 -0
- package/src/components/global-styles/font-library-modal/utils/filter-fonts.js +19 -2
- package/src/components/global-styles/font-library-modal/utils/index.js +136 -29
- package/src/components/global-styles/font-library-modal/utils/preview-styles.js +7 -3
- package/src/components/global-styles/font-library-modal/utils/test/filter-fonts.spec.js +40 -10
- package/src/components/global-styles/font-library-modal/utils/test/preview-styles.spec.js +5 -5
- package/src/components/global-styles/screen-typography.js +9 -3
- package/src/components/global-styles/style.scss +4 -0
- package/src/components/header-edit-mode/style.scss +15 -5
- package/src/components/layout/hooks.js +6 -5
- package/src/components/layout/index.js +80 -96
- package/src/components/layout/router.js +121 -0
- package/src/components/layout/style.scss +13 -16
- package/src/components/page/style.scss +1 -8
- package/src/components/page-pages/index.js +142 -148
- package/src/components/page-pages/style.scss +41 -2
- package/src/components/page-patterns/dataviews-pattern-actions.js +11 -6
- package/src/components/page-patterns/index.js +392 -14
- package/src/components/page-patterns/style.scss +36 -2
- package/src/components/{page-templates/template-actions.js → page-templates-template-parts/actions.js} +90 -37
- package/src/components/{page-templates → page-templates-template-parts}/index.js +198 -169
- package/src/components/page-templates-template-parts/style.scss +44 -0
- package/src/components/preferences-modal/index.js +8 -211
- package/src/components/revisions/index.js +1 -1
- package/src/components/save-button/index.js +7 -4
- package/src/components/save-panel/index.js +13 -12
- package/src/components/sidebar/index.js +4 -5
- package/src/components/sidebar-dataviews/dataview-item.js +2 -1
- package/src/components/sidebar-dataviews/default-views.js +4 -2
- package/src/components/sidebar-dataviews/index.js +8 -6
- package/src/components/sidebar-navigation-item/style.scss +1 -1
- package/src/components/sidebar-navigation-screen/index.js +19 -10
- package/src/components/sidebar-navigation-screen-pages/index.js +2 -10
- package/src/components/sidebar-navigation-screen-pages-dataviews/index.js +32 -6
- package/src/components/sidebar-navigation-screen-templates-browse/content.js +73 -0
- package/src/components/sidebar-navigation-screen-templates-browse/index.js +10 -1
- package/src/components/site-hub/index.js +4 -1
- package/src/components/site-hub/style.scss +1 -12
- package/src/components/site-icon/style.scss +1 -1
- package/src/components/sync-state-with-url/use-init-edited-entity-from-url.js +40 -10
- package/src/components/sync-state-with-url/use-sync-path-with-url.js +32 -0
- package/src/hooks/commands/use-edit-mode-commands.js +50 -3
- package/src/hooks/push-changes-to-global-styles/index.js +29 -23
- package/src/hooks/template-part-edit.js +12 -12
- package/src/index.js +1 -1
- package/src/store/actions.js +17 -51
- package/src/store/private-actions.js +133 -0
- package/src/store/selectors.js +2 -4
- package/src/style.scss +1 -1
- package/src/utils/get-is-list-page.js +3 -2
- package/src/utils/use-actual-current-theme.js +27 -0
- package/build/components/global-styles/font-library-modal/utils/get-intersecting-font-faces.js +0 -58
- package/build/components/global-styles/font-library-modal/utils/get-intersecting-font-faces.js.map +0 -1
- package/build/components/global-styles/font-library-modal/utils/get-notice-from-response.js +0 -71
- package/build/components/global-styles/font-library-modal/utils/get-notice-from-response.js.map +0 -1
- package/build/components/page-main/index.js +0 -44
- package/build/components/page-main/index.js.map +0 -1
- package/build/components/page-patterns/dataviews-patterns.js +0 -307
- package/build/components/page-patterns/dataviews-patterns.js.map +0 -1
- package/build/components/page-template-parts/add-new-template-part.js.map +0 -1
- package/build/components/page-template-parts/index.js +0 -81
- package/build/components/page-template-parts/index.js.map +0 -1
- package/build/components/page-templates/index.js +0 -352
- package/build/components/page-templates/index.js.map +0 -1
- package/build/components/page-templates/template-actions.js.map +0 -1
- package/build/components/post-preview/index.js +0 -29
- package/build/components/post-preview/index.js.map +0 -1
- package/build/components/preferences-modal/enable-feature.js +0 -36
- package/build/components/preferences-modal/enable-feature.js.map +0 -1
- package/build/components/preferences-modal/enable-panel-option.js +0 -33
- package/build/components/preferences-modal/enable-panel-option.js.map +0 -1
- package/build-module/components/global-styles/font-library-modal/utils/get-intersecting-font-faces.js +0 -52
- package/build-module/components/global-styles/font-library-modal/utils/get-intersecting-font-faces.js.map +0 -1
- package/build-module/components/global-styles/font-library-modal/utils/get-notice-from-response.js +0 -63
- package/build-module/components/global-styles/font-library-modal/utils/get-notice-from-response.js.map +0 -1
- package/build-module/components/page-main/index.js +0 -36
- package/build-module/components/page-main/index.js.map +0 -1
- package/build-module/components/page-patterns/dataviews-patterns.js +0 -299
- package/build-module/components/page-patterns/dataviews-patterns.js.map +0 -1
- package/build-module/components/page-template-parts/add-new-template-part.js.map +0 -1
- package/build-module/components/page-template-parts/index.js +0 -73
- package/build-module/components/page-template-parts/index.js.map +0 -1
- package/build-module/components/page-templates/index.js +0 -344
- package/build-module/components/page-templates/index.js.map +0 -1
- package/build-module/components/page-templates/template-actions.js.map +0 -1
- package/build-module/components/post-preview/index.js +0 -21
- package/build-module/components/post-preview/index.js.map +0 -1
- package/build-module/components/preferences-modal/enable-feature.js +0 -29
- package/build-module/components/preferences-modal/enable-feature.js.map +0 -1
- package/build-module/components/preferences-modal/enable-panel-option.js +0 -26
- package/build-module/components/preferences-modal/enable-panel-option.js.map +0 -1
- package/src/components/global-styles/font-library-modal/utils/get-intersecting-font-faces.js +0 -58
- package/src/components/global-styles/font-library-modal/utils/get-notice-from-response.js +0 -62
- package/src/components/global-styles/font-library-modal/utils/test/getIntersectingFontFaces.spec.js +0 -271
- package/src/components/global-styles/font-library-modal/utils/test/makeFormDataFromFontFamily.spec.js +0 -58
- package/src/components/page-main/index.js +0 -38
- package/src/components/page-patterns/dataviews-patterns.js +0 -380
- package/src/components/page-template-parts/index.js +0 -99
- package/src/components/page-templates/style.scss +0 -13
- package/src/components/post-preview/index.js +0 -16
- package/src/components/preferences-modal/enable-feature.js +0 -31
- package/src/components/preferences-modal/enable-panel-option.js +0 -23
- /package/build/components/{page-template-parts → page-templates-template-parts}/add-new-template-part.js +0 -0
- /package/build-module/components/{page-template-parts → page-templates-template-parts}/add-new-template-part.js +0 -0
- /package/src/components/{page-template-parts → page-templates-template-parts}/add-new-template-part.js +0 -0
|
@@ -8,17 +8,14 @@ import removeAccents from 'remove-accents';
|
|
|
8
8
|
*/
|
|
9
9
|
import {
|
|
10
10
|
Icon,
|
|
11
|
-
__experimentalView as View,
|
|
12
11
|
__experimentalText as Text,
|
|
13
12
|
__experimentalHStack as HStack,
|
|
14
|
-
__experimentalVStack as VStack,
|
|
15
13
|
VisuallyHidden,
|
|
16
14
|
} from '@wordpress/components';
|
|
17
15
|
import { __ } from '@wordpress/i18n';
|
|
18
|
-
import { useState, useMemo, useCallback } from '@wordpress/element';
|
|
16
|
+
import { useState, useMemo, useCallback, useEffect } from '@wordpress/element';
|
|
19
17
|
import { useEntityRecords } from '@wordpress/core-data';
|
|
20
18
|
import { decodeEntities } from '@wordpress/html-entities';
|
|
21
|
-
import { ENTER, SPACE } from '@wordpress/keycodes';
|
|
22
19
|
import { parse } from '@wordpress/blocks';
|
|
23
20
|
import {
|
|
24
21
|
BlockPreview,
|
|
@@ -35,11 +32,12 @@ import { privateApis as routerPrivateApis } from '@wordpress/router';
|
|
|
35
32
|
* Internal dependencies
|
|
36
33
|
*/
|
|
37
34
|
import Page from '../page';
|
|
38
|
-
import Link from '../routes/link';
|
|
35
|
+
import { default as Link, useLink } from '../routes/link';
|
|
39
36
|
import AddNewTemplate from '../add-new-template';
|
|
40
37
|
import { useAddedBy, AvatarImage } from '../list/added-by';
|
|
41
38
|
import {
|
|
42
39
|
TEMPLATE_POST_TYPE,
|
|
40
|
+
TEMPLATE_PART_POST_TYPE,
|
|
43
41
|
ENUMERATION_TYPE,
|
|
44
42
|
OPERATOR_IN,
|
|
45
43
|
OPERATOR_NOT_IN,
|
|
@@ -51,21 +49,27 @@ import {
|
|
|
51
49
|
useResetTemplateAction,
|
|
52
50
|
deleteTemplateAction,
|
|
53
51
|
renameTemplateAction,
|
|
54
|
-
} from './
|
|
52
|
+
} from './actions';
|
|
55
53
|
import { postRevisionsAction } from '../actions';
|
|
56
54
|
import usePatternSettings from '../page-patterns/use-pattern-settings';
|
|
57
55
|
import { unlock } from '../../lock-unlock';
|
|
58
|
-
import
|
|
56
|
+
import AddNewTemplatePart from './add-new-template-part';
|
|
59
57
|
|
|
60
58
|
const { ExperimentalBlockEditorProvider, useGlobalStyle } = unlock(
|
|
61
59
|
blockEditorPrivateApis
|
|
62
60
|
);
|
|
63
|
-
const { useHistory } = unlock( routerPrivateApis );
|
|
61
|
+
const { useHistory, useLocation } = unlock( routerPrivateApis );
|
|
64
62
|
|
|
65
63
|
const EMPTY_ARRAY = [];
|
|
66
64
|
|
|
65
|
+
const SUPPORTED_LAYOUTS = window?.__experimentalAdminViews
|
|
66
|
+
? [ LAYOUT_TABLE, LAYOUT_GRID, LAYOUT_LIST ]
|
|
67
|
+
: [ LAYOUT_TABLE, LAYOUT_GRID ];
|
|
68
|
+
|
|
67
69
|
const defaultConfigPerViewType = {
|
|
68
|
-
[ LAYOUT_TABLE ]: {
|
|
70
|
+
[ LAYOUT_TABLE ]: {
|
|
71
|
+
primaryField: 'title',
|
|
72
|
+
},
|
|
69
73
|
[ LAYOUT_GRID ]: {
|
|
70
74
|
mediaField: 'preview',
|
|
71
75
|
primaryField: 'title',
|
|
@@ -81,10 +85,14 @@ const DEFAULT_VIEW = {
|
|
|
81
85
|
search: '',
|
|
82
86
|
page: 1,
|
|
83
87
|
perPage: 20,
|
|
88
|
+
sort: {
|
|
89
|
+
field: 'title',
|
|
90
|
+
direction: 'asc',
|
|
91
|
+
},
|
|
84
92
|
// All fields are visible by default, so it's
|
|
85
93
|
// better to keep track of the hidden ones.
|
|
86
94
|
hiddenFields: [ 'preview' ],
|
|
87
|
-
layout:
|
|
95
|
+
layout: defaultConfigPerViewType[ LAYOUT_TABLE ],
|
|
88
96
|
filters: [],
|
|
89
97
|
};
|
|
90
98
|
|
|
@@ -92,30 +100,26 @@ function normalizeSearchInput( input = '' ) {
|
|
|
92
100
|
return removeAccents( input.trim().toLowerCase() );
|
|
93
101
|
}
|
|
94
102
|
|
|
95
|
-
function
|
|
103
|
+
function Title( { item, viewType } ) {
|
|
96
104
|
if ( viewType === LAYOUT_LIST ) {
|
|
97
|
-
return (
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
105
|
+
return decodeEntities( item.title?.rendered ) || __( '(no title)' );
|
|
106
|
+
}
|
|
107
|
+
const linkProps = {
|
|
108
|
+
params: {
|
|
109
|
+
postId: item.id,
|
|
110
|
+
postType: item.type,
|
|
111
|
+
canvas: 'edit',
|
|
112
|
+
},
|
|
113
|
+
};
|
|
114
|
+
if ( item.type === TEMPLATE_PART_POST_TYPE ) {
|
|
115
|
+
linkProps.state = {
|
|
116
|
+
backPath: '/wp_template_part/all',
|
|
117
|
+
};
|
|
102
118
|
}
|
|
103
|
-
|
|
104
119
|
return (
|
|
105
|
-
<
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
params={ {
|
|
109
|
-
postId: item.id,
|
|
110
|
-
postType: item.type,
|
|
111
|
-
canvas: 'edit',
|
|
112
|
-
} }
|
|
113
|
-
>
|
|
114
|
-
{ decodeEntities( item.title?.rendered ) ||
|
|
115
|
-
__( '(no title)' ) }
|
|
116
|
-
</Link>
|
|
117
|
-
</View>
|
|
118
|
-
</VStack>
|
|
120
|
+
<Link { ...linkProps }>
|
|
121
|
+
{ decodeEntities( item.title?.rendered ) || __( '(no title)' ) }
|
|
122
|
+
</Link>
|
|
119
123
|
);
|
|
120
124
|
}
|
|
121
125
|
|
|
@@ -136,15 +140,18 @@ function AuthorField( { item, viewType } ) {
|
|
|
136
140
|
);
|
|
137
141
|
}
|
|
138
142
|
|
|
139
|
-
function
|
|
143
|
+
function Preview( { item, viewType } ) {
|
|
140
144
|
const settings = usePatternSettings();
|
|
141
145
|
const [ backgroundColor = 'white' ] = useGlobalStyle( 'color.background' );
|
|
142
146
|
const blocks = useMemo( () => {
|
|
143
|
-
return parse( content );
|
|
144
|
-
}, [ content ] );
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
147
|
+
return parse( item.content.raw );
|
|
148
|
+
}, [ item.content.raw ] );
|
|
149
|
+
const { onClick } = useLink( {
|
|
150
|
+
postId: item.id,
|
|
151
|
+
postType: item.type,
|
|
152
|
+
canvas: 'edit',
|
|
153
|
+
} );
|
|
154
|
+
const isEmpty = ! blocks?.length;
|
|
148
155
|
// Wrap everything in a block editor provider to ensure 'styles' that are needed
|
|
149
156
|
// for the previews are synced between the site editor store and the block editor store.
|
|
150
157
|
// Additionally we need to have the `__experimentalBlockPatterns` setting in order to
|
|
@@ -158,116 +165,178 @@ function TemplatePreview( { content, viewType } ) {
|
|
|
158
165
|
className={ `page-templates-preview-field is-viewtype-${ viewType }` }
|
|
159
166
|
style={ { backgroundColor } }
|
|
160
167
|
>
|
|
161
|
-
<
|
|
168
|
+
<button
|
|
169
|
+
className="page-templates-preview-field__button"
|
|
170
|
+
type="button"
|
|
171
|
+
onClick={ onClick }
|
|
172
|
+
aria-label={ item.title?.rendered || item.title }
|
|
173
|
+
>
|
|
174
|
+
{ isEmpty &&
|
|
175
|
+
( item.type === TEMPLATE_POST_TYPE
|
|
176
|
+
? __( 'Empty template' )
|
|
177
|
+
: __( 'Empty template part' ) ) }
|
|
178
|
+
{ ! isEmpty && <BlockPreview blocks={ blocks } /> }
|
|
179
|
+
</button>
|
|
162
180
|
</div>
|
|
163
181
|
</ExperimentalBlockEditorProvider>
|
|
164
182
|
);
|
|
165
183
|
}
|
|
166
184
|
|
|
167
|
-
export default function
|
|
168
|
-
const
|
|
169
|
-
const
|
|
170
|
-
const
|
|
171
|
-
|
|
185
|
+
export default function PageTemplatesTemplateParts( { postType } ) {
|
|
186
|
+
const { params } = useLocation();
|
|
187
|
+
const { activeView = 'all', layout } = params;
|
|
188
|
+
const defaultView = useMemo( () => {
|
|
189
|
+
return {
|
|
190
|
+
...DEFAULT_VIEW,
|
|
191
|
+
type: window?.__experimentalAdminViews
|
|
192
|
+
? layout ?? DEFAULT_VIEW.type
|
|
193
|
+
: DEFAULT_VIEW.type,
|
|
194
|
+
filters:
|
|
195
|
+
activeView !== 'all'
|
|
196
|
+
? [
|
|
197
|
+
{
|
|
198
|
+
field: 'author',
|
|
199
|
+
operator: 'in',
|
|
200
|
+
value: activeView,
|
|
201
|
+
},
|
|
202
|
+
]
|
|
203
|
+
: [],
|
|
204
|
+
};
|
|
205
|
+
}, [ layout, activeView ] );
|
|
206
|
+
const [ view, setView ] = useState( defaultView );
|
|
207
|
+
useEffect( () => {
|
|
208
|
+
setView( ( currentView ) => ( {
|
|
209
|
+
...currentView,
|
|
210
|
+
filters:
|
|
211
|
+
activeView !== 'all'
|
|
212
|
+
? [
|
|
213
|
+
{
|
|
214
|
+
field: 'author',
|
|
215
|
+
operator: 'in',
|
|
216
|
+
value: activeView,
|
|
217
|
+
},
|
|
218
|
+
]
|
|
219
|
+
: [],
|
|
220
|
+
} ) );
|
|
221
|
+
}, [ activeView ] );
|
|
222
|
+
|
|
223
|
+
const { records, isResolving: isLoadingData } = useEntityRecords(
|
|
224
|
+
'postType',
|
|
225
|
+
postType,
|
|
226
|
+
{
|
|
172
227
|
per_page: -1,
|
|
173
|
-
}
|
|
228
|
+
}
|
|
229
|
+
);
|
|
174
230
|
const history = useHistory();
|
|
175
|
-
|
|
176
231
|
const onSelectionChange = useCallback(
|
|
177
|
-
( items ) =>
|
|
178
|
-
|
|
179
|
-
|
|
232
|
+
( items ) => {
|
|
233
|
+
if ( view?.type === LAYOUT_LIST ) {
|
|
234
|
+
history.push( {
|
|
235
|
+
...params,
|
|
236
|
+
postId: items.length === 1 ? items[ 0 ].id : undefined,
|
|
237
|
+
} );
|
|
238
|
+
}
|
|
239
|
+
},
|
|
240
|
+
[ history, params, view?.type ]
|
|
180
241
|
);
|
|
181
242
|
|
|
182
243
|
const authors = useMemo( () => {
|
|
183
|
-
if ( !
|
|
244
|
+
if ( ! records ) {
|
|
184
245
|
return EMPTY_ARRAY;
|
|
185
246
|
}
|
|
186
247
|
const authorsSet = new Set();
|
|
187
|
-
|
|
248
|
+
records.forEach( ( template ) => {
|
|
188
249
|
authorsSet.add( template.author_text );
|
|
189
250
|
} );
|
|
190
251
|
return Array.from( authorsSet ).map( ( author ) => ( {
|
|
191
252
|
value: author,
|
|
192
253
|
label: author,
|
|
193
254
|
} ) );
|
|
194
|
-
}, [
|
|
255
|
+
}, [ records ] );
|
|
195
256
|
|
|
196
|
-
const fields = useMemo(
|
|
197
|
-
|
|
257
|
+
const fields = useMemo( () => {
|
|
258
|
+
const _fields = [
|
|
198
259
|
{
|
|
199
260
|
header: __( 'Preview' ),
|
|
200
261
|
id: 'preview',
|
|
201
262
|
render: ( { item } ) => {
|
|
202
|
-
return
|
|
203
|
-
<TemplatePreview
|
|
204
|
-
content={ item.content.raw }
|
|
205
|
-
viewType={ view.type }
|
|
206
|
-
/>
|
|
207
|
-
);
|
|
263
|
+
return <Preview item={ item } viewType={ view.type } />;
|
|
208
264
|
},
|
|
209
265
|
minWidth: 120,
|
|
210
266
|
maxWidth: 120,
|
|
211
267
|
enableSorting: false,
|
|
212
268
|
},
|
|
213
269
|
{
|
|
214
|
-
header:
|
|
270
|
+
header:
|
|
271
|
+
postType === TEMPLATE_POST_TYPE
|
|
272
|
+
? __( 'Template' )
|
|
273
|
+
: __( 'Template Part' ),
|
|
215
274
|
id: 'title',
|
|
216
275
|
getValue: ( { item } ) => item.title?.rendered,
|
|
217
276
|
render: ( { item } ) => (
|
|
218
|
-
<
|
|
277
|
+
<Title item={ item } viewType={ view.type } />
|
|
219
278
|
),
|
|
220
279
|
maxWidth: 400,
|
|
221
280
|
enableHiding: false,
|
|
222
281
|
},
|
|
223
|
-
|
|
282
|
+
];
|
|
283
|
+
if ( postType === TEMPLATE_POST_TYPE ) {
|
|
284
|
+
_fields.push( {
|
|
224
285
|
header: __( 'Description' ),
|
|
225
286
|
id: 'description',
|
|
226
287
|
getValue: ( { item } ) => item.description,
|
|
227
288
|
render: ( { item } ) => {
|
|
228
289
|
return item.description ? (
|
|
229
|
-
|
|
290
|
+
<span className="page-templates-description">
|
|
291
|
+
{ decodeEntities( item.description ) }
|
|
292
|
+
</span>
|
|
230
293
|
) : (
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
294
|
+
view.type === LAYOUT_TABLE && (
|
|
295
|
+
<>
|
|
296
|
+
<Text variant="muted" aria-hidden="true">
|
|
297
|
+
—
|
|
298
|
+
</Text>
|
|
299
|
+
<VisuallyHidden>
|
|
300
|
+
{ __( 'No description.' ) }
|
|
301
|
+
</VisuallyHidden>
|
|
302
|
+
</>
|
|
303
|
+
)
|
|
239
304
|
);
|
|
240
305
|
},
|
|
241
|
-
maxWidth:
|
|
306
|
+
maxWidth: 400,
|
|
307
|
+
minWidth: 320,
|
|
242
308
|
enableSorting: false,
|
|
309
|
+
} );
|
|
310
|
+
}
|
|
311
|
+
// TODO: The plan is to support fields reordering, which would require an API like `order` or something
|
|
312
|
+
// similar. With the aforementioned API we wouldn't need to construct the fields array like this.
|
|
313
|
+
_fields.push( {
|
|
314
|
+
header: __( 'Author' ),
|
|
315
|
+
id: 'author',
|
|
316
|
+
getValue: ( { item } ) => item.author_text,
|
|
317
|
+
render: ( { item } ) => {
|
|
318
|
+
return <AuthorField viewType={ view.type } item={ item } />;
|
|
243
319
|
},
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
enableHiding: false,
|
|
252
|
-
type: ENUMERATION_TYPE,
|
|
253
|
-
elements: authors,
|
|
254
|
-
},
|
|
255
|
-
],
|
|
256
|
-
[ authors, view.type ]
|
|
257
|
-
);
|
|
320
|
+
enableHiding: false,
|
|
321
|
+
type: ENUMERATION_TYPE,
|
|
322
|
+
elements: authors,
|
|
323
|
+
width: '1%',
|
|
324
|
+
} );
|
|
325
|
+
return _fields;
|
|
326
|
+
}, [ postType, authors, view.type ] );
|
|
258
327
|
|
|
259
328
|
const { data, paginationInfo } = useMemo( () => {
|
|
260
|
-
if ( !
|
|
329
|
+
if ( ! records ) {
|
|
261
330
|
return {
|
|
262
331
|
data: EMPTY_ARRAY,
|
|
263
332
|
paginationInfo: { totalItems: 0, totalPages: 0 },
|
|
264
333
|
};
|
|
265
334
|
}
|
|
266
|
-
let
|
|
335
|
+
let filteredData = [ ...records ];
|
|
267
336
|
// Handle global search.
|
|
268
337
|
if ( view.search ) {
|
|
269
338
|
const normalizedSearch = normalizeSearchInput( view.search );
|
|
270
|
-
|
|
339
|
+
filteredData = filteredData.filter( ( item ) => {
|
|
271
340
|
const title = item.title?.rendered || item.slug;
|
|
272
341
|
return (
|
|
273
342
|
normalizeSearchInput( title ).includes(
|
|
@@ -288,7 +357,7 @@ export default function DataviewsTemplates() {
|
|
|
288
357
|
filter.operator === OPERATOR_IN &&
|
|
289
358
|
!! filter.value
|
|
290
359
|
) {
|
|
291
|
-
|
|
360
|
+
filteredData = filteredData.filter( ( item ) => {
|
|
292
361
|
return item.author_text === filter.value;
|
|
293
362
|
} );
|
|
294
363
|
} else if (
|
|
@@ -296,7 +365,7 @@ export default function DataviewsTemplates() {
|
|
|
296
365
|
filter.operator === OPERATOR_NOT_IN &&
|
|
297
366
|
!! filter.value
|
|
298
367
|
) {
|
|
299
|
-
|
|
368
|
+
filteredData = filteredData.filter( ( item ) => {
|
|
300
369
|
return item.author_text !== filter.value;
|
|
301
370
|
} );
|
|
302
371
|
}
|
|
@@ -305,19 +374,19 @@ export default function DataviewsTemplates() {
|
|
|
305
374
|
|
|
306
375
|
// Handle sorting.
|
|
307
376
|
if ( view.sort ) {
|
|
308
|
-
|
|
309
|
-
data:
|
|
377
|
+
filteredData = sortByTextFields( {
|
|
378
|
+
data: filteredData,
|
|
310
379
|
view,
|
|
311
380
|
fields,
|
|
312
|
-
textFields: [ 'title' ],
|
|
381
|
+
textFields: [ 'title', 'author' ],
|
|
313
382
|
} );
|
|
314
383
|
}
|
|
315
384
|
// Handle pagination.
|
|
316
385
|
return getPaginationResults( {
|
|
317
|
-
data:
|
|
386
|
+
data: filteredData,
|
|
318
387
|
view,
|
|
319
388
|
} );
|
|
320
|
-
}, [
|
|
389
|
+
}, [ records, view, fields ] );
|
|
321
390
|
|
|
322
391
|
const resetTemplateAction = useResetTemplateAction();
|
|
323
392
|
const actions = useMemo(
|
|
@@ -339,89 +408,49 @@ export default function DataviewsTemplates() {
|
|
|
339
408
|
...defaultConfigPerViewType[ newView.type ],
|
|
340
409
|
},
|
|
341
410
|
};
|
|
411
|
+
|
|
412
|
+
history.push( {
|
|
413
|
+
...params,
|
|
414
|
+
layout: newView.type,
|
|
415
|
+
} );
|
|
342
416
|
}
|
|
343
417
|
|
|
344
418
|
setView( newView );
|
|
345
419
|
},
|
|
346
|
-
[ view.type, setView ]
|
|
420
|
+
[ view.type, setView, history, params ]
|
|
347
421
|
);
|
|
348
422
|
|
|
349
423
|
return (
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
actions={
|
|
424
|
+
<Page
|
|
425
|
+
title={
|
|
426
|
+
postType === TEMPLATE_POST_TYPE
|
|
427
|
+
? __( 'Templates' )
|
|
428
|
+
: __( 'Template Parts' )
|
|
429
|
+
}
|
|
430
|
+
actions={
|
|
431
|
+
postType === TEMPLATE_POST_TYPE ? (
|
|
359
432
|
<AddNewTemplate
|
|
360
|
-
templateType={
|
|
433
|
+
templateType={ postType }
|
|
361
434
|
showIcon={ false }
|
|
362
435
|
toggleProps={ { variant: 'primary' } }
|
|
363
436
|
/>
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
<div
|
|
383
|
-
className="edit-site-template-pages-preview"
|
|
384
|
-
tabIndex={ 0 }
|
|
385
|
-
role="button"
|
|
386
|
-
onKeyDown={ ( event ) => {
|
|
387
|
-
const { keyCode } = event;
|
|
388
|
-
if ( keyCode === ENTER || keyCode === SPACE ) {
|
|
389
|
-
history.push( {
|
|
390
|
-
postId: templateId,
|
|
391
|
-
postType: TEMPLATE_POST_TYPE,
|
|
392
|
-
canvas: 'edit',
|
|
393
|
-
} );
|
|
394
|
-
}
|
|
395
|
-
} }
|
|
396
|
-
onClick={ () =>
|
|
397
|
-
history.push( {
|
|
398
|
-
postId: templateId,
|
|
399
|
-
postType: TEMPLATE_POST_TYPE,
|
|
400
|
-
canvas: 'edit',
|
|
401
|
-
} )
|
|
402
|
-
}
|
|
403
|
-
>
|
|
404
|
-
{ templateId !== null ? (
|
|
405
|
-
<PostPreview
|
|
406
|
-
postId={ templateId }
|
|
407
|
-
postType={ TEMPLATE_POST_TYPE }
|
|
408
|
-
/>
|
|
409
|
-
) : (
|
|
410
|
-
<div
|
|
411
|
-
style={ {
|
|
412
|
-
display: 'flex',
|
|
413
|
-
flexDirection: 'column',
|
|
414
|
-
justifyContent: 'center',
|
|
415
|
-
textAlign: 'center',
|
|
416
|
-
height: '100%',
|
|
417
|
-
} }
|
|
418
|
-
>
|
|
419
|
-
<p>{ __( 'Select a template to preview' ) }</p>
|
|
420
|
-
</div>
|
|
421
|
-
) }
|
|
422
|
-
</div>
|
|
423
|
-
</Page>
|
|
424
|
-
) }
|
|
425
|
-
</>
|
|
437
|
+
) : (
|
|
438
|
+
<AddNewTemplatePart />
|
|
439
|
+
)
|
|
440
|
+
}
|
|
441
|
+
>
|
|
442
|
+
<DataViews
|
|
443
|
+
paginationInfo={ paginationInfo }
|
|
444
|
+
fields={ fields }
|
|
445
|
+
actions={ actions }
|
|
446
|
+
data={ data }
|
|
447
|
+
isLoading={ isLoadingData }
|
|
448
|
+
view={ view }
|
|
449
|
+
onChangeView={ onChangeView }
|
|
450
|
+
onSelectionChange={ onSelectionChange }
|
|
451
|
+
deferredRendering={ ! view.hiddenFields?.includes( 'preview' ) }
|
|
452
|
+
supportedLayouts={ SUPPORTED_LAYOUTS }
|
|
453
|
+
/>
|
|
454
|
+
</Page>
|
|
426
455
|
);
|
|
427
456
|
}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
.page-templates-preview-field {
|
|
2
|
+
display: flex;
|
|
3
|
+
flex-direction: column;
|
|
4
|
+
height: 100%;
|
|
5
|
+
border-radius: 3px 3px 0 0;
|
|
6
|
+
|
|
7
|
+
.page-templates-preview-field__button {
|
|
8
|
+
box-shadow: none;
|
|
9
|
+
border: none;
|
|
10
|
+
padding: 0;
|
|
11
|
+
background-color: unset;
|
|
12
|
+
box-sizing: border-box;
|
|
13
|
+
cursor: pointer;
|
|
14
|
+
overflow: hidden;
|
|
15
|
+
height: 100%;
|
|
16
|
+
border-radius: 3px;
|
|
17
|
+
|
|
18
|
+
&:focus-visible {
|
|
19
|
+
box-shadow: 0 0 0 var(--wp-admin-border-width-focus) var(--wp-admin-theme-color);
|
|
20
|
+
// Windows High Contrast mode will show this outline, but not the box-shadow.
|
|
21
|
+
outline: 2px solid transparent;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
&.is-viewtype-list {
|
|
26
|
+
.block-editor-block-preview__container {
|
|
27
|
+
height: 120px;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
&.is-viewtype-grid {
|
|
32
|
+
.block-editor-block-preview__container {
|
|
33
|
+
height: auto;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
.page-templates-preview-field__button {
|
|
37
|
+
border-radius: 3px 3px 0 0;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
.page-templates-description {
|
|
43
|
+
white-space: normal;
|
|
44
|
+
}
|