@economic/taco 2.0.4 → 2.0.5
Sign up to get free protection for your applications and to get access to all the features.
- package/dist/components/Table3/hooks/useTableDataLoader.d.ts +1 -1
- package/dist/esm/index.css +5 -5
- package/dist/esm/packages/taco/src/components/Table3/hooks/useTableDataLoader.js +13 -12
- package/dist/esm/packages/taco/src/components/Table3/hooks/useTableDataLoader.js.map +1 -1
- package/dist/index.css +5 -5
- package/dist/taco.cjs.development.js +13 -12
- package/dist/taco.cjs.development.js.map +1 -1
- package/dist/taco.cjs.production.min.js +1 -1
- package/dist/taco.cjs.production.min.js.map +1 -1
- package/package.json +2 -2
- package/types.json +1 -9
@@ -20,4 +20,4 @@ export declare type useTable3DataFetcherValues<TType = unknown> = {
|
|
20
20
|
onSort: Table3SortHandler;
|
21
21
|
pageSize: number;
|
22
22
|
};
|
23
|
-
export declare function useTable3DataLoader<TType = unknown>(fetch: useTable3DataFetcher<TType>, fetchAll: useTable3AllDataFetcher<TType>, options?: useTable3DataOptions): useTable3DataFetcherValues<TType
|
23
|
+
export declare function useTable3DataLoader<TType = unknown>(fetch: useTable3DataFetcher<TType>, fetchAll: useTable3AllDataFetcher<TType>, options?: useTable3DataOptions): [useTable3DataFetcherValues<TType>, () => void];
|
package/dist/esm/index.css
CHANGED
@@ -669,27 +669,27 @@
|
|
669
669
|
}
|
670
670
|
|
671
671
|
/* hovered row */
|
672
|
-
[data-pause-hover='false'] [role='row']:hover [role='cell'] {
|
672
|
+
[data-pause-hover='false'] [data-taco='table2-body'] [role='row']:hover [role='cell'] {
|
673
673
|
@apply bg-grey-100;
|
674
674
|
}
|
675
675
|
|
676
676
|
/* current row */
|
677
|
-
[role='row'][data-current='true'] [role='cell'] {
|
677
|
+
[data-taco='table2-body'] [role='row'][data-current='true'] [role='cell'] {
|
678
678
|
@apply bg-grey-200;
|
679
679
|
}
|
680
680
|
|
681
681
|
/* selected row */
|
682
|
-
[role='row'][data-selected='true']:not([aria-grabbed='true']) [role='cell'] {
|
682
|
+
[data-taco='table2-body'] [role='row'][data-selected='true']:not([aria-grabbed='true']) [role='cell'] {
|
683
683
|
@apply !bg-blue-100;
|
684
684
|
}
|
685
685
|
|
686
686
|
/* dragging row */
|
687
|
-
[role='row'][aria-grabbed='true'] [role='cell'] {
|
687
|
+
[data-taco='table2-body'] [role='row'][aria-grabbed='true'] [role='cell'] {
|
688
688
|
@apply !wcag-blue-500;
|
689
689
|
}
|
690
690
|
|
691
691
|
/* error row */
|
692
|
-
[role='row'][data-error='true'] [role='cell'] {
|
692
|
+
[data-taco='table2-body'] [role='row'][data-error='true'] [role='cell'] {
|
693
693
|
@apply !bg-red-100/30;
|
694
694
|
}
|
695
695
|
|
@@ -13,14 +13,14 @@ function useTable3DataLoader(fetch, fetchAll, options = {
|
|
13
13
|
const [data, setData] = React__default.useState([]);
|
14
14
|
// track which pages have been loaded to dedupe requests
|
15
15
|
const _pendingPageRequests = React__default.useRef({});
|
16
|
-
const
|
17
|
-
const
|
18
|
-
const
|
16
|
+
const _lastUsedSorting = React__default.useRef([]);
|
17
|
+
const _lastUsedFilters = React__default.useRef([]);
|
18
|
+
const _lastUsedSearch = React__default.useRef();
|
19
19
|
const loadPage = function (pageIndex, sorting, filters, search) {
|
20
20
|
try {
|
21
21
|
let reset = false;
|
22
22
|
// sorting or filters changed, reset everything
|
23
|
-
if (JSON.stringify(sorting) !== JSON.stringify(
|
23
|
+
if (search !== _lastUsedSearch.current || JSON.stringify(sorting) !== JSON.stringify(_lastUsedSorting.current) || JSON.stringify(filters) !== JSON.stringify(_lastUsedFilters.current)) {
|
24
24
|
_pendingPageRequests.current = {};
|
25
25
|
// nuke the dataset so that we "start again" after sorting
|
26
26
|
reset = true;
|
@@ -32,11 +32,11 @@ function useTable3DataLoader(fetch, fetchAll, options = {
|
|
32
32
|
_pendingPageRequests.current[pageIndex] = true;
|
33
33
|
}
|
34
34
|
// set the sorting so we can track if it changed between loads
|
35
|
-
|
35
|
+
_lastUsedSorting.current = sorting;
|
36
36
|
// set the filters so we can track if it changed between loads
|
37
|
-
|
37
|
+
_lastUsedFilters.current = filters;
|
38
38
|
// set the search so we can track if it changed between loads
|
39
|
-
|
39
|
+
_lastUsedSearch.current = search;
|
40
40
|
const _temp = _finallyRethrows(function () {
|
41
41
|
return _catch(function () {
|
42
42
|
return Promise.resolve(fetch(pageIndex, pageSize, sorting, filters, search)).then(function (response) {
|
@@ -90,29 +90,30 @@ function useTable3DataLoader(fetch, fetchAll, options = {
|
|
90
90
|
return Promise.reject(e);
|
91
91
|
}
|
92
92
|
};
|
93
|
+
const invalidate = () => setData(Array(length.current).fill(undefined));
|
93
94
|
// we reset the page to 0 whenever sorting, filtering or search changes
|
94
95
|
const handleSort = function (sorting) {
|
95
96
|
try {
|
96
|
-
return loadPage(0, sorting,
|
97
|
+
return loadPage(0, sorting, _lastUsedFilters.current, _lastUsedSearch.current);
|
97
98
|
} catch (e) {
|
98
99
|
return Promise.reject(e);
|
99
100
|
}
|
100
101
|
};
|
101
102
|
const handleFilter = function (filters) {
|
102
103
|
try {
|
103
|
-
return loadPage(0,
|
104
|
+
return loadPage(0, _lastUsedSorting.current, filters, _lastUsedSearch.current);
|
104
105
|
} catch (e) {
|
105
106
|
return Promise.reject(e);
|
106
107
|
}
|
107
108
|
};
|
108
109
|
const handleSearch = function (query) {
|
109
110
|
try {
|
110
|
-
return loadAll(
|
111
|
+
return loadAll(_lastUsedSorting.current, _lastUsedFilters.current, query);
|
111
112
|
} catch (e) {
|
112
113
|
return Promise.reject(e);
|
113
114
|
}
|
114
115
|
};
|
115
|
-
return {
|
116
|
+
return [{
|
116
117
|
data,
|
117
118
|
length: length.current,
|
118
119
|
loadAll,
|
@@ -121,7 +122,7 @@ function useTable3DataLoader(fetch, fetchAll, options = {
|
|
121
122
|
onSearch: handleSearch,
|
122
123
|
onSort: handleSort,
|
123
124
|
pageSize
|
124
|
-
};
|
125
|
+
}, invalidate];
|
125
126
|
}
|
126
127
|
|
127
128
|
export { useTable3DataLoader };
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"useTableDataLoader.js","sources":["../../../../../../../../src/components/Table3/hooks/useTableDataLoader.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 useTable3DataFetcherValues<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 useTable3DataLoader<TType = unknown>(\n fetch: useTable3DataFetcher<TType>,\n fetchAll: useTable3AllDataFetcher<TType>,\n options: useTable3DataOptions = { pageSize: 100 }\n): useTable3DataFetcherValues<TType
|
1
|
+
{"version":3,"file":"useTableDataLoader.js","sources":["../../../../../../../../src/components/Table3/hooks/useTableDataLoader.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 useTable3DataFetcherValues<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 useTable3DataLoader<TType = unknown>(\n fetch: useTable3DataFetcher<TType>,\n fetchAll: useTable3AllDataFetcher<TType>,\n options: useTable3DataOptions = { pageSize: 100 }\n): [useTable3DataFetcherValues<TType>, () => void] {\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 search !== _lastUsedSearch.current ||\n JSON.stringify(sorting) !== JSON.stringify(_lastUsedSorting.current) ||\n JSON.stringify(filters) !== JSON.stringify(_lastUsedFilters.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 const invalidate = () => setData(Array(length.current).fill(undefined));\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[]) =>\n loadPage(0, _lastUsedSorting.current, filters, _lastUsedSearch.current);\n const handleSearch = async (query: string) => loadAll(_lastUsedSorting.current, _lastUsedFilters.current, query);\n\n return [\n {\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 invalidate,\n ];\n}\n"],"names":["useTable3DataLoader","fetch","fetchAll","options","pageSize","length","React","useRef","undefined","data","setData","useState","_pendingPageRequests","_lastUsedSorting","_lastUsedFilters","_lastUsedSearch","loadPage","pageIndex","sorting","filters","search","reset","current","JSON","stringify","response","currentData","nextData","Array","fill","startIndex","splice","loadAll","invalidate","handleSort","handleFilter","handleSearch","query","onFilter","onSearch","onSort"],"mappings":"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"}
|
package/dist/index.css
CHANGED
@@ -669,27 +669,27 @@
|
|
669
669
|
}
|
670
670
|
|
671
671
|
/* hovered row */
|
672
|
-
[data-pause-hover='false'] [role='row']:hover [role='cell'] {
|
672
|
+
[data-pause-hover='false'] [data-taco='table2-body'] [role='row']:hover [role='cell'] {
|
673
673
|
@apply bg-grey-100;
|
674
674
|
}
|
675
675
|
|
676
676
|
/* current row */
|
677
|
-
[role='row'][data-current='true'] [role='cell'] {
|
677
|
+
[data-taco='table2-body'] [role='row'][data-current='true'] [role='cell'] {
|
678
678
|
@apply bg-grey-200;
|
679
679
|
}
|
680
680
|
|
681
681
|
/* selected row */
|
682
|
-
[role='row'][data-selected='true']:not([aria-grabbed='true']) [role='cell'] {
|
682
|
+
[data-taco='table2-body'] [role='row'][data-selected='true']:not([aria-grabbed='true']) [role='cell'] {
|
683
683
|
@apply !bg-blue-100;
|
684
684
|
}
|
685
685
|
|
686
686
|
/* dragging row */
|
687
|
-
[role='row'][aria-grabbed='true'] [role='cell'] {
|
687
|
+
[data-taco='table2-body'] [role='row'][aria-grabbed='true'] [role='cell'] {
|
688
688
|
@apply !wcag-blue-500;
|
689
689
|
}
|
690
690
|
|
691
691
|
/* error row */
|
692
|
-
[role='row'][data-error='true'] [role='cell'] {
|
692
|
+
[data-taco='table2-body'] [role='row'][data-error='true'] [role='cell'] {
|
693
693
|
@apply !bg-red-100/30;
|
694
694
|
}
|
695
695
|
|
@@ -19874,14 +19874,14 @@ function useTable3DataLoader(fetch, fetchAll, options = {
|
|
19874
19874
|
const [data, setData] = React__default.useState([]);
|
19875
19875
|
// track which pages have been loaded to dedupe requests
|
19876
19876
|
const _pendingPageRequests = React__default.useRef({});
|
19877
|
-
const
|
19878
|
-
const
|
19879
|
-
const
|
19877
|
+
const _lastUsedSorting = React__default.useRef([]);
|
19878
|
+
const _lastUsedFilters = React__default.useRef([]);
|
19879
|
+
const _lastUsedSearch = React__default.useRef();
|
19880
19880
|
const loadPage = function (pageIndex, sorting, filters, search) {
|
19881
19881
|
try {
|
19882
19882
|
let reset = false;
|
19883
19883
|
// sorting or filters changed, reset everything
|
19884
|
-
if (JSON.stringify(sorting) !== JSON.stringify(
|
19884
|
+
if (search !== _lastUsedSearch.current || JSON.stringify(sorting) !== JSON.stringify(_lastUsedSorting.current) || JSON.stringify(filters) !== JSON.stringify(_lastUsedFilters.current)) {
|
19885
19885
|
_pendingPageRequests.current = {};
|
19886
19886
|
// nuke the dataset so that we "start again" after sorting
|
19887
19887
|
reset = true;
|
@@ -19893,11 +19893,11 @@ function useTable3DataLoader(fetch, fetchAll, options = {
|
|
19893
19893
|
_pendingPageRequests.current[pageIndex] = true;
|
19894
19894
|
}
|
19895
19895
|
// set the sorting so we can track if it changed between loads
|
19896
|
-
|
19896
|
+
_lastUsedSorting.current = sorting;
|
19897
19897
|
// set the filters so we can track if it changed between loads
|
19898
|
-
|
19898
|
+
_lastUsedFilters.current = filters;
|
19899
19899
|
// set the search so we can track if it changed between loads
|
19900
|
-
|
19900
|
+
_lastUsedSearch.current = search;
|
19901
19901
|
const _temp = _finallyRethrows(function () {
|
19902
19902
|
return _catch(function () {
|
19903
19903
|
return Promise.resolve(fetch(pageIndex, pageSize, sorting, filters, search)).then(function (response) {
|
@@ -19951,29 +19951,30 @@ function useTable3DataLoader(fetch, fetchAll, options = {
|
|
19951
19951
|
return Promise.reject(e);
|
19952
19952
|
}
|
19953
19953
|
};
|
19954
|
+
const invalidate = () => setData(Array(length.current).fill(undefined));
|
19954
19955
|
// we reset the page to 0 whenever sorting, filtering or search changes
|
19955
19956
|
const handleSort = function (sorting) {
|
19956
19957
|
try {
|
19957
|
-
return loadPage(0, sorting,
|
19958
|
+
return loadPage(0, sorting, _lastUsedFilters.current, _lastUsedSearch.current);
|
19958
19959
|
} catch (e) {
|
19959
19960
|
return Promise.reject(e);
|
19960
19961
|
}
|
19961
19962
|
};
|
19962
19963
|
const handleFilter = function (filters) {
|
19963
19964
|
try {
|
19964
|
-
return loadPage(0,
|
19965
|
+
return loadPage(0, _lastUsedSorting.current, filters, _lastUsedSearch.current);
|
19965
19966
|
} catch (e) {
|
19966
19967
|
return Promise.reject(e);
|
19967
19968
|
}
|
19968
19969
|
};
|
19969
19970
|
const handleSearch = function (query) {
|
19970
19971
|
try {
|
19971
|
-
return loadAll(
|
19972
|
+
return loadAll(_lastUsedSorting.current, _lastUsedFilters.current, query);
|
19972
19973
|
} catch (e) {
|
19973
19974
|
return Promise.reject(e);
|
19974
19975
|
}
|
19975
19976
|
};
|
19976
|
-
return {
|
19977
|
+
return [{
|
19977
19978
|
data,
|
19978
19979
|
length: length.current,
|
19979
19980
|
loadAll,
|
@@ -19982,7 +19983,7 @@ function useTable3DataLoader(fetch, fetchAll, options = {
|
|
19982
19983
|
onSearch: handleSearch,
|
19983
19984
|
onSort: handleSort,
|
19984
19985
|
pageSize
|
19985
|
-
};
|
19986
|
+
}, invalidate];
|
19986
19987
|
}
|
19987
19988
|
|
19988
19989
|
function Column$5(_) {
|