@wordpress/dataviews 4.1.0 → 4.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 +19 -0
- package/README.md +77 -29
- package/build/components/dataviews/index.js +10 -14
- package/build/components/dataviews/index.js.map +1 -1
- package/build/components/dataviews-bulk-actions/index.js +145 -141
- package/build/components/dataviews-bulk-actions/index.js.map +1 -1
- package/build/components/dataviews-filters/add-filter.js +4 -6
- package/build/components/dataviews-filters/add-filter.js.map +1 -1
- package/build/components/dataviews-filters/index.js +3 -0
- package/build/components/dataviews-filters/index.js.map +1 -1
- package/build/components/dataviews-filters/search-widget.js +30 -23
- package/build/components/dataviews-filters/search-widget.js.map +1 -1
- package/build/components/dataviews-footer/index.js +45 -0
- package/build/components/dataviews-footer/index.js.map +1 -0
- package/build/components/dataviews-item-actions/index.js +5 -8
- package/build/components/dataviews-item-actions/index.js.map +1 -1
- package/build/components/dataviews-pagination/index.js +27 -19
- package/build/components/dataviews-pagination/index.js.map +1 -1
- package/build/components/dataviews-view-config/index.js +197 -41
- package/build/components/dataviews-view-config/index.js.map +1 -1
- package/build/dataform-controls/datetime.js +49 -0
- package/build/dataform-controls/datetime.js.map +1 -0
- package/build/dataform-controls/index.js +50 -0
- package/build/dataform-controls/index.js.map +1 -0
- package/build/dataform-controls/integer.js +45 -0
- package/build/dataform-controls/integer.js.map +1 -0
- package/build/dataform-controls/radio.js +45 -0
- package/build/dataform-controls/radio.js.map +1 -0
- package/build/dataform-controls/select.js +58 -0
- package/build/dataform-controls/select.js.map +1 -0
- package/build/dataform-controls/text.js +45 -0
- package/build/dataform-controls/text.js.map +1 -0
- package/build/dataforms-layouts/panel/index.js +10 -4
- package/build/dataforms-layouts/panel/index.js.map +1 -1
- package/build/dataforms-layouts/regular/index.js +6 -3
- package/build/dataforms-layouts/regular/index.js.map +1 -1
- package/build/dataviews-layouts/grid/density-picker.js +23 -52
- package/build/dataviews-layouts/grid/density-picker.js.map +1 -1
- package/build/dataviews-layouts/grid/index.js +1 -1
- package/build/dataviews-layouts/grid/index.js.map +1 -1
- package/build/dataviews-layouts/index.js +48 -2
- package/build/dataviews-layouts/index.js.map +1 -1
- package/build/dataviews-layouts/list/index.js +124 -80
- package/build/dataviews-layouts/list/index.js.map +1 -1
- package/build/dataviews-layouts/table/column-header-menu.js +52 -57
- package/build/dataviews-layouts/table/column-header-menu.js.map +1 -1
- package/build/dataviews-layouts/table/index.js +7 -35
- package/build/dataviews-layouts/table/index.js.map +1 -1
- package/build/field-types/datetime.js +30 -0
- package/build/field-types/datetime.js.map +1 -0
- package/build/field-types/index.js +4 -0
- package/build/field-types/index.js.map +1 -1
- package/build/field-types/integer.js +1 -60
- package/build/field-types/integer.js.map +1 -1
- package/build/field-types/text.js +1 -60
- package/build/field-types/text.js.map +1 -1
- package/build/normalize-fields.js +10 -9
- package/build/normalize-fields.js.map +1 -1
- package/build/types.js.map +1 -1
- package/build-module/components/dataviews/index.js +10 -14
- package/build-module/components/dataviews/index.js.map +1 -1
- package/build-module/components/dataviews-bulk-actions/index.js +145 -143
- package/build-module/components/dataviews-bulk-actions/index.js.map +1 -1
- package/build-module/components/dataviews-filters/add-filter.js +4 -6
- package/build-module/components/dataviews-filters/add-filter.js.map +1 -1
- package/build-module/components/dataviews-filters/index.js +3 -0
- package/build-module/components/dataviews-filters/index.js.map +1 -1
- package/build-module/components/dataviews-filters/search-widget.js +30 -23
- package/build-module/components/dataviews-filters/search-widget.js.map +1 -1
- package/build-module/components/dataviews-footer/index.js +38 -0
- package/build-module/components/dataviews-footer/index.js.map +1 -0
- package/build-module/components/dataviews-item-actions/index.js +5 -8
- package/build-module/components/dataviews-item-actions/index.js.map +1 -1
- package/build-module/components/dataviews-pagination/index.js +28 -20
- package/build-module/components/dataviews-pagination/index.js.map +1 -1
- package/build-module/components/dataviews-view-config/index.js +203 -47
- package/build-module/components/dataviews-view-config/index.js.map +1 -1
- package/build-module/dataform-controls/datetime.js +43 -0
- package/build-module/dataform-controls/datetime.js.map +1 -0
- package/build-module/dataform-controls/index.js +42 -0
- package/build-module/dataform-controls/index.js.map +1 -0
- package/build-module/dataform-controls/integer.js +38 -0
- package/build-module/dataform-controls/integer.js.map +1 -0
- package/build-module/dataform-controls/radio.js +38 -0
- package/build-module/dataform-controls/radio.js.map +1 -0
- package/build-module/dataform-controls/select.js +51 -0
- package/build-module/dataform-controls/select.js.map +1 -0
- package/build-module/dataform-controls/text.js +38 -0
- package/build-module/dataform-controls/text.js.map +1 -0
- package/build-module/dataforms-layouts/panel/index.js +10 -4
- package/build-module/dataforms-layouts/panel/index.js.map +1 -1
- package/build-module/dataforms-layouts/regular/index.js +6 -3
- package/build-module/dataforms-layouts/regular/index.js.map +1 -1
- package/build-module/dataviews-layouts/grid/density-picker.js +25 -56
- package/build-module/dataviews-layouts/grid/density-picker.js.map +1 -1
- package/build-module/dataviews-layouts/grid/index.js +1 -1
- package/build-module/dataviews-layouts/grid/index.js.map +1 -1
- package/build-module/dataviews-layouts/index.js +45 -1
- package/build-module/dataviews-layouts/index.js.map +1 -1
- package/build-module/dataviews-layouts/list/index.js +125 -80
- package/build-module/dataviews-layouts/list/index.js.map +1 -1
- package/build-module/dataviews-layouts/table/column-header-menu.js +52 -57
- package/build-module/dataviews-layouts/table/column-header-menu.js.map +1 -1
- package/build-module/dataviews-layouts/table/index.js +9 -37
- package/build-module/dataviews-layouts/table/index.js.map +1 -1
- package/build-module/field-types/datetime.js +24 -0
- package/build-module/field-types/datetime.js.map +1 -0
- package/build-module/field-types/index.js +4 -0
- package/build-module/field-types/index.js.map +1 -1
- package/build-module/field-types/integer.js +2 -60
- package/build-module/field-types/integer.js.map +1 -1
- package/build-module/field-types/text.js +2 -60
- package/build-module/field-types/text.js.map +1 -1
- package/build-module/normalize-fields.js +11 -9
- package/build-module/normalize-fields.js.map +1 -1
- package/build-module/types.js.map +1 -1
- package/build-style/style-rtl.css +93 -80
- package/build-style/style.css +93 -80
- package/build-types/components/dataform/stories/index.story.d.ts.map +1 -1
- package/build-types/components/dataviews/index.d.ts.map +1 -1
- package/build-types/components/dataviews/stories/fixtures.d.ts +28 -113
- package/build-types/components/dataviews/stories/fixtures.d.ts.map +1 -1
- package/build-types/components/dataviews/stories/index.story.d.ts +12 -44
- package/build-types/components/dataviews/stories/index.story.d.ts.map +1 -1
- package/build-types/components/dataviews-bulk-actions/index.d.ts +11 -1
- package/build-types/components/dataviews-bulk-actions/index.d.ts.map +1 -1
- package/build-types/components/dataviews-filters/add-filter.d.ts.map +1 -1
- package/build-types/components/dataviews-filters/index.d.ts +1 -1
- package/build-types/components/dataviews-filters/index.d.ts.map +1 -1
- package/build-types/components/dataviews-filters/search-widget.d.ts.map +1 -1
- package/build-types/components/dataviews-footer/index.d.ts +2 -0
- package/build-types/components/dataviews-footer/index.d.ts.map +1 -0
- package/build-types/components/dataviews-item-actions/index.d.ts.map +1 -1
- package/build-types/components/dataviews-pagination/index.d.ts.map +1 -1
- package/build-types/components/dataviews-view-config/index.d.ts +4 -3
- package/build-types/components/dataviews-view-config/index.d.ts.map +1 -1
- package/build-types/dataform-controls/datetime.d.ts +6 -0
- package/build-types/dataform-controls/datetime.d.ts.map +1 -0
- package/build-types/dataform-controls/index.d.ts +11 -0
- package/build-types/dataform-controls/index.d.ts.map +1 -0
- package/build-types/dataform-controls/integer.d.ts +6 -0
- package/build-types/dataform-controls/integer.d.ts.map +1 -0
- package/build-types/dataform-controls/radio.d.ts +6 -0
- package/build-types/dataform-controls/radio.d.ts.map +1 -0
- package/build-types/dataform-controls/select.d.ts +6 -0
- package/build-types/dataform-controls/select.d.ts.map +1 -0
- package/build-types/dataform-controls/text.d.ts +6 -0
- package/build-types/dataform-controls/text.d.ts.map +1 -0
- package/build-types/dataforms-layouts/panel/index.d.ts.map +1 -1
- package/build-types/dataforms-layouts/regular/index.d.ts.map +1 -1
- package/build-types/dataviews-layouts/grid/density-picker.d.ts.map +1 -1
- package/build-types/dataviews-layouts/index.d.ts +4 -2
- package/build-types/dataviews-layouts/index.d.ts.map +1 -1
- package/build-types/dataviews-layouts/list/index.d.ts.map +1 -1
- package/build-types/dataviews-layouts/table/column-header-menu.d.ts.map +1 -1
- package/build-types/dataviews-layouts/table/index.d.ts.map +1 -1
- package/build-types/field-types/datetime.d.ts +13 -0
- package/build-types/field-types/datetime.d.ts.map +1 -0
- package/build-types/field-types/index.d.ts +1 -1
- package/build-types/field-types/index.d.ts.map +1 -1
- package/build-types/field-types/integer.d.ts +2 -3
- package/build-types/field-types/integer.d.ts.map +1 -1
- package/build-types/field-types/text.d.ts +2 -3
- package/build-types/field-types/text.d.ts.map +1 -1
- package/build-types/normalize-fields.d.ts.map +1 -1
- package/build-types/types.d.ts +43 -21
- package/build-types/types.d.ts.map +1 -1
- package/package.json +12 -12
- package/src/components/dataform/stories/index.story.tsx +43 -2
- package/src/components/dataviews/index.tsx +14 -18
- package/src/components/dataviews/stories/fixtures.tsx +690 -0
- package/src/components/dataviews/stories/index.story.tsx +164 -0
- package/src/components/dataviews/style.scss +2 -12
- package/src/components/dataviews-bulk-actions/index.tsx +264 -213
- package/src/components/dataviews-bulk-actions/style.scss +9 -4
- package/src/components/dataviews-filters/add-filter.tsx +7 -11
- package/src/components/dataviews-filters/index.tsx +3 -0
- package/src/components/dataviews-filters/search-widget.tsx +46 -25
- package/src/components/dataviews-filters/style.scss +13 -3
- package/src/components/dataviews-footer/index.tsx +50 -0
- package/src/components/dataviews-footer/style.scss +40 -0
- package/src/components/dataviews-item-actions/index.tsx +8 -14
- package/src/components/dataviews-pagination/index.tsx +40 -21
- package/src/components/dataviews-pagination/style.scss +7 -21
- package/src/components/dataviews-view-config/index.tsx +297 -69
- package/src/components/dataviews-view-config/style.scss +25 -0
- package/src/dataform-controls/datetime.tsx +43 -0
- package/src/dataform-controls/index.tsx +61 -0
- package/src/dataform-controls/integer.tsx +38 -0
- package/src/dataform-controls/radio.tsx +42 -0
- package/src/dataform-controls/select.tsx +52 -0
- package/src/dataform-controls/style.scss +4 -0
- package/src/dataform-controls/text.tsx +40 -0
- package/src/dataforms-layouts/panel/index.tsx +8 -2
- package/src/dataforms-layouts/regular/index.tsx +6 -2
- package/src/dataviews-layouts/grid/density-picker.tsx +33 -67
- package/src/dataviews-layouts/grid/index.tsx +1 -1
- package/src/dataviews-layouts/grid/style.scss +1 -5
- package/src/dataviews-layouts/index.ts +63 -2
- package/src/dataviews-layouts/list/index.tsx +199 -123
- package/src/dataviews-layouts/list/style.scss +10 -4
- package/src/dataviews-layouts/table/column-header-menu.tsx +86 -90
- package/src/dataviews-layouts/table/index.tsx +8 -65
- package/src/dataviews-layouts/table/style.scss +0 -5
- package/src/field-types/datetime.tsx +28 -0
- package/src/field-types/index.tsx +5 -0
- package/src/field-types/integer.tsx +2 -71
- package/src/field-types/text.tsx +2 -70
- package/src/normalize-fields.ts +10 -10
- package/src/style.scss +2 -1
- package/src/test/filter-and-sort-data-view.js +28 -0
- package/src/types.ts +56 -32
- package/tsconfig.tsbuildinfo +1 -1
- package/build/components/dataviews-bulk-actions-toolbar/index.js +0 -207
- package/build/components/dataviews-bulk-actions-toolbar/index.js.map +0 -1
- package/build-module/components/dataviews-bulk-actions-toolbar/index.js +0 -201
- package/build-module/components/dataviews-bulk-actions-toolbar/index.js.map +0 -1
- package/build-types/components/dataviews-bulk-actions-toolbar/index.d.ts +0 -2
- package/build-types/components/dataviews-bulk-actions-toolbar/index.d.ts.map +0 -1
- package/src/components/dataviews/stories/fixtures.js +0 -222
- package/src/components/dataviews/stories/index.story.js +0 -65
- package/src/components/dataviews-bulk-actions-toolbar/index.tsx +0 -288
- package/src/components/dataviews-bulk-actions-toolbar/style.scss +0 -45
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* WordPress dependencies
|
|
3
|
+
*/
|
|
4
|
+
import { SelectControl } from '@wordpress/components';
|
|
5
|
+
import { useCallback } from '@wordpress/element';
|
|
6
|
+
import { __ } from '@wordpress/i18n';
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Internal dependencies
|
|
10
|
+
*/
|
|
11
|
+
import type { DataFormControlProps } from '../types';
|
|
12
|
+
|
|
13
|
+
export default function Select< Item >( {
|
|
14
|
+
data,
|
|
15
|
+
field,
|
|
16
|
+
onChange,
|
|
17
|
+
hideLabelFromVision,
|
|
18
|
+
}: DataFormControlProps< Item > ) {
|
|
19
|
+
const { id, label } = field;
|
|
20
|
+
const value = field.getValue( { item: data } ) ?? '';
|
|
21
|
+
const onChangeControl = useCallback(
|
|
22
|
+
( newValue: any ) =>
|
|
23
|
+
onChange( {
|
|
24
|
+
[ id ]: newValue,
|
|
25
|
+
} ),
|
|
26
|
+
[ id, onChange ]
|
|
27
|
+
);
|
|
28
|
+
|
|
29
|
+
const elements = [
|
|
30
|
+
/*
|
|
31
|
+
* Value can be undefined when:
|
|
32
|
+
*
|
|
33
|
+
* - the field is not required
|
|
34
|
+
* - in bulk editing
|
|
35
|
+
*
|
|
36
|
+
*/
|
|
37
|
+
{ label: __( 'Select item' ), value: '' },
|
|
38
|
+
...( field?.elements ?? [] ),
|
|
39
|
+
];
|
|
40
|
+
|
|
41
|
+
return (
|
|
42
|
+
<SelectControl
|
|
43
|
+
label={ label }
|
|
44
|
+
value={ value }
|
|
45
|
+
options={ elements }
|
|
46
|
+
onChange={ onChangeControl }
|
|
47
|
+
__next40pxDefaultSize
|
|
48
|
+
__nextHasNoMarginBottom
|
|
49
|
+
hideLabelFromVision={ hideLabelFromVision }
|
|
50
|
+
/>
|
|
51
|
+
);
|
|
52
|
+
}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* WordPress dependencies
|
|
3
|
+
*/
|
|
4
|
+
import { TextControl } from '@wordpress/components';
|
|
5
|
+
import { useCallback } from '@wordpress/element';
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Internal dependencies
|
|
9
|
+
*/
|
|
10
|
+
import type { DataFormControlProps } from '../types';
|
|
11
|
+
|
|
12
|
+
export default function Text< Item >( {
|
|
13
|
+
data,
|
|
14
|
+
field,
|
|
15
|
+
onChange,
|
|
16
|
+
hideLabelFromVision,
|
|
17
|
+
}: DataFormControlProps< Item > ) {
|
|
18
|
+
const { id, label, placeholder } = field;
|
|
19
|
+
const value = field.getValue( { item: data } );
|
|
20
|
+
|
|
21
|
+
const onChangeControl = useCallback(
|
|
22
|
+
( newValue: string ) =>
|
|
23
|
+
onChange( {
|
|
24
|
+
[ id ]: newValue,
|
|
25
|
+
} ),
|
|
26
|
+
[ id, onChange ]
|
|
27
|
+
);
|
|
28
|
+
|
|
29
|
+
return (
|
|
30
|
+
<TextControl
|
|
31
|
+
label={ label }
|
|
32
|
+
placeholder={ placeholder }
|
|
33
|
+
value={ value ?? '' }
|
|
34
|
+
onChange={ onChangeControl }
|
|
35
|
+
__next40pxDefaultSize
|
|
36
|
+
__nextHasNoMarginBottom
|
|
37
|
+
hideLabelFromVision={ hideLabelFromVision }
|
|
38
|
+
/>
|
|
39
|
+
);
|
|
40
|
+
}
|
|
@@ -17,7 +17,7 @@ import { closeSmall } from '@wordpress/icons';
|
|
|
17
17
|
* Internal dependencies
|
|
18
18
|
*/
|
|
19
19
|
import { normalizeFields } from '../../normalize-fields';
|
|
20
|
-
import type { DataFormProps, NormalizedField } from '../../types';
|
|
20
|
+
import type { DataFormProps, NormalizedField, Field } from '../../types';
|
|
21
21
|
|
|
22
22
|
interface FormFieldProps< Item > {
|
|
23
23
|
data: Item;
|
|
@@ -44,6 +44,8 @@ function DropdownHeader( {
|
|
|
44
44
|
<Spacer />
|
|
45
45
|
{ onClose && (
|
|
46
46
|
<Button
|
|
47
|
+
// TODO: Switch to `true` (40px size) if possible
|
|
48
|
+
__next40pxDefaultSize={ false }
|
|
47
49
|
className="dataforms-layouts-panel__dropdown-header-action"
|
|
48
50
|
label={ __( 'Close' ) }
|
|
49
51
|
icon={ closeSmall }
|
|
@@ -142,7 +144,11 @@ export default function FormPanel< Item >( {
|
|
|
142
144
|
const visibleFields = useMemo(
|
|
143
145
|
() =>
|
|
144
146
|
normalizeFields(
|
|
145
|
-
|
|
147
|
+
( form.fields ?? [] )
|
|
148
|
+
.map( ( fieldId ) =>
|
|
149
|
+
fields.find( ( { id } ) => id === fieldId )
|
|
150
|
+
)
|
|
151
|
+
.filter( ( field ): field is Field< Item > => !! field )
|
|
146
152
|
),
|
|
147
153
|
[ fields, form.fields ]
|
|
148
154
|
);
|
|
@@ -8,7 +8,7 @@ import { useMemo } from '@wordpress/element';
|
|
|
8
8
|
* Internal dependencies
|
|
9
9
|
*/
|
|
10
10
|
import { normalizeFields } from '../../normalize-fields';
|
|
11
|
-
import type { DataFormProps } from '../../types';
|
|
11
|
+
import type { DataFormProps, Field } from '../../types';
|
|
12
12
|
|
|
13
13
|
export default function FormRegular< Item >( {
|
|
14
14
|
data,
|
|
@@ -19,7 +19,11 @@ export default function FormRegular< Item >( {
|
|
|
19
19
|
const visibleFields = useMemo(
|
|
20
20
|
() =>
|
|
21
21
|
normalizeFields(
|
|
22
|
-
|
|
22
|
+
( form.fields ?? [] )
|
|
23
|
+
.map( ( fieldId ) =>
|
|
24
|
+
fields.find( ( { id } ) => id === fieldId )
|
|
25
|
+
)
|
|
26
|
+
.filter( ( field ): field is Field< Item > => !! field )
|
|
23
27
|
),
|
|
24
28
|
[ fields, form.fields ]
|
|
25
29
|
);
|
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* WordPress dependencies
|
|
3
3
|
*/
|
|
4
|
-
import { RangeControl
|
|
4
|
+
import { RangeControl } from '@wordpress/components';
|
|
5
5
|
import { __ } from '@wordpress/i18n';
|
|
6
6
|
import { useViewportMatch } from '@wordpress/compose';
|
|
7
|
-
import {
|
|
8
|
-
import { useEffect } from '@wordpress/element';
|
|
7
|
+
import { useEffect, useMemo } from '@wordpress/element';
|
|
9
8
|
|
|
10
9
|
const viewportBreaks = {
|
|
11
10
|
xhuge: { min: 3, max: 6, default: 5 },
|
|
@@ -40,21 +39,6 @@ function useViewPortBreakpoint() {
|
|
|
40
39
|
return null;
|
|
41
40
|
}
|
|
42
41
|
|
|
43
|
-
// Value is number from 0 to 100 representing how big an item is in the grid
|
|
44
|
-
// 100 being the biggest and 0 being the smallest.
|
|
45
|
-
// The size is relative to the viewport size, if one a given viewport the
|
|
46
|
-
// number of allowed items in a grid is 3 to 6 a 0 ( the smallest ) will mean that the grid will
|
|
47
|
-
// have 6 items in a row, a 100 ( the biggest ) will mean that the grid will have 3 items in a row.
|
|
48
|
-
// A value of 75 will mean that the grid will have 4 items in a row.
|
|
49
|
-
function getRangeValue(
|
|
50
|
-
density: number,
|
|
51
|
-
breakValues: { min: number; max: number; default: number }
|
|
52
|
-
) {
|
|
53
|
-
const inverseDensity = breakValues.max - density;
|
|
54
|
-
const max = breakValues.max - breakValues.min;
|
|
55
|
-
return Math.round( ( inverseDensity * 100 ) / max );
|
|
56
|
-
}
|
|
57
|
-
|
|
58
42
|
export default function DensityPicker( {
|
|
59
43
|
density,
|
|
60
44
|
setDensity,
|
|
@@ -78,59 +62,41 @@ export default function DensityPicker( {
|
|
|
78
62
|
return _density;
|
|
79
63
|
} );
|
|
80
64
|
}, [ setDensity, viewport ] );
|
|
65
|
+
const breakValues = viewportBreaks[ viewport || 'mobile' ];
|
|
66
|
+
const densityToUse = density || breakValues.default;
|
|
67
|
+
|
|
68
|
+
const marks = useMemo(
|
|
69
|
+
() =>
|
|
70
|
+
Array.from(
|
|
71
|
+
{ length: breakValues.max - breakValues.min + 1 },
|
|
72
|
+
( _, i ) => {
|
|
73
|
+
return {
|
|
74
|
+
value: breakValues.min + i,
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
),
|
|
78
|
+
[ breakValues ]
|
|
79
|
+
);
|
|
80
|
+
|
|
81
81
|
if ( ! viewport ) {
|
|
82
82
|
return null;
|
|
83
83
|
}
|
|
84
|
-
const breakValues = viewportBreaks[ viewport ];
|
|
85
|
-
const densityToUse = density || breakValues.default;
|
|
86
|
-
const rangeValue = getRangeValue( densityToUse, breakValues );
|
|
87
84
|
|
|
88
|
-
const step = 100 / ( breakValues.max - breakValues.min + 1 );
|
|
89
85
|
return (
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
label={ __( 'Item size' ) }
|
|
106
|
-
hideLabelFromVision
|
|
107
|
-
value={ rangeValue }
|
|
108
|
-
min={ 0 }
|
|
109
|
-
max={ 100 }
|
|
110
|
-
withInputField={ false }
|
|
111
|
-
onChange={ ( value = 0 ) => {
|
|
112
|
-
const inverseValue = 100 - value;
|
|
113
|
-
setDensity(
|
|
114
|
-
Math.round(
|
|
115
|
-
( inverseValue *
|
|
116
|
-
( breakValues.max - breakValues.min ) ) /
|
|
117
|
-
100 +
|
|
118
|
-
breakValues.min
|
|
119
|
-
)
|
|
120
|
-
);
|
|
121
|
-
} }
|
|
122
|
-
step={ step }
|
|
123
|
-
/>
|
|
124
|
-
<Button
|
|
125
|
-
size="compact"
|
|
126
|
-
icon={ plus }
|
|
127
|
-
disabled={ rangeValue >= 100 }
|
|
128
|
-
accessibleWhenDisabled
|
|
129
|
-
label={ __( 'Increase size' ) }
|
|
130
|
-
onClick={ () => {
|
|
131
|
-
setDensity( densityToUse - 1 );
|
|
132
|
-
} }
|
|
133
|
-
/>
|
|
134
|
-
</>
|
|
86
|
+
<RangeControl
|
|
87
|
+
__nextHasNoMarginBottom
|
|
88
|
+
__next40pxDefaultSize
|
|
89
|
+
showTooltip={ false }
|
|
90
|
+
label={ __( 'Preview size' ) }
|
|
91
|
+
value={ breakValues.max + breakValues.min - densityToUse }
|
|
92
|
+
marks={ marks }
|
|
93
|
+
min={ breakValues.min }
|
|
94
|
+
max={ breakValues.max }
|
|
95
|
+
withInputField={ false }
|
|
96
|
+
onChange={ ( value = 0 ) => {
|
|
97
|
+
setDensity( breakValues.max + breakValues.min - value );
|
|
98
|
+
} }
|
|
99
|
+
step={ 1 }
|
|
100
|
+
/>
|
|
135
101
|
);
|
|
136
102
|
}
|
|
@@ -118,7 +118,7 @@
|
|
|
118
118
|
background: $gray-100;
|
|
119
119
|
padding: 0 $grid-unit-10;
|
|
120
120
|
min-height: $grid-unit-30;
|
|
121
|
-
border-radius: $radius-
|
|
121
|
+
border-radius: $radius-small;
|
|
122
122
|
display: flex;
|
|
123
123
|
align-items: center;
|
|
124
124
|
font-size: 12px;
|
|
@@ -146,10 +146,6 @@
|
|
|
146
146
|
}
|
|
147
147
|
}
|
|
148
148
|
|
|
149
|
-
.dataviews-density-picker__range-control {
|
|
150
|
-
width: 200px;
|
|
151
|
-
}
|
|
152
|
-
|
|
153
149
|
.dataviews-view-grid__field-value:empty,
|
|
154
150
|
.dataviews-view-grid__field:empty {
|
|
155
151
|
display: none;
|
|
@@ -16,7 +16,7 @@ import ViewTable from './table';
|
|
|
16
16
|
import ViewGrid from './grid';
|
|
17
17
|
import ViewList from './list';
|
|
18
18
|
import { LAYOUT_GRID, LAYOUT_LIST, LAYOUT_TABLE } from '../constants';
|
|
19
|
-
import type { View } from '../types';
|
|
19
|
+
import type { View, Field } from '../types';
|
|
20
20
|
|
|
21
21
|
export const VIEW_LAYOUTS = [
|
|
22
22
|
{
|
|
@@ -39,7 +39,7 @@ export const VIEW_LAYOUTS = [
|
|
|
39
39
|
},
|
|
40
40
|
];
|
|
41
41
|
|
|
42
|
-
export function
|
|
42
|
+
export function getNotHidableFieldIds( view: View ): string[] {
|
|
43
43
|
if ( view.type === 'table' ) {
|
|
44
44
|
return [ view.layout?.primaryField ]
|
|
45
45
|
.concat(
|
|
@@ -64,3 +64,64 @@ export function getMandatoryFields( view: View ): string[] {
|
|
|
64
64
|
|
|
65
65
|
return [];
|
|
66
66
|
}
|
|
67
|
+
|
|
68
|
+
function getCombinedFieldIds( view: View ): string[] {
|
|
69
|
+
const combinedFields: string[] = [];
|
|
70
|
+
if ( view.type === LAYOUT_TABLE && view.layout?.combinedFields ) {
|
|
71
|
+
view.layout.combinedFields.forEach( ( combination ) => {
|
|
72
|
+
combinedFields.push( ...combination.children );
|
|
73
|
+
} );
|
|
74
|
+
}
|
|
75
|
+
return combinedFields;
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
export function getVisibleFieldIds(
|
|
79
|
+
view: View,
|
|
80
|
+
fields: Field< any >[]
|
|
81
|
+
): string[] {
|
|
82
|
+
const fieldsToExclude = getCombinedFieldIds( view );
|
|
83
|
+
|
|
84
|
+
if ( view.fields ) {
|
|
85
|
+
return view.fields.filter( ( id ) => ! fieldsToExclude.includes( id ) );
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
const visibleFields = [];
|
|
89
|
+
if ( view.type === LAYOUT_TABLE && view.layout?.combinedFields ) {
|
|
90
|
+
visibleFields.push(
|
|
91
|
+
...view.layout.combinedFields.map( ( { id } ) => id )
|
|
92
|
+
);
|
|
93
|
+
}
|
|
94
|
+
visibleFields.push(
|
|
95
|
+
...fields
|
|
96
|
+
.filter( ( { id } ) => ! fieldsToExclude.includes( id ) )
|
|
97
|
+
.map( ( { id } ) => id )
|
|
98
|
+
);
|
|
99
|
+
|
|
100
|
+
return visibleFields;
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
export function getHiddenFieldIds(
|
|
104
|
+
view: View,
|
|
105
|
+
fields: Field< any >[]
|
|
106
|
+
): string[] {
|
|
107
|
+
const fieldsToExclude = [
|
|
108
|
+
...getCombinedFieldIds( view ),
|
|
109
|
+
...getVisibleFieldIds( view, fields ),
|
|
110
|
+
];
|
|
111
|
+
|
|
112
|
+
// The media field does not need to be in the view.fields to be displayed.
|
|
113
|
+
if ( view.type === LAYOUT_GRID && view.layout?.mediaField ) {
|
|
114
|
+
fieldsToExclude.push( view.layout?.mediaField );
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
if ( view.type === LAYOUT_LIST && view.layout?.mediaField ) {
|
|
118
|
+
fieldsToExclude.push( view.layout?.mediaField );
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
return fields
|
|
122
|
+
.filter(
|
|
123
|
+
( { id, enableHiding } ) =>
|
|
124
|
+
! fieldsToExclude.includes( id ) && enableHiding
|
|
125
|
+
)
|
|
126
|
+
.map( ( { id } ) => id );
|
|
127
|
+
}
|