@genexus/genexus-ide-ui 1.1.16 → 1.1.18
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/cjs/genexus-ide-ui.cjs.js +1 -1
- package/dist/cjs/gx-ide-json-import.cjs.entry.js +201 -0
- package/dist/cjs/gx-ide-json-import.cjs.entry.js.map +1 -0
- package/dist/cjs/gx-ide-object-selector.cjs.entry.js +2 -2
- package/dist/cjs/gx-ide-object-selector.cjs.entry.js.map +1 -1
- package/dist/cjs/gx-ide-team-dev-bring-changes.cjs.entry.js +30 -17
- package/dist/cjs/gx-ide-team-dev-bring-changes.cjs.entry.js.map +1 -1
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/collection/collection-manifest.json +1 -0
- package/dist/collection/components/json-import/gx-ide-assets/json-import/langs/json-import.lang.en.json +18 -0
- package/dist/collection/components/json-import/gx-ide-assets/json-import/langs/json-import.lang.ja.json +18 -0
- package/dist/collection/components/json-import/gx-ide-assets/json-import/langs/json-import.lang.zh.json +18 -0
- package/dist/collection/components/json-import/gx-ide-assets/json-import/shortcuts.json +15 -0
- package/dist/collection/components/json-import/json-import.css +77 -0
- package/dist/collection/components/json-import/json-import.js +458 -0
- package/dist/collection/components/json-import/json-import.js.map +1 -0
- package/dist/collection/components/object-selector/object-selector.js +2 -2
- package/dist/collection/components/object-selector/object-selector.js.map +1 -1
- package/dist/collection/components/team-dev/bring-changes/bring-changes.css +2 -2
- package/dist/collection/components/team-dev/bring-changes/bring-changes.js +54 -17
- package/dist/collection/components/team-dev/bring-changes/bring-changes.js.map +1 -1
- package/dist/collection/components/team-dev/bring-changes/gx-ide-assets/team-dev-bring-changes/langs/team-dev-bring-changes.lang.en.json +9 -3
- package/dist/collection/components/team-dev/bring-changes/gx-ide-assets/team-dev-bring-changes/langs/team-dev-bring-changes.lang.ja.json +9 -3
- package/dist/collection/components/team-dev/bring-changes/gx-ide-assets/team-dev-bring-changes/langs/team-dev-bring-changes.lang.zh.json +9 -3
- package/dist/collection/testing/locale.e2e.js +1 -0
- package/dist/collection/testing/locale.e2e.js.map +1 -1
- package/dist/components/gx-ide-json-import.d.ts +11 -0
- package/dist/components/gx-ide-json-import.js +239 -0
- package/dist/components/gx-ide-json-import.js.map +1 -0
- package/dist/components/gx-ide-object-selector.js +2 -2
- package/dist/components/gx-ide-object-selector.js.map +1 -1
- package/dist/components/gx-ide-team-dev-bring-changes.js +31 -17
- package/dist/components/gx-ide-team-dev-bring-changes.js.map +1 -1
- package/dist/esm/genexus-ide-ui.js +1 -1
- package/dist/esm/gx-ide-json-import.entry.js +197 -0
- package/dist/esm/gx-ide-json-import.entry.js.map +1 -0
- package/dist/esm/gx-ide-object-selector.entry.js +2 -2
- package/dist/esm/gx-ide-object-selector.entry.js.map +1 -1
- package/dist/esm/gx-ide-team-dev-bring-changes.entry.js +30 -17
- package/dist/esm/gx-ide-team-dev-bring-changes.entry.js.map +1 -1
- package/dist/esm/loader.js +1 -1
- package/dist/genexus-ide-ui/genexus-ide-ui.esm.js +1 -1
- package/dist/genexus-ide-ui/genexus-ide-ui.esm.js.map +1 -1
- package/dist/genexus-ide-ui/gx-ide-assets/json-import/langs/json-import.lang.en.json +18 -0
- package/dist/genexus-ide-ui/gx-ide-assets/json-import/langs/json-import.lang.ja.json +18 -0
- package/dist/genexus-ide-ui/gx-ide-assets/json-import/langs/json-import.lang.zh.json +18 -0
- package/dist/genexus-ide-ui/gx-ide-assets/json-import/shortcuts.json +15 -0
- package/dist/genexus-ide-ui/gx-ide-assets/team-dev-bring-changes/langs/team-dev-bring-changes.lang.en.json +9 -3
- package/dist/genexus-ide-ui/gx-ide-assets/team-dev-bring-changes/langs/team-dev-bring-changes.lang.ja.json +9 -3
- package/dist/genexus-ide-ui/gx-ide-assets/team-dev-bring-changes/langs/team-dev-bring-changes.lang.zh.json +9 -3
- package/dist/genexus-ide-ui/p-2bfae98b.entry.js +303 -0
- package/dist/genexus-ide-ui/p-2bfae98b.entry.js.map +1 -0
- package/dist/genexus-ide-ui/{p-16138f55.entry.js → p-3fbc5a02.entry.js} +38 -37
- package/dist/genexus-ide-ui/p-3fbc5a02.entry.js.map +1 -0
- package/dist/genexus-ide-ui/{p-83cc3bcd.entry.js → p-ac131847.entry.js} +7 -7
- package/dist/genexus-ide-ui/{p-83cc3bcd.entry.js.map → p-ac131847.entry.js.map} +1 -1
- package/dist/types/components/json-import/json-import.d.ts +73 -0
- package/dist/types/components/team-dev/bring-changes/bring-changes.d.ts +8 -3
- package/dist/types/components.d.ts +141 -18
- package/package.json +1 -1
- package/dist/genexus-ide-ui/p-16138f55.entry.js.map +0 -1
|
@@ -37,6 +37,7 @@ import { ModuleServerData, ModuleServerType } from "./components/modules/types";
|
|
|
37
37
|
import { CancelCallback as CancelCallback6, ConfirmCallback as ConfirmCallback5, SelectSourceCallback } from "./components/modules/edit-module-server/edit-module-server";
|
|
38
38
|
import { FileUploadState, UploadedFile, UploadResult } from "./components/file-uploader/types";
|
|
39
39
|
import { CancelCallback as CancelCallback7, GamConfigData, RepairCallback, SaveCallback } from "./components/gam-installation-settings/gam-installation-settings";
|
|
40
|
+
import { EntityData as EntityData1, JsonImportData, SelectModuleCallback as SelectModuleCallback1 } from "./components/json-import/json-import";
|
|
40
41
|
import { AddObjectsCallback as AddObjectsCallback1, AddReferencesCallback, CancelCallback as CancelCallback8, ExportCallback as ExportCallback1, ExportFileDirectoryCallback, KBPropertiesCallback, KBPropertyType, OptionsCallback as OptionsCallback1 } from "./components/kb-manager-export/types";
|
|
41
42
|
import { CancelCallback as CancelCallback9, ImportCallback, LoadCallback as LoadCallback1, ObjectContextMenuCallback, OptionsCallback as OptionsCallback2 } from "./components/kb-manager-import/kb-manager-import";
|
|
42
43
|
import { CheckedItemsInfo } from "./components/_helpers/list-selector/list-selector";
|
|
@@ -47,10 +48,10 @@ import { ExecuteActionCallback as ExecuteActionCallback1, ServerContextMenuCallb
|
|
|
47
48
|
import { CancelCallback as CancelCallback10, CloseCallback, ConfirmCallback as ConfirmCallback6, HeaderData, ItemSelectedCallback, NavigationData } from "./components/navigation-report/navigation-report";
|
|
48
49
|
import { CancelCallback as CancelCallback11, CreateCallback, GetDataSourcesCallback, GetEnvironmentNameCallback, GetFrontEndsCallback } from "./components/new-environment/new-environment";
|
|
49
50
|
import { CancelCallback as CancelCallback12, CreateCallback as CreateCallback1, GetDataSourcesCallback as GetDataSourcesCallback1, GetFrontEndsCallback as GetFrontEndsCallback1, SelectLocationCallback } from "./components/new-kb/new-kb";
|
|
50
|
-
import { CancelCallback as CancelCallback13, CreateCallback as CreateCallback2, NewObjectData, SelectModuleCallback as
|
|
51
|
+
import { CancelCallback as CancelCallback13, CreateCallback as CreateCallback2, NewObjectData, SelectModuleCallback as SelectModuleCallback2, SuggestDescriptionCallback, SuggestNameCallback, TypeCategoryData, ValidateNameCallback } from "./components/new-object/new-object";
|
|
51
52
|
import { NewVersionData } from "./components/new-version/new-version";
|
|
52
53
|
import { ContextMenuInfo as ContextMenuInfo1, FormSubmitResult as FormSubmitResult1 } from "./components";
|
|
53
|
-
import { CancelCallback as CancelCallback14, LoadCallback as LoadCallback2, NewObjectCallback, OpenSelectionCallback, SelectModuleCallback as
|
|
54
|
+
import { CancelCallback as CancelCallback14, LoadCallback as LoadCallback2, NewObjectCallback, OpenSelectionCallback, SelectModuleCallback as SelectModuleCallback3 } from "./components/object-selector/object-selector";
|
|
54
55
|
import { CancelCallback as CancelCallback15, ImportCallback as ImportCallback1, LoadCallback as LoadCallback3, SelectParentCallback } from "./components/open-api-import/open-api-import";
|
|
55
56
|
import { PluginDetailsData } from "./components/plugin-details/plugin-details";
|
|
56
57
|
import { PluginAction, PluginData } from "./components/plugin-explorer/plugin-explorer";
|
|
@@ -62,7 +63,7 @@ import { AuthStep, TeamData as TeamData1 } from "./components/sign-in-team/sign-
|
|
|
62
63
|
import { MessageType as MessageType1 } from "./components/splash/splash";
|
|
63
64
|
import { RecentKBData, SecondarySection } from "./components/start-page/start-page";
|
|
64
65
|
import { CheckedItemsInfo as CheckedItemsInfo1 } from "./components/_helpers/list-selector/list-selector";
|
|
65
|
-
import { CommitDetail, CommitInformation, CommitObject, MergeObjectsCallback, ObjectState } from "./components/team-dev/bring-changes/bring-changes";
|
|
66
|
+
import { CommitDetail, CommitInformation, CommitObject, MergeObjectsCallback, ObjectState, OperationType } from "./components/team-dev/bring-changes/bring-changes";
|
|
66
67
|
import { CommitCallback, CommitSelectCallback, GetRecentComment, LoadCallback as LoadCallback4, ObjectsContextMenuCallback, PendingItemsCheckedCallback } from "./components/team-dev/commit/commit";
|
|
67
68
|
import { LoadCallback as LoadCallback5, LoadDetailCallback, ObjectType as ObjectType1, SelectedVersionChangeCallback } from "./components/team-dev/history/history";
|
|
68
69
|
import { ItemNode as ItemNode1 } from "./components/select-kb-items/select-kb-items";
|
|
@@ -74,8 +75,8 @@ import { TitleAlignment as TitleAlignment1, TitleType as TitleType1 } from "./co
|
|
|
74
75
|
import { CloseCallback as CloseCallback1, SlideInfo, TransitionType } from "./components/welcome-page/welcome-page";
|
|
75
76
|
import { WFConfigData } from "./components/wf-settings/wf-settings";
|
|
76
77
|
import { ContextMenuCallback, DeleteSelectionCallback, LoadCallback as LoadCallback7, ObjectActionCallback, OpenSelectionCallback as OpenSelectionCallback1, SelectionChangeCallback } from "./components/ww-attributes/ww-attributes";
|
|
77
|
-
import { ContextMenuCallback as ContextMenuCallback1, DeleteSelectionCallback as DeleteSelectionCallback1, LoadCallback as LoadCallback8, NewFileCallback, OpenSelectionCallback as OpenSelectionCallback2, SelectionChangeCallback as SelectionChangeCallback1, SelectModuleCallback as
|
|
78
|
-
import { ContextMenuCallback as ContextMenuCallback2, DeleteSelectionCallback as DeleteSelectionCallback2, LoadCallback as LoadCallback9, LoadImageItemsCallback, NewObjectCallback as NewObjectCallback1, OpenSelectionCallback as OpenSelectionCallback3, SelectionObjectCallback, SelectModuleCallback as
|
|
78
|
+
import { ContextMenuCallback as ContextMenuCallback1, DeleteSelectionCallback as DeleteSelectionCallback1, LoadCallback as LoadCallback8, NewFileCallback, OpenSelectionCallback as OpenSelectionCallback2, SelectionChangeCallback as SelectionChangeCallback1, SelectModuleCallback as SelectModuleCallback4 } from "./components/ww-files/ww-files";
|
|
79
|
+
import { ContextMenuCallback as ContextMenuCallback2, DeleteSelectionCallback as DeleteSelectionCallback2, LoadCallback as LoadCallback9, LoadImageItemsCallback, NewObjectCallback as NewObjectCallback1, OpenSelectionCallback as OpenSelectionCallback3, SelectionObjectCallback, SelectModuleCallback as SelectModuleCallback5 } from "./components/ww-images/ww-images";
|
|
79
80
|
export { DetailsCallback, PrivacyPolicyCallback, TermsAndConditionsCallback } from "./components/about/about";
|
|
80
81
|
export { AiStatus, Message, UserMessageCallback } from "./components/ai-assistant/ai-assistant";
|
|
81
82
|
export { MessageType } from "./components/ai-assistant/ai-assistant";
|
|
@@ -108,6 +109,7 @@ export { ModuleServerData, ModuleServerType } from "./components/modules/types";
|
|
|
108
109
|
export { CancelCallback as CancelCallback6, ConfirmCallback as ConfirmCallback5, SelectSourceCallback } from "./components/modules/edit-module-server/edit-module-server";
|
|
109
110
|
export { FileUploadState, UploadedFile, UploadResult } from "./components/file-uploader/types";
|
|
110
111
|
export { CancelCallback as CancelCallback7, GamConfigData, RepairCallback, SaveCallback } from "./components/gam-installation-settings/gam-installation-settings";
|
|
112
|
+
export { EntityData as EntityData1, JsonImportData, SelectModuleCallback as SelectModuleCallback1 } from "./components/json-import/json-import";
|
|
111
113
|
export { AddObjectsCallback as AddObjectsCallback1, AddReferencesCallback, CancelCallback as CancelCallback8, ExportCallback as ExportCallback1, ExportFileDirectoryCallback, KBPropertiesCallback, KBPropertyType, OptionsCallback as OptionsCallback1 } from "./components/kb-manager-export/types";
|
|
112
114
|
export { CancelCallback as CancelCallback9, ImportCallback, LoadCallback as LoadCallback1, ObjectContextMenuCallback, OptionsCallback as OptionsCallback2 } from "./components/kb-manager-import/kb-manager-import";
|
|
113
115
|
export { CheckedItemsInfo } from "./components/_helpers/list-selector/list-selector";
|
|
@@ -118,10 +120,10 @@ export { ExecuteActionCallback as ExecuteActionCallback1, ServerContextMenuCallb
|
|
|
118
120
|
export { CancelCallback as CancelCallback10, CloseCallback, ConfirmCallback as ConfirmCallback6, HeaderData, ItemSelectedCallback, NavigationData } from "./components/navigation-report/navigation-report";
|
|
119
121
|
export { CancelCallback as CancelCallback11, CreateCallback, GetDataSourcesCallback, GetEnvironmentNameCallback, GetFrontEndsCallback } from "./components/new-environment/new-environment";
|
|
120
122
|
export { CancelCallback as CancelCallback12, CreateCallback as CreateCallback1, GetDataSourcesCallback as GetDataSourcesCallback1, GetFrontEndsCallback as GetFrontEndsCallback1, SelectLocationCallback } from "./components/new-kb/new-kb";
|
|
121
|
-
export { CancelCallback as CancelCallback13, CreateCallback as CreateCallback2, NewObjectData, SelectModuleCallback as
|
|
123
|
+
export { CancelCallback as CancelCallback13, CreateCallback as CreateCallback2, NewObjectData, SelectModuleCallback as SelectModuleCallback2, SuggestDescriptionCallback, SuggestNameCallback, TypeCategoryData, ValidateNameCallback } from "./components/new-object/new-object";
|
|
122
124
|
export { NewVersionData } from "./components/new-version/new-version";
|
|
123
125
|
export { ContextMenuInfo as ContextMenuInfo1, FormSubmitResult as FormSubmitResult1 } from "./components";
|
|
124
|
-
export { CancelCallback as CancelCallback14, LoadCallback as LoadCallback2, NewObjectCallback, OpenSelectionCallback, SelectModuleCallback as
|
|
126
|
+
export { CancelCallback as CancelCallback14, LoadCallback as LoadCallback2, NewObjectCallback, OpenSelectionCallback, SelectModuleCallback as SelectModuleCallback3 } from "./components/object-selector/object-selector";
|
|
125
127
|
export { CancelCallback as CancelCallback15, ImportCallback as ImportCallback1, LoadCallback as LoadCallback3, SelectParentCallback } from "./components/open-api-import/open-api-import";
|
|
126
128
|
export { PluginDetailsData } from "./components/plugin-details/plugin-details";
|
|
127
129
|
export { PluginAction, PluginData } from "./components/plugin-explorer/plugin-explorer";
|
|
@@ -133,7 +135,7 @@ export { AuthStep, TeamData as TeamData1 } from "./components/sign-in-team/sign-
|
|
|
133
135
|
export { MessageType as MessageType1 } from "./components/splash/splash";
|
|
134
136
|
export { RecentKBData, SecondarySection } from "./components/start-page/start-page";
|
|
135
137
|
export { CheckedItemsInfo as CheckedItemsInfo1 } from "./components/_helpers/list-selector/list-selector";
|
|
136
|
-
export { CommitDetail, CommitInformation, CommitObject, MergeObjectsCallback, ObjectState } from "./components/team-dev/bring-changes/bring-changes";
|
|
138
|
+
export { CommitDetail, CommitInformation, CommitObject, MergeObjectsCallback, ObjectState, OperationType } from "./components/team-dev/bring-changes/bring-changes";
|
|
137
139
|
export { CommitCallback, CommitSelectCallback, GetRecentComment, LoadCallback as LoadCallback4, ObjectsContextMenuCallback, PendingItemsCheckedCallback } from "./components/team-dev/commit/commit";
|
|
138
140
|
export { LoadCallback as LoadCallback5, LoadDetailCallback, ObjectType as ObjectType1, SelectedVersionChangeCallback } from "./components/team-dev/history/history";
|
|
139
141
|
export { ItemNode as ItemNode1 } from "./components/select-kb-items/select-kb-items";
|
|
@@ -145,8 +147,8 @@ export { TitleAlignment as TitleAlignment1, TitleType as TitleType1 } from "./co
|
|
|
145
147
|
export { CloseCallback as CloseCallback1, SlideInfo, TransitionType } from "./components/welcome-page/welcome-page";
|
|
146
148
|
export { WFConfigData } from "./components/wf-settings/wf-settings";
|
|
147
149
|
export { ContextMenuCallback, DeleteSelectionCallback, LoadCallback as LoadCallback7, ObjectActionCallback, OpenSelectionCallback as OpenSelectionCallback1, SelectionChangeCallback } from "./components/ww-attributes/ww-attributes";
|
|
148
|
-
export { ContextMenuCallback as ContextMenuCallback1, DeleteSelectionCallback as DeleteSelectionCallback1, LoadCallback as LoadCallback8, NewFileCallback, OpenSelectionCallback as OpenSelectionCallback2, SelectionChangeCallback as SelectionChangeCallback1, SelectModuleCallback as
|
|
149
|
-
export { ContextMenuCallback as ContextMenuCallback2, DeleteSelectionCallback as DeleteSelectionCallback2, LoadCallback as LoadCallback9, LoadImageItemsCallback, NewObjectCallback as NewObjectCallback1, OpenSelectionCallback as OpenSelectionCallback3, SelectionObjectCallback, SelectModuleCallback as
|
|
150
|
+
export { ContextMenuCallback as ContextMenuCallback1, DeleteSelectionCallback as DeleteSelectionCallback1, LoadCallback as LoadCallback8, NewFileCallback, OpenSelectionCallback as OpenSelectionCallback2, SelectionChangeCallback as SelectionChangeCallback1, SelectModuleCallback as SelectModuleCallback4 } from "./components/ww-files/ww-files";
|
|
151
|
+
export { ContextMenuCallback as ContextMenuCallback2, DeleteSelectionCallback as DeleteSelectionCallback2, LoadCallback as LoadCallback9, LoadImageItemsCallback, NewObjectCallback as NewObjectCallback1, OpenSelectionCallback as OpenSelectionCallback3, SelectionObjectCallback, SelectModuleCallback as SelectModuleCallback5 } from "./components/ww-images/ww-images";
|
|
150
152
|
export namespace Components {
|
|
151
153
|
interface GxIdeAbout {
|
|
152
154
|
/**
|
|
@@ -1188,6 +1190,60 @@ export namespace Components {
|
|
|
1188
1190
|
*/
|
|
1189
1191
|
"saveCallback": SaveCallback;
|
|
1190
1192
|
}
|
|
1193
|
+
interface GxIdeJsonImport {
|
|
1194
|
+
/**
|
|
1195
|
+
* Callback that must be invoked when the user want to cancel the operation
|
|
1196
|
+
*/
|
|
1197
|
+
"cancelCallback": () => Promise<void>;
|
|
1198
|
+
/**
|
|
1199
|
+
* Callback that must be invoked when the user confirms the creation of the SDT. It receives as parameters the data necessary to create the SDT.
|
|
1200
|
+
*/
|
|
1201
|
+
"confirmCallback": (
|
|
1202
|
+
data: JsonImportData
|
|
1203
|
+
) => Promise<FormSubmitResult>;
|
|
1204
|
+
/**
|
|
1205
|
+
* Default value for Module/Folder field
|
|
1206
|
+
*/
|
|
1207
|
+
"defaultParent": EntityData1;
|
|
1208
|
+
/**
|
|
1209
|
+
* Default value for Module/Folder field
|
|
1210
|
+
*/
|
|
1211
|
+
"defaultRadioValue": string;
|
|
1212
|
+
/**
|
|
1213
|
+
* Callback invoked when a file is selected or removed.
|
|
1214
|
+
*/
|
|
1215
|
+
"fileChangeCallback"?: (file: File | null) => Promise<void>;
|
|
1216
|
+
/**
|
|
1217
|
+
* Callback invoked when the input mode changes between file and text.
|
|
1218
|
+
*/
|
|
1219
|
+
"modeChangeCallback"?: (
|
|
1220
|
+
mode: "file" | "text"
|
|
1221
|
+
) => Promise<void>;
|
|
1222
|
+
/**
|
|
1223
|
+
* Callback invocado cuando el contenido del JSON cambia
|
|
1224
|
+
*/
|
|
1225
|
+
"onJsonContentChange"?: (content: string) => void;
|
|
1226
|
+
/**
|
|
1227
|
+
* Actual value for Module/Folder field
|
|
1228
|
+
*/
|
|
1229
|
+
"parent": EntityData1;
|
|
1230
|
+
/**
|
|
1231
|
+
* Callback invoked when the action is executed in the Module/Folder filter. It returns the information of the selected object (id and name) or 'undefined' if it was canceled.
|
|
1232
|
+
*/
|
|
1233
|
+
"selectModuleCallback": SelectModuleCallback1;
|
|
1234
|
+
/**
|
|
1235
|
+
* Suspends or reactivates the shortcuts
|
|
1236
|
+
*/
|
|
1237
|
+
"suspendShortcuts": (suspendShortcuts: boolean) => Promise<void>;
|
|
1238
|
+
/**
|
|
1239
|
+
* Callback para validar el JSON. Debe retornar true si el JSON es válido, false en caso contrario.
|
|
1240
|
+
*/
|
|
1241
|
+
"validateJSONCallback"?: (json: string) => boolean;
|
|
1242
|
+
/**
|
|
1243
|
+
* Callback para validar el nombre del objeto. Debe retornar true si el nombre es válido, false en caso contrario.
|
|
1244
|
+
*/
|
|
1245
|
+
"validateNameCallback"?: (name: string) => boolean;
|
|
1246
|
+
}
|
|
1191
1247
|
interface GxIdeKbManagerExport {
|
|
1192
1248
|
/**
|
|
1193
1249
|
* Callback invoked when the user wants to include KB properties.
|
|
@@ -1631,7 +1687,7 @@ export namespace Components {
|
|
|
1631
1687
|
/**
|
|
1632
1688
|
* Callback invoked when the action is executed on the Module/Folder filter (button '...'). It returns the information of the selected object (id and name) or 'undefined' if it was canceled.
|
|
1633
1689
|
*/
|
|
1634
|
-
"selectModuleCallback":
|
|
1690
|
+
"selectModuleCallback": SelectModuleCallback2;
|
|
1635
1691
|
/**
|
|
1636
1692
|
* Applies a shadow all around
|
|
1637
1693
|
*/
|
|
@@ -1733,7 +1789,7 @@ export namespace Components {
|
|
|
1733
1789
|
/**
|
|
1734
1790
|
* Callback invoked when the action is executed in the Module/Folder filter. It returns the information of the selected object (id and name) or 'undefined' if it was canceled.
|
|
1735
1791
|
*/
|
|
1736
|
-
"selectModuleCallback":
|
|
1792
|
+
"selectModuleCallback": SelectModuleCallback3;
|
|
1737
1793
|
/**
|
|
1738
1794
|
* Suspends or reactivates the shortcuts
|
|
1739
1795
|
*/
|
|
@@ -2133,6 +2189,10 @@ export namespace Components {
|
|
|
2133
2189
|
* If true, the "Action" column will display a button instead of a pill, only when the action is
|
|
2134
2190
|
*/
|
|
2135
2191
|
"mergePillAsButton": boolean;
|
|
2192
|
+
/**
|
|
2193
|
+
* The type of operation to perform: "merge" or "revert".
|
|
2194
|
+
*/
|
|
2195
|
+
"operationType": OperationType;
|
|
2136
2196
|
/**
|
|
2137
2197
|
* It allows the host updating an object state, by providing the object id.
|
|
2138
2198
|
* @param objectId The ID of the object to update.
|
|
@@ -2521,7 +2581,7 @@ export namespace Components {
|
|
|
2521
2581
|
/**
|
|
2522
2582
|
* Callback invoked when the action is executed on the Module/Folder filter (button '...'). It returns the information of the selected object (id and name) or 'undefined' if it was canceled.
|
|
2523
2583
|
*/
|
|
2524
|
-
"selectModuleCallback":
|
|
2584
|
+
"selectModuleCallback": SelectModuleCallback4;
|
|
2525
2585
|
/**
|
|
2526
2586
|
* This is a function provided by the developer for expanded the data of files that is double-clicked or entered.
|
|
2527
2587
|
*/
|
|
@@ -2635,7 +2695,7 @@ export namespace Components {
|
|
|
2635
2695
|
/**
|
|
2636
2696
|
* Callback invoked when the action is executed on the Module/Folder filter (button '...'). It returns the information of the selected object (id and name) or 'undefined' if it was canceled.
|
|
2637
2697
|
*/
|
|
2638
|
-
"selectModuleCallback":
|
|
2698
|
+
"selectModuleCallback": SelectModuleCallback5;
|
|
2639
2699
|
/**
|
|
2640
2700
|
* This is a function provided by the developer for expanded the data of images that is double-clicked or entered.
|
|
2641
2701
|
*/
|
|
@@ -3140,6 +3200,12 @@ declare global {
|
|
|
3140
3200
|
prototype: HTMLGxIdeGamInstallationSettingsElement;
|
|
3141
3201
|
new (): HTMLGxIdeGamInstallationSettingsElement;
|
|
3142
3202
|
};
|
|
3203
|
+
interface HTMLGxIdeJsonImportElement extends Components.GxIdeJsonImport, HTMLStencilElement {
|
|
3204
|
+
}
|
|
3205
|
+
var HTMLGxIdeJsonImportElement: {
|
|
3206
|
+
prototype: HTMLGxIdeJsonImportElement;
|
|
3207
|
+
new (): HTMLGxIdeJsonImportElement;
|
|
3208
|
+
};
|
|
3143
3209
|
interface HTMLGxIdeKbManagerExportElement extends Components.GxIdeKbManagerExport, HTMLStencilElement {
|
|
3144
3210
|
}
|
|
3145
3211
|
var HTMLGxIdeKbManagerExportElement: {
|
|
@@ -3665,6 +3731,7 @@ declare global {
|
|
|
3665
3731
|
"gx-ide-file-item": HTMLGxIdeFileItemElement;
|
|
3666
3732
|
"gx-ide-file-uploader": HTMLGxIdeFileUploaderElement;
|
|
3667
3733
|
"gx-ide-gam-installation-settings": HTMLGxIdeGamInstallationSettingsElement;
|
|
3734
|
+
"gx-ide-json-import": HTMLGxIdeJsonImportElement;
|
|
3668
3735
|
"gx-ide-kb-manager-export": HTMLGxIdeKbManagerExportElement;
|
|
3669
3736
|
"gx-ide-kb-manager-import": HTMLGxIdeKbManagerImportElement;
|
|
3670
3737
|
"gx-ide-list-selector": HTMLGxIdeListSelectorElement;
|
|
@@ -4792,6 +4859,56 @@ declare namespace LocalJSX {
|
|
|
4792
4859
|
*/
|
|
4793
4860
|
"saveCallback"?: SaveCallback;
|
|
4794
4861
|
}
|
|
4862
|
+
interface GxIdeJsonImport {
|
|
4863
|
+
/**
|
|
4864
|
+
* Callback that must be invoked when the user want to cancel the operation
|
|
4865
|
+
*/
|
|
4866
|
+
"cancelCallback"?: () => Promise<void>;
|
|
4867
|
+
/**
|
|
4868
|
+
* Callback that must be invoked when the user confirms the creation of the SDT. It receives as parameters the data necessary to create the SDT.
|
|
4869
|
+
*/
|
|
4870
|
+
"confirmCallback": (
|
|
4871
|
+
data: JsonImportData
|
|
4872
|
+
) => Promise<FormSubmitResult>;
|
|
4873
|
+
/**
|
|
4874
|
+
* Default value for Module/Folder field
|
|
4875
|
+
*/
|
|
4876
|
+
"defaultParent"?: EntityData1;
|
|
4877
|
+
/**
|
|
4878
|
+
* Default value for Module/Folder field
|
|
4879
|
+
*/
|
|
4880
|
+
"defaultRadioValue"?: string;
|
|
4881
|
+
/**
|
|
4882
|
+
* Callback invoked when a file is selected or removed.
|
|
4883
|
+
*/
|
|
4884
|
+
"fileChangeCallback"?: (file: File | null) => Promise<void>;
|
|
4885
|
+
/**
|
|
4886
|
+
* Callback invoked when the input mode changes between file and text.
|
|
4887
|
+
*/
|
|
4888
|
+
"modeChangeCallback"?: (
|
|
4889
|
+
mode: "file" | "text"
|
|
4890
|
+
) => Promise<void>;
|
|
4891
|
+
/**
|
|
4892
|
+
* Callback invocado cuando el contenido del JSON cambia
|
|
4893
|
+
*/
|
|
4894
|
+
"onJsonContentChange"?: (content: string) => void;
|
|
4895
|
+
/**
|
|
4896
|
+
* Actual value for Module/Folder field
|
|
4897
|
+
*/
|
|
4898
|
+
"parent"?: EntityData1;
|
|
4899
|
+
/**
|
|
4900
|
+
* Callback invoked when the action is executed in the Module/Folder filter. It returns the information of the selected object (id and name) or 'undefined' if it was canceled.
|
|
4901
|
+
*/
|
|
4902
|
+
"selectModuleCallback"?: SelectModuleCallback1;
|
|
4903
|
+
/**
|
|
4904
|
+
* Callback para validar el JSON. Debe retornar true si el JSON es válido, false en caso contrario.
|
|
4905
|
+
*/
|
|
4906
|
+
"validateJSONCallback"?: (json: string) => boolean;
|
|
4907
|
+
/**
|
|
4908
|
+
* Callback para validar el nombre del objeto. Debe retornar true si el nombre es válido, false en caso contrario.
|
|
4909
|
+
*/
|
|
4910
|
+
"validateNameCallback"?: (name: string) => boolean;
|
|
4911
|
+
}
|
|
4795
4912
|
interface GxIdeKbManagerExport {
|
|
4796
4913
|
/**
|
|
4797
4914
|
* Callback invoked when the user wants to include KB properties.
|
|
@@ -5255,7 +5372,7 @@ declare namespace LocalJSX {
|
|
|
5255
5372
|
/**
|
|
5256
5373
|
* Callback invoked when the action is executed on the Module/Folder filter (button '...'). It returns the information of the selected object (id and name) or 'undefined' if it was canceled.
|
|
5257
5374
|
*/
|
|
5258
|
-
"selectModuleCallback"?:
|
|
5375
|
+
"selectModuleCallback"?: SelectModuleCallback2;
|
|
5259
5376
|
/**
|
|
5260
5377
|
* Applies a shadow all around
|
|
5261
5378
|
*/
|
|
@@ -5353,7 +5470,7 @@ declare namespace LocalJSX {
|
|
|
5353
5470
|
/**
|
|
5354
5471
|
* Callback invoked when the action is executed in the Module/Folder filter. It returns the information of the selected object (id and name) or 'undefined' if it was canceled.
|
|
5355
5472
|
*/
|
|
5356
|
-
"selectModuleCallback"?:
|
|
5473
|
+
"selectModuleCallback"?: SelectModuleCallback3;
|
|
5357
5474
|
/**
|
|
5358
5475
|
* The types render in the filter type selector
|
|
5359
5476
|
*/
|
|
@@ -5741,6 +5858,10 @@ declare namespace LocalJSX {
|
|
|
5741
5858
|
* If true, the "Action" column will display a button instead of a pill, only when the action is
|
|
5742
5859
|
*/
|
|
5743
5860
|
"mergePillAsButton"?: boolean;
|
|
5861
|
+
/**
|
|
5862
|
+
* The type of operation to perform: "merge" or "revert".
|
|
5863
|
+
*/
|
|
5864
|
+
"operationType"?: OperationType;
|
|
5744
5865
|
}
|
|
5745
5866
|
interface GxIdeTeamDevCommit {
|
|
5746
5867
|
/**
|
|
@@ -6145,7 +6266,7 @@ declare namespace LocalJSX {
|
|
|
6145
6266
|
/**
|
|
6146
6267
|
* Callback invoked when the action is executed on the Module/Folder filter (button '...'). It returns the information of the selected object (id and name) or 'undefined' if it was canceled.
|
|
6147
6268
|
*/
|
|
6148
|
-
"selectModuleCallback":
|
|
6269
|
+
"selectModuleCallback": SelectModuleCallback4;
|
|
6149
6270
|
/**
|
|
6150
6271
|
* This is a function provided by the developer for expanded the data of files that is double-clicked or entered.
|
|
6151
6272
|
*/
|
|
@@ -6259,7 +6380,7 @@ declare namespace LocalJSX {
|
|
|
6259
6380
|
/**
|
|
6260
6381
|
* Callback invoked when the action is executed on the Module/Folder filter (button '...'). It returns the information of the selected object (id and name) or 'undefined' if it was canceled.
|
|
6261
6382
|
*/
|
|
6262
|
-
"selectModuleCallback":
|
|
6383
|
+
"selectModuleCallback": SelectModuleCallback5;
|
|
6263
6384
|
/**
|
|
6264
6385
|
* This is a function provided by the developer for expanded the data of images that is double-clicked or entered.
|
|
6265
6386
|
*/
|
|
@@ -6309,6 +6430,7 @@ declare namespace LocalJSX {
|
|
|
6309
6430
|
"gx-ide-file-item": GxIdeFileItem;
|
|
6310
6431
|
"gx-ide-file-uploader": GxIdeFileUploader;
|
|
6311
6432
|
"gx-ide-gam-installation-settings": GxIdeGamInstallationSettings;
|
|
6433
|
+
"gx-ide-json-import": GxIdeJsonImport;
|
|
6312
6434
|
"gx-ide-kb-manager-export": GxIdeKbManagerExport;
|
|
6313
6435
|
"gx-ide-kb-manager-import": GxIdeKbManagerImport;
|
|
6314
6436
|
"gx-ide-list-selector": GxIdeListSelector;
|
|
@@ -6390,6 +6512,7 @@ declare module "@stencil/core" {
|
|
|
6390
6512
|
"gx-ide-file-item": LocalJSX.GxIdeFileItem & JSXBase.HTMLAttributes<HTMLGxIdeFileItemElement>;
|
|
6391
6513
|
"gx-ide-file-uploader": LocalJSX.GxIdeFileUploader & JSXBase.HTMLAttributes<HTMLGxIdeFileUploaderElement>;
|
|
6392
6514
|
"gx-ide-gam-installation-settings": LocalJSX.GxIdeGamInstallationSettings & JSXBase.HTMLAttributes<HTMLGxIdeGamInstallationSettingsElement>;
|
|
6515
|
+
"gx-ide-json-import": LocalJSX.GxIdeJsonImport & JSXBase.HTMLAttributes<HTMLGxIdeJsonImportElement>;
|
|
6393
6516
|
"gx-ide-kb-manager-export": LocalJSX.GxIdeKbManagerExport & JSXBase.HTMLAttributes<HTMLGxIdeKbManagerExportElement>;
|
|
6394
6517
|
"gx-ide-kb-manager-import": LocalJSX.GxIdeKbManagerImport & JSXBase.HTMLAttributes<HTMLGxIdeKbManagerImportElement>;
|
|
6395
6518
|
"gx-ide-list-selector": LocalJSX.GxIdeListSelector & JSXBase.HTMLAttributes<HTMLGxIdeListSelectorElement>;
|
package/package.json
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["bringChangesCss","CSS_BUNDLES","COMBO_BOX_ALL_VALUE","DETAIL_LABEL_CLASSES","ADD_ICON","getIconPath","category","name","colorType","EDITED_ICON","FILTER_ICON","SEARCH_ICON","SUBSTRACT_ICON","WARNING_ICON","ERROR_ICON","GxIdeTeamDevBringChanges","_GxIdeTeamDevBringChanges_componentLocale","set","this","_GxIdeTeamDevBringChanges_commitLabel","_GxIdeTeamDevBringChanges_comboBoxStatesModel","_GxIdeTeamDevBringChanges_checkedObjectsIdsArray","_GxIdeTeamDevBringChanges_formatComments","commitInformation","length","comment","mergedComment","map","commit","i","isLast","afterCommentBreakline","id","_GxIdeTeamDevBringChanges_mergeCheckedClickedHandler","async","merging","newobjectsStatesMap","Map","objectsStatesMap","__classPrivateFieldGet","forEach","checkedObjectId","mergeObjectsCallback","_GxIdeTeamDevBringChanges_mergeSingleObject","objectId","_GxIdeTeamDevBringChanges_renderActionCellContent","actionTaken","icon","caption","iconColor","objects","actions","delete","insert","modify","h","class","type","src","style","backgroundColor","_GxIdeTeamDevBringChanges_renderCommitsNumbers","onlyNumbers","_a","_b","loading","_GxIdeTeamDevBringChanges_renderFormatedDate","date","dateObject","Date","lang","navigator","languages","language","toLocaleDateString","toLocaleTimeString","hour","minute","hour12","_GxIdeTeamDevBringChanges_renderObjectActions","openDisabled","compareWithCurrentRevisionDisabled","menuContextAction","revisionChangesDisabled","previewMergeDisabled","disabled","objectActions","open","compareWithCurrentRevision","revisionChanges","previewMerge","_GxIdeTeamDevBringChanges_renderObjectState","objectType","states","classes","mergePillAsButton","onClick","call","statesForButton","_GxIdeTeamDevBringChanges_renderObjectType","_GxIdeTeamDevBringChanges_renderObjectsRows","objectsFiltered","commitObject","marked","markedObjectsSet","has","alreadyMerged","alreadyMergedObjectsIdsArray","find","errorOrWarningMessage","commitObjectsMessagesMap","get","state","MESSAGE_ICON","key","rowid","ref","el","setAttribute","size","description","_GxIdeTeamDevBringChanges_rowContextMenuHandler","event","rowId","detail","_GxIdeTeamDevBringChanges_updateMenuContextActions","_GxIdeTeamDevBringChanges_rowMarkingChangedHandler","newobjectsMarkedSet","Set","markedRowsIds","rowsId","checkedObjectsIgnoringAlreadyMerged","filter","markedObjectId","includes","__classPrivateFieldSet","add","atLeastOneObjectIsChecked","objectCurrentState","markedRowIndex","findIndex","splice","_GxIdeTeamDevBringChanges_searchInputHandler","searchValue","toLowerCase","_GxIdeTeamDevBringChanges_updateFilteredObjects","_GxIdeTeamDevBringChanges_stateChangedHandler","stateFilterValue","currentObjectContextMenuId","object","commitObjects","filteredObjects","objectState","includesName","includesType","includesDescription","objectsStatesMapChanged","newCommitObjectsStateMap","someObjectIsMerging","entries","commitObjectsChanged","newCommitObjects","componentWillLoad","Locale","getComponentStrings","commmits","commmit","all","value","warning","error","merged","updateObjectState","newState","message","checkedObject","push","tabularGridEl","markRow","render","enableRichRowSelector","disableControls","Host","model","commitDetail","bringChangesDetail","genexusServer","href","target","knowledgeBase","currentVersion","mergeFromVersion","title","ids","from","to","htmlFor","comments","multiline","readonly","hideFilters","startImgSrc","placeholder","searchPlaceholder","onInput","statePlaceholder","mergeChecked","keyboardNavigationMode","rowSelectionMode","onRowMarkingChanged","onRowContextMenu","columnId","columnName","columnType","richRowSelector","richRowSelectorMode","settingable","action","status","columnNameHidden","richRowActions","enableRowOptions","showOnRowActions","showOnRowContext","isAnimated","stateIconSrc","stateTitle","cancelLabel","loader","loaderTitle","show"],"sources":["src/components/team-dev/bring-changes/bring-changes.scss?tag=gx-ide-team-dev-bring-changes&encapsulation=shadow","src/components/team-dev/bring-changes/bring-changes.tsx"],"sourcesContent":["@import \"../../../../node_modules/@genexus/mercury/dist/assets/scss/helpers.scss\";\n@import \"../../../global/gx-ide-mixins.scss\";\n\n:host {\n --pill-border-radius: 12px;\n --pill-padding-inline: 8px;\n --pill-padding-block: 2px;\n --pill-font-size: var(--font-size-body-s);\n\n display: grid;\n block-size: 100%;\n overflow: auto;\n grid-template-rows: max-content max-content 1fr;\n}\n$header-item-common-inline-padding: 24px;\n$header-item-common-separator-border: 1px solid\n var(--mer-border-color__on-elevation--01);\n\n%header-item-common-inline-sizes {\n max-inline-size: 250px;\n min-inline-size: 180px;\n}\n%header-item-common {\n padding-inline: $header-item-common-inline-padding;\n border-inline-end: $header-item-common-separator-border;\n @extend %header-item-common-inline-sizes;\n}\n%header-item-common-start {\n padding-inline-end: $header-item-common-inline-padding;\n border-inline-end: $header-item-common-separator-border;\n}\n%header-item-common-end {\n padding-inline-start: $header-item-common-inline-padding;\n}\n\n.section {\n display: contents;\n}\n\n.header {\n display: grid;\n gap: 24px;\n}\n\n// header detail\n.header__detail {\n display: grid;\n grid-template-areas:\n \"detail-title detail-title detail-title detail-title\"\n \"detail-commit-name detail-commit-name detail-commit-name detail-commit-name\"\n \"detail-genexus-server detail-knowledge-base detail-current-version detail-merge-from-version\";\n row-gap: 16px;\n // grid-auto-columns: max-content;\n // grid-template-columns: max-content auto auto auto;\n grid-template-columns: minmax(250px, 350px) repeat(3, minmax(180px, 250px));\n}\n.detail__label {\n color: var(--mer-color__neutral-gray--400);\n}\n.detail__title {\n grid-area: detail-title;\n}\n.detail__commit-name {\n grid-area: detail-commit-name;\n}\n.detail__genexus-server {\n grid-area: detail-genexus-server;\n @extend %header-item-common-start;\n\n > a {\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n display: inline-block;\n }\n}\n.detail__link {\n align-items: start;\n color: var(--mer-text__primary);\n text-decoration: underline;\n &:hover {\n color: var(--mer-text__primary--hover);\n }\n &:active {\n color: var(--mer-text__primary--active);\n }\n}\n.detail__knowledge-base {\n grid-area: detail-knowledge-base;\n @extend %header-item-common;\n}\n.detail__current-version {\n grid-area: detail-current-version;\n @extend %header-item-common;\n}\n.detail__merge-from-version {\n grid-area: detail-merge-from-version;\n @extend %header-item-common-end;\n}\n\n// header information\n.header__information {\n display: grid;\n row-gap: 10px;\n grid-template-areas:\n \"information-title information-title\"\n \"information-col-1 information-col-2\";\n grid-template-columns: max-content 1fr;\n grid-template-rows: max-content 64px;\n}\n.information__title {\n grid-area: information-title;\n}\n.information__col-1 {\n grid-area: information-col-1;\n display: flex;\n gap: 24px;\n @extend %header-item-common-start;\n}\n.information__col-2 {\n display: grid;\n grid-area: information-col-2;\n @extend %header-item-common-end;\n}\n\n// filter / controls-container\n.controls-container {\n display: grid;\n margin-block-start: 24px;\n}\n.filter {\n grid-template-columns: 232px 186px 1fr;\n gap: 12px;\n}\n.button-merge-checked {\n margin-inline-start: auto;\n}\n\n// main\n.main {\n position: relative;\n display: grid;\n overflow: auto;\n}\n.loader {\n position: relative;\n inline-size: 100%;\n block-size: 100%;\n inset-block-start: 0;\n}\n.tabular-grid {\n border-radius: 4px;\n overflow: hidden;\n}\n\n.empty-state {\n block-size: 100%;\n}\n.loader {\n --elevation-background-color: var(--mer-surface__elevation--01);\n}\n\n.warning-error-description {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 8px;\n max-inline-size: 800px;\n line-height: 1.5; // WA. Line height looks too tight.\n}\n.warning-error-icon {\n flex-shrink: 0;\n}\n\n.tabular-grid.empty-result::part(main) {\n // WA to avoid scrollbar flickering when displaying the empty-state message\n overflow: hidden;\n}\n\n// - - - - - - - - - - - - - -\n// WA (WORK AROUNDS)\n// - - - - - - - - - - - - - -\n\n.input-comments-container {\n position: relative;\n}\n// ch-edit for comments WA's\n// Figma design for this component displays the textarea witout border, and with a little more line-height.\n// The following styles are a temporary WA that should be brouhgt to Mercury DS.\n.input-comments {\n --control__border-color: transparent;\n padding-block: 0 !important;\n padding-inline: 0 !important;\n --line-height-tight: 1.4;\n block-size: 100%;\n background-color: var(--mer-surface);\n transition: var(--mer-timing--super-fast) block-size,\n var(--mer-timing--super-fast) background-color,\n var(--mer-timing--super-fast) padding-block,\n var(--mer-timing--super-fast) padding-inline;\n}\n.input-comments:focus {\n position: absolute;\n block-size: 200px;\n inline-size: 100%;\n z-index: 99;\n background-color: var(--mer-surface__elevation--01);\n padding-block: var(--control__padding-block) !important;\n padding-inline: var(--control__padding-inline) !important;\n}\n\nch-tabular-grid-cell.tabular-grid-cell::part(actions-icon) {\n background-size: contain; //force icon fit container\n margin-inline-end: 0;\n --icon-path: var(--icon__gemini-tools_show-more-vertical_neutral--enabled);\n cursor: pointer;\n &:hover {\n --icon-path: var(--icon__gemini-tools_show-more-vertical_neutral--hover);\n }\n &:active {\n --icon-path: var(--icon__gemini-tools_show-more-vertical_neutral--active);\n }\n}\n\n.tabular-grid-row-actions::part(main),\n.property-grid-row-actions::part(main) {\n // gap not required since buttons are tertiary.\n // extra space perceived.\n gap: 0 !important;\n}\n\n.custom-icon-text-wrapper {\n // To align an icon and a text, with gap\n display: flex;\n align-items: center;\n gap: 10px;\n}\n\n.tabular-grid-row-actions {\n // Butons are center by default, but design dictates start alignemnt\n > button {\n justify-content: start;\n }\n}\n\n// These static type of pills do not exist on Mercury yet.\n// They should be defined on Mercury. The actual pills on Mercury\n// are combo-boxes. Not what we need for this case.\n\n.pill {\n --pill-background-color: transparent;\n --pill-color: transparent;\n --pill-border-color: transparent;\n\n background-color: var(--pill-background-color);\n color: var(--pill-color);\n border: 1px solid var(--pill-border-color);\n inline-size: 100%;\n padding: var(--pill-padding-block) var(--pill-padding-inline);\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: var(--pill-border-radius);\n position: relative;\n font-weight: var(--font-weight-semi-bold);\n\n &--to-merge {\n --pill-background-color: var();\n --pill-color: var(--mer-color__neutral-gray--400);\n --pill-border-color: var();\n }\n &--to-merge-marked {\n --pill-background-color: var();\n --pill-color: var(--mer-border-color__primary);\n --pill-border-color: var();\n }\n &--pending {\n --pill-background-color: var(--mer-color__tinted-primary--8);\n --pill-color: var(--mer-border-color__primary);\n --pill-border-color: var(--mer-color__tinted-primary--50);\n }\n &--warning {\n --pill-background-color: var(--mer-color__tinted-yellow--5);\n --pill-color: var(--mer-border-color__warning);\n --pill-border-color: var(--mer-color__tinted-yellow--60);\n }\n &--error {\n --pill-background-color: var(--mer-color__tinted-red--5);\n --pill-color: var(--mer-border-color__error);\n --pill-border-color: var(--mer-color__tinted-red--60);\n }\n &--merged {\n --pill-background-color: var(--mer-color__tinted-green--5);\n --pill-color: var(--mer-border-color__success);\n --pill-border-color: var(--mer-color__tinted-green--60);\n }\n &--transitioning {\n // used to hide the text, before updating the caption (smooth transtion)\n --pill-color: transparent;\n }\n}\n.merging-spinner-caption {\n display: flex;\n align-items: center;\n gap: 6px;\n $size: 14px;\n --status-circle-color: transparent;\n --status-circle-size: $size;\n --status-circle-inset-inline-start: 14px;\n --pill-color: var(--mer-border-color__primary);\n &::before {\n display: inline-block;\n content: \"\";\n\n @include spinner(\n $size,\n var(--mer-color__primary--300),\n var(--mer-color__tinted-primary--50)\n );\n }\n}\n.tabular-grid .button-secondary {\n --control__padding-block: var(--pill-padding-block);\n --control__padding-inline: var(--pill-padding-inline);\n font-size: inherit;\n font-weight: inherit;\n /* font-size: var(--pill-font-size); */\n}\n\n.tabular-grid .tabular-grid-cell--for-pill {\n --grid-cell__padding-block: 4px;\n align-items: center;\n justify-content: center;\n\n // --grid-cell__padding-inline: 0;\n}\n\n.tabular-grid.disabled-custom-selector .tabular-grid-cell::part(selector-label),\n.tabular-grid.disabled-custom-selector .tabular-grid-column::part(bar-selector),\n.tabular-grid.disabled-custom-selector .tabular-grid-cell::part(actions-icon) {\n pointer-events: none;\n opacity: 0.5;\n}\n.tabular-grid-column--settings-custom-selector,\n.tabular-grid-cell--settings-custom-selector {\n --grid-cell__padding-inline: 0;\n --grid-cell__padding-block: 0;\n}\n.tabular-grid-cell::part(actions-icon) {\n padding-block: 6px;\n}\nch-tabular-grid-cell.tabular-grid-cell::part(actions-icon) {\n block-size: 100%;\n display: block;\n background-size: 14px;\n padding-inline: 16px;\n}\n\n.tabular-grid-cell.no-checkbox-custom-selector::part(selector-label) {\n visibility: hidden;\n}\n\n.tabular-grid-row-actions::part(window) {\n background-color: var(--mer-surface__elevation--02) !important;\n}\n\n.tabular-grid-row .tabular-grid-cell:nth-child(3) {\n min-inline-size: 400px;\n}\n\n// - - - - - - - - - - - - - -\n// END OF WA\n// - - - - - - - - - - - - - -\n","import {\n Component,\n Host,\n h,\n Prop,\n Element,\n State,\n Method,\n JSX,\n Watch\n} from \"@stencil/core\";\n\nimport { MercuryBundles, getIconPath } from \"@genexus/mercury\";\nimport { Locale } from \"../../../common/locale\";\nimport {\n ChEditCustomEvent,\n TabularGridMarkingChangedEvent,\n TabularGridRowContextMenuEvent\n} from \"@genexus/chameleon-controls-library\";\n\nconst CSS_BUNDLES: MercuryBundles = [\n \"resets/box-sizing\",\n \"components/tabular-grid\",\n \"utils/form--full\",\n \"utils/layout\",\n \"utils/typography\",\n \"utils/spacing\",\n \"chameleon/scrollbar\"\n];\n\nconst COMBO_BOX_ALL_VALUE = \"all\";\n\nconst DETAIL_LABEL_CLASSES = \"detail__label body-semi-bold-s\";\n\nconst ADD_ICON = getIconPath({\n category: \"system\",\n name: \"add\",\n colorType: \"on-elevation\"\n});\nconst EDITED_ICON = getIconPath({\n category: \"system\",\n name: \"edit\",\n colorType: \"on-elevation\"\n});\nconst FILTER_ICON = getIconPath({\n category: \"window-tools\",\n name: \"filter\",\n colorType: \"on-elevation\"\n});\nconst SEARCH_ICON = getIconPath({\n category: \"system\",\n name: \"search\",\n colorType: \"on-elevation\"\n});\nconst SUBSTRACT_ICON = getIconPath({\n category: \"system\",\n name: \"substract\",\n colorType: \"on-elevation\"\n});\nconst WARNING_ICON = getIconPath({\n category: \"system\",\n name: \"warning\",\n colorType: \"warning\"\n});\nconst ERROR_ICON = getIconPath({\n category: \"system\",\n name: \"error\",\n colorType: \"error\"\n});\n\n@Component({\n tag: \"gx-ide-team-dev-bring-changes\",\n styleUrl: \"bring-changes.scss\",\n shadow: true,\n assetsDirs: [\"gx-ide-assets/team-dev-bring-changes\"]\n})\nexport class GxIdeTeamDevBringChanges {\n /**\n * The component hard-coded strings translations.\n */\n // eslint-disable-next-line @stencil-community/own-props-must-be-private\n #componentLocale: any;\n #commitLabel: string;\n #comboBoxStatesModel: { caption: string; value: ObjectStateForFilter }[];\n #checkedObjectsIdsArray: string[] = [];\n\n @Element() el: HTMLGxIdeTeamDevBringChangesElement;\n\n private tabularGridEl!: HTMLChTabularGridElement;\n\n /**\n * An array that holds the id's of the objects that have been merged already.\n */\n @State() alreadyMergedObjectsIdsArray: string[] = [];\n\n /**\n * It hols a boolean indicating if at least one object from the tabular-grid is checked, for merging.\n */\n @State() atLeastOneObjectIsChecked: boolean = false;\n\n /**\n * True while commitObjects hasn't been loaded or is empty. Used to display a loader.\n */\n @State() loading: boolean = true;\n\n /**\n * The current search filter value\n */\n @State() menuContextAction: ObjectActionTaken;\n\n /**\n * It hols a boolean indicating if at least one object from the tabular-grid is checked, for merging.\n */\n @State() objectsFiltered: CommitObject[] = [];\n\n /**\n * The current search filter value\n */\n @State() searchValue: string = \"\";\n\n /**\n * The current state filter value\n */\n @State() stateFilterValue: ObjectStateForFilter = COMBO_BOX_ALL_VALUE;\n\n /**\n * A set that stores the marked state of each object cell. This is necessary because filtering the grid * causes marked cells to lose their state.\n */\n @State() markedObjectsSet: Set<string> = new Set<string>();\n\n /**\n * A map that holds the current commit objects states (\"pending\" | \"warning\" | \"error\" | \"merged\")\n */\n @State() objectsStatesMap: Map<string, ObjectState> = new Map();\n @Watch(\"objectsStatesMap\")\n objectsStatesMapChanged(newCommitObjectsStateMap: Map<string, ObjectState>) {\n const someObjectIsMerging = [...newCommitObjectsStateMap.entries()].find(\n ([, state]) => state === \"merging\"\n );\n\n if (!someObjectIsMerging) {\n this.merging = false;\n }\n }\n\n /**\n * A map that holds object messages, if any, for objects that could not be merged (these objects are in a \"warning\" or \"error\" state)\n */\n @State() commitObjectsMessagesMap: Map<string, string> = new Map();\n\n /**\n * Set to true when objects are being mered. This helps disabling controls until all objects are done.\n */\n @State() merging: boolean = false;\n\n /**\n * Detail about the commit\n */\n @Prop() readonly commitDetail: CommitDetail;\n\n /**\n * Commit information\n */\n @Prop() readonly commitInformation: CommitInformation[] = [];\n\n /**\n * Array of commit\n */\n @Prop() readonly commitObjects: CommitObject[] = [];\n @Watch(\"commitObjects\")\n commitObjectsChanged(newCommitObjects: CommitObject[]) {\n if (newCommitObjects.length) {\n // This is the first and only objects asignment\n this.loading = false;\n\n // All commit objects begin as \"pending to merge\"\n newCommitObjects.forEach(commitObject => {\n this.objectsStatesMap.set(commitObject.id, \"to-merge\");\n });\n\n this.objectsFiltered = this.commitObjects;\n }\n }\n\n /**\n * Determines whether the row options are enabled or not.\n */\n @Prop() readonly enableRowOptions: boolean = false;\n\n /**\n * Determines whether the filters are rendered or not.\n */\n @Prop() readonly hideFilters: boolean = false;\n\n /**\n * The callback that is triggered when the user wants to merge more than one commit.\n */\n @Prop() readonly mergeObjectsCallback!: MergeObjectsCallback;\n\n /**\n * If true, the \"Action\" column will display a button instead of a pill, only when the action is\n */\n @Prop() readonly mergePillAsButton: boolean;\n\n async componentWillLoad() {\n this.#componentLocale = await Locale.getComponentStrings(this.el);\n this.#commitLabel =\n this.commitInformation.length > 1\n ? this.#componentLocale.commmits\n : this.#componentLocale.commmit;\n\n // Initiate \"states\" combo box filter\n this.#comboBoxStatesModel = [\n {\n caption: this.#componentLocale.states.all,\n value: COMBO_BOX_ALL_VALUE\n },\n {\n caption: this.#componentLocale.states[\"to-merge\"],\n value: \"to-merge\"\n },\n {\n caption: this.#componentLocale.states.warning,\n value: \"warning\"\n },\n {\n caption: this.#componentLocale.states.error,\n value: \"error\"\n },\n {\n caption: this.#componentLocale.states.merged,\n value: \"merged\"\n }\n ];\n\n if (this.commitObjects?.length) {\n // if commitObjects already set...\n this.commitObjectsChanged(this.commitObjects);\n }\n }\n\n #formatComments = (): string => {\n if (this.commitInformation.length === 1) {\n // return comment without revison number\n return this.commitInformation[0].comment;\n }\n\n // return comments with revison number\n let mergedComment = \"\";\n this.commitInformation.map((commit, i) => {\n const isLast = i === this.commitInformation.length - 1;\n const afterCommentBreakline = isLast ? \"\" : \"\\n\\n\";\n mergedComment += `Commit ${commit.id}:\\n${commit.comment}${afterCommentBreakline}`;\n });\n\n return mergedComment;\n };\n\n #mergeCheckedClickedHandler = async () => {\n this.merging = true;\n const newobjectsStatesMap = new Map(this.objectsStatesMap);\n this.#checkedObjectsIdsArray.forEach(checkedObjectId => {\n newobjectsStatesMap.set(checkedObjectId, \"merging\");\n });\n\n this.objectsStatesMap = newobjectsStatesMap;\n await this.mergeObjectsCallback(this.#checkedObjectsIdsArray);\n };\n\n #mergeSingleObject: (objectId: string) => () => void =\n objectId => async () => {\n this.merging = true;\n const newobjectsStatesMap = new Map(this.objectsStatesMap);\n newobjectsStatesMap.set(objectId, \"merging\");\n this.objectsStatesMap = newobjectsStatesMap;\n await this.mergeObjectsCallback([objectId]);\n };\n\n #renderActionCellContent = (\n actionTaken: ObjectActionTaken\n ): JSX.Element[] => {\n let icon: string;\n let caption: string;\n let iconColor: string;\n\n if (actionTaken === \"Deleted\") {\n icon = SUBSTRACT_ICON;\n caption = this.#componentLocale.objects.actions.delete;\n iconColor = \"--mer-icon__error\";\n } else if (actionTaken === \"Inserted\") {\n icon = ADD_ICON;\n caption = this.#componentLocale.objects.actions.insert;\n iconColor = \"--mer-icon__success\";\n } else {\n // modified\n icon = EDITED_ICON;\n caption = this.#componentLocale.objects.actions.modify;\n iconColor = \"--mer-icon__warning\";\n }\n\n return (\n <span class=\"custom-icon-text-wrapper\">\n <ch-image\n type=\"mask\"\n class=\"icon-md\"\n src={icon}\n style={{ backgroundColor: `var(${iconColor})` }}\n ></ch-image>\n {`${caption}`}\n </span>\n );\n };\n\n #renderCommitsNumbers = (onlyNumbers: boolean = false): string => {\n if (this.commitInformation?.length > 1) {\n // more than one commit\n return onlyNumbers\n ? `${this.commitInformation[0].id} ... ${\n this.commitInformation[this.commitInformation.length - 1].id\n }`\n : `${this.#commitLabel} ${this.commitInformation[0].id} ... ${\n this.commitInformation[this.commitInformation.length - 1].id\n }`;\n } else if (this.commitInformation?.length === 1) {\n // just one commit\n return onlyNumbers\n ? this.commitInformation[0].id\n : `${this.#commitLabel} ${this.commitInformation[0].id}`;\n } else {\n // Probably commits have not been loaded yet (loading state)\n return onlyNumbers\n ? `${this.#componentLocale.loading}`\n : `${this.#commitLabel} ${this.#componentLocale.loading}`;\n }\n };\n\n #renderFormatedDate = (date: Date): string => {\n const dateObject = new Date(date);\n const lang = navigator.languages?.[0] || navigator.language;\n\n return `${dateObject.toLocaleDateString(\n lang\n )} ${dateObject.toLocaleTimeString(lang, {\n hour: \"2-digit\",\n minute: \"2-digit\",\n hour12: false\n })}`;\n };\n\n #renderObjectActions = (): JSX.Element[] => {\n const openDisabled = false;\n const compareWithCurrentRevisionDisabled =\n this.menuContextAction === \"Inserted\";\n const revisionChangesDisabled = this.menuContextAction === \"Inserted\";\n const previewMergeDisabled = false;\n\n return [\n <button type=\"button\" class=\"button-tertiary\" disabled={openDisabled}>\n {this.#componentLocale.objectActions.open}\n </button>,\n <button\n type=\"button\"\n class=\"button-tertiary\"\n disabled={compareWithCurrentRevisionDisabled}\n >\n {this.#componentLocale.objectActions.compareWithCurrentRevision}\n </button>,\n <button\n type=\"button\"\n class=\"button-tertiary\"\n disabled={revisionChangesDisabled}\n >\n {this.#componentLocale.objectActions.revisionChanges}\n </button>,\n <button\n type=\"button\"\n class=\"button-tertiary\"\n disabled={previewMergeDisabled}\n >\n {this.#componentLocale.objectActions.previewMerge}\n </button>\n ];\n };\n\n #renderObjectState = (\n objectType: ObjectState,\n objectId: string\n ): JSX.Element[] => {\n if (objectType === \"merging\") {\n return (\n <span class=\"merging-spinner-caption\">\n {this.#componentLocale.states.merging}\n </span>\n );\n }\n const classes = `pill pill--${objectType}`;\n if (\n this.mergePillAsButton &&\n (objectType === \"to-merge\" || objectType === \"to-merge-marked\")\n ) {\n return (\n <button\n class={{ [classes]: true, \"button-secondary\": true }}\n onClick={this.#mergeSingleObject(objectId)}\n >\n {this.#componentLocale.statesForButton[objectType]}\n </button>\n );\n } else {\n return (\n <span class={classes}>{this.#componentLocale.states[objectType]}</span>\n );\n }\n };\n\n #renderObjectType = (objectType: ObjectType): JSX.Element[] => {\n const icon = objectType.icon;\n\n return (\n <span class=\"custom-icon-text-wrapper\">\n <ch-image class=\"icon-md\" src={icon}></ch-image>\n {`${objectType.name}`}\n </span>\n );\n };\n\n #renderObjectsRows = (): JSX.Element[] => {\n return this.objectsFiltered.map(commitObject => {\n const marked = this.markedObjectsSet.has(commitObject.id);\n\n const alreadyMerged = this.alreadyMergedObjectsIdsArray.find(\n checkedObjectId => checkedObjectId === commitObject.id\n );\n const errorOrWarningMessage = this.commitObjectsMessagesMap.get(\n commitObject.id\n );\n const state = this.objectsStatesMap.get(commitObject.id);\n\n let MESSAGE_ICON;\n if (state === \"error\") {\n MESSAGE_ICON = ERROR_ICON;\n } else if (state === \"warning\") {\n MESSAGE_ICON = WARNING_ICON;\n }\n\n return (\n <ch-tabular-grid-row\n class=\"tabular-grid-row\"\n key={commitObject.id}\n rowid={commitObject.id}\n ref={(el: HTMLElement) =>\n marked && el?.setAttribute(\"marked\", \"true\")\n }\n >\n <ch-tabular-grid-cell\n cell-type=\"rich\"\n row-selector=\"true\"\n class={{\n \"tabular-grid-cell\": true,\n \"no-checkbox-custom-selector\": alreadyMerged\n }}\n size=\"max-content\"\n >\n {commitObject.name}\n </ch-tabular-grid-cell>\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n {this.#renderObjectType(commitObject.type)}\n </ch-tabular-grid-cell>\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n {commitObject.description}\n </ch-tabular-grid-cell>\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n {this.#renderActionCellContent(commitObject.actionTaken)}\n </ch-tabular-grid-cell>\n <ch-tabular-grid-cell class=\"tabular-grid-cell tabular-grid-cell--for-pill\">\n {this.#renderObjectState(\n this.objectsStatesMap.get(commitObject.id),\n commitObject.id\n )}\n </ch-tabular-grid-cell>\n <ch-tabular-grid-cell\n class=\"tabular-grid-cell tabular-grid-cell--settings-custom-selector\"\n cell-type=\"rich\"\n row-actions=\"true\"\n ></ch-tabular-grid-cell>\n {errorOrWarningMessage && (\n <ch-tabular-grid-rowset class=\"tabular-grid-rowset\">\n <ch-tabular-grid-rowset-empty\n class={{ \"tabular-grid-rowset-empty\": true, [state]: true }}\n >\n <p class=\"warning-error-description\">\n <ch-image\n class=\"icon-md warning-error-icon\"\n src={MESSAGE_ICON}\n ></ch-image>\n {errorOrWarningMessage}\n </p>\n </ch-tabular-grid-rowset-empty>\n </ch-tabular-grid-rowset>\n )}\n </ch-tabular-grid-row>\n );\n });\n };\n\n #rowContextMenuHandler = (\n event: CustomEvent<TabularGridRowContextMenuEvent>\n ) => {\n const rowId = event.detail.rowId;\n this.#updateMenuContextActions(rowId);\n };\n\n #rowMarkingChangedHandler = (\n event: CustomEvent<TabularGridMarkingChangedEvent>\n ) => {\n const newobjectsMarkedSet = new Set<string>();\n const newobjectsStatesMap = new Map(this.objectsStatesMap);\n const markedRowsIds = event.detail.rowsId;\n const checkedObjectsIgnoringAlreadyMerged = markedRowsIds.filter(\n markedObjectId =>\n !this.alreadyMergedObjectsIdsArray.includes(markedObjectId)\n );\n this.#checkedObjectsIdsArray = [...checkedObjectsIgnoringAlreadyMerged];\n\n // Update markedObjectsSet\n this.#checkedObjectsIdsArray.forEach(checkedObjectId => {\n newobjectsMarkedSet.add(checkedObjectId);\n });\n this.markedObjectsSet = newobjectsMarkedSet;\n\n this.atLeastOneObjectIsChecked = markedRowsIds.length > 0;\n\n newobjectsStatesMap.forEach(objectId => {\n const objectCurrentState = this.objectsStatesMap.get(objectId);\n if (\n objectCurrentState !== \"to-merge\" &&\n objectCurrentState !== \"to-merge-marked\"\n ) {\n return;\n }\n\n const markedRowIndex = markedRowsIds.findIndex(id => id === objectId);\n if (markedRowIndex !== -1) {\n newobjectsStatesMap.set(objectId, \"to-merge-marked\");\n markedRowsIds.splice(markedRowIndex, 1);\n markedRowsIds;\n } else {\n newobjectsStatesMap.set(objectId, \"to-merge\");\n }\n });\n\n this.objectsStatesMap = newobjectsStatesMap;\n };\n\n #searchInputHandler = (event: ChEditCustomEvent<string> | InputEvent) => {\n this.searchValue = (event.detail as string).toLowerCase();\n this.#updateFilteredObjects();\n };\n\n #stateChangedHandler = (event: CustomEvent<string> | InputEvent) => {\n this.stateFilterValue = event.detail as ObjectStateForFilter;\n this.#updateFilteredObjects();\n };\n\n #updateMenuContextActions = (currentObjectContextMenuId: string): void => {\n const object = this.commitObjects.find(\n commitObject => commitObject.id === currentObjectContextMenuId\n );\n this.menuContextAction = object.actionTaken;\n };\n\n #updateFilteredObjects = () => {\n let filteredObjects = [...this.commitObjects];\n\n // filter by state (ch-combo-box-render) ...\n if (this.stateFilterValue !== \"all\") {\n filteredObjects = filteredObjects.filter(object => {\n const objectState = this.objectsStatesMap.get(object.id);\n return objectState === this.stateFilterValue;\n });\n }\n\n // and filter by value (ch-edit) as well\n filteredObjects = filteredObjects.filter(object => {\n const includesName = object.name.toLowerCase().includes(this.searchValue);\n\n const includesType = object.type.name\n .toLowerCase()\n .includes(this.searchValue);\n\n const includesDescription = object.description\n .toLowerCase()\n .includes(this.searchValue);\n\n if (includesName || includesType || includesDescription) {\n return true;\n }\n return false;\n });\n\n this.objectsFiltered = filteredObjects;\n };\n\n /**\n * It allows the host updating an object state, by providing the object id.\n * @param objectId The ID of the object to update.\n * @param newState The new state to set on the object.\n * @param message Optional message explaining the change.\n *\n * @example\n * bringChanges.updateObjectState('obj-24', \"merging\", null);\n * bringChanges.updateObjectState('obj-27', \"error\", \"The server did not respond.\");\n */\n @Method()\n async updateObjectState(\n objectId: string,\n newState: ObjectState,\n message: string\n ) {\n // update object state\n const newobjectsStatesMap = new Map(this.objectsStatesMap);\n newobjectsStatesMap.set(objectId, newState);\n this.objectsStatesMap = newobjectsStatesMap;\n\n // add message if state is \"warning\" or \"error\"\n if (message?.length > 0) {\n this.commitObjectsMessagesMap.set(objectId, message);\n }\n\n if (newState === \"merged\") {\n // remove from checked\n this.#checkedObjectsIdsArray = this.#checkedObjectsIdsArray.filter(\n checkedObject => checkedObject !== objectId\n );\n\n // add to \"already merged\". This will hide the checkbox\n this.alreadyMergedObjectsIdsArray.push(objectId);\n\n // unmark checkbox:\n this.tabularGridEl.markRow(objectId, false);\n\n // remove message if any\n this.commitObjectsMessagesMap.delete(objectId);\n }\n }\n\n render() {\n const enableRichRowSelector =\n this.alreadyMergedObjectsIdsArray.length !== this.commitObjects.length;\n\n const disableControls = this.merging || this.loading;\n return (\n <Host class=\"widget\">\n <ch-theme model={CSS_BUNDLES}></ch-theme>\n <section class=\"section\">\n <header class=\"header spacing-body-inline spacing-body-block-start\">\n <div\n // header details\n class=\"header__detail\"\n >\n <p class=\"detail__title subtitle-semi-bold-xs\">\n {this.#componentLocale.commitDetail.bringChangesDetail}\n </p>\n <p class=\"detail__commit-name subtitle-semi-bold-s\">\n {this.#renderCommitsNumbers()}\n </p>\n <div\n // genexus server\n class=\"detail__genexus-server field field-block\"\n >\n <span class={DETAIL_LABEL_CLASSES}>\n {this.#componentLocale.commitDetail.genexusServer}\n </span>\n <a\n class=\"detail__link body-regular-s\"\n href={this.commitDetail.genexusServer}\n target=\"_blank\"\n >\n {this.commitDetail.genexusServer}\n </a>\n </div>\n\n <div\n // knowledge base\n class=\"detail__knowledge-base field field-block\"\n >\n <span class={DETAIL_LABEL_CLASSES}>\n {this.#componentLocale.commitDetail.knowledgeBase}\n </span>\n <p class=\"body-regular-s\">{this.commitDetail.knowledgeBase}</p>\n </div>\n\n <div\n // current version\n class=\"detail__current-version field field-block\"\n >\n <span class={DETAIL_LABEL_CLASSES}>\n {this.#componentLocale.commitDetail.currentVersion}\n </span>\n <a class=\"body-regular-s\">{this.commitDetail.currentVersion}</a>\n </div>\n\n <div\n // merge from version\n class=\"detail__merge-from-version field field-block\"\n >\n <span class={DETAIL_LABEL_CLASSES}>\n {this.#componentLocale.commitDetail.mergeFromVersion}\n </span>\n <p class=\"body-regular-s\">\n {this.commitDetail.mergeFromVersion}\n </p>\n </div>\n </div>\n <div\n // header information\n class=\"header__information\"\n >\n <p class=\"information__title subtitle-semi-bold-xs\">\n {this.#componentLocale.commitInformation.title}\n </p>\n <div\n // header information (col-1)\n class=\"information__col-1\"\n >\n <div\n // IDs\n class=\"field field-block\"\n >\n <span class={DETAIL_LABEL_CLASSES}>\n {this.commitInformation.length === 1\n ? this.#componentLocale.commitInformation.id\n : this.#componentLocale.commitInformation.ids}\n </span>\n <p class=\"body-regular-s\">\n {this.#renderCommitsNumbers(true)}\n </p>\n </div>\n {this.commitInformation.length === 1 ? (\n <div class=\"field field-block\">\n <span class={DETAIL_LABEL_CLASSES}>\n {this.#componentLocale.commitInformation.date}\n </span>\n <p class=\"body-regular-s\">\n {this.#renderFormatedDate(this.commitInformation[0].date)}\n </p>\n </div>\n ) : (\n [\n <div class=\"field field-block\">\n <span class={DETAIL_LABEL_CLASSES}>\n {this.#componentLocale.commitInformation.from}\n </span>\n <p class=\"body-regular-s\">\n {this.#renderFormatedDate(\n this.commitInformation[0].date\n )}\n </p>\n </div>,\n <div class=\"field field-block\">\n <span class={DETAIL_LABEL_CLASSES}>\n {this.#componentLocale.commitInformation.to}\n </span>\n <p class=\"body-regular-s\">\n {this.#renderFormatedDate(\n this.commitInformation[\n this.commitInformation.length - 1\n ].date\n )}\n </p>\n </div>\n ]\n )}\n </div>\n\n <div\n // header information (col-2)\n class=\"information__col-2\"\n >\n <div\n // To\n class=\"field field-block\"\n >\n <label class={DETAIL_LABEL_CLASSES} htmlFor=\"commit-comments\">\n {this.commitInformation.length > 1\n ? this.#componentLocale.commitInformation.comments\n : this.#componentLocale.commitInformation.comment}\n </label>\n <div class=\"input-comments-container\">\n <ch-edit\n id=\"commit-comments\"\n class=\"input scrollable input-comments body-regular-s\"\n type=\"text\"\n multiline\n readonly\n value={this.#formatComments()}\n ></ch-edit>\n </div>\n </div>\n </div>\n </div>\n </header>\n <div\n class={{\n \"controls-container\": true,\n \"filter\": !this.hideFilters,\n \"spacing-body-inline\": true\n }}\n >\n {!this.hideFilters && [\n <ch-edit\n class=\"input\"\n disabled={disableControls}\n startImgSrc={SEARCH_ICON}\n placeholder={this.#componentLocale.filter.searchPlaceholder}\n type=\"search\"\n onInput={this.#searchInputHandler}\n ></ch-edit>,\n <ch-combo-box-render\n class=\"combo-box\"\n disabled={disableControls}\n model={this.#comboBoxStatesModel}\n value={this.stateFilterValue}\n onInput={this.#stateChangedHandler}\n placeholder={this.#componentLocale.filter.statePlaceholder}\n ></ch-combo-box-render>\n ]}\n\n <button\n class=\"button-primary button-merge-checked\"\n disabled={!this.atLeastOneObjectIsChecked || disableControls}\n onClick={this.#mergeCheckedClickedHandler}\n >\n {this.#componentLocale.filter.mergeChecked}\n </button>\n </div>\n <div class=\"main spacing-body\">\n {this.commitObjects.length ? (\n <ch-tabular-grid\n class={{\n \"tabular-grid\": true,\n \"objects-tabular-grid\": true,\n \"disabled-custom-selector\": this.merging,\n \"empty-result\": this.objectsFiltered.length === 0\n }}\n keyboardNavigationMode=\"focus\"\n rowSelectionMode=\"multiple\"\n onRowMarkingChanged={this.#rowMarkingChangedHandler}\n onRowContextMenu={this.#rowContextMenuHandler}\n ref={el =>\n (this.tabularGridEl = el as HTMLChTabularGridElement)\n }\n >\n <ch-tabular-grid-columnset class=\"tabular-grid-column-set\">\n <ch-tabular-grid-column\n class=\"tabular-grid-column\"\n columnId=\"name\"\n columnName={this.#componentLocale.objects.name}\n columnType=\"rich\"\n richRowSelector={enableRichRowSelector}\n richRowSelectorMode=\"mark\"\n settingable={false}\n size=\"max-content\"\n />\n <ch-tabular-grid-column\n class=\"tabular-grid-column\"\n columnId=\"type\"\n columnName={this.#componentLocale.objects.type}\n settingable={false}\n size=\"max-content\"\n />\n <ch-tabular-grid-column\n class=\"tabular-grid-column\"\n columnId=\"description\"\n columnName={this.#componentLocale.objects.description}\n settingable={false}\n size=\"auto\"\n />\n <ch-tabular-grid-column\n class=\"tabular-grid-column\"\n columnId=\"action\"\n columnName={this.#componentLocale.objects.action}\n settingable={false}\n size=\"max-content\"\n />\n <ch-tabular-grid-column\n // size of this column should the enough for the largest pill, and no more.\n // this prevents layout shifts when pills state changes.\n class=\"tabular-grid-column\"\n columnId=\"status\"\n columnName={this.#componentLocale.objects.status}\n settingable={false}\n size=\"100px\"\n />\n <ch-tabular-grid-column\n class=\"tabular-grid-column tabular-grid-column--settings-custom-selector\"\n columnId=\"actions\"\n columnName=\"Actions\"\n columnNameHidden\n size=\"min-content\"\n columnType=\"rich\"\n richRowActions\n settingable={false}\n ></ch-tabular-grid-column>\n </ch-tabular-grid-columnset>\n {this.#renderObjectsRows()}\n {this.enableRowOptions && (\n <ch-tabular-grid-row-actions\n class=\"tabular-grid-row-actions\"\n showOnRowActions\n >\n {this.#renderObjectActions()}\n </ch-tabular-grid-row-actions>\n )}\n {this.enableRowOptions && (\n <ch-tabular-grid-row-actions\n class=\"tabular-grid-row-actions\"\n showOnRowContext\n >\n {this.#renderObjectActions()}\n </ch-tabular-grid-row-actions>\n )}\n\n <ch-tabular-grid-rowset class=\"tabular-grid-rowset\">\n {this.objectsFiltered.length === 0 && (\n <ch-tabular-grid-rowset-empty>\n <gx-ide-empty-state\n class=\"empty-state\"\n isAnimated\n stateIconSrc={FILTER_ICON}\n stateTitle=\"No object matched your filter\"\n ></gx-ide-empty-state>\n </ch-tabular-grid-rowset-empty>\n )}\n </ch-tabular-grid-rowset>\n </ch-tabular-grid>\n ) : (\n <gx-ide-loader\n cancelLabel={this.#componentLocale.loader.cancelLabel}\n loaderTitle={this.#componentLocale.loader.title}\n description={this.#componentLocale.loader.description}\n show\n class=\"loader\"\n ></gx-ide-loader>\n )}\n </div>\n </section>\n </Host>\n );\n }\n}\n\nexport type CommitDetail = {\n genexusServer: string;\n knowledgeBase: string;\n currentVersion: string;\n mergeFromVersion: string;\n};\n\nexport type CommitInformation = {\n id: string;\n comment: string;\n date: Date;\n};\n\nexport type CommitObject = {\n id: string;\n date: Date;\n name: string;\n type: ObjectType;\n description: string;\n actionTaken: ObjectActionTaken;\n};\n\nexport type ObjectActionTaken =\n | \"Inserted\"\n | \"Deleted\"\n | \"Modified\"\n | \"Unchanged\"\n | \"Unknown\";\n\nexport type ObjectState =\n | \"to-merge\"\n | \"to-merge-marked\"\n | \"merging\"\n | \"pending\"\n | \"warning\"\n | \"error\"\n | \"merged\";\n\ntype ObjectStateForFilter =\n | Extract<ObjectState, \"to-merge\" | \"warning\" | \"error\" | \"merged\">\n | \"all\";\n\nexport type ObjectType = {\n name: string;\n icon: string;\n};\n\nexport type MergeObjectsCallback = (objectsIds: string[]) => Promise<void>;\n"],"mappings":"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"}
|