@wordpress/dataviews 0.9.0 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (109) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/README.md +0 -8
  3. package/build/add-filter.js.map +1 -1
  4. package/build/bulk-actions.js.map +1 -1
  5. package/build/constants.js +1 -26
  6. package/build/constants.js.map +1 -1
  7. package/build/dataviews.js +3 -6
  8. package/build/dataviews.js.map +1 -1
  9. package/build/dropdown-menu-helper.js.map +1 -1
  10. package/build/filter-and-sort-data-view.js +72 -65
  11. package/build/filter-and-sort-data-view.js.map +1 -1
  12. package/build/filter-summary.js +4 -2
  13. package/build/filter-summary.js.map +1 -1
  14. package/build/filters.js.map +1 -1
  15. package/build/index.js +2 -2
  16. package/build/index.js.map +1 -1
  17. package/build/item-actions.js.map +1 -1
  18. package/build/layouts.js +38 -0
  19. package/build/layouts.js.map +1 -0
  20. package/build/lock-unlock.js.map +1 -1
  21. package/build/normalize-fields.js +7 -2
  22. package/build/normalize-fields.js.map +1 -1
  23. package/build/pagination.js.map +1 -1
  24. package/build/reset-filters.js.map +1 -1
  25. package/build/search-widget.js +5 -4
  26. package/build/search-widget.js.map +1 -1
  27. package/build/search.js.map +1 -1
  28. package/build/single-selection-checkbox.js +1 -1
  29. package/build/single-selection-checkbox.js.map +1 -1
  30. package/build/types.js +6 -0
  31. package/build/types.js.map +1 -0
  32. package/build/utils.js.map +1 -1
  33. package/build/view-actions.js +2 -1
  34. package/build/view-actions.js.map +1 -1
  35. package/build/view-grid.js +43 -15
  36. package/build/view-grid.js.map +1 -1
  37. package/build/view-list.js +4 -22
  38. package/build/view-list.js.map +1 -1
  39. package/build/view-table.js +5 -11
  40. package/build/view-table.js.map +1 -1
  41. package/build-module/add-filter.js.map +1 -1
  42. package/build-module/bulk-actions.js.map +1 -1
  43. package/build-module/constants.js +1 -25
  44. package/build-module/constants.js.map +1 -1
  45. package/build-module/dataviews.js +3 -6
  46. package/build-module/dataviews.js.map +1 -1
  47. package/build-module/dropdown-menu-helper.js.map +1 -1
  48. package/build-module/filter-and-sort-data-view.js +72 -65
  49. package/build-module/filter-and-sort-data-view.js.map +1 -1
  50. package/build-module/filter-summary.js +3 -2
  51. package/build-module/filter-summary.js.map +1 -1
  52. package/build-module/filters.js.map +1 -1
  53. package/build-module/index.js +1 -1
  54. package/build-module/index.js.map +1 -1
  55. package/build-module/item-actions.js.map +1 -1
  56. package/build-module/layouts.js +30 -0
  57. package/build-module/layouts.js.map +1 -0
  58. package/build-module/lock-unlock.js.map +1 -1
  59. package/build-module/normalize-fields.js +7 -2
  60. package/build-module/normalize-fields.js.map +1 -1
  61. package/build-module/pagination.js.map +1 -1
  62. package/build-module/reset-filters.js.map +1 -1
  63. package/build-module/search-widget.js +4 -3
  64. package/build-module/search-widget.js.map +1 -1
  65. package/build-module/search.js.map +1 -1
  66. package/build-module/single-selection-checkbox.js +1 -1
  67. package/build-module/single-selection-checkbox.js.map +1 -1
  68. package/build-module/types.js +2 -0
  69. package/build-module/types.js.map +1 -0
  70. package/build-module/utils.js.map +1 -1
  71. package/build-module/view-actions.js +2 -1
  72. package/build-module/view-actions.js.map +1 -1
  73. package/build-module/view-grid.js +43 -15
  74. package/build-module/view-grid.js.map +1 -1
  75. package/build-module/view-list.js +6 -24
  76. package/build-module/view-list.js.map +1 -1
  77. package/build-module/view-table.js +5 -11
  78. package/build-module/view-table.js.map +1 -1
  79. package/build-style/style-rtl.css +60 -45
  80. package/build-style/style.css +60 -45
  81. package/build-types/constants.d.ts +45 -0
  82. package/build-types/constants.d.ts.map +1 -0
  83. package/build-types/filter-and-sort-data-view.d.ts +18 -0
  84. package/build-types/filter-and-sort-data-view.d.ts.map +1 -0
  85. package/build-types/normalize-fields.d.ts +12 -0
  86. package/build-types/normalize-fields.d.ts.map +1 -0
  87. package/build-types/types.d.ts +122 -0
  88. package/build-types/types.d.ts.map +1 -0
  89. package/package.json +11 -11
  90. package/src/{constants.js → constants.ts} +1 -35
  91. package/src/dataviews.js +2 -5
  92. package/src/filter-and-sort-data-view.ts +164 -0
  93. package/src/filter-summary.js +4 -4
  94. package/src/index.js +1 -1
  95. package/src/layouts.js +39 -0
  96. package/src/normalize-fields.ts +23 -0
  97. package/src/search-widget.js +4 -3
  98. package/src/single-selection-checkbox.js +1 -1
  99. package/src/stories/fixtures.js +0 -2
  100. package/src/style.scss +65 -51
  101. package/src/types.ts +144 -0
  102. package/src/view-actions.js +2 -1
  103. package/src/view-grid.js +91 -52
  104. package/src/view-list.js +4 -24
  105. package/src/view-table.js +7 -11
  106. package/tsconfig.json +20 -0
  107. package/tsconfig.tsbuildinfo +1 -0
  108. package/src/filter-and-sort-data-view.js +0 -154
  109. package/src/normalize-fields.js +0 -17
package/src/view-table.js CHANGED
@@ -7,7 +7,6 @@ import classnames from 'classnames';
7
7
  * WordPress dependencies
8
8
  */
9
9
  import { __ } from '@wordpress/i18n';
10
- import { useAsyncList } from '@wordpress/compose';
11
10
  import { unseen, funnel } from '@wordpress/icons';
12
11
  import {
13
12
  Button,
@@ -219,7 +218,9 @@ function BulkSelectionCheckbox( {
219
218
  onSelectionChange( selectableItems );
220
219
  }
221
220
  } }
222
- label={ areAllSelected ? __( 'Deselect all' ) : __( 'Select all' ) }
221
+ aria-label={
222
+ areAllSelected ? __( 'Deselect all' ) : __( 'Select all' )
223
+ }
223
224
  />
224
225
  );
225
226
  }
@@ -299,8 +300,7 @@ function TableRow( {
299
300
  <td
300
301
  className="dataviews-view-table__checkbox-column"
301
302
  style={ {
302
- width: 20,
303
- minWidth: 20,
303
+ width: '1%',
304
304
  } }
305
305
  >
306
306
  <div className="dataviews-view-table__cell-content-wrapper">
@@ -369,7 +369,6 @@ function ViewTable( {
369
369
  data,
370
370
  getItemId,
371
371
  isLoading = false,
372
- deferredRendering,
373
372
  selection,
374
373
  onSelectionChange,
375
374
  setOpenedFilter,
@@ -386,7 +385,6 @@ function ViewTable( {
386
385
  }
387
386
  } );
388
387
 
389
- const asyncData = useAsyncList( data );
390
388
  const tableNoticeId = useId();
391
389
 
392
390
  if ( nextHeaderMenuToFocus ) {
@@ -409,8 +407,7 @@ function ViewTable( {
409
407
  ! view.hiddenFields.includes( field.id ) &&
410
408
  ! [ view.layout.mediaField ].includes( field.id )
411
409
  );
412
- const usedData = deferredRendering ? asyncData : data;
413
- const hasData = !! usedData?.length;
410
+ const hasData = !! data?.length;
414
411
  const sortValues = { asc: 'ascending', desc: 'descending' };
415
412
 
416
413
  const primaryField = fields.find(
@@ -430,8 +427,7 @@ function ViewTable( {
430
427
  <th
431
428
  className="dataviews-view-table__checkbox-column"
432
429
  style={ {
433
- width: 20,
434
- minWidth: 20,
430
+ width: '1%',
435
431
  } }
436
432
  data-field-id="selection"
437
433
  scope="col"
@@ -502,7 +498,7 @@ function ViewTable( {
502
498
  </thead>
503
499
  <tbody>
504
500
  { hasData &&
505
- usedData.map( ( item, index ) => (
501
+ data.map( ( item, index ) => (
506
502
  <TableRow
507
503
  key={ getItemId( item ) }
508
504
  item={ item }
package/tsconfig.json ADDED
@@ -0,0 +1,20 @@
1
+ {
2
+ "$schema": "https://json.schemastore.org/tsconfig.json",
3
+ "extends": "../../tsconfig.base.json",
4
+ "compilerOptions": {
5
+ "rootDir": "src",
6
+ "declarationDir": "build-types"
7
+ },
8
+ "references": [
9
+ { "path": "../a11y" },
10
+ { "path": "../components" },
11
+ { "path": "../compose" },
12
+ { "path": "../element" },
13
+ { "path": "../i18n" },
14
+ { "path": "../icons" },
15
+ { "path": "../keycodes" },
16
+ { "path": "../primitives" },
17
+ { "path": "../private-apis" }
18
+ ],
19
+ "include": [ "src/**/*.ts", "src/**/*.tsx" ]
20
+ }
@@ -0,0 +1 @@
1
+ {"program":{"fileNames":["../../node_modules/typescript/lib/lib.es5.d.ts","../../node_modules/typescript/lib/lib.es2015.d.ts","../../node_modules/typescript/lib/lib.es2016.d.ts","../../node_modules/typescript/lib/lib.es2017.d.ts","../../node_modules/typescript/lib/lib.es2018.d.ts","../../node_modules/typescript/lib/lib.es2019.d.ts","../../node_modules/typescript/lib/lib.es2020.d.ts","../../node_modules/typescript/lib/lib.es2021.d.ts","../../node_modules/typescript/lib/lib.es2022.d.ts","../../node_modules/typescript/lib/lib.es2023.d.ts","../../node_modules/typescript/lib/lib.esnext.d.ts","../../node_modules/typescript/lib/lib.dom.d.ts","../../node_modules/typescript/lib/lib.es2015.core.d.ts","../../node_modules/typescript/lib/lib.es2015.collection.d.ts","../../node_modules/typescript/lib/lib.es2015.generator.d.ts","../../node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../node_modules/typescript/lib/lib.es2015.promise.d.ts","../../node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../node_modules/typescript/lib/lib.es2016.intl.d.ts","../../node_modules/typescript/lib/lib.es2017.date.d.ts","../../node_modules/typescript/lib/lib.es2017.object.d.ts","../../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../node_modules/typescript/lib/lib.es2017.string.d.ts","../../node_modules/typescript/lib/lib.es2017.intl.d.ts","../../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../node_modules/typescript/lib/lib.es2018.intl.d.ts","../../node_modules/typescript/lib/lib.es2018.promise.d.ts","../../node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../node_modules/typescript/lib/lib.es2019.array.d.ts","../../node_modules/typescript/lib/lib.es2019.object.d.ts","../../node_modules/typescript/lib/lib.es2019.string.d.ts","../../node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../node_modules/typescript/lib/lib.es2019.intl.d.ts","../../node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../node_modules/typescript/lib/lib.es2020.date.d.ts","../../node_modules/typescript/lib/lib.es2020.promise.d.ts","../../node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../../node_modules/typescript/lib/lib.es2020.string.d.ts","../../node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../../node_modules/typescript/lib/lib.es2020.intl.d.ts","../../node_modules/typescript/lib/lib.es2020.number.d.ts","../../node_modules/typescript/lib/lib.es2021.promise.d.ts","../../node_modules/typescript/lib/lib.es2021.string.d.ts","../../node_modules/typescript/lib/lib.es2021.weakref.d.ts","../../node_modules/typescript/lib/lib.es2021.intl.d.ts","../../node_modules/typescript/lib/lib.es2022.array.d.ts","../../node_modules/typescript/lib/lib.es2022.error.d.ts","../../node_modules/typescript/lib/lib.es2022.intl.d.ts","../../node_modules/typescript/lib/lib.es2022.object.d.ts","../../node_modules/typescript/lib/lib.es2022.sharedmemory.d.ts","../../node_modules/typescript/lib/lib.es2022.string.d.ts","../../node_modules/typescript/lib/lib.es2022.regexp.d.ts","../../node_modules/typescript/lib/lib.es2023.array.d.ts","../../node_modules/typescript/lib/lib.es2023.collection.d.ts","../../node_modules/typescript/lib/lib.esnext.collection.d.ts","../../node_modules/typescript/lib/lib.esnext.intl.d.ts","../../node_modules/typescript/lib/lib.esnext.disposable.d.ts","../../node_modules/typescript/lib/lib.esnext.promise.d.ts","../../node_modules/typescript/lib/lib.esnext.decorators.d.ts","../../node_modules/typescript/lib/lib.esnext.object.d.ts","../../node_modules/typescript/lib/lib.decorators.d.ts","../../node_modules/typescript/lib/lib.decorators.legacy.d.ts","../i18n/build-types/sprintf.d.ts","../hooks/build-types/createAddHook.d.ts","../hooks/build-types/createRemoveHook.d.ts","../hooks/build-types/createHasHook.d.ts","../hooks/build-types/createDoingHook.d.ts","../hooks/build-types/createDidHook.d.ts","../hooks/build-types/index.d.ts","../hooks/build-types/createHooks.d.ts","../i18n/build-types/create-i18n.d.ts","../i18n/build-types/default-i18n.d.ts","../i18n/build-types/index.d.ts","./src/constants.ts","../../node_modules/remove-accents/index.d.ts","../../node_modules/@types/react/global.d.ts","../../node_modules/csstype/index.d.ts","../../node_modules/@types/prop-types/index.d.ts","../../node_modules/@types/scheduler/tracing.d.ts","../../node_modules/@types/react/index.d.ts","./src/types.ts","./src/normalize-fields.ts","./src/filter-and-sort-data-view.ts"],"fileInfos":[{"version":"824cb491a40f7e8fdeb56f1df5edf91b23f3e3ee6b4cde84d4a99be32338faee","affectsGlobalScope":true},"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","3facaf05f0c5fc569c5649dd359892c98a85557e3e0c847964caeb67076f4d75","9a68c0c07ae2fa71b44384a839b7b8d81662a236d4b9ac30916718f7510b1b2d","5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4","feecb1be483ed332fad555aff858affd90a48ab19ba7272ee084704eb7167569","5514e54f17d6d74ecefedc73c504eadffdeda79c7ea205cf9febead32d45c4bc","1c0cdb8dc619bc549c3e5020643e7cf7ae7940058e8c7e5aefa5871b6d86f44b","886e50ef125efb7878f744e86908884c0133e7a6d9d80013f421b0cd8fb2af94",{"version":"87d693a4920d794a73384b3c779cadcb8548ac6945aa7a925832fe2418c9527a","affectsGlobalScope":true},{"version":"138fb588d26538783b78d1e3b2c2cc12d55840b97bf5e08bca7f7a174fbe2f17","affectsGlobalScope":true},{"version":"dc2df20b1bcdc8c2d34af4926e2c3ab15ffe1160a63e58b7e09833f616efff44","affectsGlobalScope":true},{"version":"4443e68b35f3332f753eacc66a04ac1d2053b8b035a0e0ac1d455392b5e243b3","affectsGlobalScope":true},{"version":"bc47685641087c015972a3f072480889f0d6c65515f12bd85222f49a98952ed7","affectsGlobalScope":true},{"version":"0dc1e7ceda9b8b9b455c3a2d67b0412feab00bd2f66656cd8850e8831b08b537","affectsGlobalScope":true},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true},{"version":"4ff2a353abf8a80ee399af572debb8faab2d33ad38c4b4474cff7f26e7653b8d","affectsGlobalScope":true},{"version":"93495ff27b8746f55d19fcbcdbaccc99fd95f19d057aed1bd2c0cafe1335fbf0","affectsGlobalScope":true},{"version":"6fc23bb8c3965964be8c597310a2878b53a0306edb71d4b5a4dfe760186bcc01","affectsGlobalScope":true},{"version":"ea011c76963fb15ef1cdd7ce6a6808b46322c527de2077b6cfdf23ae6f5f9ec7","affectsGlobalScope":true},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","affectsGlobalScope":true},{"version":"bb42a7797d996412ecdc5b2787720de477103a0b2e53058569069a0e2bae6c7e","affectsGlobalScope":true},{"version":"4738f2420687fd85629c9efb470793bb753709c2379e5f85bc1815d875ceadcd","affectsGlobalScope":true},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true},{"version":"4de680d5bb41c17f7f68e0419412ca23c98d5749dcaaea1896172f06435891fc","affectsGlobalScope":true},{"version":"9fc46429fbe091ac5ad2608c657201eb68b6f1b8341bd6d670047d32ed0a88fa","affectsGlobalScope":true},{"version":"61c37c1de663cf4171e1192466e52c7a382afa58da01b1dc75058f032ddf0839","affectsGlobalScope":true},{"version":"b541a838a13f9234aba650a825393ffc2292dc0fc87681a5d81ef0c96d281e7a","affectsGlobalScope":true},{"version":"b20fe0eca9a4e405f1a5ae24a2b3290b37cf7f21eba6cbe4fc3fab979237d4f3","affectsGlobalScope":true},{"version":"811ec78f7fefcabbda4bfa93b3eb67d9ae166ef95f9bff989d964061cbf81a0c","affectsGlobalScope":true},{"version":"717937616a17072082152a2ef351cb51f98802fb4b2fdabd32399843875974ca","affectsGlobalScope":true},{"version":"d7e7d9b7b50e5f22c915b525acc5a49a7a6584cf8f62d0569e557c5cfc4b2ac2","affectsGlobalScope":true},{"version":"71c37f4c9543f31dfced6c7840e068c5a5aacb7b89111a4364b1d5276b852557","affectsGlobalScope":true},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true},{"version":"49ed889be54031e1044af0ad2c603d627b8bda8b50c1a68435fe85583901d072","affectsGlobalScope":true},{"version":"e93d098658ce4f0c8a0779e6cab91d0259efb88a318137f686ad76f8410ca270","affectsGlobalScope":true},{"version":"063600664504610fe3e99b717a1223f8b1900087fab0b4cad1496a114744f8df","affectsGlobalScope":true},{"version":"934019d7e3c81950f9a8426d093458b65d5aff2c7c1511233c0fd5b941e608ab","affectsGlobalScope":true},{"version":"bf14a426dbbf1022d11bd08d6b8e709a2e9d246f0c6c1032f3b2edb9a902adbe","affectsGlobalScope":true},{"version":"5e07ed3809d48205d5b985642a59f2eba47c402374a7cf8006b686f79efadcbd","affectsGlobalScope":true},{"version":"2b72d528b2e2fe3c57889ca7baef5e13a56c957b946906d03767c642f386bbc3","affectsGlobalScope":true},{"version":"8073890e29d2f46fdbc19b8d6d2eb9ea58db9a2052f8640af20baff9afbc8640","affectsGlobalScope":true},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true},{"version":"af3dd424cf267428f30ccfc376f47a2c0114546b55c44d8c0f1d57d841e28d74","affectsGlobalScope":true},{"version":"995c005ab91a498455ea8dfb63aa9f83fa2ea793c3d8aa344be4a1678d06d399","affectsGlobalScope":true},{"version":"51e547984877a62227042850456de71a5c45e7fe86b7c975c6e68896c86fa23b","affectsGlobalScope":true},{"version":"956d27abdea9652e8368ce029bb1e0b9174e9678a273529f426df4b3d90abd60","affectsGlobalScope":true},{"version":"4fa6ed14e98aa80b91f61b9805c653ee82af3502dc21c9da5268d3857772ca05","affectsGlobalScope":true},{"version":"e6633e05da3ff36e6da2ec170d0d03ccf33de50ca4dc6f5aeecb572cedd162fb","affectsGlobalScope":true},{"version":"d8670852241d4c6e03f2b89d67497a4bbefe29ecaa5a444e2c11a9b05e6fccc6","affectsGlobalScope":true},{"version":"8444af78980e3b20b49324f4a16ba35024fef3ee069a0eb67616ea6ca821c47a","affectsGlobalScope":true},{"version":"caccc56c72713969e1cfe5c3d44e5bab151544d9d2b373d7dbe5a1e4166652be","affectsGlobalScope":true},{"version":"3287d9d085fbd618c3971944b65b4be57859f5415f495b33a6adc994edd2f004","affectsGlobalScope":true},{"version":"50d53ccd31f6667aff66e3d62adf948879a3a16f05d89882d1188084ee415bbc","affectsGlobalScope":true},{"version":"08a58483392df5fcc1db57d782e87734f77ae9eab42516028acbfe46f29a3ef7","affectsGlobalScope":true},{"version":"436aaf437562f276ec2ddbee2f2cdedac7664c1e4c1d2c36839ddd582eeb3d0a","affectsGlobalScope":true},{"version":"b1cb28af0c891c8c96b2d6b7be76bd394fddcfdb4709a20ba05a7c1605eea0f9","affectsGlobalScope":true},{"version":"13f6e6380c78e15e140243dc4be2fa546c287c6d61f4729bc2dd7cf449605471","affectsGlobalScope":true},{"version":"15b98a533864d324e5f57cd3cfc0579b231df58c1c0f6063ea0fcb13c3c74ff9","affectsGlobalScope":true},{"version":"ac77cb3e8c6d3565793eb90a8373ee8033146315a3dbead3bde8db5eaf5e5ec6","affectsGlobalScope":true},{"version":"d4b1d2c51d058fc21ec2629fff7a76249dec2e36e12960ea056e3ef89174080f","affectsGlobalScope":true},{"version":"2fef54945a13095fdb9b84f705f2b5994597640c46afeb2ce78352fab4cb3279","affectsGlobalScope":true},{"version":"33358442698bb565130f52ba79bfd3d4d484ac85fe33f3cb1759c54d18201393","affectsGlobalScope":true},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true},"2f1fe46a7a4e25a4a414d5491c7b39b695a6f37e97a1bdfeb71d430f98c3ed10","faf78d76e0042f05c6ad2eb38ee410cd4ea2854e5f5aff14f9b328d0a8115d62","d238c17667e457cba3da40546d2ef06876c5e5828df09c6b8404f223f189bb7d","a9c883297d78a7255479719aa87fb89b716f10c8c8936642bcb95522de3ca774","4f8ff9897ced0fe4b19defefb2db74f9448f04bca3ded248202fcc1a7bf11f02","c02d9d4c463913d817b35147c866bdb14c8ccba6fd06255877317dace5258781","6110b1abe60e43633e27444dfd81bbc6b5a07468549a985500d0991106b1e998","b3920d0dae5ffb54b3b8a4b6c53ce29e38a67f06b9595fee369ef1e37a3b5db4","fe6d71e5f4b524eab952a9e3cbb0e54abb2d0335cb2b47d91b00095b1613bcff","0beaa0562c80cdd93e5ab0dc9d1b314921afddfa8ee3cb976153ac620c89983f","2a49b24214a9709c04c7d21d99f1473058bd3b4d1310655288347a4c8862da30",{"version":"cda04b900fe4736ed8cf237703f24333f2b117851e9473bfaaaebc009950d64d","signature":"4e32d43c4f79c6d95ba6940135f4ccf42b160182f11181550a3a624e9d4dc7d5"},"ddf9ae86061a50cb95914a7e59cca5737fae145d23bbcc0009d65bbd27b0df43",{"version":"bbdf156fea2fabed31a569445835aeedcc33643d404fcbaa54541f06c109df3f","affectsGlobalScope":true},"4c68749a564a6facdf675416d75789ee5a557afda8960e0803cf6711fa569288","f7b46d22a307739c145e5fddf537818038fdfffd580d79ed717f4d4d37249380","f5a8b384f182b3851cec3596ccc96cb7464f8d3469f48c74bf2befb782a19de5",{"version":"5917af4ff931b050dba49a1dedd9c00f15f7b3dc4345ad8491bfacd2ec68ed32","affectsGlobalScope":true},{"version":"daafd945fef17e0871e19abcea868140cc595c409aaeccb6a697f0db5b220aa8","signature":"ae71d2310d85ac6b59765af7bbd89faf1b7b59976266a461c8e320deac5f0a37"},{"version":"5e8430d57e4799215d1d303bd346836e045c6360f06f46cc6fc3089c6bceeffd","signature":"05891eb963d78902a71cf9dd3c20b6c93e1e6a66cb96a7b600636e129f3c7d03"},{"version":"dace3b195f6b99852123d8b2a8a8e9633cbdcbbbcb374ce19e978abdc68cffca","signature":"aafdcaa9ec6a60e3dc38c55da1d8afac98e98634f27e501ec63a33e3028d1f76"}],"root":[80,[87,89]],"options":{"allowJs":true,"allowSyntheticDefaultImports":true,"checkJs":true,"composite":true,"declaration":true,"declarationDir":"./build-types","declarationMap":true,"emitDeclarationOnly":true,"esModuleInterop":false,"jsx":1,"module":99,"noFallthroughCasesInSwitch":true,"noImplicitReturns":true,"noUnusedLocals":true,"noUnusedParameters":true,"rootDir":"./src","strict":true,"target":99},"fileIdsList":[[82,83,84,85],[79],[80,81,87,88],[87],[86],[75],[70,71,72,73,74,75],[70,71,72,73,74,76],[75,76],[77],[69,77,78]],"referencedMap":[[86,1],[80,2],[89,3],[88,4],[87,5],[70,6],[74,6],[73,6],[72,6],[76,7],[71,6],[75,8],[77,9],[78,10],[79,11]],"exportedModulesMap":[[86,1],[89,4],[88,4],[87,5],[70,6],[74,6],[73,6],[72,6],[76,7],[71,6],[75,8],[77,9],[78,10],[79,11]],"semanticDiagnosticsPerFile":[84,82,86,85,83,81,67,68,12,14,13,2,15,16,17,18,19,20,21,22,3,23,4,24,28,25,26,27,29,30,31,5,32,33,34,35,6,39,36,37,38,40,7,41,46,47,42,43,44,45,8,51,48,49,50,52,9,53,54,55,58,56,57,59,60,10,1,61,11,65,63,62,66,64,80,89,88,87,70,74,73,72,76,71,75,77,78,79,69],"latestChangedDtsFile":"./build-types/filter-and-sort-data-view.d.ts"},"version":"5.4.5"}
@@ -1,154 +0,0 @@
1
- /**
2
- * External dependencies
3
- */
4
- import removeAccents from 'remove-accents';
5
-
6
- /**
7
- * Internal dependencies
8
- */
9
- import {
10
- OPERATOR_IS,
11
- OPERATOR_IS_NOT,
12
- OPERATOR_IS_NONE,
13
- OPERATOR_IS_ANY,
14
- OPERATOR_IS_ALL,
15
- OPERATOR_IS_NOT_ALL,
16
- } from './constants';
17
- import { normalizeFields } from './normalize-fields';
18
-
19
- function normalizeSearchInput( input = '' ) {
20
- return removeAccents( input.trim().toLowerCase() );
21
- }
22
-
23
- const EMPTY_ARRAY = [];
24
-
25
- /**
26
- * Applies the filtering, sorting and pagination to the raw data based on the view configuration.
27
- *
28
- * @param {any[]} data Raw data.
29
- * @param {Object} view View config.
30
- * @param {Object[]} fields Fields config.
31
- *
32
- * @return {Object} { data: any[], paginationInfo: { totalItems: number, totalPages: number } }
33
- */
34
- export function filterSortAndPaginate( data, view, fields ) {
35
- if ( ! data ) {
36
- return {
37
- data: EMPTY_ARRAY,
38
- paginationInfo: { totalItems: 0, totalPages: 0 },
39
- };
40
- }
41
- const _fields = normalizeFields( fields );
42
- let filteredData = [ ...data ];
43
- // Handle global search.
44
- if ( view.search ) {
45
- const normalizedSearch = normalizeSearchInput( view.search );
46
- filteredData = filteredData.filter( ( item ) => {
47
- return _fields
48
- .filter( ( field ) => field.enableGlobalSearch )
49
- .map( ( field ) => {
50
- return normalizeSearchInput( field.getValue( { item } ) );
51
- } )
52
- .some( ( field ) => field.includes( normalizedSearch ) );
53
- } );
54
- }
55
-
56
- if ( view.filters.length > 0 ) {
57
- view.filters.forEach( ( filter ) => {
58
- const field = _fields.find(
59
- ( _field ) => _field.id === filter.field
60
- );
61
- if (
62
- filter.operator === OPERATOR_IS_ANY &&
63
- filter?.value?.length > 0
64
- ) {
65
- filteredData = filteredData.filter( ( item ) => {
66
- const fieldValue = field.getValue( { item } );
67
- if ( Array.isArray( fieldValue ) ) {
68
- return filter.value.some( ( filterValue ) =>
69
- fieldValue.includes( filterValue )
70
- );
71
- } else if ( typeof fieldValue === 'string' ) {
72
- return filter.value.includes( fieldValue );
73
- }
74
- return false;
75
- } );
76
- } else if (
77
- filter.operator === OPERATOR_IS_NONE &&
78
- filter?.value?.length > 0
79
- ) {
80
- filteredData = filteredData.filter( ( item ) => {
81
- const fieldValue = field.getValue( { item } );
82
- if ( Array.isArray( fieldValue ) ) {
83
- return ! filter.value.some( ( filterValue ) =>
84
- fieldValue.includes( filterValue )
85
- );
86
- } else if ( typeof fieldValue === 'string' ) {
87
- return ! filter.value.includes( fieldValue );
88
- }
89
- return false;
90
- } );
91
- } else if (
92
- filter.operator === OPERATOR_IS_ALL &&
93
- filter?.value?.length > 0
94
- ) {
95
- filteredData = filteredData.filter( ( item ) => {
96
- return filter.value.every( ( value ) => {
97
- return field.getValue( { item } ).includes( value );
98
- } );
99
- } );
100
- } else if (
101
- filter.operator === OPERATOR_IS_NOT_ALL &&
102
- filter?.value?.length > 0
103
- ) {
104
- filteredData = filteredData.filter( ( item ) => {
105
- return filter.value.every( ( value ) => {
106
- return ! field.getValue( { item } ).includes( value );
107
- } );
108
- } );
109
- } else if ( filter.operator === OPERATOR_IS ) {
110
- filteredData = filteredData.filter( ( item ) => {
111
- return filter.value === field.getValue( { item } );
112
- } );
113
- } else if ( filter.operator === OPERATOR_IS_NOT ) {
114
- filteredData = filteredData.filter( ( item ) => {
115
- return filter.value !== field.getValue( { item } );
116
- } );
117
- }
118
- } );
119
- }
120
-
121
- // Handle sorting.
122
- if ( view.sort ) {
123
- const fieldId = view.sort.field;
124
- const fieldToSort = _fields.find( ( field ) => {
125
- return field.id === fieldId;
126
- } );
127
- filteredData.sort( ( a, b ) => {
128
- const valueA = fieldToSort.getValue( { item: a } ) ?? '';
129
- const valueB = fieldToSort.getValue( { item: b } ) ?? '';
130
- return view.sort.direction === 'asc'
131
- ? valueA.localeCompare( valueB )
132
- : valueB.localeCompare( valueA );
133
- } );
134
- }
135
-
136
- // Handle pagination.
137
- const hasPagination = view.page && view.perPage;
138
- const start = hasPagination ? ( view.page - 1 ) * view.perPage : 0;
139
- const totalItems = filteredData?.length || 0;
140
- const totalPages = hasPagination
141
- ? Math.ceil( totalItems / view.perPage )
142
- : 1;
143
- filteredData = hasPagination
144
- ? filteredData?.slice( start, start + view.perPage )
145
- : filteredData;
146
-
147
- return {
148
- data: filteredData,
149
- paginationInfo: {
150
- totalItems,
151
- totalPages,
152
- },
153
- };
154
- }
@@ -1,17 +0,0 @@
1
- /**
2
- * Apply default values and normalize the fields config.
3
- *
4
- * @param {Object[]} fields Raw Fields.
5
- * @return {Object[]} Normalized fields.
6
- */
7
- export function normalizeFields( fields ) {
8
- return fields.map( ( field ) => {
9
- const getValue = field.getValue || ( ( { item } ) => item[ field.id ] );
10
-
11
- return {
12
- ...field,
13
- getValue,
14
- render: field.render || getValue,
15
- };
16
- } );
17
- }