@economic/taco 2.0.0-alpha.5 → 2.0.0-alpha.7

Sign up to get free protection for your applications and to get access to all the features.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@economic/taco",
3
- "version": "2.0.0-alpha.5+17bed1048b",
3
+ "version": "2.0.0-alpha.7",
4
4
  "description": "> TODO: description",
5
5
  "author": "Matt Daly <matthew.daly@visma.com>",
6
6
  "homepage": "https://github.com/e-conomic/taco#readme",
@@ -129,6 +129,5 @@
129
129
  "Firefox ESR",
130
130
  "not ie < 11"
131
131
  ]
132
- },
133
- "gitHead": "17bed1048b45d7e050bb0da40a65d37232c78d16"
132
+ }
134
133
  }
package/types.json CHANGED
@@ -7538,7 +7538,7 @@
7538
7538
  ]
7539
7539
  }
7540
7540
  },
7541
- "useTableData": {
7541
+ "useTableDataLoader": {
7542
7542
  "useTable3AllDataFetcher": {
7543
7543
  "arguments": {
7544
7544
  "sorting": "Table3ColumnSort[]",
@@ -7563,16 +7563,7 @@
7563
7563
  },
7564
7564
  "returnValue": "Promise<[object Object]>"
7565
7565
  },
7566
- "useTable3DataOptions": {
7567
- "props": [
7568
- {
7569
- "name": "pageSize",
7570
- "optional": false,
7571
- "type": "number"
7572
- }
7573
- ]
7574
- },
7575
- "useTableDataValues": {
7566
+ "useTable3DataFetcherValues": {
7576
7567
  "props": [
7577
7568
  {
7578
7569
  "name": "data",
@@ -7618,6 +7609,15 @@
7618
7609
  "type": "number"
7619
7610
  }
7620
7611
  ]
7612
+ },
7613
+ "useTable3DataOptions": {
7614
+ "props": [
7615
+ {
7616
+ "name": "pageSize",
7617
+ "optional": false,
7618
+ "type": "number"
7619
+ }
7620
+ ]
7621
7621
  }
7622
7622
  },
7623
7623
  "Table3": {
@@ -7642,7 +7642,10 @@
7642
7642
  "name": "TType"
7643
7643
  }
7644
7644
  },
7645
- "returnValue": "string"
7645
+ "returnValue": [
7646
+ "string",
7647
+ "undefined"
7648
+ ]
7646
7649
  }
7647
7650
  ],
7648
7651
  "Table3ColumnControlProps": {
@@ -7918,7 +7921,10 @@
7918
7921
  "name": "emptyState",
7919
7922
  "optional": true,
7920
7923
  "type": {
7921
- "returnValue": "Element"
7924
+ "returnValue": [
7925
+ "Element",
7926
+ "null"
7927
+ ]
7922
7928
  }
7923
7929
  },
7924
7930
  {
@@ -8321,11 +8327,6 @@
8321
8327
  },
8322
8328
  "Table3Settings": {
8323
8329
  "props": [
8324
- {
8325
- "name": "columnFilters",
8326
- "optional": true,
8327
- "type": "ColumnFiltersState"
8328
- },
8329
8330
  {
8330
8331
  "name": "columnFreezingIndex",
8331
8332
  "optional": true,
@@ -8361,11 +8362,6 @@
8361
8362
  "optional": true,
8362
8363
  "type": "Table3FontSize"
8363
8364
  },
8364
- {
8365
- "name": "rowDensity",
8366
- "optional": true,
8367
- "type": "DeprecatedRowDensity"
8368
- },
8369
8365
  {
8370
8366
  "name": "rowHeight",
8371
8367
  "optional": true,
@@ -1 +0,0 @@
1
- {"version":3,"file":"useTableData.js","sources":["../../../../../../../../src/components/Table3/hooks/useTableData.ts"],"sourcesContent":["import React from 'react';\nimport {\n ColumnFilter,\n Table3ColumnSort,\n Table3FilterHandler,\n Table3LoadAllHandler,\n Table3LoadPageHandler,\n Table3SearchHandler,\n Table3SortHandler,\n} from '../types';\n\nexport type useTable3DataFetcher<TType = unknown> = (\n pageIndex: number,\n pageSize: number,\n sorting: Table3ColumnSort[],\n filters: ColumnFilter[],\n search: string | undefined\n) => Promise<{ data: TType[]; length: number }>;\n\nexport type useTable3AllDataFetcher<TType = unknown> = (\n sorting: Table3ColumnSort[],\n filters: ColumnFilter[],\n search: string | undefined\n) => Promise<{ data: TType[]; length: number }>;\n\nexport type useTable3DataOptions = { pageSize: number };\n\nexport type useTableDataValues<TType = unknown> = {\n data: TType[];\n length: number | undefined;\n loadAll: Table3LoadAllHandler;\n loadPage: Table3LoadPageHandler;\n onFilter: Table3FilterHandler;\n onSearch: Table3SearchHandler;\n onSort: Table3SortHandler;\n pageSize: number;\n};\n\nexport function useTableData<TType = unknown>(\n fetch: useTable3DataFetcher<TType>,\n fetchAll: useTable3AllDataFetcher<TType>,\n options: useTable3DataOptions = { pageSize: 100 }\n): useTableDataValues<TType> {\n const { pageSize } = options;\n\n // track the data length, we don't know it until the first request\n const length = React.useRef<number | undefined>(undefined);\n // data will be filled after the first request, then we'll update values in place\n const [data, setData] = React.useState<any[]>([]);\n // track which pages have been loaded to dedupe requests\n const _pendingPageRequests = React.useRef({});\n const lastUsedSorting = React.useRef<Table3ColumnSort[]>([]);\n const lastUsedFilters = React.useRef<ColumnFilter[]>([]);\n const lastUsedSearch = React.useRef<string>();\n\n const loadPage = async (\n pageIndex: number,\n sorting: Table3ColumnSort[],\n filters: ColumnFilter[],\n search: string | undefined\n ) => {\n let reset = false;\n\n // sorting or filters changed, reset everything\n if (\n JSON.stringify(sorting) !== JSON.stringify(lastUsedSorting.current) ||\n JSON.stringify(filters) !== JSON.stringify(lastUsedFilters.current) ||\n search !== lastUsedSearch.current\n ) {\n _pendingPageRequests.current = {};\n // nuke the dataset so that we \"start again\" after sorting\n reset = true;\n }\n\n if (_pendingPageRequests.current[pageIndex]) {\n // if page is already loaded/loading, abort, otherwise mark it as loading\n return;\n } else {\n _pendingPageRequests.current[pageIndex] = true;\n }\n\n // set the sorting so we can track if it changed between loads\n lastUsedSorting.current = sorting;\n // set the filters so we can track if it changed between loads\n lastUsedFilters.current = filters;\n // set the search so we can track if it changed between loads\n lastUsedSearch.current = search;\n\n try {\n const response = await fetch(pageIndex, pageSize, sorting, filters, search);\n\n // update state, here we do some \"magic\" to support \"load in place\"\n setData(currentData => {\n let nextData;\n\n // reset table state if:\n // - the length isn't set at all (first load)\n // - the client length and server length are different (the data changed)\n if (reset || length.current !== response.length) {\n length.current = response.length;\n nextData = Array(length.current).fill(undefined);\n } else {\n nextData = [...currentData];\n }\n\n const startIndex = pageIndex * pageSize;\n nextData.splice(startIndex, pageSize, ...response.data);\n return nextData;\n });\n } catch {\n //\n } finally {\n _pendingPageRequests.current[pageIndex] = false;\n }\n };\n\n const loadAll = async (sorting: Table3ColumnSort[], filters: ColumnFilter[], search: string | undefined) => {\n try {\n const response = await fetchAll(sorting, filters, search);\n length.current = response.length;\n\n setData(() => {\n let nextData;\n\n if (response.data.length !== response.length) {\n nextData = Array(response.length).fill(undefined);\n nextData.splice(0, response.data.length, ...response.data);\n } else {\n nextData = [...response.data];\n }\n\n return nextData;\n });\n } catch {\n //\n }\n };\n\n // we reset the page to 0 whenever sorting, filtering or search changes\n const handleSort = async (sorting: Table3ColumnSort[]) =>\n loadPage(0, sorting, lastUsedFilters.current, lastUsedSearch.current);\n const handleFilter = async (filters: ColumnFilter[]) => loadPage(0, lastUsedSorting.current, filters, lastUsedSearch.current);\n const handleSearch = async (query: string) => loadAll(lastUsedSorting.current, lastUsedFilters.current, query);\n\n return {\n data,\n length: length.current,\n loadAll,\n loadPage,\n onFilter: handleFilter,\n onSearch: handleSearch as any,\n onSort: handleSort,\n pageSize,\n };\n}\n"],"names":["useTableData","fetch","fetchAll","options","pageSize","length","React","useRef","undefined","data","setData","useState","_pendingPageRequests","lastUsedSorting","lastUsedFilters","lastUsedSearch","loadPage","pageIndex","sorting","filters","search","reset","JSON","stringify","current","response","currentData","nextData","Array","fill","startIndex","splice","loadAll","handleSort","handleFilter","handleSearch","query","onFilter","onSearch","onSort"],"mappings":"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"}