@gitlab/ui 91.0.0 → 91.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 +14 -0
- package/dist/components/base/avatars_inline/avatars_inline.js +1 -1
- package/dist/components/experimental/duo/chat/components/duo_chat_context/constants.js +5 -0
- package/dist/components/experimental/duo/chat/components/duo_chat_context/duo_chat_context_item_popover/duo_chat_context_item_popover.js +93 -0
- package/dist/components/experimental/duo/chat/components/duo_chat_context/duo_chat_context_item_selections/duo_chat_context_item_selections.js +91 -0
- package/dist/components/experimental/duo/chat/components/duo_chat_context/mock_context_data.js +121 -0
- package/dist/components/experimental/duo/chat/components/duo_chat_message/duo_chat_message.js +24 -1
- package/dist/components/experimental/duo/chat/mock_data.js +9 -3
- package/dist/tailwind.css +1 -1
- package/dist/tailwind.css.map +1 -1
- package/package.json +1 -1
- package/src/components/base/avatars_inline/avatars_inline.vue +1 -1
- package/src/components/experimental/duo/chat/components/duo_chat_context/constants.js +3 -0
- package/src/components/experimental/duo/chat/components/duo_chat_context/duo_chat_context_item_popover/duo_chat_context_item_popover.vue +111 -0
- package/src/components/experimental/duo/chat/components/duo_chat_context/duo_chat_context_item_selections/duo_chat_context_item_selections.vue +94 -0
- package/src/components/experimental/duo/chat/components/duo_chat_context/mock_context_data.js +137 -0
- package/src/components/experimental/duo/chat/components/duo_chat_message/duo_chat_message.md +5 -0
- package/src/components/experimental/duo/chat/components/duo_chat_message/duo_chat_message.vue +43 -0
- package/src/components/experimental/duo/chat/mock_data.js +8 -2
- package/translations.js +3 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,17 @@
|
|
|
1
|
+
## [91.1.1](https://gitlab.com/gitlab-org/gitlab-ui/compare/v91.1.0...v91.1.1) (2024-08-29)
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
### Bug Fixes
|
|
5
|
+
|
|
6
|
+
* **avatarsInline:** fix incorrect class name ([ab8f1c2](https://gitlab.com/gitlab-org/gitlab-ui/commit/ab8f1c22048cdff1db4194aed5b8bec4d2d68d6a))
|
|
7
|
+
|
|
8
|
+
# [91.1.0](https://gitlab.com/gitlab-org/gitlab-ui/compare/v91.0.0...v91.1.0) (2024-08-29)
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
### Features
|
|
12
|
+
|
|
13
|
+
* **GlDuoChat:** display attached context in chat messages ([be92188](https://gitlab.com/gitlab-org/gitlab-ui/commit/be92188062f895f5f27117f501d4b31ba52ac598))
|
|
14
|
+
|
|
1
15
|
# [91.0.0](https://gitlab.com/gitlab-org/gitlab-ui/compare/v90.5.0...v91.0.0) (2024-08-29)
|
|
2
16
|
|
|
3
17
|
|
|
@@ -84,7 +84,7 @@ var script = {
|
|
|
84
84
|
const __vue_script__ = script;
|
|
85
85
|
|
|
86
86
|
/* template */
|
|
87
|
-
var __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:"gl-avatars-inline",class:("gl-avatars-inline-" + _vm.badgeSize)},[_vm._l((_vm.visibleAvatars),function(avatar,index){return _c('div',{key:index,staticClass:"gl-avatars-inline-child"},[_vm._t("avatar",function(){return [_c('gl-avatar',_vm._b({attrs:{"size":_vm.avatarSize}},'gl-avatar',avatar,false))]},{"avatar":avatar})],2)}),_vm._v(" "),(_vm.collapsed && _vm.collapsable)?_c('div',{staticClass:"gl-avatars-inline-child"},[(_vm.badgeTooltipProp)?_c('gl-tooltip',{attrs:{"target":function () { return _vm.$refs.badge; }}},[_vm._v("\n "+_vm._s(_vm.badgeTooltipTitle)+"\n ")]):_vm._e(),_vm._v(" "),_c('span',{ref:"badge",class:['gl-avatars-inline-badge', _vm.badgeSize],attrs:{"data-testid":"collapsed-avatars-badge","aria-hidden":"true"}},[_vm._v("\n "+_vm._s(_vm.badgeLabel)+"\n ")]),_vm._v(" "),_c('span',{staticClass:"sr-only",attrs:{"data-testid":"badge-sr-only-text"}},[_vm._v(_vm._s(_vm.badgeSrOnlyText))])],1):_vm._e()],2)};
|
|
87
|
+
var __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:"gl-avatars-inline",class:("gl-avatars-inline-" + _vm.badgeSize)},[_vm._l((_vm.visibleAvatars),function(avatar,index){return _c('div',{key:index,staticClass:"gl-avatars-inline-child"},[_vm._t("avatar",function(){return [_c('gl-avatar',_vm._b({attrs:{"size":_vm.avatarSize}},'gl-avatar',avatar,false))]},{"avatar":avatar})],2)}),_vm._v(" "),(_vm.collapsed && _vm.collapsable)?_c('div',{staticClass:"gl-avatars-inline-child"},[(_vm.badgeTooltipProp)?_c('gl-tooltip',{attrs:{"target":function () { return _vm.$refs.badge; }}},[_vm._v("\n "+_vm._s(_vm.badgeTooltipTitle)+"\n ")]):_vm._e(),_vm._v(" "),_c('span',{ref:"badge",class:['gl-avatars-inline-badge', _vm.badgeSize],attrs:{"data-testid":"collapsed-avatars-badge","aria-hidden":"true"}},[_vm._v("\n "+_vm._s(_vm.badgeLabel)+"\n ")]),_vm._v(" "),_c('span',{staticClass:"gl-sr-only",attrs:{"data-testid":"badge-sr-only-text"}},[_vm._v(_vm._s(_vm.badgeSrOnlyText))])],1):_vm._e()],2)};
|
|
88
88
|
var __vue_staticRenderFns__ = [];
|
|
89
89
|
|
|
90
90
|
/* style */
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
import GlPopover from '../../../../../../base/popover/popover';
|
|
2
|
+
import { translate } from '../../../../../../../utils/i18n';
|
|
3
|
+
import { CONTEXT_ITEM_TYPE_ISSUE, CONTEXT_ITEM_TYPE_MERGE_REQUEST, CONTEXT_ITEM_TYPE_PROJECT_FILE } from '../constants';
|
|
4
|
+
import __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';
|
|
5
|
+
|
|
6
|
+
const ID_PREFIXES = {
|
|
7
|
+
issue: '#',
|
|
8
|
+
merge_request: '!'
|
|
9
|
+
};
|
|
10
|
+
var script = {
|
|
11
|
+
name: 'DuoChatContextItemPopover',
|
|
12
|
+
components: {
|
|
13
|
+
GlPopover
|
|
14
|
+
},
|
|
15
|
+
props: {
|
|
16
|
+
item: {
|
|
17
|
+
type: Object,
|
|
18
|
+
required: true
|
|
19
|
+
},
|
|
20
|
+
target: {
|
|
21
|
+
type: String,
|
|
22
|
+
required: true
|
|
23
|
+
},
|
|
24
|
+
placement: {
|
|
25
|
+
type: String,
|
|
26
|
+
default: 'bottom',
|
|
27
|
+
required: false
|
|
28
|
+
}
|
|
29
|
+
},
|
|
30
|
+
computed: {
|
|
31
|
+
itemInfo() {
|
|
32
|
+
var _this$item$metadata;
|
|
33
|
+
return ((_this$item$metadata = this.item.metadata) === null || _this$item$metadata === void 0 ? void 0 : _this$item$metadata.info) || {};
|
|
34
|
+
},
|
|
35
|
+
id() {
|
|
36
|
+
const isIssuable = this.item.type === CONTEXT_ITEM_TYPE_ISSUE || this.item.type === CONTEXT_ITEM_TYPE_MERGE_REQUEST;
|
|
37
|
+
return isIssuable ? this.itemInfo.iid || '' : null;
|
|
38
|
+
},
|
|
39
|
+
idPrefix() {
|
|
40
|
+
return ID_PREFIXES[this.item.type] || '';
|
|
41
|
+
},
|
|
42
|
+
filePath() {
|
|
43
|
+
return this.item.type === CONTEXT_ITEM_TYPE_PROJECT_FILE ? this.itemInfo.relFilePath || '' : null;
|
|
44
|
+
},
|
|
45
|
+
isEnabled() {
|
|
46
|
+
return this.item.isEnabled !== false;
|
|
47
|
+
},
|
|
48
|
+
disabledMessage() {
|
|
49
|
+
return Array.isArray(this.item.disabledReasons) && this.item.disabledReasons.length > 0 ? this.item.disabledReasons.join(', ') : translate('DuoChatContextItemPopover.DisabledReason', 'This item is disabled');
|
|
50
|
+
}
|
|
51
|
+
},
|
|
52
|
+
methods: {
|
|
53
|
+
translate
|
|
54
|
+
}
|
|
55
|
+
};
|
|
56
|
+
|
|
57
|
+
/* script */
|
|
58
|
+
const __vue_script__ = script;
|
|
59
|
+
|
|
60
|
+
/* template */
|
|
61
|
+
var __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('gl-popover',{attrs:{"target":_vm.target,"triggers":"hover focus","placement":_vm.placement,"title":_vm.item.metadata.name,"custom-class":"gl-duo-chat-item-popover"},scopedSlots:_vm._u([{key:"title",fn:function(){return [_c('span',{staticClass:"gl-text-sm gl-text-gray-500",attrs:{"data-testid":"chat-context-popover-title"}},[_vm._v(_vm._s(_vm.item.metadata.name))])]},proxy:true}])},[_vm._v(" "),_c('div',{staticClass:"gl-p-3"},[_c('div',{staticClass:"gl-mb-2"},[_c('strong',{staticClass:"gl-mr-1"},[_vm._v(_vm._s(_vm.translate('DuoChatContextItemPopover.ProjectLabel', 'Project:')))]),_vm._v(" "),_c('span',[_vm._v(_vm._s(_vm.itemInfo.project))])]),_vm._v(" "),(_vm.filePath !== null)?_c('div',{staticClass:"gl-mb-2"},[_c('strong',{staticClass:"gl-mr-1"},[_vm._v(_vm._s(_vm.translate('DuoChatContextItemPopover.PathLabel', 'Path:')))]),_vm._v(" "),_c('span',[_vm._v(_vm._s(_vm.filePath))])]):_vm._e(),_vm._v(" "),(_vm.id !== null)?_c('div',{staticClass:"gl-mb-2"},[_c('strong',{staticClass:"gl-mr-1"},[_vm._v(_vm._s(_vm.translate('DuoChatContextItemPopover.IdLabel', 'ID:')))]),_vm._v(" "),_c('span',[_vm._v(_vm._s(_vm.idPrefix)+_vm._s(_vm.id))])]):_vm._e(),_vm._v(" "),_c('div',{staticClass:"gl-mb-2"},[_c('strong',{staticClass:"gl-mr-1"},[_vm._v(_vm._s(_vm.translate('DuoChatContextItemPopover.TypeLabel', 'Type:')))]),_vm._v(" "),_c('span',[_vm._v(_vm._s(_vm.item.type))])]),_vm._v(" "),(!_vm.isEnabled)?_c('div',{staticClass:"gl-text-red-500",attrs:{"data-testid":"chat-context-popover-disabled"}},[_c('strong',{staticClass:"gl-mr-1"},[_vm._v(_vm._s(_vm.translate('DuoChatContextItemPopover.DisabledMessageLabel', 'Note:')))]),_vm._v(" "),_c('span',[_vm._v(_vm._s(_vm.disabledMessage))])]):_vm._e()])])};
|
|
62
|
+
var __vue_staticRenderFns__ = [];
|
|
63
|
+
|
|
64
|
+
/* style */
|
|
65
|
+
const __vue_inject_styles__ = undefined;
|
|
66
|
+
/* scoped */
|
|
67
|
+
const __vue_scope_id__ = undefined;
|
|
68
|
+
/* module identifier */
|
|
69
|
+
const __vue_module_identifier__ = undefined;
|
|
70
|
+
/* functional template */
|
|
71
|
+
const __vue_is_functional_template__ = false;
|
|
72
|
+
/* style inject */
|
|
73
|
+
|
|
74
|
+
/* style inject SSR */
|
|
75
|
+
|
|
76
|
+
/* style inject shadow dom */
|
|
77
|
+
|
|
78
|
+
|
|
79
|
+
|
|
80
|
+
const __vue_component__ = __vue_normalize__(
|
|
81
|
+
{ render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },
|
|
82
|
+
__vue_inject_styles__,
|
|
83
|
+
__vue_script__,
|
|
84
|
+
__vue_scope_id__,
|
|
85
|
+
__vue_is_functional_template__,
|
|
86
|
+
__vue_module_identifier__,
|
|
87
|
+
false,
|
|
88
|
+
undefined,
|
|
89
|
+
undefined,
|
|
90
|
+
undefined
|
|
91
|
+
);
|
|
92
|
+
|
|
93
|
+
export default __vue_component__;
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import uniqueId from 'lodash/uniqueId';
|
|
2
|
+
import GlIcon from '../../../../../../base/icon/icon';
|
|
3
|
+
import GlToken from '../../../../../../base/token/token';
|
|
4
|
+
import GlDuoChatContextItemPopover from '../duo_chat_context_item_popover/duo_chat_context_item_popover';
|
|
5
|
+
import { CONTEXT_ITEM_TYPE_PROJECT_FILE, CONTEXT_ITEM_TYPE_ISSUE, CONTEXT_ITEM_TYPE_MERGE_REQUEST } from '../constants';
|
|
6
|
+
import __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';
|
|
7
|
+
|
|
8
|
+
var script = {
|
|
9
|
+
name: 'GlDuoChatContextItemSelections',
|
|
10
|
+
components: {
|
|
11
|
+
GlIcon,
|
|
12
|
+
GlDuoChatContextItemPopover,
|
|
13
|
+
GlToken
|
|
14
|
+
},
|
|
15
|
+
props: {
|
|
16
|
+
selections: {
|
|
17
|
+
type: Array,
|
|
18
|
+
required: true
|
|
19
|
+
},
|
|
20
|
+
title: {
|
|
21
|
+
type: String,
|
|
22
|
+
required: true
|
|
23
|
+
},
|
|
24
|
+
defaultCollapsed: {
|
|
25
|
+
type: Boolean,
|
|
26
|
+
required: true
|
|
27
|
+
}
|
|
28
|
+
},
|
|
29
|
+
data() {
|
|
30
|
+
return {
|
|
31
|
+
isCollapsed: this.defaultCollapsed,
|
|
32
|
+
selectionsId: uniqueId()
|
|
33
|
+
};
|
|
34
|
+
},
|
|
35
|
+
computed: {
|
|
36
|
+
collapseIconName() {
|
|
37
|
+
return this.isCollapsed ? 'chevron-right' : 'chevron-down';
|
|
38
|
+
}
|
|
39
|
+
},
|
|
40
|
+
methods: {
|
|
41
|
+
getIconName(type) {
|
|
42
|
+
const iconMap = {
|
|
43
|
+
[CONTEXT_ITEM_TYPE_PROJECT_FILE]: 'document',
|
|
44
|
+
[CONTEXT_ITEM_TYPE_ISSUE]: 'issues',
|
|
45
|
+
[CONTEXT_ITEM_TYPE_MERGE_REQUEST]: 'merge-request'
|
|
46
|
+
};
|
|
47
|
+
return iconMap[type] || 'document';
|
|
48
|
+
},
|
|
49
|
+
toggleCollapse() {
|
|
50
|
+
this.isCollapsed = !this.isCollapsed;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
};
|
|
54
|
+
|
|
55
|
+
/* script */
|
|
56
|
+
const __vue_script__ = script;
|
|
57
|
+
|
|
58
|
+
/* template */
|
|
59
|
+
var __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:"gl-mb-3 gl-flex gl-flex-col"},[_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-gray-500",attrs:{"data-testid":"chat-context-selections-title"},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",attrs:{"view-only":true,"variant":"default"}},[_c('div',{staticClass:"gl-flex gl-items-center",attrs:{"id":("context-item-" + (item.id) + "-" + _vm.selectionsId)}},[_c('gl-icon',{staticClass:"gl-mr-1",attrs:{"name":_vm.getIconName(item.type),"size":12}}),_vm._v("\n "+_vm._s(item.metadata.name)+"\n ")],1),_vm._v(" "),_c('gl-duo-chat-context-item-popover',{attrs:{"item":item,"target":("context-item-" + (item.id) + "-" + _vm.selectionsId),"placement":"bottom"}})],1)}),1)])};
|
|
60
|
+
var __vue_staticRenderFns__ = [];
|
|
61
|
+
|
|
62
|
+
/* style */
|
|
63
|
+
const __vue_inject_styles__ = undefined;
|
|
64
|
+
/* scoped */
|
|
65
|
+
const __vue_scope_id__ = undefined;
|
|
66
|
+
/* module identifier */
|
|
67
|
+
const __vue_module_identifier__ = undefined;
|
|
68
|
+
/* functional template */
|
|
69
|
+
const __vue_is_functional_template__ = false;
|
|
70
|
+
/* style inject */
|
|
71
|
+
|
|
72
|
+
/* style inject SSR */
|
|
73
|
+
|
|
74
|
+
/* style inject shadow dom */
|
|
75
|
+
|
|
76
|
+
|
|
77
|
+
|
|
78
|
+
const __vue_component__ = __vue_normalize__(
|
|
79
|
+
{ render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },
|
|
80
|
+
__vue_inject_styles__,
|
|
81
|
+
__vue_script__,
|
|
82
|
+
__vue_scope_id__,
|
|
83
|
+
__vue_is_functional_template__,
|
|
84
|
+
__vue_module_identifier__,
|
|
85
|
+
false,
|
|
86
|
+
undefined,
|
|
87
|
+
undefined,
|
|
88
|
+
undefined
|
|
89
|
+
);
|
|
90
|
+
|
|
91
|
+
export default __vue_component__;
|
package/dist/components/experimental/duo/chat/components/duo_chat_context/mock_context_data.js
ADDED
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
const MOCK_CONTEXT_ITEM_FILE = {
|
|
2
|
+
id: '123e4567-e89b-12d3-a456-426614174000',
|
|
3
|
+
isEnabled: true,
|
|
4
|
+
metadata: {
|
|
5
|
+
name: 'strawberry.ts',
|
|
6
|
+
info: {
|
|
7
|
+
project: 'example/garden',
|
|
8
|
+
relFilePath: 'src/plants/strawberry.ts'
|
|
9
|
+
}
|
|
10
|
+
},
|
|
11
|
+
type: 'project_file'
|
|
12
|
+
};
|
|
13
|
+
const MOCK_CONTEXT_ITEM_FILE_DISABLED = {
|
|
14
|
+
id: '323e4567-e89b-12d3-a456-426614174002',
|
|
15
|
+
isEnabled: false,
|
|
16
|
+
metadata: {
|
|
17
|
+
name: 'motorbike.cs',
|
|
18
|
+
info: {
|
|
19
|
+
project: 'example/vehicles',
|
|
20
|
+
relFilePath: '/src/VehicleFoo/motorbike.cs'
|
|
21
|
+
}
|
|
22
|
+
},
|
|
23
|
+
type: 'project_file'
|
|
24
|
+
};
|
|
25
|
+
const mockFiles = [MOCK_CONTEXT_ITEM_FILE, {
|
|
26
|
+
id: '223e4567-e89b-12d3-a456-426614174001',
|
|
27
|
+
isEnabled: true,
|
|
28
|
+
metadata: {
|
|
29
|
+
name: 'potato.ts',
|
|
30
|
+
info: {
|
|
31
|
+
project: 'example/garden',
|
|
32
|
+
relFilePath: '/src/plants/potato.ts'
|
|
33
|
+
}
|
|
34
|
+
},
|
|
35
|
+
type: 'project_file'
|
|
36
|
+
}, MOCK_CONTEXT_ITEM_FILE_DISABLED];
|
|
37
|
+
const MOCK_CONTEXT_ITEM_ISSUE = {
|
|
38
|
+
id: '423e4567-e89b-12d3-a456-426614174003',
|
|
39
|
+
isEnabled: true,
|
|
40
|
+
metadata: {
|
|
41
|
+
name: 'Implement watering schedule',
|
|
42
|
+
info: {
|
|
43
|
+
project: 'example/garden',
|
|
44
|
+
iid: 1234
|
|
45
|
+
}
|
|
46
|
+
},
|
|
47
|
+
type: 'issue'
|
|
48
|
+
};
|
|
49
|
+
const MOCK_CONTEXT_ITEM_ISSUE_DISABLED = {
|
|
50
|
+
id: 'c463fb31-2a4c-4f8e-a609-97230ac48ae5',
|
|
51
|
+
isEnabled: false,
|
|
52
|
+
metadata: {
|
|
53
|
+
name: 'Fix vehicle colours',
|
|
54
|
+
info: {
|
|
55
|
+
project: 'example/vehicle',
|
|
56
|
+
iid: 91011
|
|
57
|
+
}
|
|
58
|
+
},
|
|
59
|
+
disabledReasons: ['This foo is not available to bar', 'Lorem something something wow?'],
|
|
60
|
+
type: 'issue'
|
|
61
|
+
};
|
|
62
|
+
const mockIssues = [MOCK_CONTEXT_ITEM_ISSUE, {
|
|
63
|
+
id: '523e4567-e89b-12d3-a456-426614174004',
|
|
64
|
+
isEnabled: true,
|
|
65
|
+
metadata: {
|
|
66
|
+
name: 'Refactor plant growth rates',
|
|
67
|
+
info: {
|
|
68
|
+
project: 'example/garden',
|
|
69
|
+
iid: 5678
|
|
70
|
+
}
|
|
71
|
+
},
|
|
72
|
+
type: 'issue'
|
|
73
|
+
}, MOCK_CONTEXT_ITEM_ISSUE_DISABLED];
|
|
74
|
+
const MOCK_CONTEXT_ITEM_MERGE_REQUEST = {
|
|
75
|
+
id: '623e4567-e89b-12d3-a456-426614174005',
|
|
76
|
+
isEnabled: true,
|
|
77
|
+
metadata: {
|
|
78
|
+
name: 'Improve database performance',
|
|
79
|
+
info: {
|
|
80
|
+
project: 'example/garden',
|
|
81
|
+
iid: 1122
|
|
82
|
+
}
|
|
83
|
+
},
|
|
84
|
+
type: 'merge_request'
|
|
85
|
+
};
|
|
86
|
+
const MOCK_CONTEXT_ITEM_MERGE_REQUEST_DISABLED = {
|
|
87
|
+
id: '4eb665fc-e5e1-49b0-9789-2a16964e461a',
|
|
88
|
+
isEnabled: false,
|
|
89
|
+
metadata: {
|
|
90
|
+
name: 'Fix broken layout at small viewports',
|
|
91
|
+
info: {
|
|
92
|
+
project: 'example/vehicle',
|
|
93
|
+
iid: 5566
|
|
94
|
+
}
|
|
95
|
+
},
|
|
96
|
+
disabledReasons: ['This foo is not available to bar', 'Lorem something something wow?'],
|
|
97
|
+
type: 'merge_request'
|
|
98
|
+
};
|
|
99
|
+
const mockMergeRequests = [MOCK_CONTEXT_ITEM_MERGE_REQUEST, {
|
|
100
|
+
id: '723e4567-e89b-12d3-a456-426614174006',
|
|
101
|
+
isEnabled: false,
|
|
102
|
+
metadata: {
|
|
103
|
+
name: 'Add vehicle registration details',
|
|
104
|
+
info: {
|
|
105
|
+
project: 'example/vehicle',
|
|
106
|
+
iid: 3344
|
|
107
|
+
}
|
|
108
|
+
},
|
|
109
|
+
disabledReasons: ['This foo is not available to bar', 'Lorem something something wow?'],
|
|
110
|
+
type: 'merge_request'
|
|
111
|
+
}, MOCK_CONTEXT_ITEM_MERGE_REQUEST_DISABLED];
|
|
112
|
+
const getMockContextItems = () => {
|
|
113
|
+
const allItems = [...mockFiles, ...mockIssues, ...mockMergeRequests];
|
|
114
|
+
|
|
115
|
+
// put disabled items in the back
|
|
116
|
+
const disabledItems = allItems.filter(item => !item.isEnabled);
|
|
117
|
+
const enabledItems = allItems.filter(item => item.isEnabled);
|
|
118
|
+
return [...enabledItems, ...disabledItems];
|
|
119
|
+
};
|
|
120
|
+
|
|
121
|
+
export { MOCK_CONTEXT_ITEM_FILE, MOCK_CONTEXT_ITEM_FILE_DISABLED, MOCK_CONTEXT_ITEM_ISSUE, MOCK_CONTEXT_ITEM_ISSUE_DISABLED, MOCK_CONTEXT_ITEM_MERGE_REQUEST, MOCK_CONTEXT_ITEM_MERGE_REQUEST_DISABLED, getMockContextItems };
|
package/dist/components/experimental/duo/chat/components/duo_chat_message/duo_chat_message.js
CHANGED
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
import GlIcon from '../../../../../base/icon/icon';
|
|
2
2
|
import GlLoadingIcon from '../../../../../base/loading_icon/loading_icon';
|
|
3
3
|
import { GlTooltipDirective } from '../../../../../../directives/tooltip';
|
|
4
|
+
import GlDuoChatContextItemSelections from '../duo_chat_context/duo_chat_context_item_selections/duo_chat_context_item_selections';
|
|
4
5
|
import GlDuoUserFeedback from '../../../user_feedback/user_feedback';
|
|
5
6
|
import GlFormGroup from '../../../../../base/form/form_group/form_group';
|
|
6
7
|
import GlFormTextarea from '../../../../../base/form/form_textarea/form_textarea';
|
|
7
8
|
import { SafeHtmlDirective } from '../../../../../../directives/safe_html/safe_html';
|
|
9
|
+
import { translatePlural, sprintf } from '../../../../../../utils/i18n';
|
|
8
10
|
import { MESSAGE_MODEL_ROLES } from '../../constants';
|
|
9
11
|
import DocumentationSources from '../duo_chat_message_sources/duo_chat_message_sources';
|
|
10
12
|
import { renderDuoChatMarkdownPreview } from '../../markdown_renderer';
|
|
@@ -32,6 +34,7 @@ var script = {
|
|
|
32
34
|
},
|
|
33
35
|
components: {
|
|
34
36
|
DocumentationSources,
|
|
37
|
+
GlDuoChatContextItemSelections,
|
|
35
38
|
GlDuoUserFeedback,
|
|
36
39
|
GlFormGroup,
|
|
37
40
|
GlFormTextarea,
|
|
@@ -129,6 +132,26 @@ var script = {
|
|
|
129
132
|
error() {
|
|
130
133
|
var _this$message, _this$message$errors2;
|
|
131
134
|
return Boolean((_this$message = this.message) === null || _this$message === void 0 ? void 0 : (_this$message$errors2 = _this$message.errors) === null || _this$message$errors2 === void 0 ? void 0 : _this$message$errors2.length) && this.message.errors.join('; ');
|
|
135
|
+
},
|
|
136
|
+
selectedContextItems() {
|
|
137
|
+
var _this$message$extras3;
|
|
138
|
+
return ((_this$message$extras3 = this.message.extras) === null || _this$message$extras3 === void 0 ? void 0 : _this$message$extras3.contextItems) || [];
|
|
139
|
+
},
|
|
140
|
+
displaySelectedContextItems() {
|
|
141
|
+
return Boolean(this.selectedContextItems.length);
|
|
142
|
+
},
|
|
143
|
+
selectedContextItemsDefaultCollapsed() {
|
|
144
|
+
return this.isAssistantMessage;
|
|
145
|
+
},
|
|
146
|
+
selectedContextItemsTitle() {
|
|
147
|
+
if (!this.displaySelectedContextItems) return '';
|
|
148
|
+
const count = this.selectedContextItems.length;
|
|
149
|
+
if (this.isUserMessage) {
|
|
150
|
+
return translatePlural('GlDuoChatMessage.SelectedContextItemsTitleUserMessage', 'Included reference', 'Included references')(count);
|
|
151
|
+
}
|
|
152
|
+
return sprintf(translatePlural('GlDuoChatMessage.SelectedContextItemsTitleAssistantMessage', 'Used %{count} included reference', 'Used %{count} included references')(count), {
|
|
153
|
+
count
|
|
154
|
+
});
|
|
132
155
|
}
|
|
133
156
|
},
|
|
134
157
|
beforeCreate() {
|
|
@@ -205,7 +228,7 @@ var __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=
|
|
|
205
228
|
_vm.isAssistantMessage,
|
|
206
229
|
'gl-bg-white': _vm.isAssistantMessage && !_vm.error,
|
|
207
230
|
'!gl-border-none gl-bg-red-50': _vm.error,
|
|
208
|
-
},on:{"insert-code-snippet":_vm.onInsertCodeSnippet}},[(_vm.error)?_c('gl-icon',{staticClass:"error-icon gl-border gl-mr-3 gl-flex-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.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)])],1)};
|
|
231
|
+
},on:{"insert-code-snippet":_vm.onInsertCodeSnippet}},[(_vm.error)?_c('gl-icon',{staticClass:"error-icon gl-border gl-mr-3 gl-flex-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)?_c('gl-duo-chat-context-item-selections',{staticClass:"gl-mb-3",attrs:{"selections":_vm.selectedContextItems,"title":_vm.selectedContextItemsTitle,"default-collapsed":_vm.selectedContextItemsDefaultCollapsed}}):_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)],1)],1)};
|
|
209
232
|
var __vue_staticRenderFns__ = [];
|
|
210
233
|
|
|
211
234
|
/* style */
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { setStoryTimeout } from '../../../../utils/test_utils';
|
|
2
2
|
import { InsertCodeSnippetElement } from './components/duo_chat_message/insert_code_snippet_element';
|
|
3
3
|
import { DOCUMENTATION_SOURCE_TYPES, MESSAGE_MODEL_ROLES, CHAT_RESET_MESSAGE, CHAT_CLEAN_MESSAGE } from './constants';
|
|
4
|
+
import { getMockContextItems } from './components/duo_chat_context/mock_context_data';
|
|
4
5
|
|
|
5
6
|
const MOCK_SOURCES = [{
|
|
6
7
|
title: 'GitLab Handbook',
|
|
@@ -23,7 +24,8 @@ const MOCK_RESPONSE_MESSAGE = {
|
|
|
23
24
|
contentHtml: '<p data-sourcepos="1:1-1:56" dir="auto">Here is a simple JavaScript function to sum two numbers:</p>\n<div class="gl-relative markdown-code-block js-markdown-code">\n<pre data-sourcepos="3:1-7:3" data-canonical-lang="js" class="code highlight js-syntax-highlight language-javascript" lang="javascript" v-pre="true"><code><span id="LC1" class="line" lang="javascript"><span class="kd">function</span> <span class="nf">sum</span><span class="p">(</span><span class="nx">a</span><span class="p">,</span> <span class="nx">b</span><span class="p">)</span> <span class="p">{</span></span>\n<span id="LC2" class="line" lang="javascript"> <span class="k">return</span> <span class="nx">a</span> <span class="o">+</span> <span class="nx">b</span><span class="p">;</span></span>\n<span id="LC3" class="line" lang="javascript"><span class="p">}</span></span></code></pre>\n<copy-code></copy-code>\n<insert-code-snippet></insert-code-snippet>\n</div>\n<p data-sourcepos="9:1-9:10" dir="auto">To use it:</p>\n<div class="gl-relative markdown-code-block js-markdown-code">\n<pre data-sourcepos="11:1-13:3" data-canonical-lang="js" class="code highlight js-syntax-highlight language-javascript" lang="javascript" v-pre="true"><code><span id="LC1" class="line" lang="javascript"><span class="kd">const</span> <span class="nx">result</span> <span class="o">=</span> <span class="nf">sum</span><span class="p">(</span><span class="mi">5</span><span class="p">,</span> <span class="mi">3</span><span class="p">);</span> <span class="c1">// result = 8</span></span></code></pre>\n<copy-code></copy-code>\n</div>\n<p data-sourcepos="15:1-15:95" dir="auto">This function takes two number parameters, a and b. It returns the sum of adding them together.</p>',
|
|
24
25
|
role: MESSAGE_MODEL_ROLES.assistant,
|
|
25
26
|
extras: {
|
|
26
|
-
sources: MOCK_SOURCES
|
|
27
|
+
sources: MOCK_SOURCES,
|
|
28
|
+
contextItems: getMockContextItems().slice(0, 2)
|
|
27
29
|
},
|
|
28
30
|
requestId: '987',
|
|
29
31
|
errors: [],
|
|
@@ -67,7 +69,9 @@ const MOCK_RESPONSE_MESSAGE_FOR_STREAMING = {
|
|
|
67
69
|
which is rendered while streaming.
|
|
68
70
|
`,
|
|
69
71
|
role: 'assistant',
|
|
70
|
-
extras: {
|
|
72
|
+
extras: {
|
|
73
|
+
contextItems: getMockContextItems().slice(0, 2)
|
|
74
|
+
},
|
|
71
75
|
requestId: '987',
|
|
72
76
|
errors: [],
|
|
73
77
|
timestamp: '2021-04-21T12:00:00.000Z'
|
|
@@ -122,7 +126,9 @@ const MOCK_USER_PROMPT_MESSAGE = {
|
|
|
122
126
|
requestId: '987',
|
|
123
127
|
errors: [],
|
|
124
128
|
timestamp: '2021-04-21T12:00:00.000Z',
|
|
125
|
-
extras:
|
|
129
|
+
extras: {
|
|
130
|
+
contextItems: getMockContextItems().slice(0, 2)
|
|
131
|
+
}
|
|
126
132
|
};
|
|
127
133
|
const renderMarkdown = content => content;
|
|
128
134
|
const renderGFM = el => {
|
package/dist/tailwind.css
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
*,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:#3b82f680;--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::-webkit-backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:#3b82f680;--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:#3b82f680;--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }.gl-border{border-color:var(--gray-100,#dcdcde);border-style:solid}.gl-border-t{border-top-color:var(--gray-100,#dcdcde);border-top-style:solid}.gl-border-b{border-bottom-color:var(--gray-100,#dcdcde);border-bottom-style:solid}.gl-border-l{border-left-color:var(--gray-100,#dcdcde);border-left-style:solid}.gl-sr-only{clip:rect(0,0,0,0);border-width:0;height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;white-space:nowrap;width:1px}.gl-pointer-events-none{pointer-events:none}.gl-pointer-events-auto{pointer-events:auto}.gl-invisible{visibility:hidden}.gl-collapse{visibility:collapse}.gl-fixed{position:fixed}.\!gl-absolute{position:absolute!important}.gl-absolute{position:absolute}.gl-relative{position:relative}.gl-bottom-0{bottom:0}.gl-bottom-2{bottom:.25rem}.gl-left-0{left:0}.gl-right-2{right:.25rem}.\!gl-z-9999{z-index:9999!important}.gl-z-200{z-index:200}.gl-float-right{float:right}.\!gl-m-0{margin:0!important}.gl-m-0{margin:0}.gl-m-7{margin:2rem}.gl-m-auto{margin:auto}.\!gl-mx-2{margin-left:.25rem!important;margin-right:.25rem!important}.-gl-mx-1{margin-left:-.125rem;margin-right:-.125rem}.-gl-mx-4{margin-left:-.75rem;margin-right:-.75rem}.-gl-my-1{margin-bottom:-.125rem;margin-top:-.125rem}.-gl-my-3{margin-bottom:-.5rem;margin-top:-.5rem}.gl-mx-2{margin-left:.25rem;margin-right:.25rem}.gl-mx-4{margin-left:.75rem;margin-right:.75rem}.gl-mx-auto{margin-left:auto;margin-right:auto}.gl-my-0{margin-bottom:0;margin-top:0}.gl-my-3{margin-bottom:.5rem;margin-top:.5rem}.gl-my-5{margin-bottom:1rem;margin-top:1rem}.\!gl-mt-2{margin-top:.25rem!important}.-gl-ml-2{margin-left:-.25rem}.-gl-mr-3{margin-right:-.5rem}.-gl-mt-2{margin-top:-.25rem}.gl-mb-0{margin-bottom:0}.gl-mb-2{margin-bottom:.25rem}.gl-mb-3{margin-bottom:.5rem}.gl-mb-4{margin-bottom:.75rem}.gl-mb-5{margin-bottom:1rem}.gl-mb-8{margin-bottom:2.5rem}.gl-ml-2{margin-left:.25rem}.gl-ml-3{margin-left:.5rem}.gl-ml-5{margin-left:1rem}.gl-ml-6{margin-left:1.5rem}.gl-ml-7{margin-left:2rem}.gl-ml-auto{margin-left:auto}.gl-mr-1{margin-right:.125rem}.gl-mr-2{margin-right:.25rem}.gl-mr-3{margin-right:.5rem}.gl-mr-4{margin-right:.75rem}.gl-mr-auto{margin-right:auto}.gl-mt-0{margin-top:0}.gl-mt-2{margin-top:.25rem}.gl-mt-3{margin-top:.5rem}.gl-mt-4{margin-top:.75rem}.gl-mt-5{margin-top:1rem}.\!gl-block{display:block!important}.gl-block{display:block}.gl-inline-block{display:inline-block}.\!gl-flex{display:flex!important}.gl-flex{display:flex}.gl-inline-flex{display:inline-flex}.gl-table{display:table}.\!gl-hidden{display:none!important}.gl-hidden{display:none}.\!gl-h-full{height:100%!important}.gl-h-0{height:0}.gl-h-11{height:4rem}.gl-h-13{height:6rem}.gl-h-5{height:1rem}.gl-h-auto{height:auto}.gl-h-full{height:100%}.gl-max-h-full{max-height:100%}.gl-min-h-8{min-height:2.5rem}.\!gl-w-31{width:15.5rem!important}.\!gl-w-auto{width:auto!important}.gl-w-1\/2{width:50%}.gl-w-10{width:3.5rem}.gl-w-20{width:10rem}.gl-w-30{width:15rem}.gl-w-4\/10{width:40%}.gl-w-5{width:1rem}.gl-w-full{width:100%}.gl-max-w-1\/2{max-width:50%}.gl-max-w-75{max-width:37.5rem}.gl-max-w-full{max-width:100%}.gl-flex-shrink-0{flex-shrink:0}.gl-flex-grow,.gl-grow{flex-grow:1}.gl-basis-0{flex-basis:0}.-gl-translate-y-full{--tw-translate-y:-100%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.\!gl-cursor-not-allowed{cursor:not-allowed!important}.\!gl-cursor-text{cursor:text!important}.gl-cursor-default{cursor:default}.gl-cursor-pointer{cursor:pointer}.gl-cursor-text{cursor:text}.gl-list-none{list-style-type:none}.gl-flex-row{flex-direction:row}.gl-flex-col{flex-direction:column}.gl-flex-wrap{flex-wrap:wrap}.gl-flex-nowrap{flex-wrap:nowrap}.gl-items-start{align-items:flex-start}.gl-items-end{align-items:flex-end}.gl-items-center{align-items:center}.gl-items-baseline{align-items:baseline}.\!gl-justify-start{justify-content:flex-start!important}.gl-justify-start{justify-content:flex-start}.gl-justify-end{justify-content:flex-end}.gl-justify-center{justify-content:center}.gl-justify-between{justify-content:space-between}.gl-gap-2{gap:.25rem}.gl-gap-3{gap:.5rem}.gl-gap-4{gap:.75rem}.gl-gap-5{gap:1rem}.gl-gap-6{gap:1.5rem}.gl-gap-x-3{column-gap:.5rem}.gl-self-start{align-self:flex-start}.gl-overflow-hidden{overflow:hidden}.gl-overflow-visible{overflow:visible}.gl-overflow-y-auto{overflow-y:auto}.gl-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.\!gl-text-ellipsis{text-overflow:ellipsis!important}.gl-text-ellipsis{text-overflow:ellipsis}.\!gl-whitespace-normal{white-space:normal!important}.gl-whitespace-normal{white-space:normal}.gl-whitespace-nowrap{white-space:nowrap}.gl-whitespace-pre-line{white-space:pre-line}.\!gl-rounded-base{border-radius:.25rem!important}.\!gl-rounded-none{border-radius:0!important}.gl-rounded-base{border-radius:.25rem}.gl-rounded-full{border-radius:50%}.gl-rounded-lg{border-radius:.5rem}.gl-rounded-bl-none{border-bottom-left-radius:0}.gl-rounded-br-none{border-bottom-right-radius:0}.gl-rounded-tr-none{border-top-right-radius:0}.gl-border,.gl-border-1{border-width:1px}.\!gl-border-b-0{border-bottom-width:0!important}.gl-border-b{border-bottom-width:1px}.gl-border-b-0{border-bottom-width:0}.gl-border-b-1{border-bottom-width:1px}.gl-border-l{border-left-width:1px}.gl-border-t,.gl-border-t-1{border-top-width:1px}.gl-border-solid{border-style:solid}.\!gl-border-none{border-style:none!important}.gl-border-none{border-style:none}.gl-border-gray-200{border-color:var(--gray-200,#bfbfc3)}.gl-border-gray-50{border-color:var(--gray-50,#ececef)}.gl-border-red-500{border-color:var(--red-500,#dd2b0e)}.gl-border-b-gray-200{border-bottom-color:var(--gray-200,#bfbfc3)}.gl-border-t-gray-200{border-top-color:var(--gray-200,#bfbfc3)}.\!gl-bg-data-viz-green-700{background-color:var(--data-viz-green-700,#366800)!important}.\!gl-bg-data-viz-magenta-950{background-color:var(--data-viz-magenta-950,#541d31)!important}.\!gl-bg-gray-10{background-color:var(--gray-10,#fbfafd)!important}.\!gl-bg-transparent{background-color:initial!important}.gl-bg-blue-100{background-color:var(--blue-100,#cbe2f9)}.gl-bg-data-viz-blue-500{background-color:var(--data-viz-blue-500,#617ae2)}.gl-bg-gray-10{background-color:var(--gray-10,#fbfafd)}.gl-bg-gray-50{background-color:var(--gray-50,#ececef)}.gl-bg-gray-900{background-color:var(--gray-900,#28272d)}.gl-bg-gray-950{background-color:var(--gray-950,#18171d)}.gl-bg-green-100{background-color:var(--green-100,#c3e6cd)}.gl-bg-purple-50{background-color:var(--purple-50,#f4f0ff)}.gl-bg-red-100{background-color:var(--red-100,#fdd4cd)}.gl-bg-red-50{background-color:var(--red-50,#fcf1ef)}.gl-bg-transparent{background-color:initial}.gl-bg-white{background-color:var(--white,#fff)}.gl-fill-current{fill:currentColor}.gl-fill-gray-100{fill:var(--gray-100,#dcdcde)}.gl-fill-icon-danger{fill:var(--gl-icon-color-danger,var(--gl-color-red-600,#c91c00))}.gl-fill-icon-default{fill:var(--gl-icon-color-default,var(--gl-color-neutral-700,#4c4b51))}.gl-fill-icon-disabled{fill:var(--gl-icon-color-disabled,var(--gl-color-neutral-300,#a4a3a8))}.gl-fill-icon-info{fill:var(--gl-icon-color-info,var(--gl-color-blue-600,#1068bf))}.gl-fill-icon-link{fill:var(--gl-icon-color-link,var(--gl-color-blue-600,#1068bf))}.gl-fill-icon-strong{fill:var(--gl-icon-color-strong,var(--gl-color-neutral-900,#28272d))}.gl-fill-icon-subtle{fill:var(--gl-icon-color-subtle,var(--gl-color-neutral-500,#737278))}.gl-fill-icon-success{fill:var(--gl-icon-color-success,var(--gl-color-green-600,#217645))}.gl-fill-icon-warning{fill:var(--gl-icon-color-warning,var(--gl-color-orange-600,#9e5400))}.\!gl-p-0{padding:0!important}.\!gl-p-2{padding:.25rem!important}.\!gl-p-4{padding:.75rem!important}.gl-p-0{padding:0}.gl-p-1{padding:.125rem}.gl-p-2{padding:.25rem}.gl-p-3{padding:.5rem}.gl-p-4{padding:.75rem}.gl-p-5{padding:1rem}.gl-p-7{padding:2rem}.\!gl-px-2{padding-left:.25rem!important;padding-right:.25rem!important}.\!gl-px-3{padding-left:.5rem!important;padding-right:.5rem!important}.\!gl-py-2{padding-bottom:.25rem!important;padding-top:.25rem!important}.\!gl-py-4{padding-bottom:.75rem!important;padding-top:.75rem!important}.gl-px-1{padding-left:.125rem;padding-right:.125rem}.gl-px-2{padding-left:.25rem;padding-right:.25rem}.gl-px-4{padding-left:.75rem;padding-right:.75rem}.gl-px-5{padding-left:1rem;padding-right:1rem}.gl-py-2{padding-bottom:.25rem;padding-top:.25rem}.gl-py-3{padding-bottom:.5rem;padding-top:.5rem}.gl-py-6{padding-bottom:1.5rem;padding-top:1.5rem}.\!gl-pl-9{padding-left:3rem!important}.\!gl-pr-7{padding-right:2rem!important}.\!gl-pr-9{padding-right:3rem!important}.\!gl-pt-0{padding-top:0!important}.gl-pb-2{padding-bottom:.25rem}.gl-pl-0{padding-left:0}.gl-pl-2{padding-left:.25rem}.gl-pl-3{padding-left:.5rem}.gl-pl-4{padding-left:.75rem}.gl-pl-5{padding-left:1rem}.gl-pl-6{padding-left:1.5rem}.gl-pl-7{padding-left:2rem}.gl-pr-2{padding-right:.25rem}.gl-pr-5{padding-right:1rem}.gl-pr-6{padding-right:1.5rem}.gl-pr-8{padding-right:2.5rem}.gl-pt-1{padding-top:.125rem}.gl-pt-2{padding-top:.25rem}.gl-pt-3{padding-top:.5rem}.gl-pt-4{padding-top:.75rem}.\!gl-text-left{text-align:left!important}.gl-text-left{text-align:left}.gl-text-center{text-align:center}.gl-text-right{text-align:right}.gl-align-top{vertical-align:top}.gl-align-bottom{vertical-align:bottom}.\!gl-align-text-bottom{vertical-align:text-bottom!important}.gl-font-regular{font-family:var(--default-regular-font,"GitLab Sans"),-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Noto Sans",Ubuntu,Cantarell,"Helvetica Neue",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji"}.\!gl-text-sm{font-size:.75rem!important}.gl-text-base{font-size:.875rem}.gl-text-lg{font-size:1rem}.gl-text-size-h-display{font-size:1.75rem}.gl-text-size-h2{font-size:1.1875rem}.gl-text-sm{font-size:.75rem}.gl-text-xs{font-size:.625rem}.gl-font-bold{font-weight:600}.gl-font-normal{font-weight:400}.gl-italic{font-style:italic}.gl-leading-1{line-height:1}.gl-leading-20{line-height:1.25rem}.gl-leading-36{line-height:2.25rem}.gl-leading-normal{line-height:1rem}.\!gl-text-gray-500{color:var(--gray-500,#737278)!important}.\!gl-text-red-500{color:var(--red-500,#dd2b0e)!important}.\!gl-text-white{color:var(--white,#fff)!important}.gl-text-blue-100{color:var(--blue-100,#cbe2f9)}.gl-text-blue-500{color:var(--blue-500,#1f75cb)}.gl-text-blue-900{color:var(--blue-900,#033464)}.gl-text-danger{color:var(--gl-text-color-danger,var(--gl-color-red-600,#c91c00))}.gl-text-gray-400{color:var(--gray-400,#89888d)}.gl-text-gray-500{color:var(--gray-500,#737278)}.gl-text-gray-600{color:var(--gray-600,#626168)}.gl-text-gray-700{color:var(--gray-700,#4c4b51)}.gl-text-gray-900{color:var(--gray-900,#28272d)}.gl-text-gray-950{color:var(--gray-950,#18171d)}.gl-text-green-500{color:var(--green-500,#108548)}.gl-text-green-600{color:var(--green-600,#217645)}.gl-text-inherit{color:inherit}.gl-text-orange-500{color:var(--orange-500,#ab6100)}.gl-text-red-300{color:var(--red-300,#f57f6c)}.gl-text-red-500{color:var(--red-500,#dd2b0e)}.gl-text-red-600{color:var(--red-600,#c91c00)}.gl-text-secondary{color:var(--gl-text-secondary,#737278)}.gl-text-strong{color:var(--gl-text-color-strong,var(--gl-color-neutral-950,#18171d))}.gl-text-subtle{color:var(--gl-text-color-subtle,var(--gl-color-neutral-600,#626168))}.gl-text-white{color:var(--white,#fff)}.\!gl-opacity-0{opacity:0!important}.gl-opacity-10{opacity:1}.\!gl-shadow-inner-1-gray-100{--tw-shadow:inset 0 0 0 1px var(--gray-100,#dcdcde)!important;--tw-shadow-colored:inset 0 0 0 1px var(--tw-shadow-color)!important}.\!gl-shadow-inner-1-gray-100,.\!gl-shadow-inner-1-gray-400{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)!important}.\!gl-shadow-inner-1-gray-400{--tw-shadow:inset 0 0 0 1px var(--gray-400,#89888d)!important;--tw-shadow-colored:inset 0 0 0 1px var(--tw-shadow-color)!important}.\!gl-shadow-inner-1-red-500{--tw-shadow:inset 0 0 0 1px var(--red-500,#dd2b0e)!important;--tw-shadow-colored:inset 0 0 0 1px var(--tw-shadow-color)!important}.\!gl-shadow-inner-1-red-500,.\!gl-shadow-none{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)!important}.\!gl-shadow-none{--tw-shadow:0 0 #0000!important;--tw-shadow-colored:0 0 #0000!important}.gl-shadow-inner-1-gray-400{--tw-shadow:inset 0 0 0 1px var(--gray-400,#89888d);--tw-shadow-colored:inset 0 0 0 1px var(--tw-shadow-color)}.gl-shadow-inner-1-gray-400,.gl-shadow-inner-1-red-300{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.gl-shadow-inner-1-red-300{--tw-shadow:inset 0 0 0 1px var(--red-300,#f57f6c);--tw-shadow-colored:inset 0 0 0 1px var(--tw-shadow-color)}.gl-shadow-inner-1-red-500{--tw-shadow:inset 0 0 0 1px var(--red-500,#dd2b0e);--tw-shadow-colored:inset 0 0 0 1px var(--tw-shadow-color)}.gl-shadow-inner-1-red-500,.gl-shadow-md{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.gl-shadow-md{--tw-shadow:0 2px 8px var(--gl-shadow-color-default,#05050629),0 0 2px var(--gl-shadow-color-default,#05050629);--tw-shadow-colored:0 2px 8px var(--tw-shadow-color),0 0 2px var(--tw-shadow-color)}.gl-shadow-none{--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.gl-outline-none{outline:2px solid #0000;outline-offset:2px}.gl-transition-all{transition-duration:.2s;transition-property:all;transition-timing-function:ease}.gl-font-monospace{font-family:var(--default-mono-font,"GitLab Mono"),"JetBrains Mono","Menlo","DejaVu Sans Mono","Liberation Mono","Consolas","Ubuntu Mono","Courier New","andale mono","lucida console",monospace;font-variant-ligatures:none}.gl-break-anywhere{overflow-wrap:anywhere;word-break:normal}.gl-border-b-solid{border-bottom-style:solid}.gl-border-t-solid{border-top-style:solid}.hover\:\!gl-cursor-not-allowed:hover{cursor:not-allowed!important}.hover\:gl-cursor-pointer:hover{cursor:pointer}.focus\:\!gl-shadow-inner-2-blue-400:focus{--tw-shadow:inset 0 0 0 2px var(--blue-400,#428fdc)!important;--tw-shadow-colored:inset 0 0 0 2px var(--tw-shadow-color)!important;box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)!important}@media (min-width:576px){.sm\:gl-block{display:block}.sm\:\!gl-hidden{display:none!important}.sm\:gl-flex-nowrap{flex-wrap:nowrap}.sm\:gl-gap-3{gap:.5rem}}
|
|
1
|
+
*,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:#3b82f680;--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::-webkit-backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:#3b82f680;--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:#3b82f680;--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }.gl-border{border-color:var(--gray-100,#dcdcde);border-style:solid}.gl-border-t{border-top-color:var(--gray-100,#dcdcde);border-top-style:solid}.gl-border-b{border-bottom-color:var(--gray-100,#dcdcde);border-bottom-style:solid}.gl-border-l{border-left-color:var(--gray-100,#dcdcde);border-left-style:solid}.gl-sr-only{clip:rect(0,0,0,0);border-width:0;height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;white-space:nowrap;width:1px}.gl-pointer-events-none{pointer-events:none}.gl-pointer-events-auto{pointer-events:auto}.gl-invisible{visibility:hidden}.gl-collapse{visibility:collapse}.gl-fixed{position:fixed}.\!gl-absolute{position:absolute!important}.gl-absolute{position:absolute}.gl-relative{position:relative}.gl-bottom-0{bottom:0}.gl-bottom-2{bottom:.25rem}.gl-left-0{left:0}.gl-right-2{right:.25rem}.\!gl-z-9999{z-index:9999!important}.gl-z-200{z-index:200}.gl-float-right{float:right}.\!gl-m-0{margin:0!important}.gl-m-0{margin:0}.gl-m-7{margin:2rem}.gl-m-auto{margin:auto}.\!gl-mx-2{margin-left:.25rem!important;margin-right:.25rem!important}.-gl-mx-1{margin-left:-.125rem;margin-right:-.125rem}.-gl-mx-4{margin-left:-.75rem;margin-right:-.75rem}.-gl-my-1{margin-bottom:-.125rem;margin-top:-.125rem}.-gl-my-3{margin-bottom:-.5rem;margin-top:-.5rem}.gl-mx-2{margin-left:.25rem;margin-right:.25rem}.gl-mx-4{margin-left:.75rem;margin-right:.75rem}.gl-mx-auto{margin-left:auto;margin-right:auto}.gl-my-0{margin-bottom:0;margin-top:0}.gl-my-3{margin-bottom:.5rem;margin-top:.5rem}.gl-my-5{margin-bottom:1rem;margin-top:1rem}.\!gl-mt-2{margin-top:.25rem!important}.-gl-ml-2{margin-left:-.25rem}.-gl-mr-3{margin-right:-.5rem}.-gl-mt-2{margin-top:-.25rem}.gl-mb-0{margin-bottom:0}.gl-mb-2{margin-bottom:.25rem}.gl-mb-3{margin-bottom:.5rem}.gl-mb-4{margin-bottom:.75rem}.gl-mb-5{margin-bottom:1rem}.gl-mb-8{margin-bottom:2.5rem}.gl-ml-2{margin-left:.25rem}.gl-ml-3{margin-left:.5rem}.gl-ml-5{margin-left:1rem}.gl-ml-6{margin-left:1.5rem}.gl-ml-7{margin-left:2rem}.gl-ml-auto{margin-left:auto}.gl-mr-1{margin-right:.125rem}.gl-mr-2{margin-right:.25rem}.gl-mr-3{margin-right:.5rem}.gl-mr-4{margin-right:.75rem}.gl-mr-auto{margin-right:auto}.gl-mt-0{margin-top:0}.gl-mt-1{margin-top:.125rem}.gl-mt-2{margin-top:.25rem}.gl-mt-3{margin-top:.5rem}.gl-mt-4{margin-top:.75rem}.gl-mt-5{margin-top:1rem}.\!gl-block{display:block!important}.gl-block{display:block}.gl-inline-block{display:inline-block}.\!gl-flex{display:flex!important}.gl-flex{display:flex}.gl-inline-flex{display:inline-flex}.gl-table{display:table}.\!gl-hidden{display:none!important}.gl-hidden{display:none}.\!gl-h-full{height:100%!important}.gl-h-0{height:0}.gl-h-11{height:4rem}.gl-h-13{height:6rem}.gl-h-5{height:1rem}.gl-h-auto{height:auto}.gl-h-full{height:100%}.gl-max-h-full{max-height:100%}.gl-min-h-8{min-height:2.5rem}.\!gl-w-31{width:15.5rem!important}.\!gl-w-auto{width:auto!important}.gl-w-1\/2{width:50%}.gl-w-10{width:3.5rem}.gl-w-20{width:10rem}.gl-w-30{width:15rem}.gl-w-4\/10{width:40%}.gl-w-5{width:1rem}.gl-w-full{width:100%}.gl-max-w-1\/2{max-width:50%}.gl-max-w-75{max-width:37.5rem}.gl-max-w-full{max-width:100%}.gl-flex-shrink-0{flex-shrink:0}.gl-flex-grow,.gl-grow{flex-grow:1}.gl-basis-0{flex-basis:0}.-gl-translate-y-full{--tw-translate-y:-100%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.\!gl-cursor-not-allowed{cursor:not-allowed!important}.\!gl-cursor-text{cursor:text!important}.gl-cursor-default{cursor:default}.gl-cursor-pointer{cursor:pointer}.gl-cursor-text{cursor:text}.gl-list-none{list-style-type:none}.gl-flex-row{flex-direction:row}.gl-flex-col{flex-direction:column}.gl-flex-wrap{flex-wrap:wrap}.gl-flex-nowrap{flex-wrap:nowrap}.gl-items-start{align-items:flex-start}.gl-items-end{align-items:flex-end}.gl-items-center{align-items:center}.gl-items-baseline{align-items:baseline}.\!gl-justify-start{justify-content:flex-start!important}.gl-justify-start{justify-content:flex-start}.gl-justify-end{justify-content:flex-end}.gl-justify-center{justify-content:center}.gl-justify-between{justify-content:space-between}.gl-gap-2{gap:.25rem}.gl-gap-3{gap:.5rem}.gl-gap-4{gap:.75rem}.gl-gap-5{gap:1rem}.gl-gap-6{gap:1.5rem}.gl-gap-x-3{column-gap:.5rem}.gl-self-start{align-self:flex-start}.gl-overflow-hidden{overflow:hidden}.gl-overflow-visible{overflow:visible}.gl-overflow-y-auto{overflow-y:auto}.gl-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.\!gl-text-ellipsis{text-overflow:ellipsis!important}.gl-text-ellipsis{text-overflow:ellipsis}.\!gl-whitespace-normal{white-space:normal!important}.gl-whitespace-normal{white-space:normal}.gl-whitespace-nowrap{white-space:nowrap}.gl-whitespace-pre-line{white-space:pre-line}.\!gl-rounded-base{border-radius:.25rem!important}.\!gl-rounded-none{border-radius:0!important}.gl-rounded-base{border-radius:.25rem}.gl-rounded-full{border-radius:50%}.gl-rounded-lg{border-radius:.5rem}.gl-rounded-bl-none{border-bottom-left-radius:0}.gl-rounded-br-none{border-bottom-right-radius:0}.gl-rounded-tr-none{border-top-right-radius:0}.gl-border{border-width:1px}.gl-border-0{border-width:0}.gl-border-1{border-width:1px}.\!gl-border-b-0{border-bottom-width:0!important}.gl-border-b{border-bottom-width:1px}.gl-border-b-0{border-bottom-width:0}.gl-border-b-1{border-bottom-width:1px}.gl-border-l{border-left-width:1px}.gl-border-t,.gl-border-t-1{border-top-width:1px}.gl-border-solid{border-style:solid}.\!gl-border-none{border-style:none!important}.gl-border-none{border-style:none}.gl-border-gray-200{border-color:var(--gray-200,#bfbfc3)}.gl-border-gray-50{border-color:var(--gray-50,#ececef)}.gl-border-red-500{border-color:var(--red-500,#dd2b0e)}.gl-border-b-gray-200{border-bottom-color:var(--gray-200,#bfbfc3)}.gl-border-t-gray-200{border-top-color:var(--gray-200,#bfbfc3)}.\!gl-bg-data-viz-green-700{background-color:var(--data-viz-green-700,#366800)!important}.\!gl-bg-data-viz-magenta-950{background-color:var(--data-viz-magenta-950,#541d31)!important}.\!gl-bg-gray-10{background-color:var(--gray-10,#fbfafd)!important}.\!gl-bg-transparent{background-color:initial!important}.gl-bg-blue-100{background-color:var(--blue-100,#cbe2f9)}.gl-bg-data-viz-blue-500{background-color:var(--data-viz-blue-500,#617ae2)}.gl-bg-gray-10{background-color:var(--gray-10,#fbfafd)}.gl-bg-gray-50{background-color:var(--gray-50,#ececef)}.gl-bg-gray-900{background-color:var(--gray-900,#28272d)}.gl-bg-gray-950{background-color:var(--gray-950,#18171d)}.gl-bg-green-100{background-color:var(--green-100,#c3e6cd)}.gl-bg-purple-50{background-color:var(--purple-50,#f4f0ff)}.gl-bg-red-100{background-color:var(--red-100,#fdd4cd)}.gl-bg-red-50{background-color:var(--red-50,#fcf1ef)}.gl-bg-transparent{background-color:initial}.gl-bg-white{background-color:var(--white,#fff)}.gl-fill-current{fill:currentColor}.gl-fill-gray-100{fill:var(--gray-100,#dcdcde)}.gl-fill-icon-danger{fill:var(--gl-icon-color-danger,var(--gl-color-red-600,#c91c00))}.gl-fill-icon-default{fill:var(--gl-icon-color-default,var(--gl-color-neutral-700,#4c4b51))}.gl-fill-icon-disabled{fill:var(--gl-icon-color-disabled,var(--gl-color-neutral-300,#a4a3a8))}.gl-fill-icon-info{fill:var(--gl-icon-color-info,var(--gl-color-blue-600,#1068bf))}.gl-fill-icon-link{fill:var(--gl-icon-color-link,var(--gl-color-blue-600,#1068bf))}.gl-fill-icon-strong{fill:var(--gl-icon-color-strong,var(--gl-color-neutral-900,#28272d))}.gl-fill-icon-subtle{fill:var(--gl-icon-color-subtle,var(--gl-color-neutral-500,#737278))}.gl-fill-icon-success{fill:var(--gl-icon-color-success,var(--gl-color-green-600,#217645))}.gl-fill-icon-warning{fill:var(--gl-icon-color-warning,var(--gl-color-orange-600,#9e5400))}.\!gl-p-0{padding:0!important}.\!gl-p-2{padding:.25rem!important}.\!gl-p-4{padding:.75rem!important}.gl-p-0{padding:0}.gl-p-1{padding:.125rem}.gl-p-2{padding:.25rem}.gl-p-3{padding:.5rem}.gl-p-4{padding:.75rem}.gl-p-5{padding:1rem}.gl-p-7{padding:2rem}.\!gl-px-2{padding-left:.25rem!important;padding-right:.25rem!important}.\!gl-px-3{padding-left:.5rem!important;padding-right:.5rem!important}.\!gl-py-2{padding-bottom:.25rem!important;padding-top:.25rem!important}.\!gl-py-4{padding-bottom:.75rem!important;padding-top:.75rem!important}.gl-px-1{padding-left:.125rem;padding-right:.125rem}.gl-px-2{padding-left:.25rem;padding-right:.25rem}.gl-px-4{padding-left:.75rem;padding-right:.75rem}.gl-px-5{padding-left:1rem;padding-right:1rem}.gl-py-2{padding-bottom:.25rem;padding-top:.25rem}.gl-py-3{padding-bottom:.5rem;padding-top:.5rem}.gl-py-6{padding-bottom:1.5rem;padding-top:1.5rem}.\!gl-pl-9{padding-left:3rem!important}.\!gl-pr-7{padding-right:2rem!important}.\!gl-pr-9{padding-right:3rem!important}.\!gl-pt-0{padding-top:0!important}.gl-pb-2{padding-bottom:.25rem}.gl-pl-0{padding-left:0}.gl-pl-2{padding-left:.25rem}.gl-pl-3{padding-left:.5rem}.gl-pl-4{padding-left:.75rem}.gl-pl-5{padding-left:1rem}.gl-pl-6{padding-left:1.5rem}.gl-pl-7{padding-left:2rem}.gl-pr-2{padding-right:.25rem}.gl-pr-5{padding-right:1rem}.gl-pr-6{padding-right:1.5rem}.gl-pr-8{padding-right:2.5rem}.gl-pt-1{padding-top:.125rem}.gl-pt-2{padding-top:.25rem}.gl-pt-3{padding-top:.5rem}.gl-pt-4{padding-top:.75rem}.\!gl-text-left{text-align:left!important}.gl-text-left{text-align:left}.gl-text-center{text-align:center}.gl-text-right{text-align:right}.gl-align-top{vertical-align:top}.gl-align-bottom{vertical-align:bottom}.\!gl-align-text-bottom{vertical-align:text-bottom!important}.gl-font-regular{font-family:var(--default-regular-font,"GitLab Sans"),-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Noto Sans",Ubuntu,Cantarell,"Helvetica Neue",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji"}.\!gl-text-sm{font-size:.75rem!important}.gl-text-base{font-size:.875rem}.gl-text-lg{font-size:1rem}.gl-text-size-h-display{font-size:1.75rem}.gl-text-size-h2{font-size:1.1875rem}.gl-text-sm{font-size:.75rem}.gl-text-xs{font-size:.625rem}.gl-font-bold{font-weight:600}.gl-font-normal{font-weight:400}.gl-lowercase{text-transform:lowercase}.gl-italic{font-style:italic}.gl-leading-1{line-height:1}.gl-leading-20{line-height:1.25rem}.gl-leading-36{line-height:2.25rem}.gl-leading-normal{line-height:1rem}.\!gl-text-gray-500{color:var(--gray-500,#737278)!important}.\!gl-text-red-500{color:var(--red-500,#dd2b0e)!important}.\!gl-text-white{color:var(--white,#fff)!important}.gl-text-blue-100{color:var(--blue-100,#cbe2f9)}.gl-text-blue-500{color:var(--blue-500,#1f75cb)}.gl-text-blue-900{color:var(--blue-900,#033464)}.gl-text-danger{color:var(--gl-text-color-danger,var(--gl-color-red-600,#c91c00))}.gl-text-gray-400{color:var(--gray-400,#89888d)}.gl-text-gray-500{color:var(--gray-500,#737278)}.gl-text-gray-600{color:var(--gray-600,#626168)}.gl-text-gray-700{color:var(--gray-700,#4c4b51)}.gl-text-gray-900{color:var(--gray-900,#28272d)}.gl-text-gray-950{color:var(--gray-950,#18171d)}.gl-text-green-500{color:var(--green-500,#108548)}.gl-text-green-600{color:var(--green-600,#217645)}.gl-text-inherit{color:inherit}.gl-text-orange-500{color:var(--orange-500,#ab6100)}.gl-text-red-300{color:var(--red-300,#f57f6c)}.gl-text-red-500{color:var(--red-500,#dd2b0e)}.gl-text-red-600{color:var(--red-600,#c91c00)}.gl-text-secondary{color:var(--gl-text-secondary,#737278)}.gl-text-strong{color:var(--gl-text-color-strong,var(--gl-color-neutral-950,#18171d))}.gl-text-subtle{color:var(--gl-text-color-subtle,var(--gl-color-neutral-600,#626168))}.gl-text-white{color:var(--white,#fff)}.\!gl-opacity-0{opacity:0!important}.gl-opacity-10{opacity:1}.\!gl-shadow-inner-1-gray-100{--tw-shadow:inset 0 0 0 1px var(--gray-100,#dcdcde)!important;--tw-shadow-colored:inset 0 0 0 1px var(--tw-shadow-color)!important}.\!gl-shadow-inner-1-gray-100,.\!gl-shadow-inner-1-gray-400{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)!important}.\!gl-shadow-inner-1-gray-400{--tw-shadow:inset 0 0 0 1px var(--gray-400,#89888d)!important;--tw-shadow-colored:inset 0 0 0 1px var(--tw-shadow-color)!important}.\!gl-shadow-inner-1-red-500{--tw-shadow:inset 0 0 0 1px var(--red-500,#dd2b0e)!important;--tw-shadow-colored:inset 0 0 0 1px var(--tw-shadow-color)!important}.\!gl-shadow-inner-1-red-500,.\!gl-shadow-none{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)!important}.\!gl-shadow-none{--tw-shadow:0 0 #0000!important;--tw-shadow-colored:0 0 #0000!important}.gl-shadow-inner-1-gray-400{--tw-shadow:inset 0 0 0 1px var(--gray-400,#89888d);--tw-shadow-colored:inset 0 0 0 1px var(--tw-shadow-color)}.gl-shadow-inner-1-gray-400,.gl-shadow-inner-1-red-300{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.gl-shadow-inner-1-red-300{--tw-shadow:inset 0 0 0 1px var(--red-300,#f57f6c);--tw-shadow-colored:inset 0 0 0 1px var(--tw-shadow-color)}.gl-shadow-inner-1-red-500{--tw-shadow:inset 0 0 0 1px var(--red-500,#dd2b0e);--tw-shadow-colored:inset 0 0 0 1px var(--tw-shadow-color)}.gl-shadow-inner-1-red-500,.gl-shadow-md{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.gl-shadow-md{--tw-shadow:0 2px 8px var(--gl-shadow-color-default,#05050629),0 0 2px var(--gl-shadow-color-default,#05050629);--tw-shadow-colored:0 2px 8px var(--tw-shadow-color),0 0 2px var(--tw-shadow-color)}.gl-shadow-none{--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.gl-outline-none{outline:2px solid #0000;outline-offset:2px}.gl-transition-all{transition-duration:.2s;transition-property:all;transition-timing-function:ease}.gl-font-monospace{font-family:var(--default-mono-font,"GitLab Mono"),"JetBrains Mono","Menlo","DejaVu Sans Mono","Liberation Mono","Consolas","Ubuntu Mono","Courier New","andale mono","lucida console",monospace;font-variant-ligatures:none}.gl-break-anywhere{overflow-wrap:anywhere;word-break:normal}.gl-border-b-solid{border-bottom-style:solid}.gl-border-t-solid{border-top-style:solid}.hover\:\!gl-cursor-not-allowed:hover{cursor:not-allowed!important}.hover\:gl-cursor-pointer:hover{cursor:pointer}.focus\:\!gl-shadow-inner-2-blue-400:focus{--tw-shadow:inset 0 0 0 2px var(--blue-400,#428fdc)!important;--tw-shadow-colored:inset 0 0 0 2px var(--tw-shadow-color)!important;box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)!important}@media (min-width:576px){.sm\:gl-block{display:block}.sm\:\!gl-hidden{display:none!important}.sm\:gl-flex-nowrap{flex-wrap:nowrap}.sm\:gl-gap-3{gap:.5rem}}
|
|
2
2
|
/*# sourceMappingURL=tailwind.css.map */
|
package/dist/tailwind.css.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["tailwind.css"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"sources":["tailwind.css"],"names":[],"mappings":"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","file":"tailwind.css","sourcesContent":["@tailwind base;\n@tailwind components;\n@tailwind utilities;\n"]}
|
package/package.json
CHANGED
|
@@ -104,7 +104,7 @@ export default {
|
|
|
104
104
|
>
|
|
105
105
|
{{ badgeLabel }}
|
|
106
106
|
</span>
|
|
107
|
-
<span data-testid="badge-sr-only-text" class="sr-only">{{ badgeSrOnlyText }}</span>
|
|
107
|
+
<span data-testid="badge-sr-only-text" class="gl-sr-only">{{ badgeSrOnlyText }}</span>
|
|
108
108
|
</div>
|
|
109
109
|
</div>
|
|
110
110
|
</template>
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
<script>
|
|
2
|
+
import GlPopover from '../../../../../../base/popover/popover.vue';
|
|
3
|
+
import { translate } from '../../../../../../../utils/i18n';
|
|
4
|
+
import {
|
|
5
|
+
CONTEXT_ITEM_TYPE_ISSUE,
|
|
6
|
+
CONTEXT_ITEM_TYPE_MERGE_REQUEST,
|
|
7
|
+
CONTEXT_ITEM_TYPE_PROJECT_FILE,
|
|
8
|
+
} from '../constants';
|
|
9
|
+
|
|
10
|
+
const ID_PREFIXES = {
|
|
11
|
+
issue: '#',
|
|
12
|
+
merge_request: '!',
|
|
13
|
+
};
|
|
14
|
+
|
|
15
|
+
export default {
|
|
16
|
+
name: 'DuoChatContextItemPopover',
|
|
17
|
+
components: {
|
|
18
|
+
GlPopover,
|
|
19
|
+
},
|
|
20
|
+
props: {
|
|
21
|
+
item: {
|
|
22
|
+
type: Object,
|
|
23
|
+
required: true,
|
|
24
|
+
},
|
|
25
|
+
target: {
|
|
26
|
+
type: String,
|
|
27
|
+
required: true,
|
|
28
|
+
},
|
|
29
|
+
placement: {
|
|
30
|
+
type: String,
|
|
31
|
+
default: 'bottom',
|
|
32
|
+
required: false,
|
|
33
|
+
},
|
|
34
|
+
},
|
|
35
|
+
computed: {
|
|
36
|
+
itemInfo() {
|
|
37
|
+
return this.item.metadata?.info || {};
|
|
38
|
+
},
|
|
39
|
+
id() {
|
|
40
|
+
const isIssuable =
|
|
41
|
+
this.item.type === CONTEXT_ITEM_TYPE_ISSUE ||
|
|
42
|
+
this.item.type === CONTEXT_ITEM_TYPE_MERGE_REQUEST;
|
|
43
|
+
return isIssuable ? this.itemInfo.iid || '' : null;
|
|
44
|
+
},
|
|
45
|
+
idPrefix() {
|
|
46
|
+
return ID_PREFIXES[this.item.type] || '';
|
|
47
|
+
},
|
|
48
|
+
filePath() {
|
|
49
|
+
return this.item.type === CONTEXT_ITEM_TYPE_PROJECT_FILE
|
|
50
|
+
? this.itemInfo.relFilePath || ''
|
|
51
|
+
: null;
|
|
52
|
+
},
|
|
53
|
+
isEnabled() {
|
|
54
|
+
return this.item.isEnabled !== false;
|
|
55
|
+
},
|
|
56
|
+
disabledMessage() {
|
|
57
|
+
return Array.isArray(this.item.disabledReasons) && this.item.disabledReasons.length > 0
|
|
58
|
+
? this.item.disabledReasons.join(', ')
|
|
59
|
+
: translate('DuoChatContextItemPopover.DisabledReason', 'This item is disabled');
|
|
60
|
+
},
|
|
61
|
+
},
|
|
62
|
+
methods: {
|
|
63
|
+
translate,
|
|
64
|
+
},
|
|
65
|
+
};
|
|
66
|
+
</script>
|
|
67
|
+
<template>
|
|
68
|
+
<gl-popover
|
|
69
|
+
:target="target"
|
|
70
|
+
triggers="hover focus"
|
|
71
|
+
:placement="placement"
|
|
72
|
+
:title="item.metadata.name"
|
|
73
|
+
custom-class="gl-duo-chat-item-popover"
|
|
74
|
+
>
|
|
75
|
+
<template #title>
|
|
76
|
+
<span class="gl-text-sm gl-text-gray-500" data-testid="chat-context-popover-title">{{
|
|
77
|
+
item.metadata.name
|
|
78
|
+
}}</span>
|
|
79
|
+
</template>
|
|
80
|
+
<div class="gl-p-3">
|
|
81
|
+
<div class="gl-mb-2">
|
|
82
|
+
<strong class="gl-mr-1">{{
|
|
83
|
+
translate('DuoChatContextItemPopover.ProjectLabel', 'Project:')
|
|
84
|
+
}}</strong>
|
|
85
|
+
<span>{{ itemInfo.project }}</span>
|
|
86
|
+
</div>
|
|
87
|
+
<div v-if="filePath !== null" class="gl-mb-2">
|
|
88
|
+
<strong class="gl-mr-1">{{
|
|
89
|
+
translate('DuoChatContextItemPopover.PathLabel', 'Path:')
|
|
90
|
+
}}</strong>
|
|
91
|
+
<span>{{ filePath }}</span>
|
|
92
|
+
</div>
|
|
93
|
+
<div v-if="id !== null" class="gl-mb-2">
|
|
94
|
+
<strong class="gl-mr-1">{{ translate('DuoChatContextItemPopover.IdLabel', 'ID:') }}</strong>
|
|
95
|
+
<span>{{ idPrefix }}{{ id }}</span>
|
|
96
|
+
</div>
|
|
97
|
+
<div class="gl-mb-2">
|
|
98
|
+
<strong class="gl-mr-1">{{
|
|
99
|
+
translate('DuoChatContextItemPopover.TypeLabel', 'Type:')
|
|
100
|
+
}}</strong>
|
|
101
|
+
<span>{{ item.type }}</span>
|
|
102
|
+
</div>
|
|
103
|
+
<div v-if="!isEnabled" class="gl-text-red-500" data-testid="chat-context-popover-disabled">
|
|
104
|
+
<strong class="gl-mr-1">{{
|
|
105
|
+
translate('DuoChatContextItemPopover.DisabledMessageLabel', 'Note:')
|
|
106
|
+
}}</strong>
|
|
107
|
+
<span>{{ disabledMessage }}</span>
|
|
108
|
+
</div>
|
|
109
|
+
</div>
|
|
110
|
+
</gl-popover>
|
|
111
|
+
</template>
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
<script>
|
|
2
|
+
import uniqueId from 'lodash/uniqueId';
|
|
3
|
+
import GlIcon from '../../../../../../base/icon/icon.vue';
|
|
4
|
+
import GlToken from '../../../../../../base/token/token.vue';
|
|
5
|
+
import GlDuoChatContextItemPopover from '../duo_chat_context_item_popover/duo_chat_context_item_popover.vue';
|
|
6
|
+
import {
|
|
7
|
+
CONTEXT_ITEM_TYPE_ISSUE,
|
|
8
|
+
CONTEXT_ITEM_TYPE_MERGE_REQUEST,
|
|
9
|
+
CONTEXT_ITEM_TYPE_PROJECT_FILE,
|
|
10
|
+
} from '../constants';
|
|
11
|
+
|
|
12
|
+
export default {
|
|
13
|
+
name: 'GlDuoChatContextItemSelections',
|
|
14
|
+
components: {
|
|
15
|
+
GlIcon,
|
|
16
|
+
GlDuoChatContextItemPopover,
|
|
17
|
+
GlToken,
|
|
18
|
+
},
|
|
19
|
+
props: {
|
|
20
|
+
selections: {
|
|
21
|
+
type: Array,
|
|
22
|
+
required: true,
|
|
23
|
+
},
|
|
24
|
+
title: {
|
|
25
|
+
type: String,
|
|
26
|
+
required: true,
|
|
27
|
+
},
|
|
28
|
+
defaultCollapsed: {
|
|
29
|
+
type: Boolean,
|
|
30
|
+
required: true,
|
|
31
|
+
},
|
|
32
|
+
},
|
|
33
|
+
data() {
|
|
34
|
+
return {
|
|
35
|
+
isCollapsed: this.defaultCollapsed,
|
|
36
|
+
selectionsId: uniqueId(),
|
|
37
|
+
};
|
|
38
|
+
},
|
|
39
|
+
computed: {
|
|
40
|
+
collapseIconName() {
|
|
41
|
+
return this.isCollapsed ? 'chevron-right' : 'chevron-down';
|
|
42
|
+
},
|
|
43
|
+
},
|
|
44
|
+
methods: {
|
|
45
|
+
getIconName(type) {
|
|
46
|
+
const iconMap = {
|
|
47
|
+
[CONTEXT_ITEM_TYPE_PROJECT_FILE]: 'document',
|
|
48
|
+
[CONTEXT_ITEM_TYPE_ISSUE]: 'issues',
|
|
49
|
+
[CONTEXT_ITEM_TYPE_MERGE_REQUEST]: 'merge-request',
|
|
50
|
+
};
|
|
51
|
+
return iconMap[type] || 'document';
|
|
52
|
+
},
|
|
53
|
+
toggleCollapse() {
|
|
54
|
+
this.isCollapsed = !this.isCollapsed;
|
|
55
|
+
},
|
|
56
|
+
},
|
|
57
|
+
};
|
|
58
|
+
</script>
|
|
59
|
+
|
|
60
|
+
<template>
|
|
61
|
+
<div class="gl-mb-3 gl-flex gl-flex-col">
|
|
62
|
+
<button
|
|
63
|
+
class="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-gray-500"
|
|
64
|
+
data-testid="chat-context-selections-title"
|
|
65
|
+
@click="toggleCollapse"
|
|
66
|
+
>
|
|
67
|
+
<gl-icon :name="collapseIconName" data-testid="chat-context-collapse-icon" /> {{ title }}
|
|
68
|
+
</button>
|
|
69
|
+
|
|
70
|
+
<div
|
|
71
|
+
v-show="!isCollapsed"
|
|
72
|
+
class="gl-mt-1 gl-flex gl-grow gl-flex-wrap"
|
|
73
|
+
data-testid="chat-context-tokens-wrapper"
|
|
74
|
+
>
|
|
75
|
+
<gl-token
|
|
76
|
+
v-for="item in selections"
|
|
77
|
+
:key="item.id"
|
|
78
|
+
:view-only="true"
|
|
79
|
+
variant="default"
|
|
80
|
+
class="gl-mb-2 gl-mr-2"
|
|
81
|
+
>
|
|
82
|
+
<div :id="`context-item-${item.id}-${selectionsId}`" class="gl-flex gl-items-center">
|
|
83
|
+
<gl-icon :name="getIconName(item.type)" :size="12" class="gl-mr-1" />
|
|
84
|
+
{{ item.metadata.name }}
|
|
85
|
+
</div>
|
|
86
|
+
<gl-duo-chat-context-item-popover
|
|
87
|
+
:item="item"
|
|
88
|
+
:target="`context-item-${item.id}-${selectionsId}`"
|
|
89
|
+
placement="bottom"
|
|
90
|
+
/>
|
|
91
|
+
</gl-token>
|
|
92
|
+
</div>
|
|
93
|
+
</div>
|
|
94
|
+
</template>
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
export const MOCK_CONTEXT_ITEM_FILE = {
|
|
2
|
+
id: '123e4567-e89b-12d3-a456-426614174000',
|
|
3
|
+
isEnabled: true,
|
|
4
|
+
metadata: {
|
|
5
|
+
name: 'strawberry.ts',
|
|
6
|
+
info: {
|
|
7
|
+
project: 'example/garden',
|
|
8
|
+
relFilePath: 'src/plants/strawberry.ts',
|
|
9
|
+
},
|
|
10
|
+
},
|
|
11
|
+
type: 'project_file',
|
|
12
|
+
};
|
|
13
|
+
|
|
14
|
+
export const MOCK_CONTEXT_ITEM_FILE_DISABLED = {
|
|
15
|
+
id: '323e4567-e89b-12d3-a456-426614174002',
|
|
16
|
+
isEnabled: false,
|
|
17
|
+
metadata: {
|
|
18
|
+
name: 'motorbike.cs',
|
|
19
|
+
info: {
|
|
20
|
+
project: 'example/vehicles',
|
|
21
|
+
relFilePath: '/src/VehicleFoo/motorbike.cs',
|
|
22
|
+
},
|
|
23
|
+
},
|
|
24
|
+
type: 'project_file',
|
|
25
|
+
};
|
|
26
|
+
const mockFiles = [
|
|
27
|
+
MOCK_CONTEXT_ITEM_FILE,
|
|
28
|
+
{
|
|
29
|
+
id: '223e4567-e89b-12d3-a456-426614174001',
|
|
30
|
+
isEnabled: true,
|
|
31
|
+
metadata: {
|
|
32
|
+
name: 'potato.ts',
|
|
33
|
+
info: {
|
|
34
|
+
project: 'example/garden',
|
|
35
|
+
relFilePath: '/src/plants/potato.ts',
|
|
36
|
+
},
|
|
37
|
+
},
|
|
38
|
+
type: 'project_file',
|
|
39
|
+
},
|
|
40
|
+
MOCK_CONTEXT_ITEM_FILE_DISABLED,
|
|
41
|
+
];
|
|
42
|
+
|
|
43
|
+
export const MOCK_CONTEXT_ITEM_ISSUE = {
|
|
44
|
+
id: '423e4567-e89b-12d3-a456-426614174003',
|
|
45
|
+
isEnabled: true,
|
|
46
|
+
metadata: {
|
|
47
|
+
name: 'Implement watering schedule',
|
|
48
|
+
info: {
|
|
49
|
+
project: 'example/garden',
|
|
50
|
+
iid: 1234,
|
|
51
|
+
},
|
|
52
|
+
},
|
|
53
|
+
type: 'issue',
|
|
54
|
+
};
|
|
55
|
+
export const MOCK_CONTEXT_ITEM_ISSUE_DISABLED = {
|
|
56
|
+
id: 'c463fb31-2a4c-4f8e-a609-97230ac48ae5',
|
|
57
|
+
isEnabled: false,
|
|
58
|
+
metadata: {
|
|
59
|
+
name: 'Fix vehicle colours',
|
|
60
|
+
info: {
|
|
61
|
+
project: 'example/vehicle',
|
|
62
|
+
iid: 91011,
|
|
63
|
+
},
|
|
64
|
+
},
|
|
65
|
+
disabledReasons: ['This foo is not available to bar', 'Lorem something something wow?'],
|
|
66
|
+
type: 'issue',
|
|
67
|
+
};
|
|
68
|
+
|
|
69
|
+
const mockIssues = [
|
|
70
|
+
MOCK_CONTEXT_ITEM_ISSUE,
|
|
71
|
+
{
|
|
72
|
+
id: '523e4567-e89b-12d3-a456-426614174004',
|
|
73
|
+
isEnabled: true,
|
|
74
|
+
metadata: {
|
|
75
|
+
name: 'Refactor plant growth rates',
|
|
76
|
+
info: {
|
|
77
|
+
project: 'example/garden',
|
|
78
|
+
iid: 5678,
|
|
79
|
+
},
|
|
80
|
+
},
|
|
81
|
+
type: 'issue',
|
|
82
|
+
},
|
|
83
|
+
MOCK_CONTEXT_ITEM_ISSUE_DISABLED,
|
|
84
|
+
];
|
|
85
|
+
|
|
86
|
+
export const MOCK_CONTEXT_ITEM_MERGE_REQUEST = {
|
|
87
|
+
id: '623e4567-e89b-12d3-a456-426614174005',
|
|
88
|
+
isEnabled: true,
|
|
89
|
+
metadata: {
|
|
90
|
+
name: 'Improve database performance',
|
|
91
|
+
info: {
|
|
92
|
+
project: 'example/garden',
|
|
93
|
+
iid: 1122,
|
|
94
|
+
},
|
|
95
|
+
},
|
|
96
|
+
type: 'merge_request',
|
|
97
|
+
};
|
|
98
|
+
export const MOCK_CONTEXT_ITEM_MERGE_REQUEST_DISABLED = {
|
|
99
|
+
id: '4eb665fc-e5e1-49b0-9789-2a16964e461a',
|
|
100
|
+
isEnabled: false,
|
|
101
|
+
metadata: {
|
|
102
|
+
name: 'Fix broken layout at small viewports',
|
|
103
|
+
info: {
|
|
104
|
+
project: 'example/vehicle',
|
|
105
|
+
iid: 5566,
|
|
106
|
+
},
|
|
107
|
+
},
|
|
108
|
+
disabledReasons: ['This foo is not available to bar', 'Lorem something something wow?'],
|
|
109
|
+
type: 'merge_request',
|
|
110
|
+
};
|
|
111
|
+
|
|
112
|
+
const mockMergeRequests = [
|
|
113
|
+
MOCK_CONTEXT_ITEM_MERGE_REQUEST,
|
|
114
|
+
{
|
|
115
|
+
id: '723e4567-e89b-12d3-a456-426614174006',
|
|
116
|
+
isEnabled: false,
|
|
117
|
+
metadata: {
|
|
118
|
+
name: 'Add vehicle registration details',
|
|
119
|
+
info: {
|
|
120
|
+
project: 'example/vehicle',
|
|
121
|
+
iid: 3344,
|
|
122
|
+
},
|
|
123
|
+
},
|
|
124
|
+
disabledReasons: ['This foo is not available to bar', 'Lorem something something wow?'],
|
|
125
|
+
type: 'merge_request',
|
|
126
|
+
},
|
|
127
|
+
MOCK_CONTEXT_ITEM_MERGE_REQUEST_DISABLED,
|
|
128
|
+
];
|
|
129
|
+
|
|
130
|
+
export const getMockContextItems = () => {
|
|
131
|
+
const allItems = [...mockFiles, ...mockIssues, ...mockMergeRequests];
|
|
132
|
+
|
|
133
|
+
// put disabled items in the back
|
|
134
|
+
const disabledItems = allItems.filter((item) => !item.isEnabled);
|
|
135
|
+
const enabledItems = allItems.filter((item) => item.isEnabled);
|
|
136
|
+
return [...enabledItems, ...disabledItems];
|
|
137
|
+
};
|
package/src/components/experimental/duo/chat/components/duo_chat_message/duo_chat_message.md
CHANGED
|
@@ -62,3 +62,8 @@ The component emits the `track-feedback` event, a proxy of the `feedback` event
|
|
|
62
62
|
the `GlDuoUserFeedback` component. Please refer to
|
|
63
63
|
[the documentation on that component](/story/experimental-duo-user-feedback--docs#listening-to-the-feedback-form-submission)
|
|
64
64
|
when processing feedback from users.
|
|
65
|
+
|
|
66
|
+
## Included context references
|
|
67
|
+
|
|
68
|
+
Messages will display any included context references (files, issues merge requests etc.) when
|
|
69
|
+
the message `meta.contextItems` array contains valid items.
|
package/src/components/experimental/duo/chat/components/duo_chat_message/duo_chat_message.vue
CHANGED
|
@@ -2,10 +2,12 @@
|
|
|
2
2
|
import GlIcon from '../../../../../base/icon/icon.vue';
|
|
3
3
|
import GlLoadingIcon from '../../../../../base/loading_icon/loading_icon.vue';
|
|
4
4
|
import { GlTooltipDirective } from '../../../../../../directives/tooltip';
|
|
5
|
+
import GlDuoChatContextItemSelections from '../duo_chat_context/duo_chat_context_item_selections/duo_chat_context_item_selections.vue';
|
|
5
6
|
import GlDuoUserFeedback from '../../../user_feedback/user_feedback.vue';
|
|
6
7
|
import GlFormGroup from '../../../../../base/form/form_group/form_group.vue';
|
|
7
8
|
import GlFormTextarea from '../../../../../base/form/form_textarea/form_textarea.vue';
|
|
8
9
|
import { SafeHtmlDirective as SafeHtml } from '../../../../../../directives/safe_html/safe_html';
|
|
10
|
+
import { sprintf, translatePlural } from '../../../../../../utils/i18n';
|
|
9
11
|
import { MESSAGE_MODEL_ROLES } from '../../constants';
|
|
10
12
|
import DocumentationSources from '../duo_chat_message_sources/duo_chat_message_sources.vue';
|
|
11
13
|
// eslint-disable-next-line no-restricted-imports
|
|
@@ -35,6 +37,7 @@ export default {
|
|
|
35
37
|
},
|
|
36
38
|
components: {
|
|
37
39
|
DocumentationSources,
|
|
40
|
+
GlDuoChatContextItemSelections,
|
|
38
41
|
GlDuoUserFeedback,
|
|
39
42
|
GlFormGroup,
|
|
40
43
|
GlFormTextarea,
|
|
@@ -130,6 +133,39 @@ export default {
|
|
|
130
133
|
error() {
|
|
131
134
|
return Boolean(this.message?.errors?.length) && this.message.errors.join('; ');
|
|
132
135
|
},
|
|
136
|
+
selectedContextItems() {
|
|
137
|
+
return this.message.extras?.contextItems || [];
|
|
138
|
+
},
|
|
139
|
+
displaySelectedContextItems() {
|
|
140
|
+
return Boolean(this.selectedContextItems.length);
|
|
141
|
+
},
|
|
142
|
+
selectedContextItemsDefaultCollapsed() {
|
|
143
|
+
return this.isAssistantMessage;
|
|
144
|
+
},
|
|
145
|
+
selectedContextItemsTitle() {
|
|
146
|
+
if (!this.displaySelectedContextItems) return '';
|
|
147
|
+
|
|
148
|
+
const count = this.selectedContextItems.length;
|
|
149
|
+
|
|
150
|
+
if (this.isUserMessage) {
|
|
151
|
+
return translatePlural(
|
|
152
|
+
'GlDuoChatMessage.SelectedContextItemsTitleUserMessage',
|
|
153
|
+
'Included reference',
|
|
154
|
+
'Included references'
|
|
155
|
+
)(count);
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
return sprintf(
|
|
159
|
+
translatePlural(
|
|
160
|
+
'GlDuoChatMessage.SelectedContextItemsTitleAssistantMessage',
|
|
161
|
+
'Used %{count} included reference',
|
|
162
|
+
'Used %{count} included references'
|
|
163
|
+
)(count),
|
|
164
|
+
{
|
|
165
|
+
count,
|
|
166
|
+
}
|
|
167
|
+
);
|
|
168
|
+
},
|
|
133
169
|
},
|
|
134
170
|
beforeCreate() {
|
|
135
171
|
if (!customElements.get('copy-code')) {
|
|
@@ -213,6 +249,13 @@ export default {
|
|
|
213
249
|
data-testid="error"
|
|
214
250
|
/>
|
|
215
251
|
<div ref="content-wrapper" :class="{ 'has-error': error }">
|
|
252
|
+
<gl-duo-chat-context-item-selections
|
|
253
|
+
v-if="displaySelectedContextItems"
|
|
254
|
+
:selections="selectedContextItems"
|
|
255
|
+
:title="selectedContextItemsTitle"
|
|
256
|
+
:default-collapsed="selectedContextItemsDefaultCollapsed"
|
|
257
|
+
class="gl-mb-3"
|
|
258
|
+
/>
|
|
216
259
|
<div
|
|
217
260
|
v-if="error"
|
|
218
261
|
ref="error-message"
|
|
@@ -6,6 +6,7 @@ import {
|
|
|
6
6
|
CHAT_RESET_MESSAGE,
|
|
7
7
|
CHAT_CLEAN_MESSAGE,
|
|
8
8
|
} from './constants';
|
|
9
|
+
import { getMockContextItems } from './components/duo_chat_context/mock_context_data';
|
|
9
10
|
|
|
10
11
|
const MOCK_SOURCES = [
|
|
11
12
|
{
|
|
@@ -36,6 +37,7 @@ export const MOCK_RESPONSE_MESSAGE = {
|
|
|
36
37
|
role: MESSAGE_MODEL_ROLES.assistant,
|
|
37
38
|
extras: {
|
|
38
39
|
sources: MOCK_SOURCES,
|
|
40
|
+
contextItems: getMockContextItems().slice(0, 2),
|
|
39
41
|
},
|
|
40
42
|
requestId: '987',
|
|
41
43
|
errors: [],
|
|
@@ -81,7 +83,9 @@ export const MOCK_RESPONSE_MESSAGE_FOR_STREAMING = {
|
|
|
81
83
|
which is rendered while streaming.
|
|
82
84
|
`,
|
|
83
85
|
role: 'assistant',
|
|
84
|
-
extras: {
|
|
86
|
+
extras: {
|
|
87
|
+
contextItems: getMockContextItems().slice(0, 2),
|
|
88
|
+
},
|
|
85
89
|
requestId: '987',
|
|
86
90
|
errors: [],
|
|
87
91
|
timestamp: '2021-04-21T12:00:00.000Z',
|
|
@@ -130,7 +134,9 @@ export const MOCK_USER_PROMPT_MESSAGE = {
|
|
|
130
134
|
requestId: '987',
|
|
131
135
|
errors: [],
|
|
132
136
|
timestamp: '2021-04-21T12:00:00.000Z',
|
|
133
|
-
extras:
|
|
137
|
+
extras: {
|
|
138
|
+
contextItems: getMockContextItems().slice(0, 2),
|
|
139
|
+
},
|
|
134
140
|
};
|
|
135
141
|
|
|
136
142
|
export const renderMarkdown = (content) => content;
|
package/translations.js
CHANGED
|
@@ -1,8 +1,11 @@
|
|
|
1
1
|
/* eslint-disable import/no-default-export */
|
|
2
2
|
export default {
|
|
3
3
|
'ClearIconButton.title': 'Clear',
|
|
4
|
+
'DuoChatContextItemPopover.DisabledReason': 'This item is disabled',
|
|
4
5
|
'GlBreadcrumb.showMoreLabel': 'Show more breadcrumbs',
|
|
5
6
|
'GlCollapsibleListbox.srOnlyResultsLabel': null,
|
|
7
|
+
'GlDuoChatMessage.SelectedContextItemsTitleAssistantMessage': null,
|
|
8
|
+
'GlDuoChatMessage.SelectedContextItemsTitleUserMessage': null,
|
|
6
9
|
'GlDuoWorkflowPanel.collapseButtonTitle': 'Collapse',
|
|
7
10
|
'GlDuoWorkflowPanel.expandButtonTitle': 'Expand',
|
|
8
11
|
'GlDuoWorkflowPrompt.cancelButtonText': 'Cancel',
|