@genexus/genexus-ide-ui 1.1.71 → 1.1.73
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-create-kb-from-server.cjs.entry.js +15 -3
- package/dist/cjs/gx-ide-create-kb-from-server.cjs.entry.js.map +1 -1
- package/dist/cjs/gx-ide-restore-version.cjs.entry.js +15 -3
- package/dist/cjs/gx-ide-restore-version.cjs.entry.js.map +1 -1
- package/dist/cjs/gx-ide-select-kb-items.cjs.entry.js +28 -17
- package/dist/cjs/gx-ide-select-kb-items.cjs.entry.js.map +1 -1
- package/dist/cjs/gx-ide-share-kb.cjs.entry.js +15 -3
- package/dist/cjs/gx-ide-share-kb.cjs.entry.js.map +1 -1
- package/dist/cjs/gx-ide-team-dev-history.cjs.entry.js +18 -51
- package/dist/cjs/gx-ide-team-dev-history.cjs.entry.js.map +1 -1
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/collection/components/restore-version/restore-version.js +40 -3
- package/dist/collection/components/restore-version/restore-version.js.map +1 -1
- package/dist/collection/components/select-kb-items/select-kb-items.js +75 -28
- package/dist/collection/components/select-kb-items/select-kb-items.js.map +1 -1
- package/dist/collection/components/team-dev/create-kb-from-server/create-kb-from-server.js +40 -3
- package/dist/collection/components/team-dev/create-kb-from-server/create-kb-from-server.js.map +1 -1
- package/dist/collection/components/team-dev/history/history.js +50 -69
- package/dist/collection/components/team-dev/history/history.js.map +1 -1
- package/dist/collection/components/team-dev/share-kb/share-kb.js +40 -3
- package/dist/collection/components/team-dev/share-kb/share-kb.js.map +1 -1
- package/dist/components/gx-ide-create-kb-from-server.js +17 -4
- package/dist/components/gx-ide-create-kb-from-server.js.map +1 -1
- package/dist/components/gx-ide-restore-version.js +17 -4
- package/dist/components/gx-ide-restore-version.js.map +1 -1
- package/dist/components/gx-ide-share-kb.js +17 -4
- package/dist/components/gx-ide-share-kb.js.map +1 -1
- package/dist/components/gx-ide-team-dev-history.js +21 -58
- package/dist/components/gx-ide-team-dev-history.js.map +1 -1
- package/dist/components/select-kb-items.js +32 -20
- package/dist/components/select-kb-items.js.map +1 -1
- package/dist/esm/genexus-ide-ui.js +1 -1
- package/dist/esm/gx-ide-create-kb-from-server.entry.js +15 -3
- package/dist/esm/gx-ide-create-kb-from-server.entry.js.map +1 -1
- package/dist/esm/gx-ide-restore-version.entry.js +15 -3
- package/dist/esm/gx-ide-restore-version.entry.js.map +1 -1
- package/dist/esm/gx-ide-select-kb-items.entry.js +28 -17
- package/dist/esm/gx-ide-select-kb-items.entry.js.map +1 -1
- package/dist/esm/gx-ide-share-kb.entry.js +15 -3
- package/dist/esm/gx-ide-share-kb.entry.js.map +1 -1
- package/dist/esm/gx-ide-team-dev-history.entry.js +18 -51
- package/dist/esm/gx-ide-team-dev-history.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/{p-8897c6de.entry.js → p-2d6228e8.entry.js} +201 -194
- package/dist/genexus-ide-ui/p-2d6228e8.entry.js.map +1 -0
- package/dist/genexus-ide-ui/{p-8dedbcd9.entry.js → p-519fed7a.entry.js} +67 -56
- package/dist/genexus-ide-ui/p-519fed7a.entry.js.map +1 -0
- package/dist/genexus-ide-ui/{p-ac79f7e8.entry.js → p-65b69fe0.entry.js} +79 -69
- package/dist/genexus-ide-ui/p-65b69fe0.entry.js.map +1 -0
- package/dist/genexus-ide-ui/{p-941f470f.entry.js → p-679f037e.entry.js} +44 -34
- package/dist/genexus-ide-ui/p-679f037e.entry.js.map +1 -0
- package/dist/genexus-ide-ui/{p-3ca03a38.entry.js → p-74f8bd45.entry.js} +60 -90
- package/dist/genexus-ide-ui/p-74f8bd45.entry.js.map +1 -0
- package/dist/types/components/restore-version/restore-version.d.ts +4 -0
- package/dist/types/components/select-kb-items/select-kb-items.d.ts +12 -3
- package/dist/types/components/team-dev/create-kb-from-server/create-kb-from-server.d.ts +4 -0
- package/dist/types/components/team-dev/history/history.d.ts +3 -12
- package/dist/types/components/team-dev/share-kb/share-kb.d.ts +4 -0
- package/dist/types/components.d.ts +34 -20
- package/package.json +1 -1
- package/dist/genexus-ide-ui/p-3ca03a38.entry.js.map +0 -1
- package/dist/genexus-ide-ui/p-8897c6de.entry.js.map +0 -1
- package/dist/genexus-ide-ui/p-8dedbcd9.entry.js.map +0 -1
- package/dist/genexus-ide-ui/p-941f470f.entry.js.map +0 -1
- package/dist/genexus-ide-ui/p-ac79f7e8.entry.js.map +0 -1
|
@@ -636,6 +636,10 @@ export namespace Components {
|
|
|
636
636
|
"selectKBVersionsCallback": (
|
|
637
637
|
selectedKB: string
|
|
638
638
|
) => Promise<KBVersion[]>;
|
|
639
|
+
/**
|
|
640
|
+
* Suspends or reactivates the shortcuts
|
|
641
|
+
*/
|
|
642
|
+
"suspendShortcuts": (suspendShortcuts: boolean) => Promise<void>;
|
|
639
643
|
}
|
|
640
644
|
interface GxIdeCurlInspector {
|
|
641
645
|
/**
|
|
@@ -1946,6 +1950,10 @@ export namespace Components {
|
|
|
1946
1950
|
* Callback invoked by pressing the ellipsis in the version selector.
|
|
1947
1951
|
*/
|
|
1948
1952
|
"selectSourceVersionCallback": () => Promise<KBVersion[]>;
|
|
1953
|
+
/**
|
|
1954
|
+
* Suspends or reactivates the shortcuts
|
|
1955
|
+
*/
|
|
1956
|
+
"suspendShortcuts": (suspendShortcuts: boolean) => Promise<void>;
|
|
1949
1957
|
/**
|
|
1950
1958
|
* The target version to which the restore will be made.
|
|
1951
1959
|
*/
|
|
@@ -2001,13 +2009,14 @@ export namespace Components {
|
|
|
2001
2009
|
info: ContextMenuInfo
|
|
2002
2010
|
) => Promise<void>;
|
|
2003
2011
|
/**
|
|
2004
|
-
*
|
|
2012
|
+
* Callback to load the items list model
|
|
2005
2013
|
*/
|
|
2006
|
-
"
|
|
2014
|
+
"loadItemsCallback": () => Promise<ItemNode[]>;
|
|
2007
2015
|
/**
|
|
2008
2016
|
* This define if the selection is unique or not
|
|
2009
2017
|
*/
|
|
2010
2018
|
"multiSelection"?: boolean;
|
|
2019
|
+
"reloadItems": () => Promise<void>;
|
|
2011
2020
|
/**
|
|
2012
2021
|
* Callback emitted when the items selection change
|
|
2013
2022
|
*/
|
|
@@ -2036,6 +2045,10 @@ export namespace Components {
|
|
|
2036
2045
|
* Allow to update the selected items
|
|
2037
2046
|
*/
|
|
2038
2047
|
"updateSelection": (selectedItemsIds: string[]) => Promise<void>;
|
|
2048
|
+
/**
|
|
2049
|
+
* Defines whether to show a loader while loading items
|
|
2050
|
+
*/
|
|
2051
|
+
"useLoader"?: boolean;
|
|
2039
2052
|
}
|
|
2040
2053
|
interface GxIdeSelectUserTeam {
|
|
2041
2054
|
/**
|
|
@@ -2115,6 +2128,10 @@ export namespace Components {
|
|
|
2115
2128
|
"shareKBCallback": (
|
|
2116
2129
|
data: ShareKBData
|
|
2117
2130
|
) => Promise<FormSubmitResult>;
|
|
2131
|
+
/**
|
|
2132
|
+
* Suspends or reactivates the shortcuts
|
|
2133
|
+
*/
|
|
2134
|
+
"suspendShortcuts": (suspendShortcuts: boolean) => Promise<void>;
|
|
2118
2135
|
}
|
|
2119
2136
|
interface GxIdeSignIn {
|
|
2120
2137
|
/**
|
|
@@ -2436,21 +2453,18 @@ export namespace Components {
|
|
|
2436
2453
|
*/
|
|
2437
2454
|
"loadDetailCallback": LoadDetailCallback;
|
|
2438
2455
|
/**
|
|
2439
|
-
* Callback
|
|
2456
|
+
* Callback to load the items list model
|
|
2440
2457
|
*/
|
|
2441
|
-
"
|
|
2458
|
+
"loadVersionsCallback": () => Promise<ItemNode1[]>;
|
|
2459
|
+
"reload": () => Promise<void>;
|
|
2442
2460
|
/**
|
|
2443
|
-
*
|
|
2461
|
+
* Callback invoked when the selected version changes. As parameter receive the selected version id
|
|
2444
2462
|
*/
|
|
2445
|
-
"
|
|
2463
|
+
"selectedVersionChangeCallback": SelectedVersionChangeCallback;
|
|
2446
2464
|
/**
|
|
2447
2465
|
* Possible values of type filter
|
|
2448
2466
|
*/
|
|
2449
2467
|
"types": ObjectType1[];
|
|
2450
|
-
/**
|
|
2451
|
-
* List of versions to show in the versions tree
|
|
2452
|
-
*/
|
|
2453
|
-
"versions": ItemNode1[];
|
|
2454
2468
|
}
|
|
2455
2469
|
interface GxIdeTeamDevPreview {
|
|
2456
2470
|
/**
|
|
@@ -5901,9 +5915,9 @@ declare namespace LocalJSX {
|
|
|
5901
5915
|
info: ContextMenuInfo
|
|
5902
5916
|
) => Promise<void>;
|
|
5903
5917
|
/**
|
|
5904
|
-
*
|
|
5918
|
+
* Callback to load the items list model
|
|
5905
5919
|
*/
|
|
5906
|
-
"
|
|
5920
|
+
"loadItemsCallback": () => Promise<ItemNode[]>;
|
|
5907
5921
|
/**
|
|
5908
5922
|
* This define if the selection is unique or not
|
|
5909
5923
|
*/
|
|
@@ -5924,6 +5938,10 @@ declare namespace LocalJSX {
|
|
|
5924
5938
|
* This define if the checks are unique or not
|
|
5925
5939
|
*/
|
|
5926
5940
|
"singleChecks"?: boolean;
|
|
5941
|
+
/**
|
|
5942
|
+
* Defines whether to show a loader while loading items
|
|
5943
|
+
*/
|
|
5944
|
+
"useLoader"?: boolean;
|
|
5927
5945
|
}
|
|
5928
5946
|
interface GxIdeSelectUserTeam {
|
|
5929
5947
|
/**
|
|
@@ -6312,21 +6330,17 @@ declare namespace LocalJSX {
|
|
|
6312
6330
|
*/
|
|
6313
6331
|
"loadDetailCallback"?: LoadDetailCallback;
|
|
6314
6332
|
/**
|
|
6315
|
-
* Callback
|
|
6333
|
+
* Callback to load the items list model
|
|
6316
6334
|
*/
|
|
6317
|
-
"
|
|
6335
|
+
"loadVersionsCallback": () => Promise<ItemNode1[]>;
|
|
6318
6336
|
/**
|
|
6319
|
-
*
|
|
6337
|
+
* Callback invoked when the selected version changes. As parameter receive the selected version id
|
|
6320
6338
|
*/
|
|
6321
|
-
"
|
|
6339
|
+
"selectedVersionChangeCallback"?: SelectedVersionChangeCallback;
|
|
6322
6340
|
/**
|
|
6323
6341
|
* Possible values of type filter
|
|
6324
6342
|
*/
|
|
6325
6343
|
"types"?: ObjectType1[];
|
|
6326
|
-
/**
|
|
6327
|
-
* List of versions to show in the versions tree
|
|
6328
|
-
*/
|
|
6329
|
-
"versions"?: ItemNode1[];
|
|
6330
6344
|
}
|
|
6331
6345
|
interface GxIdeTeamDevPreview {
|
|
6332
6346
|
/**
|
package/package.json
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["mapObjectTypeToComboBoxItemModel","objectTypeModel","map","objectType","value","id","caption","name","startImgSrc","icon","hasActiveNode","node","active","Array","isArray","nodes","some","hasActiveVersionInList","versionsList","historyCss","CSS_BUNDLES","GxIdeTeamDevHistory","_GxIdeTeamDevHistory__componentLocale","set","this","_GxIdeTeamDevHistory_types","_GxIdeTeamDevHistory_fromEl","_GxIdeTeamDevHistory_revisionEl","_GxIdeTeamDevHistory_searchEl","_GxIdeTeamDevHistory_toEl","_GxIdeTeamDevHistory_typesEl","_GxIdeTeamDevHistory_userEl","_GxIdeTeamDevHistory_sidebarEl","_GxIdeTeamDevHistory_revisionsGridEl","_GxIdeTeamDevHistory_getObjectsFromVersion","async","versionId","isRefresh","loading","filters","search","__classPrivateFieldGet","from","Date","to","revision","user","type","objects","loadCallback","_GxIdeTeamDevHistory_getSelectedRevision","call","_a","error","versions","historyDetail","selectedRevisionId","revisionId","loadDetailCallback","title","_GxIdeTeamDevHistory_formatHistoryDetailDate","_GxIdeTeamDevHistory_registerGridContextMenuListener","addEventListener","ev","preventDefault","stopPropagation","_GxIdeTeamDevHistory_gridContextMenuCallbackHandler","gridContextMenuCallback","selection","clientX","clientY","_GxIdeTeamDevHistory_toggleFiltersHandler","filtersHidden","_GxIdeTeamDevHistory_renderCommitsGrid","tabularGridEmpty","length","h","class","onSelectionChanged","detail","rowsId","ref","el","__classPrivateFieldSet","selectRow","mainGrid","columns","settingable","size","comment","commitDate","obj","rowid","key","formatDate","stateTitle","emptyRevisionsText","isAnimated","_GxIdeTeamDevHistory_renderAffectedObjectsGrid","iterable","_b","affectedObjectsGrid","config","tabularGrid","colSize","maxContent","types","description","auto","action","renderObjectTypeWithIcon","renderObjectStateWithIcon","state","stateIconSrc","ICONS","filter","emptyHistoryDetailText","_GxIdeTeamDevHistory_renderLoader","loaderTitle","loader","show","parts","split","datePart","formattedDate","selectedVersionIdChanged","newSelectedVersionId","oldSelectedVersionId","versionsListChanged","newVersionsList","hasActiveVersion","selectedVersionId","isFirstLoad","componentWillLoad","Locale","getComponentStrings","componentDidLoad","e","sidebarExpanded","render","Host","model","expanded","expandButtonCollapseAccessibleName","sidebar","collapseAriaLabel","expandButtonExpandAccessibleName","expandAriaLabel","showExpandButton","checkboxType","itemsList","expandOnClick","selectionChanged","selectedVersionChangeCallback","itemContextMenuCallback","htmlFor","part","searchFilter","filterAriaLabel","onClick","src","reloadAriaLabel","refresh","inert","hidden","accessibleName","multiline","autoGrow","readonly"],"sources":["src/components/team-dev/history/helpers.ts","src/components/team-dev/history/history.scss?tag=gx-ide-team-dev-history&encapsulation=shadow","src/components/team-dev/history/history.tsx"],"sourcesContent":["import { ComboBoxModel } from \"@genexus/chameleon-controls-library\";\nimport { ObjectType, GxOption } from \"../../../common/types\";\nimport { ComboBoxItemModel } from \"@genexus/chameleon-controls-library/dist/types/components/combo-box/types\";\nimport { ItemNode } from \"../../select-kb-items/select-kb-items\";\n\nexport const mapObjectTypeToComboBoxItemModel = (\n objectTypeModel: ObjectType[]\n): ComboBoxItemModel[] =>\n objectTypeModel.map(objectType => ({\n value: objectType.id,\n caption: objectType.name,\n startImgSrc: objectType.icon\n }));\n\nexport const mapCategoryToComboBoxItemModel = (\n categoryModel: GxOption[]\n): ComboBoxModel =>\n categoryModel.map(category => ({\n value: category.id,\n caption: category.label\n }));\n\nconst hasActiveNode = (node: any): boolean => {\n if (node.active) {\n return true;\n }\n if (Array.isArray(node.nodes)) {\n return node.nodes.some(hasActiveNode);\n }\n return false;\n};\n\nexport const hasActiveVersionInList = (versionsList: ItemNode[]): boolean => {\n return versionsList.some(hasActiveNode);\n};\n","@import \"../../../../node_modules/@genexus/mercury/dist/assets/scss/helpers.scss\";\n@import \"../common/styles.scss\";\n\n// TODO: this should be a class on Mercury.\n// Not sure if applying \".field-group\" is the right thing to do.\n$commonRowGap: var(--mer-spacing--sm);\n\n:host {\n display: grid;\n grid-template-columns: max-content 1fr;\n block-size: 100%;\n overflow: auto;\n}\n\n.sidebar {\n background-color: transparent !important; // TODO: Apply elevation classes on Mercury.\n border-inline-end: var(--section-common-border);\n}\n\n.sidebar::part(expand-button) {\n border-radius: var(--control__border-radius);\n}\n\ngx-ide-select-kb-items {\n --search-input-max-inline-size: 300px;\n opacity: 0;\n transition: opacity var(--mer-timing--fast);\n}\ngx-ide-select-kb-items.sidebar-expanded {\n opacity: 1;\n}\n\nch-tabular-grid.tabular-grid--empty::part(main) {\n // WA to avoid scrollbar flickering when displaying the empty-state message\n overflow: hidden;\n}\n\nch-tabular-grid-rowset-empty {\n position: relative; // makes this the bounder element for the loader\n}\n\n.main {\n display: grid;\n grid-template-rows: max-content 1fr;\n grid-row-gap: $commonRowGap;\n overflow: auto;\n}\n.main__header {\n display: grid;\n}\n.main__content {\n position: relative;\n overflow: auto;\n display: grid;\n grid-template-rows: 1fr max-content 2fr;\n grid-row-gap: $commonRowGap;\n}\n\n.tabular-grid {\n overflow: auto;\n}\n\n/*SECOND GRID*/\n.search-filter {\n display: grid;\n grid-template-columns: 1fr max-content max-content;\n gap: var(--gx-ide-grid-column-gap);\n}\n\n.action-buttons {\n justify-self: flex-end;\n}\n\n.filters-grid {\n display: grid;\n grid-template-columns: repeat(6, 1fr);\n grid-template-areas:\n \"from from to to type type\"\n \"user user user revision revision revision\";\n grid-gap: var(--gx-ide-grid-column-gap);\n padding-block-start: $commonRowGap;\n}\n\n.filters-container {\n display: grid;\n grid-template-rows: 0fr;\n transition: grid-template-rows var(--mer-timing--fast);\n}\n\n.filters-container-visible {\n grid-template-rows: 1fr;\n}\n\n.filters-container > div {\n overflow: hidden;\n}\n\n.field-from {\n grid-area: from;\n}\n\n.field-to {\n grid-area: to;\n}\n.field-type {\n grid-area: type;\n}\n.field-user {\n grid-area: user;\n}\n.field-revision {\n grid-area: revision;\n}\n\n// commits grid \"comment\" column\n@include tabular-grid-cell-layout(\n $tabular-grid-selector: \".commits-grid\",\n $tabular-grid-cell-node-type: \"text\",\n $tabular-grid-cell-min-inline-size: 200px,\n $tabular-grid-affected-columns-nth-list: (\n 2\n )\n);\n\n// affected objects grid \"description\" column\n@include tabular-grid-cell-layout(\n $tabular-grid-selector: \".affected-objects-grid\",\n $tabular-grid-cell-node-type: \"text\",\n $tabular-grid-cell-min-inline-size: 200px,\n $tabular-grid-affected-columns-nth-list: (\n 5\n )\n);\n\n.button-tertiary.button-icon-only {\n border-color: var(--control__border-color--enabled);\n}\n","/* STENCIL IMPORTS */\nimport { Component, Element, h, Host, Prop, State, Watch } from \"@stencil/core\";\n/* OTHER LIBRARIES IMPORTS */\n/* CUSTOM IMPORTS */\nimport { ComboBoxItemModel } from \"@genexus/chameleon-controls-library/dist/types/components/combo-box/types\";\nimport { MercuryBundles } from \"@genexus/mercury\";\nimport { config } from \"../../../common/config\";\nimport { formatDate } from \"../../../common/helpers\";\nimport { Locale } from \"../../../common/locale\";\nimport { ContextMenuInfo } from \"../../../components\";\nimport { ItemNode } from \"../../select-kb-items/select-kb-items\";\nimport {\n renderObjectStateWithIcon,\n renderObjectTypeWithIcon\n} from \"../common/utilities\";\nimport ICONS from \"../version-control/common/constants\";\nimport { ObjectState } from \"../version-control/common/types\";\nimport {\n hasActiveVersionInList,\n mapObjectTypeToComboBoxItemModel\n} from \"./helpers\";\n\nconst CSS_BUNDLES: MercuryBundles = [\n \"resets/box-sizing\",\n \"utils/form--full\",\n \"utils/layout\",\n \"utils/spacing\",\n \"utils/typography\",\n \"chameleon/scrollbar\",\n \"components/tabular-grid\",\n \"components/accordion\",\n \"components/sidebar\"\n];\n\n@Component({\n tag: \"gx-ide-team-dev-history\",\n styleUrl: \"history.scss\",\n shadow: true,\n assetsDirs: [\"gx-ide-assets/team-dev-history\"]\n})\nexport class GxIdeTeamDevHistory {\n #_componentLocale: any;\n\n #types: ComboBoxItemModel[] = [];\n\n @Element() el: HTMLGxIdeTeamDevHistoryElement;\n\n #fromEl?: HTMLChEditElement;\n #revisionEl?: HTMLChEditElement;\n #searchEl: HTMLChEditElement;\n #toEl?: HTMLChEditElement;\n #typesEl?: HTMLChComboBoxRenderElement;\n #userEl?: HTMLChEditElement;\n #sidebarEl: HTMLChSidebarElement;\n #revisionsGridEl: HTMLChTabularGridElement;\n\n @State() historyDetail: RevisionDetailData;\n\n /**\n * The files rendered in the table\n */\n @State() objects: RevisionData[] = [];\n\n /**\n * Used to call getObjectsFromVersion from the versionsChanged method only once after receiving the versions for the first time.\n */\n @State() isFirstLoad: boolean = true;\n\n /**\n * Used to hide the select-kb-items when collapsed\n */\n @State() sidebarExpanded: boolean = true;\n\n /**\n * Used to show or hide the filters section\n */\n @State() filtersHidden = true;\n\n /**\n * To show a loader when the component is loading\n */\n @State() loading: boolean = true;\n\n /**\n * The Id of the selected revision in the revisions grid\n */\n @State() selectedRevisionId: string;\n\n /**\n * Used to customize the select-kb-items \"header\" part grid layout\n */\n @State() hasActiveVersion: boolean = false; // TODO:\n\n /**\n * Possible values of type filter\n */\n @Prop() readonly types: ObjectType[];\n\n /**\n * Callback emitted when the user right click on an item\n */\n @Prop() readonly itemContextMenuCallback: (\n info: ContextMenuInfo\n ) => Promise<void>;\n\n /**\n * Callback invoked when user right-clicks on the grid\n */\n @Prop() readonly gridContextMenuCallback: (\n info: ContextMenuInfo\n ) => Promise<void>;\n\n /**\n * The Id of the selected version in the select-kb-items component\n */\n @Prop({ mutable: true }) selectedVersionId: string;\n @Watch(\"selectedVersionId\")\n async selectedVersionIdChanged(\n newSelectedVersionId: string,\n oldSelectedVersionId?: string\n ) {\n if (newSelectedVersionId === oldSelectedVersionId) {\n return;\n }\n\n // Reset filters\n this.#searchEl.value = null;\n this.#fromEl.value = null;\n this.#toEl.value = null;\n this.#revisionEl.value = null;\n this.#userEl.value = null;\n this.#typesEl.value = this.#types[0]?.value;\n\n await this.#getObjectsFromVersion(newSelectedVersionId, false);\n }\n\n /**\n * List of versions to show in the versions tree\n */\n @Prop({ mutable: true }) versions: ItemNode[];\n @Watch(\"versions\")\n async versionsListChanged(newVersionsList: ItemNode[]) {\n this.versions = newVersionsList;\n this.hasActiveVersion = hasActiveVersionInList(newVersionsList);\n\n if (\n newVersionsList.length > 0 &&\n this.selectedVersionId &&\n this.isFirstLoad\n ) {\n await this.#getObjectsFromVersion(this.selectedVersionId, false);\n this.isFirstLoad = false;\n } else if (newVersionsList.length === 0 && this.isFirstLoad) {\n this.loading = false;\n this.isFirstLoad = false;\n }\n }\n\n /**\n * Callback invoked when is necessary to reload the history info. Receive the filters as parameters and only returns the info corresponding to the master grid.\n\n */\n @Prop() readonly loadCallback: LoadCallback;\n\n /**\n * Callback invoked to obtain detailed info from a revision. As parameter receive internal revision id\n */\n @Prop() readonly loadDetailCallback: LoadDetailCallback;\n\n /**\n * Callback invoked when the selected version changes. As parameter receive the selected version id\n */\n @Prop() readonly selectedVersionChangeCallback: SelectedVersionChangeCallback;\n\n async componentWillLoad() {\n this.#_componentLocale = await Locale.getComponentStrings(this.el);\n this.#types = mapObjectTypeToComboBoxItemModel(this.types);\n }\n\n async componentDidLoad() {\n this.#sidebarEl.addEventListener(\n \"expandedChange\",\n (e: CustomEvent<boolean>) => {\n this.sidebarExpanded = e.detail;\n }\n );\n }\n\n #getObjectsFromVersion = async (\n versionId: string,\n isRefresh: boolean\n ): Promise<void> => {\n this.loading = true;\n\n const filters: FiltersData = {\n search: this.#searchEl.value ? this.#searchEl.value : \"\",\n from: this.#fromEl.value ? new Date(this.#fromEl.value) : null,\n to: this.#toEl.value ? new Date(this.#toEl.value) : null,\n revision: this.#revisionEl.value ? this.#revisionEl.value : \"\",\n user: this.#userEl.value ? this.#userEl.value : \"\",\n type: this.#typesEl.value === \"all\" ? \"\" : this.#typesEl.value\n };\n try {\n this.objects = await this.loadCallback(filters, versionId, isRefresh);\n await this.#getSelectedRevision(this.objects[0]?.id);\n } catch (error) {\n this.versions = [];\n this.objects = [];\n this.historyDetail = null;\n this.selectedRevisionId = null;\n } finally {\n this.loading = false;\n }\n };\n\n #getSelectedRevision = async (revisionId: string) => {\n if (revisionId) {\n this.historyDetail = await this.loadDetailCallback(revisionId);\n this.historyDetail.title = this.#formatHistoryDetailDate(\n this.historyDetail.title\n );\n this.selectedRevisionId = revisionId;\n } else {\n this.historyDetail = null;\n }\n };\n\n #registerGridContextMenuListener = (): void => {\n if (this.#revisionsGridEl) {\n this.#revisionsGridEl.addEventListener(\n \"contextmenu\",\n (ev: MouseEvent): void => {\n ev.preventDefault();\n ev.stopPropagation();\n this.#gridContextMenuCallbackHandler(ev);\n }\n );\n }\n };\n\n #gridContextMenuCallbackHandler = async (ev: MouseEvent): Promise<void> => {\n this.gridContextMenuCallback({\n selection: [this.selectedRevisionId],\n clientX: ev.clientX,\n clientY: ev.clientY\n });\n };\n\n #toggleFiltersHandler = () => {\n this.filtersHidden = !this.filtersHidden;\n };\n\n #renderCommitsGrid = (): Element => {\n const tabularGridEmpty = this.objects?.length === 0 || !this.objects;\n return (\n <ch-tabular-grid\n class={{\n \"commits-grid\": true,\n \"tabular-grid\": true,\n \"tabular-grid--empty\": tabularGridEmpty\n }}\n onSelectionChanged={(ev: any) => {\n this.objects.length > 0 &&\n this.#getSelectedRevision(ev.detail.rowsId[0]);\n }}\n ref={(el: HTMLChTabularGridElement) => {\n if (el && this.#revisionsGridEl !== el) {\n this.#revisionsGridEl = el as HTMLChTabularGridElement;\n\n this.#registerGridContextMenuListener();\n\n if (this.objects.length > 0) {\n this.#revisionsGridEl.selectRow(this.objects[0]?.id, true);\n }\n }\n }}\n >\n <ch-tabular-grid-columnset class=\"tabular-grid-column-set\">\n <ch-tabular-grid-column\n column-name={this.#_componentLocale.mainGrid.columns.id}\n column-name-position=\"text\"\n class=\"tabular-grid-column\"\n settingable={false}\n size=\"max-content\"\n ></ch-tabular-grid-column>\n <ch-tabular-grid-column\n column-name={this.#_componentLocale.mainGrid.columns.comment}\n column-name-position=\"text\"\n class=\"tabular-grid-column\"\n settingable={false}\n size=\"1fr\"\n ></ch-tabular-grid-column>\n <ch-tabular-grid-column\n column-name={this.#_componentLocale.mainGrid.columns.user}\n column-name-position=\"text\"\n class=\"tabular-grid-column\"\n settingable={false}\n size=\"max-content\"\n ></ch-tabular-grid-column>\n <ch-tabular-grid-column\n column-name={this.#_componentLocale.mainGrid.columns.commitDate}\n column-name-position=\"text\"\n class=\"tabular-grid-column\"\n settingable={false}\n size=\"max-content\"\n ></ch-tabular-grid-column>\n </ch-tabular-grid-columnset>\n {this.objects.length > 0 ? (\n <ch-tabular-grid-rowset class=\"tabular-grid-rowset\">\n {this.objects.map((obj: RevisionData) => (\n <ch-tabular-grid-row\n rowid={obj.id}\n key={obj.id}\n class=\"tabular-grid-row\"\n >\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n {obj.id}\n </ch-tabular-grid-cell>\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n {obj.comment}\n </ch-tabular-grid-cell>\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n {obj.user}\n </ch-tabular-grid-cell>\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n {`${formatDate(obj.commitDate, \"date-time\")}`}\n </ch-tabular-grid-cell>\n </ch-tabular-grid-row>\n ))}\n </ch-tabular-grid-rowset>\n ) : (\n <ch-tabular-grid-rowset class=\"tabular-grid-rowset\">\n <ch-tabular-grid-rowset-empty>\n <gx-ide-empty-state\n stateTitle={this.#_componentLocale.emptyRevisionsText}\n isAnimated={true}\n ></gx-ide-empty-state>\n </ch-tabular-grid-rowset-empty>\n </ch-tabular-grid-rowset>\n )}\n\n <ch-tabular-grid-row class=\"tabular-grid-row\"></ch-tabular-grid-row>\n </ch-tabular-grid>\n );\n };\n\n #renderAffectedObjectsGrid = (): Element => {\n const iterable = this.historyDetail ? this.historyDetail.objects : [];\n const tabularGridEmpty =\n this.historyDetail?.objects?.length === 0 || !this.historyDetail;\n return (\n <ch-tabular-grid\n class={{\n \"affected-objects-grid\": true,\n \"tabular-grid\": true,\n \"tabular-grid--empty\": tabularGridEmpty\n }}\n >\n <ch-tabular-grid-columnset class=\"tabular-grid-column-set\">\n <ch-tabular-grid-column\n column-name={\n this.#_componentLocale.affectedObjectsGrid.columns.name\n }\n column-name-position=\"text\"\n class=\"tabular-grid-column\"\n settingable={false}\n size={config.tabularGrid.colSize.maxContent}\n ></ch-tabular-grid-column>\n <ch-tabular-grid-column\n column-name={\n this.#_componentLocale.affectedObjectsGrid.columns.types\n }\n column-name-position=\"text\"\n class=\"tabular-grid-column\"\n settingable={false}\n size={config.tabularGrid.colSize.maxContent}\n ></ch-tabular-grid-column>\n <ch-tabular-grid-column\n column-name={\n this.#_componentLocale.affectedObjectsGrid.columns.description\n }\n column-name-position=\"text\"\n class=\"tabular-grid-column\"\n settingable={false}\n size={config.tabularGrid.colSize.auto}\n ></ch-tabular-grid-column>\n <ch-tabular-grid-column\n column-name={\n this.#_componentLocale.affectedObjectsGrid.columns.action\n }\n column-name-position=\"text\"\n class=\"tabular-grid-column\"\n settingable={false}\n size={config.tabularGrid.colSize.maxContent}\n ></ch-tabular-grid-column>\n </ch-tabular-grid-columnset>\n {this.historyDetail && this.historyDetail.objects.length > 0 ? (\n <ch-tabular-grid-rowset class=\"tabular-grid-rowset\">\n {iterable.map((obj: ObjectData) => (\n <ch-tabular-grid-row class=\"tabular-grid-row\">\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n {obj.name}\n </ch-tabular-grid-cell>\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n {renderObjectTypeWithIcon(obj.type)}\n </ch-tabular-grid-cell>\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n {obj.description}\n </ch-tabular-grid-cell>\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n {renderObjectStateWithIcon(obj.state)}\n </ch-tabular-grid-cell>\n </ch-tabular-grid-row>\n ))}\n </ch-tabular-grid-rowset>\n ) : (\n <ch-tabular-grid-rowset class=\"tabular-grid-rowset\">\n <ch-tabular-grid-rowset-empty>\n <gx-ide-empty-state\n stateIconSrc={ICONS.filter}\n stateTitle={this.#_componentLocale.emptyHistoryDetailText}\n isAnimated={true}\n ></gx-ide-empty-state>\n </ch-tabular-grid-rowset-empty>\n </ch-tabular-grid-rowset>\n )}\n\n <ch-tabular-grid-row class=\"tabular-grid-row\"></ch-tabular-grid-row>\n </ch-tabular-grid>\n );\n };\n\n #renderLoader = (): Element => {\n return (\n this.loading && (\n <div class=\"main__content scrollable\">\n <gx-ide-loader\n loaderTitle={this.#_componentLocale.loader.title}\n show\n description={this.#_componentLocale.loader.description}\n ></gx-ide-loader>\n </div>\n )\n );\n };\n\n #formatHistoryDetailDate = (title: string): string => {\n const parts = title.split(\" - \");\n const datePart = new Date(parts[1]);\n const formattedDate = formatDate(datePart, \"date-time\");\n return `${parts[0]} - ${formattedDate} - ${parts[2]}`;\n };\n\n render() {\n return (\n <Host class=\"widget\">\n <ch-theme model={CSS_BUNDLES}></ch-theme>\n\n <ch-sidebar\n ref={(el: HTMLChSidebarElement) =>\n (this.#sidebarEl = el as HTMLChSidebarElement)\n }\n class=\"sidebar\"\n expanded={this.sidebarExpanded}\n expandButtonCollapseAccessibleName={\n this.#_componentLocale.sidebar.collapseAriaLabel\n }\n expandButtonExpandAccessibleName={\n this.#_componentLocale.sidebar.expandAriaLabel\n }\n showExpandButton\n >\n <gx-ide-select-kb-items\n class={{\n \"sidebar-expanded\": this.sidebarExpanded,\n \"has-active-version\": this.hasActiveVersion\n }}\n checkboxType=\"none\"\n itemsList={this.versions}\n expandOnClick={false}\n selectionChanged={this.selectedVersionChangeCallback}\n itemContextMenuCallback={this.itemContextMenuCallback}\n ></gx-ide-select-kb-items>\n </ch-sidebar>\n\n <main class=\"main spacing-body-block-start spacing-body-inline\">\n <div class=\"main__header\">\n <div class=\"search-filter\">\n <div class=\"field field-inline\">\n <label class=\"label\" htmlFor=\"search\">\n {this.#_componentLocale.filters.search}\n </label>\n <ch-edit\n value=\"\"\n class=\"input\"\n startImgSrc={ICONS.search}\n part=\"search\"\n id=\"search\"\n ref={(el: HTMLChEditElement) =>\n (this.#searchEl = el as HTMLChEditElement)\n }\n ></ch-edit>\n </div>\n\n <button\n id=\"filter-toggle-button\"\n class=\"button-tertiary button-icon-only\"\n aria-label={this.#_componentLocale.searchFilter.filterAriaLabel}\n aria-expanded={this.filtersHidden ? \"false\" : \"true\"}\n aria-controls=\"filters-container\"\n onClick={() => this.#toggleFiltersHandler()}\n >\n <ch-image class=\"icon-md\" src={ICONS.filter}></ch-image>\n </button>\n\n <button\n class=\"button-tertiary button-icon-only\"\n aria-label={this.#_componentLocale.searchFilter.reloadAriaLabel}\n onClick={() =>\n this.#getObjectsFromVersion(this.selectedVersionId, true)\n }\n part={this.#_componentLocale.searchFilter.reloadAriaLabel}\n >\n <ch-image class=\"icon-md\" src={ICONS.refresh}></ch-image>\n </button>\n </div>\n\n <div\n id=\"filters-container\"\n aria-labelledby=\"filter-toggle-button\"\n class={{\n \"filters-container-visible\": !this.filtersHidden,\n \"filters-container\": true\n }}\n inert={this.filtersHidden}\n hidden={this.filtersHidden}\n >\n <div>\n <div class=\"filters-grid\">\n <div class=\"field field-block field-from\">\n <label class=\"label\" htmlFor=\"from\">\n {this.#_componentLocale.filters.from}\n </label>\n <ch-edit\n value=\"\"\n class=\"input\"\n type=\"date\"\n part=\"from\"\n id=\"from\"\n ref={(el: HTMLChEditElement) =>\n (this.#fromEl = el as HTMLChEditElement)\n }\n ></ch-edit>\n </div>\n\n <div class=\"field field-block field-to\">\n <label class=\"label\" htmlFor=\"to\">\n {this.#_componentLocale.filters.to}\n </label>\n <ch-edit\n value=\"\"\n class=\"input\"\n type=\"date\"\n id=\"to\"\n ref={(el: HTMLChEditElement) =>\n (this.#toEl = el as HTMLChEditElement)\n }\n ></ch-edit>\n </div>\n\n <div class=\"field field-block field-type\">\n <label class=\"label\" htmlFor=\"type\">\n {this.#_componentLocale.filters.type}\n </label>\n\n <ch-combo-box-render\n accessibleName=\"types\"\n class=\"combo-box\"\n part=\"type\"\n model={this.#types}\n value={this.#types[0]?.value}\n ref={(el: HTMLChComboBoxRenderElement) =>\n (this.#typesEl = el as HTMLChComboBoxRenderElement)\n }\n ></ch-combo-box-render>\n </div>\n\n <div class=\"field field-block field-user\">\n <label class=\"label\" htmlFor=\"user\">\n {this.#_componentLocale.filters.user}\n </label>\n\n <ch-edit\n value=\"\"\n part=\"user\"\n class=\"input\"\n id=\"user\"\n ref={(el: HTMLChEditElement) =>\n (this.#userEl = el as HTMLChEditElement)\n }\n ></ch-edit>\n </div>\n\n <div class=\"field field-block field-revision\">\n <label class=\"label\" htmlFor=\"revision\">\n {this.#_componentLocale.filters.revision}\n </label>\n\n <ch-edit\n value=\"\"\n part=\"revision\"\n class=\"input\"\n id=\"revision\"\n ref={(el: HTMLChEditElement) =>\n (this.#revisionEl = el as HTMLChEditElement)\n }\n ></ch-edit>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n {this.#renderLoader()}\n\n {!this.loading && (\n <div class=\"main__content scrollable\">\n {this.#renderCommitsGrid()}\n\n <div class=\"field field-block\">\n <label class=\"label\" htmlFor=\"comment-area\">\n {this.historyDetail ? this.historyDetail.title : null}\n </label>\n <ch-edit\n class=\"input comment-text-area\"\n value={this.historyDetail ? this.historyDetail.comment : null}\n multiline\n autoGrow\n readonly={true}\n part=\"comment-area\"\n id=\"comment-area\"\n ></ch-edit>\n </div>\n\n {this.#renderAffectedObjectsGrid()}\n </div>\n )}\n </main>\n </Host>\n );\n }\n}\n\n// Types\nexport type ObjectType = {\n id: string;\n name: string;\n icon?: string;\n};\n\nexport type FiltersData = {\n search: string;\n from?: Date;\n to?: Date;\n user?: string;\n revision?: string;\n type?: string;\n};\nexport type RevisionData = {\n id: string;\n comment: string;\n user: string;\n commitDate: Date;\n};\n\nexport type RevisionDetailData = {\n title: string;\n comment: string;\n objects: ObjectData[];\n};\nexport type ObjectData = {\n typeIcon: string;\n state: ObjectState;\n name: string;\n type: ObjectType;\n description: string;\n action: string;\n};\n\nexport type LoadCallback = (\n filters: FiltersData,\n versionId: string,\n isRefresh: boolean\n) => Promise<RevisionData[]>;\n\nexport type LoadDetailCallback = (\n revision: string\n) => Promise<RevisionDetailData>;\n\nexport type SelectedVersionChangeCallback = (\n selectedVersion: string[]\n) => Promise<void>;\n"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["ACTIVE_ITEM_DEFAULT_ICON","getIconPath","category","name","colorType","convertItemsNodeListToFlattenedTreeViewModel","itemsList","checkboxType","itemsListFlattenedTreeViewModel","processNode","item","startImgSrc","active","iconStart","leaf","_a","nodes","length","checkbox","metaData","JSON","stringify","versionType","type","push","caption","checked","endImgSrc","iconEnd","expanded","id","toString","items","metadata","parts","selected","order","forEach","childNode","convertItemsListToTreeViewModel","itemsListTreeViewModel","parseInt","findItemNode","itemNode","result","findItemInArray","itemsNodes","setAllLeafsCheckedFalse","uncheck","unselectAllNodes","unselect","checkItems","idsChecked","itemFind","expandItems","selectItems","idsSelected","searchInNode","node","parents","searchParentsItems","ids","rootItem","results","findFirstActiveNode","findActiveWithPath","nodeList","currentPath","nodePath","path","selectKbItemsCss","CSS_BUNDLES","SYSTEM_SEARCH_ICON","VIEW_AS_TREE_ID","VIEW_AS_LIST_ID","TOGGLE_CHECKBOXES_CHECKED_VALUE","GxIdeSelectKbItems","_GxIdeSelectKbItems__componentLocale","set","this","_GxIdeSelectKbItems_chShortcutsEl","_GxIdeSelectKbItems_selectedNodesIds","_GxIdeSelectKbItems_shortcutsSrc","getAssetPath","_GxIdeSelectKbItems_updatedModelList","_GxIdeSelectKbItems_viewItemsAsModel","_GxIdeSelectKbItems_treeViewRenderEl","_GxIdeSelectKbItems_cancelHandler","cancelCallback","_GxIdeSelectKbItems_checkedItemsChangeHandler","async","e","checkedNodesIds","detail","singleChecks","lastCheckedId","find","includes","__classPrivateFieldGet","updateItemsProperties","Array","from","keys","filter","__classPrivateFieldSet","checkedChanged","_GxIdeSelectKbItems_confirmHandler","confirmCallback","_GxIdeSelectKbItems_contextMenuHandler","itemContextMenuCallback","info","isSelected","clientX","contextmenuEvent","clientY","selection","_GxIdeSelectKbItems_executeDialogAction","callback","_GxIdeSelectKbItems_patternSearchValueChangedHandler","event","searchPatternValue","_GxIdeSelectKbItems_renderActionButtons","h","dialogActions","map","action","class","part","onClick","call","disabled","loading","_GxIdeSelectKbItems_renderFooter","footer","cancel","select","_GxIdeSelectKbItems_selectedItemsChangeHandler","selectedNodesIds","selectionChanged","_GxIdeSelectKbItems_toggleAndSelectNodesInModelItems","selectedItemsIds","nodesToToggle","newItemsSelected","newItemsExpanded","_GxIdeSelectKbItems_updateViews","_GxIdeSelectKbItems_toggleCheckedNodesInModelItems","newItemsList","nodeVersionsListTreeModel","nodeListFlattenedTreeModel","_GxIdeSelectKbItems_viewItemsAsChangedHandler","selectedViewType","nodesVersionsViewType","_GxIdeSelectKbItems_toggleCheckboxesChangedHandler","toggleCheckboxes","_GxIdeSelectKbItems_scrollIntoActiveVersionNode","doScrollIntoView","activeItemNode","scrollIntoVisible","activeItemCallback","watchNodeListHandler","componentWillLoad","Locale","getComponentStrings","el","showToggleCheckboxes","value","main","tree","renderFooter","suspendShortcuts","suspend","updateSelection","updateCheckedItems","checkedItemsIds","render","Host","widget","model","src","ref","htmlFor","onChange","checkedValue","onInput","showActiveItemLink","placeholder","header","searchPatternPlaceholder","accessibleName","containerRef","activeItem","loaderTitle","loader","title","description","show","expandableButton","onItemContextmenu","onCheckedItemsChange","onSelectedItemsChange","expandOnClick","multiSelection","filterType"],"sources":["src/components/select-kb-items/helpers.tsx","src/components/select-kb-items/select-kb-items.scss?tag=gx-ide-select-kb-items&encapsulation=shadow","src/components/select-kb-items/select-kb-items.tsx"],"sourcesContent":["import { ItemNode, CheckboxType, ActiveNode } from \"./select-kb-items\";\nimport { TreeViewItemModel } from \"@genexus/chameleon-controls-library\";\nimport { getIconPath } from \"@genexus/mercury\";\n\nexport const ACTIVE_ITEM_DEFAULT_ICON = getIconPath({\n category: \"system\",\n name: \"check-circle\",\n colorType: \"primary\"\n});\n\nexport const convertItemsNodeListToFlattenedTreeViewModel = (\n itemsList: ItemNode[],\n checkboxType: CheckboxType\n): TreeViewItemModel[] => {\n const itemsListFlattenedTreeViewModel: TreeViewItemModel[] = [];\n\n const processNode = (item: ItemNode) => {\n const startImgSrc =\n item.active && !item.iconStart\n ? ACTIVE_ITEM_DEFAULT_ICON\n : item.iconStart;\n const leaf = !item.nodes?.length;\n const checkbox =\n checkboxType === \"all\" ||\n (checkboxType === \"custom\" && item.checkbox) ||\n (checkboxType === \"leaf\" && leaf);\n const metaData = JSON.stringify({\n versionType: item.type\n });\n itemsListFlattenedTreeViewModel.push({\n caption: item.name,\n checkbox: checkbox,\n checked: item.checked,\n startImgSrc: startImgSrc,\n endImgSrc: item.iconEnd,\n expanded: item.expanded,\n id: item.id.toString(),\n items: null,\n leaf: leaf,\n metadata: metaData,\n parts: item.parts,\n selected: item.selected,\n order: item.order\n });\n\n if (item.nodes) {\n item.nodes.forEach(childNode => processNode(childNode));\n }\n };\n\n itemsList.forEach(item => processNode(item));\n return itemsListFlattenedTreeViewModel;\n};\n\nexport const convertItemsListToTreeViewModel = (\n itemsList: ItemNode[],\n checkboxType: CheckboxType\n): TreeViewItemModel[] => {\n const itemsListTreeViewModel: TreeViewItemModel[] = [];\n itemsList.forEach(item => {\n const startImgSrc =\n item.active && !item.iconStart\n ? ACTIVE_ITEM_DEFAULT_ICON\n : item.iconStart;\n const leaf = !item.nodes?.length;\n const checkbox =\n checkboxType === \"all\" ||\n (checkboxType === \"custom\" && item.checkbox) ||\n (checkboxType === \"leaf\" && leaf);\n const expanded = item.expanded;\n const iconStart = startImgSrc;\n const iconEnd = item.iconEnd;\n const metaData = JSON.stringify({\n versionType: item.type\n });\n const order = parseInt(item.id);\n itemsListTreeViewModel.push({\n caption: item.name,\n checkbox: checkbox,\n checked: item.checked,\n startImgSrc: iconStart,\n endImgSrc: iconEnd,\n expanded: expanded,\n id: item.id.toString(),\n items: !leaf\n ? convertItemsListToTreeViewModel(item.nodes, checkboxType)\n : null,\n leaf: leaf,\n metadata: metaData,\n parts: item.parts,\n order: order,\n selected: item.selected\n });\n });\n\n return itemsListTreeViewModel;\n};\n\nconst findItemNode = (id: string, item: ItemNode): ItemNode | null => {\n if (item.id === id) {\n return item;\n }\n\n if (item.nodes) {\n for (const itemNode of item.nodes) {\n const result = findItemNode(id, itemNode);\n if (result) {\n return result;\n }\n }\n }\n return null;\n};\n\nfunction findItemInArray(itemsNodes: ItemNode[], id: string): ItemNode | null {\n for (const item of itemsNodes) {\n const result = findItemNode(id, item);\n if (result) {\n return result;\n }\n }\n return null;\n}\nconst setAllLeafsCheckedFalse = (itemsList: ItemNode[]): ItemNode[] => {\n const uncheck = (itemNode: ItemNode) => {\n itemNode.checked = false;\n if (itemNode.nodes?.length) {\n itemNode.nodes.forEach(childNode => uncheck(childNode));\n }\n };\n\n itemsList.forEach(item => uncheck(item));\n return itemsList;\n};\n\nexport const unselectAllNodes = (itemsList: ItemNode[]) => {\n const unselect = (itemNode: ItemNode) => {\n itemNode.selected = false;\n if (itemNode.nodes?.length) {\n itemNode.nodes.forEach(childNode => unselect(childNode));\n }\n };\n\n itemsList.forEach(item => unselect(item));\n};\n\nexport const checkItems = (\n itemsList: ItemNode[],\n idsChecked: string[]\n): ItemNode[] => {\n setAllLeafsCheckedFalse(itemsList);\n idsChecked.forEach(id => {\n const itemFind = findItemInArray(itemsList, id);\n if (itemFind) {\n itemFind.checked = true;\n }\n });\n\n return itemsList;\n};\n\nexport const expandItems = (\n itemsList: ItemNode[],\n idsChecked: string[]\n): ItemNode[] => {\n idsChecked.forEach(id => {\n const itemFind = findItemInArray(itemsList, id);\n if (itemFind) {\n itemFind.expanded = true;\n }\n });\n\n return itemsList;\n};\n\nexport const selectItems = (\n itemsList: ItemNode[],\n idsSelected: string[]\n): ItemNode[] => {\n idsSelected.forEach(id => {\n const itemFind = findItemInArray(itemsList, id);\n if (itemFind) {\n itemFind.selected = true;\n }\n });\n return itemsList;\n};\n\nfunction searchInNode(item: ItemNode, id: string): string[] | null {\n // If the current node is the searched node, we return an empty list (it has no parents in this branch)\n if (item.id === id) {\n return [];\n }\n\n // We traverse each child looking for the target node\n if (item.nodes?.length) {\n for (const node of item.nodes) {\n const parents = searchInNode(node, id);\n if (parents !== null) {\n // If we find it, we include the current node at the beginning of the path and return\n return [item.id, ...parents];\n }\n }\n }\n return null;\n}\n\nexport const searchParentsItems = (\n items: ItemNode[],\n ids: string[]\n): string[] | null => {\n const parents: string[] = [];\n for (const id of ids) {\n for (const rootItem of items) {\n const results = searchInNode(rootItem, id);\n if (results !== null) {\n results.forEach(result => {\n parents.push(result);\n });\n }\n }\n }\n return parents;\n};\n\n/**\n * Recursively searches for the first node with the active=true property\n * @param nodes Array of nodes to search through\n * @returns An object with caption, iconStart, and path to the first active node found, or null if none is found\n */\nexport const findFirstActiveNode = (nodes: ItemNode[]): ActiveNode | null => {\n // Helper function that keeps track of the path during recursion\n const findActiveWithPath = (\n nodeList: ItemNode[],\n currentPath: string[] = []\n ): ActiveNode | null => {\n // Base case: if nodes is undefined or empty\n if (!nodeList || nodeList.length === 0) {\n return null;\n }\n\n // Iterate through each node in the array\n for (const node of nodeList) {\n // Create a new path that includes the current node\n const nodePath = [...currentPath, node.id];\n\n // Check if the current node is active\n if (node.active === true) {\n return {\n caption: node.name,\n iconStart: node.iconStart,\n path: nodePath\n };\n }\n\n // If the node has children, search through them with the updated path\n if (node.nodes && node.nodes.length > 0) {\n const result = findActiveWithPath(node.nodes, nodePath);\n // If we find an active node in this subtree, return it immediately\n if (result !== null) {\n return result;\n }\n }\n }\n\n // No active node found in any of the nodes\n return null;\n };\n\n // Start the search with an empty path\n return findActiveWithPath(nodes);\n};\n",":host {\n --search-input-max-inline-size: 400px;\n display: grid;\n block-size: 100%;\n}\n:host(:not(.has-footer)) {\n grid-template-rows: max-content 1fr;\n}\n:host(.has-footer) {\n grid-template-rows: max-content 1fr max-content;\n}\n\n.header.has-active-item {\n grid-area: header;\n}\n\n.section {\n display: contents;\n}\n\n// header\n.header {\n &__first-row,\n &__second-row {\n display: grid;\n grid-auto-flow: column;\n }\n &__first-row {\n column-gap: var(--field-group__column-gap);\n grid-auto-columns: max-content;\n }\n &__second-row {\n column-gap: 12px;\n grid-template-columns: minmax(150px, var(--search-input-max-inline-size)) max-content;\n\n &--one-row {\n grid-template-columns: minmax(150px, var(--search-input-max-inline-size));\n }\n }\n}\n\n.active-item {\n background-color: var(--mer-surface__elevation--01);\n border-radius: var(--mer-border__radius--sm);\n padding: var(--mer-spacing--xs) var(--mer-spacing--sm);\n display: flex;\n align-items: center;\n gap: var(--mer-spacing--xs);\n}\n.active-item {\n &__icon-container {\n display: contents;\n }\n &__icon {\n pointer-events: none; // We do not want the icon to change the colors, since the clickable area is the caption only\n }\n &__link {\n text-decoration: underline;\n // TODO: There should be a class in Merucry to apply link styles\n color: var(--mer-text__primary);\n cursor: pointer;\n &:hover {\n color: var(--mer-text__primary--hover);\n }\n &:active {\n color: var(--mer-text__primary--active);\n }\n }\n}\n\n.dummy-control-block-size {\n // WA: Make as tall as a regular contorl (ie.: a input, a combo-box) in order to\n // make the label vertically aligned with this control.\n block-size: 32px;\n}\n\n.trees {\n position: relative;\n}\n","import {\n Component,\n Element,\n getAssetPath,\n Host,\n h,\n Prop,\n State,\n Watch,\n Method\n} from \"@stencil/core\";\n\nimport {\n ChCheckboxCustomEvent,\n TreeViewItemModel,\n TreeViewItemModelExtended\n} from \"@genexus/chameleon-controls-library\";\n\nimport {\n checkItems,\n convertItemsListToTreeViewModel,\n convertItemsNodeListToFlattenedTreeViewModel,\n expandItems,\n searchParentsItems,\n selectItems,\n unselectAllNodes,\n findFirstActiveNode\n} from \"./helpers\";\nimport { getIconPath, MercuryBundles } from \"@genexus/mercury\";\nimport { Locale } from \"../../common/locale\";\nimport { ContextMenuInfo } from \"../../common/types\";\nimport { RadioGroupItemModel } from \"@genexus/chameleon-controls-library/dist/types/components/radio-group/types\";\n\nimport { ACTIVE_ITEM_DEFAULT_ICON } from \"./helpers\";\n\nconst CSS_BUNDLES: MercuryBundles = [\n \"resets/box-sizing\",\n \"chameleon/scrollbar\",\n \"components/tooltip\",\n \"components/tree-view\",\n \"utils/form--full\",\n \"utils/layout\",\n \"utils/spacing\",\n \"utils/typography\"\n];\n\nconst SYSTEM_SEARCH_ICON = getIconPath({\n category: \"system\",\n name: \"search\",\n colorType: \"on-surface\"\n});\n\nconst VIEW_AS_TREE_ID: NodesVersionsViewType = \"tree\";\nconst VIEW_AS_LIST_ID: NodesVersionsViewType = \"list\";\n\nconst TOGGLE_CHECKBOXES_CHECKED_VALUE = \"on\";\n\n@Component({\n tag: \"gx-ide-select-kb-items\",\n styleUrl: \"select-kb-items.scss\",\n shadow: true,\n assetsDirs: [\"gx-ide-assets/select-kb-items\"]\n})\nexport class GxIdeSelectKbItems {\n #_componentLocale: any;\n #chShortcutsEl: HTMLChShortcutsElement;\n #selectedNodesIds: string[] = [];\n #shortcutsSrc = getAssetPath(\n `./gx-ide-assets/select-kb-items/shortcuts.json`\n );\n #updatedModelList: ItemNode[] = [];\n #viewItemsAsModel: RadioGroupItemModel[];\n #treeViewRenderEl: HTMLChTreeViewRenderElement;\n\n @Element() el: HTMLGxIdeSelectKbItemsElement;\n\n /**\n * Represents the active version node caption and icon (if any)\n */\n @State() activeItemNode: ActiveNode;\n\n /**\n * Represents the selected nodes ids\n */\n @State() checkedNodesIds: string[] = [];\n\n /**\n * If true, the footer will be rendered\n */\n @State() renderFooter: boolean = false;\n\n /**\n * Represents the nodes list model\n */\n @State() nodeListFlattenedTreeModel: TreeViewItemModel[] = [];\n\n /**\n * To show a loader when the component is loading\n */\n @State() loading: boolean = true;\n\n /**\n * View type for the nodes.\n */\n @State() nodesVersionsViewType: NodesVersionsViewType = \"tree\";\n\n /**\n * Represents the nodes tree model\n */\n @State() nodeVersionsListTreeModel: TreeViewItemModel[] = [];\n\n /**\n * \"Search Pattern\" input value, used to filter the nodes tree/list.\n */\n @State() searchPatternValue: string = null;\n\n /**\n * It maps to the ch-tree-view-render \"toggleCheckboxes\" property.\n */\n @State() toggleCheckboxes: boolean;\n\n /**\n * Callback emitted when the user clicks on the \"Active item\"\n */\n @Prop() readonly activeItemCallback?: () => Promise<void>;\n\n /**\n * Callback emitted when the 'cancel' button is pressed\n */\n @Prop() readonly cancelCallback?: () => Promise<void>;\n\n /**\n * Defines which nodes of the component have checkboxes.\n */\n @Prop() readonly checkboxType: CheckboxType;\n\n /**\n * Define if a item node is expanded on click interaction. If false item-node will only be expanded on double click.\n */\n @Prop() readonly expandOnClick: boolean = true;\n\n /**\n * Callback emitted when the items checked items change\n */\n @Prop() readonly checkedChanged?: (checkedItems: string[]) => Promise<void>;\n\n /**\n * Callback emitted when the 'select' button is pressed\n */\n @Prop() readonly confirmCallback?: (checkedItems: string[]) => Promise<void>;\n\n /**\n * Set of additional actions (callbacks) to those already provided by default by the selector (cancelCallback and selectCallback)\n */\n @Prop() readonly dialogActions: DialogAction[] = [];\n\n /**\n * Callback emitted when the user right click on an item\n */\n @Prop() readonly itemContextMenuCallback: (\n info: ContextMenuInfo\n ) => Promise<void>;\n\n /**\n * Represents the itemLis list model\n */\n @Prop() readonly itemsList: ItemNode[] = [];\n\n /**\n * Used to define if the component must show the \"Toggle Checkboxes\" option or not\n */\n @Prop() readonly showToggleCheckboxes: boolean = true;\n\n @Watch(\"itemsList\")\n watchNodeListHandler(newItemsList: ItemNode[]) {\n this.#updateViews(newItemsList);\n // Check and update activeItem\n this.activeItemNode = findFirstActiveNode(newItemsList);\n\n this.loading = false;\n }\n\n /**\n * This define if the selection is unique or not\n */\n @Prop() readonly multiSelection?: boolean = false;\n\n /**\n * This define if the checks are unique or not\n */\n @Prop() readonly singleChecks?: boolean = false;\n\n /**\n * Used to define if the component must show the \"Active item\" link or not\n */\n @Prop() readonly showActiveItemLink?: boolean = false;\n\n /**\n * Callback emitted when the items selection change\n */\n @Prop() readonly selectionChanged?: (selectedItem: string[]) => Promise<void>;\n\n async componentWillLoad() {\n this.loading = true;\n this.#_componentLocale = await Locale.getComponentStrings(this.el);\n this.toggleCheckboxes = this.showToggleCheckboxes;\n this.#viewItemsAsModel = [\n { value: VIEW_AS_TREE_ID, caption: this.#_componentLocale.main.tree },\n { value: VIEW_AS_LIST_ID, caption: \"List\" }\n ];\n this.renderFooter =\n this.dialogActions.length > 0 ||\n !!this.cancelCallback ||\n !!this.confirmCallback;\n }\n\n /**\n * Suspends or reactivates the shortcuts\n */\n @Method()\n async suspendShortcuts(suspendShortcuts: boolean) {\n if (suspendShortcuts) {\n this.#chShortcutsEl.suspend = true;\n } else {\n this.#chShortcutsEl.suspend = false;\n }\n }\n\n /**\n * Allow to update the selected items\n */\n @Method()\n async updateSelection(selectedItemsIds: string[]) {\n // first clear selected\n this.#treeViewRenderEl.updateItemsProperties(this.#selectedNodesIds, {\n selected: false\n });\n // then select\n this.#treeViewRenderEl.updateItemsProperties(selectedItemsIds, {\n selected: true\n });\n }\n\n /**\n * Allow to update the checked items\n */\n @Method()\n async updateCheckedItems(checkedItemsIds: string[]) {\n // first clear checks\n this.#treeViewRenderEl.updateItemsProperties(this.checkedNodesIds, {\n checked: false\n });\n // then select\n this.#treeViewRenderEl.updateItemsProperties(checkedItemsIds, {\n checked: true\n });\n this.checkedNodesIds = checkedItemsIds;\n }\n\n #cancelHandler = () => {\n if (this.cancelCallback) {\n this.cancelCallback();\n }\n };\n\n #checkedItemsChangeHandler = async (\n e: CustomEvent<Map<string, TreeViewItemModelExtended>>\n ) => {\n let checkedNodesIds: string[] = [];\n e.detail.forEach(node => {\n if (node.item.checked) {\n checkedNodesIds.push(node.item.id);\n }\n });\n\n if (this.singleChecks) {\n // Detect the last change by comparing previous and new state\n let lastCheckedId: string | null = null;\n // If there are more in the new state, it was a check; if less, it was an uncheck\n if (checkedNodesIds.length > this.checkedNodesIds.length) {\n // Find the newly checked item\n lastCheckedId =\n checkedNodesIds.find(id => !this.checkedNodesIds.includes(id)) ||\n null;\n } else if (checkedNodesIds.length < this.checkedNodesIds.length) {\n // Find the unchecked item (not used in single check, but kept for clarity)\n lastCheckedId =\n this.checkedNodesIds.find(id => !checkedNodesIds.includes(id)) ||\n null;\n }\n\n // Only allow one if multiChecks is false\n if (this.singleChecks && checkedNodesIds.length > 1) {\n // If we detected the last checked, keep it; otherwise, keep the first\n checkedNodesIds = lastCheckedId\n ? [lastCheckedId]\n : [checkedNodesIds[0]];\n // Uncheck the others\n this.#treeViewRenderEl.updateItemsProperties(\n Array.from(e.detail.keys()).filter(id => id !== checkedNodesIds[0]),\n { checked: false }\n );\n }\n }\n\n this.checkedNodesIds = checkedNodesIds;\n this.#updatedModelList = checkItems(this.itemsList, this.checkedNodesIds);\n\n if (this.checkedChanged) {\n this.checkedChanged(this.checkedNodesIds);\n }\n };\n\n #confirmHandler = () => {\n if (this.confirmCallback) {\n this.confirmCallback(this.checkedNodesIds);\n }\n };\n\n #contextMenuHandler = async (\n e: CustomEvent<{\n id: string;\n itemRef: HTMLChTreeViewItemElement;\n metadata: string;\n contextmenuEvent: PointerEvent;\n }>\n ) => {\n if (this.itemContextMenuCallback) {\n let info: ContextMenuInfo;\n const isSelected = this.#selectedNodesIds.find(id => id === e.detail.id);\n if (!this.#selectedNodesIds.length || !isSelected) {\n await this.#treeViewRenderEl.updateItemsProperties(\n this.#selectedNodesIds,\n { selected: false }\n );\n await this.#treeViewRenderEl.updateItemsProperties([e.detail.id], {\n selected: true\n });\n info = {\n clientX: e.detail.contextmenuEvent.clientX,\n clientY: e.detail.contextmenuEvent.clientY,\n selection: [e.detail.id]\n };\n } else {\n info = {\n clientX: e.detail.contextmenuEvent.clientX,\n clientY: e.detail.contextmenuEvent.clientY,\n selection: this.#selectedNodesIds\n };\n }\n this.itemContextMenuCallback(info);\n }\n };\n\n #executeDialogAction = (\n callback: (checkedNodesIds: string[], selectedNodesIds: string[]) => void\n ) => {\n return () => {\n callback(this.checkedNodesIds, this.#selectedNodesIds);\n };\n };\n\n #patternSearchValueChangedHandler = (\n event: CustomEvent<string> | InputEvent\n ) => {\n this.searchPatternValue = event.detail.toString();\n };\n\n #renderActionButtons = (): HTMLElement[] => {\n return (\n <div>\n {this.dialogActions.map(action => {\n return (\n <button\n class={\"button-tertiary\"}\n part={`button button-${action.name}`}\n onClick={this.#executeDialogAction(action.callback)}\n disabled={this.loading}\n >\n {action.name}\n </button>\n );\n })}\n </div>\n );\n };\n\n #renderFooter = (): HTMLElement => {\n return (\n <footer class=\"footer control-footer-with-border spacing-body-inline spacing-body-block-end control-footer-space-between\">\n {this.#renderActionButtons()}\n <div class=\"buttons-spacer \">\n {this.cancelCallback && (\n <button\n class={\"button-secondary\"}\n part={\"cancel-button\"}\n onClick={this.#cancelHandler}\n >\n {this.#_componentLocale.footer.cancel}\n </button>\n )}\n {this.confirmCallback && (\n <button\n class={\"button-primary\"}\n part={\"confirm-button\"}\n onClick={this.#confirmHandler}\n disabled={this.loading || this.checkedNodesIds?.length === 0}\n >\n {this.#_componentLocale.footer.select}\n </button>\n )}\n </div>\n </footer>\n );\n };\n\n #selectedItemsChangeHandler = (\n e: CustomEvent<TreeViewItemModelExtended[]>\n ) => {\n const selectedNodesIds: string[] = [];\n unselectAllNodes(this.itemsList);\n e.detail.forEach(node => {\n selectedNodesIds.push(node.item.id);\n });\n this.#selectedNodesIds = selectedNodesIds;\n if (this.selectionChanged) {\n this.selectionChanged(this.#selectedNodesIds);\n }\n\n this.#updatedModelList = selectItems(this.itemsList, selectedNodesIds);\n };\n\n #toggleAndSelectNodesInModelItems = async (selectedItemsIds: string[]) => {\n const nodesToToggle = searchParentsItems(this.itemsList, selectedItemsIds);\n const newItemsSelected = selectItems(this.itemsList, selectedItemsIds);\n const newItemsExpanded = expandItems(newItemsSelected, nodesToToggle);\n this.#updateViews(newItemsExpanded);\n };\n\n #toggleCheckedNodesInModelItems = async (selectedItemsIds: string[]) => {\n const nodesToToggle = searchParentsItems(this.itemsList, selectedItemsIds);\n const newItemsExpanded = expandItems(this.itemsList, nodesToToggle);\n this.#updateViews(newItemsExpanded);\n };\n\n #updateViews = (newItemsList: ItemNode[]) => {\n this.nodeVersionsListTreeModel = convertItemsListToTreeViewModel(\n newItemsList,\n this.checkboxType\n );\n\n this.nodeListFlattenedTreeModel =\n convertItemsNodeListToFlattenedTreeViewModel(\n newItemsList,\n this.checkboxType\n );\n };\n\n #viewItemsAsChangedHandler = async (event: CustomEvent<string>) => {\n const selectedViewType = event.detail as NodesVersionsViewType;\n this.nodesVersionsViewType = selectedViewType;\n if (this.nodesVersionsViewType === \"tree\") {\n await this.#toggleAndSelectNodesInModelItems(this.#selectedNodesIds);\n await this.#toggleCheckedNodesInModelItems(this.checkedNodesIds);\n }\n this.#updateViews(this.#updatedModelList);\n };\n\n #toggleCheckboxesChangedHandler = (\n event: ChCheckboxCustomEvent<string> | InputEvent\n ) => {\n this.toggleCheckboxes = event.detail === TOGGLE_CHECKBOXES_CHECKED_VALUE;\n };\n\n #scrollIntoActiveVersionNode = () => {\n const doScrollIntoView =\n this.#treeViewRenderEl && this.activeItemNode?.path;\n if (doScrollIntoView) {\n this.#treeViewRenderEl.scrollIntoVisible(this.activeItemNode.path);\n }\n\n if (this.activeItemCallback) {\n this.activeItemCallback();\n }\n };\n\n render() {\n return (\n <Host class={{ \"widget\": true, \"has-footer\": this.renderFooter }}>\n <ch-theme model={CSS_BUNDLES}></ch-theme>\n <ch-shortcuts\n src={this.#shortcutsSrc}\n ref={(el: HTMLChShortcutsElement) =>\n (this.#chShortcutsEl = el as HTMLChShortcutsElement)\n }\n ></ch-shortcuts>\n <section class=\"section\">\n <header\n part=\"header\"\n class=\"header control-header field-group spacing-body-block-start spacing-body-inline\"\n >\n <div class=\"header__first-row\">\n <div class=\"field field-inline\">\n <label class=\"label\" htmlFor=\"view-mode\">\n Select view mode:\n </label>\n <ch-radio-group-render\n class=\"radio-group dummy-control-block-size\"\n id=\"view-mode\"\n model={this.#viewItemsAsModel}\n onChange={this.#viewItemsAsChangedHandler}\n value={this.#viewItemsAsModel[0].value}\n ></ch-radio-group-render>\n </div>\n\n {this.checkboxType !== \"none\" && this.showToggleCheckboxes && (\n <div class=\"field field-inline\">\n <label class=\"label\" htmlFor=\"toggle-checkboxes\">\n Toggle Checkboxes\n </label>\n <ch-checkbox\n class=\"checkbox dummy-control-block-size\"\n id=\"toggle-checkboxes\"\n checkedValue={TOGGLE_CHECKBOXES_CHECKED_VALUE}\n value={TOGGLE_CHECKBOXES_CHECKED_VALUE}\n onInput={this.#toggleCheckboxesChangedHandler}\n ></ch-checkbox>\n </div>\n )}\n </div>\n\n <div\n class={{\n \"header__second-row\": true,\n \"header__second-row--one-row\": !this.showActiveItemLink\n }}\n >\n <ch-edit\n class=\"input\"\n placeholder={\n this.#_componentLocale.header.searchPatternPlaceholder\n }\n startImgSrc={SYSTEM_SEARCH_ICON}\n onInput={this.#patternSearchValueChangedHandler}\n accessibleName=\"search pattern\"\n ></ch-edit>\n {this.activeItemNode && this.showActiveItemLink && (\n <div class=\"active-item\">\n <span\n class=\"active-item__icon-container\"\n // make this span the icon container, to prevent icon state changes when\n // interacting with div.active-item\n >\n <ch-image\n class=\"icon-md active-item__icon\"\n src={\n this.activeItemNode.iconStart ||\n ACTIVE_ITEM_DEFAULT_ICON\n }\n containerRef={null}\n ></ch-image>\n </span>\n {this.#_componentLocale.header.activeItem}\n <button\n class=\"active-item__link\"\n onClick={this.#scrollIntoActiveVersionNode}\n >\n {this.activeItemNode.caption}\n </button>\n </div>\n )}\n </div>\n </header>\n\n <div class=\"spacing-body-inline-start trees\">\n {this.loading ? (\n <gx-ide-loader\n loaderTitle={this.#_componentLocale.loader.title}\n description={this.#_componentLocale.loader.description}\n show\n ></gx-ide-loader>\n ) : (\n <ch-tree-view-render\n class=\"tree-view\"\n model={\n this.nodesVersionsViewType === \"tree\"\n ? this.nodeVersionsListTreeModel\n : this.nodeListFlattenedTreeModel\n }\n show-lines={\n this.nodesVersionsViewType === \"tree\" ? \"all\" : \"none\"\n }\n expandableButton={\n this.nodesVersionsViewType === \"tree\" ? \"decorative\" : \"no\"\n }\n onItemContextmenu={this.#contextMenuHandler}\n onCheckedItemsChange={this.#checkedItemsChangeHandler}\n onSelectedItemsChange={this.#selectedItemsChangeHandler}\n expandOnClick={this.expandOnClick}\n multiSelection={this.multiSelection}\n filter={this.searchPatternValue}\n filterType=\"caption\"\n toggleCheckboxes={this.toggleCheckboxes}\n ref={(el: HTMLChTreeViewRenderElement) => {\n this.#treeViewRenderEl = el as HTMLChTreeViewRenderElement;\n }}\n ></ch-tree-view-render>\n )}\n </div>\n {this.renderFooter && this.#renderFooter()}\n </section>\n </Host>\n );\n }\n}\n\nexport type CheckboxType = \"none\" | \"all\" | \"leaf\" | \"custom\";\n\nexport type DialogAction = {\n name: string;\n callback: DialogActionCallback;\n};\n\nexport type DialogActionCallback = (...args: any[]) => void;\n\nexport type ItemCommon = {\n icon: string;\n expanded: boolean;\n};\n\nexport type ItemNode = {\n active?: boolean;\n checkbox?: boolean;\n checked?: boolean;\n expanded?: boolean;\n iconStart?: string;\n iconEnd?: string;\n id: string;\n name: string;\n nodes?: ItemNode[];\n parts?: string;\n selected?: boolean;\n type?: ItemType;\n order?: number;\n};\n\nexport type ActiveNode = {\n caption: string;\n iconStart?: string;\n path: string[]; // for using the scrollIntoVisible method of the tree-view-render\n};\n\nexport type ItemType = {\n id: string;\n name: string;\n};\n\ntype NodesVersionsViewType = \"tree\" | \"list\";\n"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["restoreVersionCss","CSS_BUNDLES","SHOW_MORE_ICON","getIconPath","category","name","colorType","VERSION_FROZEN_OBJECT_ICON","VERSION_OBJECT_ICON","VERSION_ICON","GxIdeRestoreVersion","_GxIdeRestoreVersion_componentLocale","set","this","_GxIdeRestoreVersion_shortcutsSrc","getAssetPath","_GxIdeRestoreVersion_confirmHandler","async","restoreVersionData","toVersionGuid","toVersionInfo","guid","toVersionName","fromVersionGuid","versions","find","version","selectedSourceVersionName","fromVersionName","syncEnvironments","confirmCallback","_GxIdeRestoreVersion_cancelHandler","cancelCallback","_GxIdeRestoreVersion_versionsToComboBoxItemModel","versionsComboBoxModel","map","caption","value","startImgSrc","isFrozen","_GxIdeRestoreVersion_handleComboBoxInput","event","detail","_GxIdeRestoreVersion_selectSourceVersionHandler","selectedSourceVersion","selectSourceVersionCallback","_GxIdeRestoreVersion_renderFooter","disableConfirmButton","some","v","h","class","id","onClick","__classPrivateFieldGet","footer","cancel","disabled","confirm","versionsChanged","call","componentWillLoad","__classPrivateFieldSet","Locale","getComponentStrings","el","render","Host","model","src","type","descriptions","pill","summary","htmlFor","labels","fromVersion","placeholder","placeHolders","suggest","onInput"],"sources":["src/components/restore-version/restore-version.scss?tag=gx-ide-restore-version&encapsulation=shadow","src/components/restore-version/restore-version.tsx"],"sourcesContent":["@import \"../../global/gx-ide-common.scss\";\n\n:host {\n display: grid;\n block-size: 100%;\n grid-template-rows: 1fr max-content;\n}\n\n.main-container {\n display: grid;\n grid-template-rows: max-content max-content max-content;\n gap: var(--mer-spacing--md);\n}\n\n.versions-container {\n display: grid;\n grid-template-columns: 1fr max-content;\n gap: var(--mer-spacing--xs);\n\n .button-icon-only {\n border-color: var(--mer-color__neutral-gray--500);\n border-width: var(--mer-border__width--sm);\n border-radius: var(--mer-border__radius--sm);\n }\n\n .button-icon-only:hover {\n border-color: var(--mer-color__neutral-gray--100);\n }\n}\n\n.giu-static-pill-icon-and-text {\n background-color: var(--mer-surface__elevation--02);\n}\n","import {\n ChComboBoxRenderCustomEvent,\n ComboBoxModel\n} from \"@genexus/chameleon-controls-library\";\nimport { getIconPath, MercuryBundles } from \"@genexus/mercury\";\nimport {\n Component,\n Element,\n getAssetPath,\n h,\n Host,\n Prop,\n State,\n Watch\n} from \"@stencil/core\";\nimport { Locale } from \"../../common/locale\";\nimport { KBVersion } from \"../team-dev/version-control/common/types\";\n\nconst CSS_BUNDLES: MercuryBundles = [\n \"resets/box-sizing\",\n \"utils/form--full\",\n \"utils/layout\",\n \"utils/typography\",\n \"utils/spacing\",\n \"chameleon/scrollbar\"\n];\n\nconst SHOW_MORE_ICON = getIconPath({\n category: \"gemini-tools\",\n name: \"show-more-horizontal\",\n colorType: \"on-elevation\"\n});\n\nconst VERSION_FROZEN_OBJECT_ICON = getIconPath({\n category: \"objects\",\n name: \"version-frozen\"\n});\n\nconst VERSION_OBJECT_ICON = getIconPath({\n category: \"objects\",\n name: \"version\"\n});\n\nconst VERSION_ICON = getIconPath({\n category: \"system\",\n name: \"version\",\n colorType: \"on-surface\"\n});\n\n// Uncomment this when the sync environments feature is available\n// const CHECKBOX_CHECKED_VALUE = \"true\";\n\n@Component({\n tag: \"gx-ide-restore-version\",\n styleUrl: \"restore-version.scss\",\n shadow: true,\n assetsDirs: [\"gx-ide-assets/restore-version\"]\n})\nexport class GxIdeRestoreVersion {\n #componentLocale: any;\n #shortcutsSrc = getAssetPath(\n `./gx-ide-assets/restore-version/shortcuts.json`\n );\n @Element() el: HTMLGxIdeRestoreVersionElement;\n\n /**\n * Indicates if the environments should be synchronized.\n */\n @State() syncEnvironments: boolean = false;\n\n /**\n * Input value for the source version selector.\n */\n @State() selectedSourceVersionName: string = \"\";\n\n /**\n * Selected source version from version selector.\n */\n @State() selectedSourceVersion: KBVersion[] = [];\n\n /**\n * Combo box model for the versions selector.\n */\n @State() versionsComboBoxModel: ComboBoxModel = [];\n\n /**\n * Callback invoked by pressing the ellipsis in the version selector.\n */\n @Prop() readonly selectSourceVersionCallback!: () => Promise<KBVersion[]>;\n\n /**\n * Callback invoked by pressing the Confirm button.\n */\n @Prop() readonly confirmCallback!: (\n restoreVersionData: RestoreVersionData\n ) => Promise<void>;\n\n /**\n * Callback invoked by pressing the Cancel button.\n */\n @Prop() readonly cancelCallback!: () => Promise<void>;\n\n /**\n * The target version to which the restore will be made.\n */\n @Prop() readonly toVersionInfo!: KBVersion;\n\n /**\n * List of versions to show in the versions combo box.\n */\n @Prop() readonly versions!: KBVersion[];\n @Watch(\"versions\")\n versionsChanged() {\n this.#versionsToComboBoxItemModel(this.versions);\n }\n\n async componentWillLoad() {\n this.#componentLocale = await Locale.getComponentStrings(this.el);\n this.#versionsToComboBoxItemModel(this.versions || []);\n }\n\n #confirmHandler = async () => {\n const restoreVersionData = {\n toVersionGuid: this.toVersionInfo.guid,\n toVersionName: this.toVersionInfo.name,\n fromVersionGuid: this.versions.find(\n version => version.name === this.selectedSourceVersionName\n ).guid,\n fromVersionName: this.selectedSourceVersionName,\n syncEnvironments: this.syncEnvironments\n };\n await this.confirmCallback(restoreVersionData);\n };\n\n #cancelHandler = async () => {\n await this.cancelCallback();\n };\n\n #versionsToComboBoxItemModel = (versions: KBVersion[]) => {\n this.versionsComboBoxModel = versions.map(version => ({\n caption: version.name,\n value: version.guid,\n startImgSrc: version.isFrozen\n ? VERSION_FROZEN_OBJECT_ICON\n : VERSION_OBJECT_ICON\n }));\n };\n\n #handleComboBoxInput = (\n event: ChComboBoxRenderCustomEvent<string> | InputEvent\n ) => {\n this.selectedSourceVersionName = event.detail as string;\n };\n // Uncomment this when the sync environments feature is available\n // #handleCheckBoxValueChange = (\n // event: ChCheckboxCustomEvent<any> | InputEvent\n // ) => {\n // this.syncEnvironments = event.detail === CHECKBOX_CHECKED_VALUE;\n // };\n\n #selectSourceVersionHandler = async () => {\n this.selectedSourceVersion = await this.selectSourceVersionCallback();\n this.selectedSourceVersionName = this.selectedSourceVersion[0].name;\n };\n\n #renderFooter = () => {\n const disableConfirmButton =\n !this.selectedSourceVersionName ||\n !this.versionsComboBoxModel.some(\n v => v.caption === this.selectedSourceVersionName\n );\n return (\n <footer class=\"footer control-footer-with-border spacing-body\">\n <div class=\"buttons-spacer\">\n <button\n id=\"cancel-button\"\n class=\"button-secondary\"\n onClick={this.#cancelHandler}\n >\n {this.#componentLocale.footer.cancel}\n </button>\n\n <button\n id=\"confirm-button\"\n class=\"button-primary\"\n onClick={this.#confirmHandler}\n disabled={disableConfirmButton}\n >\n {this.#componentLocale.footer.confirm}\n </button>\n </div>\n </footer>\n );\n };\n\n render() {\n return (\n <Host class=\"widget\">\n <ch-theme model={CSS_BUNDLES}></ch-theme>\n <ch-shortcuts src={this.#shortcutsSrc}></ch-shortcuts>\n\n <div class=\"main-container spacing-body\">\n <div>\n <p class=\"giu-static-pill-icon-and-text\">\n <ch-image\n class=\"icon-md\"\n type=\"mask\"\n src={VERSION_ICON}\n ></ch-image>\n <span>{`${this.#componentLocale.descriptions.pill} - ${this.toVersionInfo.name}`}</span>\n </p>\n </div>\n <p class=\"body-regular-m\">\n {this.#componentLocale.descriptions.summary}\n </p>\n\n <div class=\"field field-block\">\n <label class=\"label\" htmlFor=\"versions-combo-box\">\n {this.#componentLocale.labels.fromVersion}\n </label>\n <div class=\"versions-container\">\n <ch-combo-box-render\n class=\"combo-box\"\n id=\"versions-combo-box\"\n model={this.versionsComboBoxModel}\n placeholder={this.#componentLocale.placeHolders.fromVersion}\n value={this.selectedSourceVersionName}\n suggest={true}\n onInput={this.#handleComboBoxInput}\n />\n <button\n id=\"select-version-button\"\n class=\"button-tertiary button-icon-only\"\n onClick={this.#selectSourceVersionHandler}\n >\n <ch-image src={SHOW_MORE_ICON} class=\"icon-sm\"></ch-image>\n </button>\n </div>\n </div>\n\n {\n // Uncomment this when the sync environments feature is available\n /* <ch-checkbox\n class=\"checkbox\"\n caption={this.#componentLocale.buttons.syncEnvironments}\n checkedValue={CHECKBOX_CHECKED_VALUE}\n onInput={this.#handleCheckBoxValueChange}\n /> */\n }\n </div>\n {this.#renderFooter()}\n </Host>\n );\n }\n}\n\nexport type RestoreVersionData = {\n fromVersionName: string;\n fromVersionGuid: string;\n toVersionGuid: string;\n toVersionName: string;\n syncEnvironments: boolean;\n};\n"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["shareKbCss","CSS_BUNDLES","GxIdeShareKb","_GxIdeShareKb_showMoreIcon","set","this","getIconPath","category","name","colorType","_GxIdeShareKb_versionsSelect","value","caption","_GxIdeShareKb__componentLocale","_GxIdeShareKb_kbVersions","_GxIdeShareKb_renderedFirstTime","_GxIdeShareKb_shortcutsSrc","getAssetPath","_GxIdeShareKb_selectedKbId","_GxIdeShareKb_versionSelectedTypeEl","_GxIdeShareKb_KBNameEl","_GxIdeShareKb_cancelHandler","cancelCallback","_GxIdeShareKb_changeConnectionHandler","async","changeConnectionCallback","authenticationType","connectionData","serverUrl","userName","userPassword","_GxIdeShareKb_shareKBHandler","versionSelectedType","__classPrivateFieldSet","shareKBCallback","kbName","versionList","__classPrivateFieldGet","allVersions","then","formSubmitResult","validatableControls","validateControls","_GxIdeShareKb_evaluateTooltipRender","controlReference","_b","_a","get","id","hasError","_c","message","h","class","actionElement","blockAlign","config","tooltipSettings","inlineAlign","delay","_GxIdeShareKb_initializeValidatableControls","forEach","validatableControl","reference","undefined","_GxIdeShareKb_kbNameInputHandler","event","detail","_GxIdeShareKb_selectedVersionHandler","selectKBVersionsCallback","result","length","map","kbVersion","localKbNameInputValue","versionsValueInput","kb","versionsPlaceholder","toString","versionSelectedFieldValue","oneVersionSelectedFieldValue","_GxIdeShareKb_versionsChangedHandler","enableSelectVersionsButton","_GxIdeShareKb_renderFooter","disableShareKbButton","onClick","part","footer","cancel","disabled","shareKB","Map","componentDidLoad","call","componentDidRender","componentDidRenderFirstTime","emit","componentName","componentWillLoad","Locale","getComponentStrings","el","render","Host","model","src","ref","chShortcutsEl","header","user","change","htmlFor","aliasLabel","onInput","placeholder","localKbNamePlaceholder","onChange","versionsLabel","readonly","versionsPlaceholderDisabled"],"sources":["src/components/team-dev/share-kb/share-kb.scss?tag=gx-ide-share-kb&encapsulation=shadow","src/components/team-dev/share-kb/share-kb.tsx"],"sourcesContent":[":host {\n display: grid;\n block-size: 100%;\n grid-template-rows: max-content 1fr max-content;\n}\n\n.section {\n display: contents;\n}\n\n// - - - - - - - - - - -\n// Header\n// - - - - - - - - - - -\n\nheader {\n display: grid;\n grid-template-rows: max-content;\n grid-template-columns: 1fr 1fr max-content;\n}\n\n.button-change {\n align-self: center;\n justify-self: end;\n}\n\n// - - - - - - - - - - -\n// Main\n// - - - - - - - - - - -\n\n.main {\n display: grid;\n grid-template-columns: 1fr;\n grid-template-rows: max-content 1fr max-content max-content;\n}\n\n.search-kbs {\n inline-size: 50%;\n}\n\n.versions-container {\n grid-auto-rows: max-content;\n\n &__input {\n display: grid;\n grid-template-columns: 1fr max-content;\n gap: var(--mer-spacing--xs);\n }\n}\n\n.button-icon-only.button-tertiary {\n border-color: var(--mer-color__neutral-gray--500);\n border-width: var(--mer-border__width--sm);\n border-radius: var(--mer-border__radius--sm);\n}\n\n.button-icon-only:hover {\n border-color: var(--mer-color__neutral-gray--100);\n}\n","// Stencil\nimport {\n Component,\n Element,\n Event,\n EventEmitter,\n getAssetPath,\n h,\n Host,\n Prop,\n State\n} from \"@stencil/core\";\n\n// Other Libraries\nimport { getIconPath, MercuryBundles } from \"@genexus/mercury\";\n\n// Custom Imports\nimport { ChEditCustomEvent } from \"@genexus/chameleon-controls-library\";\nimport { RadioGroupItemModel } from \"@genexus/chameleon-controls-library/dist/types/components/radio-group/types\";\nimport { config } from \"../../../common/config\";\nimport {\n ControlValidation,\n validateControls\n} from \"../../../common/form-validation\";\nimport { Locale } from \"../../../common/locale\";\nimport { FormSubmitResult } from \"../../../common/types\";\nimport { GXServerConnectionData } from \"../connect-gx-server/connect-gx-server\";\nimport { KBVersion } from \"../version-control/common/types\";\n\nconst CSS_BUNDLES: MercuryBundles = [\n \"resets/box-sizing\",\n \"utils/form--full\",\n \"utils/layout\",\n \"utils/typography\",\n \"utils/spacing\",\n \"components/list-box\",\n \"components/tooltip\",\n \"chameleon/scrollbar\"\n];\n\n@Component({\n tag: \"gx-ide-share-kb\",\n styleUrl: \"share-kb.scss\",\n shadow: true,\n assetsDirs: [\"gx-ide-assets/share-kb\"]\n})\nexport class GxIdeShareKb {\n #showMoreIcon = getIconPath({\n category: \"gemini-tools\",\n name: \"show-more-horizontal\",\n colorType: \"on-elevation\"\n });\n\n #versionsSelect: RadioGroupItemModel[] = [\n { value: \"Trunk\", caption: \"Trunk Version\" },\n { value: \"All\", caption: \"All Versions\" },\n { value: \"Select\", caption: \"Select Version\" }\n ];\n\n [key: string]: any;\n\n #_componentLocale: any;\n #kbVersions: KBVersion[] = [];\n #renderedFirstTime = false;\n #shortcutsSrc = getAssetPath(\n `./gx-ide-assets/create-kb-from-server/shortcuts.json`\n );\n #selectedKbId: string;\n\n #versionSelectedTypeEl: HTMLChRadioGroupRenderElement;\n\n @Element() el: HTMLGxIdeShareKbElement;\n\n #KBNameEl!: HTMLChEditElement;\n\n /**\n * State to enable/disable the select versions button\n */\n @State() enableSelectVersionsButton: boolean = false;\n\n @State() validatableControls = new Map<string, ControlValidation>();\n\n /**\n * The version selected type\n */\n @State() versionSelectedType: VersionOption;\n\n /**\n * String value to show the number of versions selected (\"N versions selected\")\n */\n @State() versionsValueInput: string = \"\";\n\n /**\n * Set of data required when executing any of the callbacks that require a connection to the server.\n */\n @Prop() readonly connectionData: GXServerConnectionData;\n\n /**\n * Callback that is invoked when the dialog is closed\n */\n @Prop() readonly cancelCallback!: () => Promise<void>;\n\n /**\n * The host reopens the gx-ide-connect-server login modal with the previous data, and closes the current modal\n */\n @Prop() readonly changeConnectionCallback: (\n data: GXServerConnectionData\n ) => Promise<void>;\n\n /**\n * The name of the KB.\n */\n @Prop({ mutable: true }) kbName: string;\n\n /**\n * Callback that must be invoked when the Share button is pressed.\n */\n @Prop() readonly shareKBCallback: (\n data: ShareKBData\n ) => Promise<FormSubmitResult>;\n\n /**\n * Callback invoked by pressing the ellipsis in the version selector. Receives the KB selected by the user, and displays the version selector dialog. Returns a list of versions chosen by the user.\n */\n @Prop() readonly selectKBVersionsCallback: (\n selectedKB: string\n ) => Promise<KBVersion[]>;\n\n /**\n * Emitted once just after the component is fully loaded and the first render() occurs\n */\n @Event() componentDidRenderFirstTime: EventEmitter<boolean>;\n\n componentDidLoad() {\n this.versionSelectedType = this.#versionSelectedTypeEl\n .value as VersionOption;\n\n this.#initializeValidatableControls();\n }\n\n componentDidRender() {\n if (!this.#renderedFirstTime) {\n this.componentDidRenderFirstTime.emit(\n this.#_componentLocale.componentName\n );\n this.#renderedFirstTime = true;\n }\n }\n\n async componentWillLoad() {\n this.#_componentLocale = await Locale.getComponentStrings(this.el);\n }\n\n #cancelHandler = (): void => {\n this.cancelCallback();\n };\n\n #changeConnectionHandler = async (): Promise<void> => {\n this.changeConnectionCallback({\n authenticationType: this.connectionData.authenticationType,\n serverUrl: this.connectionData.serverUrl,\n userName: this.connectionData.userName,\n userPassword: this.connectionData.userPassword\n });\n };\n\n #shareKBHandler = async (): Promise<void> => {\n if (this.versionSelectedType !== \"Select\") {\n this.#kbVersions = [];\n }\n this.shareKBCallback({\n name: this.kbName,\n serverUrl: this.connectionData.serverUrl,\n versionList: this.#kbVersions,\n allVersions: this.versionSelectedType === \"All\"\n }).then((formSubmitResult: FormSubmitResult) => {\n this.validatableControls = validateControls(\n formSubmitResult,\n this.validatableControls\n );\n });\n };\n\n // TODO: evaluate if this should be a global helper function.\n // It is used on other dialogs as well.\n #evaluateTooltipRender = (\n controlReference: HTMLElement\n ): HTMLChTooltipElement =>\n this.validatableControls?.get(controlReference?.id)?.hasError &&\n this.validatableControls.get(controlReference.id)?.message && (\n <ch-tooltip\n class=\"tooltip\"\n actionElement={controlReference as unknown as HTMLButtonElement}\n blockAlign={config.tooltipSettings.blockAlign}\n inlineAlign={config.tooltipSettings.inlineAlign}\n delay={config.tooltipSettings.delay}\n >\n {this.validatableControls.get(controlReference.id).message}\n </ch-tooltip>\n );\n\n #initializeValidatableControls = () => {\n // populate validatableControls with the controls that could have errors.\n const validatableControls: HTMLElement[] = [this.#KBNameEl];\n validatableControls.forEach(validatableControl => {\n if (validatableControl.id) {\n this.validatableControls.set(validatableControl.id, {\n reference: validatableControl,\n hasError: false,\n message: undefined\n });\n }\n });\n };\n\n #kbNameInputHandler = (event: ChEditCustomEvent<string> | InputEvent) => {\n this.kbName = event.detail as string;\n };\n\n #selectedVersionHandler = async () => {\n if (this.selectKBVersionsCallback) {\n await this.selectKBVersionsCallback(this.#selectedKbId).then(result => {\n if (result?.length) {\n this.#kbVersions = result.map(kbVersion => ({\n id: kbVersion.id,\n name: kbVersion.name\n }));\n\n if (result.length === 1 && this.#kbVersions[0].id === 0) {\n this.localKbNameInputValue = this.#selectedKbId;\n this.versionsValueInput =\n this.#_componentLocale.kb.versionsPlaceholder;\n } else if (result.length > 1) {\n this.localKbNameInputValue = this.#selectedKbId;\n this.versionsValueInput = `${result.length.toString()} ${\n this.#_componentLocale.kb.versionSelectedFieldValue\n }`;\n } else {\n this.localKbNameInputValue = `${this.#selectedKbId}_${\n this.#kbVersions[0].name\n }`;\n this.versionsValueInput = `${result[0].name} ${\n this.#_componentLocale.kb.oneVersionSelectedFieldValue\n }`;\n }\n }\n });\n }\n };\n\n #versionsChangedHandler = (event: CustomEvent<string>) => {\n this.versionSelectedType = event.detail as VersionOption;\n if (this.versionSelectedType === \"Select\") {\n this.enableSelectVersionsButton = true;\n } else {\n this.enableSelectVersionsButton = false;\n }\n };\n\n #renderFooter = () => {\n const disableShareKbButton = !this.kbName.length;\n return (\n <footer class=\"footer control-footer-with-border spacing-body-inline spacing-body-block-end\">\n <div class=\"buttons-spacer\">\n <button\n // cancel button\n class=\"button-secondary\"\n onClick={this.#cancelHandler}\n part=\"button button-cancel\"\n >\n {this.#_componentLocale.footer.cancel}\n </button>\n\n <button\n // share kb button\n class=\"button-primary\"\n onClick={!disableShareKbButton && this.#shareKBHandler}\n disabled={disableShareKbButton}\n part=\"button button-create-kb\"\n >\n {this.#_componentLocale.footer.shareKB}\n </button>\n </div>\n </footer>\n );\n };\n\n render(): void {\n return (\n <Host class=\"widget\">\n <ch-theme model={CSS_BUNDLES}></ch-theme>\n <ch-shortcuts\n src={this.#shortcutsSrc}\n ref={(el: HTMLChShortcutsElement) =>\n (this.chShortcutsEl = el as HTMLChShortcutsElement)\n }\n ></ch-shortcuts>\n\n <section class=\"section\">\n <header class=\"header control-header-with-border space-body spacing-body-inline spacing-body-block-start\">\n <div class=\"field field-block\">\n <label class=\"label\">\n {this.#_componentLocale.header.serverUrl}\n </label>\n <p>{this.connectionData.serverUrl}</p>\n </div>\n\n <div class=\"field field-block\">\n <label class=\"label\">{this.#_componentLocale.header.user}</label>\n <p>{this.connectionData.userName}</p>\n </div>\n\n <button\n id=\"change-connection-button\"\n class=\"button-tertiary button-change\"\n onClick={this.#changeConnectionHandler}\n >\n {this.#_componentLocale.header.change}\n </button>\n </header>\n\n <section class=\"main field-group spacing-body\">\n <div class=\"field field-block\">\n <label class=\"label\" htmlFor=\"alias\">\n {this.#_componentLocale.kb.aliasLabel}\n </label>\n <ch-edit\n // alias\n class=\"input\"\n id=\"kb-name\"\n value={this.kbName}\n onInput={this.#kbNameInputHandler}\n placeholder={this.#_componentLocale.kb.localKbNamePlaceholder}\n ref={(el: HTMLChEditElement) =>\n (this.#KBNameEl = el as HTMLChEditElement)\n }\n ></ch-edit>\n {this.#evaluateTooltipRender(this.#KBNameEl)}\n </div>\n\n <div class=\"versions-container field-group\">\n <ch-radio-group-render\n class=\"radio-group\"\n model={this.#versionsSelect}\n onChange={this.#versionsChangedHandler}\n value={this.#versionsSelect[0].value}\n ref={(el: HTMLChRadioGroupRenderElement) =>\n (this.#versionSelectedTypeEl =\n el as HTMLChRadioGroupRenderElement)\n }\n ></ch-radio-group-render>\n\n {this.versionSelectedType === \"Select\" && (\n <div class=\"versions-container__item field-group\">\n <div class=\"field field-block\">\n <label class=\"label\" htmlFor=\"control-id-1\">\n {this.#_componentLocale.kb.versionsLabel}\n </label>\n <div class=\"versions-container__input\">\n <ch-edit\n class=\"input\"\n readonly\n placeholder={\n this.enableSelectVersionsButton\n ? this.#_componentLocale.kb.versionsPlaceholder\n : this.#_componentLocale.kb\n .versionsPlaceholderDisabled\n }\n value={this.versionsValueInput}\n ></ch-edit>\n <button\n id=\"select-version-button\"\n class=\"button-tertiary button-icon-only\"\n onClick={this.#selectedVersionHandler}\n disabled={!this.enableSelectVersionsButton}\n >\n <ch-image\n src={this.#showMoreIcon}\n class=\"icon-sm\"\n ></ch-image>\n </button>\n </div>\n </div>\n </div>\n )}\n </div>\n </section>\n\n {this.#renderFooter()}\n </section>\n </Host>\n );\n }\n}\n\nexport type KBData = {\n id: string;\n name: string;\n};\n\nexport type ConnectionResultData = {\n formResult: FormSubmitResult;\n kbs: KBData[];\n};\n\nexport type ShareKBData = {\n name: string;\n serverUrl: string;\n versionList: KBVersion[];\n allVersions: boolean;\n};\n\nexport type VersionOption = \"Trunk\" | \"All\" | \"Select\";\n"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["mapKbsModelToActionListModel","kbsData","listBoxItems","forEach","kb","push","id","type","caption","name","createKbFromServerCss","CSS_BUNDLES","INFO_ICON","getIconPath","category","colorType","GxIdeCreateKbFromServer","_GxIdeCreateKbFromServer_chSearchIcon","set","this","_GxIdeCreateKbFromServer_showMoreIcon","_GxIdeCreateKbFromServer_versionsSelect","value","_GxIdeCreateKbFromServer__componentLocale","_GxIdeCreateKbFromServer_kbsActionListModel","_GxIdeCreateKbFromServer_kbVersions","_GxIdeCreateKbFromServer_shortcutsSrc","getAssetPath","_GxIdeCreateKbFromServer_selectedKbId","_GxIdeCreateKbFromServer_kbNameAlreadyEditedByUser","_GxIdeCreateKbFromServer_versionSelectedTypeEl","_GxIdeCreateKbFromServer_localKBNameEl","_GxIdeCreateKbFromServer_cancelHandler","cancelCallback","_GxIdeCreateKbFromServer_changeConnectionHandler","async","changeConnectionCallback","authenticationType","connectionData","serverUrl","userName","userPassword","_GxIdeCreateKbFromServer_createHandler","versionSelectedType","__classPrivateFieldSet","createKBCallback","selectedKB","__classPrivateFieldGet","versionSelected","localKBName","localKbNameInputValue","versionList","then","formSubmitResult","validatableControls","validateControls","_GxIdeCreateKbFromServer_evaluateTooltipRender","controlReference","_b","_a","get","hasError","_c","message","h","class","actionElement","blockAlign","config","tooltipSettings","inlineAlign","delay","_GxIdeCreateKbFromServer_filterValueChangedHandler","event","filterValue","detail","toLowerCase","kbsFilteredActionListModel","filter","item","includes","_GxIdeCreateKbFromServer_init","getGXserverKBsCallback","result","_GxIdeCreateKbFromServer_initializeValidatableControls","validatableControl","reference","undefined","_GxIdeCreateKbFromServer_inputLocalKbNameHandler","_GxIdeCreateKbFromServer_selectedVersionHandler","selectKBVersionsCallback","length","map","kbVersion","versionsValueInput","versionsPlaceholder","toString","versionSelectedFieldValue","oneVersionSelectedFieldValue","_GxIdeCreateKbFromServer_selectKbChangeHandler","enableSelectVersionsButton","_GxIdeCreateKbFromServer_versionsChangedHandler","_GxIdeCreateKbFromServer_sortItems","model","sort","a","b","toLocaleLowerCase","localeCompare","_GxIdeCreateKbFromServer_renderFooter","onClick","part","footer","cancel","disabled","createKb","Map","componentDidLoad","call","loading","componentWillLoad","Locale","getComponentStrings","el","render","Host","src","ref","chShortcutsEl","header","user","change","loaderTitle","loader","title","description","show","Fragment","startImgSrc","onInput","placeholder","searchKbsPlaceholder","stateIconSrc","stateTitle","emptyKBsText","isAnimated","selection","onSelectedItemsChange","sortItemsCallback","onChange","htmlFor","versionsLabel","readonly","versionsPlaceholderDisabled","localKbNameLabel","localKbNamePlaceholder"],"sources":["src/components/team-dev/create-kb-from-server/helpers.ts","src/components/team-dev/create-kb-from-server/create-kb-from-server.scss?tag=gx-ide-create-kb-from-server&encapsulation=shadow","src/components/team-dev/create-kb-from-server/create-kb-from-server.tsx"],"sourcesContent":["import { ActionListItemModel } from \"@genexus/chameleon-controls-library\";\nimport { KBData } from \"./create-kb-from-server\";\n\nexport const mapKbsModelToActionListModel = (\n kbsData: KBData[]\n): ActionListItemModel[] => {\n const listBoxItems: ActionListItemModel[] = [];\n kbsData.forEach(kb => {\n listBoxItems.push({\n id: kb.id,\n type: \"actionable\",\n caption: kb.name\n });\n });\n return listBoxItems;\n};\n",":host {\n display: grid;\n block-size: 100%;\n grid-template-rows: max-content 1fr max-content;\n}\n\n.section {\n display: contents;\n}\n\n// - - - - - - - - - - -\n// Header\n// - - - - - - - - - - -\n\nheader {\n display: grid;\n grid-template-rows: max-content;\n grid-template-columns: 1fr 1fr max-content;\n}\n\n.button-change {\n align-self: center;\n justify-self: end;\n}\n\n// - - - - - - - - - - -\n// Main\n// - - - - - - - - - - -\n\n.main {\n display: grid;\n grid-template-columns: 1fr;\n grid-template-rows: max-content 1fr max-content max-content;\n position: relative;\n}\n\n.search-kbs {\n inline-size: 50%;\n}\n\n.versions-container {\n grid-auto-rows: max-content;\n\n &__input {\n display: grid;\n grid-template-columns: 1fr max-content;\n gap: var(--mer-spacing--xs);\n }\n\n .button-icon-only {\n border-color: var(--mer-color__neutral-gray--500);\n border-width: var(--mer-border__width--sm);\n border-radius: var(--mer-border__radius--sm);\n }\n\n .button-icon-only:hover {\n border-color: var(--mer-color__neutral-gray--100);\n }\n}\n","// Stencil\nimport {\n Component,\n Element,\n Fragment,\n getAssetPath,\n h,\n Host,\n Prop,\n State\n} from \"@stencil/core\";\n\n// Other Libraries\nimport { getIconPath, MercuryBundles } from \"@genexus/mercury\";\n\n// Custom Imports\nimport {\n ActionListItemActionable,\n ActionListItemModel,\n ActionListItemModelExtended,\n ChActionListRenderCustomEvent,\n ChEditCustomEvent\n} from \"@genexus/chameleon-controls-library\";\nimport { RadioGroupItemModel } from \"@genexus/chameleon-controls-library/dist/types/components/radio-group/types\";\nimport { config } from \"../../../common/config\";\nimport {\n ControlValidation,\n validateControls\n} from \"../../../common/form-validation\";\nimport { Locale } from \"../../../common/locale\";\nimport { FormSubmitResult } from \"../../../common/types\";\nimport { GXServerConnectionData } from \"../connect-gx-server/connect-gx-server\";\nimport { KBVersion } from \"../version-control/common/types\";\nimport { mapKbsModelToActionListModel } from \"./helpers\";\n\nconst CSS_BUNDLES: MercuryBundles = [\n \"resets/box-sizing\",\n \"utils/form--full\",\n \"utils/layout\",\n \"utils/typography\",\n \"utils/spacing\",\n \"components/list-box\",\n \"components/tooltip\",\n \"chameleon/scrollbar\"\n];\n\nconst INFO_ICON = getIconPath({\n category: \"system\",\n name: \"information\",\n colorType: \"on-surface\"\n});\n\n@Component({\n tag: \"gx-ide-create-kb-from-server\",\n styleUrl: \"create-kb-from-server.scss\",\n shadow: true,\n assetsDirs: [\"gx-ide-assets/create-kb-from-server\"]\n})\nexport class GxIdeCreateKbFromServer {\n #chSearchIcon = getIconPath({\n category: \"system\",\n name: \"search\",\n colorType: \"on-surface\"\n });\n\n #showMoreIcon = getIconPath({\n category: \"gemini-tools\",\n name: \"show-more-horizontal\",\n colorType: \"on-elevation\"\n });\n\n #versionsSelect: RadioGroupItemModel[] = [\n { value: \"Trunk\", caption: \"Trunk Version\" },\n { value: \"All\", caption: \"All Versions\" },\n { value: \"Select\", caption: \"Select Version\" }\n ];\n\n [key: string]: any;\n\n #_componentLocale: any;\n #kbsActionListModel: ActionListItemModel[] = [];\n #kbVersions: KBVersion[] = [];\n #shortcutsSrc = getAssetPath(\n `./gx-ide-assets/create-kb-from-server/shortcuts.json`\n );\n #selectedKbId: string;\n #kbNameAlreadyEditedByUser: boolean = false;\n\n #versionSelectedTypeEl: HTMLChRadioGroupRenderElement;\n\n @Element() el: HTMLGxIdeCreateKbFromServerElement;\n\n #localKBNameEl!: HTMLChEditElement;\n\n /**\n * State to enable/disable the select versions button\n */\n @State() enableSelectVersionsButton: boolean = false;\n\n /**\n * The current kbn name value.\n */\n @State() localKbNameInputValue: string = \"\";\n\n /**\n * State to store the loading state of the component\n */\n @State() loading = true;\n\n /**\n * State to store the filter input value to filter the list-box\n */\n @State() filterValue: string = \"\";\n\n /**\n * KBs filtered\n */\n @State() kbsFilteredActionListModel: ActionListItemModel[] = [];\n\n @State() validatableControls = new Map<string, ControlValidation>();\n\n /**\n * The version selected type\n */\n @State() versionSelectedType: VersionOption;\n\n /**\n * String value to show the number of versions selected (\"N versions selected\")\n */\n @State() versionsValueInput: string = \"\";\n\n /**\n * Set of data required when executing any of the callbacks that require a connection to the server.\n */\n @Prop() readonly connectionData: GXServerConnectionData;\n\n /**\n * Callback that is invoked when the dialog is closed\n */\n @Prop() readonly cancelCallback!: () => Promise<void>;\n\n /**\n * The host reopens the gx-ide-connect-server login modal with the previous data, and closes the current modal\n */\n @Prop() readonly changeConnectionCallback: (\n data: GXServerConnectionData\n ) => Promise<void>;\n\n /**\n * Callback that must be invoked when the 'Create KB' button is pressed. Receives the user's parameter selection to create the remote KB locally and ends the dialog.\n */\n @Prop() readonly createKBCallback!: (\n kbInfo: KnowledgeBaseInfo\n ) => Promise<FormSubmitResult>;\n\n /**\n * Callback that must be invoked when invoking the dialog\n */\n @Prop() readonly getGXserverKBsCallback!: (\n data: GXServerConnectionData\n ) => Promise<KBData[]>;\n\n /**\n * Callback invoked by pressing the ellipsis in the version selector. Receives the KB selected by the user, and displays the version selector dialog. Returns a list of versions chosen by the user.\n */\n @Prop() readonly selectKBVersionsCallback: (\n selectedKB: string\n ) => Promise<KBVersion[]>;\n\n async componentDidLoad() {\n await this.#init();\n this.loading = false;\n }\n\n async componentWillLoad() {\n this.#_componentLocale = await Locale.getComponentStrings(this.el);\n }\n\n #cancelHandler = (): void => {\n this.cancelCallback();\n };\n\n #changeConnectionHandler = async (): Promise<void> => {\n this.changeConnectionCallback({\n authenticationType: this.connectionData.authenticationType,\n serverUrl: this.connectionData.serverUrl,\n userName: this.connectionData.userName,\n userPassword: this.connectionData.userPassword\n });\n };\n\n #createHandler = async (): Promise<void> => {\n if (this.versionSelectedType !== \"Select\") {\n this.#kbVersions = [];\n }\n this.createKBCallback({\n selectedKB: this.#selectedKbId,\n versionSelected: this.versionSelectedType,\n localKBName: this.localKbNameInputValue,\n versionList: this.#kbVersions\n }).then((formSubmitResult: FormSubmitResult) => {\n this.validatableControls = validateControls(\n formSubmitResult,\n this.validatableControls\n );\n });\n };\n\n // TODO: evaluate if this should be a global helper function.\n // It is used on other dialogs as well.\n #evaluateTooltipRender = (\n controlReference: HTMLElement\n ): HTMLChTooltipElement =>\n this.validatableControls?.get(controlReference?.id)?.hasError &&\n this.validatableControls.get(controlReference.id)?.message && (\n <ch-tooltip\n class=\"tooltip\"\n actionElement={controlReference as unknown as HTMLButtonElement}\n blockAlign={config.tooltipSettings.blockAlign}\n inlineAlign={config.tooltipSettings.inlineAlign}\n delay={config.tooltipSettings.delay}\n >\n {this.validatableControls.get(controlReference.id).message}\n </ch-tooltip>\n );\n\n #filterValueChangedHandler = (\n event: ChEditCustomEvent<string> | InputEvent\n ) => {\n this.filterValue = (event.detail as string).toLowerCase();\n this.kbsFilteredActionListModel = this.#kbsActionListModel.filter(\n (item: ActionListItemActionable) =>\n item.caption.toLowerCase().includes(this.filterValue)\n );\n };\n\n #init = async () => {\n await this.getGXserverKBsCallback({\n authenticationType: this.connectionData.authenticationType,\n serverUrl: this.connectionData.serverUrl,\n userName: this.connectionData.userName,\n userPassword: this.connectionData.userPassword\n }).then(result => {\n this.#kbsActionListModel = mapKbsModelToActionListModel(result);\n this.kbsFilteredActionListModel = this.#kbsActionListModel;\n this.filterValue = \"\";\n });\n };\n\n #initializeValidatableControls = () => {\n // populate validatableControls with the controls that could have errors.\n const validatableControls: HTMLElement[] = [this.#localKBNameEl];\n validatableControls.forEach(validatableControl => {\n if (validatableControl.id) {\n this.validatableControls.set(validatableControl.id, {\n reference: validatableControl,\n hasError: false,\n message: undefined\n });\n }\n });\n };\n\n #inputLocalKbNameHandler = (\n event: ChEditCustomEvent<string> | InputEvent\n ) => {\n this.localKbNameInputValue = event.detail as string;\n this.#kbNameAlreadyEditedByUser = true;\n };\n\n #selectedVersionHandler = async () => {\n if (this.selectKBVersionsCallback) {\n await this.selectKBVersionsCallback(this.#selectedKbId).then(result => {\n if (result?.length) {\n this.#kbVersions = result.map(kbVersion => ({\n id: kbVersion.id,\n name: kbVersion.name\n }));\n\n if (result.length === 1 && this.#kbVersions[0].id === 0) {\n this.localKbNameInputValue = this.#selectedKbId;\n this.versionsValueInput =\n this.#_componentLocale.kb.versionsPlaceholder;\n } else if (result.length > 1) {\n this.localKbNameInputValue = this.#selectedKbId;\n this.versionsValueInput = `${result.length.toString()} ${\n this.#_componentLocale.kb.versionSelectedFieldValue\n }`;\n } else {\n this.localKbNameInputValue = `${this.#selectedKbId}_${\n this.#kbVersions[0].name\n }`;\n this.versionsValueInput = `${result[0].name} ${\n this.#_componentLocale.kb.oneVersionSelectedFieldValue\n }`;\n }\n }\n });\n }\n };\n\n #selectKbChangeHandler = (\n event: ChActionListRenderCustomEvent<ActionListItemModelExtended[]>\n ): void => {\n const item = event.detail[0]?.item as ActionListItemActionable;\n if (item === undefined) {\n this.enableSelectVersionsButton = false;\n this.#selectedKbId = undefined;\n return;\n }\n this.enableSelectVersionsButton = true;\n this.#selectedKbId = item.id;\n if (this.#kbNameAlreadyEditedByUser) {\n return;\n }\n this.localKbNameInputValue = item.caption;\n if (this.versionSelectedType === \"Select\") {\n this.versionsValueInput = \"\";\n this.#kbVersions = [];\n }\n };\n\n #versionsChangedHandler = (event: CustomEvent<string>) => {\n this.versionSelectedType = event.detail as VersionOption;\n };\n\n #sortItems = (model: ActionListItemActionable[]): void => {\n model.sort((a, b) =>\n a.caption\n ?.toLocaleLowerCase()\n .localeCompare(b.caption?.toLocaleLowerCase())\n );\n };\n\n #renderFooter = () => {\n return (\n <footer class=\"footer control-footer-with-border spacing-body-inline spacing-body-block-end\">\n <div class=\"buttons-spacer\">\n <button\n // cancel button\n class=\"button-secondary\"\n onClick={this.#cancelHandler}\n part=\"button button-cancel\"\n >\n {this.#_componentLocale.footer.cancel}\n </button>\n\n <button\n // create kb button\n class=\"button-primary\"\n onClick={this.enableSelectVersionsButton && this.#createHandler}\n disabled={!this.enableSelectVersionsButton}\n part=\"button button-create-kb\"\n >\n {this.#_componentLocale.footer.createKb}\n </button>\n </div>\n </footer>\n );\n };\n\n render(): void {\n return (\n <Host class=\"widget\">\n <ch-theme model={CSS_BUNDLES}></ch-theme>\n <ch-shortcuts\n src={this.#shortcutsSrc}\n ref={(el: HTMLChShortcutsElement) =>\n (this.chShortcutsEl = el as HTMLChShortcutsElement)\n }\n ></ch-shortcuts>\n\n <section class=\"section\">\n <header class=\"header control-header-with-border space-body spacing-body-inline spacing-body-block-start\">\n <div class=\"field field-block\">\n <label class=\"label\">\n {this.#_componentLocale.header.serverUrl}\n </label>\n <p>{this.connectionData.serverUrl}</p>\n </div>\n\n <div class=\"field field-block\">\n <label class=\"label\">{this.#_componentLocale.header.user}</label>\n <p>{this.connectionData.userName}</p>\n </div>\n\n <button\n id=\"change-connection-button\"\n class=\"button-tertiary button-change\"\n onClick={this.#changeConnectionHandler}\n >\n {this.#_componentLocale.header.change}\n </button>\n </header>\n <section class=\"main field-group spacing-body\">\n {this.loading ? (\n <gx-ide-loader\n loaderTitle={this.#_componentLocale.loader.title}\n description={this.#_componentLocale.loader.description}\n show\n ></gx-ide-loader>\n ) : (\n <Fragment>\n <ch-edit\n class=\"input search-kbs\"\n id=\"local-kb-name\"\n startImgSrc={this.#chSearchIcon}\n onInput={this.#filterValueChangedHandler}\n placeholder={this.#_componentLocale.kb.searchKbsPlaceholder}\n ></ch-edit>\n {this.#kbsActionListModel.length === 0 ||\n this.kbsFilteredActionListModel.length === 0 ? (\n <div class=\"list-box\">\n <gx-ide-empty-state\n stateIconSrc={INFO_ICON}\n stateTitle={this.#_componentLocale.emptyKBsText}\n isAnimated={true}\n ></gx-ide-empty-state>\n </div>\n ) : (\n <ch-action-list-render\n selection=\"single\"\n class=\"list-box\"\n onSelectedItemsChange={this.#selectKbChangeHandler}\n model={this.kbsFilteredActionListModel}\n sortItemsCallback={this.#sortItems}\n ></ch-action-list-render>\n )}\n <div class=\"versions-container field-group\">\n <ch-radio-group-render\n class=\"radio-group\"\n model={this.#versionsSelect}\n onChange={this.#versionsChangedHandler}\n value={this.#versionsSelect[0].value}\n ref={(el: HTMLChRadioGroupRenderElement) => {\n this.#versionSelectedTypeEl =\n el as HTMLChRadioGroupRenderElement;\n if (this.#versionSelectedTypeEl) {\n this.versionSelectedType = this.#versionSelectedTypeEl\n .value as VersionOption;\n }\n }}\n ></ch-radio-group-render>\n\n {this.versionSelectedType === \"Select\" && (\n <div class=\"versions-container__item field-group\">\n <div class=\"field field-block\">\n <label class=\"label\" htmlFor=\"control-id-1\">\n {this.#_componentLocale.kb.versionsLabel}\n </label>\n <div class=\"versions-container__input\">\n <ch-edit\n class=\"input\"\n readonly\n placeholder={\n this.enableSelectVersionsButton\n ? this.#_componentLocale.kb.versionsPlaceholder\n : this.#_componentLocale.kb\n .versionsPlaceholderDisabled\n }\n value={this.versionsValueInput}\n ></ch-edit>\n <button\n id=\"select-version-button\"\n class=\"button-tertiary button-icon-only\"\n onClick={this.#selectedVersionHandler}\n disabled={!this.enableSelectVersionsButton}\n >\n <ch-image\n src={this.#showMoreIcon}\n class=\"icon-sm\"\n ></ch-image>\n </button>\n </div>\n </div>\n </div>\n )}\n </div>\n\n <div class=\"field field-block\">\n <label class=\"label\" htmlFor=\"localKbName\">\n {this.#_componentLocale.kb.localKbNameLabel}\n </label>\n <ch-edit\n // local kb name\n class=\"input\"\n id=\"local-kb-name\"\n value={this.localKbNameInputValue}\n onInput={this.#inputLocalKbNameHandler}\n placeholder={\n this.#_componentLocale.kb.localKbNamePlaceholder\n }\n ref={(el: HTMLChEditElement) => {\n this.#localKBNameEl = el as HTMLChEditElement;\n if (this.#localKBNameEl) {\n this.#initializeValidatableControls();\n }\n }}\n ></ch-edit>\n {this.#evaluateTooltipRender(this.#localKBNameEl)}\n </div>\n </Fragment>\n )}\n </section>\n\n {this.#renderFooter()}\n </section>\n </Host>\n );\n }\n}\n\nexport type KBData = {\n id: string;\n name: string;\n};\n\nexport type ConnectionResultData = {\n formResult: FormSubmitResult;\n kbs: KBData[];\n};\n\nexport type KnowledgeBaseInfo = {\n selectedKB: string;\n versionSelected: VersionOption;\n localKBName: string;\n versionList: KBVersion[];\n};\n\nexport type VersionOption = \"Trunk\" | \"All\" | \"Select\";\n"],"mappings":"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"}
|