@inseefr/lunatic 3.4.15 → 3.4.16
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/esm/stories/overview/sourceWithHierarchy.json +5151 -0
- package/esm/use-lunatic/hooks/useOverview.d.ts +1 -1
- package/esm/use-lunatic/hooks/useOverview.js +19 -14
- package/esm/use-lunatic/hooks/useOverview.js.map +1 -1
- package/esm/use-lunatic/hooks/useOverview.spec.d.ts +1 -0
- package/esm/use-lunatic/hooks/useOverview.spec.js +38 -0
- package/esm/use-lunatic/hooks/useOverview.spec.js.map +1 -0
- package/esm/use-lunatic/test.utils.d.ts +2 -0
- package/esm/use-lunatic/test.utils.js +13 -0
- package/esm/use-lunatic/test.utils.js.map +1 -0
- package/package.json +17 -1
- package/src/stories/overview/overview.stories.jsx +9 -0
- package/src/use-lunatic/hooks/useOverview.spec.ts +42 -0
- package/src/use-lunatic/hooks/useOverview.ts +41 -18
- package/src/use-lunatic/test.utils.ts +17 -0
- package/src/use-lunatic/use-lunatic.test.ts +2 -17
- package/stories/overview/sourceWithHierarchy.json +5151 -0
- package/tsconfig.build.tsbuildinfo +1 -1
- package/use-lunatic/hooks/useOverview.d.ts +1 -1
- package/use-lunatic/hooks/useOverview.js +19 -14
- package/use-lunatic/hooks/useOverview.js.map +1 -1
- package/use-lunatic/hooks/useOverview.spec.d.ts +1 -0
- package/use-lunatic/hooks/useOverview.spec.js +43 -0
- package/use-lunatic/hooks/useOverview.spec.js.map +1 -0
- package/use-lunatic/test.utils.d.ts +2 -0
- package/use-lunatic/test.utils.js +17 -0
- package/use-lunatic/test.utils.js.map +1 -0
|
@@ -13,4 +13,4 @@ export type InterpretedLunaticOverviewItem = {
|
|
|
13
13
|
/**
|
|
14
14
|
* Build a filled overview everytime the deps change.
|
|
15
15
|
*/
|
|
16
|
-
export declare const useOverview: ({ overview, executeExpression, pager, }: Pick<LunaticReducerState, "executeExpression" | "overview" | "pager">, deps: DependencyList) => InterpretedLunaticOverviewItem[];
|
|
16
|
+
export declare const useOverview: ({ overview, executeExpression, pager, options, }: Pick<LunaticReducerState, "executeExpression" | "overview" | "pager" | "options">, deps: DependencyList) => InterpretedLunaticOverviewItem[];
|
|
@@ -6,18 +6,21 @@ const page_tag_1 = require("../commons/page-tag");
|
|
|
6
6
|
/**
|
|
7
7
|
* Build a filled overview everytime the deps change.
|
|
8
8
|
*/
|
|
9
|
-
const useOverview = ({ overview, executeExpression, pager, }, deps) => {
|
|
10
|
-
return (0, react_1.useMemo)(() => interpretOverview(overview, executeExpression, pager),
|
|
9
|
+
const useOverview = ({ overview, executeExpression, pager, options, }, deps) => {
|
|
10
|
+
return (0, react_1.useMemo)(() => interpretOverview(overview, executeExpression, pager, options.disableFilters),
|
|
11
11
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
12
|
-
[...deps, overview]);
|
|
12
|
+
[...deps, overview, options.disableFilters]);
|
|
13
13
|
};
|
|
14
14
|
exports.useOverview = useOverview;
|
|
15
15
|
/**
|
|
16
16
|
* Use Lunatic data to interpret the static overview (calculated on init) with the real data.
|
|
17
17
|
*/
|
|
18
|
-
const interpretOverview = (overviewItems, executeExpression, pager) => {
|
|
18
|
+
const interpretOverview = (overviewItems, executeExpression, pager, disableFilters) => {
|
|
19
19
|
// Flat structure of the overview
|
|
20
|
-
let items = overviewItems.reduce((acc, item) => interpretOverviewItem(acc, item, executeExpression,
|
|
20
|
+
let items = overviewItems.reduce((acc, item) => interpretOverviewItem(acc, item, executeExpression, {
|
|
21
|
+
pager,
|
|
22
|
+
disableFilters,
|
|
23
|
+
}), []);
|
|
21
24
|
// Sort using the page logic
|
|
22
25
|
items = items.sort((a, b) => (0, page_tag_1.pageTagComparator)(a.page, b.page));
|
|
23
26
|
// Build a tree with nested item, a subsequence will be a child of the previous sequence
|
|
@@ -40,24 +43,28 @@ const interpretOverview = (overviewItems, executeExpression, pager) => {
|
|
|
40
43
|
/**
|
|
41
44
|
* Interpret expression inside an item (label & condition).
|
|
42
45
|
*/
|
|
43
|
-
const interpretOverviewItem = (items, item, executeExpression,
|
|
46
|
+
const interpretOverviewItem = (items, item, executeExpression, state, iteration) => {
|
|
44
47
|
// We reached a loop item, we need to add it multiple time
|
|
45
48
|
if (item.iterations && iteration === undefined) {
|
|
46
49
|
const iterations = executeExpression(item.iterations) ?? 0;
|
|
47
50
|
return Array.from({ length: iterations }).reduce((acc, _, k) => {
|
|
48
|
-
return interpretOverviewItem(acc, item, executeExpression,
|
|
51
|
+
return interpretOverviewItem(acc, item, executeExpression, state, k);
|
|
49
52
|
}, items);
|
|
50
53
|
}
|
|
51
|
-
|
|
52
|
-
|
|
54
|
+
// if disableFilters is set to true, item are visible and reached by default
|
|
55
|
+
const isVisible = (() => {
|
|
56
|
+
if (state.disableFilters || !item.conditionFilter)
|
|
57
|
+
return true;
|
|
58
|
+
return Boolean(executeExpression(item.conditionFilter, {
|
|
53
59
|
iteration: iteration,
|
|
54
|
-
}))
|
|
55
|
-
|
|
60
|
+
}));
|
|
61
|
+
})();
|
|
56
62
|
if (!isVisible) {
|
|
57
63
|
return items;
|
|
58
64
|
}
|
|
59
65
|
// Append the item to the list of items
|
|
60
66
|
const page = `${item.pageTag}${iteration !== undefined ? `#${iteration + 1}` : ''}`;
|
|
67
|
+
const reached = (0, page_tag_1.pageTagComparator)(state.pager ? (0, page_tag_1.getPageTag)(state.pager) : '-1', page) >= 0;
|
|
61
68
|
return [
|
|
62
69
|
...items,
|
|
63
70
|
{
|
|
@@ -68,9 +75,7 @@ const interpretOverviewItem = (items, item, executeExpression, pager, iteration)
|
|
|
68
75
|
? executeExpression(item.description, { iteration })
|
|
69
76
|
: undefined,
|
|
70
77
|
children: [],
|
|
71
|
-
reached:
|
|
72
|
-
? true
|
|
73
|
-
: false,
|
|
78
|
+
reached: reached,
|
|
74
79
|
page: page,
|
|
75
80
|
current: false,
|
|
76
81
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useOverview.js","sourceRoot":"","sources":["../../src/use-lunatic/hooks/useOverview.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"useOverview.js","sourceRoot":"","sources":["../../src/use-lunatic/hooks/useOverview.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const react_1 = require("@testing-library/react");
|
|
7
|
+
const vitest_1 = require("vitest");
|
|
8
|
+
const sourceWithHierarchy_json_1 = __importDefault(require("../../stories/overview/sourceWithHierarchy.json"));
|
|
9
|
+
const use_lunatic_1 = require("../use-lunatic");
|
|
10
|
+
const test_utils_1 = require("../test.utils");
|
|
11
|
+
(0, vitest_1.describe)('use-overview test with useLunatic()', () => {
|
|
12
|
+
(0, vitest_1.it)('should initialize correctly with disableFilters: false (without data)', () => {
|
|
13
|
+
const params = [
|
|
14
|
+
sourceWithHierarchy_json_1.default,
|
|
15
|
+
(0, test_utils_1.dataFromObject)({}),
|
|
16
|
+
{ withOverview: true },
|
|
17
|
+
];
|
|
18
|
+
const { result } = (0, react_1.renderHook)(() => (0, use_lunatic_1.useLunatic)(...params));
|
|
19
|
+
(0, vitest_1.expect)(result.current.overview.length).toBe(3);
|
|
20
|
+
});
|
|
21
|
+
(0, vitest_1.it)('should initialize correctly with disableFilters: false (with data)', () => {
|
|
22
|
+
const params = [
|
|
23
|
+
sourceWithHierarchy_json_1.default,
|
|
24
|
+
(0, test_utils_1.dataFromObject)({
|
|
25
|
+
READY: true,
|
|
26
|
+
}),
|
|
27
|
+
{ withOverview: true },
|
|
28
|
+
];
|
|
29
|
+
const { result } = (0, react_1.renderHook)(() => (0, use_lunatic_1.useLunatic)(...params));
|
|
30
|
+
(0, vitest_1.expect)(result.current.overview.length).toBe(9);
|
|
31
|
+
});
|
|
32
|
+
(0, vitest_1.it)('should initialize correctly with disableFilters: true (without data)', () => {
|
|
33
|
+
const params = [
|
|
34
|
+
sourceWithHierarchy_json_1.default,
|
|
35
|
+
(0, test_utils_1.dataFromObject)({}),
|
|
36
|
+
{ withOverview: true, disableFilters: true },
|
|
37
|
+
];
|
|
38
|
+
const { result } = (0, react_1.renderHook)(() => (0, use_lunatic_1.useLunatic)(...params));
|
|
39
|
+
// All elements have to be presents
|
|
40
|
+
(0, vitest_1.expect)(result.current.overview.length).toBe(9);
|
|
41
|
+
});
|
|
42
|
+
});
|
|
43
|
+
//# sourceMappingURL=useOverview.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useOverview.spec.js","sourceRoot":"","sources":["../../src/use-lunatic/hooks/useOverview.spec.ts"],"names":[],"mappings":";;;;;AAAA,kDAAoD;AACpD,mCAA8C;AAC9C,+GAAqE;AACrE,gDAA4C;AAC5C,8CAA+C;AAE/C,IAAA,iBAAQ,EAAC,qCAAqC,EAAE,GAAG,EAAE;IACpD,IAAA,WAAE,EAAC,uEAAuE,EAAE,GAAG,EAAE;QAChF,MAAM,MAAM,GAAG;YACd,kCAAa;YACb,IAAA,2BAAc,EAAC,EAAE,CAAC;YAClB,EAAE,YAAY,EAAE,IAAI,EAAE;SACb,CAAC;QACX,MAAM,EAAE,MAAM,EAAE,GAAG,IAAA,kBAAU,EAAC,GAAG,EAAE,CAAC,IAAA,wBAAU,EAAC,GAAG,MAAM,CAAC,CAAC,CAAC;QAC3D,IAAA,eAAM,EAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAChD,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,oEAAoE,EAAE,GAAG,EAAE;QAC7E,MAAM,MAAM,GAAG;YACd,kCAAa;YACb,IAAA,2BAAc,EAAC;gBACd,KAAK,EAAE,IAAI;aACX,CAAC;YACF,EAAE,YAAY,EAAE,IAAI,EAAE;SACb,CAAC;QAEX,MAAM,EAAE,MAAM,EAAE,GAAG,IAAA,kBAAU,EAAC,GAAG,EAAE,CAAC,IAAA,wBAAU,EAAC,GAAG,MAAM,CAAC,CAAC,CAAC;QAC3D,IAAA,eAAM,EAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAChD,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,sEAAsE,EAAE,GAAG,EAAE;QAC/E,MAAM,MAAM,GAAG;YACd,kCAAa;YACb,IAAA,2BAAc,EAAC,EAAE,CAAC;YAClB,EAAE,YAAY,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;SACnC,CAAC;QAEX,MAAM,EAAE,MAAM,EAAE,GAAG,IAAA,kBAAU,EAAC,GAAG,EAAE,CAAC,IAAA,wBAAU,EAAC,GAAG,MAAM,CAAC,CAAC,CAAC;QAC3D,mCAAmC;QACnC,IAAA,eAAM,EAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAChD,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.dataFromObject = void 0;
|
|
4
|
+
const dataFromObject = (o) => {
|
|
5
|
+
return {
|
|
6
|
+
EXTERNAL: {},
|
|
7
|
+
COLLECTED: Object.keys(o).reduce((acc, k) => ({
|
|
8
|
+
...acc,
|
|
9
|
+
[k]: {
|
|
10
|
+
COLLECTED: o[k],
|
|
11
|
+
},
|
|
12
|
+
}), {}),
|
|
13
|
+
CALCULATED: {},
|
|
14
|
+
};
|
|
15
|
+
};
|
|
16
|
+
exports.dataFromObject = dataFromObject;
|
|
17
|
+
//# sourceMappingURL=test.utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"test.utils.js","sourceRoot":"","sources":["../src/use-lunatic/test.utils.ts"],"names":[],"mappings":";;;AAEO,MAAM,cAAc,GAAG,CAAC,CAA0B,EAAe,EAAE;IACzE,OAAO;QACN,QAAQ,EAAE,EAAE;QACZ,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAC/B,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;YACZ,GAAG,GAAG;YACN,CAAC,CAAC,CAAC,EAAE;gBACJ,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC;aACf;SACD,CAAC,EACF,EAAE,CACF;QACD,UAAU,EAAE,EAAE;KACd,CAAC;AACH,CAAC,CAAC;AAdW,QAAA,cAAc,kBAczB"}
|