@journeyapps-labs/reactor-mod-data-browser 3.0.1 → 3.1.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 (256) hide show
  1. package/CHANGELOG.md +45 -0
  2. package/dist/@types/actions/connections/SetConnectionColorAction.d.ts +11 -0
  3. package/dist/@types/actions/saved-queries/OpenSavedQueryAction.d.ts +10 -0
  4. package/dist/@types/actions/saved-queries/RemoveSavedQueryAction.d.ts +9 -0
  5. package/dist/@types/core/AbstractConnection.d.ts +2 -0
  6. package/dist/@types/core/SchemaModelDefinition.d.ts +5 -0
  7. package/dist/@types/core/connection-colors.d.ts +10 -0
  8. package/dist/@types/core/query/StandardModelFields.d.ts +5 -0
  9. package/dist/@types/core/query/filters.d.ts +46 -5
  10. package/dist/@types/core/query/query-simple/SimplePage.d.ts +2 -0
  11. package/dist/@types/core/query/query-simple/SimpleQuery.d.ts +12 -3
  12. package/dist/@types/core/query/query-simple/SimpleQueryColumns.d.ts +12 -0
  13. package/dist/@types/core/query/query-simple/SimpleQueryFilterState.d.ts +37 -0
  14. package/dist/@types/core/query/query-simple/SimpleQueryPlanner.d.ts +4 -0
  15. package/dist/@types/core/query/query-simple/SimpleQuerySortState.d.ts +23 -0
  16. package/dist/@types/core/query/query-simple/SimpleQueryTypes.d.ts +24 -0
  17. package/dist/@types/core/query/widgets/ColumnDisplayWidget.d.ts +1 -0
  18. package/dist/@types/core/query/widgets/PeekRelationshipButton.d.ts +7 -0
  19. package/dist/@types/core/query/widgets/SmartColumnWidget.d.ts +3 -0
  20. package/dist/@types/core/query/widgets/SmartFilterWidget.d.ts +6 -0
  21. package/dist/@types/entities/ConnectionEntityDefinition.d.ts +2 -0
  22. package/dist/@types/entities/SavedQueryEntityDefinition.d.ts +8 -0
  23. package/dist/@types/entities.d.ts +2 -1
  24. package/dist/@types/forms/APIConnectionForm.d.ts +1 -0
  25. package/dist/@types/forms/TypeEngine.d.ts +3 -21
  26. package/dist/@types/forms/types/attachment-handler.d.ts +2 -0
  27. package/dist/@types/forms/types/boolean-handler.d.ts +2 -0
  28. package/dist/@types/forms/types/date-handler.d.ts +2 -0
  29. package/dist/@types/forms/types/filters/ClearableFilterFormDialogDirective.d.ts +10 -0
  30. package/dist/@types/forms/types/filters/ConditionalFilterForm.d.ts +23 -0
  31. package/dist/@types/forms/types/image-handler.d.ts +2 -0
  32. package/dist/@types/forms/types/location-handler.d.ts +2 -0
  33. package/dist/@types/forms/types/multiple-choice-handler.d.ts +2 -0
  34. package/dist/@types/forms/types/multiple-choice-integer-handler.d.ts +2 -0
  35. package/dist/@types/forms/types/number-handler.d.ts +2 -0
  36. package/dist/@types/forms/types/shared/type-handler.d.ts +37 -0
  37. package/dist/@types/forms/types/shared/ui.d.ts +768 -0
  38. package/dist/@types/forms/types/single-choice-handler.d.ts +2 -0
  39. package/dist/@types/forms/types/single-choice-integer-handler.d.ts +2 -0
  40. package/dist/@types/forms/types/text-handler.d.ts +3 -0
  41. package/dist/@types/index.d.ts +1 -0
  42. package/dist/@types/panels/_shared/SharedConnectionPanelFactory.d.ts +19 -0
  43. package/dist/@types/panels/_shared/SharedModelPanelFactory.d.ts +5 -2
  44. package/dist/@types/panels/query/QueryPanelFactory.d.ts +6 -2
  45. package/dist/@types/panels/query/TableControlsWidget.d.ts +2 -0
  46. package/dist/@types/panels/query/table-controls/ChangesControlsWidget.d.ts +8 -0
  47. package/dist/@types/panels/query/table-controls/FilterControlsWidget.d.ts +7 -0
  48. package/dist/@types/panels/query/table-controls/PageControlsWidget.d.ts +9 -0
  49. package/dist/@types/panels/query/table-controls/QueryControlsWidget.d.ts +11 -0
  50. package/dist/@types/panels/query/table-controls/SortChipWidget.d.ts +10 -0
  51. package/dist/@types/panels/query/table-controls/SortControlsWidget.d.ts +7 -0
  52. package/dist/@types/preferences/QueryControlPreferences.d.ts +7 -0
  53. package/dist/@types/stores/SavedQueryStore.d.ts +34 -0
  54. package/dist/@types/widgets/EmptyValueWidget.d.ts +7 -0
  55. package/dist/DataBrowserModule.js +21 -7
  56. package/dist/DataBrowserModule.js.map +1 -1
  57. package/dist/actions/connections/AddConnectionAction.js +2 -2
  58. package/dist/actions/connections/AddConnectionAction.js.map +1 -1
  59. package/dist/actions/connections/RemoveConnectionAction.js +2 -2
  60. package/dist/actions/connections/RemoveConnectionAction.js.map +1 -1
  61. package/dist/actions/connections/SetConnectionColorAction.js +63 -0
  62. package/dist/actions/connections/SetConnectionColorAction.js.map +1 -0
  63. package/dist/actions/saved-queries/OpenSavedQueryAction.js +58 -0
  64. package/dist/actions/saved-queries/OpenSavedQueryAction.js.map +1 -0
  65. package/dist/actions/saved-queries/RemoveSavedQueryAction.js +43 -0
  66. package/dist/actions/saved-queries/RemoveSavedQueryAction.js.map +1 -0
  67. package/dist/actions/schema-definitions/CreateModelAction.js +2 -2
  68. package/dist/actions/schema-definitions/CreateModelAction.js.map +1 -1
  69. package/dist/actions/schema-definitions/QuerySchemaModelAction.js +2 -2
  70. package/dist/actions/schema-definitions/QuerySchemaModelAction.js.map +1 -1
  71. package/dist/actions/schema-model/EditSchemaModelAction.js +2 -2
  72. package/dist/actions/schema-model/EditSchemaModelAction.js.map +1 -1
  73. package/dist/actions/schema-model/ViewSchemaModelAsJsonAction.js +2 -2
  74. package/dist/actions/schema-model/ViewSchemaModelAsJsonAction.js.map +1 -1
  75. package/dist/core/AbstractConnection.js +116 -90
  76. package/dist/core/AbstractConnection.js.map +1 -1
  77. package/dist/core/SchemaModelDefinition.js +14 -0
  78. package/dist/core/SchemaModelDefinition.js.map +1 -1
  79. package/dist/core/connection-colors.js +36 -0
  80. package/dist/core/connection-colors.js.map +1 -0
  81. package/dist/core/query/StandardModelFields.js +10 -0
  82. package/dist/core/query/StandardModelFields.js.map +1 -0
  83. package/dist/core/query/filters.js +86 -4
  84. package/dist/core/query/filters.js.map +1 -1
  85. package/dist/core/query/query-simple/SimplePage.js +2 -4
  86. package/dist/core/query/query-simple/SimplePage.js.map +1 -1
  87. package/dist/core/query/query-simple/SimpleQuery.js +64 -68
  88. package/dist/core/query/query-simple/SimpleQuery.js.map +1 -1
  89. package/dist/core/query/query-simple/SimpleQueryColumns.js +88 -0
  90. package/dist/core/query/query-simple/SimpleQueryColumns.js.map +1 -0
  91. package/dist/core/query/query-simple/SimpleQueryFilterState.js +136 -0
  92. package/dist/core/query/query-simple/SimpleQueryFilterState.js.map +1 -0
  93. package/dist/core/query/query-simple/SimpleQueryPlanner.js +14 -0
  94. package/dist/core/query/query-simple/SimpleQueryPlanner.js.map +1 -0
  95. package/dist/core/query/query-simple/SimpleQuerySortState.js +140 -0
  96. package/dist/core/query/query-simple/SimpleQuerySortState.js.map +1 -0
  97. package/dist/core/query/query-simple/SimpleQueryTypes.js +44 -0
  98. package/dist/core/query/query-simple/SimpleQueryTypes.js.map +1 -0
  99. package/dist/core/query/widgets/BelongsToDisplayWidget.js +14 -7
  100. package/dist/core/query/widgets/BelongsToDisplayWidget.js.map +1 -1
  101. package/dist/core/query/widgets/CellDisplayWidget.js +5 -9
  102. package/dist/core/query/widgets/CellDisplayWidget.js.map +1 -1
  103. package/dist/core/query/widgets/ColumnDisplayWidget.js +13 -12
  104. package/dist/core/query/widgets/ColumnDisplayWidget.js.map +1 -1
  105. package/dist/core/query/widgets/PeekRelationshipButton.js +128 -0
  106. package/dist/core/query/widgets/PeekRelationshipButton.js.map +1 -0
  107. package/dist/core/query/widgets/SmartColumnWidget.js +18 -3
  108. package/dist/core/query/widgets/SmartColumnWidget.js.map +1 -1
  109. package/dist/core/query/widgets/SmartFilterWidget.js +88 -51
  110. package/dist/core/query/widgets/SmartFilterWidget.js.map +1 -1
  111. package/dist/entities/ConnectionEntityDefinition.js +32 -7
  112. package/dist/entities/ConnectionEntityDefinition.js.map +1 -1
  113. package/dist/entities/SavedQueryEntityDefinition.js +68 -0
  114. package/dist/entities/SavedQueryEntityDefinition.js.map +1 -0
  115. package/dist/entities/SchemaModelDefinitionEntityDefinition.js +3 -1
  116. package/dist/entities/SchemaModelDefinitionEntityDefinition.js.map +1 -1
  117. package/dist/entities.js +1 -0
  118. package/dist/entities.js.map +1 -1
  119. package/dist/forms/APIConnectionForm.js +11 -2
  120. package/dist/forms/APIConnectionForm.js.map +1 -1
  121. package/dist/forms/TypeEngine.js +30 -306
  122. package/dist/forms/TypeEngine.js.map +1 -1
  123. package/dist/forms/types/attachment-handler.js +29 -0
  124. package/dist/forms/types/attachment-handler.js.map +1 -0
  125. package/dist/forms/types/boolean-handler.js +22 -0
  126. package/dist/forms/types/boolean-handler.js.map +1 -0
  127. package/dist/forms/types/date-handler.js +97 -0
  128. package/dist/forms/types/date-handler.js.map +1 -0
  129. package/dist/forms/types/filters/ClearableFilterFormDialogDirective.js +25 -0
  130. package/dist/forms/types/filters/ClearableFilterFormDialogDirective.js.map +1 -0
  131. package/dist/forms/types/filters/ConditionalFilterForm.js +87 -0
  132. package/dist/forms/types/filters/ConditionalFilterForm.js.map +1 -0
  133. package/dist/forms/types/image-handler.js +82 -0
  134. package/dist/forms/types/image-handler.js.map +1 -0
  135. package/dist/forms/types/location-handler.js +49 -0
  136. package/dist/forms/types/location-handler.js.map +1 -0
  137. package/dist/forms/types/multiple-choice-handler.js +37 -0
  138. package/dist/forms/types/multiple-choice-handler.js.map +1 -0
  139. package/dist/forms/types/multiple-choice-integer-handler.js +37 -0
  140. package/dist/forms/types/multiple-choice-integer-handler.js.map +1 -0
  141. package/dist/forms/types/number-handler.js +79 -0
  142. package/dist/forms/types/number-handler.js.map +1 -0
  143. package/dist/forms/types/shared/type-handler.js +2 -0
  144. package/dist/forms/types/shared/type-handler.js.map +1 -0
  145. package/dist/forms/types/shared/ui.js +33 -0
  146. package/dist/forms/types/shared/ui.js.map +1 -0
  147. package/dist/forms/types/single-choice-handler.js +41 -0
  148. package/dist/forms/types/single-choice-handler.js.map +1 -0
  149. package/dist/forms/types/single-choice-integer-handler.js +41 -0
  150. package/dist/forms/types/single-choice-integer-handler.js.map +1 -0
  151. package/dist/forms/types/text-handler.js +170 -0
  152. package/dist/forms/types/text-handler.js.map +1 -0
  153. package/dist/index.js +1 -0
  154. package/dist/index.js.map +1 -1
  155. package/dist/panels/_shared/SharedConnectionPanelFactory.js +48 -0
  156. package/dist/panels/_shared/SharedConnectionPanelFactory.js.map +1 -0
  157. package/dist/panels/_shared/SharedModelPanelFactory.js +7 -2
  158. package/dist/panels/_shared/SharedModelPanelFactory.js.map +1 -1
  159. package/dist/panels/query/PageResultsWidget.js +28 -11
  160. package/dist/panels/query/PageResultsWidget.js.map +1 -1
  161. package/dist/panels/query/QueryPanelFactory.js +17 -2
  162. package/dist/panels/query/QueryPanelFactory.js.map +1 -1
  163. package/dist/panels/query/QueryPanelWidget.js +55 -9
  164. package/dist/panels/query/QueryPanelWidget.js.map +1 -1
  165. package/dist/panels/query/TableControlsWidget.js +29 -67
  166. package/dist/panels/query/TableControlsWidget.js.map +1 -1
  167. package/dist/panels/query/table-controls/ChangesControlsWidget.js +36 -0
  168. package/dist/panels/query/table-controls/ChangesControlsWidget.js.map +1 -0
  169. package/dist/panels/query/table-controls/FilterControlsWidget.js +106 -0
  170. package/dist/panels/query/table-controls/FilterControlsWidget.js.map +1 -0
  171. package/dist/panels/query/table-controls/PageControlsWidget.js +65 -0
  172. package/dist/panels/query/table-controls/PageControlsWidget.js.map +1 -0
  173. package/dist/panels/query/table-controls/QueryControlsWidget.js +85 -0
  174. package/dist/panels/query/table-controls/QueryControlsWidget.js.map +1 -0
  175. package/dist/panels/query/table-controls/SortChipWidget.js +75 -0
  176. package/dist/panels/query/table-controls/SortChipWidget.js.map +1 -0
  177. package/dist/panels/query/table-controls/SortControlsWidget.js +65 -0
  178. package/dist/panels/query/table-controls/SortControlsWidget.js.map +1 -0
  179. package/dist/preferences/QueryControlPreferences.js +28 -0
  180. package/dist/preferences/QueryControlPreferences.js.map +1 -0
  181. package/dist/stores/ConnectionStore.js +2 -0
  182. package/dist/stores/ConnectionStore.js.map +1 -1
  183. package/dist/stores/SavedQueryStore.js +131 -0
  184. package/dist/stores/SavedQueryStore.js.map +1 -0
  185. package/dist/tsconfig.tsbuildinfo +1 -1
  186. package/dist/widgets/EmptyValueWidget.js +15 -0
  187. package/dist/widgets/EmptyValueWidget.js.map +1 -0
  188. package/dist-module/bundle.js +181 -51
  189. package/dist-module/bundle.js.map +1 -1
  190. package/package.json +13 -13
  191. package/src/DataBrowserModule.ts +21 -7
  192. package/src/actions/connections/AddConnectionAction.tsx +2 -2
  193. package/src/actions/connections/RemoveConnectionAction.tsx +2 -2
  194. package/src/actions/connections/SetConnectionColorAction.ts +52 -0
  195. package/src/actions/saved-queries/OpenSavedQueryAction.ts +43 -0
  196. package/src/actions/saved-queries/RemoveSavedQueryAction.ts +27 -0
  197. package/src/actions/schema-definitions/CreateModelAction.ts +9 -2
  198. package/src/actions/schema-definitions/QuerySchemaModelAction.ts +9 -2
  199. package/src/actions/schema-model/EditSchemaModelAction.ts +9 -2
  200. package/src/actions/schema-model/ViewSchemaModelAsJsonAction.ts +9 -2
  201. package/src/core/AbstractConnection.ts +7 -1
  202. package/src/core/SchemaModelDefinition.ts +16 -0
  203. package/src/core/connection-colors.ts +49 -0
  204. package/src/core/query/StandardModelFields.ts +9 -0
  205. package/src/core/query/filters.ts +121 -6
  206. package/src/core/query/query-simple/SimplePage.ts +4 -5
  207. package/src/core/query/query-simple/SimpleQuery.tsx +83 -86
  208. package/src/core/query/query-simple/SimpleQueryColumns.tsx +126 -0
  209. package/src/core/query/query-simple/SimpleQueryFilterState.ts +160 -0
  210. package/src/core/query/query-simple/SimpleQueryPlanner.ts +18 -0
  211. package/src/core/query/query-simple/SimpleQuerySortState.ts +133 -0
  212. package/src/core/query/query-simple/SimpleQueryTypes.ts +61 -0
  213. package/src/core/query/widgets/BelongsToDisplayWidget.tsx +19 -11
  214. package/src/core/query/widgets/CellDisplayWidget.tsx +5 -10
  215. package/src/core/query/widgets/ColumnDisplayWidget.tsx +24 -20
  216. package/src/core/query/widgets/PeekRelationshipButton.tsx +161 -0
  217. package/src/core/query/widgets/SmartColumnWidget.tsx +26 -4
  218. package/src/core/query/widgets/SmartFilterWidget.tsx +119 -69
  219. package/src/entities/ConnectionEntityDefinition.tsx +33 -4
  220. package/src/entities/SavedQueryEntityDefinition.ts +72 -0
  221. package/src/entities/SchemaModelDefinitionEntityDefinition.ts +5 -2
  222. package/src/entities.ts +2 -1
  223. package/src/forms/APIConnectionForm.tsx +15 -2
  224. package/src/forms/TypeEngine.tsx +35 -421
  225. package/src/forms/types/attachment-handler.tsx +35 -0
  226. package/src/forms/types/boolean-handler.tsx +28 -0
  227. package/src/forms/types/date-handler.tsx +125 -0
  228. package/src/forms/types/filters/ClearableFilterFormDialogDirective.ts +32 -0
  229. package/src/forms/types/filters/ConditionalFilterForm.tsx +109 -0
  230. package/src/forms/types/image-handler.tsx +90 -0
  231. package/src/forms/types/location-handler.tsx +53 -0
  232. package/src/forms/types/multiple-choice-handler.tsx +37 -0
  233. package/src/forms/types/multiple-choice-integer-handler.tsx +37 -0
  234. package/src/forms/types/number-handler.tsx +100 -0
  235. package/src/forms/types/shared/type-handler.ts +36 -0
  236. package/src/forms/types/shared/ui.tsx +40 -0
  237. package/src/forms/types/single-choice-handler.tsx +47 -0
  238. package/src/forms/types/single-choice-integer-handler.tsx +47 -0
  239. package/src/forms/types/text-handler.tsx +247 -0
  240. package/src/index.ts +1 -0
  241. package/src/panels/_shared/SharedConnectionPanelFactory.tsx +55 -0
  242. package/src/panels/_shared/SharedModelPanelFactory.tsx +8 -2
  243. package/src/panels/query/PageResultsWidget.tsx +40 -28
  244. package/src/panels/query/QueryPanelFactory.tsx +19 -2
  245. package/src/panels/query/QueryPanelWidget.tsx +64 -9
  246. package/src/panels/query/TableControlsWidget.tsx +42 -120
  247. package/src/panels/query/table-controls/ChangesControlsWidget.tsx +72 -0
  248. package/src/panels/query/table-controls/FilterControlsWidget.tsx +145 -0
  249. package/src/panels/query/table-controls/PageControlsWidget.tsx +97 -0
  250. package/src/panels/query/table-controls/QueryControlsWidget.tsx +127 -0
  251. package/src/panels/query/table-controls/SortChipWidget.tsx +119 -0
  252. package/src/panels/query/table-controls/SortControlsWidget.tsx +95 -0
  253. package/src/preferences/QueryControlPreferences.ts +34 -0
  254. package/src/stores/ConnectionStore.ts +2 -0
  255. package/src/stores/SavedQueryStore.ts +121 -0
  256. package/src/widgets/EmptyValueWidget.tsx +20 -0
@@ -0,0 +1,44 @@
1
+ import { BaseObserver } from '@journeyapps-labs/common-utils';
2
+ export var SortDirection;
3
+ (function (SortDirection) {
4
+ SortDirection["ASC"] = "asc";
5
+ SortDirection["DESC"] = "desc";
6
+ })(SortDirection || (SortDirection = {}));
7
+ export class SimpleQuerySort extends BaseObserver {
8
+ constructor(field, direction) {
9
+ super();
10
+ this.field = field;
11
+ this.direction = direction;
12
+ }
13
+ static deserialize(value) {
14
+ return new SimpleQuerySort(value.field, value.direction);
15
+ }
16
+ static create(field, direction = SortDirection.ASC) {
17
+ return new SimpleQuerySort(field, direction);
18
+ }
19
+ serialize() {
20
+ return {
21
+ field: this.field,
22
+ direction: this.direction
23
+ };
24
+ }
25
+ setDirection(direction) {
26
+ if (this.direction === direction) {
27
+ return false;
28
+ }
29
+ this.direction = direction;
30
+ this.iterateListeners((listener) => { var _a; return (_a = listener.changed) === null || _a === void 0 ? void 0 : _a.call(listener); });
31
+ return true;
32
+ }
33
+ toggle() {
34
+ if (this.direction === SortDirection.ASC) {
35
+ this.setDirection(SortDirection.DESC);
36
+ return;
37
+ }
38
+ this.remove();
39
+ }
40
+ remove() {
41
+ this.iterateListeners((listener) => { var _a; return (_a = listener.removeRequested) === null || _a === void 0 ? void 0 : _a.call(listener); });
42
+ }
43
+ }
44
+ //# sourceMappingURL=SimpleQueryTypes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SimpleQueryTypes.js","sourceRoot":"","sources":["../../../../src/core/query/query-simple/SimpleQueryTypes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAE9D,MAAM,CAAN,IAAY,aAGX;AAHD,WAAY,aAAa;IACvB,4BAAW,CAAA;IACX,8BAAa,CAAA;AACf,CAAC,EAHW,aAAa,KAAb,aAAa,QAGxB;AAYD,MAAM,OAAO,eAAgB,SAAQ,YAAqC;IACxE,YACS,KAAa,EACb,SAAwB;QAE/B,KAAK,EAAE,CAAC;QAHD,UAAK,GAAL,KAAK,CAAQ;QACb,cAAS,GAAT,SAAS,CAAe;IAGjC,CAAC;IAED,MAAM,CAAC,WAAW,CAAC,KAAgC;QACjD,OAAO,IAAI,eAAe,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;IAC3D,CAAC;IAED,MAAM,CAAC,MAAM,CAAC,KAAa,EAAE,YAA2B,aAAa,CAAC,GAAG;QACvE,OAAO,IAAI,eAAe,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;IAC/C,CAAC;IAED,SAAS;QACP,OAAO;YACL,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,SAAS,EAAE,IAAI,CAAC,SAAS;SAC1B,CAAC;IACJ,CAAC;IAED,YAAY,CAAC,SAAwB;QACnC,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;YACjC,OAAO,KAAK,CAAC;QACf,CAAC;QACD,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,gBAAgB,CAAC,CAAC,QAAQ,EAAE,EAAE,WAAC,OAAA,MAAA,QAAQ,CAAC,OAAO,wDAAI,CAAA,EAAA,CAAC,CAAC;QAC1D,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM;QACJ,IAAI,IAAI,CAAC,SAAS,KAAK,aAAa,CAAC,GAAG,EAAE,CAAC;YACzC,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;YACtC,OAAO;QACT,CAAC;QACD,IAAI,CAAC,MAAM,EAAE,CAAC;IAChB,CAAC;IAED,MAAM;QACJ,IAAI,CAAC,gBAAgB,CAAC,CAAC,QAAQ,EAAE,EAAE,WAAC,OAAA,MAAA,QAAQ,CAAC,eAAe,wDAAI,CAAA,EAAA,CAAC,CAAC;IACpE,CAAC;CACF"}
@@ -3,6 +3,8 @@ import { useEffect, useState } from 'react';
3
3
  import { IconWidget, styled, TableButtonWidget } from '@journeyapps-labs/reactor-mod';
4
4
  import { copyTextToClipboard } from '@journeyapps-labs/lib-reactor-utils';
5
5
  import { observer } from 'mobx-react';
6
+ import { PeekRelationshipButton } from './PeekRelationshipButton';
7
+ import { EmptyValueWidget } from '../../../widgets/EmptyValueWidget';
6
8
  export const BelongsToDisplayWidget = observer((props) => {
7
9
  const [object, setObject] = useState(null);
8
10
  const [broken, setBroken] = useState(false);
@@ -24,25 +26,24 @@ export const BelongsToDisplayWidget = observer((props) => {
24
26
  } }));
25
27
  }
26
28
  if (!props.id) {
27
- return React.createElement(S.Empty, null, "Not set");
29
+ return React.createElement(EmptyValueWidget, null, "Not set");
28
30
  }
29
31
  if (!object) {
30
32
  return React.createElement(S.Spinner, { spin: true, icon: "spinner" });
31
33
  }
32
34
  return (React.createElement(S.Container, { className: props.className },
33
35
  object.data.display,
34
- React.createElement(TableButtonWidget, { icon: "arrow-right", action: () => {
35
- props.open(object);
36
- } })));
36
+ React.createElement(S.Actions, null,
37
+ React.createElement(PeekRelationshipButton, { object: object, open: props.open }),
38
+ React.createElement(TableButtonWidget, { icon: "arrow-right", action: () => {
39
+ props.open(object);
40
+ } }))));
37
41
  });
38
42
  var S;
39
43
  (function (S) {
40
44
  S.Warning = styled(TableButtonWidget) `
41
45
  display: flex;
42
46
  flex-direction: row;
43
- `;
44
- S.Empty = styled.div `
45
- opacity: 0.2;
46
47
  `;
47
48
  S.Spinner = styled(IconWidget) `
48
49
  opacity: 0.2;
@@ -55,5 +56,11 @@ var S;
55
56
  justify-content: space-between;
56
57
  flex-grow: 1;
57
58
  `;
59
+ S.Actions = styled.div `
60
+ display: flex;
61
+ flex-direction: row;
62
+ column-gap: 3px;
63
+ align-items: center;
64
+ `;
58
65
  })(S || (S = {}));
59
66
  //# sourceMappingURL=BelongsToDisplayWidget.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"BelongsToDisplayWidget.js","sourceRoot":"","sources":["../../../../src/core/query/widgets/BelongsToDisplayWidget.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAG5C,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AACtF,OAAO,EAAE,mBAAmB,EAAE,MAAM,qCAAqC,CAAC;AAE1E,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAUtC,MAAM,CAAC,MAAM,sBAAsB,GAA0C,QAAQ,CAAC,CAAC,KAAK,EAAE,EAAE;IAC9F,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAoB,IAAI,CAAC,CAAC;IAC9D,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAE5C,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC;YACd,OAAO;QACT,CAAC;QAED,KAAK,CAAC,UAAU,CAAC,kCAAkC,CAAC,KAAK,CAAC,YAAY,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CACrG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE;YAClC,IAAI,CAAC,GAAG,EAAE,CAAC;gBACT,SAAS,CAAC,IAAI,CAAC,CAAC;gBAChB,OAAO;YACT,CAAC;YACD,SAAS,CAAC,GAAG,CAAC,CAAC;QACjB,CAAC,CAAC,CACH,CAAC;IACJ,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;IAEf,IAAI,MAAM,EAAE,CAAC;QACX,OAAO,CACL,oBAAC,CAAC,CAAC,OAAO,IACR,OAAO,EAAC,SAAS,EACjB,KAAK,EAAE,GAAG,KAAK,CAAC,EAAE,YAAY,EAC9B,IAAI,EAAC,SAAS,EACd,MAAM,EAAE,GAAG,EAAE;gBACX,mBAAmB,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YAChC,CAAC,GACD,CACH,CAAC;IACJ,CAAC;IAED,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC;QACd,OAAO,oBAAC,CAAC,CAAC,KAAK,kBAAkB,CAAC;IACpC,CAAC;IAED,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,oBAAC,CAAC,CAAC,OAAO,IAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAC,SAAS,GAAG,CAAC;IAClD,CAAC;IAED,OAAO,CACL,oBAAC,CAAC,CAAC,SAAS,IAAC,SAAS,EAAE,KAAK,CAAC,SAAS;QACpC,MAAM,CAAC,IAAI,CAAC,OAAO;QACpB,oBAAC,iBAAiB,IAChB,IAAI,EAAC,aAAa,EAClB,MAAM,EAAE,GAAG,EAAE;gBACX,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACrB,CAAC,GACD,CACU,CACf,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,IAAU,CAAC,CAsBV;AAtBD,WAAU,CAAC;IACI,SAAO,GAAG,MAAM,CAAC,iBAAiB,CAAC,CAAA;;;GAG/C,CAAC;IAEW,OAAK,GAAG,MAAM,CAAC,GAAG,CAAA;;GAE9B,CAAC;IAEW,SAAO,GAAG,MAAM,CAAC,UAAU,CAAC,CAAA;;GAExC,CAAC;IAEW,WAAS,GAAG,MAAM,CAAC,GAAG,CAAA;;;;;;;GAOlC,CAAC;AACJ,CAAC,EAtBS,CAAC,KAAD,CAAC,QAsBV"}
1
+ {"version":3,"file":"BelongsToDisplayWidget.js","sourceRoot":"","sources":["../../../../src/core/query/widgets/BelongsToDisplayWidget.tsx"],"names":[],"mappings":"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"}
@@ -1,19 +1,15 @@
1
- import { ioc, SmartDateDisplayWidget, styled } from '@journeyapps-labs/reactor-mod';
1
+ import { ioc, SmartDateDisplayWidget } from '@journeyapps-labs/reactor-mod';
2
2
  import * as React from 'react';
3
3
  import { TypeEngine } from '../../../forms/TypeEngine';
4
- var S;
5
- (function (S) {
6
- S.Empty = styled.div `
7
- opacity: 0.2;
8
- `;
9
- })(S || (S = {}));
4
+ import { EmptyValueWidget } from '../../../widgets/EmptyValueWidget';
5
+ import { StandardModelFields } from '../StandardModelFields';
10
6
  export const CellDisplayWidget = (props) => {
11
7
  var _a;
12
8
  const { row, cell, name } = props;
13
9
  if (cell == null) {
14
- return React.createElement(S.Empty, null, "null");
10
+ return React.createElement(EmptyValueWidget, null);
15
11
  }
16
- if (name === 'updated_at') {
12
+ if (name === StandardModelFields.UPDATED_AT) {
17
13
  return React.createElement(SmartDateDisplayWidget, { date: cell });
18
14
  }
19
15
  let display = (_a = ioc.get(TypeEngine).getHandler(row.definition.definition.attributes[name].type)) === null || _a === void 0 ? void 0 : _a.generateDisplay({
@@ -1 +1 @@
1
- {"version":3,"file":"CellDisplayWidget.js","sourceRoot":"","sources":["../../../../src/core/query/widgets/CellDisplayWidget.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,sBAAsB,EAAE,MAAM,EAAE,MAAM,+BAA+B,CAAC;AAEpF,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAEvD,IAAU,CAAC,CAIV;AAJD,WAAU,CAAC;IACI,OAAK,GAAG,MAAM,CAAC,GAAG,CAAA;;GAE9B,CAAC;AACJ,CAAC,EAJS,CAAC,KAAD,CAAC,QAIV;AAQD,MAAM,CAAC,MAAM,iBAAiB,GAAqC,CAAC,KAAK,EAAE,EAAE;;IAC3E,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC;IAClC,IAAI,IAAI,IAAI,IAAI,EAAE,CAAC;QACjB,OAAO,oBAAC,CAAC,CAAC,KAAK,eAAe,CAAC;IACjC,CAAC;IAED,IAAI,IAAI,KAAK,YAAY,EAAE,CAAC;QAC1B,OAAO,oBAAC,sBAAsB,IAAC,IAAI,EAAE,IAAI,GAAI,CAAC;IAChD,CAAC;IAED,IAAI,OAAO,GAAG,MAAA,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,UAAU,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,0CAAE,eAAe,CAAC;QAC7G,KAAK,EAAE,GAAG,CAAC,KAAK;QAChB,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,GAAG,CAAC,UAAU,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,KAAK;QACvD,IAAI;QACJ,IAAI,EAAE,GAAG,CAAC,UAAU,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,IAAI;KACtD,CAAC,CAAC;IACH,IAAI,OAAO,EAAE,CAAC;QACZ,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,IAAI,EAAE,GAAG,CAAC,UAAU,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;IACnF,OAAO,IAAI,CAAC;AACd,CAAC,CAAC"}
1
+ {"version":3,"file":"CellDisplayWidget.js","sourceRoot":"","sources":["../../../../src/core/query/widgets/CellDisplayWidget.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AAC5E,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AACrE,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAQ7D,MAAM,CAAC,MAAM,iBAAiB,GAAqC,CAAC,KAAK,EAAE,EAAE;;IAC3E,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC;IAClC,IAAI,IAAI,IAAI,IAAI,EAAE,CAAC;QACjB,OAAO,oBAAC,gBAAgB,OAAG,CAAC;IAC9B,CAAC;IAED,IAAI,IAAI,KAAK,mBAAmB,CAAC,UAAU,EAAE,CAAC;QAC5C,OAAO,oBAAC,sBAAsB,IAAC,IAAI,EAAE,IAAI,GAAI,CAAC;IAChD,CAAC;IAED,IAAI,OAAO,GAAG,MAAA,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,UAAU,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,0CAAE,eAAe,CAAC;QAC7G,KAAK,EAAE,GAAG,CAAC,KAAK;QAChB,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,GAAG,CAAC,UAAU,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,KAAK;QACvD,IAAI;QACJ,IAAI,EAAE,GAAG,CAAC,UAAU,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,IAAI;KACtD,CAAC,CAAC;IACH,IAAI,OAAO,EAAE,CAAC;QACZ,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,IAAI,EAAE,GAAG,CAAC,UAAU,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;IACnF,OAAO,IAAI,CAAC;AACd,CAAC,CAAC"}
@@ -1,22 +1,23 @@
1
1
  import * as React from 'react';
2
2
  import styled from '@emotion/styled';
3
3
  export const ColumnDisplayWidget = (props) => {
4
- let parts = (props.label || '').split(' ');
5
- if (parts.length >= 5) {
6
- return (React.createElement(S.Width, { className: props.className, length: 150 }, props.label));
7
- }
8
- if (parts.length >= 3) {
9
- return (React.createElement(S.Width, { className: props.className, length: 80 }, props.label));
10
- }
11
- return React.createElement(S.Span, { className: props.className }, props.label);
4
+ const parts = (props.label || '').split(' ');
5
+ const minWidth = parts.length >= 5 ? 150 : parts.length >= 3 ? 80 : undefined;
6
+ return (React.createElement(S.Label, { className: props.className, minWidth: minWidth, clickable: !!props.onClick, nowrap: !minWidth, onClick: props.onClick }, props.label));
12
7
  };
13
8
  var S;
14
9
  (function (S) {
15
- S.Width = styled.div `
16
- min-width: ${(p) => p.length}px;
10
+ const clickableStyle = `
11
+ cursor: pointer;
12
+ user-select: none;
13
+ &:hover {
14
+ opacity: 0.9;
15
+ }
17
16
  `;
18
- S.Span = styled.div `
19
- white-space: nowrap;
17
+ S.Label = styled.div `
18
+ ${(p) => (p.minWidth ? `min-width: ${p.minWidth}px;` : '')};
19
+ ${(p) => (p.nowrap ? 'white-space: nowrap;' : '')};
20
+ ${(p) => (p.clickable ? clickableStyle : '')};
20
21
  `;
21
22
  })(S || (S = {}));
22
23
  //# sourceMappingURL=ColumnDisplayWidget.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ColumnDisplayWidget.js","sourceRoot":"","sources":["../../../../src/core/query/widgets/ColumnDisplayWidget.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,MAAM,MAAM,iBAAiB,CAAC;AAOrC,MAAM,CAAC,MAAM,mBAAmB,GAAuC,CAAC,KAAK,EAAE,EAAE;IAC/E,IAAI,KAAK,GAAG,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC3C,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;QACtB,OAAO,CACL,oBAAC,CAAC,CAAC,KAAK,IAAC,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,IAC7C,KAAK,CAAC,KAAK,CACJ,CACX,CAAC;IACJ,CAAC;IACD,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;QACtB,OAAO,CACL,oBAAC,CAAC,CAAC,KAAK,IAAC,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,IAC5C,KAAK,CAAC,KAAK,CACJ,CACX,CAAC;IACJ,CAAC;IACD,OAAO,oBAAC,CAAC,CAAC,IAAI,IAAC,SAAS,EAAE,KAAK,CAAC,SAAS,IAAG,KAAK,CAAC,KAAK,CAAU,CAAC;AACpE,CAAC,CAAC;AAEF,IAAU,CAAC,CAQV;AARD,WAAU,CAAC;IACI,OAAK,GAAG,MAAM,CAAC,GAAG,CAAoB;iBACpC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM;GAC7B,CAAC;IAEW,MAAI,GAAG,MAAM,CAAC,GAAG,CAAA;;GAE7B,CAAC;AACJ,CAAC,EARS,CAAC,KAAD,CAAC,QAQV"}
1
+ {"version":3,"file":"ColumnDisplayWidget.js","sourceRoot":"","sources":["../../../../src/core/query/widgets/ColumnDisplayWidget.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,MAAM,MAAM,iBAAiB,CAAC;AAQrC,MAAM,CAAC,MAAM,mBAAmB,GAAuC,CAAC,KAAK,EAAE,EAAE;IAC/E,MAAM,KAAK,GAAG,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC7C,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;IAC9E,OAAO,CACL,oBAAC,CAAC,CAAC,KAAK,IACN,SAAS,EAAE,KAAK,CAAC,SAAS,EAC1B,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,EAC1B,MAAM,EAAE,CAAC,QAAQ,EACjB,OAAO,EAAE,KAAK,CAAC,OAAO,IAErB,KAAK,CAAC,KAAK,CACJ,CACX,CAAC;AACJ,CAAC,CAAC;AAEF,IAAU,CAAC,CAcV;AAdD,WAAU,CAAC;IACT,MAAM,cAAc,GAAG;;;;;;GAMtB,CAAC;IAEW,OAAK,GAAG,MAAM,CAAC,GAAG,CAA4D;MACvF,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,QAAQ,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;MACxD,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,EAAE,CAAC;MAC/C,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC;GAC7C,CAAC;AACJ,CAAC,EAdS,CAAC,KAAD,CAAC,QAcV"}
@@ -0,0 +1,128 @@
1
+ import * as React from 'react';
2
+ import { ComboBoxStore2, NotificationStore, NotificationType, PrefsStore, SimpleComboBoxDirective, SmartDateDisplayWidget, TableButtonWidget, themed, ioc } from '@journeyapps-labs/reactor-mod';
3
+ import { copyTextToClipboard } from '@journeyapps-labs/lib-reactor-utils';
4
+ import { TypeEngine } from '../../../forms/TypeEngine';
5
+ import { QueryControlPreferences } from '../../../preferences/QueryControlPreferences';
6
+ import { EmptyValueWidget } from '../../../widgets/EmptyValueWidget';
7
+ export const PeekRelationshipButton = (props) => {
8
+ const typeEngine = ioc.get(TypeEngine);
9
+ const notifications = ioc.get(NotificationStore);
10
+ const copyFieldValue = async (attribute, value) => {
11
+ try {
12
+ const handler = typeEngine.getHandler(attribute.type);
13
+ let scalar = value;
14
+ if (handler) {
15
+ const decoded = await handler.decode(value);
16
+ scalar = handler.encodeToScalar ? await handler.encodeToScalar(decoded) : decoded;
17
+ }
18
+ copyTextToClipboard(scalar == null ? 'null' : `${scalar}`);
19
+ notifications.showNotification({
20
+ title: 'Copied',
21
+ description: `${attribute.label || attribute.name} copied to clipboard`,
22
+ type: NotificationType.SUCCESS
23
+ });
24
+ }
25
+ catch (error) {
26
+ notifications.showNotification({
27
+ title: 'Copy failed',
28
+ description: `Failed to copy ${attribute.label || attribute.name}`,
29
+ type: NotificationType.ERROR
30
+ });
31
+ }
32
+ };
33
+ const showPeek = async (event) => {
34
+ const hideNullFields = ioc
35
+ .get(PrefsStore)
36
+ .getPreference(QueryControlPreferences.FILTER_NULL_FIELDS_IN_RELATIONSHIP_PEEK).checked;
37
+ const attributeItems = Object.values(props.object.definition.definition.attributes)
38
+ .map((attribute) => {
39
+ var _a, _b;
40
+ const value = (_a = props.object.model) === null || _a === void 0 ? void 0 : _a[attribute.name];
41
+ if (hideNullFields && value == null) {
42
+ return null;
43
+ }
44
+ let display = null;
45
+ if (value != null) {
46
+ display = (_b = typeEngine.getHandler(attribute.type)) === null || _b === void 0 ? void 0 : _b.generateDisplay({
47
+ model: props.object,
48
+ value,
49
+ label: attribute.label || attribute.name,
50
+ name: attribute.name,
51
+ type: attribute.type
52
+ });
53
+ }
54
+ return {
55
+ key: `field-${attribute.name}`,
56
+ title: attribute.label || attribute.name,
57
+ right: React.createElement(S.FieldValue, null, display || (value == null ? React.createElement(EmptyValueWidget, null) : `${value}`)),
58
+ group: 'Fields',
59
+ action: async () => {
60
+ await copyFieldValue(attribute, value);
61
+ }
62
+ };
63
+ })
64
+ .filter((item) => !!item);
65
+ const items = [
66
+ {
67
+ key: 'meta-id',
68
+ title: 'ID',
69
+ icon: 'copy',
70
+ right: React.createElement(S.FieldValue, null, props.object.id),
71
+ disabled: true,
72
+ group: 'Object'
73
+ },
74
+ {
75
+ key: 'meta-updated',
76
+ title: 'Updated at',
77
+ icon: 'clock',
78
+ right: props.object.updated_at ? (React.createElement(SmartDateDisplayWidget, { date: props.object.updated_at })) : (React.createElement(S.FieldValue, null, "Unknown")),
79
+ disabled: true,
80
+ group: 'Object'
81
+ },
82
+ ...attributeItems,
83
+ {
84
+ key: 'open',
85
+ title: 'Open record',
86
+ icon: 'arrow-right',
87
+ group: 'Actions',
88
+ action: async () => {
89
+ props.open(props.object);
90
+ }
91
+ },
92
+ {
93
+ key: 'copy',
94
+ title: 'Copy ID',
95
+ icon: 'copy',
96
+ group: 'Actions',
97
+ action: async () => {
98
+ copyTextToClipboard(props.object.id);
99
+ notifications.showNotification({
100
+ title: 'Copied',
101
+ description: 'Relationship ID copied to clipboard',
102
+ type: NotificationType.SUCCESS
103
+ });
104
+ }
105
+ }
106
+ ];
107
+ const directive = await ioc.get(ComboBoxStore2).show(new SimpleComboBoxDirective({
108
+ title: props.object.data.display || props.object.id,
109
+ subtitle: props.object.definition.definition.label || props.object.definition.definition.name,
110
+ event: event,
111
+ items
112
+ }));
113
+ directive.getSelectedItem();
114
+ };
115
+ return (React.createElement(TableButtonWidget, { icon: "eye", tooltip: "Peek relationship", action: (event) => {
116
+ showPeek(event);
117
+ } }));
118
+ };
119
+ var S;
120
+ (function (S) {
121
+ S.FieldValue = themed.div `
122
+ max-width: 360px;
123
+ overflow: hidden;
124
+ text-overflow: ellipsis;
125
+ white-space: nowrap;
126
+ `;
127
+ })(S || (S = {}));
128
+ //# sourceMappingURL=PeekRelationshipButton.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PeekRelationshipButton.js","sourceRoot":"","sources":["../../../../src/core/query/widgets/PeekRelationshipButton.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAGL,cAAc,EACd,iBAAiB,EACjB,gBAAgB,EAChB,UAAU,EACV,uBAAuB,EACvB,sBAAsB,EACtB,iBAAiB,EACjB,MAAM,EACN,GAAG,EACJ,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,mBAAmB,EAAE,MAAM,qCAAqC,CAAC;AAE1E,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACvD,OAAO,EAAE,uBAAuB,EAAE,MAAM,8CAA8C,CAAC;AACvF,OAAO,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AAOrE,MAAM,CAAC,MAAM,sBAAsB,GAA0C,CAAC,KAAK,EAAE,EAAE;IACrF,MAAM,UAAU,GAAG,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IACvC,MAAM,aAAa,GAAG,GAAG,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;IAEjD,MAAM,cAAc,GAAG,KAAK,EAAE,SAAc,EAAE,KAAc,EAAE,EAAE;QAC9D,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,UAAU,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;YACtD,IAAI,MAAM,GAAY,KAAK,CAAC;YAC5B,IAAI,OAAO,EAAE,CAAC;gBACZ,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;gBAC5C,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,MAAM,OAAO,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;YACpF,CAAC;YACD,mBAAmB,CAAC,MAAM,IAAI,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,EAAE,CAAC,CAAC;YAC3D,aAAa,CAAC,gBAAgB,CAAC;gBAC7B,KAAK,EAAE,QAAQ;gBACf,WAAW,EAAE,GAAG,SAAS,CAAC,KAAK,IAAI,SAAS,CAAC,IAAI,sBAAsB;gBACvE,IAAI,EAAE,gBAAgB,CAAC,OAAO;aAC/B,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,aAAa,CAAC,gBAAgB,CAAC;gBAC7B,KAAK,EAAE,aAAa;gBACpB,WAAW,EAAE,kBAAkB,SAAS,CAAC,KAAK,IAAI,SAAS,CAAC,IAAI,EAAE;gBAClE,IAAI,EAAE,gBAAgB,CAAC,KAAK;aAC7B,CAAC,CAAC;QACL,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,QAAQ,GAAG,KAAK,EAAE,KAA4B,EAAE,EAAE;QACtD,MAAM,cAAc,GAAG,GAAG;aACvB,GAAG,CAAC,UAAU,CAAC;aACf,aAAa,CAAiB,uBAAuB,CAAC,uCAAuC,CAAC,CAAC,OAAO,CAAC;QAE1G,MAAM,cAAc,GAAmB,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC,UAAU,CAAC;aAChG,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE;;YACjB,MAAM,KAAK,GAAG,MAAA,KAAK,CAAC,MAAM,CAAC,KAAK,0CAAG,SAAS,CAAC,IAAI,CAAC,CAAC;YACnD,IAAI,cAAc,IAAI,KAAK,IAAI,IAAI,EAAE,CAAC;gBACpC,OAAO,IAAI,CAAC;YACd,CAAC;YACD,IAAI,OAAO,GAAoB,IAAI,CAAC;YACpC,IAAI,KAAK,IAAI,IAAI,EAAE,CAAC;gBAClB,OAAO,GAAG,MAAA,UAAU,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,0CAAE,eAAe,CAAC;oBAC/D,KAAK,EAAE,KAAK,CAAC,MAAM;oBACnB,KAAK;oBACL,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,SAAS,CAAC,IAAI;oBACxC,IAAI,EAAE,SAAS,CAAC,IAAI;oBACpB,IAAI,EAAE,SAAS,CAAC,IAAI;iBACrB,CAAC,CAAC;YACL,CAAC;YACD,OAAO;gBACL,GAAG,EAAE,SAAS,SAAS,CAAC,IAAI,EAAE;gBAC9B,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,SAAS,CAAC,IAAI;gBACxC,KAAK,EAAE,oBAAC,CAAC,CAAC,UAAU,QAAE,OAAO,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,oBAAC,gBAAgB,OAAG,CAAC,CAAC,CAAC,GAAG,KAAK,EAAE,CAAC,CAAgB;gBACpG,KAAK,EAAE,QAAQ;gBACf,MAAM,EAAE,KAAK,IAAI,EAAE;oBACjB,MAAM,cAAc,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;gBACzC,CAAC;aACc,CAAC;QACpB,CAAC,CAAC;aACD,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAE5B,MAAM,KAAK,GAAmB;YAC5B;gBACE,GAAG,EAAE,SAAS;gBACd,KAAK,EAAE,IAAI;gBACX,IAAI,EAAE,MAAM;gBACZ,KAAK,EAAE,oBAAC,CAAC,CAAC,UAAU,QAAE,KAAK,CAAC,MAAM,CAAC,EAAE,CAAgB;gBACrD,QAAQ,EAAE,IAAI;gBACd,KAAK,EAAE,QAAQ;aAChB;YACD;gBACE,GAAG,EAAE,cAAc;gBACnB,KAAK,EAAE,YAAY;gBACnB,IAAI,EAAE,OAAO;gBACb,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAC/B,oBAAC,sBAAsB,IAAC,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,UAAU,GAAI,CAC1D,CAAC,CAAC,CAAC,CACF,oBAAC,CAAC,CAAC,UAAU,kBAAuB,CACrC;gBACD,QAAQ,EAAE,IAAI;gBACd,KAAK,EAAE,QAAQ;aAChB;YACD,GAAG,cAAc;YACjB;gBACE,GAAG,EAAE,MAAM;gBACX,KAAK,EAAE,aAAa;gBACpB,IAAI,EAAE,aAAa;gBACnB,KAAK,EAAE,SAAS;gBAChB,MAAM,EAAE,KAAK,IAAI,EAAE;oBACjB,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;gBAC3B,CAAC;aACF;YACD;gBACE,GAAG,EAAE,MAAM;gBACX,KAAK,EAAE,SAAS;gBAChB,IAAI,EAAE,MAAM;gBACZ,KAAK,EAAE,SAAS;gBAChB,MAAM,EAAE,KAAK,IAAI,EAAE;oBACjB,mBAAmB,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;oBACrC,aAAa,CAAC,gBAAgB,CAAC;wBAC7B,KAAK,EAAE,QAAQ;wBACf,WAAW,EAAE,qCAAqC;wBAClD,IAAI,EAAE,gBAAgB,CAAC,OAAO;qBAC/B,CAAC,CAAC;gBACL,CAAC;aACF;SACF,CAAC;QACF,MAAM,SAAS,GAAG,MAAM,GAAG,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,IAAI,CAClD,IAAI,uBAAuB,CAAC;YAC1B,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,IAAI,KAAK,CAAC,MAAM,CAAC,EAAE;YACnD,QAAQ,EAAE,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI;YAC7F,KAAK,EAAE,KAAY;YACnB,KAAK;SACN,CAAC,CACH,CAAC;QACF,SAAS,CAAC,eAAe,EAAE,CAAC;IAC9B,CAAC,CAAC;IAEF,OAAO,CACL,oBAAC,iBAAiB,IAChB,IAAI,EAAC,KAAK,EACV,OAAO,EAAC,mBAAmB,EAC3B,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE;YAChB,QAAQ,CAAC,KAAY,CAAC,CAAC;QACzB,CAAC,GACD,CACH,CAAC;AACJ,CAAC,CAAC;AAEF,IAAU,CAAC,CAOV;AAPD,WAAU,CAAC;IACI,YAAU,GAAG,MAAM,CAAC,GAAG,CAAA;;;;;GAKnC,CAAC;AACJ,CAAC,EAPS,CAAC,KAAD,CAAC,QAOV"}
@@ -3,19 +3,28 @@ import styled from '@emotion/styled';
3
3
  import { ColumnDisplayWidget } from './ColumnDisplayWidget';
4
4
  import { SmartFilterWidget } from './SmartFilterWidget';
5
5
  export const SmartColumnWidget = (props) => {
6
- let display = React.createElement(ColumnDisplayWidget, { label: props.variable.label || props.variable.name });
6
+ const baseLabel = props.variable.label || props.variable.name;
7
+ const displayLabel = props.sortDirection ? `${baseLabel} ${props.sortDirection === 'asc' ? '↑' : '↓'}` : baseLabel;
8
+ let display = React.createElement(ColumnDisplayWidget, { label: displayLabel, onClick: props.onToggleSort });
7
9
  if (props.type) {
8
10
  display = (React.createElement(S.TypeGroup, null,
9
11
  display,
10
12
  React.createElement(S.Type, { label: props.type.label })));
11
13
  }
12
14
  return (React.createElement(S.Container, null,
13
- display,
14
- React.createElement(SmartFilterWidget, { filter: props.filter, variable: props.variable, filterChanged: props.filterChanged })));
15
+ React.createElement(S.TopRow, null,
16
+ display,
17
+ React.createElement(SmartFilterWidget, { filter: props.filter, variable: props.variable, filterChanged: props.filterChanged }))));
15
18
  };
16
19
  var S;
17
20
  (function (S) {
18
21
  S.Container = styled.div `
22
+ display: inline-flex;
23
+ flex-direction: column;
24
+ align-items: flex-start;
25
+ row-gap: 3px;
26
+ `;
27
+ S.TopRow = styled.div `
19
28
  display: flex;
20
29
  flex-direction: row;
21
30
  align-items: center;
@@ -25,5 +34,11 @@ var S;
25
34
  opacity: 0.5;
26
35
  `;
27
36
  S.TypeGroup = styled.div ``;
37
+ S.FilterMetaRow = styled.div `
38
+ display: flex;
39
+ align-items: center;
40
+ column-gap: 2px;
41
+ justify-content: flex-start;
42
+ `;
28
43
  })(S || (S = {}));
29
44
  //# sourceMappingURL=SmartColumnWidget.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SmartColumnWidget.js","sourceRoot":"","sources":["../../../../src/core/query/widgets/SmartColumnWidget.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,MAAM,MAAM,iBAAiB,CAAC;AAErC,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAUxD,MAAM,CAAC,MAAM,iBAAiB,GAAqC,CAAC,KAAK,EAAE,EAAE;IAC3E,IAAI,OAAO,GAAG,oBAAC,mBAAmB,IAAC,KAAK,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,GAAI,CAAC;IAC1F,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;QACf,OAAO,GAAG,CACR,oBAAC,CAAC,CAAC,SAAS;YACT,OAAO;YACR,oBAAC,CAAC,CAAC,IAAI,IAAC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,KAAK,GAAI,CACvB,CACf,CAAC;IACJ,CAAC;IACD,OAAO,CACL,oBAAC,CAAC,CAAC,SAAS;QACT,OAAO;QACR,oBAAC,iBAAiB,IAAC,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,aAAa,EAAE,KAAK,CAAC,aAAa,GAAI,CAC7F,CACf,CAAC;AACJ,CAAC,CAAC;AAEF,IAAU,CAAC,CAaV;AAbD,WAAU,CAAC;IACI,WAAS,GAAG,MAAM,CAAC,GAAG,CAAA;;;;;GAKlC,CAAC;IAEW,MAAI,GAAG,MAAM,CAAC,mBAAmB,CAAC,CAAA;;GAE9C,CAAC;IAEW,WAAS,GAAG,MAAM,CAAC,GAAG,CAAA,EAAE,CAAC;AACxC,CAAC,EAbS,CAAC,KAAD,CAAC,QAaV"}
1
+ {"version":3,"file":"SmartColumnWidget.js","sourceRoot":"","sources":["../../../../src/core/query/widgets/SmartColumnWidget.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,MAAM,MAAM,iBAAiB,CAAC;AAErC,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAA6B,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAcnF,MAAM,CAAC,MAAM,iBAAiB,GAAqC,CAAC,KAAK,EAAE,EAAE;IAC3E,MAAM,SAAS,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC;IAC9D,MAAM,YAAY,GAAG,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,GAAG,SAAS,IAAI,KAAK,CAAC,aAAa,KAAK,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;IACnH,IAAI,OAAO,GAAG,oBAAC,mBAAmB,IAAC,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,KAAK,CAAC,YAAY,GAAI,CAAC;IACxF,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;QACf,OAAO,GAAG,CACR,oBAAC,CAAC,CAAC,SAAS;YACT,OAAO;YACR,oBAAC,CAAC,CAAC,IAAI,IAAC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,KAAK,GAAI,CACvB,CACf,CAAC;IACJ,CAAC;IACD,OAAO,CACL,oBAAC,CAAC,CAAC,SAAS;QACV,oBAAC,CAAC,CAAC,MAAM;YACN,OAAO;YACR,oBAAC,iBAAiB,IAAC,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,aAAa,EAAE,KAAK,CAAC,aAAa,GAAI,CAChG,CACC,CACf,CAAC;AACJ,CAAC,CAAC;AAEF,IAAU,CAAC,CA2BV;AA3BD,WAAU,CAAC;IACI,WAAS,GAAG,MAAM,CAAC,GAAG,CAAA;;;;;GAKlC,CAAC;IAEW,QAAM,GAAG,MAAM,CAAC,GAAG,CAAA;;;;;GAK/B,CAAC;IAEW,MAAI,GAAG,MAAM,CAAC,mBAAmB,CAAC,CAAA;;GAE9C,CAAC;IAEW,WAAS,GAAG,MAAM,CAAC,GAAG,CAAA,EAAE,CAAC;IAEzB,eAAa,GAAG,MAAM,CAAC,GAAG,CAAA;;;;;GAKtC,CAAC;AACJ,CAAC,EA3BS,CAAC,KAAD,CAAC,QA2BV"}
@@ -1,56 +1,93 @@
1
1
  import * as React from 'react';
2
- import { SingleChoiceIntegerType, SingleChoiceType, TextType } from '@journeyapps/db';
3
- import { ComboBoxStore, DialogStore, ioc, PanelButtonWidget } from '@journeyapps-labs/reactor-mod';
4
- import * as _ from 'lodash';
5
- import { Condition, SimpleFilter } from '../filters';
6
- export const SmartFilterWidget = (props) => {
7
- if (props.variable.type instanceof SingleChoiceIntegerType || props.variable.type instanceof SingleChoiceType) {
8
- return (React.createElement(PanelButtonWidget, { icon: 'filter',
9
- highlight: !!props.filter,
10
- action: async (position) => {
11
- let results = await ioc.get(ComboBoxStore).showMultiSelectComboBox(_.map(props.variable.type.options, (option) => {
12
- var _a, _b;
13
- return {
14
- title: `${option.value}`,
15
- key: `${option.value}`,
16
- checked: !!((_b = (_a = props.filter) === null || _a === void 0 ? void 0 : _a.statements) === null || _b === void 0 ? void 0 : _b.find((s) => s.arg === `${option.value}`))
17
- };
18
- }), position);
19
- if (results.length > 0) {
20
- props.filterChanged(new SimpleFilter(props.variable, results.map((r) => {
21
- return {
22
- arg: r.key,
23
- condition: Condition.EQUALS
24
- };
25
- })));
26
- }
27
- else {
28
- props.filterChanged(null);
29
- }
30
- } }));
2
+ import { DualIconWidget, IconWidget, MetadataWidget, ioc, setupTooltipProps, styled, TooltipPosition } from '@journeyapps-labs/reactor-mod';
3
+ import { TypeEngine } from '../../../forms/TypeEngine';
4
+ import { StatementMatch } from '../filters';
5
+ const getFilterSummary = (filter) => {
6
+ const metadata = (filter === null || filter === void 0 ? void 0 : filter.getMetadata()) || [];
7
+ if (metadata.length === 0) {
8
+ return 'No filter applied';
9
+ }
10
+ const match = (filter === null || filter === void 0 ? void 0 : filter.match) === StatementMatch.ALL ? 'AND' : 'OR';
11
+ const joined = metadata.map((entry) => `${entry.label} ${entry.value}`).join(` ${match} `);
12
+ return `Filtered by: ${joined}`.trim();
13
+ };
14
+ const getFilterTooltip = (filter) => {
15
+ if (!filter || !filter.statements || filter.statements.length === 0) {
16
+ return 'Click to add a filter';
17
+ }
18
+ return `${getFilterSummary(filter)}. Click to edit filter`;
19
+ };
20
+ export const SmartFilterMetadataWidget = (props) => {
21
+ var _a, _b;
22
+ const metadata = ((_a = props.filter) === null || _a === void 0 ? void 0 : _a.getMetadata()) || [];
23
+ if (metadata.length === 0) {
24
+ return null;
31
25
  }
32
- if (props.variable.type instanceof TextType) {
33
- return (React.createElement(PanelButtonWidget, { icon: 'filter',
34
- highlight: !!props.filter,
35
- action: async () => {
36
- var _a, _b;
37
- let value = await ioc.get(DialogStore).showInputDialog({
38
- title: `${props.variable.label}`,
39
- initialValue: (_b = (_a = props.filter) === null || _a === void 0 ? void 0 : _a.statements[0]) === null || _b === void 0 ? void 0 : _b.arg
40
- });
41
- if (value) {
42
- props.filterChanged(new SimpleFilter(props.variable, [
43
- {
44
- arg: value,
45
- condition: Condition.EQUALS
46
- }
47
- ]));
48
- }
49
- else {
50
- props.filterChanged(null);
51
- }
52
- } }));
26
+ const matchLabel = ((_b = props.filter) === null || _b === void 0 ? void 0 : _b.match) === StatementMatch.ALL ? 'AND' : 'OR';
27
+ return (React.createElement(S.MetaList, { className: props.className }, metadata.map((entry, index) => {
28
+ var _a;
29
+ return (React.createElement(React.Fragment, { key: `${entry.label}-${entry.value}-${index}` },
30
+ index > 0 ? React.createElement(S.MetaJoiner, null, matchLabel) : null,
31
+ React.createElement(MetadataWidget, Object.assign({}, entry, { active: (_a = entry.active) !== null && _a !== void 0 ? _a : true }))));
32
+ })));
33
+ };
34
+ export const SmartFilterWidget = (props) => {
35
+ var _a, _b;
36
+ const isActive = (((_b = (_a = props.filter) === null || _a === void 0 ? void 0 : _a.statements) === null || _b === void 0 ? void 0 : _b.length) || 0) > 0;
37
+ const handler = ioc.get(TypeEngine).getHandler(props.variable.type);
38
+ if (!(handler === null || handler === void 0 ? void 0 : handler.setupFilter)) {
39
+ return null;
53
40
  }
54
- return null;
41
+ return (React.createElement(S.FilterButton, Object.assign({ active: isActive }, setupTooltipProps({
42
+ tooltip: getFilterTooltip(props.filter),
43
+ tooltipPos: TooltipPosition.BOTTOM
44
+ }), { onClick: async (event) => {
45
+ var _a;
46
+ const filter = await ((_a = handler.setupFilter) === null || _a === void 0 ? void 0 : _a.call(handler, {
47
+ variable: props.variable,
48
+ filter: props.filter,
49
+ position: event.nativeEvent
50
+ }));
51
+ if (filter == null) {
52
+ return;
53
+ }
54
+ props.filterChanged(filter);
55
+ } }), isActive ? React.createElement(DualIconWidget, { icon1: "filter", icon2: "check" }) : React.createElement(IconWidget, { icon: "filter" })));
55
56
  };
57
+ var S;
58
+ (function (S) {
59
+ S.MetaList = styled.div `
60
+ display: flex;
61
+ flex-wrap: wrap;
62
+ align-items: center;
63
+ gap: 4px;
64
+ `;
65
+ S.MetaJoiner = styled.div `
66
+ font-size: 10px;
67
+ font-weight: 700;
68
+ letter-spacing: 0.04em;
69
+ color: ${(p) => p.theme.text.secondary};
70
+ padding: 0 2px;
71
+ `;
72
+ S.FilterButton = styled.button `
73
+ position: relative;
74
+ width: 24px;
75
+ height: 24px;
76
+ min-width: 24px;
77
+ border-radius: 6px;
78
+ border: 1px solid ${(p) => (p.active ? p.theme.guide.accent : p.theme.button.border)};
79
+ background: ${(p) => (p.active ? p.theme.buttonPrimary.background : p.theme.button.background)};
80
+ color: ${(p) => (p.active ? p.theme.buttonPrimary.color : p.theme.button.color)};
81
+ display: flex;
82
+ align-items: center;
83
+ justify-content: center;
84
+ cursor: pointer;
85
+ padding: 0;
86
+ line-height: 1;
87
+
88
+ &:hover {
89
+ color: ${(p) => (p.active ? p.theme.buttonPrimary.colorHover : p.theme.button.colorHover)};
90
+ }
91
+ `;
92
+ })(S || (S = {}));
56
93
  //# sourceMappingURL=SmartFilterWidget.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SmartFilterWidget.js","sourceRoot":"","sources":["../../../../src/core/query/widgets/SmartFilterWidget.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SmartFilterWidget.js","sourceRoot":"","sources":["../../../../src/core/query/widgets/SmartFilterWidget.tsx"],"names":[],"mappings":"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"}