@gitlab/ui 37.2.0 → 37.4.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.
Files changed (68) hide show
  1. package/CHANGELOG.md +22 -0
  2. package/dist/components/base/form/form_group/form_group.documentation.js +2 -6
  3. package/dist/components/base/search_box_by_click/search_box_by_click.documentation.js +2 -80
  4. package/dist/components/base/search_box_by_click/search_box_by_click.js +60 -1
  5. package/dist/components/base/search_box_by_type/search_box_by_type.documentation.js +2 -20
  6. package/dist/components/base/search_box_by_type/search_box_by_type.js +19 -5
  7. package/dist/directives/hover_load/hover_load.documentation.js +1 -1
  8. package/dist/directives/resize_observer/resize_observer.documentation.js +2 -5
  9. package/dist/directives/safe_html/safe_html.documentation.js +1 -1
  10. package/dist/directives/safe_link/safe_link.documentation.js +2 -3
  11. package/dist/index.css +1 -1
  12. package/dist/index.css.map +1 -1
  13. package/dist/utility_classes.css +1 -1
  14. package/dist/utility_classes.css.map +1 -1
  15. package/documentation/documented_stories.js +7 -0
  16. package/package.json +1 -1
  17. package/src/components/base/button/button.scss +5 -9
  18. package/src/components/base/form/form_group/form_group.documentation.js +0 -3
  19. package/src/components/base/form/form_group/form_group.md +0 -2
  20. package/src/components/base/form/form_group/form_group.stories.js +106 -145
  21. package/src/components/base/search_box_by_click/search_box_by_click.documentation.js +0 -90
  22. package/src/components/base/search_box_by_click/search_box_by_click.md +0 -2
  23. package/src/components/base/search_box_by_click/search_box_by_click.stories.js +91 -48
  24. package/src/components/base/search_box_by_click/search_box_by_click.vue +50 -1
  25. package/src/components/base/search_box_by_type/search_box_by_type.documentation.js +0 -18
  26. package/src/components/base/search_box_by_type/search_box_by_type.md +0 -2
  27. package/src/components/base/search_box_by_type/search_box_by_type.stories.js +49 -43
  28. package/src/components/base/search_box_by_type/search_box_by_type.vue +16 -6
  29. package/src/directives/hover_load/hover_load.md +0 -2
  30. package/src/directives/hover_load/hover_load.stories.js +39 -34
  31. package/src/directives/resize_observer/resize_observer.documentation.js +0 -2
  32. package/src/directives/resize_observer/resize_observer.md +0 -6
  33. package/src/directives/resize_observer/resize_observer.stories.js +70 -51
  34. package/src/directives/safe_html/safe_html.md +0 -4
  35. package/src/directives/safe_html/safe_html.stories.js +53 -44
  36. package/src/directives/safe_link/safe_link.documentation.js +0 -1
  37. package/src/directives/safe_link/safe_link.md +0 -4
  38. package/src/directives/safe_link/safe_link.stories.js +31 -30
  39. package/src/scss/utilities.scss +8 -0
  40. package/src/scss/utility-mixins/background.scss +4 -0
  41. package/dist/components/base/form/form_group/examples/form_group/form_group.basic.example.js +0 -38
  42. package/dist/components/base/form/form_group/examples/form_group/form_group.disabled.example.js +0 -48
  43. package/dist/components/base/form/form_group/examples/form_group/form_group.textarea.example.js +0 -48
  44. package/dist/components/base/form/form_group/examples/form_group/form_group.validation.example.js +0 -66
  45. package/dist/components/base/form/form_group/examples/form_group/index.js +0 -27
  46. package/dist/components/base/search_box_by_click/examples/index.js +0 -22
  47. package/dist/components/base/search_box_by_click/examples/search_box_by_click.default.example.js +0 -48
  48. package/dist/components/base/search_box_by_click/examples/search_box_by_click.history.example.js +0 -51
  49. package/dist/components/base/search_box_by_click/examples/search_box_by_click.v_model.example.js +0 -54
  50. package/dist/components/base/search_box_by_type/examples/index.js +0 -17
  51. package/dist/components/base/search_box_by_type/examples/search_box_by_type.default.example.js +0 -48
  52. package/dist/components/base/search_box_by_type/examples/search_box_by_type.loading.example.js +0 -65
  53. package/dist/directives/resize_observer/examples/index.js +0 -12
  54. package/dist/directives/resize_observer/examples/resize_observer.basic.example.js +0 -62
  55. package/src/components/base/form/form_group/examples/form_group/form_group.basic.example.vue +0 -11
  56. package/src/components/base/form/form_group/examples/form_group/form_group.disabled.example.vue +0 -21
  57. package/src/components/base/form/form_group/examples/form_group/form_group.textarea.example.vue +0 -15
  58. package/src/components/base/form/form_group/examples/form_group/form_group.validation.example.vue +0 -36
  59. package/src/components/base/form/form_group/examples/form_group/index.js +0 -32
  60. package/src/components/base/search_box_by_click/examples/index.js +0 -26
  61. package/src/components/base/search_box_by_click/examples/search_box_by_click.default.example.vue +0 -14
  62. package/src/components/base/search_box_by_click/examples/search_box_by_click.history.example.vue +0 -23
  63. package/src/components/base/search_box_by_click/examples/search_box_by_click.v_model.example.vue +0 -23
  64. package/src/components/base/search_box_by_type/examples/index.js +0 -20
  65. package/src/components/base/search_box_by_type/examples/search_box_by_type.default.example.vue +0 -14
  66. package/src/components/base/search_box_by_type/examples/search_box_by_type.loading.example.vue +0 -34
  67. package/src/directives/resize_observer/examples/index.js +0 -14
  68. package/src/directives/resize_observer/examples/resize_observer.basic.example.vue +0 -21
@@ -77,6 +77,7 @@ export const setupStorybookReadme = () =>
77
77
  'GlSorting',
78
78
  'GlSortingItem',
79
79
  'GlIcon',
80
+ 'GlSafeLinkDirective',
80
81
  'GlDashboardSkeleton',
81
82
  'GlToggle',
82
83
  'GlNavbar',
@@ -92,6 +93,7 @@ export const setupStorybookReadme = () =>
92
93
  'GlIntersperse',
93
94
  'GlFormSelect',
94
95
  'GlDaterangePicker',
96
+ 'GlFormGroup',
95
97
  'GlAvatarLabeled',
96
98
  'GlBarChart',
97
99
  'GlCarousel',
@@ -107,12 +109,15 @@ export const setupStorybookReadme = () =>
107
109
  'GlPagination',
108
110
  'GlSkeletonLoader',
109
111
  'GlLabel',
112
+ 'GlHoverLoadDirective',
110
113
  'GlStackedColumnChart',
111
114
  'GlDiscreteScatterChart',
115
+ 'GlResizeObserverDirective',
112
116
  'GlFormCombobox',
113
117
  'GlChartTooltip',
114
118
  'GlInputGroupText',
115
119
  'GlGaugeChart',
120
+ 'GlSafeHtmlDirective',
116
121
  'GlFormRadio',
117
122
  'GlModal',
118
123
  'GlKeysetPagination',
@@ -127,6 +132,7 @@ export const setupStorybookReadme = () =>
127
132
  'GlColumnChart',
128
133
  'GlTruncate',
129
134
  'GlNav',
135
+ 'GlSearchBoxByType',
130
136
  'GlNavItem',
131
137
  'GlNavItemDropdown',
132
138
  'GlPopover',
@@ -138,6 +144,7 @@ export const setupStorybookReadme = () =>
138
144
  'GlAreaChart',
139
145
  'GlLineChart',
140
146
  'GlFormInputGroup',
147
+ 'GlSearchBoxByClick',
141
148
  ],
142
149
  components: {
143
150
  GlComponentDocumentation,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gitlab/ui",
3
- "version": "37.2.0",
3
+ "version": "37.4.1",
4
4
  "description": "GitLab UI Components",
5
5
  "license": "MIT",
6
6
  "main": "dist/index.js",
@@ -108,9 +108,8 @@
108
108
  }
109
109
 
110
110
  &.selected {
111
- @include gl-bg-gray-10;
112
- box-shadow: inset 0 0 0 $gl-border-size-1 $gray-200,
113
- inset 0 $gl-border-size-2 $gl-border-size-4 $gray-200;
111
+ @include gl-bg-white;
112
+ box-shadow: inset 0 0 0 $gl-border-size-2 $gray-300;
114
113
 
115
114
  &:hover,
116
115
  &:focus {
@@ -118,20 +117,17 @@
118
117
  }
119
118
 
120
119
  &:hover {
121
- box-shadow: inset 0 0 0 $gl-border-size-2 $gray-400,
122
- inset 0 $gl-border-size-4 $gl-border-size-4 $gray-200;
120
+ box-shadow: inset 0 0 0 $gl-border-size-2 $gray-400;
123
121
  }
124
122
 
125
123
  &:focus {
126
- box-shadow: inset 0 0 0 $gl-border-size-2 $gray-400,
127
- inset 0 $gl-border-size-4 $gl-border-size-4 $gray-200, $focus-ring;
124
+ box-shadow: inset 0 0 0 $gl-border-size-2 $gray-400, $focus-ring;
128
125
  }
129
126
 
130
127
  &:active,
131
128
  &:active:focus {
132
129
  @include gl-bg-gray-100;
133
- box-shadow: inset 0 0 0 $gl-border-size-2 $gray-600,
134
- inset 0 $gl-border-size-4 $gl-border-size-4 $gray-200, $focus-ring;
130
+ box-shadow: inset 0 0 0 $gl-border-size-2 $gray-600, $focus-ring;
135
131
  }
136
132
  }
137
133
 
@@ -1,8 +1,5 @@
1
- import examples from './examples/form_group';
2
1
  import description from './form_group.md';
3
2
 
4
3
  export default {
5
4
  description,
6
- examples,
7
- bootstrapComponent: 'b-form-group',
8
5
  };
@@ -1,3 +1 @@
1
- # Form Group
2
-
3
1
  Form group adds structure to forms.
@@ -1,164 +1,125 @@
1
- import { withKnobs, text, select, boolean } from '@storybook/addon-knobs';
2
- import { documentedStoriesOf } from '../../../../../documentation/documented_stories';
3
1
  import { GlFormGroup, GlFormInput, GlFormTextarea } from '../../../../index';
4
- import { sizeOptions } from '../../../../utils/constants';
2
+ import { disableControls } from '../../../../utils/stories_utils';
5
3
  import readme from './form_group.md';
6
4
 
7
5
  const components = {
8
6
  GlFormGroup,
9
7
  };
10
8
 
11
- function generateProps({
9
+ const generateProps = ({
12
10
  id = 'group-1',
13
11
  label = 'Label Name',
14
12
  description = 'form group description',
15
- labelDescription = 'form label description',
13
+ labelDescription = '',
16
14
  optional = GlFormGroup.props.optional.default,
17
15
  optionalText = GlFormGroup.props.optionalText.default,
18
- horizontal = false,
19
- } = {}) {
20
- return {
21
- id: {
22
- type: String,
23
- default: text('id', id),
24
- },
25
- label: {
26
- type: String,
27
- default: text('label', label),
28
- },
29
- labelSize: {
30
- type: String,
31
- default: select('label-size', sizeOptions, sizeOptions.sm),
32
- },
33
- description: {
34
- type: String,
35
- default: text('description', description),
36
- },
37
- labelDescription: {
38
- type: String,
39
- default: text('label-description', labelDescription),
40
- },
41
- optional: {
42
- type: Boolean,
43
- default: boolean('optional', optional),
44
- },
45
- optionalText: {
46
- type: String,
47
- default: text('optional-text', optionalText),
48
- },
49
- horizontal: {
50
- type: Boolean,
51
- default: boolean('horizontal', horizontal),
16
+ } = {}) => ({
17
+ id,
18
+ label,
19
+ labelDescription,
20
+ optional,
21
+ optionalText,
22
+ description,
23
+ });
24
+
25
+ const wrap = (template, bindings = '') => `
26
+ <gl-form-group
27
+ :id="id + '_group'"
28
+ :label="label"
29
+ :label-description="labelDescription"
30
+ :optional="optional"
31
+ :optional-text="optionalText"
32
+ :description="description"
33
+ ${bindings}
34
+ :label-for="id">
35
+ ${template}
36
+ </gl-form-group>
37
+ `;
38
+
39
+ export const Default = (_args, { argTypes }) => ({
40
+ props: Object.keys(argTypes),
41
+ components: { ...components, GlFormInput },
42
+ template: wrap('<gl-form-input :id="id" />'),
43
+ });
44
+ Default.args = generateProps();
45
+
46
+ export const Disabled = (_args, { argTypes }) => ({
47
+ props: Object.keys(argTypes),
48
+ components: { ...components, GlFormInput },
49
+ template: wrap('<gl-form-input :id="id" type="text" value="Disabled" disabled />'),
50
+ });
51
+ Disabled.args = generateProps({ description: 'This feature is disabled' });
52
+
53
+ export const WithTextarea = (_args, { argTypes }) => ({
54
+ props: Object.keys(argTypes),
55
+ components: { ...components, GlFormTextarea },
56
+ template: wrap('<gl-form-textarea :id="id" placeholder="Enter something" />'),
57
+ });
58
+ WithTextarea.args = generateProps({
59
+ id: 'textarea2',
60
+ optional: true,
61
+ description: '',
62
+ });
63
+
64
+ export const WithLabelDescription = (_args, { argTypes }) => ({
65
+ props: Object.keys(argTypes),
66
+ components: { ...components, GlFormInput },
67
+ template: wrap('<gl-form-input :id="id" />'),
68
+ });
69
+ WithLabelDescription.args = generateProps({
70
+ optional: true,
71
+ labelDescription: 'form label description',
72
+ });
73
+
74
+ export const WithValidations = (_args, { argTypes }) => ({
75
+ props: Object.keys(argTypes),
76
+ components: { ...components, GlFormInput },
77
+ computed: {
78
+ state() {
79
+ return this.name.length >= 4;
52
80
  },
53
- };
54
- }
81
+ invalidFeedback() {
82
+ let feedbackText = 'This field is required.';
55
83
 
56
- documentedStoriesOf('base/form/form-group', readme)
57
- .addDecorator(withKnobs)
58
- .add('default', () => ({
59
- props: generateProps(),
60
- components: { ...components, GlFormInput },
61
- template: `
62
- <gl-form-group
63
- :id="id"
64
- :label="label"
65
- :label-size="labelSize"
66
- :optional="optional"
67
- :optional-text="optionalText"
68
- :description="description"
69
- :horizontal="horizontal"
70
- label-for="label1"
71
- >
72
- <gl-form-input id="input1" />
73
- </gl-form-group>
74
- `,
75
- }))
76
- .add('disabled', () => ({
77
- props: generateProps(),
78
- components: { ...components, GlFormInput },
79
- template: `
80
- <gl-form-group
81
- id="group-id"
82
- label="Label Name"
83
- label-size="sm"
84
- :optional="optional"
85
- :optional-text="optionalText"
86
- description="This feature is disabled"
87
- label-for="input1"
88
- >
89
- <gl-form-input id="input1" type="text" :disabled="true" value="Disabled" />
90
- </gl-form-group>
91
- `,
92
- }))
93
- .add('with textarea', () => ({
94
- components: { ...components, GlFormTextarea },
95
- props: generateProps({ optional: true }),
96
- template: `
97
- <gl-form-group
98
- id="group-id-textarea2"
99
- label="Label Name"
100
- label-for="textarea2"
101
- :optional="optional"
102
- :optional-text="optionalText"
103
- >
104
- <gl-form-textarea id="textarea2" placeholder="Enter something" />
105
- </gl-form-group>
106
- `,
107
- }))
108
- .add('with label description', () => ({
109
- props: generateProps({ optional: true }),
110
- components: { ...components, GlFormInput },
111
- template: `
112
- <gl-form-group
113
- :id="id"
114
- :label="label"
115
- :label-size="labelSize"
116
- :description="description"
117
- :label-description="labelDescription"
118
- :optional="optional"
119
- :optional-text="optionalText"
120
- :horizontal="horizontal"
121
- label-for="label1"
122
- >
123
- <gl-form-input id="input1" />
124
- </gl-form-group>
125
- `,
126
- }))
127
- .add('with validations', () => ({
128
- props: generateProps({ label: 'Name', description: 'Enter a first and last name.' }),
129
- components: { ...components, GlFormInput },
130
- computed: {
131
- state() {
132
- return this.name.length >= 4;
133
- },
134
- invalidFeedback() {
135
- let feedbackText = 'This field is required.';
84
+ if (this.name.length > 4) {
85
+ feedbackText = '';
86
+ } else if (this.name.length > 0) {
87
+ feedbackText = 'Enter at least 4 characters.';
88
+ }
136
89
 
137
- if (this.name.length > 4) {
138
- feedbackText = '';
139
- } else if (this.name.length > 0) {
140
- feedbackText = 'Enter at least 4 characters.';
141
- }
90
+ return feedbackText;
91
+ },
92
+ },
93
+ data() {
94
+ return {
95
+ name: '',
96
+ };
97
+ },
98
+ template: wrap(
99
+ '<gl-form-input :id="id" :state="state" v-model.trim="name" />',
100
+ ':invalid-feedback="invalidFeedback"'
101
+ ),
102
+ });
103
+ WithValidations.args = generateProps({
104
+ label: 'Name',
105
+ description: 'Enter a first and last name.',
106
+ });
142
107
 
143
- return feedbackText;
108
+ export default {
109
+ title: 'base/form/form-group',
110
+ component: GlFormGroup,
111
+ parameters: {
112
+ bootstrapComponent: 'b-form-group',
113
+ docs: {
114
+ description: {
115
+ component: readme,
144
116
  },
145
117
  },
146
- data() {
147
- return {
148
- name: '',
149
- };
118
+ },
119
+ argTypes: {
120
+ ...disableControls(['labelClass']),
121
+ label: {
122
+ control: { type: 'text' },
150
123
  },
151
- template: `
152
- <gl-form-group
153
- :id="id"
154
- :label="label"
155
- :label-size="labelSize"
156
- :description="description"
157
- :invalid-feedback="invalidFeedback"
158
- :state="state"
159
- label-for="label1"
160
- >
161
- <gl-form-input id="input1" :state="state" v-model.trim="name" />
162
- </gl-form-group>
163
- `,
164
- }));
124
+ },
125
+ };
@@ -1,96 +1,6 @@
1
- import examples from './examples';
2
1
  import description from './search_box_by_click.md';
3
2
 
4
3
  export default {
5
4
  followsDesignSystem: true,
6
5
  description,
7
- examples,
8
- propsInfo: {
9
- value: {
10
- additionalInfo: 'If provided, used as value of search input',
11
- },
12
- historyItems: {
13
- type: Array,
14
- required: false,
15
- additionalInfo: 'If provided, used as history items for this component',
16
- },
17
- placeholder: {
18
- type: String,
19
- required: false,
20
- additionalInfo: 'If provided, used as history items for this component',
21
- },
22
- disabled: {
23
- type: Boolean,
24
- required: false,
25
- additionalInfo: 'If provided and true, disables the input and controls',
26
- },
27
- recentSearchesHeader: {
28
- type: String,
29
- required: false,
30
- default: 'Recent searches',
31
- additionalInfo: 'i18n for recent searches title within history dropdown',
32
- },
33
- clearButtonTitle: {
34
- type: String,
35
- required: false,
36
- default: 'Clear',
37
- additionalInfo: 'i18n for clear button title',
38
- },
39
- closeButtonTitle: {
40
- type: String,
41
- required: false,
42
- default: 'Close',
43
- additionalInfo: 'i18n for close button title within history dropdown',
44
- },
45
- clearRecentSearchesText: {
46
- type: String,
47
- required: false,
48
- default: 'Clear recent searches',
49
- additionalInfo: 'i18n for recent searches clear text',
50
- },
51
- tooltipContainer: {
52
- additionalInfo:
53
- 'Container for tooltip. Valid values: DOM node, selector string or `false` for default',
54
- },
55
- searchButtonAttributes: {
56
- additionalInfo: 'HTML attributes to add to the search button',
57
- },
58
- },
59
- events: [
60
- {
61
- event: 'clear',
62
- description: 'Emitted when search is cleared',
63
- },
64
- {
65
- event: 'submit',
66
- args: [
67
- {
68
- arg: 'value',
69
- description: 'Search value',
70
- },
71
- ],
72
- description: 'Emitted when search is submitted',
73
- },
74
- {
75
- event: 'history-item-selected',
76
- args: [
77
- {
78
- arg: 'value',
79
- description: 'History item',
80
- },
81
- ],
82
- description: 'Emitted when item from history is selected',
83
- },
84
- {
85
- event: 'clear-history',
86
- description: 'Emitted when clear history button is clicked',
87
- },
88
- ],
89
- slots: [
90
- {
91
- name: 'history-item',
92
- description:
93
- 'Slot to customize history item in history dropdown. Used only with history-items prop',
94
- },
95
- ],
96
6
  };
@@ -1,3 +1 @@
1
- # Search Box By Click
2
-
3
1
  Provides a clearable text input with loading state to be used for [search](https://design.gitlab.com/components/search).
@@ -1,57 +1,100 @@
1
- import { withKnobs, boolean, text } from '@storybook/addon-knobs';
2
- import { documentedStoriesOf } from '../../../../documentation/documented_stories';
3
1
  import { GlSearchBoxByClick } from '../../../index';
2
+ import { disableControls } from '../../../utils/stories_utils';
4
3
  import readme from './search_box_by_click.md';
5
4
 
6
- const components = {
7
- GlSearchBoxByClick,
8
- };
5
+ const template = `
6
+ <gl-search-box-by-click
7
+ :value="value"
8
+ :disabled="disabled"
9
+ :placeholder="placeholder"
10
+ :history-items="currentHistoryItems"
11
+ :clearable="clearable"
12
+ :recent-searches-header="recentSearchesHeader"
13
+ :clear-button-title="clearButtonTitle"
14
+ :close-button-title="closeButtonTitle"
15
+ :clear-recent-searches-text="clearRecentSearchesText"
16
+ :no-recent-searches-text="noRecentSearchesText"
17
+ :search-button-attributes="searchButtonAttributes"
18
+ @clear-history="clearCurrentHistory"
19
+ />
20
+ `;
9
21
 
10
- function generateProps({ disabled = false, value = '', placeholder = 'Search' } = {}) {
11
- return {
12
- disabled: {
13
- type: Boolean,
14
- default: boolean('disabled', disabled),
15
- },
16
- value: {
17
- type: String,
18
- default: text('value', value),
22
+ const defaultValue = (prop) => GlSearchBoxByClick.props[prop].default;
23
+
24
+ const generateProps = ({
25
+ disabled = defaultValue('disabled'),
26
+ value = defaultValue('value'),
27
+ placeholder = defaultValue('placeholder'),
28
+ historyItems = defaultValue('historyItems'),
29
+ clearable = defaultValue('clearable'),
30
+ recentSearchesHeader = defaultValue('recentSearchesHeader'),
31
+ clearButtonTitle = defaultValue('clearButtonTitle'),
32
+ closeButtonTitle = defaultValue('closeButtonTitle'),
33
+ clearRecentSearchesText = defaultValue('clearRecentSearchesText'),
34
+ noRecentSearchesText = defaultValue('noRecentSearchesText'),
35
+ searchButtonAttributes = defaultValue('searchButtonAttributes')(),
36
+ } = {}) => ({
37
+ disabled,
38
+ value,
39
+ placeholder,
40
+ historyItems,
41
+ clearable,
42
+ recentSearchesHeader,
43
+ clearButtonTitle,
44
+ closeButtonTitle,
45
+ clearRecentSearchesText,
46
+ noRecentSearchesText,
47
+ searchButtonAttributes,
48
+ });
49
+
50
+ const Template = (args, { argTypes }) => ({
51
+ components: {
52
+ GlSearchBoxByClick,
53
+ },
54
+ props: Object.keys(argTypes),
55
+ template,
56
+ data() {
57
+ return {
58
+ currentHistoryItems: this.historyItems,
59
+ };
60
+ },
61
+ watch: {
62
+ historyItems(historyItems) {
63
+ this.currentHistoryItems = historyItems;
19
64
  },
20
- placeholder: {
21
- type: String,
22
- default: text('placeholder', placeholder),
65
+ },
66
+ methods: {
67
+ clearCurrentHistory() {
68
+ this.currentHistoryItems = [];
23
69
  },
24
- };
25
- }
70
+ },
71
+ });
72
+
73
+ export const Default = Template.bind({});
74
+ Default.args = generateProps();
26
75
 
27
- documentedStoriesOf('base/search-box-by-click', readme)
28
- .addDecorator(withKnobs)
29
- .add('default', () => ({
30
- props: generateProps(),
31
- components,
32
- template: `
33
- <gl-search-box-by-click
34
- :value="value"
35
- :disabled="disabled"
36
- :placeholder="placeholder"
37
- />
38
- `,
39
- }))
40
- .add('with history', () => ({
41
- props: {
42
- ...generateProps(),
43
- history: {
44
- type: Array,
45
- default: ['author:@admin', 'assignee:@admin milestone:%12.5', 'label:~test'],
76
+ export const History = Template.bind({});
77
+ History.args = generateProps({
78
+ historyItems: ['author:@admin', 'assignee:@admin milestone:%12.5', 'label:~test'],
79
+ });
80
+
81
+ export default {
82
+ title: 'base/search-box-by-click',
83
+ component: GlSearchBoxByClick,
84
+ parameters: {
85
+ knobs: { disable: true },
86
+ docs: {
87
+ description: {
88
+ component: readme,
89
+ },
90
+ },
91
+ },
92
+ argTypes: {
93
+ ...disableControls(['tooltipContainer']),
94
+ historyItems: {
95
+ control: {
96
+ type: 'object',
46
97
  },
47
98
  },
48
- components,
49
- template: `
50
- <gl-search-box-by-click
51
- :value="value"
52
- :disabled="disabled"
53
- :placeholder="placeholder"
54
- :history-items="history"
55
- />
56
- `,
57
- }));
99
+ },
100
+ };