@truedat/core 7.5.13 → 7.5.15

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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@truedat/core",
3
- "version": "7.5.13",
3
+ "version": "7.5.15",
4
4
  "description": "Truedat Web Core",
5
5
  "sideEffects": false,
6
6
  "module": "src/index.js",
@@ -48,7 +48,7 @@
48
48
  "@testing-library/jest-dom": "^6.6.3",
49
49
  "@testing-library/react": "^16.3.0",
50
50
  "@testing-library/user-event": "^14.6.1",
51
- "@truedat/test": "7.5.13",
51
+ "@truedat/test": "7.5.15",
52
52
  "identity-obj-proxy": "^3.0.0",
53
53
  "jest": "^29.7.0",
54
54
  "redux-saga-test-plan": "^4.0.6"
@@ -80,11 +80,10 @@
80
80
  "redux-saga": "^1.3.0",
81
81
  "redux-saga-routines": "^3.2.3",
82
82
  "reselect": "^5.1.1",
83
- "semantic-ui-calendar-react": "^0.15.3",
84
83
  "semantic-ui-react": "^3.0.0-beta.2",
85
84
  "slate": "^0.47.9",
86
85
  "slate-react": "^0.22.10",
87
86
  "swr": "^2.3.3"
88
87
  },
89
- "gitHead": "83de799e59c0d13d4d52812070d232d24f0b5f82"
88
+ "gitHead": "04f73182eb588f745d0f5ff18181f5612dd5b936"
90
89
  }
@@ -3,7 +3,6 @@ import moment from "moment";
3
3
  import PropTypes from "prop-types";
4
4
  import { useIntl } from "react-intl";
5
5
  import { Form, Input, Label, Dropdown } from "semantic-ui-react";
6
- import { DatesRangeInput } from "semantic-ui-calendar-react";
7
6
 
8
7
  const typeOptions = ({ formatMessage }) => [
9
8
  {
@@ -47,8 +46,6 @@ const dateUnitOptions = ({ formatMessage }) => [
47
46
  ];
48
47
 
49
48
  const validNumber = (value) => RegExp("^\\d+$").test(value);
50
- const validRange = (value) =>
51
- RegExp("^\\d{4}-\\d\\d-\\d\\d *- *\\d{4}-\\d\\d-\\d\\d$").test(value);
52
49
 
53
50
  export const DateFilter = ({
54
51
  label,
@@ -56,20 +53,20 @@ export const DateFilter = ({
56
53
  defaultValues,
57
54
  size = "small",
58
55
  name = "date",
59
- dateFormat = "YYYY-MM-DD",
60
56
  }) => {
61
57
  const intl = useIntl();
62
58
  const [type, setType] = useState(defaultValues?.type || "since");
63
59
  const [unit, setUnit] = useState(defaultValues?.unit || "d");
64
60
  const [value, setValue] = useState(defaultValues?.value || "1");
65
- const [range, setRange] = useState(defaultValues?.range || "");
61
+ const [rangeStart, setRangeStart] = useState(defaultValues?.rangeStart || "");
62
+ const [rangeEnd, setRangeEnd] = useState(defaultValues?.rangeEnd || "");
66
63
 
67
64
  useEffect(() => {
68
- const valid = type === "range" ? validRange(range) : validNumber(value);
65
+ const valid = type === "range" || validNumber(value);
69
66
  if (valid) {
70
- onChange({ name, type, range, unit, value });
67
+ onChange({ name, type, unit, value, rangeStart, rangeEnd });
71
68
  }
72
- }, [name, type, unit, value, range]);
69
+ }, [name, type, unit, value, rangeStart, rangeEnd]);
73
70
 
74
71
  const currentDate = moment();
75
72
  return (
@@ -86,18 +83,18 @@ export const DateFilter = ({
86
83
  </Form.Field>
87
84
  <Form.Field className={type}>
88
85
  {type === "range" ? (
89
- <DatesRangeInput
90
- animation={null}
91
- name="range"
92
- placeholder="yyyy-mm-dd - yyyy-mm-dd"
93
- iconPosition="left"
94
- icon="calendar alternate outline"
95
- allowSameEndDate
96
- value={range}
97
- maxDate={currentDate}
98
- onChange={(_e, { value }) => setRange(value)}
99
- dateFormat={dateFormat}
100
- />
86
+ <Form.Group>
87
+ <Form.Input
88
+ onChange={(_e, { value }) => setRangeStart(value)}
89
+ value={rangeStart}
90
+ type="date"
91
+ />
92
+ <Form.Input
93
+ onChange={(_e, { value }) => setRangeEnd(value)}
94
+ value={rangeEnd}
95
+ type="date"
96
+ />
97
+ </Form.Group>
101
98
  ) : (
102
99
  <Input
103
100
  labelPosition="right"
@@ -1,42 +1,26 @@
1
1
  import { useEffect, useState } from "react";
2
- import moment from "moment";
3
2
  import PropTypes from "prop-types";
4
- import { DatesRangeInput } from "semantic-ui-calendar-react";
3
+ import { Form } from "semantic-ui-react";
5
4
 
6
- const validNumber = (value) => RegExp("^\\d+$").test(value);
7
- const validRange = (value) =>
8
- RegExp("^\\d{4}-\\d\\d-\\d\\d *- *\\d{4}-\\d\\d-\\d\\d$").test(value);
9
-
10
- export const DateRangeFilter = ({
11
- onChange,
12
- defaultValues,
13
- name = "date",
14
- dateFormat = "YYYY-MM-DD",
15
- }) => {
16
- const type = "range";
17
- const unit = defaultValues?.unit || "d";
18
- const value = defaultValues?.value || "1";
19
- const [range, setRange] = useState(defaultValues?.range || "");
5
+ export const DateRangeFilter = ({ onChange, defaultValues, name = "date" }) => {
6
+ const [rangeStart, setRangeStart] = useState(defaultValues?.rangeStart || "");
7
+ const [rangeEnd, setRangeEnd] = useState(defaultValues?.rangeEnd || "");
20
8
  useEffect(() => {
21
- const valid = type === "range" ? validRange(range) : validNumber(value);
22
- if (valid) {
23
- onChange({ name, type, range, unit, value });
24
- }
25
- }, [name, type, unit, value, range, onChange]);
26
- const currentDate = moment();
9
+ onChange({ name, type: "range", rangeStart, rangeEnd });
10
+ }, [name, rangeStart, rangeEnd, onChange]);
27
11
  return (
28
- <DatesRangeInput
29
- animation={null}
30
- name="range"
31
- placeholder="yyyy-mm-dd - yyyy-mm-dd"
32
- iconPosition="left"
33
- icon="calendar alternate outline"
34
- allowSameEndDate
35
- value={range}
36
- maxDate={currentDate}
37
- onChange={(_e, { value }) => setRange(value)}
38
- dateFormat={dateFormat}
39
- />
12
+ <Form.Group inline>
13
+ <Form.Input
14
+ onChange={(_e, { value }) => setRangeStart(value)}
15
+ value={rangeStart}
16
+ type="date"
17
+ />
18
+ <Form.Input
19
+ onChange={(_e, { value }) => setRangeEnd(value)}
20
+ value={rangeEnd}
21
+ type="date"
22
+ />
23
+ </Form.Group>
40
24
  );
41
25
  };
42
26
 
@@ -50,8 +50,8 @@ const LayoutFlow = ({ initialNodes, initialEdges, onNodeClick }) => {
50
50
  layoutOptions: layoutOptions,
51
51
  children: getNodes().map((node) => ({
52
52
  ...node,
53
- width: node.measured.width,
54
- height: node.measured.height,
53
+ width: node.measured?.width,
54
+ height: node.measured?.height,
55
55
  })),
56
56
  edges: getEdges(),
57
57
  };
@@ -1,16 +1,20 @@
1
1
  import _ from "lodash/fp";
2
2
  import { useEffect } from "react";
3
- import { useDispatch } from "react-redux";
3
+ import { useDispatch, useSelector } from "react-redux";
4
4
  import { useLocation } from "react-router";
5
5
  import { dismissAlert } from "../routines";
6
+ import { getMessage } from "../selectors";
6
7
 
7
8
  export default function RouteListener() {
8
- const location = useLocation();
9
+ const { pathname } = useLocation();
9
10
  const dispatch = useDispatch();
11
+ const message = useSelector(getMessage);
10
12
 
11
13
  useEffect(() => {
12
- dispatch(dismissAlert());
13
- }, [location.pathname, dispatch]);
14
+ if (!_.isEmpty(message)) {
15
+ dispatch(dismissAlert());
16
+ }
17
+ }, [pathname]);
14
18
 
15
19
  return null;
16
20
  }
@@ -23,6 +23,9 @@ describe("<RouteListener />", () => {
23
23
  const { rerender } = render(<RouteListener />, {
24
24
  routes: ["/initial"],
25
25
  dispatch: mockDispatch,
26
+ state: {
27
+ ddMessage: { content: "test" },
28
+ },
26
29
  });
27
30
 
28
31
  // Change location
@@ -30,6 +33,9 @@ describe("<RouteListener />", () => {
30
33
  routes: ["/initial", "/different"],
31
34
  routeIndex: 1,
32
35
  dispatch: mockDispatch,
36
+ state: {
37
+ ddMessage: { content: "test" },
38
+ },
33
39
  });
34
40
 
35
41
  expect(mockDispatch).toHaveBeenCalledWith(routines.dismissAlert());
@@ -34,7 +34,8 @@ describe("selectors: makeDateFiltersSelector", () => {
34
34
  active: true,
35
35
  name,
36
36
  type: "range",
37
- range: "2020-01-01 - 2020-02-02",
37
+ rangeStart: "2020-01-01",
38
+ rangeEnd: "2020-02-02",
38
39
  };
39
40
  const state = { foo };
40
41
  expect(selector(state)).toEqual({
@@ -1,31 +1,47 @@
1
1
  import _ from "lodash/fp";
2
+ import { createSelector } from "reselect";
2
3
 
3
- export const getMessage = ({
4
- auditMessage,
5
- authMessage,
6
- bgMessage,
7
- coreMessage,
8
- ddMessage,
9
- dfMessage,
10
- dlMessage,
11
- dqMessage,
12
- ieMessage,
13
- imMessage,
14
- cxMessage,
15
- }) =>
16
- _.defaultTo(
17
- {},
18
- _.find(_.negate(_.isEmpty))([
19
- auditMessage,
20
- authMessage,
21
- bgMessage,
22
- ddMessage,
23
- dfMessage,
24
- dlMessage,
25
- dqMessage,
26
- ieMessage,
27
- coreMessage,
28
- imMessage,
29
- cxMessage,
30
- ])
31
- );
4
+ export const getMessage = createSelector(
5
+ [
6
+ _.prop("auditMessage"),
7
+ _.prop("authMessage"),
8
+ _.prop("bgMessage"),
9
+ _.prop("coreMessage"),
10
+ _.prop("ddMessage"),
11
+ _.prop("dfMessage"),
12
+ _.prop("dlMessage"),
13
+ _.prop("dqMessage"),
14
+ _.prop("ieMessage"),
15
+ _.prop("imMessage"),
16
+ _.prop("cxMessage"),
17
+ ],
18
+ (
19
+ auditMessage,
20
+ authMessage,
21
+ bgMessage,
22
+ coreMessage,
23
+ ddMessage,
24
+ dfMessage,
25
+ dlMessage,
26
+ dqMessage,
27
+ ieMessage,
28
+ imMessage,
29
+ cxMessage
30
+ ) =>
31
+ _.defaultTo(
32
+ {},
33
+ _.find(_.negate(_.isEmpty))([
34
+ auditMessage,
35
+ authMessage,
36
+ bgMessage,
37
+ ddMessage,
38
+ dfMessage,
39
+ dlMessage,
40
+ dqMessage,
41
+ ieMessage,
42
+ coreMessage,
43
+ imMessage,
44
+ cxMessage,
45
+ ])
46
+ )
47
+ );
@@ -9,25 +9,26 @@ import {
9
9
  } from "lodash/fp";
10
10
 
11
11
  const relativeDate = ({ unit, value }) => `now-${value}${unit}`;
12
- const toDateRange = ([from, to]) => ({ gte: from, lt: `${to}||+1d` });
13
12
  const sinceDate = ({ name, ...props }) => ({
14
13
  [name]: { gte: relativeDate(props) },
15
14
  });
16
15
  const untilDate = ({ name, ...props }) => ({
17
16
  [name]: { lt: relativeDate(props) },
18
17
  });
19
- const dateRange = ({ name, range }) => ({
20
- [name]: toDateRange(split(" - ")(range)),
18
+ const dateRange = ({ name, rangeStart, rangeEnd }) => ({
19
+ [name]: {
20
+ ...(rangeStart ? { gte: rangeStart } : {}),
21
+ ...(rangeEnd ? { lt: `${rangeEnd}||+1d` } : {}),
22
+ },
21
23
  });
22
24
 
23
- const grantDateRange = ({ name, range }) => {
25
+ const grantDateRange = ({ name, rangeStart, rangeEnd }) => {
24
26
  const [start_date, end_date] = split(",")(name);
25
- const [from, to] = split(" - ")(range);
26
27
 
27
- return from && to
28
+ return rangeStart || rangeEnd
28
29
  ? {
29
- [start_date]: { gte: from },
30
- [end_date]: { lt: to },
30
+ ...(rangeStart ? { [start_date]: { gte: rangeStart } } : {}),
31
+ ...(rangeEnd ? { [end_date]: { lt: rangeEnd } } : {}),
31
32
  }
32
33
  : constant(empty);
33
34
  };
@@ -0,0 +1,13 @@
1
+ import { use, createContext } from "react";
2
+
3
+ const defaultContext = { disable_td_ai: false };
4
+ export const WebContext = createContext(defaultContext);
5
+ export const WebContextProvider = ({ children, value = {} }) => {
6
+ return (
7
+ <WebContext.Provider value={{ ...defaultContext, ...value }}>
8
+ {children}
9
+ </WebContext.Provider>
10
+ );
11
+ };
12
+
13
+ export const useWebContext = () => use(WebContext);