@deviceinsight/ng-ui-components 6.22.0 → 6.24.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 (73) hide show
  1. package/lib/cjs/components/input/DateTimeInput.d.ts.map +1 -1
  2. package/lib/cjs/components/input/DateTimeInput.js +35 -5
  3. package/lib/cjs/components/input/__tests__/DateTimeInput.spec.js +21 -0
  4. package/lib/cjs/components/reactable/Reactable.d.ts +2 -0
  5. package/lib/cjs/components/reactable/Reactable.d.ts.map +1 -1
  6. package/lib/cjs/components/reactable/helpers/ReactableTable.d.ts +2 -1
  7. package/lib/cjs/components/reactable/helpers/ReactableTable.d.ts.map +1 -1
  8. package/lib/cjs/components/reactable/helpers/ReactableTable.js +26 -14
  9. package/lib/cjs/components/reactable/helpers/ReactableTableFilterRow.d.ts +1 -0
  10. package/lib/cjs/components/reactable/helpers/ReactableTableFilterRow.d.ts.map +1 -1
  11. package/lib/cjs/components/reactable/helpers/ReactableTableFilterRow.js +3 -2
  12. package/lib/cjs/components/reactable/helpers/ReactableTableHeader.d.ts +2 -1
  13. package/lib/cjs/components/reactable/helpers/ReactableTableHeader.d.ts.map +1 -1
  14. package/lib/cjs/components/reactable/helpers/ReactableTableHeader.js +7 -5
  15. package/lib/cjs/components/reactable/helpers/ReactableTableRow.d.ts +1 -0
  16. package/lib/cjs/components/reactable/helpers/ReactableTableRow.d.ts.map +1 -1
  17. package/lib/cjs/components/reactable/helpers/ReactableTableRow.js +3 -2
  18. package/lib/cjs/components/reactable/helpers/helper.d.ts +1 -0
  19. package/lib/cjs/components/reactable/helpers/helper.d.ts.map +1 -1
  20. package/lib/cjs/components/reactable/helpers/helper.js +5 -1
  21. package/lib/cjs/components/reactableWithClientSidePagination/ReactableWithClientSidePagination.d.ts +2 -0
  22. package/lib/cjs/components/reactableWithClientSidePagination/ReactableWithClientSidePagination.d.ts.map +1 -1
  23. package/lib/cjs/components/reactableWithClientSidePagination/ReactableWithClientSidePagination.js +2 -2
  24. package/lib/cjs/components/reactableWithClientSidePagination/__tests__/ReactableWithClientSidePagination.spec.js +1 -1
  25. package/lib/esm/components/input/DateTimeInput.d.ts.map +1 -1
  26. package/lib/esm/components/input/DateTimeInput.js +35 -5
  27. package/lib/esm/components/input/__tests__/DateTimeInput.spec.js +22 -1
  28. package/lib/esm/components/reactable/Reactable.d.ts +2 -0
  29. package/lib/esm/components/reactable/Reactable.d.ts.map +1 -1
  30. package/lib/esm/components/reactable/helpers/ReactableTable.d.ts +2 -1
  31. package/lib/esm/components/reactable/helpers/ReactableTable.d.ts.map +1 -1
  32. package/lib/esm/components/reactable/helpers/ReactableTable.js +26 -14
  33. package/lib/esm/components/reactable/helpers/ReactableTableFilterRow.d.ts +1 -0
  34. package/lib/esm/components/reactable/helpers/ReactableTableFilterRow.d.ts.map +1 -1
  35. package/lib/esm/components/reactable/helpers/ReactableTableFilterRow.js +3 -2
  36. package/lib/esm/components/reactable/helpers/ReactableTableHeader.d.ts +2 -1
  37. package/lib/esm/components/reactable/helpers/ReactableTableHeader.d.ts.map +1 -1
  38. package/lib/esm/components/reactable/helpers/ReactableTableHeader.js +7 -5
  39. package/lib/esm/components/reactable/helpers/ReactableTableRow.d.ts +1 -0
  40. package/lib/esm/components/reactable/helpers/ReactableTableRow.d.ts.map +1 -1
  41. package/lib/esm/components/reactable/helpers/ReactableTableRow.js +3 -2
  42. package/lib/esm/components/reactable/helpers/helper.d.ts +1 -0
  43. package/lib/esm/components/reactable/helpers/helper.d.ts.map +1 -1
  44. package/lib/esm/components/reactable/helpers/helper.js +3 -0
  45. package/lib/esm/components/reactableWithClientSidePagination/ReactableWithClientSidePagination.d.ts +2 -0
  46. package/lib/esm/components/reactableWithClientSidePagination/ReactableWithClientSidePagination.d.ts.map +1 -1
  47. package/lib/esm/components/reactableWithClientSidePagination/ReactableWithClientSidePagination.js +2 -2
  48. package/lib/esm/components/reactableWithClientSidePagination/__tests__/ReactableWithClientSidePagination.spec.js +1 -1
  49. package/lib/esm/src/components/input/DateTimeInput.d.ts.map +1 -1
  50. package/lib/esm/src/components/input/DateTimeInput.js +35 -5
  51. package/lib/esm/src/components/input/__tests__/DateTimeInput.spec.js +22 -1
  52. package/lib/esm/src/components/reactable/Reactable.d.ts +2 -0
  53. package/lib/esm/src/components/reactable/Reactable.d.ts.map +1 -1
  54. package/lib/esm/src/components/reactable/helpers/ReactableTable.d.ts +2 -1
  55. package/lib/esm/src/components/reactable/helpers/ReactableTable.d.ts.map +1 -1
  56. package/lib/esm/src/components/reactable/helpers/ReactableTable.js +26 -14
  57. package/lib/esm/src/components/reactable/helpers/ReactableTableFilterRow.d.ts +1 -0
  58. package/lib/esm/src/components/reactable/helpers/ReactableTableFilterRow.d.ts.map +1 -1
  59. package/lib/esm/src/components/reactable/helpers/ReactableTableFilterRow.js +3 -2
  60. package/lib/esm/src/components/reactable/helpers/ReactableTableHeader.d.ts +2 -1
  61. package/lib/esm/src/components/reactable/helpers/ReactableTableHeader.d.ts.map +1 -1
  62. package/lib/esm/src/components/reactable/helpers/ReactableTableHeader.js +7 -5
  63. package/lib/esm/src/components/reactable/helpers/ReactableTableRow.d.ts +1 -0
  64. package/lib/esm/src/components/reactable/helpers/ReactableTableRow.d.ts.map +1 -1
  65. package/lib/esm/src/components/reactable/helpers/ReactableTableRow.js +3 -2
  66. package/lib/esm/src/components/reactable/helpers/helper.d.ts +1 -0
  67. package/lib/esm/src/components/reactable/helpers/helper.d.ts.map +1 -1
  68. package/lib/esm/src/components/reactable/helpers/helper.js +3 -0
  69. package/lib/esm/src/components/reactableWithClientSidePagination/ReactableWithClientSidePagination.d.ts +2 -0
  70. package/lib/esm/src/components/reactableWithClientSidePagination/ReactableWithClientSidePagination.d.ts.map +1 -1
  71. package/lib/esm/src/components/reactableWithClientSidePagination/ReactableWithClientSidePagination.js +2 -2
  72. package/lib/esm/src/components/reactableWithClientSidePagination/__tests__/ReactableWithClientSidePagination.spec.js +1 -1
  73. package/package.json +1 -1
@@ -7,6 +7,7 @@ declare type Props<T, ID extends string | number | undefined | null> = {
7
7
  paginationSettings: PaginationSettings;
8
8
  onSort: (property: string, direction: SortDirection) => void;
9
9
  onFilter?: (filterSettings: ReactableFilterSettings) => void;
10
+ tableName?: string;
10
11
  pageable?: Pageable<T> | null;
11
12
  isLoading: boolean;
12
13
  rowDef?: ReactableRowDef<T>;
@@ -14,6 +15,6 @@ declare type Props<T, ID extends string | number | undefined | null> = {
14
15
  messageWhenEmpty?: string;
15
16
  'data-testid'?: string;
16
17
  };
17
- export default function ReactableTable<T, ID extends string | number | undefined | null>({ columnDefs, uniqueItemKey, paginationSettings, onSort, onFilter, pageable, isLoading, rowDef, clickable, messageWhenEmpty, 'data-testid': testId }: Props<T, ID>): React.JSX.Element;
18
+ export default function ReactableTable<T, ID extends string | number | undefined | null>({ columnDefs, uniqueItemKey, paginationSettings, onSort, onFilter, tableName, pageable, isLoading, rowDef, clickable, messageWhenEmpty, 'data-testid': testId }: Props<T, ID>): React.JSX.Element;
18
19
  export {};
19
20
  //# sourceMappingURL=ReactableTable.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ReactableTable.d.ts","sourceRoot":"","sources":["../../../../../src/components/reactable/helpers/ReactableTable.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAoC,MAAM,OAAO,CAAC;AAQzD,OAAO,EAAC,kBAAkB,EAAE,eAAe,EAAE,uBAAuB,EAAC,MAAM,UAAU,CAAC;AACtF,OAAO,EAAC,QAAQ,EAAE,kBAAkB,EAAE,aAAa,EAAC,MAAM,2BAA2B,CAAC;AAGtF,aAAK,KAAK,CAAC,CAAC,EAAE,EAAE,SAAS,MAAM,GAAG,MAAM,GAAG,SAAS,GAAG,IAAI,IAAI;IAC9D,UAAU,EAAE,kBAAkB,CAAC,CAAC,CAAC,EAAE,CAAC;IACpC,aAAa,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,EAAE,CAAC;IAC/B,kBAAkB,EAAE,kBAAkB,CAAC;IACvC,MAAM,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,aAAa,KAAK,IAAI,CAAC;IAC7D,QAAQ,CAAC,EAAE,CAAC,cAAc,EAAE,uBAAuB,KAAK,IAAI,CAAC;IAC7D,QAAQ,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;IAC9B,SAAS,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC;IAC5B,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,aAAa,CAAC,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF,MAAM,CAAC,OAAO,UAAU,cAAc,CAAC,CAAC,EAAE,EAAE,SAAS,MAAM,GAAG,MAAM,GAAG,SAAS,GAAG,IAAI,EAAE,EACxF,UAAU,EACV,aAAa,EACb,kBAAkB,EAClB,MAAM,EACN,QAAQ,EACR,QAAQ,EACR,SAAS,EACT,MAAM,EACN,SAAS,EACT,gBAAgB,EAChB,aAAa,EAAE,MAAM,EACrB,EAAE,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,qBAkHd"}
1
+ {"version":3,"file":"ReactableTable.d.ts","sourceRoot":"","sources":["../../../../../src/components/reactable/helpers/ReactableTable.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAoC,MAAM,OAAO,CAAC;AAQzD,OAAO,EAAC,kBAAkB,EAAE,eAAe,EAAE,uBAAuB,EAAC,MAAM,UAAU,CAAC;AACtF,OAAO,EAAC,QAAQ,EAAE,kBAAkB,EAAE,aAAa,EAAC,MAAM,2BAA2B,CAAC;AAGtF,aAAK,KAAK,CAAC,CAAC,EAAE,EAAE,SAAS,MAAM,GAAG,MAAM,GAAG,SAAS,GAAG,IAAI,IAAI;IAC9D,UAAU,EAAE,kBAAkB,CAAC,CAAC,CAAC,EAAE,CAAC;IACpC,aAAa,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,EAAE,CAAC;IAC/B,kBAAkB,EAAE,kBAAkB,CAAC;IACvC,MAAM,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,aAAa,KAAK,IAAI,CAAC;IAC7D,QAAQ,CAAC,EAAE,CAAC,cAAc,EAAE,uBAAuB,KAAK,IAAI,CAAC;IAC7D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;IAC9B,SAAS,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC;IAC5B,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,aAAa,CAAC,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF,MAAM,CAAC,OAAO,UAAU,cAAc,CAAC,CAAC,EAAE,EAAE,SAAS,MAAM,GAAG,MAAM,GAAG,SAAS,GAAG,IAAI,EAAE,EACxF,UAAU,EACV,aAAa,EACb,kBAAkB,EAClB,MAAM,EACN,QAAQ,EACR,SAAS,EACT,QAAQ,EACR,SAAS,EACT,MAAM,EACN,SAAS,EACT,gBAAgB,EAChB,aAAa,EAAE,MAAM,EACrB,EAAE,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,qBAmId"}
@@ -6,11 +6,12 @@ import ReactableTableRow from './ReactableTableRow';
6
6
  import ReactableTableHeader from './ReactableTableHeader';
7
7
  import ReactableTableFilterRow from './ReactableTableFilterRow';
8
8
  import { readAccountObject, writeAccountObject } from '@deviceinsight/ng-ui-api-client';
9
- export default function ReactableTable({ columnDefs, uniqueItemKey, paginationSettings, onSort, onFilter, pageable, isLoading, rowDef, clickable, messageWhenEmpty, 'data-testid': testId }) {
9
+ export default function ReactableTable({ columnDefs, uniqueItemKey, paginationSettings, onSort, onFilter, tableName, pageable, isLoading, rowDef, clickable, messageWhenEmpty, 'data-testid': testId }) {
10
10
  const containerRef = useRef(null);
11
11
  const tableRef = useRef(null);
12
12
  const [showScrollingAdvice, setShowScrollingAdvice] = useState(false);
13
- const [neverShowScrollingAdvice, setNeverShowScrollingAdvice] = useState(false);
13
+ const [neverShowScrollingAdvice, setNeverShowScrollingAdvice] = useState(true);
14
+ const [hasInitialized, setHasInitialized] = useState(false);
14
15
  const HIDE_SCROLLING_ADVICE_PATH = 'uiConfigurations/nevershowscrollingadvice';
15
16
  const neverShowScrollingAdviceRef = useRef(neverShowScrollingAdvice);
16
17
  useEffect(() => {
@@ -22,14 +23,25 @@ export default function ReactableTable({ columnDefs, uniqueItemKey, paginationSe
22
23
  }
23
24
  };
24
25
  useEffect(() => {
25
- readAccountObject(HIDE_SCROLLING_ADVICE_PATH).then((value) => {
26
- const neverShow = value === undefined ? false : value;
27
- setNeverShowScrollingAdvice(neverShow);
28
- neverShowScrollingAdviceRef.current = neverShow;
29
- if (containerRef.current && tableRef.current) {
30
- updateScrollingAdvice();
31
- }
32
- });
26
+ setTimeout(() => {
27
+ (async () => {
28
+ try {
29
+ const value = await readAccountObject(HIDE_SCROLLING_ADVICE_PATH);
30
+ const neverShow = value === true;
31
+ setNeverShowScrollingAdvice(neverShow);
32
+ neverShowScrollingAdviceRef.current = neverShow;
33
+ if (!neverShow) {
34
+ updateScrollingAdvice();
35
+ }
36
+ }
37
+ catch (error) {
38
+ setNeverShowScrollingAdvice(false);
39
+ neverShowScrollingAdviceRef.current = false;
40
+ updateScrollingAdvice();
41
+ }
42
+ setHasInitialized(true);
43
+ })();
44
+ }, 0);
33
45
  }, []);
34
46
  useEffect(() => {
35
47
  updateScrollingAdvice();
@@ -39,7 +51,7 @@ export default function ReactableTable({ columnDefs, uniqueItemKey, paginationSe
39
51
  const showFilterRow = columnDefs.some((col) => col.filterable);
40
52
  return (React.createElement(SpinnerContainer, { show: isLoading },
41
53
  React.createElement("div", { ref: containerRef, className: "di reactable scroll-x" },
42
- showScrollingAdvice && !isLoading && (React.createElement(Modal, { className: "scroll-horizontally-advice", content: React.createElement("div", null,
54
+ hasInitialized && showScrollingAdvice && !isLoading && (React.createElement(Modal, { className: "scroll-horizontally-advice", content: React.createElement("div", null,
43
55
  React.createElement(Trans, { i18nKey: "reactable.scrollHorizontally.advice" }, "SHIFT + mouse wheel to scroll horizontally"),
44
56
  React.createElement("div", { className: "scroll-horizontally-advice-buttons" },
45
57
  React.createElement(Button, { primary: true, onClick: async () => {
@@ -53,13 +65,13 @@ export default function ReactableTable({ columnDefs, uniqueItemKey, paginationSe
53
65
  React.createElement(Trans, { i18nKey: "reactable.scrollHorizontally.ok" }, "OK")))), width: '40%' })),
54
66
  React.createElement("table", { ref: tableRef, className: cx('di reactable sortable hoverable', { selectable: clickable }), "data-testid": testId },
55
67
  React.createElement("thead", null,
56
- React.createElement(ReactableTableHeader, { columnDefs: columnDefs, paginationSettings: paginationSettings, onSort: onSort })),
68
+ React.createElement(ReactableTableHeader, { columnDefs: columnDefs, paginationSettings: paginationSettings, onSort: onSort, tableName: tableName })),
57
69
  React.createElement("tbody", null,
58
- onFilter && showFilterRow && (React.createElement(ReactableTableFilterRow, { columnDefs: columnDefs, onFilter: onFilter })),
70
+ onFilter && showFilterRow && (React.createElement(ReactableTableFilterRow, { columnDefs: columnDefs, onFilter: onFilter, tableName: tableName })),
59
71
  pageable?.content.length
60
72
  ? pageable.content
61
73
  .slice(0, paginationSettings.size)
62
- .map((item) => (React.createElement(ReactableTableRow, { key: uniqueItemKey(item), columnDefs: columnDefs, item: item, rowDef: rowDef })))
74
+ .map((item) => (React.createElement(ReactableTableRow, { key: uniqueItemKey(item), columnDefs: columnDefs, item: item, rowDef: rowDef, tableName: tableName })))
63
75
  : !isLoading && (React.createElement("tr", null,
64
76
  React.createElement("td", { colSpan: columnDefs.length },
65
77
  React.createElement(Trans, { i18nKey: messageWhenEmpty ?? 'reactable.noEntriesFound' }, "No entries found")))))))));
@@ -3,6 +3,7 @@ import { ReactableColumnDef, ReactableFilterSettings } from '../types';
3
3
  declare type Props = {
4
4
  columnDefs: Array<ReactableColumnDef<any>>;
5
5
  onFilter: (filterColumns: ReactableFilterSettings) => void;
6
+ tableName?: string;
6
7
  };
7
8
  declare const ReactableTableFilterRow: React.FC<Props>;
8
9
  export default ReactableTableFilterRow;
@@ -1 +1 @@
1
- {"version":3,"file":"ReactableTableFilterRow.d.ts","sourceRoot":"","sources":["../../../../../src/components/reactable/helpers/ReactableTableFilterRow.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA4B,MAAM,OAAO,CAAC;AAEjD,OAAO,EAAC,kBAAkB,EAAE,uBAAuB,EAAC,MAAM,UAAU,CAAC;AAGrE,aAAK,KAAK,GAAG;IACZ,UAAU,EAAE,KAAK,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC;IAC3C,QAAQ,EAAE,CAAC,aAAa,EAAE,uBAAuB,KAAK,IAAI,CAAC;CAC3D,CAAC;AAEF,QAAA,MAAM,uBAAuB,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CAuF5C,CAAC;AAEF,eAAe,uBAAuB,CAAC"}
1
+ {"version":3,"file":"ReactableTableFilterRow.d.ts","sourceRoot":"","sources":["../../../../../src/components/reactable/helpers/ReactableTableFilterRow.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA4B,MAAM,OAAO,CAAC;AAEjD,OAAO,EAAC,kBAAkB,EAAE,uBAAuB,EAAC,MAAM,UAAU,CAAC;AAIrE,aAAK,KAAK,GAAG;IACZ,UAAU,EAAE,KAAK,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC;IAC3C,QAAQ,EAAE,CAAC,aAAa,EAAE,uBAAuB,KAAK,IAAI,CAAC;IAC3D,SAAS,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,QAAA,MAAM,uBAAuB,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CAuF5C,CAAC;AAEF,eAAe,uBAAuB,CAAC"}
@@ -1,7 +1,8 @@
1
1
  import React, { useEffect, useState } from 'react';
2
2
  import { useTranslation } from '../../../i18n';
3
3
  import ReactableTextFilter from './ReactableTextFilter';
4
- const ReactableTableFilterRow = ({ columnDefs, onFilter }) => {
4
+ import { getClassName } from './helper';
5
+ const ReactableTableFilterRow = ({ columnDefs, onFilter, tableName }) => {
5
6
  const { t } = useTranslation();
6
7
  const [state, setState] = useState({});
7
8
  useEffect(() => {
@@ -46,7 +47,7 @@ const ReactableTableFilterRow = ({ columnDefs, onFilter }) => {
46
47
  React.createElement("option", { key: "", value: "" }, t('reactable.filter.all', {
47
48
  defaultValue: '- All -'
48
49
  })),
49
- filterOptions.map((option) => (React.createElement("option", { key: option.value, value: option.value }, typeof option.label === 'string'
50
+ filterOptions.map((option) => (React.createElement("option", { className: getClassName(tableName, columnDef.name), key: option.value, value: option.value }, typeof option.label === 'string'
50
51
  ? option.label
51
52
  : t(option.label.id, {
52
53
  defaultValue: option.label.defaultValue
@@ -5,10 +5,11 @@ declare type Props = {
5
5
  columnDefs: Array<ReactableColumnDef<any>>;
6
6
  paginationSettings: PaginationSettings;
7
7
  onSort: (property: string, direction: SortDirection) => void;
8
+ tableName?: string;
8
9
  };
9
10
  export default class ReactableTableHeader extends React.Component<Props> {
10
11
  handleSort: (columnDef: ReactableColumnDef<unknown>) => void;
11
- getClassName: (columnDef: ReactableColumnDef<any>) => "" | "sortable sortAsc" | "sortable sortDes" | "sortable";
12
+ getClassName: (columnDef: ReactableColumnDef<any>) => string;
12
13
  printLabel: (label: ReactableColumnLabel) => string | number | boolean | Iterable<React.ReactNode> | React.JSX.Element | import("../../../types/i18n").TranslationDescriptor | null | undefined;
13
14
  render(): React.JSX.Element;
14
15
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ReactableTableHeader.d.ts","sourceRoot":"","sources":["../../../../../src/components/reactable/helpers/ReactableTableHeader.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,OAAO,EAAC,kBAAkB,EAAE,oBAAoB,EAAC,MAAM,UAAU,CAAC;AAClE,OAAO,EAAC,kBAAkB,EAAE,aAAa,EAAC,MAAM,2BAA2B,CAAC;AAI5E,aAAK,KAAK,GAAG;IACZ,UAAU,EAAE,KAAK,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC;IAC3C,kBAAkB,EAAE,kBAAkB,CAAC;IACvC,MAAM,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,aAAa,KAAK,IAAI,CAAC;CAC7D,CAAC;AAEF,MAAM,CAAC,OAAO,OAAO,oBAAqB,SAAQ,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC;IACvE,UAAU,EAAE,CAAC,SAAS,EAAE,kBAAkB,CAAC,OAAO,CAAC,KAAK,IAAI,CAO1D;IAEF,YAAY,cAAe,mBAAmB,GAAG,CAAC,+DAgBhD;IAEF,UAAU,UAAW,oBAAoB,wJAQvC;IAEF,MAAM;CAuBN"}
1
+ {"version":3,"file":"ReactableTableHeader.d.ts","sourceRoot":"","sources":["../../../../../src/components/reactable/helpers/ReactableTableHeader.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,OAAO,EAAC,kBAAkB,EAAE,oBAAoB,EAAC,MAAM,UAAU,CAAC;AAClE,OAAO,EAAC,kBAAkB,EAAE,aAAa,EAAC,MAAM,2BAA2B,CAAC;AAK5E,aAAK,KAAK,GAAG;IACZ,UAAU,EAAE,KAAK,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC;IAC3C,kBAAkB,EAAE,kBAAkB,CAAC;IACvC,MAAM,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,aAAa,KAAK,IAAI,CAAC;IAC7D,SAAS,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,MAAM,CAAC,OAAO,OAAO,oBAAqB,SAAQ,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC;IACvE,UAAU,EAAE,CAAC,SAAS,EAAE,kBAAkB,CAAC,OAAO,CAAC,KAAK,IAAI,CAO1D;IAEF,YAAY,cAAe,mBAAmB,GAAG,CAAC,YAiBhD;IAEF,UAAU,UAAW,oBAAoB,wJAQvC;IAEF,MAAM;CAuBN"}
@@ -1,5 +1,6 @@
1
1
  import * as React from 'react';
2
2
  import { Trans } from '../../../i18n';
3
+ import { getClassName } from './helper';
3
4
  const toggleSortDirection = (direction) => (direction === 'ASC' ? 'DESC' : 'ASC');
4
5
  export default class ReactableTableHeader extends React.Component {
5
6
  constructor() {
@@ -12,22 +13,23 @@ export default class ReactableTableHeader extends React.Component {
12
13
  onSort(columnDef.name, direction);
13
14
  };
14
15
  this.getClassName = (columnDef) => {
15
- const { paginationSettings } = this.props;
16
+ const { paginationSettings, tableName } = this.props;
17
+ const className = getClassName(tableName, columnDef.name);
16
18
  if (columnDef.sortable) {
17
19
  if (columnDef.name === paginationSettings.sort.property) {
18
20
  if (paginationSettings.sort.direction === 'ASC') {
19
- return 'sortable sortAsc';
21
+ return `${className} sortable sortAsc`;
20
22
  }
21
23
  else {
22
- return 'sortable sortDes';
24
+ return `${className} sortable sortDes`;
23
25
  }
24
26
  }
25
27
  else {
26
- return 'sortable';
28
+ return `${className} sortable`;
27
29
  }
28
30
  }
29
31
  else {
30
- return '';
32
+ return `${className}`;
31
33
  }
32
34
  };
33
35
  this.printLabel = (label) => {
@@ -4,6 +4,7 @@ declare type Props<T> = {
4
4
  columnDefs: Array<ReactableColumnDef<T>>;
5
5
  item: T;
6
6
  rowDef: ReactableRowDef<T> | null | undefined;
7
+ tableName?: string;
7
8
  };
8
9
  export default class ReactableTableRow extends React.Component<Props<any>> {
9
10
  getRowClass: () => string;
@@ -1 +1 @@
1
- {"version":3,"file":"ReactableTableRow.d.ts","sourceRoot":"","sources":["../../../../../src/components/reactable/helpers/ReactableTableRow.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAC,kBAAkB,EAAE,eAAe,EAAC,MAAM,UAAU,CAAC;AAE7D,aAAK,KAAK,CAAC,CAAC,IAAI;IACf,UAAU,EAAE,KAAK,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC;IACzC,IAAI,EAAE,CAAC,CAAC;IACR,MAAM,EAAE,eAAe,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,SAAS,CAAC;CAC9C,CAAC;AAEF,MAAM,CAAC,OAAO,OAAO,iBAAkB,SAAQ,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACzE,WAAW,eAQT;IAEF,WAAW,aAMT;IAEF,UAAU,eAQR;IAEF,WAAW,wCAQT;IAEF,MAAM;CAkCN"}
1
+ {"version":3,"file":"ReactableTableRow.d.ts","sourceRoot":"","sources":["../../../../../src/components/reactable/helpers/ReactableTableRow.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAC,kBAAkB,EAAE,eAAe,EAAC,MAAM,UAAU,CAAC;AAG7D,aAAK,KAAK,CAAC,CAAC,IAAI;IACf,UAAU,EAAE,KAAK,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC;IACzC,IAAI,EAAE,CAAC,CAAC;IACR,MAAM,EAAE,eAAe,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,SAAS,CAAC;IAC9C,SAAS,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,MAAM,CAAC,OAAO,OAAO,iBAAkB,SAAQ,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACzE,WAAW,eAQT;IAEF,WAAW,aAMT;IAEF,UAAU,eAQR;IAEF,WAAW,wCAQT;IAEF,MAAM;CAmCN"}
@@ -1,4 +1,5 @@
1
1
  import * as React from 'react';
2
+ import { getClassName } from './helper';
2
3
  export default class ReactableTableRow extends React.Component {
3
4
  constructor() {
4
5
  super(...arguments);
@@ -37,7 +38,7 @@ export default class ReactableTableRow extends React.Component {
37
38
  };
38
39
  }
39
40
  render() {
40
- const { columnDefs, item } = this.props;
41
+ const { columnDefs, item, tableName } = this.props;
41
42
  return (React.createElement("tr", { className: this.getRowClass(), onClick: this.handleClick, title: this.getTooltip(), style: this.getRowStyle() }, columnDefs.map((columnDef) => {
42
43
  const textAlign = columnDef.align || 'left';
43
44
  const cursor = columnDef.onClick ? 'pointer' : 'inherit';
@@ -50,7 +51,7 @@ export default class ReactableTableRow extends React.Component {
50
51
  cursor,
51
52
  // @ts-ignore
52
53
  whiteSpace
53
- }, onClick: onClick }, columnDef.render(item)));
54
+ }, onClick: onClick, className: getClassName(tableName, columnDef.name) }, columnDef.render(item)));
54
55
  })));
55
56
  }
56
57
  }
@@ -4,4 +4,5 @@ export declare function makePageable<T>(items: Array<T> | null | undefined, colu
4
4
  export declare function filterItems<T>(items: Array<T> | null | undefined, columnDefs: Array<ReactableColumnDef<any>>, filterSettings: ReactableFilterSettings): Array<T> | null | undefined;
5
5
  export declare function sortItems<T>(items: Array<T>, sort: Sort): Array<T>;
6
6
  export declare function extendColumnDefsWithCheckboxes<T>(columnDefs: Array<ReactableColumnDef<T>>, onSelectChange: (selected: boolean, item: T) => void, onSelectAllChange: (selected: boolean) => void, selectedAll: boolean, selectedItems: Array<any>, uniqueItemKey: (arg0: T) => any): Array<ReactableColumnDef<T>>;
7
+ export declare function getClassName(tableName: string | undefined, columnName: string): string;
7
8
  //# sourceMappingURL=helper.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"helper.d.ts","sourceRoot":"","sources":["../../../../../src/components/reactable/helpers/helper.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAC,QAAQ,EAAE,IAAI,EAAE,kBAAkB,EAAC,MAAM,2BAA2B,CAAC;AAC7E,OAAO,EAAC,kBAAkB,EAAE,uBAAuB,EAAC,MAAM,UAAU,CAAC;AAErE,wBAAgB,YAAY,CAAC,CAAC,EAC7B,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,SAAS,EAClC,UAAU,EAAE,KAAK,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC,EAC1C,cAAc,EAAE,uBAAuB,EACvC,kBAAkB,EAAE,kBAAkB,EACtC,kBAAkB,EACf,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,gBAAgB,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,GACxG,IAAI,GACJ,SAAS,GACV,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,SAAS,CAehC;AAWD,wBAAgB,WAAW,CAAC,CAAC,EAC5B,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,SAAS,EAClC,UAAU,EAAE,KAAK,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC,EAC1C,cAAc,EAAE,uBAAuB,GACrC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,SAAS,CAyB7B;AAYD,wBAAgB,SAAS,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAkBlE;AAED,wBAAgB,8BAA8B,CAAC,CAAC,EAC/C,UAAU,EAAE,KAAK,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,EACxC,cAAc,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,KAAK,IAAI,EACpD,iBAAiB,EAAE,CAAC,QAAQ,EAAE,OAAO,KAAK,IAAI,EAC9C,WAAW,EAAE,OAAO,EACpB,aAAa,EAAE,KAAK,CAAC,GAAG,CAAC,EACzB,aAAa,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,GAAG,GAC7B,KAAK,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CA2B9B"}
1
+ {"version":3,"file":"helper.d.ts","sourceRoot":"","sources":["../../../../../src/components/reactable/helpers/helper.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAC,QAAQ,EAAE,IAAI,EAAE,kBAAkB,EAAC,MAAM,2BAA2B,CAAC;AAC7E,OAAO,EAAC,kBAAkB,EAAE,uBAAuB,EAAC,MAAM,UAAU,CAAC;AAErE,wBAAgB,YAAY,CAAC,CAAC,EAC7B,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,SAAS,EAClC,UAAU,EAAE,KAAK,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC,EAC1C,cAAc,EAAE,uBAAuB,EACvC,kBAAkB,EAAE,kBAAkB,EACtC,kBAAkB,EACf,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,gBAAgB,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,GACxG,IAAI,GACJ,SAAS,GACV,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,SAAS,CAehC;AAWD,wBAAgB,WAAW,CAAC,CAAC,EAC5B,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,SAAS,EAClC,UAAU,EAAE,KAAK,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC,EAC1C,cAAc,EAAE,uBAAuB,GACrC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,SAAS,CAyB7B;AAYD,wBAAgB,SAAS,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAkBlE;AAED,wBAAgB,8BAA8B,CAAC,CAAC,EAC/C,UAAU,EAAE,KAAK,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,EACxC,cAAc,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,KAAK,IAAI,EACpD,iBAAiB,EAAE,CAAC,QAAQ,EAAE,OAAO,KAAK,IAAI,EAC9C,WAAW,EAAE,OAAO,EACpB,aAAa,EAAE,KAAK,CAAC,GAAG,CAAC,EACzB,aAAa,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,GAAG,GAC7B,KAAK,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CA2B9B;AAED,wBAAgB,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAEtF"}
@@ -88,3 +88,6 @@ export function extendColumnDefsWithCheckboxes(columnDefs, onSelectChange, onSel
88
88
  ...columnDefs
89
89
  ];
90
90
  }
91
+ export function getClassName(tableName, columnName) {
92
+ return `${tableName || 'unnamedTable'}-${columnName}`;
93
+ }
@@ -29,6 +29,8 @@ export declare type Props<T, ID extends string | number | undefined | null = any
29
29
  onContentChange?: (content: Array<T>) => void;
30
30
  /** (Optional) Function, executed if filtered items change */
31
31
  onFilteredItemsChanged?: (filteredItems: Array<T>) => void;
32
+ /** (Optional) name of the table */
33
+ tableName?: string;
32
34
  /** (Optional) if true, makes rows clickable */
33
35
  clickable?: boolean;
34
36
  /** If equals *true* additional column with checkboxes is rendered */
@@ -1 +1 @@
1
- {"version":3,"file":"ReactableWithClientSidePagination.d.ts","sourceRoot":"","sources":["../../../../src/components/reactableWithClientSidePagination/ReactableWithClientSidePagination.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ReactableWithClientSidePagination.d.ts","sourceRoot":"","sources":["../../../../src/components/reactableWithClientSidePagination/ReactableWithClientSidePagination.tsx"],"names":[],"mappings":"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"}
@@ -146,10 +146,10 @@ export default class ReactableWithClientSidePagination extends React.Component {
146
146
  }
147
147
  }
148
148
  render() {
149
- const { uniqueItemKey, isLoading, columnDefs, rowDef, clickable, selectable, selectedItems, onChangeSize } = this.props;
149
+ const { uniqueItemKey, isLoading, columnDefs, rowDef, tableName, clickable, selectable, selectedItems, onChangeSize } = this.props;
150
150
  const finalColumnDefs = selectable
151
151
  ? extendColumnDefsWithCheckboxes(columnDefs, this.handleSelectChange, this.handleSelectAllChange, this.areSelectedAll(), selectedItems || [], uniqueItemKey)
152
152
  : columnDefs;
153
- return (React.createElement(Reactable, { columnDefs: finalColumnDefs, rowDef: rowDef, uniqueItemKey: uniqueItemKey, paginationSettings: this.state.paginationSettings, onChangePage: this.handleChangePage, onChangeSize: onChangeSize, onSort: this.handleSort, onFilter: this.handleFilter, pageable: this.getPageable(), isLoading: isLoading, clickable: clickable, "data-testid": this.props['data-testid'] }));
153
+ return (React.createElement(Reactable, { columnDefs: finalColumnDefs, rowDef: rowDef, uniqueItemKey: uniqueItemKey, paginationSettings: this.state.paginationSettings, onChangePage: this.handleChangePage, onChangeSize: onChangeSize, onSort: this.handleSort, onFilter: this.handleFilter, tableName: tableName, pageable: this.getPageable(), isLoading: isLoading, clickable: clickable, "data-testid": this.props['data-testid'] }));
154
154
  }
155
155
  }
@@ -40,7 +40,7 @@ describe('ReactableWithClientSidePagination.js', () => {
40
40
  it('should match snapshot', () => {
41
41
  const ReactableWithClientSidePaginationWrapper = render(
42
42
  // @ts-ignore
43
- React.createElement(ReactableWithClientSidePagination, { ...COMMON_PROPS, selectedItems: [], onSelectedItemsChange: () => { } }));
43
+ React.createElement(ReactableWithClientSidePagination, { ...COMMON_PROPS, selectedItems: [], onSelectedItemsChange: () => { }, tableName: 'test' }));
44
44
  expect(ReactableWithClientSidePaginationWrapper).toMatchSnapshot();
45
45
  });
46
46
  it('should call the callback with correct argument when checkbox is checked', async () => {
@@ -1 +1 @@
1
- {"version":3,"file":"DateTimeInput.d.ts","sourceRoot":"","sources":["../../../../../src/components/input/DateTimeInput.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA4B,MAAM,OAAO,CAAC;AAejD,oBAAY,KAAK,GAAG;IACnB,kDAAkD;IAClD,SAAS,EAAE,MAAM,CAAC;IAElB,oEAAoE;IACpE,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EAAE,aAAa,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;IAE7E,yDAAyD;IACzD,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB,+DAA+D;IAC/D,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB,2CAA2C;IAC3C,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,SAAS,CAAC,EAAE,IAAI,CAAC;IACjB,OAAO,CAAC,EAAE,IAAI,CAAC;IAEf,mEAAmE;IACnE,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB,0BAA0B;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,OAAO,UAAU,aAAa,CAAC,EACrC,SAAS,EACT,QAAQ,EACR,OAAO,EACP,QAAgB,EAChB,QAAQ,EACR,GAAG,UAAU,EACb,EAAE,KAAK,qBAwDP"}
1
+ {"version":3,"file":"DateTimeInput.d.ts","sourceRoot":"","sources":["../../../../../src/components/input/DateTimeInput.tsx"],"names":[],"mappings":"AACA,OAAO,KAA4B,MAAM,OAAO,CAAC;AAwBjD,oBAAY,KAAK,GAAG;IACnB,kDAAkD;IAClD,SAAS,EAAE,MAAM,CAAC;IAElB,oEAAoE;IACpE,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EAAE,aAAa,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;IAE7E,yDAAyD;IACzD,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB,+DAA+D;IAC/D,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB,2CAA2C;IAC3C,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,SAAS,CAAC,EAAE,IAAI,CAAC;IACjB,OAAO,CAAC,EAAE,IAAI,CAAC;IAEf,mEAAmE;IACnE,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB,0BAA0B;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,OAAO,UAAU,aAAa,CAAC,EACrC,SAAS,EACT,QAAQ,EACR,OAAO,EACP,QAAgB,EAChB,QAAQ,EACR,GAAG,UAAU,EACb,EAAE,KAAK,qBAgFP"}
@@ -1,7 +1,9 @@
1
+ import dayjs from 'dayjs';
1
2
  import React, { useEffect, useState } from 'react';
2
3
  import { dayjsTz } from '../periodpicker/periods';
3
4
  import DateInput from './DateInput';
4
5
  import ValidatedTextInput from './ValidatedTextInput';
6
+ import { toInteger } from 'lodash';
5
7
  const extractTime = (timezone, date) => {
6
8
  try {
7
9
  return dayjsTz(timezone, date).format('HH:mm');
@@ -11,6 +13,15 @@ const extractTime = (timezone, date) => {
11
13
  return '00:00';
12
14
  }
13
15
  };
16
+ const extractDate = (timezone, date) => {
17
+ try {
18
+ return dayjs(dayjsTz(timezone, date).format('YYYY-MM-DD'));
19
+ }
20
+ catch (error) {
21
+ console.error('DateTimeInput: Error while extracting time from date', error);
22
+ return dayjs(new Date());
23
+ }
24
+ };
14
25
  /**
15
26
  * Extends DateInput but also displaying the current time.
16
27
  * Usually the user's locale is used for displaying the correct date format.
@@ -23,17 +34,36 @@ export default function DateTimeInput({ timestamp, timezone, warning, readOnly =
23
34
  }, [timezone, timestamp]);
24
35
  function handleChangeDate(date, fromTextField) {
25
36
  const oldDate = dayjsTz(timezone, timestamp);
26
- onChange(dayjsTz(timezone, date).set('hour', oldDate.get('hour')).set('minute', oldDate.get('minute')).valueOf(), fromTextField);
37
+ const dateFix = dayjs(date);
38
+ let newDate = dayjsTz(timezone, date)
39
+ .set('day', dateFix.day())
40
+ .set('month', dateFix.month())
41
+ .set('year', dateFix.year())
42
+ .set('hour', toInteger(oldDate.hour()))
43
+ .set('minute', toInteger(oldDate.minute()));
44
+ const dstOffset = getLocalDstOffset(newDate);
45
+ newDate = newDate.subtract(dstOffset, 'minutes');
46
+ onChange(newDate.valueOf(), fromTextField);
47
+ }
48
+ function getMaxUtcOffset(year) {
49
+ const jan = new Date(`${year}-01-01`).getTimezoneOffset();
50
+ const jul = new Date(`${year}-07-01`).getTimezoneOffset();
51
+ return Math.min(jan, jul);
52
+ }
53
+ function getLocalDstOffset(newDate) {
54
+ return newDate.toDate().getTimezoneOffset() - getMaxUtcOffset(newDate.year());
27
55
  }
28
56
  function handleChangeTime(time, valid) {
29
57
  if (valid) {
30
58
  const [hours, minutes] = time.split(':');
31
- onChange(dayjsTz(timezone, timestamp)
59
+ const date = extractDate(timezone, timestamp);
60
+ const dateTime = dayjsTz(timezone, timestamp)
61
+ .set('date', date.date())
32
62
  .set('hour', parseInt(hours, 10))
33
63
  .set('minute', parseInt(minutes, 10))
34
64
  .set('second', 0)
35
- .set('millisecond', 0)
36
- .valueOf());
65
+ .set('millisecond', 0);
66
+ onChange(dateTime.valueOf());
37
67
  }
38
68
  setTime(time);
39
69
  }
@@ -43,7 +73,7 @@ export default function DateTimeInput({ timestamp, timezone, warning, readOnly =
43
73
  }
44
74
  }
45
75
  return (React.createElement("span", { className: `di date-time-input ${warning ? 'with-warning' : ''}` },
46
- React.createElement(DateInput, { ...otherProps, value: timestamp, onChange: handleChangeDate, readOnly: readOnly }),
76
+ React.createElement(DateInput, { ...otherProps, value: extractDate(timezone, timestamp).valueOf(), onChange: handleChangeDate, readOnly: readOnly }),
47
77
  React.createElement(ValidatedTextInput, { "data-testid": "time-input", value: timeValue, onChange: handleChangeTime, pattern: /^(([01][0-9])|2[0-3]):[0-5][0-9]$/, required: true, invalidStyle: {
48
78
  borderColor: 'red'
49
79
  }, placeholder: "00:00", className: "time", onBlur: tryFixTime, disabled: readOnly })));
@@ -1,7 +1,8 @@
1
1
  import React from 'react';
2
2
  import { describe, expect, it } from 'vitest';
3
3
  import DateTimeInput from '../DateTimeInput';
4
- import { render, screen } from '@testing-library/react';
4
+ import { act, render, screen } from '@testing-library/react';
5
+ import { userEvent } from '@storybook/testing-library';
5
6
  describe('DateTimeInput.js', () => {
6
7
  it('should update time when timestamp has changed', () => {
7
8
  const { rerender } = render(React.createElement(DateTimeInput, { timestamp: new Date('2019-02-01T11:11:00').getTime(), onChange: () => { } }));
@@ -10,4 +11,24 @@ describe('DateTimeInput.js', () => {
10
11
  rerender(React.createElement(DateTimeInput, { timestamp: new Date('2019-02-02T03:24:00').getTime(), onChange: () => { } }));
11
12
  expect(timeElement).toHaveDisplayValue('03:24');
12
13
  });
14
+ it('should display the time and date as timezone date', async () => {
15
+ const { rerender } = render(React.createElement(DateTimeInput, { timestamp: new Date('2019-02-01T11:11:00').getTime(), onChange: () => { }, timezone: "America/Vancouver" }));
16
+ const timeElementUtm = screen.queryByDisplayValue('11:11');
17
+ expect(timeElementUtm).not.toBeInTheDocument();
18
+ const timeElement = screen.queryByDisplayValue('03:11');
19
+ expect(timeElement).toBeInTheDocument();
20
+ const dateElement = screen.queryByDisplayValue('01.02.2019');
21
+ expect(dateElement).toBeInTheDocument();
22
+ rerender(React.createElement(DateTimeInput, { timestamp: new Date('2019-02-02T03:24:00').getTime(), onChange: () => { }, timezone: "America/Vancouver" }));
23
+ expect(timeElement).toHaveDisplayValue('19:24');
24
+ expect(dateElement).toHaveDisplayValue('01.02.2019');
25
+ await act(async () => {
26
+ dateElement?.click();
27
+ timeElement?.click();
28
+ userEvent.clear(timeElement);
29
+ userEvent.type(timeElement, '10:24');
30
+ });
31
+ expect(timeElement).toHaveDisplayValue('10:24');
32
+ expect(dateElement).toHaveDisplayValue('01.02.2019');
33
+ });
13
34
  });
@@ -16,6 +16,8 @@ export declare type Props<T, ID extends string | number | undefined | null = any
16
16
  onChangeSize?: (size: number) => void;
17
17
  /** (Optional) function, executed if the Reactable gets filtered */
18
18
  onFilter?: (filterSettings: ReactableFilterSettings) => void;
19
+ /** (Optional) name of the table */
20
+ tableName?: string;
19
21
  /** Content, totalElements, totalPages, number, size, sort */
20
22
  pageable: Pageable<T> | null | undefined;
21
23
  /** (Optional) can set custom event handler and/or functions in general */
@@ -1 +1 @@
1
- {"version":3,"file":"Reactable.d.ts","sourceRoot":"","sources":["../../../../../src/components/reactable/Reactable.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,OAAO,EAAC,kBAAkB,EAAE,eAAe,EAAE,uBAAuB,EAAC,MAAM,SAAS,CAAC;AACrF,OAAO,EAAC,QAAQ,EAAE,kBAAkB,EAAE,aAAa,EAAC,MAAM,wBAAwB,CAAC;AAEnF,oBAAY,KAAK,CAAC,CAAC,EAAE,EAAE,SAAS,MAAM,GAAG,MAAM,GAAG,SAAS,GAAG,IAAI,GAAG,GAAG,IAAI;IAC3E,+EAA+E;IAC/E,UAAU,EAAE,KAAK,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC;IAEzC,8DAA8D;IAC9D,aAAa,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,EAAE,CAAC;IAE/B,qCAAqC;IACrC,kBAAkB,EAAE,kBAAkB,CAAC;IAEvC,qDAAqD;IACrD,YAAY,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAErC,4CAA4C;IAC5C,MAAM,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,aAAa,KAAK,IAAI,CAAC;IAE7D,6DAA6D;IAC7D,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAEtC,mEAAmE;IACnE,QAAQ,CAAC,EAAE,CAAC,cAAc,EAAE,uBAAuB,KAAK,IAAI,CAAC;IAE7D,6DAA6D;IAC7D,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,SAAS,CAAC;IAEzC,0EAA0E;IAC1E,MAAM,CAAC,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC;IAE5B,uCAAuC;IACvC,SAAS,EAAE,OAAO,CAAC;IAEnB,+CAA+C;IAC/C,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB,wDAAwD;IACxD,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAE1B,aAAa,CAAC,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,OAAO,OAAO,SAAS,CAAC,CAAC,GAAG,GAAG,EAAE,EAAE,SAAS,MAAM,GAAG,MAAM,GAAG,SAAS,GAAG,IAAI,GAAG,GAAG,CAAE,SAAQ,KAAK,CAAC,SAAS,CACnH,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CACZ;IACA,MAAM;CAoBN"}
1
+ {"version":3,"file":"Reactable.d.ts","sourceRoot":"","sources":["../../../../../src/components/reactable/Reactable.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,OAAO,EAAC,kBAAkB,EAAE,eAAe,EAAE,uBAAuB,EAAC,MAAM,SAAS,CAAC;AACrF,OAAO,EAAC,QAAQ,EAAE,kBAAkB,EAAE,aAAa,EAAC,MAAM,wBAAwB,CAAC;AAEnF,oBAAY,KAAK,CAAC,CAAC,EAAE,EAAE,SAAS,MAAM,GAAG,MAAM,GAAG,SAAS,GAAG,IAAI,GAAG,GAAG,IAAI;IAC3E,+EAA+E;IAC/E,UAAU,EAAE,KAAK,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC;IAEzC,8DAA8D;IAC9D,aAAa,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,EAAE,CAAC;IAE/B,qCAAqC;IACrC,kBAAkB,EAAE,kBAAkB,CAAC;IAEvC,qDAAqD;IACrD,YAAY,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAErC,4CAA4C;IAC5C,MAAM,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,aAAa,KAAK,IAAI,CAAC;IAE7D,6DAA6D;IAC7D,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAEtC,mEAAmE;IACnE,QAAQ,CAAC,EAAE,CAAC,cAAc,EAAE,uBAAuB,KAAK,IAAI,CAAC;IAE7D,mCAAmC;IACnC,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,6DAA6D;IAC7D,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,SAAS,CAAC;IAEzC,0EAA0E;IAC1E,MAAM,CAAC,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC;IAE5B,uCAAuC;IACvC,SAAS,EAAE,OAAO,CAAC;IAEnB,+CAA+C;IAC/C,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB,wDAAwD;IACxD,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAE1B,aAAa,CAAC,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,OAAO,OAAO,SAAS,CAAC,CAAC,GAAG,GAAG,EAAE,EAAE,SAAS,MAAM,GAAG,MAAM,GAAG,SAAS,GAAG,IAAI,GAAG,GAAG,CAAE,SAAQ,KAAK,CAAC,SAAS,CACnH,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CACZ;IACA,MAAM;CAoBN"}
@@ -7,6 +7,7 @@ declare type Props<T, ID extends string | number | undefined | null> = {
7
7
  paginationSettings: PaginationSettings;
8
8
  onSort: (property: string, direction: SortDirection) => void;
9
9
  onFilter?: (filterSettings: ReactableFilterSettings) => void;
10
+ tableName?: string;
10
11
  pageable?: Pageable<T> | null;
11
12
  isLoading: boolean;
12
13
  rowDef?: ReactableRowDef<T>;
@@ -14,6 +15,6 @@ declare type Props<T, ID extends string | number | undefined | null> = {
14
15
  messageWhenEmpty?: string;
15
16
  'data-testid'?: string;
16
17
  };
17
- export default function ReactableTable<T, ID extends string | number | undefined | null>({ columnDefs, uniqueItemKey, paginationSettings, onSort, onFilter, pageable, isLoading, rowDef, clickable, messageWhenEmpty, 'data-testid': testId }: Props<T, ID>): React.JSX.Element;
18
+ export default function ReactableTable<T, ID extends string | number | undefined | null>({ columnDefs, uniqueItemKey, paginationSettings, onSort, onFilter, tableName, pageable, isLoading, rowDef, clickable, messageWhenEmpty, 'data-testid': testId }: Props<T, ID>): React.JSX.Element;
18
19
  export {};
19
20
  //# sourceMappingURL=ReactableTable.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ReactableTable.d.ts","sourceRoot":"","sources":["../../../../../../src/components/reactable/helpers/ReactableTable.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAoC,MAAM,OAAO,CAAC;AAQzD,OAAO,EAAC,kBAAkB,EAAE,eAAe,EAAE,uBAAuB,EAAC,MAAM,UAAU,CAAC;AACtF,OAAO,EAAC,QAAQ,EAAE,kBAAkB,EAAE,aAAa,EAAC,MAAM,2BAA2B,CAAC;AAGtF,aAAK,KAAK,CAAC,CAAC,EAAE,EAAE,SAAS,MAAM,GAAG,MAAM,GAAG,SAAS,GAAG,IAAI,IAAI;IAC9D,UAAU,EAAE,kBAAkB,CAAC,CAAC,CAAC,EAAE,CAAC;IACpC,aAAa,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,EAAE,CAAC;IAC/B,kBAAkB,EAAE,kBAAkB,CAAC;IACvC,MAAM,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,aAAa,KAAK,IAAI,CAAC;IAC7D,QAAQ,CAAC,EAAE,CAAC,cAAc,EAAE,uBAAuB,KAAK,IAAI,CAAC;IAC7D,QAAQ,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;IAC9B,SAAS,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC;IAC5B,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,aAAa,CAAC,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF,MAAM,CAAC,OAAO,UAAU,cAAc,CAAC,CAAC,EAAE,EAAE,SAAS,MAAM,GAAG,MAAM,GAAG,SAAS,GAAG,IAAI,EAAE,EACxF,UAAU,EACV,aAAa,EACb,kBAAkB,EAClB,MAAM,EACN,QAAQ,EACR,QAAQ,EACR,SAAS,EACT,MAAM,EACN,SAAS,EACT,gBAAgB,EAChB,aAAa,EAAE,MAAM,EACrB,EAAE,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,qBAkHd"}
1
+ {"version":3,"file":"ReactableTable.d.ts","sourceRoot":"","sources":["../../../../../../src/components/reactable/helpers/ReactableTable.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAoC,MAAM,OAAO,CAAC;AAQzD,OAAO,EAAC,kBAAkB,EAAE,eAAe,EAAE,uBAAuB,EAAC,MAAM,UAAU,CAAC;AACtF,OAAO,EAAC,QAAQ,EAAE,kBAAkB,EAAE,aAAa,EAAC,MAAM,2BAA2B,CAAC;AAGtF,aAAK,KAAK,CAAC,CAAC,EAAE,EAAE,SAAS,MAAM,GAAG,MAAM,GAAG,SAAS,GAAG,IAAI,IAAI;IAC9D,UAAU,EAAE,kBAAkB,CAAC,CAAC,CAAC,EAAE,CAAC;IACpC,aAAa,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,EAAE,CAAC;IAC/B,kBAAkB,EAAE,kBAAkB,CAAC;IACvC,MAAM,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,aAAa,KAAK,IAAI,CAAC;IAC7D,QAAQ,CAAC,EAAE,CAAC,cAAc,EAAE,uBAAuB,KAAK,IAAI,CAAC;IAC7D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;IAC9B,SAAS,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC;IAC5B,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,aAAa,CAAC,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF,MAAM,CAAC,OAAO,UAAU,cAAc,CAAC,CAAC,EAAE,EAAE,SAAS,MAAM,GAAG,MAAM,GAAG,SAAS,GAAG,IAAI,EAAE,EACxF,UAAU,EACV,aAAa,EACb,kBAAkB,EAClB,MAAM,EACN,QAAQ,EACR,SAAS,EACT,QAAQ,EACR,SAAS,EACT,MAAM,EACN,SAAS,EACT,gBAAgB,EAChB,aAAa,EAAE,MAAM,EACrB,EAAE,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,qBAmId"}
@@ -6,11 +6,12 @@ import ReactableTableRow from './ReactableTableRow';
6
6
  import ReactableTableHeader from './ReactableTableHeader';
7
7
  import ReactableTableFilterRow from './ReactableTableFilterRow';
8
8
  import { readAccountObject, writeAccountObject } from '@deviceinsight/ng-ui-api-client';
9
- export default function ReactableTable({ columnDefs, uniqueItemKey, paginationSettings, onSort, onFilter, pageable, isLoading, rowDef, clickable, messageWhenEmpty, 'data-testid': testId }) {
9
+ export default function ReactableTable({ columnDefs, uniqueItemKey, paginationSettings, onSort, onFilter, tableName, pageable, isLoading, rowDef, clickable, messageWhenEmpty, 'data-testid': testId }) {
10
10
  const containerRef = useRef(null);
11
11
  const tableRef = useRef(null);
12
12
  const [showScrollingAdvice, setShowScrollingAdvice] = useState(false);
13
- const [neverShowScrollingAdvice, setNeverShowScrollingAdvice] = useState(false);
13
+ const [neverShowScrollingAdvice, setNeverShowScrollingAdvice] = useState(true);
14
+ const [hasInitialized, setHasInitialized] = useState(false);
14
15
  const HIDE_SCROLLING_ADVICE_PATH = 'uiConfigurations/nevershowscrollingadvice';
15
16
  const neverShowScrollingAdviceRef = useRef(neverShowScrollingAdvice);
16
17
  useEffect(() => {
@@ -22,14 +23,25 @@ export default function ReactableTable({ columnDefs, uniqueItemKey, paginationSe
22
23
  }
23
24
  };
24
25
  useEffect(() => {
25
- readAccountObject(HIDE_SCROLLING_ADVICE_PATH).then((value) => {
26
- const neverShow = value === undefined ? false : value;
27
- setNeverShowScrollingAdvice(neverShow);
28
- neverShowScrollingAdviceRef.current = neverShow;
29
- if (containerRef.current && tableRef.current) {
30
- updateScrollingAdvice();
31
- }
32
- });
26
+ setTimeout(() => {
27
+ (async () => {
28
+ try {
29
+ const value = await readAccountObject(HIDE_SCROLLING_ADVICE_PATH);
30
+ const neverShow = value === true;
31
+ setNeverShowScrollingAdvice(neverShow);
32
+ neverShowScrollingAdviceRef.current = neverShow;
33
+ if (!neverShow) {
34
+ updateScrollingAdvice();
35
+ }
36
+ }
37
+ catch (error) {
38
+ setNeverShowScrollingAdvice(false);
39
+ neverShowScrollingAdviceRef.current = false;
40
+ updateScrollingAdvice();
41
+ }
42
+ setHasInitialized(true);
43
+ })();
44
+ }, 0);
33
45
  }, []);
34
46
  useEffect(() => {
35
47
  updateScrollingAdvice();
@@ -39,7 +51,7 @@ export default function ReactableTable({ columnDefs, uniqueItemKey, paginationSe
39
51
  const showFilterRow = columnDefs.some((col) => col.filterable);
40
52
  return (React.createElement(SpinnerContainer, { show: isLoading },
41
53
  React.createElement("div", { ref: containerRef, className: "di reactable scroll-x" },
42
- showScrollingAdvice && !isLoading && (React.createElement(Modal, { className: "scroll-horizontally-advice", content: React.createElement("div", null,
54
+ hasInitialized && showScrollingAdvice && !isLoading && (React.createElement(Modal, { className: "scroll-horizontally-advice", content: React.createElement("div", null,
43
55
  React.createElement(Trans, { i18nKey: "reactable.scrollHorizontally.advice" }, "SHIFT + mouse wheel to scroll horizontally"),
44
56
  React.createElement("div", { className: "scroll-horizontally-advice-buttons" },
45
57
  React.createElement(Button, { primary: true, onClick: async () => {
@@ -53,13 +65,13 @@ export default function ReactableTable({ columnDefs, uniqueItemKey, paginationSe
53
65
  React.createElement(Trans, { i18nKey: "reactable.scrollHorizontally.ok" }, "OK")))), width: '40%' })),
54
66
  React.createElement("table", { ref: tableRef, className: cx('di reactable sortable hoverable', { selectable: clickable }), "data-testid": testId },
55
67
  React.createElement("thead", null,
56
- React.createElement(ReactableTableHeader, { columnDefs: columnDefs, paginationSettings: paginationSettings, onSort: onSort })),
68
+ React.createElement(ReactableTableHeader, { columnDefs: columnDefs, paginationSettings: paginationSettings, onSort: onSort, tableName: tableName })),
57
69
  React.createElement("tbody", null,
58
- onFilter && showFilterRow && (React.createElement(ReactableTableFilterRow, { columnDefs: columnDefs, onFilter: onFilter })),
70
+ onFilter && showFilterRow && (React.createElement(ReactableTableFilterRow, { columnDefs: columnDefs, onFilter: onFilter, tableName: tableName })),
59
71
  pageable?.content.length
60
72
  ? pageable.content
61
73
  .slice(0, paginationSettings.size)
62
- .map((item) => (React.createElement(ReactableTableRow, { key: uniqueItemKey(item), columnDefs: columnDefs, item: item, rowDef: rowDef })))
74
+ .map((item) => (React.createElement(ReactableTableRow, { key: uniqueItemKey(item), columnDefs: columnDefs, item: item, rowDef: rowDef, tableName: tableName })))
63
75
  : !isLoading && (React.createElement("tr", null,
64
76
  React.createElement("td", { colSpan: columnDefs.length },
65
77
  React.createElement(Trans, { i18nKey: messageWhenEmpty ?? 'reactable.noEntriesFound' }, "No entries found")))))))));
@@ -3,6 +3,7 @@ import { ReactableColumnDef, ReactableFilterSettings } from '../types';
3
3
  declare type Props = {
4
4
  columnDefs: Array<ReactableColumnDef<any>>;
5
5
  onFilter: (filterColumns: ReactableFilterSettings) => void;
6
+ tableName?: string;
6
7
  };
7
8
  declare const ReactableTableFilterRow: React.FC<Props>;
8
9
  export default ReactableTableFilterRow;
@@ -1 +1 @@
1
- {"version":3,"file":"ReactableTableFilterRow.d.ts","sourceRoot":"","sources":["../../../../../../src/components/reactable/helpers/ReactableTableFilterRow.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA4B,MAAM,OAAO,CAAC;AAEjD,OAAO,EAAC,kBAAkB,EAAE,uBAAuB,EAAC,MAAM,UAAU,CAAC;AAGrE,aAAK,KAAK,GAAG;IACZ,UAAU,EAAE,KAAK,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC;IAC3C,QAAQ,EAAE,CAAC,aAAa,EAAE,uBAAuB,KAAK,IAAI,CAAC;CAC3D,CAAC;AAEF,QAAA,MAAM,uBAAuB,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CAuF5C,CAAC;AAEF,eAAe,uBAAuB,CAAC"}
1
+ {"version":3,"file":"ReactableTableFilterRow.d.ts","sourceRoot":"","sources":["../../../../../../src/components/reactable/helpers/ReactableTableFilterRow.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA4B,MAAM,OAAO,CAAC;AAEjD,OAAO,EAAC,kBAAkB,EAAE,uBAAuB,EAAC,MAAM,UAAU,CAAC;AAIrE,aAAK,KAAK,GAAG;IACZ,UAAU,EAAE,KAAK,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC;IAC3C,QAAQ,EAAE,CAAC,aAAa,EAAE,uBAAuB,KAAK,IAAI,CAAC;IAC3D,SAAS,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,QAAA,MAAM,uBAAuB,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CAuF5C,CAAC;AAEF,eAAe,uBAAuB,CAAC"}
@@ -1,7 +1,8 @@
1
1
  import React, { useEffect, useState } from 'react';
2
2
  import { useTranslation } from '../../../i18n';
3
3
  import ReactableTextFilter from './ReactableTextFilter';
4
- const ReactableTableFilterRow = ({ columnDefs, onFilter }) => {
4
+ import { getClassName } from './helper';
5
+ const ReactableTableFilterRow = ({ columnDefs, onFilter, tableName }) => {
5
6
  const { t } = useTranslation();
6
7
  const [state, setState] = useState({});
7
8
  useEffect(() => {
@@ -46,7 +47,7 @@ const ReactableTableFilterRow = ({ columnDefs, onFilter }) => {
46
47
  React.createElement("option", { key: "", value: "" }, t('reactable.filter.all', {
47
48
  defaultValue: '- All -'
48
49
  })),
49
- filterOptions.map((option) => (React.createElement("option", { key: option.value, value: option.value }, typeof option.label === 'string'
50
+ filterOptions.map((option) => (React.createElement("option", { className: getClassName(tableName, columnDef.name), key: option.value, value: option.value }, typeof option.label === 'string'
50
51
  ? option.label
51
52
  : t(option.label.id, {
52
53
  defaultValue: option.label.defaultValue
@@ -5,10 +5,11 @@ declare type Props = {
5
5
  columnDefs: Array<ReactableColumnDef<any>>;
6
6
  paginationSettings: PaginationSettings;
7
7
  onSort: (property: string, direction: SortDirection) => void;
8
+ tableName?: string;
8
9
  };
9
10
  export default class ReactableTableHeader extends React.Component<Props> {
10
11
  handleSort: (columnDef: ReactableColumnDef<unknown>) => void;
11
- getClassName: (columnDef: ReactableColumnDef<any>) => "" | "sortable sortAsc" | "sortable sortDes" | "sortable";
12
+ getClassName: (columnDef: ReactableColumnDef<any>) => string;
12
13
  printLabel: (label: ReactableColumnLabel) => string | number | boolean | Iterable<React.ReactNode> | React.JSX.Element | import("../../../types/i18n").TranslationDescriptor | null | undefined;
13
14
  render(): React.JSX.Element;
14
15
  }