@gitlab/ui 32.18.0 → 32.20.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 (133) hide show
  1. package/CHANGELOG.md +28 -0
  2. package/dist/components/base/accordion/accordion.js +7 -0
  3. package/dist/components/base/accordion/accordion_item.js +11 -0
  4. package/dist/components/base/alert/alert.js +3 -3
  5. package/dist/components/base/button/button.documentation.js +17 -1
  6. package/dist/components/base/button/button.js +10 -10
  7. package/dist/components/base/card/card.documentation.js +2 -26
  8. package/dist/components/base/card/card.js +11 -0
  9. package/dist/components/base/daterange_picker/daterange_picker.js +43 -1
  10. package/dist/components/base/dropdown/dropdown.js +9 -9
  11. package/dist/components/base/form/form_checkbox/form_checkbox.documentation.js +2 -14
  12. package/dist/components/base/form/form_checkbox/form_checkbox.js +21 -1
  13. package/dist/components/base/form/form_checkbox/form_checkbox_group.js +2 -2
  14. package/dist/components/base/form/form_input_group/form_input_group.js +1 -1
  15. package/dist/components/base/form/form_input_group/form_input_group_mixin.js +2 -2
  16. package/dist/components/base/form/form_radio_group/form_radio_group.js +2 -2
  17. package/dist/components/base/tabs/tabs/examples/tabs.basic.example.js +1 -1
  18. package/dist/components/base/tabs/tabs/examples/tabs.counterbadges.example.js +1 -1
  19. package/dist/components/base/tabs/tabs/examples/tabs.custom_title.example.js +1 -1
  20. package/dist/components/base/tabs/tabs/examples/tabs.disabled.example.js +1 -1
  21. package/dist/components/base/tabs/tabs/examples/tabs.justified.example.js +1 -1
  22. package/dist/components/base/tabs/tabs/examples/tabs.scrollable.example.js +2 -2
  23. package/dist/components/base/tabs/tabs/examples/tabs.styles_only.example.js +1 -1
  24. package/dist/components/base/tabs/tabs/tabs.documentation.js +1 -1
  25. package/dist/components/charts/single_stat/single_stat.js +1 -1
  26. package/dist/components/mixins/button_mixin.js +4 -4
  27. package/dist/directives/safe_html/safe_html.js +1 -1
  28. package/dist/index.css +1 -1
  29. package/dist/index.css.map +1 -1
  30. package/dist/index.js +1 -1
  31. package/dist/utility_classes.css +1 -1
  32. package/dist/utility_classes.css.map +1 -1
  33. package/dist/utils/charts/mock_data.js +0 -2
  34. package/dist/utils/constants.js +8 -8
  35. package/dist/utils/use_fake_date.js +4 -4
  36. package/dist/utils/validation_utils.js +0 -2
  37. package/documentation/components_documentation.js +0 -3
  38. package/documentation/documented_stories.js +5 -0
  39. package/index.js +1 -1
  40. package/package.json +11 -11
  41. package/src/components/base/accordion/accordion.md +0 -4
  42. package/src/components/base/accordion/accordion.stories.js +58 -20
  43. package/src/components/base/accordion/accordion.vue +7 -0
  44. package/src/components/base/accordion/accordion_item.md +0 -4
  45. package/src/components/base/accordion/accordion_item.stories.js +56 -11
  46. package/src/components/base/accordion/accordion_item.vue +10 -0
  47. package/src/components/base/alert/alert.spec.js +3 -3
  48. package/src/components/base/alert/alert.vue +3 -3
  49. package/src/components/base/badge/badge.scss +1 -0
  50. package/src/components/base/button/button.documentation.js +18 -0
  51. package/src/components/base/button/button.stories.js +13 -13
  52. package/src/components/base/button/button.vue +15 -15
  53. package/src/components/base/card/card.documentation.js +0 -27
  54. package/src/components/base/card/card.md +0 -4
  55. package/src/components/base/card/card.stories.js +32 -18
  56. package/src/components/base/card/card.vue +12 -0
  57. package/src/components/base/datepicker/datepicker.stories.js +1 -1
  58. package/src/components/base/daterange_picker/daterange_picker.md +0 -4
  59. package/src/components/base/daterange_picker/daterange_picker.stories.js +151 -88
  60. package/src/components/base/daterange_picker/daterange_picker.vue +43 -4
  61. package/src/components/base/dropdown/dropdown.stories.js +5 -5
  62. package/src/components/base/dropdown/dropdown.vue +12 -12
  63. package/src/components/base/form/form_checkbox/form_checkbox.documentation.js +0 -15
  64. package/src/components/base/form/form_checkbox/form_checkbox.md +2 -4
  65. package/src/components/base/form/form_checkbox/form_checkbox.stories.js +31 -39
  66. package/src/components/base/form/form_checkbox/form_checkbox.vue +21 -6
  67. package/src/components/base/form/form_checkbox/form_checkbox_group.vue +1 -1
  68. package/src/components/base/form/form_input_group/form_input_group.vue +1 -1
  69. package/src/components/base/form/form_input_group/form_input_group_mixin.js +1 -1
  70. package/src/components/base/form/form_radio_group/form_radio_group.vue +1 -1
  71. package/src/components/base/tabs/tabs/examples/tabs.basic.example.vue +2 -2
  72. package/src/components/base/tabs/tabs/examples/tabs.counterbadges.example.vue +9 -6
  73. package/src/components/base/tabs/tabs/examples/tabs.custom_title.example.vue +3 -3
  74. package/src/components/base/tabs/tabs/examples/tabs.disabled.example.vue +3 -3
  75. package/src/components/base/tabs/tabs/examples/tabs.justified.example.vue +2 -2
  76. package/src/components/base/tabs/tabs/examples/tabs.scrollable.example.vue +2 -2
  77. package/src/components/base/tabs/tabs/examples/tabs.styles_only.example.vue +4 -4
  78. package/src/components/base/tabs/tabs/tabs.md +8 -8
  79. package/src/components/base/tabs/tabs/tabs.stories.js +42 -40
  80. package/src/components/charts/single_stat/single_stat.vue +5 -1
  81. package/src/components/mixins/button_mixin.js +3 -3
  82. package/src/directives/safe_html/safe_html.js +1 -3
  83. package/src/directives/safe_html/safe_html.spec.js +1 -1
  84. package/src/scss/utilities.scss +8 -0
  85. package/src/scss/utility-mixins/sizing.scss +4 -0
  86. package/src/utils/charts/mock_data.js +0 -2
  87. package/src/utils/constants.js +7 -7
  88. package/src/utils/use_fake_date.js +2 -2
  89. package/src/utils/validation_utils.js +0 -2
  90. package/dist/components/base/accordion/accordion.documentation.js +0 -20
  91. package/dist/components/base/accordion/accordion_item.documentation.js +0 -22
  92. package/dist/components/base/accordion/examples/accordion.auto_collapse.example.js +0 -38
  93. package/dist/components/base/accordion/examples/accordion.basic.example.js +0 -38
  94. package/dist/components/base/accordion/examples/accordion.initial_visible.example.js +0 -38
  95. package/dist/components/base/accordion/examples/index.js +0 -25
  96. package/dist/components/base/card/examples/card.basic.example.js +0 -38
  97. package/dist/components/base/card/examples/card.headerfooter.example.js +0 -38
  98. package/dist/components/base/card/examples/index.js +0 -19
  99. package/dist/components/base/daterange_picker/daterange_picker.documentation.js +0 -29
  100. package/dist/components/base/daterange_picker/examples/daterange_picker.basic.example.js +0 -49
  101. package/dist/components/base/daterange_picker/examples/index.js +0 -12
  102. package/dist/components/base/form/form_checkbox/examples/form_checkbox.checked.example.js +0 -48
  103. package/dist/components/base/form/form_checkbox/examples/form_checkbox.checked_disabled.example.js +0 -48
  104. package/dist/components/base/form/form_checkbox/examples/form_checkbox.disabled.example.js +0 -38
  105. package/dist/components/base/form/form_checkbox/examples/form_checkbox.help.example.js +0 -38
  106. package/dist/components/base/form/form_checkbox/examples/form_checkbox.indeterminant.example.js +0 -38
  107. package/dist/components/base/form/form_checkbox/examples/form_checkbox.unchecked.example.js +0 -38
  108. package/dist/components/base/form/form_checkbox/examples/form_checkbox.values.example.js +0 -48
  109. package/dist/components/base/form/form_checkbox/examples/form_checkbox_group.options_array.example.js +0 -58
  110. package/dist/components/base/form/form_checkbox/examples/form_checkbox_group.slots.example.js +0 -38
  111. package/dist/components/base/form/form_checkbox/examples/index.js +0 -55
  112. package/src/components/base/accordion/accordion.documentation.js +0 -19
  113. package/src/components/base/accordion/accordion_item.documentation.js +0 -20
  114. package/src/components/base/accordion/examples/accordion.auto_collapse.example.vue +0 -16
  115. package/src/components/base/accordion/examples/accordion.basic.example.vue +0 -17
  116. package/src/components/base/accordion/examples/accordion.initial_visible.example.vue +0 -16
  117. package/src/components/base/accordion/examples/index.js +0 -29
  118. package/src/components/base/card/examples/card.basic.example.vue +0 -3
  119. package/src/components/base/card/examples/card.headerfooter.example.vue +0 -11
  120. package/src/components/base/card/examples/index.js +0 -22
  121. package/src/components/base/daterange_picker/daterange_picker.documentation.js +0 -34
  122. package/src/components/base/daterange_picker/examples/daterange_picker.basic.example.vue +0 -13
  123. package/src/components/base/daterange_picker/examples/index.js +0 -14
  124. package/src/components/base/form/form_checkbox/examples/form_checkbox.checked.example.vue +0 -13
  125. package/src/components/base/form/form_checkbox/examples/form_checkbox.checked_disabled.example.vue +0 -13
  126. package/src/components/base/form/form_checkbox/examples/form_checkbox.disabled.example.vue +0 -3
  127. package/src/components/base/form/form_checkbox/examples/form_checkbox.help.example.vue +0 -6
  128. package/src/components/base/form/form_checkbox/examples/form_checkbox.indeterminant.example.vue +0 -3
  129. package/src/components/base/form/form_checkbox/examples/form_checkbox.unchecked.example.vue +0 -3
  130. package/src/components/base/form/form_checkbox/examples/form_checkbox.values.example.vue +0 -15
  131. package/src/components/base/form/form_checkbox/examples/form_checkbox_group.options_array.example.vue +0 -27
  132. package/src/components/base/form/form_checkbox/examples/form_checkbox_group.slots.example.vue +0 -11
  133. package/src/components/base/form/form_checkbox/examples/index.js +0 -67
@@ -1,33 +1,6 @@
1
1
  import * as description from './card.md';
2
- import examples from './examples';
3
2
 
4
3
  export default {
5
4
  followsDesignSystem: true,
6
5
  description,
7
- examples,
8
- propsInfo: {
9
- headerClass: {
10
- additionalInfo: 'Additional CSS class(es) to be applied to the header',
11
- },
12
- bodyClass: {
13
- additionalInfo: 'Additional CSS class(es) to be applied to the body',
14
- },
15
- footerClass: {
16
- additionalInfo: 'Additional CSS class(es) to be applied to the footer',
17
- },
18
- },
19
- slots: [
20
- {
21
- name: 'header',
22
- description: "The card's header content",
23
- },
24
- {
25
- name: 'default',
26
- description: "The card's main content.",
27
- },
28
- {
29
- name: 'footer',
30
- description: "The card's footer content",
31
- },
32
- ],
33
6
  };
@@ -1,7 +1,3 @@
1
- # GlCard
2
-
3
- <!-- STORY -->
4
-
5
1
  Cards are a flexible component used to display content and actions in a variety of contexts.
6
2
  They are generally restricted to a single topic and it should be easy for users to scan relevant and
7
3
  actionable information. Content, such as images and text, should be positioned within them in a
@@ -1,25 +1,39 @@
1
- import { withKnobs } from '@storybook/addon-knobs';
2
- import { documentedStoriesOf } from '../../../../documentation/documented_stories';
3
1
  import readme from './card.md';
4
-
5
2
  import GlCard from './card.vue';
6
3
 
7
4
  const components = {
8
5
  GlCard,
9
6
  };
10
7
 
11
- documentedStoriesOf('base/card', readme)
12
- .addDecorator(withKnobs)
13
- .add('default card', () => ({
14
- components,
15
- template: `
16
- <gl-card>
17
- <template #header>
18
- <h3 class="gl-my-0 gl-font-weight-bold gl-font-lg">This is a custom header</h3>
19
- </template>
20
- Hello World
21
- <template #footer>
22
- <span>This is a custom footer</span>
23
- </template>
24
- </gl-card>`,
25
- }));
8
+ const template = `
9
+ <gl-card>
10
+ <template #header>
11
+ <h3 class="gl-my-0 gl-font-weight-bold gl-font-lg">This is a custom header</h3>
12
+ </template>
13
+ <template #default>
14
+ Hello World
15
+ </template>
16
+ <template #footer>
17
+ <span>This is a custom footer</span>
18
+ </template>
19
+ </gl-card>`;
20
+
21
+ const Template = () => ({
22
+ components,
23
+ template,
24
+ });
25
+
26
+ export const Default = Template.bind({});
27
+
28
+ export default {
29
+ title: 'base/card',
30
+ component: GlCard,
31
+ parameters: {
32
+ knobs: { disable: true },
33
+ docs: {
34
+ description: {
35
+ component: readme,
36
+ },
37
+ },
38
+ },
39
+ };
@@ -1,16 +1,25 @@
1
1
  <script>
2
2
  export default {
3
3
  props: {
4
+ /**
5
+ * Additional CSS class(es) to be applied to the header.
6
+ */
4
7
  headerClass: {
5
8
  type: [String, Object, Array],
6
9
  required: false,
7
10
  default: '',
8
11
  },
12
+ /**
13
+ * Additional CSS class(es) to be applied to the body.
14
+ */
9
15
  bodyClass: {
10
16
  type: [String, Object, Array],
11
17
  required: false,
12
18
  default: '',
13
19
  },
20
+ /**
21
+ * Additional CSS class(es) to be applied to the footer.
22
+ */
14
23
  footerClass: {
15
24
  type: [String, Object, Array],
16
25
  required: false,
@@ -23,12 +32,15 @@ export default {
23
32
  <template>
24
33
  <div class="gl-card">
25
34
  <div v-if="this.$slots.header" class="gl-card-header" :class="headerClass">
35
+ <!-- @slot The card's header content. -->
26
36
  <slot name="header"></slot>
27
37
  </div>
28
38
  <div class="gl-card-body" :class="bodyClass">
39
+ <!-- @slot The card's main content. -->
29
40
  <slot></slot>
30
41
  </div>
31
42
  <div v-if="this.$slots.footer" class="gl-card-footer" :class="footerClass">
43
+ <!-- @slot The card's footer content. -->
32
44
  <slot name="footer"></slot>
33
45
  </div>
34
46
  </div>
@@ -1,6 +1,6 @@
1
1
  import { withKnobs, date } from '@storybook/addon-knobs';
2
2
  import { documentedStoriesOf } from '../../../../documentation/documented_stories';
3
- import useFakeDate from '../../../utils/use_fake_date';
3
+ import { useFakeDate } from '../../../utils/use_fake_date';
4
4
  import readme from './datepicker.md';
5
5
  import GlDatepicker from './datepicker.vue';
6
6
 
@@ -1,7 +1,3 @@
1
- # Daterange Picker
2
-
3
- <!-- STORY -->
4
-
5
1
  ## Usage
6
2
 
7
3
  Daterange picker allows users to choose a date range by manually typing the start/end date
@@ -1,107 +1,170 @@
1
- import { withKnobs, date, number, boolean, text } from '@storybook/addon-knobs';
2
- import { documentedStoriesOf } from '../../../../documentation/documented_stories';
3
1
  import readme from './daterange_picker.md';
4
2
  import GlDaterangePicker from './daterange_picker.vue';
5
3
 
6
- const currentYear = 2020;
4
+ const currentYear = 2021;
5
+ const defaultStartDateVal = new Date(currentYear, 9, 4);
6
+ const defaultEndDateVal = new Date(currentYear, 9, 24);
7
+ const defaultMinDateVal = new Date(currentYear, 9, 1);
8
+ const defaultMaxDateVal = new Date(currentYear, 11, 30);
7
9
 
8
- const defaultStartDate = new Date(currentYear, 7, 27);
9
- const defaultEndDate = new Date(currentYear, 7, 28);
10
- const defaultMinDate = new Date(currentYear, 0, 1);
11
- const defaultMaxDate = new Date(currentYear, 11, 31);
10
+ const defaultValue = (prop) => GlDaterangePicker.props[prop].default;
12
11
 
13
- const template = (slot = '') => `
14
- <gl-daterange-picker
15
- class="d-flex"
16
- :default-min-date="defaultMinDate"
17
- :default-max-date="defaultMaxDate"
18
- :default-start-date="defaultStartDate"
19
- :default-end-date="defaultEndDate"
20
- :max-date-range="maxDateRange"
21
- :same-day-selection="sameDaySelection"
22
- :tooltip="tooltip"
23
- v-model="value"
24
- >${slot}</gl-daterange-picker>`;
12
+ const generateProps = ({
13
+ fromLabel = defaultValue('fromLabel'),
14
+ toLabel = defaultValue('toLabel'),
15
+ defaultMinDate = defaultMinDateVal,
16
+ defaultMaxDate = defaultMaxDateVal,
17
+ defaultStartDate = defaultStartDateVal,
18
+ defaultEndDate = defaultEndDateVal,
19
+ maxDateRange = 0,
20
+ sameDaySelection = false,
21
+ tooltip = '',
22
+ startPickerClass = 'gl-text-blue-500',
23
+ endPickerClass = 'gl-text-red-500',
24
+ labelClass = 'gl-font-style-italic',
25
+ theme = defaultValue('theme'),
26
+ } = {}) => ({
27
+ defaultMinDate: new Date(defaultMinDate),
28
+ defaultMaxDate: new Date(defaultMaxDate),
29
+ defaultStartDate: new Date(defaultStartDate),
30
+ defaultEndDate: new Date(defaultEndDate),
31
+ maxDateRange,
32
+ sameDaySelection,
33
+ tooltip,
34
+ fromLabel,
35
+ toLabel,
36
+ startPickerClass,
37
+ endPickerClass,
38
+ labelClass,
39
+ theme,
40
+ });
25
41
 
26
- function dateTypeKnob(name, defaultValue) {
27
- return new Date(date(name, defaultValue));
28
- }
29
-
30
- function generateProps(props = {}) {
31
- return {
32
- defaultMinDate: {
33
- type: Date,
34
- default: dateTypeKnob('defaultMinDate', defaultMinDate),
42
+ const Template = (template, props) => ({
43
+ components: { GlDaterangePicker },
44
+ props: Object.keys(props),
45
+ data() {
46
+ return {
47
+ defaultMinDateVal: this.defaultMinDate,
48
+ defaultMaxDateVal: this.defaultMaxDate,
49
+ defaultStartDateVal: this.defaultStartDate,
50
+ defaultEndDateVal: this.defaultEndDate,
51
+ };
52
+ },
53
+ watch: {
54
+ defaultMinDate(val) {
55
+ this.defaultMinDateVal = new Date(val);
35
56
  },
36
- defaultMaxDate: {
37
- type: Date,
38
- default: dateTypeKnob('defaultMaxDate', defaultMaxDate),
57
+ defaultMaxDate(val) {
58
+ this.defaultMaxDateVal = new Date(val);
39
59
  },
40
- defaultStartDate: {
41
- type: Date,
42
- default: dateTypeKnob('startDate', defaultStartDate),
60
+ },
61
+ template,
62
+ });
63
+
64
+ const defaultTemplate = `
65
+ <gl-daterange-picker
66
+ class="gl-display-flex"
67
+ :default-min-date="defaultMinDateVal"
68
+ :default-max-date="defaultMaxDateVal"
69
+ :default-start-date="defaultStartDate"
70
+ :default-end-date="defaultEndDate"
71
+ :max-date-range="maxDateRange"
72
+ :same-day-selection="sameDaySelection"
73
+ :tooltip="tooltip"
74
+ :from-label="fromLabel"
75
+ :to-label="toLabel"
76
+ :start-picker-class="startPickerClass"
77
+ :end-picker-class="endPickerClass"
78
+ :label-class="labelClass"
79
+ :theme="theme"
80
+ /> `;
81
+ export const Default = Template.bind({}, defaultTemplate);
82
+ Default.args = generateProps();
83
+
84
+ const withDatesSelectedAndTooltipTemplate = `<gl-daterange-picker
85
+ class="gl-display-flex"
86
+ :default-min-date="defaultMinDateVal"
87
+ :default-max-date="defaultMaxDateVal"
88
+ :default-start-date="defaultStartDate"
89
+ :default-end-date="defaultEndDate"
90
+ :max-date-range="maxDateRange"
91
+ :same-day-selection="sameDaySelection"
92
+ :tooltip="tooltip"
93
+ :from-label="fromLabel"
94
+ :to-label="toLabel"
95
+ :start-picker-class="startPickerClass"
96
+ :end-picker-class="endPickerClass"
97
+ :label-class="labelClass"
98
+ :theme="theme">
99
+ <template #default="{ daysSelected }">
100
+ <span v-if="daysSelected === 1">{{ daysSelected }} day selected</span>
101
+ <span v-else-if="daysSelected > -1">{{ daysSelected }} days selected</span>
102
+ <span v-else>No days selected</span>
103
+ </template>
104
+ </gl-daterange-picker>`;
105
+ export const WithDatesSelectedAndTooltip = Template.bind({}, withDatesSelectedAndTooltipTemplate);
106
+ WithDatesSelectedAndTooltip.args = generateProps({
107
+ tooltip: 'Date range limited to 31 days',
108
+ maxDateRange: 31,
109
+ });
110
+
111
+ export default {
112
+ followsDesignSystem: true,
113
+ title: 'base/daterange-picker',
114
+ component: GlDaterangePicker,
115
+ parameters: {
116
+ knobs: { disable: true },
117
+ docs: {
118
+ description: {
119
+ component: readme,
120
+ },
43
121
  },
44
- defaultEndDate: {
45
- type: Date,
46
- default: dateTypeKnob('endDate', defaultEndDate),
122
+ },
123
+ argTypes: {
124
+ i18n: {
125
+ control: {
126
+ disable: true,
127
+ },
47
128
  },
48
- maxDateRange: {
49
- type: Number,
50
- default: number('maxDateRange', 0),
129
+ startPickerTarget: {
130
+ control: {
131
+ disable: true,
132
+ },
51
133
  },
52
- sameDaySelection: {
53
- type: Boolean,
54
- default: boolean('sameDaySelection', false),
134
+ startPickerContainer: {
135
+ control: {
136
+ disable: true,
137
+ },
55
138
  },
56
- tooltip: {
57
- default: text('tooltip', ''),
139
+ endPickerTarget: {
140
+ control: {
141
+ disable: true,
142
+ },
58
143
  },
59
- ...props,
60
- };
61
- }
62
-
63
- documentedStoriesOf('base/daterange-picker', readme)
64
- .addDecorator(withKnobs)
65
- .add('default', () => ({
66
- props: generateProps(),
67
- components: {
68
- GlDaterangePicker,
144
+ endPickerContainer: {
145
+ control: {
146
+ disable: true,
147
+ },
69
148
  },
70
- data() {
71
- return {
72
- value: {
73
- startDate: defaultStartDate,
74
- endDate: defaultEndDate,
75
- },
76
- };
149
+ defaultMinDate: {
150
+ control: {
151
+ type: 'date',
152
+ },
77
153
  },
78
- template: template(),
79
- }))
80
- .add('with days selected and tooltip', () => ({
81
- props: generateProps({
82
- maxDateRange: {
83
- default: number('maxDateRange', 31),
154
+ defaultMaxDate: {
155
+ control: {
156
+ type: 'date',
84
157
  },
85
- tooltip: {
86
- default: text('tooltip', 'Date range limited to 31 days'),
158
+ },
159
+ defaultStartDate: {
160
+ control: {
161
+ disable: true,
87
162
  },
88
- }),
89
- components: {
90
- GlDaterangePicker,
91
163
  },
92
- data() {
93
- return {
94
- value: {
95
- startDate: defaultStartDate,
96
- endDate: defaultEndDate,
97
- },
98
- };
164
+ defaultEndDate: {
165
+ control: {
166
+ disable: true,
167
+ },
99
168
  },
100
- template: template(`
101
- <template #default="{ daysSelected }">
102
- <span v-if="daysSelected === 1">{{ daysSelected }} day selected</span>
103
- <span v-else-if="daysSelected > -1">{{ daysSelected }} days selected</span>
104
- <span v-else>No days selected</span>
105
- </template>
106
- `),
107
- }));
169
+ },
170
+ };
@@ -185,8 +185,45 @@ export default {
185
185
  onEndDateSelected(endDate) {
186
186
  this.openToCalendar = false;
187
187
  this.endDate = endDate;
188
+ /**
189
+ * Emitted when start or end date selected with {startDate, endDate} value
190
+ *
191
+ * @event input
192
+ * */
188
193
  this.$emit('input', { startDate: this.startDate, endDate });
189
194
  },
195
+ onStartPickerOpen() {
196
+ /**
197
+ * Emitted when the primary action button is clicked.
198
+ *
199
+ * @event start-picker-open
200
+ * */
201
+ this.$emit('start-picker-open');
202
+ },
203
+ onStartPickerClose() {
204
+ /**
205
+ * Emitted when the start date datepicker is hidden.
206
+ *
207
+ * @event start-picker-close
208
+ * */
209
+ this.$emit('start-picker-close');
210
+ },
211
+ onEndPickerOpen() {
212
+ /**
213
+ * Emitted when the end date datepicker becomes visible.
214
+ *
215
+ * @event end-picker-open
216
+ * */
217
+ this.$emit('end-picker-open');
218
+ },
219
+ onEndPickerClose() {
220
+ /**
221
+ * Emitted when the end date datepicker is hidden.
222
+ *
223
+ * @event end-picker-close
224
+ * */
225
+ this.$emit('end-picker-close');
226
+ },
190
227
  },
191
228
  };
192
229
  </script>
@@ -195,6 +232,7 @@ export default {
195
232
  <div class="gl-daterange-picker">
196
233
  <div :class="startPickerClass">
197
234
  <label :class="labelClass">{{ fromLabel }}</label>
235
+
198
236
  <gl-datepicker
199
237
  v-model="startDate"
200
238
  :min-date="defaultMinDate"
@@ -206,8 +244,8 @@ export default {
206
244
  :target="startPickerTarget"
207
245
  :container="startPickerContainer"
208
246
  @input="onStartDateSelected"
209
- @open="$emit('start-picker-open')"
210
- @close="$emit('start-picker-close')"
247
+ @open="onStartPickerOpen"
248
+ @close="onStartPickerClose"
211
249
  />
212
250
  </div>
213
251
  <div :class="endPickerClass">
@@ -226,8 +264,8 @@ export default {
226
264
  :start-opened="openToCalendar"
227
265
  :default-date="toCalendarDefaultDate"
228
266
  @input="onEndDateSelected"
229
- @open="$emit('end-picker-open')"
230
- @close="$emit('end-picker-close')"
267
+ @open="onEndPickerOpen"
268
+ @close="onEndPickerClose"
231
269
  />
232
270
  </div>
233
271
  <div
@@ -235,6 +273,7 @@ export default {
235
273
  data-testid="daterange-picker-indicator"
236
274
  class="gl-display-flex gl-flex-direction-row gl-align-items-center gl-text-gray-500 gl-ml-2"
237
275
  >
276
+ <!-- @slot Content to display for days selected. The value is -1 when no date range is selected.-->
238
277
  <slot v-bind="{ daysSelected: numberOfDays }"></slot>
239
278
  <gl-icon
240
279
  v-if="tooltip"
@@ -11,9 +11,9 @@ import {
11
11
  GlDropdownForm,
12
12
  } from '../../../../index';
13
13
  import {
14
- newButtonCategoryOptions,
14
+ buttonCategoryOptions,
15
15
  newDropdownVariantOptions,
16
- newButtonSizeOptions,
16
+ buttonSizeOptions,
17
17
  } from '../../../utils/constants';
18
18
  import readme from './dropdown.md';
19
19
 
@@ -53,7 +53,7 @@ function generateProps({
53
53
  const props = {
54
54
  category: {
55
55
  type: String,
56
- default: select('category', newButtonCategoryOptions, category),
56
+ default: select('category', buttonCategoryOptions, category),
57
57
  },
58
58
  variant: {
59
59
  type: String,
@@ -61,7 +61,7 @@ function generateProps({
61
61
  },
62
62
  size: {
63
63
  type: String,
64
- default: select('size', newButtonSizeOptions, size),
64
+ default: select('size', buttonSizeOptions, size),
65
65
  },
66
66
  block: {
67
67
  type: Boolean,
@@ -196,7 +196,7 @@ documentedStoriesOf('base/dropdown', readme)
196
196
  .add('secondary', () => ({
197
197
  props: generateProps({
198
198
  text: 'Some dropdown',
199
- category: newButtonCategoryOptions.secondary,
199
+ category: buttonCategoryOptions.secondary,
200
200
  variant: newDropdownVariantOptions.confirm,
201
201
  }),
202
202
  components,
@@ -2,11 +2,11 @@
2
2
  import { BDropdown } from 'bootstrap-vue';
3
3
  import { isVisible, selectAll } from 'bootstrap-vue/src/utils/dom';
4
4
  import {
5
- newButtonCategoryOptions,
5
+ buttonCategoryOptions,
6
6
  newDropdownVariantOptions,
7
- newButtonSizeOptions,
7
+ buttonSizeOptions,
8
8
  } from '../../../utils/constants';
9
- import ButtonMixin from '../../mixins/button_mixin';
9
+ import { ButtonMixin } from '../../mixins/button_mixin';
10
10
  import GlButton from '../button/button.vue';
11
11
  import GlIcon from '../icon/icon.vue';
12
12
  import GlLoadingIcon from '../loading_icon/loading_icon.vue';
@@ -100,8 +100,8 @@ export default {
100
100
  category: {
101
101
  type: String,
102
102
  required: false,
103
- default: newButtonCategoryOptions.primary,
104
- validator: (value) => Object.keys(newButtonCategoryOptions).includes(value),
103
+ default: buttonCategoryOptions.primary,
104
+ validator: (value) => Object.keys(buttonCategoryOptions).includes(value),
105
105
  },
106
106
  variant: {
107
107
  type: String,
@@ -112,8 +112,8 @@ export default {
112
112
  size: {
113
113
  type: String,
114
114
  required: false,
115
- default: newButtonSizeOptions.medium,
116
- validator: (value) => Object.keys(newButtonSizeOptions).includes(value),
115
+ default: buttonSizeOptions.medium,
116
+ validator: (value) => Object.keys(buttonSizeOptions).includes(value),
117
117
  },
118
118
  icon: {
119
119
  type: String,
@@ -163,10 +163,10 @@ export default {
163
163
  'gl-button': true,
164
164
  'gl-dropdown-toggle': true,
165
165
  [`btn-${this.variant}-secondary`]:
166
- this.category === newButtonCategoryOptions.secondary ||
167
- (this.category === newButtonCategoryOptions.tertiary && this.split),
166
+ this.category === buttonCategoryOptions.secondary ||
167
+ (this.category === buttonCategoryOptions.tertiary && this.split),
168
168
  [`btn-${this.variant}-tertiary`]:
169
- this.category === newButtonCategoryOptions.tertiary && !this.split,
169
+ this.category === buttonCategoryOptions.tertiary && !this.split,
170
170
  'dropdown-icon-only': this.isIconOnly,
171
171
  'dropdown-icon-text': this.isIconWithText,
172
172
  },
@@ -180,8 +180,8 @@ export default {
180
180
  'split-content-button': Boolean(this.text),
181
181
  'icon-split-content-button': Boolean(this.icon),
182
182
  [`btn-${this.variant}-secondary`]:
183
- this.category === newButtonCategoryOptions.secondary ||
184
- this.category === newButtonCategoryOptions.tertiary,
183
+ this.category === buttonCategoryOptions.secondary ||
184
+ this.category === buttonCategoryOptions.tertiary,
185
185
  },
186
186
  ];
187
187
  },
@@ -1,21 +1,6 @@
1
- import examples from './examples';
2
1
  import description from './form_checkbox.md';
3
2
 
4
3
  export default {
5
4
  description,
6
- examples,
7
- bootstrapComponent: 'b-form-checkbox',
8
5
  followsDesignSystem: true,
9
- events: [
10
- {
11
- event: 'input',
12
- description: 'Emitted when checked state changes',
13
- args: [
14
- {
15
- arg: 'checked',
16
- description: 'Whether the checkbox is checked',
17
- },
18
- ],
19
- },
20
- ],
21
6
  };
@@ -1,8 +1,6 @@
1
- # Form Checkbox
2
-
3
1
  Form checkbox groups for general use inside forms.
4
2
 
5
3
  ## Stacked
6
4
 
7
- By default, the GitLab Design guide mandates the `<gl-form-checkbox-group>` be `stacked` by default
8
- and is non-changeable at this time.
5
+ By default, the GitLab Design guide mandates the `<gl-form-checkbox-group>` be `stacked` and is
6
+ non-changeable at this time.