@topconsultnpm/sdkui-react 6.22.0-dev4.2 → 6.22.0-dev4.20
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/lib/components/NewComponents/ContextMenu/styles.d.ts +43 -45
- package/lib/components/NewComponents/FloatingMenuBar/styles.d.ts +60 -67
- package/lib/components/base/Styled.d.ts +77 -93
- package/lib/components/base/TMAlert.d.ts +2 -1
- package/lib/components/base/TMAlert.js +7 -6
- package/lib/components/base/TMCounterBar.d.ts +2 -2
- package/lib/components/base/TMCounterContainer.d.ts +4 -3
- package/lib/components/base/TMCounterContainer.js +16 -1
- package/lib/components/base/TMCustomButton.d.ts +1 -1
- package/lib/components/base/TMDataGrid.js +24 -4
- package/lib/components/base/TMDataGridExportForm.d.ts +1 -2
- package/lib/components/base/TMFileManager.d.ts +1 -2
- package/lib/components/base/TMFileManagerDataGridView.d.ts +1 -2
- package/lib/components/base/TMFileManagerThumbnailItems.d.ts +1 -1
- package/lib/components/base/TMFileManagerThumbnailsView.d.ts +1 -1
- package/lib/components/base/TMFileManagerUtils.d.ts +6 -4
- package/lib/components/base/TMLayout.d.ts +4 -4
- package/lib/components/base/TMList.d.ts +1 -2
- package/lib/components/base/TMListView.d.ts +1 -1
- package/lib/components/base/TMSpinner.d.ts +2 -3
- package/lib/components/base/TMTab.d.ts +3 -4
- package/lib/components/base/TMTabControl.js +208 -208
- package/lib/components/base/TMTooltip.d.ts +1 -1
- package/lib/components/base/TMTreeView.d.ts +8 -14
- package/lib/components/base/TMUserAvatar.d.ts +1 -2
- package/lib/components/base/TMVilViewer.d.ts +1 -2
- package/lib/components/base/TMWaitPanel.d.ts +2 -3
- package/lib/components/base/waitPanel/TMWaitPanelManager.d.ts +16 -6
- package/lib/components/base/waitPanel/TMWaitPanelManager.js +55 -2
- package/lib/components/base/waitPanel/TMWaitPanelView.d.ts +6 -2
- package/lib/components/base/waitPanel/TMWaitPanelView.js +75 -3
- package/lib/components/choosers/TMDistinctValues.js +3 -3
- package/lib/components/choosers/TMDynDataListItemChooser.d.ts +1 -1
- package/lib/components/choosers/TMInvoiceRetrieveFormats.d.ts +1 -2
- package/lib/components/choosers/TMOrderRetrieveFormats.d.ts +1 -2
- package/lib/components/choosers/TMQuickSearchInfo.d.ts +1 -2
- package/lib/components/choosers/TMRelationChooser.d.ts +3 -3
- package/lib/components/choosers/TMUserChooser.d.ts +3 -2
- package/lib/components/choosers/TMUserChooser.js +3 -3
- package/lib/components/editors/TMEditorStyled.d.ts +42 -20
- package/lib/components/editors/TMFormulaEditor.d.ts +1 -1
- package/lib/components/editors/TMHtmlContentDisplay.d.ts +1 -2
- package/lib/components/editors/TMHtmlEditor.d.ts +1 -2
- package/lib/components/editors/TMTreeDropDown.d.ts +1 -1
- package/lib/components/features/assistant/TMHelpOnLineChat.d.ts +0 -1
- package/lib/components/features/assistant/TMHelpOnLineChat.js +8 -161
- package/lib/components/features/assistant/TMToppyDraggableHelpCenter.d.ts +1 -1
- package/lib/components/features/blog/TMBlogCommentForm.d.ts +1 -2
- package/lib/components/features/documents/TMDcmtForm.d.ts +6 -1
- package/lib/components/features/documents/TMDcmtForm.js +42 -7
- package/lib/components/features/documents/TMDcmtFormActionButtons.d.ts +1 -1
- package/lib/components/features/documents/TMDcmtFormActionButtons.js +5 -2
- package/lib/components/features/documents/TMDcmtIcon.d.ts +1 -2
- package/lib/components/features/documents/TMDcmtPreview.d.ts +8 -8
- package/lib/components/features/documents/TMDcmtPreview.js +16 -7
- package/lib/components/features/documents/TMDcmtTasks.d.ts +1 -2
- package/lib/components/features/documents/TMDragDropOverlay.d.ts +1 -1
- package/lib/components/features/documents/TMFileUploader.js +21 -21
- package/lib/components/features/documents/TMMasterDetailDcmts.d.ts +2 -0
- package/lib/components/features/documents/TMMasterDetailDcmts.js +14 -5
- package/lib/components/features/documents/TMMasterInfoFields.d.ts +1 -2
- package/lib/components/features/documents/TMMergeToPdfForm.d.ts +1 -2
- package/lib/components/features/documents/TMMergeToPdfForm.js +5 -4
- package/lib/components/features/documents/TMMultiMasterDetailDcmtsForm.d.ts +1 -2
- package/lib/components/features/documents/TMMultiMasterDetailDcmtsUtils.d.ts +4 -4
- package/lib/components/features/search/TMDcmtCheckoutInfoForm.d.ts +1 -2
- package/lib/components/features/search/TMMetadataOutputForm.d.ts +1 -2
- package/lib/components/features/search/TMMetadataSorterForm.d.ts +1 -2
- package/lib/components/features/search/TMSavedQuerySelector.d.ts +2 -2
- package/lib/components/features/search/TMSearch.d.ts +1 -2
- package/lib/components/features/search/TMSearchQueryPanel.d.ts +3 -9
- package/lib/components/features/search/TMSearchResult.js +121 -91
- package/lib/components/features/search/TMSearchResultFloatingActionButton.d.ts +1 -1
- package/lib/components/features/search/TMSignatureInfoContent.d.ts +1 -2
- package/lib/components/features/search/TMViewHistoryDcmt.d.ts +1 -2
- package/lib/components/features/search/TMViewHistoryDcmt.js +1 -1
- package/lib/components/features/tasks/TMTaskForm.d.ts +1 -1
- package/lib/components/features/tasks/TMTaskFormUtils.d.ts +10 -10
- package/lib/components/features/tasks/TMTasksAgenda.d.ts +1 -1
- package/lib/components/features/tasks/TMTasksCalendar.d.ts +1 -1
- package/lib/components/features/tasks/TMTasksHeader.d.ts +1 -1
- package/lib/components/features/tasks/TMTasksPanelContent.d.ts +1 -1
- package/lib/components/features/tasks/TMTasksUtilsView.d.ts +5 -5
- package/lib/components/features/tasks/TMTasksView.d.ts +1 -1
- package/lib/components/features/tasks/TMTasksView.js +15 -9
- package/lib/components/features/wg/TMWGsCopyMoveForm.d.ts +2 -3
- package/lib/components/features/wg/TMWGsCopyMoveForm.js +8 -4
- package/lib/components/features/workflow/TMWorkflowPopup.d.ts +7 -8
- package/lib/components/features/workflow/TMWorkflowPopup.js +1 -1
- package/lib/components/features/workflow/diagram/WorkitemRecipientsEditor.d.ts +1 -3
- package/lib/components/forms/Login/ChangePasswordInputs.d.ts +1 -3
- package/lib/components/forms/Login/Chooser.d.ts +2 -2
- package/lib/components/forms/TMChooserForm.d.ts +1 -2
- package/lib/components/forms/TMSaveForm.d.ts +4 -4
- package/lib/components/grids/TMBlogAttachments.d.ts +1 -2
- package/lib/components/grids/TMBlogHeader.d.ts +1 -1
- package/lib/components/grids/TMBlogsPost.d.ts +1 -1
- package/lib/components/grids/TMBlogsPost.js +1 -1
- package/lib/components/grids/TMBlogsPostUtils.d.ts +9 -9
- package/lib/components/grids/TMValidationItemsList.d.ts +1 -2
- package/lib/components/layout/panelManager/TMPanelManagerContainer.d.ts +1 -2
- package/lib/components/layout/panelManager/TMPanelManagerContainer.js +12 -12
- package/lib/components/layout/panelManager/TMPanelManagerContext.d.ts +2 -2
- package/lib/components/layout/panelManager/TMPanelManagerLoader.d.ts +1 -2
- package/lib/components/layout/panelManager/TMPanelManagerToolbar.d.ts +6 -5
- package/lib/components/layout/panelManager/TMPanelManagerWithPersistenceProvider.d.ts +2 -2
- package/lib/components/layout/panelManager/TMPanelWrapper.d.ts +2 -2
- package/lib/components/pages/TMPage.d.ts +1 -1
- package/lib/components/pages/TMPage.js +13 -5
- package/lib/components/query/TMQueryEditor.d.ts +10 -14
- package/lib/components/settings/SettingsAppearance.d.ts +1 -2
- package/lib/components/sidebar/TMAboutApp.d.ts +1 -2
- package/lib/components/sidebar/TMCommandsPanel.d.ts +4 -4
- package/lib/components/sidebar/TMHeader.d.ts +3 -3
- package/lib/components/viewers/TMDataListItemViewer.d.ts +2 -3
- package/lib/components/viewers/TMDataUserIdItemViewer.d.ts +2 -3
- package/lib/components/viewers/TMMidViewer.d.ts +2 -2
- package/lib/components/viewers/TMTidViewer.d.ts +2 -2
- package/lib/helper/SDKUI_Globals.d.ts +7 -4
- package/lib/helper/SDKUI_Globals.js +7 -4
- package/lib/helper/SDKUI_Localizator.d.ts +13 -6
- package/lib/helper/SDKUI_Localizator.js +121 -51
- package/lib/helper/TMAppUpdatedModal.d.ts +1 -2
- package/lib/helper/TMAppUpdatedModal.js +93 -93
- package/lib/helper/TMCommandsContextMenu.d.ts +1 -1
- package/lib/helper/TMIcons.d.ts +282 -281
- package/lib/helper/TMIcons.js +4 -1
- package/lib/helper/TMPdfViewer.d.ts +1 -2
- package/lib/helper/TMToppyMessage.d.ts +2 -2
- package/lib/helper/TMUtils.d.ts +4 -10
- package/lib/helper/checkinCheckoutManager.js +2 -3
- package/lib/helper/helpers.d.ts +1 -1
- package/lib/helper/queryHelper.d.ts +15 -2
- package/lib/helper/queryHelper.js +52 -1
- package/lib/hooks/useCaseFlowApprove.js +31 -6
- package/lib/hooks/useCheckInOutOperations.js +2 -3
- package/lib/hooks/useDcmtOperations.js +24 -16
- package/lib/hooks/useDocumentOperations.d.ts +2 -0
- package/lib/hooks/useDocumentOperations.js +7 -7
- package/lib/hooks/useInputDialog.d.ts +1 -2
- package/lib/hooks/useMultiMasterDetailDcmts.js +10 -6
- package/lib/services/caseflow/CaseFlowService.d.ts +33 -3
- package/lib/services/caseflow/CaseFlowService.js +71 -44
- package/lib/services/caseflow/caseFlowNameCache.d.ts +5 -0
- package/lib/services/caseflow/caseFlowNameCache.js +19 -0
- package/lib/services/platform_services.d.ts +2 -3
- package/package.json +69 -69
- package/lib/components/features/assistant/dataset/Designer-Suggested-Questions.json +0 -102
- package/lib/components/features/assistant/dataset/Login-Suggested-Questions.json +0 -32
- package/lib/components/features/assistant/dataset/Surfer-Suggested-Questions.json +0 -102
|
@@ -4,6 +4,12 @@ import { SDKUI_Localizator } from '../../../helper';
|
|
|
4
4
|
import TMWaitPanelView from './TMWaitPanelView';
|
|
5
5
|
const Z_INDEX_BASE = 2147483601;
|
|
6
6
|
const RESOLVED = Promise.resolve();
|
|
7
|
+
/** Accumula un messaggio in testa, tenendo solo quelli visibili nel popover. */
|
|
8
|
+
const pushMessage = (list, message, max) => {
|
|
9
|
+
list.unshift(message);
|
|
10
|
+
if (list.length > max)
|
|
11
|
+
list.length = max;
|
|
12
|
+
};
|
|
7
13
|
const pad2 = (n) => (n < 10 ? '0' + n : String(n));
|
|
8
14
|
/** Formatta una durata in millisecondi come "42s", "3m 07s", "1h 12m". */
|
|
9
15
|
const formatDuration = (ms) => {
|
|
@@ -37,6 +43,11 @@ class TMWaitPanelInstance {
|
|
|
37
43
|
this._error = 0;
|
|
38
44
|
this._secondaryValue = 0;
|
|
39
45
|
this._secondaryMax = 0;
|
|
46
|
+
this._warningMessages = [];
|
|
47
|
+
this._errorMessages = [];
|
|
48
|
+
this.warningMessageTotal = 0;
|
|
49
|
+
this.errorMessageTotal = 0;
|
|
50
|
+
this.messagesDirty = false;
|
|
40
51
|
// Ultimi valori scritti sul DOM: servono a non riscrivere testo identico.
|
|
41
52
|
this.lastPercentText = '';
|
|
42
53
|
this.lastSubtitleText = '';
|
|
@@ -55,8 +66,24 @@ class TMWaitPanelInstance {
|
|
|
55
66
|
this.setTitle = (title) => { this._title = title; this.schedule(); };
|
|
56
67
|
this.setSubtitle = (subtitle) => { this._subtitleOverride = subtitle; this.schedule(); };
|
|
57
68
|
this.ok = (delta = 1) => { this._ok += delta; this.schedule(); };
|
|
58
|
-
this.warning = (delta = 1) => {
|
|
59
|
-
|
|
69
|
+
this.warning = (delta = 1, message) => {
|
|
70
|
+
this._warning += delta;
|
|
71
|
+
if (message) {
|
|
72
|
+
pushMessage(this._warningMessages, message, this.maxVisibleMessages);
|
|
73
|
+
this.warningMessageTotal++;
|
|
74
|
+
this.messagesDirty = true;
|
|
75
|
+
}
|
|
76
|
+
this.schedule();
|
|
77
|
+
};
|
|
78
|
+
this.error = (delta = 1, message) => {
|
|
79
|
+
this._error += delta;
|
|
80
|
+
if (message) {
|
|
81
|
+
pushMessage(this._errorMessages, message, this.maxVisibleMessages);
|
|
82
|
+
this.errorMessageTotal++;
|
|
83
|
+
this.messagesDirty = true;
|
|
84
|
+
}
|
|
85
|
+
this.schedule();
|
|
86
|
+
};
|
|
60
87
|
this.setSecondary = (patch) => {
|
|
61
88
|
if (patch.value !== undefined)
|
|
62
89
|
this._secondaryValue = patch.value;
|
|
@@ -210,12 +237,18 @@ class TMWaitPanelInstance {
|
|
|
210
237
|
this.lastError = this._error;
|
|
211
238
|
nodes.errorValue.textContent = String(this._error);
|
|
212
239
|
}
|
|
240
|
+
if (this.messagesDirty) {
|
|
241
|
+
this.messagesDirty = false;
|
|
242
|
+
this.flushMessages(nodes.warningPopover, nodes.warningList, this._warningMessages, this.warningMessageTotal);
|
|
243
|
+
this.flushMessages(nodes.errorPopover, nodes.errorList, this._errorMessages, this.errorMessageTotal);
|
|
244
|
+
}
|
|
213
245
|
if (nodes.secondaryFill)
|
|
214
246
|
this.flushSecondary(nodes);
|
|
215
247
|
if (this.options.showEta ?? true)
|
|
216
248
|
this.flushEta(nodes, ratio);
|
|
217
249
|
};
|
|
218
250
|
this.options = options;
|
|
251
|
+
this.maxVisibleMessages = Math.max(1, options.maxVisibleMessages ?? 5);
|
|
219
252
|
this._max = options.max ?? 0;
|
|
220
253
|
this._title = options.title ?? '';
|
|
221
254
|
this._secondaryText = options.secondaryText ?? '';
|
|
@@ -256,6 +289,26 @@ class TMWaitPanelInstance {
|
|
|
256
289
|
return template.replace('{{0}}', String(this._value)).replace('{{1}}', String(this._max));
|
|
257
290
|
return this.options.subtitle ?? '';
|
|
258
291
|
}
|
|
292
|
+
/** Riscrive la lista di un popover con gli ultimi messaggi e la riga "... e altri N". Il popover si apre solo se non e' vuoto. */
|
|
293
|
+
flushMessages(popover, list, messages, total) {
|
|
294
|
+
if (total === 0)
|
|
295
|
+
return;
|
|
296
|
+
const visible = messages.length;
|
|
297
|
+
const items = [];
|
|
298
|
+
for (let i = 0; i < visible; i++) {
|
|
299
|
+
const item = document.createElement('li');
|
|
300
|
+
item.textContent = messages[i];
|
|
301
|
+
items.push(item);
|
|
302
|
+
}
|
|
303
|
+
if (total > visible) {
|
|
304
|
+
const more = document.createElement('li');
|
|
305
|
+
more.className = 'tm-wait-panel-more';
|
|
306
|
+
more.textContent = SDKUI_Localizator.AndOthersCount.replace('{{0}}', String(total - visible));
|
|
307
|
+
items.push(more);
|
|
308
|
+
}
|
|
309
|
+
list.replaceChildren(...items);
|
|
310
|
+
popover.dataset.empty = 'false';
|
|
311
|
+
}
|
|
259
312
|
/** Riversa sul DOM la seconda barra. Invocata solo quando la view l'ha renderizzata. */
|
|
260
313
|
flushSecondary(nodes) {
|
|
261
314
|
const ratio = this._secondaryMax > 0 ? Math.min(1, Math.max(0, this._secondaryValue / this._secondaryMax)) : 0;
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
1
|
/** Guscio statico del wait panel: montato una sola volta e mai ri-renderizzato, il manager lo aggiorna via DOM. Le props sono valori iniziali. */
|
|
3
2
|
/** Nodi DOM mutabili di cui il manager ha bisogno per aggiornare il pannello senza React. */
|
|
4
3
|
export interface ITMWaitPanelNodes {
|
|
@@ -13,6 +12,11 @@ export interface ITMWaitPanelNodes {
|
|
|
13
12
|
okValue: HTMLElement;
|
|
14
13
|
warningValue: HTMLElement;
|
|
15
14
|
errorValue: HTMLElement;
|
|
15
|
+
/** Popover delle pill: il manager riempie la lista e toglie `data-empty` al primo messaggio. */
|
|
16
|
+
warningPopover: HTMLElement;
|
|
17
|
+
warningList: HTMLElement;
|
|
18
|
+
errorPopover: HTMLElement;
|
|
19
|
+
errorList: HTMLElement;
|
|
16
20
|
abortButton: HTMLButtonElement | null;
|
|
17
21
|
/** Presenti solo con `showSecondary`: riga di avanzamento dell'operazione di dettaglio. */
|
|
18
22
|
secondaryText: HTMLElement | null;
|
|
@@ -49,5 +53,5 @@ export interface ITMWaitPanelViewProps {
|
|
|
49
53
|
/** Invocato dopo il commit con i nodi DOM da aggiornare imperativamente. */
|
|
50
54
|
onMount?: (nodes: ITMWaitPanelNodes) => void;
|
|
51
55
|
}
|
|
52
|
-
declare const TMWaitPanelView: ({ title, subtitle, cancelable, showEta, showCounters, showSecondary, secondaryText, primaryLabel, secondaryLabel, zIndex, onAbort, onConfirmYes, onConfirmNo, onMount }: ITMWaitPanelViewProps) =>
|
|
56
|
+
declare const TMWaitPanelView: ({ title, subtitle, cancelable, showEta, showCounters, showSecondary, secondaryText, primaryLabel, secondaryLabel, zIndex, onAbort, onConfirmYes, onConfirmNo, onMount }: ITMWaitPanelViewProps) => import("react/jsx-runtime").JSX.Element;
|
|
53
57
|
export default TMWaitPanelView;
|
|
@@ -138,6 +138,36 @@ const StyledPill = styled.span `
|
|
|
138
138
|
|
|
139
139
|
svg { flex: 0 0 auto; }
|
|
140
140
|
`;
|
|
141
|
+
// Fratello della card, non figlio: l'overflow della card lo taglierebbe. Coordinate dell'overlay, calcolate all'apertura.
|
|
142
|
+
const StyledPopover = styled.div `
|
|
143
|
+
display: none;
|
|
144
|
+
position: absolute;
|
|
145
|
+
width: 320px;
|
|
146
|
+
max-width: calc(100% - 24px);
|
|
147
|
+
overflow-y: auto;
|
|
148
|
+
box-sizing: border-box;
|
|
149
|
+
padding: 10px 12px;
|
|
150
|
+
background: #ffffff;
|
|
151
|
+
border-left: 3px solid ${props => props.$accent};
|
|
152
|
+
border-radius: 10px;
|
|
153
|
+
box-shadow: 0 10px 30px rgba(16, 24, 40, 0.22);
|
|
154
|
+
font-size: 12px;
|
|
155
|
+
color: #374151;
|
|
156
|
+
|
|
157
|
+
ul { margin: 6px 0 0 0; padding: 0; list-style: none; }
|
|
158
|
+
li { padding: 4px 0; border-top: 1px solid #eef1f6; overflow-wrap: anywhere; line-height: 1.35; }
|
|
159
|
+
li:first-child { border-top: none; }
|
|
160
|
+
li.tm-wait-panel-more { color: #8a94a6; font-style: italic; }
|
|
161
|
+
`;
|
|
162
|
+
const StyledPopoverTitle = styled.div `
|
|
163
|
+
font-size: 11px;
|
|
164
|
+
font-weight: 700;
|
|
165
|
+
letter-spacing: 0.04em;
|
|
166
|
+
text-transform: uppercase;
|
|
167
|
+
color: ${props => props.$color};
|
|
168
|
+
`;
|
|
169
|
+
/** Tempo per spostare il mouse dalla pill al popover. */
|
|
170
|
+
const POPOVER_HIDE_DELAY_MS = 250;
|
|
141
171
|
const StyledTrack = styled.div `
|
|
142
172
|
margin-top: 12px;
|
|
143
173
|
width: 100%;
|
|
@@ -238,6 +268,14 @@ const TMWaitPanelView = ({ title = '', subtitle = '', cancelable = false, showEt
|
|
|
238
268
|
const okValueRef = useRef(null);
|
|
239
269
|
const warningValueRef = useRef(null);
|
|
240
270
|
const errorValueRef = useRef(null);
|
|
271
|
+
const overlayRef = useRef(null);
|
|
272
|
+
const warningPillRef = useRef(null);
|
|
273
|
+
const errorPillRef = useRef(null);
|
|
274
|
+
const warningPopoverRef = useRef(null);
|
|
275
|
+
const warningListRef = useRef(null);
|
|
276
|
+
const errorPopoverRef = useRef(null);
|
|
277
|
+
const errorListRef = useRef(null);
|
|
278
|
+
const hideTimerRef = useRef();
|
|
241
279
|
const abortRef = useRef(null);
|
|
242
280
|
const secondaryTextRef = useRef(null);
|
|
243
281
|
const secondaryPercentRef = useRef(null);
|
|
@@ -249,6 +287,8 @@ const TMWaitPanelView = ({ title = '', subtitle = '', cancelable = false, showEt
|
|
|
249
287
|
return;
|
|
250
288
|
if (!okValueRef.current || !warningValueRef.current || !errorValueRef.current)
|
|
251
289
|
return;
|
|
290
|
+
if (!warningPopoverRef.current || !warningListRef.current || !errorPopoverRef.current || !errorListRef.current)
|
|
291
|
+
return;
|
|
252
292
|
onMount?.({
|
|
253
293
|
confirm: confirmRef.current,
|
|
254
294
|
title: titleRef.current,
|
|
@@ -260,15 +300,47 @@ const TMWaitPanelView = ({ title = '', subtitle = '', cancelable = false, showEt
|
|
|
260
300
|
okValue: okValueRef.current,
|
|
261
301
|
warningValue: warningValueRef.current,
|
|
262
302
|
errorValue: errorValueRef.current,
|
|
303
|
+
warningPopover: warningPopoverRef.current,
|
|
304
|
+
warningList: warningListRef.current,
|
|
305
|
+
errorPopover: errorPopoverRef.current,
|
|
306
|
+
errorList: errorListRef.current,
|
|
263
307
|
abortButton: abortRef.current,
|
|
264
308
|
secondaryText: secondaryTextRef.current,
|
|
265
309
|
secondaryPercent: secondaryPercentRef.current,
|
|
266
310
|
secondaryFill: secondaryFillRef.current,
|
|
267
311
|
});
|
|
268
312
|
// Montaggio una tantum: da qui in avanti il manager aggiorna il pannello via DOM, non via render.
|
|
313
|
+
return () => clearTimeout(hideTimerRef.current);
|
|
269
314
|
}, []);
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
315
|
+
// Popover gestiti via DOM come il resto del pannello: nessuno stato React, nessun render durante il progresso.
|
|
316
|
+
const hidePopovers = () => {
|
|
317
|
+
clearTimeout(hideTimerRef.current);
|
|
318
|
+
if (warningPopoverRef.current)
|
|
319
|
+
warningPopoverRef.current.style.display = 'none';
|
|
320
|
+
if (errorPopoverRef.current)
|
|
321
|
+
errorPopoverRef.current.style.display = 'none';
|
|
322
|
+
};
|
|
323
|
+
const scheduleHide = () => {
|
|
324
|
+
clearTimeout(hideTimerRef.current);
|
|
325
|
+
hideTimerRef.current = setTimeout(hidePopovers, POPOVER_HIDE_DELAY_MS);
|
|
326
|
+
};
|
|
327
|
+
const cancelHide = () => clearTimeout(hideTimerRef.current);
|
|
328
|
+
/** Apre il popover sotto la pill, allineato a destra. Finche' non arriva un messaggio resta chiuso. */
|
|
329
|
+
const openPopover = (pill, popover) => {
|
|
330
|
+
const overlay = overlayRef.current;
|
|
331
|
+
if (!pill || !popover || !overlay || popover.dataset.empty !== 'false')
|
|
332
|
+
return;
|
|
333
|
+
hidePopovers();
|
|
334
|
+
const overlayRect = overlay.getBoundingClientRect();
|
|
335
|
+
const pillRect = pill.getBoundingClientRect();
|
|
336
|
+
const top = pillRect.bottom - overlayRect.top + 6;
|
|
337
|
+
popover.style.top = `${top}px`;
|
|
338
|
+
popover.style.right = `${Math.max(12, overlayRect.right - pillRect.right)}px`;
|
|
339
|
+
popover.style.maxHeight = `${Math.max(80, overlayRect.height - top - 12)}px`;
|
|
340
|
+
popover.style.display = 'block';
|
|
341
|
+
};
|
|
342
|
+
return (_jsxs(_Fragment, { children: [_jsxs(StyledOverlay, { ref: overlayRef, $zIndex: zIndex, children: [_jsxs(StyledCard, { role: 'dialog', "aria-live": 'polite', children: [_jsxs(StyledHeader, { children: [_jsx(StyledToppyClip, { children: _jsx(StyledToppy, { src: toppy, alt: '', draggable: false }) }), _jsxs(StyledHeaderText, { children: [_jsx(StyledTitle, { ref: titleRef, children: title }), _jsx(StyledSubtitle, { ref: subtitleRef, children: subtitle })] })] }), primaryLabel && _jsx(StyledBarLabel, { children: primaryLabel }), _jsxs(StyledPercentRow, { $hasLabel: !!primaryLabel, children: [_jsx(StyledPercent, { ref: percentRef, children: "0.00%" }), _jsxs(StyledCounters, { style: { display: showCounters ? 'flex' : 'none' }, children: [_jsxs(StyledPill, { $color: '#3E7B1C', $background: '#E8F5E0', children: [_jsx(IconOk, {}), _jsx("span", { ref: okValueRef, children: "0" })] }), _jsxs(StyledPill, { ref: warningPillRef, $color: '#8A6D00', $background: '#FBF3CF', onMouseEnter: () => openPopover(warningPillRef.current, warningPopoverRef.current), onMouseLeave: scheduleHide, onClick: () => openPopover(warningPillRef.current, warningPopoverRef.current), children: [_jsx(IconWarning, {}), _jsx("span", { ref: warningValueRef, children: "0" })] }), _jsxs(StyledPill, { ref: errorPillRef, $color: '#B00F2B', $background: '#FBE1E6', onMouseEnter: () => openPopover(errorPillRef.current, errorPopoverRef.current), onMouseLeave: scheduleHide, onClick: () => openPopover(errorPillRef.current, errorPopoverRef.current), children: [_jsx(IconError, {}), _jsx("span", { ref: errorValueRef, children: "0" })] })] })] }), _jsx(StyledTrack, { children: _jsx(StyledFill, { ref: fillRef, $color: getProgressColor() }) }), _jsxs(StyledTimeRow, { style: { visibility: showEta ? 'visible' : 'hidden' }, children: [_jsx("span", { ref: elapsedRef }), _jsx("span", { ref: remainingRef })] }), showSecondary && secondaryLabel && _jsx(StyledBarLabel, { children: secondaryLabel }), showSecondary &&
|
|
343
|
+
_jsxs(StyledSecondary, { $hasLabel: !!secondaryLabel, children: [_jsxs(StyledSecondaryRow, { children: [_jsx(StyledSecondaryText, { ref: secondaryTextRef, children: secondaryText }), _jsx("span", { ref: secondaryPercentRef, children: "0.00%" })] }), _jsx(StyledSecondaryTrack, { children: _jsx(StyledSecondaryFill, { ref: secondaryFillRef, $color: getProgressColor() }) })] }), cancelable &&
|
|
344
|
+
_jsx(StyledFooter, { children: _jsx(StyledAbortButton, { ref: abortRef, type: 'button', onClick: onAbort, children: SDKUI_Localizator.Abort }) })] }), _jsxs(StyledPopover, { ref: warningPopoverRef, $accent: '#E0B400', "data-empty": 'true', onMouseEnter: cancelHide, onMouseLeave: scheduleHide, children: [_jsx(StyledPopoverTitle, { $color: '#8A6D00', children: SDKUI_Localizator.LatestWarnings }), _jsx("ul", { ref: warningListRef })] }), _jsxs(StyledPopover, { ref: errorPopoverRef, $accent: '#B00F2B', "data-empty": 'true', onMouseEnter: cancelHide, onMouseLeave: scheduleHide, children: [_jsx(StyledPopoverTitle, { $color: '#B00F2B', children: SDKUI_Localizator.LatestErrors }), _jsx("ul", { ref: errorListRef })] })] }), _jsx(TMWaitPanelConfirm, { ref: confirmRef, zIndex: zIndex + 1, onYes: onConfirmYes, onNo: onConfirmNo })] }));
|
|
273
345
|
};
|
|
274
346
|
export default TMWaitPanelView;
|
|
@@ -5,7 +5,7 @@ import styled from 'styled-components';
|
|
|
5
5
|
import { calcResponsiveSizes, IconAll, IconDelete, IconPencil, IconRefresh, IconSelected, SDKUI_Localizator } from '../../helper';
|
|
6
6
|
import TMButton from '../base/TMButton';
|
|
7
7
|
import TMDataGrid from '../base/TMDataGrid';
|
|
8
|
-
import { CounterItemKey } from '../base/TMCounterContainer';
|
|
8
|
+
import { CounterItemKey, formatCount } from '../base/TMCounterContainer';
|
|
9
9
|
import { useDeviceType } from '../base/TMDeviceProvider';
|
|
10
10
|
import TMCheckBox from '../editors/TMCheckBox';
|
|
11
11
|
import TMDropDown from '../editors/TMDropDown';
|
|
@@ -126,8 +126,8 @@ const TMDistinctValues = ({ tid, mid, layoutMode = LayoutModes.None, allowAppend
|
|
|
126
126
|
items.set(CounterItemKey.allItems, {
|
|
127
127
|
key: CounterItemKey.allItems,
|
|
128
128
|
show: true,
|
|
129
|
-
caption: `${counts.returned} restituiti su ${counts.found} trovati`,
|
|
130
|
-
value: `${counts.returned}/${counts.found}`,
|
|
129
|
+
caption: `${formatCount(counts.returned)} restituiti su ${formatCount(counts.found)} trovati`,
|
|
130
|
+
value: `${formatCount(counts.returned)}/${formatCount(counts.found)}`,
|
|
131
131
|
icon: _jsx(IconAll, {}),
|
|
132
132
|
order: -1
|
|
133
133
|
});
|
|
@@ -41,4 +41,4 @@ interface ITMDynDataListItemChooserFormProps extends ITMChooserFormProps<DataLis
|
|
|
41
41
|
/** Se presente, sono i parametri da passare alla query per recuperare il dataSource */
|
|
42
42
|
queryParamsDynDataList?: string[];
|
|
43
43
|
}
|
|
44
|
-
export declare const TMDynDataListItemChooserForm: (props: ITMDynDataListItemChooserFormProps) =>
|
|
44
|
+
export declare const TMDynDataListItemChooserForm: (props: ITMDynDataListItemChooserFormProps) => import("react/jsx-runtime").JSX.Element;
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
1
|
import { InvoiceRetrieveFormats } from '@topconsultnpm/sdk-ts';
|
|
3
2
|
import { ITMEnumDataBinding } from '../../ts';
|
|
4
|
-
declare const TMInvoiceRetrieveFormats: ({ value, valueOrig, onValueChanged, valuesToExclude, label, width }: ITMEnumDataBinding<InvoiceRetrieveFormats>) =>
|
|
3
|
+
declare const TMInvoiceRetrieveFormats: ({ value, valueOrig, onValueChanged, valuesToExclude, label, width }: ITMEnumDataBinding<InvoiceRetrieveFormats>) => import("react/jsx-runtime").JSX.Element;
|
|
5
4
|
export default TMInvoiceRetrieveFormats;
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
1
|
import { OrderRetrieveFormats } from '@topconsultnpm/sdk-ts';
|
|
3
2
|
import { ITMEnumDataBinding } from '../../ts';
|
|
4
|
-
declare const TMOrderRetrieveFormats: ({ value, valueOrig, onValueChanged, valuesToExclude, label, width }: ITMEnumDataBinding<OrderRetrieveFormats>) =>
|
|
3
|
+
declare const TMOrderRetrieveFormats: ({ value, valueOrig, onValueChanged, valuesToExclude, label, width }: ITMEnumDataBinding<OrderRetrieveFormats>) => import("react/jsx-runtime").JSX.Element;
|
|
5
4
|
export default TMOrderRetrieveFormats;
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
1
|
import { TMEditorButtonData } from '../base/TMEditorBase';
|
|
3
2
|
interface ITMQuickSearchInfo {
|
|
4
3
|
/** Tipo documento della ricerca rapida: serve a ricostruire la ricerca di sistema con tutti i documenti */
|
|
@@ -8,6 +7,6 @@ interface ITMQuickSearchInfo {
|
|
|
8
7
|
}
|
|
9
8
|
export declare const useTMQuickSearchInfo: ({ tid, sqdId }: ITMQuickSearchInfo) => {
|
|
10
9
|
infoButton: TMEditorButtonData | undefined;
|
|
11
|
-
detailForm:
|
|
10
|
+
detailForm: import("react/jsx-runtime").JSX.Element | null;
|
|
12
11
|
};
|
|
13
12
|
export {};
|
|
@@ -19,13 +19,13 @@ export declare const TMRelationIdViewer: ({ relationType, relationId, showIcon,
|
|
|
19
19
|
relationId?: number;
|
|
20
20
|
showIcon?: boolean;
|
|
21
21
|
noneSelectionText?: string;
|
|
22
|
-
}) =>
|
|
22
|
+
}) => import("react/jsx-runtime").JSX.Element;
|
|
23
23
|
export declare const TMRelationIcon: ({ rd, relationType }: {
|
|
24
24
|
rd: RelationDescriptor | undefined;
|
|
25
25
|
relationType?: RelationTypes;
|
|
26
|
-
}) =>
|
|
26
|
+
}) => import("react/jsx-runtime").JSX.Element;
|
|
27
27
|
export declare const TMRelationTooltip: ({ rd, relationType, children }: {
|
|
28
28
|
rd?: RelationDescriptor;
|
|
29
29
|
relationType: RelationTypes | undefined;
|
|
30
30
|
children: React.ReactNode;
|
|
31
|
-
}) =>
|
|
31
|
+
}) => import("react/jsx-runtime").JSX.Element;
|
|
@@ -38,8 +38,9 @@ interface ITMUserChooserFormProps extends ITMChooserFormProps<UserDescriptor> {
|
|
|
38
38
|
export declare const TMUserChooserForm: React.FunctionComponent<ITMUserChooserFormProps>;
|
|
39
39
|
export declare const TMUserIcon: ({ ud }: {
|
|
40
40
|
ud?: UserDescriptor;
|
|
41
|
-
}) =>
|
|
41
|
+
}) => import("react/jsx-runtime").JSX.Element | null;
|
|
42
42
|
export declare const TMUserTooltip: ({ ud, children }: {
|
|
43
43
|
ud?: UserDescriptor;
|
|
44
44
|
children: React.ReactNode;
|
|
45
|
-
}) =>
|
|
45
|
+
}) => import("react/jsx-runtime").JSX.Element;
|
|
46
|
+
export declare const User_IsExpired: (d: any) => boolean | undefined;
|
|
@@ -113,13 +113,13 @@ const getCompleteUserName = (domain, name) => {
|
|
|
113
113
|
return name;
|
|
114
114
|
return domain + "\\" + name;
|
|
115
115
|
};
|
|
116
|
-
|
|
116
|
+
export const User_IsExpired = (d) => {
|
|
117
117
|
if (d == undefined)
|
|
118
118
|
return false;
|
|
119
|
-
|
|
119
|
+
const ud = d;
|
|
120
120
|
const today = new Date();
|
|
121
121
|
return (ud.validFrom && today < ud.validFrom) || (ud.validTo && today > ud.validTo) || ud.disabled;
|
|
122
|
-
}
|
|
122
|
+
};
|
|
123
123
|
const getUserIcon = (userLevel, level, isExpired) => {
|
|
124
124
|
let ownershipColor = "";
|
|
125
125
|
if (isExpired)
|
|
@@ -2,14 +2,22 @@ import { ValidationItem } from '@topconsultnpm/sdk-ts';
|
|
|
2
2
|
export declare const TMEditorsDefaultBorderRadius = "5px";
|
|
3
3
|
export declare const TMEditorsDefaultLabelFontSize = "0.9rem";
|
|
4
4
|
export declare const editorColorManager: (validationItems: ValidationItem[]) => string;
|
|
5
|
-
export declare const StyledEditorContainer: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components
|
|
6
|
-
style?: import("react").CSSProperties | import("styled-components/dist/types").CSSPropertiesWithVars | undefined;
|
|
7
|
-
}, {
|
|
5
|
+
export declare const StyledEditorContainer: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<import("styled-components").FastOmit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "$width"> & {
|
|
8
6
|
$width: string;
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
7
|
+
}, never> & Partial<Pick<import("styled-components").FastOmit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "$width"> & {
|
|
8
|
+
$width: string;
|
|
9
|
+
}, never>>> & string;
|
|
10
|
+
export declare const StyledEditor: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<import("styled-components").FastOmit<import("react").DetailedHTMLProps<import("react").InputHTMLAttributes<HTMLInputElement>, HTMLInputElement>, "$borderRadius" | "$disabled" | "$fontSize" | "$isMobile" | "$isModified" | "$maxValue" | "$type" | "$vil" | "$width"> & {
|
|
11
|
+
$vil: ValidationItem[];
|
|
12
|
+
$width: string;
|
|
13
|
+
$type: string;
|
|
14
|
+
$isModified: boolean;
|
|
15
|
+
$maxValue: number;
|
|
16
|
+
$fontSize: string;
|
|
17
|
+
$disabled: boolean;
|
|
18
|
+
$isMobile?: boolean;
|
|
19
|
+
$borderRadius?: string;
|
|
20
|
+
}, never> & Partial<Pick<import("styled-components").FastOmit<import("react").DetailedHTMLProps<import("react").InputHTMLAttributes<HTMLInputElement>, HTMLInputElement>, "$borderRadius" | "$disabled" | "$fontSize" | "$isMobile" | "$isModified" | "$maxValue" | "$type" | "$vil" | "$width"> & {
|
|
13
21
|
$vil: ValidationItem[];
|
|
14
22
|
$width: string;
|
|
15
23
|
$type: string;
|
|
@@ -19,26 +27,40 @@ export declare const StyledEditor: import("styled-components/dist/types").IStyle
|
|
|
19
27
|
$disabled: boolean;
|
|
20
28
|
$isMobile?: boolean;
|
|
21
29
|
$borderRadius?: string;
|
|
22
|
-
}
|
|
23
|
-
export declare const StyledEditorIcon: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components
|
|
24
|
-
style?: import("react").CSSProperties | import("styled-components/dist/types").CSSPropertiesWithVars | undefined;
|
|
25
|
-
}, {
|
|
30
|
+
}, never>>> & string;
|
|
31
|
+
export declare const StyledEditorIcon: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<import("styled-components").FastOmit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "$disabled" | "$isModified" | "$vil"> & {
|
|
26
32
|
$vil: ValidationItem[];
|
|
27
33
|
$disabled: boolean;
|
|
28
34
|
$isModified: boolean;
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
35
|
+
}, never> & Partial<Pick<import("styled-components").FastOmit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "$disabled" | "$isModified" | "$vil"> & {
|
|
36
|
+
$vil: ValidationItem[];
|
|
37
|
+
$disabled: boolean;
|
|
38
|
+
$isModified: boolean;
|
|
39
|
+
}, never>>> & string;
|
|
40
|
+
export declare const StyledEditorLabel: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<import("styled-components").FastOmit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "$color" | "$disabled" | "$fontSize" | "$isFocused" | "$labelPosition"> & {
|
|
33
41
|
$isFocused: boolean;
|
|
34
42
|
$labelPosition: 'right' | 'left' | 'top';
|
|
35
43
|
$disabled: boolean;
|
|
36
44
|
$fontSize?: string;
|
|
37
45
|
$color?: string;
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
46
|
+
}, never> & Partial<Pick<import("styled-components").FastOmit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "$color" | "$disabled" | "$fontSize" | "$isFocused" | "$labelPosition"> & {
|
|
47
|
+
$isFocused: boolean;
|
|
48
|
+
$labelPosition: 'right' | 'left' | 'top';
|
|
49
|
+
$disabled: boolean;
|
|
50
|
+
$fontSize?: string;
|
|
51
|
+
$color?: string;
|
|
52
|
+
}, never>>> & string;
|
|
53
|
+
export declare const StyledTextareaEditor: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<import("styled-components").FastOmit<import("react").DetailedHTMLProps<import("react").TextareaHTMLAttributes<HTMLTextAreaElement>, HTMLTextAreaElement>, "$borderRadius" | "$disabled" | "$fontSize" | "$isMobile" | "$isModified" | "$maxHeight" | "$resize" | "$vil" | "$width"> & {
|
|
54
|
+
$vil: ValidationItem[];
|
|
55
|
+
$width: string;
|
|
56
|
+
$isModified: boolean;
|
|
57
|
+
$fontSize: string;
|
|
58
|
+
$disabled: boolean;
|
|
59
|
+
$isMobile?: boolean;
|
|
60
|
+
$maxHeight?: string;
|
|
61
|
+
$borderRadius?: string;
|
|
62
|
+
$resize?: boolean;
|
|
63
|
+
}, never> & Partial<Pick<import("styled-components").FastOmit<import("react").DetailedHTMLProps<import("react").TextareaHTMLAttributes<HTMLTextAreaElement>, HTMLTextAreaElement>, "$borderRadius" | "$disabled" | "$fontSize" | "$isMobile" | "$isModified" | "$maxHeight" | "$resize" | "$vil" | "$width"> & {
|
|
42
64
|
$vil: ValidationItem[];
|
|
43
65
|
$width: string;
|
|
44
66
|
$isModified: boolean;
|
|
@@ -48,4 +70,4 @@ export declare const StyledTextareaEditor: import("styled-components/dist/types"
|
|
|
48
70
|
$maxHeight?: string;
|
|
49
71
|
$borderRadius?: string;
|
|
50
72
|
$resize?: boolean;
|
|
51
|
-
}
|
|
73
|
+
}, never>>> & string;
|
|
@@ -30,7 +30,7 @@ export declare class FormulaDescriptor {
|
|
|
30
30
|
description?: string;
|
|
31
31
|
syntax?: string;
|
|
32
32
|
}
|
|
33
|
-
export declare const renderFormulaIcon: (iconType: FormulaIconTypes, tid?: number, md?: MetadataDescriptor) =>
|
|
33
|
+
export declare const renderFormulaIcon: (iconType: FormulaIconTypes, tid?: number, md?: MetadataDescriptor) => import("react/jsx-runtime").JSX.Element;
|
|
34
34
|
declare const TMFormulaEditor: React.FunctionComponent<ITMApplyFormProps<FormulaDescriptor>>;
|
|
35
35
|
export default TMFormulaEditor;
|
|
36
36
|
export declare class FormulaHelper {
|
|
@@ -1,8 +1,7 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
1
|
interface IHtmlContentDisplay {
|
|
3
2
|
markup: string;
|
|
4
3
|
isSelected: boolean;
|
|
5
4
|
searchText?: string;
|
|
6
5
|
}
|
|
7
|
-
declare const TMHtmlContentDisplay: (props: IHtmlContentDisplay) =>
|
|
6
|
+
declare const TMHtmlContentDisplay: (props: IHtmlContentDisplay) => import("react/jsx-runtime").JSX.Element;
|
|
8
7
|
export default TMHtmlContentDisplay;
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
1
|
import { ValidationItem } from '@topconsultnpm/sdk-ts';
|
|
3
2
|
export declare const sanitizeAndFormatComment: (raw?: string) => string;
|
|
4
3
|
export interface ITMHtmlEditor {
|
|
@@ -35,5 +34,5 @@ export interface ITMHtmlEditor {
|
|
|
35
34
|
/** If true, displays a character count below the editor */
|
|
36
35
|
showCount?: boolean;
|
|
37
36
|
}
|
|
38
|
-
declare const TMHtmlEditor: (props: ITMHtmlEditor) =>
|
|
37
|
+
declare const TMHtmlEditor: (props: ITMHtmlEditor) => import("react/jsx-runtime").JSX.Element;
|
|
39
38
|
export default TMHtmlEditor;
|
|
@@ -14,5 +14,5 @@ interface TMTreeDropDownProps {
|
|
|
14
14
|
isValidKey?: (key: number) => boolean;
|
|
15
15
|
elementStyle?: React.CSSProperties;
|
|
16
16
|
}
|
|
17
|
-
declare const TMTreeDropDown: (props: TMTreeDropDownProps) =>
|
|
17
|
+
declare const TMTreeDropDown: (props: TMTreeDropDownProps) => import("react/jsx-runtime").JSX.Element;
|
|
18
18
|
export default TMTreeDropDown;
|
|
@@ -18,7 +18,6 @@ export interface ITMHelpOnLineChatProps {
|
|
|
18
18
|
onAddMessage: (message: HolChatMessage) => void;
|
|
19
19
|
onSetThinking: (isThinking: boolean) => void;
|
|
20
20
|
onSetConversationId: (id: string) => void;
|
|
21
|
-
suggestedQuestions?: string[];
|
|
22
21
|
}
|
|
23
22
|
export interface ITMToppyHeaderButtonProps {
|
|
24
23
|
showChatButton: boolean;
|