@genexus/genexus-ide-ui 1.1.40 → 1.1.41
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/genexus-ide-ui.cjs.js +1 -1
- package/dist/cjs/gx-ide-server-selector.cjs.entry.js +12 -28
- package/dist/cjs/gx-ide-server-selector.cjs.entry.js.map +1 -1
- package/dist/cjs/gx-ide-team-dev-bring-changes.cjs.entry.js +20 -4
- package/dist/cjs/gx-ide-team-dev-bring-changes.cjs.entry.js.map +1 -1
- package/dist/cjs/gx-ide-team-dev-commit.cjs.entry.js +99 -238
- package/dist/cjs/gx-ide-team-dev-commit.cjs.entry.js.map +1 -1
- package/dist/cjs/gx-ide-team-dev-update.cjs.entry.js +60 -10
- package/dist/cjs/gx-ide-team-dev-update.cjs.entry.js.map +1 -1
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/cjs/tabular-grid-column-sort-5ca06dc1.js +43 -0
- package/dist/cjs/tabular-grid-column-sort-5ca06dc1.js.map +1 -0
- package/dist/cjs/tabular-grid-render-4350dbaf.js +223 -0
- package/dist/cjs/tabular-grid-render-4350dbaf.js.map +1 -0
- package/dist/cjs/uncheck-ignored-77ca69fe.js +43 -0
- package/dist/cjs/uncheck-ignored-77ca69fe.js.map +1 -0
- package/dist/collection/common/chameleon/tabular-grid-column-sort.js +39 -0
- package/dist/collection/common/chameleon/tabular-grid-column-sort.js.map +1 -0
- package/dist/collection/components/team-dev/bring-changes/bring-changes.js +18 -4
- package/dist/collection/components/team-dev/bring-changes/bring-changes.js.map +1 -1
- package/dist/collection/components/team-dev/server-selector/server-selector.css +18 -14
- package/dist/collection/components/team-dev/server-selector/server-selector.js +11 -27
- package/dist/collection/components/team-dev/server-selector/server-selector.js.map +1 -1
- package/dist/collection/components/team-dev/update/update.css +1 -0
- package/dist/collection/components/team-dev/update/update.js +62 -9
- package/dist/collection/components/team-dev/update/update.js.map +1 -1
- package/dist/collection/components/team-dev/version-control/commit/commit.css +1 -0
- package/dist/collection/components/team-dev/version-control/commit/commit.js +79 -20
- package/dist/collection/components/team-dev/version-control/commit/commit.js.map +1 -1
- package/dist/collection/components/team-dev/version-control/common/are-sets-equal.js +21 -0
- package/dist/collection/components/team-dev/version-control/common/are-sets-equal.js.map +1 -0
- package/dist/collection/components/team-dev/version-control/common/tabular-grid-render.js +13 -3
- package/dist/collection/components/team-dev/version-control/common/tabular-grid-render.js.map +1 -1
- package/dist/collection/components/team-dev/version-control/common/uncheck-ignored.js +18 -0
- package/dist/collection/components/team-dev/version-control/common/uncheck-ignored.js.map +1 -0
- package/dist/components/gx-ide-server-selector.js +12 -28
- package/dist/components/gx-ide-server-selector.js.map +1 -1
- package/dist/components/gx-ide-team-dev-bring-changes.js +18 -4
- package/dist/components/gx-ide-team-dev-bring-changes.js.map +1 -1
- package/dist/components/gx-ide-team-dev-commit.js +78 -221
- package/dist/components/gx-ide-team-dev-commit.js.map +1 -1
- package/dist/components/gx-ide-team-dev-update.js +61 -10
- package/dist/components/gx-ide-team-dev-update.js.map +1 -1
- package/dist/components/tabular-grid-column-sort.js +41 -0
- package/dist/components/tabular-grid-column-sort.js.map +1 -0
- package/dist/components/tabular-grid-render.js +216 -0
- package/dist/components/tabular-grid-render.js.map +1 -0
- package/dist/components/uncheck-ignored.js +40 -0
- package/dist/components/uncheck-ignored.js.map +1 -0
- package/dist/esm/genexus-ide-ui.js +1 -1
- package/dist/esm/gx-ide-server-selector.entry.js +12 -28
- package/dist/esm/gx-ide-server-selector.entry.js.map +1 -1
- package/dist/esm/gx-ide-team-dev-bring-changes.entry.js +20 -4
- package/dist/esm/gx-ide-team-dev-bring-changes.entry.js.map +1 -1
- package/dist/esm/gx-ide-team-dev-commit.entry.js +81 -220
- package/dist/esm/gx-ide-team-dev-commit.entry.js.map +1 -1
- package/dist/esm/gx-ide-team-dev-update.entry.js +60 -10
- package/dist/esm/gx-ide-team-dev-update.entry.js.map +1 -1
- package/dist/esm/loader.js +1 -1
- package/dist/esm/tabular-grid-column-sort-1d503b27.js +41 -0
- package/dist/esm/tabular-grid-column-sort-1d503b27.js.map +1 -0
- package/dist/esm/tabular-grid-render-f7eb612b.js +216 -0
- package/dist/esm/tabular-grid-render-f7eb612b.js.map +1 -0
- package/dist/esm/uncheck-ignored-4ba48c9e.js +40 -0
- package/dist/esm/uncheck-ignored-4ba48c9e.js.map +1 -0
- package/dist/genexus-ide-ui/genexus-ide-ui.esm.js +1 -1
- package/dist/genexus-ide-ui/genexus-ide-ui.esm.js.map +1 -1
- package/dist/genexus-ide-ui/p-02fb496a.js +36 -0
- package/dist/genexus-ide-ui/p-02fb496a.js.map +1 -0
- package/dist/genexus-ide-ui/{p-970e89ac.entry.js → p-4b06b578.entry.js} +100 -115
- package/dist/genexus-ide-ui/p-4b06b578.entry.js.map +1 -0
- package/dist/genexus-ide-ui/{p-34447b77.entry.js → p-4e3ad78d.entry.js} +261 -234
- package/dist/genexus-ide-ui/p-4e3ad78d.entry.js.map +1 -0
- package/dist/genexus-ide-ui/p-77c2e69d.js +314 -0
- package/dist/genexus-ide-ui/p-77c2e69d.js.map +1 -0
- package/dist/genexus-ide-ui/p-a7883e6b.entry.js +691 -0
- package/dist/genexus-ide-ui/p-a7883e6b.entry.js.map +1 -0
- package/dist/genexus-ide-ui/p-c9b9e260.js +36 -0
- package/dist/genexus-ide-ui/p-c9b9e260.js.map +1 -0
- package/dist/genexus-ide-ui/{p-42f37527.entry.js → p-e1a2550e.entry.js} +351 -289
- package/dist/genexus-ide-ui/p-e1a2550e.entry.js.map +1 -0
- package/dist/types/common/chameleon/tabular-grid-column-sort.d.ts +4 -0
- package/dist/types/components/team-dev/update/update.d.ts +6 -0
- package/dist/types/components/team-dev/version-control/commit/commit.d.ts +15 -13
- package/dist/types/components/team-dev/version-control/common/are-sets-equal.d.ts +12 -0
- package/dist/types/components/team-dev/version-control/common/tabular-grid-render.d.ts +13 -1
- package/dist/types/components/team-dev/version-control/common/uncheck-ignored.d.ts +13 -0
- package/package.json +1 -1
- package/dist/genexus-ide-ui/p-34447b77.entry.js.map +0 -1
- package/dist/genexus-ide-ui/p-42f37527.entry.js.map +0 -1
- package/dist/genexus-ide-ui/p-723d25ae.entry.js +0 -912
- package/dist/genexus-ide-ui/p-723d25ae.entry.js.map +0 -1
- package/dist/genexus-ide-ui/p-970e89ac.entry.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"file":"gx-ide-team-dev-commit.js","mappings":"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","names":["CLASSES","GxIdeTeamDevCommit"],"sources":["src/components/team-dev/version-control/common/clear-grid-selection.ts","src/components/team-dev/version-control/common/header-renders.tsx","src/components/team-dev/version-control/commit/utilities/changeset-to-combo-box.ts","src/components/team-dev/version-control/commit/utilities/folders-to-combo-box.ts","src/components/team-dev/version-control/commit/utilities/types-to-combo-box.ts","src/components/team-dev/version-control/common/constants.ts","src/components/team-dev/version-control/common/tabular-grid-render.tsx","src/components/team-dev/version-control/commit/commit.scss?tag=gx-ide-team-dev-commit&encapsulation=shadow","src/components/team-dev/version-control/commit/commit.tsx"],"sourcesContent":["import { SourceType } from \"./types\";\n\n/**\n * Filters a grid selection to only include rows from the given source (\"pending\" or \"ignored\").\n * Rows from the other category are unselected.\n *\n * @param {SourceType} gridSource - The source category of the selection.\n * @param {string[]} selectedRowsIds - The currently selected row IDs.\n * @returns {string[]} Filtered row IDs belonging to the specified source.\n */\nconst clearGridSelection = (\n gridSource: SourceType,\n selectedRowsIds: string[],\n pendingIdsSet: Set<string>,\n ignoredIdsSet: Set<string>,\n gridReference: HTMLChTabularGridElement\n): string[] => {\n let filteredSelectedRowsIds: string[] = [];\n if (selectedRowsIds.length > 1 && gridSource === \"pending\") {\n selectedRowsIds.forEach(async selectedRowId => {\n if (ignoredIdsSet.has(selectedRowId)) {\n await gridReference.selectRow(selectedRowId, false);\n } else {\n filteredSelectedRowsIds.push(selectedRowId);\n }\n });\n } else if (selectedRowsIds.length > 1 && gridSource === \"ignored\") {\n selectedRowsIds.forEach(async selectedRowId => {\n if (pendingIdsSet.has(selectedRowId)) {\n await gridReference.selectRow(selectedRowId, false);\n } else {\n filteredSelectedRowsIds.push(selectedRowId);\n }\n });\n } else {\n filteredSelectedRowsIds = selectedRowsIds;\n }\n return filteredSelectedRowsIds;\n};\n\nexport default clearGridSelection;\n","import { h, JSX } from \"@stencil/core\";\n\nconst headerDetail = (\n type: \"text\" | \"link\" = \"text\",\n caption: string,\n description: string,\n callback?: () => void,\n cssClass?: string\n): JSX.Element => {\n return (\n <div class={{ [cssClass]: true, \"field field-block\": true }}>\n <span class=\"detail__label body-semi-bold-s\">{caption}</span>\n {type === \"text\" ? (\n <p class=\"body-regular-s\">{description}</p>\n ) : (\n <button class=\"detail__link body-regular-s\" onClick={callback}>\n {description}\n </button>\n )}\n </div>\n );\n};\nexport default headerDetail;\n\nexport const headerTitle = (caption: string, cssClass?: string) => {\n return (\n <h2\n class={{ [cssClass]: true, \"header__title subtitle-semi-bold-s\": true }}\n >\n {caption}\n </h2>\n );\n};\n\nexport const headerSubtitle = (caption: string, cssClass?: string) => {\n return (\n <p\n class={{ [cssClass]: true, \"detail__title subtitle-semi-bold-xs\": true }}\n >\n {caption}\n </p>\n );\n};\n","import { ComboBoxModel } from \"@genexus/chameleon-controls-library\";\nimport { GxOption } from \"../../../../../components\";\n\nexport const changesetToComboBoxModel = (\n changesetModel: GxOption[]\n): ComboBoxModel => {\n if (!changesetModel) return [];\n\n return changesetModel.map(changeset => ({\n value: changeset.id,\n caption:\n changeset.name === \"All\"\n ? \"All Changesets\"\n : changeset.label || changeset.name || \"\"\n }));\n};\n","import { ComboBoxModel } from \"@genexus/chameleon-controls-library\";\nimport { GxOption } from \"../../../../../components\";\n\nexport const foldersToComboBoxModel = (\n foldersModel: GxOption[]\n): ComboBoxModel =>\n foldersModel.map(folder => ({\n value: folder.name,\n caption:\n folder.name === \"All\" ? \"All Modules\" : folder.label || folder.name || \"\"\n }));\n","import { ComboBoxModel } from \"@genexus/chameleon-controls-library\";\nimport { ObjectType } from \"../../../../../components\";\n\nexport const typesToComboBoxItemModel = (\n objectTypeModel: ObjectType[]\n): ComboBoxModel =>\n objectTypeModel.map(objectType => ({\n value: objectType.id,\n caption: objectType.name === \"All\" ? \"All Types\" : objectType.name || \"\",\n startImgSrc: objectType.icon\n }));\n","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 field-group\",\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\";\n\nconst BUTTON_ACTION_SELECTOR = \"button-action-custom-selector\";\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 === \"commiting\") {\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 // this.objectsRenderedAlready = true;\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 componentLocale: any\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=\"name\"\n columnName={componentLocale.objects.name}\n columnType=\"rich\"\n richRowSelector={true}\n richRowSelectorMode=\"mark\"\n settingable={false}\n size={colSize}\n />\n )}\n\n {!ignoredGridColumns.includes(\"type\") && (\n <ch-tabular-grid-column\n class=\"tabular-grid-column\"\n columnId=\"type\"\n columnName={componentLocale.objects.type}\n settingable={false}\n size={colSize}\n />\n )}\n\n {!ignoredGridColumns.includes(\"description\") && (\n <ch-tabular-grid-column\n class=\"tabular-grid-column\"\n columnId=\"description\"\n columnName={componentLocale.objects.description}\n settingable={false}\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=\"modifiedOn\"\n columnName={componentLocale.objects.modifiedOn}\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=\"module\"\n columnName={componentLocale.objects.module}\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=\"localState\"\n columnName={componentLocale.objects.localState}\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=\"lastSynchronized\"\n columnName={componentLocale.objects.lastSynchronized}\n settingable={false}\n size={colSize}\n />\n )}\n\n {!ignoredGridColumns.includes(\"action\") && (\n <ch-tabular-grid-column\n class=\"tabular-grid-column\"\n columnId=\"action\"\n columnName={componentLocale.objects.action}\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=\"status\"\n columnName={componentLocale.objects.status}\n settingable={false}\n size={gridIsEmpty ? \"auto\" : \"100px\"}\n />\n )}\n </ch-tabular-grid-columnset>\n );\n};\n","@use \"../common/common.scss\" as *;\n@import \"../../common/styles.scss\";\n@import \"../../../../../node_modules/@genexus/mercury/dist/assets/scss/helpers.scss\";\n@import \"../../../../global/gx-ide-mixins.scss\";\n\n// header detail\n.header__details {\n grid-template-areas:\n \"detail-heading-gx . . .\"\n \"detail-genexus-server detail-knowledge-base detail-version detail-last-full-update\";\n}\n\n.detail__heading-genexus-server {\n grid-area: detail-heading-gx;\n}\n.detail__genexus-server {\n grid-area: detail-genexus-server;\n @extend %header-detail-start;\n}\n.detail__knowledge-base {\n grid-area: detail-knowledge-base;\n @extend %header-detail-common;\n}\n.detail__version {\n grid-area: detail-version;\n @extend %header-detail-end;\n}\n\n// filter\n.filter-container {\n container-type: inline-size;\n box-sizing: border-box;\n display: grid;\n column-gap: 12px;\n grid-template-areas:\n \"filter-primary filter-toggle-button filter-action-buttons\"\n \"filter-secondary . .\"\n \"comments comments comments\";\n grid-template-columns: minmax(0, max-content) max-content 1fr;\n}\n.filter {\n @extend %filter;\n}\n.filter-primary {\n grid-area: filter-primary;\n grid-template-columns: $filterControlInlineSize $filterControlInlineSize $filterControlInlineSize;\n}\n.filter-container > :nth-child(2) {\n grid-area: filter-toggle-button;\n}\n.filter-container > :nth-child(3) {\n grid-area: filter-action-buttons;\n justify-content: end;\n}\n.filter__toggle-secondary-filter-btn {\n grid-area: filter-toggle-button;\n}\n\n.filter__buttons {\n grid-area: filter-buttons;\n margin-inline-start: auto;\n}\n\n// secondary filter (hidden by default)\n.filter-secondary {\n display: grid;\n grid-template-rows: 0fr;\n grid-area: filter-secondary;\n transition: grid-template-rows var(--mer-timing--fast);\n}\n.filter-secondary--visible {\n grid-template-rows: 1fr;\n}\n.filter-secondary > div {\n @extend %filter;\n display: grid;\n overflow: hidden;\n font-size: 0; // WA Remove unwanted additional space\n grid-template-columns: repeat(3, $filterControlInlineSize);\n}\n\n.filter-secondary > div > .combo-box,\n.comments {\n margin-block-start: $filterRowGap;\n}\n.comments {\n grid-area: comments;\n}\n\n// - - - - - - - - - - - - - -\n// WA (WORK AROUNDS)\n// - - - - - - - - - - - - - -\n\n.input-comments-container {\n position: relative;\n}\n// ch-edit for comments WA's\n// Figma design for this component displays the textarea witout border, and with a little more line-height.\n// The following styles are a temporary WA that should be brouhgt to Mercury DS.\n.input-comments {\n --control__border-color: transparent;\n padding-block: 0 !important;\n padding-inline: 0 !important;\n --line-height-tight: 1.4;\n block-size: 100%;\n background-color: var(--mer-surface);\n transition:\n var(--mer-timing--super-fast) block-size,\n var(--mer-timing--super-fast) background-color,\n var(--mer-timing--super-fast) padding-block,\n var(--mer-timing--super-fast) padding-inline;\n}\n.input-comments:focus {\n position: absolute;\n block-size: $filterControlInlineSize;\n inline-size: 100%;\n z-index: 99;\n background-color: var(--mer-surface__elevation--01);\n padding-block: var(--control__padding-block) !important;\n padding-inline: var(--control__padding-inline) !important;\n}\n","// stencil\nimport {\n Component,\n Host,\n h,\n Prop,\n Element,\n State,\n Method,\n Watch\n} from \"@stencil/core\";\n\n// external libraries\nimport { MercuryBundles } from \"@genexus/mercury\";\nimport {\n ChEditCustomEvent,\n ComboBoxModel,\n TabularGridMarkingChangedEvent,\n TabularGridRowContextMenuEvent,\n TabularGridSelectionChangedEvent\n} from \"@genexus/chameleon-controls-library\";\n\n// local\nimport { Locale } from \"../../../../common/locale\";\nimport {\n GxOption,\n ItemsCheckedResult,\n ObjectType\n} from \"../../../../common/types\";\nimport clearGridSelection from \"../common/clear-grid-selection\";\n\nimport type {\n StateForFilter,\n StatusInternal,\n MessageData,\n ModifiedObjectData,\n CommitData,\n CommitCallback,\n ContextMenuCallback,\n LoadCallback,\n PendingItemsCheckedCallback,\n SelectCallback,\n ServerDetails,\n SourceType\n} from \"../common/types\";\n\nimport headerDetail, { headerTitle } from \"../common/header-renders\";\nimport { changesetToComboBoxModel } from \"./utilities/changeset-to-combo-box\";\nimport { foldersToComboBoxModel } from \"./utilities/folders-to-combo-box\";\nimport { typesToComboBoxItemModel } from \"./utilities/types-to-combo-box\";\nimport renderTabularGridRows, {\n renderTabularGridColumns\n} from \"../common/tabular-grid-render\";\n\nimport { CSS_SELECTORS as CLASSES, ALL_VALUE } from \"../common/constants\";\nimport ICONS from \"../common/constants\";\n\nconst FILTER_SECONDARY_CONTAINER_ID = \"filters-secondary-container\";\nconst FILTER_SECONDARY_BUTTON_ID = \"filter-toggle-button\";\n\nconst CSS_BUNDLES: MercuryBundles = [\n \"resets/box-sizing\",\n \"components/tabular-grid\",\n \"utils/form--full\",\n \"utils/layout\",\n \"utils/typography\",\n \"utils/spacing\",\n \"chameleon/scrollbar\"\n];\n\n@Component({\n tag: \"gx-ide-team-dev-commit\",\n styleUrl: \"commit.scss\",\n shadow: true,\n assetsDirs: [\"gx-ide-assets/team-dev-commit\"]\n})\nexport class GxIdeTeamDevCommit {\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 /**\n * The ComboBoxModel for \"Local State\" filter.\n */\n #localStatesComboBoxModel: { caption: string; value: StateForFilter }[];\n\n /**\n * Used to determine if pendingItemsCheckedCallback callback has to be\n * called or not. It should be ignored if the grid checkboxes state is\n * changed programmatically, by setting markRow to false once the object\n * has been successfully updated, for example.\n */\n #rowCheckedChangedByTheUser: boolean = true;\n\n @Element() el: HTMLGxIdeTeamDevCommitElement;\n\n /**\n * A reference to the tablar grid. Used to call methods.\n */\n #chGridPendingForUpdateEl!: HTMLChTabularGridElement;\n\n // sets\n\n /**\n * A set that holds the id's of the objects that have been updated already.\n */\n @State() alreadyCommitedObjectsIdsSet: Set<string> = new Set<string>([]);\n\n /**\n * A set that holds the ids of all the ignored objects. Used to quickly\n * determine if the selected rows belong to \"ignored\" or not. This\n * information is required for the ContextMenuCallback callback. This set\n * has to be updated on every loadCallback.\n */\n @State() ignoredIdsSet: Set<string> = new Set<string>([]);\n\n /**\n * A set that holds the id's of all the pending objects. Used to quickly\n * determine if the selected rows belong to \"pending\" or \"igonred\". This\n * information is required for the ContextMenuCallback callback. This set\n * has to be updated after every loadCallback.\n */\n @State() pendingIdsSet: Set<string> = new Set<string>([]);\n\n /**\n * A set that stores the marked state of each object cell. This is\n * necessary because filtering the grid causes marked cells to lose\n * their state.\n */\n @State() markedObjectsSet: Set<string> = new Set<string>([]);\n @Watch(\"markedObjectsSet\")\n markedObjectsSetChanged(newMarkedObjectsSet: Set<string>) {\n this.atLeastOneObjectIsChecked = newMarkedObjectsSet.size > 0;\n }\n\n // maps\n\n /**\n * A map that holds the current update objects states (\"inserted\" |\n * \"modified\" | \"modified-with-conflicts\" | \"deleted\" | \"updating\" |\n * \"update\")\n */\n @State() objectsStatusMap: Map<string, StatusInternal> = new Map();\n @Watch(\"objectsStatusMap\")\n objectsStatusMapChanged(newObjectsStatusMap: Map<string, StatusInternal>) {\n const someObjectIsUpdating = [...newObjectsStatusMap.entries()].find(\n ([, state]) => state === \"commiting\"\n );\n\n if (!someObjectIsUpdating) {\n this.commiting = false;\n }\n }\n\n /**\n * A map that holds object messages, after trying to commit ('info' |\n * 'success' | 'warning' | 'error')\n */\n @State() objectsMessagesDataMap: Map<string, MessageData[]> = new Map();\n\n // boolean\n\n /**\n * It holds a boolean indicating if at least one object from the\n * tabular-grid is checked, for merging.\n */\n @State() atLeastOneObjectIsChecked: boolean = false;\n\n /**\n * A boolean to indicate if the comments input has error or not.\n */\n @State() commentInputHasError: boolean = false;\n\n /**\n * Set to true when objects are being commited. This helps disabling\n * controls until all objects are done.\n */\n @State() commiting: boolean = false;\n\n /**\n * Hides or shows the filter secondary controls\n */\n @State() filterSecondaryIsHidden = true;\n\n /**\n * Indicates if any of the filter secondary controls have a condition\n * (have a value other than default \"All\"). This changes the filter\n * toggle button icon, from \"filter\" to \"filterWithConditions\".\n */\n @State() filterSecondaryHasConditions = false;\n\n /**\n * Used to display a loader. Set to true when loadCallback is called.\n */\n @State() loading: boolean = true;\n\n /**\n * Used to mark all the grid checkboxes, only on the first render.\n */\n @State() objectsRenderedAlready: boolean = false;\n\n // models\n\n /**\n * changeset options as ComboBoxModel\n */\n @State() changesetsComboBoxModel: ComboBoxModel;\n\n /**\n * categories options as ComboBoxModel\n */\n // @State() categoriesComboBoxModel: ComboBoxModel;\n\n /**\n * Pending objects after \"action\" filter\n */\n @State() pendingObjectsAfterFilter: ModifiedObjectData[] = [];\n\n /**\n * Ignored objects after \"action\" filter\n */\n @State() ignoredObjectsAfterFilter: ModifiedObjectData[] = [];\n\n /**\n * The ComboBoxModel for \"Types\" filter.\n */\n @State() typesComboBoxModel: ComboBoxModel = [];\n\n /**\n * All objects (\"pending for update\" and \"ignored objects\") before\n * \"state\" filter\n */\n @State() pendingAndIgnored: CommitData = {\n pendingForCommit: [],\n ignoredObjects: []\n };\n @Watch(\"pendingAndIgnored\")\n pendingAndIgnoredChanged() {\n this.#applyClientFilter();\n this.pendingIdsSet.clear();\n this.pendingAndIgnored.pendingForCommit?.forEach(pending => {\n this.pendingIdsSet.add(pending.id);\n });\n this.ignoredIdsSet.clear();\n this.pendingAndIgnored.ignoredObjects?.forEach(ignored => {\n this.ignoredIdsSet.add(ignored.id);\n });\n }\n\n // current values\n\n /**\n * Holds the current value for the commit \"comments\"\n */\n @State() commentsValue: string = \"\";\n\n /**\n * The current search filter value.\n */\n @State() searchValue: string = \"\";\n\n /**\n * Holds the current value for the \"type\" filter\n */\n @State() selectedType: string;\n\n /**\n * Holds the current value for the \"local state\" filter\n */\n @State() selectedState: StateForFilter = ALL_VALUE;\n\n /**\n * Holds the current value for the \"changeset\" filter\n */\n @State() selectedChangeset: string;\n\n /**\n * Holds the current value for the \"folder\" filter\n */\n @State() selectedFolder: string;\n\n /**\n * Holds the current value for the \"category\" filter\n */\n @State() selectedCategory: string;\n\n /**\n * folder options as ComboBoxModel\n */\n @State() foldersComboBoxModel: ComboBoxModel;\n\n // callbacks\n\n /**\n * Invoked when user starts the commit process\n */\n @Prop() readonly commitCallback: CommitCallback;\n\n /**\n * Invoked when user activates the context menu on any of the grids.\n */\n @Prop() readonly objectsContextMenuCallback!: ContextMenuCallback;\n\n /**\n * Invoked to return the list of data types loaded from file\n * or url.\n */\n @Prop() readonly loadCallback!: LoadCallback;\n\n /**\n * Invoked when user clicks in server url of Update From group.\n */\n @Prop() readonly openServerCallback!: () => Promise<void>;\n\n /**\n * Invoked to return information of a Font type of data.\n */\n @Prop() readonly pendingItemsCheckedCallback!: PendingItemsCheckedCallback;\n\n /**\n * Invoked when the user selects rows from the grid\n */\n @Prop() readonly selectCallback: SelectCallback;\n\n // models\n\n /**\n * \"types\" options for the filter.\n */\n @Prop() readonly types: ObjectType[];\n @Watch(\"types\")\n typesChanged(newTypes: ObjectType[]) {\n this.typesComboBoxModel = typesToComboBoxItemModel(newTypes);\n }\n\n /**\n * \"changeset\" options for the filter.\n */\n @Prop() readonly changeset: GxOption[];\n @Watch(\"changeset\")\n changesetChanged(newChangesetOptions: GxOption[]) {\n this.changesetsComboBoxModel =\n changesetToComboBoxModel(newChangesetOptions);\n }\n\n /**\n * \"folder\" options for the filter.\n */\n @Prop() readonly folders: GxOption[];\n @Watch(\"folders\")\n folderChanged(newFolderOptions: GxOption[]) {\n this.foldersComboBoxModel = foldersToComboBoxModel(newFolderOptions);\n }\n\n /**\n * \"category\" options for the filter.\n */\n // @Prop() readonly categories: GxOption[];\n // @Watch(\"categories\")\n // categoryChanged(newCategoryOptions: GxOption[]) {\n // this.categoriesComboBoxModel =\n // categoriesToComboBoxModel(newCategoryOptions);\n // }\n\n // boolean\n\n /**\n * If true, the \"Action\" column will display a button instead of a pill,\n * only when the action is\n */\n @Prop() readonly updatePillAsButton: boolean = false;\n\n /**\n * Information to show in Update From group.\n */\n @Prop() readonly serverDetails: ServerDetails;\n\n async componentWillLoad() {\n this.#componentLocale = await Locale.getComponentStrings(this.el);\n\n // Initiate \"actions\" combo box filter\n this.#localStatesComboBoxModel = [\n {\n caption: this.#componentLocale.states.all,\n value: ALL_VALUE\n },\n {\n caption: this.#componentLocale.states.inserted,\n value: \"inserted\"\n },\n {\n caption: this.#componentLocale.states.modified,\n value: \"modified\"\n },\n {\n caption: this.#componentLocale.states.conflicted,\n value: \"conflicted\"\n },\n {\n caption: this.#componentLocale.states.deleted,\n value: \"deleted\"\n }\n ];\n\n // intialize combo-box models\n\n this.typesComboBoxModel = typesToComboBoxItemModel(this.types);\n this.selectedType = this.typesComboBoxModel[0].value;\n\n this.selectedState = this.#localStatesComboBoxModel[0].value;\n\n this.changesetChanged(this.changeset);\n this.selectedChangeset =\n this.changesetsComboBoxModel.length > 0\n ? this.changesetsComboBoxModel[0].value\n : ALL_VALUE;\n\n this.folderChanged(this.folders);\n this.selectedFolder =\n this.foldersComboBoxModel && this.foldersComboBoxModel.length > 0\n ? this.foldersComboBoxModel[0].value\n : ALL_VALUE;\n\n // this.categoryChanged(this.categories);\n // this.selectedCategory =\n // this.categoriesComboBoxModel.length > 0\n // ? this.categoriesComboBoxModel[0].value\n // : ALL_VALUE;\n\n this.#evaluateSecondaryFilterHasConditions();\n }\n\n async componentDidLoad() {\n await this.#loadData();\n }\n\n /**\n * Used by the host to instruct the component to force a data reload in the grids.\n */\n @Method()\n async reload() {\n this.#loadData();\n }\n\n // commit related\n\n #commitCheckedClickedHandler = () => {\n this.#commitObjectsHandler([...this.markedObjectsSet]);\n };\n\n #commitSingleObject: (objectId: string) => () => void =\n objectId => async () => {\n const newobjectsStatusMap = new Map(this.objectsStatusMap);\n newobjectsStatusMap.set(objectId, \"commiting\");\n this.objectsStatusMap = newobjectsStatusMap;\n this.#commitObjectsHandler([objectId]);\n };\n\n #commitObjectsHandler = async (selection: string[]) => {\n if (this.commentsValue.length === 0) {\n // A comment is required to commit.\n this.commentInputHasError = true;\n return;\n }\n this.commentInputHasError = false;\n this.commiting = true;\n\n selection.forEach(itemToUpdate => {\n this.objectsStatusMap.set(itemToUpdate, \"commiting\");\n });\n\n const commitResult = await this.commitCallback(\n selection,\n this.commentsValue\n );\n\n commitResult.forEach(async objectResult => {\n const messages = objectResult.messages;\n if (messages.length) {\n this.objectsMessagesDataMap.set(objectResult.id, objectResult.messages);\n } else {\n // clear messages\n this.objectsMessagesDataMap.delete(objectResult.id);\n }\n if (objectResult.result === \"commited\") {\n this.alreadyCommitedObjectsIdsSet.add(objectResult.id);\n this.objectsStatusMap.set(objectResult.id, \"commited\");\n await this.#chGridPendingForUpdateEl.markRow(objectResult.id, false);\n } else {\n this.objectsStatusMap.set(objectResult.id, \"pending\");\n }\n });\n\n this.commiting = false;\n };\n\n // handlers\n\n #rowMarkingChangedHandler = async (\n event: CustomEvent<TabularGridMarkingChangedEvent>\n ) => {\n const markedRowsIds = event.detail.rowsId;\n this.markedObjectsSet = new Set(\n markedRowsIds.filter(\n markedObjectId => !this.alreadyCommitedObjectsIdsSet.has(markedObjectId)\n )\n );\n\n if (this.#rowCheckedChangedByTheUser) {\n this.#updatePendingCheckedItems(event);\n }\n };\n\n #rowSelectionChangedHandler = async (\n event: CustomEvent<TabularGridSelectionChangedEvent>\n ) => {\n const selectedRowsIds = event.detail.rowsId;\n const firstSelectedRowId = selectedRowsIds[0];\n const gridSource: SourceType = this.pendingIdsSet.has(firstSelectedRowId)\n ? \"pending\"\n : \"ignored\";\n\n const filteredSelectedRowsIds = clearGridSelection(\n gridSource,\n selectedRowsIds,\n this.pendingIdsSet,\n this.ignoredIdsSet,\n this.#chGridPendingForUpdateEl\n );\n\n await this.selectCallback(gridSource, filteredSelectedRowsIds);\n };\n\n #commentsInputHandler = (event: ChEditCustomEvent<string> | InputEvent) => {\n this.commentsValue = event.detail as string;\n if (this.commentsValue.length && this.commentInputHasError) {\n // remove error style and tooltip\n this.commentInputHasError = false;\n }\n };\n\n // filter related\n\n #applyClientFilter = () => {\n this.pendingObjectsAfterFilter = this.#filteredObjects(\n this.pendingAndIgnored.pendingForCommit\n );\n this.ignoredObjectsAfterFilter = this.#filteredObjects(\n this.pendingAndIgnored.ignoredObjects\n );\n };\n\n #filteredObjects = (objects: ModifiedObjectData[]): ModifiedObjectData[] => {\n let filtered = objects;\n\n // name or description\n if (this.searchValue.length) {\n filtered = filtered.filter(object => {\n const nameFiltered = object.name\n .toLowerCase()\n .includes(this.searchValue.toLowerCase());\n\n const descriptionFiltered = object.description\n .toLowerCase()\n .includes(this.searchValue.toLowerCase());\n\n return nameFiltered || descriptionFiltered;\n });\n }\n\n // status\n if (this.selectedState && this.selectedState !== ALL_VALUE) {\n filtered = filtered.filter(object => object.state === this.selectedState);\n }\n\n return filtered;\n };\n\n #evaluateSecondaryFilterHasConditions = () => {\n if (\n // this.selectedChangeset !== ALL_VALUE ||\n this.selectedFolder !== ALL_VALUE\n // this.selectedCategory !== ALL_VALUE\n ) {\n this.filterSecondaryHasConditions = true;\n } else {\n this.filterSecondaryHasConditions = false;\n }\n };\n\n #toggleFiltersHandler = () => {\n this.filterSecondaryIsHidden = !this.filterSecondaryIsHidden;\n };\n\n #searchInputHandler = (event: ChEditCustomEvent<string> | InputEvent) => {\n this.searchValue = (event.detail as string).trim();\n this.#applyClientFilter();\n };\n\n #typeChangedHandler = (event: CustomEvent<string> | InputEvent) => {\n this.selectedType = event.detail as string;\n this.#loadData();\n };\n\n #stateChangedHandler = (event: CustomEvent<string> | InputEvent) => {\n this.selectedState = event.detail as StateForFilter;\n this.#applyClientFilter();\n };\n\n // changeset is a WIP.\n // #changesetChangedHandler = (event: CustomEvent<string> | InputEvent) => {\n // this.selectedChangeset = event.detail as string;\n // this.#loadData();\n // this.#evaluateSecondaryFilterHasConditions();\n // };\n\n #folderChanged = (event: CustomEvent<string> | InputEvent) => {\n this.selectedFolder = event.detail as string;\n this.#loadData();\n this.#evaluateSecondaryFilterHasConditions();\n };\n\n // #categoryChangedHandler = (event: CustomEvent<string> | InputEvent) => {\n // this.selectedCategory = event.detail as string;\n // this.#loadData();\n // this.#evaluateSecondaryFilterHasConditions();\n // };\n\n #onRowContextMenuHandler =\n () => async (ev: CustomEvent<TabularGridRowContextMenuEvent>) => {\n ev.preventDefault();\n ev.stopPropagation();\n\n const selectedRowsIds =\n await this.#chGridPendingForUpdateEl.getSelectedRows();\n\n const firstSelectedRowId = selectedRowsIds[0];\n const gridSource = this.pendingIdsSet.has(firstSelectedRowId)\n ? \"pending\"\n : \"ignored\";\n\n await this.objectsContextMenuCallback(gridSource, {\n selection: selectedRowsIds,\n clientX: ev.detail.clientX,\n clientY: ev.detail.clientY\n });\n };\n\n // other methods\n\n #updatePendingCheckedItems = async (\n event: CustomEvent<TabularGridMarkingChangedEvent>\n ) => {\n this.#rowCheckedChangedByTheUser = false;\n const addedRowsIds = event.detail.addedRowsId;\n const removedRowsId = event.detail.removedRowsId;\n\n const pendingItemCheckedResult = await this.pendingItemsCheckedCallback({\n itemsChecked: addedRowsIds,\n itemsUnchecked: removedRowsId\n });\n\n if (pendingItemCheckedResult === undefined) {\n // undo check/uncheck\n await this.#revertPendingCommitsCheckboxes(addedRowsIds, removedRowsId);\n } else {\n await this.#togglePendingCommitsCheckboxes(pendingItemCheckedResult);\n }\n this.#rowCheckedChangedByTheUser = true;\n };\n\n #setInitialObjectsStatus = (): void => {\n if (this.objectsRenderedAlready) {\n return;\n }\n this.pendingAndIgnored.pendingForCommit.forEach(pendingObject => {\n const status: StatusInternal = \"pending\";\n this.objectsStatusMap.set(pendingObject.id, status);\n });\n this.pendingAndIgnored.ignoredObjects.forEach(ignoredObject => {\n const status: StatusInternal = \"ignored\";\n this.objectsStatusMap.set(ignoredObject.id, status);\n });\n };\n\n #loadData = async (): Promise<void> => {\n this.loading = true;\n this.pendingAndIgnored = await this.loadCallback({\n search: this.searchValue,\n type: this.selectedType,\n changeset: this.selectedChangeset,\n folder: this.selectedFolder,\n category: this.selectedCategory\n });\n\n this.#setInitialObjectsStatus();\n this.loading = false;\n // Is is required to mark/check all objects after loadCallback.\n this.#markPendingObjects();\n };\n\n /**\n * Marks all pending objects that have not been committed yet.\n *\n * Iterates through all pending object IDs and adds them to the marked objects set\n * if they are not already in the committed objects set. This effectively identifies\n * and marks all the pending objects that still need to be processed.\n **/\n #markPendingObjects = () => {\n for (const pendingId of this.pendingIdsSet) {\n if (!this.alreadyCommitedObjectsIdsSet.has(pendingId)) {\n this.markedObjectsSet = new Set([...this.markedObjectsSet, pendingId]);\n }\n }\n };\n\n // render methods\n\n #revertPendingCommitsCheckboxes = async (\n addedRowsIds: string[],\n removedRowsId: string[]\n ) => {\n if (this.#chGridPendingForUpdateEl) {\n for (const rowId of addedRowsIds) {\n await this.#chGridPendingForUpdateEl.markRow(rowId, false);\n }\n for (const rowId of removedRowsId) {\n await this.#chGridPendingForUpdateEl.markRow(rowId, true);\n }\n }\n };\n\n #togglePendingCommitsCheckboxes = async (\n itemsToToggle: ItemsCheckedResult\n ) => {\n if (this.#chGridPendingForUpdateEl) {\n const itemsToCheck: string[] = itemsToToggle.itemsToCheck;\n const itemsToUncheck: string[] = itemsToToggle.itemsToUncheck;\n // check\n for (const rowId of itemsToCheck) {\n await this.#chGridPendingForUpdateEl.markRow(rowId, true);\n }\n // uncheck\n for (const rowId of itemsToUncheck) {\n await this.#chGridPendingForUpdateEl.markRow(rowId, false);\n }\n }\n };\n\n render() {\n const disableControls = this.commiting || this.loading;\n const gridIsEmpty =\n this.pendingObjectsAfterFilter.length === 0 &&\n this.ignoredObjectsAfterFilter.length === 0;\n\n const filterIcon = this.filterSecondaryHasConditions\n ? ICONS.filterWithConditions\n : ICONS.filter;\n\n const commitButtonEnabled =\n this.atLeastOneObjectIsChecked && this.commentsValue.length > 0;\n\n return (\n <Host class=\"widget\">\n <ch-theme model={CSS_BUNDLES}></ch-theme>\n <section class=\"section\">\n <header class={{ [CLASSES.HEADER]: true }}>\n <div\n // header details\n class={{ [CLASSES.HEADER_DETAILS]: true }}\n >\n {headerTitle(this.#componentLocale.commitDetail.title)}\n\n {\n // genexus server\n headerDetail(\n \"link\",\n this.#componentLocale.commitDetail.genexusServer,\n this.serverDetails ? this.serverDetails.serverUrl : \"\",\n this.openServerCallback,\n \"detail__genexus-server\"\n )\n }\n\n {\n // knowledge base\n headerDetail(\n \"text\",\n this.#componentLocale.commitDetail.knowledgeBase,\n this.serverDetails ? this.serverDetails.kbName : \"\",\n undefined,\n \"detail__knowledge-base\"\n )\n }\n\n {\n // version\n headerDetail(\n \"text\",\n this.#componentLocale.commitDetail.version,\n this.serverDetails ? this.serverDetails.versionName : \"\",\n undefined,\n \"detail__version\"\n )\n }\n </div>\n </header>\n\n <div class=\"filter-container spacing-body-inline\">\n <div class={{ [CLASSES.FILTER]: true, \"filter-primary\": true }}>\n <ch-edit\n // searchch-edit\n class=\"input filter__combo\"\n disabled={disableControls}\n startImgSrc={ICONS.search}\n accessibleName={\n this.#componentLocale.filter.searchAccessibleName\n }\n placeholder={this.#componentLocale.filter.searchPlaceholder}\n type=\"search\"\n onInput={this.#searchInputHandler}\n ></ch-edit>\n\n <ch-combo-box-render\n // types\n class=\"combo-box filter__combo\"\n disabled={disableControls}\n model={this.typesComboBoxModel}\n value={this.selectedType}\n accessibleName={this.#componentLocale.filter.typeAccesibleName}\n placeholder={this.#componentLocale.filter.typePlaceholder}\n onInput={this.#typeChangedHandler}\n ></ch-combo-box-render>\n\n <ch-combo-box-render\n // local states\n class=\"combo-box filter__combo\"\n disabled={disableControls}\n model={this.#localStatesComboBoxModel}\n value={this.selectedState}\n onInput={this.#stateChangedHandler}\n accessibleName={\n this.#componentLocale.filter.localStateAccesibleName\n }\n placeholder={this.#componentLocale.filter.localStatePlaceholder}\n ></ch-combo-box-render>\n </div>\n\n <button\n // toggle secondary filter button\n id={FILTER_SECONDARY_BUTTON_ID}\n class=\"button-secondary button-icon-only\"\n disabled={disableControls}\n aria-label={this.#componentLocale.filter.secondaryFilterAriaLabel}\n aria-expanded={this.filterSecondaryIsHidden ? \"false\" : \"true\"}\n aria-controls={FILTER_SECONDARY_CONTAINER_ID}\n onClick={this.#toggleFiltersHandler}\n title={this.#componentLocale.filter.secondaryFilterAriaLabel}\n >\n <ch-image class=\"icon-md\" src={filterIcon}></ch-image>\n </button>\n\n <div class=\"buttons-spacer\">\n <button\n // reload button\n class=\"button-secondary button-icon-and-text\"\n disabled={disableControls}\n onClick={this.#loadData}\n >\n <ch-image class=\"icon-md\" src={ICONS.refresh}></ch-image>\n {this.#componentLocale.filter.reload}\n </button>\n\n <button\n // commit button\n class=\"button-primary\"\n disabled={!commitButtonEnabled || disableControls}\n onClick={this.#commitCheckedClickedHandler}\n >\n {this.#componentLocale.filter.commit}\n </button>\n </div>\n\n <div\n // secondary filter\n id={FILTER_SECONDARY_CONTAINER_ID}\n aria-labelledby={FILTER_SECONDARY_BUTTON_ID}\n class={{\n [CLASSES.FILTER]: true,\n \"filter-secondary\": true,\n \"filter-secondary--visible\": !this.filterSecondaryIsHidden\n }}\n inert={this.filterSecondaryIsHidden}\n hidden={this.filterSecondaryIsHidden}\n >\n <div>\n {/* \n // changeset is a WIP.\n <ch-combo-box-render\n // changeset\n class=\"combo-box\"\n disabled={disableControls}\n model={this.changesetsComboBoxModel}\n value={this.selectedChangeset}\n onInput={this.#changesetChangedHandler}\n accessibleName={\n this.#componentLocale.filter.changesetAccesibleName\n }\n placeholder={\n this.#componentLocale.filter.changesetPlaceholder\n }\n ></ch-combo-box-render> */}\n\n <ch-combo-box-render\n // folder\n class=\"combo-box\"\n disabled={disableControls}\n model={this.foldersComboBoxModel}\n value={this.selectedFolder}\n onInput={this.#folderChanged}\n accessibleName={\n this.#componentLocale.filter.folderAccesibleName\n }\n placeholder={this.#componentLocale.filter.folderPlaceholder}\n ></ch-combo-box-render>\n\n {/* <ch-combo-box-render\n // category\n class=\"combo-box\"\n disabled={disableControls}\n model={this.categoriesComboBoxModel}\n value={this.selectedCategory}\n onInput={this.#categoryChangedHandler}\n accessibleName={\n this.#componentLocale.filter.categoryPlaceholder\n }\n placeholder={this.#componentLocale.filter.categoryPlaceholder}\n ></ch-combo-box-render> */}\n </div>\n </div>\n\n <ch-edit\n // commit comments\n class=\"input comments\"\n multiline={true}\n autoGrow={true}\n placeholder={this.#componentLocale.commitCommentPlaceholder}\n onInput={this.#commentsInputHandler}\n ></ch-edit>\n </div>\n\n <div class={CLASSES.MAIN}>\n {!this.loading ? (\n <ch-tabular-grid\n class={{\n \"tabular-grid\": true,\n \"objects-tabular-grid\": true,\n \"disabled-custom-selector\": this.commiting,\n \"empty-result\": gridIsEmpty\n }}\n keyboardNavigationMode=\"focus\"\n rowSelectionMode=\"multiple\"\n onSelectionChanged={this.#rowSelectionChangedHandler}\n onRowMarkingChanged={this.#rowMarkingChangedHandler}\n onRowContextMenu={this.#onRowContextMenuHandler()}\n ref={(el: HTMLChTabularGridElement) =>\n (this.#chGridPendingForUpdateEl = el)\n }\n >\n {renderTabularGridColumns(\n [\"action\"],\n gridIsEmpty,\n this.#componentLocale\n )}\n\n {!gridIsEmpty\n ? [\n <ch-tabular-grid-rowset class=\"tabular-grid-rowset\">\n <ch-tabular-grid-rowset-legend class=\"tabular-grid-rowset-legend\">\n {this.#componentLocale.objects.pendingCommits}\n </ch-tabular-grid-rowset-legend>\n {renderTabularGridRows(\n \"pending\",\n this.pendingObjectsAfterFilter,\n this.ignoredObjectsAfterFilter,\n this.alreadyCommitedObjectsIdsSet,\n this.markedObjectsSet,\n this.objectsMessagesDataMap,\n this.updatePillAsButton,\n this.#commitSingleObject,\n this.objectsStatusMap,\n this.searchValue,\n this.#componentLocale\n )}\n </ch-tabular-grid-rowset>,\n\n <ch-tabular-grid-rowset class=\"tabular-grid-rowset\">\n <ch-tabular-grid-rowset-legend class=\"tabular-grid-rowset-legend\">\n {this.#componentLocale.objects.ignoredObjects}\n </ch-tabular-grid-rowset-legend>\n {renderTabularGridRows(\n \"ignored\",\n this.pendingObjectsAfterFilter,\n this.ignoredObjectsAfterFilter,\n this.alreadyCommitedObjectsIdsSet,\n this.markedObjectsSet,\n this.objectsMessagesDataMap,\n this.updatePillAsButton,\n this.#commitSingleObject,\n this.objectsStatusMap,\n this.searchValue,\n this.#componentLocale\n )}\n </ch-tabular-grid-rowset>\n ]\n : null}\n\n <ch-tabular-grid-rowset class=\"tabular-grid-rowset\">\n {gridIsEmpty && (\n <ch-tabular-grid-rowset-empty>\n <gx-ide-empty-state\n class=\"empty-state\"\n isAnimated\n stateIconSrc={ICONS.filter}\n stateTitle=\"No object matched your filter\"\n ></gx-ide-empty-state>\n </ch-tabular-grid-rowset-empty>\n )}\n </ch-tabular-grid-rowset>\n </ch-tabular-grid>\n ) : (\n <gx-ide-loader\n cancelLabel={this.#componentLocale.loader.cancelLabel}\n loaderTitle={this.#componentLocale.loader.title}\n description={this.#componentLocale.loader.description}\n show\n class=\"loader\"\n ></gx-ide-loader>\n )}\n </div>\n </section>\n </Host>\n );\n }\n}\n"],"version":3}
|
|
1
|
+
{"file":"gx-ide-team-dev-commit.js","mappings":"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","names":["GxIdeTeamDevCommit","CLASSES"],"sources":["src/components/team-dev/version-control/common/clear-grid-selection.ts","src/components/team-dev/version-control/common/header-renders.tsx","src/components/team-dev/version-control/commit/utilities/changeset-to-combo-box.ts","src/components/team-dev/version-control/commit/utilities/folders-to-combo-box.ts","src/components/team-dev/version-control/commit/utilities/types-to-combo-box.ts","src/components/team-dev/version-control/commit/commit.scss?tag=gx-ide-team-dev-commit&encapsulation=shadow","src/components/team-dev/version-control/commit/commit.tsx"],"sourcesContent":["import { SourceType } from \"./types\";\n\n/**\n * Filters a grid selection to only include rows from the given source (\"pending\" or \"ignored\").\n * Rows from the other category are unselected.\n *\n * @param {SourceType} gridSource - The source category of the selection.\n * @param {string[]} selectedRowsIds - The currently selected row IDs.\n * @returns {string[]} Filtered row IDs belonging to the specified source.\n */\nconst clearGridSelection = (\n gridSource: SourceType,\n selectedRowsIds: string[],\n pendingIdsSet: Set<string>,\n ignoredIdsSet: Set<string>,\n gridReference: HTMLChTabularGridElement\n): string[] => {\n let filteredSelectedRowsIds: string[] = [];\n if (selectedRowsIds.length > 1 && gridSource === \"pending\") {\n selectedRowsIds.forEach(async selectedRowId => {\n if (ignoredIdsSet.has(selectedRowId)) {\n await gridReference.selectRow(selectedRowId, false);\n } else {\n filteredSelectedRowsIds.push(selectedRowId);\n }\n });\n } else if (selectedRowsIds.length > 1 && gridSource === \"ignored\") {\n selectedRowsIds.forEach(async selectedRowId => {\n if (pendingIdsSet.has(selectedRowId)) {\n await gridReference.selectRow(selectedRowId, false);\n } else {\n filteredSelectedRowsIds.push(selectedRowId);\n }\n });\n } else {\n filteredSelectedRowsIds = selectedRowsIds;\n }\n return filteredSelectedRowsIds;\n};\n\nexport default clearGridSelection;\n","import { h, JSX } from \"@stencil/core\";\n\nconst headerDetail = (\n type: \"text\" | \"link\" = \"text\",\n caption: string,\n description: string,\n callback?: () => void,\n cssClass?: string\n): JSX.Element => {\n return (\n <div class={{ [cssClass]: true, \"field field-block\": true }}>\n <span class=\"detail__label body-semi-bold-s\">{caption}</span>\n {type === \"text\" ? (\n <p class=\"body-regular-s\">{description}</p>\n ) : (\n <button class=\"detail__link body-regular-s\" onClick={callback}>\n {description}\n </button>\n )}\n </div>\n );\n};\nexport default headerDetail;\n\nexport const headerTitle = (caption: string, cssClass?: string) => {\n return (\n <h2\n class={{ [cssClass]: true, \"header__title subtitle-semi-bold-s\": true }}\n >\n {caption}\n </h2>\n );\n};\n\nexport const headerSubtitle = (caption: string, cssClass?: string) => {\n return (\n <p\n class={{ [cssClass]: true, \"detail__title subtitle-semi-bold-xs\": true }}\n >\n {caption}\n </p>\n );\n};\n","import { ComboBoxModel } from \"@genexus/chameleon-controls-library\";\nimport { GxOption } from \"../../../../../components\";\n\nexport const changesetToComboBoxModel = (\n changesetModel: GxOption[]\n): ComboBoxModel => {\n if (!changesetModel) return [];\n\n return changesetModel.map(changeset => ({\n value: changeset.id,\n caption:\n changeset.name === \"All\"\n ? \"All Changesets\"\n : changeset.label || changeset.name || \"\"\n }));\n};\n","import { ComboBoxModel } from \"@genexus/chameleon-controls-library\";\nimport { GxOption } from \"../../../../../components\";\n\nexport const foldersToComboBoxModel = (\n foldersModel: GxOption[]\n): ComboBoxModel =>\n foldersModel.map(folder => ({\n value: folder.name,\n caption:\n folder.name === \"All\" ? \"All Modules\" : folder.label || folder.name || \"\"\n }));\n","import { ComboBoxModel } from \"@genexus/chameleon-controls-library\";\nimport { ObjectType } from \"../../../../../components\";\n\nexport const typesToComboBoxItemModel = (\n objectTypeModel: ObjectType[]\n): ComboBoxModel =>\n objectTypeModel.map(objectType => ({\n value: objectType.id,\n caption: objectType.name === \"All\" ? \"All Types\" : objectType.name || \"\",\n startImgSrc: objectType.icon\n }));\n","@use \"../common/common.scss\" as *;\n@import \"../../common/styles.scss\";\n@import \"../../../../../node_modules/@genexus/mercury/dist/assets/scss/helpers.scss\";\n@import \"../../../../global/gx-ide-mixins.scss\";\n\n// header detail\n.header__details {\n grid-template-areas:\n \"detail-heading-gx . . .\"\n \"detail-genexus-server detail-knowledge-base detail-version detail-last-full-update\";\n}\n\n.detail__heading-genexus-server {\n grid-area: detail-heading-gx;\n}\n.detail__genexus-server {\n grid-area: detail-genexus-server;\n @extend %header-detail-start;\n}\n.detail__knowledge-base {\n grid-area: detail-knowledge-base;\n @extend %header-detail-common;\n}\n.detail__version {\n grid-area: detail-version;\n @extend %header-detail-end;\n}\n\n// filter\n.filter-container {\n container-type: inline-size;\n box-sizing: border-box;\n display: grid;\n column-gap: 12px;\n grid-template-areas:\n \"filter-primary filter-toggle-button filter-action-buttons\"\n \"filter-secondary . .\"\n \"comments comments comments\";\n grid-template-columns: minmax(0, max-content) max-content 1fr;\n}\n.filter {\n @extend %filter;\n}\n.filter-primary {\n grid-area: filter-primary;\n grid-template-columns: $filterControlInlineSize $filterControlInlineSize $filterControlInlineSize;\n}\n.filter-container > :nth-child(2) {\n grid-area: filter-toggle-button;\n}\n.filter-container > :nth-child(3) {\n grid-area: filter-action-buttons;\n justify-content: end;\n}\n.filter__toggle-secondary-filter-btn {\n grid-area: filter-toggle-button;\n}\n\n.filter__buttons {\n grid-area: filter-buttons;\n margin-inline-start: auto;\n}\n\n// secondary filter (hidden by default)\n.filter-secondary {\n display: grid;\n grid-template-rows: 0fr;\n grid-area: filter-secondary;\n transition: grid-template-rows var(--mer-timing--fast);\n}\n.filter-secondary--visible {\n grid-template-rows: 1fr;\n}\n.filter-secondary > div {\n @extend %filter;\n display: grid;\n overflow: hidden;\n font-size: 0; // WA Remove unwanted additional space\n grid-template-columns: repeat(3, $filterControlInlineSize);\n}\n\n.filter-secondary > div > .combo-box,\n.comments {\n margin-block-start: $filterRowGap;\n}\n.comments {\n grid-area: comments;\n}\n\n// - - - - - - - - - - - - - -\n// WA (WORK AROUNDS)\n// - - - - - - - - - - - - - -\n\n.input-comments-container {\n position: relative;\n}\n// ch-edit for comments WA's\n// Figma design for this component displays the textarea witout border, and with a little more line-height.\n// The following styles are a temporary WA that should be brouhgt to Mercury DS.\n.input-comments {\n --control__border-color: transparent;\n padding-block: 0 !important;\n padding-inline: 0 !important;\n --line-height-tight: 1.4;\n block-size: 100%;\n background-color: var(--mer-surface);\n transition:\n var(--mer-timing--super-fast) block-size,\n var(--mer-timing--super-fast) background-color,\n var(--mer-timing--super-fast) padding-block,\n var(--mer-timing--super-fast) padding-inline;\n}\n.input-comments:focus {\n position: absolute;\n block-size: $filterControlInlineSize;\n inline-size: 100%;\n z-index: 99;\n background-color: var(--mer-surface__elevation--01);\n padding-block: var(--control__padding-block) !important;\n padding-inline: var(--control__padding-inline) !important;\n}\n","// stencil\nimport {\n Component,\n Host,\n h,\n Prop,\n Element,\n State,\n Method,\n Watch\n} from \"@stencil/core\";\n\n// external libraries\nimport { MercuryBundles } from \"@genexus/mercury\";\nimport {\n ChEditCustomEvent,\n ComboBoxModel,\n TabularGridColumnSelectorClickedEvent,\n TabularGridColumnSortChangedEvent,\n TabularGridMarkingChangedEvent,\n TabularGridRowContextMenuEvent,\n TabularGridSelectionChangedEvent\n} from \"@genexus/chameleon-controls-library\";\n\n// local\nimport { Locale } from \"../../../../common/locale\";\nimport {\n GxOption,\n ItemsCheckedResult,\n ObjectType\n} from \"../../../../common/types\";\nimport clearGridSelection from \"../common/clear-grid-selection\";\nimport areSetsEqual from \"../common/are-sets-equal\";\nimport uncheckIgnoredObjects from \"../common/uncheck-ignored\";\n\nimport type {\n StateForFilter,\n StatusInternal,\n MessageData,\n ModifiedObjectData,\n CommitData,\n CommitCallback,\n ContextMenuCallback,\n LoadCallback,\n PendingItemsCheckedCallback,\n SelectCallback,\n ServerDetails,\n SourceType\n} from \"../common/types\";\n\nimport headerDetail, { headerTitle } from \"../common/header-renders\";\nimport { changesetToComboBoxModel } from \"./utilities/changeset-to-combo-box\";\nimport { foldersToComboBoxModel } from \"./utilities/folders-to-combo-box\";\nimport { typesToComboBoxItemModel } from \"./utilities/types-to-combo-box\";\nimport renderTabularGridRows, {\n renderTabularGridColumns,\n COLUMNS_IDS\n} from \"../common/tabular-grid-render\";\nimport sortTabularGridColumn, {\n type SortTabularGridColumnDataType\n} from \"../../../../common/chameleon/tabular-grid-column-sort\";\n\nimport { CSS_SELECTORS as CLASSES, ALL_VALUE } from \"../common/constants\";\nimport ICONS from \"../common/constants\";\n\nconst FILTER_SECONDARY_CONTAINER_ID = \"filters-secondary-container\";\nconst FILTER_SECONDARY_BUTTON_ID = \"filter-toggle-button\";\n\nconst CSS_BUNDLES: MercuryBundles = [\n \"resets/box-sizing\",\n \"components/tabular-grid\",\n \"utils/form--full\",\n \"utils/layout\",\n \"utils/typography\",\n \"utils/spacing\",\n \"chameleon/scrollbar\"\n];\n\n@Component({\n tag: \"gx-ide-team-dev-commit\",\n styleUrl: \"commit.scss\",\n shadow: true,\n assetsDirs: [\"gx-ide-assets/team-dev-commit\"]\n})\nexport class GxIdeTeamDevCommit {\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 /**\n * The ComboBoxModel for \"Local State\" filter.\n */\n #localStatesComboBoxModel: { caption: string; value: StateForFilter }[];\n\n /**\n * Used to determine if pendingItemsCheckedCallback callback has to be\n * called or not. It should be ignored if the grid checkboxes state is\n * changed programmatically, by setting markRow to false once the object\n * has been successfully updated, for example.\n */\n #rowCheckedChangedByTheUser: boolean = true;\n\n @Element() el: HTMLGxIdeTeamDevCommitElement;\n\n /**\n * A reference to the tablar grid. Used to call methods.\n */\n #chGridPendingForUpdateEl!: HTMLChTabularGridElement;\n\n // sets\n\n /**\n * A boolean that indicates if all the pending objects, have been commited\n * already.\n */\n @State() allPendingAreCommited: boolean = false;\n\n /**\n * A set that holds the id's of the objects that have been commited already.\n */\n @State() alreadyCommitedObjectsIdsSet: Set<string> = new Set<string>([]);\n @Watch(\"alreadyCommitedObjectsIdsSet\")\n alreadyCommitedObjectsIdsSetChanged(newCommitedObjectsIdsSet: Set<string>) {\n const pendingIdsSetAndCommitedIdsSetAreEqual = areSetsEqual(\n newCommitedObjectsIdsSet,\n this.pendingIdsSet\n );\n\n this.allPendingAreCommited =\n pendingIdsSetAndCommitedIdsSetAreEqual && this.pendingIdsSet.size > 0;\n }\n\n /**\n * A set that holds the ids of all the ignored objects. Used to quickly\n * determine if the selected rows belong to \"ignored\" or not. This\n * information is required for the ContextMenuCallback. This set\n * has to be updated on every loadCallback.\n */\n @State() ignoredIdsSet: Set<string> = new Set<string>([]);\n\n /**\n * A set that holds the id's of all the pending objects. Used to quickly\n * determine if the selected rows belong to \"pending\" or \"ignored\". This\n * information is required for the ContextMenuCallback. This set\n * has to be updated after every loadCallback.\n */\n @State() pendingIdsSet: Set<string> = new Set<string>([]);\n\n /**\n * A set that stores the marked state of each row. This is\n * required because filtering the grid causes marked cells to lose\n * their marked state.\n */\n @State() markedObjectsSet: Set<string> = new Set<string>([]);\n @Watch(\"markedObjectsSet\")\n markedObjectsSetChanged(newMarkedObjectsSet: Set<string>) {\n this.atLeastOneObjectIsChecked = newMarkedObjectsSet.size > 0;\n }\n\n // maps\n\n /**\n * A map that holds the current state of every row (\"inserted\" |\n * \"modified\" | \"modified-with-conflicts\" | \"deleted\" | \"updating\" |\n * \"update\")\n */\n @State() objectsStatusMap: Map<string, StatusInternal> = new Map();\n @Watch(\"objectsStatusMap\")\n objectsStatusMapChanged(newObjectsStatusMap: Map<string, StatusInternal>) {\n const someObjectIsUpdating = [...newObjectsStatusMap.entries()].find(\n ([, state]) => state === \"commiting\"\n );\n\n if (!someObjectIsUpdating) {\n this.commiting = false;\n }\n }\n\n /**\n * A map that holds object messages, after trying to commit ('info' |\n * 'success' | 'warning' | 'error')\n */\n @State() objectsMessagesDataMap: Map<string, MessageData[]> = new Map();\n\n // boolean\n\n /**\n * It holds a boolean indicating if at least one object from the\n * tabular-grid is checked, for merging.\n */\n @State() atLeastOneObjectIsChecked: boolean = false;\n\n /**\n * A boolean to indicate if the comments input has error or not.\n */\n @State() commentInputHasError: boolean = false;\n\n /**\n * Set to true when objects are being commited. This helps disabling\n * controls until all objects are done.\n */\n @State() commiting: boolean = false;\n\n /**\n * Hides or shows the filter secondary controls\n */\n @State() filterSecondaryIsHidden = true;\n\n /**\n * Indicates if any of the filter secondary controls have a condition\n * (have a value other than default \"All\"). This changes the filter\n * toggle button icon, from \"filter\" to \"filterWithConditions\".\n */\n @State() filterSecondaryHasConditions = false;\n\n /**\n * Used to display a loader. Set to true when loadCallback is called.\n */\n @State() loading: boolean = true;\n\n // models\n\n /**\n * changeset options as ComboBoxModel\n */\n @State() changesetsComboBoxModel: ComboBoxModel;\n\n /**\n * categories options as ComboBoxModel\n */\n // @State() categoriesComboBoxModel: ComboBoxModel;\n\n /**\n * Pending objects after \"action\" filter\n */\n @State() pendingObjectsAfterFilter: ModifiedObjectData[] = [];\n\n /**\n * Ignored objects after \"action\" filter\n */\n @State() ignoredObjectsAfterFilter: ModifiedObjectData[] = [];\n\n /**\n * The ComboBoxModel for \"Types\" filter.\n */\n @State() typesComboBoxModel: ComboBoxModel = [];\n\n /**\n * All objects (\"pending for update\" and \"ignored objects\") before\n * \"state\" filter\n */\n @State() pendingAndIgnored: CommitData = {\n pendingForCommit: [],\n ignoredObjects: []\n };\n @Watch(\"pendingAndIgnored\")\n pendingAndIgnoredChanged(newPendingAndIgnored: CommitData) {\n // clear previous state\n this.pendingIdsSet.clear(); // before pendingIdsSet.add\n this.ignoredIdsSet.clear(); // before ignoredIdsSet.add\n this.objectsMessagesDataMap = new Map();\n this.alreadyCommitedObjectsIdsSet = new Set();\n this.commentInputHasError = false;\n this.markedObjectsSet = new Set(); // before #markPendingObjects\n\n newPendingAndIgnored.pendingForCommit?.forEach(pending => {\n this.pendingIdsSet.add(pending.id);\n });\n newPendingAndIgnored.ignoredObjects?.forEach(ignored => {\n this.ignoredIdsSet.add(ignored.id);\n });\n\n this.#markPendingObjects(); // after pendingIdsSet.add and ignoredIdsSet.add\n this.#setInitialObjectsStatus(); // after pendingIdsSet.add and ignoredIdsSet.add\n\n this.#applyClientFilter();\n }\n\n // current values\n\n /**\n * Holds the current value for the commit \"comments\"\n */\n @State() commentsValue: string = \"\";\n\n /**\n * The current search filter value.\n */\n @State() searchValue: string = \"\";\n\n /**\n * Holds the current value for the \"type\" filter\n */\n @State() selectedType: string;\n\n /**\n * Holds the current value for the \"local state\" filter\n */\n @State() selectedState: StateForFilter = ALL_VALUE;\n\n /**\n * Holds the current value for the \"changeset\" filter\n */\n @State() selectedChangeset: string;\n\n /**\n * Holds the current value for the \"folder\" filter\n */\n @State() selectedFolder: string;\n\n /**\n * Holds the current value for the \"category\" filter\n */\n @State() selectedCategory: string;\n\n /**\n * folder options as ComboBoxModel\n */\n @State() foldersComboBoxModel: ComboBoxModel;\n\n // callbacks\n\n /**\n * Invoked when user starts the commit process\n */\n @Prop() readonly commitCallback: CommitCallback;\n\n /**\n * Invoked when user activates the context menu on any of the grids.\n */\n @Prop() readonly objectsContextMenuCallback!: ContextMenuCallback;\n\n /**\n * Invoked to return the list of data types loaded from file\n * or url.\n */\n @Prop() readonly loadCallback!: LoadCallback;\n\n /**\n * Invoked when user clicks in server url of Update From group.\n */\n @Prop() readonly openServerCallback!: () => Promise<void>;\n\n /**\n * Invoked to return information of a Font type of data.\n */\n @Prop() readonly pendingItemsCheckedCallback!: PendingItemsCheckedCallback;\n\n /**\n * Invoked when the user selects rows from the grid\n */\n @Prop() readonly selectCallback: SelectCallback;\n\n // models\n\n /**\n * \"types\" options for the filter.\n */\n @Prop() readonly types: ObjectType[];\n @Watch(\"types\")\n typesChanged(newTypes: ObjectType[]) {\n this.typesComboBoxModel = typesToComboBoxItemModel(newTypes);\n }\n\n /**\n * \"changeset\" options for the filter.\n */\n @Prop() readonly changeset: GxOption[];\n @Watch(\"changeset\")\n changesetChanged(newChangesetOptions: GxOption[]) {\n this.changesetsComboBoxModel =\n changesetToComboBoxModel(newChangesetOptions);\n }\n\n /**\n * \"folder\" options for the filter.\n */\n @Prop() readonly folders: GxOption[];\n @Watch(\"folders\")\n folderChanged(newFolderOptions: GxOption[]) {\n this.foldersComboBoxModel = foldersToComboBoxModel(newFolderOptions);\n }\n\n /**\n * \"category\" options for the filter.\n */\n // @Prop() readonly categories: GxOption[];\n // @Watch(\"categories\")\n // categoryChanged(newCategoryOptions: GxOption[]) {\n // this.categoriesComboBoxModel =\n // categoriesToComboBoxModel(newCategoryOptions);\n // }\n\n // boolean\n\n /**\n * If true, the \"Action\" column will display a button instead of a pill,\n * only when the action is\n */\n @Prop() readonly updatePillAsButton: boolean = false;\n\n /**\n * Information to show in Update From group.\n */\n @Prop() readonly serverDetails: ServerDetails;\n\n async componentWillLoad() {\n this.#componentLocale = await Locale.getComponentStrings(this.el);\n\n // Initiate \"actions\" combo box filter\n this.#localStatesComboBoxModel = [\n {\n caption: this.#componentLocale.states.all,\n value: ALL_VALUE\n },\n {\n caption: this.#componentLocale.states.inserted,\n value: \"inserted\"\n },\n {\n caption: this.#componentLocale.states.modified,\n value: \"modified\"\n },\n {\n caption: this.#componentLocale.states.conflicted,\n value: \"conflicted\"\n },\n {\n caption: this.#componentLocale.states.deleted,\n value: \"deleted\"\n }\n ];\n\n // intialize combo-box models\n\n this.typesComboBoxModel = typesToComboBoxItemModel(this.types);\n this.selectedType = this.typesComboBoxModel[0].value;\n\n this.selectedState = this.#localStatesComboBoxModel[0].value;\n\n this.changesetChanged(this.changeset);\n this.selectedChangeset =\n this.changesetsComboBoxModel.length > 0\n ? this.changesetsComboBoxModel[0].value\n : ALL_VALUE;\n\n this.folderChanged(this.folders);\n this.selectedFolder =\n this.foldersComboBoxModel && this.foldersComboBoxModel.length > 0\n ? this.foldersComboBoxModel[0].value\n : ALL_VALUE;\n\n // this.categoryChanged(this.categories);\n // this.selectedCategory =\n // this.categoriesComboBoxModel.length > 0\n // ? this.categoriesComboBoxModel[0].value\n // : ALL_VALUE;\n\n this.#evaluateSecondaryFilterHasConditions();\n }\n\n async componentDidLoad() {\n await this.#loadData();\n\n // initialize \"allPendingAreCommited\"\n this.alreadyCommitedObjectsIdsSetChanged(this.alreadyCommitedObjectsIdsSet);\n }\n\n /**\n * Used by the host to instruct the component to force a data reload in the grids.\n */\n @Method()\n async reload() {\n await this.#loadData();\n }\n\n // commit related\n\n #commitCheckedClickedHandler = () => {\n this.#commitObjectsHandler([...this.markedObjectsSet]);\n };\n\n #commitSingleObject: (objectId: string) => () => void =\n objectId => async () => {\n const newobjectsStatusMap = new Map(this.objectsStatusMap);\n newobjectsStatusMap.set(objectId, \"commiting\");\n this.objectsStatusMap = newobjectsStatusMap;\n this.#commitObjectsHandler([objectId]);\n };\n\n #commitObjectsHandler = async (selection: string[]) => {\n if (this.commentsValue.length === 0) {\n // A comment is required to commit.\n this.commentInputHasError = true;\n return;\n }\n this.commentInputHasError = false;\n this.commiting = true;\n\n selection.forEach(itemToUpdate => {\n this.objectsStatusMap.set(itemToUpdate, \"commiting\");\n });\n\n const commitResult = await this.commitCallback(\n selection,\n this.commentsValue\n );\n\n commitResult.forEach(async objectResult => {\n const messages = objectResult.messages;\n if (messages.length) {\n this.objectsMessagesDataMap.set(objectResult.id, objectResult.messages);\n } else {\n // clear messages\n this.objectsMessagesDataMap.delete(objectResult.id);\n }\n if (objectResult.result === \"commited\") {\n // Apply a new Set to \"alreadyCommitedObjectsIdsSet\" in order for the Watch to fire.\n this.alreadyCommitedObjectsIdsSet = new Set([\n ...this.alreadyCommitedObjectsIdsSet,\n objectResult.id\n ]);\n this.objectsStatusMap.set(objectResult.id, \"commited\");\n await this.#chGridPendingForUpdateEl.markRow(objectResult.id, false);\n } else {\n this.objectsStatusMap.set(objectResult.id, \"pending\");\n }\n });\n\n this.commiting = false;\n };\n\n // handlers\n\n #rowMarkingChangedHandler = async (\n event: CustomEvent<TabularGridMarkingChangedEvent>\n ) => {\n const markedRowsIds = event.detail.rowsId;\n\n this.markedObjectsSet = new Set(\n markedRowsIds.filter(\n markedObjectId => !this.alreadyCommitedObjectsIdsSet.has(markedObjectId)\n )\n );\n\n if (this.#rowCheckedChangedByTheUser) {\n this.#updatePendingCheckedItems(event);\n }\n };\n\n #rowSelectionChangedHandler = async (\n event: CustomEvent<TabularGridSelectionChangedEvent>\n ) => {\n const selectedRowsIds = event.detail.rowsId;\n const firstSelectedRowId = selectedRowsIds[0];\n const gridSource: SourceType = this.pendingIdsSet.has(firstSelectedRowId)\n ? \"pending\"\n : \"ignored\";\n\n const filteredSelectedRowsIds = clearGridSelection(\n gridSource,\n selectedRowsIds,\n this.pendingIdsSet,\n this.ignoredIdsSet,\n this.#chGridPendingForUpdateEl\n );\n\n await this.selectCallback(gridSource, filteredSelectedRowsIds);\n };\n\n #commentsInputHandler = (event: ChEditCustomEvent<string> | InputEvent) => {\n this.commentsValue = event.detail as string;\n if (this.commentsValue.length && this.commentInputHasError) {\n // remove error style and tooltip\n this.commentInputHasError = false;\n }\n };\n\n // filter related\n\n #applyClientFilter = () => {\n this.pendingObjectsAfterFilter = this.#filteredObjects(\n this.pendingAndIgnored.pendingForCommit\n );\n this.ignoredObjectsAfterFilter = this.#filteredObjects(\n this.pendingAndIgnored.ignoredObjects\n );\n };\n\n #filteredObjects = (objects: ModifiedObjectData[]): ModifiedObjectData[] => {\n let filtered = objects;\n\n // name or description\n if (this.searchValue.length) {\n filtered = filtered.filter(object => {\n const nameFiltered = object.name\n .toLowerCase()\n .includes(this.searchValue.toLowerCase());\n\n const descriptionFiltered = object.description\n .toLowerCase()\n .includes(this.searchValue.toLowerCase());\n\n return nameFiltered || descriptionFiltered;\n });\n }\n\n // status\n if (this.selectedState && this.selectedState !== ALL_VALUE) {\n filtered = filtered.filter(object => object.state === this.selectedState);\n }\n\n return filtered;\n };\n\n #evaluateSecondaryFilterHasConditions = () => {\n if (\n // this.selectedChangeset !== ALL_VALUE ||\n this.selectedFolder !== ALL_VALUE\n // this.selectedCategory !== ALL_VALUE\n ) {\n this.filterSecondaryHasConditions = true;\n } else {\n this.filterSecondaryHasConditions = false;\n }\n };\n\n #toggleFiltersHandler = () => {\n this.filterSecondaryIsHidden = !this.filterSecondaryIsHidden;\n };\n\n #searchInputHandler = (event: ChEditCustomEvent<string> | InputEvent) => {\n this.searchValue = (event.detail as string).trim();\n this.#applyClientFilter();\n };\n\n #typeChangedHandler = (event: CustomEvent<string> | InputEvent) => {\n this.selectedType = event.detail as string;\n this.#loadData();\n };\n\n #stateChangedHandler = (event: CustomEvent<string> | InputEvent) => {\n this.selectedState = event.detail as StateForFilter;\n this.#applyClientFilter();\n };\n\n // changeset is a WIP.\n // #changesetChangedHandler = (event: CustomEvent<string> | InputEvent) => {\n // this.selectedChangeset = event.detail as string;\n // this.#loadData();\n // this.#evaluateSecondaryFilterHasConditions();\n // };\n\n #folderChanged = (event: CustomEvent<string> | InputEvent) => {\n this.selectedFolder = event.detail as string;\n this.#loadData();\n this.#evaluateSecondaryFilterHasConditions();\n };\n\n // #categoryChangedHandler = (event: CustomEvent<string> | InputEvent) => {\n // this.selectedCategory = event.detail as string;\n // this.#loadData();\n // this.#evaluateSecondaryFilterHasConditions();\n // };\n\n #onRowContextMenuHandler =\n () => async (ev: CustomEvent<TabularGridRowContextMenuEvent>) => {\n ev.preventDefault();\n ev.stopPropagation();\n\n const selectedRowsIds =\n await this.#chGridPendingForUpdateEl.getSelectedRows();\n\n const firstSelectedRowId = selectedRowsIds[0];\n const gridSource = this.pendingIdsSet.has(firstSelectedRowId)\n ? \"pending\"\n : \"ignored\";\n\n await this.objectsContextMenuCallback(gridSource, {\n selection: selectedRowsIds,\n clientX: ev.detail.clientX,\n clientY: ev.detail.clientY\n });\n };\n\n // other methods\n\n #updatePendingCheckedItems = async (\n event: CustomEvent<TabularGridMarkingChangedEvent>\n ) => {\n this.#rowCheckedChangedByTheUser = false;\n const addedRowsIds = event.detail.addedRowsId;\n const removedRowsId = event.detail.removedRowsId;\n\n const pendingItemCheckedResult = await this.pendingItemsCheckedCallback({\n itemsChecked: addedRowsIds,\n itemsUnchecked: removedRowsId\n });\n\n if (pendingItemCheckedResult === undefined) {\n // undo check/uncheck\n await this.#revertPendingCommitsCheckboxes(addedRowsIds, removedRowsId);\n } else {\n await this.#togglePendingCommitsCheckboxes(pendingItemCheckedResult);\n }\n this.#rowCheckedChangedByTheUser = true;\n };\n\n #setInitialObjectsStatus = (): void => {\n this.pendingAndIgnored.pendingForCommit.forEach(pendingObject => {\n const status: StatusInternal = \"pending\";\n this.objectsStatusMap.set(pendingObject.id, status);\n });\n this.pendingAndIgnored.ignoredObjects.forEach(ignoredObject => {\n const status: StatusInternal = \"ignored\";\n this.objectsStatusMap.set(ignoredObject.id, status);\n });\n };\n\n #loadData = async (): Promise<void> => {\n this.loading = true;\n\n this.pendingAndIgnored = await this.loadCallback({\n search: this.searchValue,\n type: this.selectedType,\n changeset: this.selectedChangeset,\n folder: this.selectedFolder,\n category: this.selectedCategory\n });\n\n this.loading = false;\n // Is is required to mark/check all objects after loadCallback.\n // this.#markPendingObjects();\n };\n\n /**\n * Marks all pending objects that have not been committed yet.\n *\n * Iterates through all pending object IDs and adds them to the marked objects set\n * if they are not already in the committed objects set. This effectively identifies\n * and marks all the pending objects that still need to be processed.\n **/\n #markPendingObjects = () => {\n for (const pendingId of this.pendingIdsSet) {\n if (!this.alreadyCommitedObjectsIdsSet.has(pendingId)) {\n this.markedObjectsSet = new Set([...this.markedObjectsSet, pendingId]);\n }\n }\n };\n\n // render methods\n\n #revertPendingCommitsCheckboxes = async (\n addedRowsIds: string[],\n removedRowsId: string[]\n ) => {\n if (this.#chGridPendingForUpdateEl) {\n for (const rowId of addedRowsIds) {\n await this.#chGridPendingForUpdateEl.markRow(rowId, false);\n }\n for (const rowId of removedRowsId) {\n await this.#chGridPendingForUpdateEl.markRow(rowId, true);\n }\n }\n };\n\n #togglePendingCommitsCheckboxes = async (\n itemsToToggle: ItemsCheckedResult\n ) => {\n if (this.#chGridPendingForUpdateEl) {\n const itemsToCheck: string[] = itemsToToggle.itemsToCheck;\n const itemsToUncheck: string[] = itemsToToggle.itemsToUncheck;\n // check\n for (const rowId of itemsToCheck) {\n await this.#chGridPendingForUpdateEl.markRow(rowId, true);\n }\n // uncheck\n for (const rowId of itemsToUncheck) {\n await this.#chGridPendingForUpdateEl.markRow(rowId, false);\n }\n }\n };\n\n #sortTabularGridColumnCallback = (\n e: CustomEvent<TabularGridColumnSortChangedEvent>\n ) => {\n const columnId = e.detail.columnId;\n\n let objectProperty;\n let dateType: SortTabularGridColumnDataType = \"string\";\n if (columnId === COLUMNS_IDS.type) {\n objectProperty = \"name\"; // the type name\n dateType = \"object\";\n } else if (\n columnId === COLUMNS_IDS.modifiedOn ||\n columnId === COLUMNS_IDS.lastSynchronized\n ) {\n dateType = \"dateString\";\n }\n this.pendingObjectsAfterFilter = [\n ...sortTabularGridColumn(\n e,\n this.pendingObjectsAfterFilter,\n dateType,\n objectProperty\n )\n ];\n this.ignoredObjectsAfterFilter = [\n ...sortTabularGridColumn(\n e,\n this.ignoredObjectsAfterFilter,\n dateType,\n objectProperty\n )\n ];\n };\n\n /**\n * WA: Ignored objects must always remain unchecked.\n * Because `tabular-grid` selects all rows when the checkbox column is toggled,\n * we need to manually unselect the ignored IDs. // TODO: Move this function\n * to common\n */\n #columnSelectorClickedCallback = async (\n e: CustomEvent<TabularGridColumnSelectorClickedEvent>\n ) => {\n const allRowsChecked = e.detail;\n if (allRowsChecked) {\n const markedRowsIds =\n await this.#chGridPendingForUpdateEl.getMarkedRows();\n const ignoredMarkedRowsIds = markedRowsIds.filter(rowId => {\n return this.ignoredIdsSet.has(rowId);\n });\n if (ignoredMarkedRowsIds.length) {\n uncheckIgnoredObjects(\n ignoredMarkedRowsIds,\n this.#chGridPendingForUpdateEl\n );\n }\n }\n };\n\n render() {\n const disableControls = this.commiting || this.loading;\n const gridIsEmpty =\n this.pendingObjectsAfterFilter.length === 0 &&\n this.ignoredObjectsAfterFilter.length === 0;\n\n const filterIcon = this.filterSecondaryHasConditions\n ? ICONS.filterWithConditions\n : ICONS.filter;\n\n const commitButtonEnabled =\n this.atLeastOneObjectIsChecked &&\n this.commentsValue.length > 0 &&\n !this.allPendingAreCommited;\n\n return (\n <Host class=\"widget\">\n <ch-theme model={CSS_BUNDLES}></ch-theme>\n <section class=\"section\">\n <header class={{ [CLASSES.HEADER]: true }}>\n <div\n // header details\n class={{ [CLASSES.HEADER_DETAILS]: true }}\n >\n {headerTitle(this.#componentLocale.commitDetail.title)}\n\n {\n // genexus server\n headerDetail(\n \"link\",\n this.#componentLocale.commitDetail.genexusServer,\n this.serverDetails ? this.serverDetails.serverUrl : \"\",\n this.openServerCallback,\n \"detail__genexus-server\"\n )\n }\n\n {\n // knowledge base\n headerDetail(\n \"text\",\n this.#componentLocale.commitDetail.knowledgeBase,\n this.serverDetails ? this.serverDetails.kbName : \"\",\n undefined,\n \"detail__knowledge-base\"\n )\n }\n\n {\n // version\n headerDetail(\n \"text\",\n this.#componentLocale.commitDetail.version,\n this.serverDetails ? this.serverDetails.versionName : \"\",\n undefined,\n \"detail__version\"\n )\n }\n </div>\n </header>\n\n <div class=\"filter-container spacing-body-inline\">\n <div class={{ [CLASSES.FILTER]: true, \"filter-primary\": true }}>\n <ch-edit\n // searchch-edit\n class=\"input filter__combo\"\n disabled={disableControls}\n startImgSrc={ICONS.search}\n accessibleName={\n this.#componentLocale.filter.searchAccessibleName\n }\n placeholder={this.#componentLocale.filter.searchPlaceholder}\n type=\"search\"\n onInput={this.#searchInputHandler}\n ></ch-edit>\n\n <ch-combo-box-render\n // types\n class=\"combo-box filter__combo\"\n disabled={disableControls}\n model={this.typesComboBoxModel}\n value={this.selectedType}\n accessibleName={this.#componentLocale.filter.typeAccesibleName}\n placeholder={this.#componentLocale.filter.typePlaceholder}\n onInput={this.#typeChangedHandler}\n ></ch-combo-box-render>\n\n <ch-combo-box-render\n // local states\n class=\"combo-box filter__combo\"\n disabled={disableControls}\n model={this.#localStatesComboBoxModel}\n value={this.selectedState}\n onInput={this.#stateChangedHandler}\n accessibleName={\n this.#componentLocale.filter.localStateAccesibleName\n }\n placeholder={this.#componentLocale.filter.localStatePlaceholder}\n ></ch-combo-box-render>\n </div>\n\n <button\n // toggle secondary filter button\n id={FILTER_SECONDARY_BUTTON_ID}\n class=\"button-secondary button-icon-only\"\n disabled={disableControls}\n aria-label={this.#componentLocale.filter.secondaryFilterAriaLabel}\n aria-expanded={this.filterSecondaryIsHidden ? \"false\" : \"true\"}\n aria-controls={FILTER_SECONDARY_CONTAINER_ID}\n onClick={this.#toggleFiltersHandler}\n title={this.#componentLocale.filter.secondaryFilterAriaLabel}\n >\n <ch-image class=\"icon-md\" src={filterIcon}></ch-image>\n </button>\n\n <div class=\"buttons-spacer\">\n <button\n // reload button\n class=\"button-secondary button-icon-and-text\"\n disabled={disableControls}\n onClick={this.#loadData}\n >\n <ch-image class=\"icon-md\" src={ICONS.refresh}></ch-image>\n {this.#componentLocale.filter.reload}\n </button>\n\n <button\n // commit button\n class=\"button-primary\"\n disabled={!commitButtonEnabled || disableControls}\n onClick={this.#commitCheckedClickedHandler}\n >\n {this.#componentLocale.filter.commit}\n </button>\n </div>\n\n <div\n // secondary filter\n id={FILTER_SECONDARY_CONTAINER_ID}\n aria-labelledby={FILTER_SECONDARY_BUTTON_ID}\n class={{\n [CLASSES.FILTER]: true,\n \"filter-secondary\": true,\n \"filter-secondary--visible\": !this.filterSecondaryIsHidden\n }}\n inert={this.filterSecondaryIsHidden}\n hidden={this.filterSecondaryIsHidden}\n >\n <div>\n {/* \n // changeset is a WIP.\n <ch-combo-box-render\n // changeset\n class=\"combo-box\"\n disabled={disableControls}\n model={this.changesetsComboBoxModel}\n value={this.selectedChangeset}\n onInput={this.#changesetChangedHandler}\n accessibleName={\n this.#componentLocale.filter.changesetAccesibleName\n }\n placeholder={\n this.#componentLocale.filter.changesetPlaceholder\n }\n ></ch-combo-box-render> */}\n\n <ch-combo-box-render\n // folder\n class=\"combo-box\"\n disabled={disableControls}\n model={this.foldersComboBoxModel}\n value={this.selectedFolder}\n onInput={this.#folderChanged}\n accessibleName={\n this.#componentLocale.filter.folderAccesibleName\n }\n placeholder={this.#componentLocale.filter.folderPlaceholder}\n ></ch-combo-box-render>\n\n {/* <ch-combo-box-render\n // category\n class=\"combo-box\"\n disabled={disableControls}\n model={this.categoriesComboBoxModel}\n value={this.selectedCategory}\n onInput={this.#categoryChangedHandler}\n accessibleName={\n this.#componentLocale.filter.categoryPlaceholder\n }\n placeholder={this.#componentLocale.filter.categoryPlaceholder}\n ></ch-combo-box-render> */}\n </div>\n </div>\n\n <ch-edit\n // commit comments\n class=\"input comments\"\n multiline={true}\n autoGrow={true}\n placeholder={this.#componentLocale.commitCommentPlaceholder}\n onInput={this.#commentsInputHandler}\n ></ch-edit>\n </div>\n\n <div class={CLASSES.MAIN}>\n {!this.loading ? (\n <ch-tabular-grid\n class={{\n \"tabular-grid\": true,\n \"objects-tabular-grid\": true,\n \"disabled-custom-selector\": this.commiting,\n \"empty-result\": gridIsEmpty\n }}\n keyboardNavigationMode=\"focus\"\n rowSelectionMode=\"multiple\"\n onSelectionChanged={this.#rowSelectionChangedHandler}\n onRowMarkingChanged={this.#rowMarkingChangedHandler}\n onRowContextMenu={this.#onRowContextMenuHandler()}\n ref={(el: HTMLChTabularGridElement) =>\n (this.#chGridPendingForUpdateEl = el)\n }\n >\n {renderTabularGridColumns(\n [\"action\"],\n gridIsEmpty,\n this.#sortTabularGridColumnCallback,\n this.#columnSelectorClickedCallback,\n this.#componentLocale,\n !this.allPendingAreCommited\n )}\n\n {!gridIsEmpty\n ? [\n <ch-tabular-grid-rowset class=\"tabular-grid-rowset\">\n <ch-tabular-grid-rowset-legend class=\"tabular-grid-rowset-legend\">\n {this.#componentLocale.objects.pendingCommits}\n </ch-tabular-grid-rowset-legend>\n {renderTabularGridRows(\n \"pending\",\n this.pendingObjectsAfterFilter,\n this.ignoredObjectsAfterFilter,\n this.alreadyCommitedObjectsIdsSet,\n this.markedObjectsSet,\n this.objectsMessagesDataMap,\n this.updatePillAsButton,\n this.#commitSingleObject,\n this.objectsStatusMap,\n this.searchValue,\n this.#componentLocale\n )}\n </ch-tabular-grid-rowset>,\n\n <ch-tabular-grid-rowset class=\"tabular-grid-rowset\">\n <ch-tabular-grid-rowset-legend class=\"tabular-grid-rowset-legend\">\n {this.#componentLocale.objects.ignoredObjects}\n </ch-tabular-grid-rowset-legend>\n {renderTabularGridRows(\n \"ignored\",\n this.pendingObjectsAfterFilter,\n this.ignoredObjectsAfterFilter,\n this.alreadyCommitedObjectsIdsSet,\n this.markedObjectsSet,\n this.objectsMessagesDataMap,\n this.updatePillAsButton,\n this.#commitSingleObject,\n this.objectsStatusMap,\n this.searchValue,\n this.#componentLocale\n )}\n </ch-tabular-grid-rowset>\n ]\n : null}\n\n <ch-tabular-grid-rowset class=\"tabular-grid-rowset\">\n {gridIsEmpty && (\n <ch-tabular-grid-rowset-empty>\n <gx-ide-empty-state\n class=\"empty-state\"\n isAnimated\n stateIconSrc={ICONS.filter}\n stateTitle=\"No object matched your filter\"\n ></gx-ide-empty-state>\n </ch-tabular-grid-rowset-empty>\n )}\n </ch-tabular-grid-rowset>\n </ch-tabular-grid>\n ) : (\n <gx-ide-loader\n cancelLabel={this.#componentLocale.loader.cancelLabel}\n loaderTitle={this.#componentLocale.loader.title}\n description={this.#componentLocale.loader.description}\n show\n class=\"loader\"\n ></gx-ide-loader>\n )}\n </div>\n </section>\n </Host>\n );\n }\n}\n"],"version":3}
|
|
@@ -1,9 +1,12 @@
|
|
|
1
1
|
import { proxyCustomElement, HTMLElement, h, Host } from '@stencil/core/internal/client';
|
|
2
2
|
import { g as getIconPath } from './MERCURY_ASSETS.js';
|
|
3
3
|
import { L as Locale } from './locale.js';
|
|
4
|
+
import { u as uncheckIgnoredObjects, a as areSetsEqual } from './uncheck-ignored.js';
|
|
4
5
|
import { r as renderObjectTypeWithIcon } from './utilities.js';
|
|
5
6
|
import { f as formatDate } from './helpers.js';
|
|
6
7
|
import { c as config } from './config.js';
|
|
8
|
+
import { C as COLUMNS_IDS } from './tabular-grid-render.js';
|
|
9
|
+
import { s as sortTabularGridColumn } from './tabular-grid-column-sort.js';
|
|
7
10
|
import { d as defineCustomElement$3 } from './gx-ide-empty-state2.js';
|
|
8
11
|
import { d as defineCustomElement$2 } from './ide-loader.js';
|
|
9
12
|
|
|
@@ -13,7 +16,7 @@ const mapObjectTypeToComboBoxItemModel = (objectTypeModel) => objectTypeModel.ma
|
|
|
13
16
|
startImgSrc: objectType.icon
|
|
14
17
|
}));
|
|
15
18
|
|
|
16
|
-
const updateCss = ".custom-icon-text-wrapper {\n display: flex;\n align-items: center;\n gap: 10px;\n}\n\n/*Gx Ide*/\n/*@container queries*/\n/* hiChar styles\nFound on /common/helpers.tsx hiChar function is used to add a span/class to every character that matches a search value. It is used to help the user see why the filter results are filtered. The span/class on the characters are useless without proper styling.\n*/\n:host {\n --pill-border-radius: 12px;\n --pill-padding-inline: 8px;\n --pill-padding-block: 2px;\n --pill-font-size: var(--font-size-body-s);\n display: grid;\n block-size: 100%;\n overflow: auto;\n grid-template-rows: max-content max-content 1fr;\n}\n\n.detail__version, .detail__knowledge-base {\n padding-inline: 24px;\n border-inline-end: 1px solid var(--mer-border-color__on-elevation--01);\n}\n\n.detail__genexus-server {\n padding-inline-end: 24px;\n border-inline-end: 1px solid var(--mer-border-color__on-elevation--01);\n}\n\n.detail__last-full-update {\n padding-inline-start: 24px;\n}\n\n.section {\n display: contents;\n}\n\n.header {\n display: grid;\n grid-template-columns: 1fr max-content;\n}\n\n.header__detail {\n display: grid;\n row-gap: var(--mer-spacing--md);\n grid-auto-columns: max-content;\n grid-auto-rows: max-content;\n grid-template-areas: \"detail-heading-gx . . .\" \"detail-genexus-server detail-knowledge-base detail-version detail-last-full-update\";\n}\n\n.detail__label {\n color: var(--mer-color__neutral-gray--400);\n}\n\n.detail__heading-genexus-server {\n grid-area: detail-heading-gx;\n}\n\n.detail__genexus-server {\n grid-area: detail-genexus-server;\n}\n.detail__genexus-server > a {\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n display: inline-block;\n}\n\n.detail__link {\n align-items: start;\n color: var(--mer-text__primary);\n text-decoration: underline;\n}\n.detail__link:hover {\n color: var(--mer-text__primary--hover);\n}\n.detail__link:active {\n color: var(--mer-text__primary--active);\n}\n\n.detail__knowledge-base {\n grid-area: detail-knowledge-base;\n}\n\n.detail__version {\n grid-area: detail-version;\n}\n\n.detail__last-full-update {\n grid-area: detail-last-full-update;\n}\n\n.filter-container {\n container-type: inline-size;\n box-sizing: border-box;\n}\n\n.filter {\n display: grid;\n margin-block-start: var(--mer-spacing--lg);\n grid-template-areas: \"filter-search filter-types filter-actions filter-kb-properties filter-buttons\";\n grid-template-columns: 200px 200px 200px max-content 1fr;\n gap: 12px;\n}\n\n@container (max-width: 1100px) {\n .filter-container > .filter {\n grid-template-columns: 200px 200px 200px 1fr;\n grid-template-areas: \"filter-search filter-types filter-actions filter-buttons\" \"filter-kb-properties . . .\";\n grid-auto-rows: max-content;\n }\n}\n@container (max-width: 900px) {\n .filter-container > .filter {\n grid-template-columns: 1fr 1fr 1fr;\n grid-template-areas: \"filter-search filter-types filter-actions\" \"filter-kb-properties filter-buttons filter-buttons\";\n grid-auto-rows: max-content;\n }\n}\n.filter__search {\n grid-area: filter-search;\n}\n\n.filter__types {\n grid-area: filter-types;\n}\n\n.filter__actions {\n grid-area: filter-actions;\n}\n\n.filter__kb-properties {\n grid-area: filter-kb-properties;\n}\n\n.filter__buttons {\n margin-inline-start: auto;\n grid-area: filter-buttons;\n}\n\n.main {\n position: relative;\n display: grid;\n overflow: auto;\n}\n\n.loader {\n position: relative;\n inline-size: 100%;\n block-size: 100%;\n inset-block-start: 0;\n}\n\n.tabular-grid {\n border-radius: 4px;\n overflow: hidden;\n}\n\n.empty-state {\n block-size: 100%;\n}\n\n.loader {\n --elevation-background-color: var(--mer-surface__elevation--01);\n}\n\n.messages-list {\n margin: 0;\n padding: 0;\n list-style: none;\n max-inline-size: 800px;\n padding: 8px 0;\n list-style-type: none;\n display: flex;\n flex-direction: column;\n gap: var(--mer-spacing--3xs);\n}\n\n.message-description {\n line-height: 1.5;\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.message-icon {\n flex-shrink: 0;\n}\n\n.tabular-grid.empty-result::part(main) {\n overflow: hidden;\n}\n\n.input-comments-container {\n position: relative;\n}\n\n.input-comments {\n --control__border-color: transparent;\n padding-block: 0 !important;\n padding-inline: 0 !important;\n --line-height-tight: 1.4;\n block-size: 100%;\n background-color: var(--mer-surface);\n transition: var(--mer-timing--super-fast) block-size, var(--mer-timing--super-fast) background-color, var(--mer-timing--super-fast) padding-block, var(--mer-timing--super-fast) padding-inline;\n}\n\n.input-comments:focus {\n position: absolute;\n block-size: 200px;\n inline-size: 100%;\n z-index: 99;\n background-color: var(--mer-surface__elevation--01);\n padding-block: var(--control__padding-block) !important;\n padding-inline: var(--control__padding-inline) !important;\n}\n\nch-tabular-grid-cell.tabular-grid-cell::part(actions-icon) {\n background-size: contain;\n margin-inline-end: 0;\n --icon-path: var(--icon__gemini-tools_show-more-vertical_neutral--enabled);\n cursor: pointer;\n}\nch-tabular-grid-cell.tabular-grid-cell::part(actions-icon):hover {\n --icon-path: var(--icon__gemini-tools_show-more-vertical_neutral--hover);\n}\nch-tabular-grid-cell.tabular-grid-cell::part(actions-icon):active {\n --icon-path: var(--icon__gemini-tools_show-more-vertical_neutral--active);\n}\n\n.tabular-grid-row-actions::part(main),\n.property-grid-row-actions::part(main) {\n gap: 0 !important;\n}\n\n.tabular-grid-row-actions > button {\n justify-content: start;\n}\n\n.pill {\n --pill-background-color: transparent;\n --pill-color: transparent;\n --pill-border-color: transparent;\n background-color: var(--pill-background-color);\n color: var(--pill-color);\n border: 1px solid var(--pill-border-color);\n inline-size: 100%;\n padding: var(--pill-padding-block) var(--pill-padding-inline);\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: var(--pill-border-radius);\n position: relative;\n font-weight: var(--font-weight-semi-bold);\n}\n.pill--update, .pill--pending {\n --pill-background-color: var();\n --pill-color: var(--mer-color__neutral-gray--400);\n --pill-border-color: var();\n}\n.pill--to-merge-marked {\n --pill-background-color: var();\n --pill-color: var(--mer-border-color__primary);\n --pill-border-color: var();\n}\n.pill--ignored {\n --pill-background-color: var(--mer-surface__elevation--02);\n --pill-color: var(--mer-text__on-disabled);\n --pill-border-color: var(--mer-border-color__primary--disabled);\n}\n.pill--pending {\n --pill-background-color: var(--mer-color__tinted-primary--8);\n --pill-color: var(--mer-border-color__primary);\n --pill-border-color: var(--mer-color__tinted-primary--50);\n}\n.pill--warning {\n --pill-background-color: var(--mer-color__tinted-yellow--5);\n --pill-color: var(--mer-border-color__warning);\n --pill-border-color: var(--mer-color__tinted-yellow--60);\n}\n.pill--error {\n --pill-background-color: var(--mer-color__tinted-red--5);\n --pill-color: var(--mer-border-color__error);\n --pill-border-color: var(--mer-color__tinted-red--60);\n}\n.pill--updated {\n --pill-background-color: var(--mer-color__tinted-green--5);\n --pill-color: var(--mer-border-color__success);\n --pill-border-color: var(--mer-color__tinted-green--60);\n}\n.pill--transitioning {\n --pill-color: transparent;\n}\n\n.updating-spinner-caption {\n display: flex;\n align-items: center;\n gap: 6px;\n --status-circle-color: transparent;\n --status-circle-size: $size;\n --status-circle-inset-inline-start: 14px;\n --pill-color: var(--mer-border-color__primary);\n}\n.updating-spinner-caption::before {\n display: inline-block;\n content: \"\";\n width: 14px;\n height: 14px;\n border: calc(14px / 7) solid var(--mer-color__tinted-primary--50);\n border-top: calc(14px / 7) solid var(--mer-color__primary--300);\n border-radius: 50%;\n animation: spin var(--mer-timing--regular) linear infinite;\n}\n@keyframes spin {\n 0% {\n transform: rotate(0deg);\n }\n 100% {\n transform: rotate(360deg);\n }\n}\n\n.tabular-grid .button-secondary {\n --control__padding-block: var(--pill-padding-block);\n --control__padding-inline: var(--pill-padding-inline);\n font-size: inherit;\n font-weight: inherit;\n /* font-size: var(--pill-font-size); */\n}\n\n.tabular-grid .tabular-grid-cell--for-pill {\n --grid-cell__padding-block: 4px;\n align-items: center;\n justify-content: center;\n}\n\n.tabular-grid.disabled-custom-selector .tabular-grid-cell::part(selector-label),\n.tabular-grid.disabled-custom-selector .tabular-grid-column::part(bar-selector),\n.tabular-grid.disabled-custom-selector .tabular-grid-cell::part(actions-icon) {\n pointer-events: none;\n opacity: 0.5;\n}\n\n.tabular-grid-column--settings-custom-selector,\n.tabular-grid-cell--settings-custom-selector {\n --grid-cell__padding-inline: 0;\n --grid-cell__padding-block: 0;\n}\n\n.tabular-grid-cell::part(actions-icon) {\n padding-block: 6px;\n}\n\nch-tabular-grid-cell.tabular-grid-cell::part(actions-icon) {\n block-size: 100%;\n display: block;\n background-size: 14px;\n padding-inline: 16px;\n}\n\n.tabular-grid-cell.no-checkbox-custom-selector::part(selector-label) {\n visibility: hidden;\n}\n\n.tabular-grid-row-actions::part(window) {\n background-color: var(--mer-surface__elevation--02) !important;\n}\n\n.tabular-grid-row .tabular-grid-cell:nth-child(3) {\n min-inline-size: 200px;\n}";
|
|
19
|
+
const updateCss = ".custom-icon-text-wrapper {\n display: flex;\n align-items: center;\n gap: 10px;\n}\n\n/*Gx Ide*/\n/*@container queries*/\n/* hiChar styles\nFound on /common/helpers.tsx hiChar function is used to add a span/class to every character that matches a search value. It is used to help the user see why the filter results are filtered. The span/class on the characters are useless without proper styling.\n*/\n:host {\n --pill-border-radius: 12px;\n --pill-padding-inline: 8px;\n --pill-padding-block: 2px;\n --pill-font-size: var(--font-size-body-s);\n display: grid;\n block-size: 100%;\n overflow: auto;\n grid-template-rows: max-content max-content 1fr;\n}\n\n.detail__version, .detail__knowledge-base {\n padding-inline: 24px;\n border-inline-end: 1px solid var(--mer-border-color__on-elevation--01);\n}\n\n.detail__genexus-server {\n padding-inline-end: 24px;\n border-inline-end: 1px solid var(--mer-border-color__on-elevation--01);\n}\n\n.detail__last-full-update {\n padding-inline-start: 24px;\n}\n\n.section {\n display: contents;\n}\n\n.header {\n display: grid;\n grid-template-columns: 1fr max-content;\n}\n\n.header__detail {\n display: grid;\n row-gap: var(--mer-spacing--md);\n grid-auto-columns: max-content;\n grid-auto-rows: max-content;\n grid-template-areas: \"detail-heading-gx . . .\" \"detail-genexus-server detail-knowledge-base detail-version detail-last-full-update\";\n}\n\n.detail__label {\n color: var(--mer-color__neutral-gray--400);\n}\n\n.detail__heading-genexus-server {\n grid-area: detail-heading-gx;\n}\n\n.detail__genexus-server {\n grid-area: detail-genexus-server;\n}\n.detail__genexus-server > a {\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n display: inline-block;\n}\n\n.detail__link {\n align-items: start;\n color: var(--mer-text__primary);\n text-decoration: underline;\n}\n.detail__link:hover {\n color: var(--mer-text__primary--hover);\n}\n.detail__link:active {\n color: var(--mer-text__primary--active);\n}\n\n.detail__knowledge-base {\n grid-area: detail-knowledge-base;\n}\n\n.detail__version {\n grid-area: detail-version;\n}\n\n.detail__last-full-update {\n grid-area: detail-last-full-update;\n}\n\n.filter-container {\n container-type: inline-size;\n box-sizing: border-box;\n}\n\n.filter {\n display: grid;\n margin-block-start: var(--mer-spacing--lg);\n grid-template-areas: \"filter-search filter-types filter-actions filter-kb-properties filter-buttons\";\n grid-template-columns: 200px 200px 200px max-content 1fr;\n gap: 12px;\n}\n\n@container (max-width: 1100px) {\n .filter-container > .filter {\n grid-template-columns: 200px 200px 200px 1fr;\n grid-template-areas: \"filter-search filter-types filter-actions filter-buttons\" \"filter-kb-properties . . .\";\n grid-auto-rows: max-content;\n }\n}\n@container (max-width: 900px) {\n .filter-container > .filter {\n grid-template-columns: 1fr 1fr 1fr;\n grid-template-areas: \"filter-search filter-types filter-actions\" \"filter-kb-properties filter-buttons filter-buttons\";\n grid-auto-rows: max-content;\n }\n}\n.filter__search {\n grid-area: filter-search;\n}\n\n.filter__types {\n grid-area: filter-types;\n}\n\n.filter__actions {\n grid-area: filter-actions;\n}\n\n.filter__kb-properties {\n grid-area: filter-kb-properties;\n}\n\n.filter__buttons {\n margin-inline-start: auto;\n grid-area: filter-buttons;\n}\n\n.main {\n position: relative;\n display: grid;\n overflow: auto;\n}\n\n.loader {\n position: relative;\n inline-size: 100%;\n block-size: 100%;\n inset-block-start: 0;\n}\n\n.tabular-grid {\n border-radius: 4px;\n overflow: hidden;\n}\n\n.empty-state {\n block-size: 100%;\n}\n\n.loader {\n --elevation-background-color: var(--mer-surface__elevation--01);\n}\n\n.messages-list {\n margin: 0;\n padding: 0;\n list-style: none;\n max-inline-size: 800px;\n padding: 8px 0;\n list-style-type: none;\n display: flex;\n flex-direction: column;\n gap: var(--mer-spacing--3xs);\n}\n\n.message-description {\n line-height: 1.5;\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.message-icon {\n flex-shrink: 0;\n}\n\n.tabular-grid.empty-result::part(main) {\n overflow: hidden;\n}\n\n.input-comments-container {\n position: relative;\n}\n\n.input-comments {\n --control__border-color: transparent;\n padding-block: 0 !important;\n padding-inline: 0 !important;\n --line-height-tight: 1.4;\n block-size: 100%;\n background-color: var(--mer-surface);\n transition: var(--mer-timing--super-fast) block-size, var(--mer-timing--super-fast) background-color, var(--mer-timing--super-fast) padding-block, var(--mer-timing--super-fast) padding-inline;\n}\n\n.input-comments:focus {\n position: absolute;\n block-size: 200px;\n inline-size: 100%;\n z-index: 99;\n background-color: var(--mer-surface__elevation--01);\n padding-block: var(--control__padding-block) !important;\n padding-inline: var(--control__padding-inline) !important;\n}\n\nch-tabular-grid-cell.tabular-grid-cell::part(actions-icon) {\n background-size: contain;\n margin-inline-end: 0;\n --icon-path: var(--icon__gemini-tools_show-more-vertical_neutral--enabled);\n cursor: pointer;\n}\nch-tabular-grid-cell.tabular-grid-cell::part(actions-icon):hover {\n --icon-path: var(--icon__gemini-tools_show-more-vertical_neutral--hover);\n}\nch-tabular-grid-cell.tabular-grid-cell::part(actions-icon):active {\n --icon-path: var(--icon__gemini-tools_show-more-vertical_neutral--active);\n}\n\n.tabular-grid-row-actions::part(main),\n.property-grid-row-actions::part(main) {\n gap: 0 !important;\n}\n\n.tabular-grid-row-actions > button {\n justify-content: start;\n}\n\n.pill {\n --pill-background-color: transparent;\n --pill-color: transparent;\n --pill-border-color: transparent;\n background-color: var(--pill-background-color);\n color: var(--pill-color);\n border: 1px solid var(--pill-border-color);\n inline-size: 100%;\n padding: var(--pill-padding-block) var(--pill-padding-inline);\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: var(--pill-border-radius);\n position: relative;\n font-weight: var(--font-weight-semi-bold);\n}\n.pill--update, .pill--pending {\n --pill-background-color: var();\n --pill-color: var(--mer-color__neutral-gray--400);\n --pill-border-color: var();\n}\n.pill--to-merge-marked {\n --pill-background-color: var();\n --pill-color: var(--mer-border-color__primary);\n --pill-border-color: var();\n}\n.pill--ignored {\n --pill-background-color: var(--mer-surface__elevation--02);\n --pill-color: var(--mer-text__on-disabled);\n --pill-border-color: var(--mer-border-color__primary--disabled);\n}\n.pill--pending {\n --pill-background-color: var(--mer-color__tinted-primary--8);\n --pill-color: var(--mer-border-color__primary);\n --pill-border-color: var(--mer-color__tinted-primary--50);\n}\n.pill--warning {\n --pill-background-color: var(--mer-color__tinted-yellow--5);\n --pill-color: var(--mer-border-color__warning);\n --pill-border-color: var(--mer-color__tinted-yellow--60);\n}\n.pill--error {\n --pill-background-color: var(--mer-color__tinted-red--5);\n --pill-color: var(--mer-border-color__error);\n --pill-border-color: var(--mer-color__tinted-red--60);\n}\n.pill--updated {\n --pill-background-color: var(--mer-color__tinted-green--5);\n --pill-color: var(--mer-border-color__success);\n --pill-border-color: var(--mer-color__tinted-green--60);\n}\n.pill--transitioning {\n --pill-color: transparent;\n}\n\n.updating-spinner-caption {\n display: flex;\n align-items: center;\n gap: 6px;\n --status-circle-color: transparent;\n --status-circle-size: $size;\n --status-circle-inset-inline-start: 14px;\n --pill-color: var(--mer-border-color__primary);\n}\n.updating-spinner-caption::before {\n display: inline-block;\n content: \"\";\n width: 14px;\n height: 14px;\n border: calc(14px / 7) solid var(--mer-color__tinted-primary--50);\n border-top: calc(14px / 7) solid var(--mer-color__primary--300);\n border-radius: 50%;\n animation: spin var(--mer-timing--regular) linear infinite;\n}\n@keyframes spin {\n 0% {\n transform: rotate(0deg);\n }\n 100% {\n transform: rotate(360deg);\n }\n}\n\n.tabular-grid .button-secondary {\n --control__padding-block: var(--pill-padding-block);\n --control__padding-inline: var(--pill-padding-inline);\n font-size: inherit;\n font-weight: inherit;\n /* font-size: var(--pill-font-size); */\n}\n\n.tabular-grid .tabular-grid-cell--for-pill {\n --grid-cell__padding-block: 4px;\n align-items: center;\n justify-content: center;\n}\n\n.tabular-grid.disabled-custom-selector .tabular-grid-cell::part(selector-label),\n.tabular-grid.disabled-custom-selector .tabular-grid-column::part(bar-selector),\n.tabular-grid.disabled-custom-selector .tabular-grid-cell::part(actions-icon) {\n pointer-events: none;\n opacity: 0.5;\n}\n\n.tabular-grid-column--settings-custom-selector,\n.tabular-grid-cell--settings-custom-selector {\n --grid-cell__padding-inline: 0;\n --grid-cell__padding-block: 0;\n}\n\n.tabular-grid-cell::part(actions-icon) {\n padding-block: 6px;\n}\n\nch-tabular-grid-cell.tabular-grid-cell::part(actions-icon) {\n block-size: 100%;\n display: block;\n background-size: 14px;\n padding-inline: 16px;\n}\n\n.tabular-grid-cell.no-checkbox-custom-selector::part(selector-label) {\n visibility: hidden;\n pointer-events: none;\n}\n\n.tabular-grid-row-actions::part(window) {\n background-color: var(--mer-surface__elevation--02) !important;\n}\n\n.tabular-grid-row .tabular-grid-cell:nth-child(3) {\n min-inline-size: 200px;\n}";
|
|
17
20
|
|
|
18
21
|
var __classPrivateFieldGet = (undefined && undefined.__classPrivateFieldGet) || function (receiver, state, kind, f) {
|
|
19
22
|
if (kind === "a" && !f)
|
|
@@ -31,7 +34,7 @@ var __classPrivateFieldSet = (undefined && undefined.__classPrivateFieldSet) ||
|
|
|
31
34
|
throw new TypeError("Cannot write private member to an object whose class did not declare it");
|
|
32
35
|
return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
|
|
33
36
|
};
|
|
34
|
-
var _GxIdeTeamDevUpdate_componentLocale, _GxIdeTeamDevUpdate_actionsComboBoxModel, _GxIdeTeamDevUpdate_rowCheckedChangedByTheUser, _GxIdeTeamDevUpdate_chGridPendingForUpdateEl, _GxIdeTeamDevUpdate_updateCheckedClickedHandler, _GxIdeTeamDevUpdate_reloadClickedHandler, _GxIdeTeamDevUpdate_updateObjectsHandler, _GxIdeTeamDevUpdate_renderActionCellContent, _GxIdeTeamDevUpdate_updateSingleObject, _GxIdeTeamDevUpdate_renderObjectStatus, _GxIdeTeamDevUpdate_renderRows, _GxIdeTeamDevUpdate_rowMarkingChangedHandler, _GxIdeTeamDevUpdate_updatePendingCheckedItems, _GxIdeTeamDevUpdate_searchInputHandler, _GxIdeTeamDevUpdate_actionChangedHandler, _GxIdeTeamDevUpdate_typeChangedHandler, _GxIdeTeamDevUpdate_setInitialObjectsStatus, _GxIdeTeamDevUpdate_loadData, _GxIdeTeamDevUpdate_markPendingObjects, _GxIdeTeamDevUpdate_applyClientFilter, _GxIdeTeamDevUpdate_onRowContextMenuHandler, _GxIdeTeamDevUpdate_revertPendingCommitsCheckboxes, _GxIdeTeamDevUpdate_togglePendingCommitsCheckboxes, _GxIdeTeamDevUpdate_kbPropertiesChangedHandler;
|
|
37
|
+
var _GxIdeTeamDevUpdate_componentLocale, _GxIdeTeamDevUpdate_actionsComboBoxModel, _GxIdeTeamDevUpdate_rowCheckedChangedByTheUser, _GxIdeTeamDevUpdate_chGridPendingForUpdateEl, _GxIdeTeamDevUpdate_updateCheckedClickedHandler, _GxIdeTeamDevUpdate_reloadClickedHandler, _GxIdeTeamDevUpdate_updateObjectsHandler, _GxIdeTeamDevUpdate_renderActionCellContent, _GxIdeTeamDevUpdate_updateSingleObject, _GxIdeTeamDevUpdate_renderObjectStatus, _GxIdeTeamDevUpdate_renderRows, _GxIdeTeamDevUpdate_rowMarkingChangedHandler, _GxIdeTeamDevUpdate_updatePendingCheckedItems, _GxIdeTeamDevUpdate_searchInputHandler, _GxIdeTeamDevUpdate_actionChangedHandler, _GxIdeTeamDevUpdate_typeChangedHandler, _GxIdeTeamDevUpdate_setInitialObjectsStatus, _GxIdeTeamDevUpdate_loadData, _GxIdeTeamDevUpdate_markPendingObjects, _GxIdeTeamDevUpdate_applyClientFilter, _GxIdeTeamDevUpdate_onRowContextMenuHandler, _GxIdeTeamDevUpdate_revertPendingCommitsCheckboxes, _GxIdeTeamDevUpdate_togglePendingCommitsCheckboxes, _GxIdeTeamDevUpdate_kbPropertiesChangedHandler, _GxIdeTeamDevUpdate_sortTabularGridColumnCallback, _GxIdeTeamDevUpdate_columnSelectorClickedCallback;
|
|
35
38
|
const CSS_BUNDLES = [
|
|
36
39
|
"resets/box-sizing",
|
|
37
40
|
"components/tabular-grid",
|
|
@@ -136,7 +139,7 @@ const GxIdeTeamDevUpdate$1 = /*@__PURE__*/ proxyCustomElement(class GxIdeTeamDev
|
|
|
136
139
|
this.objectsMessagesDataMap.delete(objectResult.id);
|
|
137
140
|
}
|
|
138
141
|
if (objectResult.result === "updated") {
|
|
139
|
-
this.alreadyUpdatedObjectsIdsSet.add(objectResult.id);
|
|
142
|
+
this.alreadyUpdatedObjectsIdsSet = new Set(this.alreadyUpdatedObjectsIdsSet).add(objectResult.id);
|
|
140
143
|
this.objectsStatusMap.set(objectResult.id, "updated");
|
|
141
144
|
await __classPrivateFieldGet(this, _GxIdeTeamDevUpdate_chGridPendingForUpdateEl, "f").markRow(objectResult.id, false);
|
|
142
145
|
}
|
|
@@ -414,6 +417,39 @@ const GxIdeTeamDevUpdate$1 = /*@__PURE__*/ proxyCustomElement(class GxIdeTeamDev
|
|
|
414
417
|
this.kbPropertiesChecked = event.detail === CHECKBOX_CHECKED_VALUE;
|
|
415
418
|
__classPrivateFieldGet(this, _GxIdeTeamDevUpdate_loadData, "f").call(this, true);
|
|
416
419
|
});
|
|
420
|
+
_GxIdeTeamDevUpdate_sortTabularGridColumnCallback.set(this, (e) => {
|
|
421
|
+
const columnId = e.detail.columnId;
|
|
422
|
+
let objectProperty;
|
|
423
|
+
let dateType = "string";
|
|
424
|
+
if (columnId === COLUMNS_IDS.modifiedOn ||
|
|
425
|
+
columnId === COLUMNS_IDS.lastSynchronized) {
|
|
426
|
+
dateType = "dateString";
|
|
427
|
+
}
|
|
428
|
+
this.pendingObjectsAfterActionFilter = [
|
|
429
|
+
...sortTabularGridColumn(e, this.pendingObjectsAfterActionFilter, dateType, objectProperty)
|
|
430
|
+
];
|
|
431
|
+
this.ignoredObjectsAfterActionFilter = [
|
|
432
|
+
...sortTabularGridColumn(e, this.ignoredObjectsAfterActionFilter, dateType, objectProperty)
|
|
433
|
+
];
|
|
434
|
+
});
|
|
435
|
+
/**
|
|
436
|
+
* WA: Ignored objects must always remain unchecked.
|
|
437
|
+
* Because `tabular-grid` selects all rows when the checkbox column is toggled,
|
|
438
|
+
* we need to manually unselect the ignored IDs. // TODO: Move this function
|
|
439
|
+
* to common
|
|
440
|
+
*/
|
|
441
|
+
_GxIdeTeamDevUpdate_columnSelectorClickedCallback.set(this, async (e) => {
|
|
442
|
+
const allRowsChecked = e.detail;
|
|
443
|
+
if (allRowsChecked) {
|
|
444
|
+
const markedRowsIds = await __classPrivateFieldGet(this, _GxIdeTeamDevUpdate_chGridPendingForUpdateEl, "f").getMarkedRows();
|
|
445
|
+
const ignoredMarkedRowsIds = markedRowsIds.filter(rowId => {
|
|
446
|
+
return this.ignoredIdsSet.has(rowId);
|
|
447
|
+
});
|
|
448
|
+
if (ignoredMarkedRowsIds.length) {
|
|
449
|
+
uncheckIgnoredObjects(ignoredMarkedRowsIds, __classPrivateFieldGet(this, _GxIdeTeamDevUpdate_chGridPendingForUpdateEl, "f"));
|
|
450
|
+
}
|
|
451
|
+
}
|
|
452
|
+
});
|
|
417
453
|
this.atLeastOneObjectIsChecked = false;
|
|
418
454
|
this.loading = true;
|
|
419
455
|
this.menuContextAction = undefined;
|
|
@@ -425,6 +461,7 @@ const GxIdeTeamDevUpdate$1 = /*@__PURE__*/ proxyCustomElement(class GxIdeTeamDev
|
|
|
425
461
|
this.ignoredIdsSet = new Set([]);
|
|
426
462
|
this.objectsMessagesDataMap = new Map();
|
|
427
463
|
this.updating = false;
|
|
464
|
+
this.allPendingAreUpdated = false;
|
|
428
465
|
this.kbPropertiesChecked = false;
|
|
429
466
|
this.typesComboBoxModel = undefined;
|
|
430
467
|
this.selectedType = undefined;
|
|
@@ -447,6 +484,11 @@ const GxIdeTeamDevUpdate$1 = /*@__PURE__*/ proxyCustomElement(class GxIdeTeamDev
|
|
|
447
484
|
markedObjectsSetChanged(newMarkedObjectsSet) {
|
|
448
485
|
this.atLeastOneObjectIsChecked = newMarkedObjectsSet.size > 0;
|
|
449
486
|
}
|
|
487
|
+
alreadyUpdatedObjectsIdsSetChanged(newUpdatedObjectsIdsSet) {
|
|
488
|
+
const pendingIdsSetAndUpdatedIdsSetAreEqual = areSetsEqual(newUpdatedObjectsIdsSet, this.pendingIdsSet);
|
|
489
|
+
this.allPendingAreUpdated =
|
|
490
|
+
pendingIdsSetAndUpdatedIdsSetAreEqual && this.pendingIdsSet.size > 0;
|
|
491
|
+
}
|
|
450
492
|
objectsStatusMapChanged(newObjectsStatusMap) {
|
|
451
493
|
const someObjectIsUpdating = [...newObjectsStatusMap.entries()].find(([, state]) => state === "updating");
|
|
452
494
|
if (!someObjectIsUpdating) {
|
|
@@ -454,15 +496,20 @@ const GxIdeTeamDevUpdate$1 = /*@__PURE__*/ proxyCustomElement(class GxIdeTeamDev
|
|
|
454
496
|
}
|
|
455
497
|
}
|
|
456
498
|
pendingAndIgnoredChanged() {
|
|
457
|
-
|
|
458
|
-
this.
|
|
499
|
+
this.pendingIdsSet.clear(); // before pendingIdsSet.add
|
|
500
|
+
this.ignoredIdsSet.clear(); // before pendingIdsSet.add
|
|
501
|
+
this.objectsMessagesDataMap = new Map();
|
|
502
|
+
this.alreadyUpdatedObjectsIdsSet = new Set();
|
|
503
|
+
this.markedObjectsSet = new Set(); // before #markPendingObjects
|
|
459
504
|
this.pendingAndIgnored.pendingForUpdate.forEach(pending => {
|
|
460
505
|
this.pendingIdsSet.add(pending.id);
|
|
461
506
|
});
|
|
462
|
-
this.ignoredIdsSet.clear();
|
|
463
507
|
this.pendingAndIgnored.ignoredObjects.forEach(ignored => {
|
|
464
508
|
this.ignoredIdsSet.add(ignored.id);
|
|
465
509
|
});
|
|
510
|
+
__classPrivateFieldGet(this, _GxIdeTeamDevUpdate_markPendingObjects, "f").call(this); // after pendingIdsSet.add and ignoredIdsSet.add
|
|
511
|
+
__classPrivateFieldGet(this, _GxIdeTeamDevUpdate_setInitialObjectsStatus, "f").call(this); // after pendingIdsSet.add and ignoredIdsSet.add
|
|
512
|
+
__classPrivateFieldGet(this, _GxIdeTeamDevUpdate_applyClientFilter, "f").call(this);
|
|
466
513
|
}
|
|
467
514
|
async componentWillLoad() {
|
|
468
515
|
var _a;
|
|
@@ -496,6 +543,8 @@ const GxIdeTeamDevUpdate$1 = /*@__PURE__*/ proxyCustomElement(class GxIdeTeamDev
|
|
|
496
543
|
}
|
|
497
544
|
async componentDidLoad() {
|
|
498
545
|
await __classPrivateFieldGet(this, _GxIdeTeamDevUpdate_loadData, "f").call(this, true);
|
|
546
|
+
// initialize "allPendingAreUpdated"
|
|
547
|
+
this.alreadyUpdatedObjectsIdsSetChanged(this.alreadyUpdatedObjectsIdsSet);
|
|
499
548
|
}
|
|
500
549
|
/**
|
|
501
550
|
* Used by the host to instruct the component to force a data reload in the grids.
|
|
@@ -504,7 +553,6 @@ const GxIdeTeamDevUpdate$1 = /*@__PURE__*/ proxyCustomElement(class GxIdeTeamDev
|
|
|
504
553
|
__classPrivateFieldGet(this, _GxIdeTeamDevUpdate_loadData, "f").call(this, true);
|
|
505
554
|
}
|
|
506
555
|
render() {
|
|
507
|
-
const enableRichRowSelector = true;
|
|
508
556
|
const disableControls = this.updating || this.loading;
|
|
509
557
|
const gridIsEmpty = this.pendingObjectsAfterActionFilter.length === 0 &&
|
|
510
558
|
this.ignoredObjectsAfterActionFilter.length === 0;
|
|
@@ -546,10 +594,10 @@ const GxIdeTeamDevUpdate$1 = /*@__PURE__*/ proxyCustomElement(class GxIdeTeamDev
|
|
|
546
594
|
"objects-tabular-grid": true,
|
|
547
595
|
"disabled-custom-selector": this.updating,
|
|
548
596
|
"empty-result": gridIsEmpty
|
|
549
|
-
}, keyboardNavigationMode: "focus", rowSelectionMode: "multiple", onRowMarkingChanged: __classPrivateFieldGet(this, _GxIdeTeamDevUpdate_rowMarkingChangedHandler, "f"), onRowContextMenu: __classPrivateFieldGet(this, _GxIdeTeamDevUpdate_onRowContextMenuHandler, "f").call(this), ref: (el) => (__classPrivateFieldSet(this, _GxIdeTeamDevUpdate_chGridPendingForUpdateEl, el, "f")) }, h("ch-tabular-grid-columnset", { class: "tabular-grid-column-set" }, h("ch-tabular-grid-column", { class: "tabular-grid-column", columnId:
|
|
597
|
+
}, keyboardNavigationMode: "focus", rowSelectionMode: "multiple", onRowMarkingChanged: __classPrivateFieldGet(this, _GxIdeTeamDevUpdate_rowMarkingChangedHandler, "f"), onRowContextMenu: __classPrivateFieldGet(this, _GxIdeTeamDevUpdate_onRowContextMenuHandler, "f").call(this), ref: (el) => (__classPrivateFieldSet(this, _GxIdeTeamDevUpdate_chGridPendingForUpdateEl, el, "f")) }, h("ch-tabular-grid-columnset", { class: "tabular-grid-column-set" }, h("ch-tabular-grid-column", { class: "tabular-grid-column", columnId: COLUMNS_IDS.name, columnName: __classPrivateFieldGet(this, _GxIdeTeamDevUpdate_componentLocale, "f").objects.name, columnType: "rich", richRowSelector: !this.allPendingAreUpdated, richRowSelectorMode: "mark", settingable: false, sortable: true, onColumnSortChanged: __classPrivateFieldGet(this, _GxIdeTeamDevUpdate_sortTabularGridColumnCallback, "f"), onColumnSelectorClicked: __classPrivateFieldGet(this, _GxIdeTeamDevUpdate_columnSelectorClickedCallback, "f"), size: "max-content" }), h("ch-tabular-grid-column", { class: "tabular-grid-column", columnId: COLUMNS_IDS.type, columnName: __classPrivateFieldGet(this, _GxIdeTeamDevUpdate_componentLocale, "f").objects.type, settingable: false, sortable: true, onColumnSortChanged: __classPrivateFieldGet(this, _GxIdeTeamDevUpdate_sortTabularGridColumnCallback, "f"), size: "max-content" }), h("ch-tabular-grid-column", { class: "tabular-grid-column", columnId: COLUMNS_IDS.description, columnName: __classPrivateFieldGet(this, _GxIdeTeamDevUpdate_componentLocale, "f").objects.description, settingable: false, sortable: true, onColumnSortChanged: __classPrivateFieldGet(this, _GxIdeTeamDevUpdate_sortTabularGridColumnCallback, "f"), size: config.tabularGrid.colSize.description }), h("ch-tabular-grid-column", { class: "tabular-grid-column", columnId: COLUMNS_IDS.modifiedOn, columnName: __classPrivateFieldGet(this, _GxIdeTeamDevUpdate_componentLocale, "f").objects.modifiedOn, settingable: false, sortable: true, onColumnSortChanged: __classPrivateFieldGet(this, _GxIdeTeamDevUpdate_sortTabularGridColumnCallback, "f"), size: "max-content" }), h("ch-tabular-grid-column", { class: "tabular-grid-column", columnId: COLUMNS_IDS.action, columnName: __classPrivateFieldGet(this, _GxIdeTeamDevUpdate_componentLocale, "f").objects.action, settingable: false, sortable: false, size: "max-content" }), h("ch-tabular-grid-column", {
|
|
550
598
|
// size of this column should the enough for the largest pill, and no more.
|
|
551
599
|
// this prevents layout shifts when pills state changes.
|
|
552
|
-
class: "tabular-grid-column", columnId:
|
|
600
|
+
class: "tabular-grid-column", columnId: COLUMNS_IDS.status, columnName: __classPrivateFieldGet(this, _GxIdeTeamDevUpdate_componentLocale, "f").objects.status, settingable: false, sortable: false, size: "100px"
|
|
553
601
|
})), !gridIsEmpty
|
|
554
602
|
? [
|
|
555
603
|
h("ch-tabular-grid-rowset", { class: "tabular-grid-rowset" }, h("ch-tabular-grid-rowset-legend", { class: "tabular-grid-rowset-legend" }, __classPrivateFieldGet(this, _GxIdeTeamDevUpdate_componentLocale, "f").objects.pending), __classPrivateFieldGet(this, _GxIdeTeamDevUpdate_renderRows, "f").call(this, "pending")),
|
|
@@ -561,6 +609,7 @@ const GxIdeTeamDevUpdate$1 = /*@__PURE__*/ proxyCustomElement(class GxIdeTeamDev
|
|
|
561
609
|
get el() { return this; }
|
|
562
610
|
static get watchers() { return {
|
|
563
611
|
"markedObjectsSet": ["markedObjectsSetChanged"],
|
|
612
|
+
"alreadyUpdatedObjectsIdsSet": ["alreadyUpdatedObjectsIdsSetChanged"],
|
|
564
613
|
"objectsStatusMap": ["objectsStatusMapChanged"],
|
|
565
614
|
"pendingAndIgnored": ["pendingAndIgnoredChanged"]
|
|
566
615
|
}; }
|
|
@@ -585,6 +634,7 @@ const GxIdeTeamDevUpdate$1 = /*@__PURE__*/ proxyCustomElement(class GxIdeTeamDev
|
|
|
585
634
|
"ignoredIdsSet": [32],
|
|
586
635
|
"objectsMessagesDataMap": [32],
|
|
587
636
|
"updating": [32],
|
|
637
|
+
"allPendingAreUpdated": [32],
|
|
588
638
|
"kbPropertiesChecked": [32],
|
|
589
639
|
"typesComboBoxModel": [32],
|
|
590
640
|
"selectedType": [32],
|
|
@@ -595,10 +645,11 @@ const GxIdeTeamDevUpdate$1 = /*@__PURE__*/ proxyCustomElement(class GxIdeTeamDev
|
|
|
595
645
|
"reload": [64]
|
|
596
646
|
}, undefined, {
|
|
597
647
|
"markedObjectsSet": ["markedObjectsSetChanged"],
|
|
648
|
+
"alreadyUpdatedObjectsIdsSet": ["alreadyUpdatedObjectsIdsSetChanged"],
|
|
598
649
|
"objectsStatusMap": ["objectsStatusMapChanged"],
|
|
599
650
|
"pendingAndIgnored": ["pendingAndIgnoredChanged"]
|
|
600
651
|
}]);
|
|
601
|
-
_GxIdeTeamDevUpdate_componentLocale = new WeakMap(), _GxIdeTeamDevUpdate_actionsComboBoxModel = new WeakMap(), _GxIdeTeamDevUpdate_rowCheckedChangedByTheUser = new WeakMap(), _GxIdeTeamDevUpdate_chGridPendingForUpdateEl = new WeakMap(), _GxIdeTeamDevUpdate_updateCheckedClickedHandler = new WeakMap(), _GxIdeTeamDevUpdate_reloadClickedHandler = new WeakMap(), _GxIdeTeamDevUpdate_updateObjectsHandler = new WeakMap(), _GxIdeTeamDevUpdate_renderActionCellContent = new WeakMap(), _GxIdeTeamDevUpdate_updateSingleObject = new WeakMap(), _GxIdeTeamDevUpdate_renderObjectStatus = new WeakMap(), _GxIdeTeamDevUpdate_renderRows = new WeakMap(), _GxIdeTeamDevUpdate_rowMarkingChangedHandler = new WeakMap(), _GxIdeTeamDevUpdate_updatePendingCheckedItems = new WeakMap(), _GxIdeTeamDevUpdate_searchInputHandler = new WeakMap(), _GxIdeTeamDevUpdate_actionChangedHandler = new WeakMap(), _GxIdeTeamDevUpdate_typeChangedHandler = new WeakMap(), _GxIdeTeamDevUpdate_setInitialObjectsStatus = new WeakMap(), _GxIdeTeamDevUpdate_loadData = new WeakMap(), _GxIdeTeamDevUpdate_markPendingObjects = new WeakMap(), _GxIdeTeamDevUpdate_applyClientFilter = new WeakMap(), _GxIdeTeamDevUpdate_onRowContextMenuHandler = new WeakMap(), _GxIdeTeamDevUpdate_revertPendingCommitsCheckboxes = new WeakMap(), _GxIdeTeamDevUpdate_togglePendingCommitsCheckboxes = new WeakMap(), _GxIdeTeamDevUpdate_kbPropertiesChangedHandler = new WeakMap();
|
|
652
|
+
_GxIdeTeamDevUpdate_componentLocale = new WeakMap(), _GxIdeTeamDevUpdate_actionsComboBoxModel = new WeakMap(), _GxIdeTeamDevUpdate_rowCheckedChangedByTheUser = new WeakMap(), _GxIdeTeamDevUpdate_chGridPendingForUpdateEl = new WeakMap(), _GxIdeTeamDevUpdate_updateCheckedClickedHandler = new WeakMap(), _GxIdeTeamDevUpdate_reloadClickedHandler = new WeakMap(), _GxIdeTeamDevUpdate_updateObjectsHandler = new WeakMap(), _GxIdeTeamDevUpdate_renderActionCellContent = new WeakMap(), _GxIdeTeamDevUpdate_updateSingleObject = new WeakMap(), _GxIdeTeamDevUpdate_renderObjectStatus = new WeakMap(), _GxIdeTeamDevUpdate_renderRows = new WeakMap(), _GxIdeTeamDevUpdate_rowMarkingChangedHandler = new WeakMap(), _GxIdeTeamDevUpdate_updatePendingCheckedItems = new WeakMap(), _GxIdeTeamDevUpdate_searchInputHandler = new WeakMap(), _GxIdeTeamDevUpdate_actionChangedHandler = new WeakMap(), _GxIdeTeamDevUpdate_typeChangedHandler = new WeakMap(), _GxIdeTeamDevUpdate_setInitialObjectsStatus = new WeakMap(), _GxIdeTeamDevUpdate_loadData = new WeakMap(), _GxIdeTeamDevUpdate_markPendingObjects = new WeakMap(), _GxIdeTeamDevUpdate_applyClientFilter = new WeakMap(), _GxIdeTeamDevUpdate_onRowContextMenuHandler = new WeakMap(), _GxIdeTeamDevUpdate_revertPendingCommitsCheckboxes = new WeakMap(), _GxIdeTeamDevUpdate_togglePendingCommitsCheckboxes = new WeakMap(), _GxIdeTeamDevUpdate_kbPropertiesChangedHandler = new WeakMap(), _GxIdeTeamDevUpdate_sortTabularGridColumnCallback = new WeakMap(), _GxIdeTeamDevUpdate_columnSelectorClickedCallback = new WeakMap();
|
|
602
653
|
function defineCustomElement$1() {
|
|
603
654
|
if (typeof customElements === "undefined") {
|
|
604
655
|
return;
|