@gitlab/ui 117.0.2 → 118.0.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": "117.0.2",
3
+ "version": "118.0.0",
4
4
  "description": "GitLab UI Components",
5
5
  "license": "MIT",
6
6
  "main": "dist/index.js",
@@ -70,7 +70,7 @@
70
70
  "dependencies": {
71
71
  "@floating-ui/dom": "1.7.3",
72
72
  "echarts": "^5.6.0",
73
- "gridstack": "^12.2.2",
73
+ "gridstack": "^12.3.0",
74
74
  "iframe-resizer": "^4.4.5",
75
75
  "lodash": "^4.17.21",
76
76
  "popper.js": "^1.16.1",
@@ -49,10 +49,8 @@ $breadcrumb-max-width: $grid-size * 16;
49
49
  }
50
50
  }
51
51
 
52
- @if $feature-button-border {
53
- .gl-new-dropdown-icon-only.gl-button.btn-icon {
54
- min-height: auto;
55
- }
52
+ .gl-new-dropdown-icon-only.gl-button.btn-icon {
53
+ min-height: auto;
56
54
  }
57
55
  }
58
56
 
@@ -1,22 +1,6 @@
1
1
  /*
2
2
  * Button-specific utilities
3
3
  */
4
- @mixin gl-button-border($color) {
5
- box-shadow: inset 0 0 0 $gl-border-size-1 $color;
6
- }
7
-
8
- @mixin gl-button-hover-border($color) {
9
- box-shadow: inset 0 0 0 $gl-border-size-2 $color;
10
- }
11
-
12
- @mixin gl-button-selected-border($color, $focus-ring: null) {
13
- @if $focus-ring {
14
- box-shadow: inset 0 0 0 $gl-border-size-2 $color, $focus-ring;
15
- } @else {
16
- box-shadow: inset 0 0 0 $gl-border-size-2 $color;
17
- }
18
- }
19
-
20
4
  @mixin gl-button-theme(
21
5
  $color: null,
22
6
  $background-color: null,
@@ -33,11 +17,7 @@
33
17
  ) {
34
18
  color: $color;
35
19
  background-color: $background-color;
36
- @if $feature-button-border {
37
- border-color: $border-color;
38
- } @else {
39
- @include gl-button-border($border-color);
40
- }
20
+ border-color: $border-color;
41
21
 
42
22
  &::before {
43
23
  background-color: $border-color;
@@ -48,42 +28,24 @@
48
28
  &:hover {
49
29
  color: $hover-color;
50
30
  background-color: $hover-background-color;
51
- @if $feature-button-border {
52
- border-color: $hover-border-color;
53
- } @else {
54
- @include gl-button-hover-border($hover-border-color);
55
- }
31
+ border-color: $hover-border-color;
56
32
  }
57
33
 
58
34
  &:focus {
59
35
  color: $focus-color;
60
36
  background-color: $focus-background-color;
61
- @if $feature-button-border {
62
- border-color: $focus-border-color;
63
- } @else {
64
- @include gl-focus($color: $focus-border-color);
65
- }
37
+ border-color: $focus-border-color;
66
38
  }
67
39
 
68
40
  &:active,
69
41
  &.active {
70
42
  color: $active-color;
71
43
  background-color: $active-background-color;
72
- @if $feature-button-border {
73
- border-color: $active-border-color;
74
- } @else {
75
- @include gl-focus($color: $focus-border-color);
76
- }
44
+ border-color: $active-border-color;
77
45
 
78
- @if $feature-button-border {
79
- :focus,
80
- &:focus:active {
81
- @apply gl-focus;
82
- }
83
- } @else {
84
- &:focus {
85
- @include gl-focus($color: $active-border-color);
86
- }
46
+ :focus,
47
+ &:focus:active {
48
+ @apply gl-focus;
87
49
  }
88
50
  }
89
51
  }
@@ -112,32 +74,20 @@
112
74
  @apply gl-items-center;
113
75
  @apply gl-text-base;
114
76
 
115
- @if $feature-button-border {
116
- @apply gl-py-0;
117
- border: $gl-border-size-1 solid var(--gl-button-default-primary-border-color-default);
118
- min-height: $gl-button-medium-size;
119
- min-width: $gl-button-medium-size;
120
- transition: color $gl-transition-duration-medium $gl-easing-out-cubic,
121
- background-color $gl-transition-duration-medium $gl-easing-out-cubic,
122
- border-color $gl-transition-duration-medium $gl-easing-out-cubic,
123
- box-shadow $gl-transition-duration-medium $gl-easing-out-cubic,
124
- text-decoration-color $gl-transition-duration-medium $gl-easing-out-cubic;
125
- @include gl-prefers-reduced-motion-transition;
126
- } @else {
127
- @apply gl-border-0;
128
- @apply gl-py-3;
129
- @include gl-button-border(var(--gl-button-default-primary-border-color-default));
130
- }
77
+ @apply gl-py-0;
78
+ border: $gl-border-size-1 solid var(--gl-button-default-primary-border-color-default);
79
+ min-height: $gl-button-medium-size;
80
+ min-width: $gl-button-medium-size;
81
+ transition: color $gl-transition-duration-medium $gl-easing-out-cubic,
82
+ background-color $gl-transition-duration-medium $gl-easing-out-cubic,
83
+ border-color $gl-transition-duration-medium $gl-easing-out-cubic,
84
+ box-shadow $gl-transition-duration-medium $gl-easing-out-cubic,
85
+ text-decoration-color $gl-transition-duration-medium $gl-easing-out-cubic;
86
+ @include gl-prefers-reduced-motion-transition;
131
87
 
132
- @if $feature-button-border {
133
- &:focus,
134
- &:focus:active {
135
- @apply gl-focus;
136
- }
137
- } @else {
138
- @media (forced-colors: active) {
139
- border: 1px solid;
140
- }
88
+ &:focus,
89
+ &:focus:active {
90
+ @apply gl-focus;
141
91
  }
142
92
 
143
93
  .gl-button-text {
@@ -195,23 +145,15 @@
195
145
  background-color: var(--gl-button-selected-border-color-default);
196
146
  }
197
147
 
198
- @if $feature-button-border {
199
- border-width: $gl-border-size-1;
200
- border-color: var(--gl-button-selected-border-color-default);
201
- box-shadow: inset 0 0 0 $gl-border-size-1 var(--gl-button-selected-border-color-default);
202
- } @else {
203
- @include gl-button-selected-border(var(--gl-button-selected-border-color-default));
204
- }
148
+ border-width: $gl-border-size-1;
149
+ border-color: var(--gl-button-selected-border-color-default);
150
+ box-shadow: inset 0 0 0 $gl-border-size-1 var(--gl-button-selected-border-color-default);
205
151
 
206
152
  &:hover {
207
153
  color: var(--gl-button-selected-foreground-color-hover);
208
154
  background-color: var(--gl-button-selected-background-color-hover);
209
- @if $feature-button-border {
210
- border-color: var(--gl-button-selected-border-color-hover);
211
- box-shadow: inset 0 0 0 $gl-border-size-1 var(--gl-button-selected-border-color-hover);
212
- } @else {
213
- @include gl-button-selected-border(var(--gl-button-selected-border-color-hover));
214
- }
155
+ border-color: var(--gl-button-selected-border-color-hover);
156
+ box-shadow: inset 0 0 0 $gl-border-size-1 var(--gl-button-selected-border-color-hover);
215
157
  }
216
158
 
217
159
  &:hover::before,
@@ -223,11 +165,7 @@
223
165
  color: var(--gl-button-selected-foreground-color-focus);
224
166
  background-color: var(--gl-button-selected-background-color-focus);
225
167
  @apply gl-focus;
226
- @if $feature-button-border {
227
- border-color: var(--gl-button-selected-border-color-focus);
228
- } @else {
229
- @include gl-button-selected-border(var(--gl-button-selected-border-color-focus), $focus-ring);
230
- }
168
+ border-color: var(--gl-button-selected-border-color-focus);
231
169
  }
232
170
 
233
171
  &:focus::before,
@@ -240,15 +178,7 @@
240
178
  color: var(--gl-button-selected-foreground-color-active);
241
179
  background-color: var(--gl-button-selected-background-color-active);
242
180
  box-shadow: inset 0 0 0 $gl-border-size-1 var(--gl-button-selected-border-color-active);
243
- @if $feature-button-border {
244
- border-color: var(--gl-button-selected-border-color-active);
245
- } @else {
246
- @include gl-button-selected-border(var(--gl-button-selected-border-color-active), $focus-ring);
247
-
248
- &:focus {
249
- @include gl-button-selected-border(var(--gl-button-selected-border-color-active), $focus-ring);
250
- }
251
- }
181
+ border-color: var(--gl-button-selected-border-color-active);
252
182
  }
253
183
 
254
184
  &:active::before,
@@ -403,27 +333,11 @@
403
333
  &.btn-confirm,
404
334
  &.btn-danger {
405
335
  &-tertiary {
406
- @if not $feature-button-border {
407
- @apply gl-shadow-none;
408
- }
409
-
410
336
  @media (forced-colors: active) {
411
337
  color: LinkText; // stylelint-disable-line scale-unlimited/declaration-strict-value
412
338
  mix-blend-mode: initial;
413
339
  border: 0;
414
340
  }
415
-
416
- @if not $feature-button-border {
417
- &:hover {
418
- @apply gl-shadow-none;
419
- }
420
-
421
- &:active,
422
- &:focus,
423
- &:focus:active {
424
- @apply gl-focus;
425
- }
426
- }
427
341
  }
428
342
  }
429
343
 
@@ -441,12 +355,8 @@
441
355
  @apply gl-px-3;
442
356
  @apply gl-leading-normal;
443
357
  @apply gl-text-base;
444
- @if $feature-button-border {
445
- min-height: $gl-button-small-size;
446
- min-width: $gl-button-small-size;
447
- } @else {
448
- @apply gl-py-2;
449
- }
358
+ min-height: $gl-button-small-size;
359
+ min-width: $gl-button-small-size;
450
360
 
451
361
  gl-emoji {
452
362
  @apply gl-text-sm;
@@ -455,81 +365,37 @@
455
365
 
456
366
  &.btn-dashed,
457
367
  &.btn-dashed-tertiary {
458
- @if $feature-button-border {
459
- border-style: dashed;
460
- border-color: var(--gl-button-dashed-border-color-default);
461
- } @else {
462
- @include gl-button-border(var(--gl-button-dashed-border-color-default));
463
- outline: 3px dotted var(--gl-background-color-default);
464
- outline-offset: (-$gl-border-size-1);
465
- }
368
+ border-style: dashed;
369
+ border-color: var(--gl-button-dashed-border-color-default);
466
370
 
467
371
  &:hover {
468
- @if $feature-button-border {
469
- border-color: var(--gl-button-dashed-border-color-hover);
470
- } @else {
471
- @include gl-button-border($color: var(--gl-button-dashed-border-color-hover));
472
- outline: 3px dotted var(--gl-background-color-default);
473
- outline-offset: (-$gl-border-size-1);
474
- }
372
+ border-color: var(--gl-button-dashed-border-color-hover);
475
373
  }
476
374
 
477
375
  &:focus {
478
- @if $feature-button-border {
479
- border-color: var(--gl-button-dashed-border-color-focus);
480
- } @else {
481
- outline: 3px dotted var(--gl-background-color-default);
482
- outline-offset: (-$gl-border-size-1);
483
- @include gl-focus($color: var(--gl-button-dashed-border-color-focus));
484
- }
376
+ border-color: var(--gl-button-dashed-border-color-focus);
485
377
  }
486
378
 
487
379
  &:active,
488
380
  &.active {
489
- @if $feature-button-border {
490
- border-color: var(--gl-button-dashed-border-color-active);
491
- } @else {
492
- outline: 3px dotted var(--gl-background-color-default);
493
- outline-offset: (-$gl-border-size-1);
494
- @include gl-focus($color: var(--gl-button-dashed-border-color-active));
495
-
496
- &:focus {
497
- outline: 3px dotted var(--gl-background-color-default);
498
- outline-offset: (-$gl-border-size-1);
499
- @include gl-focus($color: var(--gl-button-dashed-border-color-active));
500
- }
501
- }
381
+ border-color: var(--gl-button-dashed-border-color-active);
502
382
  }
503
383
  }
504
384
 
505
385
  &.btn-icon {
506
386
  @apply gl-leading-normal;
507
- @if $feature-button-border {
508
- @apply gl-p-0;
509
- } @else {
510
- @apply gl-p-3;
511
- }
387
+ @apply gl-p-0;
512
388
 
513
389
  .gl-button-icon {
514
390
  @apply gl-mr-0;
515
391
  }
516
-
517
- @if not $feature-button-border {
518
- &.btn-sm {
519
- @apply gl-p-2;
520
- }
521
- }
522
392
  }
523
393
 
524
394
  &.button-ellipsis-horizontal,
525
395
  &.button-ellipsis-horizontal.btn-sm {
526
396
  @apply gl-px-2;
527
- @if $feature-button-border {
528
- min-height: auto;
529
- min-width: auto;
530
- } @else {
531
- @apply gl-py-0;
532
- }
397
+ min-height: auto;
398
+ min-width: auto;
533
399
 
534
400
  svg {
535
401
  @apply gl-h-5;
@@ -553,43 +419,28 @@
553
419
  @apply gl-text-base;
554
420
  @apply gl-leading-normal;
555
421
  color: var(--gl-button-link-text-color-default);
556
- @if $feature-button-border {
557
- @apply gl-px-0;
558
- min-height: auto;
559
- min-width: auto;
560
- text-decoration-thickness: auto;
561
- text-decoration-style: solid;
562
- text-decoration-color: transparent;
563
- } @else {
564
- @apply gl-py-0;
565
- @apply gl-px-0;
566
- @apply gl-shadow-none;
567
- }
422
+ @apply gl-px-0;
423
+ min-height: auto;
424
+ min-width: auto;
425
+ text-decoration-thickness: auto;
426
+ text-decoration-style: solid;
427
+ text-decoration-color: transparent;
568
428
 
569
429
  &:hover {
570
430
  @apply gl-bg-transparent;
571
431
  color: var(--gl-button-link-text-color-hover);
572
- @if $feature-button-border {
573
- text-decoration-color: var(--gl-button-link-text-color-hover);
574
- }
432
+ text-decoration-color: var(--gl-button-link-text-color-hover);
575
433
  }
576
434
 
577
435
  &:active {
578
436
  color: var(--gl-button-link-text-color-active);
579
- @if $feature-button-border {
580
- text-decoration-color: var(--gl-button-link-text-color-active);
581
- } @else {
582
- @apply gl-underline;
583
- }
437
+ text-decoration-color: var(--gl-button-link-text-color-active);
584
438
  }
585
439
 
586
440
  &:active,
587
441
  &:focus,
588
442
  &:focus:active {
589
443
  @apply gl-bg-transparent;
590
- @if not $feature-button-border {
591
- @apply gl-focus;
592
- }
593
444
  }
594
445
 
595
446
  &.disabled,
@@ -620,18 +471,13 @@
620
471
  &[disabled].selected {
621
472
  background-color: var(--gl-button-disabled-background-color);
622
473
  color: var(--gl-button-disabled-foreground-color);
474
+ border-color: var(--gl-button-disabled-border-color);
623
475
  opacity: 1;
624
476
  cursor: not-allowed !important;
625
477
 
626
478
  &::before {
627
479
  background-color: var(--gl-button-disabled-border-color);
628
480
  }
629
-
630
- @if $feature-button-border {
631
- border-color: var(--gl-button-disabled-border-color);
632
- } @else {
633
- @include gl-button-border(var(--gl-button-disabled-border-color));
634
- }
635
481
  }
636
482
 
637
483
  &.disabled[class*='-tertiary'],
@@ -96,21 +96,11 @@
96
96
  @include mask-chevron-down;
97
97
  }
98
98
 
99
- @if $feature-button-border {
100
- &.gl-button {
101
- @apply gl-px-0;
102
-
103
- &.btn-sm {
104
- @apply gl-px-0;
105
- }
106
- }
107
- } @else {
108
- &.gl-button {
109
- @apply gl-px-3;
99
+ &.gl-button {
100
+ @apply gl-px-0;
110
101
 
111
- &.btn-sm {
112
- @apply gl-px-2;
113
- }
102
+ &.btn-sm {
103
+ @apply gl-px-0;
114
104
  }
115
105
  }
116
106
  }
@@ -167,10 +157,8 @@
167
157
  }
168
158
 
169
159
  .dropdown-icon-only {
170
- @if $feature-button-border {
171
- &.dropdown-toggle-no-caret {
172
- padding: 0 !important;
173
- }
160
+ &.dropdown-toggle-no-caret {
161
+ padding: 0 !important;
174
162
  }
175
163
 
176
164
  .dropdown-icon,
@@ -68,17 +68,14 @@ $label-padding-horizontal-half: 0.375 * $grid-size;
68
68
  @apply gl-flex;
69
69
  width: px-to-rem(14px);
70
70
  height: px-to-rem(14px);
71
+ min-height: auto !important;
72
+ min-width: auto !important;
71
73
  margin-left: -$label-padding-horizontal-half;
72
74
  margin-right: $label-padding-horizontal-half;
73
75
  @apply gl-p-0;
74
76
  @apply gl-rounded-full;
75
77
  @apply gl-shadow-none;
76
78
 
77
- @if $feature-button-border {
78
- min-height: auto !important;
79
- min-width: auto !important;
80
- }
81
-
82
79
  &:focus,
83
80
  &:active {
84
81
  @apply gl-focus;
@@ -11,21 +11,11 @@
11
11
  .gl-search-box-by-click-history > .gl-button,
12
12
  .gl-search-box-by-click-search-button.gl-button {
13
13
  background-color: var(--gl-control-background-color-default);
14
-
15
- @if $feature-button-border {
16
- border-color: var(--gl-control-border-color-default) !important;
17
- } @else {
18
- box-shadow: inset 0 0 0 $gl-border-size-1 var(--gl-control-border-color-default) !important;
19
- }
14
+ border-color: var(--gl-control-border-color-default) !important;
20
15
 
21
16
  &:disabled {
22
17
  background: var(--gl-control-background-color-disabled);
23
-
24
- @if $feature-button-border {
25
- border-color: var(--gl-control-border-color-disabled) !important;
26
- } @else {
27
- box-shadow: inset 0 0 0 $gl-border-size-1 var(--gl-control-border-color-disabled) !important;
28
- }
18
+ border-color: var(--gl-control-border-color-disabled) !important;
29
19
  }
30
20
  }
31
21
 
@@ -73,12 +73,17 @@ export default {
73
73
  required: false,
74
74
  },
75
75
  },
76
- render(createElement, { props, slots }) {
76
+ render(createElement, { props, slots, data }) {
77
77
  const slotIsSet = () => slots().default;
78
78
 
79
79
  const propValueOrDefault = (name, defaultValue) =>
80
80
  props[name] !== null ? props[name] : defaultValue;
81
81
 
82
+ const inheritedClasses =
83
+ data.class || // Vue 3
84
+ data.attrs?.class || // Vue 2
85
+ '';
86
+
82
87
  const width = () => {
83
88
  if (slotIsSet()) {
84
89
  return propValueOrDefault('width', DEFAULT_SVG_WIDTH);
@@ -236,7 +241,8 @@ export default {
236
241
  return createElement(
237
242
  'div',
238
243
  {
239
- class: 'gl-skeleton-loader-default-container gl-max-w-full',
244
+ staticClass: data.staticClass, // Vue 2
245
+ class: ['gl-skeleton-loader-default-container gl-max-w-full', inheritedClasses],
240
246
  style: {
241
247
  width: props.width !== null ? `${props.width}px` : null,
242
248
  height: props.height !== null ? `${props.height}px` : null,
@@ -1,7 +1,3 @@
1
- // Enables feature flag for GlButton border migration
2
- // to see in Storybook the expected new styles
3
- $feature-button-border: true;
4
-
5
1
  @import 'tokens';
6
2
 
7
3
  @import 'functions';
@@ -337,6 +337,3 @@ $popover-arrow-color: $popover-bg;
337
337
  $popover-arrow-outer-color: $gl-border-color-default;
338
338
 
339
339
  $tooltip-opacity: 1;
340
-
341
- // Feature flag for GlButton border migration
342
- $feature-button-border: false !default;