@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.
@@ -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];
@@ -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 lastUsedSorting = React__default.useRef([]);
17
- const lastUsedFilters = React__default.useRef([]);
18
- const lastUsedSearch = React__default.useRef();
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(lastUsedSorting.current) || JSON.stringify(filters) !== JSON.stringify(lastUsedFilters.current) || search !== lastUsedSearch.current) {
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
- lastUsedSorting.current = sorting;
35
+ _lastUsedSorting.current = sorting;
36
36
  // set the filters so we can track if it changed between loads
37
- lastUsedFilters.current = filters;
37
+ _lastUsedFilters.current = filters;
38
38
  // set the search so we can track if it changed between loads
39
- lastUsedSearch.current = search;
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, lastUsedFilters.current, lastUsedSearch.current);
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, lastUsedSorting.current, filters, lastUsedSearch.current);
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(lastUsedSorting.current, lastUsedFilters.current, query);
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> {\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":["useTable3DataLoader","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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"}
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 lastUsedSorting = React__default.useRef([]);
19878
- const lastUsedFilters = React__default.useRef([]);
19879
- const lastUsedSearch = React__default.useRef();
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(lastUsedSorting.current) || JSON.stringify(filters) !== JSON.stringify(lastUsedFilters.current) || search !== lastUsedSearch.current) {
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
- lastUsedSorting.current = sorting;
19896
+ _lastUsedSorting.current = sorting;
19897
19897
  // set the filters so we can track if it changed between loads
19898
- lastUsedFilters.current = filters;
19898
+ _lastUsedFilters.current = filters;
19899
19899
  // set the search so we can track if it changed between loads
19900
- lastUsedSearch.current = search;
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, lastUsedFilters.current, lastUsedSearch.current);
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, lastUsedSorting.current, filters, lastUsedSearch.current);
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(lastUsedSorting.current, lastUsedFilters.current, query);
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(_) {