@gitlab/ui 66.24.0 → 66.25.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 +7 -0
- package/dist/components/experimental/duo/user_feedback/user_feedback.js +1 -1
- package/dist/components/experimental/duo/user_feedback/user_feedback_modal.js +1 -1
- package/dist/tokens/css/tokens.css +1 -1
- package/dist/tokens/css/tokens.dark.css +1 -1
- package/dist/tokens/js/tokens.dark.js +1 -1
- package/dist/tokens/js/tokens.js +1 -1
- package/dist/tokens/scss/_tokens.dark.scss +1 -1
- package/dist/tokens/scss/_tokens.scss +1 -1
- package/package.json +1 -1
- package/src/components/experimental/duo/user_feedback/user_feedback.md +52 -6
- package/src/components/experimental/duo/user_feedback/user_feedback.spec.js +20 -3
- package/src/components/experimental/duo/user_feedback/user_feedback.stories.js +68 -8
- package/src/components/experimental/duo/user_feedback/user_feedback.vue +6 -1
- package/src/components/experimental/duo/user_feedback/user_feedback_modal.spec.js +18 -1
- package/src/components/experimental/duo/user_feedback/user_feedback_modal.vue +10 -6
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,10 @@
|
|
|
1
|
+
# [66.25.0](https://gitlab.com/gitlab-org/gitlab-ui/compare/v66.24.0...v66.25.0) (2023-10-05)
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
### Features
|
|
5
|
+
|
|
6
|
+
* **GlDuoUserFeedback:** introduced new slots ([d771a0f](https://gitlab.com/gitlab-org/gitlab-ui/commit/d771a0f3466e1391f106650eb08130b7853717d9))
|
|
7
|
+
|
|
1
8
|
# [66.24.0](https://gitlab.com/gitlab-org/gitlab-ui/compare/v66.23.1...v66.24.0) (2023-10-05)
|
|
2
9
|
|
|
3
10
|
|
|
@@ -58,7 +58,7 @@ var script = {
|
|
|
58
58
|
const __vue_script__ = script;
|
|
59
59
|
|
|
60
60
|
/* template */
|
|
61
|
-
var __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:"gl-pt-4"},[_c('div',[(!_vm.feedbackReceived)?_c('gl-button',{attrs:{"variant":"link","target":"_blank","href":_vm.feedbackLinkUrl,"button-text-classes":"gl-white-space-normal! gl-text-left"},on:{"click":function($event){_vm.shouldRenderModal && _vm.$refs.feedbackModal.show();}}},[_vm._v(_vm._s(_vm.feedbackLinkText))]):_c('span',{staticClass:"gl-text-gray-500"},[_vm._v("\n "+_vm._s(_vm.$options.i18n.FEEDBACK_THANKS)+"\n ")])],1),_vm._v(" "),(_vm.shouldRenderModal)?_c('feedback-modal',{ref:"feedbackModal",on:{"feedback-submitted":_vm.notify}}):_vm._e()],1)};
|
|
61
|
+
var __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:"gl-pt-4"},[_c('div',[(!_vm.feedbackReceived)?_c('gl-button',{attrs:{"variant":"link","target":"_blank","href":_vm.feedbackLinkUrl,"button-text-classes":"gl-white-space-normal! gl-text-left"},on:{"click":function($event){_vm.shouldRenderModal && _vm.$refs.feedbackModal.show();}}},[_vm._v(_vm._s(_vm.feedbackLinkText))]):_c('span',{staticClass:"gl-text-gray-500"},[_vm._v("\n "+_vm._s(_vm.$options.i18n.FEEDBACK_THANKS)+"\n ")])],1),_vm._v(" "),(_vm.shouldRenderModal)?_c('feedback-modal',{ref:"feedbackModal",on:{"feedback-submitted":_vm.notify},scopedSlots:_vm._u([{key:"feedback-extra-fields",fn:function(){return [_vm._t("feedback-extra-fields")]},proxy:true}],null,true)}):_vm._e()],1)};
|
|
62
62
|
var __vue_staticRenderFns__ = [];
|
|
63
63
|
|
|
64
64
|
/* style */
|
|
@@ -85,7 +85,7 @@ var script = {
|
|
|
85
85
|
const __vue_script__ = script;
|
|
86
86
|
|
|
87
87
|
/* template */
|
|
88
|
-
var __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('gl-modal',{ref:"feedbackModal",attrs:{"modal-id":"feedbackModal","title":_vm.$options.i18n.MODAL_TITLE,"action-primary":_vm.$options.actions.primary,"action-cancel":_vm.$options.actions.cancel,"visible":false,"size":"sm"},on:{"primary":_vm.onFeedbackSubmit,"canceled":_vm.onFeedbackCanceled}},[_c('p',[_vm._v(_vm._s(_vm.$options.i18n.MODAL_DESCRIPTION))]),_vm._v(" "),_c('gl-form-group',{attrs:{"label":_vm.$options.i18n.MODAL_OPTIONS_LABEL,"optional":false,"data-testid":"feedback-options"}},[_c('gl-form-checkbox-group',{attrs:{"options":_vm.$options.feedbackOptions},model:{value:(_vm.selectedFeedbackOptions),callback:function ($$v) {_vm.selectedFeedbackOptions=$$v;},expression:"selectedFeedbackOptions"}})],1),_vm._v(" "),_c('gl-form-group',{attrs:{"label":_vm.$options.i18n.MODAL_MORE_LABEL,"optional":""}},[_c('gl-form-textarea',{attrs:{"placeholder":_vm.$options.i18n.MODAL_MORE_PLACEHOLDER},model:{value:(_vm.extendedFeedback),callback:function ($$v) {_vm.extendedFeedback=$$v;},expression:"extendedFeedback"}})],1)],
|
|
88
|
+
var __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('gl-modal',{ref:"feedbackModal",attrs:{"modal-id":"feedbackModal","title":_vm.$options.i18n.MODAL_TITLE,"action-primary":_vm.$options.actions.primary,"action-cancel":_vm.$options.actions.cancel,"visible":false,"size":"sm"},on:{"primary":_vm.onFeedbackSubmit,"canceled":_vm.onFeedbackCanceled}},[_c('p',[_vm._v(_vm._s(_vm.$options.i18n.MODAL_DESCRIPTION))]),_vm._v(" "),_c('gl-form-group',{attrs:{"label":_vm.$options.i18n.MODAL_OPTIONS_LABEL,"optional":false,"data-testid":"feedback-options"}},[_c('gl-form-checkbox-group',{attrs:{"options":_vm.$options.feedbackOptions},model:{value:(_vm.selectedFeedbackOptions),callback:function ($$v) {_vm.selectedFeedbackOptions=$$v;},expression:"selectedFeedbackOptions"}})],1),_vm._v(" "),_vm._t("feedback-extra-fields",function(){return [_c('gl-form-group',{attrs:{"label":_vm.$options.i18n.MODAL_MORE_LABEL,"optional":""}},[_c('gl-form-textarea',{attrs:{"placeholder":_vm.$options.i18n.MODAL_MORE_PLACEHOLDER},model:{value:(_vm.extendedFeedback),callback:function ($$v) {_vm.extendedFeedback=$$v;},expression:"extendedFeedback"}})],1)]})],2)};
|
|
89
89
|
var __vue_staticRenderFns__ = [];
|
|
90
90
|
|
|
91
91
|
/* style */
|
package/dist/tokens/js/tokens.js
CHANGED
package/package.json
CHANGED
|
@@ -5,7 +5,7 @@ the form data on submission.
|
|
|
5
5
|
|
|
6
6
|
## Custom button text
|
|
7
7
|
|
|
8
|
-
The component allows to customize the button text
|
|
8
|
+
The component allows to customize the button text presented to the user.
|
|
9
9
|
|
|
10
10
|
```html
|
|
11
11
|
<gl-duo-user-feedback feedback-link-text="Leave your custom feedback" />
|
|
@@ -13,9 +13,9 @@ The component allows to customize the button text, presented to the user.
|
|
|
13
13
|
|
|
14
14
|
## Linking to a separate feedback form
|
|
15
15
|
|
|
16
|
-
The main goal of this component is to provide
|
|
17
|
-
be necessary for
|
|
18
|
-
form and
|
|
16
|
+
The main goal of this component is to provide an advanced feedback form. However, it might only
|
|
17
|
+
be necessary for some consumers. In such a case, the component bypasses the default
|
|
18
|
+
form and links to an external feedback page/form.
|
|
19
19
|
|
|
20
20
|
```html
|
|
21
21
|
<gl-duo-user-feedback feedback-link-url="https://gitlab.com" />
|
|
@@ -29,8 +29,8 @@ This component emits the `feedback` event with all the options selected in the f
|
|
|
29
29
|
<gl-duo-user-feedback @feedback="myEventTracker" />
|
|
30
30
|
```
|
|
31
31
|
|
|
32
|
-
The returned event contains two props (`feedbackChoices` and `extendedTextFeedback`)
|
|
33
|
-
the underlying `FeedbackModal` component. Here's
|
|
32
|
+
The returned event contains two props (`feedbackChoices` and `extendedTextFeedback`) from
|
|
33
|
+
the underlying `FeedbackModal` component. Here's an example of a possible event:
|
|
34
34
|
|
|
35
35
|
```json
|
|
36
36
|
{
|
|
@@ -38,3 +38,49 @@ the underlying `FeedbackModal` component. Here's the example of a possible event
|
|
|
38
38
|
"extendedTextFeedback": "The answer was too long to understand"
|
|
39
39
|
}
|
|
40
40
|
```
|
|
41
|
+
|
|
42
|
+
## Using the `feedback-extra-fields` slot
|
|
43
|
+
|
|
44
|
+
By default, the component renders one extra textarea field to gather additional feedback
|
|
45
|
+
information from users. However, it may not be enough sometimes, and different use cases of
|
|
46
|
+
this component might need to fine-tune the form to gather information most suitable for that
|
|
47
|
+
or another use case. For this purpose, the component provides the `feedback-extra-fields`
|
|
48
|
+
slot, which can override the default textarea with different fields/information.
|
|
49
|
+
|
|
50
|
+
Note, however, that the content put into this slot will override the default textarea. So,
|
|
51
|
+
if you want to append additional fields, instead of completely overriding the default textarea,
|
|
52
|
+
you must copy the textarea field from the `DuoChatFeedbackModal` component into the slot.
|
|
53
|
+
|
|
54
|
+
```html
|
|
55
|
+
<gl-duo-user-feedback
|
|
56
|
+
:feedback-link-text="feedbackLinkText"
|
|
57
|
+
:feedback-link-url="feedbackLinkUrl"
|
|
58
|
+
@feedback="logEvent"
|
|
59
|
+
>
|
|
60
|
+
<template #feedback-extra-fields>
|
|
61
|
+
<div class="gl-mb-5">
|
|
62
|
+
<gl-alert variant="info" :dismissible="false">
|
|
63
|
+
GitLab team members can not see your conversation. Please be as descriptive as possible.
|
|
64
|
+
</gl-alert>
|
|
65
|
+
</div>
|
|
66
|
+
<gl-form-group label="What were you doing?" optional>
|
|
67
|
+
<gl-form-textarea
|
|
68
|
+
placeholder="The situation in which you interacted with GitLab Duo Chat."
|
|
69
|
+
v-model="didWhat"
|
|
70
|
+
/>
|
|
71
|
+
</gl-form-group>
|
|
72
|
+
<gl-form-group label="What were you expecting from the response?" optional>
|
|
73
|
+
<gl-form-textarea
|
|
74
|
+
placeholder="What kind of information or assistance were you hoping to receive?"
|
|
75
|
+
v-model="expectedWhat"
|
|
76
|
+
/>
|
|
77
|
+
</gl-form-group>
|
|
78
|
+
<gl-form-group label="How could the response be improved?" optional>
|
|
79
|
+
<gl-form-textarea
|
|
80
|
+
placeholder="How the response might better meet your needs."
|
|
81
|
+
v-model="improveWhat"
|
|
82
|
+
/>
|
|
83
|
+
</gl-form-group>
|
|
84
|
+
</template>
|
|
85
|
+
</gl-duo-user-feedback>
|
|
86
|
+
```
|
|
@@ -1,14 +1,18 @@
|
|
|
1
1
|
import { nextTick } from 'vue';
|
|
2
2
|
import { shallowMount } from '@vue/test-utils';
|
|
3
3
|
import { GlButton } from '../../../../index';
|
|
4
|
-
import
|
|
4
|
+
import FeedbackModal from './user_feedback_modal.vue';
|
|
5
5
|
import UserFeedback, { i18n } from './user_feedback.vue';
|
|
6
6
|
|
|
7
|
+
const DummyComponent = {
|
|
8
|
+
template: '<p>dummy</p>',
|
|
9
|
+
};
|
|
10
|
+
|
|
7
11
|
describe('UserFeedback', () => {
|
|
8
12
|
let wrapper;
|
|
9
13
|
const eventName = 'test_event_name';
|
|
10
14
|
|
|
11
|
-
const createComponent = ({ props, data = {} } = {}) => {
|
|
15
|
+
const createComponent = ({ props, data = {}, slots = {} } = {}) => {
|
|
12
16
|
wrapper = shallowMount(UserFeedback, {
|
|
13
17
|
data() {
|
|
14
18
|
return data;
|
|
@@ -17,11 +21,15 @@ describe('UserFeedback', () => {
|
|
|
17
21
|
eventName,
|
|
18
22
|
...props,
|
|
19
23
|
},
|
|
24
|
+
stubs: {
|
|
25
|
+
FeedbackModal,
|
|
26
|
+
},
|
|
27
|
+
slots,
|
|
20
28
|
});
|
|
21
29
|
};
|
|
22
30
|
|
|
23
31
|
const findButton = () => wrapper.findComponent(GlButton);
|
|
24
|
-
const findModal = () => wrapper.findComponent(
|
|
32
|
+
const findModal = () => wrapper.findComponent(FeedbackModal);
|
|
25
33
|
|
|
26
34
|
beforeEach(() => {
|
|
27
35
|
createComponent();
|
|
@@ -77,4 +85,13 @@ describe('UserFeedback', () => {
|
|
|
77
85
|
expect(findModal().exists()).toBe(false);
|
|
78
86
|
});
|
|
79
87
|
});
|
|
88
|
+
|
|
89
|
+
describe('slots', () => {
|
|
90
|
+
it('renders the `feedback-extra-fields` slot', () => {
|
|
91
|
+
expect(wrapper.findComponent(DummyComponent).exists()).toBe(false);
|
|
92
|
+
wrapper.destroy();
|
|
93
|
+
createComponent({ slots: { 'feedback-extra-fields': DummyComponent } });
|
|
94
|
+
expect(wrapper.findComponent(DummyComponent).exists()).toBe(true);
|
|
95
|
+
});
|
|
96
|
+
});
|
|
80
97
|
});
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { GlAlert, GlFormGroup, GlFormTextarea } from '../../../../index';
|
|
2
|
+
import GlDuoUserFeedback from './user_feedback.vue';
|
|
2
3
|
import readme from './user_feedback.md';
|
|
3
4
|
|
|
4
5
|
const generateProps = ({ feedbackLinkText, feedbackLinkUrl } = {}) => ({
|
|
@@ -6,8 +7,13 @@ const generateProps = ({ feedbackLinkText, feedbackLinkUrl } = {}) => ({
|
|
|
6
7
|
feedbackLinkUrl,
|
|
7
8
|
});
|
|
8
9
|
|
|
9
|
-
const
|
|
10
|
-
components: {
|
|
10
|
+
export const Default = (args, { argTypes }) => ({
|
|
11
|
+
components: {
|
|
12
|
+
GlDuoUserFeedback,
|
|
13
|
+
GlAlert,
|
|
14
|
+
GlFormGroup,
|
|
15
|
+
GlFormTextarea,
|
|
16
|
+
},
|
|
11
17
|
props: Object.keys(argTypes),
|
|
12
18
|
data() {
|
|
13
19
|
return {
|
|
@@ -21,7 +27,7 @@ const Template = (args, { argTypes }) => ({
|
|
|
21
27
|
},
|
|
22
28
|
template: `
|
|
23
29
|
<div>
|
|
24
|
-
<gl-user-feedback
|
|
30
|
+
<gl-duo-user-feedback
|
|
25
31
|
:feedback-link-text="feedbackLinkText"
|
|
26
32
|
:feedback-link-url="feedbackLinkUrl"
|
|
27
33
|
@feedback="logEvent"/>
|
|
@@ -29,13 +35,67 @@ const Template = (args, { argTypes }) => ({
|
|
|
29
35
|
</div>
|
|
30
36
|
`,
|
|
31
37
|
});
|
|
32
|
-
|
|
33
|
-
export const Default = Template.bind({});
|
|
34
38
|
Default.args = generateProps();
|
|
35
39
|
|
|
40
|
+
export const Slots = (args, { argTypes }) => ({
|
|
41
|
+
components: {
|
|
42
|
+
GlDuoUserFeedback,
|
|
43
|
+
GlAlert,
|
|
44
|
+
GlFormGroup,
|
|
45
|
+
GlFormTextarea,
|
|
46
|
+
},
|
|
47
|
+
props: Object.keys(argTypes),
|
|
48
|
+
data() {
|
|
49
|
+
return {
|
|
50
|
+
eventOutput: '',
|
|
51
|
+
didWhat: '',
|
|
52
|
+
expectedWhat: '',
|
|
53
|
+
improveWhat: '',
|
|
54
|
+
};
|
|
55
|
+
},
|
|
56
|
+
methods: {
|
|
57
|
+
logEvent(event) {
|
|
58
|
+
const { feedbackChoices } = event;
|
|
59
|
+
this.eventOutput = JSON.stringify({
|
|
60
|
+
feedbackChoices,
|
|
61
|
+
didWhat: this.didWhat,
|
|
62
|
+
expectedWhat: this.expectedWhat,
|
|
63
|
+
improveWhat: this.improveWhat,
|
|
64
|
+
});
|
|
65
|
+
},
|
|
66
|
+
},
|
|
67
|
+
template: `
|
|
68
|
+
<div>
|
|
69
|
+
<gl-duo-user-feedback
|
|
70
|
+
:feedback-link-text="feedbackLinkText"
|
|
71
|
+
:feedback-link-url="feedbackLinkUrl"
|
|
72
|
+
@feedback="logEvent">
|
|
73
|
+
<template #feedback-extra-fields>
|
|
74
|
+
<div class="gl-mb-5">
|
|
75
|
+
<gl-alert variant="info" :dismissible="false">
|
|
76
|
+
GitLab team members can not see your conversation. Please be as descriptive as possible.
|
|
77
|
+
</gl-alert>
|
|
78
|
+
</div>
|
|
79
|
+
<gl-form-group label="What were you doing?" optional>
|
|
80
|
+
<gl-form-textarea placeholder="The situation in which you interacted with GitLab Duo Chat." v-model="didWhat" />
|
|
81
|
+
</gl-form-group>
|
|
82
|
+
<gl-form-group label="What were you expecting from the response?" optional>
|
|
83
|
+
<gl-form-textarea placeholder="What kind of information or assistance were you hoping to receive?" v-model="expectedWhat" />
|
|
84
|
+
</gl-form-group>
|
|
85
|
+
<gl-form-group label="How could the response be improved?" optional>
|
|
86
|
+
<gl-form-textarea placeholder="How the response might better meet your needs."v-model="improveWhat" />
|
|
87
|
+
</gl-form-group>
|
|
88
|
+
</template>
|
|
89
|
+
</gl-duo-user-feedback>
|
|
90
|
+
<p v-if="eventOutput"><code>{{ eventOutput }}</code></p>
|
|
91
|
+
</div>
|
|
92
|
+
`,
|
|
93
|
+
});
|
|
94
|
+
Slots.parameters = { controls: { disable: true } };
|
|
95
|
+
|
|
36
96
|
export default {
|
|
37
|
-
title: 'experimental/duo/user-feedback',
|
|
38
|
-
component:
|
|
97
|
+
title: 'experimental/duo/duo-user-feedback',
|
|
98
|
+
component: GlDuoUserFeedback,
|
|
39
99
|
parameters: {
|
|
40
100
|
storyshots: { disable: true },
|
|
41
101
|
docs: {
|
|
@@ -72,6 +72,11 @@ export default {
|
|
|
72
72
|
{{ $options.i18n.FEEDBACK_THANKS }}
|
|
73
73
|
</span>
|
|
74
74
|
</div>
|
|
75
|
-
<feedback-modal v-if="shouldRenderModal" ref="feedbackModal" @feedback-submitted="notify"
|
|
75
|
+
<feedback-modal v-if="shouldRenderModal" ref="feedbackModal" @feedback-submitted="notify">
|
|
76
|
+
<template #feedback-extra-fields>
|
|
77
|
+
<!-- @slot The addition Feedback form fields. -->
|
|
78
|
+
<slot name="feedback-extra-fields"></slot>
|
|
79
|
+
</template>
|
|
80
|
+
</feedback-modal>
|
|
76
81
|
</div>
|
|
77
82
|
</template>
|
|
@@ -2,6 +2,10 @@ import { shallowMount } from '@vue/test-utils';
|
|
|
2
2
|
import { GlModal, GlFormCheckboxGroup, GlFormCheckbox, GlFormTextarea } from '../../../../index';
|
|
3
3
|
import FeedbackModal, { feedbackOptions } from './user_feedback_modal.vue';
|
|
4
4
|
|
|
5
|
+
const DummyComponent = {
|
|
6
|
+
template: '<p>dummy</p>',
|
|
7
|
+
};
|
|
8
|
+
|
|
5
9
|
describe('FeedbackModal', () => {
|
|
6
10
|
let wrapper;
|
|
7
11
|
|
|
@@ -15,8 +19,9 @@ describe('FeedbackModal', () => {
|
|
|
15
19
|
.at(index)
|
|
16
20
|
.vm.$emit('input', [feedbackOptions[index].value]);
|
|
17
21
|
};
|
|
18
|
-
const createComponent = () => {
|
|
22
|
+
const createComponent = (options = {}) => {
|
|
19
23
|
wrapper = shallowMount(FeedbackModal, {
|
|
24
|
+
...options,
|
|
20
25
|
stubs: {
|
|
21
26
|
GlModal,
|
|
22
27
|
GlFormCheckboxGroup,
|
|
@@ -58,4 +63,16 @@ describe('FeedbackModal', () => {
|
|
|
58
63
|
expect(wrapper.emitted('feedback-submitted')).toBeUndefined();
|
|
59
64
|
});
|
|
60
65
|
});
|
|
66
|
+
|
|
67
|
+
describe('slots', () => {
|
|
68
|
+
it('renders the `feedback-extra-fields` slot with default content', () => {
|
|
69
|
+
expect(wrapper.findComponent(DummyComponent).exists()).toBe(false);
|
|
70
|
+
expect(findTextarea().exists()).toBe(true);
|
|
71
|
+
wrapper.destroy();
|
|
72
|
+
|
|
73
|
+
createComponent({ slots: { 'feedback-extra-fields': DummyComponent } });
|
|
74
|
+
expect(wrapper.findComponent(DummyComponent).exists()).toBe(true);
|
|
75
|
+
expect(findTextarea().exists()).toBe(false);
|
|
76
|
+
});
|
|
77
|
+
});
|
|
61
78
|
});
|
|
@@ -114,11 +114,15 @@ export default {
|
|
|
114
114
|
:options="$options.feedbackOptions"
|
|
115
115
|
/>
|
|
116
116
|
</gl-form-group>
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
117
|
+
|
|
118
|
+
<!-- @slot The addition Feedback form fields. -->
|
|
119
|
+
<slot name="feedback-extra-fields">
|
|
120
|
+
<gl-form-group :label="$options.i18n.MODAL_MORE_LABEL" optional>
|
|
121
|
+
<gl-form-textarea
|
|
122
|
+
v-model="extendedFeedback"
|
|
123
|
+
:placeholder="$options.i18n.MODAL_MORE_PLACEHOLDER"
|
|
124
|
+
/>
|
|
125
|
+
</gl-form-group>
|
|
126
|
+
</slot>
|
|
123
127
|
</gl-modal>
|
|
124
128
|
</template>
|