@qoretechnologies/reqraft 0.10.61 → 0.10.62-pr.137.g86641aa
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/dist/components/dpqlEditor/DpqlEditor.d.ts.map +1 -1
- package/dist/components/dpqlEditor/DpqlEditor.js +8 -3
- package/dist/components/dpqlEditor/DpqlEditor.js.map +1 -1
- package/dist/components/dpqlEditor/types.d.ts +5 -0
- package/dist/components/dpqlEditor/types.d.ts.map +1 -1
- package/dist/components/form/engine/CompactRow.d.ts.map +1 -1
- package/dist/components/form/engine/CompactRow.js +17 -8
- package/dist/components/form/engine/CompactRow.js.map +1 -1
- package/dist/components/form/engine/FormEngine.d.ts.map +1 -1
- package/dist/components/form/engine/FormEngine.js +65 -15
- 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 +12 -1
- package/dist/components/form/engine/OptionFieldMessages.js.map +1 -1
- package/dist/components/form/engine/compactRowContext.d.ts +2 -0
- package/dist/components/form/engine/compactRowContext.d.ts.map +1 -1
- package/dist/components/form/engine/compactRowContext.js.map +1 -1
- package/dist/components/form/engine/readFirst.d.ts.map +1 -1
- package/dist/components/form/engine/readFirst.js +5 -1
- package/dist/components/form/engine/readFirst.js.map +1 -1
- package/dist/components/form/expressions/ExpressionField.d.ts +21 -1
- package/dist/components/form/expressions/ExpressionField.d.ts.map +1 -1
- package/dist/components/form/expressions/ExpressionField.js +72 -14
- package/dist/components/form/expressions/ExpressionField.js.map +1 -1
- package/dist/components/form/expressions/builder/index.d.ts.map +1 -1
- package/dist/components/form/expressions/builder/index.js +16 -3
- package/dist/components/form/expressions/builder/index.js.map +1 -1
- package/dist/components/form/expressions/expressionOperands.d.ts +16 -0
- package/dist/components/form/expressions/expressionOperands.d.ts.map +1 -0
- package/dist/components/form/expressions/expressionOperands.js +97 -0
- package/dist/components/form/expressions/expressionOperands.js.map +1 -0
- package/dist/components/form/expressions/mockExpressions.d.ts.map +1 -1
- package/dist/components/form/expressions/mockExpressions.js +15 -0
- package/dist/components/form/expressions/mockExpressions.js.map +1 -1
- package/dist/components/form/expressions/renderExpressionToText.d.ts +2 -0
- package/dist/components/form/expressions/renderExpressionToText.d.ts.map +1 -1
- package/dist/components/form/expressions/renderExpressionToText.js +24 -5
- package/dist/components/form/expressions/renderExpressionToText.js.map +1 -1
- package/dist/components/form/expressions/textOfExpression.d.ts +18 -0
- package/dist/components/form/expressions/textOfExpression.d.ts.map +1 -0
- package/dist/components/form/expressions/textOfExpression.js +37 -0
- package/dist/components/form/expressions/textOfExpression.js.map +1 -0
- package/dist/components/form/expressions/useRenderExpression.d.ts.map +1 -1
- package/dist/components/form/expressions/useRenderExpression.js +7 -7
- package/dist/components/form/expressions/useRenderExpression.js.map +1 -1
- package/dist/components/form/fields/rich-text/RichText.d.ts +8 -1
- package/dist/components/form/fields/rich-text/RichText.d.ts.map +1 -1
- package/dist/components/form/fields/rich-text/RichText.js +10 -10
- package/dist/components/form/fields/rich-text/RichText.js.map +1 -1
- package/dist/components/form/fields/template/TemplateField.d.ts +6 -0
- package/dist/components/form/fields/template/TemplateField.d.ts.map +1 -1
- package/dist/components/form/fields/template/TemplateField.js +280 -55
- package/dist/components/form/fields/template/TemplateField.js.map +1 -1
- package/dist/components/form/fields/template/writtenAsText.d.ts +57 -0
- package/dist/components/form/fields/template/writtenAsText.d.ts.map +1 -0
- package/dist/components/form/fields/template/writtenAsText.js +203 -0
- package/dist/components/form/fields/template/writtenAsText.js.map +1 -0
- package/dist/components/form/index.d.ts +2 -0
- package/dist/components/form/index.d.ts.map +1 -1
- package/dist/components/form/index.js +7 -1
- package/dist/components/form/index.js.map +1 -1
- package/dist/components/smartEditor/useLspSession.d.ts +6 -0
- package/dist/components/smartEditor/useLspSession.d.ts.map +1 -1
- package/dist/components/smartEditor/useLspSession.js +7 -6
- package/dist/components/smartEditor/useLspSession.js.map +1 -1
- package/dist/helpers/templates.d.ts +18 -0
- package/dist/helpers/templates.d.ts.map +1 -1
- package/dist/helpers/templates.js +30 -1
- package/dist/helpers/templates.js.map +1 -1
- package/dist/helpers/validations.d.ts.map +1 -1
- package/dist/helpers/validations.js +98 -18
- package/dist/helpers/validations.js.map +1 -1
- package/package.json +1 -1
- package/src/components/dpqlEditor/DpqlEditor.tsx +11 -18
- package/src/components/dpqlEditor/types.ts +5 -0
- package/src/components/form/engine/CompactRow.tsx +31 -10
- package/src/components/form/engine/FormEngine.stories.tsx +656 -18
- package/src/components/form/engine/FormEngine.tsx +64 -22
- package/src/components/form/engine/FormEngineRemote.stories.tsx +5 -0
- package/src/components/form/engine/OptionFieldMessages.tsx +12 -1
- package/src/components/form/engine/compactRowContext.ts +2 -0
- package/src/components/form/engine/readFirst.ts +7 -1
- package/src/components/form/expressions/ExpressionField.stories.tsx +57 -9
- package/src/components/form/expressions/ExpressionField.tsx +179 -60
- package/src/components/form/expressions/builder/ExpressionBuilder.stories.tsx +8 -1
- package/src/components/form/expressions/builder/index.tsx +16 -3
- package/src/components/form/expressions/dpqlMockLanguage.ts +7 -2
- package/src/components/form/expressions/expressionOperands.ts +74 -0
- package/src/components/form/expressions/mockExpressions.ts +16 -4
- package/src/components/form/expressions/renderExpressionToText.ts +26 -9
- package/src/components/form/expressions/textOfExpression.ts +39 -0
- package/src/components/form/expressions/useRenderExpression.ts +9 -1
- package/src/components/form/fields/number/Number.stories.tsx +8 -7
- package/src/components/form/fields/rich-text/RichText.tsx +18 -10
- package/src/components/form/fields/template/TemplateField.stories.tsx +486 -18
- package/src/components/form/fields/template/TemplateField.tsx +506 -62
- package/src/components/form/fields/template/writtenAsText.ts +217 -0
- package/src/components/form/index.tsx +6 -0
- package/src/components/smartEditor/useLspSession.ts +15 -10
- package/src/helpers/templates.ts +35 -0
- package/src/helpers/validations.ts +83 -12
|
@@ -142,18 +142,19 @@ export const TypedFreely: Story = {
|
|
|
142
142
|
docs: {
|
|
143
143
|
description: {
|
|
144
144
|
story:
|
|
145
|
-
'Renders the Number
|
|
145
|
+
'Renders the bare Number editor in integer mode, given no templates, after typing what is not a number: 12abc stays as typed (the form flags it, it is not cut to 12), and a decimal point typed before its digits is kept. A number field that takes templates is TemplateField around this editor: see Components/Form/Template › Number Typed Freely.',
|
|
146
146
|
},
|
|
147
147
|
},
|
|
148
148
|
},
|
|
149
149
|
async play({ args, canvasElement }) {
|
|
150
150
|
const canvas = within(canvasElement);
|
|
151
151
|
const input = canvas.getByLabelText('Number');
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
152
|
+
await userEvent.clear(input);
|
|
153
|
+
await userEvent.type(input, '12abc');
|
|
154
|
+
await expect(input).toHaveValue('12abc');
|
|
155
|
+
await waitFor(() => expect(args.onChange).toHaveBeenLastCalledWith('12abc'), { timeout: 500 });
|
|
156
|
+
await userEvent.clear(input);
|
|
157
|
+
await userEvent.type(input, '10.');
|
|
158
|
+
await expect(input).toHaveValue('10.');
|
|
158
159
|
},
|
|
159
160
|
};
|
|
@@ -48,6 +48,13 @@ export interface IRichTextFormFieldProps extends Omit<
|
|
|
48
48
|
onChange?: (value: string | IReqoreRichTextEditorProps['value']) => void;
|
|
49
49
|
allowTemplates?: boolean;
|
|
50
50
|
templates?: IReqoreFormTemplates;
|
|
51
|
+
/**
|
|
52
|
+
* The catalogue a chip is NAMED from, when it is wider than the `templates` offered: a typed field offers
|
|
53
|
+
* only the fields of its type, but a chip of any field in its value is named as the catalogue names it.
|
|
54
|
+
* Named from the offered list, a field not on it read as its reference's path ("record: pos").
|
|
55
|
+
* Defaults to `templates`.
|
|
56
|
+
*/
|
|
57
|
+
namingTemplates?: IReqoreFormTemplates;
|
|
51
58
|
/**
|
|
52
59
|
* What the value is. `richtext` (the default) stores the editor's document.
|
|
53
60
|
* `text` stores a plain string: each template reference in it is drawn as a
|
|
@@ -116,14 +123,17 @@ export const RichTextFormField = memo(({
|
|
|
116
123
|
onChange,
|
|
117
124
|
allowTemplates,
|
|
118
125
|
templates,
|
|
126
|
+
namingTemplates,
|
|
119
127
|
valueFormat = 'richtext',
|
|
120
128
|
singleLine,
|
|
121
129
|
templateToken,
|
|
122
130
|
...rest
|
|
123
131
|
}: IRichTextFormFieldProps) => {
|
|
124
132
|
const isText = valueFormat === 'text';
|
|
133
|
+
/** What chips are named from: the whole catalogue, not only what is offered (see the prop). */
|
|
134
|
+
const naming = namingTemplates ?? templates;
|
|
125
135
|
const [localValue, setLocalValue] = useState<any>(() =>
|
|
126
|
-
isText ? templateTextToNodes(String(value ?? ''),
|
|
136
|
+
isText ? templateTextToNodes(String(value ?? ''), naming, templateToken) : value
|
|
127
137
|
);
|
|
128
138
|
/* In text mode, the string the editor's document stands for. The value that
|
|
129
139
|
comes back from the parent is usually that same string, and rebuilding the
|
|
@@ -143,7 +153,7 @@ export const RichTextFormField = memo(({
|
|
|
143
153
|
const text = String(value ?? '');
|
|
144
154
|
if (text !== lastTextRef.current) {
|
|
145
155
|
lastTextRef.current = text;
|
|
146
|
-
setLocalValue(templateTextToNodes(text,
|
|
156
|
+
setLocalValue(templateTextToNodes(text, naming, templateToken));
|
|
147
157
|
}
|
|
148
158
|
return;
|
|
149
159
|
}
|
|
@@ -182,7 +192,7 @@ export const RichTextFormField = memo(({
|
|
|
182
192
|
// stopped below. Flattened text is shown as the one line it now is.
|
|
183
193
|
if (singleLine && hasLineBreak(text)) {
|
|
184
194
|
lastTextRef.current = flattenToSingleLine(text);
|
|
185
|
-
setLocalValue(templateTextToNodes(lastTextRef.current,
|
|
195
|
+
setLocalValue(templateTextToNodes(lastTextRef.current, naming, templateToken));
|
|
186
196
|
return;
|
|
187
197
|
}
|
|
188
198
|
lastTextRef.current = text;
|
|
@@ -200,9 +210,7 @@ export const RichTextFormField = memo(({
|
|
|
200
210
|
// show the same strings, so they must be drawn the same way.
|
|
201
211
|
const renderMarkdown = useMarkdownRenderer();
|
|
202
212
|
|
|
203
|
-
const descriptionByValue = useMemo(() => getChipTooltipDescriptions(
|
|
204
|
-
JSON.stringify(templates),
|
|
205
|
-
]);
|
|
213
|
+
const descriptionByValue = useMemo(() => getChipTooltipDescriptions(naming), [JSON.stringify(naming)]);
|
|
206
214
|
|
|
207
215
|
const handleGetTagProps = useCallback(
|
|
208
216
|
(tag: any): IReqoreTagProps => {
|
|
@@ -217,13 +225,13 @@ export const RichTextFormField = memo(({
|
|
|
217
225
|
description on hover. Read at render, so a catalogue that arrives
|
|
218
226
|
after the value still names it. */
|
|
219
227
|
if (isText && tagValue.startsWith('$')) {
|
|
220
|
-
const { item } = describeTemplateReference(
|
|
228
|
+
const { item } = describeTemplateReference(naming, tagValue);
|
|
221
229
|
const metadata = item?.metadata as TTemplateMeta | undefined;
|
|
222
230
|
return {
|
|
223
231
|
icon: 'ExchangeDollarLine',
|
|
224
232
|
leftIconProps: { image: metadata?.image },
|
|
225
|
-
label: templateChipLabel(
|
|
226
|
-
tooltip: templateTooltip(
|
|
233
|
+
label: templateChipLabel(naming, tagValue),
|
|
234
|
+
tooltip: templateTooltip(naming, tagValue),
|
|
227
235
|
...getTemplateTagStyle(metadata),
|
|
228
236
|
};
|
|
229
237
|
}
|
|
@@ -269,7 +277,7 @@ export const RichTextFormField = memo(({
|
|
|
269
277
|
|
|
270
278
|
return {};
|
|
271
279
|
},
|
|
272
|
-
[descriptionByValue, renderMarkdown, isText,
|
|
280
|
+
[descriptionByValue, renderMarkdown, isText, naming]
|
|
273
281
|
);
|
|
274
282
|
|
|
275
283
|
const handleKeyDown = useCallback(
|