@qoretechnologies/reqraft 0.10.57 → 0.10.58-pr.129.g2af0cf5
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.
- package/design/FORM_ENGINE_COMPACT.md +23 -5
- package/dist/components/form/engine/CompactToolbar.d.ts.map +1 -1
- package/dist/components/form/engine/CompactToolbar.js +2 -2
- package/dist/components/form/engine/CompactToolbar.js.map +1 -1
- package/dist/components/form/engine/FormEngine.d.ts.map +1 -1
- package/dist/components/form/engine/FormEngine.js +71 -62
- package/dist/components/form/engine/FormEngine.js.map +1 -1
- package/dist/components/form/engine/OptionFieldMessages.d.ts.map +1 -1
- package/dist/components/form/engine/OptionFieldMessages.js +6 -3
- package/dist/components/form/engine/OptionFieldMessages.js.map +1 -1
- package/dist/components/form/engine/readFirst.d.ts +16 -20
- package/dist/components/form/engine/readFirst.d.ts.map +1 -1
- package/dist/components/form/engine/readFirst.js +16 -49
- package/dist/components/form/engine/readFirst.js.map +1 -1
- package/dist/components/form/engine/variants/VariantCalmTable.d.ts.map +1 -1
- package/dist/components/form/engine/variants/VariantCalmTable.js +1 -1
- package/dist/components/form/engine/variants/VariantCalmTable.js.map +1 -1
- package/dist/components/form/engine/variants/variantModel.d.ts.map +1 -1
- package/dist/components/form/engine/variants/variantModel.js +8 -3
- package/dist/components/form/engine/variants/variantModel.js.map +1 -1
- package/dist/components/form/expressions/builder/index.d.ts.map +1 -1
- package/dist/components/form/expressions/builder/index.js +22 -13
- package/dist/components/form/expressions/builder/index.js.map +1 -1
- package/dist/components/form/fields/array/ArrayAuto.d.ts.map +1 -1
- package/dist/components/form/fields/array/ArrayAuto.js +8 -0
- package/dist/components/form/fields/array/ArrayAuto.js.map +1 -1
- package/dist/components/form/fields/array/ArrayAutoField.d.ts.map +1 -1
- package/dist/components/form/fields/array/ArrayAutoField.js +8 -0
- package/dist/components/form/fields/array/ArrayAutoField.js.map +1 -1
- package/dist/components/form/fields/auto/AutoFormField.d.ts.map +1 -1
- package/dist/components/form/fields/auto/AutoFormField.js +4 -1
- package/dist/components/form/fields/auto/AutoFormField.js.map +1 -1
- package/dist/components/form/fields/binary/Binary.d.ts.map +1 -1
- package/dist/components/form/fields/binary/Binary.js +10 -0
- package/dist/components/form/fields/binary/Binary.js.map +1 -1
- package/dist/components/form/fields/emittedValues.d.ts +38 -0
- package/dist/components/form/fields/emittedValues.d.ts.map +1 -0
- package/dist/components/form/fields/emittedValues.js +67 -0
- package/dist/components/form/fields/emittedValues.js.map +1 -0
- package/dist/components/form/fields/long-string/LongString.d.ts.map +1 -1
- package/dist/components/form/fields/long-string/LongString.js +24 -8
- package/dist/components/form/fields/long-string/LongString.js.map +1 -1
- package/dist/components/form/fields/number/Number.d.ts.map +1 -1
- package/dist/components/form/fields/number/Number.js +9 -0
- package/dist/components/form/fields/number/Number.js.map +1 -1
- package/dist/components/form/fields/rich-text/RichText.d.ts.map +1 -1
- package/dist/components/form/fields/rich-text/RichText.js +10 -0
- package/dist/components/form/fields/rich-text/RichText.js.map +1 -1
- package/dist/components/form/fields/template/TemplateField.d.ts.map +1 -1
- package/dist/components/form/fields/template/TemplateField.js +3 -1
- package/dist/components/form/fields/template/TemplateField.js.map +1 -1
- package/dist/components/smartEditor/useLspSession.d.ts.map +1 -1
- package/dist/components/smartEditor/useLspSession.js +8 -0
- package/dist/components/smartEditor/useLspSession.js.map +1 -1
- package/dist/components/supportTicket/InterfaceReferenceTags.d.ts +21 -5
- package/dist/components/supportTicket/InterfaceReferenceTags.d.ts.map +1 -1
- package/dist/components/supportTicket/InterfaceReferenceTags.js +24 -8
- package/dist/components/supportTicket/InterfaceReferenceTags.js.map +1 -1
- package/dist/components/supportTicket/ReferencePicker.d.ts +5 -4
- package/dist/components/supportTicket/ReferencePicker.d.ts.map +1 -1
- package/dist/components/supportTicket/ReferencePicker.js +27 -2
- package/dist/components/supportTicket/ReferencePicker.js.map +1 -1
- package/dist/components/supportTicket/meta.d.ts +16 -0
- package/dist/components/supportTicket/meta.d.ts.map +1 -1
- package/dist/components/supportTicket/meta.js +6 -1
- package/dist/components/supportTicket/meta.js.map +1 -1
- package/dist/components/supportTicket/useLoadedImages.d.ts +18 -0
- package/dist/components/supportTicket/useLoadedImages.d.ts.map +1 -0
- package/dist/components/supportTicket/useLoadedImages.js +72 -0
- package/dist/components/supportTicket/useLoadedImages.js.map +1 -0
- package/dist/components/ticketReferences/TicketReferences.d.ts +9 -5
- package/dist/components/ticketReferences/TicketReferences.d.ts.map +1 -1
- package/dist/components/ticketReferences/TicketReferences.js +22 -9
- package/dist/components/ticketReferences/TicketReferences.js.map +1 -1
- package/dist/components/ticketThread/TicketThread.d.ts +10 -6
- package/dist/components/ticketThread/TicketThread.d.ts.map +1 -1
- package/dist/components/ticketThread/TicketThread.js +2 -2
- package/dist/components/ticketThread/TicketThread.js.map +1 -1
- package/dist/helpers/allowedValues.d.ts +71 -0
- package/dist/helpers/allowedValues.d.ts.map +1 -0
- package/dist/helpers/allowedValues.js +183 -0
- package/dist/helpers/allowedValues.js.map +1 -0
- package/dist/helpers/common.d.ts +7 -0
- package/dist/helpers/common.d.ts.map +1 -1
- package/dist/helpers/common.js +16 -1
- package/dist/helpers/common.js.map +1 -1
- package/dist/helpers/expressions.d.ts +13 -0
- package/dist/helpers/expressions.d.ts.map +1 -1
- package/dist/helpers/expressions.js +23 -1
- package/dist/helpers/expressions.js.map +1 -1
- package/dist/helpers/validations.d.ts.map +1 -1
- package/dist/helpers/validations.js +14 -0
- package/dist/helpers/validations.js.map +1 -1
- package/dist/utils/fetch.d.ts +4 -0
- package/dist/utils/fetch.d.ts.map +1 -1
- package/dist/utils/fetch.js +6 -1
- package/dist/utils/fetch.js.map +1 -1
- package/package.json +1 -1
- package/src/components/form/engine/CompactToolbar.tsx +8 -3
- package/src/components/form/engine/FormEngine.stories.tsx +206 -13
- package/src/components/form/engine/FormEngine.tsx +70 -57
- package/src/components/form/engine/OptionFieldMessages.tsx +7 -5
- package/src/components/form/engine/readFirst.ts +19 -50
- package/src/components/form/engine/variants/VariantCalmTable.tsx +3 -1
- package/src/components/form/engine/variants/variantModel.ts +10 -3
- package/src/components/form/expressions/builder/index.tsx +15 -2
- package/src/components/form/fields/array/ArrayAuto.tsx +10 -1
- package/src/components/form/fields/array/ArrayAutoField.tsx +10 -1
- package/src/components/form/fields/auto/AutoFormField.tsx +4 -1
- package/src/components/form/fields/binary/Binary.tsx +10 -0
- package/src/components/form/fields/emittedValues.ts +62 -0
- package/src/components/form/fields/long-string/LongString.tsx +28 -8
- package/src/components/form/fields/number/Number.tsx +9 -0
- package/src/components/form/fields/rich-text/RichText.tsx +10 -0
- package/src/components/form/fields/template/TemplateField.tsx +4 -1
- package/src/components/smartEditor/useLspSession.ts +8 -0
- package/src/components/supportTicket/InterfaceReferenceTags.stories.tsx +86 -0
- package/src/components/supportTicket/InterfaceReferenceTags.tsx +44 -11
- package/src/components/supportTicket/ReferencePicker.stories.tsx +65 -0
- package/src/components/supportTicket/ReferencePicker.tsx +26 -5
- package/src/components/supportTicket/TicketReplyBox.stories.tsx +5 -2
- package/src/components/supportTicket/__fixtures__/kindMarks.ts +28 -0
- package/src/components/supportTicket/meta.ts +21 -0
- package/src/components/supportTicket/useLoadedImages.ts +73 -0
- package/src/components/ticketReferences/TicketReferences.tsx +27 -7
- package/src/components/ticketThread/TicketThread.tsx +11 -3
- package/src/helpers/allowedValues.ts +216 -0
- package/src/helpers/common.ts +14 -0
- package/src/helpers/expressions.ts +25 -0
- package/src/helpers/validations.ts +16 -0
- package/src/utils/fetch.ts +10 -1
|
@@ -100,3 +100,28 @@ export const areQorusTypesCompatible = (
|
|
|
100
100
|
// If none of the types are compatible return false
|
|
101
101
|
return false;
|
|
102
102
|
};
|
|
103
|
+
|
|
104
|
+
/**
|
|
105
|
+
* Whether an operation is offered where its result must be of `returnType`: a condition (`bool`) is
|
|
106
|
+
* built from the operations that give true or false, not from every operation the server has.
|
|
107
|
+
*
|
|
108
|
+
* Only a condition narrows the list. Any other type keeps every operation: a value of one type is often
|
|
109
|
+
* made from an operation that gives another (text from rich text, a number from an int), and the
|
|
110
|
+
* mismatch message after the choice says when it does not fit. An operation whose result is known
|
|
111
|
+
* only once it is built (`any`, or the type of its first argument) is offered everywhere.
|
|
112
|
+
*/
|
|
113
|
+
export const expressionFitsReturnType = (
|
|
114
|
+
returnType: string | string[] | undefined,
|
|
115
|
+
expression: { ui_return_type?: string; return_type_first_arg?: boolean }
|
|
116
|
+
): boolean => {
|
|
117
|
+
const types = isArray(returnType) ? returnType : returnType ? [returnType] : [];
|
|
118
|
+
const condition = types.length > 0 && types.every((type) => /^\*?(bool|boolean)$/.test(type));
|
|
119
|
+
if (!condition) {
|
|
120
|
+
return true;
|
|
121
|
+
}
|
|
122
|
+
const result = expression.ui_return_type;
|
|
123
|
+
if (expression.return_type_first_arg || !result || result === 'any' || result === 'auto') {
|
|
124
|
+
return true;
|
|
125
|
+
}
|
|
126
|
+
return /^\*?(bool|boolean)$/.test(result);
|
|
127
|
+
};
|
|
@@ -16,6 +16,7 @@ import { isOptionInterfaceUiType } from './optionUiTypes';
|
|
|
16
16
|
import { getListElementValue, getOptionsFromRequiredGroups } from './options';
|
|
17
17
|
import { IProviderType, TVariableActionValue, maybeBuildOptionProvider } from './providerValue';
|
|
18
18
|
import { getTemplateKey, getTemplateValue, isValueTemplate } from './templates';
|
|
19
|
+
import { getUnlistedChoiceReason } from './allowedValues';
|
|
19
20
|
|
|
20
21
|
/** The five cron fields, in order, as a schedule hash may name them. */
|
|
21
22
|
const CRON_FIELDS: [string, string][] = [
|
|
@@ -309,6 +310,21 @@ export const _validateField = (
|
|
|
309
310
|
}
|
|
310
311
|
}
|
|
311
312
|
|
|
313
|
+
// A value that is not one of the field's fixed choices is INVALID — never
|
|
314
|
+
// erased. The form used to drop such a value when the choices arrived, and
|
|
315
|
+
// three times the dropped value was a real one (a document naming a choice,
|
|
316
|
+
// a bare-declared choice, a value whose choices had not loaded yet) that the
|
|
317
|
+
// emptied form then saved. Keeping it and saying why it cannot be submitted
|
|
318
|
+
// leaves the author to decide. Templates and expression values returned
|
|
319
|
+
// above; `allowed_values: []` and creatable choices are not judged. An
|
|
320
|
+
// `expression` is never judged either: the expression branch above recurses
|
|
321
|
+
// here with the field's schema (choices included) and the AST as the value.
|
|
322
|
+
const unlistedChoiceReason =
|
|
323
|
+
type === 'expression' ? undefined : getUnlistedChoiceReason(value, field);
|
|
324
|
+
if (unlistedChoiceReason) {
|
|
325
|
+
return invalidResult(unlistedChoiceReason);
|
|
326
|
+
}
|
|
327
|
+
|
|
312
328
|
// An interface type names another Qorus object by its name, so a non-empty
|
|
313
329
|
// string is the whole contract. `connection` is the exception: it carries
|
|
314
330
|
// enablement and authentication state of its own, checked below.
|
package/src/utils/fetch.ts
CHANGED
|
@@ -12,6 +12,10 @@ export interface IReqraftFetchResponse<T> {
|
|
|
12
12
|
data: T;
|
|
13
13
|
ok: boolean;
|
|
14
14
|
code?: number;
|
|
15
|
+
/**
|
|
16
|
+
* Set on every non-ok response: the HTTP reason phrase, or `HTTP <status>`
|
|
17
|
+
* when there is none (always the case over HTTP/2).
|
|
18
|
+
*/
|
|
15
19
|
error?: any;
|
|
16
20
|
/**
|
|
17
21
|
* The parsed error body on a non-ok response, when the server sent JSON.
|
|
@@ -335,7 +339,12 @@ export async function query<T>({
|
|
|
335
339
|
data: requestData.data,
|
|
336
340
|
ok: false,
|
|
337
341
|
code: requestData.status,
|
|
338
|
-
|
|
342
|
+
// Never empty: HTTP/2 has no reason phrase, so `statusText` is always ''
|
|
343
|
+
// there, and an empty `error` reads as "no error" to every caller that
|
|
344
|
+
// tests it for truthiness - `useFetch` consumers then saw a failed request
|
|
345
|
+
// as one still loading, forever (a 403 left a dashboard panel on its
|
|
346
|
+
// skeleton).
|
|
347
|
+
error: requestData.statusText || `HTTP ${requestData.status}`,
|
|
339
348
|
// Only when the body really was JSON: `data` is `{}` for a non-JSON body,
|
|
340
349
|
// and an empty object masquerading as a parsed error tells a caller
|
|
341
350
|
// nothing while looking like it did.
|