@inseefr/lunatic 3.4.8-rc.0 → 3.4.9
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/components/CheckboxGroup/CheckboxGroup.js +3 -1
- package/components/CheckboxGroup/CheckboxGroup.js.map +1 -1
- package/components/CheckboxGroup/CustomCheckboxGroup.d.ts +1 -1
- package/components/CheckboxGroup/CustomCheckboxGroup.js +2 -5
- package/components/CheckboxGroup/CustomCheckboxGroup.js.map +1 -1
- package/components/CheckboxOne/CheckboxOne.js +3 -1
- package/components/CheckboxOne/CheckboxOne.js.map +1 -1
- package/components/Datepicker/Datepicker.js +7 -1
- package/components/Datepicker/Datepicker.js.map +1 -1
- package/components/Input/Input.js +3 -1
- package/components/Input/Input.js.map +1 -1
- package/components/InputNumber/InputNumber.spec.js +12 -0
- package/components/InputNumber/InputNumber.spec.js.map +1 -1
- package/components/InputNumber/InputNumberThousand.js +3 -1
- package/components/InputNumber/InputNumberThousand.js.map +1 -1
- package/components/Radio/Radio.d.ts +1 -0
- package/components/Radio/Radio.js +3 -1
- package/components/Radio/Radio.js.map +1 -1
- package/components/library.d.ts +1 -0
- package/components/shared/Checkbox/CheckboxOption.d.ts +4 -0
- package/components/shared/Checkbox/CheckboxOption.js +4 -2
- package/components/shared/Checkbox/CheckboxOption.js.map +1 -1
- package/components/shared/Checkbox/CheckboxOption.spec.js +14 -0
- package/components/shared/Checkbox/CheckboxOption.spec.js.map +1 -1
- package/components/shared/Radio/RadioGroup.d.ts +1 -1
- package/components/shared/Radio/RadioGroup.js +2 -2
- package/components/shared/Radio/RadioGroup.js.map +1 -1
- package/components/shared/Radio/RadioOption.d.ts +1 -0
- package/components/shared/Radio/RadioOption.js +2 -2
- package/components/shared/Radio/RadioOption.js.map +1 -1
- package/components/shared/Radio/RadioOption.spec.js +12 -0
- package/components/shared/Radio/RadioOption.spec.js.map +1 -1
- package/components/type.d.ts +3 -0
- package/esm/components/CheckboxGroup/CheckboxGroup.js +3 -1
- package/esm/components/CheckboxGroup/CheckboxGroup.js.map +1 -1
- package/esm/components/CheckboxGroup/CustomCheckboxGroup.d.ts +1 -1
- package/esm/components/CheckboxGroup/CustomCheckboxGroup.js +2 -6
- package/esm/components/CheckboxGroup/CustomCheckboxGroup.js.map +1 -1
- package/esm/components/CheckboxOne/CheckboxOne.js +3 -1
- package/esm/components/CheckboxOne/CheckboxOne.js.map +1 -1
- package/esm/components/Datepicker/Datepicker.js +7 -1
- package/esm/components/Datepicker/Datepicker.js.map +1 -1
- package/esm/components/Input/Input.js +3 -1
- package/esm/components/Input/Input.js.map +1 -1
- package/esm/components/InputNumber/InputNumber.spec.js +12 -0
- package/esm/components/InputNumber/InputNumber.spec.js.map +1 -1
- package/esm/components/InputNumber/InputNumberThousand.js +3 -1
- package/esm/components/InputNumber/InputNumberThousand.js.map +1 -1
- package/esm/components/Radio/Radio.d.ts +1 -0
- package/esm/components/Radio/Radio.js +3 -1
- package/esm/components/Radio/Radio.js.map +1 -1
- package/esm/components/library.d.ts +1 -0
- package/esm/components/shared/Checkbox/CheckboxOption.d.ts +4 -0
- package/esm/components/shared/Checkbox/CheckboxOption.js +4 -2
- package/esm/components/shared/Checkbox/CheckboxOption.js.map +1 -1
- package/esm/components/shared/Checkbox/CheckboxOption.spec.js +14 -0
- package/esm/components/shared/Checkbox/CheckboxOption.spec.js.map +1 -1
- package/esm/components/shared/Radio/RadioGroup.d.ts +1 -1
- package/esm/components/shared/Radio/RadioGroup.js +2 -2
- package/esm/components/shared/Radio/RadioGroup.js.map +1 -1
- package/esm/components/shared/Radio/RadioOption.d.ts +1 -0
- package/esm/components/shared/Radio/RadioOption.js +2 -2
- package/esm/components/shared/Radio/RadioOption.js.map +1 -1
- package/esm/components/shared/Radio/RadioOption.spec.js +12 -0
- package/esm/components/shared/Radio/RadioOption.spec.js.map +1 -1
- package/esm/components/type.d.ts +3 -0
- package/esm/index.d.ts +0 -1
- package/esm/index.js +0 -1
- package/esm/index.js.map +1 -1
- package/esm/main.css +5 -2
- package/esm/main.css.map +1 -1
- package/esm/type.source.d.ts +25 -40
- package/esm/type.source.js +1 -0
- package/esm/type.source.js.map +1 -1
- package/esm/use-lunatic/commons/fill-components/fill-components.d.ts +1 -0
- package/esm/use-lunatic/commons/fill-components/fill-components.js +1 -1
- package/esm/use-lunatic/commons/fill-components/fill-components.js.map +1 -1
- package/esm/use-lunatic/commons/page.js +4 -1
- package/esm/use-lunatic/commons/page.js.map +1 -1
- package/esm/use-lunatic/lunatic-context.d.ts +7 -1
- package/esm/use-lunatic/lunatic-context.js +7 -1
- package/esm/use-lunatic/lunatic-context.js.map +1 -1
- package/esm/use-lunatic/props/getComponentTypeProps.d.ts +3 -0
- package/esm/use-lunatic/props/propOptions.d.ts +1 -1
- package/esm/use-lunatic/props/propOptions.js.map +1 -1
- package/esm/use-lunatic/reducer/reducerInitializer.d.ts +2 -1
- package/esm/use-lunatic/reducer/reducerInitializer.js +3 -1
- package/esm/use-lunatic/reducer/reducerInitializer.js.map +1 -1
- package/esm/use-lunatic/type.d.ts +7 -0
- package/esm/use-lunatic/use-lunatic.js +6 -1
- package/esm/use-lunatic/use-lunatic.js.map +1 -1
- package/esm/utils/search/SearchMiniSearch.spec.d.ts +1 -0
- package/esm/utils/search/SearchMiniSearch.spec.js +51 -0
- package/esm/utils/search/SearchMiniSearch.spec.js.map +1 -0
- package/esm/utils/search/melauto.js +1 -1
- package/esm/utils/search/melauto.spec.d.ts +1 -0
- package/esm/utils/search/melauto.spec.js +67 -0
- package/esm/utils/search/melauto.spec.js.map +1 -0
- package/esm/utils/search/tokenizer.d.ts +7 -2
- package/esm/utils/search/tokenizer.js +23 -8
- package/esm/utils/search/tokenizer.js.map +1 -1
- package/esm/utils/search/tokenizer.spec.d.ts +1 -0
- package/esm/utils/search/tokenizer.spec.js +160 -0
- package/esm/utils/search/tokenizer.spec.js.map +1 -0
- package/index.d.ts +0 -1
- package/index.js +1 -4
- package/index.js.map +1 -1
- package/main.css +5 -2
- package/main.css.map +1 -1
- package/package.json +28 -1
- package/src/components/CheckboxGroup/CheckboxGroup.tsx +3 -0
- package/src/components/CheckboxGroup/CustomCheckboxGroup.tsx +3 -14
- package/src/components/CheckboxOne/CheckboxOne.tsx +3 -0
- package/src/components/Datepicker/Datepicker.tsx +8 -1
- package/src/components/Input/Input.tsx +4 -0
- package/src/components/Input/__snapshots__/Input.spec.tsx.snap +2 -0
- package/src/components/InputNumber/InputNumber.spec.tsx +20 -0
- package/src/components/InputNumber/InputNumberThousand.tsx +4 -0
- package/src/components/InputNumber/__snapshots__/InputNumber.spec.tsx.snap +2 -0
- package/src/components/Radio/Radio.tsx +3 -0
- package/src/components/RosterForLoop/__snapshots__/RosterForLoop.spec.tsx.snap +2 -0
- package/src/components/shared/Checkbox/CheckboxOption.spec.tsx +21 -0
- package/src/components/shared/Checkbox/CheckboxOption.tsx +19 -0
- package/src/components/shared/Radio/RadioGroup.tsx +3 -0
- package/src/components/shared/Radio/RadioOption.spec.tsx +36 -0
- package/src/components/shared/Radio/RadioOption.tsx +5 -1
- package/src/components/type.ts +3 -0
- package/src/css/components/CheckboxOne.scss +1 -1
- package/src/css/components/CheckboxOption.scss +14 -18
- package/src/css/components/Combobox.scss +3 -2
- package/src/css/components/Datepicker.scss +8 -8
- package/src/css/components/Declarations.scss +1 -1
- package/src/css/components/Dragger.scss +6 -6
- package/src/css/components/Duration.scss +4 -4
- package/src/css/components/IconButton.scss +4 -2
- package/src/css/components/Input.scss +3 -0
- package/src/css/components/Missing.scss +1 -1
- package/src/css/components/Roundabout.scss +3 -3
- package/src/css/components/Suggester.scss +2 -2
- package/src/css/components/Table.scss +9 -7
- package/src/css/main.scss +167 -167
- package/src/index.ts +0 -2
- package/src/stories/behaviour/filter/dataLoop.json +22 -0
- package/src/stories/behaviour/filter/filter.stories.jsx +36 -0
- package/src/stories/behaviour/filter/source.json +238 -0
- package/src/stories/behaviour/filter/sourceLoop.json +372 -0
- package/src/stories/behaviour/missing/missing.stories.jsx +9 -0
- package/src/stories/behaviour/paste/test.stories.jsx +5 -0
- package/src/stories/checkbox-group/checkbox-group.stories.jsx +25 -6
- package/src/stories/checkbox-one/checkboxOne.stories.jsx +24 -2
- package/src/stories/overview/overview.stories.jsx +8 -1
- package/src/stories/radio/radio.stories.jsx +46 -6
- package/src/stories/utils/default-arg-types.js +12 -1
- package/src/stories/utils/default-args.js +3 -0
- package/src/stories/utils/orchestrator.jsx +11 -1
- package/src/stories/utils/orchestrator.scss +9 -7
- package/src/stories/utils/overview.scss +0 -1
- package/src/type.source.ts +93 -108
- package/src/use-lunatic/commons/fill-components/fill-components.ts +4 -1
- package/src/use-lunatic/commons/page.ts +4 -1
- package/src/use-lunatic/lunatic-context.tsx +9 -0
- package/src/use-lunatic/props/propOptions.ts +2 -1
- package/src/use-lunatic/reducer/reducerInitializer.tsx +4 -0
- package/src/use-lunatic/type.ts +5 -0
- package/src/use-lunatic/use-lunatic.test.ts +52 -0
- package/src/use-lunatic/use-lunatic.ts +7 -0
- package/src/utils/search/SearchMiniSearch.spec.ts +58 -0
- package/src/utils/search/melauto.spec.ts +75 -0
- package/src/utils/search/melauto.ts +1 -1
- package/src/utils/search/tokenizer.spec.ts +205 -0
- package/src/utils/search/tokenizer.ts +27 -8
- package/tsconfig.build.tsbuildinfo +1 -1
- package/type.source.d.ts +25 -40
- package/type.source.js +1 -0
- package/type.source.js.map +1 -1
- package/use-lunatic/commons/fill-components/fill-components.d.ts +1 -0
- package/use-lunatic/commons/fill-components/fill-components.js +1 -1
- package/use-lunatic/commons/fill-components/fill-components.js.map +1 -1
- package/use-lunatic/commons/page.js +4 -1
- package/use-lunatic/commons/page.js.map +1 -1
- package/use-lunatic/lunatic-context.d.ts +7 -1
- package/use-lunatic/lunatic-context.js +9 -2
- package/use-lunatic/lunatic-context.js.map +1 -1
- package/use-lunatic/props/getComponentTypeProps.d.ts +3 -0
- package/use-lunatic/props/propOptions.d.ts +1 -1
- package/use-lunatic/props/propOptions.js.map +1 -1
- package/use-lunatic/reducer/reducerInitializer.d.ts +2 -1
- package/use-lunatic/reducer/reducerInitializer.js +3 -1
- package/use-lunatic/reducer/reducerInitializer.js.map +1 -1
- package/use-lunatic/type.d.ts +7 -0
- package/use-lunatic/use-lunatic.js +6 -1
- package/use-lunatic/use-lunatic.js.map +1 -1
- package/utils/search/SearchMiniSearch.spec.d.ts +1 -0
- package/utils/search/SearchMiniSearch.spec.js +51 -0
- package/utils/search/SearchMiniSearch.spec.js.map +1 -0
- package/utils/search/melauto.js +1 -1
- package/utils/search/melauto.spec.d.ts +1 -0
- package/utils/search/melauto.spec.js +69 -0
- package/utils/search/melauto.spec.js.map +1 -0
- package/utils/search/tokenizer.d.ts +7 -2
- package/utils/search/tokenizer.js +24 -8
- package/utils/search/tokenizer.js.map +1 -1
- package/utils/search/tokenizer.spec.d.ts +1 -0
- package/utils/search/tokenizer.spec.js +162 -0
- package/utils/search/tokenizer.spec.js.map +1 -0
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import { describe, it, expect } from 'vitest';
|
|
2
|
+
import { applyMelauto, melautoScore } from './melauto';
|
|
3
|
+
// Mock data to test the sorting and scoring
|
|
4
|
+
const data = [
|
|
5
|
+
{ id: '1', label: 'Hello world' },
|
|
6
|
+
{ id: '2', label: 'Bonjour le monde' },
|
|
7
|
+
{ id: '3', label: 'Hello everyone' },
|
|
8
|
+
{ id: '4', label: 'Greetings planet' },
|
|
9
|
+
];
|
|
10
|
+
describe('applyMelauto', () => {
|
|
11
|
+
it('should sort data by relevance to the query', () => {
|
|
12
|
+
const sortedData = applyMelauto('hello', data);
|
|
13
|
+
const expectedSortedData = [
|
|
14
|
+
{ id: '1', label: 'Hello world' },
|
|
15
|
+
{ id: '3', label: 'Hello everyone' },
|
|
16
|
+
{ id: '2', label: 'Bonjour le monde' },
|
|
17
|
+
{ id: '4', label: 'Greetings planet' },
|
|
18
|
+
];
|
|
19
|
+
expect(sortedData).toStrictEqual(expectedSortedData);
|
|
20
|
+
});
|
|
21
|
+
it('should return data in original order if query is empty', () => {
|
|
22
|
+
const sortedData = applyMelauto('', data);
|
|
23
|
+
expect(sortedData).toEqual(data);
|
|
24
|
+
});
|
|
25
|
+
it('should handle data without labels by using id instead', () => {
|
|
26
|
+
const noLabelData = [
|
|
27
|
+
{ id: 'a' },
|
|
28
|
+
{ id: 'b', label: 'Hello' },
|
|
29
|
+
{ id: 'hello-w' },
|
|
30
|
+
];
|
|
31
|
+
const sortedData = applyMelauto('hello', noLabelData);
|
|
32
|
+
const expectedSortedData = [
|
|
33
|
+
{ id: 'b', label: 'Hello' },
|
|
34
|
+
{ id: 'hello-w' },
|
|
35
|
+
{ id: 'a' },
|
|
36
|
+
];
|
|
37
|
+
expect(sortedData).toStrictEqual(expectedSortedData);
|
|
38
|
+
});
|
|
39
|
+
});
|
|
40
|
+
describe('melautoScore', () => {
|
|
41
|
+
it('should return a non-null score', () => {
|
|
42
|
+
const score = melautoScore('Hello world', 'hello');
|
|
43
|
+
const expectedScore = 1;
|
|
44
|
+
expect(score).toBeCloseTo(expectedScore, 2);
|
|
45
|
+
});
|
|
46
|
+
it('should give a higher score for a closer match', () => {
|
|
47
|
+
const score1 = melautoScore('Hello beautiful world', 'hello world');
|
|
48
|
+
const score2 = melautoScore('Hello beautiful world', 'hello');
|
|
49
|
+
expect(score1).toBeGreaterThan(score2);
|
|
50
|
+
});
|
|
51
|
+
it('should give the same score for a same query if the comparison string is longer', () => {
|
|
52
|
+
const score1 = melautoScore('Hello world', 'hello');
|
|
53
|
+
const score2 = melautoScore('Hello beautiful world', 'hello');
|
|
54
|
+
expect(score1).toBeCloseTo(score2, 2);
|
|
55
|
+
});
|
|
56
|
+
it('should calculate a null score', () => {
|
|
57
|
+
const score = melautoScore('Greetings planet', 'hello');
|
|
58
|
+
const expectedScore = 0;
|
|
59
|
+
expect(score).toBe(expectedScore);
|
|
60
|
+
});
|
|
61
|
+
it('should handle accent and special characters correctly', () => {
|
|
62
|
+
const score1 = melautoScore('Héllo wörld', 'hello world');
|
|
63
|
+
const score2 = melautoScore('Hello world', 'héllo-wOrld');
|
|
64
|
+
expect(score1).toBeCloseTo(score2, 2);
|
|
65
|
+
});
|
|
66
|
+
});
|
|
67
|
+
//# sourceMappingURL=melauto.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"melauto.spec.js","sourceRoot":"","sources":["../../../src/utils/search/melauto.spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import type { SearchInfo } from './SearchInterface';
|
|
2
2
|
import type { ItemOf } from '../../type.utils';
|
|
3
3
|
/**
|
|
4
|
-
* Generates a tokenize method
|
|
4
|
+
* Generates a tokenize method.
|
|
5
|
+
* When used for tokenizing a search query instead of the indexing, the fieldName is undefined.
|
|
5
6
|
*/
|
|
6
7
|
export declare const tokenizer: (info: SearchInfo) => (str: string, fieldName?: string) => string[];
|
|
7
8
|
/**
|
|
@@ -11,4 +12,8 @@ export declare const tokenizeQuery: (str: string, info: SearchInfo["queryParser"
|
|
|
11
12
|
/**
|
|
12
13
|
* Tokenizer used for indexing (based on "fields" specification)
|
|
13
14
|
*/
|
|
14
|
-
export declare const tokenizeIndex: (str: string, info: ItemOf<SearchInfo["fields"]
|
|
15
|
+
export declare const tokenizeIndex: (str: string, info: ItemOf<SearchInfo["fields"]>, stopWords?: string[]) => string[];
|
|
16
|
+
/**
|
|
17
|
+
* remove from a string all the words that are included in a stopwords list
|
|
18
|
+
*/
|
|
19
|
+
export declare function filterStopWords(input: string, stopWords?: string[]): string;
|
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Generates a tokenize method
|
|
2
|
+
* Generates a tokenize method.
|
|
3
|
+
* When used for tokenizing a search query instead of the indexing, the fieldName is undefined.
|
|
3
4
|
*/
|
|
4
5
|
export const tokenizer = (info) => (str, fieldName) => {
|
|
5
6
|
const field = info.fields.find((f) => f.name === fieldName);
|
|
7
|
+
const stopWords = info.stopWords;
|
|
6
8
|
return field
|
|
7
|
-
? tokenizeIndex(str, field)
|
|
9
|
+
? tokenizeIndex(str, field, stopWords)
|
|
8
10
|
: tokenizeQuery(str, info.queryParser);
|
|
9
11
|
};
|
|
10
12
|
/**
|
|
@@ -18,8 +20,8 @@ export const tokenizeQuery = (str, info) => {
|
|
|
18
20
|
.filter((w) => w.length > 0);
|
|
19
21
|
}
|
|
20
22
|
const wordRegex = info.params.pattern && info.params.pattern !== 'soft'
|
|
21
|
-
?
|
|
22
|
-
:
|
|
23
|
+
? new RegExp(info.params.pattern, 'gi')
|
|
24
|
+
: /\w+/gi;
|
|
23
25
|
const minLength = (_a = info.params.min) !== null && _a !== void 0 ? _a : 1;
|
|
24
26
|
return ((_c = (_b = normalizeStr(str)
|
|
25
27
|
.match(wordRegex)) === null || _b === void 0 ? void 0 : _b.filter((w) => w.length >= minLength)) !== null && _c !== void 0 ? _c : []);
|
|
@@ -27,11 +29,11 @@ export const tokenizeQuery = (str, info) => {
|
|
|
27
29
|
/**
|
|
28
30
|
* Tokenizer used for indexing (based on "fields" specification)
|
|
29
31
|
*/
|
|
30
|
-
export const tokenizeIndex = (str, info) => {
|
|
32
|
+
export const tokenizeIndex = (str, info, stopWords) => {
|
|
31
33
|
var _a, _b, _c;
|
|
32
34
|
const wordRegex = info.rules && info.rules !== 'soft'
|
|
33
|
-
?
|
|
34
|
-
:
|
|
35
|
+
? new RegExp(info.rules[0], 'gi')
|
|
36
|
+
: /\w+/gi;
|
|
35
37
|
const minLength = (_a = info.min) !== null && _a !== void 0 ? _a : 1;
|
|
36
38
|
// For synonyms, add the synonyms to the string
|
|
37
39
|
if (info.synonyms) {
|
|
@@ -40,7 +42,8 @@ export const tokenizeIndex = (str, info) => {
|
|
|
40
42
|
str = str.replaceAll(source, `${source} ${synonyms}`);
|
|
41
43
|
}
|
|
42
44
|
}
|
|
43
|
-
|
|
45
|
+
// We remove the stopWords from the string
|
|
46
|
+
return ((_c = (_b = filterStopWords(normalizeStr(str), stopWords)
|
|
44
47
|
.match(wordRegex)) === null || _b === void 0 ? void 0 : _b.filter((w) => w.length >= minLength)) !== null && _c !== void 0 ? _c : []);
|
|
45
48
|
};
|
|
46
49
|
/**
|
|
@@ -54,4 +57,16 @@ const normalizeStr = (str) => {
|
|
|
54
57
|
.replace(/[\u0300-\u036f]/g, '')
|
|
55
58
|
.toLowerCase();
|
|
56
59
|
};
|
|
60
|
+
/**
|
|
61
|
+
* remove from a string all the words that are included in a stopwords list
|
|
62
|
+
*/
|
|
63
|
+
export function filterStopWords(input, stopWords) {
|
|
64
|
+
if (!stopWords) {
|
|
65
|
+
return input;
|
|
66
|
+
}
|
|
67
|
+
const lowerCaseStopWords = stopWords.map((word) => word.toLowerCase());
|
|
68
|
+
const words = input.split(/\s+/);
|
|
69
|
+
const filteredWords = words.filter((word) => !lowerCaseStopWords.includes(word.toLowerCase()));
|
|
70
|
+
return filteredWords.join(' ');
|
|
71
|
+
}
|
|
57
72
|
//# sourceMappingURL=tokenizer.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tokenizer.js","sourceRoot":"","sources":["../../../src/utils/search/tokenizer.ts"],"names":[],"mappings":"AAGA
|
|
1
|
+
{"version":3,"file":"tokenizer.js","sourceRoot":"","sources":["../../../src/utils/search/tokenizer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
import { describe, it, expect } from 'vitest';
|
|
2
|
+
import { tokenizer, tokenizeQuery, tokenizeIndex, filterStopWords, } from './tokenizer';
|
|
3
|
+
const mockSearchInfo = {
|
|
4
|
+
name: 'Products',
|
|
5
|
+
fields: [
|
|
6
|
+
{
|
|
7
|
+
name: 'title',
|
|
8
|
+
min: 3,
|
|
9
|
+
rules: ['[\\w]+'],
|
|
10
|
+
synonyms: {
|
|
11
|
+
car: ['vehicle', 'automobile'],
|
|
12
|
+
},
|
|
13
|
+
},
|
|
14
|
+
],
|
|
15
|
+
queryParser: {
|
|
16
|
+
type: 'tokenized',
|
|
17
|
+
params: {
|
|
18
|
+
language: 'English',
|
|
19
|
+
pattern: '[\\w.]+',
|
|
20
|
+
min: 2,
|
|
21
|
+
},
|
|
22
|
+
},
|
|
23
|
+
};
|
|
24
|
+
describe('filterStopWords', () => {
|
|
25
|
+
it('should remove only stopwords from the input string', () => {
|
|
26
|
+
const input = 'This is a test.';
|
|
27
|
+
const stopWords = ['is', 'a'];
|
|
28
|
+
const result = filterStopWords(input, stopWords);
|
|
29
|
+
expect(result).toBe('This test.');
|
|
30
|
+
});
|
|
31
|
+
it('should not alter words that are substrings of stopwords', () => {
|
|
32
|
+
const input = 'this is a testing example';
|
|
33
|
+
const stopWords = ['test'];
|
|
34
|
+
const result = filterStopWords(input, stopWords);
|
|
35
|
+
expect(result).toBe('this is a testing example');
|
|
36
|
+
});
|
|
37
|
+
it('should be case-insensitive', () => {
|
|
38
|
+
const input = 'This Is A Test.';
|
|
39
|
+
const stopWords = ['is', 'a'];
|
|
40
|
+
const result = filterStopWords(input, stopWords);
|
|
41
|
+
expect(result).toBe('This Test.');
|
|
42
|
+
});
|
|
43
|
+
it('should return the input string unchanged if stopWords is undefined', () => {
|
|
44
|
+
const input = 'This is a test.';
|
|
45
|
+
const result = filterStopWords(input);
|
|
46
|
+
expect(result).toBe(input);
|
|
47
|
+
});
|
|
48
|
+
it('should return the input string unchanged if stopWords is a empty array', () => {
|
|
49
|
+
const input = 'This is a test.';
|
|
50
|
+
const stopWords = [];
|
|
51
|
+
const result = filterStopWords(input, stopWords);
|
|
52
|
+
expect(result).toBe(input);
|
|
53
|
+
});
|
|
54
|
+
it('should return an empty string if all words are stopwords', () => {
|
|
55
|
+
const input = 'this is a test';
|
|
56
|
+
const stopWords = ['this', 'is', 'a', 'test'];
|
|
57
|
+
const result = filterStopWords(input, stopWords);
|
|
58
|
+
expect(result).toBe('');
|
|
59
|
+
});
|
|
60
|
+
it('should handle strings with multiple spaces correctly', () => {
|
|
61
|
+
const input = 'This is a test.';
|
|
62
|
+
const stopWords = ['is', 'a'];
|
|
63
|
+
const result = filterStopWords(input, stopWords);
|
|
64
|
+
expect(result).toBe('This test.');
|
|
65
|
+
});
|
|
66
|
+
it('should handle empty input string', () => {
|
|
67
|
+
const input = '';
|
|
68
|
+
const stopWords = ['is', 'a'];
|
|
69
|
+
const result = filterStopWords(input, stopWords);
|
|
70
|
+
expect(result).toBe('');
|
|
71
|
+
});
|
|
72
|
+
it('should handle punctuation correctly', () => {
|
|
73
|
+
const input = 'Hello, world! This is a test.';
|
|
74
|
+
const stopWords = ['is', 'a'];
|
|
75
|
+
const result = filterStopWords(input, stopWords);
|
|
76
|
+
expect(result).toBe('Hello, world! This test.');
|
|
77
|
+
});
|
|
78
|
+
});
|
|
79
|
+
describe('tokenizeQuery', () => {
|
|
80
|
+
it('should tokenize based on soft type', () => {
|
|
81
|
+
const queryParser = { type: 'soft' };
|
|
82
|
+
const result = tokenizeQuery('This is a test!', queryParser);
|
|
83
|
+
expect(result).toEqual(['this', 'is', 'a', 'test']);
|
|
84
|
+
});
|
|
85
|
+
it('should tokenize with a custom regex and a min', () => {
|
|
86
|
+
const queryParser = {
|
|
87
|
+
type: 'tokenized',
|
|
88
|
+
params: { pattern: '[\\w.]+', min: 3 },
|
|
89
|
+
};
|
|
90
|
+
const result = tokenizeQuery('This is a test !', queryParser);
|
|
91
|
+
expect(result).toEqual(['this', 'test']);
|
|
92
|
+
});
|
|
93
|
+
it('should normalize the input', () => {
|
|
94
|
+
const queryParser = {
|
|
95
|
+
type: 'tokenized',
|
|
96
|
+
params: { pattern: '\\w+', min: 1 },
|
|
97
|
+
};
|
|
98
|
+
const result = tokenizeQuery('Élève Étudiant!', queryParser);
|
|
99
|
+
expect(result).toEqual(['eleve', 'etudiant']);
|
|
100
|
+
});
|
|
101
|
+
it('should return an empty array for unmatched patterns', () => {
|
|
102
|
+
const queryParser = {
|
|
103
|
+
type: 'tokenized',
|
|
104
|
+
params: { language: 'French', pattern: '[\\d.]+', min: 1 }, // only digits
|
|
105
|
+
};
|
|
106
|
+
const result = tokenizeQuery('No numbers here!', queryParser);
|
|
107
|
+
expect(result).toEqual([]);
|
|
108
|
+
});
|
|
109
|
+
});
|
|
110
|
+
describe('tokenizeIndex', () => {
|
|
111
|
+
it('should filter out words shorter than the required minimum length', () => {
|
|
112
|
+
const fieldInfo = mockSearchInfo.fields[0];
|
|
113
|
+
const result = tokenizeIndex('The bus is so slow', fieldInfo);
|
|
114
|
+
expect(result).toEqual(['the', 'bus', 'slow']);
|
|
115
|
+
});
|
|
116
|
+
it('should tokenize and apply synonyms', () => {
|
|
117
|
+
const fieldInfo = mockSearchInfo.fields[0];
|
|
118
|
+
const result = tokenizeIndex('The car is fast', fieldInfo);
|
|
119
|
+
expect(result).toEqual(['the', 'car', 'vehicle', 'automobile', 'fast']);
|
|
120
|
+
});
|
|
121
|
+
it('should normalize the input', () => {
|
|
122
|
+
const fieldInfo = mockSearchInfo.fields[0];
|
|
123
|
+
const result = tokenizeIndex('Élève Étudiant!', fieldInfo);
|
|
124
|
+
expect(result).toEqual(['eleve', 'etudiant']);
|
|
125
|
+
});
|
|
126
|
+
it('should filter out stopWords', () => {
|
|
127
|
+
const fieldInfo = { ...mockSearchInfo.fields[0], min: 1 };
|
|
128
|
+
const stopWords = ['is', 'the', 'of', 'this', 'a'];
|
|
129
|
+
const result = tokenizeIndex('This is a test of stopWords !', fieldInfo, stopWords);
|
|
130
|
+
expect(result).toEqual(['test', 'stopwords']);
|
|
131
|
+
});
|
|
132
|
+
it('should return an empty array for unmatched patterns', () => {
|
|
133
|
+
const fieldInfo = { ...mockSearchInfo.fields[0], rules: ['\\d+'] }; // Only numbers
|
|
134
|
+
const result = tokenizeIndex('No numbers here', fieldInfo);
|
|
135
|
+
expect(result).toEqual([]);
|
|
136
|
+
});
|
|
137
|
+
});
|
|
138
|
+
describe('tokenizer', () => {
|
|
139
|
+
it('should tokenize using field rules', () => {
|
|
140
|
+
const tokenize = tokenizer(mockSearchInfo);
|
|
141
|
+
const result = tokenize('The car is fast', 'title');
|
|
142
|
+
expect(result).toEqual(['the', 'car', 'vehicle', 'automobile', 'fast']);
|
|
143
|
+
});
|
|
144
|
+
it('should tokenize using query parser when field is not found', () => {
|
|
145
|
+
const tokenize = tokenizer(mockSearchInfo);
|
|
146
|
+
const result = tokenize('This is a test!');
|
|
147
|
+
expect(result).toEqual(['this', 'is', 'test']);
|
|
148
|
+
});
|
|
149
|
+
it('should normalize the input', () => {
|
|
150
|
+
const tokenize = tokenizer(mockSearchInfo);
|
|
151
|
+
const result = tokenize('Élève Étudiant!');
|
|
152
|
+
expect(result).toEqual(['eleve', 'etudiant']);
|
|
153
|
+
});
|
|
154
|
+
it('should handle empty strings', () => {
|
|
155
|
+
const tokenize = tokenizer(mockSearchInfo);
|
|
156
|
+
expect(tokenize('', 'title')).toEqual([]);
|
|
157
|
+
expect(tokenize('')).toEqual([]);
|
|
158
|
+
});
|
|
159
|
+
});
|
|
160
|
+
//# sourceMappingURL=tokenizer.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tokenizer.spec.js","sourceRoot":"","sources":["../../../src/utils/search/tokenizer.spec.ts"],"names":[],"mappings":"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"}
|
package/index.d.ts
CHANGED
|
@@ -7,7 +7,6 @@ export { ModalControls } from './components/shared/ModalControls/ModalControls';
|
|
|
7
7
|
export { Button } from './components/shared/Button/Button';
|
|
8
8
|
export { LunaticComponents } from './components/LunaticComponents';
|
|
9
9
|
export { useLunatic } from './use-lunatic/use-lunatic';
|
|
10
|
-
export { interpretVTL, getVTLCompatibleValue } from './utils/vtl';
|
|
11
10
|
export type { LunaticComponentDefinition, LunaticControl, LunaticData, LunaticValues, LunaticError, LunaticExpression, LunaticVariable, LunaticCollectedValue, LunaticStateVariable, LunaticState, LunaticPager, LunaticOptions, LunaticChangesHandler, } from './use-lunatic/type';
|
|
12
11
|
export type { LunaticComponentProps, LunaticExtraProps, } from './components/type';
|
|
13
12
|
export type { LunaticSlotComponents } from './components/shared/HOC/slottableComponent';
|
package/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.VTLInterpretationError = exports.VTLMissingDependency = exports.VTLExpressionError = exports.VTLMissingDependencies = exports.
|
|
3
|
+
exports.VTLInterpretationError = exports.VTLMissingDependency = exports.VTLExpressionError = exports.VTLMissingDependencies = exports.useLunatic = exports.LunaticComponents = exports.Button = exports.ModalControls = exports.components = void 0;
|
|
4
4
|
/**
|
|
5
5
|
* We should remove this export to avoid `import * as lunatic from "@inseefr/lunatic"` in orchestrators
|
|
6
6
|
* but this is a breaking change
|
|
@@ -15,9 +15,6 @@ var LunaticComponents_1 = require("./components/LunaticComponents");
|
|
|
15
15
|
Object.defineProperty(exports, "LunaticComponents", { enumerable: true, get: function () { return LunaticComponents_1.LunaticComponents; } });
|
|
16
16
|
var use_lunatic_1 = require("./use-lunatic/use-lunatic");
|
|
17
17
|
Object.defineProperty(exports, "useLunatic", { enumerable: true, get: function () { return use_lunatic_1.useLunatic; } });
|
|
18
|
-
var vtl_1 = require("./utils/vtl");
|
|
19
|
-
Object.defineProperty(exports, "interpretVTL", { enumerable: true, get: function () { return vtl_1.interpretVTL; } });
|
|
20
|
-
Object.defineProperty(exports, "getVTLCompatibleValue", { enumerable: true, get: function () { return vtl_1.getVTLCompatibleValue; } });
|
|
21
18
|
// Export errors (useful for typeof)
|
|
22
19
|
var errors_1 = require("./use-lunatic/commons/variables/errors");
|
|
23
20
|
Object.defineProperty(exports, "VTLMissingDependencies", { enumerable: true, get: function () { return errors_1.VTLMissingDependencies; } });
|
package/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["src/index.ts"],"names":[],"mappings":";;;AAAA;;;GAGG;AACH,gDAA6D;AAApD,qGAAA,OAAO,OAAc;AAC9B,iFAAgF;AAAvE,8GAAA,aAAa,OAAA;AACtB,4DAA2D;AAAlD,gGAAA,MAAM,OAAA;AAEf,oEAAmE;AAA1D,sHAAA,iBAAiB,OAAA;AAC1B,yDAAuD;AAA9C,yGAAA,UAAU,OAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["src/index.ts"],"names":[],"mappings":";;;AAAA;;;GAGG;AACH,gDAA6D;AAApD,qGAAA,OAAO,OAAc;AAC9B,iFAAgF;AAAvE,8GAAA,aAAa,OAAA;AACtB,4DAA2D;AAAlD,gGAAA,MAAM,OAAA;AAEf,oEAAmE;AAA1D,sHAAA,iBAAiB,OAAA;AAC1B,yDAAuD;AAA9C,yGAAA,UAAU,OAAA;AAyBnB,oCAAoC;AACpC,iEAKgD;AAJ/C,gHAAA,sBAAsB,OAAA;AACtB,4GAAA,kBAAkB,OAAA;AAClB,8GAAA,oBAAoB,OAAA;AACpB,gHAAA,sBAAsB,OAAA"}
|
package/main.css
CHANGED
|
@@ -212,7 +212,7 @@
|
|
|
212
212
|
height: 18px;
|
|
213
213
|
flex: none;
|
|
214
214
|
border-radius: 2px;
|
|
215
|
-
color: #
|
|
215
|
+
color: #fff;
|
|
216
216
|
border: 2px solid var(--color-primary-dark);
|
|
217
217
|
}
|
|
218
218
|
.lunatic-input-checkbox__icon svg {
|
|
@@ -579,6 +579,9 @@ fieldset {
|
|
|
579
579
|
min-width: 0;
|
|
580
580
|
box-sizing: content-box;
|
|
581
581
|
background: none;
|
|
582
|
+
overflow: hidden;
|
|
583
|
+
text-overflow: ellipsis;
|
|
584
|
+
white-space: nowrap;
|
|
582
585
|
}
|
|
583
586
|
.lunatic-component .lunatic-input input:focus,
|
|
584
587
|
.lunatic-component .lunatic-datepicker input:focus,
|
|
@@ -940,7 +943,7 @@ fieldset {
|
|
|
940
943
|
top: 0;
|
|
941
944
|
z-index: 2;
|
|
942
945
|
border-collapse: separate;
|
|
943
|
-
background-color: #
|
|
946
|
+
background-color: #fff;
|
|
944
947
|
border-top: none !important;
|
|
945
948
|
box-shadow: inset 0 1px 0 var(--color-primary-dark), inset 0 -1px 0 var(--color-primary-dark);
|
|
946
949
|
}
|
package/main.css.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sourceRoot":"","sources":["../src/css/main.scss","../src/css/components/Button.scss","../src/css/components/CheckboxGroup.scss","../src/css/components/CheckboxOne.scss","../src/css/components/CheckboxOption.scss","../src/css/components/Combobox.scss","../src/css/components/ComponentErrors.scss","../src/css/components/Datepicker.scss","../src/css/components/Declarations.scss","../src/css/components/Dropdown.scss","../src/css/components/Duration.scss","../src/css/components/Fieldset.scss","../src/css/components/IconButton.scss","../src/css/components/Input.scss","../src/css/components/InputNumber.scss","../src/css/components/Label.scss","../src/css/components/Missing.scss","../src/css/components/ModalControls.scss","../src/css/components/RosterForLoop.scss","../src/css/components/Roundabout.scss","../src/css/components/Sequence.scss","../src/css/components/Suggester.scss","../src/css/components/Table.scss","../src/css/components/Textarea.scss","../src/css/components/VariableStatus.scss","../src/css/components/Dragger.scss","../src/css/components/SuggesterWidget.scss"],"names":[],"mappings":";AAAA;
|
|
1
|
+
{"version":3,"sourceRoot":"","sources":["../src/css/main.scss","../src/css/components/Button.scss","../src/css/components/CheckboxGroup.scss","../src/css/components/CheckboxOne.scss","../src/css/components/CheckboxOption.scss","../src/css/components/Combobox.scss","../src/css/components/ComponentErrors.scss","../src/css/components/Datepicker.scss","../src/css/components/Declarations.scss","../src/css/components/Dropdown.scss","../src/css/components/Duration.scss","../src/css/components/Fieldset.scss","../src/css/components/IconButton.scss","../src/css/components/Input.scss","../src/css/components/InputNumber.scss","../src/css/components/Label.scss","../src/css/components/Missing.scss","../src/css/components/ModalControls.scss","../src/css/components/RosterForLoop.scss","../src/css/components/Roundabout.scss","../src/css/components/Sequence.scss","../src/css/components/Suggester.scss","../src/css/components/Table.scss","../src/css/components/Textarea.scss","../src/css/components/VariableStatus.scss","../src/css/components/Dragger.scss","../src/css/components/SuggesterWidget.scss"],"names":[],"mappings":";AAAA;EACC;EACA;EACA;EACA;EACA;EAEA;EACA;EACA;EACA;EAEA;EACA;EACA;EAEA;EACA;EACA;EACA;EACA;EAEA;;;AAkBD;AAyBC;AA+BA;;AAvDA;EACC;EACA;;AAED;EACC;EACA;;AAID;AAAA;AAAA;AAAA;AAAA;EAKC;EACA;EACA;EACA;EACA;EACA;EACA;;AASD;EACC;;AAEA;EACC;EACA;;AACA;EACC;;AAGF;EACC;EACA;;AACA;EACC;;AAGF;EACC;;AAED;EACC;;AAMF;EAxEA;EACA;;AA0EA;EA3EA;EACA;;AA6EA;EACC;EA1ED;EACA;EACA;;AAEA;EACC;;AAwED;EA7EA;EACA;EACA;;AAEA;EACC;;AA4ED;EACC;;AAGD;EACC;;AAGD;EACC;EACA;;AAGD;EACC;;AACA;EACC;EACA;EACA;;AAIF;EACC;EACA;EACA;EACA;EACA;EACA;EACA;;AAEC;EACC;;AAED;EACC;;;AAMJ;EACC;;;AC1JD;EACC;EACA;EACA;EACA;EACA;EACA;EACA;;AACA;EAEC;EACA;EACA;;AAED;EACC;EACA;EACA;;AAED;EACC;EACA;;;ACnBA;EACC;EACA;;AAGF;EACC;EACA;EACA;;;ACRA;EACC;;AAGF;EACC;;AAEA;EACC;EACA;EACA;;AACA;EACC;;;ACdJ;EACC;EACA;;;AAGD;EACC;EACA;;;AAGD;EACC;EACA;EACA;EACA;EACA;;AAEA;EACC;EACA;EACA;EACA;EACA;;;AAIF;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACC;;;AAIF;EACC;;;AAGD;AAAA;EAEC;;AAEA;AAAA;EACC;EACA;;;AAMD;AAAA;EACC;;;AAMF;EACC;;AAEA;EACC;;;AAIF;EACC;;;AAGD;EACC;EACA;EACA;EACA;EACA;;;AC1DD;EACC;EACA;;AAEA;EACC;EACA;EACA;EACA;EACA;EACA;EAEA;;AACA;EACC;EACA;EACA;;AAEC;EACC;EACA;EACA;;AACA;EACC;;AAED;EACC;EACA;EACA;EACA;EApCL;;AAuCK;EAhDL;EASA;EAPA;EACA;EACA;EACA;;AAgDI;EACC;EACA;EACA;EACA;EAhDL;EAkDK;EACA;EACA;EA7DL;EASA;EAPA;EACA;EACA;EACA;;AA2DK;EACC;EACA;EACA;;AAGD;EACC;;AAKH;EAnEH;EAqEI;EACA;EACA;EACA,YACC;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAED;EACC;EACA;EACA;EACA;;AAEA;EACC;EACA;;AAED;EACC;EACA;;AAQN;EACC;EACA;EACA;EACA;;AACA;EACC;;AAIA;EACC;EACA;EACA;EACA;;AAKH;EACC;EACA;;AAEA;EACC;;AAGD;EACC;;AAGD;EACC;;AAEA;EACC;;AACA;EACC;EACA;EACA;EACA;EAKA;;AAJA;EACC;;AAMF;EAEC;EACA;EACA;EACA;;AACA;EACC;;AAKH;AAAA;AAAA;AAAA;EAIC;EACA;EACA;EACA;;AAIA;EACC;;AAED;EApMH;EACA;EACA;;;ACFA;EACC;;;ACFF;EACC;EACA;EACA;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;EACC;EACA;EACA;;;AChBA;EACC;;AAGD;EACC;EACA;;AAGD;EACC;EACA;EACA;;AAGD;EACC;EACA;EACA;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;;AACA;EACC;;AAIF;EACC;EACA;;AACA;EACC;;;ACxBD;EACC;EACA;EACA;EACA;EACA;EACA;;AAEA;EACC;EACA;;AAGD;EACC;EACA;;AAGD;EACC;;;ACjCJ;AAAA;EAEC;EACA;EACA;;;AAED;EACC;;;ACPD;EACC;EACA;EACA;;;ACHD;EACC;EACA;;;AAID;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,YACC;;AAID;EACC;EACA;EACA;;AAGD;EACC;EACA;;AAGD;EACC;;AAGD;EACC;EACA;;;AChCA;AAAA;AAAA;AAAA;EACC;;AACA;AAAA;AAAA;AAAA;EACC;EACA;EACA;;AAGF;AAAA;AAAA;AAAA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AACA;AAAA;AAAA;AAAA;EACC;EACA;;AAED;AAAA;AAAA;AAAA;EACC;;AAED;AAAA;AAAA;AAAA;EACC;;AAIF;AAAA;AAAA;AAAA;EACC;EACA;EACA;;;ACtCF;EACC;;AAEA;EACC;;;ACNF;EACC;EACA;;;ACHF;EACC;;;AAED;EACC;EACA;EACA;;;AAED;EACC;EACA;;;AAED;EACC;EACA;;;AAED;EACC;;;AAED;EACC;EACA;;;AAED;EACC;EACA;;;ACzBD;EACC;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AACA;EACC;EACA;EACA;;AAGD;EACC;EACA;;AACA;EACC;;AAMF;AAAA;AAAA;AAAA;EAIC;EACA;;AAGF;EACC;EACA;;;AClBF;EACC;EACA;EACA;EACA;;AAEC;EACC;EACA;;;ACnCH;EACC;EACA;EACA;;;AAGD;EACC;EACA;EACA;EACA;;;AAGD;EACC;;;AAGD;EACC;EACA;EACA;;;AAGD;AAAA;EAEC;;;AAED;AAAA;EAEC;;;AC5BA;EACC;EACA;EACA;EACA;EACA;EACA;;;AC8BD;EACC;EACA;EACA;EACA;EACA;EACA;EACA;;AAIA;EACC;;AACA;EACC;EACA;EACA;;AAOC;EACC;EACA;EACA;;AACA;EACC;;AAED;EACC;EACA;EACA;EACA;EAtEN;;AAyEM;EAjEN;EARA;EAUA;EACA;EACA;EACA;;AAiEK;EACC;EACA;EACA;EACA;EACA;EAnFN;;AAsFM;EACC;EA/EP;EARA;EAUA;EACA;EACA;EACA;;AA6EM;EACC;EACA;EACA;;AAGD;EACC;;AAKH;EAtGJ;EAwGK;EACA;EACA;EACA,YACC;;AAED;EACC;EACA;EACA;EACA;EACA;EACA;;AAED;EACC;EACA;EACA;EACA;EACA;EACA;;AACA;EACC;EACA;;AAED;EACC;EACA;;AASP;EACC;EACA;EACA;;AAEA;EACC;;AAjIF;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAsHA;EACC;;AArIF;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AA0HA;EACC;;AAzIF;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AA+HA;EACC;EACA;;AACA;EACC;EACA;EACA;;;ACrKJ;EACC;EACA;EACA;EACA;;AAEA;EACC;EACA;;AAGD;AAAA;EAEC;EACA;EACA;;AAGD;EACC;EACA;EACA;EACA;EACA;EAEA;EACA,YACC;;AAKD;AAAA;EAEC;EACA;EACA;;;AAKH;EACC;EACA;;;ACxCA;EACC;EACA;;;ACLF;EACC;AAMA;AAUA;;AAdA;EACC;;AAID;EACC;EACA;EACA;EACA;EACA;EACA;;AAID;EACC;EACA;EACA;EACA;EACA;EACA;EACA;;AAEC;EACC;;AAED;EACC;;;AC/BJ;EACC;EACA;EACA;EACA;EACA;EACA;;;ACaA;EACC;EACA;;AAED;EACC;EACA;EACA,kBA1BO;EA2BP;EACA;EACA;EACA;;AAlBD;EACC;EACA;;AAoBA;EACC;EACA;EACA;EACA;;AACA;EACC;EACA,OAxCK;EAyCL;EACA;EACA;;AAED;EACC,OA9CK;EA+CL;EACA;EACA;EACA;;AAED;EACC;EACA;EACA;EACA;EACA;EACA,kBA1DK;;AA4DL;EACC;EACA;;AAGD;EACC,kBAjEI;EAkEJ;EACA;;AAIA;EACC;EACA;EACA,MA5EG;;AAiFN;EACC;EACA;EACA;EACA;;AAGC;EACC,cAvFG;EAwFH;EAMA;;AALA;EACC,kBA1FE;EA2FF;;AAOH;EACC;EACA;EACA;;AACA;EACC,kBAxGG;EAyGH;;AAMJ;EACC;EACA;EACA;EACA,kBApHM;EAqHN;EACA;EACA;EACA;EACA;;AAGC;EACC;;AAIF;EACC;EACA;EACA,MAnIK;;AAWR;EACC;EACA;;AA4HA;EACC;EACA;EACA;EACA;;AAEA;EACC;EACA;EACA;EACA,kBAnJK;EAoJL;EACA;;AAEA;EACC;;AAGD;EACC,kBA1JI;EA2JJ;;AAGD;EACC;;AACA;EACC;;AAED;EACC;EACA;EACA,MAzKG","file":"main.css"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@inseefr/lunatic",
|
|
3
|
-
"version": "3.4.
|
|
3
|
+
"version": "3.4.9",
|
|
4
4
|
"description": "Library of questionnaire components",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -241,6 +241,10 @@
|
|
|
241
241
|
"src/stories/behaviour/controls/roundabout.json",
|
|
242
242
|
"src/stories/behaviour/controls/simple-numeric.json",
|
|
243
243
|
"src/stories/behaviour/controls/simple.json",
|
|
244
|
+
"src/stories/behaviour/filter/dataLoop.json",
|
|
245
|
+
"src/stories/behaviour/filter/filter.stories.jsx",
|
|
246
|
+
"src/stories/behaviour/filter/source.json",
|
|
247
|
+
"src/stories/behaviour/filter/sourceLoop.json",
|
|
244
248
|
"src/stories/behaviour/missing/missing.stories.jsx",
|
|
245
249
|
"src/stories/behaviour/missing/source.json",
|
|
246
250
|
"src/stories/behaviour/others/V2_DeclarationsSimples.json",
|
|
@@ -365,6 +369,7 @@
|
|
|
365
369
|
"src/stories/utils/SchemaValidator.jsx",
|
|
366
370
|
"src/stories/utils/custom-lunatic.scss",
|
|
367
371
|
"src/stories/utils/default-arg-types.js",
|
|
372
|
+
"src/stories/utils/default-args.js",
|
|
368
373
|
"src/stories/utils/options.js",
|
|
369
374
|
"src/stories/utils/orchestrator.jsx",
|
|
370
375
|
"src/stories/utils/orchestrator.scss",
|
|
@@ -457,9 +462,12 @@
|
|
|
457
462
|
"src/utils/number.ts",
|
|
458
463
|
"src/utils/object.ts",
|
|
459
464
|
"src/utils/search/SearchInterface.ts",
|
|
465
|
+
"src/utils/search/SearchMiniSearch.spec.ts",
|
|
460
466
|
"src/utils/search/SearchMinisearch.ts",
|
|
461
467
|
"src/utils/search/SuggestersDatabase.ts",
|
|
468
|
+
"src/utils/search/melauto.spec.ts",
|
|
462
469
|
"src/utils/search/melauto.ts",
|
|
470
|
+
"src/utils/search/tokenizer.spec.ts",
|
|
463
471
|
"src/utils/search/tokenizer.ts",
|
|
464
472
|
"src/utils/to-number.ts",
|
|
465
473
|
"src/utils/variables.spec.ts",
|
|
@@ -1619,6 +1627,9 @@
|
|
|
1619
1627
|
"esm/utils/search/SearchInterface.d.ts",
|
|
1620
1628
|
"esm/utils/search/SearchInterface.js",
|
|
1621
1629
|
"esm/utils/search/SearchInterface.js.map",
|
|
1630
|
+
"esm/utils/search/SearchMiniSearch.spec.d.ts",
|
|
1631
|
+
"esm/utils/search/SearchMiniSearch.spec.js",
|
|
1632
|
+
"esm/utils/search/SearchMiniSearch.spec.js.map",
|
|
1622
1633
|
"esm/utils/search/SearchMinisearch.d.ts",
|
|
1623
1634
|
"esm/utils/search/SearchMinisearch.js",
|
|
1624
1635
|
"esm/utils/search/SearchMinisearch.js.map",
|
|
@@ -1628,9 +1639,15 @@
|
|
|
1628
1639
|
"esm/utils/search/melauto.d.ts",
|
|
1629
1640
|
"esm/utils/search/melauto.js",
|
|
1630
1641
|
"esm/utils/search/melauto.js.map",
|
|
1642
|
+
"esm/utils/search/melauto.spec.d.ts",
|
|
1643
|
+
"esm/utils/search/melauto.spec.js",
|
|
1644
|
+
"esm/utils/search/melauto.spec.js.map",
|
|
1631
1645
|
"esm/utils/search/tokenizer.d.ts",
|
|
1632
1646
|
"esm/utils/search/tokenizer.js",
|
|
1633
1647
|
"esm/utils/search/tokenizer.js.map",
|
|
1648
|
+
"esm/utils/search/tokenizer.spec.d.ts",
|
|
1649
|
+
"esm/utils/search/tokenizer.spec.js",
|
|
1650
|
+
"esm/utils/search/tokenizer.spec.js.map",
|
|
1634
1651
|
"esm/utils/to-number.d.ts",
|
|
1635
1652
|
"esm/utils/to-number.js",
|
|
1636
1653
|
"esm/utils/to-number.js.map",
|
|
@@ -1934,6 +1951,9 @@
|
|
|
1934
1951
|
"utils/search/SearchInterface.d.ts",
|
|
1935
1952
|
"utils/search/SearchInterface.js",
|
|
1936
1953
|
"utils/search/SearchInterface.js.map",
|
|
1954
|
+
"utils/search/SearchMiniSearch.spec.d.ts",
|
|
1955
|
+
"utils/search/SearchMiniSearch.spec.js",
|
|
1956
|
+
"utils/search/SearchMiniSearch.spec.js.map",
|
|
1937
1957
|
"utils/search/SearchMinisearch.d.ts",
|
|
1938
1958
|
"utils/search/SearchMinisearch.js",
|
|
1939
1959
|
"utils/search/SearchMinisearch.js.map",
|
|
@@ -1943,9 +1963,15 @@
|
|
|
1943
1963
|
"utils/search/melauto.d.ts",
|
|
1944
1964
|
"utils/search/melauto.js",
|
|
1945
1965
|
"utils/search/melauto.js.map",
|
|
1966
|
+
"utils/search/melauto.spec.d.ts",
|
|
1967
|
+
"utils/search/melauto.spec.js",
|
|
1968
|
+
"utils/search/melauto.spec.js.map",
|
|
1946
1969
|
"utils/search/tokenizer.d.ts",
|
|
1947
1970
|
"utils/search/tokenizer.js",
|
|
1948
1971
|
"utils/search/tokenizer.js.map",
|
|
1972
|
+
"utils/search/tokenizer.spec.d.ts",
|
|
1973
|
+
"utils/search/tokenizer.spec.js",
|
|
1974
|
+
"utils/search/tokenizer.spec.js.map",
|
|
1949
1975
|
"utils/to-number.d.ts",
|
|
1950
1976
|
"utils/to-number.js",
|
|
1951
1977
|
"utils/to-number.js.map",
|
|
@@ -2007,6 +2033,7 @@
|
|
|
2007
2033
|
"@types/react": "^18.3.3",
|
|
2008
2034
|
"@types/react-dom": "^18.3.0",
|
|
2009
2035
|
"@vitejs/plugin-react": "^4.3.1",
|
|
2036
|
+
"@vitest/coverage-v8": "2.1.2",
|
|
2010
2037
|
"ajv": "^8.17.1",
|
|
2011
2038
|
"concurrently": "^8.2.2",
|
|
2012
2039
|
"eslint": "^9.9.0",
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { LunaticComponentProps } from '../type';
|
|
2
2
|
import { CustomCheckboxGroup } from './CustomCheckboxGroup';
|
|
3
3
|
import { getComponentErrors } from '../shared/ComponentErrors/ComponentErrors';
|
|
4
|
+
import { useLunaticComponentsOptions } from '../../use-lunatic/lunatic-context';
|
|
4
5
|
|
|
5
6
|
export function CheckboxGroup({
|
|
6
7
|
id,
|
|
@@ -14,6 +15,7 @@ export function CheckboxGroup({
|
|
|
14
15
|
declarations,
|
|
15
16
|
orientation,
|
|
16
17
|
}: LunaticComponentProps<'CheckboxGroup'>) {
|
|
18
|
+
const { detailAlwaysDisplayed } = useLunaticComponentsOptions();
|
|
17
19
|
return (
|
|
18
20
|
<CustomCheckboxGroup
|
|
19
21
|
id={id}
|
|
@@ -26,6 +28,7 @@ export function CheckboxGroup({
|
|
|
26
28
|
readOnly={readOnly}
|
|
27
29
|
declarations={declarations}
|
|
28
30
|
orientation={orientation}
|
|
31
|
+
detailAlwaysDisplayed={detailAlwaysDisplayed}
|
|
29
32
|
/>
|
|
30
33
|
);
|
|
31
34
|
}
|
|
@@ -6,7 +6,6 @@ import { CheckboxOption } from '../shared/Checkbox/CheckboxOption';
|
|
|
6
6
|
import { getShortcutKey } from '../shared/Checkbox/getShortcutKey';
|
|
7
7
|
import type { LunaticComponentProps } from '../type';
|
|
8
8
|
import { Declarations } from '../shared/Declarations/Declarations';
|
|
9
|
-
import { CustomInput } from '../Input/Input';
|
|
10
9
|
|
|
11
10
|
type Props = Pick<
|
|
12
11
|
LunaticComponentProps<'CheckboxGroup'>,
|
|
@@ -19,6 +18,7 @@ type Props = Pick<
|
|
|
19
18
|
| 'disabled'
|
|
20
19
|
| 'options'
|
|
21
20
|
| 'orientation'
|
|
21
|
+
| 'detailAlwaysDisplayed'
|
|
22
22
|
> & {
|
|
23
23
|
errors?: LunaticError[];
|
|
24
24
|
};
|
|
@@ -35,6 +35,7 @@ export const CustomCheckboxGroup = slottableComponent<Props>(
|
|
|
35
35
|
readOnly,
|
|
36
36
|
declarations,
|
|
37
37
|
orientation,
|
|
38
|
+
detailAlwaysDisplayed,
|
|
38
39
|
}: Props) => {
|
|
39
40
|
return (
|
|
40
41
|
<Fieldset
|
|
@@ -59,20 +60,8 @@ export const CustomCheckboxGroup = slottableComponent<Props>(
|
|
|
59
60
|
codeModality={
|
|
60
61
|
shortcut ? getShortcutKey(index, options.length) : undefined
|
|
61
62
|
}
|
|
63
|
+
detailAlwaysDisplayed={detailAlwaysDisplayed}
|
|
62
64
|
/>
|
|
63
|
-
{option.onDetailChange && option.checked && (
|
|
64
|
-
<CustomInput
|
|
65
|
-
id="detailId"
|
|
66
|
-
label={option.detailLabel ?? 'Précisez :'}
|
|
67
|
-
value={
|
|
68
|
-
typeof option.detailValue === 'string'
|
|
69
|
-
? option.detailValue
|
|
70
|
-
: ''
|
|
71
|
-
}
|
|
72
|
-
onChange={option.onDetailChange}
|
|
73
|
-
disabled={disabled}
|
|
74
|
-
/>
|
|
75
|
-
)}
|
|
76
65
|
</div>
|
|
77
66
|
);
|
|
78
67
|
})}
|