@genexus/genexus-ide-ui 1.1.39 → 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.
Files changed (140) hide show
  1. package/dist/cjs/genexus-ide-ui.cjs.js +1 -1
  2. package/dist/cjs/gx-ide-server-selector.cjs.entry.js +12 -28
  3. package/dist/cjs/gx-ide-server-selector.cjs.entry.js.map +1 -1
  4. package/dist/cjs/{gx-ide-status-message.cjs.entry.js → gx-ide-sign-in-result.cjs.entry.js} +10 -9
  5. package/dist/cjs/gx-ide-sign-in-result.cjs.entry.js.map +1 -0
  6. package/dist/cjs/gx-ide-team-dev-bring-changes.cjs.entry.js +20 -4
  7. package/dist/cjs/gx-ide-team-dev-bring-changes.cjs.entry.js.map +1 -1
  8. package/dist/cjs/gx-ide-team-dev-commit.cjs.entry.js +99 -238
  9. package/dist/cjs/gx-ide-team-dev-commit.cjs.entry.js.map +1 -1
  10. package/dist/cjs/gx-ide-team-dev-history.cjs.entry.js +9 -7
  11. package/dist/cjs/gx-ide-team-dev-history.cjs.entry.js.map +1 -1
  12. package/dist/cjs/gx-ide-team-dev-update.cjs.entry.js +60 -10
  13. package/dist/cjs/gx-ide-team-dev-update.cjs.entry.js.map +1 -1
  14. package/dist/cjs/loader.cjs.js +1 -1
  15. package/dist/cjs/tabular-grid-column-sort-5ca06dc1.js +43 -0
  16. package/dist/cjs/tabular-grid-column-sort-5ca06dc1.js.map +1 -0
  17. package/dist/cjs/tabular-grid-render-4350dbaf.js +223 -0
  18. package/dist/cjs/tabular-grid-render-4350dbaf.js.map +1 -0
  19. package/dist/cjs/uncheck-ignored-77ca69fe.js +43 -0
  20. package/dist/cjs/uncheck-ignored-77ca69fe.js.map +1 -0
  21. package/dist/collection/collection-manifest.json +1 -1
  22. package/dist/collection/common/chameleon/tabular-grid-column-sort.js +39 -0
  23. package/dist/collection/common/chameleon/tabular-grid-column-sort.js.map +1 -0
  24. package/dist/collection/components/{status-message/status-message.css → sign-in-result/sign-in-result.css} +2 -0
  25. package/dist/collection/components/{status-message/status-message.js → sign-in-result/sign-in-result.js} +10 -9
  26. package/dist/collection/components/sign-in-result/sign-in-result.js.map +1 -0
  27. package/dist/collection/components/team-dev/bring-changes/bring-changes.js +18 -4
  28. package/dist/collection/components/team-dev/bring-changes/bring-changes.js.map +1 -1
  29. package/dist/collection/components/team-dev/history/history.js +10 -8
  30. package/dist/collection/components/team-dev/history/history.js.map +1 -1
  31. package/dist/collection/components/team-dev/server-selector/server-selector.css +18 -14
  32. package/dist/collection/components/team-dev/server-selector/server-selector.js +11 -27
  33. package/dist/collection/components/team-dev/server-selector/server-selector.js.map +1 -1
  34. package/dist/collection/components/team-dev/update/update.css +1 -0
  35. package/dist/collection/components/team-dev/update/update.js +62 -9
  36. package/dist/collection/components/team-dev/update/update.js.map +1 -1
  37. package/dist/collection/components/team-dev/version-control/commit/commit.css +1 -0
  38. package/dist/collection/components/team-dev/version-control/commit/commit.js +79 -20
  39. package/dist/collection/components/team-dev/version-control/commit/commit.js.map +1 -1
  40. package/dist/collection/components/team-dev/version-control/common/are-sets-equal.js +21 -0
  41. package/dist/collection/components/team-dev/version-control/common/are-sets-equal.js.map +1 -0
  42. package/dist/collection/components/team-dev/version-control/common/tabular-grid-render.js +13 -3
  43. package/dist/collection/components/team-dev/version-control/common/tabular-grid-render.js.map +1 -1
  44. package/dist/collection/components/team-dev/version-control/common/uncheck-ignored.js +18 -0
  45. package/dist/collection/components/team-dev/version-control/common/uncheck-ignored.js.map +1 -0
  46. package/dist/collection/testing/locale.e2e.js +1 -1
  47. package/dist/collection/testing/locale.e2e.js.map +1 -1
  48. package/dist/components/gx-ide-server-selector.js +12 -28
  49. package/dist/components/gx-ide-server-selector.js.map +1 -1
  50. package/dist/components/{gx-ide-status-message.d.ts → gx-ide-sign-in-result.d.ts} +4 -4
  51. package/dist/components/{gx-ide-status-message.js → gx-ide-sign-in-result.js} +15 -14
  52. package/dist/components/gx-ide-sign-in-result.js.map +1 -0
  53. package/dist/components/gx-ide-team-dev-bring-changes.js +18 -4
  54. package/dist/components/gx-ide-team-dev-bring-changes.js.map +1 -1
  55. package/dist/components/gx-ide-team-dev-commit.js +78 -221
  56. package/dist/components/gx-ide-team-dev-commit.js.map +1 -1
  57. package/dist/components/gx-ide-team-dev-history.js +9 -7
  58. package/dist/components/gx-ide-team-dev-history.js.map +1 -1
  59. package/dist/components/gx-ide-team-dev-update.js +61 -10
  60. package/dist/components/gx-ide-team-dev-update.js.map +1 -1
  61. package/dist/components/tabular-grid-column-sort.js +41 -0
  62. package/dist/components/tabular-grid-column-sort.js.map +1 -0
  63. package/dist/components/tabular-grid-render.js +216 -0
  64. package/dist/components/tabular-grid-render.js.map +1 -0
  65. package/dist/components/uncheck-ignored.js +40 -0
  66. package/dist/components/uncheck-ignored.js.map +1 -0
  67. package/dist/esm/genexus-ide-ui.js +1 -1
  68. package/dist/esm/gx-ide-server-selector.entry.js +12 -28
  69. package/dist/esm/gx-ide-server-selector.entry.js.map +1 -1
  70. package/dist/esm/{gx-ide-status-message.entry.js → gx-ide-sign-in-result.entry.js} +10 -9
  71. package/dist/esm/gx-ide-sign-in-result.entry.js.map +1 -0
  72. package/dist/esm/gx-ide-team-dev-bring-changes.entry.js +20 -4
  73. package/dist/esm/gx-ide-team-dev-bring-changes.entry.js.map +1 -1
  74. package/dist/esm/gx-ide-team-dev-commit.entry.js +81 -220
  75. package/dist/esm/gx-ide-team-dev-commit.entry.js.map +1 -1
  76. package/dist/esm/gx-ide-team-dev-history.entry.js +9 -7
  77. package/dist/esm/gx-ide-team-dev-history.entry.js.map +1 -1
  78. package/dist/esm/gx-ide-team-dev-update.entry.js +60 -10
  79. package/dist/esm/gx-ide-team-dev-update.entry.js.map +1 -1
  80. package/dist/esm/loader.js +1 -1
  81. package/dist/esm/tabular-grid-column-sort-1d503b27.js +41 -0
  82. package/dist/esm/tabular-grid-column-sort-1d503b27.js.map +1 -0
  83. package/dist/esm/tabular-grid-render-f7eb612b.js +216 -0
  84. package/dist/esm/tabular-grid-render-f7eb612b.js.map +1 -0
  85. package/dist/esm/uncheck-ignored-4ba48c9e.js +40 -0
  86. package/dist/esm/uncheck-ignored-4ba48c9e.js.map +1 -0
  87. package/dist/genexus-ide-ui/genexus-ide-ui.esm.js +1 -1
  88. package/dist/genexus-ide-ui/genexus-ide-ui.esm.js.map +1 -1
  89. package/dist/genexus-ide-ui/p-02fb496a.js +36 -0
  90. package/dist/genexus-ide-ui/p-02fb496a.js.map +1 -0
  91. package/dist/genexus-ide-ui/p-06e8d9d6.entry.js +63 -0
  92. package/dist/genexus-ide-ui/p-06e8d9d6.entry.js.map +1 -0
  93. package/dist/genexus-ide-ui/{p-585fac4a.entry.js → p-2b38e18e.entry.js} +15 -13
  94. package/dist/genexus-ide-ui/p-2b38e18e.entry.js.map +1 -0
  95. package/dist/genexus-ide-ui/{p-970e89ac.entry.js → p-4b06b578.entry.js} +100 -115
  96. package/dist/genexus-ide-ui/p-4b06b578.entry.js.map +1 -0
  97. package/dist/genexus-ide-ui/{p-34447b77.entry.js → p-4e3ad78d.entry.js} +261 -234
  98. package/dist/genexus-ide-ui/p-4e3ad78d.entry.js.map +1 -0
  99. package/dist/genexus-ide-ui/p-77c2e69d.js +314 -0
  100. package/dist/genexus-ide-ui/p-77c2e69d.js.map +1 -0
  101. package/dist/genexus-ide-ui/p-a7883e6b.entry.js +691 -0
  102. package/dist/genexus-ide-ui/p-a7883e6b.entry.js.map +1 -0
  103. package/dist/genexus-ide-ui/p-c9b9e260.js +36 -0
  104. package/dist/genexus-ide-ui/p-c9b9e260.js.map +1 -0
  105. package/dist/genexus-ide-ui/{p-42f37527.entry.js → p-e1a2550e.entry.js} +351 -289
  106. package/dist/genexus-ide-ui/p-e1a2550e.entry.js.map +1 -0
  107. package/dist/types/common/chameleon/tabular-grid-column-sort.d.ts +4 -0
  108. package/dist/types/components/{status-message/status-message.d.ts → sign-in-result/sign-in-result.d.ts} +2 -2
  109. package/dist/types/components/team-dev/history/history.d.ts +2 -2
  110. package/dist/types/components/team-dev/update/update.d.ts +6 -0
  111. package/dist/types/components/team-dev/version-control/commit/commit.d.ts +15 -13
  112. package/dist/types/components/team-dev/version-control/common/are-sets-equal.d.ts +12 -0
  113. package/dist/types/components/team-dev/version-control/common/tabular-grid-render.d.ts +13 -1
  114. package/dist/types/components/team-dev/version-control/common/uncheck-ignored.d.ts +13 -0
  115. package/dist/types/components.d.ts +13 -13
  116. package/package.json +1 -1
  117. package/dist/cjs/gx-ide-status-message.cjs.entry.js.map +0 -1
  118. package/dist/collection/components/status-message/status-message.js.map +0 -1
  119. package/dist/components/gx-ide-status-message.js.map +0 -1
  120. package/dist/esm/gx-ide-status-message.entry.js.map +0 -1
  121. package/dist/genexus-ide-ui/p-34447b77.entry.js.map +0 -1
  122. package/dist/genexus-ide-ui/p-42f37527.entry.js.map +0 -1
  123. package/dist/genexus-ide-ui/p-50253b96.entry.js +0 -61
  124. package/dist/genexus-ide-ui/p-50253b96.entry.js.map +0 -1
  125. package/dist/genexus-ide-ui/p-585fac4a.entry.js.map +0 -1
  126. package/dist/genexus-ide-ui/p-723d25ae.entry.js +0 -912
  127. package/dist/genexus-ide-ui/p-723d25ae.entry.js.map +0 -1
  128. package/dist/genexus-ide-ui/p-970e89ac.entry.js.map +0 -1
  129. /package/dist/collection/components/{status-message/gx-ide-assets/status-message → sign-in-result/gx-ide-assets/sign-in-result}/images/genexus-next-logo.svg +0 -0
  130. /package/dist/collection/components/{status-message/gx-ide-assets/status-message → sign-in-result/gx-ide-assets/sign-in-result}/images/left-side-illustration.svg +0 -0
  131. /package/dist/collection/components/{status-message/gx-ide-assets/status-message → sign-in-result/gx-ide-assets/sign-in-result}/images/right-side-illustration.svg +0 -0
  132. /package/dist/collection/components/{status-message/gx-ide-assets/status-message/langs/status-message.lang.en.json → sign-in-result/gx-ide-assets/sign-in-result/langs/sign-in-result.lang.en.json} +0 -0
  133. /package/dist/collection/components/{status-message/gx-ide-assets/status-message/langs/status-message.lang.ja.json → sign-in-result/gx-ide-assets/sign-in-result/langs/sign-in-result.lang.ja.json} +0 -0
  134. /package/dist/collection/components/{status-message/gx-ide-assets/status-message/langs/status-message.lang.zh.json → sign-in-result/gx-ide-assets/sign-in-result/langs/sign-in-result.lang.zh.json} +0 -0
  135. /package/dist/genexus-ide-ui/gx-ide-assets/{status-message → sign-in-result}/images/genexus-next-logo.svg +0 -0
  136. /package/dist/genexus-ide-ui/gx-ide-assets/{status-message → sign-in-result}/images/left-side-illustration.svg +0 -0
  137. /package/dist/genexus-ide-ui/gx-ide-assets/{status-message → sign-in-result}/images/right-side-illustration.svg +0 -0
  138. /package/dist/genexus-ide-ui/gx-ide-assets/{status-message/langs/status-message.lang.en.json → sign-in-result/langs/sign-in-result.lang.en.json} +0 -0
  139. /package/dist/genexus-ide-ui/gx-ide-assets/{status-message/langs/status-message.lang.ja.json → sign-in-result/langs/sign-in-result.lang.ja.json} +0 -0
  140. /package/dist/genexus-ide-ui/gx-ide-assets/{status-message/langs/status-message.lang.zh.json → sign-in-result/langs/sign-in-result.lang.zh.json} +0 -0
@@ -1 +1 @@
1
- {"file":"gx-ide-team-dev-history.js","mappings":"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","names":["GxIdeTeamDevHistory"],"sources":["src/components/team-dev/history/helpers.ts","src/components/team-dev/history/history.scss?tag=gx-ide-team-dev-history&encapsulation=shadow","src/components/team-dev/history/history.tsx"],"sourcesContent":["import { ComboBoxModel } from \"@genexus/chameleon-controls-library\";\nimport { ObjectType, GxOption } from \"../../../common/types\";\nimport { ComboBoxItemModel } from \"@genexus/chameleon-controls-library/dist/types/components/combo-box/types\";\nimport { ItemNode } from \"../../select-kb-items/select-kb-items\";\n\nexport const mapObjectTypeToComboBoxItemModel = (\n objectTypeModel: ObjectType[]\n): ComboBoxItemModel[] =>\n objectTypeModel.map(objectType => ({\n value: objectType.id,\n caption: objectType.name,\n startImgSrc: objectType.icon\n }));\n\nexport const mapCategoryToComboBoxItemModel = (\n categoryModel: GxOption[]\n): ComboBoxModel =>\n categoryModel.map(category => ({\n value: category.id,\n caption: category.label\n }));\n\nconst hasActiveNode = (node: any): boolean => {\n if (node.active) {\n return true;\n }\n if (Array.isArray(node.nodes)) {\n return node.nodes.some(hasActiveNode);\n }\n return false;\n};\n\nexport const hasActiveVersionInList = (versionsList: ItemNode[]): boolean => {\n return versionsList.some(hasActiveNode);\n};\n","@import \"../../../../node_modules/@genexus/mercury/dist/assets/scss/helpers.scss\";\n@import \"../common/styles.scss\";\n\n// TODO: this should be a class on Mercury.\n// Not sure if applying \".field-group\" is the right thing to do.\n$commonRowGap: var(--mer-spacing--sm);\n\n:host {\n display: grid;\n grid-template-columns: max-content 1fr;\n block-size: 100%;\n overflow: auto;\n}\n\n.sidebar {\n background-color: transparent !important; // TODO: Apply elevation classes on Mercury.\n border-inline-end: var(--section-common-border);\n}\n\n.sidebar::part(expand-button) {\n border-radius: var(--control__border-radius);\n}\n\ngx-ide-select-kb-items {\n --search-input-max-inline-size: 300px;\n opacity: 0;\n transition: opacity var(--mer-timing--fast);\n}\ngx-ide-select-kb-items.sidebar-expanded {\n opacity: 1;\n}\n\nch-tabular-grid.tabular-grid--empty::part(main) {\n // WA to avoid scrollbar flickering when displaying the empty-state message\n overflow: hidden;\n}\n\nch-tabular-grid-rowset-empty {\n position: relative; // makes this the bounder element for the loader\n}\n\n.main {\n display: grid;\n grid-template-rows: max-content 1fr;\n grid-row-gap: $commonRowGap;\n overflow: auto;\n}\n.main__header {\n display: grid;\n}\n.main__content {\n position: relative;\n overflow: auto;\n display: grid;\n grid-template-rows: 1fr max-content 2fr;\n grid-row-gap: $commonRowGap;\n}\n\n.tabular-grid {\n overflow: auto;\n}\n\n/*SECOND GRID*/\n.search-filter {\n display: grid;\n grid-template-columns: 1fr max-content max-content;\n gap: var(--gx-ide-grid-column-gap);\n}\n\n.action-buttons {\n justify-self: flex-end;\n}\n\n.filters-grid {\n display: grid;\n grid-template-columns: repeat(6, 1fr);\n grid-template-areas:\n \"from from to to type type\"\n \"user user user revision revision revision\";\n grid-gap: var(--gx-ide-grid-column-gap);\n padding-block-start: $commonRowGap;\n}\n\n.filters-container {\n display: grid;\n grid-template-rows: 0fr;\n transition: grid-template-rows var(--mer-timing--fast);\n}\n\n.filters-container-visible {\n grid-template-rows: 1fr;\n}\n\n.filters-container > div {\n overflow: hidden;\n}\n\n.field-from {\n grid-area: from;\n}\n\n.field-to {\n grid-area: to;\n}\n.field-type {\n grid-area: type;\n}\n.field-user {\n grid-area: user;\n}\n.field-revision {\n grid-area: revision;\n}\n\n// commits grid \"comment\" column\n@include tabular-grid-cell-layout(\n $tabular-grid-selector: \".commits-grid\",\n $tabular-grid-cell-node-type: \"text\",\n $tabular-grid-cell-min-inline-size: 200px,\n $tabular-grid-affected-columns-nth-list: (\n 2\n )\n);\n\n// affected objects grid \"description\" column\n@include tabular-grid-cell-layout(\n $tabular-grid-selector: \".affected-objects-grid\",\n $tabular-grid-cell-node-type: \"text\",\n $tabular-grid-cell-min-inline-size: 200px,\n $tabular-grid-affected-columns-nth-list: (\n 5\n )\n);\n","/* STENCIL IMPORTS */\nimport { Component, Element, h, Host, Prop, State, Watch } from \"@stencil/core\";\n/* OTHER LIBRARIES IMPORTS */\n/* CUSTOM IMPORTS */\nimport { ComboBoxItemModel } from \"@genexus/chameleon-controls-library/dist/types/components/combo-box/types\";\nimport { getIconPath, MercuryBundles } from \"@genexus/mercury\";\nimport { config } from \"../../../common/config\";\nimport { formatDate } from \"../../../common/helpers\";\nimport { Locale } from \"../../../common/locale\";\nimport { ContextMenuInfo } from \"../../../components\";\nimport { ItemNode } from \"../../select-kb-items/select-kb-items\";\nimport {\n hasActiveVersionInList,\n mapObjectTypeToComboBoxItemModel\n} from \"./helpers\";\nimport {\n renderObjectStateWithIcon,\n renderObjectTypeWithIcon\n} from \"../common/utilities\";\nimport { ObjectState } from \"../version-control/common/types\";\n\nconst CSS_BUNDLES: MercuryBundles = [\n \"resets/box-sizing\",\n \"utils/form--full\",\n \"utils/layout\",\n \"utils/spacing\",\n \"utils/typography\",\n \"chameleon/scrollbar\",\n \"components/tabular-grid\",\n \"components/accordion\",\n \"components/sidebar\"\n];\n\nconst FILTER_ICON_PRIMARY = getIconPath({\n category: \"window-tools\",\n name: \"filter\",\n colorType: \"primary\"\n});\n\nconst FILTER_ICON = getIconPath({\n category: \"window-tools\",\n name: \"filter\",\n colorType: \"on-surface\"\n});\n\nconst RESET_ICON = getIconPath({\n category: \"gemini-tools\",\n name: \"reset\",\n colorType: \"primary\"\n});\n\nconst SEARCH_ICON = getIconPath({\n category: \"gemini-tools\",\n name: \"search\",\n colorType: \"on-surface\"\n});\n\n@Component({\n tag: \"gx-ide-team-dev-history\",\n styleUrl: \"history.scss\",\n shadow: true,\n assetsDirs: [\"gx-ide-assets/team-dev-history\"]\n})\nexport class GxIdeTeamDevHistory {\n #_componentLocale: any;\n\n #types: ComboBoxItemModel[] = [];\n\n @Element() el: HTMLGxIdeTeamDevHistoryElement;\n\n #fromEl?: HTMLChEditElement;\n #revisionEl?: HTMLChEditElement;\n #searchEl: HTMLChEditElement;\n #toEl?: HTMLChEditElement;\n #typesEl?: HTMLChComboBoxRenderElement;\n #userEl?: HTMLChEditElement;\n #sidebarEl: HTMLChSidebarElement;\n #revisionsGridEl: HTMLChTabularGridElement;\n\n @State() historyDetail: RevisionDetailData;\n\n /**\n * The files rendered in the table\n */\n @State() objects: RevisionData[] = [];\n\n /**\n * Used to call getObjectsFromVersion from the versionsChanged method only once after receiving the versions for the first time.\n */\n @State() isFirstLoad: boolean = true;\n\n /**\n * Used to hide the select-kb-items when collapsed\n */\n @State() sidebarExpanded: boolean = true;\n\n /**\n * Used to show or hide the filters section\n */\n @State() filtersHidden = true;\n\n /**\n * To show a loader when the component is loading\n */\n @State() loading: boolean = true;\n\n /**\n * The Id of the selected revision in the revisions grid\n */\n @State() selectedRevisionId: string;\n\n /**\n * Used to customize the select-kb-items \"header\" part grid layout\n */\n @State() hasActiveVersion: boolean = false; // TODO:\n\n /**\n * Possible values of type filter\n */\n @Prop() readonly types: ObjectType[];\n\n /**\n * Callback emitted when the user right click on an item\n */\n @Prop() readonly itemContextMenuCallback: (\n info: ContextMenuInfo\n ) => Promise<void>;\n\n /**\n * Callback invoked when user right-clicks on the grid\n */\n @Prop() readonly gridContextMenuCallback: (\n info: ContextMenuInfo\n ) => Promise<void>;\n\n /**\n * The Id of the selected version in the select-kb-items component\n */\n @Prop({ mutable: true }) selectedVersionId: string;\n @Watch(\"selectedVersionId\")\n async selectedVersionIdChanged(newSelectedVersionId: string) {\n this.selectedVersionId = newSelectedVersionId;\n\n // Reset filters\n this.#searchEl.value = null;\n this.#fromEl.value = null;\n this.#toEl.value = null;\n this.#revisionEl.value = null;\n this.#userEl.value = null;\n this.#typesEl.value = this.#types[0]?.value;\n\n await this.#getObjectsFromVersion(newSelectedVersionId);\n }\n\n /**\n * List of versions to show in the versions tree\n */\n @Prop({ mutable: true }) versions: ItemNode[] = [];\n @Watch(\"versions\")\n async versionsListChanged(newVersionsList: ItemNode[]) {\n this.versions = newVersionsList;\n this.hasActiveVersion = hasActiveVersionInList(newVersionsList);\n\n if (\n newVersionsList.length > 0 &&\n this.selectedVersionId &&\n this.isFirstLoad\n ) {\n await this.#getObjectsFromVersion(this.selectedVersionId);\n this.isFirstLoad = false;\n }\n }\n\n /**\n * Callback invoked when is necessary to reload the history info. Receive the filters as parameters and only returns the info corresponding to the master grid.\n\n */\n @Prop() readonly loadCallback: LoadCallback;\n\n /**\n * Callback invoked to obtain detailed info from a revision. As parameter receive internal revision id\n */\n @Prop() readonly loadDetailCallback: LoadDetailCallback;\n\n /**\n * Callback invoked when the selected version changes. As parameter receive the selected version id\n */\n @Prop() readonly selectedVersionChangeCallback: SelectedVersionChangeCallback;\n\n async componentWillLoad() {\n this.#_componentLocale = await Locale.getComponentStrings(this.el);\n this.#types = mapObjectTypeToComboBoxItemModel(this.types);\n }\n\n async componentDidLoad() {\n this.#sidebarEl.addEventListener(\n \"expandedChange\",\n (e: CustomEvent<boolean>) => {\n this.sidebarExpanded = e.detail;\n }\n );\n }\n\n #getObjectsFromVersion = async (versionId: string): Promise<void> => {\n this.loading = true;\n\n const filters: FiltersData = {\n search: this.#searchEl.value ? this.#searchEl.value : \"\",\n from: this.#fromEl.value ? new Date(this.#fromEl.value) : null,\n to: this.#toEl.value ? new Date(this.#toEl.value) : null,\n revision: this.#revisionEl.value ? this.#revisionEl.value : \"\",\n user: this.#userEl.value ? this.#userEl.value : \"\",\n type: this.#typesEl.value === \"all\" ? \"\" : this.#typesEl.value\n };\n\n this.objects = await this.loadCallback(filters, versionId);\n await this.#getSelectedRevision(this.objects[0]?.id);\n this.loading = false;\n };\n\n #getSelectedRevision = async (revisionId: string) => {\n if (revisionId) {\n this.historyDetail = await this.loadDetailCallback(revisionId);\n this.historyDetail.title = this.#formatHistoryDetailDate(\n this.historyDetail.title\n );\n this.selectedRevisionId = revisionId;\n } else {\n this.historyDetail = null;\n }\n };\n\n #registerGridContextMenuListener = (): void => {\n if (this.#revisionsGridEl) {\n this.#revisionsGridEl.addEventListener(\n \"contextmenu\",\n (ev: MouseEvent): void => {\n ev.preventDefault();\n ev.stopPropagation();\n this.#gridContextMenuCallbackHandler(ev);\n }\n );\n }\n };\n\n #gridContextMenuCallbackHandler = async (ev: MouseEvent): Promise<void> => {\n this.gridContextMenuCallback({\n selection: [this.selectedRevisionId],\n clientX: ev.clientX,\n clientY: ev.clientY\n });\n };\n\n #toggleFiltersHandler = () => {\n this.filtersHidden = !this.filtersHidden;\n };\n\n #renderCommitsGrid = (): Element => {\n const tabularGridEmpty = this.objects?.length === 0 || !this.objects;\n return (\n <ch-tabular-grid\n class={{\n \"commits-grid\": true,\n \"tabular-grid\": true,\n \"tabular-grid--empty\": tabularGridEmpty\n }}\n onSelectionChanged={(ev: any) => {\n this.objects.length > 0 &&\n this.#getSelectedRevision(ev.detail.rowsId[0]);\n }}\n ref={(el: HTMLChTabularGridElement) => {\n if (el && this.#revisionsGridEl !== el) {\n this.#revisionsGridEl = el as HTMLChTabularGridElement;\n\n this.#registerGridContextMenuListener();\n\n if (this.objects.length > 0) {\n this.#revisionsGridEl.selectRow(this.objects[0]?.id, true);\n }\n }\n }}\n >\n <ch-tabular-grid-columnset class=\"tabular-grid-column-set\">\n <ch-tabular-grid-column\n column-name={this.#_componentLocale.mainGrid.columns.id}\n column-name-position=\"text\"\n class=\"tabular-grid-column\"\n settingable={false}\n size=\"max-content\"\n ></ch-tabular-grid-column>\n <ch-tabular-grid-column\n column-name={this.#_componentLocale.mainGrid.columns.comment}\n column-name-position=\"text\"\n class=\"tabular-grid-column\"\n settingable={false}\n size=\"1fr\"\n ></ch-tabular-grid-column>\n <ch-tabular-grid-column\n column-name={this.#_componentLocale.mainGrid.columns.user}\n column-name-position=\"text\"\n class=\"tabular-grid-column\"\n settingable={false}\n size=\"max-content\"\n ></ch-tabular-grid-column>\n <ch-tabular-grid-column\n column-name={this.#_componentLocale.mainGrid.columns.commitDate}\n column-name-position=\"text\"\n class=\"tabular-grid-column\"\n settingable={false}\n size=\"max-content\"\n ></ch-tabular-grid-column>\n </ch-tabular-grid-columnset>\n {this.objects.length > 0 ? (\n <ch-tabular-grid-rowset class=\"tabular-grid-rowset\">\n {this.objects.map((obj: RevisionData) => (\n <ch-tabular-grid-row\n rowid={obj.id}\n key={obj.id}\n class=\"tabular-grid-row\"\n >\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n {obj.id}\n </ch-tabular-grid-cell>\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n {obj.comment}\n </ch-tabular-grid-cell>\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n {obj.user}\n </ch-tabular-grid-cell>\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n {`${formatDate(obj.commitDate, \"date-time\")}`}\n </ch-tabular-grid-cell>\n </ch-tabular-grid-row>\n ))}\n </ch-tabular-grid-rowset>\n ) : (\n <ch-tabular-grid-rowset class=\"tabular-grid-rowset\">\n <ch-tabular-grid-rowset-empty>\n <gx-ide-empty-state\n stateTitle={this.#_componentLocale.emptyRevisionsText}\n isAnimated={true}\n ></gx-ide-empty-state>\n </ch-tabular-grid-rowset-empty>\n </ch-tabular-grid-rowset>\n )}\n\n <ch-tabular-grid-row class=\"tabular-grid-row\"></ch-tabular-grid-row>\n </ch-tabular-grid>\n );\n };\n\n #renderAffectedObjectsGrid = (): Element => {\n const iterable = this.historyDetail ? this.historyDetail.objects : [];\n const tabularGridEmpty =\n this.historyDetail?.objects.length === 0 || !this.historyDetail;\n return (\n <ch-tabular-grid\n class={{\n \"affected-objects-grid\": true,\n \"tabular-grid\": true,\n \"tabular-grid--empty\": tabularGridEmpty\n }}\n >\n <ch-tabular-grid-columnset class=\"tabular-grid-column-set\">\n <ch-tabular-grid-column\n column-name={\n this.#_componentLocale.affectedObjectsGrid.columns.name\n }\n column-name-position=\"text\"\n class=\"tabular-grid-column\"\n settingable={false}\n size={config.tabularGrid.colSize.maxContent}\n ></ch-tabular-grid-column>\n <ch-tabular-grid-column\n column-name={\n this.#_componentLocale.affectedObjectsGrid.columns.types\n }\n column-name-position=\"text\"\n class=\"tabular-grid-column\"\n settingable={false}\n size={config.tabularGrid.colSize.maxContent}\n ></ch-tabular-grid-column>\n <ch-tabular-grid-column\n column-name={\n this.#_componentLocale.affectedObjectsGrid.columns.description\n }\n column-name-position=\"text\"\n class=\"tabular-grid-column\"\n settingable={false}\n size={config.tabularGrid.colSize.auto}\n ></ch-tabular-grid-column>\n <ch-tabular-grid-column\n column-name={\n this.#_componentLocale.affectedObjectsGrid.columns.action\n }\n column-name-position=\"text\"\n class=\"tabular-grid-column\"\n settingable={false}\n size={config.tabularGrid.colSize.maxContent}\n ></ch-tabular-grid-column>\n </ch-tabular-grid-columnset>\n {this.historyDetail && this.historyDetail.objects.length > 0 ? (\n <ch-tabular-grid-rowset class=\"tabular-grid-rowset\">\n {iterable.map((obj: ObjectData) => (\n <ch-tabular-grid-row class=\"tabular-grid-row\">\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n {obj.name}\n </ch-tabular-grid-cell>\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n {renderObjectTypeWithIcon(obj.type)}\n </ch-tabular-grid-cell>\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n {obj.description}\n </ch-tabular-grid-cell>\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n {renderObjectStateWithIcon(obj.state)}\n </ch-tabular-grid-cell>\n </ch-tabular-grid-row>\n ))}\n </ch-tabular-grid-rowset>\n ) : (\n <ch-tabular-grid-rowset class=\"tabular-grid-rowset\">\n <ch-tabular-grid-rowset-empty>\n <gx-ide-empty-state\n stateIconSrc={FILTER_ICON}\n stateTitle={this.#_componentLocale.emptyHistoryDetailText}\n isAnimated={true}\n ></gx-ide-empty-state>\n </ch-tabular-grid-rowset-empty>\n </ch-tabular-grid-rowset>\n )}\n\n <ch-tabular-grid-row class=\"tabular-grid-row\"></ch-tabular-grid-row>\n </ch-tabular-grid>\n );\n };\n\n #renderLoader = (): Element => {\n return (\n this.loading && (\n <div class=\"main__content scrollable\">\n <gx-ide-loader\n loaderTitle={this.#_componentLocale.loader.title}\n show\n description={this.#_componentLocale.loader.description}\n ></gx-ide-loader>\n </div>\n )\n );\n };\n\n #formatHistoryDetailDate = (title: string): string => {\n const parts = title.split(\" - \");\n const datePart = new Date(parts[1]);\n const formattedDate = formatDate(datePart, \"date-time\");\n return `${parts[0]} - ${formattedDate} - ${parts[2]}`;\n };\n\n render() {\n return (\n <Host class=\"widget\">\n <ch-theme model={CSS_BUNDLES}></ch-theme>\n\n <ch-sidebar\n ref={(el: HTMLChSidebarElement) =>\n (this.#sidebarEl = el as HTMLChSidebarElement)\n }\n class=\"sidebar\"\n expanded={this.sidebarExpanded}\n expandButtonCollapseAccessibleName={\n this.#_componentLocale.sidebar.collapseAriaLabel\n }\n expandButtonExpandAccessibleName={\n this.#_componentLocale.sidebar.expandAriaLabel\n }\n showExpandButton\n >\n <gx-ide-select-kb-items\n class={{\n \"sidebar-expanded\": this.sidebarExpanded,\n \"has-active-version\": this.hasActiveVersion\n }}\n checkboxType=\"none\"\n itemsList={this.versions}\n expandOnClick={false}\n selectionChanged={this.selectedVersionChangeCallback}\n itemContextMenuCallback={this.itemContextMenuCallback}\n ></gx-ide-select-kb-items>\n </ch-sidebar>\n\n <main class=\"main spacing-body-block-start spacing-body-inline\">\n <div class=\"main__header\">\n <div class=\"search-filter\">\n <div class=\"field field-inline\">\n <label class=\"label\" htmlFor=\"search\">\n {this.#_componentLocale.filters.search}\n </label>\n <ch-edit\n value=\"\"\n class=\"input\"\n startImgSrc={SEARCH_ICON}\n part=\"search\"\n id=\"search\"\n ref={(el: HTMLChEditElement) =>\n (this.#searchEl = el as HTMLChEditElement)\n }\n ></ch-edit>\n </div>\n\n <button\n id=\"filter-toggle-button\"\n class=\"button-teritary button-icon-only\"\n aria-label={this.#_componentLocale.searchFilter.filterAriaLabel}\n aria-expanded={this.filtersHidden ? \"false\" : \"true\"}\n aria-controls=\"filters-container\"\n onClick={() => this.#toggleFiltersHandler()}\n >\n <ch-image class=\"icon-md\" src={FILTER_ICON_PRIMARY}></ch-image>\n </button>\n\n <button\n class=\"button-teritary button-icon-only\"\n aria-label={this.#_componentLocale.searchFilter.reloadAriaLabel}\n onClick={() =>\n this.#getObjectsFromVersion(this.selectedVersionId)\n }\n part={this.#_componentLocale.searchFilter.reloadAriaLabel}\n >\n <ch-image class=\"icon-md\" src={RESET_ICON}></ch-image>\n </button>\n </div>\n\n <div\n id=\"filters-container\"\n aria-labelledby=\"filter-toggle-button\"\n class={{\n \"filters-container-visible\": !this.filtersHidden,\n \"filters-container\": true\n }}\n inert={this.filtersHidden}\n hidden={this.filtersHidden}\n >\n <div>\n <div class=\"filters-grid\">\n <div class=\"field field-block field-from\">\n <label class=\"label\" htmlFor=\"from\">\n {this.#_componentLocale.filters.from}\n </label>\n <ch-edit\n value=\"\"\n class=\"input\"\n type=\"date\"\n part=\"from\"\n id=\"from\"\n ref={(el: HTMLChEditElement) =>\n (this.#fromEl = el as HTMLChEditElement)\n }\n ></ch-edit>\n </div>\n\n <div class=\"field field-block field-to\">\n <label class=\"label\" htmlFor=\"to\">\n {this.#_componentLocale.filters.to}\n </label>\n <ch-edit\n value=\"\"\n class=\"input\"\n type=\"date\"\n id=\"to\"\n ref={(el: HTMLChEditElement) =>\n (this.#toEl = el as HTMLChEditElement)\n }\n ></ch-edit>\n </div>\n\n <div class=\"field field-block field-type\">\n <label class=\"label\" htmlFor=\"type\">\n {this.#_componentLocale.filters.type}\n </label>\n\n <ch-combo-box-render\n accessibleName=\"types\"\n class=\"combo-box\"\n part=\"type\"\n model={this.#types}\n value={this.#types[0]?.value}\n ref={(el: HTMLChComboBoxRenderElement) =>\n (this.#typesEl = el as HTMLChComboBoxRenderElement)\n }\n ></ch-combo-box-render>\n </div>\n\n <div class=\"field field-block field-user\">\n <label class=\"label\" htmlFor=\"user\">\n {this.#_componentLocale.filters.user}\n </label>\n\n <ch-edit\n value=\"\"\n part=\"user\"\n class=\"input\"\n id=\"user\"\n ref={(el: HTMLChEditElement) =>\n (this.#userEl = el as HTMLChEditElement)\n }\n ></ch-edit>\n </div>\n\n <div class=\"field field-block field-revision\">\n <label class=\"label\" htmlFor=\"revision\">\n {this.#_componentLocale.filters.revision}\n </label>\n\n <ch-edit\n value=\"\"\n part=\"revision\"\n class=\"input\"\n id=\"revision\"\n ref={(el: HTMLChEditElement) =>\n (this.#revisionEl = el as HTMLChEditElement)\n }\n ></ch-edit>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n {this.#renderLoader()}\n\n {!this.loading && (\n <div class=\"main__content scrollable\">\n {this.#renderCommitsGrid()}\n\n <div class=\"field field-block\">\n <label class=\"label\" htmlFor=\"comment-area\">\n {this.historyDetail ? this.historyDetail.title : null}\n </label>\n <ch-edit\n class=\"input comment-text-area\"\n value={this.historyDetail ? this.historyDetail.comment : null}\n multiline\n autoGrow\n readonly={true}\n part=\"comment-area\"\n id=\"comment-area\"\n ></ch-edit>\n </div>\n\n {this.#renderAffectedObjectsGrid()}\n </div>\n )}\n </main>\n </Host>\n );\n }\n}\n\n// Types\nexport type ObjectType = {\n id: string;\n name: string;\n icon?: string;\n};\n\nexport type FiltersData = {\n search: string;\n from?: Date;\n to?: Date;\n user?: string;\n revision?: string;\n type?: string;\n};\nexport type RevisionData = {\n id: string;\n comment: string;\n user: string;\n commitDate: Date;\n};\n\nexport type RevisionDetailData = {\n title: string;\n comment: string;\n objects: ObjectData[];\n};\nexport type ObjectData = {\n typeIcon: string;\n state: ObjectState;\n name: string;\n type: ObjectType;\n description: string;\n action: string;\n};\n\nexport type LoadCallback = (\n filters: FiltersData,\n versionId: string\n) => Promise<RevisionData[]>;\n\nexport type LoadDetailCallback = (\n revision: string\n) => Promise<RevisionDetailData>;\n\nexport type SelectedVersionChangeCallback = (\n selectedVersion: string[]\n) => Promise<void>;\n"],"version":3}
1
+ {"file":"gx-ide-team-dev-history.js","mappings":";;;;;;;;;;AAKO,MAAM,gCAAgC,GAAG,CAC9C,eAA6B,KAE7B,eAAe,CAAC,GAAG,CAAC,UAAU,KAAK;IACjC,KAAK,EAAE,UAAU,CAAC,EAAE;IACpB,OAAO,EAAE,UAAU,CAAC,IAAI;IACxB,WAAW,EAAE,UAAU,CAAC,IAAI;CAC7B,CAAC,CAAC,CAAC;AAUN,MAAM,aAAa,GAAG,CAAC,IAAS;IAC9B,IAAI,IAAI,CAAC,MAAM,EAAE;QACf,OAAO,IAAI,CAAC;KACb;IACD,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;QAC7B,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;KACvC;IACD,OAAO,KAAK,CAAC;AACf,CAAC,CAAC;AAEK,MAAM,sBAAsB,GAAG,CAAC,YAAwB;IAC7D,OAAO,YAAY,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;AAC1C,CAAC;;AClCD,MAAM,UAAU,GAAG,kgEAAkgE;;;;;;;;;;;;;;;;;;;ACqBrhE,MAAM,WAAW,GAAmB;IAClC,mBAAmB;IACnB,kBAAkB;IAClB,cAAc;IACd,eAAe;IACf,kBAAkB;IAClB,qBAAqB;IACrB,yBAAyB;IACzB,sBAAsB;IACtB,oBAAoB;CACrB,CAAC;AAEF,MAAM,mBAAmB,GAAG,WAAW,CAAC;IACtC,QAAQ,EAAE,cAAc;IACxB,IAAI,EAAE,QAAQ;IACd,SAAS,EAAE,SAAS;CACrB,CAAC,CAAC;AAEH,MAAM,WAAW,GAAG,WAAW,CAAC;IAC9B,QAAQ,EAAE,cAAc;IACxB,IAAI,EAAE,QAAQ;IACd,SAAS,EAAE,YAAY;CACxB,CAAC,CAAC;AAEH,MAAM,UAAU,GAAG,WAAW,CAAC;IAC7B,QAAQ,EAAE,cAAc;IACxB,IAAI,EAAE,OAAO;IACb,SAAS,EAAE,SAAS;CACrB,CAAC,CAAC;AAEH,MAAM,WAAW,GAAG,WAAW,CAAC;IAC9B,QAAQ,EAAE,cAAc;IACxB,IAAI,EAAE,QAAQ;IACd,SAAS,EAAE,YAAY;CACxB,CAAC,CAAC;MAQUA,qBAAmB;;;;;QAC9B,wDAAuB;QAEvB,qCAA8B,EAAE,EAAC;QAIjC,8CAA4B;QAC5B,kDAAgC;QAChC,gDAA6B;QAC7B,4CAA0B;QAC1B,+CAAuC;QACvC,8CAA4B;QAC5B,iDAAiC;QACjC,uDAA2C;QAmI3C,qDAAyB,OACvB,SAAiB,EACjB,SAAkB;;YAElB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;YAEpB,MAAM,OAAO,GAAgB;gBAC3B,MAAM,EAAE,uBAAA,IAAI,qCAAU,CAAC,KAAK,GAAG,uBAAA,IAAI,qCAAU,CAAC,KAAK,GAAG,EAAE;gBACxD,IAAI,EAAE,uBAAA,IAAI,mCAAQ,CAAC,KAAK,GAAG,IAAI,IAAI,CAAC,uBAAA,IAAI,mCAAQ,CAAC,KAAK,CAAC,GAAG,IAAI;gBAC9D,EAAE,EAAE,uBAAA,IAAI,iCAAM,CAAC,KAAK,GAAG,IAAI,IAAI,CAAC,uBAAA,IAAI,iCAAM,CAAC,KAAK,CAAC,GAAG,IAAI;gBACxD,QAAQ,EAAE,uBAAA,IAAI,uCAAY,CAAC,KAAK,GAAG,uBAAA,IAAI,uCAAY,CAAC,KAAK,GAAG,EAAE;gBAC9D,IAAI,EAAE,uBAAA,IAAI,mCAAQ,CAAC,KAAK,GAAG,uBAAA,IAAI,mCAAQ,CAAC,KAAK,GAAG,EAAE;gBAClD,IAAI,EAAE,uBAAA,IAAI,oCAAS,CAAC,KAAK,KAAK,KAAK,GAAG,EAAE,GAAG,uBAAA,IAAI,oCAAS,CAAC,KAAK;aAC/D,CAAC;YAEF,IAAI,CAAC,OAAO,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;YACtE,MAAM,uBAAA,IAAI,gDAAqB,MAAzB,IAAI,EAAsB,MAAA,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,0CAAE,EAAE,CAAC,CAAC;YACrD,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;SACtB,EAAC;QAEF,mDAAuB,OAAO,UAAkB;YAC9C,IAAI,UAAU,EAAE;gBACd,IAAI,CAAC,aAAa,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC,CAAC;gBAC/D,IAAI,CAAC,aAAa,CAAC,KAAK,GAAG,uBAAA,IAAI,oDAAyB,MAA7B,IAAI,EAC7B,IAAI,CAAC,aAAa,CAAC,KAAK,CACzB,CAAC;gBACF,IAAI,CAAC,kBAAkB,GAAG,UAAU,CAAC;aACtC;iBAAM;gBACL,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;aAC3B;SACF,EAAC;QAEF,+DAAmC;YACjC,IAAI,uBAAA,IAAI,4CAAiB,EAAE;gBACzB,uBAAA,IAAI,4CAAiB,CAAC,gBAAgB,CACpC,aAAa,EACb,CAAC,EAAc;oBACb,EAAE,CAAC,cAAc,EAAE,CAAC;oBACpB,EAAE,CAAC,eAAe,EAAE,CAAC;oBACrB,uBAAA,IAAI,2DAAgC,MAApC,IAAI,EAAiC,EAAE,CAAC,CAAC;iBAC1C,CACF,CAAC;aACH;SACF,EAAC;QAEF,8DAAkC,OAAO,EAAc;YACrD,IAAI,CAAC,uBAAuB,CAAC;gBAC3B,SAAS,EAAE,CAAC,IAAI,CAAC,kBAAkB,CAAC;gBACpC,OAAO,EAAE,EAAE,CAAC,OAAO;gBACnB,OAAO,EAAE,EAAE,CAAC,OAAO;aACpB,CAAC,CAAC;SACJ,EAAC;QAEF,oDAAwB;YACtB,IAAI,CAAC,aAAa,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC;SAC1C,EAAC;QAEF,iDAAqB;;YACnB,MAAM,gBAAgB,GAAG,CAAA,MAAA,IAAI,CAAC,OAAO,0CAAE,MAAM,MAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;YACrE,QACE,uBACE,KAAK,EAAE;oBACL,cAAc,EAAE,IAAI;oBACpB,cAAc,EAAE,IAAI;oBACpB,qBAAqB,EAAE,gBAAgB;iBACxC,EACD,kBAAkB,EAAE,CAAC,EAAO;oBAC1B,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC;wBACrB,uBAAA,IAAI,gDAAqB,MAAzB,IAAI,EAAsB,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;iBAClD,EACD,GAAG,EAAE,CAAC,EAA4B;;oBAChC,IAAI,EAAE,IAAI,uBAAA,IAAI,4CAAiB,KAAK,EAAE,EAAE;wBACtC,uBAAA,IAAI,wCAAoB,EAA8B,MAAA,CAAC;wBAEvD,uBAAA,IAAI,4DAAiC,MAArC,IAAI,CAAmC,CAAC;wBAExC,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;4BAC3B,uBAAA,IAAI,4CAAiB,CAAC,SAAS,CAAC,MAAA,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,0CAAE,EAAE,EAAE,IAAI,CAAC,CAAC;yBAC5D;qBACF;iBACF,IAED,iCAA2B,KAAK,EAAC,yBAAyB,IACxD,6CACe,uBAAA,IAAI,6CAAkB,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,0BAClC,MAAM,EAC3B,KAAK,EAAC,qBAAqB,EAC3B,WAAW,EAAE,KAAK,EAClB,IAAI,EAAC,aAAa,GACM,EAC1B,6CACe,uBAAA,IAAI,6CAAkB,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,0BACvC,MAAM,EAC3B,KAAK,EAAC,qBAAqB,EAC3B,WAAW,EAAE,KAAK,EAClB,IAAI,EAAC,KAAK,GACc,EAC1B,6CACe,uBAAA,IAAI,6CAAkB,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,0BACpC,MAAM,EAC3B,KAAK,EAAC,qBAAqB,EAC3B,WAAW,EAAE,KAAK,EAClB,IAAI,EAAC,aAAa,GACM,EAC1B,6CACe,uBAAA,IAAI,6CAAkB,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,0BAC1C,MAAM,EAC3B,KAAK,EAAC,qBAAqB,EAC3B,WAAW,EAAE,KAAK,EAClB,IAAI,EAAC,aAAa,GACM,CACA,EAC3B,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,IACtB,8BAAwB,KAAK,EAAC,qBAAqB,IAChD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAiB,MAClC,2BACE,KAAK,EAAE,GAAG,CAAC,EAAE,EACb,GAAG,EAAE,GAAG,CAAC,EAAE,EACX,KAAK,EAAC,kBAAkB,IAExB,4BAAsB,KAAK,EAAC,mBAAmB,IAC5C,GAAG,CAAC,EAAE,CACc,EACvB,4BAAsB,KAAK,EAAC,mBAAmB,IAC5C,GAAG,CAAC,OAAO,CACS,EACvB,4BAAsB,KAAK,EAAC,mBAAmB,IAC5C,GAAG,CAAC,IAAI,CACY,EACvB,4BAAsB,KAAK,EAAC,mBAAmB,IAC5C,GAAG,UAAU,CAAC,GAAG,CAAC,UAAU,EAAE,WAAW,CAAC,EAAE,CACxB,CACH,CACvB,CAAC,CACqB,KAEzB,8BAAwB,KAAK,EAAC,qBAAqB,IACjD,wCACE,0BACE,UAAU,EAAE,uBAAA,IAAI,6CAAkB,CAAC,kBAAkB,EACrD,UAAU,EAAE,IAAI,GACI,CACO,CACR,CAC1B,EAED,2BAAqB,KAAK,EAAC,kBAAkB,GAAuB,CACpD,EAClB;SACH,EAAC;QAEF,yDAA6B;;YAC3B,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,GAAG,EAAE,CAAC;YACtE,MAAM,gBAAgB,GACpB,CAAA,MAAA,IAAI,CAAC,aAAa,0CAAE,OAAO,CAAC,MAAM,MAAK,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC;YAClE,QACE,uBACE,KAAK,EAAE;oBACL,uBAAuB,EAAE,IAAI;oBAC7B,cAAc,EAAE,IAAI;oBACpB,qBAAqB,EAAE,gBAAgB;iBACxC,IAED,iCAA2B,KAAK,EAAC,yBAAyB,IACxD,6CAEI,uBAAA,IAAI,6CAAkB,CAAC,mBAAmB,CAAC,OAAO,CAAC,IAAI,0BAEpC,MAAM,EAC3B,KAAK,EAAC,qBAAqB,EAC3B,WAAW,EAAE,KAAK,EAClB,IAAI,EAAE,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,UAAU,GACnB,EAC1B,6CAEI,uBAAA,IAAI,6CAAkB,CAAC,mBAAmB,CAAC,OAAO,CAAC,KAAK,0BAErC,MAAM,EAC3B,KAAK,EAAC,qBAAqB,EAC3B,WAAW,EAAE,KAAK,EAClB,IAAI,EAAE,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,UAAU,GACnB,EAC1B,6CAEI,uBAAA,IAAI,6CAAkB,CAAC,mBAAmB,CAAC,OAAO,CAAC,WAAW,0BAE3C,MAAM,EAC3B,KAAK,EAAC,qBAAqB,EAC3B,WAAW,EAAE,KAAK,EAClB,IAAI,EAAE,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,GACb,EAC1B,6CAEI,uBAAA,IAAI,6CAAkB,CAAC,mBAAmB,CAAC,OAAO,CAAC,MAAM,0BAEtC,MAAM,EAC3B,KAAK,EAAC,qBAAqB,EAC3B,WAAW,EAAE,KAAK,EAClB,IAAI,EAAE,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,UAAU,GACnB,CACA,EAC3B,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,IAC1D,8BAAwB,KAAK,EAAC,qBAAqB,IAChD,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAe,MAC5B,2BAAqB,KAAK,EAAC,kBAAkB,IAC3C,4BAAsB,KAAK,EAAC,mBAAmB,IAC5C,GAAG,CAAC,IAAI,CACY,EACvB,4BAAsB,KAAK,EAAC,mBAAmB,IAC5C,wBAAwB,CAAC,GAAG,CAAC,IAAI,CAAC,CACd,EACvB,4BAAsB,KAAK,EAAC,mBAAmB,IAC5C,GAAG,CAAC,WAAW,CACK,EACvB,4BAAsB,KAAK,EAAC,mBAAmB,IAC5C,yBAAyB,CAAC,GAAG,CAAC,KAAK,CAAC,CAChB,CACH,CACvB,CAAC,CACqB,KAEzB,8BAAwB,KAAK,EAAC,qBAAqB,IACjD,wCACE,0BACE,YAAY,EAAE,WAAW,EACzB,UAAU,EAAE,uBAAA,IAAI,6CAAkB,CAAC,sBAAsB,EACzD,UAAU,EAAE,IAAI,GACI,CACO,CACR,CAC1B,EAED,2BAAqB,KAAK,EAAC,kBAAkB,GAAuB,CACpD,EAClB;SACH,EAAC;QAEF,4CAAgB;YACd,QACE,IAAI,CAAC,OAAO,KACV,WAAK,KAAK,EAAC,0BAA0B,IACnC,qBACE,WAAW,EAAE,uBAAA,IAAI,6CAAkB,CAAC,MAAM,CAAC,KAAK,EAChD,IAAI,QACJ,WAAW,EAAE,uBAAA,IAAI,6CAAkB,CAAC,MAAM,CAAC,WAAW,GACvC,CACb,CACP,EACD;SACH,EAAC;QAEF,uDAA2B,CAAC,KAAa;YACvC,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YACjC,MAAM,QAAQ,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YACpC,MAAM,aAAa,GAAG,UAAU,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;YACxD,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,MAAM,aAAa,MAAM,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;SACvD,EAAC;;uBA5XiC,EAAE;2BAKL,IAAI;+BAKA,IAAI;6BAKf,IAAI;uBAKD,IAAI;;gCAUK,KAAK;;;;;wBAgDM,EAAE;;;;;IAtBlD,MAAM,wBAAwB,CAC5B,oBAA4B,EAC5B,oBAA6B;;QAE7B,IAAI,oBAAoB,KAAK,oBAAoB,EAAE;YACjD,OAAO;SACR;;QAGD,uBAAA,IAAI,qCAAU,CAAC,KAAK,GAAG,IAAI,CAAC;QAC5B,uBAAA,IAAI,mCAAQ,CAAC,KAAK,GAAG,IAAI,CAAC;QAC1B,uBAAA,IAAI,iCAAM,CAAC,KAAK,GAAG,IAAI,CAAC;QACxB,uBAAA,IAAI,uCAAY,CAAC,KAAK,GAAG,IAAI,CAAC;QAC9B,uBAAA,IAAI,mCAAQ,CAAC,KAAK,GAAG,IAAI,CAAC;QAC1B,uBAAA,IAAI,oCAAS,CAAC,KAAK,GAAG,MAAA,uBAAA,IAAI,kCAAO,CAAC,CAAC,CAAC,0CAAE,KAAK,CAAC;QAE5C,MAAM,uBAAA,IAAI,kDAAuB,MAA3B,IAAI,EAAwB,oBAAoB,EAAE,KAAK,CAAC,CAAC;KAChE;IAOD,MAAM,mBAAmB,CAAC,eAA2B;QACnD,IAAI,CAAC,QAAQ,GAAG,eAAe,CAAC;QAChC,IAAI,CAAC,gBAAgB,GAAG,sBAAsB,CAAC,eAAe,CAAC,CAAC;QAEhE,IACE,eAAe,CAAC,MAAM,GAAG,CAAC;YAC1B,IAAI,CAAC,iBAAiB;YACtB,IAAI,CAAC,WAAW,EAChB;YACA,MAAM,uBAAA,IAAI,kDAAuB,MAA3B,IAAI,EAAwB,IAAI,CAAC,iBAAiB,EAAE,KAAK,CAAC,CAAC;YACjE,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;SAC1B;KACF;IAkBD,MAAM,iBAAiB;QACrB,uBAAA,IAAI,yCAAqB,MAAM,MAAM,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,CAAC,MAAA,CAAC;QACnE,uBAAA,IAAI,8BAAU,gCAAgC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAA,CAAC;KAC5D;IAED,MAAM,gBAAgB;QACpB,uBAAA,IAAI,sCAAW,CAAC,gBAAgB,CAC9B,gBAAgB,EAChB,CAAC,CAAuB;YACtB,IAAI,CAAC,eAAe,GAAG,CAAC,CAAC,MAAM,CAAC;SACjC,CACF,CAAC;KACH;IAoQD,MAAM;;QACJ,QACE,EAAC,IAAI,IAAC,KAAK,EAAC,QAAQ,IAClB,gBAAU,KAAK,EAAE,WAAW,GAAa,EAEzC,kBACE,GAAG,EAAE,CAAC,EAAwB,MAC3B,uBAAA,IAAI,kCAAc,EAA0B,MAAA,CAAC,EAEhD,KAAK,EAAC,SAAS,EACf,QAAQ,EAAE,IAAI,CAAC,eAAe,EAC9B,kCAAkC,EAChC,uBAAA,IAAI,6CAAkB,CAAC,OAAO,CAAC,iBAAiB,EAElD,gCAAgC,EAC9B,uBAAA,IAAI,6CAAkB,CAAC,OAAO,CAAC,eAAe,EAEhD,gBAAgB,UAEhB,8BACE,KAAK,EAAE;gBACL,kBAAkB,EAAE,IAAI,CAAC,eAAe;gBACxC,oBAAoB,EAAE,IAAI,CAAC,gBAAgB;aAC5C,EACD,YAAY,EAAC,MAAM,EACnB,SAAS,EAAE,IAAI,CAAC,QAAQ,EACxB,aAAa,EAAE,KAAK,EACpB,gBAAgB,EAAE,IAAI,CAAC,6BAA6B,EACpD,uBAAuB,EAAE,IAAI,CAAC,uBAAuB,GAC7B,CACf,EAEb,YAAM,KAAK,EAAC,mDAAmD,IAC7D,WAAK,KAAK,EAAC,cAAc,IACvB,WAAK,KAAK,EAAC,eAAe,IACxB,WAAK,KAAK,EAAC,oBAAoB,IAC7B,aAAO,KAAK,EAAC,OAAO,EAAC,OAAO,EAAC,QAAQ,IAClC,uBAAA,IAAI,6CAAkB,CAAC,OAAO,CAAC,MAAM,CAChC,EACR,eACE,KAAK,EAAC,EAAE,EACR,KAAK,EAAC,OAAO,EACb,WAAW,EAAE,WAAW,EACxB,IAAI,EAAC,QAAQ,EACb,EAAE,EAAC,QAAQ,EACX,GAAG,EAAE,CAAC,EAAqB,MACxB,uBAAA,IAAI,iCAAa,EAAuB,MAAA,CAAC,GAEnC,CACP,EAEN,cACE,EAAE,EAAC,sBAAsB,EACzB,KAAK,EAAC,kCAAkC,gBAC5B,uBAAA,IAAI,6CAAkB,CAAC,YAAY,CAAC,eAAe,mBAChD,IAAI,CAAC,aAAa,GAAG,OAAO,GAAG,MAAM,mBACtC,mBAAmB,EACjC,OAAO,EAAE,MAAM,uBAAA,IAAI,iDAAsB,MAA1B,IAAI,CAAwB,IAE3C,gBAAU,KAAK,EAAC,SAAS,EAAC,GAAG,EAAE,mBAAmB,GAAa,CACxD,EAET,cACE,KAAK,EAAC,kCAAkC,gBAC5B,uBAAA,IAAI,6CAAkB,CAAC,YAAY,CAAC,eAAe,EAC/D,OAAO,EAAE,MACP,uBAAA,IAAI,kDAAuB,MAA3B,IAAI,EAAwB,IAAI,CAAC,iBAAiB,EAAE,IAAI,CAAC,EAE3D,IAAI,EAAE,uBAAA,IAAI,6CAAkB,CAAC,YAAY,CAAC,eAAe,IAEzD,gBAAU,KAAK,EAAC,SAAS,EAAC,GAAG,EAAE,UAAU,GAAa,CAC/C,CACL,EAEN,WACE,EAAE,EAAC,mBAAmB,qBACN,sBAAsB,EACtC,KAAK,EAAE;gBACL,2BAA2B,EAAE,CAAC,IAAI,CAAC,aAAa;gBAChD,mBAAmB,EAAE,IAAI;aAC1B,EACD,KAAK,EAAE,IAAI,CAAC,aAAa,EACzB,MAAM,EAAE,IAAI,CAAC,aAAa,IAE1B,eACE,WAAK,KAAK,EAAC,cAAc,IACvB,WAAK,KAAK,EAAC,8BAA8B,IACvC,aAAO,KAAK,EAAC,OAAO,EAAC,OAAO,EAAC,MAAM,IAChC,uBAAA,IAAI,6CAAkB,CAAC,OAAO,CAAC,IAAI,CAC9B,EACR,eACE,KAAK,EAAC,EAAE,EACR,KAAK,EAAC,OAAO,EACb,IAAI,EAAC,MAAM,EACX,IAAI,EAAC,MAAM,EACX,EAAE,EAAC,MAAM,EACT,GAAG,EAAE,CAAC,EAAqB,MACxB,uBAAA,IAAI,+BAAW,EAAuB,MAAA,CAAC,GAEjC,CACP,EAEN,WAAK,KAAK,EAAC,4BAA4B,IACrC,aAAO,KAAK,EAAC,OAAO,EAAC,OAAO,EAAC,IAAI,IAC9B,uBAAA,IAAI,6CAAkB,CAAC,OAAO,CAAC,EAAE,CAC5B,EACR,eACE,KAAK,EAAC,EAAE,EACR,KAAK,EAAC,OAAO,EACb,IAAI,EAAC,MAAM,EACX,EAAE,EAAC,IAAI,EACP,GAAG,EAAE,CAAC,EAAqB,MACxB,uBAAA,IAAI,6BAAS,EAAuB,MAAA,CAAC,GAE/B,CACP,EAEN,WAAK,KAAK,EAAC,8BAA8B,IACvC,aAAO,KAAK,EAAC,OAAO,EAAC,OAAO,EAAC,MAAM,IAChC,uBAAA,IAAI,6CAAkB,CAAC,OAAO,CAAC,IAAI,CAC9B,EAER,2BACE,cAAc,EAAC,OAAO,EACtB,KAAK,EAAC,WAAW,EACjB,IAAI,EAAC,MAAM,EACX,KAAK,EAAE,uBAAA,IAAI,kCAAO,EAClB,KAAK,EAAE,MAAA,uBAAA,IAAI,kCAAO,CAAC,CAAC,CAAC,0CAAE,KAAK,EAC5B,GAAG,EAAE,CAAC,EAA+B,MAClC,uBAAA,IAAI,gCAAY,EAAiC,MAAA,CAAC,GAEhC,CACnB,EAEN,WAAK,KAAK,EAAC,8BAA8B,IACvC,aAAO,KAAK,EAAC,OAAO,EAAC,OAAO,EAAC,MAAM,IAChC,uBAAA,IAAI,6CAAkB,CAAC,OAAO,CAAC,IAAI,CAC9B,EAER,eACE,KAAK,EAAC,EAAE,EACR,IAAI,EAAC,MAAM,EACX,KAAK,EAAC,OAAO,EACb,EAAE,EAAC,MAAM,EACT,GAAG,EAAE,CAAC,EAAqB,MACxB,uBAAA,IAAI,+BAAW,EAAuB,MAAA,CAAC,GAEjC,CACP,EAEN,WAAK,KAAK,EAAC,kCAAkC,IAC3C,aAAO,KAAK,EAAC,OAAO,EAAC,OAAO,EAAC,UAAU,IACpC,uBAAA,IAAI,6CAAkB,CAAC,OAAO,CAAC,QAAQ,CAClC,EAER,eACE,KAAK,EAAC,EAAE,EACR,IAAI,EAAC,UAAU,EACf,KAAK,EAAC,OAAO,EACb,EAAE,EAAC,UAAU,EACb,GAAG,EAAE,CAAC,EAAqB,MACxB,uBAAA,IAAI,mCAAe,EAAuB,MAAA,CAAC,GAErC,CACP,CACF,CACF,CACF,CACF,EAEL,uBAAA,IAAI,yCAAc,MAAlB,IAAI,CAAgB,EAEpB,CAAC,IAAI,CAAC,OAAO,KACZ,WAAK,KAAK,EAAC,0BAA0B,IAClC,uBAAA,IAAI,8CAAmB,MAAvB,IAAI,CAAqB,EAE1B,WAAK,KAAK,EAAC,mBAAmB,IAC5B,aAAO,KAAK,EAAC,OAAO,EAAC,OAAO,EAAC,cAAc,IACxC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,GAAG,IAAI,CAC/C,EACR,eACE,KAAK,EAAC,yBAAyB,EAC/B,KAAK,EAAE,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,GAAG,IAAI,EAC7D,SAAS,QACT,QAAQ,QACR,QAAQ,EAAE,IAAI,EACd,IAAI,EAAC,cAAc,EACnB,EAAE,EAAC,cAAc,GACR,CACP,EAEL,uBAAA,IAAI,sDAA2B,MAA/B,IAAI,CAA6B,CAC9B,CACP,CACI,CACF,EACP;KACH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","names":["GxIdeTeamDevHistory"],"sources":["src/components/team-dev/history/helpers.ts","src/components/team-dev/history/history.scss?tag=gx-ide-team-dev-history&encapsulation=shadow","src/components/team-dev/history/history.tsx"],"sourcesContent":["import { ComboBoxModel } from \"@genexus/chameleon-controls-library\";\nimport { ObjectType, GxOption } from \"../../../common/types\";\nimport { ComboBoxItemModel } from \"@genexus/chameleon-controls-library/dist/types/components/combo-box/types\";\nimport { ItemNode } from \"../../select-kb-items/select-kb-items\";\n\nexport const mapObjectTypeToComboBoxItemModel = (\n objectTypeModel: ObjectType[]\n): ComboBoxItemModel[] =>\n objectTypeModel.map(objectType => ({\n value: objectType.id,\n caption: objectType.name,\n startImgSrc: objectType.icon\n }));\n\nexport const mapCategoryToComboBoxItemModel = (\n categoryModel: GxOption[]\n): ComboBoxModel =>\n categoryModel.map(category => ({\n value: category.id,\n caption: category.label\n }));\n\nconst hasActiveNode = (node: any): boolean => {\n if (node.active) {\n return true;\n }\n if (Array.isArray(node.nodes)) {\n return node.nodes.some(hasActiveNode);\n }\n return false;\n};\n\nexport const hasActiveVersionInList = (versionsList: ItemNode[]): boolean => {\n return versionsList.some(hasActiveNode);\n};\n","@import \"../../../../node_modules/@genexus/mercury/dist/assets/scss/helpers.scss\";\n@import \"../common/styles.scss\";\n\n// TODO: this should be a class on Mercury.\n// Not sure if applying \".field-group\" is the right thing to do.\n$commonRowGap: var(--mer-spacing--sm);\n\n:host {\n display: grid;\n grid-template-columns: max-content 1fr;\n block-size: 100%;\n overflow: auto;\n}\n\n.sidebar {\n background-color: transparent !important; // TODO: Apply elevation classes on Mercury.\n border-inline-end: var(--section-common-border);\n}\n\n.sidebar::part(expand-button) {\n border-radius: var(--control__border-radius);\n}\n\ngx-ide-select-kb-items {\n --search-input-max-inline-size: 300px;\n opacity: 0;\n transition: opacity var(--mer-timing--fast);\n}\ngx-ide-select-kb-items.sidebar-expanded {\n opacity: 1;\n}\n\nch-tabular-grid.tabular-grid--empty::part(main) {\n // WA to avoid scrollbar flickering when displaying the empty-state message\n overflow: hidden;\n}\n\nch-tabular-grid-rowset-empty {\n position: relative; // makes this the bounder element for the loader\n}\n\n.main {\n display: grid;\n grid-template-rows: max-content 1fr;\n grid-row-gap: $commonRowGap;\n overflow: auto;\n}\n.main__header {\n display: grid;\n}\n.main__content {\n position: relative;\n overflow: auto;\n display: grid;\n grid-template-rows: 1fr max-content 2fr;\n grid-row-gap: $commonRowGap;\n}\n\n.tabular-grid {\n overflow: auto;\n}\n\n/*SECOND GRID*/\n.search-filter {\n display: grid;\n grid-template-columns: 1fr max-content max-content;\n gap: var(--gx-ide-grid-column-gap);\n}\n\n.action-buttons {\n justify-self: flex-end;\n}\n\n.filters-grid {\n display: grid;\n grid-template-columns: repeat(6, 1fr);\n grid-template-areas:\n \"from from to to type type\"\n \"user user user revision revision revision\";\n grid-gap: var(--gx-ide-grid-column-gap);\n padding-block-start: $commonRowGap;\n}\n\n.filters-container {\n display: grid;\n grid-template-rows: 0fr;\n transition: grid-template-rows var(--mer-timing--fast);\n}\n\n.filters-container-visible {\n grid-template-rows: 1fr;\n}\n\n.filters-container > div {\n overflow: hidden;\n}\n\n.field-from {\n grid-area: from;\n}\n\n.field-to {\n grid-area: to;\n}\n.field-type {\n grid-area: type;\n}\n.field-user {\n grid-area: user;\n}\n.field-revision {\n grid-area: revision;\n}\n\n// commits grid \"comment\" column\n@include tabular-grid-cell-layout(\n $tabular-grid-selector: \".commits-grid\",\n $tabular-grid-cell-node-type: \"text\",\n $tabular-grid-cell-min-inline-size: 200px,\n $tabular-grid-affected-columns-nth-list: (\n 2\n )\n);\n\n// affected objects grid \"description\" column\n@include tabular-grid-cell-layout(\n $tabular-grid-selector: \".affected-objects-grid\",\n $tabular-grid-cell-node-type: \"text\",\n $tabular-grid-cell-min-inline-size: 200px,\n $tabular-grid-affected-columns-nth-list: (\n 5\n )\n);\n","/* STENCIL IMPORTS */\nimport { Component, Element, h, Host, Prop, State, Watch } from \"@stencil/core\";\n/* OTHER LIBRARIES IMPORTS */\n/* CUSTOM IMPORTS */\nimport { ComboBoxItemModel } from \"@genexus/chameleon-controls-library/dist/types/components/combo-box/types\";\nimport { getIconPath, MercuryBundles } from \"@genexus/mercury\";\nimport { config } from \"../../../common/config\";\nimport { formatDate } from \"../../../common/helpers\";\nimport { Locale } from \"../../../common/locale\";\nimport { ContextMenuInfo } from \"../../../components\";\nimport { ItemNode } from \"../../select-kb-items/select-kb-items\";\nimport {\n hasActiveVersionInList,\n mapObjectTypeToComboBoxItemModel\n} from \"./helpers\";\nimport {\n renderObjectStateWithIcon,\n renderObjectTypeWithIcon\n} from \"../common/utilities\";\nimport { ObjectState } from \"../version-control/common/types\";\n\nconst CSS_BUNDLES: MercuryBundles = [\n \"resets/box-sizing\",\n \"utils/form--full\",\n \"utils/layout\",\n \"utils/spacing\",\n \"utils/typography\",\n \"chameleon/scrollbar\",\n \"components/tabular-grid\",\n \"components/accordion\",\n \"components/sidebar\"\n];\n\nconst FILTER_ICON_PRIMARY = getIconPath({\n category: \"window-tools\",\n name: \"filter\",\n colorType: \"primary\"\n});\n\nconst FILTER_ICON = getIconPath({\n category: \"window-tools\",\n name: \"filter\",\n colorType: \"on-surface\"\n});\n\nconst RESET_ICON = getIconPath({\n category: \"gemini-tools\",\n name: \"reset\",\n colorType: \"primary\"\n});\n\nconst SEARCH_ICON = getIconPath({\n category: \"gemini-tools\",\n name: \"search\",\n colorType: \"on-surface\"\n});\n\n@Component({\n tag: \"gx-ide-team-dev-history\",\n styleUrl: \"history.scss\",\n shadow: true,\n assetsDirs: [\"gx-ide-assets/team-dev-history\"]\n})\nexport class GxIdeTeamDevHistory {\n #_componentLocale: any;\n\n #types: ComboBoxItemModel[] = [];\n\n @Element() el: HTMLGxIdeTeamDevHistoryElement;\n\n #fromEl?: HTMLChEditElement;\n #revisionEl?: HTMLChEditElement;\n #searchEl: HTMLChEditElement;\n #toEl?: HTMLChEditElement;\n #typesEl?: HTMLChComboBoxRenderElement;\n #userEl?: HTMLChEditElement;\n #sidebarEl: HTMLChSidebarElement;\n #revisionsGridEl: HTMLChTabularGridElement;\n\n @State() historyDetail: RevisionDetailData;\n\n /**\n * The files rendered in the table\n */\n @State() objects: RevisionData[] = [];\n\n /**\n * Used to call getObjectsFromVersion from the versionsChanged method only once after receiving the versions for the first time.\n */\n @State() isFirstLoad: boolean = true;\n\n /**\n * Used to hide the select-kb-items when collapsed\n */\n @State() sidebarExpanded: boolean = true;\n\n /**\n * Used to show or hide the filters section\n */\n @State() filtersHidden = true;\n\n /**\n * To show a loader when the component is loading\n */\n @State() loading: boolean = true;\n\n /**\n * The Id of the selected revision in the revisions grid\n */\n @State() selectedRevisionId: string;\n\n /**\n * Used to customize the select-kb-items \"header\" part grid layout\n */\n @State() hasActiveVersion: boolean = false; // TODO:\n\n /**\n * Possible values of type filter\n */\n @Prop() readonly types: ObjectType[];\n\n /**\n * Callback emitted when the user right click on an item\n */\n @Prop() readonly itemContextMenuCallback: (\n info: ContextMenuInfo\n ) => Promise<void>;\n\n /**\n * Callback invoked when user right-clicks on the grid\n */\n @Prop() readonly gridContextMenuCallback: (\n info: ContextMenuInfo\n ) => Promise<void>;\n\n /**\n * The Id of the selected version in the select-kb-items component\n */\n @Prop({ mutable: true }) selectedVersionId: string;\n @Watch(\"selectedVersionId\")\n async selectedVersionIdChanged(\n newSelectedVersionId: string,\n oldSelectedVersionId?: string\n ) {\n if (newSelectedVersionId === oldSelectedVersionId) {\n return;\n }\n\n // Reset filters\n this.#searchEl.value = null;\n this.#fromEl.value = null;\n this.#toEl.value = null;\n this.#revisionEl.value = null;\n this.#userEl.value = null;\n this.#typesEl.value = this.#types[0]?.value;\n\n await this.#getObjectsFromVersion(newSelectedVersionId, false);\n }\n\n /**\n * List of versions to show in the versions tree\n */\n @Prop({ mutable: true }) versions: ItemNode[] = [];\n @Watch(\"versions\")\n async versionsListChanged(newVersionsList: ItemNode[]) {\n this.versions = newVersionsList;\n this.hasActiveVersion = hasActiveVersionInList(newVersionsList);\n\n if (\n newVersionsList.length > 0 &&\n this.selectedVersionId &&\n this.isFirstLoad\n ) {\n await this.#getObjectsFromVersion(this.selectedVersionId, false);\n this.isFirstLoad = false;\n }\n }\n\n /**\n * Callback invoked when is necessary to reload the history info. Receive the filters as parameters and only returns the info corresponding to the master grid.\n\n */\n @Prop() readonly loadCallback: LoadCallback;\n\n /**\n * Callback invoked to obtain detailed info from a revision. As parameter receive internal revision id\n */\n @Prop() readonly loadDetailCallback: LoadDetailCallback;\n\n /**\n * Callback invoked when the selected version changes. As parameter receive the selected version id\n */\n @Prop() readonly selectedVersionChangeCallback: SelectedVersionChangeCallback;\n\n async componentWillLoad() {\n this.#_componentLocale = await Locale.getComponentStrings(this.el);\n this.#types = mapObjectTypeToComboBoxItemModel(this.types);\n }\n\n async componentDidLoad() {\n this.#sidebarEl.addEventListener(\n \"expandedChange\",\n (e: CustomEvent<boolean>) => {\n this.sidebarExpanded = e.detail;\n }\n );\n }\n\n #getObjectsFromVersion = async (\n versionId: string,\n isRefresh: boolean\n ): Promise<void> => {\n this.loading = true;\n\n const filters: FiltersData = {\n search: this.#searchEl.value ? this.#searchEl.value : \"\",\n from: this.#fromEl.value ? new Date(this.#fromEl.value) : null,\n to: this.#toEl.value ? new Date(this.#toEl.value) : null,\n revision: this.#revisionEl.value ? this.#revisionEl.value : \"\",\n user: this.#userEl.value ? this.#userEl.value : \"\",\n type: this.#typesEl.value === \"all\" ? \"\" : this.#typesEl.value\n };\n\n this.objects = await this.loadCallback(filters, versionId, isRefresh);\n await this.#getSelectedRevision(this.objects[0]?.id);\n this.loading = false;\n };\n\n #getSelectedRevision = async (revisionId: string) => {\n if (revisionId) {\n this.historyDetail = await this.loadDetailCallback(revisionId);\n this.historyDetail.title = this.#formatHistoryDetailDate(\n this.historyDetail.title\n );\n this.selectedRevisionId = revisionId;\n } else {\n this.historyDetail = null;\n }\n };\n\n #registerGridContextMenuListener = (): void => {\n if (this.#revisionsGridEl) {\n this.#revisionsGridEl.addEventListener(\n \"contextmenu\",\n (ev: MouseEvent): void => {\n ev.preventDefault();\n ev.stopPropagation();\n this.#gridContextMenuCallbackHandler(ev);\n }\n );\n }\n };\n\n #gridContextMenuCallbackHandler = async (ev: MouseEvent): Promise<void> => {\n this.gridContextMenuCallback({\n selection: [this.selectedRevisionId],\n clientX: ev.clientX,\n clientY: ev.clientY\n });\n };\n\n #toggleFiltersHandler = () => {\n this.filtersHidden = !this.filtersHidden;\n };\n\n #renderCommitsGrid = (): Element => {\n const tabularGridEmpty = this.objects?.length === 0 || !this.objects;\n return (\n <ch-tabular-grid\n class={{\n \"commits-grid\": true,\n \"tabular-grid\": true,\n \"tabular-grid--empty\": tabularGridEmpty\n }}\n onSelectionChanged={(ev: any) => {\n this.objects.length > 0 &&\n this.#getSelectedRevision(ev.detail.rowsId[0]);\n }}\n ref={(el: HTMLChTabularGridElement) => {\n if (el && this.#revisionsGridEl !== el) {\n this.#revisionsGridEl = el as HTMLChTabularGridElement;\n\n this.#registerGridContextMenuListener();\n\n if (this.objects.length > 0) {\n this.#revisionsGridEl.selectRow(this.objects[0]?.id, true);\n }\n }\n }}\n >\n <ch-tabular-grid-columnset class=\"tabular-grid-column-set\">\n <ch-tabular-grid-column\n column-name={this.#_componentLocale.mainGrid.columns.id}\n column-name-position=\"text\"\n class=\"tabular-grid-column\"\n settingable={false}\n size=\"max-content\"\n ></ch-tabular-grid-column>\n <ch-tabular-grid-column\n column-name={this.#_componentLocale.mainGrid.columns.comment}\n column-name-position=\"text\"\n class=\"tabular-grid-column\"\n settingable={false}\n size=\"1fr\"\n ></ch-tabular-grid-column>\n <ch-tabular-grid-column\n column-name={this.#_componentLocale.mainGrid.columns.user}\n column-name-position=\"text\"\n class=\"tabular-grid-column\"\n settingable={false}\n size=\"max-content\"\n ></ch-tabular-grid-column>\n <ch-tabular-grid-column\n column-name={this.#_componentLocale.mainGrid.columns.commitDate}\n column-name-position=\"text\"\n class=\"tabular-grid-column\"\n settingable={false}\n size=\"max-content\"\n ></ch-tabular-grid-column>\n </ch-tabular-grid-columnset>\n {this.objects.length > 0 ? (\n <ch-tabular-grid-rowset class=\"tabular-grid-rowset\">\n {this.objects.map((obj: RevisionData) => (\n <ch-tabular-grid-row\n rowid={obj.id}\n key={obj.id}\n class=\"tabular-grid-row\"\n >\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n {obj.id}\n </ch-tabular-grid-cell>\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n {obj.comment}\n </ch-tabular-grid-cell>\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n {obj.user}\n </ch-tabular-grid-cell>\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n {`${formatDate(obj.commitDate, \"date-time\")}`}\n </ch-tabular-grid-cell>\n </ch-tabular-grid-row>\n ))}\n </ch-tabular-grid-rowset>\n ) : (\n <ch-tabular-grid-rowset class=\"tabular-grid-rowset\">\n <ch-tabular-grid-rowset-empty>\n <gx-ide-empty-state\n stateTitle={this.#_componentLocale.emptyRevisionsText}\n isAnimated={true}\n ></gx-ide-empty-state>\n </ch-tabular-grid-rowset-empty>\n </ch-tabular-grid-rowset>\n )}\n\n <ch-tabular-grid-row class=\"tabular-grid-row\"></ch-tabular-grid-row>\n </ch-tabular-grid>\n );\n };\n\n #renderAffectedObjectsGrid = (): Element => {\n const iterable = this.historyDetail ? this.historyDetail.objects : [];\n const tabularGridEmpty =\n this.historyDetail?.objects.length === 0 || !this.historyDetail;\n return (\n <ch-tabular-grid\n class={{\n \"affected-objects-grid\": true,\n \"tabular-grid\": true,\n \"tabular-grid--empty\": tabularGridEmpty\n }}\n >\n <ch-tabular-grid-columnset class=\"tabular-grid-column-set\">\n <ch-tabular-grid-column\n column-name={\n this.#_componentLocale.affectedObjectsGrid.columns.name\n }\n column-name-position=\"text\"\n class=\"tabular-grid-column\"\n settingable={false}\n size={config.tabularGrid.colSize.maxContent}\n ></ch-tabular-grid-column>\n <ch-tabular-grid-column\n column-name={\n this.#_componentLocale.affectedObjectsGrid.columns.types\n }\n column-name-position=\"text\"\n class=\"tabular-grid-column\"\n settingable={false}\n size={config.tabularGrid.colSize.maxContent}\n ></ch-tabular-grid-column>\n <ch-tabular-grid-column\n column-name={\n this.#_componentLocale.affectedObjectsGrid.columns.description\n }\n column-name-position=\"text\"\n class=\"tabular-grid-column\"\n settingable={false}\n size={config.tabularGrid.colSize.auto}\n ></ch-tabular-grid-column>\n <ch-tabular-grid-column\n column-name={\n this.#_componentLocale.affectedObjectsGrid.columns.action\n }\n column-name-position=\"text\"\n class=\"tabular-grid-column\"\n settingable={false}\n size={config.tabularGrid.colSize.maxContent}\n ></ch-tabular-grid-column>\n </ch-tabular-grid-columnset>\n {this.historyDetail && this.historyDetail.objects.length > 0 ? (\n <ch-tabular-grid-rowset class=\"tabular-grid-rowset\">\n {iterable.map((obj: ObjectData) => (\n <ch-tabular-grid-row class=\"tabular-grid-row\">\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n {obj.name}\n </ch-tabular-grid-cell>\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n {renderObjectTypeWithIcon(obj.type)}\n </ch-tabular-grid-cell>\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n {obj.description}\n </ch-tabular-grid-cell>\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n {renderObjectStateWithIcon(obj.state)}\n </ch-tabular-grid-cell>\n </ch-tabular-grid-row>\n ))}\n </ch-tabular-grid-rowset>\n ) : (\n <ch-tabular-grid-rowset class=\"tabular-grid-rowset\">\n <ch-tabular-grid-rowset-empty>\n <gx-ide-empty-state\n stateIconSrc={FILTER_ICON}\n stateTitle={this.#_componentLocale.emptyHistoryDetailText}\n isAnimated={true}\n ></gx-ide-empty-state>\n </ch-tabular-grid-rowset-empty>\n </ch-tabular-grid-rowset>\n )}\n\n <ch-tabular-grid-row class=\"tabular-grid-row\"></ch-tabular-grid-row>\n </ch-tabular-grid>\n );\n };\n\n #renderLoader = (): Element => {\n return (\n this.loading && (\n <div class=\"main__content scrollable\">\n <gx-ide-loader\n loaderTitle={this.#_componentLocale.loader.title}\n show\n description={this.#_componentLocale.loader.description}\n ></gx-ide-loader>\n </div>\n )\n );\n };\n\n #formatHistoryDetailDate = (title: string): string => {\n const parts = title.split(\" - \");\n const datePart = new Date(parts[1]);\n const formattedDate = formatDate(datePart, \"date-time\");\n return `${parts[0]} - ${formattedDate} - ${parts[2]}`;\n };\n\n render() {\n return (\n <Host class=\"widget\">\n <ch-theme model={CSS_BUNDLES}></ch-theme>\n\n <ch-sidebar\n ref={(el: HTMLChSidebarElement) =>\n (this.#sidebarEl = el as HTMLChSidebarElement)\n }\n class=\"sidebar\"\n expanded={this.sidebarExpanded}\n expandButtonCollapseAccessibleName={\n this.#_componentLocale.sidebar.collapseAriaLabel\n }\n expandButtonExpandAccessibleName={\n this.#_componentLocale.sidebar.expandAriaLabel\n }\n showExpandButton\n >\n <gx-ide-select-kb-items\n class={{\n \"sidebar-expanded\": this.sidebarExpanded,\n \"has-active-version\": this.hasActiveVersion\n }}\n checkboxType=\"none\"\n itemsList={this.versions}\n expandOnClick={false}\n selectionChanged={this.selectedVersionChangeCallback}\n itemContextMenuCallback={this.itemContextMenuCallback}\n ></gx-ide-select-kb-items>\n </ch-sidebar>\n\n <main class=\"main spacing-body-block-start spacing-body-inline\">\n <div class=\"main__header\">\n <div class=\"search-filter\">\n <div class=\"field field-inline\">\n <label class=\"label\" htmlFor=\"search\">\n {this.#_componentLocale.filters.search}\n </label>\n <ch-edit\n value=\"\"\n class=\"input\"\n startImgSrc={SEARCH_ICON}\n part=\"search\"\n id=\"search\"\n ref={(el: HTMLChEditElement) =>\n (this.#searchEl = el as HTMLChEditElement)\n }\n ></ch-edit>\n </div>\n\n <button\n id=\"filter-toggle-button\"\n class=\"button-teritary button-icon-only\"\n aria-label={this.#_componentLocale.searchFilter.filterAriaLabel}\n aria-expanded={this.filtersHidden ? \"false\" : \"true\"}\n aria-controls=\"filters-container\"\n onClick={() => this.#toggleFiltersHandler()}\n >\n <ch-image class=\"icon-md\" src={FILTER_ICON_PRIMARY}></ch-image>\n </button>\n\n <button\n class=\"button-teritary button-icon-only\"\n aria-label={this.#_componentLocale.searchFilter.reloadAriaLabel}\n onClick={() =>\n this.#getObjectsFromVersion(this.selectedVersionId, true)\n }\n part={this.#_componentLocale.searchFilter.reloadAriaLabel}\n >\n <ch-image class=\"icon-md\" src={RESET_ICON}></ch-image>\n </button>\n </div>\n\n <div\n id=\"filters-container\"\n aria-labelledby=\"filter-toggle-button\"\n class={{\n \"filters-container-visible\": !this.filtersHidden,\n \"filters-container\": true\n }}\n inert={this.filtersHidden}\n hidden={this.filtersHidden}\n >\n <div>\n <div class=\"filters-grid\">\n <div class=\"field field-block field-from\">\n <label class=\"label\" htmlFor=\"from\">\n {this.#_componentLocale.filters.from}\n </label>\n <ch-edit\n value=\"\"\n class=\"input\"\n type=\"date\"\n part=\"from\"\n id=\"from\"\n ref={(el: HTMLChEditElement) =>\n (this.#fromEl = el as HTMLChEditElement)\n }\n ></ch-edit>\n </div>\n\n <div class=\"field field-block field-to\">\n <label class=\"label\" htmlFor=\"to\">\n {this.#_componentLocale.filters.to}\n </label>\n <ch-edit\n value=\"\"\n class=\"input\"\n type=\"date\"\n id=\"to\"\n ref={(el: HTMLChEditElement) =>\n (this.#toEl = el as HTMLChEditElement)\n }\n ></ch-edit>\n </div>\n\n <div class=\"field field-block field-type\">\n <label class=\"label\" htmlFor=\"type\">\n {this.#_componentLocale.filters.type}\n </label>\n\n <ch-combo-box-render\n accessibleName=\"types\"\n class=\"combo-box\"\n part=\"type\"\n model={this.#types}\n value={this.#types[0]?.value}\n ref={(el: HTMLChComboBoxRenderElement) =>\n (this.#typesEl = el as HTMLChComboBoxRenderElement)\n }\n ></ch-combo-box-render>\n </div>\n\n <div class=\"field field-block field-user\">\n <label class=\"label\" htmlFor=\"user\">\n {this.#_componentLocale.filters.user}\n </label>\n\n <ch-edit\n value=\"\"\n part=\"user\"\n class=\"input\"\n id=\"user\"\n ref={(el: HTMLChEditElement) =>\n (this.#userEl = el as HTMLChEditElement)\n }\n ></ch-edit>\n </div>\n\n <div class=\"field field-block field-revision\">\n <label class=\"label\" htmlFor=\"revision\">\n {this.#_componentLocale.filters.revision}\n </label>\n\n <ch-edit\n value=\"\"\n part=\"revision\"\n class=\"input\"\n id=\"revision\"\n ref={(el: HTMLChEditElement) =>\n (this.#revisionEl = el as HTMLChEditElement)\n }\n ></ch-edit>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n {this.#renderLoader()}\n\n {!this.loading && (\n <div class=\"main__content scrollable\">\n {this.#renderCommitsGrid()}\n\n <div class=\"field field-block\">\n <label class=\"label\" htmlFor=\"comment-area\">\n {this.historyDetail ? this.historyDetail.title : null}\n </label>\n <ch-edit\n class=\"input comment-text-area\"\n value={this.historyDetail ? this.historyDetail.comment : null}\n multiline\n autoGrow\n readonly={true}\n part=\"comment-area\"\n id=\"comment-area\"\n ></ch-edit>\n </div>\n\n {this.#renderAffectedObjectsGrid()}\n </div>\n )}\n </main>\n </Host>\n );\n }\n}\n\n// Types\nexport type ObjectType = {\n id: string;\n name: string;\n icon?: string;\n};\n\nexport type FiltersData = {\n search: string;\n from?: Date;\n to?: Date;\n user?: string;\n revision?: string;\n type?: string;\n};\nexport type RevisionData = {\n id: string;\n comment: string;\n user: string;\n commitDate: Date;\n};\n\nexport type RevisionDetailData = {\n title: string;\n comment: string;\n objects: ObjectData[];\n};\nexport type ObjectData = {\n typeIcon: string;\n state: ObjectState;\n name: string;\n type: ObjectType;\n description: string;\n action: string;\n};\n\nexport type LoadCallback = (\n filters: FiltersData,\n versionId: string,\n isRefresh: boolean\n) => Promise<RevisionData[]>;\n\nexport type LoadDetailCallback = (\n revision: string\n) => Promise<RevisionDetailData>;\n\nexport type SelectedVersionChangeCallback = (\n selectedVersion: string[]\n) => Promise<void>;\n"],"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
- __classPrivateFieldGet(this, _GxIdeTeamDevUpdate_applyClientFilter, "f").call(this);
458
- this.pendingIdsSet.clear();
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: "name", columnName: __classPrivateFieldGet(this, _GxIdeTeamDevUpdate_componentLocale, "f").objects.name, columnType: "rich", richRowSelector: enableRichRowSelector, richRowSelectorMode: "mark", settingable: false, size: "max-content" }), h("ch-tabular-grid-column", { class: "tabular-grid-column", columnId: "type", columnName: __classPrivateFieldGet(this, _GxIdeTeamDevUpdate_componentLocale, "f").objects.type, settingable: false, size: "max-content" }), h("ch-tabular-grid-column", { class: "tabular-grid-column", columnId: "description", columnName: __classPrivateFieldGet(this, _GxIdeTeamDevUpdate_componentLocale, "f").objects.description, settingable: false, size: config.tabularGrid.colSize.description }), h("ch-tabular-grid-column", { class: "tabular-grid-column", columnId: "modified-on", columnName: __classPrivateFieldGet(this, _GxIdeTeamDevUpdate_componentLocale, "f").objects.modifiedOn, settingable: false, size: "max-content" }), h("ch-tabular-grid-column", { class: "tabular-grid-column", columnId: "action", columnName: __classPrivateFieldGet(this, _GxIdeTeamDevUpdate_componentLocale, "f").objects.action, settingable: false, size: "max-content" }), h("ch-tabular-grid-column", {
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: "status", columnName: __classPrivateFieldGet(this, _GxIdeTeamDevUpdate_componentLocale, "f").objects.status, settingable: false, size: "100px"
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;