@gitlab/ui 32.17.0 → 32.20.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 +28 -0
- package/dist/components/base/accordion/accordion.js +7 -0
- package/dist/components/base/accordion/accordion_item.js +11 -0
- package/dist/components/base/alert/alert.js +3 -3
- package/dist/components/base/button/button.documentation.js +17 -1
- package/dist/components/base/button/button.js +10 -10
- package/dist/components/base/card/card.documentation.js +2 -26
- package/dist/components/base/card/card.js +11 -0
- package/dist/components/base/daterange_picker/daterange_picker.js +43 -1
- package/dist/components/base/dropdown/dropdown.js +9 -9
- package/dist/components/base/form/form_checkbox/form_checkbox.documentation.js +2 -14
- package/dist/components/base/form/form_checkbox/form_checkbox.js +21 -1
- package/dist/components/base/form/form_checkbox/form_checkbox_group.js +2 -2
- package/dist/components/base/form/form_input_group/form_input_group.js +1 -1
- package/dist/components/base/form/form_input_group/form_input_group_mixin.js +2 -2
- package/dist/components/base/form/form_radio_group/form_radio_group.js +2 -2
- package/dist/components/base/tabs/tabs/examples/tabs.basic.example.js +1 -1
- package/dist/components/base/tabs/tabs/examples/tabs.counterbadges.example.js +1 -1
- package/dist/components/base/tabs/tabs/examples/tabs.custom_title.example.js +1 -1
- package/dist/components/base/tabs/tabs/examples/tabs.disabled.example.js +1 -1
- package/dist/components/base/tabs/tabs/examples/tabs.justified.example.js +1 -1
- package/dist/components/base/tabs/tabs/examples/tabs.scrollable.example.js +2 -2
- package/dist/components/base/tabs/tabs/examples/tabs.styles_only.example.js +1 -1
- package/dist/components/base/tabs/tabs/tabs.documentation.js +1 -1
- package/dist/components/mixins/button_mixin.js +4 -4
- package/dist/directives/safe_html/safe_html.js +1 -1
- package/dist/index.css +2 -2
- package/dist/index.css.map +1 -1
- package/dist/index.js +1 -1
- package/dist/utility_classes.css +1 -1
- package/dist/utility_classes.css.map +1 -1
- package/dist/utils/charts/mock_data.js +0 -2
- package/dist/utils/constants.js +8 -8
- package/dist/utils/use_fake_date.js +4 -4
- package/dist/utils/validation_utils.js +0 -2
- package/documentation/components_documentation.js +0 -3
- package/documentation/documented_stories.js +5 -0
- package/index.js +1 -1
- package/package.json +12 -12
- package/src/components/base/accordion/accordion.md +0 -4
- package/src/components/base/accordion/accordion.stories.js +58 -20
- package/src/components/base/accordion/accordion.vue +7 -0
- package/src/components/base/accordion/accordion_item.md +0 -4
- package/src/components/base/accordion/accordion_item.stories.js +56 -11
- package/src/components/base/accordion/accordion_item.vue +10 -0
- package/src/components/base/alert/alert.spec.js +3 -3
- package/src/components/base/alert/alert.vue +3 -3
- package/src/components/base/badge/badge.scss +1 -0
- package/src/components/base/button/button.documentation.js +18 -0
- package/src/components/base/button/button.stories.js +13 -13
- package/src/components/base/button/button.vue +15 -15
- package/src/components/base/card/card.documentation.js +0 -27
- package/src/components/base/card/card.md +0 -4
- package/src/components/base/card/card.stories.js +32 -18
- package/src/components/base/card/card.vue +12 -0
- package/src/components/base/datepicker/datepicker.scss +9 -0
- package/src/components/base/datepicker/datepicker.stories.js +1 -1
- package/src/components/base/daterange_picker/daterange_picker.md +0 -4
- package/src/components/base/daterange_picker/daterange_picker.stories.js +151 -88
- package/src/components/base/daterange_picker/daterange_picker.vue +43 -4
- package/src/components/base/dropdown/dropdown.stories.js +5 -5
- package/src/components/base/dropdown/dropdown.vue +12 -12
- package/src/components/base/form/form_checkbox/form_checkbox.documentation.js +0 -15
- package/src/components/base/form/form_checkbox/form_checkbox.md +2 -4
- package/src/components/base/form/form_checkbox/form_checkbox.stories.js +31 -39
- package/src/components/base/form/form_checkbox/form_checkbox.vue +21 -6
- package/src/components/base/form/form_checkbox/form_checkbox_group.vue +1 -1
- package/src/components/base/form/form_input_group/form_input_group.vue +1 -1
- package/src/components/base/form/form_input_group/form_input_group_mixin.js +1 -1
- package/src/components/base/form/form_radio_group/form_radio_group.vue +1 -1
- package/src/components/base/tabs/tabs/examples/tabs.basic.example.vue +2 -2
- package/src/components/base/tabs/tabs/examples/tabs.counterbadges.example.vue +9 -6
- package/src/components/base/tabs/tabs/examples/tabs.custom_title.example.vue +3 -3
- package/src/components/base/tabs/tabs/examples/tabs.disabled.example.vue +3 -3
- package/src/components/base/tabs/tabs/examples/tabs.justified.example.vue +2 -2
- package/src/components/base/tabs/tabs/examples/tabs.scrollable.example.vue +2 -2
- package/src/components/base/tabs/tabs/examples/tabs.styles_only.example.vue +4 -4
- package/src/components/base/tabs/tabs/tabs.md +8 -8
- package/src/components/base/tabs/tabs/tabs.stories.js +42 -40
- package/src/components/mixins/button_mixin.js +3 -3
- package/src/directives/safe_html/safe_html.js +1 -3
- package/src/directives/safe_html/safe_html.spec.js +1 -1
- package/src/scss/utilities.scss +8 -0
- package/src/scss/utility-mixins/sizing.scss +4 -0
- package/src/utils/charts/mock_data.js +0 -2
- package/src/utils/constants.js +7 -7
- package/src/utils/use_fake_date.js +2 -2
- package/src/utils/validation_utils.js +0 -2
- package/dist/components/base/accordion/accordion.documentation.js +0 -20
- package/dist/components/base/accordion/accordion_item.documentation.js +0 -22
- package/dist/components/base/accordion/examples/accordion.auto_collapse.example.js +0 -38
- package/dist/components/base/accordion/examples/accordion.basic.example.js +0 -38
- package/dist/components/base/accordion/examples/accordion.initial_visible.example.js +0 -38
- package/dist/components/base/accordion/examples/index.js +0 -25
- package/dist/components/base/card/examples/card.basic.example.js +0 -38
- package/dist/components/base/card/examples/card.headerfooter.example.js +0 -38
- package/dist/components/base/card/examples/index.js +0 -19
- package/dist/components/base/daterange_picker/daterange_picker.documentation.js +0 -29
- package/dist/components/base/daterange_picker/examples/daterange_picker.basic.example.js +0 -49
- package/dist/components/base/daterange_picker/examples/index.js +0 -12
- package/dist/components/base/form/form_checkbox/examples/form_checkbox.checked.example.js +0 -48
- package/dist/components/base/form/form_checkbox/examples/form_checkbox.checked_disabled.example.js +0 -48
- package/dist/components/base/form/form_checkbox/examples/form_checkbox.disabled.example.js +0 -38
- package/dist/components/base/form/form_checkbox/examples/form_checkbox.help.example.js +0 -38
- package/dist/components/base/form/form_checkbox/examples/form_checkbox.indeterminant.example.js +0 -38
- package/dist/components/base/form/form_checkbox/examples/form_checkbox.unchecked.example.js +0 -38
- package/dist/components/base/form/form_checkbox/examples/form_checkbox.values.example.js +0 -48
- package/dist/components/base/form/form_checkbox/examples/form_checkbox_group.options_array.example.js +0 -58
- package/dist/components/base/form/form_checkbox/examples/form_checkbox_group.slots.example.js +0 -38
- package/dist/components/base/form/form_checkbox/examples/index.js +0 -55
- package/src/components/base/accordion/accordion.documentation.js +0 -19
- package/src/components/base/accordion/accordion_item.documentation.js +0 -20
- package/src/components/base/accordion/examples/accordion.auto_collapse.example.vue +0 -16
- package/src/components/base/accordion/examples/accordion.basic.example.vue +0 -17
- package/src/components/base/accordion/examples/accordion.initial_visible.example.vue +0 -16
- package/src/components/base/accordion/examples/index.js +0 -29
- package/src/components/base/card/examples/card.basic.example.vue +0 -3
- package/src/components/base/card/examples/card.headerfooter.example.vue +0 -11
- package/src/components/base/card/examples/index.js +0 -22
- package/src/components/base/daterange_picker/daterange_picker.documentation.js +0 -34
- package/src/components/base/daterange_picker/examples/daterange_picker.basic.example.vue +0 -13
- package/src/components/base/daterange_picker/examples/index.js +0 -14
- package/src/components/base/form/form_checkbox/examples/form_checkbox.checked.example.vue +0 -13
- package/src/components/base/form/form_checkbox/examples/form_checkbox.checked_disabled.example.vue +0 -13
- package/src/components/base/form/form_checkbox/examples/form_checkbox.disabled.example.vue +0 -3
- package/src/components/base/form/form_checkbox/examples/form_checkbox.help.example.vue +0 -6
- package/src/components/base/form/form_checkbox/examples/form_checkbox.indeterminant.example.vue +0 -3
- package/src/components/base/form/form_checkbox/examples/form_checkbox.unchecked.example.vue +0 -3
- package/src/components/base/form/form_checkbox/examples/form_checkbox.values.example.vue +0 -15
- package/src/components/base/form/form_checkbox/examples/form_checkbox_group.options_array.example.vue +0 -27
- package/src/components/base/form/form_checkbox/examples/form_checkbox_group.slots.example.vue +0 -11
- 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
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
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>
|
|
@@ -72,6 +72,15 @@ $gl-datepicker-width: $grid-size * 30;
|
|
|
72
72
|
@include gl-bg-size-100p;
|
|
73
73
|
@include gl-w-5;
|
|
74
74
|
@include gl-h-5;
|
|
75
|
+
|
|
76
|
+
&:hover {
|
|
77
|
+
@include gl-rounded-small;
|
|
78
|
+
@include gl-bg-gray-50;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
&.is-disabled {
|
|
82
|
+
@include gl-cursor-not-allowed;
|
|
83
|
+
}
|
|
75
84
|
}
|
|
76
85
|
|
|
77
86
|
.pika-next {
|
|
@@ -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,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 =
|
|
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
|
|
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
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
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
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
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
|
-
|
|
38
|
-
default: dateTypeKnob('defaultMaxDate', defaultMaxDate),
|
|
57
|
+
defaultMaxDate(val) {
|
|
58
|
+
this.defaultMaxDateVal = new Date(val);
|
|
39
59
|
},
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
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
|
-
|
|
45
|
-
|
|
46
|
-
|
|
122
|
+
},
|
|
123
|
+
argTypes: {
|
|
124
|
+
i18n: {
|
|
125
|
+
control: {
|
|
126
|
+
disable: true,
|
|
127
|
+
},
|
|
47
128
|
},
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
129
|
+
startPickerTarget: {
|
|
130
|
+
control: {
|
|
131
|
+
disable: true,
|
|
132
|
+
},
|
|
51
133
|
},
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
134
|
+
startPickerContainer: {
|
|
135
|
+
control: {
|
|
136
|
+
disable: true,
|
|
137
|
+
},
|
|
55
138
|
},
|
|
56
|
-
|
|
57
|
-
|
|
139
|
+
endPickerTarget: {
|
|
140
|
+
control: {
|
|
141
|
+
disable: true,
|
|
142
|
+
},
|
|
58
143
|
},
|
|
59
|
-
|
|
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
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
endDate: defaultEndDate,
|
|
75
|
-
},
|
|
76
|
-
};
|
|
149
|
+
defaultMinDate: {
|
|
150
|
+
control: {
|
|
151
|
+
type: 'date',
|
|
152
|
+
},
|
|
77
153
|
},
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
props: generateProps({
|
|
82
|
-
maxDateRange: {
|
|
83
|
-
default: number('maxDateRange', 31),
|
|
154
|
+
defaultMaxDate: {
|
|
155
|
+
control: {
|
|
156
|
+
type: 'date',
|
|
84
157
|
},
|
|
85
|
-
|
|
86
|
-
|
|
158
|
+
},
|
|
159
|
+
defaultStartDate: {
|
|
160
|
+
control: {
|
|
161
|
+
disable: true,
|
|
87
162
|
},
|
|
88
|
-
}),
|
|
89
|
-
components: {
|
|
90
|
-
GlDaterangePicker,
|
|
91
163
|
},
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
endDate: defaultEndDate,
|
|
97
|
-
},
|
|
98
|
-
};
|
|
164
|
+
defaultEndDate: {
|
|
165
|
+
control: {
|
|
166
|
+
disable: true,
|
|
167
|
+
},
|
|
99
168
|
},
|
|
100
|
-
|
|
101
|
-
|
|
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="
|
|
210
|
-
@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="
|
|
230
|
-
@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
|
-
|
|
14
|
+
buttonCategoryOptions,
|
|
15
15
|
newDropdownVariantOptions,
|
|
16
|
-
|
|
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',
|
|
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',
|
|
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:
|
|
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
|
-
|
|
5
|
+
buttonCategoryOptions,
|
|
6
6
|
newDropdownVariantOptions,
|
|
7
|
-
|
|
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:
|
|
104
|
-
validator: (value) => Object.keys(
|
|
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:
|
|
116
|
-
validator: (value) => Object.keys(
|
|
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 ===
|
|
167
|
-
(this.category ===
|
|
166
|
+
this.category === buttonCategoryOptions.secondary ||
|
|
167
|
+
(this.category === buttonCategoryOptions.tertiary && this.split),
|
|
168
168
|
[`btn-${this.variant}-tertiary`]:
|
|
169
|
-
this.category ===
|
|
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 ===
|
|
184
|
-
this.category ===
|
|
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`
|
|
8
|
-
|
|
5
|
+
By default, the GitLab Design guide mandates the `<gl-form-checkbox-group>` be `stacked` and is
|
|
6
|
+
non-changeable at this time.
|