@onewelcome/react-lib-components 8.0.0 → 8.1.1

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 (105) hide show
  1. package/dist/cjs/DataGrid/DataGrid.cjs.js +1 -1
  2. package/dist/cjs/DataGrid/DataGrid.cjs.js.map +1 -1
  3. package/dist/cjs/DataGrid/DataGridFilters/DataGridFilter.cjs.js +1 -1
  4. package/dist/cjs/DataGrid/DataGridFilters/DataGridFilter.cjs.js.map +1 -1
  5. package/dist/cjs/DataGrid/DataGridFilters/DataGridFilter.module.scss.cjs.js +1 -1
  6. package/dist/cjs/DataGrid/DataGridFilters/DataGridFilterPopover.cjs.js +1 -1
  7. package/dist/cjs/DataGrid/DataGridFilters/DataGridFilterPopover.cjs.js.map +1 -1
  8. package/dist/cjs/DataGrid/DataGridFilters/DataGridFilterTag.cjs.js +1 -1
  9. package/dist/cjs/DataGrid/DataGridFilters/DataGridFilterTag.cjs.js.map +1 -1
  10. package/dist/cjs/DataGrid/DataGridFilters/DataGridToolbar.cjs.js +1 -1
  11. package/dist/cjs/DataGrid/DataGridFilters/DataGridToolbar.cjs.js.map +1 -1
  12. package/dist/cjs/DataGrid/DataGridFilters/DataGridToolbar.module.scss.cjs.js +1 -1
  13. package/dist/cjs/DataGrid/DataGridFilters/DataGridToolbarWrapper.cjs.js +1 -1
  14. package/dist/cjs/DataGrid/DataGridFilters/DataGridToolbarWrapper.cjs.js.map +1 -1
  15. package/dist/cjs/DataGrid/DataGridFilters/useFiltersReducer.cjs.js +2 -0
  16. package/dist/cjs/DataGrid/DataGridFilters/useFiltersReducer.cjs.js.map +1 -0
  17. package/dist/cjs/DataGrid/DataGridHeader/DataGridHeaderCell.cjs.js +1 -1
  18. package/dist/cjs/DataGrid/DataGridHeader/DataGridHeaderCell.cjs.js.map +1 -1
  19. package/dist/cjs/DataGrid/DataGridHeader/DataGridHeaderCell.module.scss.cjs.js +1 -1
  20. package/dist/cjs/Icon/Icon.cjs.js +1 -1
  21. package/dist/cjs/Icon/Icon.cjs.js.map +1 -1
  22. package/dist/cjs/Icon/Icon.module.scss.cjs.js +1 -1
  23. package/dist/cjs/Notifications/BaseModal/BaseModal.cjs.js +1 -1
  24. package/dist/cjs/Notifications/BaseModal/BaseModal.cjs.js.map +1 -1
  25. package/dist/cjs/src/components/DataGrid/DataGrid.d.ts +5 -1
  26. package/dist/cjs/src/components/DataGrid/DataGridFilters/DataGridFilter.d.ts +3 -3
  27. package/dist/cjs/src/components/DataGrid/DataGridFilters/DataGridFilterPopover.d.ts +3 -2
  28. package/dist/cjs/src/components/DataGrid/DataGridFilters/DataGridFilterTag.d.ts +2 -1
  29. package/dist/cjs/src/components/DataGrid/DataGridFilters/DataGridToolbar.d.ts +2 -1
  30. package/dist/cjs/src/components/DataGrid/DataGridFilters/DataGridToolbarWrapper.d.ts +8 -5
  31. package/dist/cjs/src/components/DataGrid/DataGridFilters/useFiltersReducer.d.ts +8 -0
  32. package/dist/cjs/src/components/DataGrid/DataGridFilters/useFiltersReducer.test.d.ts +1 -0
  33. package/dist/cjs/src/components/DataGrid/testUtils.d.ts +1 -0
  34. package/dist/cjs/src/components/Icon/Icon.d.ts +3 -1
  35. package/dist/cjs/src/hooks/useRepeatFocus.cjs.js +2 -0
  36. package/dist/cjs/src/hooks/useRepeatFocus.cjs.js.map +1 -0
  37. package/dist/cjs/src/index.cjs.js +1 -1
  38. package/dist/cjs/src/index.d.ts +1 -0
  39. package/dist/esm/DataGrid/DataGrid.esm.js +5 -5
  40. package/dist/esm/DataGrid/DataGrid.esm.js.map +1 -1
  41. package/dist/esm/DataGrid/DataGridFilters/DataGridFilter.esm.js +7 -14
  42. package/dist/esm/DataGrid/DataGridFilters/DataGridFilter.esm.js.map +1 -1
  43. package/dist/esm/DataGrid/DataGridFilters/DataGridFilter.module.scss.esm.js +2 -2
  44. package/dist/esm/DataGrid/DataGridFilters/DataGridFilterPopover.esm.js +11 -3
  45. package/dist/esm/DataGrid/DataGridFilters/DataGridFilterPopover.esm.js.map +1 -1
  46. package/dist/esm/DataGrid/DataGridFilters/DataGridFilterTag.esm.js +5 -7
  47. package/dist/esm/DataGrid/DataGridFilters/DataGridFilterTag.esm.js.map +1 -1
  48. package/dist/esm/DataGrid/DataGridFilters/DataGridToolbar.esm.js +16 -31
  49. package/dist/esm/DataGrid/DataGridFilters/DataGridToolbar.esm.js.map +1 -1
  50. package/dist/esm/DataGrid/DataGridFilters/DataGridToolbar.module.scss.esm.js +2 -2
  51. package/dist/esm/DataGrid/DataGridFilters/DataGridToolbarWrapper.esm.js +4 -2
  52. package/dist/esm/DataGrid/DataGridFilters/DataGridToolbarWrapper.esm.js.map +1 -1
  53. package/dist/esm/DataGrid/DataGridFilters/useFiltersReducer.esm.js +59 -0
  54. package/dist/esm/DataGrid/DataGridFilters/useFiltersReducer.esm.js.map +1 -0
  55. package/dist/esm/DataGrid/DataGridHeader/DataGridHeaderCell.esm.js +3 -5
  56. package/dist/esm/DataGrid/DataGridHeader/DataGridHeaderCell.esm.js.map +1 -1
  57. package/dist/esm/DataGrid/DataGridHeader/DataGridHeaderCell.module.scss.esm.js +2 -2
  58. package/dist/esm/Icon/Icon.esm.js +2 -0
  59. package/dist/esm/Icon/Icon.esm.js.map +1 -1
  60. package/dist/esm/Icon/Icon.module.scss.esm.js +2 -2
  61. package/dist/esm/Notifications/BaseModal/BaseModal.esm.js +1 -1
  62. package/dist/esm/Notifications/BaseModal/BaseModal.esm.js.map +1 -1
  63. package/dist/esm/src/components/DataGrid/DataGrid.d.ts +5 -1
  64. package/dist/esm/src/components/DataGrid/DataGridFilters/DataGridFilter.d.ts +3 -3
  65. package/dist/esm/src/components/DataGrid/DataGridFilters/DataGridFilterPopover.d.ts +3 -2
  66. package/dist/esm/src/components/DataGrid/DataGridFilters/DataGridFilterTag.d.ts +2 -1
  67. package/dist/esm/src/components/DataGrid/DataGridFilters/DataGridToolbar.d.ts +2 -1
  68. package/dist/esm/src/components/DataGrid/DataGridFilters/DataGridToolbarWrapper.d.ts +8 -5
  69. package/dist/esm/src/components/DataGrid/DataGridFilters/useFiltersReducer.d.ts +8 -0
  70. package/dist/esm/src/components/DataGrid/DataGridFilters/useFiltersReducer.test.d.ts +1 -0
  71. package/dist/esm/src/components/DataGrid/testUtils.d.ts +1 -0
  72. package/dist/esm/src/components/Icon/Icon.d.ts +3 -1
  73. package/dist/esm/{Notifications/BaseModal → src/hooks}/useRepeatFocus.esm.js +12 -1
  74. package/dist/esm/src/hooks/useRepeatFocus.esm.js.map +1 -0
  75. package/dist/esm/src/index.d.ts +1 -0
  76. package/dist/esm/src/index.esm.js +1 -0
  77. package/dist/esm/src/index.esm.js.map +1 -1
  78. package/package.json +1 -1
  79. package/src/components/DataGrid/DataGrid.tsx +26 -7
  80. package/src/components/DataGrid/DataGridFilters/DataGridFilter.module.scss +21 -11
  81. package/src/components/DataGrid/DataGridFilters/DataGridFilter.tsx +15 -19
  82. package/src/components/DataGrid/DataGridFilters/DataGridFilterPopover.tsx +15 -2
  83. package/src/components/DataGrid/DataGridFilters/DataGridFilterTag.tsx +18 -7
  84. package/src/components/DataGrid/DataGridFilters/DataGridToolbar.module.scss +39 -22
  85. package/src/components/DataGrid/DataGridFilters/DataGridToolbar.tsx +23 -42
  86. package/src/components/DataGrid/DataGridFilters/DataGridToolbarWrapper.tsx +10 -5
  87. package/src/components/DataGrid/DataGridFilters/useFiltersReducer.tsx +66 -0
  88. package/src/components/DataGrid/DataGridHeader/DataGridHeaderCell.module.scss +8 -1
  89. package/src/components/DataGrid/DataGridHeader/DataGridHeaderCell.tsx +3 -8
  90. package/src/components/DataGrid/testUtils.ts +14 -16
  91. package/src/components/Icon/Icon.module.scss +8 -0
  92. package/src/components/Icon/Icon.tsx +3 -1
  93. package/src/components/Notifications/BaseModal/BaseModal.tsx +1 -1
  94. package/src/font/icomoon.eot +0 -0
  95. package/src/font/icomoon.svg +2 -0
  96. package/src/font/icomoon.ttf +0 -0
  97. package/src/font/icomoon.woff +0 -0
  98. package/src/font/selection.json +1 -1
  99. package/src/{components/Notifications/BaseModal → hooks}/useRepeatFocus.tsx +12 -2
  100. package/src/index.ts +1 -0
  101. package/dist/cjs/Notifications/BaseModal/useRepeatFocus.cjs.js +0 -2
  102. package/dist/cjs/Notifications/BaseModal/useRepeatFocus.cjs.js.map +0 -1
  103. package/dist/esm/Notifications/BaseModal/useRepeatFocus.esm.js.map +0 -1
  104. /package/dist/cjs/src/{components/Notifications/BaseModal → hooks}/useRepeatFocus.d.ts +0 -0
  105. /package/dist/esm/src/{components/Notifications/BaseModal → hooks}/useRepeatFocus.d.ts +0 -0
@@ -18,37 +18,54 @@
18
18
 
19
19
  .wrapper {
20
20
  display: flex;
21
- align-items: center;
22
- justify-content: flex-start;
23
- flex-wrap: wrap;
21
+ align-items: flex-start;
22
+ justify-content: space-between;
24
23
  gap: 0.5rem;
25
24
  width: 100%;
26
25
  padding-bottom: 1rem;
27
26
 
28
- .searchbar {
29
- min-width: 7rem;
30
- flex-basis: 15rem;
31
- }
32
-
33
- .actions-wrapper {
27
+ .filter-section {
34
28
  display: flex;
35
29
  align-items: center;
36
30
  justify-content: flex-start;
31
+ flex-wrap: wrap;
37
32
  gap: 0.5rem;
38
- }
33
+ width: 100%;
34
+ flex-grow: 1;
39
35
 
40
- .clear-button {
41
- background: none;
42
- border: none;
43
- cursor: pointer;
44
- @include mixins.focusVisibleOutline($outlineOffset: 0);
45
-
46
- .caption {
47
- margin: 0;
48
- font-size: var(--font-size-data-grid);
49
- line-height: var(--data-grid-line-height);
50
- text-decoration: underline;
51
- color: var(--color-primary500);
36
+ .searchbar {
37
+ min-width: 7rem;
38
+ flex-basis: 15rem;
52
39
  }
40
+
41
+ .actions-wrapper {
42
+ display: flex;
43
+ align-items: center;
44
+ justify-content: flex-start;
45
+ gap: 0.5rem;
46
+ }
47
+
48
+ .clear-button {
49
+ background: none;
50
+ border: none;
51
+ cursor: pointer;
52
+ @include mixins.focusVisibleOutline($outlineOffset: 0);
53
+
54
+ .caption {
55
+ margin: 0;
56
+ font-size: var(--font-size-data-grid);
57
+ line-height: var(--data-grid-line-height);
58
+ text-decoration: underline;
59
+ color: var(--color-primary500);
60
+ }
61
+ }
62
+ }
63
+
64
+ .button-section {
65
+ flex-shrink: 0;
66
+ display: flex;
67
+ justify-content: center;
68
+ align-items: center;
69
+ gap: 0.5rem;
53
70
  }
54
71
  }
@@ -14,20 +14,16 @@
14
14
  * limitations under the License.
15
15
  */
16
16
 
17
- import React, { Fragment, useReducer } from "react";
17
+ import React, { Fragment } from "react";
18
18
  import { DataGridFilter } from "./DataGridFilter";
19
19
  import classes from "./DataGridToolbar.module.scss";
20
- import {
21
- DataGridColumnMetadata,
22
- Filter,
23
- FiltersAction,
24
- FiltersState,
25
- FiltersTranslations
26
- } from "./DataGridFilters.interfaces";
20
+ import { DataGridColumnMetadata, Filter, FiltersTranslations } from "./DataGridFilters.interfaces";
27
21
  import { Typography } from "../../Typography/Typography";
22
+ import { useFiltersReducer } from "./useFiltersReducer";
28
23
 
29
24
  export interface DataGridToolbarProps {
30
25
  columnsMetadata: DataGridColumnMetadata[];
26
+ customEditTagContent?: React.ReactElement;
31
27
  filterValues?: Filter[];
32
28
  translations?: FiltersTranslations;
33
29
  onFilterAdd?: (filter: Filter) => void;
@@ -36,32 +32,6 @@ export interface DataGridToolbarProps {
36
32
  onFiltersClear?: () => void;
37
33
  }
38
34
 
39
- const filtersReducer = (state: FiltersState, action: FiltersAction): FiltersState => {
40
- switch (action.type) {
41
- case "add":
42
- return { ...state, filters: [...state.filters, { ...action.payload }] };
43
- case "edit":
44
- return {
45
- ...state,
46
- filters: [
47
- ...state.filters.map(value => {
48
- if (value.id === action.payload.id) {
49
- return action.payload;
50
- }
51
- return value;
52
- })
53
- ]
54
- };
55
- case "remove":
56
- return {
57
- ...state,
58
- filters: [...state.filters.filter(value => value.id !== action.payload.id)]
59
- };
60
- case "clear":
61
- return { ...state, filters: [] };
62
- }
63
- };
64
-
65
35
  export const DataGridToolbar = ({
66
36
  columnsMetadata,
67
37
  filterValues,
@@ -69,9 +39,11 @@ export const DataGridToolbar = ({
69
39
  onFilterAdd,
70
40
  onFilterEdit,
71
41
  onFilterDelete,
72
- onFiltersClear
42
+ onFiltersClear,
43
+ customEditTagContent
73
44
  }: DataGridToolbarProps) => {
74
- const [state, dispatch] = useReducer(filtersReducer, { filters: filterValues || [] });
45
+ const { state, addFilter, editFilter, deleteFilter, clearFilters } =
46
+ useFiltersReducer(filterValues);
75
47
  const { clearButtonCaption = "Clear all filters" } = translations?.toolbar || {};
76
48
  return (
77
49
  <Fragment>
@@ -81,19 +53,28 @@ export const DataGridToolbar = ({
81
53
  key={filter.id}
82
54
  filter={filter}
83
55
  columnsMetadata={columnsMetadata}
84
- dispatch={dispatch}
85
- onFilterEdit={onFilterEdit}
86
- onFilterDelete={onFilterDelete}
56
+ onFilterEdit={filter => {
57
+ editFilter(filter);
58
+ onFilterEdit && onFilterEdit(filter);
59
+ }}
60
+ onFilterDelete={id => {
61
+ deleteFilter(id);
62
+ onFilterDelete && onFilterDelete(id);
63
+ }}
87
64
  tagTranslations={translations?.tag}
88
65
  popoverTranslations={translations?.popover}
66
+ customEditTagContent={customEditTagContent}
89
67
  />
90
68
  ))}
91
69
  <div className={classes["actions-wrapper"]}>
92
70
  <DataGridFilter
93
71
  mode="ADD"
72
+ customEditTagContent={customEditTagContent}
94
73
  columnsMetadata={columnsMetadata}
95
- dispatch={dispatch}
96
- onFilterAdd={onFilterAdd}
74
+ onFilterAdd={filter => {
75
+ addFilter(filter);
76
+ onFilterAdd && onFilterAdd(filter);
77
+ }}
97
78
  tagTranslations={translations?.tag}
98
79
  popoverTranslations={translations?.popover}
99
80
  />
@@ -102,7 +83,7 @@ export const DataGridToolbar = ({
102
83
  type="button"
103
84
  className={classes["clear-button"]}
104
85
  onClick={() => {
105
- dispatch({ type: "clear" });
86
+ clearFilters();
106
87
  onFiltersClear && onFiltersClear();
107
88
  }}
108
89
  >
@@ -14,18 +14,23 @@
14
14
  * limitations under the License.
15
15
  */
16
16
 
17
- import React, { ComponentPropsWithRef, ForwardRefRenderFunction } from "react";
17
+ import React, { ComponentPropsWithRef, ForwardRefRenderFunction, ReactElement } from "react";
18
18
  import classes from "./DataGridToolbar.module.scss";
19
-
20
- type Props = ComponentPropsWithRef<"div">;
19
+ import { Button } from "../../Button/Button";
20
+ import { ButtonProps } from "../../..";
21
+ interface Props extends ComponentPropsWithRef<"div"> {
22
+ filters?: React.JSX.Element;
23
+ buttons?: ReactElement<ButtonProps, typeof Button> | ReactElement<ButtonProps, typeof Button>[];
24
+ }
21
25
 
22
26
  export const DataGridToolbarWrapperComponent: ForwardRefRenderFunction<HTMLDivElement, Props> = (
23
- { children, ...rest },
27
+ { children, filters, buttons, ...rest },
24
28
  ref
25
29
  ) => {
26
30
  return (
27
31
  <div ref={ref} className={classes["wrapper"]} {...rest}>
28
- {children}
32
+ <div className={classes["filter-section"]}>{filters}</div>
33
+ <div className={classes["button-section"]}>{buttons}</div>
29
34
  </div>
30
35
  );
31
36
  };
@@ -0,0 +1,66 @@
1
+ /*
2
+ * Copyright 2022 OneWelcome B.V.
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+
17
+ import { useReducer } from "react";
18
+ import { Filter, FiltersAction, FiltersState } from "./DataGridFilters.interfaces";
19
+
20
+ export const useFiltersReducer = (filterValues: Filter[] | undefined) => {
21
+ const filtersReducer = (state: FiltersState, action: FiltersAction): FiltersState => {
22
+ switch (action.type) {
23
+ case "add":
24
+ return { ...state, filters: [...state.filters, { ...action.payload }] };
25
+ case "edit":
26
+ return {
27
+ ...state,
28
+ filters: [
29
+ ...state.filters.map(value => {
30
+ if (value.id === action.payload.id) {
31
+ return action.payload;
32
+ }
33
+ return value;
34
+ })
35
+ ]
36
+ };
37
+ case "remove":
38
+ return {
39
+ ...state,
40
+ filters: [...state.filters.filter(value => value.id !== action.payload.id)]
41
+ };
42
+ case "clear":
43
+ return { ...state, filters: [] };
44
+ }
45
+ };
46
+
47
+ const [state, dispatch] = useReducer(filtersReducer, { filters: filterValues || [] });
48
+
49
+ const addFilter = (filter: Filter) =>
50
+ dispatch({
51
+ type: "add",
52
+ payload: filter
53
+ });
54
+
55
+ const editFilter = (filter: Filter) =>
56
+ dispatch({
57
+ type: "edit",
58
+ payload: filter
59
+ });
60
+
61
+ const deleteFilter = (id: string) => dispatch({ type: "remove", payload: { id } });
62
+
63
+ const clearFilters = () => dispatch({ type: "clear" });
64
+
65
+ return { state, addFilter, deleteFilter, editFilter, clearFilters };
66
+ };
@@ -62,11 +62,18 @@
62
62
 
63
63
  .indicator {
64
64
  color: var(--greyed-out);
65
+ transition: transform 0.2s ease-in-out;
66
+ transform: rotate(0deg);
65
67
 
66
- &.active {
68
+ &.ascending {
67
69
  color: var(--color-primary);
68
70
  }
69
71
 
72
+ &.descending {
73
+ color: var(--color-primary);
74
+ transform: rotate(180deg);
75
+ }
76
+
70
77
  &.hidden {
71
78
  visibility: hidden;
72
79
  }
@@ -41,21 +41,16 @@ const DataGridHeaderCellComponent: ForwardRefRenderFunction<HTMLTableCellElement
41
41
  };
42
42
 
43
43
  const sortingIndicator = () => {
44
- const getSortingIndicatorClasses = (direction: Direction) => {
44
+ const getSortingIndicatorClasses = () => {
45
45
  const sortingIndicatorClasses = [classes["indicator"]];
46
46
  activeSortDirection &&
47
47
  sortingIndicatorClasses.push(
48
- activeSortDirection === direction ? classes["active"] : classes["hidden"]
48
+ activeSortDirection === "ASC" ? classes["ascending"] : classes["descending"]
49
49
  );
50
50
  return sortingIndicatorClasses;
51
51
  };
52
52
 
53
- return (
54
- <Fragment>
55
- <Icon className={getSortingIndicatorClasses("ASC").join(" ")} icon={Icons.TriangleUp} />
56
- <Icon className={getSortingIndicatorClasses("DESC").join(" ")} icon={Icons.TriangleDown} />
57
- </Fragment>
58
- );
53
+ return <Icon className={getSortingIndicatorClasses().join(" ")} icon={Icons.ArrowUp} />;
59
54
  };
60
55
 
61
56
  const innerContent = (
@@ -16,28 +16,18 @@
16
16
 
17
17
  import { useEffect, useState } from "react";
18
18
  import { Filter } from "./DataGridFilters/DataGridFilters.interfaces";
19
+ import { useFiltersReducer } from "./DataGridFilters/useFiltersReducer";
19
20
 
20
21
  /**
21
22
  * @scope .
22
23
  * @scopeException stories/DataGrid/DataGrid.stories.tsx
23
24
  */
24
25
  export const useMockFilteringLogic = <T>(data: T[], filterValues: Filter[] | undefined) => {
25
- const [filters, setFilters] = useState<Filter[]>(filterValues || []);
26
+ const { state, addFilter, editFilter, deleteFilter, clearFilters } =
27
+ useFiltersReducer(filterValues);
26
28
 
27
29
  const [gridData, setGridData] = useState(data);
28
30
 
29
- const onFilterAdd = (filter: Filter) => {
30
- setFilters(prev => [...prev, filter]);
31
- };
32
-
33
- const onFilterEdit = (filter: Filter) =>
34
- setFilters(prev => prev.map(f => (f.id === filter.id ? filter : f)));
35
-
36
- const onFilterDelete = (id: string) =>
37
- setFilters(prev => [...prev.filter(value => value.id !== id)]);
38
-
39
- const onFiltersClear = () => setFilters([]);
40
-
41
31
  const operatorPredicateMap = {
42
32
  is: (v1: string, v2: string) => v1 === v2,
43
33
  "is not": (v1: string, v2: string) => v1 !== v2
@@ -47,7 +37,7 @@ export const useMockFilteringLogic = <T>(data: T[], filterValues: Filter[] | und
47
37
  const filteredData = data
48
38
  .map((row: T) => {
49
39
  let shouldBeDiscarded: boolean[] = [];
50
- filters.forEach(filter => {
40
+ state.filters.forEach(filter => {
51
41
  shouldBeDiscarded = [
52
42
  ...shouldBeDiscarded,
53
43
  !filter.value.reduce((acc, val) => {
@@ -71,7 +61,15 @@ export const useMockFilteringLogic = <T>(data: T[], filterValues: Filter[] | und
71
61
  return val !== undefined;
72
62
  }) as T[];
73
63
  setGridData(filteredData);
74
- }, [filters]);
64
+ }, [state.filters]);
75
65
 
76
- return { onFilterAdd, onFilterEdit, onFilterDelete, onFiltersClear, gridData, filters };
66
+ return {
67
+ onFilterAdd: addFilter,
68
+ onFilterEdit: editFilter,
69
+ onFilterDelete: deleteFilter,
70
+ onFiltersClear: clearFilters,
71
+ gridData,
72
+ setGridData,
73
+ filters: state.filters
74
+ };
77
75
  };
@@ -369,3 +369,11 @@
369
369
  content: "\e94d";
370
370
  @include fontProperties();
371
371
  }
372
+ .icon-arrow-up:before {
373
+ content: "\e94f";
374
+ @include fontProperties();
375
+ }
376
+ .icon-external-link:before {
377
+ content: "\e950";
378
+ @include fontProperties();
379
+ }
@@ -98,7 +98,9 @@ export enum Icons {
98
98
  FileAltIcon = "file-alt",
99
99
  AddCircle = "add-circle",
100
100
  ZoomIn = "zoom-in",
101
- ZoomOut = "zoom-out"
101
+ ZoomOut = "zoom-out",
102
+ ArrowUp = "arrow-up",
103
+ ExternalLink = "external-link"
102
104
  }
103
105
 
104
106
  type Tag = "span" | "div" | "i";
@@ -27,7 +27,7 @@ import { createPortal } from "react-dom";
27
27
  import { useGetDomRoot } from "../../../hooks/useGetDomRoot";
28
28
  import classes from "./BaseModal.module.scss";
29
29
  import { labelId, descriptionId } from "./BaseModalContext";
30
- import { useRepeatFocus } from "./useRepeatFocus";
30
+ import { useRepeatFocus } from "../../../hooks/useRepeatFocus";
31
31
 
32
32
  const SCROLL_PROPERTY_NAME = "overflow";
33
33
  const SCROLL_PROPERTY_VALUE = "hidden";
Binary file
@@ -86,5 +86,7 @@
86
86
  <glyph unicode="&#xe94c;" glyph-name="add-circle" d="M512 960c-282.624 0-512-229.376-512-512s229.376-512 512-512c282.624 0 512 229.376 512 512s-229.376 512-512 512zM767.999 396.8h-204.8v-204.8h-102.4v204.8h-204.8v102.4h204.8v204.8h102.4v-204.8h204.8v-102.4z" />
87
87
  <glyph unicode="&#xe94d;" glyph-name="ZoomOut" d="M731.85 315.975h-46.258l-16.391 15.808c57.379 66.744 91.917 153.395 91.917 247.657 0 210.187-170.371 380.561-380.557 380.561s-380.561-170.374-380.561-380.561c0-210.187 170.374-380.557 380.561-380.557 94.262 0 180.913 34.538 247.657 91.917l15.808-16.391v-46.258l292.736-292.151 87.239 87.239-292.151 292.736zM380.561 315.975c-145.784 0-263.465 117.681-263.465 263.465s117.681 263.465 263.465 263.465c145.784 0 263.465-117.681 263.465-263.465s-117.681-263.465-263.465-263.465zM234.192 608.713h292.738v-58.548h-292.738v58.548z" />
88
88
  <glyph unicode="&#xe94e;" glyph-name="ZoomIn" d="M731.85 315.975h-46.258l-16.391 15.808c57.379 66.744 91.917 153.395 91.917 247.657 0 210.187-170.371 380.561-380.557 380.561s-380.561-170.374-380.561-380.561c0-210.187 170.374-380.557 380.561-380.557 94.262 0 180.913 34.538 247.657 91.917l15.808-16.391v-46.258l292.736-292.151 87.239 87.239-292.151 292.736zM380.561 315.975c-145.784 0-263.465 117.681-263.465 263.465s117.681 263.465 263.465 263.465c145.784 0 263.465-117.681 263.465-263.465s-117.681-263.465-263.465-263.465zM409.835 725.809h-58.548v-117.095h-117.095v-58.548h117.095v-117.095h58.548v117.095h117.095v58.548h-117.095v117.095z" />
89
+ <glyph unicode="&#xe94f;" glyph-name="arrow-up" d="M0.001 448.003l90.24-90.24 357.76 357.117v-778.879h128.002v778.879l357.12-357.762 90.877 90.885-512.002 511.996-511.996-511.996z" />
90
+ <glyph unicode="&#xe950;" glyph-name="external-link" d="M910.225 49.775h-796.448v796.448h398.223v113.777h-398.223c-63.146 0-113.777-51.2-113.777-113.777v-796.448c0-62.575 50.631-113.775 113.777-113.775h796.448c62.575 0 113.775 51.2 113.775 113.775v398.225h-113.775v-398.225zM625.777 960v-113.777h204.232l-559.218-559.218 80.213-80.213 559.221 559.218v-204.232h113.775v398.223h-398.223z" />
89
91
  <glyph unicode="&#xe9d1;" glyph-name="eye-blocked" d="M945.942 945.942c-18.746 18.744-49.136 18.744-67.882 0l-202.164-202.164c-51.938 15.754-106.948 24.222-163.896 24.222-223.318 0-416.882-130.042-512-320 41.122-82.124 100.648-153.040 173.022-207.096l-158.962-158.962c-18.746-18.746-18.746-49.136 0-67.882 9.372-9.374 21.656-14.060 33.94-14.060s24.568 4.686 33.942 14.058l864 864c18.744 18.746 18.744 49.138 0 67.884zM416 640c42.24 0 78.082-27.294 90.92-65.196l-121.724-121.724c-37.902 12.838-65.196 48.68-65.196 90.92 0 53.020 42.98 96 96 96zM110.116 448c38.292 60.524 89.274 111.924 149.434 150.296 3.918 2.5 7.876 4.922 11.862 7.3-9.962-27.328-15.412-56.822-15.412-87.596 0-54.89 17.286-105.738 46.7-147.418l-60.924-60.924c-52.446 36.842-97.202 83.882-131.66 138.342zM768 518c0 27.166-4.256 53.334-12.102 77.898l-321.808-321.808c24.568-7.842 50.742-12.090 77.91-12.090 141.382 0 256 114.618 256 256zM830.026 670.026l-69.362-69.362c1.264-0.786 2.53-1.568 3.786-2.368 60.162-38.374 111.142-89.774 149.434-150.296-38.292-60.522-89.274-111.922-149.436-150.296-75.594-48.218-162.89-73.704-252.448-73.704-38.664 0-76.902 4.76-113.962 14.040l-76.894-76.894c59.718-21.462 123.95-33.146 190.856-33.146 223.31 0 416.876 130.042 512 320-45.022 89.916-112.118 166.396-193.974 222.026z" />
90
92
  </font></defs></svg>
Binary file
Binary file