@tcn/ui-table 2.2.0 → 2.3.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 (217) hide show
  1. package/README.md +1 -1
  2. package/dist/cell.css +1 -0
  3. package/dist/cell.module-WpHnQBVu.js +5 -0
  4. package/dist/cell.module-WpHnQBVu.js.map +1 -0
  5. package/dist/components/cells/data_cell.d.ts +3 -2
  6. package/dist/components/cells/data_cell.d.ts.map +1 -0
  7. package/dist/components/cells/data_cell.js +18 -10
  8. package/dist/components/cells/data_cell.js.map +1 -1
  9. package/dist/components/cells/footer_cell.d.ts +3 -2
  10. package/dist/components/cells/footer_cell.d.ts.map +1 -0
  11. package/dist/components/cells/footer_cell.js +18 -10
  12. package/dist/components/cells/footer_cell.js.map +1 -1
  13. package/dist/components/cells/header_cell.d.ts +3 -2
  14. package/dist/components/cells/header_cell.d.ts.map +1 -0
  15. package/dist/components/cells/header_cell.js +52 -18
  16. package/dist/components/cells/header_cell.js.map +1 -1
  17. package/dist/components/cells/sticky_row_data_cell.d.ts +3 -2
  18. package/dist/components/cells/sticky_row_data_cell.d.ts.map +1 -0
  19. package/dist/components/cells/sticky_row_data_cell.js +26 -11
  20. package/dist/components/cells/sticky_row_data_cell.js.map +1 -1
  21. package/dist/components/cells/sticky_row_fill_cell.d.ts +2 -2
  22. package/dist/components/cells/sticky_row_fill_cell.d.ts.map +1 -0
  23. package/dist/components/cells/sticky_row_fill_cell.js +15 -5
  24. package/dist/components/cells/sticky_row_fill_cell.js.map +1 -1
  25. package/dist/components/global_search.d.ts +2 -2
  26. package/dist/components/global_search.d.ts.map +1 -0
  27. package/dist/components/global_search.js +26 -9
  28. package/dist/components/global_search.js.map +1 -1
  29. package/dist/components/global_search_presenter.d.ts +2 -1
  30. package/dist/components/global_search_presenter.d.ts.map +1 -0
  31. package/dist/components/global_search_presenter.js +20 -18
  32. package/dist/components/global_search_presenter.js.map +1 -1
  33. package/dist/components/table/table.d.ts +3 -2
  34. package/dist/components/table/table.d.ts.map +1 -0
  35. package/dist/components/table/table.js +140 -77
  36. package/dist/components/table/table.js.map +1 -1
  37. package/dist/components/table/table_column.d.ts +1 -1
  38. package/dist/components/table/table_column.d.ts.map +1 -0
  39. package/dist/components/table/table_column.js +6 -5
  40. package/dist/components/table/table_column.js.map +1 -1
  41. package/dist/components/table/table_presenter.d.ts +3 -2
  42. package/dist/components/table/table_presenter.d.ts.map +1 -0
  43. package/dist/components/table/table_presenter.js +45 -62
  44. package/dist/components/table/table_presenter.js.map +1 -1
  45. package/dist/components/table_filter_panel/field_filters/date_field_filter.d.ts +2 -2
  46. package/dist/components/table_filter_panel/field_filters/date_field_filter.d.ts.map +1 -0
  47. package/dist/components/table_filter_panel/field_filters/date_field_filter.js +59 -33
  48. package/dist/components/table_filter_panel/field_filters/date_field_filter.js.map +1 -1
  49. package/dist/components/table_filter_panel/field_filters/date_field_filter_presenter.d.ts +4 -3
  50. package/dist/components/table_filter_panel/field_filters/date_field_filter_presenter.d.ts.map +1 -0
  51. package/dist/components/table_filter_panel/field_filters/date_field_filter_presenter.js +57 -91
  52. package/dist/components/table_filter_panel/field_filters/date_field_filter_presenter.js.map +1 -1
  53. package/dist/components/table_filter_panel/field_filters/field_filter_props.d.ts +1 -0
  54. package/dist/components/table_filter_panel/field_filters/field_filter_props.d.ts.map +1 -0
  55. package/dist/components/table_filter_panel/field_filters/field_filter_strategy.d.ts +1 -0
  56. package/dist/components/table_filter_panel/field_filters/field_filter_strategy.d.ts.map +1 -0
  57. package/dist/components/table_filter_panel/field_filters/mulit_select_field_filter.d.ts +3 -3
  58. package/dist/components/table_filter_panel/field_filters/mulit_select_field_filter.d.ts.map +1 -0
  59. package/dist/components/table_filter_panel/field_filters/mulit_select_field_filter.js +52 -29
  60. package/dist/components/table_filter_panel/field_filters/mulit_select_field_filter.js.map +1 -1
  61. package/dist/components/table_filter_panel/field_filters/multi_select_field_filter_presenter.d.ts +3 -2
  62. package/dist/components/table_filter_panel/field_filters/multi_select_field_filter_presenter.d.ts.map +1 -0
  63. package/dist/components/table_filter_panel/field_filters/multi_select_field_filter_presenter.js +53 -70
  64. package/dist/components/table_filter_panel/field_filters/multi_select_field_filter_presenter.js.map +1 -1
  65. package/dist/components/table_filter_panel/field_filters/number_field_filter.d.ts +3 -3
  66. package/dist/components/table_filter_panel/field_filters/number_field_filter.d.ts.map +1 -0
  67. package/dist/components/table_filter_panel/field_filters/number_field_filter.js +47 -23
  68. package/dist/components/table_filter_panel/field_filters/number_field_filter.js.map +1 -1
  69. package/dist/components/table_filter_panel/field_filters/number_field_filter_presenter.d.ts +5 -4
  70. package/dist/components/table_filter_panel/field_filters/number_field_filter_presenter.d.ts.map +1 -0
  71. package/dist/components/table_filter_panel/field_filters/number_field_filter_presenter.js +53 -58
  72. package/dist/components/table_filter_panel/field_filters/number_field_filter_presenter.js.map +1 -1
  73. package/dist/components/table_filter_panel/field_filters/number_range_field_filter.d.ts +2 -2
  74. package/dist/components/table_filter_panel/field_filters/number_range_field_filter.d.ts.map +1 -0
  75. package/dist/components/table_filter_panel/field_filters/number_range_field_filter.js +61 -31
  76. package/dist/components/table_filter_panel/field_filters/number_range_field_filter.js.map +1 -1
  77. package/dist/components/table_filter_panel/field_filters/number_range_field_filter_presenter.d.ts +4 -3
  78. package/dist/components/table_filter_panel/field_filters/number_range_field_filter_presenter.d.ts.map +1 -0
  79. package/dist/components/table_filter_panel/field_filters/number_range_field_filter_presenter.js +57 -91
  80. package/dist/components/table_filter_panel/field_filters/number_range_field_filter_presenter.js.map +1 -1
  81. package/dist/components/table_filter_panel/field_filters/select_field_filter.d.ts +3 -3
  82. package/dist/components/table_filter_panel/field_filters/select_field_filter.d.ts.map +1 -0
  83. package/dist/components/table_filter_panel/field_filters/select_field_filter.js +49 -24
  84. package/dist/components/table_filter_panel/field_filters/select_field_filter.js.map +1 -1
  85. package/dist/components/table_filter_panel/field_filters/select_field_filter_presenter.d.ts +3 -2
  86. package/dist/components/table_filter_panel/field_filters/select_field_filter_presenter.d.ts.map +1 -0
  87. package/dist/components/table_filter_panel/field_filters/select_field_filter_presenter.js +49 -53
  88. package/dist/components/table_filter_panel/field_filters/select_field_filter_presenter.js.map +1 -1
  89. package/dist/components/table_filter_panel/field_filters/string_field_filter.d.ts +3 -3
  90. package/dist/components/table_filter_panel/field_filters/string_field_filter.d.ts.map +1 -0
  91. package/dist/components/table_filter_panel/field_filters/string_field_filter.js +62 -33
  92. package/dist/components/table_filter_panel/field_filters/string_field_filter.js.map +1 -1
  93. package/dist/components/table_filter_panel/field_filters/string_field_filter_presenter.d.ts +5 -4
  94. package/dist/components/table_filter_panel/field_filters/string_field_filter_presenter.d.ts.map +1 -0
  95. package/dist/components/table_filter_panel/field_filters/string_field_filter_presenter.js +54 -59
  96. package/dist/components/table_filter_panel/field_filters/string_field_filter_presenter.js.map +1 -1
  97. package/dist/components/table_filter_panel/field_filters/use_field_filter_strategy.d.ts +2 -1
  98. package/dist/components/table_filter_panel/field_filters/use_field_filter_strategy.d.ts.map +1 -0
  99. package/dist/components/table_filter_panel/field_filters/use_field_filter_strategy.js +13 -19
  100. package/dist/components/table_filter_panel/field_filters/use_field_filter_strategy.js.map +1 -1
  101. package/dist/components/table_filter_panel/table_filter_panel.d.ts +5 -4
  102. package/dist/components/table_filter_panel/table_filter_panel.d.ts.map +1 -0
  103. package/dist/components/table_filter_panel/table_filter_panel.js +15 -11
  104. package/dist/components/table_filter_panel/table_filter_panel.js.map +1 -1
  105. package/dist/components/table_filter_panel/table_filter_panel_presenter.d.ts +2 -2
  106. package/dist/components/table_filter_panel/table_filter_panel_presenter.d.ts.map +1 -0
  107. package/dist/components/table_filter_panel/table_filter_panel_presenter.js +45 -62
  108. package/dist/components/table_filter_panel/table_filter_panel_presenter.js.map +1 -1
  109. package/dist/components/table_filter_panel/types.d.ts +1 -0
  110. package/dist/components/table_filter_panel/types.d.ts.map +1 -0
  111. package/dist/components/table_filter_panel/types.js +5 -2
  112. package/dist/components/table_filter_panel/types.js.map +1 -1
  113. package/dist/components/table_pager.d.ts +2 -2
  114. package/dist/components/table_pager.d.ts.map +1 -0
  115. package/dist/components/table_pager.js +22 -20
  116. package/dist/components/table_pager.js.map +1 -1
  117. package/dist/index.d.ts +1 -0
  118. package/dist/index.d.ts.map +1 -0
  119. package/dist/index.js +27 -13
  120. package/dist/index.js.map +1 -1
  121. package/dist/table.css +1 -0
  122. package/dist/table_pager.css +1 -0
  123. package/package.json +61 -61
  124. package/src/__stories__/aip_table.stories.tsx +190 -0
  125. package/src/__stories__/auth_provider.tsx +14 -0
  126. package/src/__stories__/demo.stories.tsx +137 -0
  127. package/src/__stories__/sample_data.ts +1398 -0
  128. package/src/__stories__/table.stories.tsx +423 -0
  129. package/src/__tests__/sanity.test.ts +7 -0
  130. package/src/components/cells/data_cell.tsx +25 -0
  131. package/src/components/cells/footer_cell.tsx +25 -0
  132. package/src/components/cells/header_cell.tsx +77 -0
  133. package/src/components/cells/sticky_row_data_cell.tsx +31 -0
  134. package/src/components/cells/sticky_row_fill_cell.tsx +16 -0
  135. package/src/components/global_search.tsx +33 -0
  136. package/src/components/global_search_presenter.ts +24 -0
  137. package/{dist → src}/components/table/table.module.css +3 -2
  138. package/src/components/table/table.tsx +183 -0
  139. package/src/components/table/table_column.tsx +27 -0
  140. package/src/components/table/table_presenter.test.ts +161 -0
  141. package/src/components/table/table_presenter.ts +103 -0
  142. package/src/components/table_filter_panel/field_filters/date_field_filter.tsx +70 -0
  143. package/src/components/table_filter_panel/field_filters/date_field_filter_presenter.test.ts +583 -0
  144. package/src/components/table_filter_panel/field_filters/date_field_filter_presenter.ts +110 -0
  145. package/src/components/table_filter_panel/field_filters/field_filter_props.ts +5 -0
  146. package/src/components/table_filter_panel/field_filters/field_filter_strategy.ts +14 -0
  147. package/src/components/table_filter_panel/field_filters/mulit_select_field_filter.tsx +68 -0
  148. package/src/components/table_filter_panel/field_filters/multi_select_field_filter_presenter.test.ts +444 -0
  149. package/src/components/table_filter_panel/field_filters/multi_select_field_filter_presenter.ts +90 -0
  150. package/src/components/table_filter_panel/field_filters/number_field_filter.tsx +53 -0
  151. package/src/components/table_filter_panel/field_filters/number_field_filter_presenter.test.ts +431 -0
  152. package/src/components/table_filter_panel/field_filters/number_field_filter_presenter.ts +80 -0
  153. package/src/components/table_filter_panel/field_filters/number_range_field_filter.tsx +68 -0
  154. package/src/components/table_filter_panel/field_filters/number_range_field_filter_presenter.test.ts +582 -0
  155. package/src/components/table_filter_panel/field_filters/number_range_field_filter_presenter.ts +110 -0
  156. package/src/components/table_filter_panel/field_filters/select_field_filter.tsx +57 -0
  157. package/src/components/table_filter_panel/field_filters/select_field_filter_presenter.test.ts +365 -0
  158. package/src/components/table_filter_panel/field_filters/select_field_filter_presenter.ts +74 -0
  159. package/src/components/table_filter_panel/field_filters/string_field_filter.tsx +70 -0
  160. package/src/components/table_filter_panel/field_filters/string_field_filter_presenter.test.ts +296 -0
  161. package/src/components/table_filter_panel/field_filters/string_field_filter_presenter.ts +81 -0
  162. package/src/components/table_filter_panel/field_filters/use_field_filter_strategy.tsx +30 -0
  163. package/src/components/table_filter_panel/table_filter_panel.stories.tsx +46 -0
  164. package/src/components/table_filter_panel/table_filter_panel.tsx +26 -0
  165. package/src/components/table_filter_panel/table_filter_panel_presenter.ts +77 -0
  166. package/src/components/table_filter_panel/types.ts +3 -0
  167. package/src/components/table_pager.tsx +39 -0
  168. package/src/index.ts +16 -0
  169. package/tsconfig.json +36 -0
  170. package/types/file_types.d.ts +54 -0
  171. package/types/react_color.d.ts +61 -0
  172. package/dist/__stories__/aip_table.stories.d.ts +0 -5
  173. package/dist/__stories__/aip_table.stories.js +0 -96
  174. package/dist/__stories__/aip_table.stories.js.map +0 -1
  175. package/dist/__stories__/auth_provider.d.ts +0 -4
  176. package/dist/__stories__/auth_provider.js +0 -10
  177. package/dist/__stories__/auth_provider.js.map +0 -1
  178. package/dist/__stories__/demo.stories.d.ts +0 -6
  179. package/dist/__stories__/demo.stories.js +0 -94
  180. package/dist/__stories__/demo.stories.js.map +0 -1
  181. package/dist/__stories__/sample_data.d.ts +0 -36
  182. package/dist/__stories__/sample_data.js +0 -1385
  183. package/dist/__stories__/sample_data.js.map +0 -1
  184. package/dist/__stories__/table.stories.d.ts +0 -12
  185. package/dist/__stories__/table.stories.js +0 -272
  186. package/dist/__stories__/table.stories.js.map +0 -1
  187. package/dist/components/table/table_presenter.test.d.ts +0 -1
  188. package/dist/components/table/table_presenter.test.js +0 -125
  189. package/dist/components/table/table_presenter.test.js.map +0 -1
  190. package/dist/components/table_filter_panel/field_filters/date_field_filter_presenter.test.d.ts +0 -1
  191. package/dist/components/table_filter_panel/field_filters/date_field_filter_presenter.test.js +0 -434
  192. package/dist/components/table_filter_panel/field_filters/date_field_filter_presenter.test.js.map +0 -1
  193. package/dist/components/table_filter_panel/field_filters/field_filter_props.js +0 -2
  194. package/dist/components/table_filter_panel/field_filters/field_filter_props.js.map +0 -1
  195. package/dist/components/table_filter_panel/field_filters/field_filter_strategy.js +0 -2
  196. package/dist/components/table_filter_panel/field_filters/field_filter_strategy.js.map +0 -1
  197. package/dist/components/table_filter_panel/field_filters/multi_select_field_filter_presenter.test.d.ts +0 -1
  198. package/dist/components/table_filter_panel/field_filters/multi_select_field_filter_presenter.test.js +0 -332
  199. package/dist/components/table_filter_panel/field_filters/multi_select_field_filter_presenter.test.js.map +0 -1
  200. package/dist/components/table_filter_panel/field_filters/number_field_filter_presenter.test.d.ts +0 -1
  201. package/dist/components/table_filter_panel/field_filters/number_field_filter_presenter.test.js +0 -347
  202. package/dist/components/table_filter_panel/field_filters/number_field_filter_presenter.test.js.map +0 -1
  203. package/dist/components/table_filter_panel/field_filters/number_range_field_filter_presenter.test.d.ts +0 -1
  204. package/dist/components/table_filter_panel/field_filters/number_range_field_filter_presenter.test.js +0 -452
  205. package/dist/components/table_filter_panel/field_filters/number_range_field_filter_presenter.test.js.map +0 -1
  206. package/dist/components/table_filter_panel/field_filters/select_field_filter_presenter.test.d.ts +0 -1
  207. package/dist/components/table_filter_panel/field_filters/select_field_filter_presenter.test.js +0 -285
  208. package/dist/components/table_filter_panel/field_filters/select_field_filter_presenter.test.js.map +0 -1
  209. package/dist/components/table_filter_panel/field_filters/string_field_filter_presenter.test.d.ts +0 -1
  210. package/dist/components/table_filter_panel/field_filters/string_field_filter_presenter.test.js +0 -232
  211. package/dist/components/table_filter_panel/field_filters/string_field_filter_presenter.test.js.map +0 -1
  212. package/dist/components/table_filter_panel/table_filter_panel.stories.d.ts +0 -6
  213. package/dist/components/table_filter_panel/table_filter_panel.stories.js +0 -25
  214. package/dist/components/table_filter_panel/table_filter_panel.stories.js.map +0 -1
  215. /package/{dist → src}/__stories__/table.module.css +0 -0
  216. /package/{dist → src}/components/cells/cell.module.css +0 -0
  217. /package/{dist → src}/components/table_pager.module.css +0 -0
@@ -1,332 +0,0 @@
1
- import { MultiSelectFieldFilterPresenter } from "./multi_select_field_filter_presenter.js";
2
- import { beforeEach, describe, expect, it, vi } from 'vitest';
3
- describe('MultiSelectFieldFilterPresenter', () => {
4
- let presenter;
5
- let mockFieldRegistry;
6
- beforeEach(() => {
7
- presenter = new MultiSelectFieldFilterPresenter('test_field');
8
- mockFieldRegistry = {
9
- registerFieldFilter: vi.fn(),
10
- unregisterFieldFilter: vi.fn(),
11
- };
12
- });
13
- describe('constructor', () => {
14
- it('should initialize with the correct field name', () => {
15
- const presenter = new MultiSelectFieldFilterPresenter('custom_field');
16
- expect(presenter.getFilterString()).toBe('');
17
- });
18
- it('should initialize with default values', () => {
19
- expect(presenter.getFilterString()).toBe('');
20
- });
21
- });
22
- describe('setValue', () => {
23
- it('should set the value when setValue is called with an array of strings', () => {
24
- presenter.setValue(['value1', 'value2']);
25
- expect(presenter.getFilterString()).toBe('(test_field = "value1" OR test_field = "value2")');
26
- });
27
- it('should set the value when setValue is called with an array of numbers', () => {
28
- presenter.setValue([1, 2, 3]);
29
- expect(presenter.getFilterString()).toBe('(test_field = 1 OR test_field = 2 OR test_field = 3)');
30
- });
31
- it('should set the value when setValue is called with an array of booleans', () => {
32
- presenter.setValue([true, false]);
33
- expect(presenter.getFilterString()).toBe('(test_field = true OR test_field = false)');
34
- });
35
- it('should set the value when setValue is called with mixed types', () => {
36
- presenter.setValue(['string', 123, true]);
37
- expect(presenter.getFilterString()).toBe('(test_field = "string" OR test_field = 123 OR test_field = true)');
38
- });
39
- it('should set the value when setValue is called with null', () => {
40
- presenter.setValue(['value1', 'value2']);
41
- presenter.setValue(null);
42
- expect(presenter.getFilterString()).toBe('');
43
- });
44
- it('should set the value when setValue is called with empty array', () => {
45
- presenter.setValue([]);
46
- expect(presenter.getFilterString()).toBe('');
47
- });
48
- it('should trigger onChange handlers when value is set', () => {
49
- const onChangeHandler = vi.fn();
50
- presenter.onChange(onChangeHandler);
51
- presenter.setValue(['value1', 'value2']);
52
- expect(onChangeHandler).toHaveBeenCalledTimes(1);
53
- });
54
- it('should trigger onChange handlers when value is set to null', () => {
55
- const onChangeHandler = vi.fn();
56
- presenter.onChange(onChangeHandler);
57
- presenter.setValue(['value1']);
58
- presenter.setValue(null);
59
- expect(onChangeHandler).toHaveBeenCalledTimes(2);
60
- });
61
- });
62
- describe('getFilterString', () => {
63
- it('should return empty string when value is null', () => {
64
- expect(presenter.getFilterString()).toBe('');
65
- });
66
- it('should return empty string when value is set to null', () => {
67
- presenter.setValue(['value1', 'value2']);
68
- presenter.setValue(null);
69
- expect(presenter.getFilterString()).toBe('');
70
- });
71
- it('should return empty string when value is empty array', () => {
72
- presenter.setValue([]);
73
- expect(presenter.getFilterString()).toBe('');
74
- });
75
- it('should return single filter without parentheses for one value', () => {
76
- presenter.setValue(['single_value']);
77
- expect(presenter.getFilterString()).toBe('test_field = "single_value"');
78
- });
79
- it('should return multiple filters with OR and parentheses for multiple values', () => {
80
- presenter.setValue(['value1', 'value2']);
81
- expect(presenter.getFilterString()).toBe('(test_field = "value1" OR test_field = "value2")');
82
- });
83
- it('should handle special characters in string values', () => {
84
- presenter.setValue(['value"with"quotes', 'normal_value']);
85
- expect(presenter.getFilterString()).toBe('(test_field = "value"with"quotes" OR test_field = "normal_value")');
86
- });
87
- it('should handle numeric values without quotes', () => {
88
- presenter.setValue([1, 2, 3]);
89
- expect(presenter.getFilterString()).toBe('(test_field = 1 OR test_field = 2 OR test_field = 3)');
90
- });
91
- it('should handle boolean values without quotes', () => {
92
- presenter.setValue([true, false]);
93
- expect(presenter.getFilterString()).toBe('(test_field = true OR test_field = false)');
94
- });
95
- it('should handle mixed value types correctly', () => {
96
- presenter.setValue(['string', 123, true, false]);
97
- expect(presenter.getFilterString()).toBe('(test_field = "string" OR test_field = 123 OR test_field = true OR test_field = false)');
98
- });
99
- });
100
- describe('onChange', () => {
101
- it('should register and return unsubscribe function', () => {
102
- const handler = vi.fn();
103
- const unsubscribe = presenter.onChange(handler);
104
- expect(typeof unsubscribe).toBe('function');
105
- });
106
- it('should call registered handlers when value changes', () => {
107
- const handler1 = vi.fn();
108
- const handler2 = vi.fn();
109
- presenter.onChange(handler1);
110
- presenter.onChange(handler2);
111
- presenter.setValue(['value1']);
112
- expect(handler1).toHaveBeenCalledTimes(1);
113
- expect(handler2).toHaveBeenCalledTimes(1);
114
- });
115
- it('should not call unsubscribed handlers', () => {
116
- const handler1 = vi.fn();
117
- const handler2 = vi.fn();
118
- const unsubscribe1 = presenter.onChange(handler1);
119
- presenter.onChange(handler2);
120
- unsubscribe1();
121
- presenter.setValue(['value1']);
122
- expect(handler1).not.toHaveBeenCalled();
123
- expect(handler2).toHaveBeenCalledTimes(1);
124
- });
125
- it('should handle multiple subscriptions and unsubscriptions', () => {
126
- const handler1 = vi.fn();
127
- const handler2 = vi.fn();
128
- const handler3 = vi.fn();
129
- const unsubscribe1 = presenter.onChange(handler1);
130
- const unsubscribe2 = presenter.onChange(handler2);
131
- const unsubscribe3 = presenter.onChange(handler3);
132
- unsubscribe2();
133
- presenter.setValue(['value1']);
134
- expect(handler1).toHaveBeenCalledTimes(1);
135
- expect(handler2).not.toHaveBeenCalled();
136
- expect(handler3).toHaveBeenCalledTimes(1);
137
- unsubscribe1();
138
- unsubscribe3();
139
- presenter.setValue(['value2']);
140
- expect(handler1).toHaveBeenCalledTimes(1);
141
- expect(handler2).not.toHaveBeenCalled();
142
- expect(handler3).toHaveBeenCalledTimes(1);
143
- });
144
- });
145
- describe('setFieldRegistry', () => {
146
- it('should register the field filter with the registry', () => {
147
- presenter.setFieldRegistry(mockFieldRegistry);
148
- expect(mockFieldRegistry.registerFieldFilter).toHaveBeenCalledWith('test_field', presenter);
149
- });
150
- it('should store the field registry reference', () => {
151
- presenter.setFieldRegistry(mockFieldRegistry);
152
- // This is tested indirectly through the dispose method
153
- presenter.dispose();
154
- expect(mockFieldRegistry.unregisterFieldFilter).toHaveBeenCalledWith('test_field');
155
- });
156
- });
157
- describe('setFilterState', () => {
158
- it('should parse single string value from filter AST', () => {
159
- const mockNode = {
160
- name: 'plain-field',
161
- value: 'test_field',
162
- parent: {
163
- name: 'infix-expression',
164
- children: [null, null, { name: 'double-quote-str', value: '"test_value"' }],
165
- },
166
- };
167
- const mockAst = {
168
- findAll: vi.fn().mockReturnValue([mockNode]),
169
- };
170
- presenter.setFilterState(mockAst);
171
- expect(presenter.getFilterString()).toBe('test_field = "test_value"');
172
- });
173
- it('should parse multiple string values from filter AST', () => {
174
- const mockNode1 = {
175
- name: 'plain-field',
176
- value: 'test_field',
177
- parent: {
178
- name: 'infix-expression',
179
- children: [null, null, { name: 'double-quote-str', value: '"value1"' }],
180
- },
181
- };
182
- const mockNode2 = {
183
- name: 'plain-field',
184
- value: 'test_field',
185
- parent: {
186
- name: 'infix-expression',
187
- children: [null, null, { name: 'single-quote-string', value: "'value2'" }],
188
- },
189
- };
190
- const mockAst = {
191
- findAll: vi.fn().mockReturnValue([mockNode1, mockNode2]),
192
- };
193
- presenter.setFilterState(mockAst);
194
- expect(presenter.getFilterString()).toBe('(test_field = "value1" OR test_field = "value2")');
195
- });
196
- it('should parse numeric values from filter AST', () => {
197
- const mockNode = {
198
- name: 'plain-field',
199
- value: 'test_field',
200
- parent: {
201
- name: 'infix-expression',
202
- children: [null, null, { name: 'number', value: '123' }],
203
- },
204
- };
205
- const mockAst = {
206
- findAll: vi.fn().mockReturnValue([mockNode]),
207
- };
208
- presenter.setFilterState(mockAst);
209
- expect(presenter.getFilterString()).toBe('test_field = 123');
210
- });
211
- it('should parse boolean values from filter AST', () => {
212
- const mockNode = {
213
- name: 'plain-field',
214
- value: 'test_field',
215
- parent: {
216
- name: 'infix-expression',
217
- children: [null, null, { name: 'boolean', value: 'true' }],
218
- },
219
- };
220
- const mockAst = {
221
- findAll: vi.fn().mockReturnValue([mockNode]),
222
- };
223
- presenter.setFilterState(mockAst);
224
- expect(presenter.getFilterString()).toBe('test_field = 1');
225
- });
226
- it('should handle mixed value types from filter AST', () => {
227
- const mockNode1 = {
228
- name: 'plain-field',
229
- value: 'test_field',
230
- parent: {
231
- name: 'infix-expression',
232
- children: [null, null, { name: 'double-quote-str', value: '"string"' }],
233
- },
234
- };
235
- const mockNode2 = {
236
- name: 'plain-field',
237
- value: 'test_field',
238
- parent: {
239
- name: 'infix-expression',
240
- children: [null, null, { name: 'number', value: '123' }],
241
- },
242
- };
243
- const mockNode3 = {
244
- name: 'plain-field',
245
- value: 'test_field',
246
- parent: {
247
- name: 'infix-expression',
248
- children: [null, null, { name: 'boolean', value: 'false' }],
249
- },
250
- };
251
- const mockAst = {
252
- findAll: vi.fn().mockReturnValue([mockNode1, mockNode2, mockNode3]),
253
- };
254
- presenter.setFilterState(mockAst);
255
- expect(presenter.getFilterString()).toBe('(test_field = "string" OR test_field = 123 OR test_field = 0)');
256
- });
257
- it('should handle no matching field nodes', () => {
258
- const mockAst = {
259
- findAll: vi.fn().mockReturnValue([]),
260
- };
261
- presenter.setFilterState(mockAst);
262
- expect(presenter.getFilterString()).toBe('');
263
- });
264
- it('should handle field nodes without proper parent structure', () => {
265
- const mockNode = {
266
- name: 'plain-field',
267
- value: 'test_field',
268
- parent: null,
269
- };
270
- const mockAst = {
271
- findAll: vi.fn().mockReturnValue([mockNode]),
272
- };
273
- presenter.setFilterState(mockAst);
274
- expect(presenter.getFilterString()).toBe('');
275
- });
276
- it('should handle field nodes with non-infix-expression parent', () => {
277
- const mockNode = {
278
- name: 'plain-field',
279
- value: 'test_field',
280
- parent: {
281
- name: 'other-expression',
282
- children: [null, null, { name: 'double-quote-str', value: '"test_value"' }],
283
- },
284
- };
285
- const mockAst = {
286
- findAll: vi.fn().mockReturnValue([mockNode]),
287
- };
288
- presenter.setFilterState(mockAst);
289
- expect(presenter.getFilterString()).toBe('');
290
- });
291
- it('should handle missing value nodes', () => {
292
- const mockNode = {
293
- name: 'plain-field',
294
- value: 'test_field',
295
- parent: {
296
- name: 'infix-expression',
297
- children: [null, null, null],
298
- },
299
- };
300
- const mockAst = {
301
- findAll: vi.fn().mockReturnValue([mockNode]),
302
- };
303
- presenter.setFilterState(mockAst);
304
- expect(presenter.getFilterString()).toBe('');
305
- });
306
- });
307
- describe('dispose', () => {
308
- it('should unregister field filter from registry', () => {
309
- presenter.setFieldRegistry(mockFieldRegistry);
310
- presenter.dispose();
311
- expect(mockFieldRegistry.unregisterFieldFilter).toHaveBeenCalledWith('test_field');
312
- });
313
- it('should clear onChange handlers', () => {
314
- const handler = vi.fn();
315
- presenter.onChange(handler);
316
- presenter.dispose();
317
- presenter.setValue(['value1']);
318
- expect(handler).not.toHaveBeenCalled();
319
- });
320
- it('should handle disposal when no registry is set', () => {
321
- expect(() => presenter.dispose()).not.toThrow();
322
- });
323
- });
324
- describe('broadcasts', () => {
325
- it('should provide value broadcast', () => {
326
- expect(presenter.broadcasts).toHaveProperty('value');
327
- expect(typeof presenter.broadcasts.value).toBe('object');
328
- expect(typeof presenter.broadcasts.value.subscribe).toBe('function');
329
- });
330
- });
331
- });
332
- //# sourceMappingURL=multi_select_field_filter_presenter.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"multi_select_field_filter_presenter.test.js","sourceRoot":"","sources":["../../../../src/components/table_filter_panel/field_filters/multi_select_field_filter_presenter.test.ts"],"names":[],"mappings":"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"}