@gitlab/ui 92.5.0 → 93.1.0
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 +29 -0
- package/dist/components/base/broadcast_message/broadcast_message.js +1 -1
- package/dist/components/base/form/form_fields/form_fields.js +3 -2
- package/dist/components/base/toast/toast.js +1 -1
- package/dist/components/base/token/token.js +1 -1
- package/dist/components/experimental/duo/chat/components/duo_chat_conversation/duo_chat_conversation.js +2 -1
- package/dist/components/experimental/duo/chat/components/duo_chat_loader/duo_chat_loader.js +4 -3
- package/dist/components/experimental/duo/chat/components/duo_chat_message/duo_chat_message.js +8 -8
- package/dist/components/experimental/duo/chat/components/duo_chat_message_sources/duo_chat_message_sources.js +7 -4
- package/dist/components/experimental/duo/chat/duo_chat.js +13 -12
- package/dist/index.css +2 -2
- package/dist/index.css.map +1 -1
- package/dist/utils/set_utils.js +25 -0
- package/package.json +1 -1
- package/src/components/base/broadcast_message/broadcast_message.scss +1 -0
- package/src/components/base/broadcast_message/broadcast_message.vue +1 -1
- package/src/components/base/form/form_fields/form_fields.vue +3 -2
- package/src/components/base/new_dropdowns/dropdown.scss +4 -0
- package/src/components/base/toast/toast.js +1 -1
- package/src/components/base/toast/toast.scss +1 -0
- package/src/components/base/token/token.scss +1 -5
- package/src/components/base/token/token.vue +1 -6
- package/src/components/experimental/duo/chat/components/duo_chat_conversation/duo_chat_conversation.md +10 -0
- package/src/components/experimental/duo/chat/components/duo_chat_conversation/duo_chat_conversation.vue +2 -1
- package/src/components/experimental/duo/chat/components/duo_chat_loader/duo_chat_loader.vue +12 -3
- package/src/components/experimental/duo/chat/components/duo_chat_message/duo_chat_message.vue +20 -9
- package/src/components/experimental/duo/chat/components/duo_chat_message_sources/duo_chat_message_sources.vue +5 -4
- package/src/components/experimental/duo/chat/duo_chat.vue +43 -16
- package/src/scss/components.scss +0 -1
- package/src/utils/set_utils.js +24 -0
- package/translations.js +33 -0
- package/src/components/shared_components/close_button/close_button.scss +0 -21
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import isObject from 'lodash/isObject';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Purpose is a substitute of Vue.set but with preserving reactivity
|
|
5
|
+
* New object can be assigned to data property of aa component
|
|
6
|
+
* @param source
|
|
7
|
+
* @param key
|
|
8
|
+
* @param value
|
|
9
|
+
* @returns {*}
|
|
10
|
+
*/
|
|
11
|
+
const setObjectProperty = function (source, key) {
|
|
12
|
+
let value = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '';
|
|
13
|
+
if (!source || !key || !isObject(source)) {
|
|
14
|
+
return {};
|
|
15
|
+
}
|
|
16
|
+
if (typeof key !== 'string') {
|
|
17
|
+
return source;
|
|
18
|
+
}
|
|
19
|
+
return {
|
|
20
|
+
...source,
|
|
21
|
+
[key]: value
|
|
22
|
+
};
|
|
23
|
+
};
|
|
24
|
+
|
|
25
|
+
export { setObjectProperty };
|
package/package.json
CHANGED
|
@@ -4,6 +4,7 @@ import mapValues from 'lodash/mapValues';
|
|
|
4
4
|
import uniqueId from 'lodash/uniqueId';
|
|
5
5
|
import GlFormGroup from '../form_group/form_group.vue';
|
|
6
6
|
import GlFormInput from '../form_input/form_input.vue';
|
|
7
|
+
import { setObjectProperty } from '../../../../utils/set_utils';
|
|
7
8
|
import GlFormFieldValidator from './form_field_validator.vue';
|
|
8
9
|
|
|
9
10
|
export default {
|
|
@@ -147,7 +148,7 @@ export default {
|
|
|
147
148
|
},
|
|
148
149
|
methods: {
|
|
149
150
|
setFieldDirty(fieldName) {
|
|
150
|
-
this
|
|
151
|
+
this.fieldDirtyStatuses = setObjectProperty(this.fieldDirtyStatuses, fieldName, true);
|
|
151
152
|
},
|
|
152
153
|
setAllFieldsDirty() {
|
|
153
154
|
this.fieldNames.forEach((fieldName) => this.setFieldDirty(fieldName));
|
|
@@ -173,7 +174,7 @@ export default {
|
|
|
173
174
|
return val;
|
|
174
175
|
},
|
|
175
176
|
onFieldValidationUpdate(fieldName, invalidFeedback) {
|
|
176
|
-
this
|
|
177
|
+
this.fieldValidations = setObjectProperty(this.fieldValidations, fieldName, invalidFeedback);
|
|
177
178
|
},
|
|
178
179
|
onFieldBlur(fieldName) {
|
|
179
180
|
this.setFieldDirty(fieldName);
|
|
@@ -41,15 +41,11 @@
|
|
|
41
41
|
@apply gl-ml-2;
|
|
42
42
|
@include gl-reset-color;
|
|
43
43
|
@include gl-cursor-pointer;
|
|
44
|
+
|
|
44
45
|
opacity: 0.8;
|
|
45
46
|
color: inherit !important;
|
|
46
47
|
background-color: transparent !important;
|
|
47
48
|
|
|
48
|
-
svg {
|
|
49
|
-
color: inherit !important;
|
|
50
|
-
mix-blend-mode: normal !important;
|
|
51
|
-
}
|
|
52
|
-
|
|
53
49
|
&:hover,
|
|
54
50
|
&:focus {
|
|
55
51
|
@include gl-opacity-10;
|
|
@@ -60,12 +60,7 @@ export default {
|
|
|
60
60
|
<span :class="['gl-token', variantClass, viewOnlyClass]" v-on="$listeners">
|
|
61
61
|
<span class="gl-token-content">
|
|
62
62
|
<slot></slot>
|
|
63
|
-
<close-button
|
|
64
|
-
v-if="!viewOnly"
|
|
65
|
-
class="gl-token-close gl-close-btn-color-inherit"
|
|
66
|
-
:label="removeLabel"
|
|
67
|
-
@click="close"
|
|
68
|
-
/>
|
|
63
|
+
<close-button v-if="!viewOnly" class="gl-token-close" :label="removeLabel" @click="close" />
|
|
69
64
|
</span>
|
|
70
65
|
</span>
|
|
71
66
|
</template>
|
|
@@ -6,3 +6,13 @@ mark the beginning of the conversation.
|
|
|
6
6
|
```html
|
|
7
7
|
<gl-duo-chat-conversation :messages="messages" :show-delimeter="showDelimiter" />
|
|
8
8
|
```
|
|
9
|
+
|
|
10
|
+
Translations for newChatLabel can be set via the props as documented or via translation configuration:
|
|
11
|
+
|
|
12
|
+
```js
|
|
13
|
+
setConfigs({
|
|
14
|
+
translations: {
|
|
15
|
+
'GlDuoWorkflowPrompt.newChat': __('New chat'),
|
|
16
|
+
},
|
|
17
|
+
});
|
|
18
|
+
```
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
<script>
|
|
2
2
|
import GlDuoChatMessage from '../duo_chat_message/duo_chat_message.vue';
|
|
3
|
+
import { translate } from '../../../../../../utils/i18n';
|
|
3
4
|
|
|
4
5
|
const i18n = {
|
|
5
|
-
CONVERSATION_NEW_CHAT: 'New chat',
|
|
6
|
+
CONVERSATION_NEW_CHAT: translate('GlDuoChatConversation.newChat', 'New chat'),
|
|
6
7
|
};
|
|
7
8
|
|
|
8
9
|
const isMessage = (item) => Boolean(item) && item?.role;
|
|
@@ -1,11 +1,20 @@
|
|
|
1
1
|
<script>
|
|
2
|
+
import { translate } from '../../../../../../utils/i18n';
|
|
2
3
|
import GlSprintf from '../../../../../utilities/sprintf/sprintf.vue';
|
|
3
4
|
import { LOADING_TRANSITION_DURATION } from '../../constants';
|
|
4
5
|
|
|
5
6
|
export const i18n = {
|
|
6
|
-
LOADER_LOADING_MESSAGE:
|
|
7
|
-
|
|
8
|
-
|
|
7
|
+
LOADER_LOADING_MESSAGE: translate(
|
|
8
|
+
'GlDuoChatLoader.loaderLoadingMessage',
|
|
9
|
+
'%{tool} is %{transition} an answer'
|
|
10
|
+
),
|
|
11
|
+
LOADER_LOADING_TRANSITIONS: [
|
|
12
|
+
translate('GlDuoChatLoader.loaderLoadingTransitionsFinding', 'finding'),
|
|
13
|
+
translate('GlDuoChatLoader.loaderLoadingTransitionsWorkingOn', 'working on'),
|
|
14
|
+
translate('GlDuoChatLoader.loaderLoadingTransitionsGenerating', 'generating'),
|
|
15
|
+
translate('GlDuoChatLoader.loaderLoadingTransitionsProducing', 'producing'),
|
|
16
|
+
],
|
|
17
|
+
GITLAB_DUO: translate('GlDuoChatLoader.gitlabDuo', 'GitLab Duo'),
|
|
9
18
|
};
|
|
10
19
|
|
|
11
20
|
export default {
|
package/src/components/experimental/duo/chat/components/duo_chat_message/duo_chat_message.vue
CHANGED
|
@@ -7,8 +7,8 @@ import GlDuoUserFeedback from '../../../user_feedback/user_feedback.vue';
|
|
|
7
7
|
import GlFormGroup from '../../../../../base/form/form_group/form_group.vue';
|
|
8
8
|
import GlFormTextarea from '../../../../../base/form/form_textarea/form_textarea.vue';
|
|
9
9
|
import { SafeHtmlDirective as SafeHtml } from '../../../../../../directives/safe_html/safe_html';
|
|
10
|
-
import { sprintf, translatePlural } from '../../../../../../utils/i18n';
|
|
11
10
|
import { MESSAGE_MODEL_ROLES, SELECTED_CONTEXT_ITEMS_DEFAULT_COLLAPSED } from '../../constants';
|
|
11
|
+
import { sprintf, translate, translatePlural } from '../../../../../../utils/i18n';
|
|
12
12
|
import DocumentationSources from '../duo_chat_message_sources/duo_chat_message_sources.vue';
|
|
13
13
|
// eslint-disable-next-line no-restricted-imports
|
|
14
14
|
import { renderDuoChatMarkdownPreview } from '../../markdown_renderer';
|
|
@@ -18,14 +18,25 @@ import { concatUntilEmpty } from './utils';
|
|
|
18
18
|
|
|
19
19
|
export const i18n = {
|
|
20
20
|
MODAL: {
|
|
21
|
-
TITLE: 'Give feedback on GitLab Duo Chat',
|
|
22
|
-
ALERT_TEXT:
|
|
23
|
-
'
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
21
|
+
TITLE: translate('GlDuoChatMessage.modalTitle', 'Give feedback on GitLab Duo Chat'),
|
|
22
|
+
ALERT_TEXT: translate(
|
|
23
|
+
'GlDuoChatMessage.modalAlertText',
|
|
24
|
+
'GitLab team members cannot view your conversation. Please be as descriptive as possible.'
|
|
25
|
+
),
|
|
26
|
+
DID_WHAT: translate('GlDuoChatMessage.modalDidWhat', 'What were you doing?'),
|
|
27
|
+
INTERACTION: translate(
|
|
28
|
+
'GlDuoChatMessage.modalInteraction',
|
|
29
|
+
'The situation in which you interacted with GitLab Duo Chat.'
|
|
30
|
+
),
|
|
31
|
+
IMPROVE_WHAT: translate(
|
|
32
|
+
'GlDuoChatMessage.modalImproveWhat',
|
|
33
|
+
'How could the response be improved?'
|
|
34
|
+
),
|
|
35
|
+
BETTER_RESPONSE: translate(
|
|
36
|
+
'GlDuoChatMessage.modalBetterResponse',
|
|
37
|
+
'How the response might better meet your needs.'
|
|
38
|
+
),
|
|
39
|
+
MESSAGE_ERROR: translate('GlDuoChatMessage.modalMessageError', 'Error sending the message'),
|
|
29
40
|
},
|
|
30
41
|
};
|
|
31
42
|
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
<script>
|
|
2
|
+
import { translatePlural } from '../../../../../../utils/i18n';
|
|
2
3
|
import GlIcon from '../../../../../base/icon/icon.vue';
|
|
3
4
|
import GlLink from '../../../../../base/link/link.vue';
|
|
4
5
|
import { DOCUMENTATION_SOURCE_TYPES } from '../../constants';
|
|
5
6
|
|
|
6
7
|
export const i18n = {
|
|
7
|
-
MESSAGE_SOURCE:
|
|
8
|
-
|
|
8
|
+
MESSAGE_SOURCE: (count = 1) =>
|
|
9
|
+
translatePlural('GlDuoChatMessageSources.messageSources', 'Source', 'Sources')(count),
|
|
9
10
|
};
|
|
10
11
|
|
|
11
12
|
export default {
|
|
@@ -25,7 +26,7 @@ export default {
|
|
|
25
26
|
},
|
|
26
27
|
computed: {
|
|
27
28
|
sourceLabel() {
|
|
28
|
-
return this.sources.length
|
|
29
|
+
return i18n.MESSAGE_SOURCE(this.sources.length);
|
|
29
30
|
},
|
|
30
31
|
},
|
|
31
32
|
methods: {
|
|
@@ -53,7 +54,7 @@ export default {
|
|
|
53
54
|
}
|
|
54
55
|
}
|
|
55
56
|
|
|
56
|
-
return
|
|
57
|
+
return this.sourceLabel;
|
|
57
58
|
},
|
|
58
59
|
},
|
|
59
60
|
};
|
|
@@ -12,6 +12,7 @@ import GlForm from '../../../base/form/form.vue';
|
|
|
12
12
|
import GlExperimentBadge from '../../experiment_badge/experiment_badge.vue';
|
|
13
13
|
import { badgeTypes, badgeTypeValidator } from '../../experiment_badge/constants';
|
|
14
14
|
import { SafeHtmlDirective as SafeHtml } from '../../../../directives/safe_html/safe_html';
|
|
15
|
+
import { translate } from '../../../../utils/i18n';
|
|
15
16
|
import GlDuoChatLoader from './components/duo_chat_loader/duo_chat_loader.vue';
|
|
16
17
|
import GlDuoChatPredefinedPrompts from './components/duo_chat_predefined_prompts/duo_chat_predefined_prompts.vue';
|
|
17
18
|
import GlDuoChatConversation from './components/duo_chat_conversation/duo_chat_conversation.vue';
|
|
@@ -25,23 +26,49 @@ import {
|
|
|
25
26
|
import { INCLUDE_SLASH_COMMAND } from './mock_data';
|
|
26
27
|
|
|
27
28
|
export const i18n = {
|
|
28
|
-
CHAT_DEFAULT_TITLE: 'GitLab Duo Chat',
|
|
29
|
-
CHAT_CLOSE_LABEL: 'Close the Code Explanation',
|
|
30
|
-
CHAT_LEGAL_GENERATED_BY_AI:
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
29
|
+
CHAT_DEFAULT_TITLE: translate('GlDuoChat.chatDefaultTitle', 'GitLab Duo Chat'),
|
|
30
|
+
CHAT_CLOSE_LABEL: translate('GlDuoChat.chatCloseLabel', 'Close the Code Explanation'),
|
|
31
|
+
CHAT_LEGAL_GENERATED_BY_AI: translate(
|
|
32
|
+
'GlDuoChat.chatLegalGeneratedByAI',
|
|
33
|
+
'Responses generated by AI'
|
|
34
|
+
),
|
|
35
|
+
CHAT_EMPTY_STATE_TITLE: translate('GlDuoChat.chatEmptyStateTitle', 'Ask a question'),
|
|
36
|
+
CHAT_EMPTY_STATE_DESC: translate(
|
|
37
|
+
'GlDuoChat.chatEmptyStateDesc',
|
|
38
|
+
'GitLab Duo Chat is your AI-powered assistant.'
|
|
39
|
+
),
|
|
40
|
+
CHAT_EMPTY_STATE_SECONDARY_DESC: translate(
|
|
41
|
+
'GlDuoChat.chatEmptyStateSecondaryDesc',
|
|
42
|
+
'Responses may be inaccurate. Verify before use.'
|
|
43
|
+
),
|
|
44
|
+
CHAT_PROMPT_PLACEHOLDER_DEFAULT: translate(
|
|
45
|
+
'GlDuoChat.chatPromptPlaceholderDefault',
|
|
46
|
+
'GitLab Duo Chat'
|
|
47
|
+
),
|
|
48
|
+
CHAT_PROMPT_PLACEHOLDER_WITH_COMMANDS: translate(
|
|
49
|
+
'GlDuoChat.chatPromptPlaceholderWithCommands',
|
|
50
|
+
'Type "/" for slash commands'
|
|
51
|
+
),
|
|
52
|
+
CHAT_SUBMIT_LABEL: translate('GlDuoChat.chatSubmitLabel', 'Send chat message.'),
|
|
53
|
+
CHAT_CANCEL_LABEL: translate('GlDuoChat.chatCancelLabel', 'Cancel'),
|
|
54
|
+
CHAT_LEGAL_DISCLAIMER: translate(
|
|
55
|
+
'GlDuoChat.chatLegalDisclaimer',
|
|
56
|
+
"May provide inappropriate responses not representative of GitLab's views. Do not input personal data."
|
|
57
|
+
),
|
|
40
58
|
CHAT_DEFAULT_PREDEFINED_PROMPTS: [
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
59
|
+
translate(
|
|
60
|
+
'GlDuoChat.chatDefaultPredefinedPromptsChangePassword',
|
|
61
|
+
'How do I change my password in GitLab?'
|
|
62
|
+
),
|
|
63
|
+
translate('GlDuoChat.chatDefaultPredefinedPromptsForkProject', 'How do I fork a project?'),
|
|
64
|
+
translate(
|
|
65
|
+
'GlDuoChat.chatDefaultPredefinedPromptsCloneRepository',
|
|
66
|
+
'How do I clone a repository?'
|
|
67
|
+
),
|
|
68
|
+
translate(
|
|
69
|
+
'GlDuoChat.chatDefaultPredefinedPromptsCreateTemplate',
|
|
70
|
+
'How do I create a template?'
|
|
71
|
+
),
|
|
45
72
|
],
|
|
46
73
|
};
|
|
47
74
|
|
package/src/scss/components.scss
CHANGED
|
@@ -12,7 +12,6 @@
|
|
|
12
12
|
@import '../components/base/token_selector/token_selector';
|
|
13
13
|
@import '../components/base/card/card';
|
|
14
14
|
@import '../components/shared_components/clear_icon_button/clear_icon_button';
|
|
15
|
-
@import '../components/shared_components/close_button/close_button';
|
|
16
15
|
@import '../components/base/accordion/accordion_item';
|
|
17
16
|
@import '../components/base/alert/alert';
|
|
18
17
|
@import '../components/base/avatar/avatar';
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import isObject from 'lodash/isObject';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Purpose is a substitute of Vue.set but with preserving reactivity
|
|
5
|
+
* New object can be assigned to data property of aa component
|
|
6
|
+
* @param source
|
|
7
|
+
* @param key
|
|
8
|
+
* @param value
|
|
9
|
+
* @returns {*}
|
|
10
|
+
*/
|
|
11
|
+
export const setObjectProperty = (source, key, value = '') => {
|
|
12
|
+
if (!source || !key || !isObject(source)) {
|
|
13
|
+
return {};
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
if (typeof key !== 'string') {
|
|
17
|
+
return source;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
return {
|
|
21
|
+
...source,
|
|
22
|
+
[key]: value,
|
|
23
|
+
};
|
|
24
|
+
};
|
package/translations.js
CHANGED
|
@@ -11,12 +11,45 @@ export default {
|
|
|
11
11
|
'GlBreadcrumb.showMoreLabel': 'Show more breadcrumbs',
|
|
12
12
|
'GlBroadcastMessage.closeButtonTitle': 'Dismiss',
|
|
13
13
|
'GlCollapsibleListbox.srOnlyResultsLabel': null,
|
|
14
|
+
'GlDuoChat.chatCancelLabel': 'Cancel',
|
|
15
|
+
'GlDuoChat.chatCloseLabel': 'Close the Code Explanation',
|
|
16
|
+
'GlDuoChat.chatDefaultPredefinedPromptsChangePassword': 'How do I change my password in GitLab?',
|
|
17
|
+
'GlDuoChat.chatDefaultPredefinedPromptsCloneRepository': 'How do I clone a repository?',
|
|
18
|
+
'GlDuoChat.chatDefaultPredefinedPromptsCreateTemplate': 'How do I create a template?',
|
|
19
|
+
'GlDuoChat.chatDefaultPredefinedPromptsForkProject': 'How do I fork a project?',
|
|
20
|
+
'GlDuoChat.chatDefaultTitle': 'GitLab Duo Chat',
|
|
21
|
+
'GlDuoChat.chatEmptyStateDesc': 'GitLab Duo Chat is your AI-powered assistant.',
|
|
22
|
+
'GlDuoChat.chatEmptyStateSecondaryDesc': 'Responses may be inaccurate. Verify before use.',
|
|
23
|
+
'GlDuoChat.chatEmptyStateTitle': 'Ask a question',
|
|
24
|
+
'GlDuoChat.chatLegalDisclaimer':
|
|
25
|
+
"May provide inappropriate responses not representative of GitLab's views. Do not input personal data.",
|
|
26
|
+
'GlDuoChat.chatLegalGeneratedByAI': 'Responses generated by AI',
|
|
27
|
+
'GlDuoChat.chatPromptPlaceholderDefault': 'GitLab Duo Chat',
|
|
28
|
+
'GlDuoChat.chatPromptPlaceholderWithCommands': 'Type "/" for slash commands',
|
|
29
|
+
'GlDuoChat.chatSubmitLabel': 'Send chat message.',
|
|
14
30
|
'GlDuoChatContextItemMenu.emptyStateMessage': 'No results found',
|
|
15
31
|
'GlDuoChatContextItemMenu.loadingMessage': 'Loading...',
|
|
16
32
|
'GlDuoChatContextItemMenu.searchInputPlaceholder': 'Search %{categoryLabel}...',
|
|
17
33
|
'GlDuoChatContextItemMenu.selectedContextItemsTitle': 'Included references',
|
|
34
|
+
'GlDuoChatConversation.newChat': 'New chat',
|
|
35
|
+
'GlDuoChatLoader.gitlabDuo': 'GitLab Duo',
|
|
36
|
+
'GlDuoChatLoader.loaderLoadingMessage': '%{tool} is %{transition} an answer',
|
|
37
|
+
'GlDuoChatLoader.loaderLoadingTransitionsFinding': 'finding',
|
|
38
|
+
'GlDuoChatLoader.loaderLoadingTransitionsGenerating': 'generating',
|
|
39
|
+
'GlDuoChatLoader.loaderLoadingTransitionsProducing': 'producing',
|
|
40
|
+
'GlDuoChatLoader.loaderLoadingTransitionsWorkingOn': 'working on',
|
|
18
41
|
'GlDuoChatMessage.SelectedContextItemsTitleAssistantMessage': null,
|
|
19
42
|
'GlDuoChatMessage.SelectedContextItemsTitleUserMessage': null,
|
|
43
|
+
'GlDuoChatMessage.modalAlertText':
|
|
44
|
+
'GitLab team members cannot view your conversation. Please be as descriptive as possible.',
|
|
45
|
+
'GlDuoChatMessage.modalBetterResponse': 'How the response might better meet your needs.',
|
|
46
|
+
'GlDuoChatMessage.modalDidWhat': 'What were you doing?',
|
|
47
|
+
'GlDuoChatMessage.modalImproveWhat': 'How could the response be improved?',
|
|
48
|
+
'GlDuoChatMessage.modalInteraction':
|
|
49
|
+
'The situation in which you interacted with GitLab Duo Chat.',
|
|
50
|
+
'GlDuoChatMessage.modalMessageError': 'Error sending the message',
|
|
51
|
+
'GlDuoChatMessage.modalTitle': 'Give feedback on GitLab Duo Chat',
|
|
52
|
+
'GlDuoChatMessageSources.messageSources': null,
|
|
20
53
|
'GlDuoWorkflowPanel.collapseButtonTitle': 'Collapse',
|
|
21
54
|
'GlDuoWorkflowPanel.expandButtonTitle': 'Expand',
|
|
22
55
|
'GlDuoWorkflowPrompt.cancelButtonText': 'Cancel',
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
.gl-close-btn-color-inherit {
|
|
2
|
-
mix-blend-mode: luminosity !important;
|
|
3
|
-
|
|
4
|
-
&,
|
|
5
|
-
&:focus .gl-icon,
|
|
6
|
-
&:not(:hover) .gl-icon {
|
|
7
|
-
color: inherit !important;
|
|
8
|
-
}
|
|
9
|
-
|
|
10
|
-
&:focus,
|
|
11
|
-
&:active,
|
|
12
|
-
&.active {
|
|
13
|
-
mix-blend-mode: initial !important;
|
|
14
|
-
@include gl-focus($important: true, $focus-ring: $focus-ring-dark);
|
|
15
|
-
|
|
16
|
-
.gl-icon {
|
|
17
|
-
background-color: transparent;
|
|
18
|
-
mix-blend-mode: difference;
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
}
|