@gitlab/ui 71.8.1 → 71.9.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 +9 -0
- package/dist/components/base/daterange_picker/daterange_picker.js +6 -1
- package/dist/components/base/filtered_search/filtered_search_token.js +2 -2
- 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/dist/utility_classes.css +1 -1
- package/dist/utility_classes.css.map +1 -1
- package/package.json +1 -1
- package/src/components/base/daterange_picker/daterange_picker.spec.js +18 -0
- package/src/components/base/daterange_picker/daterange_picker.stories.js +4 -0
- package/src/components/base/daterange_picker/daterange_picker.vue +6 -0
- package/src/components/base/filtered_search/filtered_search_token.spec.js +15 -8
- package/src/components/base/filtered_search/filtered_search_token.vue +2 -2
- package/src/scss/utilities.scss +8 -0
- package/src/scss/utility-mixins/position.scss +4 -0
package/package.json
CHANGED
|
@@ -286,4 +286,22 @@ describe('Daterange Picker', () => {
|
|
|
286
286
|
|
|
287
287
|
expect(wrapper.find(`[data-testid="${testid}"]`).classes()).toContain(value);
|
|
288
288
|
});
|
|
289
|
+
|
|
290
|
+
describe('startOpened', () => {
|
|
291
|
+
beforeEach(() => {
|
|
292
|
+
factory({ startOpened: true });
|
|
293
|
+
});
|
|
294
|
+
it('sets start-opened on the from date picker', () => {
|
|
295
|
+
expect(findStartPicker().props('startOpened')).toBe(true);
|
|
296
|
+
});
|
|
297
|
+
|
|
298
|
+
it('defaults to false', () => {
|
|
299
|
+
factory();
|
|
300
|
+
expect(findStartPicker().props('startOpened')).toBe(false);
|
|
301
|
+
});
|
|
302
|
+
|
|
303
|
+
it('does not set start-opened on the end date picker', () => {
|
|
304
|
+
expect(findEndPicker().props('startOpened')).toBe(false);
|
|
305
|
+
});
|
|
306
|
+
});
|
|
289
307
|
});
|
|
@@ -25,6 +25,7 @@ const generateProps = ({
|
|
|
25
25
|
endPickerClass,
|
|
26
26
|
labelClass,
|
|
27
27
|
theme = defaultValue('theme'),
|
|
28
|
+
startOpened = false,
|
|
28
29
|
} = {}) => ({
|
|
29
30
|
defaultMinDate: new Date(defaultMinDate),
|
|
30
31
|
defaultMaxDate: new Date(defaultMaxDate),
|
|
@@ -39,6 +40,7 @@ const generateProps = ({
|
|
|
39
40
|
endPickerClass,
|
|
40
41
|
labelClass,
|
|
41
42
|
theme,
|
|
43
|
+
startOpened,
|
|
42
44
|
});
|
|
43
45
|
|
|
44
46
|
const Template = (template, props) => ({
|
|
@@ -79,6 +81,7 @@ const defaultTemplate = `
|
|
|
79
81
|
:end-picker-class="endPickerClass"
|
|
80
82
|
:label-class="labelClass"
|
|
81
83
|
:theme="theme"
|
|
84
|
+
:start-opened="startOpened"
|
|
82
85
|
/> `;
|
|
83
86
|
export const Default = Template.bind({}, defaultTemplate);
|
|
84
87
|
Default.args = generateProps();
|
|
@@ -97,6 +100,7 @@ const withDatesSelectedAndTooltipTemplate = `<gl-daterange-picker
|
|
|
97
100
|
:start-picker-class="startPickerClass"
|
|
98
101
|
:end-picker-class="endPickerClass"
|
|
99
102
|
:label-class="labelClass"
|
|
103
|
+
:start-opened="startOpened"
|
|
100
104
|
:theme="theme">
|
|
101
105
|
<template #default="{ daysSelected }">
|
|
102
106
|
<span v-if="daysSelected === 1">{{ daysSelected }} day selected</span>
|
|
@@ -128,6 +128,11 @@ export default {
|
|
|
128
128
|
required: false,
|
|
129
129
|
default: '',
|
|
130
130
|
},
|
|
131
|
+
startOpened: {
|
|
132
|
+
type: Boolean,
|
|
133
|
+
required: false,
|
|
134
|
+
default: false,
|
|
135
|
+
},
|
|
131
136
|
},
|
|
132
137
|
data() {
|
|
133
138
|
return {
|
|
@@ -261,6 +266,7 @@ export default {
|
|
|
261
266
|
:i18n="i18n"
|
|
262
267
|
:target="startPickerTarget"
|
|
263
268
|
:container="startPickerContainer"
|
|
269
|
+
:start-opened="startOpened"
|
|
264
270
|
@input="onStartDateSelected"
|
|
265
271
|
@open="onStartPickerOpen"
|
|
266
272
|
@close="onStartPickerClose"
|
|
@@ -196,16 +196,23 @@ describe('Filtered search token', () => {
|
|
|
196
196
|
expect(findOperatorSegment().props().active).toBe(true);
|
|
197
197
|
});
|
|
198
198
|
|
|
199
|
-
it.each([
|
|
200
|
-
'
|
|
201
|
-
|
|
202
|
-
|
|
199
|
+
it.each([
|
|
200
|
+
['complete', true],
|
|
201
|
+
['split', true],
|
|
202
|
+
['submit', false],
|
|
203
|
+
['select', true],
|
|
204
|
+
])('passes-through %s event when data segment emits it', (event, shouldIncludeValue) => {
|
|
205
|
+
createComponent({ active: true, value: { operator: '=', data: 'something' } });
|
|
203
206
|
|
|
204
|
-
|
|
207
|
+
findDataSegment().vm.$emit(event, 'value');
|
|
205
208
|
|
|
206
|
-
|
|
209
|
+
expect(wrapper.emitted(event)).toHaveLength(1);
|
|
210
|
+
if (shouldIncludeValue) {
|
|
211
|
+
expect(wrapper.emitted(event)[0][0]).toBe('value');
|
|
212
|
+
} else {
|
|
213
|
+
expect(wrapper.emitted(event)[0][0]).toBeUndefined();
|
|
207
214
|
}
|
|
208
|
-
);
|
|
215
|
+
});
|
|
209
216
|
|
|
210
217
|
it('keeps value when replaced by compatible token', () => {
|
|
211
218
|
const originalValue = { operator: '=', data: 'something' };
|
|
@@ -323,7 +330,7 @@ describe('Filtered search token', () => {
|
|
|
323
330
|
beforeDataInputButton.trigger('click');
|
|
324
331
|
|
|
325
332
|
expect(wrapper.emitted()).toEqual({
|
|
326
|
-
complete: [[]],
|
|
333
|
+
complete: [[TEST_APPLY_VALUE]],
|
|
327
334
|
select: [[TEST_APPLY_VALUE]],
|
|
328
335
|
});
|
|
329
336
|
});
|
|
@@ -304,13 +304,13 @@ export default {
|
|
|
304
304
|
this.intendedCursorPosition = 'start';
|
|
305
305
|
},
|
|
306
306
|
|
|
307
|
-
handleComplete() {
|
|
307
|
+
handleComplete(value) {
|
|
308
308
|
/**
|
|
309
309
|
* Emitted when the token entry has been completed.
|
|
310
310
|
*
|
|
311
311
|
* @event complete
|
|
312
312
|
*/
|
|
313
|
-
this.$emit('complete');
|
|
313
|
+
this.$emit('complete', value);
|
|
314
314
|
},
|
|
315
315
|
|
|
316
316
|
stopMousedownOnCloseButton(event) {
|
package/src/scss/utilities.scss
CHANGED
|
@@ -4388,6 +4388,14 @@ $gl-animate-skeleton-loader-max-width: 64 * $grid-size;
|
|
|
4388
4388
|
top: 66vh !important;
|
|
4389
4389
|
}
|
|
4390
4390
|
|
|
4391
|
+
.gl-top-full {
|
|
4392
|
+
top: 100%;
|
|
4393
|
+
}
|
|
4394
|
+
|
|
4395
|
+
.gl-top-full\! {
|
|
4396
|
+
top: 100% !important;
|
|
4397
|
+
}
|
|
4398
|
+
|
|
4391
4399
|
.gl-right-auto {
|
|
4392
4400
|
right: auto;
|
|
4393
4401
|
}
|