@wordpress/widget-dashboard 0.2.0 → 0.3.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 +30 -0
- package/README.md +29 -16
- package/build/components/actions/actions.cjs +6 -23
- package/build/components/actions/actions.cjs.map +3 -3
- package/build/components/commands/commands.cjs +1 -60
- package/build/components/commands/commands.cjs.map +2 -2
- package/build/{utils/grid-model-change → components/widget-attribute-controls}/index.cjs +7 -9
- package/build/components/widget-attribute-controls/index.cjs.map +7 -0
- package/build/components/widget-attribute-controls/widget-attribute-controls.cjs +93 -0
- package/build/components/widget-attribute-controls/widget-attribute-controls.cjs.map +7 -0
- package/build/components/widget-chrome/widget-chrome.cjs +28 -69
- package/build/components/widget-chrome/widget-chrome.cjs.map +2 -2
- package/build/components/{layout-settings → widget-frame}/index.cjs +9 -7
- package/build/components/widget-frame/index.cjs.map +7 -0
- package/build/components/widget-frame/widget-frame.cjs +193 -0
- package/build/components/widget-frame/widget-frame.cjs.map +7 -0
- package/build/{utils/migrate-layout → components/widget-header}/index.cjs +7 -7
- package/build/components/widget-header/index.cjs.map +7 -0
- package/build/components/widget-header/widget-header-infotip.cjs +166 -0
- package/build/components/widget-header/widget-header-infotip.cjs.map +7 -0
- package/build/components/widget-header/widget-header.cjs +176 -0
- package/build/components/widget-header/widget-header.cjs.map +7 -0
- package/build/components/{widget-settings/utils/get-admin-menu-inset.cjs → widget-layout-controls/index.cjs} +8 -18
- package/build/components/widget-layout-controls/index.cjs.map +7 -0
- package/build/components/{widgets/widget-layout-toolbar.cjs → widget-layout-controls/widget-layout-controls.cjs} +9 -100
- package/build/components/widget-layout-controls/widget-layout-controls.cjs.map +7 -0
- package/build/components/widget-picker/widget-picker.cjs +5 -93
- package/build/components/widget-picker/widget-picker.cjs.map +3 -3
- package/build/components/widget-preview-chrome/index.cjs +31 -0
- package/build/components/widget-preview-chrome/index.cjs.map +7 -0
- package/build/components/{widget-settings/widget-settings-toolbar.cjs → widget-preview-chrome/widget-preview-chrome.cjs} +41 -23
- package/build/components/widget-preview-chrome/widget-preview-chrome.cjs.map +7 -0
- package/build/components/widget-settings/index.cjs +3 -3
- package/build/components/widget-settings/index.cjs.map +1 -1
- package/build/components/widget-settings/utils/index.cjs +0 -3
- package/build/components/widget-settings/utils/index.cjs.map +2 -2
- package/build/components/widget-settings/widget-settings-trigger.cjs +22 -28
- package/build/components/widget-settings/widget-settings-trigger.cjs.map +2 -2
- package/build/components/widget-settings/widget-settings.cjs +40 -57
- package/build/components/widget-settings/widget-settings.cjs.map +2 -2
- package/build/components/widget-toolbar/widget-toolbar.cjs +7 -4
- package/build/components/widget-toolbar/widget-toolbar.cjs.map +2 -2
- package/build/components/widgets/widget-resize-handle.cjs +4 -4
- package/build/components/widgets/widget-resize-handle.cjs.map +2 -2
- package/build/components/widgets/widgets.cjs +18 -11
- package/build/components/widgets/widgets.cjs.map +2 -2
- package/build/context/dashboard-context.cjs +31 -80
- package/build/context/dashboard-context.cjs.map +2 -2
- package/build/context/ui-context.cjs +2 -18
- package/build/context/ui-context.cjs.map +2 -2
- package/build/types.cjs.map +1 -1
- package/build/utils/index.cjs +2 -5
- package/build/utils/index.cjs.map +2 -2
- package/build/widget-dashboard.cjs +0 -4
- package/build/widget-dashboard.cjs.map +2 -2
- package/build-module/components/actions/actions.mjs +7 -24
- package/build-module/components/actions/actions.mjs.map +2 -2
- package/build-module/components/commands/commands.mjs +2 -67
- package/build-module/components/commands/commands.mjs.map +2 -2
- package/build-module/components/widget-attribute-controls/index.mjs +6 -0
- package/build-module/components/widget-attribute-controls/index.mjs.map +7 -0
- package/build-module/components/widget-attribute-controls/widget-attribute-controls.mjs +68 -0
- package/build-module/components/widget-attribute-controls/widget-attribute-controls.mjs.map +7 -0
- package/build-module/components/widget-chrome/widget-chrome.mjs +29 -76
- package/build-module/components/widget-chrome/widget-chrome.mjs.map +2 -2
- package/build-module/components/widget-frame/index.mjs +7 -0
- package/build-module/components/widget-frame/index.mjs.map +7 -0
- package/build-module/components/widget-frame/widget-frame.mjs +157 -0
- package/build-module/components/widget-frame/widget-frame.mjs.map +7 -0
- package/build-module/components/widget-header/index.mjs +6 -0
- package/build-module/components/widget-header/index.mjs.map +7 -0
- package/build-module/components/widget-header/widget-header-infotip.mjs +141 -0
- package/build-module/components/widget-header/widget-header-infotip.mjs.map +7 -0
- package/build-module/components/widget-header/widget-header.mjs +141 -0
- package/build-module/components/widget-header/widget-header.mjs.map +7 -0
- package/build-module/components/widget-layout-controls/index.mjs +6 -0
- package/build-module/components/widget-layout-controls/index.mjs.map +7 -0
- package/build-module/components/widget-layout-controls/widget-layout-controls.mjs +90 -0
- package/build-module/components/widget-layout-controls/widget-layout-controls.mjs.map +7 -0
- package/build-module/components/widget-picker/widget-picker.mjs +6 -94
- package/build-module/components/widget-picker/widget-picker.mjs.map +3 -3
- package/build-module/components/widget-preview-chrome/index.mjs +6 -0
- package/build-module/components/widget-preview-chrome/index.mjs.map +7 -0
- package/build-module/components/{widget-settings/widget-settings-toolbar.mjs → widget-preview-chrome/widget-preview-chrome.mjs} +37 -19
- package/build-module/components/widget-preview-chrome/widget-preview-chrome.mjs.map +7 -0
- package/build-module/components/widget-settings/index.mjs +2 -2
- package/build-module/components/widget-settings/index.mjs.map +1 -1
- package/build-module/components/widget-settings/utils/index.mjs +0 -2
- package/build-module/components/widget-settings/utils/index.mjs.map +2 -2
- package/build-module/components/widget-settings/widget-settings-trigger.mjs +23 -29
- package/build-module/components/widget-settings/widget-settings-trigger.mjs.map +2 -2
- package/build-module/components/widget-settings/widget-settings.mjs +40 -57
- package/build-module/components/widget-settings/widget-settings.mjs.map +2 -2
- package/build-module/components/widget-toolbar/widget-toolbar.mjs +7 -4
- package/build-module/components/widget-toolbar/widget-toolbar.mjs.map +2 -2
- package/build-module/components/widgets/widget-resize-handle.mjs +4 -4
- package/build-module/components/widgets/widget-resize-handle.mjs.map +2 -2
- package/build-module/components/widgets/widgets.mjs +18 -11
- package/build-module/components/widgets/widgets.mjs.map +2 -2
- package/build-module/context/dashboard-context.mjs +31 -80
- package/build-module/context/dashboard-context.mjs.map +2 -2
- package/build-module/context/ui-context.mjs +2 -18
- package/build-module/context/ui-context.mjs.map +2 -2
- package/build-module/types.mjs.map +1 -1
- package/build-module/utils/index.mjs +1 -3
- package/build-module/utils/index.mjs.map +2 -2
- package/build-module/widget-dashboard.mjs +0 -4
- package/build-module/widget-dashboard.mjs.map +2 -2
- package/build-types/components/actions/actions.d.ts.map +1 -1
- package/build-types/components/commands/commands.d.ts.map +1 -1
- package/build-types/components/commands/use-pending-when-edit-mode.d.ts +1 -1
- package/build-types/components/commands/use-pending-when-edit-mode.d.ts.map +1 -1
- package/build-types/components/no-widgets-state/no-widgets-state.d.ts +1 -1
- package/build-types/components/no-widgets-state/no-widgets-state.d.ts.map +1 -1
- package/build-types/components/widget-attribute-controls/index.d.ts +2 -0
- package/build-types/components/widget-attribute-controls/index.d.ts.map +1 -0
- package/build-types/components/widget-attribute-controls/widget-attribute-controls.d.ts +23 -0
- package/build-types/components/widget-attribute-controls/widget-attribute-controls.d.ts.map +1 -0
- package/build-types/components/widget-chrome/widget-chrome.d.ts +8 -8
- package/build-types/components/widget-chrome/widget-chrome.d.ts.map +1 -1
- package/build-types/components/widget-frame/index.d.ts +3 -0
- package/build-types/components/widget-frame/index.d.ts.map +1 -0
- package/build-types/components/widget-frame/widget-frame.d.ts +25 -0
- package/build-types/components/widget-frame/widget-frame.d.ts.map +1 -0
- package/build-types/components/widget-header/index.d.ts +3 -0
- package/build-types/components/widget-header/index.d.ts.map +1 -0
- package/build-types/components/widget-header/widget-header-infotip.d.ts +20 -0
- package/build-types/components/widget-header/widget-header-infotip.d.ts.map +1 -0
- package/build-types/components/widget-header/widget-header.d.ts +38 -0
- package/build-types/components/widget-header/widget-header.d.ts.map +1 -0
- package/build-types/components/widget-layout-controls/index.d.ts +3 -0
- package/build-types/components/widget-layout-controls/index.d.ts.map +1 -0
- package/build-types/components/widget-layout-controls/widget-layout-controls.d.ts +14 -0
- package/build-types/components/widget-layout-controls/widget-layout-controls.d.ts.map +1 -0
- package/build-types/components/widget-picker/widget-picker.d.ts +1 -1
- package/build-types/components/widget-picker/widget-picker.d.ts.map +1 -1
- package/build-types/components/widget-preview-chrome/index.d.ts +3 -0
- package/build-types/components/widget-preview-chrome/index.d.ts.map +1 -0
- package/build-types/components/widget-preview-chrome/widget-preview-chrome.d.ts +15 -0
- package/build-types/components/widget-preview-chrome/widget-preview-chrome.d.ts.map +1 -0
- package/build-types/components/widget-settings/index.d.ts +2 -2
- package/build-types/components/widget-settings/utils/index.d.ts +0 -1
- package/build-types/components/widget-settings/utils/index.d.ts.map +1 -1
- package/build-types/components/widget-settings/widget-settings-trigger.d.ts +7 -5
- package/build-types/components/widget-settings/widget-settings-trigger.d.ts.map +1 -1
- package/build-types/components/widget-settings/widget-settings.d.ts +5 -4
- package/build-types/components/widget-settings/widget-settings.d.ts.map +1 -1
- package/build-types/components/widget-toolbar/widget-toolbar.d.ts +10 -7
- package/build-types/components/widget-toolbar/widget-toolbar.d.ts.map +1 -1
- package/build-types/components/widgets/widgets.d.ts.map +1 -1
- package/build-types/context/dashboard-context.d.ts +23 -40
- package/build-types/context/dashboard-context.d.ts.map +1 -1
- package/build-types/context/ui-context.d.ts +0 -18
- package/build-types/context/ui-context.d.ts.map +1 -1
- package/build-types/context/widget-context.d.ts +1 -1
- package/build-types/context/widget-context.d.ts.map +1 -1
- package/build-types/types.d.ts +9 -15
- package/build-types/types.d.ts.map +1 -1
- package/build-types/utils/index.d.ts +0 -1
- package/build-types/utils/index.d.ts.map +1 -1
- package/build-types/widget-dashboard.d.ts +5 -5
- package/build-types/widget-dashboard.d.ts.map +1 -1
- package/package.json +20 -20
- package/src/components/actions/actions.module.css +7 -7
- package/src/components/actions/actions.tsx +5 -25
- package/src/components/commands/commands.tsx +3 -70
- package/src/components/widget-attribute-controls/index.ts +1 -0
- package/src/components/widget-attribute-controls/widget-attribute-controls.tsx +108 -0
- package/src/components/widget-chrome/widget-chrome.module.css +6 -71
- package/src/components/widget-chrome/widget-chrome.tsx +31 -136
- package/src/components/widget-frame/index.ts +2 -0
- package/src/components/widget-frame/widget-frame.module.css +17 -0
- package/src/components/widget-frame/widget-frame.tsx +138 -0
- package/src/components/widget-header/index.ts +2 -0
- package/src/components/widget-header/widget-header-infotip.tsx +82 -0
- package/src/components/widget-header/widget-header.module.css +59 -0
- package/src/components/widget-header/widget-header.tsx +104 -0
- package/src/components/widget-layout-controls/index.ts +2 -0
- package/src/components/{widgets/widget-layout-toolbar.tsx → widget-layout-controls/widget-layout-controls.tsx} +12 -13
- package/src/components/widget-picker/widget-picker.tsx +5 -10
- package/src/components/widget-preview-chrome/index.ts +2 -0
- package/src/components/widget-preview-chrome/widget-preview-chrome.module.css +22 -0
- package/src/components/widget-preview-chrome/widget-preview-chrome.tsx +65 -0
- package/src/components/widget-settings/index.ts +2 -2
- package/src/components/widget-settings/utils/index.ts +0 -1
- package/src/components/widget-settings/widget-settings-trigger.tsx +39 -44
- package/src/components/widget-settings/widget-settings.tsx +10 -28
- package/src/components/widget-toolbar/widget-toolbar.module.css +13 -10
- package/src/components/widget-toolbar/widget-toolbar.tsx +14 -8
- package/src/components/widgets/widget-resize-handle.module.css +21 -21
- package/src/components/widgets/widget-resize-handle.tsx +2 -2
- package/src/components/widgets/widgets.module.css +20 -11
- package/src/components/widgets/widgets.tsx +33 -10
- package/src/context/dashboard-context.tsx +70 -133
- package/src/context/ui-context.tsx +1 -39
- package/src/test/actions.test.tsx +7 -77
- package/src/test/commands.test.tsx +6 -45
- package/src/test/staging.test.tsx +82 -144
- package/src/test/widget-dashboard.test.tsx +24 -0
- package/src/types.ts +9 -16
- package/src/utils/index.ts +0 -1
- package/src/widget-dashboard.tsx +4 -8
- package/build/components/layout-settings/index.cjs.map +0 -7
- package/build/components/layout-settings/layout-model-edit-field/index.cjs +0 -186
- package/build/components/layout-settings/layout-model-edit-field/index.cjs.map +0 -7
- package/build/components/layout-settings/layout-model-edit-field/thumbnail-grid.cjs +0 -53
- package/build/components/layout-settings/layout-model-edit-field/thumbnail-grid.cjs.map +0 -7
- package/build/components/layout-settings/layout-model-edit-field/thumbnail-masonry.cjs +0 -53
- package/build/components/layout-settings/layout-model-edit-field/thumbnail-masonry.cjs.map +0 -7
- package/build/components/layout-settings/layout-settings.cjs +0 -207
- package/build/components/layout-settings/layout-settings.cjs.map +0 -7
- package/build/components/widget-settings/utils/get-admin-menu-inset.cjs.map +0 -7
- package/build/components/widget-settings/widget-settings-toolbar.cjs.map +0 -7
- package/build/components/widgets/widget-layout-toolbar.cjs.map +0 -7
- package/build/utils/grid-model-change/grid-model-change.cjs +0 -56
- package/build/utils/grid-model-change/grid-model-change.cjs.map +0 -7
- package/build/utils/grid-model-change/index.cjs.map +0 -7
- package/build/utils/migrate-layout/index.cjs.map +0 -7
- package/build/utils/migrate-layout/migrate-layout.cjs +0 -94
- package/build/utils/migrate-layout/migrate-layout.cjs.map +0 -7
- package/build-module/components/layout-settings/index.mjs +0 -6
- package/build-module/components/layout-settings/index.mjs.map +0 -7
- package/build-module/components/layout-settings/layout-model-edit-field/index.mjs +0 -151
- package/build-module/components/layout-settings/layout-model-edit-field/index.mjs.map +0 -7
- package/build-module/components/layout-settings/layout-model-edit-field/thumbnail-grid.mjs +0 -28
- package/build-module/components/layout-settings/layout-model-edit-field/thumbnail-grid.mjs.map +0 -7
- package/build-module/components/layout-settings/layout-model-edit-field/thumbnail-masonry.mjs +0 -28
- package/build-module/components/layout-settings/layout-model-edit-field/thumbnail-masonry.mjs.map +0 -7
- package/build-module/components/layout-settings/layout-settings.mjs +0 -187
- package/build-module/components/layout-settings/layout-settings.mjs.map +0 -7
- package/build-module/components/widget-settings/utils/get-admin-menu-inset.mjs +0 -16
- package/build-module/components/widget-settings/utils/get-admin-menu-inset.mjs.map +0 -7
- package/build-module/components/widget-settings/widget-settings-toolbar.mjs.map +0 -7
- package/build-module/components/widgets/widget-layout-toolbar.mjs +0 -181
- package/build-module/components/widgets/widget-layout-toolbar.mjs.map +0 -7
- package/build-module/utils/grid-model-change/grid-model-change.mjs +0 -30
- package/build-module/utils/grid-model-change/grid-model-change.mjs.map +0 -7
- package/build-module/utils/grid-model-change/index.mjs +0 -7
- package/build-module/utils/grid-model-change/index.mjs.map +0 -7
- package/build-module/utils/migrate-layout/index.mjs +0 -6
- package/build-module/utils/migrate-layout/index.mjs.map +0 -7
- package/build-module/utils/migrate-layout/migrate-layout.mjs +0 -69
- package/build-module/utils/migrate-layout/migrate-layout.mjs.map +0 -7
- package/build-types/components/layout-settings/index.d.ts +0 -2
- package/build-types/components/layout-settings/index.d.ts.map +0 -1
- package/build-types/components/layout-settings/layout-model-edit-field/index.d.ts +0 -17
- package/build-types/components/layout-settings/layout-model-edit-field/index.d.ts.map +0 -1
- package/build-types/components/layout-settings/layout-model-edit-field/thumbnail-grid.d.ts +0 -6
- package/build-types/components/layout-settings/layout-model-edit-field/thumbnail-grid.d.ts.map +0 -1
- package/build-types/components/layout-settings/layout-model-edit-field/thumbnail-masonry.d.ts +0 -6
- package/build-types/components/layout-settings/layout-model-edit-field/thumbnail-masonry.d.ts.map +0 -1
- package/build-types/components/layout-settings/layout-settings.d.ts +0 -14
- package/build-types/components/layout-settings/layout-settings.d.ts.map +0 -1
- package/build-types/components/widget-settings/utils/get-admin-menu-inset.d.ts +0 -17
- package/build-types/components/widget-settings/utils/get-admin-menu-inset.d.ts.map +0 -1
- package/build-types/components/widget-settings/widget-settings-toolbar.d.ts +0 -20
- package/build-types/components/widget-settings/widget-settings-toolbar.d.ts.map +0 -1
- package/build-types/components/widgets/widget-layout-toolbar.d.ts +0 -14
- package/build-types/components/widgets/widget-layout-toolbar.d.ts.map +0 -1
- package/build-types/utils/grid-model-change/grid-model-change.d.ts +0 -20
- package/build-types/utils/grid-model-change/grid-model-change.d.ts.map +0 -1
- package/build-types/utils/grid-model-change/index.d.ts +0 -2
- package/build-types/utils/grid-model-change/index.d.ts.map +0 -1
- package/build-types/utils/migrate-layout/index.d.ts +0 -2
- package/build-types/utils/migrate-layout/index.d.ts.map +0 -1
- package/build-types/utils/migrate-layout/migrate-layout.d.ts +0 -36
- package/build-types/utils/migrate-layout/migrate-layout.d.ts.map +0 -1
- package/src/components/layout-settings/index.ts +0 -1
- package/src/components/layout-settings/layout-model-edit-field/index.tsx +0 -98
- package/src/components/layout-settings/layout-model-edit-field/style.module.css +0 -34
- package/src/components/layout-settings/layout-model-edit-field/thumbnail-grid.tsx +0 -28
- package/src/components/layout-settings/layout-model-edit-field/thumbnail-masonry.tsx +0 -28
- package/src/components/layout-settings/layout-settings.tsx +0 -217
- package/src/components/widget-picker/widget-picker.module.css +0 -11
- package/src/components/widget-settings/utils/get-admin-menu-inset.ts +0 -30
- package/src/components/widget-settings/widget-settings-toolbar.module.css +0 -25
- package/src/components/widget-settings/widget-settings-toolbar.tsx +0 -45
- package/src/components/widgets/widget-layout-toolbar.module.css +0 -6
- package/src/utils/grid-model-change/grid-model-change.ts +0 -53
- package/src/utils/grid-model-change/index.ts +0 -1
- package/src/utils/migrate-layout/index.ts +0 -1
- package/src/utils/migrate-layout/migrate-layout.ts +0 -156
- package/src/utils/migrate-layout/test/migrate-layout.test.ts +0 -114
|
@@ -1,156 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Internal dependencies
|
|
3
|
-
*/
|
|
4
|
-
import type {
|
|
5
|
-
DashboardWidget,
|
|
6
|
-
GridTilePlacement,
|
|
7
|
-
MasonryTilePlacement,
|
|
8
|
-
WidgetGridModel,
|
|
9
|
-
} from '../../types';
|
|
10
|
-
|
|
11
|
-
interface MigrationContext {
|
|
12
|
-
/**
|
|
13
|
-
* Column count of the currently-mounted grid surface. Used to
|
|
14
|
-
* resolve `'full'` widths to a concrete numeric span when going
|
|
15
|
-
* from the 2D grid model to masonry. When the surface is in
|
|
16
|
-
* responsive mode and the runtime column count is unknown,
|
|
17
|
-
* callers should pass a sensible fallback (e.g., the default of
|
|
18
|
-
* 6 used by `@wordpress/grid`).
|
|
19
|
-
*/
|
|
20
|
-
columns: number;
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
const FALLBACK_COLUMNS = 6;
|
|
24
|
-
|
|
25
|
-
/**
|
|
26
|
-
* Coerces a `'fill'`/`'full'`/numeric width into a concrete numeric
|
|
27
|
-
* span when migrating from `'grid'` to `'masonry'`. `'fill'` collapses
|
|
28
|
-
* to a single column; resolving it against per-row remainder would
|
|
29
|
-
* require either DOM measurement or replicating CSS-Grid's auto-flow
|
|
30
|
-
* placement, both of which were judged not worth the complexity for
|
|
31
|
-
* a one-shot migration the user can correct visually in staging.
|
|
32
|
-
*
|
|
33
|
-
* @param width Source width from a grid placement.
|
|
34
|
-
* @param targetColumns Column count to use for `'full'` widths.
|
|
35
|
-
*/
|
|
36
|
-
function gridWidthToMasonryWidth(
|
|
37
|
-
width: GridTilePlacement[ 'width' ],
|
|
38
|
-
targetColumns: number
|
|
39
|
-
): number {
|
|
40
|
-
if ( width === 'full' ) {
|
|
41
|
-
return targetColumns;
|
|
42
|
-
}
|
|
43
|
-
if ( width === 'fill' || width === undefined ) {
|
|
44
|
-
return 1;
|
|
45
|
-
}
|
|
46
|
-
return width;
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
/**
|
|
50
|
-
* Transforms a single placement from the 2D grid shape to the masonry
|
|
51
|
-
* shape. Drops `height` (masonry derives heights from content),
|
|
52
|
-
* preserves `order`, leaves `lane` unset so the auto-flow placer
|
|
53
|
-
* arranges items by source order.
|
|
54
|
-
*
|
|
55
|
-
* @param placement Source grid placement.
|
|
56
|
-
* @param context Migration context (column count).
|
|
57
|
-
*/
|
|
58
|
-
function migratePlacementGridToMasonry(
|
|
59
|
-
placement: GridTilePlacement | undefined,
|
|
60
|
-
context: MigrationContext
|
|
61
|
-
): MasonryTilePlacement {
|
|
62
|
-
if ( ! placement ) {
|
|
63
|
-
return {};
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
const next: MasonryTilePlacement = {};
|
|
67
|
-
const width = gridWidthToMasonryWidth( placement.width, context.columns );
|
|
68
|
-
if ( width !== 1 ) {
|
|
69
|
-
next.width = width;
|
|
70
|
-
}
|
|
71
|
-
if ( placement.order !== undefined ) {
|
|
72
|
-
next.order = placement.order;
|
|
73
|
-
}
|
|
74
|
-
return next;
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
/**
|
|
78
|
-
* Transforms a single placement from the masonry shape to the 2D grid
|
|
79
|
-
* shape. Preserves the numeric width, drops `lane` (the 2D grid
|
|
80
|
-
* auto-packs and has no pin-to-column concept), and seeds `height: 1`
|
|
81
|
-
* since masonry never persisted a height. The user is expected to
|
|
82
|
-
* resize tiles vertically after the migration.
|
|
83
|
-
*
|
|
84
|
-
* @param placement Source masonry placement.
|
|
85
|
-
*/
|
|
86
|
-
function migratePlacementMasonryToGrid(
|
|
87
|
-
placement: MasonryTilePlacement | undefined
|
|
88
|
-
): GridTilePlacement {
|
|
89
|
-
if ( ! placement ) {
|
|
90
|
-
return { height: 1 };
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
const next: GridTilePlacement = { height: 1 };
|
|
94
|
-
if ( placement.width !== undefined ) {
|
|
95
|
-
next.width = placement.width;
|
|
96
|
-
}
|
|
97
|
-
if ( placement.order !== undefined ) {
|
|
98
|
-
next.order = placement.order;
|
|
99
|
-
}
|
|
100
|
-
return next;
|
|
101
|
-
}
|
|
102
|
-
|
|
103
|
-
/**
|
|
104
|
-
* Migrates every widget's `placement` between grid models.
|
|
105
|
-
*
|
|
106
|
-
* The two storage shapes overlap on `width` and `order` but diverge
|
|
107
|
-
* on the rest: 2D grid carries `height` and discriminated string
|
|
108
|
-
* widths (`'fill'`/`'full'`), lanes carries `lane` and only numeric
|
|
109
|
-
* widths. Each conversion loses information that the target model
|
|
110
|
-
* cannot represent. The caller is responsible for surfacing the
|
|
111
|
-
* result to the user in a way that lets them correct visually.
|
|
112
|
-
*
|
|
113
|
-
* When `from === to`, the input is returned unchanged.
|
|
114
|
-
*
|
|
115
|
-
* @param widgets Widgets to migrate.
|
|
116
|
-
* @param from Source model. `undefined` is treated as `'grid'`.
|
|
117
|
-
* @param to Target model.
|
|
118
|
-
* @param context Information that depends on the live render (today
|
|
119
|
-
* only `columns`).
|
|
120
|
-
*/
|
|
121
|
-
export function migrateLayout(
|
|
122
|
-
widgets: DashboardWidget[],
|
|
123
|
-
from: WidgetGridModel | undefined,
|
|
124
|
-
to: WidgetGridModel,
|
|
125
|
-
context: Partial< MigrationContext > = {}
|
|
126
|
-
): DashboardWidget[] {
|
|
127
|
-
const resolvedFrom: WidgetGridModel = from ?? 'grid';
|
|
128
|
-
if ( resolvedFrom === to ) {
|
|
129
|
-
return widgets;
|
|
130
|
-
}
|
|
131
|
-
|
|
132
|
-
const resolvedContext: MigrationContext = {
|
|
133
|
-
columns: context.columns ?? FALLBACK_COLUMNS,
|
|
134
|
-
};
|
|
135
|
-
|
|
136
|
-
if ( resolvedFrom === 'grid' && to === 'masonry' ) {
|
|
137
|
-
return widgets.map( ( widget ) => ( {
|
|
138
|
-
...widget,
|
|
139
|
-
placement: migratePlacementGridToMasonry(
|
|
140
|
-
widget.placement as GridTilePlacement | undefined,
|
|
141
|
-
resolvedContext
|
|
142
|
-
),
|
|
143
|
-
} ) );
|
|
144
|
-
}
|
|
145
|
-
|
|
146
|
-
if ( resolvedFrom === 'masonry' && to === 'grid' ) {
|
|
147
|
-
return widgets.map( ( widget ) => ( {
|
|
148
|
-
...widget,
|
|
149
|
-
placement: migratePlacementMasonryToGrid(
|
|
150
|
-
widget.placement as MasonryTilePlacement | undefined
|
|
151
|
-
),
|
|
152
|
-
} ) );
|
|
153
|
-
}
|
|
154
|
-
|
|
155
|
-
return widgets;
|
|
156
|
-
}
|
|
@@ -1,114 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Internal dependencies
|
|
3
|
-
*/
|
|
4
|
-
import { migrateLayout } from '../migrate-layout';
|
|
5
|
-
import type { DashboardWidget } from '../../../types';
|
|
6
|
-
|
|
7
|
-
function widget( uuid: string, placement: object | undefined = undefined ) {
|
|
8
|
-
return {
|
|
9
|
-
uuid,
|
|
10
|
-
type: 'core/test' as const,
|
|
11
|
-
placement,
|
|
12
|
-
} as DashboardWidget;
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
describe( 'migrateLayout', () => {
|
|
16
|
-
it( 'returns input unchanged when source and target match', () => {
|
|
17
|
-
const layout: DashboardWidget[] = [
|
|
18
|
-
widget( 'a', { width: 2, height: 1 } ),
|
|
19
|
-
];
|
|
20
|
-
expect( migrateLayout( layout, 'grid', 'grid' ) ).toBe( layout );
|
|
21
|
-
} );
|
|
22
|
-
|
|
23
|
-
it( 'treats undefined source as grid', () => {
|
|
24
|
-
const layout: DashboardWidget[] = [
|
|
25
|
-
widget( 'a', { width: 'full', height: 1 } ),
|
|
26
|
-
];
|
|
27
|
-
const migrated = migrateLayout( layout, undefined, 'masonry', {
|
|
28
|
-
columns: 4,
|
|
29
|
-
} );
|
|
30
|
-
expect( migrated[ 0 ].placement ).toEqual( { width: 4 } );
|
|
31
|
-
} );
|
|
32
|
-
|
|
33
|
-
describe( 'grid to masonry', () => {
|
|
34
|
-
it( "expands 'full' to the target column count", () => {
|
|
35
|
-
const layout: DashboardWidget[] = [
|
|
36
|
-
widget( 'a', { width: 'full', height: 1 } ),
|
|
37
|
-
];
|
|
38
|
-
const migrated = migrateLayout( layout, 'grid', 'masonry', {
|
|
39
|
-
columns: 6,
|
|
40
|
-
} );
|
|
41
|
-
expect( migrated[ 0 ].placement ).toEqual( { width: 6 } );
|
|
42
|
-
} );
|
|
43
|
-
|
|
44
|
-
it( "collapses 'fill' to a single column", () => {
|
|
45
|
-
const layout: DashboardWidget[] = [
|
|
46
|
-
widget( 'a', { width: 'fill', height: 2 } ),
|
|
47
|
-
];
|
|
48
|
-
const migrated = migrateLayout( layout, 'grid', 'masonry', {
|
|
49
|
-
columns: 6,
|
|
50
|
-
} );
|
|
51
|
-
expect( migrated[ 0 ].placement ).toEqual( {} );
|
|
52
|
-
} );
|
|
53
|
-
|
|
54
|
-
it( 'preserves numeric width and drops height and explicit width=1', () => {
|
|
55
|
-
const layout: DashboardWidget[] = [
|
|
56
|
-
widget( 'a', { width: 3, height: 2, order: 5 } ),
|
|
57
|
-
widget( 'b', { width: 1, height: 1 } ),
|
|
58
|
-
];
|
|
59
|
-
const migrated = migrateLayout( layout, 'grid', 'masonry', {
|
|
60
|
-
columns: 6,
|
|
61
|
-
} );
|
|
62
|
-
expect( migrated[ 0 ].placement ).toEqual( {
|
|
63
|
-
width: 3,
|
|
64
|
-
order: 5,
|
|
65
|
-
} );
|
|
66
|
-
expect( migrated[ 1 ].placement ).toEqual( {} );
|
|
67
|
-
} );
|
|
68
|
-
|
|
69
|
-
it( 'falls back to a default column count when not provided', () => {
|
|
70
|
-
const layout: DashboardWidget[] = [
|
|
71
|
-
widget( 'a', { width: 'full', height: 1 } ),
|
|
72
|
-
];
|
|
73
|
-
const migrated = migrateLayout( layout, 'grid', 'masonry' );
|
|
74
|
-
expect( migrated[ 0 ].placement ).toEqual( { width: 6 } );
|
|
75
|
-
} );
|
|
76
|
-
|
|
77
|
-
it( 'handles widgets without a placement', () => {
|
|
78
|
-
const layout: DashboardWidget[] = [ widget( 'a' ) ];
|
|
79
|
-
const migrated = migrateLayout( layout, 'grid', 'masonry' );
|
|
80
|
-
expect( migrated[ 0 ].placement ).toEqual( {} );
|
|
81
|
-
} );
|
|
82
|
-
} );
|
|
83
|
-
|
|
84
|
-
describe( 'masonry to grid', () => {
|
|
85
|
-
it( 'seeds height=1 and preserves width and order', () => {
|
|
86
|
-
const layout: DashboardWidget[] = [
|
|
87
|
-
widget( 'a', { width: 2, order: 1 } ),
|
|
88
|
-
];
|
|
89
|
-
const migrated = migrateLayout( layout, 'masonry', 'grid' );
|
|
90
|
-
expect( migrated[ 0 ].placement ).toEqual( {
|
|
91
|
-
width: 2,
|
|
92
|
-
height: 1,
|
|
93
|
-
order: 1,
|
|
94
|
-
} );
|
|
95
|
-
} );
|
|
96
|
-
|
|
97
|
-
it( 'drops the lane field', () => {
|
|
98
|
-
const layout: DashboardWidget[] = [
|
|
99
|
-
widget( 'a', { width: 1, lane: 2 } ),
|
|
100
|
-
];
|
|
101
|
-
const migrated = migrateLayout( layout, 'masonry', 'grid' );
|
|
102
|
-
expect( migrated[ 0 ].placement ).toEqual( {
|
|
103
|
-
width: 1,
|
|
104
|
-
height: 1,
|
|
105
|
-
} );
|
|
106
|
-
} );
|
|
107
|
-
|
|
108
|
-
it( 'handles widgets without a placement', () => {
|
|
109
|
-
const layout: DashboardWidget[] = [ widget( 'a' ) ];
|
|
110
|
-
const migrated = migrateLayout( layout, 'masonry', 'grid' );
|
|
111
|
-
expect( migrated[ 0 ].placement ).toEqual( { height: 1 } );
|
|
112
|
-
} );
|
|
113
|
-
} );
|
|
114
|
-
} );
|