@qoretechnologies/reqraft 0.10.25 → 0.10.26

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 (310) hide show
  1. package/.claude/CLAUDE.md +52 -23
  2. package/design/COMPACT_ENGINE_REDESIGN.md +156 -0
  3. package/design/FORM_ENGINE_COMPACT_UX_PLAN.md +353 -0
  4. package/dist/components/FocusedEditing/index.d.ts +9 -1
  5. package/dist/components/FocusedEditing/index.d.ts.map +1 -1
  6. package/dist/components/FocusedEditing/index.js +2 -2
  7. package/dist/components/FocusedEditing/index.js.map +1 -1
  8. package/dist/components/composer/Composer.d.ts +108 -0
  9. package/dist/components/composer/Composer.d.ts.map +1 -0
  10. package/dist/components/composer/Composer.js +238 -0
  11. package/dist/components/composer/Composer.js.map +1 -0
  12. package/dist/components/composer/helpers.d.ts +21 -0
  13. package/dist/components/composer/helpers.d.ts.map +1 -0
  14. package/dist/components/composer/helpers.js +75 -0
  15. package/dist/components/composer/helpers.js.map +1 -0
  16. package/dist/components/composer/index.d.ts +3 -0
  17. package/dist/components/composer/index.d.ts.map +1 -0
  18. package/dist/components/composer/index.js +19 -0
  19. package/dist/components/composer/index.js.map +1 -0
  20. package/dist/components/form/engine/CompactRow.d.ts.map +1 -1
  21. package/dist/components/form/engine/CompactRow.js +307 -110
  22. package/dist/components/form/engine/CompactRow.js.map +1 -1
  23. package/dist/components/form/engine/CompactToolbar.d.ts.map +1 -1
  24. package/dist/components/form/engine/CompactToolbar.js +123 -106
  25. package/dist/components/form/engine/CompactToolbar.js.map +1 -1
  26. package/dist/components/form/engine/FormEngine.d.ts +107 -11
  27. package/dist/components/form/engine/FormEngine.d.ts.map +1 -1
  28. package/dist/components/form/engine/FormEngine.js +618 -179
  29. package/dist/components/form/engine/FormEngine.js.map +1 -1
  30. package/dist/components/form/engine/compactRowContext.d.ts +9 -0
  31. package/dist/components/form/engine/compactRowContext.d.ts.map +1 -1
  32. package/dist/components/form/engine/compactRowContext.js.map +1 -1
  33. package/dist/components/form/engine/compactRowStyles.d.ts +7 -3
  34. package/dist/components/form/engine/compactRowStyles.d.ts.map +1 -1
  35. package/dist/components/form/engine/compactRowStyles.js +88 -51
  36. package/dist/components/form/engine/compactRowStyles.js.map +1 -1
  37. package/dist/components/form/engine/compactToolbarContext.d.ts +1 -0
  38. package/dist/components/form/engine/compactToolbarContext.d.ts.map +1 -1
  39. package/dist/components/form/engine/compactToolbarContext.js.map +1 -1
  40. package/dist/components/form/engine/optionActions.d.ts +28 -0
  41. package/dist/components/form/engine/optionActions.d.ts.map +1 -0
  42. package/dist/components/form/engine/optionActions.js +18 -0
  43. package/dist/components/form/engine/optionActions.js.map +1 -0
  44. package/dist/components/form/engine/readFirst.d.ts +63 -2
  45. package/dist/components/form/engine/readFirst.d.ts.map +1 -1
  46. package/dist/components/form/engine/readFirst.js +121 -6
  47. package/dist/components/form/engine/readFirst.js.map +1 -1
  48. package/dist/components/form/engine/rendererTypes.d.ts +35 -0
  49. package/dist/components/form/engine/rendererTypes.d.ts.map +1 -0
  50. package/dist/components/form/engine/rendererTypes.js +63 -0
  51. package/dist/components/form/engine/rendererTypes.js.map +1 -0
  52. package/dist/components/form/engine/variants/VariantCalmTable.d.ts +6 -0
  53. package/dist/components/form/engine/variants/VariantCalmTable.d.ts.map +1 -0
  54. package/dist/components/form/engine/variants/VariantCalmTable.js +94 -0
  55. package/dist/components/form/engine/variants/VariantCalmTable.js.map +1 -0
  56. package/dist/components/form/engine/variants/VariantCards.d.ts +6 -0
  57. package/dist/components/form/engine/variants/VariantCards.d.ts.map +1 -0
  58. package/dist/components/form/engine/variants/VariantCards.js +80 -0
  59. package/dist/components/form/engine/variants/VariantCards.js.map +1 -0
  60. package/dist/components/form/engine/variants/VariantFocus.d.ts +7 -0
  61. package/dist/components/form/engine/variants/VariantFocus.d.ts.map +1 -0
  62. package/dist/components/form/engine/variants/VariantFocus.js +138 -0
  63. package/dist/components/form/engine/variants/VariantFocus.js.map +1 -0
  64. package/dist/components/form/engine/variants/VariantMinimal.d.ts +6 -0
  65. package/dist/components/form/engine/variants/VariantMinimal.d.ts.map +1 -0
  66. package/dist/components/form/engine/variants/VariantMinimal.js +73 -0
  67. package/dist/components/form/engine/variants/VariantMinimal.js.map +1 -0
  68. package/dist/components/form/engine/variants/focusDemo.d.ts +13 -0
  69. package/dist/components/form/engine/variants/focusDemo.d.ts.map +1 -0
  70. package/dist/components/form/engine/variants/focusDemo.js +139 -0
  71. package/dist/components/form/engine/variants/focusDemo.js.map +1 -0
  72. package/dist/components/form/engine/variants/variantModel.d.ts +70 -0
  73. package/dist/components/form/engine/variants/variantModel.d.ts.map +1 -0
  74. package/dist/components/form/engine/variants/variantModel.js +133 -0
  75. package/dist/components/form/engine/variants/variantModel.js.map +1 -0
  76. package/dist/components/form/engine/variants/variantParts.d.ts +79 -0
  77. package/dist/components/form/engine/variants/variantParts.d.ts.map +1 -0
  78. package/dist/components/form/engine/variants/variantParts.js +191 -0
  79. package/dist/components/form/engine/variants/variantParts.js.map +1 -0
  80. package/dist/components/form/expressions/builder/index.d.ts.map +1 -1
  81. package/dist/components/form/expressions/builder/index.js +13 -2
  82. package/dist/components/form/expressions/builder/index.js.map +1 -1
  83. package/dist/components/form/expressions/useExpressions.d.ts.map +1 -1
  84. package/dist/components/form/expressions/useExpressions.js +4 -1
  85. package/dist/components/form/expressions/useExpressions.js.map +1 -1
  86. package/dist/components/form/fields/Field.d.ts.map +1 -1
  87. package/dist/components/form/fields/Field.js +5 -3
  88. package/dist/components/form/fields/Field.js.map +1 -1
  89. package/dist/components/form/fields/allowed-values/AllowedValues.d.ts +2 -1
  90. package/dist/components/form/fields/allowed-values/AllowedValues.d.ts.map +1 -1
  91. package/dist/components/form/fields/allowed-values/AllowedValues.js +8 -26
  92. package/dist/components/form/fields/allowed-values/AllowedValues.js.map +1 -1
  93. package/dist/components/form/fields/auto/AutoFormField.d.ts +3 -0
  94. package/dist/components/form/fields/auto/AutoFormField.d.ts.map +1 -1
  95. package/dist/components/form/fields/auto/AutoFormField.js +42 -8
  96. package/dist/components/form/fields/auto/AutoFormField.js.map +1 -1
  97. package/dist/components/form/fields/binary/Binary.d.ts +15 -0
  98. package/dist/components/form/fields/binary/Binary.d.ts.map +1 -0
  99. package/dist/components/form/fields/binary/Binary.js +74 -0
  100. package/dist/components/form/fields/binary/Binary.js.map +1 -0
  101. package/dist/components/form/fields/boolean/Boolean.js +1 -1
  102. package/dist/components/form/fields/boolean/Boolean.js.map +1 -1
  103. package/dist/components/form/fields/multi-select/MultiSelectFormField.d.ts.map +1 -1
  104. package/dist/components/form/fields/multi-select/MultiSelectFormField.js +5 -4
  105. package/dist/components/form/fields/multi-select/MultiSelectFormField.js.map +1 -1
  106. package/dist/components/form/fields/select/Select.d.ts.map +1 -1
  107. package/dist/components/form/fields/select/Select.js +29 -12
  108. package/dist/components/form/fields/select/Select.js.map +1 -1
  109. package/dist/components/form/fields/select/SelectCollection.d.ts +8 -2
  110. package/dist/components/form/fields/select/SelectCollection.d.ts.map +1 -1
  111. package/dist/components/form/fields/select/SelectCollection.js +52 -16
  112. package/dist/components/form/fields/select/SelectCollection.js.map +1 -1
  113. package/dist/components/form/index.d.ts +2 -0
  114. package/dist/components/form/index.d.ts.map +1 -1
  115. package/dist/components/form/index.js +2 -0
  116. package/dist/components/form/index.js.map +1 -1
  117. package/dist/components/imageLightbox/ImageLightbox.d.ts +21 -0
  118. package/dist/components/imageLightbox/ImageLightbox.d.ts.map +1 -0
  119. package/dist/components/imageLightbox/ImageLightbox.js +169 -0
  120. package/dist/components/imageLightbox/ImageLightbox.js.map +1 -0
  121. package/dist/components/imageLightbox/index.d.ts +2 -0
  122. package/dist/components/imageLightbox/index.d.ts.map +1 -0
  123. package/dist/components/imageLightbox/index.js +18 -0
  124. package/dist/components/imageLightbox/index.js.map +1 -0
  125. package/dist/components/searchFilterBar/SearchFilterBar.d.ts +33 -0
  126. package/dist/components/searchFilterBar/SearchFilterBar.d.ts.map +1 -0
  127. package/dist/components/searchFilterBar/SearchFilterBar.js +76 -0
  128. package/dist/components/searchFilterBar/SearchFilterBar.js.map +1 -0
  129. package/dist/components/searchFilterBar/index.d.ts +2 -0
  130. package/dist/components/searchFilterBar/index.d.ts.map +1 -0
  131. package/dist/components/searchFilterBar/index.js +18 -0
  132. package/dist/components/searchFilterBar/index.js.map +1 -0
  133. package/dist/components/supportTicket/AttachmentChips.d.ts +10 -0
  134. package/dist/components/supportTicket/AttachmentChips.d.ts.map +1 -0
  135. package/dist/components/supportTicket/AttachmentChips.js +122 -0
  136. package/dist/components/supportTicket/AttachmentChips.js.map +1 -0
  137. package/dist/components/supportTicket/InterfaceReferenceTags.d.ts +43 -0
  138. package/dist/components/supportTicket/InterfaceReferenceTags.d.ts.map +1 -0
  139. package/dist/components/supportTicket/InterfaceReferenceTags.js +31 -0
  140. package/dist/components/supportTicket/InterfaceReferenceTags.js.map +1 -0
  141. package/dist/components/supportTicket/ReferencePicker.d.ts +87 -0
  142. package/dist/components/supportTicket/ReferencePicker.d.ts.map +1 -0
  143. package/dist/components/supportTicket/ReferencePicker.js +295 -0
  144. package/dist/components/supportTicket/ReferencePicker.js.map +1 -0
  145. package/dist/components/supportTicket/TicketHeader.d.ts +86 -0
  146. package/dist/components/supportTicket/TicketHeader.d.ts.map +1 -0
  147. package/dist/components/supportTicket/TicketHeader.js +149 -0
  148. package/dist/components/supportTicket/TicketHeader.js.map +1 -0
  149. package/dist/components/supportTicket/TicketMetaTags.d.ts +32 -0
  150. package/dist/components/supportTicket/TicketMetaTags.d.ts.map +1 -0
  151. package/dist/components/supportTicket/TicketMetaTags.js +21 -0
  152. package/dist/components/supportTicket/TicketMetaTags.js.map +1 -0
  153. package/dist/components/supportTicket/TicketReplyBox.d.ts +63 -0
  154. package/dist/components/supportTicket/TicketReplyBox.d.ts.map +1 -0
  155. package/dist/components/supportTicket/TicketReplyBox.js +115 -0
  156. package/dist/components/supportTicket/TicketReplyBox.js.map +1 -0
  157. package/dist/components/supportTicket/attachmentAccess.d.ts +37 -0
  158. package/dist/components/supportTicket/attachmentAccess.d.ts.map +1 -0
  159. package/dist/components/supportTicket/attachmentAccess.js +132 -0
  160. package/dist/components/supportTicket/attachmentAccess.js.map +1 -0
  161. package/dist/components/supportTicket/fileToAttachment.d.ts +9 -0
  162. package/dist/components/supportTicket/fileToAttachment.d.ts.map +1 -0
  163. package/dist/components/supportTicket/fileToAttachment.js +28 -0
  164. package/dist/components/supportTicket/fileToAttachment.js.map +1 -0
  165. package/dist/components/supportTicket/index.d.ts +11 -0
  166. package/dist/components/supportTicket/index.d.ts.map +1 -0
  167. package/dist/components/supportTicket/index.js +27 -0
  168. package/dist/components/supportTicket/index.js.map +1 -0
  169. package/dist/components/supportTicket/meta.d.ts +71 -0
  170. package/dist/components/supportTicket/meta.d.ts.map +1 -0
  171. package/dist/components/supportTicket/meta.js +115 -0
  172. package/dist/components/supportTicket/meta.js.map +1 -0
  173. package/dist/components/supportTicket/ticketModel.d.ts +102 -0
  174. package/dist/components/supportTicket/ticketModel.d.ts.map +1 -0
  175. package/dist/components/supportTicket/ticketModel.js +3 -0
  176. package/dist/components/supportTicket/ticketModel.js.map +1 -0
  177. package/dist/components/ticketReferences/TicketReferences.d.ts +52 -0
  178. package/dist/components/ticketReferences/TicketReferences.d.ts.map +1 -0
  179. package/dist/components/ticketReferences/TicketReferences.js +492 -0
  180. package/dist/components/ticketReferences/TicketReferences.js.map +1 -0
  181. package/dist/components/ticketReferences/index.d.ts +3 -0
  182. package/dist/components/ticketReferences/index.d.ts.map +1 -0
  183. package/dist/components/ticketReferences/index.js +6 -0
  184. package/dist/components/ticketReferences/index.js.map +1 -0
  185. package/dist/components/ticketThread/TicketThread.d.ts +57 -0
  186. package/dist/components/ticketThread/TicketThread.d.ts.map +1 -0
  187. package/dist/components/ticketThread/TicketThread.js +299 -0
  188. package/dist/components/ticketThread/TicketThread.js.map +1 -0
  189. package/dist/components/ticketThread/index.d.ts +3 -0
  190. package/dist/components/ticketThread/index.d.ts.map +1 -0
  191. package/dist/components/ticketThread/index.js +7 -0
  192. package/dist/components/ticketThread/index.js.map +1 -0
  193. package/dist/helpers/common.d.ts +5 -0
  194. package/dist/helpers/common.d.ts.map +1 -1
  195. package/dist/helpers/common.js +20 -1
  196. package/dist/helpers/common.js.map +1 -1
  197. package/dist/helpers/scrollbar.d.ts +2 -0
  198. package/dist/helpers/scrollbar.d.ts.map +1 -0
  199. package/dist/helpers/scrollbar.js +25 -0
  200. package/dist/helpers/scrollbar.js.map +1 -0
  201. package/dist/index.d.ts +8 -1
  202. package/dist/index.d.ts.map +1 -1
  203. package/dist/index.js +10 -1
  204. package/dist/index.js.map +1 -1
  205. package/dist/providers/StorageProvider.d.ts +13 -0
  206. package/dist/providers/StorageProvider.d.ts.map +1 -1
  207. package/dist/providers/StorageProvider.js +29 -5
  208. package/dist/providers/StorageProvider.js.map +1 -1
  209. package/package.json +6 -5
  210. package/src/components/FocusedEditing/index.tsx +17 -2
  211. package/src/components/composer/Composer.stories.tsx +238 -0
  212. package/src/components/composer/Composer.tsx +545 -0
  213. package/src/components/composer/helpers.ts +74 -0
  214. package/src/components/composer/index.ts +2 -0
  215. package/src/components/dpqlEditor/DpqlEditor.stories.tsx +74 -2
  216. package/src/components/form/engine/CompactRow.tsx +561 -283
  217. package/src/components/form/engine/CompactToolbar.tsx +216 -182
  218. package/src/components/form/engine/FormEngine.stories.tsx +1736 -162
  219. package/src/components/form/engine/FormEngine.tsx +886 -170
  220. package/src/components/form/engine/FormEngineRemote.stories.tsx +377 -0
  221. package/src/components/form/engine/_structuredData/StructuredDataView.stories.tsx +8 -0
  222. package/src/components/form/engine/compactRowContext.ts +14 -0
  223. package/src/components/form/engine/compactRowStyles.ts +273 -146
  224. package/src/components/form/engine/compactToolbarContext.ts +1 -0
  225. package/src/components/form/engine/optionActions.ts +40 -0
  226. package/src/components/form/engine/readFirst.ts +169 -10
  227. package/src/components/form/engine/rendererTypes.ts +55 -0
  228. package/src/components/form/engine/variants/FormEngineVariants.stories.tsx +159 -0
  229. package/src/components/form/engine/variants/VariantCalmTable.tsx +242 -0
  230. package/src/components/form/engine/variants/VariantCards.tsx +212 -0
  231. package/src/components/form/engine/variants/VariantFocus.tsx +382 -0
  232. package/src/components/form/engine/variants/VariantMinimal.tsx +170 -0
  233. package/src/components/form/engine/variants/focusDemo.ts +145 -0
  234. package/src/components/form/engine/variants/variantModel.ts +216 -0
  235. package/src/components/form/engine/variants/variantParts.tsx +313 -0
  236. package/src/components/form/expressions/ExpressionField.stories.tsx +84 -2
  237. package/src/components/form/expressions/builder/ExpressionBuilder.stories.tsx +213 -19
  238. package/src/components/form/expressions/builder/index.tsx +12 -1
  239. package/src/components/form/expressions/useExpressions.ts +4 -1
  240. package/src/components/form/fields/Field.stories.tsx +40 -0
  241. package/src/components/form/fields/Field.tsx +10 -1
  242. package/src/components/form/fields/allowed-values/AllowedValues.tsx +13 -36
  243. package/src/components/form/fields/array/ArrayAutoField.stories.tsx +64 -0
  244. package/src/components/form/fields/auto/AutoFormField.stories.tsx +146 -2
  245. package/src/components/form/fields/auto/AutoFormField.tsx +42 -1
  246. package/src/components/form/fields/binary/Binary.stories.tsx +122 -0
  247. package/src/components/form/fields/binary/Binary.tsx +81 -0
  248. package/src/components/form/fields/boolean/Boolean.stories.tsx +58 -0
  249. package/src/components/form/fields/boolean/Boolean.tsx +1 -1
  250. package/src/components/form/fields/byte-size/ByteSize.stories.tsx +24 -0
  251. package/src/components/form/fields/color/Color.stories.tsx +30 -0
  252. package/src/components/form/fields/cron/Cron.stories.tsx +8 -0
  253. package/src/components/form/fields/date/Date.stories.tsx +22 -0
  254. package/src/components/form/fields/file/File.stories.tsx +48 -0
  255. package/src/components/form/fields/long-string/LongString.stories.tsx +24 -0
  256. package/src/components/form/fields/markdown/Markdown.stories.tsx +8 -0
  257. package/src/components/form/fields/multi-select/MultiSelectFormField.tsx +14 -10
  258. package/src/components/form/fields/number/Number.stories.tsx +31 -0
  259. package/src/components/form/fields/object/Object.stories.tsx +88 -0
  260. package/src/components/form/fields/radio-group/RadioGroup.stories.tsx +24 -0
  261. package/src/components/form/fields/rich-text/RichText.stories.tsx +23 -0
  262. package/src/components/form/fields/schema-definition/SchemaDefinitionField.stories.tsx +72 -0
  263. package/src/components/form/fields/select/Select.stories.tsx +108 -0
  264. package/src/components/form/fields/select/Select.tsx +38 -12
  265. package/src/components/form/fields/select/SelectCollection.tsx +78 -17
  266. package/src/components/form/fields/string/String.stories.tsx +16 -0
  267. package/src/components/form/fields/template/TemplateField.stories.tsx +160 -0
  268. package/src/components/form/fields/url/Url.stories.tsx +24 -0
  269. package/src/components/form/index.tsx +2 -0
  270. package/src/components/imageLightbox/ImageLightbox.stories.tsx +238 -0
  271. package/src/components/imageLightbox/ImageLightbox.tsx +236 -0
  272. package/src/components/imageLightbox/index.ts +1 -0
  273. package/src/components/log/Log.stories.tsx +96 -0
  274. package/src/components/menu/Menu.stories.tsx +54 -0
  275. package/src/components/qonsoleSmartInput/QonsoleSmartInput.stories.tsx +83 -37
  276. package/src/components/searchFilterBar/SearchFilterBar.tsx +131 -0
  277. package/src/components/searchFilterBar/index.ts +1 -0
  278. package/src/components/smartEditor/SmartEditor.stories.tsx +32 -0
  279. package/src/components/supportTicket/AttachmentChips.stories.tsx +171 -0
  280. package/src/components/supportTicket/AttachmentChips.tsx +147 -0
  281. package/src/components/supportTicket/InterfaceReferenceTags.stories.tsx +171 -0
  282. package/src/components/supportTicket/InterfaceReferenceTags.tsx +96 -0
  283. package/src/components/supportTicket/ReferencePicker.stories.tsx +519 -0
  284. package/src/components/supportTicket/ReferencePicker.tsx +563 -0
  285. package/src/components/supportTicket/TicketConversation.stories.tsx +121 -0
  286. package/src/components/supportTicket/TicketHeader.stories.tsx +183 -0
  287. package/src/components/supportTicket/TicketHeader.tsx +247 -0
  288. package/src/components/supportTicket/TicketMetaTags.stories.tsx +103 -0
  289. package/src/components/supportTicket/TicketMetaTags.tsx +85 -0
  290. package/src/components/supportTicket/TicketReplyBox.stories.tsx +351 -0
  291. package/src/components/supportTicket/TicketReplyBox.tsx +146 -0
  292. package/src/components/supportTicket/attachmentAccess.ts +97 -0
  293. package/src/components/supportTicket/fileToAttachment.ts +24 -0
  294. package/src/components/supportTicket/index.ts +10 -0
  295. package/src/components/supportTicket/meta.ts +185 -0
  296. package/src/components/supportTicket/ticketModel.ts +131 -0
  297. package/src/components/ticketReferences/TicketReferences.stories.tsx +315 -0
  298. package/src/components/ticketReferences/TicketReferences.tsx +886 -0
  299. package/src/components/ticketReferences/index.ts +2 -0
  300. package/src/components/ticketThread/TicketThread.stories.tsx +828 -0
  301. package/src/components/ticketThread/TicketThread.tsx +704 -0
  302. package/src/components/ticketThread/index.ts +6 -0
  303. package/src/helpers/common.ts +19 -0
  304. package/src/helpers/scrollbar.ts +32 -0
  305. package/src/hooks/useFetch/useFetch.stories.tsx +30 -0
  306. package/src/hooks/useStorage/useStorage.stories.tsx +82 -0
  307. package/src/hooks/useWebSocket/useWebsocket.stories.tsx +127 -1
  308. package/src/index.tsx +8 -1
  309. package/src/providers/StorageProvider.tsx +30 -4
  310. package/src/stores/currentUser/currentUser.stories.tsx +49 -0
@@ -0,0 +1,133 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.summarize = exports.buildVariantGroups = void 0;
4
+ var readFirst_1 = require("../readFirst");
5
+ var templates_1 = require("../../../../helpers/templates");
6
+ // Default (basic-fixture) invalid set — overridable via config.
7
+ var DEFAULT_INVALID = {
8
+ optionWithInvalidValue: 'Text value is empty',
9
+ schemaOption: 'Hash arguments are invalid',
10
+ };
11
+ function buildValue(field, schema) {
12
+ if (!field || (0, readFirst_1.isOptionValueEmpty)(field.value))
13
+ return { kind: 'empty', display: '' };
14
+ var valueType = (0, readFirst_1.getValueType)(field, schema);
15
+ var formatted = (0, readFirst_1.formatOptionValue)(field, schema);
16
+ if (valueType === 'rgbcolor') {
17
+ return { kind: 'color', display: formatted, extra: (0, readFirst_1.colorToCss)(field.value) };
18
+ }
19
+ if (valueType === 'file') {
20
+ var size = (0, readFirst_1.getFileSize)(field.value);
21
+ return {
22
+ kind: 'file',
23
+ display: formatted,
24
+ extra: size !== undefined ? (0, readFirst_1.formatBytes)(size) : undefined,
25
+ };
26
+ }
27
+ if (valueType === 'bool' || valueType === 'boolean') {
28
+ return { kind: 'bool', display: formatted };
29
+ }
30
+ if (valueType === 'hash' || valueType === 'free-hash') {
31
+ return { kind: 'hash', display: formatted };
32
+ }
33
+ if (typeof field.value === 'string' && (0, templates_1.isValueTemplate)(field.value)) {
34
+ // The real chip resolves the template's display name from the templates
35
+ // list; the prototype shows a friendly label of the key.
36
+ var label = field.value.replace(/^\$[a-z]+:/i, '').replace(/[-_]/g, ' ') || field.value;
37
+ return { kind: 'template', display: label.replace(/\b\w/g, function (c) { return c.toUpperCase(); }), extra: 'local' };
38
+ }
39
+ if (valueType === 'richtext' && Array.isArray(field.value)) {
40
+ return { kind: 'richtext', display: formatted };
41
+ }
42
+ return { kind: 'text', display: formatted };
43
+ }
44
+ function buildVariantGroups(options, values, config) {
45
+ var _a;
46
+ if (config === void 0) { config = {}; }
47
+ var invalidReasons = (_a = config.invalidReasons) !== null && _a !== void 0 ? _a : DEFAULT_INVALID;
48
+ var groupMap = new Map();
49
+ // Pass 1: collect one-of required-group membership + satisfaction.
50
+ var reqGroups = {};
51
+ Object.entries(options).forEach(function (_a) {
52
+ var name = _a[0], schema = _a[1];
53
+ ((schema === null || schema === void 0 ? void 0 : schema.required_groups) || []).forEach(function (key) {
54
+ var _a;
55
+ if (!reqGroups[key])
56
+ reqGroups[key] = { key: key, members: [], memberLabels: [], satisfied: false };
57
+ reqGroups[key].members.push(name);
58
+ reqGroups[key].memberLabels.push((schema === null || schema === void 0 ? void 0 : schema.display_name) || name);
59
+ if (!(0, readFirst_1.isOptionValueEmpty)((_a = values[name]) === null || _a === void 0 ? void 0 : _a.value))
60
+ reqGroups[key].satisfied = true;
61
+ });
62
+ });
63
+ Object.entries(options).forEach(function (_a) {
64
+ var _b, _c;
65
+ var name = _a[0], schema = _a[1];
66
+ var field = values[name];
67
+ var empty = (0, readFirst_1.isOptionValueEmpty)(field === null || field === void 0 ? void 0 : field.value);
68
+ var ownGroups = (schema === null || schema === void 0 ? void 0 : schema.required_groups) || [];
69
+ // Member of a one-of group that nobody has satisfied yet.
70
+ var inUnmetGroup = ownGroups.some(function (k) { return reqGroups[k] && !reqGroups[k].satisfied; });
71
+ var required = !!(schema === null || schema === void 0 ? void 0 : schema.required);
72
+ var status;
73
+ var reason;
74
+ if (invalidReasons[name]) {
75
+ status = 'invalid';
76
+ reason = invalidReasons[name];
77
+ }
78
+ else if (empty && required) {
79
+ status = 'todo';
80
+ reason = 'Needs a value';
81
+ }
82
+ else if (empty && inUnmetGroup) {
83
+ status = 'todo';
84
+ reason = "One of ".concat(reqGroups[ownGroups[0]].memberLabels.join(' / '));
85
+ }
86
+ else if (empty) {
87
+ status = 'unset';
88
+ }
89
+ else {
90
+ status = 'set';
91
+ }
92
+ var groupName = (0, readFirst_1.getOptionGroup)(schema);
93
+ var groupLabel = (_c = (_b = config.groupLabels) === null || _b === void 0 ? void 0 : _b[groupName]) !== null && _c !== void 0 ? _c : (0, readFirst_1.getOptionGroupLabel)(groupName, undefined);
94
+ if (!groupMap.has(groupName)) {
95
+ groupMap.set(groupName, { name: groupName, label: groupLabel, rows: [] });
96
+ }
97
+ groupMap.get(groupName).rows.push({
98
+ name: name,
99
+ label: (schema === null || schema === void 0 ? void 0 : schema.display_name) || name,
100
+ shortDesc: schema === null || schema === void 0 ? void 0 : schema.short_desc,
101
+ longDesc: schema === null || schema === void 0 ? void 0 : schema.desc,
102
+ required: required || ownGroups.length > 0,
103
+ readOnly: !!(schema === null || schema === void 0 ? void 0 : schema.readonly),
104
+ status: status,
105
+ reason: reason,
106
+ value: buildValue(field, schema),
107
+ typeLabel: "".concat((schema === null || schema === void 0 ? void 0 : schema.ui_type) || (schema === null || schema === void 0 ? void 0 : schema.type) || 'auto'),
108
+ requiredGroups: ownGroups,
109
+ inUnmetGroup: inUnmetGroup,
110
+ schema: schema,
111
+ field: field,
112
+ });
113
+ });
114
+ // Stable group order: 'general' first, then the rest, 'optional' last.
115
+ var groups = Array.from(groupMap.values()).sort(function (a, b) {
116
+ var rank = function (g) { return (g === 'general' ? 0 : g === 'optional' ? 2 : 1); };
117
+ return rank(a.name) - rank(b.name);
118
+ });
119
+ return { groups: groups, requiredGroups: reqGroups };
120
+ }
121
+ exports.buildVariantGroups = buildVariantGroups;
122
+ function summarize(groups) {
123
+ var rows = groups.flatMap(function (g) { return g.rows; });
124
+ var total = rows.length;
125
+ var set = rows.filter(function (r) { return r.status === 'set'; }).length;
126
+ var todo = rows.filter(function (r) { return r.status === 'todo'; }).length;
127
+ var invalid = rows.filter(function (r) { return r.status === 'invalid'; }).length;
128
+ var attention = todo + invalid;
129
+ var pct = total ? Math.round((set / total) * 100) : 0;
130
+ return { total: total, set: set, todo: todo, invalid: invalid, attention: attention, pct: pct };
131
+ }
132
+ exports.summarize = summarize;
133
+ //# sourceMappingURL=variantModel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"variantModel.js","sourceRoot":"","sources":["../../../../../src/components/form/engine/variants/variantModel.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,79 @@
1
+ import React from 'react';
2
+ import { IVariantGroup, IVariantRow, IVariantValue, TVariantStatus } from './variantModel';
3
+ export declare function useVariantColors(): {
4
+ main: string;
5
+ text: string;
6
+ muted: string;
7
+ faint: string;
8
+ line: string;
9
+ hover: string;
10
+ surface: string;
11
+ danger: string;
12
+ warning: string;
13
+ success: string;
14
+ info: string;
15
+ custom1: string;
16
+ };
17
+ export declare const STATUS_COLOR: (status: TVariantStatus, c: ReturnType<typeof useVariantColors>) => string;
18
+ /** A single status mark — one dot, color = severity. Replaces stripe+box+icon. */
19
+ export declare const StatusDot: ({ status, size, }: {
20
+ status: TVariantStatus;
21
+ size?: number;
22
+ }) => import("react/jsx-runtime").JSX.Element;
23
+ /** The value summary. `tone='calm'` desaturates template/richtext chips. */
24
+ export declare const ValueView: ({ value, tone, }: {
25
+ value: IVariantValue;
26
+ tone?: 'calm' | 'vivid';
27
+ }) => import("react/jsx-runtime").JSX.Element;
28
+ /** A reusable description disclosure used by every variant (tap-friendly).
29
+ * Unifies short_desc (inline) + long desc into ONE control. */
30
+ export declare const useDisclosure: () => {
31
+ isOpen: (id: string) => boolean;
32
+ toggle: (id: string) => void;
33
+ };
34
+ export type TVariantFilter = 'all' | 'attention';
35
+ export declare function useVariantForm(options: any, values: any, config?: any): {
36
+ groups: IVariantGroup[];
37
+ visibleGroups: IVariantGroup[];
38
+ requiredGroups: Record<string, import("./variantModel").IRequiredGroupInfo>;
39
+ summary: {
40
+ total: number;
41
+ set: number;
42
+ todo: number;
43
+ invalid: number;
44
+ attention: number;
45
+ pct: number;
46
+ };
47
+ filter: TVariantFilter;
48
+ setFilter: React.Dispatch<React.SetStateAction<TVariantFilter>>;
49
+ toggleAttention: () => void;
50
+ query: string;
51
+ setQuery: React.Dispatch<React.SetStateAction<string>>;
52
+ showDescriptions: boolean;
53
+ toggleDescriptions: () => void;
54
+ editing: string;
55
+ startEdit: (name: string) => void;
56
+ stopEdit: () => void;
57
+ };
58
+ export type TVariantForm = ReturnType<typeof useVariantForm>;
59
+ /** Compact toolbar: just a prominent filter field. The "needs attention" control
60
+ * lives in each variant's header (the count line is the link); all optional
61
+ * fields render inline in the Optional group, so there's no "add field" step. */
62
+ export declare const VariantToolbar: ({ form }: {
63
+ form: TVariantForm;
64
+ }) => import("react/jsx-runtime").JSX.Element;
65
+ /** Complex value preview — the SAME nested tree + "Show more" fade the compact
66
+ * engine uses, so hash/list fields show their contents immediately. */
67
+ export declare const ComplexPreview: ({ value, onOpen }: {
68
+ value: unknown;
69
+ onOpen?: () => void;
70
+ }) => import("react/jsx-runtime").JSX.Element;
71
+ /** Inline editor: mounts the REAL field editor (AutoFormField) for the row's
72
+ * schema + value, so clicking a field edits it for real (string, number, bool,
73
+ * colour, file, richtext, list, date, …). Local state only — the prototype
74
+ * doesn't persist; in the engine this flows through handleValueChange. */
75
+ export declare const InlineEdit: ({ row, onDone }: {
76
+ row: IVariantRow;
77
+ onDone: () => void;
78
+ }) => import("react/jsx-runtime").JSX.Element;
79
+ //# sourceMappingURL=variantParts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"variantParts.d.ts","sourceRoot":"","sources":["../../../../../src/components/form/engine/variants/variantParts.tsx"],"names":[],"mappings":"AAcA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,OAAO,EAGL,aAAa,EACb,WAAW,EACX,aAAa,EACb,cAAc,EACf,MAAM,gBAAgB,CAAC;AAExB,wBAAgB,gBAAgB;;;;;;;;;;;;;EAiB/B;AAED,eAAO,MAAM,YAAY,WACf,cAAc,KACnB,WAAW,uBAAuB,CAAC,WAK7B,CAAC;AAEZ,kFAAkF;AAClF,eAAO,MAAM,SAAS,sBAGnB;IACD,MAAM,EAAE,cAAc,CAAC;IACvB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,4CAgBA,CAAC;AAEF,4EAA4E;AAC5E,eAAO,MAAM,SAAS,qBAGnB;IACD,KAAK,EAAE,aAAa,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;CACzB,4CAkFA,CAAC;AAEF;gEACgE;AAChE,eAAO,MAAM,aAAa;iBAGT,MAAM;iBACN,MAAM;CAEtB,CAAC;AAMF,MAAM,MAAM,cAAc,GAAG,KAAK,GAAG,WAAW,CAAC;AAEjD,wBAAgB,cAAc,CAAC,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,CAAC,EAAE,GAAG;;;;;;;;;;;;;;;;;;;;sBAwChD,MAAM;;EAG3B;AAED,MAAM,MAAM,YAAY,GAAG,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC;AAE7D;;kFAEkF;AAClF,eAAO,MAAM,cAAc,aAAc;IAAE,IAAI,EAAE,YAAY,CAAA;CAAE,4CAgC9D,CAAC;AAEF;wEACwE;AACxE,eAAO,MAAM,cAAc,sBAAuB;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,IAAI,CAAA;CAAE,4CAWxF,CAAC;AAEF;;;2EAG2E;AAC3E,eAAO,MAAM,UAAU,oBAAqB;IAAE,GAAG,EAAE,WAAW,CAAC;IAAC,MAAM,EAAE,MAAM,IAAI,CAAA;CAAE,4CAuBnF,CAAC"}
@@ -0,0 +1,191 @@
1
+ "use strict";
2
+ var __assign = (this && this.__assign) || function () {
3
+ __assign = Object.assign || function(t) {
4
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
5
+ s = arguments[i];
6
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
+ t[p] = s[p];
8
+ }
9
+ return t;
10
+ };
11
+ return __assign.apply(this, arguments);
12
+ };
13
+ var __importDefault = (this && this.__importDefault) || function (mod) {
14
+ return (mod && mod.__esModule) ? mod : { "default": mod };
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ exports.InlineEdit = exports.ComplexPreview = exports.VariantToolbar = exports.useVariantForm = exports.useDisclosure = exports.ValueView = exports.StatusDot = exports.STATUS_COLOR = exports.useVariantColors = void 0;
18
+ var jsx_runtime_1 = require("react/jsx-runtime");
19
+ /**
20
+ * Shared rendering parts for the FormEngine compact VARIANTS playground.
21
+ * Value rendering is shared so every variant shows identical data; the `tone`
22
+ * prop lets a variant choose a calm (desaturated) or vivid chip treatment.
23
+ */
24
+ var reqore_1 = require("@qoretechnologies/reqore");
25
+ var useTheme_1 = require("@qoretechnologies/reqore/dist/hooks/useTheme");
26
+ var react_1 = __importDefault(require("react"));
27
+ var AutoFormField_1 = require("../../fields/auto/AutoFormField");
28
+ var StructuredDataView_1 = require("../_structuredData/StructuredDataView");
29
+ var variantModel_1 = require("./variantModel");
30
+ function useVariantColors() {
31
+ var _a, _b, _c, _d, _e, _f;
32
+ var theme = (0, useTheme_1.useReqoreTheme)();
33
+ var intents = (theme.intents || {});
34
+ return {
35
+ main: theme.main,
36
+ text: ((_a = theme.text) === null || _a === void 0 ? void 0 : _a.color) || '#e8e8e8',
37
+ muted: "".concat(((_b = theme.text) === null || _b === void 0 ? void 0 : _b.color) || '#e8e8e8', "99"),
38
+ faint: "".concat(((_c = theme.text) === null || _c === void 0 ? void 0 : _c.color) || '#e8e8e8', "55"),
39
+ line: "".concat(((_d = theme.text) === null || _d === void 0 ? void 0 : _d.color) || '#ffffff', "14"),
40
+ hover: "".concat(((_e = theme.text) === null || _e === void 0 ? void 0 : _e.color) || '#ffffff', "0c"),
41
+ surface: "".concat(((_f = theme.text) === null || _f === void 0 ? void 0 : _f.color) || '#ffffff', "08"),
42
+ danger: intents.danger || '#a82a2a',
43
+ warning: intents.warning || '#d17c29',
44
+ success: intents.success || '#4a7110',
45
+ info: intents.info || '#3b7bbf',
46
+ custom1: intents.custom1 || '#762f7e',
47
+ };
48
+ }
49
+ exports.useVariantColors = useVariantColors;
50
+ var STATUS_COLOR = function (status, c) {
51
+ return status === 'invalid' ? c.danger
52
+ : status === 'todo' ? c.warning
53
+ : status === 'set' ? c.success
54
+ : c.faint;
55
+ };
56
+ exports.STATUS_COLOR = STATUS_COLOR;
57
+ /** A single status mark — one dot, color = severity. Replaces stripe+box+icon. */
58
+ var StatusDot = function (_a) {
59
+ var status = _a.status, _b = _a.size, size = _b === void 0 ? 7 : _b;
60
+ var c = useVariantColors();
61
+ if (status === 'unset')
62
+ return null;
63
+ return ((0, jsx_runtime_1.jsx)("span", { "aria-hidden": true, style: {
64
+ width: size,
65
+ height: size,
66
+ borderRadius: '50%',
67
+ flex: '0 0 auto',
68
+ background: (0, exports.STATUS_COLOR)(status, c),
69
+ boxShadow: status !== 'set' ? "0 0 0 3px ".concat((0, exports.STATUS_COLOR)(status, c), "22") : undefined,
70
+ } }));
71
+ };
72
+ exports.StatusDot = StatusDot;
73
+ /** The value summary. `tone='calm'` desaturates template/richtext chips. */
74
+ var ValueView = function (_a) {
75
+ var value = _a.value, _b = _a.tone, tone = _b === void 0 ? 'calm' : _b;
76
+ var c = useVariantColors();
77
+ var ellipsis = {
78
+ overflow: 'hidden',
79
+ textOverflow: 'ellipsis',
80
+ whiteSpace: 'nowrap',
81
+ minWidth: 0,
82
+ };
83
+ switch (value.kind) {
84
+ case 'empty':
85
+ // A quiet dash reads as "no value" without shouting "Not set" on every row.
86
+ return (0, jsx_runtime_1.jsx)("span", { style: { color: c.faint }, children: "\u2014" });
87
+ case 'color':
88
+ return ((0, jsx_runtime_1.jsxs)("span", { style: { display: 'inline-flex', alignItems: 'center', gap: 7, minWidth: 0 }, children: [(0, jsx_runtime_1.jsx)("span", { "aria-hidden": true, style: {
89
+ width: 12,
90
+ height: 12,
91
+ borderRadius: 3,
92
+ flex: '0 0 auto',
93
+ background: value.extra,
94
+ border: "1px solid ".concat(c.line),
95
+ } }), (0, jsx_runtime_1.jsx)("span", { style: ellipsis, children: value.display })] }));
96
+ case 'file':
97
+ return ((0, jsx_runtime_1.jsxs)("span", { style: { display: 'inline-flex', alignItems: 'center', gap: 6, minWidth: 0 }, children: [(0, jsx_runtime_1.jsx)(reqore_1.ReqoreIcon, { icon: 'FileLine', size: '13px', style: { color: c.muted, flexShrink: 0 } }), (0, jsx_runtime_1.jsx)("span", { style: ellipsis, children: value.display }), value.extra ?
98
+ (0, jsx_runtime_1.jsx)("span", { style: { color: c.faint, fontSize: 11, flexShrink: 0 }, children: value.extra })
99
+ : null] }));
100
+ case 'bool':
101
+ return (0, jsx_runtime_1.jsx)("span", { children: value.display });
102
+ case 'hash':
103
+ return ((0, jsx_runtime_1.jsxs)("span", { style: { display: 'inline-flex', alignItems: 'center', gap: 6, color: c.muted }, children: [(0, jsx_runtime_1.jsx)(reqore_1.ReqoreIcon, { icon: 'BracesLine', size: '12px', style: { color: c.faint } }), (0, jsx_runtime_1.jsx)("span", { children: value.display })] }));
104
+ case 'template':
105
+ return tone === 'vivid' ?
106
+ (0, jsx_runtime_1.jsx)(reqore_1.ReqoreTag, { size: 'small', intent: 'info', icon: 'ExchangeDollarLine', label: value.display })
107
+ : (0, jsx_runtime_1.jsxs)("span", { style: __assign({ display: 'inline-flex', alignItems: 'center', gap: 5, padding: '1px 7px', borderRadius: 4, background: c.surface, border: "1px solid ".concat(c.line), color: c.text, fontSize: 12, maxWidth: '100%' }, ellipsis), children: [(0, jsx_runtime_1.jsx)(reqore_1.ReqoreIcon, { icon: 'ExchangeDollarLine', size: '11px', style: { color: c.custom1, flexShrink: 0 } }), (0, jsx_runtime_1.jsx)("span", { style: ellipsis, children: value.display })] });
108
+ case 'richtext':
109
+ return (0, jsx_runtime_1.jsx)("span", { style: ellipsis, children: value.display });
110
+ default:
111
+ return (0, jsx_runtime_1.jsx)("span", { style: ellipsis, children: value.display });
112
+ }
113
+ };
114
+ exports.ValueView = ValueView;
115
+ /** A reusable description disclosure used by every variant (tap-friendly).
116
+ * Unifies short_desc (inline) + long desc into ONE control. */
117
+ var useDisclosure = function () {
118
+ var _a = react_1.default.useState({}), open = _a[0], setOpen = _a[1];
119
+ return {
120
+ isOpen: function (id) { return !!open[id]; },
121
+ toggle: function (id) { return setOpen(function (p) {
122
+ var _a;
123
+ return (__assign(__assign({}, p), (_a = {}, _a[id] = !p[id], _a)));
124
+ }); },
125
+ };
126
+ };
127
+ exports.useDisclosure = useDisclosure;
128
+ function useVariantForm(options, values, config) {
129
+ var _a = react_1.default.useState('all'), filter = _a[0], setFilter = _a[1];
130
+ var _b = react_1.default.useState(''), query = _b[0], setQuery = _b[1];
131
+ var _c = react_1.default.useState(false), showDescriptions = _c[0], setShowDescriptions = _c[1];
132
+ var _d = react_1.default.useState(null), editing = _d[0], setEditing = _d[1];
133
+ var _e = react_1.default.useMemo(function () { return (0, variantModel_1.buildVariantGroups)(options, values, config); }, [options, values, config]), groups = _e.groups, requiredGroups = _e.requiredGroups;
134
+ var summary = react_1.default.useMemo(function () { return (0, variantModel_1.summarize)(groups); }, [groups]);
135
+ // Filtered view: text query (label match) + 'attention' (todo/invalid only).
136
+ var visibleGroups = react_1.default.useMemo(function () {
137
+ var q = query.trim().toLowerCase();
138
+ return groups
139
+ .map(function (g) { return (__assign(__assign({}, g), { rows: g.rows.filter(function (r) {
140
+ return (filter === 'all' || r.status === 'todo' || r.status === 'invalid') &&
141
+ (!q || r.label.toLowerCase().includes(q) || r.name.toLowerCase().includes(q));
142
+ }) })); })
143
+ .filter(function (g) { return g.rows.length; });
144
+ }, [groups, filter, query]);
145
+ return {
146
+ groups: groups,
147
+ visibleGroups: visibleGroups,
148
+ requiredGroups: requiredGroups,
149
+ summary: summary,
150
+ filter: filter,
151
+ setFilter: setFilter,
152
+ toggleAttention: function () { return setFilter(function (f) { return (f === 'attention' ? 'all' : 'attention'); }); },
153
+ query: query,
154
+ setQuery: setQuery,
155
+ showDescriptions: showDescriptions,
156
+ toggleDescriptions: function () { return setShowDescriptions(function (v) { return !v; }); },
157
+ editing: editing,
158
+ startEdit: function (name) { return setEditing(function (cur) { return (cur === name ? null : name); }); },
159
+ stopEdit: function () { return setEditing(null); },
160
+ };
161
+ }
162
+ exports.useVariantForm = useVariantForm;
163
+ /** Compact toolbar: just a prominent filter field. The "needs attention" control
164
+ * lives in each variant's header (the count line is the link); all optional
165
+ * fields render inline in the Optional group, so there's no "add field" step. */
166
+ var VariantToolbar = function (_a) {
167
+ var form = _a.form;
168
+ var c = useVariantColors();
169
+ var summary = form.summary, query = form.query, setQuery = form.setQuery, showDescriptions = form.showDescriptions, toggleDescriptions = form.toggleDescriptions;
170
+ return ((0, jsx_runtime_1.jsxs)(reqore_1.ReqoreControlGroup, { verticalAlign: 'center', fluid: true, children: [(0, jsx_runtime_1.jsx)(reqore_1.ReqoreInput, { placeholder: 'Filter fields\u2026', icon: 'Search2Line', iconColor: 'muted', pill: true, fluid: true, value: query, onChange: function (e) { return setQuery(e.currentTarget.value); }, onClearClick: function () { return setQuery(''); } }), (0, jsx_runtime_1.jsx)(reqore_1.ReqoreButton, { fixed: true, flat: true, minimal: true, intent: showDescriptions ? 'info' : undefined, active: showDescriptions, icon: showDescriptions ? 'InformationFill' : 'InformationLine', tooltip: showDescriptions ? 'Hide field descriptions' : 'Show field descriptions', onClick: toggleDescriptions }), (0, jsx_runtime_1.jsxs)("span", { style: { color: c.faint, fontSize: 12, paddingLeft: 4, whiteSpace: 'nowrap' }, children: [summary.set, "/", summary.total, " set"] })] }));
171
+ };
172
+ exports.VariantToolbar = VariantToolbar;
173
+ /** Complex value preview — the SAME nested tree + "Show more" fade the compact
174
+ * engine uses, so hash/list fields show their contents immediately. */
175
+ var ComplexPreview = function (_a) {
176
+ var value = _a.value, onOpen = _a.onOpen;
177
+ return ((0, jsx_runtime_1.jsx)(reqore_1.ReqoreCollapsibleContent, { maxCollapsedHeight: 120, children: (0, jsx_runtime_1.jsx)("div", { onClick: function (e) { return e.stopPropagation(); }, children: (0, jsx_runtime_1.jsx)(StructuredDataView_1.StructuredDataView, { value: value, collapsibleRoot: false, defaultExpandDepth: 2, onItemClick: onOpen }) }) }));
178
+ };
179
+ exports.ComplexPreview = ComplexPreview;
180
+ /** Inline editor: mounts the REAL field editor (AutoFormField) for the row's
181
+ * schema + value, so clicking a field edits it for real (string, number, bool,
182
+ * colour, file, richtext, list, date, …). Local state only — the prototype
183
+ * doesn't persist; in the engine this flows through handleValueChange. */
184
+ var InlineEdit = function (_a) {
185
+ var _b, _c;
186
+ var row = _a.row, onDone = _a.onDone;
187
+ var _d = react_1.default.useState((_b = row.field) === null || _b === void 0 ? void 0 : _b.value), value = _d[0], setValue = _d[1];
188
+ return ((0, jsx_runtime_1.jsxs)("div", { style: { gridColumn: '1 / -1', display: 'flex', flexFlow: 'column', gap: 8, padding: '10px 0 12px' }, onClick: function (e) { return e.stopPropagation(); }, children: [(0, jsx_runtime_1.jsx)(AutoFormField_1.AutoFormField, __assign({}, (row.schema || {}), { name: row.name, value: value, default_value: (_c = row.schema) === null || _c === void 0 ? void 0 : _c.default_value, onChange: function (_n, v) { return setValue(v); }, fluid: true, size: 'small' })), (0, jsx_runtime_1.jsx)("div", { style: { display: 'flex', justifyContent: 'flex-end' }, children: (0, jsx_runtime_1.jsx)(reqore_1.ReqoreButton, { size: 'small', intent: 'success', icon: 'CheckLine', fixed: true, onClick: onDone, children: "Done" }) })] }));
189
+ };
190
+ exports.InlineEdit = InlineEdit;
191
+ //# sourceMappingURL=variantParts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"variantParts.js","sourceRoot":"","sources":["../../../../../src/components/form/engine/variants/variantParts.tsx"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/components/form/expressions/builder/index.tsx"],"names":[],"mappings":"AAgBA,OAAO,EAAE,kBAAkB,EAAE,MAAM,gDAAgD,CAAC;AACpF,OAAO,EAAE,oBAAoB,EAAE,MAAM,mDAAmD,CAAC;AACzF,OAAO,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAc1D,OAAO,EAEL,WAAW,EACX,iBAAiB,EAElB,MAAM,UAAU,CAAC;AAalB,MAAM,WAAW,uBAAuB;IACtC,cAAc,CAAC,EAAE,oBAAoB,CAAC;IACtC,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,UAAU,GAAG,UAAU,EAAE,CAAC;IACvC,KAAK,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;IACpB,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,WAAW,EAAE,MAAM,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;IAC1D,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;IAC7E,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,WAAW,CAAC,EAAE,iBAAiB,EAAE,CAAC;IAClC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;;;;;;;;OAUG;IACH,YAAY,CAAC,EACT,kBAAkB,EAAE,GACpB,CAAC,CAAC,OAAO,EAAE;QACT,kBAAkB,CAAC,EAAE,iBAAiB,CAAC;QACvC,KAAK,CAAC,EAAE,WAAW,CAAC;KACrB,KAAK,kBAAkB,EAAE,CAAC,CAAC;CACjC;AAiBD,MAAM,WAAW,gBAAiB,SAAQ,uBAAuB;CAAG;AAEpE,eAAO,MAAM,UAAU,wKAiBpB,gBAAgB,4CA26BlB,CAAC;AAEF,eAAO,MAAM,iBAAiB,kLAiB3B,uBAAuB,4CAyLzB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/components/form/expressions/builder/index.tsx"],"names":[],"mappings":"AAgBA,OAAO,EAAE,kBAAkB,EAAE,MAAM,gDAAgD,CAAC;AACpF,OAAO,EAAE,oBAAoB,EAAE,MAAM,mDAAmD,CAAC;AACzF,OAAO,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAc1D,OAAO,EAEL,WAAW,EACX,iBAAiB,EAElB,MAAM,UAAU,CAAC;AAalB,MAAM,WAAW,uBAAuB;IACtC,cAAc,CAAC,EAAE,oBAAoB,CAAC;IACtC,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,UAAU,GAAG,UAAU,EAAE,CAAC;IACvC,KAAK,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;IACpB,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,WAAW,EAAE,MAAM,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;IAC1D,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;IAC7E,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,WAAW,CAAC,EAAE,iBAAiB,EAAE,CAAC;IAClC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;;;;;;;;OAUG;IACH,YAAY,CAAC,EACT,kBAAkB,EAAE,GACpB,CAAC,CAAC,OAAO,EAAE;QACT,kBAAkB,CAAC,EAAE,iBAAiB,CAAC;QACvC,KAAK,CAAC,EAAE,WAAW,CAAC;KACrB,KAAK,kBAAkB,EAAE,CAAC,CAAC;CACjC;AAiBD,MAAM,WAAW,gBAAiB,SAAQ,uBAAuB;CAAG;AAEpE,eAAO,MAAM,UAAU,wKAiBpB,gBAAgB,4CAs7BlB,CAAC;AAEF,eAAO,MAAM,iBAAiB,kLAiB3B,uBAAuB,4CAyLzB,CAAC"}
@@ -422,7 +422,10 @@ var Expression = function (_a) {
422
422
  var _a, _b;
423
423
  return (_b = (_a = value.value) === null || _a === void 0 ? void 0 : _a.args) === null || _b === void 0 ? void 0 : _b.some(function (arg) { return arg === null || arg === void 0 ? void 0 : arg.types_mismatch; });
424
424
  }, [JSON.stringify(value)]);
425
- if (expressions.loading || types.loading) {
425
+ // The type hook is seeded with the complete built-in catalogue and refreshes
426
+ // it in the background. Do not hide an otherwise usable expression behind
427
+ // a skeleton while that optional refresh is in flight.
428
+ if (expressions.loading || (types.loading && !(0, lodash_1.size)(types.value))) {
426
429
  return (0, jsx_runtime_1.jsx)(reqore_1.ReqorePanelSkeleton, { size: 'small' });
427
430
  }
428
431
  var validationData = (0, validations_1.validateFieldWithResult)('expression', value, {
@@ -430,7 +433,12 @@ var Expression = function (_a) {
430
433
  });
431
434
  return ((0, jsx_runtime_1.jsxs)(item_1.ExpressionItem, { index: index, as: reqore_1.ReqorePanel, intent: validationData.isValid && !!returnType && isReturnTypeMatching ? 'muted' : 'danger', description: isExpressionServerHandled ? 'This expression will be executed outside of Qorus' : '', flat: true, readOnly: readOnly, minimal: true, size: 'small', isChild: isChild, className: 'expression', customTheme: {
432
435
  main: "main:darken:".concat(level),
433
- }, id: id, label: (0, jsx_runtime_1.jsx)(Select_1.SelectFormField, { size: 'tiny', className: 'expression-operator-selector', value: (_f = value === null || value === void 0 ? void 0 : value.value) === null || _f === void 0 ? void 0 : _f.exp, icon: 'Functions', placeholder: 'Select operation', fluid: false, fixed: true, flat: true, minimal: true, items: defaultItems, onChange: handleOperatorChange, showDescription: 'tooltip', disabled: readOnly, id: 'expression-builder-select-function' }), style: {
436
+ }, id: id, label: (0, jsx_runtime_1.jsx)(Select_1.SelectFormField, { size: 'tiny', className: 'expression-operator-selector', value: (_f = value === null || value === void 0 ? void 0 : value.value) === null || _f === void 0 ? void 0 : _f.exp, icon: 'Functions', placeholder: 'Select operation', fluid: false, fixed: true, flat: true,
437
+ // The operation catalogue is long and every entry carries a description,
438
+ // so it belongs in the searchable collection modal rather than an inline
439
+ // dropdown. `SelectFormField` defaults `forceDropdown` to `true`, which
440
+ // would otherwise collapse this picker into the dropdown presentation.
441
+ forceDropdown: false, minimal: true, items: defaultItems, onChange: handleOperatorChange, showDescription: 'tooltip', disabled: readOnly, id: 'expression-builder-select-function' }), style: {
434
442
  marginLeft: isChild ? 10 : undefined,
435
443
  borderStyle: 'dashed',
436
444
  flexShrink: 1,
@@ -461,6 +469,9 @@ var Expression = function (_a) {
461
469
  transparent: false,
462
470
  fixed: true,
463
471
  minimal: false,
472
+ // Same catalogue as the operation selector above — keep the collection
473
+ // modal rather than the `forceDropdown` default's inline dropdown.
474
+ forceDropdown: false,
464
475
  items: defaultItems,
465
476
  hideItemCount: true,
466
477
  onChange: handleWrapExpressionClick,