@wordpress/widget-dashboard 0.1.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 +19 -0
- package/LICENSE.md +788 -0
- package/README.md +241 -0
- package/build/components/actions/actions.cjs +265 -0
- package/build/components/actions/actions.cjs.map +7 -0
- package/build/components/actions/index.cjs +31 -0
- package/build/components/actions/index.cjs.map +7 -0
- package/build/components/actions-menu/actions-menu.cjs +92 -0
- package/build/components/actions-menu/actions-menu.cjs.map +7 -0
- package/build/components/actions-menu/index.cjs +31 -0
- package/build/components/actions-menu/index.cjs.map +7 -0
- package/build/components/commands/commands.cjs +177 -0
- package/build/components/commands/commands.cjs.map +7 -0
- package/build/components/commands/index.cjs +33 -0
- package/build/components/commands/index.cjs.map +7 -0
- package/build/components/commands/use-pending-when-edit-mode.cjs +57 -0
- package/build/components/commands/use-pending-when-edit-mode.cjs.map +7 -0
- package/build/components/layout-settings/index.cjs +31 -0
- package/build/components/layout-settings/index.cjs.map +7 -0
- package/build/components/layout-settings/layout-model-edit-field/index.cjs +186 -0
- package/build/components/layout-settings/layout-model-edit-field/index.cjs.map +7 -0
- package/build/components/layout-settings/layout-model-edit-field/thumbnail-grid.cjs +53 -0
- package/build/components/layout-settings/layout-model-edit-field/thumbnail-grid.cjs.map +7 -0
- package/build/components/layout-settings/layout-model-edit-field/thumbnail-masonry.cjs +53 -0
- package/build/components/layout-settings/layout-model-edit-field/thumbnail-masonry.cjs.map +7 -0
- package/build/components/layout-settings/layout-settings.cjs +207 -0
- package/build/components/layout-settings/layout-settings.cjs.map +7 -0
- package/build/components/no-widgets-state/index.cjs +31 -0
- package/build/components/no-widgets-state/index.cjs.map +7 -0
- package/build/components/no-widgets-state/no-widgets-state.cjs +140 -0
- package/build/components/no-widgets-state/no-widgets-state.cjs.map +7 -0
- package/build/components/reset-confirmation/index.cjs +31 -0
- package/build/components/reset-confirmation/index.cjs.map +7 -0
- package/build/components/reset-confirmation/reset-confirmation.cjs +62 -0
- package/build/components/reset-confirmation/reset-confirmation.cjs.map +7 -0
- package/build/components/widget-chrome/index.cjs +31 -0
- package/build/components/widget-chrome/index.cjs.map +7 -0
- package/build/components/widget-chrome/widget-chrome.cjs +277 -0
- package/build/components/widget-chrome/widget-chrome.cjs.map +7 -0
- package/build/components/widget-inserter/index.cjs +31 -0
- package/build/components/widget-inserter/index.cjs.map +7 -0
- package/build/components/widget-inserter/widget-inserter.cjs +78 -0
- package/build/components/widget-inserter/widget-inserter.cjs.map +7 -0
- package/build/components/widget-picker/index.cjs +31 -0
- package/build/components/widget-picker/index.cjs.map +7 -0
- package/build/components/widget-picker/widget-picker.cjs +209 -0
- package/build/components/widget-picker/widget-picker.cjs.map +7 -0
- package/build/components/widget-render/index.cjs +31 -0
- package/build/components/widget-render/index.cjs.map +7 -0
- package/build/components/widget-render/widget-render.cjs +62 -0
- package/build/components/widget-render/widget-render.cjs.map +7 -0
- package/build/components/widget-settings/index.cjs +37 -0
- package/build/components/widget-settings/index.cjs.map +7 -0
- package/build/components/widget-settings/utils/get-admin-menu-inset.cjs +41 -0
- package/build/components/widget-settings/utils/get-admin-menu-inset.cjs.map +7 -0
- package/build/components/widget-settings/utils/get-widget-settings.cjs +38 -0
- package/build/components/widget-settings/utils/get-widget-settings.cjs.map +7 -0
- package/build/components/widget-settings/utils/index.cjs +34 -0
- package/build/components/widget-settings/utils/index.cjs.map +7 -0
- package/build/components/widget-settings/widget-settings-toolbar.cjs +138 -0
- package/build/components/widget-settings/widget-settings-toolbar.cjs.map +7 -0
- package/build/components/widget-settings/widget-settings-trigger.cjs +82 -0
- package/build/components/widget-settings/widget-settings-trigger.cjs.map +7 -0
- package/build/components/widget-settings/widget-settings.cjs +269 -0
- package/build/components/widget-settings/widget-settings.cjs.map +7 -0
- package/build/components/widget-toolbar/index.cjs +31 -0
- package/build/components/widget-toolbar/index.cjs.map +7 -0
- package/build/components/widget-toolbar/widget-toolbar.cjs +148 -0
- package/build/components/widget-toolbar/widget-toolbar.cjs.map +7 -0
- package/build/components/widgets/index.cjs +31 -0
- package/build/components/widgets/index.cjs.map +7 -0
- package/build/components/widgets/widget-layout-toolbar.cjs +206 -0
- package/build/components/widgets/widget-layout-toolbar.cjs.map +7 -0
- package/build/components/widgets/widget-resize-handle.cjs +163 -0
- package/build/components/widgets/widget-resize-handle.cjs.map +7 -0
- package/build/components/widgets/widgets.cjs +277 -0
- package/build/components/widgets/widgets.cjs.map +7 -0
- package/build/context/dashboard-context.cjs +234 -0
- package/build/context/dashboard-context.cjs.map +7 -0
- package/build/context/ui-context.cjs +77 -0
- package/build/context/ui-context.cjs.map +7 -0
- package/build/context/widget-context.cjs +44 -0
- package/build/context/widget-context.cjs.map +7 -0
- package/build/hooks/use-dashboard-container-column-count.cjs +61 -0
- package/build/hooks/use-dashboard-container-column-count.cjs.map +7 -0
- package/build/index.cjs +45 -0
- package/build/index.cjs.map +7 -0
- package/build/lock-unlock.cjs +37 -0
- package/build/lock-unlock.cjs.map +7 -0
- package/build/types.cjs +31 -0
- package/build/types.cjs.map +7 -0
- package/build/utils/create-dashboard-widget/create-dashboard-widget.cjs +44 -0
- package/build/utils/create-dashboard-widget/create-dashboard-widget.cjs.map +7 -0
- package/build/utils/create-dashboard-widget/index.cjs +31 -0
- package/build/utils/create-dashboard-widget/index.cjs.map +7 -0
- package/build/utils/default-grid/default-grid.cjs +37 -0
- package/build/utils/default-grid/default-grid.cjs.map +7 -0
- package/build/utils/default-grid/index.cjs +31 -0
- package/build/utils/default-grid/index.cjs.map +7 -0
- package/build/utils/grid-model-change/grid-model-change.cjs +56 -0
- package/build/utils/grid-model-change/grid-model-change.cjs.map +7 -0
- package/build/utils/grid-model-change/index.cjs +33 -0
- package/build/utils/grid-model-change/index.cjs.map +7 -0
- package/build/utils/index.cjs +34 -0
- package/build/utils/index.cjs.map +7 -0
- package/build/utils/migrate-layout/index.cjs +31 -0
- package/build/utils/migrate-layout/index.cjs.map +7 -0
- package/build/utils/migrate-layout/migrate-layout.cjs +94 -0
- package/build/utils/migrate-layout/migrate-layout.cjs.map +7 -0
- package/build/utils/normalize-grid-settings/index.cjs +31 -0
- package/build/utils/normalize-grid-settings/index.cjs.map +7 -0
- package/build/utils/normalize-grid-settings/normalize-grid-settings.cjs +46 -0
- package/build/utils/normalize-grid-settings/normalize-grid-settings.cjs.map +7 -0
- package/build/utils/resolve-dashboard-column-count/resolve-dashboard-column-count.cjs +49 -0
- package/build/utils/resolve-dashboard-column-count/resolve-dashboard-column-count.cjs.map +7 -0
- package/build/utils/row-height-presets/index.cjs +39 -0
- package/build/utils/row-height-presets/index.cjs.map +7 -0
- package/build/utils/row-height-presets/row-height-presets.cjs +63 -0
- package/build/utils/row-height-presets/row-height-presets.cjs.map +7 -0
- package/build/widget-dashboard.cjs +86 -0
- package/build/widget-dashboard.cjs.map +7 -0
- package/build/wordpress-commands.d.cjs +2 -0
- package/build/wordpress-commands.d.cjs.map +7 -0
- package/build-module/components/actions/actions.mjs +240 -0
- package/build-module/components/actions/actions.mjs.map +7 -0
- package/build-module/components/actions/index.mjs +6 -0
- package/build-module/components/actions/index.mjs.map +7 -0
- package/build-module/components/actions-menu/actions-menu.mjs +67 -0
- package/build-module/components/actions-menu/actions-menu.mjs.map +7 -0
- package/build-module/components/actions-menu/index.mjs +6 -0
- package/build-module/components/actions-menu/index.mjs.map +7 -0
- package/build-module/components/commands/commands.mjs +160 -0
- package/build-module/components/commands/commands.mjs.map +7 -0
- package/build-module/components/commands/index.mjs +7 -0
- package/build-module/components/commands/index.mjs.map +7 -0
- package/build-module/components/commands/use-pending-when-edit-mode.mjs +32 -0
- package/build-module/components/commands/use-pending-when-edit-mode.mjs.map +7 -0
- package/build-module/components/layout-settings/index.mjs +6 -0
- package/build-module/components/layout-settings/index.mjs.map +7 -0
- package/build-module/components/layout-settings/layout-model-edit-field/index.mjs +151 -0
- package/build-module/components/layout-settings/layout-model-edit-field/index.mjs.map +7 -0
- package/build-module/components/layout-settings/layout-model-edit-field/thumbnail-grid.mjs +28 -0
- package/build-module/components/layout-settings/layout-model-edit-field/thumbnail-grid.mjs.map +7 -0
- package/build-module/components/layout-settings/layout-model-edit-field/thumbnail-masonry.mjs +28 -0
- package/build-module/components/layout-settings/layout-model-edit-field/thumbnail-masonry.mjs.map +7 -0
- package/build-module/components/layout-settings/layout-settings.mjs +187 -0
- package/build-module/components/layout-settings/layout-settings.mjs.map +7 -0
- package/build-module/components/no-widgets-state/index.mjs +6 -0
- package/build-module/components/no-widgets-state/index.mjs.map +7 -0
- package/build-module/components/no-widgets-state/no-widgets-state.mjs +115 -0
- package/build-module/components/no-widgets-state/no-widgets-state.mjs.map +7 -0
- package/build-module/components/reset-confirmation/index.mjs +6 -0
- package/build-module/components/reset-confirmation/index.mjs.map +7 -0
- package/build-module/components/reset-confirmation/reset-confirmation.mjs +37 -0
- package/build-module/components/reset-confirmation/reset-confirmation.mjs.map +7 -0
- package/build-module/components/widget-chrome/index.mjs +6 -0
- package/build-module/components/widget-chrome/index.mjs.map +7 -0
- package/build-module/components/widget-chrome/widget-chrome.mjs +248 -0
- package/build-module/components/widget-chrome/widget-chrome.mjs.map +7 -0
- package/build-module/components/widget-inserter/index.mjs +6 -0
- package/build-module/components/widget-inserter/index.mjs.map +7 -0
- package/build-module/components/widget-inserter/widget-inserter.mjs +53 -0
- package/build-module/components/widget-inserter/widget-inserter.mjs.map +7 -0
- package/build-module/components/widget-picker/index.mjs +6 -0
- package/build-module/components/widget-picker/index.mjs.map +7 -0
- package/build-module/components/widget-picker/widget-picker.mjs +184 -0
- package/build-module/components/widget-picker/widget-picker.mjs.map +7 -0
- package/build-module/components/widget-render/index.mjs +6 -0
- package/build-module/components/widget-render/index.mjs.map +7 -0
- package/build-module/components/widget-render/widget-render.mjs +37 -0
- package/build-module/components/widget-render/widget-render.mjs.map +7 -0
- package/build-module/components/widget-settings/index.mjs +10 -0
- package/build-module/components/widget-settings/index.mjs.map +7 -0
- package/build-module/components/widget-settings/utils/get-admin-menu-inset.mjs +16 -0
- package/build-module/components/widget-settings/utils/get-admin-menu-inset.mjs.map +7 -0
- package/build-module/components/widget-settings/utils/get-widget-settings.mjs +13 -0
- package/build-module/components/widget-settings/utils/get-widget-settings.mjs.map +7 -0
- package/build-module/components/widget-settings/utils/index.mjs +8 -0
- package/build-module/components/widget-settings/utils/index.mjs.map +7 -0
- package/build-module/components/widget-settings/widget-settings-toolbar.mjs +113 -0
- package/build-module/components/widget-settings/widget-settings-toolbar.mjs.map +7 -0
- package/build-module/components/widget-settings/widget-settings-trigger.mjs +57 -0
- package/build-module/components/widget-settings/widget-settings-trigger.mjs.map +7 -0
- package/build-module/components/widget-settings/widget-settings.mjs +244 -0
- package/build-module/components/widget-settings/widget-settings.mjs.map +7 -0
- package/build-module/components/widget-toolbar/index.mjs +6 -0
- package/build-module/components/widget-toolbar/index.mjs.map +7 -0
- package/build-module/components/widget-toolbar/widget-toolbar.mjs +113 -0
- package/build-module/components/widget-toolbar/widget-toolbar.mjs.map +7 -0
- package/build-module/components/widgets/index.mjs +6 -0
- package/build-module/components/widgets/index.mjs.map +7 -0
- package/build-module/components/widgets/widget-layout-toolbar.mjs +181 -0
- package/build-module/components/widgets/widget-layout-toolbar.mjs.map +7 -0
- package/build-module/components/widgets/widget-resize-handle.mjs +128 -0
- package/build-module/components/widgets/widget-resize-handle.mjs.map +7 -0
- package/build-module/components/widgets/widgets.mjs +242 -0
- package/build-module/components/widgets/widgets.mjs.map +7 -0
- package/build-module/context/dashboard-context.mjs +205 -0
- package/build-module/context/dashboard-context.mjs.map +7 -0
- package/build-module/context/ui-context.mjs +56 -0
- package/build-module/context/ui-context.mjs.map +7 -0
- package/build-module/context/widget-context.mjs +18 -0
- package/build-module/context/widget-context.mjs.map +7 -0
- package/build-module/hooks/use-dashboard-container-column-count.mjs +40 -0
- package/build-module/hooks/use-dashboard-container-column-count.mjs.map +7 -0
- package/build-module/index.mjs +18 -0
- package/build-module/index.mjs.map +7 -0
- package/build-module/lock-unlock.mjs +11 -0
- package/build-module/lock-unlock.mjs.map +7 -0
- package/build-module/types.mjs +6 -0
- package/build-module/types.mjs.map +7 -0
- package/build-module/utils/create-dashboard-widget/create-dashboard-widget.mjs +19 -0
- package/build-module/utils/create-dashboard-widget/create-dashboard-widget.mjs.map +7 -0
- package/build-module/utils/create-dashboard-widget/index.mjs +6 -0
- package/build-module/utils/create-dashboard-widget/index.mjs.map +7 -0
- package/build-module/utils/default-grid/default-grid.mjs +12 -0
- package/build-module/utils/default-grid/default-grid.mjs.map +7 -0
- package/build-module/utils/default-grid/index.mjs +6 -0
- package/build-module/utils/default-grid/index.mjs.map +7 -0
- package/build-module/utils/grid-model-change/grid-model-change.mjs +30 -0
- package/build-module/utils/grid-model-change/grid-model-change.mjs.map +7 -0
- package/build-module/utils/grid-model-change/index.mjs +7 -0
- package/build-module/utils/grid-model-change/index.mjs.map +7 -0
- package/build-module/utils/index.mjs +8 -0
- package/build-module/utils/index.mjs.map +7 -0
- package/build-module/utils/migrate-layout/index.mjs +6 -0
- package/build-module/utils/migrate-layout/index.mjs.map +7 -0
- package/build-module/utils/migrate-layout/migrate-layout.mjs +69 -0
- package/build-module/utils/migrate-layout/migrate-layout.mjs.map +7 -0
- package/build-module/utils/normalize-grid-settings/index.mjs +6 -0
- package/build-module/utils/normalize-grid-settings/index.mjs.map +7 -0
- package/build-module/utils/normalize-grid-settings/normalize-grid-settings.mjs +21 -0
- package/build-module/utils/normalize-grid-settings/normalize-grid-settings.mjs.map +7 -0
- package/build-module/utils/resolve-dashboard-column-count/resolve-dashboard-column-count.mjs +22 -0
- package/build-module/utils/resolve-dashboard-column-count/resolve-dashboard-column-count.mjs.map +7 -0
- package/build-module/utils/row-height-presets/index.mjs +16 -0
- package/build-module/utils/row-height-presets/index.mjs.map +7 -0
- package/build-module/utils/row-height-presets/row-height-presets.mjs +34 -0
- package/build-module/utils/row-height-presets/row-height-presets.mjs.map +7 -0
- package/build-module/widget-dashboard.mjs +61 -0
- package/build-module/widget-dashboard.mjs.map +7 -0
- package/build-module/wordpress-commands.d.mjs +1 -0
- package/build-module/wordpress-commands.d.mjs.map +7 -0
- package/build-types/components/actions/actions.d.ts +11 -0
- package/build-types/components/actions/actions.d.ts.map +1 -0
- package/build-types/components/actions/index.d.ts +2 -0
- package/build-types/components/actions/index.d.ts.map +1 -0
- package/build-types/components/actions-menu/actions-menu.d.ts +22 -0
- package/build-types/components/actions-menu/actions-menu.d.ts.map +1 -0
- package/build-types/components/actions-menu/index.d.ts +3 -0
- package/build-types/components/actions-menu/index.d.ts.map +1 -0
- package/build-types/components/commands/commands.d.ts +7 -0
- package/build-types/components/commands/commands.d.ts.map +1 -0
- package/build-types/components/commands/index.d.ts +2 -0
- package/build-types/components/commands/index.d.ts.map +1 -0
- package/build-types/components/commands/use-pending-when-edit-mode.d.ts +15 -0
- package/build-types/components/commands/use-pending-when-edit-mode.d.ts.map +1 -0
- package/build-types/components/layout-settings/index.d.ts +2 -0
- package/build-types/components/layout-settings/index.d.ts.map +1 -0
- package/build-types/components/layout-settings/layout-model-edit-field/index.d.ts +17 -0
- package/build-types/components/layout-settings/layout-model-edit-field/index.d.ts.map +1 -0
- package/build-types/components/layout-settings/layout-model-edit-field/thumbnail-grid.d.ts +6 -0
- package/build-types/components/layout-settings/layout-model-edit-field/thumbnail-grid.d.ts.map +1 -0
- package/build-types/components/layout-settings/layout-model-edit-field/thumbnail-masonry.d.ts +6 -0
- package/build-types/components/layout-settings/layout-model-edit-field/thumbnail-masonry.d.ts.map +1 -0
- package/build-types/components/layout-settings/layout-settings.d.ts +14 -0
- package/build-types/components/layout-settings/layout-settings.d.ts.map +1 -0
- package/build-types/components/no-widgets-state/index.d.ts +2 -0
- package/build-types/components/no-widgets-state/index.d.ts.map +1 -0
- package/build-types/components/no-widgets-state/no-widgets-state.d.ts +17 -0
- package/build-types/components/no-widgets-state/no-widgets-state.d.ts.map +1 -0
- package/build-types/components/reset-confirmation/index.d.ts +2 -0
- package/build-types/components/reset-confirmation/index.d.ts.map +1 -0
- package/build-types/components/reset-confirmation/reset-confirmation.d.ts +8 -0
- package/build-types/components/reset-confirmation/reset-confirmation.d.ts.map +1 -0
- package/build-types/components/widget-chrome/index.d.ts +2 -0
- package/build-types/components/widget-chrome/index.d.ts.map +1 -0
- package/build-types/components/widget-chrome/widget-chrome.d.ts +22 -0
- package/build-types/components/widget-chrome/widget-chrome.d.ts.map +1 -0
- package/build-types/components/widget-inserter/index.d.ts +2 -0
- package/build-types/components/widget-inserter/index.d.ts.map +1 -0
- package/build-types/components/widget-inserter/widget-inserter.d.ts +7 -0
- package/build-types/components/widget-inserter/widget-inserter.d.ts.map +1 -0
- package/build-types/components/widget-picker/index.d.ts +2 -0
- package/build-types/components/widget-picker/index.d.ts.map +1 -0
- package/build-types/components/widget-picker/widget-picker.d.ts +26 -0
- package/build-types/components/widget-picker/widget-picker.d.ts.map +1 -0
- package/build-types/components/widget-render/index.d.ts +2 -0
- package/build-types/components/widget-render/index.d.ts.map +1 -0
- package/build-types/components/widget-render/widget-render.d.ts +17 -0
- package/build-types/components/widget-render/widget-render.d.ts.map +1 -0
- package/build-types/components/widget-settings/index.d.ts +5 -0
- package/build-types/components/widget-settings/index.d.ts.map +1 -0
- package/build-types/components/widget-settings/utils/get-admin-menu-inset.d.ts +17 -0
- package/build-types/components/widget-settings/utils/get-admin-menu-inset.d.ts.map +1 -0
- package/build-types/components/widget-settings/utils/get-widget-settings.d.ts +10 -0
- package/build-types/components/widget-settings/utils/get-widget-settings.d.ts.map +1 -0
- package/build-types/components/widget-settings/utils/index.d.ts +3 -0
- package/build-types/components/widget-settings/utils/index.d.ts.map +1 -0
- package/build-types/components/widget-settings/widget-settings-toolbar.d.ts +20 -0
- package/build-types/components/widget-settings/widget-settings-toolbar.d.ts.map +1 -0
- package/build-types/components/widget-settings/widget-settings-trigger.d.ts +23 -0
- package/build-types/components/widget-settings/widget-settings-trigger.d.ts.map +1 -0
- package/build-types/components/widget-settings/widget-settings.d.ts +13 -0
- package/build-types/components/widget-settings/widget-settings.d.ts.map +1 -0
- package/build-types/components/widget-toolbar/index.d.ts +3 -0
- package/build-types/components/widget-toolbar/index.d.ts.map +1 -0
- package/build-types/components/widget-toolbar/widget-toolbar.d.ts +16 -0
- package/build-types/components/widget-toolbar/widget-toolbar.d.ts.map +1 -0
- package/build-types/components/widgets/index.d.ts +2 -0
- package/build-types/components/widgets/index.d.ts.map +1 -0
- package/build-types/components/widgets/widget-layout-toolbar.d.ts +14 -0
- package/build-types/components/widgets/widget-layout-toolbar.d.ts.map +1 -0
- package/build-types/components/widgets/widget-resize-handle.d.ts +12 -0
- package/build-types/components/widgets/widget-resize-handle.d.ts.map +1 -0
- package/build-types/components/widgets/widgets.d.ts +10 -0
- package/build-types/components/widgets/widgets.d.ts.map +1 -0
- package/build-types/context/dashboard-context.d.ts +111 -0
- package/build-types/context/dashboard-context.d.ts.map +1 -0
- package/build-types/context/ui-context.d.ts +54 -0
- package/build-types/context/ui-context.d.ts.map +1 -0
- package/build-types/context/widget-context.d.ts +25 -0
- package/build-types/context/widget-context.d.ts.map +1 -0
- package/build-types/hooks/use-dashboard-container-column-count.d.ts +15 -0
- package/build-types/hooks/use-dashboard-container-column-count.d.ts.map +1 -0
- package/build-types/index.d.ts +7 -0
- package/build-types/index.d.ts.map +1 -0
- package/build-types/lock-unlock.d.ts +2 -0
- package/build-types/lock-unlock.d.ts.map +1 -0
- package/build-types/types.d.ts +222 -0
- package/build-types/types.d.ts.map +1 -0
- package/build-types/utils/create-dashboard-widget/create-dashboard-widget.d.ts +20 -0
- package/build-types/utils/create-dashboard-widget/create-dashboard-widget.d.ts.map +1 -0
- package/build-types/utils/create-dashboard-widget/index.d.ts +2 -0
- package/build-types/utils/create-dashboard-widget/index.d.ts.map +1 -0
- package/build-types/utils/default-grid/default-grid.d.ts +11 -0
- package/build-types/utils/default-grid/default-grid.d.ts.map +1 -0
- package/build-types/utils/default-grid/index.d.ts +2 -0
- package/build-types/utils/default-grid/index.d.ts.map +1 -0
- package/build-types/utils/grid-model-change/grid-model-change.d.ts +20 -0
- package/build-types/utils/grid-model-change/grid-model-change.d.ts.map +1 -0
- package/build-types/utils/grid-model-change/index.d.ts +2 -0
- package/build-types/utils/grid-model-change/index.d.ts.map +1 -0
- package/build-types/utils/index.d.ts +3 -0
- package/build-types/utils/index.d.ts.map +1 -0
- package/build-types/utils/migrate-layout/index.d.ts +2 -0
- package/build-types/utils/migrate-layout/index.d.ts.map +1 -0
- package/build-types/utils/migrate-layout/migrate-layout.d.ts +36 -0
- package/build-types/utils/migrate-layout/migrate-layout.d.ts.map +1 -0
- package/build-types/utils/normalize-grid-settings/index.d.ts +2 -0
- package/build-types/utils/normalize-grid-settings/index.d.ts.map +1 -0
- package/build-types/utils/normalize-grid-settings/normalize-grid-settings.d.ts +11 -0
- package/build-types/utils/normalize-grid-settings/normalize-grid-settings.d.ts.map +1 -0
- package/build-types/utils/resolve-dashboard-column-count/resolve-dashboard-column-count.d.ts +21 -0
- package/build-types/utils/resolve-dashboard-column-count/resolve-dashboard-column-count.d.ts.map +1 -0
- package/build-types/utils/row-height-presets/index.d.ts +3 -0
- package/build-types/utils/row-height-presets/index.d.ts.map +1 -0
- package/build-types/utils/row-height-presets/row-height-presets.d.ts +17 -0
- package/build-types/utils/row-height-presets/row-height-presets.d.ts.map +1 -0
- package/build-types/widget-dashboard.d.ts +51 -0
- package/build-types/widget-dashboard.d.ts.map +1 -0
- package/package.json +90 -0
- package/src/components/actions/actions.module.css +54 -0
- package/src/components/actions/actions.tsx +180 -0
- package/src/components/actions/index.ts +1 -0
- package/src/components/actions-menu/actions-menu.tsx +104 -0
- package/src/components/actions-menu/index.ts +2 -0
- package/src/components/commands/commands.tsx +182 -0
- package/src/components/commands/index.ts +1 -0
- package/src/components/commands/use-pending-when-edit-mode.ts +48 -0
- package/src/components/layout-settings/index.ts +1 -0
- package/src/components/layout-settings/layout-model-edit-field/index.tsx +98 -0
- package/src/components/layout-settings/layout-model-edit-field/style.module.css +34 -0
- package/src/components/layout-settings/layout-model-edit-field/thumbnail-grid.tsx +28 -0
- package/src/components/layout-settings/layout-model-edit-field/thumbnail-masonry.tsx +28 -0
- package/src/components/layout-settings/layout-settings.tsx +217 -0
- package/src/components/no-widgets-state/index.ts +1 -0
- package/src/components/no-widgets-state/no-widgets-state.module.css +3 -0
- package/src/components/no-widgets-state/no-widgets-state.tsx +56 -0
- package/src/components/reset-confirmation/index.ts +1 -0
- package/src/components/reset-confirmation/reset-confirmation.tsx +44 -0
- package/src/components/widget-chrome/index.ts +1 -0
- package/src/components/widget-chrome/widget-chrome.module.css +87 -0
- package/src/components/widget-chrome/widget-chrome.tsx +255 -0
- package/src/components/widget-inserter/index.ts +1 -0
- package/src/components/widget-inserter/widget-inserter.tsx +70 -0
- package/src/components/widget-picker/index.ts +1 -0
- package/src/components/widget-picker/widget-picker.module.css +11 -0
- package/src/components/widget-picker/widget-picker.tsx +137 -0
- package/src/components/widget-render/index.ts +1 -0
- package/src/components/widget-render/widget-render.tsx +58 -0
- package/src/components/widget-settings/index.ts +4 -0
- package/src/components/widget-settings/utils/get-admin-menu-inset.ts +30 -0
- package/src/components/widget-settings/utils/get-widget-settings.ts +22 -0
- package/src/components/widget-settings/utils/index.ts +2 -0
- package/src/components/widget-settings/widget-settings-toolbar.module.css +25 -0
- package/src/components/widget-settings/widget-settings-toolbar.tsx +45 -0
- package/src/components/widget-settings/widget-settings-trigger.tsx +96 -0
- package/src/components/widget-settings/widget-settings.module.css +8 -0
- package/src/components/widget-settings/widget-settings.tsx +200 -0
- package/src/components/widget-toolbar/index.ts +2 -0
- package/src/components/widget-toolbar/widget-toolbar.module.css +12 -0
- package/src/components/widget-toolbar/widget-toolbar.tsx +46 -0
- package/src/components/widgets/index.ts +1 -0
- package/src/components/widgets/widget-layout-toolbar.module.css +6 -0
- package/src/components/widgets/widget-layout-toolbar.tsx +118 -0
- package/src/components/widgets/widget-resize-handle.module.css +135 -0
- package/src/components/widgets/widget-resize-handle.tsx +60 -0
- package/src/components/widgets/widgets.module.css +43 -0
- package/src/components/widgets/widgets.tsx +208 -0
- package/src/context/dashboard-context.tsx +386 -0
- package/src/context/ui-context.tsx +118 -0
- package/src/context/widget-context.tsx +45 -0
- package/src/hooks/use-dashboard-container-column-count.ts +63 -0
- package/src/index.ts +9 -0
- package/src/lock-unlock.ts +10 -0
- package/src/test/actions.test.tsx +228 -0
- package/src/test/commands.test.tsx +176 -0
- package/src/test/create-dashboard-widget.test.ts +59 -0
- package/src/test/dashboard-context.test.tsx +26 -0
- package/src/test/staging.test.tsx +476 -0
- package/src/test/widget-dashboard.test.tsx +204 -0
- package/src/test/widget-inserter.test.tsx +210 -0
- package/src/test/widget-settings.test.tsx +199 -0
- package/src/types.ts +260 -0
- package/src/utils/create-dashboard-widget/create-dashboard-widget.ts +43 -0
- package/src/utils/create-dashboard-widget/index.ts +1 -0
- package/src/utils/default-grid/default-grid.ts +17 -0
- package/src/utils/default-grid/index.ts +1 -0
- package/src/utils/grid-model-change/grid-model-change.ts +53 -0
- package/src/utils/grid-model-change/index.ts +1 -0
- package/src/utils/index.ts +2 -0
- package/src/utils/migrate-layout/index.ts +1 -0
- package/src/utils/migrate-layout/migrate-layout.ts +156 -0
- package/src/utils/migrate-layout/test/migrate-layout.test.ts +114 -0
- package/src/utils/normalize-grid-settings/index.ts +1 -0
- package/src/utils/normalize-grid-settings/normalize-grid-settings.ts +38 -0
- package/src/utils/resolve-dashboard-column-count/resolve-dashboard-column-count.ts +41 -0
- package/src/utils/resolve-dashboard-column-count/test/resolve-dashboard-column-count.test.ts +44 -0
- package/src/utils/row-height-presets/index.ts +8 -0
- package/src/utils/row-height-presets/row-height-presets.ts +43 -0
- package/src/widget-dashboard.tsx +102 -0
- package/src/wordpress-commands.d.ts +12 -0
|
@@ -0,0 +1,240 @@
|
|
|
1
|
+
// packages/widget-dashboard/src/components/actions/actions.tsx
|
|
2
|
+
import { useSelect } from "@wordpress/data";
|
|
3
|
+
import { useCallback, useEffect, useState } from "@wordpress/element";
|
|
4
|
+
import { __ } from "@wordpress/i18n";
|
|
5
|
+
import { layout as layoutIcon, plus } from "@wordpress/icons";
|
|
6
|
+
import { store as viewportStore } from "@wordpress/viewport";
|
|
7
|
+
import { Button, Stack } from "@wordpress/ui";
|
|
8
|
+
import { useDashboardInternalContext } from "../../context/dashboard-context.mjs";
|
|
9
|
+
import { useDashboardUIContext } from "../../context/ui-context.mjs";
|
|
10
|
+
import { ActionsMenu } from "../actions-menu/index.mjs";
|
|
11
|
+
|
|
12
|
+
// packages/style-runtime/src/index.ts
|
|
13
|
+
var STYLE_HASH_ATTRIBUTE = "data-wp-hash";
|
|
14
|
+
function getRuntime() {
|
|
15
|
+
const globalScope = globalThis;
|
|
16
|
+
if (globalScope.__wpStyleRuntime) {
|
|
17
|
+
return globalScope.__wpStyleRuntime;
|
|
18
|
+
}
|
|
19
|
+
globalScope.__wpStyleRuntime = {
|
|
20
|
+
documents: /* @__PURE__ */ new Map(),
|
|
21
|
+
styles: /* @__PURE__ */ new Map(),
|
|
22
|
+
injectedStyles: /* @__PURE__ */ new WeakMap()
|
|
23
|
+
};
|
|
24
|
+
if (typeof document !== "undefined") {
|
|
25
|
+
registerDocument(document);
|
|
26
|
+
}
|
|
27
|
+
return globalScope.__wpStyleRuntime;
|
|
28
|
+
}
|
|
29
|
+
function documentContainsStyleHash(targetDocument, hash) {
|
|
30
|
+
if (!targetDocument.head) {
|
|
31
|
+
return false;
|
|
32
|
+
}
|
|
33
|
+
for (const style of targetDocument.head.querySelectorAll(
|
|
34
|
+
`style[${STYLE_HASH_ATTRIBUTE}]`
|
|
35
|
+
)) {
|
|
36
|
+
if (style.getAttribute(STYLE_HASH_ATTRIBUTE) === hash) {
|
|
37
|
+
return true;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
return false;
|
|
41
|
+
}
|
|
42
|
+
function injectStyle(targetDocument, hash, css) {
|
|
43
|
+
if (!targetDocument.head) {
|
|
44
|
+
return;
|
|
45
|
+
}
|
|
46
|
+
const runtime = getRuntime();
|
|
47
|
+
let injectedStyles = runtime.injectedStyles.get(targetDocument);
|
|
48
|
+
if (!injectedStyles) {
|
|
49
|
+
injectedStyles = /* @__PURE__ */ new Set();
|
|
50
|
+
runtime.injectedStyles.set(targetDocument, injectedStyles);
|
|
51
|
+
}
|
|
52
|
+
if (injectedStyles.has(hash)) {
|
|
53
|
+
return;
|
|
54
|
+
}
|
|
55
|
+
if (documentContainsStyleHash(targetDocument, hash)) {
|
|
56
|
+
injectedStyles.add(hash);
|
|
57
|
+
return;
|
|
58
|
+
}
|
|
59
|
+
const style = targetDocument.createElement("style");
|
|
60
|
+
style.setAttribute(STYLE_HASH_ATTRIBUTE, hash);
|
|
61
|
+
style.appendChild(targetDocument.createTextNode(css));
|
|
62
|
+
targetDocument.head.appendChild(style);
|
|
63
|
+
injectedStyles.add(hash);
|
|
64
|
+
}
|
|
65
|
+
function registerDocument(targetDocument) {
|
|
66
|
+
const runtime = getRuntime();
|
|
67
|
+
runtime.documents.set(
|
|
68
|
+
targetDocument,
|
|
69
|
+
(runtime.documents.get(targetDocument) ?? 0) + 1
|
|
70
|
+
);
|
|
71
|
+
for (const [hash, css] of runtime.styles) {
|
|
72
|
+
injectStyle(targetDocument, hash, css);
|
|
73
|
+
}
|
|
74
|
+
return () => {
|
|
75
|
+
const count = runtime.documents.get(targetDocument);
|
|
76
|
+
if (count === void 0) {
|
|
77
|
+
return;
|
|
78
|
+
}
|
|
79
|
+
if (count <= 1) {
|
|
80
|
+
runtime.documents.delete(targetDocument);
|
|
81
|
+
return;
|
|
82
|
+
}
|
|
83
|
+
runtime.documents.set(targetDocument, count - 1);
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
function registerStyle(hash, css) {
|
|
87
|
+
const runtime = getRuntime();
|
|
88
|
+
runtime.styles.set(hash, css);
|
|
89
|
+
for (const targetDocument of runtime.documents.keys()) {
|
|
90
|
+
injectStyle(targetDocument, hash, css);
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
// packages/widget-dashboard/src/components/actions/actions.module.css
|
|
95
|
+
if (typeof process === "undefined" || process.env.NODE_ENV !== "test") {
|
|
96
|
+
registerStyle("207feb9ccc", "._273463df7651817f__editActionsEnter,._3cd6628039136a20__editActionsExit{align-items:center;display:inline-flex;gap:var(--wp--preset--spacing--20);transform-origin:right center}._572540719be6c8a3__editActionsDivider{align-self:center;background-color:var(--wpds-color-stroke-surface-neutral,#dbdbdb);flex-shrink:0;height:var(--wpds-dimension-size-2xs,16px);width:1px}@media not (prefers-reduced-motion){._273463df7651817f__editActionsEnter,._3cd6628039136a20__editActionsExit{will-change:opacity,transform}._273463df7651817f__editActionsEnter{animation:_332d3153b716aa20__actions-slide-in var(--wpds-motion-duration-md,.2s) var(--wpds-motion-easing-expressive,cubic-bezier(.25,0,0,1)) forwards}._3cd6628039136a20__editActionsExit{animation:_4dff70702a4b0f40__actions-fold-out var(--wpds-motion-duration-sm,.1s) var(--wpds-motion-easing-balanced,cubic-bezier(.4,0,.2,1)) forwards}@keyframes _332d3153b716aa20__actions-slide-in{0%{opacity:0;transform:translateX(12px) scaleX(.92)}to{opacity:1;transform:translateX(0) scaleX(1)}}@keyframes _4dff70702a4b0f40__actions-fold-out{0%{opacity:1;transform:translateX(0) scaleX(1)}to{opacity:0;transform:translateX(12px) scaleX(.92)}}}");
|
|
97
|
+
}
|
|
98
|
+
var actions_default = { "editActionsEnter": "_273463df7651817f__editActionsEnter", "editActionsExit": "_3cd6628039136a20__editActionsExit", "editActionsDivider": "_572540719be6c8a3__editActionsDivider", "actions-slide-in": "_332d3153b716aa20__actions-slide-in", "actions-fold-out": "_4dff70702a4b0f40__actions-fold-out" };
|
|
99
|
+
|
|
100
|
+
// packages/widget-dashboard/src/components/actions/actions.tsx
|
|
101
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
102
|
+
function Actions() {
|
|
103
|
+
const {
|
|
104
|
+
editMode,
|
|
105
|
+
onEditChange,
|
|
106
|
+
onLayoutReset,
|
|
107
|
+
commit,
|
|
108
|
+
cancel: cancelStaging,
|
|
109
|
+
hasUncommittedChanges,
|
|
110
|
+
canEditGridSettings
|
|
111
|
+
} = useDashboardInternalContext();
|
|
112
|
+
const [isEditActionsMounted, setIsEditActionsMounted] = useState(editMode);
|
|
113
|
+
const [isExitingEditActions, setIsExitingEditActions] = useState(false);
|
|
114
|
+
useEffect(() => {
|
|
115
|
+
if (editMode) {
|
|
116
|
+
setIsEditActionsMounted(true);
|
|
117
|
+
setIsExitingEditActions(false);
|
|
118
|
+
return;
|
|
119
|
+
}
|
|
120
|
+
if (!isEditActionsMounted) {
|
|
121
|
+
return;
|
|
122
|
+
}
|
|
123
|
+
setIsExitingEditActions(true);
|
|
124
|
+
const exitTimeout = setTimeout(() => {
|
|
125
|
+
setIsEditActionsMounted(false);
|
|
126
|
+
setIsExitingEditActions(false);
|
|
127
|
+
}, 220);
|
|
128
|
+
return () => clearTimeout(exitTimeout);
|
|
129
|
+
}, [editMode, isEditActionsMounted]);
|
|
130
|
+
const { setInserterOpen, setLayoutSettingsOpen, setResetDialogOpen } = useDashboardUIContext();
|
|
131
|
+
const isMobileViewport = useSelect(
|
|
132
|
+
(select) => select(viewportStore).isViewportMatch("< small"),
|
|
133
|
+
[]
|
|
134
|
+
);
|
|
135
|
+
const handleEditMode = useCallback(() => {
|
|
136
|
+
onEditChange?.(!editMode);
|
|
137
|
+
}, [editMode, onEditChange]);
|
|
138
|
+
const insert = useCallback(() => {
|
|
139
|
+
setInserterOpen(true);
|
|
140
|
+
}, [setInserterOpen]);
|
|
141
|
+
const cancel = useCallback(() => {
|
|
142
|
+
cancelStaging();
|
|
143
|
+
}, [cancelStaging]);
|
|
144
|
+
const done = useCallback(() => {
|
|
145
|
+
commit();
|
|
146
|
+
}, [commit]);
|
|
147
|
+
const openLayoutSettings = useCallback(() => {
|
|
148
|
+
setLayoutSettingsOpen(true);
|
|
149
|
+
}, [setLayoutSettingsOpen]);
|
|
150
|
+
const menuItems = [
|
|
151
|
+
{
|
|
152
|
+
label: __("Reset to default"),
|
|
153
|
+
onClick: () => setResetDialogOpen(true),
|
|
154
|
+
disabled: !onLayoutReset
|
|
155
|
+
}
|
|
156
|
+
];
|
|
157
|
+
if (!onEditChange) {
|
|
158
|
+
return null;
|
|
159
|
+
}
|
|
160
|
+
return /* @__PURE__ */ jsxs(Stack, { direction: "row", gap: "sm", children: [
|
|
161
|
+
isEditActionsMounted ? /* @__PURE__ */ jsxs(
|
|
162
|
+
Stack,
|
|
163
|
+
{
|
|
164
|
+
direction: "row",
|
|
165
|
+
gap: "sm",
|
|
166
|
+
className: isExitingEditActions ? actions_default.editActionsExit : actions_default.editActionsEnter,
|
|
167
|
+
children: [
|
|
168
|
+
/* @__PURE__ */ jsxs(
|
|
169
|
+
Button,
|
|
170
|
+
{
|
|
171
|
+
variant: "minimal",
|
|
172
|
+
tone: "brand",
|
|
173
|
+
size: "compact",
|
|
174
|
+
onClick: insert,
|
|
175
|
+
children: [
|
|
176
|
+
!isMobileViewport && /* @__PURE__ */ jsx(Button.Icon, { icon: plus }),
|
|
177
|
+
__("Add widget")
|
|
178
|
+
]
|
|
179
|
+
}
|
|
180
|
+
),
|
|
181
|
+
canEditGridSettings && /* @__PURE__ */ jsxs(
|
|
182
|
+
Button,
|
|
183
|
+
{
|
|
184
|
+
variant: "minimal",
|
|
185
|
+
tone: "brand",
|
|
186
|
+
size: "compact",
|
|
187
|
+
onClick: openLayoutSettings,
|
|
188
|
+
children: [
|
|
189
|
+
!isMobileViewport && /* @__PURE__ */ jsx(Button.Icon, { icon: layoutIcon }),
|
|
190
|
+
__("Layout settings")
|
|
191
|
+
]
|
|
192
|
+
}
|
|
193
|
+
),
|
|
194
|
+
/* @__PURE__ */ jsx(
|
|
195
|
+
"div",
|
|
196
|
+
{
|
|
197
|
+
className: actions_default.editActionsDivider,
|
|
198
|
+
"aria-hidden": "true"
|
|
199
|
+
}
|
|
200
|
+
),
|
|
201
|
+
/* @__PURE__ */ jsx(
|
|
202
|
+
Button,
|
|
203
|
+
{
|
|
204
|
+
variant: "minimal",
|
|
205
|
+
tone: "brand",
|
|
206
|
+
size: "compact",
|
|
207
|
+
onClick: cancel,
|
|
208
|
+
children: __("Cancel")
|
|
209
|
+
}
|
|
210
|
+
),
|
|
211
|
+
/* @__PURE__ */ jsx(
|
|
212
|
+
Button,
|
|
213
|
+
{
|
|
214
|
+
variant: "solid",
|
|
215
|
+
tone: "brand",
|
|
216
|
+
size: "compact",
|
|
217
|
+
onClick: done,
|
|
218
|
+
disabled: !hasUncommittedChanges,
|
|
219
|
+
children: __("Done")
|
|
220
|
+
}
|
|
221
|
+
)
|
|
222
|
+
]
|
|
223
|
+
}
|
|
224
|
+
) : /* @__PURE__ */ jsx(
|
|
225
|
+
Button,
|
|
226
|
+
{
|
|
227
|
+
variant: "minimal",
|
|
228
|
+
tone: "brand",
|
|
229
|
+
size: "compact",
|
|
230
|
+
onClick: handleEditMode,
|
|
231
|
+
children: __("Customize")
|
|
232
|
+
}
|
|
233
|
+
),
|
|
234
|
+
/* @__PURE__ */ jsx(ActionsMenu, { items: menuItems })
|
|
235
|
+
] });
|
|
236
|
+
}
|
|
237
|
+
export {
|
|
238
|
+
Actions
|
|
239
|
+
};
|
|
240
|
+
//# sourceMappingURL=actions.mjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/components/actions/actions.tsx", "../../../../style-runtime/src/index.ts", "../../../src/components/actions/actions.module.css"],
|
|
4
|
+
"sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { useSelect } from '@wordpress/data';\nimport { useCallback, useEffect, useState } from '@wordpress/element';\nimport { __ } from '@wordpress/i18n';\nimport { layout as layoutIcon, plus } from '@wordpress/icons';\nimport { store as viewportStore } from '@wordpress/viewport';\n// eslint-disable-next-line @wordpress/use-recommended-components\nimport { Button, Stack } from '@wordpress/ui';\n\n/**\n * Internal dependencies\n */\nimport { useDashboardInternalContext } from '../../context/dashboard-context';\nimport { useDashboardUIContext } from '../../context/ui-context';\nimport { ActionsMenu } from '../actions-menu';\nimport type { ActionsMenuItem } from '../actions-menu';\nimport styles from './actions.module.css';\n\n/**\n * Edit toolbar for the dashboard. In customize mode it surfaces Add widget,\n * Layout settings (when grid settings are editable), Cancel, and Done;\n * otherwise a single Customize button. Buttons and the overflow menu are\n * triggers that flip the shared UI state the overlays react to.\n *\n * Returns `null` when mounted without `onEditChange`, so hosts that don't\n * expose edit mode can keep `Actions` in their tree unconditionally.\n */\nexport function Actions(): React.ReactNode {\n\tconst {\n\t\teditMode,\n\t\tonEditChange,\n\t\tonLayoutReset,\n\t\tcommit,\n\t\tcancel: cancelStaging,\n\t\thasUncommittedChanges,\n\t\tcanEditGridSettings,\n\t} = useDashboardInternalContext();\n\n\tconst [ isEditActionsMounted, setIsEditActionsMounted ] =\n\t\tuseState( editMode );\n\tconst [ isExitingEditActions, setIsExitingEditActions ] = useState( false );\n\n\tuseEffect( () => {\n\t\tif ( editMode ) {\n\t\t\tsetIsEditActionsMounted( true );\n\t\t\tsetIsExitingEditActions( false );\n\t\t\treturn;\n\t\t}\n\n\t\tif ( ! isEditActionsMounted ) {\n\t\t\treturn;\n\t\t}\n\n\t\tsetIsExitingEditActions( true );\n\t\tconst exitTimeout = setTimeout( () => {\n\t\t\tsetIsEditActionsMounted( false );\n\t\t\tsetIsExitingEditActions( false );\n\t\t}, 220 );\n\n\t\treturn () => clearTimeout( exitTimeout );\n\t}, [ editMode, isEditActionsMounted ] );\n\n\tconst { setInserterOpen, setLayoutSettingsOpen, setResetDialogOpen } =\n\t\tuseDashboardUIContext();\n\t// @TODO: switch to using Admin UI declaratively for mobile viewport support once available.\n\t// https://github.com/WordPress/gutenberg/issues/77628\n\tconst isMobileViewport = useSelect(\n\t\t( select ) => select( viewportStore ).isViewportMatch( '< small' ),\n\t\t[]\n\t);\n\n\tconst handleEditMode = useCallback( () => {\n\t\tonEditChange?.( ! editMode );\n\t}, [ editMode, onEditChange ] );\n\n\tconst insert = useCallback( () => {\n\t\tsetInserterOpen( true );\n\t}, [ setInserterOpen ] );\n\n\tconst cancel = useCallback( () => {\n\t\tcancelStaging();\n\t}, [ cancelStaging ] );\n\n\tconst done = useCallback( () => {\n\t\tcommit();\n\t}, [ commit ] );\n\n\tconst openLayoutSettings = useCallback( () => {\n\t\tsetLayoutSettingsOpen( true );\n\t}, [ setLayoutSettingsOpen ] );\n\n\tconst menuItems: ActionsMenuItem[] = [\n\t\t{\n\t\t\tlabel: __( 'Reset to default' ),\n\t\t\tonClick: () => setResetDialogOpen( true ),\n\t\t\tdisabled: ! onLayoutReset,\n\t\t},\n\t];\n\n\tif ( ! onEditChange ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<Stack direction=\"row\" gap=\"sm\">\n\t\t\t{ isEditActionsMounted ? (\n\t\t\t\t<Stack\n\t\t\t\t\tdirection=\"row\"\n\t\t\t\t\tgap=\"sm\"\n\t\t\t\t\tclassName={\n\t\t\t\t\t\tisExitingEditActions\n\t\t\t\t\t\t\t? styles.editActionsExit\n\t\t\t\t\t\t\t: styles.editActionsEnter\n\t\t\t\t\t}\n\t\t\t\t>\n\t\t\t\t\t<Button\n\t\t\t\t\t\tvariant=\"minimal\"\n\t\t\t\t\t\ttone=\"brand\"\n\t\t\t\t\t\tsize=\"compact\"\n\t\t\t\t\t\tonClick={ insert }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ ! isMobileViewport && <Button.Icon icon={ plus } /> }\n\t\t\t\t\t\t{ __( 'Add widget' ) }\n\t\t\t\t\t</Button>\n\n\t\t\t\t\t{ canEditGridSettings && (\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\tvariant=\"minimal\"\n\t\t\t\t\t\t\ttone=\"brand\"\n\t\t\t\t\t\t\tsize=\"compact\"\n\t\t\t\t\t\t\tonClick={ openLayoutSettings }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ ! isMobileViewport && (\n\t\t\t\t\t\t\t\t<Button.Icon icon={ layoutIcon } />\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t{ __( 'Layout settings' ) }\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t) }\n\n\t\t\t\t\t<div\n\t\t\t\t\t\tclassName={ styles.editActionsDivider }\n\t\t\t\t\t\taria-hidden=\"true\"\n\t\t\t\t\t/>\n\n\t\t\t\t\t<Button\n\t\t\t\t\t\tvariant=\"minimal\"\n\t\t\t\t\t\ttone=\"brand\"\n\t\t\t\t\t\tsize=\"compact\"\n\t\t\t\t\t\tonClick={ cancel }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ __( 'Cancel' ) }\n\t\t\t\t\t</Button>\n\n\t\t\t\t\t<Button\n\t\t\t\t\t\tvariant=\"solid\"\n\t\t\t\t\t\ttone=\"brand\"\n\t\t\t\t\t\tsize=\"compact\"\n\t\t\t\t\t\tonClick={ done }\n\t\t\t\t\t\tdisabled={ ! hasUncommittedChanges }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ __( 'Done' ) }\n\t\t\t\t\t</Button>\n\t\t\t\t</Stack>\n\t\t\t) : (\n\t\t\t\t<Button\n\t\t\t\t\tvariant=\"minimal\"\n\t\t\t\t\ttone=\"brand\"\n\t\t\t\t\tsize=\"compact\"\n\t\t\t\t\tonClick={ handleEditMode }\n\t\t\t\t>\n\t\t\t\t\t{ __( 'Customize' ) }\n\t\t\t\t</Button>\n\t\t\t) }\n\n\t\t\t<ActionsMenu items={ menuItems } />\n\t\t</Stack>\n\t);\n}\n", "type GlobalScopeWithStyleRuntime = typeof globalThis & {\n\t// This global is shared by separately bundled copies of this package.\n\t// Keep its shape backward compatible after release.\n\t__wpStyleRuntime?: {\n\t\tdocuments: Map< Document, number >;\n\t\tstyles: Map< string, string >;\n\t\tinjectedStyles: WeakMap< Document, Set< string > >;\n\t};\n};\n\nconst STYLE_HASH_ATTRIBUTE = 'data-wp-hash';\n\n/**\n * Returns the shared style runtime registry.\n *\n * The registry is stored on `globalThis` so separately bundled copies of this\n * package can coordinate through the same document and style maps.\n *\n * @return The shared runtime registry.\n */\nfunction getRuntime() {\n\tconst globalScope = globalThis as GlobalScopeWithStyleRuntime;\n\n\tif ( globalScope.__wpStyleRuntime ) {\n\t\treturn globalScope.__wpStyleRuntime;\n\t}\n\n\tglobalScope.__wpStyleRuntime = {\n\t\tdocuments: new Map(),\n\t\tstyles: new Map(),\n\t\tinjectedStyles: new WeakMap(),\n\t};\n\n\tif ( typeof document !== 'undefined' ) {\n\t\tregisterDocument( document );\n\t}\n\n\treturn globalScope.__wpStyleRuntime;\n}\n\n/**\n * Checks whether a document already contains a style tag for a hash.\n *\n * @param targetDocument Document to inspect.\n * @param hash Stable hash for the transformed CSS.\n *\n * @return Whether the style hash already exists in the document.\n */\nfunction documentContainsStyleHash(\n\ttargetDocument: Document,\n\thash: string\n): boolean {\n\tif ( ! targetDocument.head ) {\n\t\treturn false;\n\t}\n\n\tfor ( const style of targetDocument.head.querySelectorAll(\n\t\t`style[${ STYLE_HASH_ATTRIBUTE }]`\n\t) ) {\n\t\tif ( style.getAttribute( STYLE_HASH_ATTRIBUTE ) === hash ) {\n\t\t\treturn true;\n\t\t}\n\t}\n\n\treturn false;\n}\n\n/**\n * Injects a registered style into a document, unless that document already\n * contains a style tag for the same hash.\n *\n * @param targetDocument Document to inject the style into.\n * @param hash Stable hash for the transformed CSS.\n * @param css CSS text to inject.\n */\nfunction injectStyle( targetDocument: Document, hash: string, css: string ) {\n\tif ( ! targetDocument.head ) {\n\t\treturn;\n\t}\n\n\tconst runtime = getRuntime();\n\tlet injectedStyles = runtime.injectedStyles.get( targetDocument );\n\n\tif ( ! injectedStyles ) {\n\t\tinjectedStyles = new Set();\n\t\truntime.injectedStyles.set( targetDocument, injectedStyles );\n\t}\n\n\tif ( injectedStyles.has( hash ) ) {\n\t\treturn;\n\t}\n\n\t// Older generated CSS module output can still inject matching style tags\n\t// after this document's cache is created, so keep the DOM as the fallback\n\t// source of truth on cache misses.\n\tif ( documentContainsStyleHash( targetDocument, hash ) ) {\n\t\tinjectedStyles.add( hash );\n\t\treturn;\n\t}\n\n\tconst style = targetDocument.createElement( 'style' );\n\tstyle.setAttribute( STYLE_HASH_ATTRIBUTE, hash );\n\tstyle.appendChild( targetDocument.createTextNode( css ) );\n\ttargetDocument.head.appendChild( style );\n\tinjectedStyles.add( hash );\n}\n\n/**\n * Registers a document as a style injection target.\n *\n * Existing registered styles are replayed into the document immediately.\n * Documents are reference-counted so multiple providers can safely register the\n * same document without one cleanup removing it while another registration is\n * still active.\n *\n * @param targetDocument Document to receive registered styles.\n * @return Cleanup function that unregisters this document registration.\n */\nexport function registerDocument( targetDocument: Document ) {\n\tconst runtime = getRuntime();\n\n\truntime.documents.set(\n\t\ttargetDocument,\n\t\t( runtime.documents.get( targetDocument ) ?? 0 ) + 1\n\t);\n\n\tfor ( const [ hash, css ] of runtime.styles ) {\n\t\tinjectStyle( targetDocument, hash, css );\n\t}\n\n\treturn () => {\n\t\tconst count = runtime.documents.get( targetDocument );\n\n\t\tif ( count === undefined ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( count <= 1 ) {\n\t\t\truntime.documents.delete( targetDocument );\n\t\t\treturn;\n\t\t}\n\n\t\truntime.documents.set( targetDocument, count - 1 );\n\t};\n}\n\n/**\n * Registers a style and injects it into all registered documents.\n *\n * The hash is used as the deduplication key, so calling this repeatedly with\n * the same hash will not add duplicate style tags to a document.\n * Registered styles are retained for the lifetime of the page so they can be\n * replayed into documents that are registered later.\n *\n * @param hash Stable hash for the transformed CSS.\n * @param css CSS text to inject.\n */\nexport function registerStyle( hash: string, css: string ) {\n\tconst runtime = getRuntime();\n\n\truntime.styles.set( hash, css );\n\n\tfor ( const targetDocument of runtime.documents.keys() ) {\n\t\tinjectStyle( targetDocument, hash, css );\n\t}\n}\n", "import { registerStyle } from '@wordpress/style-runtime';\nif (typeof process === 'undefined' || process.env.NODE_ENV !== 'test') {\n\tregisterStyle(\"207feb9ccc\", \"._273463df7651817f__editActionsEnter,._3cd6628039136a20__editActionsExit{align-items:center;display:inline-flex;gap:var(--wp--preset--spacing--20);transform-origin:right center}._572540719be6c8a3__editActionsDivider{align-self:center;background-color:var(--wpds-color-stroke-surface-neutral,#dbdbdb);flex-shrink:0;height:var(--wpds-dimension-size-2xs,16px);width:1px}@media not (prefers-reduced-motion){._273463df7651817f__editActionsEnter,._3cd6628039136a20__editActionsExit{will-change:opacity,transform}._273463df7651817f__editActionsEnter{animation:_332d3153b716aa20__actions-slide-in var(--wpds-motion-duration-md,.2s) var(--wpds-motion-easing-expressive,cubic-bezier(.25,0,0,1)) forwards}._3cd6628039136a20__editActionsExit{animation:_4dff70702a4b0f40__actions-fold-out var(--wpds-motion-duration-sm,.1s) var(--wpds-motion-easing-balanced,cubic-bezier(.4,0,.2,1)) forwards}@keyframes _332d3153b716aa20__actions-slide-in{0%{opacity:0;transform:translateX(12px) scaleX(.92)}to{opacity:1;transform:translateX(0) scaleX(1)}}@keyframes _4dff70702a4b0f40__actions-fold-out{0%{opacity:1;transform:translateX(0) scaleX(1)}to{opacity:0;transform:translateX(12px) scaleX(.92)}}}\");\n}\nexport default {\"editActionsEnter\":\"_273463df7651817f__editActionsEnter\",\"editActionsExit\":\"_3cd6628039136a20__editActionsExit\",\"editActionsDivider\":\"_572540719be6c8a3__editActionsDivider\",\"actions-slide-in\":\"_332d3153b716aa20__actions-slide-in\",\"actions-fold-out\":\"_4dff70702a4b0f40__actions-fold-out\"};\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
// packages/widget-dashboard/src/components/actions-menu/actions-menu.tsx
|
|
2
|
+
import { privateApis as componentsPrivateApis } from "@wordpress/components";
|
|
3
|
+
import { __ } from "@wordpress/i18n";
|
|
4
|
+
import { moreVertical } from "@wordpress/icons";
|
|
5
|
+
import { Button, IconButton, Tooltip } from "@wordpress/ui";
|
|
6
|
+
import { unlock } from "../../lock-unlock.mjs";
|
|
7
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
8
|
+
var { Menu } = unlock(componentsPrivateApis);
|
|
9
|
+
function ActionsMenuEntry({ item }) {
|
|
10
|
+
const showDisabledTooltip = item.disabled && item.disabledTooltip;
|
|
11
|
+
const menuItem = /* @__PURE__ */ jsx(
|
|
12
|
+
Menu.Item,
|
|
13
|
+
{
|
|
14
|
+
disabled: item.disabled,
|
|
15
|
+
onClick: item.onClick,
|
|
16
|
+
render: /* @__PURE__ */ jsx(Button, { variant: "minimal", tone: "neutral" }),
|
|
17
|
+
children: item.label
|
|
18
|
+
}
|
|
19
|
+
);
|
|
20
|
+
if (!showDisabledTooltip) {
|
|
21
|
+
return menuItem;
|
|
22
|
+
}
|
|
23
|
+
return /* @__PURE__ */ jsxs(Tooltip.Root, { children: [
|
|
24
|
+
/* @__PURE__ */ jsx(
|
|
25
|
+
Tooltip.Trigger,
|
|
26
|
+
{
|
|
27
|
+
render: /* @__PURE__ */ jsx(
|
|
28
|
+
Menu.Item,
|
|
29
|
+
{
|
|
30
|
+
disabled: item.disabled,
|
|
31
|
+
onClick: item.onClick,
|
|
32
|
+
render: /* @__PURE__ */ jsx(Button, { variant: "minimal", tone: "neutral" })
|
|
33
|
+
}
|
|
34
|
+
),
|
|
35
|
+
children: item.label
|
|
36
|
+
}
|
|
37
|
+
),
|
|
38
|
+
/* @__PURE__ */ jsx(Tooltip.Popup, { positioner: /* @__PURE__ */ jsx(Tooltip.Positioner, { side: "bottom" }), children: item.disabledTooltip })
|
|
39
|
+
] });
|
|
40
|
+
}
|
|
41
|
+
function ActionsMenu({ items }) {
|
|
42
|
+
if (items.length === 0) {
|
|
43
|
+
return null;
|
|
44
|
+
}
|
|
45
|
+
return /* @__PURE__ */ jsxs(Menu, { children: [
|
|
46
|
+
/* @__PURE__ */ jsx(
|
|
47
|
+
Menu.TriggerButton,
|
|
48
|
+
{
|
|
49
|
+
render: /* @__PURE__ */ jsx(
|
|
50
|
+
IconButton,
|
|
51
|
+
{
|
|
52
|
+
icon: moreVertical,
|
|
53
|
+
label: __("More options"),
|
|
54
|
+
variant: "minimal",
|
|
55
|
+
tone: "brand",
|
|
56
|
+
size: "compact"
|
|
57
|
+
}
|
|
58
|
+
)
|
|
59
|
+
}
|
|
60
|
+
),
|
|
61
|
+
/* @__PURE__ */ jsx(Menu.Popover, { children: /* @__PURE__ */ jsx(Tooltip.Provider, { delay: 0, children: /* @__PURE__ */ jsx(Menu.Group, { children: items.map((item, index) => /* @__PURE__ */ jsx(ActionsMenuEntry, { item }, index)) }) }) })
|
|
62
|
+
] });
|
|
63
|
+
}
|
|
64
|
+
export {
|
|
65
|
+
ActionsMenu
|
|
66
|
+
};
|
|
67
|
+
//# sourceMappingURL=actions-menu.mjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/components/actions-menu/actions-menu.tsx"],
|
|
4
|
+
"sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { privateApis as componentsPrivateApis } from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport { moreVertical } from '@wordpress/icons';\n// eslint-disable-next-line @wordpress/use-recommended-components\nimport { Button, IconButton, Tooltip } from '@wordpress/ui';\n\n/**\n * Internal dependencies\n */\nimport { unlock } from '../../lock-unlock';\n\nconst { Menu } = unlock( componentsPrivateApis );\n\nexport interface ActionsMenuItem {\n\tlabel: string;\n\tonClick: () => void;\n\tdisabled?: boolean;\n\t/**\n\t * Shown on hover when the item is disabled (for example, to explain\n\t * why the action is unavailable).\n\t */\n\tdisabledTooltip?: string;\n}\n\ninterface ActionsMenuProps {\n\titems: ActionsMenuItem[];\n}\n\nfunction ActionsMenuEntry( { item }: { item: ActionsMenuItem } ) {\n\tconst showDisabledTooltip = item.disabled && item.disabledTooltip;\n\n\tconst menuItem = (\n\t\t<Menu.Item\n\t\t\tdisabled={ item.disabled }\n\t\t\tonClick={ item.onClick }\n\t\t\trender={ <Button variant=\"minimal\" tone=\"neutral\" /> }\n\t\t>\n\t\t\t{ item.label }\n\t\t</Menu.Item>\n\t);\n\n\tif ( ! showDisabledTooltip ) {\n\t\treturn menuItem;\n\t}\n\n\treturn (\n\t\t<Tooltip.Root>\n\t\t\t<Tooltip.Trigger\n\t\t\t\trender={\n\t\t\t\t\t<Menu.Item\n\t\t\t\t\t\tdisabled={ item.disabled }\n\t\t\t\t\t\tonClick={ item.onClick }\n\t\t\t\t\t\trender={ <Button variant=\"minimal\" tone=\"neutral\" /> }\n\t\t\t\t\t/>\n\t\t\t\t}\n\t\t\t>\n\t\t\t\t{ item.label }\n\t\t\t</Tooltip.Trigger>\n\t\t\t<Tooltip.Popup positioner={ <Tooltip.Positioner side=\"bottom\" /> }>\n\t\t\t\t{ item.disabledTooltip }\n\t\t\t</Tooltip.Popup>\n\t\t</Tooltip.Root>\n\t);\n}\n\n/**\n * Renders the dashboard's overflow menu: a three-dots trigger surfacing\n * secondary actions. Returns `null` when there are no items.\n *\n * @param {ActionsMenuProps} props Component props.\n */\nexport function ActionsMenu( { items }: ActionsMenuProps ): React.ReactNode {\n\tif ( items.length === 0 ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<Menu>\n\t\t\t<Menu.TriggerButton\n\t\t\t\trender={\n\t\t\t\t\t<IconButton\n\t\t\t\t\t\ticon={ moreVertical }\n\t\t\t\t\t\tlabel={ __( 'More options' ) }\n\t\t\t\t\t\tvariant=\"minimal\"\n\t\t\t\t\t\ttone=\"brand\"\n\t\t\t\t\t\tsize=\"compact\"\n\t\t\t\t\t/>\n\t\t\t\t}\n\t\t\t/>\n\t\t\t<Menu.Popover>\n\t\t\t\t<Tooltip.Provider delay={ 0 }>\n\t\t\t\t\t<Menu.Group>\n\t\t\t\t\t\t{ items.map( ( item, index ) => (\n\t\t\t\t\t\t\t<ActionsMenuEntry key={ index } item={ item } />\n\t\t\t\t\t\t) ) }\n\t\t\t\t\t</Menu.Group>\n\t\t\t\t</Tooltip.Provider>\n\t\t\t</Menu.Popover>\n\t\t</Menu>\n\t);\n}\n"],
|
|
5
|
+
"mappings": ";AAGA,SAAS,eAAe,6BAA6B;AACrD,SAAS,UAAU;AACnB,SAAS,oBAAoB;AAE7B,SAAS,QAAQ,YAAY,eAAe;AAK5C,SAAS,cAAc;AA0BX,cAWV,YAXU;AAxBZ,IAAM,EAAE,KAAK,IAAI,OAAQ,qBAAsB;AAiB/C,SAAS,iBAAkB,EAAE,KAAK,GAA+B;AAChE,QAAM,sBAAsB,KAAK,YAAY,KAAK;AAElD,QAAM,WACL;AAAA,IAAC,KAAK;AAAA,IAAL;AAAA,MACA,UAAW,KAAK;AAAA,MAChB,SAAU,KAAK;AAAA,MACf,QAAS,oBAAC,UAAO,SAAQ,WAAU,MAAK,WAAU;AAAA,MAEhD,eAAK;AAAA;AAAA,EACR;AAGD,MAAK,CAAE,qBAAsB;AAC5B,WAAO;AAAA,EACR;AAEA,SACC,qBAAC,QAAQ,MAAR,EACA;AAAA;AAAA,MAAC,QAAQ;AAAA,MAAR;AAAA,QACA,QACC;AAAA,UAAC,KAAK;AAAA,UAAL;AAAA,YACA,UAAW,KAAK;AAAA,YAChB,SAAU,KAAK;AAAA,YACf,QAAS,oBAAC,UAAO,SAAQ,WAAU,MAAK,WAAU;AAAA;AAAA,QACnD;AAAA,QAGC,eAAK;AAAA;AAAA,IACR;AAAA,IACA,oBAAC,QAAQ,OAAR,EAAc,YAAa,oBAAC,QAAQ,YAAR,EAAmB,MAAK,UAAS,GAC3D,eAAK,iBACR;AAAA,KACD;AAEF;AAQO,SAAS,YAAa,EAAE,MAAM,GAAuC;AAC3E,MAAK,MAAM,WAAW,GAAI;AACzB,WAAO;AAAA,EACR;AAEA,SACC,qBAAC,QACA;AAAA;AAAA,MAAC,KAAK;AAAA,MAAL;AAAA,QACA,QACC;AAAA,UAAC;AAAA;AAAA,YACA,MAAO;AAAA,YACP,OAAQ,GAAI,cAAe;AAAA,YAC3B,SAAQ;AAAA,YACR,MAAK;AAAA,YACL,MAAK;AAAA;AAAA,QACN;AAAA;AAAA,IAEF;AAAA,IACA,oBAAC,KAAK,SAAL,EACA,8BAAC,QAAQ,UAAR,EAAiB,OAAQ,GACzB,8BAAC,KAAK,OAAL,EACE,gBAAM,IAAK,CAAE,MAAM,UACpB,oBAAC,oBAA+B,QAAR,KAAsB,CAC7C,GACH,GACD,GACD;AAAA,KACD;AAEF;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
// packages/widget-dashboard/src/components/commands/commands.tsx
|
|
2
|
+
import { useCallback, useMemo } from "@wordpress/element";
|
|
3
|
+
import { __ } from "@wordpress/i18n";
|
|
4
|
+
import {
|
|
5
|
+
useCommands,
|
|
6
|
+
privateApis as commandsPrivateApis
|
|
7
|
+
} from "@wordpress/commands";
|
|
8
|
+
import {
|
|
9
|
+
columns,
|
|
10
|
+
grid,
|
|
11
|
+
layout as layoutIcon,
|
|
12
|
+
plus,
|
|
13
|
+
trash
|
|
14
|
+
} from "@wordpress/icons";
|
|
15
|
+
import { unlock } from "../../lock-unlock.mjs";
|
|
16
|
+
import { useDashboardInternalContext } from "../../context/dashboard-context.mjs";
|
|
17
|
+
import { useDashboardUIContext } from "../../context/ui-context.mjs";
|
|
18
|
+
import { getGridModel } from "../../utils/grid-model-change/index.mjs";
|
|
19
|
+
import { usePendingWhenEditMode } from "./use-pending-when-edit-mode.mjs";
|
|
20
|
+
var { useCommandContext } = unlock(commandsPrivateApis);
|
|
21
|
+
var DASHBOARD_COMMAND_CONTEXT = "dashboard";
|
|
22
|
+
function Commands() {
|
|
23
|
+
const {
|
|
24
|
+
editMode,
|
|
25
|
+
onEditChange,
|
|
26
|
+
onLayoutReset,
|
|
27
|
+
gridSettings,
|
|
28
|
+
canEditGridSettings,
|
|
29
|
+
commitGridModelChange
|
|
30
|
+
} = useDashboardInternalContext();
|
|
31
|
+
const { setInserterOpen, setResetDialogOpen } = useDashboardUIContext();
|
|
32
|
+
useCommandContext(DASHBOARD_COMMAND_CONTEXT);
|
|
33
|
+
const runWhenInEditMode = usePendingWhenEditMode({
|
|
34
|
+
editMode,
|
|
35
|
+
onEditChange
|
|
36
|
+
});
|
|
37
|
+
const gridModel = getGridModel(gridSettings);
|
|
38
|
+
const isGridLayout = gridModel === "grid";
|
|
39
|
+
const isMasonryLayout = gridModel === "masonry";
|
|
40
|
+
const switchToMasonry = useCallback(
|
|
41
|
+
({ close }) => {
|
|
42
|
+
close();
|
|
43
|
+
commitGridModelChange("masonry");
|
|
44
|
+
},
|
|
45
|
+
[commitGridModelChange]
|
|
46
|
+
);
|
|
47
|
+
const switchToGrid = useCallback(
|
|
48
|
+
({ close }) => {
|
|
49
|
+
close();
|
|
50
|
+
commitGridModelChange("grid");
|
|
51
|
+
},
|
|
52
|
+
[commitGridModelChange]
|
|
53
|
+
);
|
|
54
|
+
const resetToDefault = useCallback(
|
|
55
|
+
({ close }) => {
|
|
56
|
+
close();
|
|
57
|
+
setResetDialogOpen(true);
|
|
58
|
+
},
|
|
59
|
+
[setResetDialogOpen]
|
|
60
|
+
);
|
|
61
|
+
const addWidgets = useCallback(
|
|
62
|
+
({ close }) => {
|
|
63
|
+
close();
|
|
64
|
+
runWhenInEditMode(() => {
|
|
65
|
+
setInserterOpen(true);
|
|
66
|
+
});
|
|
67
|
+
},
|
|
68
|
+
[runWhenInEditMode, setInserterOpen]
|
|
69
|
+
);
|
|
70
|
+
const customize = useCallback(
|
|
71
|
+
({ close }) => {
|
|
72
|
+
close();
|
|
73
|
+
onEditChange?.(true);
|
|
74
|
+
},
|
|
75
|
+
[onEditChange]
|
|
76
|
+
);
|
|
77
|
+
const commands = useMemo(
|
|
78
|
+
() => [
|
|
79
|
+
{
|
|
80
|
+
name: "core/dashboard/customize",
|
|
81
|
+
label: __("Customize dashboard"),
|
|
82
|
+
icon: layoutIcon,
|
|
83
|
+
category: "command",
|
|
84
|
+
context: DASHBOARD_COMMAND_CONTEXT,
|
|
85
|
+
keywords: [__("edit"), __("widgets"), __("layout")],
|
|
86
|
+
disabled: !onEditChange || editMode,
|
|
87
|
+
callback: customize
|
|
88
|
+
},
|
|
89
|
+
{
|
|
90
|
+
name: "core/dashboard/add-widgets",
|
|
91
|
+
label: __("Add dashboard widgets"),
|
|
92
|
+
icon: plus,
|
|
93
|
+
category: "command",
|
|
94
|
+
context: DASHBOARD_COMMAND_CONTEXT,
|
|
95
|
+
keywords: [__("widgets"), __("inserter")],
|
|
96
|
+
disabled: !onEditChange,
|
|
97
|
+
callback: addWidgets
|
|
98
|
+
},
|
|
99
|
+
{
|
|
100
|
+
name: "core/dashboard/switch-to-masonry-layout",
|
|
101
|
+
label: __("Switch dashboard to masonry layout"),
|
|
102
|
+
icon: columns,
|
|
103
|
+
category: "command",
|
|
104
|
+
context: DASHBOARD_COMMAND_CONTEXT,
|
|
105
|
+
keywords: [
|
|
106
|
+
__("layout"),
|
|
107
|
+
__("layout model"),
|
|
108
|
+
__("masonry")
|
|
109
|
+
],
|
|
110
|
+
disabled: !canEditGridSettings || isMasonryLayout || editMode,
|
|
111
|
+
callback: switchToMasonry
|
|
112
|
+
},
|
|
113
|
+
{
|
|
114
|
+
name: "core/dashboard/switch-to-grid-layout",
|
|
115
|
+
label: __("Switch dashboard to grid layout"),
|
|
116
|
+
icon: grid,
|
|
117
|
+
category: "command",
|
|
118
|
+
context: DASHBOARD_COMMAND_CONTEXT,
|
|
119
|
+
keywords: [
|
|
120
|
+
__("layout"),
|
|
121
|
+
__("layout model"),
|
|
122
|
+
__("grid"),
|
|
123
|
+
__("standard grid")
|
|
124
|
+
],
|
|
125
|
+
disabled: !canEditGridSettings || isGridLayout || editMode,
|
|
126
|
+
callback: switchToGrid
|
|
127
|
+
},
|
|
128
|
+
{
|
|
129
|
+
name: "core/dashboard/reset-to-default",
|
|
130
|
+
label: __("Reset dashboard widgets to default"),
|
|
131
|
+
icon: trash,
|
|
132
|
+
category: "command",
|
|
133
|
+
context: DASHBOARD_COMMAND_CONTEXT,
|
|
134
|
+
keywords: [__("reset"), __("default")],
|
|
135
|
+
disabled: !onLayoutReset,
|
|
136
|
+
callback: resetToDefault
|
|
137
|
+
}
|
|
138
|
+
],
|
|
139
|
+
[
|
|
140
|
+
onEditChange,
|
|
141
|
+
editMode,
|
|
142
|
+
customize,
|
|
143
|
+
addWidgets,
|
|
144
|
+
canEditGridSettings,
|
|
145
|
+
isMasonryLayout,
|
|
146
|
+
isGridLayout,
|
|
147
|
+
switchToMasonry,
|
|
148
|
+
switchToGrid,
|
|
149
|
+
onLayoutReset,
|
|
150
|
+
resetToDefault
|
|
151
|
+
]
|
|
152
|
+
);
|
|
153
|
+
useCommands(commands);
|
|
154
|
+
return null;
|
|
155
|
+
}
|
|
156
|
+
export {
|
|
157
|
+
Commands,
|
|
158
|
+
DASHBOARD_COMMAND_CONTEXT
|
|
159
|
+
};
|
|
160
|
+
//# sourceMappingURL=commands.mjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/components/commands/commands.tsx"],
|
|
4
|
+
"sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { useCallback, useMemo } from '@wordpress/element';\nimport { __ } from '@wordpress/i18n';\nimport {\n\tuseCommands,\n\tprivateApis as commandsPrivateApis,\n} from '@wordpress/commands';\nimport {\n\tcolumns,\n\tgrid,\n\tlayout as layoutIcon,\n\tplus,\n\ttrash,\n} from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport { unlock } from '../../lock-unlock';\nimport { useDashboardInternalContext } from '../../context/dashboard-context';\nimport { useDashboardUIContext } from '../../context/ui-context';\nimport { getGridModel } from '../../utils/grid-model-change';\nimport { usePendingWhenEditMode } from './use-pending-when-edit-mode';\n\nconst { useCommandContext } = unlock( commandsPrivateApis );\n\nexport const DASHBOARD_COMMAND_CONTEXT = 'dashboard';\n\ntype CommandCallback = ( options: { close: () => void } ) => void;\n\n/**\n * Registers dashboard-specific command palette commands and sets the\n * active command context so they surface under Suggestions by default.\n */\nexport function Commands() {\n\tconst {\n\t\teditMode,\n\t\tonEditChange,\n\t\tonLayoutReset,\n\t\tgridSettings,\n\t\tcanEditGridSettings,\n\t\tcommitGridModelChange,\n\t} = useDashboardInternalContext();\n\n\tconst { setInserterOpen, setResetDialogOpen } = useDashboardUIContext();\n\n\tuseCommandContext( DASHBOARD_COMMAND_CONTEXT );\n\n\tconst runWhenInEditMode = usePendingWhenEditMode( {\n\t\teditMode,\n\t\tonEditChange,\n\t} );\n\n\tconst gridModel = getGridModel( gridSettings );\n\tconst isGridLayout = gridModel === 'grid';\n\tconst isMasonryLayout = gridModel === 'masonry';\n\n\tconst switchToMasonry = useCallback< CommandCallback >(\n\t\t( { close } ) => {\n\t\t\tclose();\n\t\t\tcommitGridModelChange( 'masonry' );\n\t\t},\n\t\t[ commitGridModelChange ]\n\t);\n\n\tconst switchToGrid = useCallback< CommandCallback >(\n\t\t( { close } ) => {\n\t\t\tclose();\n\t\t\tcommitGridModelChange( 'grid' );\n\t\t},\n\t\t[ commitGridModelChange ]\n\t);\n\n\tconst resetToDefault = useCallback< CommandCallback >(\n\t\t( { close } ) => {\n\t\t\tclose();\n\t\t\tsetResetDialogOpen( true );\n\t\t},\n\t\t[ setResetDialogOpen ]\n\t);\n\n\tconst addWidgets = useCallback< CommandCallback >(\n\t\t( { close } ) => {\n\t\t\tclose();\n\t\t\trunWhenInEditMode( () => {\n\t\t\t\tsetInserterOpen( true );\n\t\t\t} );\n\t\t},\n\t\t[ runWhenInEditMode, setInserterOpen ]\n\t);\n\n\tconst customize = useCallback< CommandCallback >(\n\t\t( { close } ) => {\n\t\t\tclose();\n\t\t\tonEditChange?.( true );\n\t\t},\n\t\t[ onEditChange ]\n\t);\n\n\tconst commands = useMemo(\n\t\t() => [\n\t\t\t{\n\t\t\t\tname: 'core/dashboard/customize',\n\t\t\t\tlabel: __( 'Customize dashboard' ),\n\t\t\t\ticon: layoutIcon,\n\t\t\t\tcategory: 'command',\n\t\t\t\tcontext: DASHBOARD_COMMAND_CONTEXT,\n\t\t\t\tkeywords: [ __( 'edit' ), __( 'widgets' ), __( 'layout' ) ],\n\t\t\t\tdisabled: ! onEditChange || editMode,\n\t\t\t\tcallback: customize,\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: 'core/dashboard/add-widgets',\n\t\t\t\tlabel: __( 'Add dashboard widgets' ),\n\t\t\t\ticon: plus,\n\t\t\t\tcategory: 'command',\n\t\t\t\tcontext: DASHBOARD_COMMAND_CONTEXT,\n\t\t\t\tkeywords: [ __( 'widgets' ), __( 'inserter' ) ],\n\t\t\t\tdisabled: ! onEditChange,\n\t\t\t\tcallback: addWidgets,\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: 'core/dashboard/switch-to-masonry-layout',\n\t\t\t\tlabel: __( 'Switch dashboard to masonry layout' ),\n\t\t\t\ticon: columns,\n\t\t\t\tcategory: 'command',\n\t\t\t\tcontext: DASHBOARD_COMMAND_CONTEXT,\n\t\t\t\tkeywords: [\n\t\t\t\t\t__( 'layout' ),\n\t\t\t\t\t__( 'layout model' ),\n\t\t\t\t\t__( 'masonry' ),\n\t\t\t\t],\n\t\t\t\tdisabled: ! canEditGridSettings || isMasonryLayout || editMode,\n\t\t\t\tcallback: switchToMasonry,\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: 'core/dashboard/switch-to-grid-layout',\n\t\t\t\tlabel: __( 'Switch dashboard to grid layout' ),\n\t\t\t\ticon: grid,\n\t\t\t\tcategory: 'command',\n\t\t\t\tcontext: DASHBOARD_COMMAND_CONTEXT,\n\t\t\t\tkeywords: [\n\t\t\t\t\t__( 'layout' ),\n\t\t\t\t\t__( 'layout model' ),\n\t\t\t\t\t__( 'grid' ),\n\t\t\t\t\t__( 'standard grid' ),\n\t\t\t\t],\n\t\t\t\tdisabled: ! canEditGridSettings || isGridLayout || editMode,\n\t\t\t\tcallback: switchToGrid,\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: 'core/dashboard/reset-to-default',\n\t\t\t\tlabel: __( 'Reset dashboard widgets to default' ),\n\t\t\t\ticon: trash,\n\t\t\t\tcategory: 'command',\n\t\t\t\tcontext: DASHBOARD_COMMAND_CONTEXT,\n\t\t\t\tkeywords: [ __( 'reset' ), __( 'default' ) ],\n\t\t\t\tdisabled: ! onLayoutReset,\n\t\t\t\tcallback: resetToDefault,\n\t\t\t},\n\t\t],\n\t\t[\n\t\t\tonEditChange,\n\t\t\teditMode,\n\t\t\tcustomize,\n\t\t\taddWidgets,\n\t\t\tcanEditGridSettings,\n\t\t\tisMasonryLayout,\n\t\t\tisGridLayout,\n\t\t\tswitchToMasonry,\n\t\t\tswitchToGrid,\n\t\t\tonLayoutReset,\n\t\t\tresetToDefault,\n\t\t]\n\t);\n\n\tuseCommands( commands );\n\n\treturn null;\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
// packages/widget-dashboard/src/components/commands/use-pending-when-edit-mode.ts
|
|
2
|
+
import { useCallback, useEffect, useRef } from "@wordpress/element";
|
|
3
|
+
function usePendingWhenEditMode({
|
|
4
|
+
editMode,
|
|
5
|
+
onEditChange
|
|
6
|
+
}) {
|
|
7
|
+
const pendingRef = useRef(null);
|
|
8
|
+
const wasEditingRef = useRef(editMode);
|
|
9
|
+
useEffect(() => {
|
|
10
|
+
if (!wasEditingRef.current && editMode && pendingRef.current) {
|
|
11
|
+
const action = pendingRef.current;
|
|
12
|
+
pendingRef.current = null;
|
|
13
|
+
action();
|
|
14
|
+
}
|
|
15
|
+
wasEditingRef.current = editMode;
|
|
16
|
+
}, [editMode]);
|
|
17
|
+
return useCallback(
|
|
18
|
+
(action) => {
|
|
19
|
+
if (editMode) {
|
|
20
|
+
action();
|
|
21
|
+
return;
|
|
22
|
+
}
|
|
23
|
+
pendingRef.current = action;
|
|
24
|
+
onEditChange?.(true);
|
|
25
|
+
},
|
|
26
|
+
[editMode, onEditChange]
|
|
27
|
+
);
|
|
28
|
+
}
|
|
29
|
+
export {
|
|
30
|
+
usePendingWhenEditMode
|
|
31
|
+
};
|
|
32
|
+
//# sourceMappingURL=use-pending-when-edit-mode.mjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/components/commands/use-pending-when-edit-mode.ts"],
|
|
4
|
+
"sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { useCallback, useEffect, useRef } from '@wordpress/element';\n\ntype UsePendingWhenEditModeProps = {\n\teditMode: boolean;\n\tonEditChange?: ( next: boolean ) => void;\n};\n\ntype UsePendingWhenEditModeResult = ( action: () => void ) => void;\n\n/**\n * Runs an action immediately when already in edit mode. Otherwise enables\n * edit mode and runs the action after edit mode becomes active.\n *\n * @param {UsePendingWhenEditModeProps} params Current edit mode and the change handler.\n * @return {UsePendingWhenEditModeResult} Runs an action, deferring it until edit mode is active.\n */\nexport function usePendingWhenEditMode( {\n\teditMode,\n\tonEditChange,\n}: UsePendingWhenEditModeProps ): UsePendingWhenEditModeResult {\n\tconst pendingRef = useRef< ( () => void ) | null >( null );\n\tconst wasEditingRef = useRef( editMode );\n\n\tuseEffect( () => {\n\t\tif ( ! wasEditingRef.current && editMode && pendingRef.current ) {\n\t\t\tconst action = pendingRef.current;\n\t\t\tpendingRef.current = null;\n\t\t\taction();\n\t\t}\n\t\twasEditingRef.current = editMode;\n\t}, [ editMode ] );\n\n\treturn useCallback(\n\t\t( action: () => void ) => {\n\t\t\tif ( editMode ) {\n\t\t\t\taction();\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tpendingRef.current = action;\n\t\t\tonEditChange?.( true );\n\t\t},\n\t\t[ editMode, onEditChange ]\n\t);\n}\n"],
|
|
5
|
+
"mappings": ";AAGA,SAAS,aAAa,WAAW,cAAc;AAgBxC,SAAS,uBAAwB;AAAA,EACvC;AAAA,EACA;AACD,GAA+D;AAC9D,QAAM,aAAa,OAAiC,IAAK;AACzD,QAAM,gBAAgB,OAAQ,QAAS;AAEvC,YAAW,MAAM;AAChB,QAAK,CAAE,cAAc,WAAW,YAAY,WAAW,SAAU;AAChE,YAAM,SAAS,WAAW;AAC1B,iBAAW,UAAU;AACrB,aAAO;AAAA,IACR;AACA,kBAAc,UAAU;AAAA,EACzB,GAAG,CAAE,QAAS,CAAE;AAEhB,SAAO;AAAA,IACN,CAAE,WAAwB;AACzB,UAAK,UAAW;AACf,eAAO;AACP;AAAA,MACD;AAEA,iBAAW,UAAU;AACrB,qBAAgB,IAAK;AAAA,IACtB;AAAA,IACA,CAAE,UAAU,YAAa;AAAA,EAC1B;AACD;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|