@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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gitlab/ui",
3
- "version": "71.8.1",
3
+ "version": "71.9.0",
4
4
  "description": "GitLab UI Components",
5
5
  "license": "MIT",
6
6
  "main": "dist/index.js",
@@ -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(['complete', 'split', 'submit', 'select'])(
200
- 'passes-through %s event when data segment emits it',
201
- (event) => {
202
- createComponent({ active: true, value: { operator: '=', data: 'something' } });
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
- findDataSegment().vm.$emit(event);
207
+ findDataSegment().vm.$emit(event, 'value');
205
208
 
206
- expect(wrapper.emitted(event)).toHaveLength(1);
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) {
@@ -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
  }
@@ -90,6 +90,10 @@
90
90
  top: 66vh;
91
91
  }
92
92
 
93
+ @mixin gl-top-full {
94
+ top: 100%;
95
+ }
96
+
93
97
  @mixin gl-right-auto {
94
98
  right: auto;
95
99
  }