@wordpress/dataviews 0.8.0 → 0.9.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.
Files changed (59) hide show
  1. package/CHANGELOG.md +10 -0
  2. package/README.md +3 -5
  3. package/build/constants.js +1 -4
  4. package/build/constants.js.map +1 -1
  5. package/build/dataviews.js +2 -12
  6. package/build/dataviews.js.map +1 -1
  7. package/build/filter-and-sort-data-view.js +147 -0
  8. package/build/filter-and-sort-data-view.js.map +1 -0
  9. package/build/filters.js +11 -17
  10. package/build/filters.js.map +1 -1
  11. package/build/index.js +3 -9
  12. package/build/index.js.map +1 -1
  13. package/build/normalize-fields.js +25 -0
  14. package/build/normalize-fields.js.map +1 -0
  15. package/build/utils.js +1 -65
  16. package/build/utils.js.map +1 -1
  17. package/build/view-grid.js +21 -11
  18. package/build/view-grid.js.map +1 -1
  19. package/build/view-list.js +122 -58
  20. package/build/view-list.js.map +1 -1
  21. package/build/view-table.js +27 -13
  22. package/build/view-table.js.map +1 -1
  23. package/build-module/constants.js +0 -3
  24. package/build-module/constants.js.map +1 -1
  25. package/build-module/dataviews.js +2 -12
  26. package/build-module/dataviews.js.map +1 -1
  27. package/build-module/filter-and-sort-data-view.js +139 -0
  28. package/build-module/filter-and-sort-data-view.js.map +1 -0
  29. package/build-module/filters.js +12 -18
  30. package/build-module/filters.js.map +1 -1
  31. package/build-module/index.js +1 -1
  32. package/build-module/index.js.map +1 -1
  33. package/build-module/normalize-fields.js +19 -0
  34. package/build-module/normalize-fields.js.map +1 -0
  35. package/build-module/utils.js +0 -63
  36. package/build-module/utils.js.map +1 -1
  37. package/build-module/view-grid.js +22 -12
  38. package/build-module/view-grid.js.map +1 -1
  39. package/build-module/view-list.js +124 -60
  40. package/build-module/view-list.js.map +1 -1
  41. package/build-module/view-table.js +28 -14
  42. package/build-module/view-table.js.map +1 -1
  43. package/build-style/style-rtl.css +32 -8
  44. package/build-style/style.css +32 -8
  45. package/package.json +11 -11
  46. package/src/constants.js +0 -3
  47. package/src/dataviews.js +2 -12
  48. package/src/filter-and-sort-data-view.js +154 -0
  49. package/src/filters.js +20 -32
  50. package/src/index.js +1 -1
  51. package/src/normalize-fields.js +17 -0
  52. package/src/stories/fixtures.js +75 -1
  53. package/src/stories/index.story.js +5 -113
  54. package/src/style.scss +44 -11
  55. package/src/test/filter-and-sort-data-view.js +276 -0
  56. package/src/utils.js +0 -52
  57. package/src/view-grid.js +32 -10
  58. package/src/view-list.js +159 -69
  59. package/src/view-table.js +29 -13
package/CHANGELOG.md CHANGED
@@ -2,6 +2,12 @@
2
2
 
3
3
  ## Unreleased
4
4
 
5
+ ## 0.9.0 (2024-04-03)
6
+
7
+ ### Enhancement
8
+
9
+ - The `enumeration` type has been removed and we'll introduce new field types soon. The existing filters will still work as before given they checked for field.elements, which is still a condition filters should have.
10
+
5
11
  ## 0.8.0 (2024-03-21)
6
12
 
7
13
  ### Enhancement
@@ -9,6 +15,10 @@
9
15
  - Two new operators have been added: `isAll` and `isNotAll`. These are meant to represent `AND` operations. For example, `Category is all: Book, Review, Science Fiction` would represent all items that have all three categories selected.
10
16
  - DataViews now supports multi-selection. A new set of filter operators has been introduced: `is`, `isNot`, `isAny`, `isNone`. Single-selection operators are `is` and `isNot`, and multi-selection operators are `isAny` and `isNone`. If no operators are declared for a filter, it will support multi-selection. Additionally, the old filter operators `in` and `notIn` operators have been deprecated and will work as `is` and `isNot` respectively. Please, migrate to the new operators as they'll be removed soon.
11
17
 
18
+ ### Breaking changes
19
+
20
+ - Removed the `getPaginationResults` and `sortByTextFields` utils and replaced them with a unique `filterSortAndPaginate` function.
21
+
12
22
  ## 0.7.0 (2024-03-06)
13
23
 
14
24
  ## 0.6.0 (2024-02-21)
package/README.md CHANGED
@@ -90,7 +90,6 @@ const fields = [
90
90
  <a href="...">{ item.author }</a>
91
91
  );
92
92
  },
93
- type: 'enumeration',
94
93
  elements: [
95
94
  { value: 1, label: 'Admin' }
96
95
  { value: 2, label: 'User' }
@@ -106,7 +105,6 @@ const fields = [
106
105
  getValue: ( { item } ) =>
107
106
  STATUSES.find( ( { value } ) => value === item.status )
108
107
  ?.label ?? item.status,
109
- type: 'enumeration',
110
108
  elements: STATUSES,
111
109
  filterBy: {
112
110
  operators: [ 'isAny' ],
@@ -123,7 +121,7 @@ Each field is an object with the following properties:
123
121
  - `getValue`: function that returns the value of the field, defaults to `field[id]`.
124
122
  - `render`: function that renders the field. Optional, `getValue` will be used if `render` is not defined.
125
123
  - `elements`: the set of valid values for the field's value.
126
- - `type`: the type of the field. Used to generate the proper filters. Only `enumeration` available at the moment. See "Field types".
124
+ - `type`: the type of the field. See "Field types".
127
125
  - `enableSorting`: whether the data can be sorted by the given field. True by default.
128
126
  - `enableHiding`: whether the field can be hidden. True by default.
129
127
  - `filterBy`: configuration for the filters.
@@ -299,11 +297,11 @@ Callback that signals the user triggered the details for one of more items, and
299
297
 
300
298
  ### Fields
301
299
 
302
- - `enumeration`: the field value should be taken and can be filtered from a closed list of elements.
300
+ > The `enumeration` type was removed as it was deemed redundant with the field.elements metadata. New types will be introduced soon.
303
301
 
304
302
  ### Operators
305
303
 
306
- Allowed operators for fields of type `enumeration`:
304
+ Allowed operators:
307
305
 
308
306
  | Operator | Selection | Description | Example |
309
307
  | --- | --- | --- | --- |
@@ -4,7 +4,7 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
4
4
  Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
- exports.VIEW_LAYOUTS = exports.SORTING_DIRECTIONS = exports.OPERATOR_IS_NOT_ALL = exports.OPERATOR_IS_NOT = exports.OPERATOR_IS_NONE = exports.OPERATOR_IS_ANY = exports.OPERATOR_IS_ALL = exports.OPERATOR_IS = exports.OPERATORS = exports.LAYOUT_TABLE = exports.LAYOUT_LIST = exports.LAYOUT_GRID = exports.ENUMERATION_TYPE = exports.ALL_OPERATORS = void 0;
7
+ exports.VIEW_LAYOUTS = exports.SORTING_DIRECTIONS = exports.OPERATOR_IS_NOT_ALL = exports.OPERATOR_IS_NOT = exports.OPERATOR_IS_NONE = exports.OPERATOR_IS_ANY = exports.OPERATOR_IS_ALL = exports.OPERATOR_IS = exports.OPERATORS = exports.LAYOUT_TABLE = exports.LAYOUT_LIST = exports.LAYOUT_GRID = exports.ALL_OPERATORS = void 0;
8
8
  var _i18n = require("@wordpress/i18n");
9
9
  var _icons = require("@wordpress/icons");
10
10
  var _viewTable = _interopRequireDefault(require("./view-table"));
@@ -18,9 +18,6 @@ var _viewList = _interopRequireDefault(require("./view-list"));
18
18
  * Internal dependencies
19
19
  */
20
20
 
21
- // Field types.
22
- const ENUMERATION_TYPE = exports.ENUMERATION_TYPE = 'enumeration';
23
-
24
21
  // Filter operators.
25
22
  const OPERATOR_IS = exports.OPERATOR_IS = 'is';
26
23
  const OPERATOR_IS_NOT = exports.OPERATOR_IS_NOT = 'isNot';
@@ -1 +1 @@
1
- {"version":3,"names":["_i18n","require","_icons","_viewTable","_interopRequireDefault","_viewGrid","_viewList","ENUMERATION_TYPE","exports","OPERATOR_IS","OPERATOR_IS_NOT","OPERATOR_IS_ANY","OPERATOR_IS_NONE","OPERATOR_IS_ALL","OPERATOR_IS_NOT_ALL","ALL_OPERATORS","OPERATORS","key","label","__","SORTING_DIRECTIONS","asc","desc","LAYOUT_TABLE","LAYOUT_GRID","LAYOUT_LIST","VIEW_LAYOUTS","type","component","ViewTable","icon","blockTable","ViewGrid","category","ViewList","isRTL","formatListBulletsRTL","formatListBullets"],"sources":["@wordpress/dataviews/src/constants.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __, isRTL } from '@wordpress/i18n';\nimport {\n\tblockTable,\n\tcategory,\n\tformatListBullets,\n\tformatListBulletsRTL,\n} from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport ViewTable from './view-table';\nimport ViewGrid from './view-grid';\nimport ViewList from './view-list';\n\n// Field types.\nexport const ENUMERATION_TYPE = 'enumeration';\n\n// Filter operators.\nexport const OPERATOR_IS = 'is';\nexport const OPERATOR_IS_NOT = 'isNot';\nexport const OPERATOR_IS_ANY = 'isAny';\nexport const OPERATOR_IS_NONE = 'isNone';\nexport const OPERATOR_IS_ALL = 'isAll';\nexport const OPERATOR_IS_NOT_ALL = 'isNotAll';\n\nexport const ALL_OPERATORS = [\n\tOPERATOR_IS,\n\tOPERATOR_IS_NOT,\n\tOPERATOR_IS_ANY,\n\tOPERATOR_IS_NONE,\n\tOPERATOR_IS_ALL,\n\tOPERATOR_IS_NOT_ALL,\n];\nexport const OPERATORS = {\n\t[ OPERATOR_IS ]: {\n\t\tkey: 'is-filter',\n\t\tlabel: __( 'Is' ),\n\t},\n\t[ OPERATOR_IS_NOT ]: {\n\t\tkey: 'is-not-filter',\n\t\tlabel: __( 'Is not' ),\n\t},\n\t[ OPERATOR_IS_ANY ]: {\n\t\tkey: 'is-any-filter',\n\t\tlabel: __( 'Is any' ),\n\t},\n\t[ OPERATOR_IS_NONE ]: {\n\t\tkey: 'is-none-filter',\n\t\tlabel: __( 'Is none' ),\n\t},\n\t[ OPERATOR_IS_ALL ]: {\n\t\tkey: 'is-all-filter',\n\t\tlabel: __( 'Is all' ),\n\t},\n\t[ OPERATOR_IS_NOT_ALL ]: {\n\t\tkey: 'is-not-all-filter',\n\t\tlabel: __( 'Is not all' ),\n\t},\n};\n\n// Sorting\nexport const SORTING_DIRECTIONS = {\n\tasc: { label: __( 'Sort ascending' ) },\n\tdesc: { label: __( 'Sort descending' ) },\n};\n\n// View layouts.\nexport const LAYOUT_TABLE = 'table';\nexport const LAYOUT_GRID = 'grid';\nexport const LAYOUT_LIST = 'list';\n\nexport const VIEW_LAYOUTS = [\n\t{\n\t\ttype: LAYOUT_TABLE,\n\t\tlabel: __( 'Table' ),\n\t\tcomponent: ViewTable,\n\t\ticon: blockTable,\n\t},\n\t{\n\t\ttype: LAYOUT_GRID,\n\t\tlabel: __( 'Grid' ),\n\t\tcomponent: ViewGrid,\n\t\ticon: category,\n\t},\n\t{\n\t\ttype: LAYOUT_LIST,\n\t\tlabel: __( 'List' ),\n\t\tcomponent: ViewList,\n\t\ticon: isRTL() ? formatListBulletsRTL : formatListBullets,\n\t},\n];\n"],"mappings":"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"}
1
+ {"version":3,"names":["_i18n","require","_icons","_viewTable","_interopRequireDefault","_viewGrid","_viewList","OPERATOR_IS","exports","OPERATOR_IS_NOT","OPERATOR_IS_ANY","OPERATOR_IS_NONE","OPERATOR_IS_ALL","OPERATOR_IS_NOT_ALL","ALL_OPERATORS","OPERATORS","key","label","__","SORTING_DIRECTIONS","asc","desc","LAYOUT_TABLE","LAYOUT_GRID","LAYOUT_LIST","VIEW_LAYOUTS","type","component","ViewTable","icon","blockTable","ViewGrid","category","ViewList","isRTL","formatListBulletsRTL","formatListBullets"],"sources":["@wordpress/dataviews/src/constants.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __, isRTL } from '@wordpress/i18n';\nimport {\n\tblockTable,\n\tcategory,\n\tformatListBullets,\n\tformatListBulletsRTL,\n} from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport ViewTable from './view-table';\nimport ViewGrid from './view-grid';\nimport ViewList from './view-list';\n\n// Filter operators.\nexport const OPERATOR_IS = 'is';\nexport const OPERATOR_IS_NOT = 'isNot';\nexport const OPERATOR_IS_ANY = 'isAny';\nexport const OPERATOR_IS_NONE = 'isNone';\nexport const OPERATOR_IS_ALL = 'isAll';\nexport const OPERATOR_IS_NOT_ALL = 'isNotAll';\n\nexport const ALL_OPERATORS = [\n\tOPERATOR_IS,\n\tOPERATOR_IS_NOT,\n\tOPERATOR_IS_ANY,\n\tOPERATOR_IS_NONE,\n\tOPERATOR_IS_ALL,\n\tOPERATOR_IS_NOT_ALL,\n];\nexport const OPERATORS = {\n\t[ OPERATOR_IS ]: {\n\t\tkey: 'is-filter',\n\t\tlabel: __( 'Is' ),\n\t},\n\t[ OPERATOR_IS_NOT ]: {\n\t\tkey: 'is-not-filter',\n\t\tlabel: __( 'Is not' ),\n\t},\n\t[ OPERATOR_IS_ANY ]: {\n\t\tkey: 'is-any-filter',\n\t\tlabel: __( 'Is any' ),\n\t},\n\t[ OPERATOR_IS_NONE ]: {\n\t\tkey: 'is-none-filter',\n\t\tlabel: __( 'Is none' ),\n\t},\n\t[ OPERATOR_IS_ALL ]: {\n\t\tkey: 'is-all-filter',\n\t\tlabel: __( 'Is all' ),\n\t},\n\t[ OPERATOR_IS_NOT_ALL ]: {\n\t\tkey: 'is-not-all-filter',\n\t\tlabel: __( 'Is not all' ),\n\t},\n};\n\n// Sorting\nexport const SORTING_DIRECTIONS = {\n\tasc: { label: __( 'Sort ascending' ) },\n\tdesc: { label: __( 'Sort descending' ) },\n};\n\n// View layouts.\nexport const LAYOUT_TABLE = 'table';\nexport const LAYOUT_GRID = 'grid';\nexport const LAYOUT_LIST = 'list';\n\nexport const VIEW_LAYOUTS = [\n\t{\n\t\ttype: LAYOUT_TABLE,\n\t\tlabel: __( 'Table' ),\n\t\tcomponent: ViewTable,\n\t\ticon: blockTable,\n\t},\n\t{\n\t\ttype: LAYOUT_GRID,\n\t\tlabel: __( 'Grid' ),\n\t\tcomponent: ViewGrid,\n\t\ticon: category,\n\t},\n\t{\n\t\ttype: LAYOUT_LIST,\n\t\tlabel: __( 'List' ),\n\t\tcomponent: ViewList,\n\t\ticon: isRTL() ? formatListBulletsRTL : formatListBullets,\n\t},\n];\n"],"mappings":"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"}
@@ -14,6 +14,7 @@ var _filters = _interopRequireDefault(require("./filters"));
14
14
  var _search = _interopRequireDefault(require("./search"));
15
15
  var _constants = require("./constants");
16
16
  var _bulkActions = _interopRequireDefault(require("./bulk-actions"));
17
+ var _normalizeFields = require("./normalize-fields");
17
18
  /**
18
19
  * WordPress dependencies
19
20
  */
@@ -63,18 +64,7 @@ function DataViews({
63
64
  onSelectionChange(items);
64
65
  }, [setSelection, getItemId, onSelectionChange]);
65
66
  const ViewComponent = _constants.VIEW_LAYOUTS.find(v => v.type === view.type).component;
66
- const _fields = (0, _element.useMemo)(() => {
67
- return fields.map(field => {
68
- const getValue = field.getValue || (({
69
- item
70
- }) => item[field.id]);
71
- return {
72
- ...field,
73
- getValue,
74
- render: field.render || getValue
75
- };
76
- });
77
- }, [fields]);
67
+ const _fields = (0, _element.useMemo)(() => (0, _normalizeFields.normalizeFields)(fields), [fields]);
78
68
  const hasPossibleBulkAction = useSomeItemHasAPossibleBulkAction(actions, data);
79
69
  return (0, _react.createElement)("div", {
80
70
  className: "dataviews-wrapper"
@@ -1 +1 @@
1
- {"version":3,"names":["_components","require","_element","_pagination","_interopRequireDefault","_viewActions","_filters","_search","_constants","_bulkActions","defaultGetItemId","item","id","defaultOnSelectionChange","useSomeItemHasAPossibleBulkAction","actions","data","useMemo","some","action","supportsBulk","isEligible","DataViews","view","onChangeView","fields","search","searchLabel","undefined","getItemId","isLoading","paginationInfo","supportedLayouts","onSelectionChange","onDetailsChange","deferredRendering","selection","setSelection","useState","openedFilter","setOpenedFilter","useEffect","length","newSelection","filter","includes","onSetSelection","useCallback","items","map","ViewComponent","VIEW_LAYOUTS","find","v","type","component","_fields","field","getValue","render","hasPossibleBulkAction","_react","createElement","className","__experimentalHStack","alignment","justify","wrap","default","label","LAYOUT_TABLE","LAYOUT_GRID"],"sources":["@wordpress/dataviews/src/dataviews.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __experimentalHStack as HStack } from '@wordpress/components';\nimport { useMemo, useState, useCallback, useEffect } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport Pagination from './pagination';\nimport ViewActions from './view-actions';\nimport Filters from './filters';\nimport Search from './search';\nimport { VIEW_LAYOUTS, LAYOUT_TABLE, LAYOUT_GRID } from './constants';\nimport BulkActions from './bulk-actions';\n\nconst defaultGetItemId = ( item ) => item.id;\nconst defaultOnSelectionChange = () => {};\n\nfunction useSomeItemHasAPossibleBulkAction( actions, data ) {\n\treturn useMemo( () => {\n\t\treturn data.some( ( item ) => {\n\t\t\treturn actions.some( ( action ) => {\n\t\t\t\treturn action.supportsBulk && action.isEligible( item );\n\t\t\t} );\n\t\t} );\n\t}, [ actions, data ] );\n}\n\nexport default function DataViews( {\n\tview,\n\tonChangeView,\n\tfields,\n\tsearch = true,\n\tsearchLabel = undefined,\n\tactions = [],\n\tdata,\n\tgetItemId = defaultGetItemId,\n\tisLoading = false,\n\tpaginationInfo,\n\tsupportedLayouts,\n\tonSelectionChange = defaultOnSelectionChange,\n\tonDetailsChange = null,\n\tdeferredRendering = false,\n} ) {\n\tconst [ selection, setSelection ] = useState( [] );\n\tconst [ openedFilter, setOpenedFilter ] = useState( null );\n\n\tuseEffect( () => {\n\t\tif (\n\t\t\tselection.length > 0 &&\n\t\t\tselection.some(\n\t\t\t\t( id ) => ! data.some( ( item ) => getItemId( item ) === id )\n\t\t\t)\n\t\t) {\n\t\t\tconst newSelection = selection.filter( ( id ) =>\n\t\t\t\tdata.some( ( item ) => getItemId( item ) === id )\n\t\t\t);\n\t\t\tsetSelection( newSelection );\n\t\t\tonSelectionChange(\n\t\t\t\tdata.filter( ( item ) =>\n\t\t\t\t\tnewSelection.includes( getItemId( item ) )\n\t\t\t\t)\n\t\t\t);\n\t\t}\n\t}, [ selection, data, getItemId, onSelectionChange ] );\n\n\tconst onSetSelection = useCallback(\n\t\t( items ) => {\n\t\t\tsetSelection( items.map( ( item ) => getItemId( item ) ) );\n\t\t\tonSelectionChange( items );\n\t\t},\n\t\t[ setSelection, getItemId, onSelectionChange ]\n\t);\n\n\tconst ViewComponent = VIEW_LAYOUTS.find(\n\t\t( v ) => v.type === view.type\n\t).component;\n\tconst _fields = useMemo( () => {\n\t\treturn fields.map( ( field ) => {\n\t\t\tconst getValue =\n\t\t\t\tfield.getValue || ( ( { item } ) => item[ field.id ] );\n\n\t\t\treturn {\n\t\t\t\t...field,\n\t\t\t\tgetValue,\n\t\t\t\trender: field.render || getValue,\n\t\t\t};\n\t\t} );\n\t}, [ fields ] );\n\n\tconst hasPossibleBulkAction = useSomeItemHasAPossibleBulkAction(\n\t\tactions,\n\t\tdata\n\t);\n\treturn (\n\t\t<div className=\"dataviews-wrapper\">\n\t\t\t<HStack\n\t\t\t\talignment=\"top\"\n\t\t\t\tjustify=\"start\"\n\t\t\t\tclassName=\"dataviews-filters__view-actions\"\n\t\t\t>\n\t\t\t\t<HStack\n\t\t\t\t\tjustify=\"start\"\n\t\t\t\t\tclassName=\"dataviews-filters__container\"\n\t\t\t\t\twrap\n\t\t\t\t>\n\t\t\t\t\t{ search && (\n\t\t\t\t\t\t<Search\n\t\t\t\t\t\t\tlabel={ searchLabel }\n\t\t\t\t\t\t\tview={ view }\n\t\t\t\t\t\t\tonChangeView={ onChangeView }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t\t<Filters\n\t\t\t\t\t\tfields={ _fields }\n\t\t\t\t\t\tview={ view }\n\t\t\t\t\t\tonChangeView={ onChangeView }\n\t\t\t\t\t\topenedFilter={ openedFilter }\n\t\t\t\t\t\tsetOpenedFilter={ setOpenedFilter }\n\t\t\t\t\t/>\n\t\t\t\t</HStack>\n\t\t\t\t{ [ LAYOUT_TABLE, LAYOUT_GRID ].includes( view.type ) &&\n\t\t\t\t\thasPossibleBulkAction && (\n\t\t\t\t\t\t<BulkActions\n\t\t\t\t\t\t\tactions={ actions }\n\t\t\t\t\t\t\tdata={ data }\n\t\t\t\t\t\t\tonSelectionChange={ onSetSelection }\n\t\t\t\t\t\t\tselection={ selection }\n\t\t\t\t\t\t\tgetItemId={ getItemId }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t<ViewActions\n\t\t\t\t\tfields={ _fields }\n\t\t\t\t\tview={ view }\n\t\t\t\t\tonChangeView={ onChangeView }\n\t\t\t\t\tsupportedLayouts={ supportedLayouts }\n\t\t\t\t/>\n\t\t\t</HStack>\n\t\t\t<ViewComponent\n\t\t\t\tfields={ _fields }\n\t\t\t\tview={ view }\n\t\t\t\tonChangeView={ onChangeView }\n\t\t\t\tactions={ actions }\n\t\t\t\tdata={ data }\n\t\t\t\tgetItemId={ getItemId }\n\t\t\t\tisLoading={ isLoading }\n\t\t\t\tonSelectionChange={ onSetSelection }\n\t\t\t\tonDetailsChange={ onDetailsChange }\n\t\t\t\tselection={ selection }\n\t\t\t\tdeferredRendering={ deferredRendering }\n\t\t\t\tsetOpenedFilter={ setOpenedFilter }\n\t\t\t/>\n\t\t\t<Pagination\n\t\t\t\tview={ view }\n\t\t\t\tonChangeView={ onChangeView }\n\t\t\t\tpaginationInfo={ paginationInfo }\n\t\t\t/>\n\t\t</div>\n\t);\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["_components","require","_element","_pagination","_interopRequireDefault","_viewActions","_filters","_search","_constants","_bulkActions","_normalizeFields","defaultGetItemId","item","id","defaultOnSelectionChange","useSomeItemHasAPossibleBulkAction","actions","data","useMemo","some","action","supportsBulk","isEligible","DataViews","view","onChangeView","fields","search","searchLabel","undefined","getItemId","isLoading","paginationInfo","supportedLayouts","onSelectionChange","onDetailsChange","deferredRendering","selection","setSelection","useState","openedFilter","setOpenedFilter","useEffect","length","newSelection","filter","includes","onSetSelection","useCallback","items","map","ViewComponent","VIEW_LAYOUTS","find","v","type","component","_fields","normalizeFields","hasPossibleBulkAction","_react","createElement","className","__experimentalHStack","alignment","justify","wrap","default","label","LAYOUT_TABLE","LAYOUT_GRID"],"sources":["@wordpress/dataviews/src/dataviews.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __experimentalHStack as HStack } from '@wordpress/components';\nimport { useMemo, useState, useCallback, useEffect } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport Pagination from './pagination';\nimport ViewActions from './view-actions';\nimport Filters from './filters';\nimport Search from './search';\nimport { VIEW_LAYOUTS, LAYOUT_TABLE, LAYOUT_GRID } from './constants';\nimport BulkActions from './bulk-actions';\nimport { normalizeFields } from './normalize-fields';\n\nconst defaultGetItemId = ( item ) => item.id;\nconst defaultOnSelectionChange = () => {};\n\nfunction useSomeItemHasAPossibleBulkAction( actions, data ) {\n\treturn useMemo( () => {\n\t\treturn data.some( ( item ) => {\n\t\t\treturn actions.some( ( action ) => {\n\t\t\t\treturn action.supportsBulk && action.isEligible( item );\n\t\t\t} );\n\t\t} );\n\t}, [ actions, data ] );\n}\n\nexport default function DataViews( {\n\tview,\n\tonChangeView,\n\tfields,\n\tsearch = true,\n\tsearchLabel = undefined,\n\tactions = [],\n\tdata,\n\tgetItemId = defaultGetItemId,\n\tisLoading = false,\n\tpaginationInfo,\n\tsupportedLayouts,\n\tonSelectionChange = defaultOnSelectionChange,\n\tonDetailsChange = null,\n\tdeferredRendering = false,\n} ) {\n\tconst [ selection, setSelection ] = useState( [] );\n\tconst [ openedFilter, setOpenedFilter ] = useState( null );\n\n\tuseEffect( () => {\n\t\tif (\n\t\t\tselection.length > 0 &&\n\t\t\tselection.some(\n\t\t\t\t( id ) => ! data.some( ( item ) => getItemId( item ) === id )\n\t\t\t)\n\t\t) {\n\t\t\tconst newSelection = selection.filter( ( id ) =>\n\t\t\t\tdata.some( ( item ) => getItemId( item ) === id )\n\t\t\t);\n\t\t\tsetSelection( newSelection );\n\t\t\tonSelectionChange(\n\t\t\t\tdata.filter( ( item ) =>\n\t\t\t\t\tnewSelection.includes( getItemId( item ) )\n\t\t\t\t)\n\t\t\t);\n\t\t}\n\t}, [ selection, data, getItemId, onSelectionChange ] );\n\n\tconst onSetSelection = useCallback(\n\t\t( items ) => {\n\t\t\tsetSelection( items.map( ( item ) => getItemId( item ) ) );\n\t\t\tonSelectionChange( items );\n\t\t},\n\t\t[ setSelection, getItemId, onSelectionChange ]\n\t);\n\n\tconst ViewComponent = VIEW_LAYOUTS.find(\n\t\t( v ) => v.type === view.type\n\t).component;\n\tconst _fields = useMemo( () => normalizeFields( fields ), [ fields ] );\n\n\tconst hasPossibleBulkAction = useSomeItemHasAPossibleBulkAction(\n\t\tactions,\n\t\tdata\n\t);\n\treturn (\n\t\t<div className=\"dataviews-wrapper\">\n\t\t\t<HStack\n\t\t\t\talignment=\"top\"\n\t\t\t\tjustify=\"start\"\n\t\t\t\tclassName=\"dataviews-filters__view-actions\"\n\t\t\t>\n\t\t\t\t<HStack\n\t\t\t\t\tjustify=\"start\"\n\t\t\t\t\tclassName=\"dataviews-filters__container\"\n\t\t\t\t\twrap\n\t\t\t\t>\n\t\t\t\t\t{ search && (\n\t\t\t\t\t\t<Search\n\t\t\t\t\t\t\tlabel={ searchLabel }\n\t\t\t\t\t\t\tview={ view }\n\t\t\t\t\t\t\tonChangeView={ onChangeView }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t\t<Filters\n\t\t\t\t\t\tfields={ _fields }\n\t\t\t\t\t\tview={ view }\n\t\t\t\t\t\tonChangeView={ onChangeView }\n\t\t\t\t\t\topenedFilter={ openedFilter }\n\t\t\t\t\t\tsetOpenedFilter={ setOpenedFilter }\n\t\t\t\t\t/>\n\t\t\t\t</HStack>\n\t\t\t\t{ [ LAYOUT_TABLE, LAYOUT_GRID ].includes( view.type ) &&\n\t\t\t\t\thasPossibleBulkAction && (\n\t\t\t\t\t\t<BulkActions\n\t\t\t\t\t\t\tactions={ actions }\n\t\t\t\t\t\t\tdata={ data }\n\t\t\t\t\t\t\tonSelectionChange={ onSetSelection }\n\t\t\t\t\t\t\tselection={ selection }\n\t\t\t\t\t\t\tgetItemId={ getItemId }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t<ViewActions\n\t\t\t\t\tfields={ _fields }\n\t\t\t\t\tview={ view }\n\t\t\t\t\tonChangeView={ onChangeView }\n\t\t\t\t\tsupportedLayouts={ supportedLayouts }\n\t\t\t\t/>\n\t\t\t</HStack>\n\t\t\t<ViewComponent\n\t\t\t\tfields={ _fields }\n\t\t\t\tview={ view }\n\t\t\t\tonChangeView={ onChangeView }\n\t\t\t\tactions={ actions }\n\t\t\t\tdata={ data }\n\t\t\t\tgetItemId={ getItemId }\n\t\t\t\tisLoading={ isLoading }\n\t\t\t\tonSelectionChange={ onSetSelection }\n\t\t\t\tonDetailsChange={ onDetailsChange }\n\t\t\t\tselection={ selection }\n\t\t\t\tdeferredRendering={ deferredRendering }\n\t\t\t\tsetOpenedFilter={ setOpenedFilter }\n\t\t\t/>\n\t\t\t<Pagination\n\t\t\t\tview={ view }\n\t\t\t\tonChangeView={ onChangeView }\n\t\t\t\tpaginationInfo={ paginationInfo }\n\t\t\t/>\n\t\t</div>\n\t);\n}\n"],"mappings":";;;;;;;;AAGA,IAAAA,WAAA,GAAAC,OAAA;AACA,IAAAC,QAAA,GAAAD,OAAA;AAKA,IAAAE,WAAA,GAAAC,sBAAA,CAAAH,OAAA;AACA,IAAAI,YAAA,GAAAD,sBAAA,CAAAH,OAAA;AACA,IAAAK,QAAA,GAAAF,sBAAA,CAAAH,OAAA;AACA,IAAAM,OAAA,GAAAH,sBAAA,CAAAH,OAAA;AACA,IAAAO,UAAA,GAAAP,OAAA;AACA,IAAAQ,YAAA,GAAAL,sBAAA,CAAAH,OAAA;AACA,IAAAS,gBAAA,GAAAT,OAAA;AAfA;AACA;AACA;;AAIA;AACA;AACA;;AASA,MAAMU,gBAAgB,GAAKC,IAAI,IAAMA,IAAI,CAACC,EAAE;AAC5C,MAAMC,wBAAwB,GAAGA,CAAA,KAAM,CAAC,CAAC;AAEzC,SAASC,iCAAiCA,CAAEC,OAAO,EAAEC,IAAI,EAAG;EAC3D,OAAO,IAAAC,gBAAO,EAAE,MAAM;IACrB,OAAOD,IAAI,CAACE,IAAI,CAAIP,IAAI,IAAM;MAC7B,OAAOI,OAAO,CAACG,IAAI,CAAIC,MAAM,IAAM;QAClC,OAAOA,MAAM,CAACC,YAAY,IAAID,MAAM,CAACE,UAAU,CAAEV,IAAK,CAAC;MACxD,CAAE,CAAC;IACJ,CAAE,CAAC;EACJ,CAAC,EAAE,CAAEI,OAAO,EAAEC,IAAI,CAAG,CAAC;AACvB;AAEe,SAASM,SAASA,CAAE;EAClCC,IAAI;EACJC,YAAY;EACZC,MAAM;EACNC,MAAM,GAAG,IAAI;EACbC,WAAW,GAAGC,SAAS;EACvBb,OAAO,GAAG,EAAE;EACZC,IAAI;EACJa,SAAS,GAAGnB,gBAAgB;EAC5BoB,SAAS,GAAG,KAAK;EACjBC,cAAc;EACdC,gBAAgB;EAChBC,iBAAiB,GAAGpB,wBAAwB;EAC5CqB,eAAe,GAAG,IAAI;EACtBC,iBAAiB,GAAG;AACrB,CAAC,EAAG;EACH,MAAM,CAAEC,SAAS,EAAEC,YAAY,CAAE,GAAG,IAAAC,iBAAQ,EAAE,EAAG,CAAC;EAClD,MAAM,CAAEC,YAAY,EAAEC,eAAe,CAAE,GAAG,IAAAF,iBAAQ,EAAE,IAAK,CAAC;EAE1D,IAAAG,kBAAS,EAAE,MAAM;IAChB,IACCL,SAAS,CAACM,MAAM,GAAG,CAAC,IACpBN,SAAS,CAAClB,IAAI,CACXN,EAAE,IAAM,CAAEI,IAAI,CAACE,IAAI,CAAIP,IAAI,IAAMkB,SAAS,CAAElB,IAAK,CAAC,KAAKC,EAAG,CAC7D,CAAC,EACA;MACD,MAAM+B,YAAY,GAAGP,SAAS,CAACQ,MAAM,CAAIhC,EAAE,IAC1CI,IAAI,CAACE,IAAI,CAAIP,IAAI,IAAMkB,SAAS,CAAElB,IAAK,CAAC,KAAKC,EAAG,CACjD,CAAC;MACDyB,YAAY,CAAEM,YAAa,CAAC;MAC5BV,iBAAiB,CAChBjB,IAAI,CAAC4B,MAAM,CAAIjC,IAAI,IAClBgC,YAAY,CAACE,QAAQ,CAAEhB,SAAS,CAAElB,IAAK,CAAE,CAC1C,CACD,CAAC;IACF;EACD,CAAC,EAAE,CAAEyB,SAAS,EAAEpB,IAAI,EAAEa,SAAS,EAAEI,iBAAiB,CAAG,CAAC;EAEtD,MAAMa,cAAc,GAAG,IAAAC,oBAAW,EAC/BC,KAAK,IAAM;IACZX,YAAY,CAAEW,KAAK,CAACC,GAAG,CAAItC,IAAI,IAAMkB,SAAS,CAAElB,IAAK,CAAE,CAAE,CAAC;IAC1DsB,iBAAiB,CAAEe,KAAM,CAAC;EAC3B,CAAC,EACD,CAAEX,YAAY,EAAER,SAAS,EAAEI,iBAAiB,CAC7C,CAAC;EAED,MAAMiB,aAAa,GAAGC,uBAAY,CAACC,IAAI,CACpCC,CAAC,IAAMA,CAAC,CAACC,IAAI,KAAK/B,IAAI,CAAC+B,IAC1B,CAAC,CAACC,SAAS;EACX,MAAMC,OAAO,GAAG,IAAAvC,gBAAO,EAAE,MAAM,IAAAwC,gCAAe,EAAEhC,MAAO,CAAC,EAAE,CAAEA,MAAM,CAAG,CAAC;EAEtE,MAAMiC,qBAAqB,GAAG5C,iCAAiC,CAC9DC,OAAO,EACPC,IACD,CAAC;EACD,OACC,IAAA2C,MAAA,CAAAC,aAAA;IAAKC,SAAS,EAAC;EAAmB,GACjC,IAAAF,MAAA,CAAAC,aAAA,EAAC7D,WAAA,CAAA+D,oBAAM;IACNC,SAAS,EAAC,KAAK;IACfC,OAAO,EAAC,OAAO;IACfH,SAAS,EAAC;EAAiC,GAE3C,IAAAF,MAAA,CAAAC,aAAA,EAAC7D,WAAA,CAAA+D,oBAAM;IACNE,OAAO,EAAC,OAAO;IACfH,SAAS,EAAC,8BAA8B;IACxCI,IAAI;EAAA,GAEFvC,MAAM,IACP,IAAAiC,MAAA,CAAAC,aAAA,EAACtD,OAAA,CAAA4D,OAAM;IACNC,KAAK,EAAGxC,WAAa;IACrBJ,IAAI,EAAGA,IAAM;IACbC,YAAY,EAAGA;EAAc,CAC7B,CACD,EACD,IAAAmC,MAAA,CAAAC,aAAA,EAACvD,QAAA,CAAA6D,OAAO;IACPzC,MAAM,EAAG+B,OAAS;IAClBjC,IAAI,EAAGA,IAAM;IACbC,YAAY,EAAGA,YAAc;IAC7Be,YAAY,EAAGA,YAAc;IAC7BC,eAAe,EAAGA;EAAiB,CACnC,CACM,CAAC,EACP,CAAE4B,uBAAY,EAAEC,sBAAW,CAAE,CAACxB,QAAQ,CAAEtB,IAAI,CAAC+B,IAAK,CAAC,IACpDI,qBAAqB,IACpB,IAAAC,MAAA,CAAAC,aAAA,EAACpD,YAAA,CAAA0D,OAAW;IACXnD,OAAO,EAAGA,OAAS;IACnBC,IAAI,EAAGA,IAAM;IACbiB,iBAAiB,EAAGa,cAAgB;IACpCV,SAAS,EAAGA,SAAW;IACvBP,SAAS,EAAGA;EAAW,CACvB,CACD,EACF,IAAA8B,MAAA,CAAAC,aAAA,EAACxD,YAAA,CAAA8D,OAAW;IACXzC,MAAM,EAAG+B,OAAS;IAClBjC,IAAI,EAAGA,IAAM;IACbC,YAAY,EAAGA,YAAc;IAC7BQ,gBAAgB,EAAGA;EAAkB,CACrC,CACM,CAAC,EACT,IAAA2B,MAAA,CAAAC,aAAA,EAACV,aAAa;IACbzB,MAAM,EAAG+B,OAAS;IAClBjC,IAAI,EAAGA,IAAM;IACbC,YAAY,EAAGA,YAAc;IAC7BT,OAAO,EAAGA,OAAS;IACnBC,IAAI,EAAGA,IAAM;IACba,SAAS,EAAGA,SAAW;IACvBC,SAAS,EAAGA,SAAW;IACvBG,iBAAiB,EAAGa,cAAgB;IACpCZ,eAAe,EAAGA,eAAiB;IACnCE,SAAS,EAAGA,SAAW;IACvBD,iBAAiB,EAAGA,iBAAmB;IACvCK,eAAe,EAAGA;EAAiB,CACnC,CAAC,EACF,IAAAmB,MAAA,CAAAC,aAAA,EAAC1D,WAAA,CAAAgE,OAAU;IACV3C,IAAI,EAAGA,IAAM;IACbC,YAAY,EAAGA,YAAc;IAC7BO,cAAc,EAAGA;EAAgB,CACjC,CACG,CAAC;AAER"}
@@ -0,0 +1,147 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.filterSortAndPaginate = filterSortAndPaginate;
8
+ var _removeAccents = _interopRequireDefault(require("remove-accents"));
9
+ var _constants = require("./constants");
10
+ var _normalizeFields = require("./normalize-fields");
11
+ /**
12
+ * External dependencies
13
+ */
14
+
15
+ /**
16
+ * Internal dependencies
17
+ */
18
+
19
+ function normalizeSearchInput(input = '') {
20
+ return (0, _removeAccents.default)(input.trim().toLowerCase());
21
+ }
22
+ const EMPTY_ARRAY = [];
23
+
24
+ /**
25
+ * Applies the filtering, sorting and pagination to the raw data based on the view configuration.
26
+ *
27
+ * @param {any[]} data Raw data.
28
+ * @param {Object} view View config.
29
+ * @param {Object[]} fields Fields config.
30
+ *
31
+ * @return {Object} { data: any[], paginationInfo: { totalItems: number, totalPages: number } }
32
+ */
33
+ function filterSortAndPaginate(data, view, fields) {
34
+ if (!data) {
35
+ return {
36
+ data: EMPTY_ARRAY,
37
+ paginationInfo: {
38
+ totalItems: 0,
39
+ totalPages: 0
40
+ }
41
+ };
42
+ }
43
+ const _fields = (0, _normalizeFields.normalizeFields)(fields);
44
+ let filteredData = [...data];
45
+ // Handle global search.
46
+ if (view.search) {
47
+ const normalizedSearch = normalizeSearchInput(view.search);
48
+ filteredData = filteredData.filter(item => {
49
+ return _fields.filter(field => field.enableGlobalSearch).map(field => {
50
+ return normalizeSearchInput(field.getValue({
51
+ item
52
+ }));
53
+ }).some(field => field.includes(normalizedSearch));
54
+ });
55
+ }
56
+ if (view.filters.length > 0) {
57
+ view.filters.forEach(filter => {
58
+ const field = _fields.find(_field => _field.id === filter.field);
59
+ if (filter.operator === _constants.OPERATOR_IS_ANY && filter?.value?.length > 0) {
60
+ filteredData = filteredData.filter(item => {
61
+ const fieldValue = field.getValue({
62
+ item
63
+ });
64
+ if (Array.isArray(fieldValue)) {
65
+ return filter.value.some(filterValue => fieldValue.includes(filterValue));
66
+ } else if (typeof fieldValue === 'string') {
67
+ return filter.value.includes(fieldValue);
68
+ }
69
+ return false;
70
+ });
71
+ } else if (filter.operator === _constants.OPERATOR_IS_NONE && filter?.value?.length > 0) {
72
+ filteredData = filteredData.filter(item => {
73
+ const fieldValue = field.getValue({
74
+ item
75
+ });
76
+ if (Array.isArray(fieldValue)) {
77
+ return !filter.value.some(filterValue => fieldValue.includes(filterValue));
78
+ } else if (typeof fieldValue === 'string') {
79
+ return !filter.value.includes(fieldValue);
80
+ }
81
+ return false;
82
+ });
83
+ } else if (filter.operator === _constants.OPERATOR_IS_ALL && filter?.value?.length > 0) {
84
+ filteredData = filteredData.filter(item => {
85
+ return filter.value.every(value => {
86
+ return field.getValue({
87
+ item
88
+ }).includes(value);
89
+ });
90
+ });
91
+ } else if (filter.operator === _constants.OPERATOR_IS_NOT_ALL && filter?.value?.length > 0) {
92
+ filteredData = filteredData.filter(item => {
93
+ return filter.value.every(value => {
94
+ return !field.getValue({
95
+ item
96
+ }).includes(value);
97
+ });
98
+ });
99
+ } else if (filter.operator === _constants.OPERATOR_IS) {
100
+ filteredData = filteredData.filter(item => {
101
+ return filter.value === field.getValue({
102
+ item
103
+ });
104
+ });
105
+ } else if (filter.operator === _constants.OPERATOR_IS_NOT) {
106
+ filteredData = filteredData.filter(item => {
107
+ return filter.value !== field.getValue({
108
+ item
109
+ });
110
+ });
111
+ }
112
+ });
113
+ }
114
+
115
+ // Handle sorting.
116
+ if (view.sort) {
117
+ const fieldId = view.sort.field;
118
+ const fieldToSort = _fields.find(field => {
119
+ return field.id === fieldId;
120
+ });
121
+ filteredData.sort((a, b) => {
122
+ var _fieldToSort$getValue, _fieldToSort$getValue2;
123
+ const valueA = (_fieldToSort$getValue = fieldToSort.getValue({
124
+ item: a
125
+ })) !== null && _fieldToSort$getValue !== void 0 ? _fieldToSort$getValue : '';
126
+ const valueB = (_fieldToSort$getValue2 = fieldToSort.getValue({
127
+ item: b
128
+ })) !== null && _fieldToSort$getValue2 !== void 0 ? _fieldToSort$getValue2 : '';
129
+ return view.sort.direction === 'asc' ? valueA.localeCompare(valueB) : valueB.localeCompare(valueA);
130
+ });
131
+ }
132
+
133
+ // Handle pagination.
134
+ const hasPagination = view.page && view.perPage;
135
+ const start = hasPagination ? (view.page - 1) * view.perPage : 0;
136
+ const totalItems = filteredData?.length || 0;
137
+ const totalPages = hasPagination ? Math.ceil(totalItems / view.perPage) : 1;
138
+ filteredData = hasPagination ? filteredData?.slice(start, start + view.perPage) : filteredData;
139
+ return {
140
+ data: filteredData,
141
+ paginationInfo: {
142
+ totalItems,
143
+ totalPages
144
+ }
145
+ };
146
+ }
147
+ //# sourceMappingURL=filter-and-sort-data-view.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_removeAccents","_interopRequireDefault","require","_constants","_normalizeFields","normalizeSearchInput","input","removeAccents","trim","toLowerCase","EMPTY_ARRAY","filterSortAndPaginate","data","view","fields","paginationInfo","totalItems","totalPages","_fields","normalizeFields","filteredData","search","normalizedSearch","filter","item","field","enableGlobalSearch","map","getValue","some","includes","filters","length","forEach","find","_field","id","operator","OPERATOR_IS_ANY","value","fieldValue","Array","isArray","filterValue","OPERATOR_IS_NONE","OPERATOR_IS_ALL","every","OPERATOR_IS_NOT_ALL","OPERATOR_IS","OPERATOR_IS_NOT","sort","fieldId","fieldToSort","a","b","_fieldToSort$getValue","_fieldToSort$getValue2","valueA","valueB","direction","localeCompare","hasPagination","page","perPage","start","Math","ceil","slice"],"sources":["@wordpress/dataviews/src/filter-and-sort-data-view.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport removeAccents from 'remove-accents';\n\n/**\n * Internal dependencies\n */\nimport {\n\tOPERATOR_IS,\n\tOPERATOR_IS_NOT,\n\tOPERATOR_IS_NONE,\n\tOPERATOR_IS_ANY,\n\tOPERATOR_IS_ALL,\n\tOPERATOR_IS_NOT_ALL,\n} from './constants';\nimport { normalizeFields } from './normalize-fields';\n\nfunction normalizeSearchInput( input = '' ) {\n\treturn removeAccents( input.trim().toLowerCase() );\n}\n\nconst EMPTY_ARRAY = [];\n\n/**\n * Applies the filtering, sorting and pagination to the raw data based on the view configuration.\n *\n * @param {any[]} data Raw data.\n * @param {Object} view View config.\n * @param {Object[]} fields Fields config.\n *\n * @return {Object} { data: any[], paginationInfo: { totalItems: number, totalPages: number } }\n */\nexport function filterSortAndPaginate( data, view, fields ) {\n\tif ( ! data ) {\n\t\treturn {\n\t\t\tdata: EMPTY_ARRAY,\n\t\t\tpaginationInfo: { totalItems: 0, totalPages: 0 },\n\t\t};\n\t}\n\tconst _fields = normalizeFields( fields );\n\tlet filteredData = [ ...data ];\n\t// Handle global search.\n\tif ( view.search ) {\n\t\tconst normalizedSearch = normalizeSearchInput( view.search );\n\t\tfilteredData = filteredData.filter( ( item ) => {\n\t\t\treturn _fields\n\t\t\t\t.filter( ( field ) => field.enableGlobalSearch )\n\t\t\t\t.map( ( field ) => {\n\t\t\t\t\treturn normalizeSearchInput( field.getValue( { item } ) );\n\t\t\t\t} )\n\t\t\t\t.some( ( field ) => field.includes( normalizedSearch ) );\n\t\t} );\n\t}\n\n\tif ( view.filters.length > 0 ) {\n\t\tview.filters.forEach( ( filter ) => {\n\t\t\tconst field = _fields.find(\n\t\t\t\t( _field ) => _field.id === filter.field\n\t\t\t);\n\t\t\tif (\n\t\t\t\tfilter.operator === OPERATOR_IS_ANY &&\n\t\t\t\tfilter?.value?.length > 0\n\t\t\t) {\n\t\t\t\tfilteredData = filteredData.filter( ( item ) => {\n\t\t\t\t\tconst fieldValue = field.getValue( { item } );\n\t\t\t\t\tif ( Array.isArray( fieldValue ) ) {\n\t\t\t\t\t\treturn filter.value.some( ( filterValue ) =>\n\t\t\t\t\t\t\tfieldValue.includes( filterValue )\n\t\t\t\t\t\t);\n\t\t\t\t\t} else if ( typeof fieldValue === 'string' ) {\n\t\t\t\t\t\treturn filter.value.includes( fieldValue );\n\t\t\t\t\t}\n\t\t\t\t\treturn false;\n\t\t\t\t} );\n\t\t\t} else if (\n\t\t\t\tfilter.operator === OPERATOR_IS_NONE &&\n\t\t\t\tfilter?.value?.length > 0\n\t\t\t) {\n\t\t\t\tfilteredData = filteredData.filter( ( item ) => {\n\t\t\t\t\tconst fieldValue = field.getValue( { item } );\n\t\t\t\t\tif ( Array.isArray( fieldValue ) ) {\n\t\t\t\t\t\treturn ! filter.value.some( ( filterValue ) =>\n\t\t\t\t\t\t\tfieldValue.includes( filterValue )\n\t\t\t\t\t\t);\n\t\t\t\t\t} else if ( typeof fieldValue === 'string' ) {\n\t\t\t\t\t\treturn ! filter.value.includes( fieldValue );\n\t\t\t\t\t}\n\t\t\t\t\treturn false;\n\t\t\t\t} );\n\t\t\t} else if (\n\t\t\t\tfilter.operator === OPERATOR_IS_ALL &&\n\t\t\t\tfilter?.value?.length > 0\n\t\t\t) {\n\t\t\t\tfilteredData = filteredData.filter( ( item ) => {\n\t\t\t\t\treturn filter.value.every( ( value ) => {\n\t\t\t\t\t\treturn field.getValue( { item } ).includes( value );\n\t\t\t\t\t} );\n\t\t\t\t} );\n\t\t\t} else if (\n\t\t\t\tfilter.operator === OPERATOR_IS_NOT_ALL &&\n\t\t\t\tfilter?.value?.length > 0\n\t\t\t) {\n\t\t\t\tfilteredData = filteredData.filter( ( item ) => {\n\t\t\t\t\treturn filter.value.every( ( value ) => {\n\t\t\t\t\t\treturn ! field.getValue( { item } ).includes( value );\n\t\t\t\t\t} );\n\t\t\t\t} );\n\t\t\t} else if ( filter.operator === OPERATOR_IS ) {\n\t\t\t\tfilteredData = filteredData.filter( ( item ) => {\n\t\t\t\t\treturn filter.value === field.getValue( { item } );\n\t\t\t\t} );\n\t\t\t} else if ( filter.operator === OPERATOR_IS_NOT ) {\n\t\t\t\tfilteredData = filteredData.filter( ( item ) => {\n\t\t\t\t\treturn filter.value !== field.getValue( { item } );\n\t\t\t\t} );\n\t\t\t}\n\t\t} );\n\t}\n\n\t// Handle sorting.\n\tif ( view.sort ) {\n\t\tconst fieldId = view.sort.field;\n\t\tconst fieldToSort = _fields.find( ( field ) => {\n\t\t\treturn field.id === fieldId;\n\t\t} );\n\t\tfilteredData.sort( ( a, b ) => {\n\t\t\tconst valueA = fieldToSort.getValue( { item: a } ) ?? '';\n\t\t\tconst valueB = fieldToSort.getValue( { item: b } ) ?? '';\n\t\t\treturn view.sort.direction === 'asc'\n\t\t\t\t? valueA.localeCompare( valueB )\n\t\t\t\t: valueB.localeCompare( valueA );\n\t\t} );\n\t}\n\n\t// Handle pagination.\n\tconst hasPagination = view.page && view.perPage;\n\tconst start = hasPagination ? ( view.page - 1 ) * view.perPage : 0;\n\tconst totalItems = filteredData?.length || 0;\n\tconst totalPages = hasPagination\n\t\t? Math.ceil( totalItems / view.perPage )\n\t\t: 1;\n\tfilteredData = hasPagination\n\t\t? filteredData?.slice( start, start + view.perPage )\n\t\t: filteredData;\n\n\treturn {\n\t\tdata: filteredData,\n\t\tpaginationInfo: {\n\t\t\ttotalItems,\n\t\t\ttotalPages,\n\t\t},\n\t};\n}\n"],"mappings":"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"}
package/build/filters.js CHANGED
@@ -31,29 +31,23 @@ const Filters = (0, _element.memo)(function Filters({
31
31
  const addFilterRef = (0, _element.useRef)();
32
32
  const filters = [];
33
33
  fields.forEach(field => {
34
- if (!field.type) {
34
+ if (!field.elements?.length) {
35
35
  return;
36
36
  }
37
37
  const operators = (0, _utils.sanitizeOperators)(field);
38
38
  if (operators.length === 0) {
39
39
  return;
40
40
  }
41
- switch (field.type) {
42
- case _constants.ENUMERATION_TYPE:
43
- if (!field.elements?.length) {
44
- return;
45
- }
46
- const isPrimary = !!field.filterBy?.isPrimary;
47
- filters.push({
48
- field: field.id,
49
- name: field.header,
50
- elements: field.elements,
51
- singleSelection: operators.some(op => [_constants.OPERATOR_IS, _constants.OPERATOR_IS_NOT].includes(op)),
52
- operators,
53
- isVisible: isPrimary || view.filters.some(f => f.field === field.id && _constants.ALL_OPERATORS.includes(f.operator)),
54
- isPrimary
55
- });
56
- }
41
+ const isPrimary = !!field.filterBy?.isPrimary;
42
+ filters.push({
43
+ field: field.id,
44
+ name: field.header,
45
+ elements: field.elements,
46
+ singleSelection: operators.some(op => [_constants.OPERATOR_IS, _constants.OPERATOR_IS_NOT].includes(op)),
47
+ operators,
48
+ isVisible: isPrimary || view.filters.some(f => f.field === field.id && _constants.ALL_OPERATORS.includes(f.operator)),
49
+ isPrimary
50
+ });
57
51
  });
58
52
  // Sort filters by primary property. We need the primary filters to be first.
59
53
  // Then we sort by name.
@@ -1 +1 @@
1
- {"version":3,"names":["_element","require","_filterSummary","_interopRequireDefault","_addFilter","_resetFilters","_utils","_constants","_components","Filters","memo","fields","view","onChangeView","openedFilter","setOpenedFilter","addFilterRef","useRef","filters","forEach","field","type","operators","sanitizeOperators","length","ENUMERATION_TYPE","elements","isPrimary","filterBy","push","id","name","header","singleSelection","some","op","OPERATOR_IS","OPERATOR_IS_NOT","includes","isVisible","f","ALL_OPERATORS","operator","sort","a","b","localeCompare","addFilter","_react","createElement","default","key","ref","filterComponents","map","filter","__experimentalHStack","justify","style","width","wrap","_default","exports"],"sources":["@wordpress/dataviews/src/filters.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { memo, useRef } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport FilterSummary from './filter-summary';\nimport AddFilter from './add-filter';\nimport ResetFilters from './reset-filters';\nimport { sanitizeOperators } from './utils';\nimport {\n\tENUMERATION_TYPE,\n\tALL_OPERATORS,\n\tOPERATOR_IS,\n\tOPERATOR_IS_NOT,\n} from './constants';\nimport { __experimentalHStack as HStack } from '@wordpress/components';\n\nconst Filters = memo( function Filters( {\n\tfields,\n\tview,\n\tonChangeView,\n\topenedFilter,\n\tsetOpenedFilter,\n} ) {\n\tconst addFilterRef = useRef();\n\tconst filters = [];\n\tfields.forEach( ( field ) => {\n\t\tif ( ! field.type ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst operators = sanitizeOperators( field );\n\t\tif ( operators.length === 0 ) {\n\t\t\treturn;\n\t\t}\n\n\t\tswitch ( field.type ) {\n\t\t\tcase ENUMERATION_TYPE:\n\t\t\t\tif ( ! field.elements?.length ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst isPrimary = !! field.filterBy?.isPrimary;\n\t\t\t\tfilters.push( {\n\t\t\t\t\tfield: field.id,\n\t\t\t\t\tname: field.header,\n\t\t\t\t\telements: field.elements,\n\t\t\t\t\tsingleSelection: operators.some( ( op ) =>\n\t\t\t\t\t\t[ OPERATOR_IS, OPERATOR_IS_NOT ].includes( op )\n\t\t\t\t\t),\n\t\t\t\t\toperators,\n\t\t\t\t\tisVisible:\n\t\t\t\t\t\tisPrimary ||\n\t\t\t\t\t\tview.filters.some(\n\t\t\t\t\t\t\t( f ) =>\n\t\t\t\t\t\t\t\tf.field === field.id &&\n\t\t\t\t\t\t\t\tALL_OPERATORS.includes( f.operator )\n\t\t\t\t\t\t),\n\t\t\t\t\tisPrimary,\n\t\t\t\t} );\n\t\t}\n\t} );\n\t// Sort filters by primary property. We need the primary filters to be first.\n\t// Then we sort by name.\n\tfilters.sort( ( a, b ) => {\n\t\tif ( a.isPrimary && ! b.isPrimary ) {\n\t\t\treturn -1;\n\t\t}\n\t\tif ( ! a.isPrimary && b.isPrimary ) {\n\t\t\treturn 1;\n\t\t}\n\t\treturn a.name.localeCompare( b.name );\n\t} );\n\tconst addFilter = (\n\t\t<AddFilter\n\t\t\tkey=\"add-filter\"\n\t\t\tfilters={ filters }\n\t\t\tview={ view }\n\t\t\tonChangeView={ onChangeView }\n\t\t\tref={ addFilterRef }\n\t\t\tsetOpenedFilter={ setOpenedFilter }\n\t\t/>\n\t);\n\tconst filterComponents = [\n\t\t...filters.map( ( filter ) => {\n\t\t\tif ( ! filter.isVisible ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\treturn (\n\t\t\t\t<FilterSummary\n\t\t\t\t\tkey={ filter.field }\n\t\t\t\t\tfilter={ filter }\n\t\t\t\t\tview={ view }\n\t\t\t\t\tonChangeView={ onChangeView }\n\t\t\t\t\taddFilterRef={ addFilterRef }\n\t\t\t\t\topenedFilter={ openedFilter }\n\t\t\t\t/>\n\t\t\t);\n\t\t} ),\n\t\taddFilter,\n\t];\n\n\tif ( filterComponents.length > 1 ) {\n\t\tfilterComponents.push(\n\t\t\t<ResetFilters\n\t\t\t\tkey=\"reset-filters\"\n\t\t\t\tfilters={ filters }\n\t\t\t\tview={ view }\n\t\t\t\tonChangeView={ onChangeView }\n\t\t\t/>\n\t\t);\n\t}\n\n\treturn (\n\t\t<HStack justify=\"flex-start\" style={ { width: 'fit-content' } } wrap>\n\t\t\t{ filterComponents }\n\t\t</HStack>\n\t);\n} );\n\nexport default Filters;\n"],"mappings":"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"}
1
+ {"version":3,"names":["_element","require","_filterSummary","_interopRequireDefault","_addFilter","_resetFilters","_utils","_constants","_components","Filters","memo","fields","view","onChangeView","openedFilter","setOpenedFilter","addFilterRef","useRef","filters","forEach","field","elements","length","operators","sanitizeOperators","isPrimary","filterBy","push","id","name","header","singleSelection","some","op","OPERATOR_IS","OPERATOR_IS_NOT","includes","isVisible","f","ALL_OPERATORS","operator","sort","a","b","localeCompare","addFilter","_react","createElement","default","key","ref","filterComponents","map","filter","__experimentalHStack","justify","style","width","wrap","_default","exports"],"sources":["@wordpress/dataviews/src/filters.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { memo, useRef } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport FilterSummary from './filter-summary';\nimport AddFilter from './add-filter';\nimport ResetFilters from './reset-filters';\nimport { sanitizeOperators } from './utils';\nimport { ALL_OPERATORS, OPERATOR_IS, OPERATOR_IS_NOT } from './constants';\nimport { __experimentalHStack as HStack } from '@wordpress/components';\n\nconst Filters = memo( function Filters( {\n\tfields,\n\tview,\n\tonChangeView,\n\topenedFilter,\n\tsetOpenedFilter,\n} ) {\n\tconst addFilterRef = useRef();\n\tconst filters = [];\n\tfields.forEach( ( field ) => {\n\t\tif ( ! field.elements?.length ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst operators = sanitizeOperators( field );\n\t\tif ( operators.length === 0 ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst isPrimary = !! field.filterBy?.isPrimary;\n\t\tfilters.push( {\n\t\t\tfield: field.id,\n\t\t\tname: field.header,\n\t\t\telements: field.elements,\n\t\t\tsingleSelection: operators.some( ( op ) =>\n\t\t\t\t[ OPERATOR_IS, OPERATOR_IS_NOT ].includes( op )\n\t\t\t),\n\t\t\toperators,\n\t\t\tisVisible:\n\t\t\t\tisPrimary ||\n\t\t\t\tview.filters.some(\n\t\t\t\t\t( f ) =>\n\t\t\t\t\t\tf.field === field.id &&\n\t\t\t\t\t\tALL_OPERATORS.includes( f.operator )\n\t\t\t\t),\n\t\t\tisPrimary,\n\t\t} );\n\t} );\n\t// Sort filters by primary property. We need the primary filters to be first.\n\t// Then we sort by name.\n\tfilters.sort( ( a, b ) => {\n\t\tif ( a.isPrimary && ! b.isPrimary ) {\n\t\t\treturn -1;\n\t\t}\n\t\tif ( ! a.isPrimary && b.isPrimary ) {\n\t\t\treturn 1;\n\t\t}\n\t\treturn a.name.localeCompare( b.name );\n\t} );\n\tconst addFilter = (\n\t\t<AddFilter\n\t\t\tkey=\"add-filter\"\n\t\t\tfilters={ filters }\n\t\t\tview={ view }\n\t\t\tonChangeView={ onChangeView }\n\t\t\tref={ addFilterRef }\n\t\t\tsetOpenedFilter={ setOpenedFilter }\n\t\t/>\n\t);\n\tconst filterComponents = [\n\t\t...filters.map( ( filter ) => {\n\t\t\tif ( ! filter.isVisible ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\treturn (\n\t\t\t\t<FilterSummary\n\t\t\t\t\tkey={ filter.field }\n\t\t\t\t\tfilter={ filter }\n\t\t\t\t\tview={ view }\n\t\t\t\t\tonChangeView={ onChangeView }\n\t\t\t\t\taddFilterRef={ addFilterRef }\n\t\t\t\t\topenedFilter={ openedFilter }\n\t\t\t\t/>\n\t\t\t);\n\t\t} ),\n\t\taddFilter,\n\t];\n\n\tif ( filterComponents.length > 1 ) {\n\t\tfilterComponents.push(\n\t\t\t<ResetFilters\n\t\t\t\tkey=\"reset-filters\"\n\t\t\t\tfilters={ filters }\n\t\t\t\tview={ view }\n\t\t\t\tonChangeView={ onChangeView }\n\t\t\t/>\n\t\t);\n\t}\n\n\treturn (\n\t\t<HStack justify=\"flex-start\" style={ { width: 'fit-content' } } wrap>\n\t\t\t{ filterComponents }\n\t\t</HStack>\n\t);\n} );\n\nexport default Filters;\n"],"mappings":"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"}
package/build/index.js CHANGED
@@ -16,19 +16,13 @@ Object.defineProperty(exports, "VIEW_LAYOUTS", {
16
16
  return _constants.VIEW_LAYOUTS;
17
17
  }
18
18
  });
19
- Object.defineProperty(exports, "getPaginationResults", {
19
+ Object.defineProperty(exports, "filterSortAndPaginate", {
20
20
  enumerable: true,
21
21
  get: function () {
22
- return _utils.getPaginationResults;
23
- }
24
- });
25
- Object.defineProperty(exports, "sortByTextFields", {
26
- enumerable: true,
27
- get: function () {
28
- return _utils.sortByTextFields;
22
+ return _filterAndSortDataView.filterSortAndPaginate;
29
23
  }
30
24
  });
31
25
  var _dataviews = _interopRequireDefault(require("./dataviews"));
32
- var _utils = require("./utils");
33
26
  var _constants = require("./constants");
27
+ var _filterAndSortDataView = require("./filter-and-sort-data-view");
34
28
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_dataviews","_interopRequireDefault","require","_utils","_constants"],"sources":["@wordpress/dataviews/src/index.js"],"sourcesContent":["export { default as DataViews } from './dataviews';\nexport { sortByTextFields, getPaginationResults } from './utils';\nexport { VIEW_LAYOUTS } from './constants';\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,UAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,MAAA,GAAAD,OAAA;AACA,IAAAE,UAAA,GAAAF,OAAA"}
1
+ {"version":3,"names":["_dataviews","_interopRequireDefault","require","_constants","_filterAndSortDataView"],"sources":["@wordpress/dataviews/src/index.js"],"sourcesContent":["export { default as DataViews } from './dataviews';\nexport { VIEW_LAYOUTS } from './constants';\nexport { filterSortAndPaginate } from './filter-and-sort-data-view';\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,UAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,UAAA,GAAAD,OAAA;AACA,IAAAE,sBAAA,GAAAF,OAAA"}
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.normalizeFields = normalizeFields;
7
+ /**
8
+ * Apply default values and normalize the fields config.
9
+ *
10
+ * @param {Object[]} fields Raw Fields.
11
+ * @return {Object[]} Normalized fields.
12
+ */
13
+ function normalizeFields(fields) {
14
+ return fields.map(field => {
15
+ const getValue = field.getValue || (({
16
+ item
17
+ }) => item[field.id]);
18
+ return {
19
+ ...field,
20
+ getValue,
21
+ render: field.render || getValue
22
+ };
23
+ });
24
+ }
25
+ //# sourceMappingURL=normalize-fields.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["normalizeFields","fields","map","field","getValue","item","id","render"],"sources":["@wordpress/dataviews/src/normalize-fields.js"],"sourcesContent":["/**\n * Apply default values and normalize the fields config.\n *\n * @param {Object[]} fields Raw Fields.\n * @return {Object[]} Normalized fields.\n */\nexport function normalizeFields( fields ) {\n\treturn fields.map( ( field ) => {\n\t\tconst getValue = field.getValue || ( ( { item } ) => item[ field.id ] );\n\n\t\treturn {\n\t\t\t...field,\n\t\t\tgetValue,\n\t\t\trender: field.render || getValue,\n\t\t};\n\t} );\n}\n"],"mappings":";;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACO,SAASA,eAAeA,CAAEC,MAAM,EAAG;EACzC,OAAOA,MAAM,CAACC,GAAG,CAAIC,KAAK,IAAM;IAC/B,MAAMC,QAAQ,GAAGD,KAAK,CAACC,QAAQ,KAAM,CAAE;MAAEC;IAAK,CAAC,KAAMA,IAAI,CAAEF,KAAK,CAACG,EAAE,CAAE,CAAE;IAEvE,OAAO;MACN,GAAGH,KAAK;MACRC,QAAQ;MACRG,MAAM,EAAEJ,KAAK,CAACI,MAAM,IAAIH;IACzB,CAAC;EACF,CAAE,CAAC;AACJ"}
package/build/utils.js CHANGED
@@ -3,76 +3,12 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.getPaginationResults = getPaginationResults;
7
- exports.sortByTextFields = exports.sanitizeOperators = void 0;
6
+ exports.sanitizeOperators = void 0;
8
7
  var _constants = require("./constants");
9
8
  /**
10
9
  * Internal dependencies
11
10
  */
12
11
 
13
- /**
14
- * Helper util to sort data by text fields, when sorting is done client side.
15
- *
16
- * @param {Object} params Function params.
17
- * @param {Object[]} params.data Data to sort.
18
- * @param {Object} params.view Current view object.
19
- * @param {Object[]} params.fields Array of available fields.
20
- * @param {string[]} params.textFields Array of the field ids to sort.
21
- *
22
- * @return {Object[]} Sorted data.
23
- */
24
- const sortByTextFields = ({
25
- data,
26
- view,
27
- fields,
28
- textFields
29
- }) => {
30
- const sortedData = [...data];
31
- const fieldId = view.sort.field;
32
- if (textFields.includes(fieldId)) {
33
- const fieldToSort = fields.find(field => {
34
- return field.id === fieldId;
35
- });
36
- sortedData.sort((a, b) => {
37
- var _fieldToSort$getValue, _fieldToSort$getValue2;
38
- const valueA = (_fieldToSort$getValue = fieldToSort.getValue({
39
- item: a
40
- })) !== null && _fieldToSort$getValue !== void 0 ? _fieldToSort$getValue : '';
41
- const valueB = (_fieldToSort$getValue2 = fieldToSort.getValue({
42
- item: b
43
- })) !== null && _fieldToSort$getValue2 !== void 0 ? _fieldToSort$getValue2 : '';
44
- return view.sort.direction === 'asc' ? valueA.localeCompare(valueB) : valueB.localeCompare(valueA);
45
- });
46
- }
47
- return sortedData;
48
- };
49
-
50
- /**
51
- * Helper util to get the paginated data and the paginateInfo needed,
52
- * when pagination is done client side.
53
- *
54
- * @param {Object} params Function params.
55
- * @param {Object[]} params.data Available data.
56
- * @param {Object} params.view Current view object.
57
- *
58
- * @return {Object} Paginated data and paginationInfo.
59
- */
60
- exports.sortByTextFields = sortByTextFields;
61
- function getPaginationResults({
62
- data,
63
- view
64
- }) {
65
- const start = (view.page - 1) * view.perPage;
66
- const totalItems = data?.length || 0;
67
- data = data?.slice(start, start + view.perPage);
68
- return {
69
- data,
70
- paginationInfo: {
71
- totalItems,
72
- totalPages: Math.ceil(totalItems / view.perPage)
73
- }
74
- };
75
- }
76
12
  const sanitizeOperators = field => {
77
13
  let operators = field.filterBy?.operators;
78
14
 
@@ -1 +1 @@
1
- {"version":3,"names":["_constants","require","sortByTextFields","data","view","fields","textFields","sortedData","fieldId","sort","field","includes","fieldToSort","find","id","a","b","_fieldToSort$getValue","_fieldToSort$getValue2","valueA","getValue","item","valueB","direction","localeCompare","exports","getPaginationResults","start","page","perPage","totalItems","length","slice","paginationInfo","totalPages","Math","ceil","sanitizeOperators","operators","filterBy","Array","isArray","OPERATOR_IS_ANY","OPERATOR_IS_NONE","filter","operator","push","ALL_OPERATORS","OPERATOR_IS","OPERATOR_IS_NOT"],"sources":["@wordpress/dataviews/src/utils.js"],"sourcesContent":["/**\n * Internal dependencies\n */\nimport {\n\tALL_OPERATORS,\n\tOPERATOR_IS,\n\tOPERATOR_IS_NOT,\n\tOPERATOR_IS_ANY,\n\tOPERATOR_IS_NONE,\n} from './constants';\n\n/**\n * Helper util to sort data by text fields, when sorting is done client side.\n *\n * @param {Object} params Function params.\n * @param {Object[]} params.data Data to sort.\n * @param {Object} params.view Current view object.\n * @param {Object[]} params.fields Array of available fields.\n * @param {string[]} params.textFields Array of the field ids to sort.\n *\n * @return {Object[]} Sorted data.\n */\nexport const sortByTextFields = ( { data, view, fields, textFields } ) => {\n\tconst sortedData = [ ...data ];\n\tconst fieldId = view.sort.field;\n\tif ( textFields.includes( fieldId ) ) {\n\t\tconst fieldToSort = fields.find( ( field ) => {\n\t\t\treturn field.id === fieldId;\n\t\t} );\n\t\tsortedData.sort( ( a, b ) => {\n\t\t\tconst valueA = fieldToSort.getValue( { item: a } ) ?? '';\n\t\t\tconst valueB = fieldToSort.getValue( { item: b } ) ?? '';\n\t\t\treturn view.sort.direction === 'asc'\n\t\t\t\t? valueA.localeCompare( valueB )\n\t\t\t\t: valueB.localeCompare( valueA );\n\t\t} );\n\t}\n\treturn sortedData;\n};\n\n/**\n * Helper util to get the paginated data and the paginateInfo needed,\n * when pagination is done client side.\n *\n * @param {Object} params Function params.\n * @param {Object[]} params.data Available data.\n * @param {Object} params.view Current view object.\n *\n * @return {Object} Paginated data and paginationInfo.\n */\nexport function getPaginationResults( { data, view } ) {\n\tconst start = ( view.page - 1 ) * view.perPage;\n\tconst totalItems = data?.length || 0;\n\tdata = data?.slice( start, start + view.perPage );\n\treturn {\n\t\tdata,\n\t\tpaginationInfo: {\n\t\t\ttotalItems,\n\t\t\ttotalPages: Math.ceil( totalItems / view.perPage ),\n\t\t},\n\t};\n}\n\nexport const sanitizeOperators = ( field ) => {\n\tlet operators = field.filterBy?.operators;\n\n\t// Assign default values.\n\tif ( ! operators || ! Array.isArray( operators ) ) {\n\t\toperators = [ OPERATOR_IS_ANY, OPERATOR_IS_NONE ];\n\t}\n\n\t// Transform legacy in, notIn operators to is, isNot.\n\t// To be removed in the future.\n\tif ( operators.includes( 'in' ) ) {\n\t\toperators = operators.filter( ( operator ) => operator !== 'is' );\n\t\toperators.push( 'is' );\n\t}\n\tif ( operators.includes( 'notIn' ) ) {\n\t\toperators = operators.filter( ( operator ) => operator !== 'notIn' );\n\t\toperators.push( 'isNot' );\n\t}\n\n\t// Make sure only valid operators are used.\n\toperators = operators.filter( ( operator ) =>\n\t\tALL_OPERATORS.includes( operator )\n\t);\n\n\t// Do not allow mixing single & multiselection operators.\n\t// Remove multiselection operators if any of the single selection ones is present.\n\tif (\n\t\toperators.includes( OPERATOR_IS ) ||\n\t\toperators.includes( OPERATOR_IS_NOT )\n\t) {\n\t\toperators = operators.filter( ( operator ) =>\n\t\t\t[ OPERATOR_IS, OPERATOR_IS_NOT ].includes( operator )\n\t\t);\n\t}\n\n\treturn operators;\n};\n"],"mappings":"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"}
1
+ {"version":3,"names":["_constants","require","sanitizeOperators","field","operators","filterBy","Array","isArray","OPERATOR_IS_ANY","OPERATOR_IS_NONE","includes","filter","operator","push","ALL_OPERATORS","OPERATOR_IS","OPERATOR_IS_NOT","exports"],"sources":["@wordpress/dataviews/src/utils.js"],"sourcesContent":["/**\n * Internal dependencies\n */\nimport {\n\tALL_OPERATORS,\n\tOPERATOR_IS,\n\tOPERATOR_IS_NOT,\n\tOPERATOR_IS_ANY,\n\tOPERATOR_IS_NONE,\n} from './constants';\n\nexport const sanitizeOperators = ( field ) => {\n\tlet operators = field.filterBy?.operators;\n\n\t// Assign default values.\n\tif ( ! operators || ! Array.isArray( operators ) ) {\n\t\toperators = [ OPERATOR_IS_ANY, OPERATOR_IS_NONE ];\n\t}\n\n\t// Transform legacy in, notIn operators to is, isNot.\n\t// To be removed in the future.\n\tif ( operators.includes( 'in' ) ) {\n\t\toperators = operators.filter( ( operator ) => operator !== 'is' );\n\t\toperators.push( 'is' );\n\t}\n\tif ( operators.includes( 'notIn' ) ) {\n\t\toperators = operators.filter( ( operator ) => operator !== 'notIn' );\n\t\toperators.push( 'isNot' );\n\t}\n\n\t// Make sure only valid operators are used.\n\toperators = operators.filter( ( operator ) =>\n\t\tALL_OPERATORS.includes( operator )\n\t);\n\n\t// Do not allow mixing single & multiselection operators.\n\t// Remove multiselection operators if any of the single selection ones is present.\n\tif (\n\t\toperators.includes( OPERATOR_IS ) ||\n\t\toperators.includes( OPERATOR_IS_NOT )\n\t) {\n\t\toperators = operators.filter( ( operator ) =>\n\t\t\t[ OPERATOR_IS, OPERATOR_IS_NOT ].includes( operator )\n\t\t);\n\t}\n\n\treturn operators;\n};\n"],"mappings":";;;;;;AAGA,IAAAA,UAAA,GAAAC,OAAA;AAHA;AACA;AACA;;AASO,MAAMC,iBAAiB,GAAKC,KAAK,IAAM;EAC7C,IAAIC,SAAS,GAAGD,KAAK,CAACE,QAAQ,EAAED,SAAS;;EAEzC;EACA,IAAK,CAAEA,SAAS,IAAI,CAAEE,KAAK,CAACC,OAAO,CAAEH,SAAU,CAAC,EAAG;IAClDA,SAAS,GAAG,CAAEI,0BAAe,EAAEC,2BAAgB,CAAE;EAClD;;EAEA;EACA;EACA,IAAKL,SAAS,CAACM,QAAQ,CAAE,IAAK,CAAC,EAAG;IACjCN,SAAS,GAAGA,SAAS,CAACO,MAAM,CAAIC,QAAQ,IAAMA,QAAQ,KAAK,IAAK,CAAC;IACjER,SAAS,CAACS,IAAI,CAAE,IAAK,CAAC;EACvB;EACA,IAAKT,SAAS,CAACM,QAAQ,CAAE,OAAQ,CAAC,EAAG;IACpCN,SAAS,GAAGA,SAAS,CAACO,MAAM,CAAIC,QAAQ,IAAMA,QAAQ,KAAK,OAAQ,CAAC;IACpER,SAAS,CAACS,IAAI,CAAE,OAAQ,CAAC;EAC1B;;EAEA;EACAT,SAAS,GAAGA,SAAS,CAACO,MAAM,CAAIC,QAAQ,IACvCE,wBAAa,CAACJ,QAAQ,CAAEE,QAAS,CAClC,CAAC;;EAED;EACA;EACA,IACCR,SAAS,CAACM,QAAQ,CAAEK,sBAAY,CAAC,IACjCX,SAAS,CAACM,QAAQ,CAAEM,0BAAgB,CAAC,EACpC;IACDZ,SAAS,GAAGA,SAAS,CAACO,MAAM,CAAIC,QAAQ,IACvC,CAAEG,sBAAW,EAAEC,0BAAe,CAAE,CAACN,QAAQ,CAAEE,QAAS,CACrD,CAAC;EACF;EAEA,OAAOR,SAAS;AACjB,CAAC;AAACa,OAAA,CAAAf,iBAAA,GAAAA,iBAAA"}