@tcn/ui-table 2.2.0 → 2.3.1

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,5 +1,5 @@
1
1
  import { Node } from 'clarity-pattern-parser';
2
- import { FieldFilterRegistry, FieldFilterStrategy } from "./field_filter_strategy.js";
2
+ import { FieldFilterRegistry, FieldFilterStrategy } from './field_filter_strategy.js';
3
3
  export declare class DateFieldFilterPresenter implements FieldFilterStrategy {
4
4
  private _fieldName;
5
5
  private _fieldFilterRegistry;
@@ -9,8 +9,8 @@ export declare class DateFieldFilterPresenter implements FieldFilterStrategy {
9
9
  private _broadcasts;
10
10
  constructor(fieldName: string);
11
11
  get broadcasts(): {
12
- startDate: import("@tcn/state").IBroadcast<Date | null>;
13
- endDate: import("@tcn/state").IBroadcast<Date | null>;
12
+ startDate: import('@tcn/state').IBroadcast<Date | null>;
13
+ endDate: import('@tcn/state').IBroadcast<Date | null>;
14
14
  };
15
15
  getFilterString(): string;
16
16
  onChange(handler: () => void): () => void;
@@ -20,3 +20,4 @@ export declare class DateFieldFilterPresenter implements FieldFilterStrategy {
20
20
  setFilterState(filterAst: Node): void;
21
21
  dispose(): void;
22
22
  }
23
+ //# sourceMappingURL=date_field_filter_presenter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"date_field_filter_presenter.d.ts","sourceRoot":"","sources":["../../../../src/components/table_filter_panel/field_filters/date_field_filter_presenter.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AAC9C,OAAO,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAEtF,qBAAa,wBAAyB,YAAW,mBAAmB;IAClE,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,oBAAoB,CAAoC;IAChE,OAAO,CAAC,UAAU,CAAiC;IACnD,OAAO,CAAC,QAAQ,CAAiC;IACjD,OAAO,CAAC,iBAAiB,CAAyB;IAElD,OAAO,CAAC,WAAW,CAGjB;gBAEU,SAAS,EAAE,MAAM;IAI7B,IAAI,UAAU;;;MAEb;IAED,eAAe;IAaf,QAAQ,CAAC,OAAO,EAAE,MAAM,IAAI;IAO5B,YAAY,CAAC,SAAS,EAAE,IAAI,GAAG,IAAI;IAKnC,UAAU,CAAC,OAAO,EAAE,IAAI,GAAG,IAAI;IAK/B,gBAAgB,CAAC,mBAAmB,EAAE,mBAAmB;IAKzD,cAAc,CAAC,SAAS,EAAE,IAAI;IA6C9B,OAAO;CAKR"}
@@ -1,93 +1,59 @@
1
- import { Signal } from '@tcn/state';
2
- export class DateFieldFilterPresenter {
3
- _fieldName;
4
- _fieldFilterRegistry = null;
5
- _startDate = new Signal(null);
6
- _endDate = new Signal(null);
7
- _onChangeHandlers = new Set();
8
- _broadcasts = {
9
- startDate: this._startDate.broadcast,
10
- endDate: this._endDate.broadcast,
1
+ import { Signal as n } from "@tcn/state";
2
+ class o {
3
+ _fieldName;
4
+ _fieldFilterRegistry = null;
5
+ _startDate = new n(null);
6
+ _endDate = new n(null);
7
+ _onChangeHandlers = /* @__PURE__ */ new Set();
8
+ _broadcasts = {
9
+ startDate: this._startDate.broadcast,
10
+ endDate: this._endDate.broadcast
11
+ };
12
+ constructor(e) {
13
+ this._fieldName = e;
14
+ }
15
+ get broadcasts() {
16
+ return this._broadcasts;
17
+ }
18
+ getFilterString() {
19
+ const e = this._startDate.get(), t = this._endDate.get();
20
+ return e && t ? `(${this._fieldName} >= '${e.toISOString()}' AND ${this._fieldName} <= '${t.toISOString()}')` : e ? `${this._fieldName} >= '${e.toISOString()}'` : t ? `${this._fieldName} <= '${t.toISOString()}'` : "";
21
+ }
22
+ onChange(e) {
23
+ return this._onChangeHandlers.add(e), () => {
24
+ this._onChangeHandlers.delete(e);
11
25
  };
12
- constructor(fieldName) {
13
- this._fieldName = fieldName;
14
- }
15
- get broadcasts() {
16
- return this._broadcasts;
17
- }
18
- getFilterString() {
19
- const startDate = this._startDate.get();
20
- const endDate = this._endDate.get();
21
- if (startDate && endDate) {
22
- return `(${this._fieldName} >= '${startDate.toISOString()}' AND ${this._fieldName} <= '${endDate.toISOString()}')`;
23
- }
24
- else if (startDate) {
25
- return `${this._fieldName} >= '${startDate.toISOString()}'`;
26
- }
27
- else if (endDate) {
28
- return `${this._fieldName} <= '${endDate.toISOString()}'`;
29
- }
30
- return '';
31
- }
32
- onChange(handler) {
33
- this._onChangeHandlers.add(handler);
34
- return () => {
35
- this._onChangeHandlers.delete(handler);
36
- };
37
- }
38
- setStartDate(startDate) {
39
- this._startDate.set(startDate);
40
- this._onChangeHandlers.forEach(handler => handler());
41
- }
42
- setEndDate(endDate) {
43
- this._endDate.set(endDate);
44
- this._onChangeHandlers.forEach(handler => handler());
45
- }
46
- setFieldRegistry(fieldFilterRegistry) {
47
- this._fieldFilterRegistry = fieldFilterRegistry;
48
- fieldFilterRegistry.registerFieldFilter(this._fieldName, this);
49
- }
50
- setFilterState(filterAst) {
51
- const fieldNodes = filterAst.findAll(n => n.name === 'plain-field' && n.value === this._fieldName);
52
- if (fieldNodes.length === 0) {
53
- return;
54
- }
55
- if (fieldNodes.length === 1) {
56
- const operatorNode = fieldNodes[0].parent?.children[1];
57
- const valueNode = fieldNodes[0].parent?.children[2];
58
- if (operatorNode?.value === '>=' && valueNode != null) {
59
- this.setStartDate(new Date(valueNode?.value.slice(1, -1)));
60
- }
61
- else if (operatorNode?.value === '<=' && valueNode != null) {
62
- this.setEndDate(new Date(valueNode?.value.slice(1, -1)));
63
- }
64
- return;
65
- }
66
- if (fieldNodes.length === 2) {
67
- const operatorOneNode = fieldNodes[0].parent?.children[1];
68
- const operatorTwoNode = fieldNodes[1].parent?.children[1];
69
- const valueOneNode = fieldNodes[0].parent?.children[2];
70
- const valueTwoNode = fieldNodes[1].parent?.children[2];
71
- if (operatorOneNode?.value === '>=' &&
72
- operatorTwoNode?.value === '<=' &&
73
- valueOneNode != null &&
74
- valueTwoNode != null) {
75
- this.setStartDate(new Date(valueOneNode?.value.slice(1, -1)));
76
- this.setEndDate(new Date(valueTwoNode?.value.slice(1, -1)));
77
- }
78
- else if (operatorOneNode?.value === '<=' &&
79
- operatorTwoNode?.value === '>=' &&
80
- valueOneNode != null &&
81
- valueTwoNode != null) {
82
- this.setEndDate(new Date(valueOneNode?.value.slice(1, -1)));
83
- this.setStartDate(new Date(valueTwoNode?.value.slice(1, -1)));
84
- }
85
- }
86
- }
87
- dispose() {
88
- this._fieldFilterRegistry?.unregisterFieldFilter(this._fieldName);
89
- this._fieldFilterRegistry = null;
90
- this._onChangeHandlers.clear();
91
- }
26
+ }
27
+ setStartDate(e) {
28
+ this._startDate.set(e), this._onChangeHandlers.forEach((t) => t());
29
+ }
30
+ setEndDate(e) {
31
+ this._endDate.set(e), this._onChangeHandlers.forEach((t) => t());
32
+ }
33
+ setFieldRegistry(e) {
34
+ this._fieldFilterRegistry = e, e.registerFieldFilter(this._fieldName, this);
35
+ }
36
+ setFilterState(e) {
37
+ const t = e.findAll(
38
+ (a) => a.name === "plain-field" && a.value === this._fieldName
39
+ );
40
+ if (t.length !== 0) {
41
+ if (t.length === 1) {
42
+ const a = t[0].parent?.children[1], i = t[0].parent?.children[2];
43
+ a?.value === ">=" && i != null ? this.setStartDate(new Date(i?.value.slice(1, -1))) : a?.value === "<=" && i != null && this.setEndDate(new Date(i?.value.slice(1, -1)));
44
+ return;
45
+ }
46
+ if (t.length === 2) {
47
+ const a = t[0].parent?.children[1], i = t[1].parent?.children[1], s = t[0].parent?.children[2], l = t[1].parent?.children[2];
48
+ a?.value === ">=" && i?.value === "<=" && s != null && l != null ? (this.setStartDate(new Date(s?.value.slice(1, -1))), this.setEndDate(new Date(l?.value.slice(1, -1)))) : a?.value === "<=" && i?.value === ">=" && s != null && l != null && (this.setEndDate(new Date(s?.value.slice(1, -1))), this.setStartDate(new Date(l?.value.slice(1, -1))));
49
+ }
50
+ }
51
+ }
52
+ dispose() {
53
+ this._fieldFilterRegistry?.unregisterFieldFilter(this._fieldName), this._fieldFilterRegistry = null, this._onChangeHandlers.clear();
54
+ }
92
55
  }
93
- //# sourceMappingURL=date_field_filter_presenter.js.map
56
+ export {
57
+ o as DateFieldFilterPresenter
58
+ };
59
+ //# sourceMappingURL=date_field_filter_presenter.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"date_field_filter_presenter.js","sourceRoot":"","sources":["../../../../src/components/table_filter_panel/field_filters/date_field_filter_presenter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"date_field_filter_presenter.js","sources":["../../../../src/components/table_filter_panel/field_filters/date_field_filter_presenter.ts"],"sourcesContent":["import { Signal } from '@tcn/state';\nimport { Node } from 'clarity-pattern-parser';\nimport { FieldFilterRegistry, FieldFilterStrategy } from './field_filter_strategy.js';\n\nexport class DateFieldFilterPresenter implements FieldFilterStrategy {\n private _fieldName: string;\n private _fieldFilterRegistry: FieldFilterRegistry | null = null;\n private _startDate = new Signal<Date | null>(null);\n private _endDate = new Signal<Date | null>(null);\n private _onChangeHandlers = new Set<() => void>();\n\n private _broadcasts = {\n startDate: this._startDate.broadcast,\n endDate: this._endDate.broadcast,\n };\n\n constructor(fieldName: string) {\n this._fieldName = fieldName;\n }\n\n get broadcasts() {\n return this._broadcasts;\n }\n\n getFilterString() {\n const startDate = this._startDate.get();\n const endDate = this._endDate.get();\n if (startDate && endDate) {\n return `(${this._fieldName} >= '${startDate.toISOString()}' AND ${this._fieldName} <= '${endDate.toISOString()}')`;\n } else if (startDate) {\n return `${this._fieldName} >= '${startDate.toISOString()}'`;\n } else if (endDate) {\n return `${this._fieldName} <= '${endDate.toISOString()}'`;\n }\n return '';\n }\n\n onChange(handler: () => void) {\n this._onChangeHandlers.add(handler);\n return () => {\n this._onChangeHandlers.delete(handler);\n };\n }\n\n setStartDate(startDate: Date | null) {\n this._startDate.set(startDate);\n this._onChangeHandlers.forEach(handler => handler());\n }\n\n setEndDate(endDate: Date | null) {\n this._endDate.set(endDate);\n this._onChangeHandlers.forEach(handler => handler());\n }\n\n setFieldRegistry(fieldFilterRegistry: FieldFilterRegistry) {\n this._fieldFilterRegistry = fieldFilterRegistry;\n fieldFilterRegistry.registerFieldFilter(this._fieldName, this);\n }\n\n setFilterState(filterAst: Node) {\n const fieldNodes = filterAst.findAll(\n (n: Node) => n.name === 'plain-field' && n.value === this._fieldName\n );\n\n if (fieldNodes.length === 0) {\n return;\n }\n\n if (fieldNodes.length === 1) {\n const operatorNode = fieldNodes[0].parent?.children[1];\n const valueNode = fieldNodes[0].parent?.children[2];\n if (operatorNode?.value === '>=' && valueNode != null) {\n this.setStartDate(new Date(valueNode?.value.slice(1, -1)));\n } else if (operatorNode?.value === '<=' && valueNode != null) {\n this.setEndDate(new Date(valueNode?.value.slice(1, -1)));\n }\n return;\n }\n\n if (fieldNodes.length === 2) {\n const operatorOneNode = fieldNodes[0].parent?.children[1];\n const operatorTwoNode = fieldNodes[1].parent?.children[1];\n const valueOneNode = fieldNodes[0].parent?.children[2];\n const valueTwoNode = fieldNodes[1].parent?.children[2];\n if (\n operatorOneNode?.value === '>=' &&\n operatorTwoNode?.value === '<=' &&\n valueOneNode != null &&\n valueTwoNode != null\n ) {\n this.setStartDate(new Date(valueOneNode?.value.slice(1, -1)));\n this.setEndDate(new Date(valueTwoNode?.value.slice(1, -1)));\n } else if (\n operatorOneNode?.value === '<=' &&\n operatorTwoNode?.value === '>=' &&\n valueOneNode != null &&\n valueTwoNode != null\n ) {\n this.setEndDate(new Date(valueOneNode?.value.slice(1, -1)));\n this.setStartDate(new Date(valueTwoNode?.value.slice(1, -1)));\n }\n }\n }\n\n dispose() {\n this._fieldFilterRegistry?.unregisterFieldFilter(this._fieldName);\n this._fieldFilterRegistry = null;\n this._onChangeHandlers.clear();\n }\n}\n"],"names":["DateFieldFilterPresenter","Signal","fieldName","startDate","endDate","handler","fieldFilterRegistry","filterAst","fieldNodes","n","operatorNode","valueNode","operatorOneNode","operatorTwoNode","valueOneNode","valueTwoNode"],"mappings":"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"}
@@ -3,3 +3,4 @@ export type FieldFilterProps = {
3
3
  label: string;
4
4
  operators?: ('is' | 'isNot' | 'has')[];
5
5
  };
6
+ //# sourceMappingURL=field_filter_props.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"field_filter_props.d.ts","sourceRoot":"","sources":["../../../../src/components/table_filter_panel/field_filters/field_filter_props.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,gBAAgB,GAAG;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,CAAC,IAAI,GAAG,OAAO,GAAG,KAAK,CAAC,EAAE,CAAC;CACxC,CAAC"}
@@ -10,3 +10,4 @@ export interface FieldFilterStrategy {
10
10
  dispose: () => void;
11
11
  setFilterState: (filterAst: Node) => void;
12
12
  }
13
+ //# sourceMappingURL=field_filter_strategy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"field_filter_strategy.d.ts","sourceRoot":"","sources":["../../../../src/components/table_filter_panel/field_filters/field_filter_strategy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AAE9C,MAAM,WAAW,mBAAmB;IAClC,mBAAmB,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,mBAAmB,KAAK,IAAI,CAAC;IACnF,qBAAqB,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;CACpD;AAED,MAAM,WAAW,mBAAmB;IAClC,eAAe,EAAE,MAAM,MAAM,CAAC;IAC9B,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,IAAI,KAAK,MAAM,IAAI,CAAC;IAC9C,gBAAgB,EAAE,CAAC,aAAa,EAAE,mBAAmB,KAAK,IAAI,CAAC;IAC/D,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,cAAc,EAAE,CAAC,SAAS,EAAE,IAAI,KAAK,IAAI,CAAC;CAC3C"}
@@ -1,9 +1,9 @@
1
- import React from 'react';
2
- import { FieldFilterProps } from "./field_filter_props.js";
1
+ import { FieldFilterProps } from './field_filter_props.js';
3
2
  export type MulitSelectFieldFilterProps = FieldFilterProps & {
4
3
  options: {
5
4
  label: string;
6
5
  value: string | boolean | number;
7
6
  }[];
8
7
  };
9
- export declare function MulitSelectFieldFilter({ fieldName, label, options, }: MulitSelectFieldFilterProps): React.JSX.Element;
8
+ export declare function MulitSelectFieldFilter({ fieldName, label, options, }: MulitSelectFieldFilterProps): import("react/jsx-runtime").JSX.Element;
9
+ //# sourceMappingURL=mulit_select_field_filter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mulit_select_field_filter.d.ts","sourceRoot":"","sources":["../../../../src/components/table_filter_panel/field_filters/mulit_select_field_filter.tsx"],"names":[],"mappings":"AAQA,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAI3D,MAAM,MAAM,2BAA2B,GAAG,gBAAgB,GAAG;IAC3D,OAAO,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,GAAG,OAAO,GAAG,MAAM,CAAA;KAAE,EAAE,CAAC;CAChE,CAAC;AAEF,wBAAgB,sBAAsB,CAAC,EACrC,SAAS,EACT,KAAK,EACL,OAAO,GACR,EAAE,2BAA2B,2CA+C7B"}
@@ -1,30 +1,53 @@
1
- import React from 'react';
2
- import { CrossCircleIcon } from '@tcn/icons/cross_circle_icon';
3
- import { useSignalValue } from '@tcn/state';
4
- import { Button } from '@tcn/ui/actions';
5
- import { Multiselect, Option } from '@tcn/ui/inputs';
6
- import { Box, HStack, VStack } from '@tcn/ui/stacks';
7
- import { Title } from '@tcn/ui/typography';
8
- import { MultiSelectFieldFilterPresenter } from "./multi_select_field_filter_presenter.js";
9
- import { useFieldFilterStrategy } from "./use_field_filter_strategy.js";
10
- export function MulitSelectFieldFilter({ fieldName, label, options, }) {
11
- const presenter = useFieldFilterStrategy(MultiSelectFieldFilterPresenter, fieldName);
12
- const values = useSignalValue(presenter.broadcasts.value);
13
- const selectedLabels = values
14
- ?.map(value => options.find(option => option.value === value)?.label ?? '')
15
- .filter(Boolean) ?? [];
16
- return (React.createElement(VStack, { gap: "4px" },
17
- React.createElement(Box, { width: "flex" },
18
- React.createElement(Title, { size: "md" }, label)),
19
- React.createElement(HStack, null,
20
- React.createElement(Box, { width: "flex" },
21
- React.createElement(Multiselect, { value: selectedLabels, onChange: selectedLabels => {
22
- const realValues = selectedLabels
23
- .map(label => options.find(option => option.label === label)?.value)
24
- .filter(value => value !== undefined);
25
- presenter.setValue(realValues.length > 0 ? realValues : null);
26
- } }, options.map(option => (React.createElement(Option, { key: option.value.toString(), value: option.label, label: option.label }, option.label))))),
27
- React.createElement(Button, { onClick: () => presenter.setValue(null), hierarchy: "tertiary", disabled: values == null || values.length === 0 },
28
- React.createElement(CrossCircleIcon, null)))));
1
+ import { jsxs as o, jsx as l } from "react/jsx-runtime";
2
+ import { CrossCircleIcon as f } from "@tcn/icons/cross_circle_icon.js";
3
+ import { useSignalValue as h } from "@tcn/state";
4
+ import { Button as p } from "@tcn/ui/actions";
5
+ import { Multiselect as b, Option as v } from "@tcn/ui/inputs";
6
+ import { VStack as g, Box as c, HStack as x } from "@tcn/ui/stacks";
7
+ import { Title as S } from "@tcn/ui/typography";
8
+ import { MultiSelectFieldFilterPresenter as F } from "./multi_select_field_filter_presenter.js";
9
+ import { useFieldFilterStrategy as V } from "./use_field_filter_strategy.js";
10
+ function I({
11
+ fieldName: m,
12
+ label: s,
13
+ options: t
14
+ }) {
15
+ const i = V(F, m), a = h(i.broadcasts.value), u = a?.map((e) => t.find((r) => r.value === e)?.label ?? "").filter(Boolean) ?? [];
16
+ return /* @__PURE__ */ o(g, { gap: "4px", children: [
17
+ /* @__PURE__ */ l(c, { width: "flex", children: /* @__PURE__ */ l(S, { size: "md", children: s }) }),
18
+ /* @__PURE__ */ o(x, { children: [
19
+ /* @__PURE__ */ l(c, { width: "flex", children: /* @__PURE__ */ l(
20
+ b,
21
+ {
22
+ value: u,
23
+ onChange: (e) => {
24
+ const r = e.map((n) => t.find((d) => d.label === n)?.value).filter((n) => n !== void 0);
25
+ i.setValue(r.length > 0 ? r : null);
26
+ },
27
+ children: t.map((e) => /* @__PURE__ */ l(
28
+ v,
29
+ {
30
+ value: e.label,
31
+ label: e.label,
32
+ children: e.label
33
+ },
34
+ e.value.toString()
35
+ ))
36
+ }
37
+ ) }),
38
+ /* @__PURE__ */ l(
39
+ p,
40
+ {
41
+ onClick: () => i.setValue(null),
42
+ hierarchy: "tertiary",
43
+ disabled: a == null || a.length === 0,
44
+ children: /* @__PURE__ */ l(f, {})
45
+ }
46
+ )
47
+ ] })
48
+ ] });
29
49
  }
30
- //# sourceMappingURL=mulit_select_field_filter.js.map
50
+ export {
51
+ I as MulitSelectFieldFilter
52
+ };
53
+ //# sourceMappingURL=mulit_select_field_filter.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"mulit_select_field_filter.js","sourceRoot":"","sources":["../../../../src/components/table_filter_panel/field_filters/mulit_select_field_filter.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACzC,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAE3C,OAAO,EAAE,+BAA+B,EAAE,iDAA+F;AACzI,OAAO,EAAE,sBAAsB,EAAE,uCAAqF;AAMtH,MAAM,UAAU,sBAAsB,CAAC,EACrC,SAAS,EACT,KAAK,EACL,OAAO,GACqB;IAC5B,MAAM,SAAS,GAAG,sBAAsB,CAAC,+BAA+B,EAAE,SAAS,CAAC,CAAC;IAErF,MAAM,MAAM,GAAG,cAAc,CAAC,SAAS,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;IAC1D,MAAM,cAAc,GAClB,MAAM;QACJ,EAAE,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,KAAK,KAAK,CAAC,EAAE,KAAK,IAAI,EAAE,CAAC;SAC1E,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;IAE3B,OAAO,CACL,oBAAC,MAAM,IAAC,GAAG,EAAC,KAAK;QACf,oBAAC,GAAG,IAAC,KAAK,EAAC,MAAM;YACf,oBAAC,KAAK,IAAC,IAAI,EAAC,IAAI,IAAE,KAAK,CAAS,CAC5B;QACN,oBAAC,MAAM;YACL,oBAAC,GAAG,IAAC,KAAK,EAAC,MAAM;gBACf,oBAAC,WAAW,IACV,KAAK,EAAE,cAAc,EACrB,QAAQ,EAAE,cAAc,CAAC,EAAE;wBACzB,MAAM,UAAU,GAAG,cAAc;6BAC9B,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,KAAK,KAAK,CAAC,EAAE,KAAK,CAAC;6BACnE,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,KAAK,SAAS,CAAkC,CAAC;wBAEzE,SAAS,CAAC,QAAQ,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;oBAChE,CAAC,IAEA,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CACrB,oBAAC,MAAM,IACL,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,EAC5B,KAAK,EAAE,MAAM,CAAC,KAAK,EACnB,KAAK,EAAE,MAAM,CAAC,KAAK,IAElB,MAAM,CAAC,KAAK,CACN,CACV,CAAC,CACU,CACV;YACN,oBAAC,MAAM,IACL,OAAO,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,EACvC,SAAS,EAAC,UAAU,EACpB,QAAQ,EAAE,MAAM,IAAI,IAAI,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;gBAE/C,oBAAC,eAAe,OAAG,CACZ,CACF,CACF,CACV,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"mulit_select_field_filter.js","sources":["../../../../src/components/table_filter_panel/field_filters/mulit_select_field_filter.tsx"],"sourcesContent":["import React from 'react';\n\nimport { CrossCircleIcon } from '@tcn/icons/cross_circle_icon.js';\nimport { useSignalValue } from '@tcn/state';\nimport { Button } from '@tcn/ui/actions';\nimport { Multiselect, Option } from '@tcn/ui/inputs';\nimport { Box, HStack, VStack } from '@tcn/ui/stacks';\nimport { Title } from '@tcn/ui/typography';\nimport { FieldFilterProps } from './field_filter_props.js';\nimport { MultiSelectFieldFilterPresenter } from './multi_select_field_filter_presenter.js';\nimport { useFieldFilterStrategy } from './use_field_filter_strategy.js';\n\nexport type MulitSelectFieldFilterProps = FieldFilterProps & {\n options: { label: string; value: string | boolean | number }[];\n};\n\nexport function MulitSelectFieldFilter({\n fieldName,\n label,\n options,\n}: MulitSelectFieldFilterProps) {\n const presenter = useFieldFilterStrategy(MultiSelectFieldFilterPresenter, fieldName);\n\n const values = useSignalValue(presenter.broadcasts.value);\n const selectedLabels =\n values\n ?.map(value => options.find(option => option.value === value)?.label ?? '')\n .filter(Boolean) ?? [];\n\n return (\n <VStack gap=\"4px\">\n <Box width=\"flex\">\n <Title size=\"md\">{label}</Title>\n </Box>\n <HStack>\n <Box width=\"flex\">\n <Multiselect\n value={selectedLabels}\n onChange={selectedLabels => {\n const realValues = selectedLabels\n .map(label => options.find(option => option.label === label)?.value)\n .filter(value => value !== undefined) as (string | boolean | number)[];\n\n presenter.setValue(realValues.length > 0 ? realValues : null);\n }}\n >\n {options.map(option => (\n <Option\n key={option.value.toString()}\n value={option.label}\n label={option.label}\n >\n {option.label}\n </Option>\n ))}\n </Multiselect>\n </Box>\n <Button\n onClick={() => presenter.setValue(null)}\n hierarchy=\"tertiary\"\n disabled={values == null || values.length === 0}\n >\n <CrossCircleIcon />\n </Button>\n </HStack>\n </VStack>\n );\n}\n"],"names":["MulitSelectFieldFilter","fieldName","label","options","presenter","useFieldFilterStrategy","MultiSelectFieldFilterPresenter","values","useSignalValue","selectedLabels","value","option","jsxs","VStack","jsx","Box","Title","HStack","Multiselect","realValues","Option","Button","CrossCircleIcon"],"mappings":";;;;;;;;;AAgBO,SAASA,EAAuB;AAAA,EACrC,WAAAC;AAAA,EACA,OAAAC;AAAA,EACA,SAAAC;AACF,GAAgC;AAC9B,QAAMC,IAAYC,EAAuBC,GAAiCL,CAAS,GAE7EM,IAASC,EAAeJ,EAAU,WAAW,KAAK,GAClDK,IACJF,GACI,IAAI,CAAAG,MAASP,EAAQ,KAAK,CAAAQ,MAAUA,EAAO,UAAUD,CAAK,GAAG,SAAS,EAAE,EACzE,OAAO,OAAO,KAAK,CAAA;AAExB,SACE,gBAAAE,EAACC,GAAA,EAAO,KAAI,OACV,UAAA;AAAA,IAAA,gBAAAC,EAACC,GAAA,EAAI,OAAM,QACT,UAAA,gBAAAD,EAACE,KAAM,MAAK,MAAM,aAAM,EAAA,CAC1B;AAAA,sBACCC,GAAA,EACC,UAAA;AAAA,MAAA,gBAAAH,EAACC,GAAA,EAAI,OAAM,QACT,UAAA,gBAAAD;AAAA,QAACI;AAAA,QAAA;AAAA,UACC,OAAOT;AAAA,UACP,UAAU,CAAAA,MAAkB;AAC1B,kBAAMU,IAAaV,EAChB,IAAI,CAAAP,MAASC,EAAQ,KAAK,CAAAQ,MAAUA,EAAO,UAAUT,CAAK,GAAG,KAAK,EAClE,OAAO,CAAAQ,MAASA,MAAU,MAAS;AAEtC,YAAAN,EAAU,SAASe,EAAW,SAAS,IAAIA,IAAa,IAAI;AAAA,UAC9D;AAAA,UAEC,UAAAhB,EAAQ,IAAI,CAAAQ,MACX,gBAAAG;AAAA,YAACM;AAAA,YAAA;AAAA,cAEC,OAAOT,EAAO;AAAA,cACd,OAAOA,EAAO;AAAA,cAEb,UAAAA,EAAO;AAAA,YAAA;AAAA,YAJHA,EAAO,MAAM,SAAA;AAAA,UAAS,CAM9B;AAAA,QAAA;AAAA,MAAA,GAEL;AAAA,MACA,gBAAAG;AAAA,QAACO;AAAA,QAAA;AAAA,UACC,SAAS,MAAMjB,EAAU,SAAS,IAAI;AAAA,UACtC,WAAU;AAAA,UACV,UAAUG,KAAU,QAAQA,EAAO,WAAW;AAAA,UAE9C,4BAACe,GAAA,CAAA,CAAgB;AAAA,QAAA;AAAA,MAAA;AAAA,IACnB,EAAA,CACF;AAAA,EAAA,GACF;AAEJ;"}
@@ -1,5 +1,5 @@
1
1
  import { Node } from 'clarity-pattern-parser';
2
- import { FieldFilterRegistry, FieldFilterStrategy } from "./field_filter_strategy.js";
2
+ import { FieldFilterRegistry, FieldFilterStrategy } from './field_filter_strategy.js';
3
3
  export declare class MultiSelectFieldFilterPresenter implements FieldFilterStrategy {
4
4
  private _fieldName;
5
5
  private _value;
@@ -10,10 +10,11 @@ export declare class MultiSelectFieldFilterPresenter implements FieldFilterStrat
10
10
  onChange(handler: () => void): () => void;
11
11
  setValue(value: (string | boolean | number)[] | null): void;
12
12
  get broadcasts(): {
13
- value: import("@tcn/state").IBroadcast<(string | number | boolean)[] | null>;
13
+ value: import('@tcn/state').IBroadcast<(string | number | boolean)[] | null>;
14
14
  };
15
15
  setFieldRegistry(fieldRegistry: FieldFilterRegistry): void;
16
16
  getFilterString(): string;
17
17
  setFilterState(filterAst: Node): void;
18
18
  dispose(): void;
19
19
  }
20
+ //# sourceMappingURL=multi_select_field_filter_presenter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"multi_select_field_filter_presenter.d.ts","sourceRoot":"","sources":["../../../../src/components/table_filter_panel/field_filters/multi_select_field_filter_presenter.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AAC9C,OAAO,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAEtF,qBAAa,+BAAgC,YAAW,mBAAmB;IACzE,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,MAAM,CAA0D;IACxE,OAAO,CAAC,oBAAoB,CAAoC;IAChE,OAAO,CAAC,iBAAiB,CAAyB;IAElD,OAAO,CAAC,WAAW,CAEjB;gBAEU,SAAS,EAAE,MAAM;IAI7B,QAAQ,CAAC,OAAO,EAAE,MAAM,IAAI;IAO5B,QAAQ,CAAC,KAAK,EAAE,CAAC,MAAM,GAAG,OAAO,GAAG,MAAM,CAAC,EAAE,GAAG,IAAI;IAKpD,IAAI,UAAU;;MAEb;IAED,gBAAgB,CAAC,aAAa,EAAE,mBAAmB;IAKnD,eAAe;IAaf,cAAc,CAAC,SAAS,EAAE,IAAI;IAiC9B,OAAO;CAIR"}
@@ -1,72 +1,55 @@
1
- import { Signal } from '@tcn/state';
2
- export class MultiSelectFieldFilterPresenter {
3
- _fieldName;
4
- _value = new Signal(null);
5
- _fieldFilterRegistry = null;
6
- _onChangeHandlers = new Set();
7
- _broadcasts = {
8
- value: this._value.broadcast,
1
+ import { Signal as a } from "@tcn/state";
2
+ class d {
3
+ _fieldName;
4
+ _value = new a(null);
5
+ _fieldFilterRegistry = null;
6
+ _onChangeHandlers = /* @__PURE__ */ new Set();
7
+ _broadcasts = {
8
+ value: this._value.broadcast
9
+ };
10
+ constructor(t) {
11
+ this._fieldName = t;
12
+ }
13
+ onChange(t) {
14
+ return this._onChangeHandlers.add(t), () => {
15
+ this._onChangeHandlers.delete(t);
9
16
  };
10
- constructor(fieldName) {
11
- this._fieldName = fieldName;
12
- }
13
- onChange(handler) {
14
- this._onChangeHandlers.add(handler);
15
- return () => {
16
- this._onChangeHandlers.delete(handler);
17
- };
18
- }
19
- setValue(value) {
20
- this._value.set(value);
21
- this._onChangeHandlers.forEach(handler => handler());
22
- }
23
- get broadcasts() {
24
- return this._broadcasts;
25
- }
26
- setFieldRegistry(fieldRegistry) {
27
- this._fieldFilterRegistry = fieldRegistry;
28
- fieldRegistry.registerFieldFilter(this._fieldName, this);
29
- }
30
- getFilterString() {
31
- const values = this._value.get();
32
- if (values == null) {
33
- return '';
34
- }
35
- const wrappedValues = values.map(value => typeof value === 'string' ? `"${value}"` : value);
36
- const filterItems = wrappedValues.map(value => `${this._fieldName} = ${value}`);
37
- const filterString = filterItems.join(' OR ');
38
- return filterItems.length > 1 ? `(${filterString})` : filterString;
39
- }
40
- setFilterState(filterAst) {
41
- const fieldNodes = filterAst
42
- .findAll(n => n.name === 'plain-field' && n.value === this._fieldName)
43
- .filter(node => node.parent?.name === 'infix-expression');
44
- if (fieldNodes.length === 0) {
45
- return;
46
- }
47
- const valueNodes = fieldNodes
48
- .map(node => node.parent?.children[2])
49
- .filter(node => node != null);
50
- const values = valueNodes
51
- .map(node => {
52
- const n = node;
53
- return n.name === 'double-quote-str' || n.name === 'single-quote-string'
54
- ? n.value.slice(1, -1)
55
- : n.value;
56
- })
57
- .map(value => (value === 'true' ? true : value === 'false' ? false : value))
58
- .map(value => {
59
- const numValue = Number(value);
60
- if (isNaN(numValue)) {
61
- return value;
62
- }
63
- return numValue;
64
- });
65
- this._value.set(values);
66
- }
67
- dispose() {
68
- this._fieldFilterRegistry?.unregisterFieldFilter(this._fieldName);
69
- this._onChangeHandlers.clear();
70
- }
17
+ }
18
+ setValue(t) {
19
+ this._value.set(t), this._onChangeHandlers.forEach((s) => s());
20
+ }
21
+ get broadcasts() {
22
+ return this._broadcasts;
23
+ }
24
+ setFieldRegistry(t) {
25
+ this._fieldFilterRegistry = t, t.registerFieldFilter(this._fieldName, this);
26
+ }
27
+ getFilterString() {
28
+ const t = this._value.get();
29
+ if (t == null)
30
+ return "";
31
+ const l = t.map(
32
+ (e) => typeof e == "string" ? `"${e}"` : e
33
+ ).map((e) => `${this._fieldName} = ${e}`), i = l.join(" OR ");
34
+ return l.length > 1 ? `(${i})` : i;
35
+ }
36
+ setFilterState(t) {
37
+ const s = t.findAll((e) => e.name === "plain-field" && e.value === this._fieldName).filter((e) => e.parent?.name === "infix-expression");
38
+ if (s.length === 0)
39
+ return;
40
+ const i = s.map((e) => e.parent?.children[2]).filter((e) => e != null).map((e) => e.name === "double-quote-str" || e.name === "single-quote-string" ? e.value.slice(1, -1) : e.value).map(
41
+ (e) => e === "true" ? !0 : e === "false" ? !1 : e
42
+ ).map((e) => {
43
+ const r = Number(e);
44
+ return isNaN(r) ? e : r;
45
+ });
46
+ this._value.set(i);
47
+ }
48
+ dispose() {
49
+ this._fieldFilterRegistry?.unregisterFieldFilter(this._fieldName), this._onChangeHandlers.clear();
50
+ }
71
51
  }
72
- //# sourceMappingURL=multi_select_field_filter_presenter.js.map
52
+ export {
53
+ d as MultiSelectFieldFilterPresenter
54
+ };
55
+ //# sourceMappingURL=multi_select_field_filter_presenter.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"multi_select_field_filter_presenter.js","sourceRoot":"","sources":["../../../../src/components/table_filter_panel/field_filters/multi_select_field_filter_presenter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAOpC,MAAM,OAAO,+BAA+B;IAClC,UAAU,CAAS;IACnB,MAAM,GAAG,IAAI,MAAM,CAAuC,IAAI,CAAC,CAAC;IAChE,oBAAoB,GAA+B,IAAI,CAAC;IACxD,iBAAiB,GAAG,IAAI,GAAG,EAAc,CAAC;IAE1C,WAAW,GAAG;QACpB,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS;KAC7B,CAAC;IAEF,YAAY,SAAiB;QAC3B,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;IAC9B,CAAC;IAED,QAAQ,CAAC,OAAmB;QAC1B,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACpC,OAAO,GAAG,EAAE;YACV,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACzC,CAAC,CAAC;IACJ,CAAC;IAED,QAAQ,CAAC,KAA2C;QAClD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACvB,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC;IACvD,CAAC;IAED,IAAI,UAAU;QACZ,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;IAED,gBAAgB,CAAC,aAAkC;QACjD,IAAI,CAAC,oBAAoB,GAAG,aAAa,CAAC;QAC1C,aAAa,CAAC,mBAAmB,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;IAC3D,CAAC;IAED,eAAe;QACb,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;QACjC,IAAI,MAAM,IAAI,IAAI,EAAE,CAAC;YACnB,OAAO,EAAE,CAAC;QACZ,CAAC;QACD,MAAM,aAAa,GAAG,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CACvC,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,KAAK,CACjD,CAAC;QACF,MAAM,WAAW,GAAG,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,UAAU,MAAM,KAAK,EAAE,CAAC,CAAC;QAChF,MAAM,YAAY,GAAG,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC9C,OAAO,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,YAAY,GAAG,CAAC,CAAC,CAAC,YAAY,CAAC;IACrE,CAAC;IAED,cAAc,CAAC,SAAe;QAC5B,MAAM,UAAU,GAAG,SAAS;aACzB,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,aAAa,IAAI,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,UAAU,CAAC;aACrE,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,KAAK,kBAAkB,CAAC,CAAC;QAE5D,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC5B,OAAO;QACT,CAAC;QAED,MAAM,UAAU,GAAG,UAAU;aAC1B,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;aACrC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC;QAEhC,MAAM,MAAM,GAAG,UAAU;aACtB,GAAG,CAAC,IAAI,CAAC,EAAE;YACV,MAAM,CAAC,GAAG,IAAY,CAAC;YACvB,OAAO,CAAC,CAAC,IAAI,KAAK,kBAAkB,IAAI,CAAC,CAAC,IAAI,KAAK,qBAAqB;gBACtE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;gBACtB,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;QACd,CAAC,CAAC;aACD,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,KAAK,KAAK,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,KAAK,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;aAC3E,GAAG,CAAC,KAAK,CAAC,EAAE;YACX,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;YAC/B,IAAI,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC;gBACpB,OAAO,KAAK,CAAC;YACf,CAAC;YACD,OAAO,QAAQ,CAAC;QAClB,CAAC,CAAC,CAAC;QAEL,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAC1B,CAAC;IAED,OAAO;QACL,IAAI,CAAC,oBAAoB,EAAE,qBAAqB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAClE,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,CAAC;IACjC,CAAC;CACF"}
1
+ {"version":3,"file":"multi_select_field_filter_presenter.js","sources":["../../../../src/components/table_filter_panel/field_filters/multi_select_field_filter_presenter.ts"],"sourcesContent":["import { Signal } from '@tcn/state';\nimport { Node } from 'clarity-pattern-parser';\nimport { FieldFilterRegistry, FieldFilterStrategy } from './field_filter_strategy.js';\n\nexport class MultiSelectFieldFilterPresenter implements FieldFilterStrategy {\n private _fieldName: string;\n private _value = new Signal<(string | boolean | number)[] | null>(null);\n private _fieldFilterRegistry: FieldFilterRegistry | null = null;\n private _onChangeHandlers = new Set<() => void>();\n\n private _broadcasts = {\n value: this._value.broadcast,\n };\n\n constructor(fieldName: string) {\n this._fieldName = fieldName;\n }\n\n onChange(handler: () => void) {\n this._onChangeHandlers.add(handler);\n return () => {\n this._onChangeHandlers.delete(handler);\n };\n }\n\n setValue(value: (string | boolean | number)[] | null) {\n this._value.set(value);\n this._onChangeHandlers.forEach(handler => handler());\n }\n\n get broadcasts() {\n return this._broadcasts;\n }\n\n setFieldRegistry(fieldRegistry: FieldFilterRegistry) {\n this._fieldFilterRegistry = fieldRegistry;\n fieldRegistry.registerFieldFilter(this._fieldName, this);\n }\n\n getFilterString() {\n const values = this._value.get();\n if (values == null) {\n return '';\n }\n const wrappedValues = values.map(value =>\n typeof value === 'string' ? `\"${value}\"` : value\n );\n const filterItems = wrappedValues.map(value => `${this._fieldName} = ${value}`);\n const filterString = filterItems.join(' OR ');\n return filterItems.length > 1 ? `(${filterString})` : filterString;\n }\n\n setFilterState(filterAst: Node) {\n const fieldNodes = filterAst\n .findAll((n: Node) => n.name === 'plain-field' && n.value === this._fieldName)\n .filter((node: Node) => node.parent?.name === 'infix-expression');\n\n if (fieldNodes.length === 0) {\n return;\n }\n\n const valueNodes = fieldNodes\n .map((node: Node) => node.parent?.children[2])\n .filter((node: Node | undefined): node is Node => node != null);\n\n const values = valueNodes\n .map((node: Node) => {\n return node.name === 'double-quote-str' || node.name === 'single-quote-string'\n ? node.value.slice(1, -1)\n : node.value;\n })\n .map((value: string) =>\n value === 'true' ? true : value === 'false' ? false : value\n )\n .map((value: string | boolean) => {\n const numValue = Number(value);\n if (isNaN(numValue)) {\n return value;\n }\n return numValue;\n });\n\n this._value.set(values);\n }\n\n dispose() {\n this._fieldFilterRegistry?.unregisterFieldFilter(this._fieldName);\n this._onChangeHandlers.clear();\n }\n}\n"],"names":["MultiSelectFieldFilterPresenter","Signal","fieldName","handler","value","fieldRegistry","values","filterItems","filterString","filterAst","fieldNodes","n","node","numValue"],"mappings":";AAIO,MAAMA,EAA+D;AAAA,EAClE;AAAA,EACA,SAAS,IAAIC,EAA6C,IAAI;AAAA,EAC9D,uBAAmD;AAAA,EACnD,wCAAwB,IAAA;AAAA,EAExB,cAAc;AAAA,IACpB,OAAO,KAAK,OAAO;AAAA,EAAA;AAAA,EAGrB,YAAYC,GAAmB;AAC7B,SAAK,aAAaA;AAAA,EACpB;AAAA,EAEA,SAASC,GAAqB;AAC5B,gBAAK,kBAAkB,IAAIA,CAAO,GAC3B,MAAM;AACX,WAAK,kBAAkB,OAAOA,CAAO;AAAA,IACvC;AAAA,EACF;AAAA,EAEA,SAASC,GAA6C;AACpD,SAAK,OAAO,IAAIA,CAAK,GACrB,KAAK,kBAAkB,QAAQ,CAAAD,MAAWA,EAAA,CAAS;AAAA,EACrD;AAAA,EAEA,IAAI,aAAa;AACf,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,iBAAiBE,GAAoC;AACnD,SAAK,uBAAuBA,GAC5BA,EAAc,oBAAoB,KAAK,YAAY,IAAI;AAAA,EACzD;AAAA,EAEA,kBAAkB;AAChB,UAAMC,IAAS,KAAK,OAAO,IAAA;AAC3B,QAAIA,KAAU;AACZ,aAAO;AAKT,UAAMC,IAHgBD,EAAO;AAAA,MAAI,OAC/B,OAAOF,KAAU,WAAW,IAAIA,CAAK,MAAMA;AAAA,IAAA,EAEX,IAAI,CAAAA,MAAS,GAAG,KAAK,UAAU,MAAMA,CAAK,EAAE,GACxEI,IAAeD,EAAY,KAAK,MAAM;AAC5C,WAAOA,EAAY,SAAS,IAAI,IAAIC,CAAY,MAAMA;AAAA,EACxD;AAAA,EAEA,eAAeC,GAAiB;AAC9B,UAAMC,IAAaD,EAChB,QAAQ,CAACE,MAAYA,EAAE,SAAS,iBAAiBA,EAAE,UAAU,KAAK,UAAU,EAC5E,OAAO,CAACC,MAAeA,EAAK,QAAQ,SAAS,kBAAkB;AAElE,QAAIF,EAAW,WAAW;AACxB;AAOF,UAAMJ,IAJaI,EAChB,IAAI,CAACE,MAAeA,EAAK,QAAQ,SAAS,CAAC,CAAC,EAC5C,OAAO,CAACA,MAAyCA,KAAQ,IAAI,EAG7D,IAAI,CAACA,MACGA,EAAK,SAAS,sBAAsBA,EAAK,SAAS,wBACrDA,EAAK,MAAM,MAAM,GAAG,EAAE,IACtBA,EAAK,KACV,EACA;AAAA,MAAI,CAACR,MACJA,MAAU,SAAS,KAAOA,MAAU,UAAU,KAAQA;AAAA,IAAA,EAEvD,IAAI,CAACA,MAA4B;AAChC,YAAMS,IAAW,OAAOT,CAAK;AAC7B,aAAI,MAAMS,CAAQ,IACTT,IAEFS;AAAA,IACT,CAAC;AAEH,SAAK,OAAO,IAAIP,CAAM;AAAA,EACxB;AAAA,EAEA,UAAU;AACR,SAAK,sBAAsB,sBAAsB,KAAK,UAAU,GAChE,KAAK,kBAAkB,MAAA;AAAA,EACzB;AACF;"}
@@ -1,3 +1,3 @@
1
- import React from 'react';
2
- import { FieldFilterProps } from "./field_filter_props.js";
3
- export declare function NumberFieldFilter({ fieldName, label }: FieldFilterProps): React.JSX.Element;
1
+ import { FieldFilterProps } from './field_filter_props.js';
2
+ export declare function NumberFieldFilter({ fieldName, label }: FieldFilterProps): import("react/jsx-runtime").JSX.Element;
3
+ //# sourceMappingURL=number_field_filter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"number_field_filter.d.ts","sourceRoot":"","sources":["../../../../src/components/table_filter_panel/field_filters/number_field_filter.tsx"],"names":[],"mappings":"AAOA,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAO3D,wBAAgB,iBAAiB,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE,gBAAgB,2CAsCvE"}