openproject-primer_view_components 0.13.0 → 0.13.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -101,6 +101,8 @@ let ActionBarElement = class ActionBarElement extends HTMLElement {
101
101
  };
102
102
  _ActionBarElement_initialBarWidth = new WeakMap(), _ActionBarElement_previousBarWidth = new WeakMap(), _ActionBarElement_focusZoneAbortController = new WeakMap(), _ActionBarElement_instances = new WeakSet(), _ActionBarElement_isVisible = function _ActionBarElement_isVisible(element) {
103
103
  // Safari doesn't support `checkVisibility` yet.
104
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
105
+ // @ts-ignore
104
106
  if (typeof element.checkVisibility === 'function')
105
107
  return element.checkVisibility();
106
108
  return Boolean(element.offsetParent || element.offsetWidth || element.offsetHeight);
@@ -93,6 +93,8 @@ class ActionBarElement extends HTMLElement {
93
93
 
94
94
  #isVisible(element: HTMLElement): boolean {
95
95
  // Safari doesn't support `checkVisibility` yet.
96
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
97
+ // @ts-ignore
96
98
  if (typeof element.checkVisibility === 'function') return element.checkVisibility()
97
99
 
98
100
  return Boolean(element.offsetParent || element.offsetWidth || element.offsetHeight)
@@ -15,7 +15,7 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
15
15
  if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
16
16
  return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
17
17
  };
18
- var _ActionMenuElement_instances, _ActionMenuElement_abortController, _ActionMenuElement_originalLabel, _ActionMenuElement_inputName, _ActionMenuElement_invokerBeingClicked, _ActionMenuElement_softDisableItems, _ActionMenuElement_potentiallyDisallowActivation, _ActionMenuElement_isKeyboardActivation, _ActionMenuElement_isMouseActivation, _ActionMenuElement_isActivation, _ActionMenuElement_handleInvokerActivated, _ActionMenuElement_handleDialogItemActivated, _ActionMenuElement_handleItemActivated, _ActionMenuElement_activateItem, _ActionMenuElement_handleIncludeFragmentReplaced, _ActionMenuElement_handleFocusOut, _ActionMenuElement_show, _ActionMenuElement_hide, _ActionMenuElement_isOpen, _ActionMenuElement_setDynamicLabel, _ActionMenuElement_updateInput, _ActionMenuElement_firstItem_get, _ActionMenuElement_items_get;
18
+ var _ActionMenuElement_instances, _ActionMenuElement_abortController, _ActionMenuElement_originalLabel, _ActionMenuElement_inputName, _ActionMenuElement_invokerBeingClicked, _ActionMenuElement_softDisableItems, _ActionMenuElement_potentiallyDisallowActivation, _ActionMenuElement_isKeyboardActivation, _ActionMenuElement_isKeyboardActivationViaEnter, _ActionMenuElement_isKeyboardActivationViaSpace, _ActionMenuElement_isMouseActivation, _ActionMenuElement_isActivation, _ActionMenuElement_handleInvokerActivated, _ActionMenuElement_handleDialogItemActivated, _ActionMenuElement_handleItemActivated, _ActionMenuElement_activateItem, _ActionMenuElement_handleIncludeFragmentReplaced, _ActionMenuElement_handleFocusOut, _ActionMenuElement_show, _ActionMenuElement_hide, _ActionMenuElement_isOpen, _ActionMenuElement_setDynamicLabel, _ActionMenuElement_updateInput, _ActionMenuElement_firstItem_get, _ActionMenuElement_items_get;
19
19
  import { controller, target } from '@github/catalyst';
20
20
  import '@oddbird/popover-polyfill';
21
21
  const validSelectors = ['[role="menuitem"]', '[role="menuitemcheckbox"]', '[role="menuitemradio"]'];
@@ -109,7 +109,7 @@ let ActionMenuElement = class ActionMenuElement extends HTMLElement {
109
109
  __classPrivateFieldGet(this, _ActionMenuElement_abortController, "f").abort();
110
110
  }
111
111
  handleEvent(event) {
112
- var _a;
112
+ var _a, _b;
113
113
  const targetIsInvoker = (_a = this.invokerElement) === null || _a === void 0 ? void 0 : _a.contains(event.target);
114
114
  const eventIsActivation = __classPrivateFieldGet(this, _ActionMenuElement_instances, "m", _ActionMenuElement_isActivation).call(this, event);
115
115
  if (targetIsInvoker && event.type === 'mousedown') {
@@ -151,6 +151,14 @@ let ActionMenuElement = class ActionMenuElement extends HTMLElement {
151
151
  }
152
152
  __classPrivateFieldGet(this, _ActionMenuElement_instances, "m", _ActionMenuElement_activateItem).call(this, event, item);
153
153
  __classPrivateFieldGet(this, _ActionMenuElement_instances, "m", _ActionMenuElement_handleItemActivated).call(this, event, item);
154
+ // Pressing the space key on a button will cause the page to scroll unless preventDefault()
155
+ // is called. Unfortunately, calling preventDefault() will also skip form submission. The
156
+ // code below therefore only calls preventDefault() if the button submits a form and the
157
+ // button is being activated by the space key.
158
+ if (item.getAttribute('type') === 'submit' && __classPrivateFieldGet(this, _ActionMenuElement_instances, "m", _ActionMenuElement_isKeyboardActivationViaSpace).call(this, event)) {
159
+ event.preventDefault();
160
+ (_b = item.closest('form')) === null || _b === void 0 ? void 0 : _b.submit();
161
+ }
154
162
  return;
155
163
  }
156
164
  if (event.type === 'include-fragment-replaced') {
@@ -176,10 +184,17 @@ _ActionMenuElement_abortController = new WeakMap(), _ActionMenuElement_originalL
176
184
  event.stopImmediatePropagation();
177
185
  }
178
186
  }, _ActionMenuElement_isKeyboardActivation = function _ActionMenuElement_isKeyboardActivation(event) {
187
+ return __classPrivateFieldGet(this, _ActionMenuElement_instances, "m", _ActionMenuElement_isKeyboardActivationViaEnter).call(this, event) || __classPrivateFieldGet(this, _ActionMenuElement_instances, "m", _ActionMenuElement_isKeyboardActivationViaSpace).call(this, event);
188
+ }, _ActionMenuElement_isKeyboardActivationViaEnter = function _ActionMenuElement_isKeyboardActivationViaEnter(event) {
189
+ return (event instanceof KeyboardEvent &&
190
+ event.type === 'keydown' &&
191
+ !(event.ctrlKey || event.altKey || event.metaKey || event.shiftKey) &&
192
+ event.key === 'Enter');
193
+ }, _ActionMenuElement_isKeyboardActivationViaSpace = function _ActionMenuElement_isKeyboardActivationViaSpace(event) {
179
194
  return (event instanceof KeyboardEvent &&
180
195
  event.type === 'keydown' &&
181
196
  !(event.ctrlKey || event.altKey || event.metaKey || event.shiftKey) &&
182
- (event.key === 'Enter' || event.key === ' '));
197
+ event.key === ' ');
183
198
  }, _ActionMenuElement_isMouseActivation = function _ActionMenuElement_isMouseActivation(event) {
184
199
  return event instanceof MouseEvent && event.type === 'click';
185
200
  }, _ActionMenuElement_isActivation = function _ActionMenuElement_isActivation(event) {
@@ -134,11 +134,24 @@ export class ActionMenuElement extends HTMLElement {
134
134
  }
135
135
 
136
136
  #isKeyboardActivation(event: Event): boolean {
137
+ return this.#isKeyboardActivationViaEnter(event) || this.#isKeyboardActivationViaSpace(event)
138
+ }
139
+
140
+ #isKeyboardActivationViaEnter(event: Event): boolean {
141
+ return (
142
+ event instanceof KeyboardEvent &&
143
+ event.type === 'keydown' &&
144
+ !(event.ctrlKey || event.altKey || event.metaKey || event.shiftKey) &&
145
+ event.key === 'Enter'
146
+ )
147
+ }
148
+
149
+ #isKeyboardActivationViaSpace(event: Event): boolean {
137
150
  return (
138
151
  event instanceof KeyboardEvent &&
139
152
  event.type === 'keydown' &&
140
153
  !(event.ctrlKey || event.altKey || event.metaKey || event.shiftKey) &&
141
- (event.key === 'Enter' || event.key === ' ')
154
+ event.key === ' '
142
155
  )
143
156
  }
144
157
 
@@ -202,6 +215,16 @@ export class ActionMenuElement extends HTMLElement {
202
215
 
203
216
  this.#activateItem(event, item)
204
217
  this.#handleItemActivated(event, item)
218
+
219
+ // Pressing the space key on a button will cause the page to scroll unless preventDefault()
220
+ // is called. Unfortunately, calling preventDefault() will also skip form submission. The
221
+ // code below therefore only calls preventDefault() if the button submits a form and the
222
+ // button is being activated by the space key.
223
+ if (item.getAttribute('type') === 'submit' && this.#isKeyboardActivationViaSpace(event)) {
224
+ event.preventDefault()
225
+ item.closest('form')?.submit()
226
+ }
227
+
205
228
  return
206
229
  }
207
230
 
@@ -32,8 +32,9 @@ const isPopoverOpen = (() => {
32
32
  }
33
33
  return (el) => (selector ? el.matches(selector) : setSelector(el));
34
34
  })();
35
+ const TOOLTIP_ARROW_EDGE_OFFSET = 6;
35
36
  const TOOLTIP_SR_ONLY_CLASS = 'sr-only';
36
- const TOOLTIP_OFFSET = 4;
37
+ const TOOLTIP_OFFSET = 10;
37
38
  const DIRECTION_CLASSES = [
38
39
  'tooltip-n',
39
40
  'tooltip-s',
@@ -106,15 +107,33 @@ class ToolTipElement extends HTMLElement {
106
107
  text-wrap: balance;
107
108
  }
108
109
 
110
+ :host:before{
111
+ position: absolute;
112
+ z-index: 1000001;
113
+ color: var(--bgColor-emphasis, var(--color-neutral-emphasis-plus));
114
+ content: "";
115
+ border: 6px solid transparent;
116
+ opacity: 0;
117
+ }
118
+
109
119
  @keyframes tooltip-appear {
110
120
  from {
111
121
  opacity: 0;
112
122
  }
113
123
  to {
114
- opacity: 1
124
+ opacity: 1;
115
125
  }
116
126
  }
117
127
 
128
+ :host:after{
129
+ position: absolute;
130
+ display: block;
131
+ right: 0;
132
+ left: 0;
133
+ height: 12px;
134
+ content: "";
135
+ }
136
+
118
137
  :host(:popover-open),
119
138
  :host(:popover-open):before {
120
139
  animation-name: tooltip-appear;
@@ -123,11 +142,65 @@ class ToolTipElement extends HTMLElement {
123
142
  animation-timing-function: ease-in;
124
143
  }
125
144
 
126
- :host(.\\:popover-open) {
145
+ :host(.\\:popover-open),
146
+ :host(.\\:popover-open):before {
127
147
  animation-name: tooltip-appear;
128
148
  animation-duration: .1s;
129
149
  animation-fill-mode: forwards;
130
150
  animation-timing-function: ease-in;
151
+ animation-delay: .4s;
152
+ }
153
+
154
+ :host(.tooltip-s):before,
155
+ :host(.tooltip-n):before {
156
+ right: 50%;
157
+ margin-right: -${TOOLTIP_ARROW_EDGE_OFFSET}px;
158
+ }
159
+ :host(.tooltip-s):before,
160
+ :host(.tooltip-se):before,
161
+ :host(.tooltip-sw):before {
162
+ bottom: 100%;
163
+ border-bottom-color: var(--bgColor-emphasis, var(--color-neutral-emphasis-plus));
164
+ }
165
+ :host(.tooltip-s):after,
166
+ :host(.tooltip-se):after,
167
+ :host(.tooltip-sw):after {
168
+ bottom: 100%
169
+ }
170
+ :host(.tooltip-n):before,
171
+ :host(.tooltip-ne):before,
172
+ :host(.tooltip-nw):before {
173
+ top: 100%;
174
+ border-top-color: var(--bgColor-emphasis, var(--color-neutral-emphasis-plus));
175
+ }
176
+ :host(.tooltip-n):after,
177
+ :host(.tooltip-ne):after,
178
+ :host(.tooltip-nw):after {
179
+ top: 100%;
180
+ }
181
+ :host(.tooltip-se):before,
182
+ :host(.tooltip-ne):before {
183
+ left: 0;
184
+ margin-left: ${TOOLTIP_ARROW_EDGE_OFFSET}px;
185
+ }
186
+ :host(.tooltip-sw):before,
187
+ :host(.tooltip-nw):before {
188
+ right: 0;
189
+ margin-right: ${TOOLTIP_ARROW_EDGE_OFFSET}px;
190
+ }
191
+ :host(.tooltip-w):before {
192
+ top: 50%;
193
+ bottom: 50%;
194
+ left: 100%;
195
+ margin-top: -6px;
196
+ border-left-color: var(--bgColor-emphasis, var(--color-neutral-emphasis-plus));
197
+ }
198
+ :host(.tooltip-e):before {
199
+ top: 50%;
200
+ right: 100%;
201
+ bottom: 50%;
202
+ margin-top: -6px;
203
+ border-right-color: var(--bgColor-emphasis, var(--color-neutral-emphasis-plus));
131
204
  }
132
205
  `;
133
206
  }
@@ -21,8 +21,9 @@ const isPopoverOpen = (() => {
21
21
  return (el: Element) => (selector ? el.matches(selector) : setSelector(el))
22
22
  })()
23
23
 
24
+ const TOOLTIP_ARROW_EDGE_OFFSET = 6
24
25
  const TOOLTIP_SR_ONLY_CLASS = 'sr-only'
25
- const TOOLTIP_OFFSET = 4
26
+ const TOOLTIP_OFFSET = 10
26
27
 
27
28
  type Direction = 'n' | 's' | 'e' | 'w' | 'ne' | 'se' | 'nw' | 'sw'
28
29
 
@@ -91,15 +92,33 @@ class ToolTipElement extends HTMLElement {
91
92
  text-wrap: balance;
92
93
  }
93
94
 
95
+ :host:before{
96
+ position: absolute;
97
+ z-index: 1000001;
98
+ color: var(--bgColor-emphasis, var(--color-neutral-emphasis-plus));
99
+ content: "";
100
+ border: 6px solid transparent;
101
+ opacity: 0;
102
+ }
103
+
94
104
  @keyframes tooltip-appear {
95
105
  from {
96
106
  opacity: 0;
97
107
  }
98
108
  to {
99
- opacity: 1
109
+ opacity: 1;
100
110
  }
101
111
  }
102
112
 
113
+ :host:after{
114
+ position: absolute;
115
+ display: block;
116
+ right: 0;
117
+ left: 0;
118
+ height: 12px;
119
+ content: "";
120
+ }
121
+
103
122
  :host(:popover-open),
104
123
  :host(:popover-open):before {
105
124
  animation-name: tooltip-appear;
@@ -108,11 +127,65 @@ class ToolTipElement extends HTMLElement {
108
127
  animation-timing-function: ease-in;
109
128
  }
110
129
 
111
- :host(.\\:popover-open) {
130
+ :host(.\\:popover-open),
131
+ :host(.\\:popover-open):before {
112
132
  animation-name: tooltip-appear;
113
133
  animation-duration: .1s;
114
134
  animation-fill-mode: forwards;
115
135
  animation-timing-function: ease-in;
136
+ animation-delay: .4s;
137
+ }
138
+
139
+ :host(.tooltip-s):before,
140
+ :host(.tooltip-n):before {
141
+ right: 50%;
142
+ margin-right: -${TOOLTIP_ARROW_EDGE_OFFSET}px;
143
+ }
144
+ :host(.tooltip-s):before,
145
+ :host(.tooltip-se):before,
146
+ :host(.tooltip-sw):before {
147
+ bottom: 100%;
148
+ border-bottom-color: var(--bgColor-emphasis, var(--color-neutral-emphasis-plus));
149
+ }
150
+ :host(.tooltip-s):after,
151
+ :host(.tooltip-se):after,
152
+ :host(.tooltip-sw):after {
153
+ bottom: 100%
154
+ }
155
+ :host(.tooltip-n):before,
156
+ :host(.tooltip-ne):before,
157
+ :host(.tooltip-nw):before {
158
+ top: 100%;
159
+ border-top-color: var(--bgColor-emphasis, var(--color-neutral-emphasis-plus));
160
+ }
161
+ :host(.tooltip-n):after,
162
+ :host(.tooltip-ne):after,
163
+ :host(.tooltip-nw):after {
164
+ top: 100%;
165
+ }
166
+ :host(.tooltip-se):before,
167
+ :host(.tooltip-ne):before {
168
+ left: 0;
169
+ margin-left: ${TOOLTIP_ARROW_EDGE_OFFSET}px;
170
+ }
171
+ :host(.tooltip-sw):before,
172
+ :host(.tooltip-nw):before {
173
+ right: 0;
174
+ margin-right: ${TOOLTIP_ARROW_EDGE_OFFSET}px;
175
+ }
176
+ :host(.tooltip-w):before {
177
+ top: 50%;
178
+ bottom: 50%;
179
+ left: 100%;
180
+ margin-top: -6px;
181
+ border-left-color: var(--bgColor-emphasis, var(--color-neutral-emphasis-plus));
182
+ }
183
+ :host(.tooltip-e):before {
184
+ top: 50%;
185
+ right: 100%;
186
+ bottom: 50%;
187
+ margin-top: -6px;
188
+ border-right-color: var(--bgColor-emphasis, var(--color-neutral-emphasis-plus));
116
189
  }
117
190
  `
118
191
  }
@@ -8,9 +8,7 @@ module Primer
8
8
  # Do not add to this list for any other reason!
9
9
  IGNORED_PREVIEWS = [
10
10
  Primer::Beta::MarkdownPreview,
11
- Primer::Beta::AutoCompleteItemPreview,
12
- Primer::Alpha::RadioButtonPreview,
13
- Primer::Alpha::CheckBoxPreview
11
+ Primer::Beta::AutoCompleteItemPreview
14
12
  ].freeze
15
13
 
16
14
  # Skip `:region` which relates to preview page structure rather than individual component.
@@ -6,7 +6,7 @@ module Primer
6
6
  module VERSION
7
7
  MAJOR = 0
8
8
  MINOR = 13
9
- PATCH = 0
9
+ PATCH = 1
10
10
 
11
11
  STRING = [MAJOR, MINOR, PATCH].join(".")
12
12
  end
@@ -7,7 +7,6 @@ module Primer
7
7
  # @label Playground
8
8
  #
9
9
  # @param name text
10
- # @param id text
11
10
  # @param value text
12
11
  # @param label text
13
12
  # @param caption text
@@ -15,7 +14,6 @@ module Primer
15
14
  # @param disabled toggle
16
15
  def playground(
17
16
  name: "my-check-box",
18
- id: nil,
19
17
  value: "picard",
20
18
  label: "Jean-Luc Picard",
21
19
  caption: "Make it so",
@@ -24,7 +22,6 @@ module Primer
24
22
  )
25
23
  system_arguments = {
26
24
  name: name,
27
- id: id,
28
25
  value: value,
29
26
  label: label,
30
27
  caption: caption,
@@ -4,7 +4,8 @@
4
4
  <p>Dialog One!</p>
5
5
 
6
6
  <form>
7
- <input type="text" value="Some text goes in here">
7
+ <label for="dialog-text-input-example">Example input</label>
8
+ <input id="dialog-text-input-example" type="text" value="Some text goes in here">
8
9
  </form>
9
10
  <% end %>
10
11
  <% end %>
@@ -7,7 +7,6 @@ module Primer
7
7
  # @label Playground
8
8
  #
9
9
  # @param name text
10
- # @param id text
11
10
  # @param value text
12
11
  # @param label text
13
12
  # @param caption text
@@ -15,7 +14,6 @@ module Primer
15
14
  # @param disabled toggle
16
15
  def playground(
17
16
  name: "my-radio-button",
18
- id: nil,
19
17
  value: "bsg",
20
18
  label: "Battlestar Galactica",
21
19
  caption: "A pretty good show",
@@ -24,7 +22,6 @@ module Primer
24
22
  )
25
23
  system_arguments = {
26
24
  name: name,
27
- id: id,
28
25
  value: value,
29
26
  label: label,
30
27
  caption: caption,
@@ -2589,7 +2589,84 @@
2589
2589
 
2590
2590
  ],
2591
2591
  "previews": [
2592
-
2592
+ {
2593
+ "preview_path": "primer/alpha/check_box/playground",
2594
+ "name": "playground",
2595
+ "snapshot": "false",
2596
+ "skip_rules": {
2597
+ "wont_fix": [
2598
+ "region"
2599
+ ],
2600
+ "will_fix": [
2601
+ "color-contrast"
2602
+ ]
2603
+ }
2604
+ },
2605
+ {
2606
+ "preview_path": "primer/alpha/check_box/default",
2607
+ "name": "default",
2608
+ "snapshot": "false",
2609
+ "skip_rules": {
2610
+ "wont_fix": [
2611
+ "region"
2612
+ ],
2613
+ "will_fix": [
2614
+ "color-contrast"
2615
+ ]
2616
+ }
2617
+ },
2618
+ {
2619
+ "preview_path": "primer/alpha/check_box/with_caption",
2620
+ "name": "with_caption",
2621
+ "snapshot": "true",
2622
+ "skip_rules": {
2623
+ "wont_fix": [
2624
+ "region"
2625
+ ],
2626
+ "will_fix": [
2627
+ "color-contrast"
2628
+ ]
2629
+ }
2630
+ },
2631
+ {
2632
+ "preview_path": "primer/alpha/check_box/checked",
2633
+ "name": "checked",
2634
+ "snapshot": "false",
2635
+ "skip_rules": {
2636
+ "wont_fix": [
2637
+ "region"
2638
+ ],
2639
+ "will_fix": [
2640
+ "color-contrast"
2641
+ ]
2642
+ }
2643
+ },
2644
+ {
2645
+ "preview_path": "primer/alpha/check_box/visually_hide_label",
2646
+ "name": "visually_hide_label",
2647
+ "snapshot": "false",
2648
+ "skip_rules": {
2649
+ "wont_fix": [
2650
+ "region"
2651
+ ],
2652
+ "will_fix": [
2653
+ "color-contrast"
2654
+ ]
2655
+ }
2656
+ },
2657
+ {
2658
+ "preview_path": "primer/alpha/check_box/disabled",
2659
+ "name": "disabled",
2660
+ "snapshot": "false",
2661
+ "skip_rules": {
2662
+ "wont_fix": [
2663
+ "region"
2664
+ ],
2665
+ "will_fix": [
2666
+ "color-contrast"
2667
+ ]
2668
+ }
2669
+ }
2593
2670
  ],
2594
2671
  "subcomponents": [
2595
2672
 
@@ -5937,7 +6014,84 @@
5937
6014
 
5938
6015
  ],
5939
6016
  "previews": [
5940
-
6017
+ {
6018
+ "preview_path": "primer/alpha/radio_button/playground",
6019
+ "name": "playground",
6020
+ "snapshot": "false",
6021
+ "skip_rules": {
6022
+ "wont_fix": [
6023
+ "region"
6024
+ ],
6025
+ "will_fix": [
6026
+ "color-contrast"
6027
+ ]
6028
+ }
6029
+ },
6030
+ {
6031
+ "preview_path": "primer/alpha/radio_button/default",
6032
+ "name": "default",
6033
+ "snapshot": "true",
6034
+ "skip_rules": {
6035
+ "wont_fix": [
6036
+ "region"
6037
+ ],
6038
+ "will_fix": [
6039
+ "color-contrast"
6040
+ ]
6041
+ }
6042
+ },
6043
+ {
6044
+ "preview_path": "primer/alpha/radio_button/with_caption",
6045
+ "name": "with_caption",
6046
+ "snapshot": "true",
6047
+ "skip_rules": {
6048
+ "wont_fix": [
6049
+ "region"
6050
+ ],
6051
+ "will_fix": [
6052
+ "color-contrast"
6053
+ ]
6054
+ }
6055
+ },
6056
+ {
6057
+ "preview_path": "primer/alpha/radio_button/checked",
6058
+ "name": "checked",
6059
+ "snapshot": "true",
6060
+ "skip_rules": {
6061
+ "wont_fix": [
6062
+ "region"
6063
+ ],
6064
+ "will_fix": [
6065
+ "color-contrast"
6066
+ ]
6067
+ }
6068
+ },
6069
+ {
6070
+ "preview_path": "primer/alpha/radio_button/visually_hide_label",
6071
+ "name": "visually_hide_label",
6072
+ "snapshot": "true",
6073
+ "skip_rules": {
6074
+ "wont_fix": [
6075
+ "region"
6076
+ ],
6077
+ "will_fix": [
6078
+ "color-contrast"
6079
+ ]
6080
+ }
6081
+ },
6082
+ {
6083
+ "preview_path": "primer/alpha/radio_button/disabled",
6084
+ "name": "disabled",
6085
+ "snapshot": "true",
6086
+ "skip_rules": {
6087
+ "wont_fix": [
6088
+ "region"
6089
+ ],
6090
+ "will_fix": [
6091
+ "color-contrast"
6092
+ ]
6093
+ }
6094
+ }
5941
6095
  ],
5942
6096
  "subcomponents": [
5943
6097