@qoretechnologies/reqraft 0.10.53 → 0.10.54-pr.115.ge2d364c
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/.claude/CLAUDE.md +25 -0
- package/.tasks/INDEX.md +1 -0
- package/.tasks/STORY_NETWORK_ISOLATION.md +98 -0
- package/README.md +1 -1
- package/design/FORM_ENGINE_EXPRESSIONS.md +110 -0
- package/design/RENDER_EXPRESSION_TRANSPORT.md +18 -0
- package/dist/components/dpqlEditor/dpqlProbe.d.ts +37 -0
- package/dist/components/dpqlEditor/dpqlProbe.d.ts.map +1 -0
- package/dist/components/dpqlEditor/dpqlProbe.js +203 -0
- package/dist/components/dpqlEditor/dpqlProbe.js.map +1 -0
- package/dist/components/dpqlEditor/index.d.ts +4 -0
- package/dist/components/dpqlEditor/index.d.ts.map +1 -1
- package/dist/components/dpqlEditor/index.js +5 -1
- package/dist/components/dpqlEditor/index.js.map +1 -1
- package/dist/components/dpqlEditor/types.d.ts +29 -2
- package/dist/components/dpqlEditor/types.d.ts.map +1 -1
- package/dist/components/dpqlEditor/useDpqlProbe.d.ts +4 -0
- package/dist/components/dpqlEditor/useDpqlProbe.d.ts.map +1 -0
- package/dist/components/dpqlEditor/useDpqlProbe.js +29 -0
- package/dist/components/dpqlEditor/useDpqlProbe.js.map +1 -0
- package/dist/components/dpqlEditor/useDpqlSession.d.ts +5 -2
- package/dist/components/dpqlEditor/useDpqlSession.d.ts.map +1 -1
- package/dist/components/dpqlEditor/useDpqlSession.js +8 -2
- package/dist/components/dpqlEditor/useDpqlSession.js.map +1 -1
- package/dist/components/form/engine/CompactRow.d.ts.map +1 -1
- package/dist/components/form/engine/CompactRow.js +186 -21
- package/dist/components/form/engine/CompactRow.js.map +1 -1
- package/dist/components/form/engine/CompactToolbar.d.ts.map +1 -1
- package/dist/components/form/engine/CompactToolbar.js +5 -2
- package/dist/components/form/engine/CompactToolbar.js.map +1 -1
- package/dist/components/form/engine/FormEngine.d.ts +159 -11
- package/dist/components/form/engine/FormEngine.d.ts.map +1 -1
- package/dist/components/form/engine/FormEngine.js +376 -75
- package/dist/components/form/engine/FormEngine.js.map +1 -1
- package/dist/components/form/engine/FormFieldsSkeleton.d.ts +48 -0
- package/dist/components/form/engine/FormFieldsSkeleton.d.ts.map +1 -0
- package/dist/components/form/engine/FormFieldsSkeleton.js +38 -0
- package/dist/components/form/engine/FormFieldsSkeleton.js.map +1 -0
- package/dist/components/form/engine/OptionFieldMessages.d.ts +17 -2
- package/dist/components/form/engine/OptionFieldMessages.d.ts.map +1 -1
- package/dist/components/form/engine/OptionFieldMessages.js +61 -11
- package/dist/components/form/engine/OptionFieldMessages.js.map +1 -1
- package/dist/components/form/engine/_structuredData/SchemaDataView.d.ts.map +1 -1
- package/dist/components/form/engine/_structuredData/SchemaDataView.js +7 -1
- package/dist/components/form/engine/_structuredData/SchemaDataView.js.map +1 -1
- package/dist/components/form/engine/compactToolbarContext.d.ts +1 -0
- package/dist/components/form/engine/compactToolbarContext.d.ts.map +1 -1
- package/dist/components/form/engine/readFirst.d.ts +42 -1
- package/dist/components/form/engine/readFirst.d.ts.map +1 -1
- package/dist/components/form/engine/readFirst.js +74 -7
- package/dist/components/form/engine/readFirst.js.map +1 -1
- package/dist/components/form/engine/rendererTypes.d.ts +13 -0
- package/dist/components/form/engine/rendererTypes.d.ts.map +1 -1
- package/dist/components/form/engine/rendererTypes.js.map +1 -1
- package/dist/components/form/engine/rowMenuContext.d.ts +78 -0
- package/dist/components/form/engine/rowMenuContext.d.ts.map +1 -0
- package/dist/components/form/engine/rowMenuContext.js +103 -0
- package/dist/components/form/engine/rowMenuContext.js.map +1 -0
- package/dist/components/form/engine/typeChoices.d.ts +37 -0
- package/dist/components/form/engine/typeChoices.d.ts.map +1 -0
- package/dist/components/form/engine/typeChoices.js +25 -0
- package/dist/components/form/engine/typeChoices.js.map +1 -0
- package/dist/components/form/expressions/ExpressionField.d.ts +7 -1
- package/dist/components/form/expressions/ExpressionField.d.ts.map +1 -1
- package/dist/components/form/expressions/ExpressionField.js +181 -33
- package/dist/components/form/expressions/ExpressionField.js.map +1 -1
- package/dist/components/form/expressions/argumentPresence.d.ts +97 -0
- package/dist/components/form/expressions/argumentPresence.d.ts.map +1 -0
- package/dist/components/form/expressions/argumentPresence.js +203 -0
- package/dist/components/form/expressions/argumentPresence.js.map +1 -0
- package/dist/components/form/expressions/builder/argumentLabel.d.ts.map +1 -1
- package/dist/components/form/expressions/builder/argumentLabel.js +9 -4
- package/dist/components/form/expressions/builder/argumentLabel.js.map +1 -1
- package/dist/components/form/expressions/builder/index.d.ts +15 -2
- package/dist/components/form/expressions/builder/index.d.ts.map +1 -1
- package/dist/components/form/expressions/builder/index.js +19 -57
- package/dist/components/form/expressions/builder/index.js.map +1 -1
- package/dist/components/form/expressions/dpqlMockLsp.d.ts +17 -0
- package/dist/components/form/expressions/dpqlMockLsp.d.ts.map +1 -1
- package/dist/components/form/expressions/dpqlMockLsp.js +75 -9
- package/dist/components/form/expressions/dpqlMockLsp.js.map +1 -1
- package/dist/components/form/expressions/renderExpressionToText.d.ts.map +1 -1
- package/dist/components/form/expressions/renderExpressionToText.js +94 -19
- package/dist/components/form/expressions/renderExpressionToText.js.map +1 -1
- package/dist/components/form/fields/Field.d.ts.map +1 -1
- package/dist/components/form/fields/Field.js +3 -1
- package/dist/components/form/fields/Field.js.map +1 -1
- package/dist/components/form/fields/allowed-values/AllowedValues.d.ts +11 -1
- package/dist/components/form/fields/allowed-values/AllowedValues.d.ts.map +1 -1
- package/dist/components/form/fields/allowed-values/AllowedValues.js +14 -2
- package/dist/components/form/fields/allowed-values/AllowedValues.js.map +1 -1
- package/dist/components/form/fields/auto/AutoFormField.d.ts.map +1 -1
- package/dist/components/form/fields/auto/AutoFormField.js +13 -2
- package/dist/components/form/fields/auto/AutoFormField.js.map +1 -1
- package/dist/components/form/fields/rich-text/RichText.d.ts +11 -0
- package/dist/components/form/fields/rich-text/RichText.d.ts.map +1 -1
- package/dist/components/form/fields/rich-text/RichText.js +84 -5
- package/dist/components/form/fields/rich-text/RichText.js.map +1 -1
- package/dist/components/form/fields/template/ReadOnlyTemplateTag.d.ts +2 -1
- package/dist/components/form/fields/template/ReadOnlyTemplateTag.d.ts.map +1 -1
- package/dist/components/form/fields/template/ReadOnlyTemplateTag.js +3 -2
- package/dist/components/form/fields/template/ReadOnlyTemplateTag.js.map +1 -1
- package/dist/components/form/fields/template/TemplateField.d.ts +31 -1
- package/dist/components/form/fields/template/TemplateField.d.ts.map +1 -1
- package/dist/components/form/fields/template/TemplateField.js +507 -40
- package/dist/components/form/fields/template/TemplateField.js.map +1 -1
- package/dist/components/form/index.d.ts +1 -0
- package/dist/components/form/index.d.ts.map +1 -1
- package/dist/components/form/index.js +1 -0
- package/dist/components/form/index.js.map +1 -1
- package/dist/components/smartEditor/__fixtures__/mockLspServer.d.ts +1 -0
- package/dist/components/smartEditor/__fixtures__/mockLspServer.d.ts.map +1 -1
- package/dist/components/smartEditor/__fixtures__/mockLspServer.js +6 -1
- package/dist/components/smartEditor/__fixtures__/mockLspServer.js.map +1 -1
- package/dist/helpers/dpqlDetection.d.ts +58 -0
- package/dist/helpers/dpqlDetection.d.ts.map +1 -0
- package/dist/helpers/dpqlDetection.js +164 -0
- package/dist/helpers/dpqlDetection.js.map +1 -0
- package/dist/helpers/optionUiTypes.d.ts +1 -1
- package/dist/helpers/options.d.ts +37 -0
- package/dist/helpers/options.d.ts.map +1 -1
- package/dist/helpers/options.js +78 -1
- package/dist/helpers/options.js.map +1 -1
- package/dist/helpers/templateItems.d.ts +47 -0
- package/dist/helpers/templateItems.d.ts.map +1 -0
- package/dist/helpers/templateItems.js +88 -0
- package/dist/helpers/templateItems.js.map +1 -0
- package/dist/helpers/templates.d.ts +21 -0
- package/dist/helpers/templates.d.ts.map +1 -1
- package/dist/helpers/templates.js +49 -3
- package/dist/helpers/templates.js.map +1 -1
- package/dist/helpers/validations.d.ts.map +1 -1
- package/dist/helpers/validations.js +56 -9
- package/dist/helpers/validations.js.map +1 -1
- package/dist/hooks/useArgSchema.d.ts +2 -1
- package/dist/hooks/useArgSchema.d.ts.map +1 -1
- package/dist/hooks/useFetch/useFetch.d.ts +3 -1
- package/dist/hooks/useFetch/useFetch.d.ts.map +1 -1
- package/dist/hooks/useFetch/useFetch.js +47 -9
- package/dist/hooks/useFetch/useFetch.js.map +1 -1
- package/dist/hooks/useTemplates.d.ts +20 -0
- package/dist/hooks/useTemplates.d.ts.map +1 -1
- package/dist/hooks/useTemplates.js +34 -2
- package/dist/hooks/useTemplates.js.map +1 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -1
- package/dist/index.js.map +1 -1
- package/dist/stories/storyNetwork.d.ts +36 -0
- package/dist/stories/storyNetwork.d.ts.map +1 -0
- package/dist/stories/storyNetwork.js +82 -0
- package/dist/stories/storyNetwork.js.map +1 -0
- package/dist/utils/fetch.d.ts +151 -1
- package/dist/utils/fetch.d.ts.map +1 -1
- package/dist/utils/fetch.js +256 -44
- package/dist/utils/fetch.js.map +1 -1
- package/dist/utils/lspClient.d.ts +6 -0
- package/dist/utils/lspClient.d.ts.map +1 -1
- package/dist/utils/lspClient.js +62 -11
- package/dist/utils/lspClient.js.map +1 -1
- package/dist/utils/websocket.d.ts +6 -0
- package/dist/utils/websocket.d.ts.map +1 -1
- package/dist/utils/websocket.js +15 -7
- package/dist/utils/websocket.js.map +1 -1
- package/package.json +2 -2
- package/src/components/dpqlEditor/DpqlEditor.stories.tsx +0 -2
- package/src/components/dpqlEditor/dpqlProbe.ts +165 -0
- package/src/components/dpqlEditor/index.ts +4 -0
- package/src/components/dpqlEditor/types.ts +26 -2
- package/src/components/dpqlEditor/useDpqlProbe.ts +33 -0
- package/src/components/dpqlEditor/useDpqlSession.ts +20 -4
- package/src/components/form/engine/CompactRow.tsx +231 -11
- package/src/components/form/engine/CompactToolbar.tsx +10 -3
- package/src/components/form/engine/FormEngine.stories.tsx +331 -30
- package/src/components/form/engine/FormEngine.tsx +504 -87
- package/src/components/form/engine/FormFieldsSkeleton.tsx +76 -0
- package/src/components/form/engine/OptionFieldMessages.tsx +89 -11
- package/src/components/form/engine/_structuredData/SchemaDataView.tsx +11 -0
- package/src/components/form/engine/compactToolbarContext.ts +1 -1
- package/src/components/form/engine/readFirst.ts +86 -7
- package/src/components/form/engine/rendererTypes.ts +12 -0
- package/src/components/form/engine/rowMenuContext.ts +159 -0
- package/src/components/form/engine/typeChoices.ts +55 -0
- package/src/components/form/expressions/ExpressionField.stories.tsx +828 -31
- package/src/components/form/expressions/ExpressionField.tsx +234 -29
- package/src/components/form/expressions/argumentPresence.ts +200 -0
- package/src/components/form/expressions/builder/argumentLabel.tsx +10 -4
- package/src/components/form/expressions/builder/index.tsx +31 -75
- package/src/components/form/expressions/dpqlMockLsp.ts +81 -1
- package/src/components/form/expressions/renderExpressionToText.ts +106 -17
- package/src/components/form/fields/Field.tsx +3 -2
- package/src/components/form/fields/allowed-values/AllowedValues.tsx +13 -2
- package/src/components/form/fields/auto/AutoFormField.tsx +12 -2
- package/src/components/form/fields/rich-text/RichText.tsx +112 -19
- package/src/components/form/fields/template/ReadOnlyTemplateTag.tsx +4 -2
- package/src/components/form/fields/template/TemplateField.tsx +667 -95
- package/src/components/form/index.tsx +1 -0
- package/src/components/log/Log.stories.tsx +2 -1
- package/src/components/smartEditor/__fixtures__/mockLspServer.ts +6 -1
- package/src/helpers/dpqlDetection.ts +209 -0
- package/src/helpers/options.ts +70 -0
- package/src/helpers/templateItems.ts +81 -0
- package/src/helpers/templates.ts +51 -2
- package/src/helpers/validations.ts +59 -9
- package/src/hooks/useFetch/useFetch.stories.tsx +6 -5
- package/src/hooks/useFetch/useFetch.tsx +53 -7
- package/src/hooks/useStorage/useStorage.stories.tsx +2 -1
- package/src/hooks/useTemplates.ts +41 -0
- package/src/hooks/useWebSocket/useWebsocket.stories.tsx +2 -1
- package/src/index.tsx +14 -1
- package/src/stores/currentUser/currentUser.stories.tsx +2 -1
- package/src/stories/storyNetwork.ts +92 -0
- package/src/utils/fetch.ts +311 -21
- package/src/utils/lspClient.ts +68 -11
- package/src/utils/websocket.ts +20 -9
|
@@ -4,10 +4,16 @@ import {
|
|
|
4
4
|
} from '@qoretechnologies/reqore/dist/components/RichTextEditor';
|
|
5
5
|
import { IReqoreFormTemplates } from '@qoretechnologies/reqore/dist/components/Textarea';
|
|
6
6
|
import { IReqoreTagProps } from '@qoretechnologies/reqore/dist/components/Tag';
|
|
7
|
+
import { IReqoreTooltip } from '@qoretechnologies/reqore/dist/types/global';
|
|
7
8
|
import { isEqual, size } from 'lodash';
|
|
8
9
|
import { memo, useCallback, useEffect, useMemo, useState } from 'react';
|
|
9
10
|
import { useDebounce } from 'react-use';
|
|
11
|
+
import {
|
|
12
|
+
renderTemplateItemDescriptions,
|
|
13
|
+
templateItemsToShow,
|
|
14
|
+
} from '../../../../helpers/templateItems';
|
|
10
15
|
import { getTemplateTagStyle } from '../../../../helpers/templates';
|
|
16
|
+
import { useMarkdownRenderer } from '../../../Description/markdownRendererContext';
|
|
11
17
|
|
|
12
18
|
export interface IRichTextFormFieldProps extends Omit<
|
|
13
19
|
IReqoreRichTextEditorProps,
|
|
@@ -19,6 +25,46 @@ export interface IRichTextFormFieldProps extends Omit<
|
|
|
19
25
|
templates?: IReqoreFormTemplates;
|
|
20
26
|
}
|
|
21
27
|
|
|
28
|
+
/**
|
|
29
|
+
* What each offered template value is FOR, keyed by the value itself.
|
|
30
|
+
*
|
|
31
|
+
* Built from the templates a field was already given rather than from the
|
|
32
|
+
* chip's metadata, which carries only `image` / `displayName` / style flags —
|
|
33
|
+
* putting a description there would mean threading one through every producer
|
|
34
|
+
* of a template list.
|
|
35
|
+
*
|
|
36
|
+
* Exported so the mapping is assertable without rendering a Slate editor.
|
|
37
|
+
*/
|
|
38
|
+
export const getChipTooltipDescriptions = (
|
|
39
|
+
templates?: IReqoreFormTemplates
|
|
40
|
+
): Record<string, string> => {
|
|
41
|
+
const out: Record<string, string> = {};
|
|
42
|
+
|
|
43
|
+
/* BOTH shapes, because this list arrives in either one. A picker's items are
|
|
44
|
+
normally grouped by category, but a LONE category is opened onto its values
|
|
45
|
+
where the templates are resolved (`templateItemsToShow`), so a field with
|
|
46
|
+
one category hands down a FLAT list of leaves. Walking only groups made
|
|
47
|
+
that the common case and silently lost every tooltip on it — one category
|
|
48
|
+
is the ordinary shape for a field, not the exception.
|
|
49
|
+
|
|
50
|
+
Recursive rather than two-level: a leaf is recognised by carrying a value
|
|
51
|
+
rather than by its depth, so a deeper catalogue works too. */
|
|
52
|
+
const collect = (items: any[] | undefined): void => {
|
|
53
|
+
items?.forEach((item: any) => {
|
|
54
|
+
const value = typeof item?.value === 'object' ? item?.value?.value : item?.value;
|
|
55
|
+
const description = item?.description ?? item?.short_desc;
|
|
56
|
+
if (typeof value === 'string' && typeof description === 'string' && description) {
|
|
57
|
+
out[value] = description;
|
|
58
|
+
}
|
|
59
|
+
collect(item?.items);
|
|
60
|
+
});
|
|
61
|
+
};
|
|
62
|
+
|
|
63
|
+
collect((templates as any)?.items);
|
|
64
|
+
|
|
65
|
+
return out;
|
|
66
|
+
};
|
|
67
|
+
|
|
22
68
|
export const RichTextFormField = memo(({
|
|
23
69
|
value,
|
|
24
70
|
onChange,
|
|
@@ -57,26 +103,65 @@ export const RichTextFormField = memo(({
|
|
|
57
103
|
setLocalValue(val);
|
|
58
104
|
};
|
|
59
105
|
|
|
60
|
-
|
|
61
|
-
|
|
106
|
+
// One renderer for both surfaces below — the chip's hover and the picker rows
|
|
107
|
+
// show the same strings, so they must be drawn the same way.
|
|
108
|
+
const renderMarkdown = useMarkdownRenderer();
|
|
62
109
|
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
110
|
+
const descriptionByValue = useMemo(() => getChipTooltipDescriptions(templates), [
|
|
111
|
+
JSON.stringify(templates),
|
|
112
|
+
]);
|
|
66
113
|
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
...getTemplateTagStyle(tag.metadata),
|
|
75
|
-
};
|
|
76
|
-
}
|
|
114
|
+
const handleGetTagProps = useCallback(
|
|
115
|
+
(tag: any): IReqoreTagProps => {
|
|
116
|
+
const tagValue = tag.value?.toString();
|
|
117
|
+
|
|
118
|
+
if (!tagValue) {
|
|
119
|
+
return {};
|
|
120
|
+
}
|
|
77
121
|
|
|
78
|
-
|
|
79
|
-
|
|
122
|
+
if (tagValue.startsWith('$')) {
|
|
123
|
+
return {
|
|
124
|
+
icon: 'ExchangeDollarLine',
|
|
125
|
+
leftIconProps: {
|
|
126
|
+
image: tag.metadata?.image,
|
|
127
|
+
},
|
|
128
|
+
labelKey: tag.metadata?.displayName,
|
|
129
|
+
/* Hovering a chip says what the value IS, not how it is spelled.
|
|
130
|
+
Reqore otherwise falls back to the tag's own value, so a chip
|
|
131
|
+
reading "result" reported `$.result` on hover — the reference the
|
|
132
|
+
author already chose, restating the label in engine syntax instead
|
|
133
|
+
of telling them anything. The path stays discoverable in the
|
|
134
|
+
field's help and in the picker row for an unlabelled value. */
|
|
135
|
+
/* Drawn, for the same reason the picker row is: this description is
|
|
136
|
+
the SAME string the row shows, so leaving it raw here would print
|
|
137
|
+
the punctuation the row no longer prints. A tooltip's `content`
|
|
138
|
+
takes a node, and without a host renderer it stays the plain
|
|
139
|
+
string it always was. */
|
|
140
|
+
/* Drawn, for the same reason the picker row is: this is the SAME
|
|
141
|
+
string the row shows, so leaving it raw here would print the
|
|
142
|
+
punctuation the row no longer prints. A drawn description travels
|
|
143
|
+
as the tooltip's `content` — the prop itself is `string |
|
|
144
|
+
IReqoreTooltip`, and only the object form takes a node. Without a
|
|
145
|
+
host renderer it stays the plain string it always was. */
|
|
146
|
+
tooltip:
|
|
147
|
+
descriptionByValue[tagValue] ?
|
|
148
|
+
renderMarkdown ?
|
|
149
|
+
{
|
|
150
|
+
content: renderMarkdown({
|
|
151
|
+
value: descriptionByValue[tagValue],
|
|
152
|
+
compact: true,
|
|
153
|
+
}) as IReqoreTooltip['content'],
|
|
154
|
+
}
|
|
155
|
+
: descriptionByValue[tagValue]
|
|
156
|
+
: undefined,
|
|
157
|
+
...getTemplateTagStyle(tag.metadata),
|
|
158
|
+
};
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
return {};
|
|
162
|
+
},
|
|
163
|
+
[descriptionByValue, renderMarkdown]
|
|
164
|
+
);
|
|
80
165
|
|
|
81
166
|
const tags = useMemo<IReqoreRichTextEditorProps['tags']>((): IReqoreRichTextEditorProps['tags'] => {
|
|
82
167
|
const _tags: IReqoreRichTextEditorProps['tags'] = {};
|
|
@@ -87,12 +172,20 @@ export const RichTextFormField = memo(({
|
|
|
87
172
|
label: 'Templates',
|
|
88
173
|
flat: false,
|
|
89
174
|
description: 'Universal values that can be used in multiple places',
|
|
90
|
-
|
|
175
|
+
/* The in-editor list already nests everything under "Templates", so a
|
|
176
|
+
lone category makes the author drill through TWO headers to reach
|
|
177
|
+
the only values on offer. Hoist it. */
|
|
178
|
+
/* Drawn here, at the hand-off to Reqore. A description is prose written
|
|
179
|
+
in the same markdown as every other description this package shows,
|
|
180
|
+
and printing its punctuation at the reader was the last surface still
|
|
181
|
+
doing that. Never made further up: the list is a `JSON.stringify`
|
|
182
|
+
memo key in `TemplateField`. */
|
|
183
|
+
items: renderTemplateItemDescriptions(templateItemsToShow(templates?.items), renderMarkdown),
|
|
91
184
|
};
|
|
92
185
|
}
|
|
93
186
|
|
|
94
187
|
return _tags;
|
|
95
|
-
}, [allowTemplates, templates]);
|
|
188
|
+
}, [allowTemplates, templates, renderMarkdown]);
|
|
96
189
|
|
|
97
190
|
const formattedValue: IReqoreRichTextEditorProps['value'] =
|
|
98
191
|
typeof localValue !== 'object' ? [{ type: 'paragraph', children: [{ text: String(localValue ?? '') }] }]
|
|
@@ -5,6 +5,7 @@ import { memo } from 'react';
|
|
|
5
5
|
import {
|
|
6
6
|
getTemplateTagStyle,
|
|
7
7
|
describeTemplateReference,
|
|
8
|
+
templateTooltip,
|
|
8
9
|
TTemplateMeta,
|
|
9
10
|
} from '../../../../helpers/templates';
|
|
10
11
|
|
|
@@ -18,7 +19,8 @@ export interface IReadOnlyTemplateTagProps {
|
|
|
18
19
|
|
|
19
20
|
/**
|
|
20
21
|
* The read-only representation of a selected template — a picker-shaped chip:
|
|
21
|
-
* the `$`-dollar icon, the resolved display name (
|
|
22
|
+
* the `$`-dollar icon, the resolved display name (and what the value IS in the
|
|
23
|
+
* tooltip, not the reference that names it), the
|
|
22
24
|
* app image when present, coloured by qorus-ide's scheme (info / qorus purple /
|
|
23
25
|
* success — see `getTemplateTagStyle`). Shared by `TemplateField`'s disabled
|
|
24
26
|
* branch and the compact read-first row so a template reads identically wherever
|
|
@@ -34,7 +36,7 @@ export const ReadOnlyTemplateTag = memo(
|
|
|
34
36
|
icon='ExchangeDollarLine'
|
|
35
37
|
leftIconProps={{ image: metadata?.image }}
|
|
36
38
|
label={label}
|
|
37
|
-
tooltip={value}
|
|
39
|
+
tooltip={templateTooltip(templates, value)}
|
|
38
40
|
{...getTemplateTagStyle(metadata)}
|
|
39
41
|
/>
|
|
40
42
|
</ReqoreTagGroup>
|