@genexus/genexus-ide-ui 1.1.69 → 1.1.71
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/{utilities-25be3069.js → constants-a2ac1812.js} +70 -1
- package/dist/cjs/constants-a2ac1812.js.map +1 -0
- package/dist/cjs/gx-ide-connect-gx-server.cjs.entry.js +7 -8
- package/dist/cjs/gx-ide-connect-gx-server.cjs.entry.js.map +1 -1
- package/dist/cjs/gx-ide-create-kb-from-server.cjs.entry.js +2 -2
- 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 +5 -4
- package/dist/cjs/gx-ide-restore-version.cjs.entry.js.map +1 -1
- package/dist/cjs/gx-ide-server-selector.cjs.entry.js +8 -7
- package/dist/cjs/gx-ide-server-selector.cjs.entry.js.map +1 -1
- package/dist/cjs/gx-ide-share-kb.cjs.entry.js +2 -2
- package/dist/cjs/gx-ide-share-kb.cjs.entry.js.map +1 -1
- package/dist/cjs/gx-ide-team-dev-bring-all-changes-selector.cjs.entry.js +14 -7
- package/dist/cjs/gx-ide-team-dev-bring-all-changes-selector.cjs.entry.js.map +1 -1
- package/dist/cjs/gx-ide-team-dev-bring-changes.cjs.entry.js +3 -3
- package/dist/cjs/gx-ide-team-dev-commit.cjs.entry.js +21 -21
- package/dist/cjs/gx-ide-team-dev-commit.cjs.entry.js.map +1 -1
- package/dist/cjs/gx-ide-team-dev-history.cjs.entry.js +8 -28
- package/dist/cjs/gx-ide-team-dev-history.cjs.entry.js.map +1 -1
- package/dist/cjs/gx-ide-team-dev-update.cjs.entry.js +3 -3
- package/dist/cjs/{tabular-grid-render-c0e0738c.js → tabular-grid-render-37b7153b.js} +12 -86
- package/dist/cjs/tabular-grid-render-37b7153b.js.map +1 -0
- package/dist/collection/components/restore-version/gx-ide-assets/restore-version/shortcuts.json +15 -0
- package/dist/collection/components/restore-version/restore-version.js +6 -5
- package/dist/collection/components/restore-version/restore-version.js.map +1 -1
- package/dist/collection/components/team-dev/bring-all-changes-selector/bring-all-changes-selector.js +15 -8
- package/dist/collection/components/team-dev/bring-all-changes-selector/bring-all-changes-selector.js.map +1 -1
- package/dist/collection/components/team-dev/bring-all-changes-selector/gx-ide-assets/team-dev-bring-all-changes-selector/shortcuts.json +15 -0
- package/dist/collection/components/team-dev/connect-gx-server/connect-gx-server.js +8 -9
- package/dist/collection/components/team-dev/connect-gx-server/connect-gx-server.js.map +1 -1
- package/dist/collection/components/team-dev/connect-gx-server/gx-ide-assets/connect-gx-server/shortcuts.json +15 -0
- package/dist/collection/components/team-dev/create-kb-from-server/create-kb-from-server.js +2 -2
- package/dist/collection/components/team-dev/create-kb-from-server/create-kb-from-server.js.map +1 -1
- package/dist/collection/components/team-dev/create-kb-from-server/gx-ide-assets/create-kb-from-server/shortcuts.json +6 -1
- package/dist/collection/components/team-dev/history/history.css +3 -0
- package/dist/collection/components/team-dev/history/history.js +4 -24
- package/dist/collection/components/team-dev/history/history.js.map +1 -1
- package/dist/collection/components/team-dev/server-selector/gx-ide-assets/server-selector/shortcuts.json +15 -0
- package/dist/collection/components/team-dev/server-selector/server-selector.js +9 -7
- package/dist/collection/components/team-dev/server-selector/server-selector.js.map +1 -1
- package/dist/collection/components/team-dev/share-kb/gx-ide-assets/share-kb/shortcuts.json +1 -1
- package/dist/collection/components/team-dev/share-kb/share-kb.js +2 -2
- package/dist/collection/components/team-dev/share-kb/share-kb.js.map +1 -1
- package/dist/components/{utilities.js → constants2.js} +68 -2
- package/dist/components/constants2.js.map +1 -0
- package/dist/components/gx-ide-connect-gx-server.js +8 -9
- package/dist/components/gx-ide-connect-gx-server.js.map +1 -1
- package/dist/components/gx-ide-create-kb-from-server.js +2 -2
- package/dist/components/gx-ide-create-kb-from-server.js.map +1 -1
- package/dist/components/gx-ide-restore-version.js +6 -5
- package/dist/components/gx-ide-restore-version.js.map +1 -1
- package/dist/components/gx-ide-server-selector.js +9 -8
- package/dist/components/gx-ide-server-selector.js.map +1 -1
- package/dist/components/gx-ide-share-kb.js +2 -2
- package/dist/components/gx-ide-share-kb.js.map +1 -1
- package/dist/components/gx-ide-team-dev-bring-all-changes-selector.js +15 -8
- package/dist/components/gx-ide-team-dev-bring-all-changes-selector.js.map +1 -1
- package/dist/components/gx-ide-team-dev-bring-changes.js +1 -1
- package/dist/components/gx-ide-team-dev-commit.js +2 -1
- package/dist/components/gx-ide-team-dev-commit.js.map +1 -1
- package/dist/components/gx-ide-team-dev-history.js +4 -28
- package/dist/components/gx-ide-team-dev-history.js.map +1 -1
- package/dist/components/gx-ide-team-dev-update.js +1 -1
- package/dist/components/tabular-grid-render.js +2 -72
- package/dist/components/tabular-grid-render.js.map +1 -1
- package/dist/esm/{utilities-efeffb76.js → constants-31612239.js} +68 -2
- package/dist/esm/constants-31612239.js.map +1 -0
- package/dist/esm/gx-ide-connect-gx-server.entry.js +8 -9
- package/dist/esm/gx-ide-connect-gx-server.entry.js.map +1 -1
- package/dist/esm/gx-ide-create-kb-from-server.entry.js +2 -2
- package/dist/esm/gx-ide-create-kb-from-server.entry.js.map +1 -1
- package/dist/esm/gx-ide-restore-version.entry.js +6 -5
- package/dist/esm/gx-ide-restore-version.entry.js.map +1 -1
- package/dist/esm/gx-ide-server-selector.entry.js +9 -8
- package/dist/esm/gx-ide-server-selector.entry.js.map +1 -1
- package/dist/esm/gx-ide-share-kb.entry.js +2 -2
- package/dist/esm/gx-ide-share-kb.entry.js.map +1 -1
- package/dist/esm/gx-ide-team-dev-bring-all-changes-selector.entry.js +15 -8
- package/dist/esm/gx-ide-team-dev-bring-all-changes-selector.entry.js.map +1 -1
- package/dist/esm/gx-ide-team-dev-bring-changes.entry.js +2 -2
- package/dist/esm/gx-ide-team-dev-commit.entry.js +5 -5
- package/dist/esm/gx-ide-team-dev-history.entry.js +8 -28
- package/dist/esm/gx-ide-team-dev-history.entry.js.map +1 -1
- package/dist/esm/gx-ide-team-dev-update.entry.js +2 -2
- package/dist/esm/{tabular-grid-render-c868fa55.js → tabular-grid-render-d06826a5.js} +3 -74
- package/dist/esm/tabular-grid-render-d06826a5.js.map +1 -0
- package/dist/genexus-ide-ui/genexus-ide-ui.esm.js +1 -1
- package/dist/genexus-ide-ui/gx-ide-assets/connect-gx-server/shortcuts.json +15 -0
- package/dist/genexus-ide-ui/gx-ide-assets/create-kb-from-server/shortcuts.json +6 -1
- package/dist/genexus-ide-ui/gx-ide-assets/restore-version/shortcuts.json +15 -0
- package/dist/genexus-ide-ui/gx-ide-assets/server-selector/shortcuts.json +15 -0
- package/dist/genexus-ide-ui/gx-ide-assets/share-kb/shortcuts.json +1 -1
- package/dist/genexus-ide-ui/gx-ide-assets/team-dev-bring-all-changes-selector/shortcuts.json +15 -0
- package/dist/genexus-ide-ui/p-025c9aa4.entry.js +239 -0
- package/dist/genexus-ide-ui/p-025c9aa4.entry.js.map +1 -0
- package/dist/genexus-ide-ui/p-082015be.js +244 -0
- package/dist/{esm/tabular-grid-render-c868fa55.js.map → genexus-ide-ui/p-082015be.js.map} +1 -1
- package/dist/genexus-ide-ui/{p-972dc777.entry.js → p-1351412d.entry.js} +3 -3
- package/dist/genexus-ide-ui/p-32b37b3d.js +163 -0
- package/dist/genexus-ide-ui/p-32b37b3d.js.map +1 -0
- package/dist/genexus-ide-ui/{p-85cf50c5.entry.js → p-3ca03a38.entry.js} +31 -55
- package/dist/genexus-ide-ui/p-3ca03a38.entry.js.map +1 -0
- package/dist/genexus-ide-ui/{p-09693b80.entry.js → p-451994e8.entry.js} +111 -96
- package/dist/genexus-ide-ui/p-451994e8.entry.js.map +1 -0
- package/dist/genexus-ide-ui/{p-c3cc759d.entry.js → p-8dedbcd9.entry.js} +64 -58
- package/dist/genexus-ide-ui/p-8dedbcd9.entry.js.map +1 -0
- package/dist/genexus-ide-ui/{p-6ee5d68e.entry.js → p-92a027bc.entry.js} +33 -33
- package/dist/genexus-ide-ui/{p-9ffa7afd.entry.js → p-941f470f.entry.js} +3 -1
- package/dist/genexus-ide-ui/{p-9ffa7afd.entry.js.map → p-941f470f.entry.js.map} +1 -1
- package/dist/genexus-ide-ui/{p-93e79d19.entry.js → p-ac79f7e8.entry.js} +59 -57
- package/dist/genexus-ide-ui/{p-93e79d19.entry.js.map → p-ac79f7e8.entry.js.map} +1 -1
- package/dist/genexus-ide-ui/{p-e2fd2c24.entry.js → p-c256dc59.entry.js} +3 -3
- package/dist/genexus-ide-ui/{p-5e56280c.entry.js → p-eeeb3d52.entry.js} +199 -192
- package/dist/genexus-ide-ui/p-eeeb3d52.entry.js.map +1 -0
- package/package.json +1 -1
- package/dist/cjs/tabular-grid-render-c0e0738c.js.map +0 -1
- package/dist/cjs/utilities-25be3069.js.map +0 -1
- package/dist/components/utilities.js.map +0 -1
- package/dist/esm/utilities-efeffb76.js.map +0 -1
- package/dist/genexus-ide-ui/p-09693b80.entry.js.map +0 -1
- package/dist/genexus-ide-ui/p-22bdcf23.js +0 -322
- package/dist/genexus-ide-ui/p-22bdcf23.js.map +0 -1
- package/dist/genexus-ide-ui/p-5e56280c.entry.js.map +0 -1
- package/dist/genexus-ide-ui/p-85cf50c5.entry.js.map +0 -1
- package/dist/genexus-ide-ui/p-a105f903.entry.js +0 -234
- package/dist/genexus-ide-ui/p-a105f903.entry.js.map +0 -1
- package/dist/genexus-ide-ui/p-c3cc759d.entry.js.map +0 -1
- package/dist/genexus-ide-ui/p-db6c6085.js +0 -95
- package/dist/genexus-ide-ui/p-db6c6085.js.map +0 -1
- /package/dist/genexus-ide-ui/{p-972dc777.entry.js.map → p-1351412d.entry.js.map} +0 -0
- /package/dist/genexus-ide-ui/{p-6ee5d68e.entry.js.map → p-92a027bc.entry.js.map} +0 -0
- /package/dist/genexus-ide-ui/{p-e2fd2c24.entry.js.map → p-c256dc59.entry.js.map} +0 -0
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["ALL_VALUE","CSS_SELECTORS","HEADER","HEADER_DETAILS","FILTER","MAIN","GRID_CELL_DESCRIPTION","ICONS","add","getIconPath","category","name","colorType","edit","error","filter","filterWithConditions","info","refresh","search","success","substract","warning","BUTTON_ACTION_SELECTOR","COLUMNS_IDS","action","description","lastSynchronized","localState","modifiedOn","module","status","type","renderStateCellContent","componentLocale","icon","caption","iconColor","states","deleted","inserted","modified","conflicted","h","class","src","style","backgroundColor","renderObjectStatus","objectId","objectsStatusMap","updatePillAsButton","commitSingleObject","get","commit","classes","pill","onClick","renderTabularGridRows","pendingObjectsAfterFilter","ignoredObjectsAfterFilter","alreadyUpdatedObjectsIdsSet","markedObjectsSet","objectsMessagesDataMap","searchValue","objects","toLowerCase","filteredRows","map","object","alreadyUpdated","has","id","hideCheckbox","marked","messages","key","rowid","ref","el","setAttribute","size","hiChar","renderObjectTypeWithIcon","CLASSES","formatDate","state","length","message","MESSAGE_ICON","text","renderTabularGridColumns","ignoredGridColumns","gridIsEmpty","sortTabularGridColumnCallback","columnSelectorClickedCallback","showRichRowSelector","colSize","config","tabularGrid","auto","maxContent","includes","columnId","columnName","columnType","richRowSelector","richRowSelectorMode","settingable","sortable","onColumnSortChanged","onColumnSelectorClicked"],"sources":["src/components/team-dev/version-control/common/constants.ts","src/components/team-dev/version-control/common/tabular-grid-render.tsx"],"sourcesContent":["import { getIconPath } from \"@genexus/mercury\";\n\nexport const ALL_VALUE = \"All\";\nexport const ALL_MODULES = \"All Modules\";\nexport const ALL_TYPES = \"All Types\";\n\nexport const CSS_SELECTORS = {\n HEADER: \"header spacing-body-inline spacing-body-block-start\",\n HEADER_DETAILS: \"header__details\",\n FILTER: \"filter\",\n MAIN: \"main spacing-body\",\n GRID_CELL_DESCRIPTION: \"tabular-grid-cell-description-custom-selector\"\n};\n\nconst ICONS = {\n add: getIconPath({\n category: \"system\",\n name: \"add\",\n colorType: \"on-elevation\"\n }),\n edit: getIconPath({\n category: \"system\",\n name: \"edit\",\n colorType: \"on-elevation\"\n }),\n error: getIconPath({\n category: \"system\",\n name: \"error\",\n colorType: \"error\"\n }),\n filter: getIconPath({\n category: \"window-tools\",\n name: \"filter\",\n colorType: \"neutral\"\n }),\n filterWithConditions: getIconPath({\n category: \"window-tools\",\n name: \"filter-conditions\",\n colorType: \"neutral\"\n }),\n info: getIconPath({\n category: \"system\",\n name: \"information\",\n colorType: \"on-elevation\"\n }),\n refresh: getIconPath({\n category: \"gemini-tools\",\n name: \"reset\",\n colorType: \"neutral\"\n }),\n search: getIconPath({\n category: \"system\",\n name: \"search\",\n colorType: \"on-elevation\"\n }),\n success: getIconPath({\n category: \"system\",\n name: \"check\",\n colorType: \"success\"\n }),\n substract: getIconPath({\n category: \"system\",\n name: \"substract\",\n colorType: \"on-elevation\"\n }),\n warning: getIconPath({\n category: \"system\",\n name: \"warning\",\n colorType: \"warning\"\n })\n};\nexport default ICONS;\n","// stencil\nimport { h, JSX } from \"@stencil/core\";\n\n// external libraries\nimport HTMLChTabularGridRowElement from \"@genexus/chameleon-controls-library/dist/types/components/tabular-grid/row/tabular-grid-row\";\n\n// local\nimport {\n MessageData,\n ModifiedObjectData,\n SourceType,\n StatusInternal\n} from \"./types\";\nimport { ObjectState } from \"../common/types\";\nimport ICONS from \"./constants\";\nimport { renderObjectTypeWithIcon } from \"../../common/utilities\";\nimport { formatDate } from \"../../../../common/helpers\";\nimport { CSS_SELECTORS as CLASSES } from \"./constants\";\nimport { hiChar } from \"../../../ww-files/helpers\";\nimport { config } from \"../../../../common/config\";\nimport {\n TabularGridColumnSelectorClickedEvent,\n TabularGridColumnSortChangedEvent\n} from \"@genexus/chameleon-controls-library\";\n\nconst BUTTON_ACTION_SELECTOR = \"button-action-custom-selector\";\nexport const COLUMNS_IDS = {\n action: \"action\",\n description: \"description\",\n lastSynchronized: \"lastSynchronized\",\n localState: \"localState\",\n modifiedOn: \"modifiedOn\",\n module: \"module\",\n name: \"name\",\n status: \"status\",\n type: \"type\"\n};\n\nconst renderStateCellContent = (\n action: ObjectState,\n componentLocale: any\n): JSX.Element[] | null | string => {\n let icon: string;\n let caption: string;\n let iconColor: string;\n\n if (action === \"deleted\") {\n icon = ICONS.substract;\n caption = componentLocale.states.deleted;\n iconColor = \"--mer-icon__error\";\n } else if (action === \"inserted\") {\n icon = ICONS.add;\n caption = componentLocale.states.inserted;\n iconColor = \"--mer-icon__success\";\n } else if (action === \"modified\") {\n icon = ICONS.edit;\n caption = componentLocale.states.modified;\n iconColor = \"--mer-icon__warning\";\n } else if (action === \"conflicted\") {\n icon = ICONS.warning;\n caption = componentLocale.states.conflicted;\n iconColor = \"--mer-icon__warning\";\n } else if (!action) {\n // proably is \"ignored\"\n return null;\n }\n\n return (\n <span class=\"custom-icon-text-wrapper\">\n <ch-image\n type=\"mask\"\n class=\"icon-md\"\n src={icon}\n style={{ backgroundColor: `var(${iconColor})` }}\n ></ch-image>\n {`${caption}`}\n </span>\n );\n};\n\nconst renderObjectStatus = (\n objectId: string,\n objectsStatusMap: Map<string, StatusInternal>,\n updatePillAsButton: boolean,\n commitSingleObject: (objectId: string) => () => void,\n componentLocale: any\n): JSX.Element[] => {\n const status = objectsStatusMap.get(objectId);\n const caption =\n status === \"pending\" && updatePillAsButton\n ? componentLocale.status.commit\n : componentLocale.status[status];\n\n if (status === \"committing\") {\n return <span class=\"spinner-caption\">{caption}</span>;\n }\n\n const classes = `pill pill--${status}`;\n if (updatePillAsButton && status === \"pending\") {\n return (\n <button\n class={{\n \"button-secondary\": true,\n \"button-icon-and-text\": true,\n \"pill\": true,\n \"pill--update\": true,\n [BUTTON_ACTION_SELECTOR]: true\n }}\n onClick={commitSingleObject(objectId)}\n >\n {caption}\n </button>\n );\n } else {\n return <span class={classes}>{caption}</span>;\n }\n};\n\nconst renderTabularGridRows = (\n type: SourceType,\n pendingObjectsAfterFilter: ModifiedObjectData[],\n ignoredObjectsAfterFilter: ModifiedObjectData[],\n alreadyUpdatedObjectsIdsSet: Set<string>,\n markedObjectsSet: Set<string>,\n objectsMessagesDataMap: Map<string, MessageData[]>,\n updatePillAsButton: boolean,\n commitSingleObject: (objectId: string) => () => void,\n objectsStatusMap: Map<string, StatusInternal>,\n searchValue: string,\n componentLocale: any\n): HTMLChTabularGridRowElement[] => {\n let objects: ModifiedObjectData[];\n if (type === \"pending\") {\n objects = pendingObjectsAfterFilter;\n } else if (type === \"ignored\") {\n objects = ignoredObjectsAfterFilter;\n }\n\n searchValue = searchValue.toLowerCase();\n\n const filteredRows = objects.map(object => {\n const alreadyUpdated = alreadyUpdatedObjectsIdsSet.has(object.id);\n const hideCheckbox = alreadyUpdated || type === \"ignored\";\n const marked = markedObjectsSet.has(object.id);\n const messages = objectsMessagesDataMap.get(object.id);\n\n return (\n <ch-tabular-grid-row\n class=\"tabular-grid-row\"\n key={object.id}\n rowid={object.id}\n ref={(el: HTMLElement) => marked && el?.setAttribute(\"marked\", \"true\")}\n >\n <ch-tabular-grid-cell\n cell-type=\"rich\"\n row-selector=\"true\"\n class={{\n \"tabular-grid-cell\": true,\n \"no-checkbox-custom-selector\": hideCheckbox\n }}\n size=\"max-content\"\n >\n <div\n // This div is a WA to prevent the cell display:flex to\n // apply columns when hiChar is applied. hiChar creates\n // a span for every match.\n >\n {hiChar(object.name, searchValue)}\n </div>\n {/* {object.name} */}\n </ch-tabular-grid-cell>\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n {renderObjectTypeWithIcon(object.type)}\n </ch-tabular-grid-cell>\n <ch-tabular-grid-cell\n class={{\n \"tabular-grid-cell\": true,\n [CLASSES.GRID_CELL_DESCRIPTION]: true\n }}\n >\n <div\n // This div is a WA to prevent the cell display:flex to\n // apply columns when hiChar is applied. hiChar creates\n // a span for every match.\n >\n {hiChar(object.description, searchValue)}\n </div>\n </ch-tabular-grid-cell>\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n {formatDate(object.modifiedOn)}\n </ch-tabular-grid-cell>\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n {object.module}\n </ch-tabular-grid-cell>\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n {renderStateCellContent(object.state, componentLocale)}\n </ch-tabular-grid-cell>\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n {formatDate(object.lastSynchronized)}\n </ch-tabular-grid-cell>\n <ch-tabular-grid-cell class=\"tabular-grid-cell tabular-grid-cell--for-pill\">\n {renderObjectStatus(\n object.id,\n objectsStatusMap,\n updatePillAsButton,\n commitSingleObject,\n componentLocale\n )}\n </ch-tabular-grid-cell>\n\n {messages?.length && (\n <ch-tabular-grid-rowset class=\"tabular-grid-rowset\">\n <ch-tabular-grid-rowset-empty\n class={{\n \"tabular-grid-rowset-empty\": true\n }}\n >\n <ul class=\"messages-list\">\n {messages.map(message => {\n let MESSAGE_ICON;\n if (message.type === \"error\") {\n MESSAGE_ICON = ICONS.error;\n } else if (message.type === \"warning\") {\n MESSAGE_ICON = ICONS.warning;\n } else if (message.type === \"success\") {\n MESSAGE_ICON = ICONS.success;\n } else {\n // info\n MESSAGE_ICON = ICONS.info;\n }\n\n return (\n <li class=\"message-description\">\n <ch-image\n class=\"icon-md message-icon\"\n src={MESSAGE_ICON}\n ></ch-image>\n {message.text}\n </li>\n );\n })}\n </ul>\n </ch-tabular-grid-rowset-empty>\n </ch-tabular-grid-rowset>\n )}\n </ch-tabular-grid-row>\n );\n });\n\n return filteredRows;\n};\n\nexport default renderTabularGridRows;\n\nexport type GridColumnType =\n | \"action\"\n | \"description\"\n | \"lastSynchronized\"\n | \"localState\"\n | \"modifiedOn\"\n | \"module\"\n | \"name\"\n | \"status\"\n | \"type\";\n\nexport type GridColumnSet = Partial<Record<GridColumnType, true>>;\n\nexport const renderTabularGridColumns = (\n ignoredGridColumns: GridColumnType[],\n gridIsEmpty: boolean = false,\n sortTabularGridColumnCallback: (\n e: CustomEvent<TabularGridColumnSortChangedEvent>\n ) => void,\n columnSelectorClickedCallback: (\n e: CustomEvent<TabularGridColumnSelectorClickedEvent>\n ) => void,\n componentLocale: any,\n showRichRowSelector: boolean\n): JSX.Element => {\n const colSize = gridIsEmpty\n ? config.tabularGrid.colSize.auto\n : config.tabularGrid.colSize.maxContent;\n\n return (\n <ch-tabular-grid-columnset class=\"tabular-grid-column-set\">\n {!ignoredGridColumns.includes(\"name\") && (\n <ch-tabular-grid-column\n class=\"tabular-grid-column\"\n columnId={COLUMNS_IDS.name}\n columnName={componentLocale.objects.name}\n columnType=\"rich\"\n richRowSelector={showRichRowSelector}\n richRowSelectorMode=\"mark\"\n settingable={false}\n sortable={true}\n onColumnSortChanged={sortTabularGridColumnCallback}\n onColumnSelectorClicked={columnSelectorClickedCallback}\n size={colSize}\n />\n )}\n\n {!ignoredGridColumns.includes(\"type\") && (\n <ch-tabular-grid-column\n class=\"tabular-grid-column\"\n columnId={COLUMNS_IDS.type}\n columnName={componentLocale.objects.type}\n settingable={false}\n sortable={true}\n onColumnSortChanged={sortTabularGridColumnCallback}\n size={colSize}\n />\n )}\n\n {!ignoredGridColumns.includes(\"description\") && (\n <ch-tabular-grid-column\n class=\"tabular-grid-column\"\n columnId={COLUMNS_IDS.description}\n columnName={componentLocale.objects.description}\n settingable={false}\n sortable={true}\n onColumnSortChanged={sortTabularGridColumnCallback}\n size={config.tabularGrid.colSize.description}\n />\n )}\n\n {!ignoredGridColumns.includes(\"modifiedOn\") && (\n <ch-tabular-grid-column\n class=\"tabular-grid-column\"\n columnId={COLUMNS_IDS.modifiedOn}\n columnName={componentLocale.objects.modifiedOn}\n sortable={true}\n onColumnSortChanged={sortTabularGridColumnCallback}\n settingable={false}\n size={colSize}\n />\n )}\n\n {!ignoredGridColumns.includes(\"module\") && (\n <ch-tabular-grid-column\n class=\"tabular-grid-column\"\n columnId={COLUMNS_IDS.module}\n columnName={componentLocale.objects.module}\n sortable={true}\n onColumnSortChanged={sortTabularGridColumnCallback}\n settingable={false}\n size={colSize}\n />\n )}\n\n {!ignoredGridColumns.includes(\"localState\") && (\n <ch-tabular-grid-column\n class=\"tabular-grid-column\"\n columnId={COLUMNS_IDS.localState}\n columnName={componentLocale.objects.localState}\n sortable={false}\n settingable={false}\n size={colSize}\n />\n )}\n\n {!ignoredGridColumns.includes(\"lastSynchronized\") && (\n <ch-tabular-grid-column\n class=\"tabular-grid-column\"\n columnId={COLUMNS_IDS.lastSynchronized}\n columnName={componentLocale.objects.lastSynchronized}\n settingable={false}\n sortable={true}\n onColumnSortChanged={sortTabularGridColumnCallback}\n size={colSize}\n />\n )}\n\n {!ignoredGridColumns.includes(\"action\") && (\n <ch-tabular-grid-column\n class=\"tabular-grid-column\"\n columnId={COLUMNS_IDS.action}\n columnName={componentLocale.objects.action}\n sortable={false}\n settingable={false}\n size={colSize}\n />\n )}\n\n {!ignoredGridColumns.includes(\"status\") && (\n <ch-tabular-grid-column\n class=\"tabular-grid-column\"\n columnId={COLUMNS_IDS.status}\n columnName={componentLocale.objects.status}\n sortable={false}\n settingable={false}\n size={gridIsEmpty ? \"auto\" : \"100px\"}\n />\n )}\n </ch-tabular-grid-columnset>\n );\n};\n"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["serverSelectorCss","CSS_BUNDLES","INFO_ICON","getIconPath","category","name","colorType","LOCK_ICON","LANGUAGE_ICON","DELETE_ICON","ERROR_ICON","SEARCH_ICON","SERVER_NAME_PREFIX","GxIdeServerSelector","_GxIdeServerSelector__componentLocale","set","this","_GxIdeServerSelector_chGridAllServersEl","_GxIdeServerSelector_serverUrlEL","_GxIdeServerSelector_serverFriendlyNameEL","_GxIdeServerSelector_updatedServerName","_GxIdeServerSelector_serverNameEditElsMap","Map","_GxIdeServerSelector_versionsSelect","_GxIdeServerSelector_cancelHandler","cancelCallback","_GxIdeServerSelector_confirmHandler","async","formSubmitResult","selectedConnectionType","selectServerCallback","uri","selectedServerUri","selectedServerName","serverUrlInputValue","serverNameInputValue","validatableControls","validateControls","_GxIdeServerSelector_evaluateTooltipRender","controlReference","_b","_a","get","id","hasError","_c","message","h","class","actionElement","blockAlign","config","tooltipSettings","inlineAlign","delay","_GxIdeServerSelector_initializeValidatableControls","forEach","validatableControl","has","reference","undefined","_GxIdeServerSelector_filterValueChangedHandler","event","filterValue","detail","toLowerCase","filteredServersData","serversData","filter","item","serverName","includes","_GxIdeServerSelector_inputHandler","field","enableConfirmButton","trim","controlId","clearControlError","__classPrivateFieldGet","_GxIdeServerSelector_enableConfirmButton","call","_GxIdeServerSelector_handleRecentlyUsedCardClick","server","selectedRecentlyUsedId","selectRow","_GxIdeServerSelector_handleServerSelection","_GxIdeServerSelector_handleDeleteServer","serverData","accessLevel","result","deleteServerCallback","_GxIdeServerSelector_onServerNameInput","__classPrivateFieldSet","_GxIdeServerSelector_onServerNameChange","fieldErrors","success","updateServerCallback","Object","assign","length","_GxIdeServerSelector_onRecentlyUsedDoubleClickHandler","_GxIdeServerSelector_onServersRowClickHandler","rowId","selectedRowId","selectedServer","find","serverUrl","userName","gxServerUsername","_GxIdeServerSelector_connectionTypeChangedHandler","_GxIdeServerSelector_sortTabularGridColumnCallback","e","sortTabularGridColumn","_GxIdeServerSelector_renderTabularGridColumnSet","hideColumnName","columnId","columnName","settingable","columnNameHidden","size","tabularGrid","colSize","maxContent","resizable","sortable","onColumnSortChanged","auto","_GxIdeServerSelector_renderTooltip","text","delayLong","_GxIdeServerSelector_renderServerNameErrorMessage","errorMsg","src","_GxIdeServerSelector_renderTabularGridCommonCells","_GxIdeServerSelector_renderIcon","value","onInput","onChange","maxLength","ref","el","key","delete","onClick","actions","deleteServer","disabled","_GxIdeServerSelector_renderAllServersGrid","rowSelectionMode","allowColumnReorder","onRowClicked","map","serverNameEditKey","rowid","stateIconSrc","stateTitle","emptyConnectedServers","isAnimated","icon","_GxIdeServerSelector_renderFooter","isSelectionMode","footer","cancel","confirm","_GxIdeServerSelector_renderRecentlyUsed","renderRecentlyUsed","recentlyUsedServersData","htmlFor","recentlyUsed","title","layout","layout__panel","onDblClick","_GxIdeServerSelector_renderAllServers","allServers","serversDataChanged","newValue","componentWillLoad","Locale","getComponentStrings","caption","captions","selectServer","addServer","componentDidRender","clear","values","render","Host","model","header","startImgSrc","placeholder","placeholders","searchServers","accessibleName","type","labels"],"sources":["src/components/team-dev/server-selector/server-selector.scss?tag=gx-ide-server-selector&encapsulation=shadow","src/components/team-dev/server-selector/server-selector.tsx"],"sourcesContent":["@import \"../../../../node_modules/@genexus/mercury/dist/assets/scss/helpers.scss\";\n@import \"../common/styles.scss\";\n\n:host {\n display: grid;\n block-size: 100%;\n grid-template-rows: max-content max-content 1fr max-content;\n row-gap: var(--mer-spacing--md);\n overflow: auto;\n}\n\n:host(.new-connection) {\n grid-template-rows: max-content 1fr;\n}\n\n:host(.recently-used-empty) {\n grid-template-rows: max-content 1fr;\n}\n\n.section {\n display: contents;\n}\n\n// General\n\n.tabular-grid {\n border-radius: var(--mer-border__radius--sm);\n overflow: hidden;\n overflow: auto;\n border-inline: 1px solid var(--grid-cell__border-color);\n}\n\n.tabular-grid-rowset-empty {\n border-block-end: 1px solid var(--grid-cell__border-color);\n overflow: hidden;\n}\n\n@include tabular-grid-cell-layout(\n $tabular-grid-selector: \".tabular-grid\",\n $tabular-grid-cell-apply-ellipsis: true,\n $tabular-grid-affected-columns-nth-list: (\n 2,\n 3,\n 4\n )\n);\n\n.text-neutral-gray-400,\n.tabular-grid-cell.text-neutral-gray-400 {\n // WA: colors for text should be defined in Mercury\n color: var(--mer-color__neutral-gray--400);\n}\n// Header\n\n.search-server {\n inline-size: 50%;\n}\n\n// All Servers\n\n.tabular-grid {\n overflow: auto;\n border-block: 1px solid var(--grid-cell__border-color);\n}\n\n.tabular-grid-all-servers .tabular-grid-column:first-child::part(bar) {\n --grid-common__gap: 0;\n}\n\n.field-block-all-servers {\n overflow: auto;\n}\n\n// WA: .tabular-grid-wrapper and .border-patch is a WA. See details on Asana task:\n// https://app.asana.com/1/10206720691358/project/1207081021030105/task/1211391456974726?focus=true\n.tabular-grid-wrapper {\n position: relative;\n overflow: auto;\n}\n.border-patch {\n --tabular-grid-border-radius: 4px;\n position: absolute;\n top: 0;\n inline-size: calc(100% - var(--tabular-grid-border-radius) * 2);\n inset-inline-start: var(--tabular-grid-border-radius);\n block-size: 2px;\n background-color: var(--items-container__bg-color);\n z-index: 9999;\n border-block-start: 1px solid var(--mer-border-color__on-surface);\n}\n\n.tooltip {\n position: absolute;\n}\n\n.recently-used-card {\n border: 1px solid var(--grid-cell__border-color);\n border-radius: var(--mer-border__radius--sm);\n cursor: pointer;\n\n &:hover {\n background-color: var(--mer-color__tinted-primary--5);\n }\n\n &:focus-visible {\n @include focus-outline();\n }\n\n &--selected {\n background-color: var(--mer-color__tinted-primary--10);\n border-color: var(--mer-color__tinted-primary--30);\n }\n}\n\n.recently-used-card-content {\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: flex-start;\n padding: 8px;\n gap: 2px;\n overflow: hidden;\n\n .text-decoration-line-underline {\n @include cell-ellipsis();\n max-width: 100%;\n text-decoration: underline;\n }\n}\n\n// All Severs tabular-grid\n\n.delete-server-icon {\n // WA: Getr and apply the marign inline value on the ch-image,\n // so that the button looks squared. This happens because the\n // button is \"tertiary\", which happens to have no padding-inline.\n // TODO: Investigate a solution that works without a WA.\n $cellBlockSize: 30.39px;\n margin-inline: calc((#{$cellBlockSize} - var(--ch-image-size)) / 2);\n}\n\n@include tabular-grid-cell-layout(\n $tabular-grid-selector: \".tabular-grid\",\n $tabular-grid-cell-node-type: \"element\",\n $tabular-grid-affected-columns-nth-list: (\n 5\n )\n);\n","// Stencil\nimport { Component, Element, h, Host, Prop, State } from \"@stencil/core\";\n\n// Other Libraries\nimport { getIconPath, MercuryBundles } from \"@genexus/mercury\";\n\n// Custom Imports\nimport {\n ChEditCustomEvent,\n TabularGridColumnSortChangedEvent,\n TabularGridRowClickedEvent\n} from \"@genexus/chameleon-controls-library\";\nimport { RadioGroupItemModel } from \"@genexus/chameleon-controls-library/dist/types/components/radio-group/types\";\nimport { JSX, Watch } from \"@stencil/core/internal\";\nimport { config } from \"../../../common/config\";\nimport {\n clearControlError,\n ControlValidation,\n validateControls\n} from \"../../../common/form-validation\";\nimport { Locale } from \"../../../common/locale\";\nimport { FormSubmitResult } from \"../../../common/types\";\n\nimport sortTabularGridColumn from \"../../../common/chameleon/tabular-grid-column-sort\";\n\nconst CSS_BUNDLES: MercuryBundles = [\n \"resets/box-sizing\",\n \"utils/form--full\",\n \"utils/layout\",\n \"utils/typography\",\n \"utils/spacing\",\n \"components/tooltip\",\n \"chameleon/scrollbar\",\n \"components/tabular-grid\"\n];\n\nconst INFO_ICON = getIconPath({\n category: \"system\",\n name: \"information\",\n colorType: \"on-surface\"\n});\n\nconst LOCK_ICON = getIconPath({\n category: \"system\",\n name: \"lock\",\n colorType: \"on-surface\"\n});\n\nconst LANGUAGE_ICON = getIconPath({\n category: \"system\",\n name: \"language\",\n colorType: \"on-surface\"\n});\n\nconst DELETE_ICON = getIconPath({\n category: \"system\",\n name: \"delete-outlined\",\n colorType: \"neutral\"\n});\n\nconst ERROR_ICON = getIconPath({\n category: \"system\",\n name: \"error\",\n colorType: \"error\"\n});\n\nconst SEARCH_ICON = getIconPath({\n category: \"system\",\n name: \"search\",\n colorType: \"on-surface\"\n});\n\nconst SERVER_NAME_PREFIX = \"server-name-\";\n\n@Component({\n tag: \"gx-ide-server-selector\",\n styleUrl: \"server-selector.scss\",\n shadow: true,\n assetsDirs: [\"gx-ide-assets/server-selector\"]\n})\nexport class GxIdeServerSelector {\n #_componentLocale: any;\n\n #chGridAllServersEl: HTMLChTabularGridElement;\n #serverUrlEL: HTMLChEditElement;\n #serverFriendlyNameEL: HTMLChEditElement;\n #updatedServerName: string | undefined;\n #serverNameEditElsMap: Map<string, HTMLChEditElement> = new Map();\n #versionsSelect: RadioGroupItemModel[] = [];\n\n @Element() el: HTMLGxIdeServerSelectorElement;\n\n /**\n * State to enable/disable confirm button.\n */\n @State() enableConfirmButton: boolean = false;\n\n /**\n * The current server URL input value.\n */\n @State() serverUrlInputValue: string = \"\";\n\n /**\n * The current server URL input value.\n */\n @State() serverNameInputValue: string = \"\";\n\n /**\n * The selected server URI.\n */\n @State() selectedServerUri: string | undefined;\n\n /**\n * The selected server name.\n */\n @State() selectedServerName: string | undefined = \"None\";\n\n /**\n * The user name of the selected server.\n */\n @State() userName: string;\n\n /**\n * State to store the filter input value to filter the list-box\n */\n @State() filterValue: string = \"\";\n\n /**\n * Servers filtered\n */\n @State() filteredServersData: ServerData[] = [];\n\n @State() validatableControls = new Map<string, ControlValidation>();\n\n /**\n * The selected connection type\n */\n @State() selectedConnectionType: ConnectionOption = \"select\";\n\n /**\n * The selected recently used server ID\n */\n @State() selectedRecentlyUsedId: string;\n\n /**\n * The list of all GX servers.\n */\n @Prop({ mutable: true }) serversData: ServerData[] = [];\n @Watch(\"serversData\")\n serversDataChanged(newValue: ServerData[]) {\n this.filteredServersData = newValue;\n }\n /**\n * The list of recently used servers.\n */\n @Prop() readonly recentlyUsedServersData: ServerData[] = [];\n\n /**\n * Callback that is invoked when the dialog is closed\n */\n @Prop() readonly cancelCallback!: () => Promise<void>;\n\n /**\n * Callback that must be invoked when the 'Confirm' button is pressed and the Select Server option is checked.\n */\n @Prop() readonly selectServerCallback!: (\n authenticationSessionOrigin: AuthenticationSessionOrigin,\n connectionOption: ConnectionOption\n ) => Promise<FormSubmitResult>;\n\n /**\n * Invoked to delete a server\n */\n @Prop() readonly deleteServerCallback!: (\n serverData: ServerData\n ) => Promise<boolean>;\n\n /**\n * Invoked to update a server\n */\n @Prop() readonly updateServerCallback!: (\n serverData: ServerData\n ) => Promise<FormSubmitResult>;\n\n async componentWillLoad() {\n this.#_componentLocale = await Locale.getComponentStrings(this.el);\n\n this.#versionsSelect = [\n {\n value: \"select\",\n caption: this.#_componentLocale.captions.selectServer\n },\n {\n value: \"new\",\n caption: this.#_componentLocale.captions.addServer\n }\n ];\n\n this.selectedServerUri = this.serversData[0]?.serverUrl;\n this.userName = this.serversData[0]?.gxServerUsername;\n\n this.filteredServersData = this.serversData;\n }\n\n componentDidRender() {\n if (\n this.selectedConnectionType === \"new\" &&\n this.#serverUrlEL &&\n this.#serverFriendlyNameEL\n ) {\n this.#initializeValidatableControls([\n this.#serverUrlEL,\n this.#serverFriendlyNameEL\n ]);\n this.#serverNameEditElsMap.clear();\n }\n\n if (\n this.selectedConnectionType === \"select\" &&\n this.#serverNameEditElsMap.size > 0\n ) {\n this.#initializeValidatableControls([\n ...this.#serverNameEditElsMap.values()\n ]);\n }\n }\n\n #cancelHandler = (): void => {\n this.cancelCallback();\n };\n\n #confirmHandler = async (): Promise<void> => {\n let formSubmitResult: FormSubmitResult;\n if (this.selectedConnectionType === \"select\") {\n formSubmitResult = await this.selectServerCallback(\n {\n uri: this.selectedServerUri,\n name: this.selectedServerName\n },\n this.selectedConnectionType\n );\n } else {\n formSubmitResult = await this.selectServerCallback(\n {\n uri: this.serverUrlInputValue,\n name: this.serverNameInputValue\n },\n this.selectedConnectionType\n );\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 = (validatableControls: HTMLElement[]) => {\n validatableControls.forEach(validatableControl => {\n if (\n validatableControl.id &&\n !this.validatableControls.has(validatableControl.id)\n ) {\n this.validatableControls.set(validatableControl.id, {\n reference: validatableControl,\n hasError: false,\n message: undefined\n });\n }\n });\n };\n\n #filterValueChangedHandler = (\n event: ChEditCustomEvent<string> | InputEvent\n ) => {\n this.filterValue = (event.detail as string).toLowerCase();\n this.filteredServersData = this.serversData.filter(item =>\n item.serverName.toLowerCase().includes(this.filterValue)\n );\n };\n\n #inputHandler = (\n event: ChEditCustomEvent<string> | InputEvent,\n field: \"serverUrlInputValue\" | \"serverNameInputValue\"\n ) => {\n this.enableConfirmButton = false;\n this[field] = (event.detail as string).trim();\n\n const controlId =\n field === \"serverUrlInputValue\" ? \"server-url\" : \"server-name\";\n clearControlError(this.validatableControls, controlId);\n this.#enableConfirmButton();\n };\n\n #handleRecentlyUsedCardClick = async (server: ServerData) => {\n this.selectedRecentlyUsedId = server.id;\n await this.#chGridAllServersEl?.selectRow(server.id);\n await this.#handleServerSelection(server.id);\n };\n\n #handleDeleteServer = async (serverData: ServerData) => {\n if (serverData.accessLevel === \"private\") {\n const result = await this.deleteServerCallback(serverData);\n if (result) {\n this.selectedServerName = \"None\";\n this.enableConfirmButton = false;\n }\n }\n };\n\n #onServerNameInput = async (\n event: ChEditCustomEvent<string> | InputEvent\n ) => {\n this.#updatedServerName = event.detail as string;\n };\n\n #onServerNameChange = async (serverData: ServerData) => {\n let result: FormSubmitResult = {\n fieldErrors: [],\n success: false\n };\n if (\n serverData.serverName !== this.#updatedServerName &&\n serverData.accessLevel === \"private\"\n ) {\n result = await this.updateServerCallback({\n ...serverData,\n serverName: this.#updatedServerName\n });\n }\n\n this.validatableControls = validateControls(\n result,\n this.validatableControls\n );\n\n if (result.success || serverData.serverName === this.#updatedServerName) {\n this.selectedServerName = this.#updatedServerName;\n clearControlError(\n this.validatableControls,\n `${SERVER_NAME_PREFIX}${serverData.id}`\n );\n }\n };\n\n #enableConfirmButton = () => {\n if (\n this.serverUrlInputValue &&\n this.serverUrlInputValue.length > 0 &&\n this.serverNameInputValue &&\n this.serverNameInputValue.length > 0\n ) {\n this.enableConfirmButton = true;\n } else {\n this.enableConfirmButton = false;\n }\n };\n\n #onRecentlyUsedDoubleClickHandler = (serverData: ServerData) => {\n this.#handleServerSelection(serverData.id);\n this.#confirmHandler();\n };\n\n #onServersRowClickHandler = (\n event: CustomEvent<TabularGridRowClickedEvent>\n ) => this.#handleServerSelection(event.detail.rowId);\n\n #handleServerSelection = async (selectedRowId: string): Promise<void> => {\n if (selectedRowId === undefined) {\n this.enableConfirmButton = false;\n this.selectedServerUri = undefined;\n this.selectedServerName = undefined;\n return;\n }\n\n const selectedServer = this.serversData.find(\n server => server.id === selectedRowId\n );\n this.enableConfirmButton = true;\n this.selectedServerName = selectedServer?.serverName;\n this.selectedServerUri = selectedServer?.serverUrl;\n this.userName = selectedServer?.gxServerUsername || \"\";\n this.selectedRecentlyUsedId = selectedServer?.id;\n };\n\n #connectionTypeChangedHandler = (event: CustomEvent<string>) => {\n this.selectedConnectionType = event.detail as ConnectionOption;\n if (this.selectedConnectionType === \"new\") {\n this.enableConfirmButton = false;\n this.serverUrlInputValue = \"\";\n }\n this.selectedServerName = \"None\";\n };\n\n #sortTabularGridColumnCallback = (\n e: CustomEvent<TabularGridColumnSortChangedEvent>\n ) => {\n this.filteredServersData = [\n ...sortTabularGridColumn(e, this.filteredServersData, \"string\", undefined)\n ];\n };\n\n #renderTabularGridColumnSet = (\n hideColumnName: boolean = false\n ): HTMLChTabularGridColumnsetElement => {\n return (\n <ch-tabular-grid-columnset class=\"tabular-grid-column-set\">\n <ch-tabular-grid-column\n columnId=\"icon\"\n class=\"tabular-grid-column tabular-grid-column-icon\"\n columnName=\"Icon\"\n settingable={false}\n columnNameHidden={true}\n size={config.tabularGrid.colSize.maxContent}\n resizable={false}\n sortable={false}\n ></ch-tabular-grid-column>\n <ch-tabular-grid-column\n columnId=\"serverName\"\n class=\"tabular-grid-column\"\n columnName=\"Server Name\"\n settingable={false}\n columnNameHidden={hideColumnName}\n size={config.tabularGrid.colSize.serverName}\n resizable={false}\n sortable={!hideColumnName}\n onColumnSortChanged={this.#sortTabularGridColumnCallback}\n ></ch-tabular-grid-column>\n <ch-tabular-grid-column\n columnId=\"serverUrl\"\n class=\"tabular-grid-column\"\n columnName=\"Server Url\"\n settingable={false}\n columnNameHidden={hideColumnName}\n size={config.tabularGrid.colSize.auto}\n resizable={false}\n sortable={!hideColumnName}\n onColumnSortChanged={this.#sortTabularGridColumnCallback}\n ></ch-tabular-grid-column>\n <ch-tabular-grid-column\n columnId=\"userName\"\n class=\"tabular-grid-column\"\n columnName=\"Connected\"\n settingable={false}\n columnNameHidden={hideColumnName}\n size={config.tabularGrid.colSize.userName}\n resizable={false}\n sortable={!hideColumnName}\n onColumnSortChanged={this.#sortTabularGridColumnCallback}\n ></ch-tabular-grid-column>\n <ch-tabular-grid-column\n columnId=\"action\"\n class=\"tabular-grid-column tabular-grid-column-icon\"\n columnName=\"Action\"\n settingable={false}\n columnNameHidden={true}\n size={config.tabularGrid.colSize.maxContent}\n resizable={false}\n sortable={false}\n ></ch-tabular-grid-column>\n </ch-tabular-grid-columnset>\n );\n };\n\n #renderTooltip = (text: string): JSX.Element | null => {\n return text !== \"\" ? (\n <ch-tooltip\n class=\"tooltip\"\n actionElement={null}\n blockAlign=\"outside-end\"\n inlineAlign={config.tooltipSettings.inlineAlign}\n delay={config.tooltipSettings.delayLong}\n >\n {text}\n </ch-tooltip>\n ) : null;\n };\n\n #renderServerNameErrorMessage = (errorMsg: string) => {\n return (\n <ch-tabular-grid-rowset class=\"tabular-grid-rowset\">\n <ch-tabular-grid-rowset-empty class=\"tabular-grid-rowset-empty\">\n <p class=\"warning-error-description\">\n <ch-image\n class=\"icon-md warning-error-icon\"\n src={ERROR_ICON}\n ></ch-image>\n {errorMsg}\n </p>\n </ch-tabular-grid-rowset-empty>\n </ch-tabular-grid-rowset>\n );\n };\n\n #renderTabularGridCommonCells = (serverData: ServerData) => {\n return [\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n {this.#renderIcon(serverData.accessLevel)}\n </ch-tabular-grid-cell>,\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n {serverData.accessLevel === \"private\" ? (\n <ch-edit\n id={`${SERVER_NAME_PREFIX}${serverData.id}`}\n value={serverData.serverName}\n onInput={this.#onServerNameInput}\n onChange={() => this.#onServerNameChange(serverData)}\n maxLength={18}\n ref={el => {\n const key = `${SERVER_NAME_PREFIX}${serverData.id}`;\n if (el) {\n this.#serverNameEditElsMap.set(key, el as HTMLChEditElement);\n } else {\n this.#serverNameEditElsMap.delete(key);\n }\n }}\n ></ch-edit>\n ) : (\n serverData.serverName\n )}\n </ch-tabular-grid-cell>,\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n {serverData.serverUrl}\n {this.#renderTooltip(serverData.serverUrl)}\n </ch-tabular-grid-cell>,\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n {serverData.gxServerUsername}\n </ch-tabular-grid-cell>,\n <ch-tabular-grid-cell\n class=\"tabular-grid-cell\"\n onClick={() => this.#handleDeleteServer(serverData)}\n >\n <button\n class=\"button-tertiary button-icon-only\"\n aria-label={this.#_componentLocale.actions.deleteServer}\n disabled={serverData.accessLevel === \"public\"}\n >\n <ch-image\n disabled={serverData.accessLevel === \"public\"}\n class=\"icon-md delete-server-icon\"\n src={DELETE_ICON}\n ></ch-image>\n </button>\n </ch-tabular-grid-cell>\n ];\n };\n\n #renderAllServersGrid = (): Element => {\n return (\n <div class=\"tabular-grid-wrapper\">\n <div class=\"border-patch\"></div>\n <ch-tabular-grid\n class={\"tabular-grid tabular-grid-all-servers\"}\n rowSelectionMode=\"single\"\n ref={(el: HTMLChTabularGridElement) =>\n (this.#chGridAllServersEl = el)\n }\n allowColumnReorder={false}\n onRowClicked={this.#onServersRowClickHandler}\n id=\"all-servers\"\n >\n {this.#renderTabularGridColumnSet()}\n {this.filteredServersData.length > 0 ? (\n <ch-tabular-grid-rowset class=\"tabular-grid-rowset\">\n {this.filteredServersData.map((serverData: ServerData) => {\n const serverNameEditKey = `${SERVER_NAME_PREFIX}${serverData.id}`;\n const hasError =\n this.validatableControls.get(serverNameEditKey)?.hasError ===\n true;\n const errorMsg =\n this.validatableControls.get(serverNameEditKey)?.message;\n\n return (\n <ch-tabular-grid-row\n rowid={serverData.id}\n class=\"tabular-grid-row\"\n >\n {this.#renderTabularGridCommonCells(serverData)}\n {hasError && this.#renderServerNameErrorMessage(errorMsg)}\n </ch-tabular-grid-row>\n );\n })}\n </ch-tabular-grid-rowset>\n ) : (\n <ch-tabular-grid-rowset class=\"tabular-grid-rowset\">\n <ch-tabular-grid-rowset-empty class=\"tabular-grid-rowset-empty\">\n <gx-ide-empty-state\n stateIconSrc={INFO_ICON}\n stateTitle={this.#_componentLocale.emptyConnectedServers}\n isAnimated={true}\n ></gx-ide-empty-state>\n </ch-tabular-grid-rowset-empty>\n </ch-tabular-grid-rowset>\n )}\n </ch-tabular-grid>\n </div>\n );\n };\n\n #renderIcon = (accessLevel: string): JSX.Element => {\n const icon = accessLevel === \"private\" ? LOCK_ICON : LANGUAGE_ICON;\n return <ch-image class=\"icon-md\" src={icon}></ch-image>;\n };\n\n #renderFooter = () => {\n const isSelectionMode = this.selectedConnectionType === \"select\";\n return (\n <footer\n class={{\n \"control-footer-with-border\": true,\n \"control-footer-space-between\":\n this.selectedConnectionType === \"select\",\n \"space-between\": isSelectionMode,\n \"spacing-body-inline\": true,\n \"spacing-body-block\": true\n }}\n >\n {isSelectionMode && (\n <p class=\"body-italic-m\">Selected: {this.selectedServerName}</p>\n )}\n <div class=\"buttons-spacer\">\n <button\n // cancel button\n class=\"button-secondary\"\n onClick={this.#cancelHandler}\n >\n {this.#_componentLocale.footer.cancel}\n </button>\n\n <button\n // confirm button\n class=\"button-primary\"\n onClick={this.enableConfirmButton && this.#confirmHandler}\n disabled={!this.enableConfirmButton}\n >\n {this.#_componentLocale.footer.confirm}\n </button>\n </div>\n </footer>\n );\n };\n\n #renderRecentlyUsed = () => {\n const renderRecentlyUsed =\n this.selectedConnectionType === \"select\" &&\n this.recentlyUsedServersData.length > 0;\n\n return (\n renderRecentlyUsed && (\n <div class=\"field field-block spacing-body-inline\">\n <label class=\"label\" htmlFor=\"recently-used-servers\">\n {this.#_componentLocale.recentlyUsed.title}\n </label>\n <div\n class={{\n \"layout\": true,\n \"layout--cols-3\": this.recentlyUsedServersData.length >= 3,\n \"layout--cols-2\": this.recentlyUsedServersData.length <= 2\n }}\n >\n {this.recentlyUsedServersData.map((server: ServerData) => (\n <button\n class={{\n \"layout__panel\": true,\n \"recently-used-card\": true,\n \"recently-used-card--selected\":\n this.selectedRecentlyUsedId === server.id\n }}\n onClick={() => this.#handleRecentlyUsedCardClick(server)}\n onDblClick={() =>\n this.#onRecentlyUsedDoubleClickHandler(server)\n }\n >\n <div class=\"recently-used-card-content\">\n <p class=\"body-regular-s text-neutral-gray-400\">\n {server.serverName}\n </p>\n <p class=\"body-regular-s text-neutral-gray-400 text-decoration-line-underline\">\n {server.serverUrl}\n </p>\n </div>\n {this.#renderTooltip(server.serverUrl)}\n </button>\n ))}\n </div>\n </div>\n )\n );\n };\n\n #renderAllServers = () => {\n return (\n <div class=\"field field-block field-block-all-servers spacing-body-inline\">\n <label class=\"label\" htmlFor=\"all-servers\">\n {this.#_componentLocale.allServers.title}\n </label>\n {this.#renderAllServersGrid()}\n </div>\n );\n };\n\n render(): void {\n return (\n <Host\n class={{\n \"widget elevation-1\": true,\n \"new-connection\": this.selectedConnectionType === \"new\",\n \"recently-used-empty\": this.recentlyUsedServersData.length === 0\n }}\n >\n <ch-theme model={CSS_BUNDLES}></ch-theme>\n <main class=\"section\">\n <header class=\"header spacing-body-block-start spacing-body-inline\">\n <div class=\"field-group\">\n <label class=\"body-regular-m text-neutral-gray-400\">\n {this.#_componentLocale.header.title}\n </label>\n <ch-radio-group-render\n class=\"radio-group\"\n model={this.#versionsSelect}\n onChange={this.#connectionTypeChangedHandler}\n value={this.#versionsSelect[0].value}\n ></ch-radio-group-render>\n\n {this.selectedConnectionType === \"select\" && (\n <ch-edit\n class=\"input search-server\"\n id=\"server-name-search\"\n startImgSrc={SEARCH_ICON}\n onInput={this.#filterValueChangedHandler}\n placeholder={\n this.#_componentLocale.placeholders.searchServers\n }\n accessibleName=\"search server\"\n type=\"search\"\n ></ch-edit>\n )}\n </div>\n </header>\n\n {this.selectedConnectionType === \"select\" && [\n this.#renderRecentlyUsed(),\n this.#renderAllServers()\n ]}\n\n {this.selectedConnectionType === \"new\" && (\n <section class=\"spacing-body-inline\">\n <div class=\"layout layout--cols-2\">\n <div class=\"field field-block layout__panel\">\n <label class=\"label\" htmlFor=\"server-url\">\n {this.#_componentLocale.labels.serverUrl}\n </label>\n <ch-edit\n // server url\n class=\"input\"\n id=\"server-url\"\n value={this.serverUrlInputValue}\n onInput={event =>\n this.#inputHandler(event, \"serverUrlInputValue\")\n }\n placeholder={this.#_componentLocale.placeholders.serverUrl}\n ref={el => (this.#serverUrlEL = el as HTMLChEditElement)}\n ></ch-edit>\n {this.#evaluateTooltipRender(this.#serverUrlEL)}\n </div>\n\n <div class=\"field field-block layout__panel\">\n <label class=\"label\" htmlFor=\"server-name\">\n {this.#_componentLocale.labels.serverName}\n </label>\n <ch-edit\n // server friendly name\n class=\"input\"\n id=\"server-name\"\n value={this.serverNameInputValue}\n onInput={event =>\n this.#inputHandler(event, \"serverNameInputValue\")\n }\n placeholder={this.#_componentLocale.placeholders.serverName}\n maxLength={18}\n ref={el =>\n (this.#serverFriendlyNameEL = el as HTMLChEditElement)\n }\n ></ch-edit>\n {this.#evaluateTooltipRender(this.#serverFriendlyNameEL)}\n </div>\n </div>\n </section>\n )}\n\n {this.#renderFooter()}\n </main>\n </Host>\n );\n }\n}\n\nexport type ConnectionResultData = {\n formResult: FormSubmitResult;\n};\n\nexport type ConnectionOption = \"select\" | \"new\";\n\nexport type ServerAccessLevel = \"public\" | \"private\";\n\nexport type AuthenticationSessionOrigin = {\n uri: string;\n name: string;\n};\n\nexport type ServerData = {\n id: string;\n serverUrl: string;\n accessLevel: ServerAccessLevel;\n masterSessionUsername: string;\n serverName?: string;\n sessionId?: string;\n gxServerUsername: string;\n isConnected: boolean;\n};\n\nexport type NewServerConnectionData = {\n serverUrl: string;\n serverName: string;\n};\n"],"mappings":"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"}
|
|
@@ -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","FILTER_ICON_PRIMARY","getIconPath","category","colorType","FILTER_ICON","RESET_ICON","SEARCH_ICON","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","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","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","/* 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 { getIconPath, 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 hasActiveVersionInList,\n mapObjectTypeToComboBoxItemModel\n} from \"./helpers\";\nimport {\n renderObjectStateWithIcon,\n renderObjectTypeWithIcon\n} from \"../common/utilities\";\nimport { ObjectState } from \"../version-control/common/types\";\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\nconst FILTER_ICON_PRIMARY = getIconPath({\n category: \"window-tools\",\n name: \"filter\",\n colorType: \"primary\"\n});\n\nconst FILTER_ICON = getIconPath({\n category: \"window-tools\",\n name: \"filter\",\n colorType: \"on-surface\"\n});\n\nconst RESET_ICON = getIconPath({\n category: \"gemini-tools\",\n name: \"reset\",\n colorType: \"primary\"\n});\n\nconst SEARCH_ICON = getIconPath({\n category: \"gemini-tools\",\n name: \"search\",\n colorType: \"on-surface\"\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={FILTER_ICON}\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={SEARCH_ICON}\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-teritary 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={FILTER_ICON_PRIMARY}></ch-image>\n </button>\n\n <button\n class=\"button-teritary 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={RESET_ICON}></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,234 +0,0 @@
|
|
|
1
|
-
import { r as e, h as t, H as i, a as s } from "./p-9b9ccd0c.js";
|
|
2
|
-
|
|
3
|
-
import { c as a } from "./p-c5196b3b.js";
|
|
4
|
-
|
|
5
|
-
import { v as n } from "./p-b32b6b1f.js";
|
|
6
|
-
|
|
7
|
-
import { L as o } from "./p-311eedf3.js";
|
|
8
|
-
|
|
9
|
-
const mapAuthenticationTypeToComboBoxModel = e => e.map((e => ({
|
|
10
|
-
value: e.id,
|
|
11
|
-
caption: e.name
|
|
12
|
-
})));
|
|
13
|
-
|
|
14
|
-
const r = ':host{display:grid;block-size:100%;overflow:auto;grid-template-rows:1fr max-content}.main{display:grid;grid-template-areas:"server-url server-url" "authentication-type ." "user-name user-password";grid-auto-rows:max-content;grid-template-columns:1fr 1fr}.section{display:contents}.authentication-type{grid-area:authentication-type}.server-url{grid-area:server-url}.user-name{grid-area:user-name}.user-password{grid-area:user-password}.tooltip{position:absolute}';
|
|
15
|
-
|
|
16
|
-
var l = undefined && undefined.__classPrivateFieldGet || function(e, t, i, s) {
|
|
17
|
-
if (i === "a" && !s) throw new TypeError("Private accessor was defined without a getter");
|
|
18
|
-
if (typeof t === "function" ? e !== t || !s : !t.has(e)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
|
|
19
|
-
return i === "m" ? s : i === "a" ? s.call(e) : s ? s.value : t.get(e);
|
|
20
|
-
};
|
|
21
|
-
|
|
22
|
-
var d = undefined && undefined.__classPrivateFieldSet || function(e, t, i, s, a) {
|
|
23
|
-
if (s === "m") throw new TypeError("Private method is not writable");
|
|
24
|
-
if (s === "a" && !a) throw new TypeError("Private accessor was defined without a setter");
|
|
25
|
-
if (typeof t === "function" ? e !== t || !a : !t.has(e)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
|
|
26
|
-
return s === "a" ? a.call(e, i) : a ? a.value = i : t.set(e, i), i;
|
|
27
|
-
};
|
|
28
|
-
|
|
29
|
-
var h, c, u, p, f, v, m, w, b, y, g, k;
|
|
30
|
-
|
|
31
|
-
const M = [ "resets/box-sizing", "components/tooltip", "utils/form--full", "utils/layout", "utils/typography", "utils/spacing", "chameleon/scrollbar" ];
|
|
32
|
-
|
|
33
|
-
const W = class {
|
|
34
|
-
constructor(i) {
|
|
35
|
-
e(this, i);
|
|
36
|
-
/**
|
|
37
|
-
* The component hard-coded strings translations.
|
|
38
|
-
*/
|
|
39
|
-
// eslint-disable-next-line @stencil-community/own-props-must-be-private
|
|
40
|
-
h.set(this, void 0);
|
|
41
|
-
c.set(this, void 0);
|
|
42
|
-
u.set(this, void 0);
|
|
43
|
-
p.set(this, void 0);
|
|
44
|
-
f.set(this, (() => {
|
|
45
|
-
this.cancelCallback();
|
|
46
|
-
}));
|
|
47
|
-
v.set(this, (async () => {
|
|
48
|
-
this.connectCallback(this.gxServerConnectionData).then((e => {
|
|
49
|
-
this.validatableControls = n(e, this.validatableControls);
|
|
50
|
-
}));
|
|
51
|
-
}));
|
|
52
|
-
// TODO: evaluate if this should be a global helper function.
|
|
53
|
-
// It is used on other dialogs as well.
|
|
54
|
-
m.set(this, (e => {
|
|
55
|
-
var i, s, n;
|
|
56
|
-
return ((s = (i = this.validatableControls) === null || i === void 0 ? void 0 : i.get(e === null || e === void 0 ? void 0 : e.id)) === null || s === void 0 ? void 0 : s.hasError) && ((n = this.validatableControls.get(e.id)) === null || n === void 0 ? void 0 : n.message) && t("ch-tooltip", {
|
|
57
|
-
class: "tooltip",
|
|
58
|
-
actionElement: e,
|
|
59
|
-
blockAlign: a.tooltipSettings.blockAlign,
|
|
60
|
-
inlineAlign: a.tooltipSettings.inlineAlign,
|
|
61
|
-
delay: a.tooltipSettings.delay
|
|
62
|
-
}, this.validatableControls.get(e.id).message);
|
|
63
|
-
}));
|
|
64
|
-
w.set(this, (() => {
|
|
65
|
-
var e, t, i, s;
|
|
66
|
-
this.authenticationTypesChanged(this.authenticationTypes);
|
|
67
|
-
// set initial values:
|
|
68
|
-
// server url
|
|
69
|
-
this.gxServerConnectionData.serverUrl = (e = this.defaultConnectionData) === null || e === void 0 ? void 0 : e.serverUrl;
|
|
70
|
-
//server name
|
|
71
|
-
this.gxServerConnectionData.serverName = (t = this.defaultConnectionData) === null || t === void 0 ? void 0 : t.serverName;
|
|
72
|
-
// authentication type
|
|
73
|
-
this.gxServerConnectionData.authenticationType = {
|
|
74
|
-
id: (i = this.authenticationTypesComboBoxModel[0]) === null || i === void 0 ? void 0 : i.value,
|
|
75
|
-
name: (s = this.authenticationTypesComboBoxModel[0]) === null || s === void 0 ? void 0 : s.caption
|
|
76
|
-
};
|
|
77
|
-
}));
|
|
78
|
-
b.set(this, (() => {
|
|
79
|
-
// populate #controlsValidation with the controls that could have errors.
|
|
80
|
-
const e = [ l(this, c, "f"), l(this, u, "f"), l(this, p, "f") ];
|
|
81
|
-
e.forEach((e => {
|
|
82
|
-
if (e.id) {
|
|
83
|
-
this.validatableControls.set(e.id, {
|
|
84
|
-
reference: e,
|
|
85
|
-
hasError: false,
|
|
86
|
-
message: undefined
|
|
87
|
-
});
|
|
88
|
-
}
|
|
89
|
-
}));
|
|
90
|
-
}));
|
|
91
|
-
y.set(this, (e => {
|
|
92
|
-
const t = e.detail;
|
|
93
|
-
const i = this.authenticationTypes.findIndex((e => e.id === t));
|
|
94
|
-
const s = this.authenticationTypes[i].name;
|
|
95
|
-
this.gxServerConnectionData.authenticationType = {
|
|
96
|
-
id: t,
|
|
97
|
-
name: s
|
|
98
|
-
};
|
|
99
|
-
}));
|
|
100
|
-
g.set(this, (e => {
|
|
101
|
-
this.gxServerConnectionData.userName = e.detail;
|
|
102
|
-
}));
|
|
103
|
-
k.set(this, (e => {
|
|
104
|
-
this.gxServerConnectionData.userPassword = e.detail;
|
|
105
|
-
}));
|
|
106
|
-
this.authenticationTypesComboBoxModel = undefined;
|
|
107
|
-
this.gxServerConnectionData = {
|
|
108
|
-
authenticationType: {
|
|
109
|
-
id: null,
|
|
110
|
-
name: null
|
|
111
|
-
},
|
|
112
|
-
serverUrl: null,
|
|
113
|
-
userName: null,
|
|
114
|
-
userPassword: null,
|
|
115
|
-
serverName: null
|
|
116
|
-
};
|
|
117
|
-
this.validatableControls = new Map;
|
|
118
|
-
this.authenticationTypes = undefined;
|
|
119
|
-
this.cancelCallback = undefined;
|
|
120
|
-
this.connectCallback = undefined;
|
|
121
|
-
this.defaultConnectionData = undefined;
|
|
122
|
-
this.enableCustomServer = false;
|
|
123
|
-
}
|
|
124
|
-
authenticationTypesChanged(e) {
|
|
125
|
-
if (e === null || e === void 0 ? void 0 : e.length) {
|
|
126
|
-
this.authenticationTypesComboBoxModel = mapAuthenticationTypeToComboBoxModel(e);
|
|
127
|
-
}
|
|
128
|
-
}
|
|
129
|
-
async componentWillLoad() {
|
|
130
|
-
d(this, h, await o.getComponentStrings(this.el), "f");
|
|
131
|
-
l(this, w, "f").call(this);
|
|
132
|
-
}
|
|
133
|
-
async componentDidLoad() {
|
|
134
|
-
l(this, b, "f").call(this);
|
|
135
|
-
}
|
|
136
|
-
render() {
|
|
137
|
-
var e, s, a, n;
|
|
138
|
-
return t(i, {
|
|
139
|
-
class: "widget"
|
|
140
|
-
}, t("ch-theme", {
|
|
141
|
-
model: M
|
|
142
|
-
}), t("section", {
|
|
143
|
-
class: "section"
|
|
144
|
-
}, t("div", {
|
|
145
|
-
class: "main field-group spacing-body"
|
|
146
|
-
}, t("div", {
|
|
147
|
-
// server urls
|
|
148
|
-
class: "field field-block server-url"
|
|
149
|
-
}, t("label", {
|
|
150
|
-
class: "label",
|
|
151
|
-
htmlFor: "server-url"
|
|
152
|
-
}, l(this, h, "f").main.serverURLLabel), t("ch-edit", {
|
|
153
|
-
type: "url",
|
|
154
|
-
id: "server-url",
|
|
155
|
-
class: "input",
|
|
156
|
-
value: (e = this.gxServerConnectionData) === null || e === void 0 ? void 0 : e.serverUrl,
|
|
157
|
-
readonly: true,
|
|
158
|
-
ref: e => d(this, p, e, "f")
|
|
159
|
-
})), t("div", {
|
|
160
|
-
// authentication types
|
|
161
|
-
class: "field field-block authentication-type"
|
|
162
|
-
}, t("label", {
|
|
163
|
-
class: "label",
|
|
164
|
-
htmlFor: "authentication-type"
|
|
165
|
-
}, l(this, h, "f").main.authenticationTypeLabel), t("ch-combo-box-render", {
|
|
166
|
-
id: "authentication-type",
|
|
167
|
-
class: "combo-box",
|
|
168
|
-
accessibleName: "Authentication Types",
|
|
169
|
-
model: this.authenticationTypesComboBoxModel,
|
|
170
|
-
placeholder: "Select an authentication type",
|
|
171
|
-
value: (s = this.gxServerConnectionData) === null || s === void 0 ? void 0 : s.authenticationType.id,
|
|
172
|
-
onInput: l(this, y, "f")
|
|
173
|
-
})), t("div", {
|
|
174
|
-
// username
|
|
175
|
-
class: "field field-block user-name"
|
|
176
|
-
}, t("label", {
|
|
177
|
-
class: "label",
|
|
178
|
-
htmlFor: "username"
|
|
179
|
-
}, l(this, h, "f").main.usernameLabel), t("ch-edit", {
|
|
180
|
-
type: "text",
|
|
181
|
-
id: "username",
|
|
182
|
-
class: "input",
|
|
183
|
-
value: (a = this.gxServerConnectionData) === null || a === void 0 ? void 0 : a.userName,
|
|
184
|
-
onInput: l(this, g, "f"),
|
|
185
|
-
ref: e => d(this, c, e, "f")
|
|
186
|
-
}), l(this, m, "f").call(this, l(this, c, "f"))), t("div", {
|
|
187
|
-
// user password
|
|
188
|
-
class: "field field-block user-password"
|
|
189
|
-
}, t("label", {
|
|
190
|
-
class: "label",
|
|
191
|
-
htmlFor: "password"
|
|
192
|
-
}, l(this, h, "f").main.passwordLabel), t("ch-edit", {
|
|
193
|
-
type: "password",
|
|
194
|
-
id: "password",
|
|
195
|
-
class: "input",
|
|
196
|
-
value: (n = this.gxServerConnectionData) === null || n === void 0 ? void 0 : n.userPassword,
|
|
197
|
-
onInput: l(this, k, "f"),
|
|
198
|
-
ref: e => d(this, u, e, "f"),
|
|
199
|
-
showPasswordButton: true
|
|
200
|
-
}), l(this, m, "f").call(this, l(this, u, "f")))), t("footer", {
|
|
201
|
-
class: "control-footer-with-border spacing-body"
|
|
202
|
-
}, t("div", {
|
|
203
|
-
class: "buttons-spacer"
|
|
204
|
-
}, t("button", {
|
|
205
|
-
// cancel button
|
|
206
|
-
class: "button-secondary",
|
|
207
|
-
onClick: l(this, f, "f")
|
|
208
|
-
}, l(this, h, "f").footer.backButtonCaption), t("button", {
|
|
209
|
-
// connect button
|
|
210
|
-
class: "button-primary",
|
|
211
|
-
onClick: l(this, v, "f")
|
|
212
|
-
}, l(this, h, "f").footer.connectButtonCaption)))));
|
|
213
|
-
}
|
|
214
|
-
static get assetsDirs() {
|
|
215
|
-
return [ "gx-ide-assets/connect-gx-server" ];
|
|
216
|
-
}
|
|
217
|
-
get el() {
|
|
218
|
-
return s(this);
|
|
219
|
-
}
|
|
220
|
-
static get watchers() {
|
|
221
|
-
return {
|
|
222
|
-
authenticationTypes: [ "authenticationTypesChanged" ]
|
|
223
|
-
};
|
|
224
|
-
}
|
|
225
|
-
};
|
|
226
|
-
|
|
227
|
-
h = new WeakMap, c = new WeakMap, u = new WeakMap, p = new WeakMap, f = new WeakMap,
|
|
228
|
-
v = new WeakMap, m = new WeakMap, w = new WeakMap, b = new WeakMap, y = new WeakMap,
|
|
229
|
-
g = new WeakMap, k = new WeakMap;
|
|
230
|
-
|
|
231
|
-
W.style = r;
|
|
232
|
-
|
|
233
|
-
export { W as gx_ide_connect_gx_server };
|
|
234
|
-
//# sourceMappingURL=p-a105f903.entry.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["mapAuthenticationTypeToComboBoxModel","authenticationTypes","map","authenticationType","value","id","caption","name","connectGxServerCss","CSS_BUNDLES","HTMLGxIdeConnectGxServer","_HTMLGxIdeConnectGxServer_componentLocale","set","this","_HTMLGxIdeConnectGxServer_usernameRef","_HTMLGxIdeConnectGxServer_passwordRef","_HTMLGxIdeConnectGxServer_serverUrlRef","_HTMLGxIdeConnectGxServer_cancelClickHandler","cancelCallback","_HTMLGxIdeConnectGxServer_connectClickHandler","async","connectCallback","gxServerConnectionData","then","formSubmitResult","validatableControls","validateControls","_HTMLGxIdeConnectGxServer_evaluateTooltipRender","controlReference","_b","_a","get","hasError","_c","message","h","class","actionElement","blockAlign","config","tooltipSettings","inlineAlign","delay","_HTMLGxIdeConnectGxServer_init","authenticationTypesChanged","serverUrl","defaultConnectionData","serverName","authenticationTypesComboBoxModel","_d","_HTMLGxIdeConnectGxServer_initializeValidatableControls","__classPrivateFieldGet","forEach","validatableControl","reference","undefined","_HTMLGxIdeConnectGxServer_authenticationInputEventHandler","event","authenticationTypeId","detail","authenticationTypeIndex","findIndex","authType","authenticationTypeName","_HTMLGxIdeConnectGxServer_usernameInputEventHandler","userName","_HTMLGxIdeConnectGxServer_passwordInputEventHandler","userPassword","Map","newAuthenticationTypes","length","componentWillLoad","__classPrivateFieldSet","Locale","getComponentStrings","el","call","componentDidLoad","render","Host","model","htmlFor","main","serverURLLabel","type","readonly","ref","authenticationTypeLabel","accessibleName","placeholder","onInput","usernameLabel","passwordLabel","showPasswordButton","onClick","footer","backButtonCaption","connectButtonCaption"],"sources":["src/components/team-dev/connect-gx-server/helpers.ts","src/components/team-dev/connect-gx-server/connect-gx-server.scss?tag=gx-ide-connect-gx-server&encapsulation=shadow","src/components/team-dev/connect-gx-server/connect-gx-server.tsx"],"sourcesContent":["import { AuthenticationType } from \"./connect-gx-server\";\nimport { ComboBoxModel } from \"@genexus/chameleon-controls-library\";\n\nexport const mapAuthenticationTypeToComboBoxModel = (\n authenticationTypes: AuthenticationType[]\n): ComboBoxModel => {\n return authenticationTypes.map(authenticationType => {\n return {\n value: authenticationType.id,\n caption: authenticationType.name\n };\n });\n};\n\nexport const mapServerUrlsToComboBoxModel = (\n serverUrls: string[]\n): ComboBoxModel => {\n return serverUrls.map(serverUrl => {\n return {\n value: serverUrl,\n caption: serverUrl\n };\n });\n};\n",":host {\n display: grid;\n block-size: 100%;\n overflow: auto;\n grid-template-rows: 1fr max-content;\n}\n\n.main {\n display: grid;\n grid-template-areas:\n \"server-url server-url\"\n \"authentication-type .\"\n \"user-name user-password\";\n grid-auto-rows: max-content;\n grid-template-columns: 1fr 1fr;\n}\n\n.section {\n display: contents;\n}\n\n.authentication-type {\n grid-area: authentication-type;\n}\n.server-url {\n grid-area: server-url;\n}\n.user-name {\n grid-area: user-name;\n}\n.user-password {\n grid-area: user-password;\n}\n\n.tooltip {\n position: absolute;\n}\n","// Stencil\nimport { Component, Element, h, Host, Prop, State, Watch } from \"@stencil/core\";\n\n// Other Libraries\nimport { ComboBoxModel } from \"@genexus/chameleon-controls-library\";\nimport { MercuryBundles } from \"@genexus/mercury\";\n\n// Custom Imports\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 { mapAuthenticationTypeToComboBoxModel } from \"./helpers\";\nimport { NewServerConnectionData } from \"../server-selector/server-selector\";\n\nconst CSS_BUNDLES: MercuryBundles = [\n \"resets/box-sizing\",\n \"components/tooltip\",\n \"utils/form--full\",\n \"utils/layout\",\n \"utils/typography\",\n \"utils/spacing\",\n \"chameleon/scrollbar\"\n];\n\n@Component({\n tag: \"gx-ide-connect-gx-server\",\n styleUrl: \"connect-gx-server.scss\",\n shadow: true,\n assetsDirs: [\"gx-ide-assets/connect-gx-server\"]\n})\nexport class HTMLGxIdeConnectGxServer {\n /**\n * The component hard-coded strings translations.\n */\n // eslint-disable-next-line @stencil-community/own-props-must-be-private\n #componentLocale: any;\n\n @Element() el: HTMLGxIdeConnectGxServerElement;\n #usernameRef!: HTMLChEditElement;\n #passwordRef!: HTMLChEditElement;\n #serverUrlRef!: HTMLChEditElement;\n\n @State() authenticationTypesComboBoxModel: ComboBoxModel;\n @State() gxServerConnectionData: GXServerConnectionData = {\n authenticationType: {\n id: null,\n name: null\n },\n serverUrl: null,\n userName: null,\n userPassword: null,\n serverName: null\n };\n @State() validatableControls = new Map<string, ControlValidation>();\n\n /**\n * List of authentication types.\n */\n @Prop() readonly authenticationTypes!: AuthenticationType[];\n @Watch(\"authenticationTypes\")\n authenticationTypesChanged(newAuthenticationTypes: AuthenticationType[]) {\n if (newAuthenticationTypes?.length) {\n this.authenticationTypesComboBoxModel =\n mapAuthenticationTypeToComboBoxModel(newAuthenticationTypes);\n }\n }\n\n /**\n * Callback that must be invoked when the 'Cancel' button is pressed.\n */\n @Prop() readonly cancelCallback!: () => Promise<void>;\n\n /**\n * Callback that must be invoked when the 'Connect' button is pressed.\n */\n @Prop() readonly connectCallback!: (\n data: GXServerConnectionData\n ) => Promise<FormSubmitResult>;\n\n /**\n * Initial user values for the case in which the user returns to the\n * login modal after successful authentication.\n */\n @Prop() readonly defaultConnectionData?: NewServerConnectionData;\n\n /**\n * true if the user should be allowed to manually enter a server URL.\n */\n @Prop() readonly enableCustomServer: boolean = false;\n\n async componentWillLoad() {\n this.#componentLocale = await Locale.getComponentStrings(this.el);\n\n this.#init();\n }\n\n async componentDidLoad() {\n this.#initializeValidatableControls();\n }\n\n #cancelClickHandler = () => {\n this.cancelCallback();\n };\n\n #connectClickHandler = async () => {\n this.connectCallback(this.gxServerConnectionData).then(\n (formSubmitResult: FormSubmitResult) => {\n this.validatableControls = validateControls(\n formSubmitResult,\n this.validatableControls\n );\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 #init = () => {\n this.authenticationTypesChanged(this.authenticationTypes);\n // set initial values:\n // server url\n this.gxServerConnectionData.serverUrl =\n this.defaultConnectionData?.serverUrl;\n //server name\n this.gxServerConnectionData.serverName =\n this.defaultConnectionData?.serverName;\n // authentication type\n this.gxServerConnectionData.authenticationType = {\n id: this.authenticationTypesComboBoxModel[0]?.value,\n name: this.authenticationTypesComboBoxModel[0]?.caption\n };\n };\n\n #initializeValidatableControls = () => {\n // populate #controlsValidation with the controls that could have errors.\n const validatableControls: HTMLElement[] = [\n this.#usernameRef,\n this.#passwordRef,\n this.#serverUrlRef\n ];\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 #authenticationInputEventHandler = (\n event: CustomEvent<string> | InputEvent\n ) => {\n const authenticationTypeId = event.detail as string;\n const authenticationTypeIndex = this.authenticationTypes.findIndex(\n authType => {\n return authType.id === authenticationTypeId;\n }\n );\n const authenticationTypeName =\n this.authenticationTypes[authenticationTypeIndex].name;\n\n this.gxServerConnectionData.authenticationType = {\n id: authenticationTypeId,\n name: authenticationTypeName\n };\n };\n #usernameInputEventHandler = (event: CustomEvent<string> | InputEvent) => {\n this.gxServerConnectionData.userName = event.detail as string;\n };\n #passwordInputEventHandler = (event: CustomEvent<string> | InputEvent) => {\n this.gxServerConnectionData.userPassword = event.detail as string;\n };\n\n render() {\n return (\n <Host class=\"widget\">\n <ch-theme model={CSS_BUNDLES}></ch-theme>\n\n <section class=\"section\">\n <div class=\"main field-group spacing-body\">\n <div\n // server urls\n class=\"field field-block server-url\"\n >\n <label class=\"label\" htmlFor=\"server-url\">\n {this.#componentLocale.main.serverURLLabel}\n </label>\n <ch-edit\n type=\"url\"\n id=\"server-url\"\n class=\"input\"\n value={this.gxServerConnectionData?.serverUrl}\n readonly={true}\n ref={(el: HTMLChEditElement) =>\n (this.#serverUrlRef = el as HTMLChEditElement)\n }\n ></ch-edit>\n </div>\n\n <div\n // authentication types\n class=\"field field-block authentication-type\"\n >\n <label class=\"label\" htmlFor=\"authentication-type\">\n {this.#componentLocale.main.authenticationTypeLabel}\n </label>\n <ch-combo-box-render\n id=\"authentication-type\"\n class=\"combo-box\"\n accessibleName=\"Authentication Types\"\n model={this.authenticationTypesComboBoxModel}\n placeholder=\"Select an authentication type\"\n value={this.gxServerConnectionData?.authenticationType.id}\n onInput={this.#authenticationInputEventHandler}\n ></ch-combo-box-render>\n </div>\n\n <div\n // username\n class=\"field field-block user-name\"\n >\n <label class=\"label\" htmlFor=\"username\">\n {this.#componentLocale.main.usernameLabel}\n </label>\n <ch-edit\n type=\"text\"\n id=\"username\"\n class=\"input\"\n value={this.gxServerConnectionData?.userName}\n onInput={this.#usernameInputEventHandler}\n ref={(el: HTMLChEditElement) =>\n (this.#usernameRef = el as HTMLChEditElement)\n }\n ></ch-edit>\n {this.#evaluateTooltipRender(this.#usernameRef)}\n </div>\n\n <div\n // user password\n class=\"field field-block user-password\"\n >\n <label class=\"label\" htmlFor=\"password\">\n {this.#componentLocale.main.passwordLabel}\n </label>\n <ch-edit\n type=\"password\"\n id=\"password\"\n class=\"input\"\n value={this.gxServerConnectionData?.userPassword}\n onInput={this.#passwordInputEventHandler}\n ref={(el: HTMLChEditElement) =>\n (this.#passwordRef = el as HTMLChEditElement)\n }\n showPasswordButton={true}\n ></ch-edit>\n {this.#evaluateTooltipRender(this.#passwordRef)}\n </div>\n </div>\n\n <footer class=\"control-footer-with-border spacing-body\">\n <div class=\"buttons-spacer\">\n <button\n // cancel button\n class=\"button-secondary\"\n onClick={this.#cancelClickHandler}\n >\n {this.#componentLocale.footer.backButtonCaption}\n </button>\n\n <button\n // connect button\n class=\"button-primary\"\n onClick={this.#connectClickHandler}\n >\n {this.#componentLocale.footer.connectButtonCaption}\n </button>\n </div>\n </footer>\n </section>\n </Host>\n );\n }\n}\n\nexport type GXServerConnectionData = {\n authenticationType: AuthenticationType;\n serverUrl: string;\n userName: string;\n userPassword: string;\n serverName?: string;\n};\n\nexport type AuthenticationType = {\n id: string;\n name: string;\n};\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_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","onClick","__classPrivateFieldGet","footer","cancel","disabled","confirm","versionsChanged","call","componentWillLoad","__classPrivateFieldSet","Locale","getComponentStrings","el","render","Host","model","type","src","descriptions","pill","summary","htmlFor","labels","fromVersion","id","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 { Component, Element, h, Host, Prop, State, Watch } 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\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 class=\"button-secondary\" onClick={this.#cancelHandler}>\n {this.#componentLocale.footer.cancel}\n </button>\n\n <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\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 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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"}
|