@gitlab/ui 95.0.0 → 95.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +19 -0
- package/bin/migrate_custom_utils_to_tw.bundled.mjs +0 -19
- package/dist/components/experimental/duo/chat/components/duo_chat_context/constants.js +4 -1
- package/dist/components/experimental/duo/chat/components/duo_chat_context/duo_chat_context_item_details_modal/duo_chat_context_item_details_modal.js +120 -0
- package/dist/components/experimental/duo/chat/components/duo_chat_context/duo_chat_context_item_menu/duo_chat_context_item_menu.js +11 -1
- package/dist/components/experimental/duo/chat/components/duo_chat_context/duo_chat_context_item_selections/duo_chat_context_item_selections.js +29 -2
- package/dist/components/experimental/duo/chat/components/duo_chat_context/mock_context_data.js +14 -1
- package/dist/components/experimental/duo/chat/components/duo_chat_conversation/duo_chat_conversation.js +4 -1
- package/dist/components/experimental/duo/chat/components/duo_chat_message/duo_chat_message.js +7 -1
- package/dist/components/experimental/duo/chat/duo_chat.js +9 -1
- package/dist/index.css +1 -1
- package/dist/index.css.map +1 -1
- package/package.json +1 -1
- package/src/components/base/dropdown/dropdown.scss +1 -1
- package/src/components/base/dropdown/dropdown_section_header.scss +1 -1
- package/src/components/experimental/duo/chat/components/duo_chat_context/constants.js +4 -0
- package/src/components/experimental/duo/chat/components/duo_chat_context/duo_chat_context_item_details_modal/duo_chat_context_item_details_modal.vue +114 -0
- package/src/components/experimental/duo/chat/components/duo_chat_context/duo_chat_context_item_menu/duo_chat_context_item_menu.vue +10 -0
- package/src/components/experimental/duo/chat/components/duo_chat_context/duo_chat_context_item_selections/duo_chat_context_item_selections.vue +42 -0
- package/src/components/experimental/duo/chat/components/duo_chat_context/mock_context_data.js +15 -0
- package/src/components/experimental/duo/chat/components/duo_chat_conversation/duo_chat_conversation.vue +4 -0
- package/src/components/experimental/duo/chat/components/duo_chat_message/duo_chat_message.vue +8 -0
- package/src/components/experimental/duo/chat/duo_chat.vue +9 -0
- package/translations.js +1 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,22 @@
|
|
|
1
|
+
## [95.1.1](https://gitlab.com/gitlab-org/gitlab-ui/compare/v95.1.0...v95.1.1) (2024-10-05)
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
### Bug Fixes
|
|
5
|
+
|
|
6
|
+
* update dropdown headers to use strong text color ([6f6b208](https://gitlab.com/gitlab-org/gitlab-ui/commit/6f6b208f892257c02d92c9f49f1675226b71b5a8))
|
|
7
|
+
|
|
8
|
+
# [95.1.0](https://gitlab.com/gitlab-org/gitlab-ui/compare/v95.0.0...v95.1.0) (2024-10-04)
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
### Bug Fixes
|
|
12
|
+
|
|
13
|
+
* don't open details modal if selecting close button via keyboard ([8e8a4c3](https://gitlab.com/gitlab-org/gitlab-ui/commit/8e8a4c3dc7fc9f30d4c02a3a9a4acf7da96c2aac))
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
### Features
|
|
17
|
+
|
|
18
|
+
* **GlDuoChat:** view context item content/details ([63909dd](https://gitlab.com/gitlab-org/gitlab-ui/commit/63909dd79aa2570ecd7375c22619d892ea1935c2))
|
|
19
|
+
|
|
1
20
|
# [95.0.0](https://gitlab.com/gitlab-org/gitlab-ui/compare/v94.10.0...v95.0.0) (2024-10-04)
|
|
2
21
|
|
|
3
22
|
|
|
@@ -184396,24 +184396,12 @@ async function prettify(tailwindConfig, files) {
|
|
|
184396
184396
|
}
|
|
184397
184397
|
function validateMigrations(processedMigrations) {
|
|
184398
184398
|
const errors = [];
|
|
184399
|
-
for (const { from, to: to4 } of processedMigrations) {
|
|
184400
|
-
if (from.endsWith("!") !== /!-?gl/.test(to4)) {
|
|
184401
|
-
errors.push(`Inconsistent importance: ${from}, ${to4}`);
|
|
184402
|
-
}
|
|
184403
|
-
}
|
|
184404
184399
|
const froms = /* @__PURE__ */ new Set();
|
|
184405
184400
|
const tos = /* @__PURE__ */ new Set();
|
|
184406
184401
|
for (const { from, to: to4 } of processedMigrations) {
|
|
184407
184402
|
froms.add(from);
|
|
184408
184403
|
tos.add(to4);
|
|
184409
184404
|
}
|
|
184410
|
-
for (const { from } of processedMigrations) {
|
|
184411
|
-
if (from.endsWith("!"))
|
|
184412
|
-
continue;
|
|
184413
|
-
if (!froms.has(`${from}!`)) {
|
|
184414
|
-
errors.push(`Missing important class for ${from}`);
|
|
184415
|
-
}
|
|
184416
|
-
}
|
|
184417
184405
|
for (const { from, to: to4 } of processedMigrations) {
|
|
184418
184406
|
for (const bp2 of ["xs", "sm", "md", "lg", "xl"]) {
|
|
184419
184407
|
if (from.includes(`-${bp2}-`) !== to4.startsWith(`${bp2}:`)) {
|
|
@@ -184421,13 +184409,6 @@ function validateMigrations(processedMigrations) {
|
|
|
184421
184409
|
}
|
|
184422
184410
|
}
|
|
184423
184411
|
}
|
|
184424
|
-
for (const from of froms) {
|
|
184425
|
-
for (const to4 of tos) {
|
|
184426
|
-
if (to4.includes(from)) {
|
|
184427
|
-
errors.push(`Tailwind class "${to4}" contains legacy class "${from}" as substring`);
|
|
184428
|
-
}
|
|
184429
|
-
}
|
|
184430
|
-
}
|
|
184431
184412
|
processedMigrations.forEach(({ from }, i3, arr) => {
|
|
184432
184413
|
const nextFrom = arr[i3 + 1]?.from;
|
|
184433
184414
|
if (from.length < nextFrom?.length) {
|
|
@@ -4,5 +4,8 @@ const CONTEXT_ITEM_CATEGORY_FILE = 'file';
|
|
|
4
4
|
const CONTEXT_ITEM_CATEGORY_LOCAL_GIT = 'local_git';
|
|
5
5
|
const CONTEXT_ITEM_LOCAL_GIT_COMMIT = 'commit';
|
|
6
6
|
const CONTEXT_ITEM_LOCAL_GIT_DIFF = 'diff';
|
|
7
|
+
const LANGUAGE_IDENTIFIER_PREFIX = 'language-';
|
|
8
|
+
const LANGUAGE_IDENTIFIER_DIFF = 'language-diff';
|
|
9
|
+
const LANGUAGE_IDENTIFIER_PLAINTEXT = 'language-plaintext';
|
|
7
10
|
|
|
8
|
-
export { CONTEXT_ITEM_CATEGORY_FILE, CONTEXT_ITEM_CATEGORY_ISSUE, CONTEXT_ITEM_CATEGORY_LOCAL_GIT, CONTEXT_ITEM_CATEGORY_MERGE_REQUEST, CONTEXT_ITEM_LOCAL_GIT_COMMIT, CONTEXT_ITEM_LOCAL_GIT_DIFF };
|
|
11
|
+
export { CONTEXT_ITEM_CATEGORY_FILE, CONTEXT_ITEM_CATEGORY_ISSUE, CONTEXT_ITEM_CATEGORY_LOCAL_GIT, CONTEXT_ITEM_CATEGORY_MERGE_REQUEST, CONTEXT_ITEM_LOCAL_GIT_COMMIT, CONTEXT_ITEM_LOCAL_GIT_DIFF, LANGUAGE_IDENTIFIER_DIFF, LANGUAGE_IDENTIFIER_PLAINTEXT, LANGUAGE_IDENTIFIER_PREFIX };
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
import { nextTick } from 'vue';
|
|
2
|
+
import { contextItemValidator } from '../utils';
|
|
3
|
+
import GlModal from '../../../../../../base/modal/modal';
|
|
4
|
+
import { SafeHtmlDirective } from '../../../../../../../directives/safe_html/safe_html';
|
|
5
|
+
import GlSkeletonLoader from '../../../../../../base/skeleton_loader/skeleton_loader';
|
|
6
|
+
import { translate } from '../../../../../../../utils/i18n';
|
|
7
|
+
import { CONTEXT_ITEM_CATEGORY_LOCAL_GIT, LANGUAGE_IDENTIFIER_DIFF, LANGUAGE_IDENTIFIER_PREFIX, LANGUAGE_IDENTIFIER_PLAINTEXT } from '../constants';
|
|
8
|
+
import __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';
|
|
9
|
+
|
|
10
|
+
var script = {
|
|
11
|
+
name: 'GlDuoChatContextItemDetailsModal',
|
|
12
|
+
components: {
|
|
13
|
+
GlSkeletonLoader,
|
|
14
|
+
GlModal
|
|
15
|
+
},
|
|
16
|
+
directives: {
|
|
17
|
+
SafeHtml: SafeHtmlDirective
|
|
18
|
+
},
|
|
19
|
+
inject: {
|
|
20
|
+
renderGFM: {
|
|
21
|
+
from: 'renderGFM',
|
|
22
|
+
default: () => element => {
|
|
23
|
+
element.classList.add('gl-markdown', 'gl-compact-markdown');
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
},
|
|
27
|
+
props: {
|
|
28
|
+
/**
|
|
29
|
+
* Context items to preview. If it has no `content`, the loading state will be displayed.
|
|
30
|
+
*/
|
|
31
|
+
contextItem: {
|
|
32
|
+
type: Object,
|
|
33
|
+
required: true,
|
|
34
|
+
validator: contextItemValidator
|
|
35
|
+
}
|
|
36
|
+
},
|
|
37
|
+
computed: {
|
|
38
|
+
isLoadingContent() {
|
|
39
|
+
return this.contextItem.content === undefined;
|
|
40
|
+
},
|
|
41
|
+
languageIdentifierClass() {
|
|
42
|
+
var _this$contextItem$met, _this$contextItem$met2, _this$contextItem$met3;
|
|
43
|
+
if (this.contextItem.category === CONTEXT_ITEM_CATEGORY_LOCAL_GIT) {
|
|
44
|
+
return LANGUAGE_IDENTIFIER_DIFF;
|
|
45
|
+
}
|
|
46
|
+
const fileExtension = (_this$contextItem$met = this.contextItem.metadata) === null || _this$contextItem$met === void 0 ? void 0 : (_this$contextItem$met2 = _this$contextItem$met.relativePath) === null || _this$contextItem$met2 === void 0 ? void 0 : _this$contextItem$met2.split('.').at(-1);
|
|
47
|
+
if (fileExtension && fileExtension !== ((_this$contextItem$met3 = this.contextItem.metadata) === null || _this$contextItem$met3 === void 0 ? void 0 : _this$contextItem$met3.relativePath)) {
|
|
48
|
+
return `${LANGUAGE_IDENTIFIER_PREFIX}${fileExtension}`;
|
|
49
|
+
}
|
|
50
|
+
return LANGUAGE_IDENTIFIER_PLAINTEXT;
|
|
51
|
+
},
|
|
52
|
+
title() {
|
|
53
|
+
var _this$contextItem$met4, _this$contextItem$met5;
|
|
54
|
+
return ((_this$contextItem$met4 = this.contextItem.metadata) === null || _this$contextItem$met4 === void 0 ? void 0 : _this$contextItem$met4.title) || ((_this$contextItem$met5 = this.contextItem.metadata) === null || _this$contextItem$met5 === void 0 ? void 0 : _this$contextItem$met5.relativePath) || translate('GlDuoChatContextItemDetailsModal.title', 'Preview');
|
|
55
|
+
}
|
|
56
|
+
},
|
|
57
|
+
watch: {
|
|
58
|
+
contextItem: {
|
|
59
|
+
async handler(newVal, oldVal) {
|
|
60
|
+
const shouldFormat = (newVal === null || newVal === void 0 ? void 0 : newVal.content) !== (oldVal === null || oldVal === void 0 ? void 0 : oldVal.content) && (newVal === null || newVal === void 0 ? void 0 : newVal.content);
|
|
61
|
+
if (shouldFormat) {
|
|
62
|
+
await nextTick();
|
|
63
|
+
await this.hydrateContentWithGFM();
|
|
64
|
+
}
|
|
65
|
+
},
|
|
66
|
+
immediate: true
|
|
67
|
+
}
|
|
68
|
+
},
|
|
69
|
+
methods: {
|
|
70
|
+
async hydrateContentWithGFM() {
|
|
71
|
+
await nextTick();
|
|
72
|
+
if (this.$refs.content) {
|
|
73
|
+
this.renderGFM(this.$refs.content);
|
|
74
|
+
}
|
|
75
|
+
},
|
|
76
|
+
onModalVisibilityChange(isVisible) {
|
|
77
|
+
if (!isVisible) {
|
|
78
|
+
this.$emit('close');
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
};
|
|
83
|
+
|
|
84
|
+
/* script */
|
|
85
|
+
const __vue_script__ = script;
|
|
86
|
+
|
|
87
|
+
/* template */
|
|
88
|
+
var __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('gl-modal',{attrs:{"modal-id":"context-item-details-modal","title":_vm.title,"visible":true,"scrollable":true,"hide-footer":"","size":"lg"},on:{"change":_vm.onModalVisibilityChange}},[(_vm.isLoadingContent)?_c('gl-skeleton-loader'):_c('div',{ref:"content",attrs:{"data-testid":"context-item-content"}},[_c('pre',{directives:[{name:"safe-html",rawName:"v-safe-html",value:(_vm.contextItem.content),expression:"contextItem.content"}],staticClass:"code js-syntax-highlight gl-p-3",class:_vm.languageIdentifierClass})])],1)};
|
|
89
|
+
var __vue_staticRenderFns__ = [];
|
|
90
|
+
|
|
91
|
+
/* style */
|
|
92
|
+
const __vue_inject_styles__ = undefined;
|
|
93
|
+
/* scoped */
|
|
94
|
+
const __vue_scope_id__ = undefined;
|
|
95
|
+
/* module identifier */
|
|
96
|
+
const __vue_module_identifier__ = undefined;
|
|
97
|
+
/* functional template */
|
|
98
|
+
const __vue_is_functional_template__ = false;
|
|
99
|
+
/* style inject */
|
|
100
|
+
|
|
101
|
+
/* style inject SSR */
|
|
102
|
+
|
|
103
|
+
/* style inject shadow dom */
|
|
104
|
+
|
|
105
|
+
|
|
106
|
+
|
|
107
|
+
const __vue_component__ = __vue_normalize__(
|
|
108
|
+
{ render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },
|
|
109
|
+
__vue_inject_styles__,
|
|
110
|
+
__vue_script__,
|
|
111
|
+
__vue_scope_id__,
|
|
112
|
+
__vue_is_functional_template__,
|
|
113
|
+
__vue_module_identifier__,
|
|
114
|
+
false,
|
|
115
|
+
undefined,
|
|
116
|
+
undefined,
|
|
117
|
+
undefined
|
|
118
|
+
);
|
|
119
|
+
|
|
120
|
+
export default __vue_component__;
|
|
@@ -209,6 +209,16 @@ var script = {
|
|
|
209
209
|
}
|
|
210
210
|
} while (!this.results[newIndex].metadata.enabled);
|
|
211
211
|
this.activeIndex = newIndex;
|
|
212
|
+
},
|
|
213
|
+
onGetContextItemContent(contextItem) {
|
|
214
|
+
/**
|
|
215
|
+
* Emit get-context-item-content event that tells clients to load the full file content for a selected context item.
|
|
216
|
+
* The fully hydrated context item should be updated in the context item selections.
|
|
217
|
+
* @param {*} event An event containing the context item to hydrate
|
|
218
|
+
*/
|
|
219
|
+
this.$emit('get-context-item-content', {
|
|
220
|
+
contextItem
|
|
221
|
+
});
|
|
212
222
|
}
|
|
213
223
|
},
|
|
214
224
|
i18n: {
|
|
@@ -220,7 +230,7 @@ var script = {
|
|
|
220
230
|
const __vue_script__ = script;
|
|
221
231
|
|
|
222
232
|
/* template */
|
|
223
|
-
var __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[(_vm.selections.length)?_c('gl-duo-chat-context-item-selections',{staticClass:"gl-mb-3",attrs:{"selections":_vm.selections,"removable":true,"title":_vm.$options.i18n.selectedContextItemsTitle,"default-collapsed":false},on:{"remove":_vm.removeItem}}):_vm._e(),_vm._v(" "),(_vm.open)?_c('gl-card',{staticClass:"slash-commands !gl-absolute gl-bottom-0 gl-w-full gl-pl-0 gl-shadow-md",attrs:{"body-class":"!gl-p-2","data-testid":"context-item-menu"}},[(_vm.showCategorySelection)?_c('gl-duo-chat-context-item-menu-category-items',{attrs:{"active-index":_vm.activeIndex,"categories":_vm.categories},on:{"select":_vm.selectCategory,"active-index-change":function($event){_vm.activeIndex = $event;}}}):_c('gl-duo-chat-context-item-menu-search-items',{attrs:{"active-index":_vm.activeIndex,"category":_vm.selectedCategory,"loading":_vm.loading,"error":_vm.error,"results":_vm.results},on:{"select":_vm.selectItem,"keyup":_vm.handleKeyUp,"active-index-change":function($event){_vm.activeIndex = $event;}},model:{value:(_vm.searchQuery),callback:function ($$v) {_vm.searchQuery=$$v;},expression:"searchQuery"}})],1):_vm._e()],1)};
|
|
233
|
+
var __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[(_vm.selections.length)?_c('gl-duo-chat-context-item-selections',{staticClass:"gl-mb-3",attrs:{"selections":_vm.selections,"categories":_vm.categories,"removable":true,"title":_vm.$options.i18n.selectedContextItemsTitle,"default-collapsed":false},on:{"remove":_vm.removeItem,"get-content":_vm.onGetContextItemContent}}):_vm._e(),_vm._v(" "),(_vm.open)?_c('gl-card',{staticClass:"slash-commands !gl-absolute gl-bottom-0 gl-w-full gl-pl-0 gl-shadow-md",attrs:{"body-class":"!gl-p-2","data-testid":"context-item-menu"}},[(_vm.showCategorySelection)?_c('gl-duo-chat-context-item-menu-category-items',{attrs:{"active-index":_vm.activeIndex,"categories":_vm.categories},on:{"select":_vm.selectCategory,"active-index-change":function($event){_vm.activeIndex = $event;}}}):_c('gl-duo-chat-context-item-menu-search-items',{attrs:{"active-index":_vm.activeIndex,"category":_vm.selectedCategory,"loading":_vm.loading,"error":_vm.error,"results":_vm.results},on:{"select":_vm.selectItem,"keyup":_vm.handleKeyUp,"active-index-change":function($event){_vm.activeIndex = $event;}},model:{value:(_vm.searchQuery),callback:function ($$v) {_vm.searchQuery=$$v;},expression:"searchQuery"}})],1):_vm._e()],1)};
|
|
224
234
|
var __vue_staticRenderFns__ = [];
|
|
225
235
|
|
|
226
236
|
/* style */
|
|
@@ -3,6 +3,8 @@ import GlIcon from '../../../../../../base/icon/icon';
|
|
|
3
3
|
import GlToken from '../../../../../../base/token/token';
|
|
4
4
|
import GlTruncate from '../../../../../../utilities/truncate/truncate';
|
|
5
5
|
import GlDuoChatContextItemPopover from '../duo_chat_context_item_popover/duo_chat_context_item_popover';
|
|
6
|
+
import { CONTEXT_ITEM_CATEGORY_LOCAL_GIT, CONTEXT_ITEM_CATEGORY_FILE } from '../constants';
|
|
7
|
+
import GlDuoChatContextItemDetailsModal from '../duo_chat_context_item_details_modal/duo_chat_context_item_details_modal';
|
|
6
8
|
import { contextItemsValidator, getContextItemIcon } from '../utils';
|
|
7
9
|
import __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';
|
|
8
10
|
|
|
@@ -10,6 +12,7 @@ var script = {
|
|
|
10
12
|
name: 'GlDuoChatContextItemSelections',
|
|
11
13
|
components: {
|
|
12
14
|
GlTruncate,
|
|
15
|
+
GlDuoChatContextItemDetailsModal,
|
|
13
16
|
GlIcon,
|
|
14
17
|
GlDuoChatContextItemPopover,
|
|
15
18
|
GlToken
|
|
@@ -54,7 +57,8 @@ var script = {
|
|
|
54
57
|
data() {
|
|
55
58
|
return {
|
|
56
59
|
isCollapsed: this.defaultCollapsed,
|
|
57
|
-
selectionsId: uniqueId()
|
|
60
|
+
selectionsId: uniqueId(),
|
|
61
|
+
previewContextItemId: null
|
|
58
62
|
};
|
|
59
63
|
},
|
|
60
64
|
computed: {
|
|
@@ -72,6 +76,9 @@ var script = {
|
|
|
72
76
|
return 'gl-bg-blue-50 gl-text-blue-600';
|
|
73
77
|
}
|
|
74
78
|
return '';
|
|
79
|
+
},
|
|
80
|
+
contextItemPreview() {
|
|
81
|
+
return this.selections.find(item => item.id === this.previewContextItemId);
|
|
75
82
|
}
|
|
76
83
|
},
|
|
77
84
|
methods: {
|
|
@@ -85,6 +92,26 @@ var script = {
|
|
|
85
92
|
* @property {Object} item - The context contextItem to be removed
|
|
86
93
|
*/
|
|
87
94
|
this.$emit('remove', contextItem);
|
|
95
|
+
},
|
|
96
|
+
onOpenItem(event, contextItem) {
|
|
97
|
+
const isKeypressOnCloseButton = event.type === 'keydown' && event.target !== event.currentTarget;
|
|
98
|
+
if (isKeypressOnCloseButton) {
|
|
99
|
+
// don't respond to events triggered by the gl-token children (e.g. the close button)
|
|
100
|
+
return;
|
|
101
|
+
}
|
|
102
|
+
if (!this.canOpen(contextItem)) {
|
|
103
|
+
return;
|
|
104
|
+
}
|
|
105
|
+
if (!contextItem.content) {
|
|
106
|
+
this.$emit('get-content', contextItem);
|
|
107
|
+
}
|
|
108
|
+
this.previewContextItemId = contextItem.id;
|
|
109
|
+
},
|
|
110
|
+
canOpen(contextItem) {
|
|
111
|
+
return [CONTEXT_ITEM_CATEGORY_LOCAL_GIT, CONTEXT_ITEM_CATEGORY_FILE].includes(contextItem.category);
|
|
112
|
+
},
|
|
113
|
+
onClosePreview() {
|
|
114
|
+
this.previewContextItemId = null;
|
|
88
115
|
}
|
|
89
116
|
}
|
|
90
117
|
};
|
|
@@ -93,7 +120,7 @@ var script = {
|
|
|
93
120
|
const __vue_script__ = script;
|
|
94
121
|
|
|
95
122
|
/* template */
|
|
96
|
-
var __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:"gl-flex gl-flex-col",class:_vm.variantClasses},[_c('button',{staticClass:"gl-flex gl-w-full gl-items-center gl-border-0 gl-bg-transparent gl-p-0 gl-text-left gl-text-xs gl-lowercase gl-text-inherit",attrs:{"data-testid":"chat-context-selections-title","type":"button"},on:{"click":_vm.toggleCollapse}},[_c('gl-icon',{attrs:{"name":_vm.collapseIconName,"data-testid":"chat-context-collapse-icon"}}),_vm._v(" "+_vm._s(_vm.title)+"\n ")],1),_vm._v(" "),_c('div',{directives:[{name:"show",rawName:"v-show",value:(!_vm.isCollapsed),expression:"!isCollapsed"}],staticClass:"gl-mt-1 gl-flex gl-grow gl-flex-wrap",attrs:{"data-testid":"chat-context-tokens-wrapper"}},_vm._l((_vm.selections),function(item){return _c('gl-token',{key:item.id,staticClass:"gl-mb-2 gl-mr-2 gl-max-w-full",class:_vm.tokenVariantClasses,attrs:{"id":("context-item-" + (item.id) + "-" + _vm.selectionsId + "-token"),"view-only":!_vm.removable,"variant":"default"},on:{"close":function($event){return _vm.onRemoveItem(item)}}},[_c('div',{staticClass:"gl-flex gl-min-w-0 gl-items-center",attrs:{"id":("context-item-" + (item.id) + "-" + _vm.selectionsId)}},[(_vm.getContextItemIcon(item))?_c('gl-icon',{staticClass:"gl-mr-1",attrs:{"name":_vm.getContextItemIcon(item),"size":12}}):_vm._e(),_vm._v(" "),_c('gl-truncate',{attrs:{"text":item.metadata.title,"position":"middle"}})],1),_vm._v(" "),_c('gl-duo-chat-context-item-popover',{attrs:{"context-item":item,"target":("context-item-" + (item.id) + "-" + _vm.selectionsId + "-token"),"placement":"bottom"}})],1)}),1)])};
|
|
123
|
+
var __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:"gl-flex gl-flex-col",class:_vm.variantClasses},[_c('button',{staticClass:"gl-flex gl-w-full gl-items-center gl-border-0 gl-bg-transparent gl-p-0 gl-text-left gl-text-xs gl-lowercase gl-text-inherit",attrs:{"data-testid":"chat-context-selections-title","type":"button"},on:{"click":_vm.toggleCollapse}},[_c('gl-icon',{attrs:{"name":_vm.collapseIconName,"data-testid":"chat-context-collapse-icon"}}),_vm._v(" "+_vm._s(_vm.title)+"\n ")],1),_vm._v(" "),_c('div',{directives:[{name:"show",rawName:"v-show",value:(!_vm.isCollapsed),expression:"!isCollapsed"}],staticClass:"gl-mt-1 gl-flex gl-grow gl-flex-wrap",attrs:{"data-testid":"chat-context-tokens-wrapper"}},_vm._l((_vm.selections),function(item){return _c('gl-token',{key:item.id,staticClass:"gl-mb-2 gl-mr-2 gl-max-w-full",class:_vm.tokenVariantClasses,attrs:{"id":("context-item-" + (item.id) + "-" + _vm.selectionsId + "-token"),"view-only":!_vm.removable,"variant":"default","tabindex":_vm.canOpen(item) ? 0 : -1,"role":_vm.canOpen(item) ? 'button' : undefined},on:{"click":function($event){return _vm.onOpenItem($event, item)},"keydown":[function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,"enter",13,$event.key,"Enter")){ return null; }return _vm.onOpenItem($event, item)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,"space",32,$event.key,[" ","Spacebar"])){ return null; }$event.preventDefault();return _vm.onOpenItem($event, item)}],"close":function($event){return _vm.onRemoveItem(item)}}},[_c('div',{staticClass:"gl-flex gl-min-w-0 gl-items-center",attrs:{"id":("context-item-" + (item.id) + "-" + _vm.selectionsId)}},[(_vm.getContextItemIcon(item))?_c('gl-icon',{staticClass:"gl-mr-1",attrs:{"name":_vm.getContextItemIcon(item),"size":12}}):_vm._e(),_vm._v(" "),_c('gl-truncate',{attrs:{"text":item.metadata.title,"position":"middle"}})],1),_vm._v(" "),_c('gl-duo-chat-context-item-popover',{attrs:{"context-item":item,"target":("context-item-" + (item.id) + "-" + _vm.selectionsId + "-token"),"placement":"bottom"},on:{"show-git-diff":function($event){return _vm.onOpenItem(item)}}})],1)}),1),_vm._v(" "),(_vm.contextItemPreview)?_c('gl-duo-chat-context-item-details-modal',{attrs:{"context-item":_vm.contextItemPreview},on:{"close":_vm.onClosePreview}}):_vm._e()],1)};
|
|
97
124
|
var __vue_staticRenderFns__ = [];
|
|
98
125
|
|
|
99
126
|
/* style */
|
package/dist/components/experimental/duo/chat/components/duo_chat_context/mock_context_data.js
CHANGED
|
@@ -20,6 +20,19 @@ const MOCK_CATEGORIES = [{
|
|
|
20
20
|
function getMockCategory(categoryValue) {
|
|
21
21
|
return MOCK_CATEGORIES.find(cat => cat.value === categoryValue);
|
|
22
22
|
}
|
|
23
|
+
const MOCK_CONTEXT_FILE_CONTENT = `export function waterPlants() {
|
|
24
|
+
console.log('sprinkle');
|
|
25
|
+
}`;
|
|
26
|
+
const MOCK_CONTEXT_FILE_DIFF_CONTENT = `diff --git a/src/plants/strawberry.ts b/src/plants/strawberry.ts
|
|
27
|
+
index 1234567..8901234 100644
|
|
28
|
+
--- a/src/plants/strawberry.ts
|
|
29
|
+
+++ b/src/plants/strawberry.ts
|
|
30
|
+
@@ -1,4 +1,4 @@
|
|
31
|
+
export const strawberry = {
|
|
32
|
+
name: 'Strawberry',
|
|
33
|
+
- waterNeeds: 'moderate',
|
|
34
|
+
+ waterNeeds: 'high',
|
|
35
|
+
};`;
|
|
23
36
|
const MOCK_CONTEXT_ITEM_FILE = {
|
|
24
37
|
id: '123e4567-e89b-12d3-a456-426614174000',
|
|
25
38
|
category: CONTEXT_ITEM_CATEGORY_FILE,
|
|
@@ -175,4 +188,4 @@ const getMockContextItems = () => {
|
|
|
175
188
|
return [...enabledItems, ...disabledItems];
|
|
176
189
|
};
|
|
177
190
|
|
|
178
|
-
export { MOCK_CATEGORIES, MOCK_CONTEXT_ITEM_FILE, MOCK_CONTEXT_ITEM_FILE_DISABLED, MOCK_CONTEXT_ITEM_GIT_COMMIT, MOCK_CONTEXT_ITEM_GIT_DIFF, MOCK_CONTEXT_ITEM_ISSUE, MOCK_CONTEXT_ITEM_ISSUE_DISABLED, MOCK_CONTEXT_ITEM_MERGE_REQUEST, MOCK_CONTEXT_ITEM_MERGE_REQUEST_DISABLED, getMockCategory, getMockContextItems };
|
|
191
|
+
export { MOCK_CATEGORIES, MOCK_CONTEXT_FILE_CONTENT, MOCK_CONTEXT_FILE_DIFF_CONTENT, MOCK_CONTEXT_ITEM_FILE, MOCK_CONTEXT_ITEM_FILE_DISABLED, MOCK_CONTEXT_ITEM_GIT_COMMIT, MOCK_CONTEXT_ITEM_GIT_DIFF, MOCK_CONTEXT_ITEM_ISSUE, MOCK_CONTEXT_ITEM_ISSUE_DISABLED, MOCK_CONTEXT_ITEM_MERGE_REQUEST, MOCK_CONTEXT_ITEM_MERGE_REQUEST_DISABLED, getMockCategory, getMockContextItems };
|
|
@@ -54,6 +54,9 @@ var script = {
|
|
|
54
54
|
},
|
|
55
55
|
onInsertCodeSnippet(e) {
|
|
56
56
|
this.$emit('insert-code-snippet', e);
|
|
57
|
+
},
|
|
58
|
+
onGetContextItemContent(e) {
|
|
59
|
+
this.$emit('get-context-item-content', e);
|
|
57
60
|
}
|
|
58
61
|
},
|
|
59
62
|
i18n
|
|
@@ -63,7 +66,7 @@ var script = {
|
|
|
63
66
|
const __vue_script__ = script;
|
|
64
67
|
|
|
65
68
|
/* template */
|
|
66
|
-
var __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{class:['gl-flex gl-flex-col gl-justify-end', { 'insert-code-hidden': !_vm.enableCodeInsertion }]},[(_vm.showDelimiter)?_c('div',{staticClass:"gl-my-5 gl-flex gl-items-center gl-gap-4 gl-text-gray-500",attrs:{"data-testid":"conversation-delimiter"}},[_c('hr',{staticClass:"gl-grow"}),_vm._v(" "),_c('span',[_vm._v(_vm._s(_vm.$options.i18n.CONVERSATION_NEW_CHAT))]),_vm._v(" "),_c('hr',{staticClass:"gl-grow"})]):_vm._e(),_vm._v(" "),_vm._l((_vm.messages),function(msg,index){return _c('gl-duo-chat-message',{key:((msg.role) + "-" + index),attrs:{"message":msg,"is-cancelled":_vm.canceledRequestIds.includes(msg.requestId)},on:{"track-feedback":_vm.onTrackFeedback,"insert-code-snippet":_vm.onInsertCodeSnippet}})})],2)};
|
|
69
|
+
var __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{class:['gl-flex gl-flex-col gl-justify-end', { 'insert-code-hidden': !_vm.enableCodeInsertion }]},[(_vm.showDelimiter)?_c('div',{staticClass:"gl-my-5 gl-flex gl-items-center gl-gap-4 gl-text-gray-500",attrs:{"data-testid":"conversation-delimiter"}},[_c('hr',{staticClass:"gl-grow"}),_vm._v(" "),_c('span',[_vm._v(_vm._s(_vm.$options.i18n.CONVERSATION_NEW_CHAT))]),_vm._v(" "),_c('hr',{staticClass:"gl-grow"})]):_vm._e(),_vm._v(" "),_vm._l((_vm.messages),function(msg,index){return _c('gl-duo-chat-message',{key:((msg.role) + "-" + index),attrs:{"message":msg,"is-cancelled":_vm.canceledRequestIds.includes(msg.requestId)},on:{"track-feedback":_vm.onTrackFeedback,"insert-code-snippet":_vm.onInsertCodeSnippet,"get-context-item-content":_vm.onGetContextItemContent}})})],2)};
|
|
67
70
|
var __vue_staticRenderFns__ = [];
|
|
68
71
|
|
|
69
72
|
/* style */
|
package/dist/components/experimental/duo/chat/components/duo_chat_message/duo_chat_message.js
CHANGED
|
@@ -212,6 +212,12 @@ var script = {
|
|
|
212
212
|
},
|
|
213
213
|
onInsertCodeSnippet(e) {
|
|
214
214
|
this.$emit('insert-code-snippet', e);
|
|
215
|
+
},
|
|
216
|
+
onGetContextItemContent(contextItem) {
|
|
217
|
+
this.$emit('get-context-item-content', {
|
|
218
|
+
messageId: this.message.id,
|
|
219
|
+
contextItem
|
|
220
|
+
});
|
|
215
221
|
}
|
|
216
222
|
}
|
|
217
223
|
};
|
|
@@ -226,7 +232,7 @@ var __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=
|
|
|
226
232
|
_vm.isAssistantMessage,
|
|
227
233
|
'gl-bg-white': _vm.isAssistantMessage && !_vm.error,
|
|
228
234
|
'!gl-border-none gl-bg-red-50': _vm.error,
|
|
229
|
-
},on:{"insert-code-snippet":_vm.onInsertCodeSnippet}},[(_vm.error)?_c('gl-icon',{staticClass:"error-icon gl-border gl-mr-3 gl-shrink-0 gl-rounded-full gl-border-red-500 gl-text-red-600",attrs:{"aria-label":_vm.$options.i18n.MESSAGE_ERROR,"name":"status_warning_borderless","size":16,"data-testid":"error"}}):_vm._e(),_vm._v(" "),_c('div',{ref:"content-wrapper",class:{ 'has-error': _vm.error }},[(_vm.displaySelectedContextItems && _vm.isAssistantMessage)?_c('gl-duo-chat-context-item-selections',{attrs:{"selections":_vm.selectedContextItems,"title":_vm.selectedContextItemsTitle,"default-collapsed":_vm.selectedContextItemsDefaultCollapsed,"variant":"assistant"}}):_vm._e(),_vm._v(" "),(_vm.error)?_c('div',{directives:[{name:"safe-html",rawName:"v-safe-html:[$options.safeHtmlConfigExtension]",value:(_vm.renderedError),expression:"renderedError",arg:_vm.$options.safeHtmlConfigExtension}],ref:"error-message"}):_c('div',[_c('div',{directives:[{name:"safe-html",rawName:"v-safe-html:[$options.safeHtmlConfigExtension]",value:(_vm.messageContent),expression:"messageContent",arg:_vm.$options.safeHtmlConfigExtension}],ref:"content"}),_vm._v(" "),(_vm.isAssistantMessage)?[(_vm.sources)?_c('documentation-sources',{attrs:{"sources":_vm.sources}}):_vm._e(),_vm._v(" "),_c('div',{staticClass:"duo-chat-message-feedback gl-mt-4 gl-flex gl-items-end"},[(_vm.isChunkAndNotCancelled)?_c('gl-loading-icon',{staticClass:"gl-pt-4",attrs:{"variant":"dots","inline":""}}):_vm._e(),_vm._v(" "),(_vm.isNotChunkOrCancelled)?_c('gl-duo-user-feedback',{attrs:{"feedback-received":_vm.hasFeedback,"modal-title":_vm.$options.i18n.MODAL.TITLE,"modal-alert":_vm.$options.i18n.MODAL.ALERT_TEXT},on:{"feedback":_vm.logEvent},scopedSlots:_vm._u([{key:"feedback-extra-fields",fn:function(){return [_c('gl-form-group',{attrs:{"label":_vm.$options.i18n.MODAL.DID_WHAT,"optional":""}},[_c('gl-form-textarea',{attrs:{"placeholder":_vm.$options.i18n.MODAL.INTERACTION},model:{value:(_vm.didWhat),callback:function ($$v) {_vm.didWhat=$$v;},expression:"didWhat"}})],1),_vm._v(" "),_c('gl-form-group',{attrs:{"label":_vm.$options.i18n.MODAL.IMPROVE_WHAT,"optional":""}},[_c('gl-form-textarea',{attrs:{"placeholder":_vm.$options.i18n.MODAL.BETTER_RESPONSE},model:{value:(_vm.improveWhat),callback:function ($$v) {_vm.improveWhat=$$v;},expression:"improveWhat"}})],1)]},proxy:true}],null,false,419229417)}):_vm._e()],1)]:_vm._e()],2),_vm._v(" "),(_vm.displaySelectedContextItems && _vm.isUserMessage)?_c('gl-duo-chat-context-item-selections',{attrs:{"selections":_vm.selectedContextItems,"title":_vm.selectedContextItemsTitle,"default-collapsed":_vm.selectedContextItemsDefaultCollapsed,"variant":"user"}}):_vm._e()],1)],1)};
|
|
235
|
+
},on:{"insert-code-snippet":_vm.onInsertCodeSnippet}},[(_vm.error)?_c('gl-icon',{staticClass:"error-icon gl-border gl-mr-3 gl-shrink-0 gl-rounded-full gl-border-red-500 gl-text-red-600",attrs:{"aria-label":_vm.$options.i18n.MESSAGE_ERROR,"name":"status_warning_borderless","size":16,"data-testid":"error"}}):_vm._e(),_vm._v(" "),_c('div',{ref:"content-wrapper",class:{ 'has-error': _vm.error }},[(_vm.displaySelectedContextItems && _vm.isAssistantMessage)?_c('gl-duo-chat-context-item-selections',{attrs:{"selections":_vm.selectedContextItems,"title":_vm.selectedContextItemsTitle,"default-collapsed":_vm.selectedContextItemsDefaultCollapsed,"variant":"assistant"},on:{"get-content":_vm.onGetContextItemContent}}):_vm._e(),_vm._v(" "),(_vm.error)?_c('div',{directives:[{name:"safe-html",rawName:"v-safe-html:[$options.safeHtmlConfigExtension]",value:(_vm.renderedError),expression:"renderedError",arg:_vm.$options.safeHtmlConfigExtension}],ref:"error-message"}):_c('div',[_c('div',{directives:[{name:"safe-html",rawName:"v-safe-html:[$options.safeHtmlConfigExtension]",value:(_vm.messageContent),expression:"messageContent",arg:_vm.$options.safeHtmlConfigExtension}],ref:"content"}),_vm._v(" "),(_vm.isAssistantMessage)?[(_vm.sources)?_c('documentation-sources',{attrs:{"sources":_vm.sources}}):_vm._e(),_vm._v(" "),_c('div',{staticClass:"duo-chat-message-feedback gl-mt-4 gl-flex gl-items-end"},[(_vm.isChunkAndNotCancelled)?_c('gl-loading-icon',{staticClass:"gl-pt-4",attrs:{"variant":"dots","inline":""}}):_vm._e(),_vm._v(" "),(_vm.isNotChunkOrCancelled)?_c('gl-duo-user-feedback',{attrs:{"feedback-received":_vm.hasFeedback,"modal-title":_vm.$options.i18n.MODAL.TITLE,"modal-alert":_vm.$options.i18n.MODAL.ALERT_TEXT},on:{"feedback":_vm.logEvent},scopedSlots:_vm._u([{key:"feedback-extra-fields",fn:function(){return [_c('gl-form-group',{attrs:{"label":_vm.$options.i18n.MODAL.DID_WHAT,"optional":""}},[_c('gl-form-textarea',{attrs:{"placeholder":_vm.$options.i18n.MODAL.INTERACTION},model:{value:(_vm.didWhat),callback:function ($$v) {_vm.didWhat=$$v;},expression:"didWhat"}})],1),_vm._v(" "),_c('gl-form-group',{attrs:{"label":_vm.$options.i18n.MODAL.IMPROVE_WHAT,"optional":""}},[_c('gl-form-textarea',{attrs:{"placeholder":_vm.$options.i18n.MODAL.BETTER_RESPONSE},model:{value:(_vm.improveWhat),callback:function ($$v) {_vm.improveWhat=$$v;},expression:"improveWhat"}})],1)]},proxy:true}],null,false,419229417)}):_vm._e()],1)]:_vm._e()],2),_vm._v(" "),(_vm.displaySelectedContextItems && _vm.isUserMessage)?_c('gl-duo-chat-context-item-selections',{attrs:{"selections":_vm.selectedContextItems,"title":_vm.selectedContextItemsTitle,"default-collapsed":_vm.selectedContextItemsDefaultCollapsed,"variant":"user"},on:{"get-content":_vm.onGetContextItemContent}}):_vm._e()],1)],1)};
|
|
230
236
|
var __vue_staticRenderFns__ = [];
|
|
231
237
|
|
|
232
238
|
/* style */
|
|
@@ -470,6 +470,14 @@ var script = {
|
|
|
470
470
|
*/
|
|
471
471
|
this.$emit('insert-code-snippet', e);
|
|
472
472
|
},
|
|
473
|
+
onGetContextItemContent(event) {
|
|
474
|
+
/**
|
|
475
|
+
* Emit get-context-item-content event that tells clients to load the full file content for a selected context item.
|
|
476
|
+
* The fully hydrated context item should be updated in the chat message context item.
|
|
477
|
+
* @param {*} event An event containing the message ID and context item to hydrate
|
|
478
|
+
*/
|
|
479
|
+
this.$emit('get-context-item-content', event);
|
|
480
|
+
},
|
|
473
481
|
closeContextItemsMenuOpen() {
|
|
474
482
|
this.contextItemsMenuIsOpen = false;
|
|
475
483
|
this.setPromptAndFocus();
|
|
@@ -490,7 +498,7 @@ var __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=
|
|
|
490
498
|
{
|
|
491
499
|
'gl-h-full': !_vm.hasMessages,
|
|
492
500
|
'force-scroll-bar': _vm.hasMessages,
|
|
493
|
-
} ],attrs:{"tag":"section","name":"message"}},[_vm._l((_vm.conversations),function(conversation,index){return _c('gl-duo-chat-conversation',{key:("conversation-" + index),attrs:{"enable-code-insertion":_vm.enableCodeInsertion,"messages":conversation,"canceled-request-ids":_vm.canceledRequestIds,"show-delimiter":index > 0},on:{"track-feedback":_vm.onTrackFeedback,"insert-code-snippet":_vm.onInsertCodeSnippet}})}),_vm._v(" "),(!_vm.hasMessages && !_vm.isLoading)?[_c('gl-empty-state',{key:"empty-state",staticClass:"gl-flex-grow gl-justify-center",attrs:{"svg-path":_vm.$options.emptySvg,"svg-height":145,"title":_vm.emptyStateTitle},scopedSlots:_vm._u([{key:"description",fn:function(){return [_c('p',{staticClass:"gl-mb-3",attrs:{"data-testid":"gl-duo-chat-empty-state-description"}},[_vm._v("\n "+_vm._s(_vm.emptyStateDescription)+"\n ")]),_vm._v(" "),_c('p',{staticClass:"gl-mt-3 gl-text-sm gl-text-subtle",attrs:{"data-testid":"gl-duo-chat-empty-state-secondary-description"}},[_vm._v("\n "+_vm._s(_vm.emptyStateSecondaryDescription)+"\n ")])]},proxy:true}],null,false,460840487)}),_vm._v(" "),_c('gl-duo-chat-predefined-prompts',{key:"predefined-prompts",attrs:{"prompts":_vm.predefinedPrompts},on:{"click":_vm.sendPredefinedPrompt}})]:_vm._e(),_vm._v(" "),(_vm.isLoading)?_c('gl-duo-chat-loader',{key:"loader",attrs:{"tool-name":_vm.toolName}}):_vm._e(),_vm._v(" "),_c('div',{key:"anchor",ref:"anchor",staticClass:"scroll-anchor"})],2)],1),_vm._v(" "),(_vm.isChatAvailable)?_c('footer',{staticClass:"duo-chat-drawer-footer duo-chat-drawer-footer-sticky gl-border-t gl-bg-gray-10 gl-p-5",class:{ 'duo-chat-drawer-body-scrim-on-footer': !_vm.scrolledToBottom },attrs:{"data-testid":"chat-footer"}},[_c('gl-form',{attrs:{"data-testid":"chat-prompt-form"},on:{"submit":function($event){$event.stopPropagation();$event.preventDefault();return _vm.sendChatPrompt.apply(null, arguments)}}},[_c('div',{staticClass:"gl-relative gl-max-w-full"},[_vm._t("context-items-menu",null,{"isOpen":_vm.contextItemsMenuIsOpen,"onClose":_vm.closeContextItemsMenuOpen,"setRef":_vm.setContextItemsMenuRef,"focusPrompt":_vm.focusChatInput})],2),_vm._v(" "),_c('gl-form-input-group',{scopedSlots:_vm._u([{key:"append",fn:function(){return [(_vm.displaySubmitButton)?_c('gl-button',{staticClass:"!gl-absolute gl-bottom-2 gl-right-2 !gl-rounded-base",attrs:{"icon":"paper-airplane","category":"primary","variant":"confirm","type":"submit","data-testid":"chat-prompt-submit-button","aria-label":_vm.$options.i18n.CHAT_SUBMIT_LABEL}}):_c('gl-button',{staticClass:"!gl-absolute gl-bottom-2 gl-right-2 !gl-rounded-base",attrs:{"icon":"stop","category":"primary","variant":"default","data-testid":"chat-prompt-cancel-button","aria-label":_vm.$options.i18n.CHAT_CANCEL_LABEL},on:{"click":_vm.cancelPrompt}})]},proxy:true}],null,false,677611116)},[_c('div',{staticClass:"duo-chat-input gl-min-h-8 gl-max-w-full gl-grow gl-rounded-base gl-bg-white gl-align-top gl-shadow-inner-1-gray-400",attrs:{"data-value":_vm.prompt}},[(_vm.shouldShowSlashCommands)?_c('gl-card',{ref:"commands",staticClass:"slash-commands !gl-absolute gl-w-full -gl-translate-y-full gl-list-none gl-pl-0 gl-shadow-md",attrs:{"body-class":"!gl-p-2"}},_vm._l((_vm.filteredSlashCommands),function(command,index){return _c('gl-dropdown-item',{key:command.name,class:{ 'active-command': index === _vm.activeCommandIndex },on:{"click":function($event){return _vm.selectSlashCommand(index)}},nativeOn:{"mouseenter":function($event){_vm.activeCommandIndex = index;}}},[_c('span',{staticClass:"gl-flex gl-justify-between"},[_c('span',{staticClass:"gl-block"},[_vm._v(_vm._s(command.name))]),_vm._v(" "),_c('small',{staticClass:"gl-pl-3 gl-text-right gl-italic gl-text-gray-500"},[_vm._v(_vm._s(command.description))])])])}),1):_vm._e(),_vm._v(" "),_c('gl-form-textarea',{ref:"prompt",staticClass:"gl-absolute !gl-h-full gl-rounded-br-none gl-rounded-tr-none !gl-bg-transparent !gl-py-4 !gl-shadow-none",class:{ 'gl-truncate': !_vm.prompt },attrs:{"data-testid":"chat-prompt-input","placeholder":_vm.inputPlaceholder,"autofocus":""},on:{"compositionend":_vm.compositionEnd},nativeOn:{"keydown":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,"enter",13,$event.key,"Enter")){ return null; }if($event.ctrlKey||$event.shiftKey||$event.altKey||$event.metaKey){ return null; }$event.preventDefault();},"keyup":function($event){return _vm.onInputKeyup.apply(null, arguments)}},model:{value:(_vm.prompt),callback:function ($$v) {_vm.prompt=$$v;},expression:"prompt"}})],1)])],1)],1):_vm._e()]):_vm._e()};
|
|
501
|
+
} ],attrs:{"tag":"section","name":"message"}},[_vm._l((_vm.conversations),function(conversation,index){return _c('gl-duo-chat-conversation',{key:("conversation-" + index),attrs:{"enable-code-insertion":_vm.enableCodeInsertion,"messages":conversation,"canceled-request-ids":_vm.canceledRequestIds,"show-delimiter":index > 0},on:{"track-feedback":_vm.onTrackFeedback,"insert-code-snippet":_vm.onInsertCodeSnippet,"get-context-item-content":_vm.onGetContextItemContent}})}),_vm._v(" "),(!_vm.hasMessages && !_vm.isLoading)?[_c('gl-empty-state',{key:"empty-state",staticClass:"gl-flex-grow gl-justify-center",attrs:{"svg-path":_vm.$options.emptySvg,"svg-height":145,"title":_vm.emptyStateTitle},scopedSlots:_vm._u([{key:"description",fn:function(){return [_c('p',{staticClass:"gl-mb-3",attrs:{"data-testid":"gl-duo-chat-empty-state-description"}},[_vm._v("\n "+_vm._s(_vm.emptyStateDescription)+"\n ")]),_vm._v(" "),_c('p',{staticClass:"gl-mt-3 gl-text-sm gl-text-subtle",attrs:{"data-testid":"gl-duo-chat-empty-state-secondary-description"}},[_vm._v("\n "+_vm._s(_vm.emptyStateSecondaryDescription)+"\n ")])]},proxy:true}],null,false,460840487)}),_vm._v(" "),_c('gl-duo-chat-predefined-prompts',{key:"predefined-prompts",attrs:{"prompts":_vm.predefinedPrompts},on:{"click":_vm.sendPredefinedPrompt}})]:_vm._e(),_vm._v(" "),(_vm.isLoading)?_c('gl-duo-chat-loader',{key:"loader",attrs:{"tool-name":_vm.toolName}}):_vm._e(),_vm._v(" "),_c('div',{key:"anchor",ref:"anchor",staticClass:"scroll-anchor"})],2)],1),_vm._v(" "),(_vm.isChatAvailable)?_c('footer',{staticClass:"duo-chat-drawer-footer duo-chat-drawer-footer-sticky gl-border-t gl-bg-gray-10 gl-p-5",class:{ 'duo-chat-drawer-body-scrim-on-footer': !_vm.scrolledToBottom },attrs:{"data-testid":"chat-footer"}},[_c('gl-form',{attrs:{"data-testid":"chat-prompt-form"},on:{"submit":function($event){$event.stopPropagation();$event.preventDefault();return _vm.sendChatPrompt.apply(null, arguments)}}},[_c('div',{staticClass:"gl-relative gl-max-w-full"},[_vm._t("context-items-menu",null,{"isOpen":_vm.contextItemsMenuIsOpen,"onClose":_vm.closeContextItemsMenuOpen,"setRef":_vm.setContextItemsMenuRef,"focusPrompt":_vm.focusChatInput})],2),_vm._v(" "),_c('gl-form-input-group',{scopedSlots:_vm._u([{key:"append",fn:function(){return [(_vm.displaySubmitButton)?_c('gl-button',{staticClass:"!gl-absolute gl-bottom-2 gl-right-2 !gl-rounded-base",attrs:{"icon":"paper-airplane","category":"primary","variant":"confirm","type":"submit","data-testid":"chat-prompt-submit-button","aria-label":_vm.$options.i18n.CHAT_SUBMIT_LABEL}}):_c('gl-button',{staticClass:"!gl-absolute gl-bottom-2 gl-right-2 !gl-rounded-base",attrs:{"icon":"stop","category":"primary","variant":"default","data-testid":"chat-prompt-cancel-button","aria-label":_vm.$options.i18n.CHAT_CANCEL_LABEL},on:{"click":_vm.cancelPrompt}})]},proxy:true}],null,false,677611116)},[_c('div',{staticClass:"duo-chat-input gl-min-h-8 gl-max-w-full gl-grow gl-rounded-base gl-bg-white gl-align-top gl-shadow-inner-1-gray-400",attrs:{"data-value":_vm.prompt}},[(_vm.shouldShowSlashCommands)?_c('gl-card',{ref:"commands",staticClass:"slash-commands !gl-absolute gl-w-full -gl-translate-y-full gl-list-none gl-pl-0 gl-shadow-md",attrs:{"body-class":"!gl-p-2"}},_vm._l((_vm.filteredSlashCommands),function(command,index){return _c('gl-dropdown-item',{key:command.name,class:{ 'active-command': index === _vm.activeCommandIndex },on:{"click":function($event){return _vm.selectSlashCommand(index)}},nativeOn:{"mouseenter":function($event){_vm.activeCommandIndex = index;}}},[_c('span',{staticClass:"gl-flex gl-justify-between"},[_c('span',{staticClass:"gl-block"},[_vm._v(_vm._s(command.name))]),_vm._v(" "),_c('small',{staticClass:"gl-pl-3 gl-text-right gl-italic gl-text-gray-500"},[_vm._v(_vm._s(command.description))])])])}),1):_vm._e(),_vm._v(" "),_c('gl-form-textarea',{ref:"prompt",staticClass:"gl-absolute !gl-h-full gl-rounded-br-none gl-rounded-tr-none !gl-bg-transparent !gl-py-4 !gl-shadow-none",class:{ 'gl-truncate': !_vm.prompt },attrs:{"data-testid":"chat-prompt-input","placeholder":_vm.inputPlaceholder,"autofocus":""},on:{"compositionend":_vm.compositionEnd},nativeOn:{"keydown":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,"enter",13,$event.key,"Enter")){ return null; }if($event.ctrlKey||$event.shiftKey||$event.altKey||$event.metaKey){ return null; }$event.preventDefault();},"keyup":function($event){return _vm.onInputKeyup.apply(null, arguments)}},model:{value:(_vm.prompt),callback:function ($$v) {_vm.prompt=$$v;},expression:"prompt"}})],1)])],1)],1):_vm._e()]):_vm._e()};
|
|
494
502
|
var __vue_staticRenderFns__ = [];
|
|
495
503
|
|
|
496
504
|
/* style */
|