@qoretechnologies/reqraft 0.10.46-pr.95.ge595a13 → 0.10.46

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 (147) hide show
  1. package/.claude/CLAUDE.md +12 -0
  2. package/.tasks/INDEX.md +1 -0
  3. package/.tasks/TEMPLATE_TOKEN_GRAMMAR.md +72 -0
  4. package/dist/components/composer/Composer.d.ts.map +1 -1
  5. package/dist/components/composer/Composer.js +5 -1
  6. package/dist/components/composer/Composer.js.map +1 -1
  7. package/dist/components/form/engine/CompactRow.d.ts +14 -0
  8. package/dist/components/form/engine/CompactRow.d.ts.map +1 -1
  9. package/dist/components/form/engine/CompactRow.js +199 -41
  10. package/dist/components/form/engine/CompactRow.js.map +1 -1
  11. package/dist/components/form/engine/CompactToolbar.d.ts.map +1 -1
  12. package/dist/components/form/engine/CompactToolbar.js +72 -72
  13. package/dist/components/form/engine/CompactToolbar.js.map +1 -1
  14. package/dist/components/form/engine/FormEngine.d.ts +65 -1
  15. package/dist/components/form/engine/FormEngine.d.ts.map +1 -1
  16. package/dist/components/form/engine/FormEngine.js +276 -108
  17. package/dist/components/form/engine/FormEngine.js.map +1 -1
  18. package/dist/components/form/engine/_structuredData/SchemaDataView.d.ts.map +1 -1
  19. package/dist/components/form/engine/_structuredData/SchemaDataView.js +55 -13
  20. package/dist/components/form/engine/_structuredData/SchemaDataView.js.map +1 -1
  21. package/dist/components/form/engine/_structuredData/structuredData.d.ts +15 -0
  22. package/dist/components/form/engine/_structuredData/structuredData.d.ts.map +1 -1
  23. package/dist/components/form/engine/_structuredData/structuredData.js +22 -1
  24. package/dist/components/form/engine/_structuredData/structuredData.js.map +1 -1
  25. package/dist/components/form/engine/compactRowStyles.d.ts.map +1 -1
  26. package/dist/components/form/engine/compactRowStyles.js +15 -3
  27. package/dist/components/form/engine/compactRowStyles.js.map +1 -1
  28. package/dist/components/form/engine/compactToolbarContext.d.ts +8 -0
  29. package/dist/components/form/engine/compactToolbarContext.d.ts.map +1 -1
  30. package/dist/components/form/engine/compactToolbarContext.js.map +1 -1
  31. package/dist/components/form/engine/readFirst.d.ts +24 -0
  32. package/dist/components/form/engine/readFirst.d.ts.map +1 -1
  33. package/dist/components/form/engine/readFirst.js +84 -6
  34. package/dist/components/form/engine/readFirst.js.map +1 -1
  35. package/dist/components/form/fields/Field.d.ts.map +1 -1
  36. package/dist/components/form/fields/Field.js +1 -1
  37. package/dist/components/form/fields/Field.js.map +1 -1
  38. package/dist/components/form/fields/allowed-values/AllowedValues.d.ts +12 -2
  39. package/dist/components/form/fields/allowed-values/AllowedValues.d.ts.map +1 -1
  40. package/dist/components/form/fields/allowed-values/AllowedValues.js +16 -6
  41. package/dist/components/form/fields/allowed-values/AllowedValues.js.map +1 -1
  42. package/dist/components/form/fields/auto/AutoFormField.d.ts.map +1 -1
  43. package/dist/components/form/fields/auto/AutoFormField.js +64 -14
  44. package/dist/components/form/fields/auto/AutoFormField.js.map +1 -1
  45. package/dist/components/form/fields/long-string/LongString.d.ts +9 -1
  46. package/dist/components/form/fields/long-string/LongString.d.ts.map +1 -1
  47. package/dist/components/form/fields/long-string/LongString.js +25 -4
  48. package/dist/components/form/fields/long-string/LongString.js.map +1 -1
  49. package/dist/components/form/fields/template/ExampleValueModal.d.ts +29 -0
  50. package/dist/components/form/fields/template/ExampleValueModal.d.ts.map +1 -0
  51. package/dist/components/form/fields/template/ExampleValueModal.js +122 -0
  52. package/dist/components/form/fields/template/ExampleValueModal.js.map +1 -0
  53. package/dist/components/form/fields/template/ReadOnlyTemplateTag.d.ts.map +1 -1
  54. package/dist/components/form/fields/template/ReadOnlyTemplateTag.js +3 -3
  55. package/dist/components/form/fields/template/ReadOnlyTemplateTag.js.map +1 -1
  56. package/dist/components/form/fields/template/TemplateField.d.ts.map +1 -1
  57. package/dist/components/form/fields/template/TemplateField.js +81 -27
  58. package/dist/components/form/fields/template/TemplateField.js.map +1 -1
  59. package/dist/components/form/fields/template/__fixtures__/longExampleValue.d.ts +2 -0
  60. package/dist/components/form/fields/template/__fixtures__/longExampleValue.d.ts.map +1 -0
  61. package/dist/components/form/fields/template/__fixtures__/longExampleValue.js +9 -0
  62. package/dist/components/form/fields/template/__fixtures__/longExampleValue.js.map +1 -0
  63. package/dist/components/form/index.d.ts +1 -0
  64. package/dist/components/form/index.d.ts.map +1 -1
  65. package/dist/components/form/index.js +1 -0
  66. package/dist/components/form/index.js.map +1 -1
  67. package/dist/components/searchFilterBar/SearchFilterBar.d.ts +12 -1
  68. package/dist/components/searchFilterBar/SearchFilterBar.d.ts.map +1 -1
  69. package/dist/components/searchFilterBar/SearchFilterBar.js +2 -2
  70. package/dist/components/searchFilterBar/SearchFilterBar.js.map +1 -1
  71. package/dist/components/ticketThread/TicketThread.d.ts.map +1 -1
  72. package/dist/components/ticketThread/TicketThread.js +1 -1
  73. package/dist/components/ticketThread/TicketThread.js.map +1 -1
  74. package/dist/helpers/common.d.ts +8 -1
  75. package/dist/helpers/common.d.ts.map +1 -1
  76. package/dist/helpers/common.js +9 -1
  77. package/dist/helpers/common.js.map +1 -1
  78. package/dist/helpers/expressions.d.ts.map +1 -1
  79. package/dist/helpers/expressions.js +15 -2
  80. package/dist/helpers/expressions.js.map +1 -1
  81. package/dist/helpers/optionUiTypes.d.ts +30 -0
  82. package/dist/helpers/optionUiTypes.d.ts.map +1 -0
  83. package/dist/helpers/optionUiTypes.js +156 -0
  84. package/dist/helpers/optionUiTypes.js.map +1 -0
  85. package/dist/helpers/options.d.ts +19 -0
  86. package/dist/helpers/options.d.ts.map +1 -1
  87. package/dist/helpers/options.js +25 -1
  88. package/dist/helpers/options.js.map +1 -1
  89. package/dist/helpers/providerValue.d.ts +68 -0
  90. package/dist/helpers/providerValue.d.ts.map +1 -0
  91. package/dist/helpers/providerValue.js +50 -0
  92. package/dist/helpers/providerValue.js.map +1 -0
  93. package/dist/helpers/singleLineString.d.ts +37 -0
  94. package/dist/helpers/singleLineString.d.ts.map +1 -0
  95. package/dist/helpers/singleLineString.js +66 -0
  96. package/dist/helpers/singleLineString.js.map +1 -0
  97. package/dist/helpers/templates.d.ts +100 -0
  98. package/dist/helpers/templates.d.ts.map +1 -1
  99. package/dist/helpers/templates.js +237 -4
  100. package/dist/helpers/templates.js.map +1 -1
  101. package/dist/helpers/validations.d.ts +103 -2
  102. package/dist/helpers/validations.d.ts.map +1 -1
  103. package/dist/helpers/validations.js +858 -91
  104. package/dist/helpers/validations.js.map +1 -1
  105. package/dist/index.d.ts +1 -1
  106. package/dist/index.d.ts.map +1 -1
  107. package/dist/index.js +2 -1
  108. package/dist/index.js.map +1 -1
  109. package/package.json +1 -1
  110. package/src/components/composer/Composer.tsx +7 -3
  111. package/src/components/form/engine/CompactRow.tsx +279 -33
  112. package/src/components/form/engine/CompactToolbar.tsx +105 -98
  113. package/src/components/form/engine/FormEngine.stories.tsx +995 -12
  114. package/src/components/form/engine/FormEngine.tsx +377 -94
  115. package/src/components/form/engine/_structuredData/SchemaDataView.stories.tsx +104 -0
  116. package/src/components/form/engine/_structuredData/SchemaDataView.tsx +158 -101
  117. package/src/components/form/engine/_structuredData/structuredData.ts +20 -0
  118. package/src/components/form/engine/compactRowStyles.ts +55 -1
  119. package/src/components/form/engine/compactToolbarContext.ts +8 -0
  120. package/src/components/form/engine/readFirst.ts +125 -35
  121. package/src/components/form/fields/Field.tsx +3 -1
  122. package/src/components/form/fields/allowed-values/AllowedValues.tsx +24 -2
  123. package/src/components/form/fields/array/ArrayAutoField.stories.tsx +81 -0
  124. package/src/components/form/fields/auto/AutoFormField.stories.tsx +47 -1
  125. package/src/components/form/fields/auto/AutoFormField.tsx +73 -11
  126. package/src/components/form/fields/long-string/LongString.tsx +46 -5
  127. package/src/components/form/fields/schema-definition/SchemaDefinitionField.stories.tsx +5 -0
  128. package/src/components/form/fields/template/ExampleValueModal.stories.tsx +114 -0
  129. package/src/components/form/fields/template/ExampleValueModal.tsx +99 -0
  130. package/src/components/form/fields/template/ReadOnlyTemplateTag.tsx +8 -4
  131. package/src/components/form/fields/template/TemplateField.stories.tsx +389 -1
  132. package/src/components/form/fields/template/TemplateField.tsx +100 -35
  133. package/src/components/form/fields/template/__fixtures__/longExampleValue.ts +7 -0
  134. package/src/components/form/index.tsx +1 -0
  135. package/src/components/searchFilterBar/SearchFilterBar.stories.tsx +62 -0
  136. package/src/components/searchFilterBar/SearchFilterBar.tsx +13 -0
  137. package/src/components/ticketThread/TicketThread.tsx +7 -0
  138. package/src/helpers/common.ts +11 -1
  139. package/src/helpers/expressions.ts +16 -2
  140. package/src/helpers/optionUiTypes.ts +161 -0
  141. package/src/helpers/options.ts +23 -0
  142. package/src/helpers/providerValue.ts +125 -0
  143. package/src/helpers/singleLineString.ts +61 -0
  144. package/src/helpers/templates.ts +272 -3
  145. package/src/helpers/validations.ts +1177 -109
  146. package/src/hooks/useWebSocket/useWebsocket.stories.tsx +23 -2
  147. package/src/index.tsx +1 -0
@@ -109,6 +109,7 @@ const StyledPct = styled.span`
109
109
  */
110
110
  export const CompactToolbar = memo((reqoreProps: Partial<IReqoreControlGroupProps>) => {
111
111
  const {
112
+ parts,
112
113
  readOnly,
113
114
  invalidCount,
114
115
  attentionCount,
@@ -144,7 +145,7 @@ export const CompactToolbar = memo((reqoreProps: Partial<IReqoreControlGroupProp
144
145
 
145
146
  return (
146
147
  <ReqoreControlGroup {...reqoreProps} vertical fluid fixed={false} gapSize='big'>
147
- {completion.total ?
148
+ {parts.completion && completion.total ?
148
149
  <StyledCompletion className='options-readfirst-completion'>
149
150
  <StyledCompletionLine>
150
151
  {!readOnly ?
@@ -183,104 +184,110 @@ export const CompactToolbar = memo((reqoreProps: Partial<IReqoreControlGroupProp
183
184
  </StyledCompletion>
184
185
  : null}
185
186
 
186
- {hasMultipleOptions || (invalidCount && !readOnly) ?
187
+ {/* The wrapper renders exactly when its one child (the search row) does —
188
+ a wider gate here used to render the group EMPTY when the search was
189
+ hidden (or self-hidden on a single-option form) while invalid fields
190
+ existed, and the empty group claimed a slot in the outer
191
+ `gapSize='big'` stack: a phantom gap between the completion meter and
192
+ the first status box. */}
193
+ {parts.search && hasMultipleOptions ?
187
194
  <ReqoreControlGroup vertical fluid gapSize='normal'>
188
- {hasMultipleOptions ?
189
- <ReqoreControlGroup fluid verticalAlign='center'>
190
- <ReqoreInput
191
- fluid
192
- pill
193
- icon='Search2Line'
194
- iconColor='muted'
195
- placeholder='Filter fields...'
196
- value={compactQuery}
197
- intent={compactQuery ? 'info' : undefined}
198
- className='options-readfirst-search'
199
- onChange={(event: React.FormEvent<HTMLInputElement>) =>
200
- setCompactQuery(event.currentTarget.value)
195
+ <ReqoreControlGroup fluid verticalAlign='center'>
196
+ <ReqoreInput
197
+ fluid
198
+ pill
199
+ icon='Search2Line'
200
+ iconColor='muted'
201
+ placeholder='Filter fields...'
202
+ value={compactQuery}
203
+ intent={compactQuery ? 'info' : undefined}
204
+ className='options-readfirst-search'
205
+ onChange={(event: React.FormEvent<HTMLInputElement>) =>
206
+ setCompactQuery(event.currentTarget.value)
207
+ }
208
+ onClearClick={() => setCompactQuery('')}
209
+ />
210
+ {parts.fields && !readOnly ?
211
+ <ReqoreDropdown
212
+ fixed
213
+ flat
214
+ filterable
215
+ icon='Filter3Line'
216
+ tooltip='Fields'
217
+ className='options-readfirst-fields'
218
+ intent={requiredOnly ? 'info' : undefined}
219
+ badge={requiredOnly ? 'Required only' : undefined}
220
+ onItemSelect={(item: IReqoreDropdownItem) =>
221
+ item.value && onAddOptionalField(item.value)
222
+ }
223
+ items={
224
+ [
225
+ {
226
+ label: 'Required only',
227
+ selected: requiredOnly,
228
+ icon: requiredOnly ? 'CheckboxCircleLine' : 'CheckboxBlankCircleLine',
229
+ tooltip: 'Show only required fields',
230
+ onClick: () => setRequiredOnly((value) => !value),
231
+ },
232
+ {
233
+ label: 'Show field types',
234
+ selected: showFieldTypes,
235
+ icon: showFieldTypes ? 'CheckboxCircleLine' : 'CheckboxBlankCircleLine',
236
+ tooltip: 'Annotate each field with its type',
237
+ onClick: onToggleFieldTypes,
238
+ },
239
+ // Sort by — a submenu (collapsed by default) so the five modes
240
+ // don't crowd the Fields menu. Reorders fields WITHIN each group
241
+ // (groups + required-group rails preserved); the active non-
242
+ // default mode shows as a badge on the parent.
243
+ {
244
+ label: 'Sort by',
245
+ icon: 'ArrowUpDownLine',
246
+ intent: compactSort !== 'schema' ? 'info' : undefined,
247
+ badge:
248
+ compactSort !== 'schema' ?
249
+ SORT_MODES.find((mode) => mode.value === compactSort)?.label
250
+ : undefined,
251
+ items: SORT_MODES.map((mode) => ({
252
+ label: mode.label,
253
+ tooltip: mode.tooltip,
254
+ selected: compactSort === mode.value,
255
+ icon:
256
+ compactSort === mode.value ?
257
+ 'CheckboxCircleLine'
258
+ : 'CheckboxBlankCircleLine',
259
+ onClick: () => setCompactSort(mode.value),
260
+ })),
261
+ },
262
+ {
263
+ label: 'Select all',
264
+ icon: 'MenuAddLine',
265
+ tooltip: 'Add every optional field',
266
+ disabled: filteredCount === 0,
267
+ onClick: onAddAll,
268
+ },
269
+ {
270
+ label: 'Default fields',
271
+ icon: 'RestartLine',
272
+ tooltip: 'Reset to the default set of fields',
273
+ onClick: onResetDefaults,
274
+ },
275
+ {
276
+ label: 'Revert all changes',
277
+ icon: 'HistoryLine',
278
+ tooltip: 'Undo all edits back to the loaded values',
279
+ disabled: !canRevert,
280
+ onClick: onRevertAll,
281
+ },
282
+ // The individual not-yet-added fields are no longer listed here —
283
+ // they render as addable rows in the Optional box instead. The
284
+ // menu keeps only the bulk actions above (Select all / Default
285
+ // fields / filters).
286
+ ] as TReqoreDropdownItems
201
287
  }
202
- onClearClick={() => setCompactQuery('')}
203
288
  />
204
- {!readOnly ?
205
- <ReqoreDropdown
206
- fixed
207
- flat
208
- filterable
209
- icon='Filter3Line'
210
- tooltip='Fields'
211
- className='options-readfirst-fields'
212
- intent={requiredOnly ? 'info' : undefined}
213
- badge={requiredOnly ? 'Required only' : undefined}
214
- onItemSelect={(item: IReqoreDropdownItem) =>
215
- item.value && onAddOptionalField(item.value)
216
- }
217
- items={
218
- [
219
- {
220
- label: 'Required only',
221
- selected: requiredOnly,
222
- icon: requiredOnly ? 'CheckboxCircleLine' : 'CheckboxBlankCircleLine',
223
- tooltip: 'Show only required fields',
224
- onClick: () => setRequiredOnly((value) => !value),
225
- },
226
- {
227
- label: 'Show field types',
228
- selected: showFieldTypes,
229
- icon: showFieldTypes ? 'CheckboxCircleLine' : 'CheckboxBlankCircleLine',
230
- tooltip: 'Annotate each field with its type',
231
- onClick: onToggleFieldTypes,
232
- },
233
- // Sort by — a submenu (collapsed by default) so the five modes
234
- // don't crowd the Fields menu. Reorders fields WITHIN each group
235
- // (groups + required-group rails preserved); the active non-
236
- // default mode shows as a badge on the parent.
237
- {
238
- label: 'Sort by',
239
- icon: 'ArrowUpDownLine',
240
- intent: compactSort !== 'schema' ? 'info' : undefined,
241
- badge:
242
- compactSort !== 'schema' ?
243
- SORT_MODES.find((mode) => mode.value === compactSort)?.label
244
- : undefined,
245
- items: SORT_MODES.map((mode) => ({
246
- label: mode.label,
247
- tooltip: mode.tooltip,
248
- selected: compactSort === mode.value,
249
- icon:
250
- compactSort === mode.value ?
251
- 'CheckboxCircleLine'
252
- : 'CheckboxBlankCircleLine',
253
- onClick: () => setCompactSort(mode.value),
254
- })),
255
- },
256
- {
257
- label: 'Select all',
258
- icon: 'MenuAddLine',
259
- tooltip: 'Add every optional field',
260
- disabled: filteredCount === 0,
261
- onClick: onAddAll,
262
- },
263
- {
264
- label: 'Default fields',
265
- icon: 'RestartLine',
266
- tooltip: 'Reset to the default set of fields',
267
- onClick: onResetDefaults,
268
- },
269
- {
270
- label: 'Revert all changes',
271
- icon: 'HistoryLine',
272
- tooltip: 'Undo all edits back to the loaded values',
273
- disabled: !canRevert,
274
- onClick: onRevertAll,
275
- },
276
- // The individual not-yet-added fields are no longer listed here —
277
- // they render as addable rows in the Optional box instead. The
278
- // menu keeps only the bulk actions above (Select all / Default
279
- // fields / filters).
280
- ] as TReqoreDropdownItems
281
- }
282
- />
283
- : null}
289
+ : null}
290
+ {parts.help ?
284
291
  <ReqoreButton
285
292
  fixed
286
293
  flat
@@ -293,8 +300,8 @@ export const CompactToolbar = memo((reqoreProps: Partial<IReqoreControlGroupProp
293
300
  }
294
301
  onClick={onToggleAllDescriptions}
295
302
  />
296
- </ReqoreControlGroup>
297
- : null}
303
+ : null}
304
+ </ReqoreControlGroup>
298
305
  </ReqoreControlGroup>
299
306
  : null}
300
307
  </ReqoreControlGroup>