@hashicorp/design-system-components 3.4.0 → 3.5.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 +85 -21
- package/addon/components/hds/code-block/index.hbs +3 -6
- package/addon/components/hds/code-block/index.js +24 -20
- package/addon/components/hds/flyout/index.hbs +1 -0
- package/addon/components/hds/flyout/index.js +20 -7
- package/addon/components/hds/icon-tile/index.js +1 -0
- package/addon/components/hds/modal/index.hbs +1 -0
- package/addon/components/hds/modal/index.js +35 -22
- package/addon/components/hds/tabs/panel.js +0 -2
- package/addon/components/hds/tabs/tab.js +0 -2
- package/app/styles/components/accordion.scss +8 -8
- package/app/styles/components/app-footer.scss +6 -6
- package/app/styles/components/badge-count.scss +6 -6
- package/app/styles/components/badge.scss +8 -8
- package/app/styles/components/code-block/index.scss +9 -9
- package/app/styles/components/code-block/theme.scss +1 -1
- package/app/styles/components/form/toggle.scss +11 -11
- package/app/styles/components/icon-tile.scss +14 -14
- package/app/styles/components/link/standalone.scss +10 -10
- package/app/styles/components/pagination.scss +5 -5
- package/app/styles/components/segmented-group.scss +3 -3
- package/app/styles/components/side-nav/content.scss +4 -3
- package/app/styles/components/stepper/step-indicator.scss +15 -15
- package/app/styles/components/stepper/task-indicator.scss +5 -5
- package/app/styles/mixins/_button.scss +10 -10
- package/package.json +3 -4
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,69 @@
|
|
|
1
1
|
# @hashicorp/design-system-components
|
|
2
2
|
|
|
3
|
+
## 3.5.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
`IconTile` - updated component adding support for `vault-radar` product
|
|
8
|
+
|
|
9
|
+
<small class="doc-whats-new-changelog-metadata">[#1904](https://github.com/hashicorp/design-system/pull/1904)</small>
|
|
10
|
+
|
|
11
|
+
<div class="doc-whats-new-changelog-separator"></div>
|
|
12
|
+
|
|
13
|
+
### Patch Changes
|
|
14
|
+
|
|
15
|
+
`SideNav::List::Title`, `SideNav::List::BackLink`, `SideNav::List::Link`: fixed issue with long text strings without spaces not wrapping
|
|
16
|
+
|
|
17
|
+
<small class="doc-whats-new-changelog-metadata">[#1899](https://github.com/hashicorp/design-system/pull/1899)</small>
|
|
18
|
+
|
|
19
|
+
<div class="doc-whats-new-changelog-separator"></div>
|
|
20
|
+
|
|
21
|
+
Added `hds-` prefix to Sass variables for component styles (where missing).
|
|
22
|
+
|
|
23
|
+
<small class="doc-whats-new-changelog-metadata">[#1903](https://github.com/hashicorp/design-system/pull/1903)</small>
|
|
24
|
+
|
|
25
|
+
<div class="doc-whats-new-changelog-separator"></div>
|
|
26
|
+
|
|
27
|
+
`Tabs` - removed `@cached` decorator and the associated `ember-cached-decorator-polyfill`
|
|
28
|
+
|
|
29
|
+
<small class="doc-whats-new-changelog-metadata">[#1905](https://github.com/hashicorp/design-system/pull/1905)</small>
|
|
30
|
+
|
|
31
|
+
<div class="doc-whats-new-changelog-separator"></div>
|
|
32
|
+
|
|
33
|
+
`CodeBlock` - Fixed the default token color in the syntax highlighting theme.
|
|
34
|
+
|
|
35
|
+
<small class="doc-whats-new-changelog-metadata">[#1893](https://github.com/hashicorp/design-system/pull/1893)</small>
|
|
36
|
+
|
|
37
|
+
<div class="doc-whats-new-changelog-separator"></div>
|
|
38
|
+
|
|
39
|
+
**🔄 Updated dependencies:**
|
|
40
|
+
|
|
41
|
+
- @hashicorp/design-system-tokens@1.10.0
|
|
42
|
+
- @hashicorp/ember-flight-icons@4.0.6
|
|
43
|
+
|
|
44
|
+
## 3.4.1
|
|
45
|
+
|
|
46
|
+
### Patch Changes
|
|
47
|
+
|
|
48
|
+
`Modal` - Removed `close` event listener on destroy
|
|
49
|
+
`Flyout` - Removed `close` event listener on destroy
|
|
50
|
+
|
|
51
|
+
<small class="doc-whats-new-changelog-metadata">[#1887](https://github.com/hashicorp/design-system/pull/1887)</small>
|
|
52
|
+
|
|
53
|
+
<div class="doc-whats-new-changelog-separator"></div>
|
|
54
|
+
|
|
55
|
+
`CodeBlock` - Fixed issues with dynamic content, compile warning, and line number alignment
|
|
56
|
+
|
|
57
|
+
<small class="doc-whats-new-changelog-metadata">[#1853](https://github.com/hashicorp/design-system/pull/1853)</small>
|
|
58
|
+
|
|
59
|
+
<div class="doc-whats-new-changelog-separator"></div>
|
|
60
|
+
|
|
61
|
+
`SegmentedGroup` - Fixed issue with border-radius of single child element being overridden
|
|
62
|
+
|
|
63
|
+
<small class="doc-whats-new-changelog-metadata">[#1892](https://github.com/hashicorp/design-system/pull/1892)</small>
|
|
64
|
+
|
|
65
|
+
<div class="doc-whats-new-changelog-separator"></div>
|
|
66
|
+
|
|
3
67
|
## 3.4.0
|
|
4
68
|
|
|
5
69
|
### Minor Changes
|
|
@@ -18,7 +82,7 @@
|
|
|
18
82
|
|
|
19
83
|
### Patch Changes
|
|
20
84
|
|
|
21
|
-
`
|
|
85
|
+
`AppFooter` - Changed visual alignment from right-aligned to centered.
|
|
22
86
|
|
|
23
87
|
<small class="doc-whats-new-changelog-metadata">[#1867](https://github.com/hashicorp/design-system/pull/1867)</small>
|
|
24
88
|
|
|
@@ -56,11 +120,11 @@
|
|
|
56
120
|
|
|
57
121
|
### Minor Changes
|
|
58
122
|
|
|
59
|
-
`
|
|
60
|
-
`
|
|
61
|
-
`
|
|
62
|
-
`
|
|
63
|
-
`
|
|
123
|
+
`Form::CharacterCount` - Added new component
|
|
124
|
+
`Form::Field` - Added `CharacterCount` contextual component
|
|
125
|
+
`Form::MaskedInput::Field` - Added `CharacterCount` contextual component
|
|
126
|
+
`Form::TextInput::Field` - Added `CharacterCount` contextual component
|
|
127
|
+
`Form::Textarea::Field` - Added `CharacterCount` contextual component
|
|
64
128
|
|
|
65
129
|
<small class="doc-whats-new-changelog-metadata">[#1802](https://github.com/hashicorp/design-system/pull/1802)</small>
|
|
66
130
|
|
|
@@ -68,11 +132,11 @@
|
|
|
68
132
|
|
|
69
133
|
### Patch Changes
|
|
70
134
|
|
|
71
|
-
`Button` -
|
|
135
|
+
`Button` - Updated DOM structure to contain only `span` elements
|
|
72
136
|
|
|
73
|
-
`Dropdown` -
|
|
137
|
+
`Dropdown` - Updated button elements DOM structure to contain only `span` elements
|
|
74
138
|
|
|
75
|
-
`Link::Standalone` -
|
|
139
|
+
`Link::Standalone` - Updated DOM structure to contain only `span` elements
|
|
76
140
|
|
|
77
141
|
<small class="doc-whats-new-changelog-metadata">[#1840](https://github.com/hashicorp/design-system/pull/1840)</small>
|
|
78
142
|
|
|
@@ -88,9 +152,9 @@
|
|
|
88
152
|
|
|
89
153
|
<div class="doc-whats-new-changelog-separator"></div>
|
|
90
154
|
|
|
91
|
-
`
|
|
155
|
+
`Table` - Updated `@columns` object to support `isVisuallyHidden` argument
|
|
92
156
|
|
|
93
|
-
- `
|
|
157
|
+
- `Table::Th` - Updated to support `isVisuallyHidden` argument
|
|
94
158
|
|
|
95
159
|
<small class="doc-whats-new-changelog-metadata">[#1819](https://github.com/hashicorp/design-system/pull/1819)</small>
|
|
96
160
|
|
|
@@ -199,7 +263,7 @@ Upgraded the following dependencies:
|
|
|
199
263
|
|
|
200
264
|
### Patch Changes
|
|
201
265
|
|
|
202
|
-
|
|
266
|
+
Explicitly added `ember-element-helper` as dependency for the `components` package
|
|
203
267
|
|
|
204
268
|
<small class="doc-whats-new-changelog-metadata">[#1751](https://github.com/hashicorp/design-system/pull/1751)</small>
|
|
205
269
|
|
|
@@ -217,33 +281,33 @@ explicitly added `ember-element-helper` as dependency for the `components` packa
|
|
|
217
281
|
|
|
218
282
|
### Major Changes
|
|
219
283
|
|
|
220
|
-
|
|
284
|
+
Dropped support for Node 14
|
|
221
285
|
|
|
222
286
|
<small class="doc-whats-new-changelog-metadata">[#1634](https://github.com/hashicorp/design-system/pull/1634)</small>
|
|
223
287
|
|
|
224
288
|
<div class="doc-whats-new-changelog-separator"></div>
|
|
225
289
|
|
|
226
|
-
`
|
|
290
|
+
`Form::VisibilityToggle` - Added component as a form base element
|
|
227
291
|
|
|
228
|
-
`
|
|
292
|
+
`Form::TextInput::Field` - Added `Form::VisibilityToggle` to password inputs (controlled via `@hasVisibilityToggle` - Notice that this is set to be visible by default now)
|
|
229
293
|
|
|
230
|
-
`
|
|
294
|
+
`Form::MaskedInput` - Refactored to use `Form::VisibilityToggle`
|
|
231
295
|
|
|
232
|
-
`
|
|
296
|
+
`Form::MaskedInput` - Renamed `@isMasked` to `@isContentMasked`
|
|
233
297
|
|
|
234
298
|
To migrate:
|
|
235
299
|
|
|
236
|
-
- in `
|
|
300
|
+
- in `Form::MaskedInput` instances replace `@isMasked` arguments with `@isContentMasked`
|
|
237
301
|
|
|
238
302
|
<small class="doc-whats-new-changelog-metadata">[#1634](https://github.com/hashicorp/design-system/pull/1634)</small>
|
|
239
303
|
|
|
240
304
|
<div class="doc-whats-new-changelog-separator"></div>
|
|
241
305
|
|
|
242
|
-
`
|
|
306
|
+
`Dropdown` – Removed `@listPosition` `left` and `right` (use `bottom-left` and `bottom-right`, respectively).
|
|
243
307
|
|
|
244
308
|
To migrate:
|
|
245
309
|
|
|
246
|
-
- in `
|
|
310
|
+
- in `Dropdown` instances:
|
|
247
311
|
- replace `@listPosition="left"` with `@listPosition="bottom-left"`
|
|
248
312
|
- replace `@listPosition="right"` with `@listPosition="bottom-right"`
|
|
249
313
|
|
|
@@ -255,7 +319,7 @@ To migrate:
|
|
|
255
319
|
|
|
256
320
|
To migrate:
|
|
257
321
|
|
|
258
|
-
- rename all the `extraBefore/After` instances yielded within the
|
|
322
|
+
- rename all the `extraBefore/After` instances yielded within the `SideNav` component to `ExtraBefore/After`
|
|
259
323
|
|
|
260
324
|
<small class="doc-whats-new-changelog-metadata">[#1634](https://github.com/hashicorp/design-system/pull/1634)</small>
|
|
261
325
|
|
|
@@ -9,19 +9,16 @@
|
|
|
9
9
|
{{~yield (hash Description=(component "hds/code-block/description"))~}}
|
|
10
10
|
</div>
|
|
11
11
|
<div class="hds-code-block__body">
|
|
12
|
+
{{! content within pre tag is whitespace-sensitive; do not add new lines! }}
|
|
12
13
|
<pre
|
|
13
14
|
class="hds-code-block__code"
|
|
14
15
|
{{style maxHeight=@maxHeight}}
|
|
15
16
|
data-line={{@highlightLines}}
|
|
16
17
|
id={{this.preCodeId}}
|
|
17
18
|
tabindex="0"
|
|
18
|
-
>
|
|
19
|
-
{{~! ~}}
|
|
20
|
-
<code {{did-insert this.setPrismCode}} {{did-update this.setPrismCode this.code @language}}>
|
|
19
|
+
><code {{did-insert this.setPrismCode}} {{did-update this.setPrismCode this.code @language}}>
|
|
21
20
|
{{~this.prismCode~}}
|
|
22
|
-
</code>
|
|
23
|
-
{{~! ~}}
|
|
24
|
-
</pre>
|
|
21
|
+
</code></pre>
|
|
25
22
|
|
|
26
23
|
{{#if @hasCopyButton}}
|
|
27
24
|
<Hds::CodeBlock::CopyButton @targetToCopy="#{{this.preCodeId}}" aria-describedby={{this.preCodeId}} />
|
|
@@ -7,6 +7,7 @@ import Component from '@glimmer/component';
|
|
|
7
7
|
import { action } from '@ember/object';
|
|
8
8
|
import { tracked } from '@glimmer/tracking';
|
|
9
9
|
import { assert } from '@ember/debug';
|
|
10
|
+
import { next, schedule } from '@ember/runloop';
|
|
10
11
|
import { htmlSafe } from '@ember/template';
|
|
11
12
|
import { guidFor } from '@ember/object/internals';
|
|
12
13
|
|
|
@@ -107,27 +108,30 @@ export default class HdsCodeBlockIndexComponent extends Component {
|
|
|
107
108
|
const grammar = Prism.languages[language];
|
|
108
109
|
|
|
109
110
|
if (code) {
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
111
|
+
next(() => {
|
|
112
|
+
if (language && grammar) {
|
|
113
|
+
this.prismCode = htmlSafe(Prism.highlight(code, grammar, language));
|
|
114
|
+
} else {
|
|
115
|
+
this.prismCode = htmlSafe(Prism.util.encode(code));
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
// Force prism-line-numbers plugin initialization, required for Prism.highlight usage
|
|
119
|
+
// See https://github.com/PrismJS/prism/issues/1234
|
|
120
|
+
Prism.hooks.run('complete', {
|
|
121
|
+
code,
|
|
122
|
+
element,
|
|
123
|
+
});
|
|
124
|
+
|
|
125
|
+
// Force prism-line-highlight plugin initialization
|
|
126
|
+
// Context: https://github.com/hashicorp/design-system/pull/1749#discussion_r1374288785
|
|
127
|
+
if (this.args.highlightLines) {
|
|
128
|
+
// we need to delay re-evaluating the context for prism-line-highlight for as much as possible, and `afterRender` is the 'latest' we can use in the component lifecycle
|
|
129
|
+
schedule('afterRender', () => {
|
|
130
|
+
// we piggy-back on the plugin's `resize` event listener to trigger a new call of the `highlightLines` function: https://github.com/PrismJS/prism/blob/master/plugins/line-highlight/prism-line-highlight.js#L337
|
|
131
|
+
if (window) window.dispatchEvent(new Event('resize'));
|
|
132
|
+
});
|
|
133
|
+
}
|
|
121
134
|
});
|
|
122
|
-
|
|
123
|
-
// Force prism-line-highlight plugin initialization
|
|
124
|
-
// Context: https://github.com/hashicorp/design-system/pull/1749#discussion_r1374288785
|
|
125
|
-
if (this.args.highlightLines) {
|
|
126
|
-
setTimeout(() => {
|
|
127
|
-
// we piggy-back on the plugin's `resize` event listener to trigger a new call of the `highlightLines` function: https://github.com/PrismJS/prism/blob/master/plugins/line-highlight/prism-line-highlight.js#L337
|
|
128
|
-
if (window) window.dispatchEvent(new Event('resize'));
|
|
129
|
-
}, 100);
|
|
130
|
-
}
|
|
131
135
|
}
|
|
132
136
|
}
|
|
133
137
|
|
|
@@ -7,6 +7,7 @@
|
|
|
7
7
|
...attributes
|
|
8
8
|
aria-labelledby={{this.id}}
|
|
9
9
|
{{did-insert this.didInsert}}
|
|
10
|
+
{{will-destroy this.willDestroyNode}}
|
|
10
11
|
{{focus-trap isActive=this.isOpen focusTrapOptions=(hash onDeactivate=this.onDismiss clickOutsideDeactivates=true)}}
|
|
11
12
|
>
|
|
12
13
|
{{yield (hash Header=(component "hds/flyout/header" id=this.id onDismiss=this.onDismiss))}}
|
|
@@ -67,6 +67,14 @@ export default class HdsFlyoutIndexComponent extends Component {
|
|
|
67
67
|
return classes.join(' ');
|
|
68
68
|
}
|
|
69
69
|
|
|
70
|
+
@action registerOnCloseCallback() {
|
|
71
|
+
if (this.args.onClose && typeof this.args.onClose === 'function') {
|
|
72
|
+
this.args.onClose();
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
this.isOpen = false;
|
|
76
|
+
}
|
|
77
|
+
|
|
70
78
|
@action
|
|
71
79
|
didInsert(element) {
|
|
72
80
|
// Store references of `<dialog>` and `<body>` elements
|
|
@@ -94,13 +102,7 @@ export default class HdsFlyoutIndexComponent extends Component {
|
|
|
94
102
|
}
|
|
95
103
|
|
|
96
104
|
// Register "onClose" callback function to be called when a native 'close' event is dispatched
|
|
97
|
-
this.element.addEventListener('close',
|
|
98
|
-
if (this.args.onClose && typeof this.args.onClose === 'function') {
|
|
99
|
-
this.args.onClose();
|
|
100
|
-
}
|
|
101
|
-
|
|
102
|
-
this.isOpen = false;
|
|
103
|
-
});
|
|
105
|
+
this.element.addEventListener('close', this.registerOnCloseCallback, true);
|
|
104
106
|
|
|
105
107
|
// If the flyout dialog is not already open
|
|
106
108
|
if (!this.element.open) {
|
|
@@ -108,6 +110,17 @@ export default class HdsFlyoutIndexComponent extends Component {
|
|
|
108
110
|
}
|
|
109
111
|
}
|
|
110
112
|
|
|
113
|
+
@action
|
|
114
|
+
willDestroyNode() {
|
|
115
|
+
if (this.element) {
|
|
116
|
+
this.element.removeEventListener(
|
|
117
|
+
'close',
|
|
118
|
+
this.registerOnCloseCallback,
|
|
119
|
+
true
|
|
120
|
+
);
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
|
|
111
124
|
@action
|
|
112
125
|
open() {
|
|
113
126
|
// Make flyout dialog visible using the native `showModal` method
|
|
@@ -7,6 +7,7 @@
|
|
|
7
7
|
...attributes
|
|
8
8
|
aria-labelledby={{this.id}}
|
|
9
9
|
{{did-insert this.didInsert}}
|
|
10
|
+
{{will-destroy this.willDestroyNode}}
|
|
10
11
|
{{focus-trap isActive=this.isOpen focusTrapOptions=(hash onDeactivate=this.onDismiss clickOutsideDeactivates=true)}}
|
|
11
12
|
>
|
|
12
13
|
{{yield (hash Header=(component "hds/modal/header" id=this.id onDismiss=this.onDismiss))}}
|
|
@@ -93,6 +93,29 @@ export default class HdsModalIndexComponent extends Component {
|
|
|
93
93
|
return classes.join(' ');
|
|
94
94
|
}
|
|
95
95
|
|
|
96
|
+
@action registerOnCloseCallback() {
|
|
97
|
+
if (
|
|
98
|
+
!this.isDismissDisabled &&
|
|
99
|
+
this.args.onClose &&
|
|
100
|
+
typeof this.args.onClose === 'function'
|
|
101
|
+
) {
|
|
102
|
+
this.args.onClose();
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
// If the dismissal of the modal is disabled, we keep the modal open/visible otherwise we mark it as closed
|
|
106
|
+
if (this.isDismissDisabled) {
|
|
107
|
+
// If, in a chain of events, the element is not attached to the DOM, the `showModal` would fail
|
|
108
|
+
// so we add this safeguard condition that checks for the `<dialog>` to have a parent
|
|
109
|
+
if (this.element.parentElement) {
|
|
110
|
+
// As there is no way to `preventDefault` on `close` events, we call the `showModal` function
|
|
111
|
+
// preserving the state of the modal dialog
|
|
112
|
+
this.element.showModal();
|
|
113
|
+
}
|
|
114
|
+
} else {
|
|
115
|
+
this.isOpen = false;
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
|
|
96
119
|
@action
|
|
97
120
|
didInsert(element) {
|
|
98
121
|
// Store references of `<dialog>` and `<body>` elements
|
|
@@ -120,28 +143,7 @@ export default class HdsModalIndexComponent extends Component {
|
|
|
120
143
|
}
|
|
121
144
|
|
|
122
145
|
// Register "onClose" callback function to be called when a native 'close' event is dispatched
|
|
123
|
-
this.element.addEventListener('close',
|
|
124
|
-
if (
|
|
125
|
-
!this.isDismissDisabled &&
|
|
126
|
-
this.args.onClose &&
|
|
127
|
-
typeof this.args.onClose === 'function'
|
|
128
|
-
) {
|
|
129
|
-
this.args.onClose();
|
|
130
|
-
}
|
|
131
|
-
|
|
132
|
-
// If the dismissal of the modal is disabled, we keep the modal open/visible otherwise we mark it as closed
|
|
133
|
-
if (this.isDismissDisabled) {
|
|
134
|
-
// If, in a chain of events, the element is not attached to the DOM, the `showModal` would fail
|
|
135
|
-
// so we add this safeguard condition that checks for the `<dialog>` to have a parent
|
|
136
|
-
if (this.element.parentElement) {
|
|
137
|
-
// As there is no way to `preventDefault` on `close` events, we call the `showModal` function
|
|
138
|
-
// preserving the state of the modal dialog
|
|
139
|
-
this.element.showModal();
|
|
140
|
-
}
|
|
141
|
-
} else {
|
|
142
|
-
this.isOpen = false;
|
|
143
|
-
}
|
|
144
|
-
});
|
|
146
|
+
this.element.addEventListener('close', this.registerOnCloseCallback, true);
|
|
145
147
|
|
|
146
148
|
// If the modal dialog is not already open
|
|
147
149
|
if (!this.element.open) {
|
|
@@ -149,6 +151,17 @@ export default class HdsModalIndexComponent extends Component {
|
|
|
149
151
|
}
|
|
150
152
|
}
|
|
151
153
|
|
|
154
|
+
@action
|
|
155
|
+
willDestroyNode() {
|
|
156
|
+
if (this.element) {
|
|
157
|
+
this.element.removeEventListener(
|
|
158
|
+
'close',
|
|
159
|
+
this.registerOnCloseCallback,
|
|
160
|
+
true
|
|
161
|
+
);
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
|
|
152
165
|
@action
|
|
153
166
|
open() {
|
|
154
167
|
// Make modal dialog visible using the native `showModal` method
|
|
@@ -4,7 +4,6 @@
|
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
6
|
import Component from '@glimmer/component';
|
|
7
|
-
import { cached } from '@glimmer/tracking';
|
|
8
7
|
import { guidFor } from '@ember/object/internals';
|
|
9
8
|
import { action } from '@ember/object';
|
|
10
9
|
|
|
@@ -15,7 +14,6 @@ export default class HdsTabsPanelComponent extends Component {
|
|
|
15
14
|
*/
|
|
16
15
|
panelId = 'panel-' + guidFor(this);
|
|
17
16
|
|
|
18
|
-
@cached
|
|
19
17
|
get nodeIndex() {
|
|
20
18
|
return this.args.panelIds
|
|
21
19
|
? this.args.panelIds.indexOf(this.panelId)
|
|
@@ -4,7 +4,6 @@
|
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
6
|
import Component from '@glimmer/component';
|
|
7
|
-
import { cached } from '@glimmer/tracking';
|
|
8
7
|
import { guidFor } from '@ember/object/internals';
|
|
9
8
|
import { action } from '@ember/object';
|
|
10
9
|
|
|
@@ -15,7 +14,6 @@ export default class HdsTabsTabComponent extends Component {
|
|
|
15
14
|
*/
|
|
16
15
|
tabId = 'tab-' + guidFor(this);
|
|
17
16
|
|
|
18
|
-
@cached
|
|
19
17
|
get nodeIndex() {
|
|
20
18
|
return this.args.tabIds ? this.args.tabIds.indexOf(this.tabId) : undefined;
|
|
21
19
|
}
|
|
@@ -10,8 +10,8 @@
|
|
|
10
10
|
@use "../mixins/button" as *;
|
|
11
11
|
@use "../mixins/focus-ring" as *;
|
|
12
12
|
|
|
13
|
-
$accordion-item-padding: 16px;
|
|
14
|
-
$accordion-item-border-radius: 6px;
|
|
13
|
+
$hds-accordion-item-padding: 16px;
|
|
14
|
+
$hds-accordion-item-border-radius: 6px;
|
|
15
15
|
|
|
16
16
|
// ACCORDION COMPONENT (wrapper)
|
|
17
17
|
|
|
@@ -25,7 +25,7 @@ $accordion-item-border-radius: 6px;
|
|
|
25
25
|
|
|
26
26
|
.hds-accordion-item {
|
|
27
27
|
background: var(--token-color-surface-primary);
|
|
28
|
-
border-radius: $accordion-item-border-radius;
|
|
28
|
+
border-radius: $hds-accordion-item-border-radius;
|
|
29
29
|
|
|
30
30
|
&.hds-accordion-item--does-not-contain-interactive {
|
|
31
31
|
box-shadow: var(--token-surface-mid-box-shadow);
|
|
@@ -49,9 +49,9 @@ $accordion-item-border-radius: 6px;
|
|
|
49
49
|
gap: 12px;
|
|
50
50
|
align-items: center;
|
|
51
51
|
padding:
|
|
52
|
-
$accordion-item-padding
|
|
53
|
-
$accordion-item-padding
|
|
54
|
-
$accordion-item-padding
|
|
52
|
+
$hds-accordion-item-padding
|
|
53
|
+
$hds-accordion-item-padding
|
|
54
|
+
$hds-accordion-item-padding
|
|
55
55
|
12px; // by design
|
|
56
56
|
}
|
|
57
57
|
|
|
@@ -73,7 +73,7 @@ $accordion-item-border-radius: 6px;
|
|
|
73
73
|
&::after {
|
|
74
74
|
position: absolute;
|
|
75
75
|
display: block;
|
|
76
|
-
border-radius: $accordion-item-border-radius;
|
|
76
|
+
border-radius: $hds-accordion-item-border-radius;
|
|
77
77
|
content: "";
|
|
78
78
|
inset: 0;
|
|
79
79
|
}
|
|
@@ -116,5 +116,5 @@ $accordion-item-border-radius: 6px;
|
|
|
116
116
|
// CONTENT BLOCK
|
|
117
117
|
|
|
118
118
|
.hds-accordion-item__content {
|
|
119
|
-
padding: 4px $accordion-item-padding $accordion-item-padding $accordion-item-padding;
|
|
119
|
+
padding: 4px $hds-accordion-item-padding $hds-accordion-item-padding $hds-accordion-item-padding;
|
|
120
120
|
}
|
|
@@ -7,13 +7,13 @@
|
|
|
7
7
|
// app-footer
|
|
8
8
|
//
|
|
9
9
|
|
|
10
|
-
$app-footer-gap: 24px;
|
|
11
|
-
$app-footer-icon-text-gap: 6px;
|
|
10
|
+
$hds-app-footer-gap: 24px;
|
|
11
|
+
$hds-app-footer-icon-text-gap: 6px;
|
|
12
12
|
|
|
13
13
|
.hds-app-footer {
|
|
14
14
|
display: flex;
|
|
15
15
|
flex-wrap: wrap;
|
|
16
|
-
gap: $app-footer-gap;
|
|
16
|
+
gap: $hds-app-footer-gap;
|
|
17
17
|
justify-content: center;
|
|
18
18
|
padding: 24px;
|
|
19
19
|
color: var(--app-footer-foreground-color);
|
|
@@ -29,7 +29,7 @@ $app-footer-icon-text-gap: 6px;
|
|
|
29
29
|
.hds-app-footer__legal-links {
|
|
30
30
|
display: flex;
|
|
31
31
|
flex-wrap: wrap;
|
|
32
|
-
gap: $app-footer-gap;
|
|
32
|
+
gap: $hds-app-footer-gap;
|
|
33
33
|
align-items: center;
|
|
34
34
|
justify-content: center;
|
|
35
35
|
width: fit-content;
|
|
@@ -42,7 +42,7 @@ $app-footer-icon-text-gap: 6px;
|
|
|
42
42
|
.hds-app-footer__status-link {
|
|
43
43
|
// custom spacing for the status link (internally is using the "AppFooter::Link")
|
|
44
44
|
// Note: we increase specificity because otherwise is overwritten by the order of imports of components scss files
|
|
45
|
-
&.hds-link-inline--icon-leading > .hds-link-inline__icon { margin-right: $app-footer-icon-text-gap; }
|
|
45
|
+
&.hds-link-inline--icon-leading > .hds-link-inline__icon { margin-right: $hds-app-footer-icon-text-gap; }
|
|
46
46
|
|
|
47
47
|
.flight-icon {
|
|
48
48
|
fill: var(--hds-app-footer-status-icon-color, currentColor);
|
|
@@ -98,7 +98,7 @@ $app-footer-icon-text-gap: 6px;
|
|
|
98
98
|
|
|
99
99
|
.hds-app-footer__copyright {
|
|
100
100
|
display: flex;
|
|
101
|
-
gap: $app-footer-icon-text-gap;
|
|
101
|
+
gap: $hds-app-footer-icon-text-gap;
|
|
102
102
|
align-items: center;
|
|
103
103
|
color: var(--app-footer-copyright-text-color);
|
|
104
104
|
|
|
@@ -26,7 +26,7 @@ $hds-badge-count-border-width: 1px;
|
|
|
26
26
|
// SIZE
|
|
27
27
|
|
|
28
28
|
// these values later may come from the design tokens
|
|
29
|
-
$size-props: (
|
|
29
|
+
$hds-badge-count-size-props: (
|
|
30
30
|
"small": (
|
|
31
31
|
"font-size": 0.8125rem, // 13px
|
|
32
32
|
"height": 1.25rem,
|
|
@@ -52,11 +52,11 @@ $size-props: (
|
|
|
52
52
|
|
|
53
53
|
@each $size in $hds-badge-count-sizes {
|
|
54
54
|
.hds-badge-count--size-#{$size} {
|
|
55
|
-
min-height: map-get($size-props, $size, "height");
|
|
56
|
-
padding: calc(#{map-get($size-props, $size, "padding-vertical")} - #{$hds-badge-count-border-width}) calc(#{map-get($size-props, $size, "padding-horizontal")} - #{$hds-badge-count-border-width});
|
|
57
|
-
font-size: map-get($size-props, $size, "font-size");
|
|
58
|
-
line-height: map-get($size-props, $size, "line-height");
|
|
59
|
-
border-radius: math.div(map-get($size-props, $size, "height"), 2);
|
|
55
|
+
min-height: map-get($hds-badge-count-size-props, $size, "height");
|
|
56
|
+
padding: calc(#{map-get($hds-badge-count-size-props, $size, "padding-vertical")} - #{$hds-badge-count-border-width}) calc(#{map-get($hds-badge-count-size-props, $size, "padding-horizontal")} - #{$hds-badge-count-border-width});
|
|
57
|
+
font-size: map-get($hds-badge-count-size-props, $size, "font-size");
|
|
58
|
+
line-height: map-get($hds-badge-count-size-props, $size, "line-height");
|
|
59
|
+
border-radius: math.div(map-get($hds-badge-count-size-props, $size, "height"), 2);
|
|
60
60
|
}
|
|
61
61
|
}
|
|
62
62
|
|
|
@@ -37,7 +37,7 @@ $hds-badge-border-width: 1px;
|
|
|
37
37
|
// SIZE
|
|
38
38
|
|
|
39
39
|
// these values later may come from the design tokens
|
|
40
|
-
$size-props: (
|
|
40
|
+
$hds-badge-size-props: (
|
|
41
41
|
"small": (
|
|
42
42
|
"font-size": 0.8125rem, // 13px
|
|
43
43
|
"gap": 0.25rem,
|
|
@@ -69,18 +69,18 @@ $size-props: (
|
|
|
69
69
|
|
|
70
70
|
@each $size in $hds-badge-sizes {
|
|
71
71
|
.hds-badge--size-#{$size} {
|
|
72
|
-
gap: map-get($size-props, $size, "gap");
|
|
73
|
-
min-height: map-get($size-props, $size, "height");
|
|
74
|
-
padding: calc(#{map-get($size-props, $size, "padding-vertical")} - #{$hds-badge-border-width}) calc(#{map-get($size-props, $size, "padding-horizontal")} - #{$hds-badge-border-width});
|
|
72
|
+
gap: map-get($hds-badge-size-props, $size, "gap");
|
|
73
|
+
min-height: map-get($hds-badge-size-props, $size, "height");
|
|
74
|
+
padding: calc(#{map-get($hds-badge-size-props, $size, "padding-vertical")} - #{$hds-badge-border-width}) calc(#{map-get($hds-badge-size-props, $size, "padding-horizontal")} - #{$hds-badge-border-width});
|
|
75
75
|
|
|
76
76
|
.hds-badge__icon {
|
|
77
|
-
width: map-get($size-props, $size, "icon-size");
|
|
78
|
-
height: map-get($size-props, $size, "icon-size");
|
|
77
|
+
width: map-get($hds-badge-size-props, $size, "icon-size");
|
|
78
|
+
height: map-get($hds-badge-size-props, $size, "icon-size");
|
|
79
79
|
}
|
|
80
80
|
|
|
81
81
|
.hds-badge__text {
|
|
82
|
-
font-size: map-get($size-props, $size, "font-size");
|
|
83
|
-
line-height: map-get($size-props, $size, "line-height");
|
|
82
|
+
font-size: map-get($hds-badge-size-props, $size, "font-size");
|
|
83
|
+
line-height: map-get($hds-badge-size-props, $size, "line-height");
|
|
84
84
|
}
|
|
85
85
|
}
|
|
86
86
|
}
|
|
@@ -14,8 +14,8 @@
|
|
|
14
14
|
@import "theme";
|
|
15
15
|
|
|
16
16
|
// DIMENSIONS
|
|
17
|
-
$code-block-line-numbers-width: 49px; // 3em ≈ 49px
|
|
18
|
-
$code-block-code-padding: 16px;
|
|
17
|
+
$hds-code-block-line-numbers-width: 49px; // 3em ≈ 49px
|
|
18
|
+
$hds-code-block-code-padding: 16px;
|
|
19
19
|
|
|
20
20
|
// CODE-BLOCK PARENT/WRAPPER
|
|
21
21
|
|
|
@@ -73,7 +73,7 @@ $code-block-code-padding: 16px;
|
|
|
73
73
|
display: flex;
|
|
74
74
|
flex-direction: column;
|
|
75
75
|
gap: 4px;
|
|
76
|
-
padding: 8px $code-block-code-padding;
|
|
76
|
+
padding: 8px $hds-code-block-code-padding;
|
|
77
77
|
background-color: var(--hds-code-block-color-surface-faint);
|
|
78
78
|
border-bottom: 1px solid var(--hds-code-block-color-border-primary);
|
|
79
79
|
border-top-left-radius: inherit;
|
|
@@ -128,10 +128,10 @@ $code-block-code-padding: 16px;
|
|
|
128
128
|
@include hds-focus-ring-basic();
|
|
129
129
|
display: block;
|
|
130
130
|
margin: 0;
|
|
131
|
-
padding: $code-block-code-padding;
|
|
131
|
+
padding: $hds-code-block-code-padding;
|
|
132
132
|
overflow: auto;
|
|
133
133
|
font-size: 0.8125rem;
|
|
134
|
-
font-family: var(--
|
|
134
|
+
font-family: var(--token-typography-code-200-font-family);
|
|
135
135
|
border-radius: inherit;
|
|
136
136
|
|
|
137
137
|
::selection {
|
|
@@ -191,16 +191,16 @@ $code-block-code-padding: 16px;
|
|
|
191
191
|
.hds-code-block__code {
|
|
192
192
|
position: relative;
|
|
193
193
|
// reserve space for line numbers
|
|
194
|
-
padding-left: calc(#{$code-block-line-numbers-width} + #{$code-block-code-padding});
|
|
194
|
+
padding-left: calc(#{$hds-code-block-line-numbers-width} + #{$hds-code-block-code-padding});
|
|
195
195
|
}
|
|
196
196
|
|
|
197
197
|
.line-numbers-rows {
|
|
198
198
|
position: absolute;
|
|
199
199
|
top: 0;
|
|
200
200
|
left: 0;
|
|
201
|
-
min-width: $code-block-line-numbers-width;
|
|
201
|
+
min-width: $hds-code-block-line-numbers-width;
|
|
202
202
|
min-height: 100%;
|
|
203
|
-
padding: $code-block-code-padding 0;
|
|
203
|
+
padding: $hds-code-block-code-padding 0;
|
|
204
204
|
border-right: 1px solid var(--hds-code-block-color-border-primary);
|
|
205
205
|
user-select: none;
|
|
206
206
|
pointer-events: none;
|
|
@@ -211,7 +211,7 @@ $code-block-code-padding: 16px;
|
|
|
211
211
|
|
|
212
212
|
&::before {
|
|
213
213
|
display: block;
|
|
214
|
-
padding-right: $code-block-code-padding;
|
|
214
|
+
padding-right: $hds-code-block-code-padding;
|
|
215
215
|
text-align: right;
|
|
216
216
|
content: counter(linenumber);
|
|
217
217
|
}
|
|
@@ -50,7 +50,7 @@
|
|
|
50
50
|
|
|
51
51
|
// Syntax highlighting tokens:
|
|
52
52
|
// general ----
|
|
53
|
-
--hds-code-block-color-token: var(--hds-code-block-color-
|
|
53
|
+
--hds-code-block-color-token: var(--hds-code-block-color-foreground-primary);
|
|
54
54
|
// specific ----
|
|
55
55
|
--hds-code-block-color-atrule: var(--hds-code-block-color-blue);
|
|
56
56
|
--hds-code-block-color-code-block-attr-name: var(--hds-code-block-color-blue);
|
|
@@ -88,17 +88,17 @@
|
|
|
88
88
|
|
|
89
89
|
&::before {
|
|
90
90
|
// notice: to avoid too many nested calc() operation, we have decided to compute directly the values in Sass
|
|
91
|
-
$outline-width: 3px;
|
|
92
|
-
$outline-offset: 1px;
|
|
93
|
-
$shift: $outline-width + $outline-offset + 1px; // here 1px refers to "--token-form-radio-border-width"
|
|
91
|
+
$hds-outline-width: 3px;
|
|
92
|
+
$hds-outline-offset: 1px;
|
|
93
|
+
$hds-shift: $hds-outline-width + $hds-outline-offset + 1px; // here 1px refers to "--token-form-radio-border-width"
|
|
94
94
|
position: absolute;
|
|
95
|
-
top: -$shift;
|
|
96
|
-
right: -$shift;
|
|
97
|
-
bottom: -$shift;
|
|
98
|
-
left: -$shift;
|
|
95
|
+
top: -$hds-shift;
|
|
96
|
+
right: -$hds-shift;
|
|
97
|
+
bottom: -$hds-shift;
|
|
98
|
+
left: -$hds-shift;
|
|
99
99
|
margin: auto;
|
|
100
|
-
border-width: $outline-width;
|
|
101
|
-
border-radius: calc(var(--token-form-toggle-height) / 2 + $outline-width + $outline-offset);
|
|
100
|
+
border-width: $hds-outline-width;
|
|
101
|
+
border-radius: calc(var(--token-form-toggle-height) / 2 + $hds-outline-width + $hds-outline-offset);
|
|
102
102
|
content: "";
|
|
103
103
|
}
|
|
104
104
|
|
|
@@ -116,8 +116,8 @@
|
|
|
116
116
|
background-color: var(--token-form-control-checked-surface-color-default);
|
|
117
117
|
|
|
118
118
|
&::after {
|
|
119
|
-
$translation: calc(var(--token-form-toggle-width) - var(--token-form-toggle-thumb-size));
|
|
120
|
-
transform: translate3d($translation, 0, 0);
|
|
119
|
+
$hds-translation: calc(var(--token-form-toggle-width) - var(--token-form-toggle-thumb-size));
|
|
120
|
+
transform: translate3d($hds-translation, 0, 0);
|
|
121
121
|
}
|
|
122
122
|
}
|
|
123
123
|
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
|
|
10
10
|
$hds-icon-tile-sizes: ( "small", "medium", "large" );
|
|
11
11
|
$hds-icon-tile-types: ( "object","resource","logo" );
|
|
12
|
-
$hds-icon-tile-colors-products: ( "boundary", "consul", "hcp", "nomad", "packer", "terraform", "vagrant", "vault", "vault-secrets", "waypoint" );
|
|
12
|
+
$hds-icon-tile-colors-products: ( "boundary", "consul", "hcp", "nomad", "packer", "terraform", "vagrant", "vault", "vault-secrets", "vault-radar", "waypoint" );
|
|
13
13
|
$hds-icon-tile-border-width: 1px;
|
|
14
14
|
$hds-icon-tile-box-shadow: 0 1px 1px rgba(#656a76, 0.05);
|
|
15
15
|
|
|
@@ -48,7 +48,7 @@ $hds-icon-tile-box-shadow: 0 1px 1px rgba(#656a76, 0.05);
|
|
|
48
48
|
// SIZE
|
|
49
49
|
|
|
50
50
|
// these values later may come from the design tokens
|
|
51
|
-
$size-props: (
|
|
51
|
+
$hds-icon-tile-size-props: (
|
|
52
52
|
"small": (
|
|
53
53
|
"size": 1.75rem, // 28px
|
|
54
54
|
"border-radius": 5px,
|
|
@@ -80,29 +80,29 @@ $size-props: (
|
|
|
80
80
|
|
|
81
81
|
@each $size in $hds-icon-tile-sizes {
|
|
82
82
|
.hds-icon-tile--size-#{$size} {
|
|
83
|
-
width: map-get($size-props, $size, "size");
|
|
84
|
-
height: map-get($size-props, $size, "size");
|
|
85
|
-
border-radius: map-get($size-props, $size, "border-radius");
|
|
83
|
+
width: map-get($hds-icon-tile-size-props, $size, "size");
|
|
84
|
+
height: map-get($hds-icon-tile-size-props, $size, "size");
|
|
85
|
+
border-radius: map-get($hds-icon-tile-size-props, $size, "border-radius");
|
|
86
86
|
|
|
87
87
|
.hds-icon-tile__icon {
|
|
88
|
-
width: map-get($size-props, $size, "icon-size");
|
|
89
|
-
height: map-get($size-props, $size, "icon-size");
|
|
88
|
+
width: map-get($hds-icon-tile-size-props, $size, "icon-size");
|
|
89
|
+
height: map-get($hds-icon-tile-size-props, $size, "icon-size");
|
|
90
90
|
}
|
|
91
91
|
|
|
92
92
|
.hds-icon-tile__logo {
|
|
93
|
-
width: map-get($size-props, $size, "logo-size");
|
|
94
|
-
height: map-get($size-props, $size, "logo-size");
|
|
93
|
+
width: map-get($hds-icon-tile-size-props, $size, "logo-size");
|
|
94
|
+
height: map-get($hds-icon-tile-size-props, $size, "logo-size");
|
|
95
95
|
}
|
|
96
96
|
|
|
97
97
|
.hds-icon-tile__extra {
|
|
98
|
-
width: map-get($size-props, $size, "extra-size");
|
|
99
|
-
height: map-get($size-props, $size, "extra-size");
|
|
100
|
-
border-radius: map-get($size-props, $size, "extra-border-radius");
|
|
98
|
+
width: map-get($hds-icon-tile-size-props, $size, "extra-size");
|
|
99
|
+
height: map-get($hds-icon-tile-size-props, $size, "extra-size");
|
|
100
|
+
border-radius: map-get($hds-icon-tile-size-props, $size, "extra-border-radius");
|
|
101
101
|
}
|
|
102
102
|
|
|
103
103
|
.hds-icon-tile__extra-icon {
|
|
104
|
-
width: map-get($size-props, $size, "extra-icon-size");
|
|
105
|
-
height: map-get($size-props, $size, "extra-icon-size");
|
|
104
|
+
width: map-get($hds-icon-tile-size-props, $size, "extra-icon-size");
|
|
105
|
+
height: map-get($hds-icon-tile-size-props, $size, "extra-icon-size");
|
|
106
106
|
}
|
|
107
107
|
}
|
|
108
108
|
}
|
|
@@ -46,7 +46,7 @@ $hds-link-standalone-border-width: 1px;
|
|
|
46
46
|
// SIZE
|
|
47
47
|
|
|
48
48
|
// these values later may come from the design tokens
|
|
49
|
-
$size-props: (
|
|
49
|
+
$hds-link-standalone-size-props: (
|
|
50
50
|
"small": (
|
|
51
51
|
"font-size": 0.8125rem, // 13px;
|
|
52
52
|
"icon-size": 0.75rem, // 12px
|
|
@@ -67,13 +67,13 @@ $size-props: (
|
|
|
67
67
|
@each $size in $hds-link-standalone-sizes {
|
|
68
68
|
.hds-link-standalone--size-#{$size} {
|
|
69
69
|
.hds-link-standalone__icon {
|
|
70
|
-
width: map-get($size-props, $size, "icon-size");
|
|
71
|
-
height: map-get($size-props, $size, "icon-size");
|
|
70
|
+
width: map-get($hds-link-standalone-size-props, $size, "icon-size");
|
|
71
|
+
height: map-get($hds-link-standalone-size-props, $size, "icon-size");
|
|
72
72
|
}
|
|
73
73
|
|
|
74
74
|
.hds-link-standalone__text {
|
|
75
|
-
font-size: map-get($size-props, $size, "font-size");
|
|
76
|
-
line-height: map-get($size-props, $size, "line-height");
|
|
75
|
+
font-size: map-get($hds-link-standalone-size-props, $size, "font-size");
|
|
76
|
+
line-height: map-get($hds-link-standalone-size-props, $size, "line-height");
|
|
77
77
|
}
|
|
78
78
|
}
|
|
79
79
|
}
|
|
@@ -139,19 +139,19 @@ $hds-link-standalone-focus-shift: 4px;
|
|
|
139
139
|
.hds-link-standalone {
|
|
140
140
|
// the position absolute of an element is computed from the inside of the border of the container
|
|
141
141
|
// so we have to take in account the border width of the pseudo-element container itself
|
|
142
|
-
$shift: $hds-link-standalone-focus-shift + $hds-link-standalone-border-width;
|
|
142
|
+
$hds-shift: $hds-link-standalone-focus-shift + $hds-link-standalone-border-width;
|
|
143
143
|
// for visual/optical balance we add an extra 2px to the "shift" near the text (opposite the icon)
|
|
144
|
-
$shift-extra: $shift + 2px;
|
|
144
|
+
$hds-shift-extra: $hds-shift + 2px;
|
|
145
145
|
|
|
146
146
|
// notice: this is used not only for the focus, but also to increase the clickable area
|
|
147
|
-
@include hds-focus-ring-with-pseudo-element($right: -$shift, $left: -$shift, $radius: $hds-link-standalone-focus-border-radius);
|
|
147
|
+
@include hds-focus-ring-with-pseudo-element($right: -$hds-shift, $left: -$hds-shift, $radius: $hds-link-standalone-focus-border-radius);
|
|
148
148
|
|
|
149
149
|
// we need to override a couple of values for better visual alignment
|
|
150
150
|
&.hds-link-standalone--icon-position-leading::before {
|
|
151
|
-
right: -$shift-extra;
|
|
151
|
+
right: -$hds-shift-extra;
|
|
152
152
|
}
|
|
153
153
|
|
|
154
154
|
&.hds-link-standalone--icon-position-trailing::before {
|
|
155
|
-
left: -$shift-extra;
|
|
155
|
+
left: -$hds-shift-extra;
|
|
156
156
|
}
|
|
157
157
|
}
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
// custom breakpoint for the pagination, swapping between horizontal and stacked layout
|
|
13
13
|
// notice: the value is based on where the component layout potentially breaks down
|
|
14
14
|
|
|
15
|
-
$pagination-layout-breakpoint: 1000px;
|
|
15
|
+
$hds-pagination-layout-breakpoint: 1000px;
|
|
16
16
|
|
|
17
17
|
|
|
18
18
|
// * Pagination Parent (wrapper) component
|
|
@@ -26,7 +26,7 @@ $pagination-layout-breakpoint: 1000px;
|
|
|
26
26
|
align-items: center;
|
|
27
27
|
margin: 0 auto;
|
|
28
28
|
|
|
29
|
-
@media screen and (max-width: $pagination-layout-breakpoint) {
|
|
29
|
+
@media screen and (max-width: $hds-pagination-layout-breakpoint) {
|
|
30
30
|
display: flex;
|
|
31
31
|
flex-wrap: wrap;
|
|
32
32
|
justify-content: center;
|
|
@@ -38,7 +38,7 @@ $pagination-layout-breakpoint: 1000px;
|
|
|
38
38
|
justify-self: flex-start;
|
|
39
39
|
margin-right: var(--token-pagination-child-spacing-horizontal);
|
|
40
40
|
|
|
41
|
-
@media screen and (max-width: $pagination-layout-breakpoint) {
|
|
41
|
+
@media screen and (max-width: $hds-pagination-layout-breakpoint) {
|
|
42
42
|
margin-top: var(--token-pagination-child-spacing-vertical);
|
|
43
43
|
margin-left: var(--token-pagination-child-spacing-horizontal);
|
|
44
44
|
}
|
|
@@ -47,7 +47,7 @@ $pagination-layout-breakpoint: 1000px;
|
|
|
47
47
|
.hds-pagination-nav {
|
|
48
48
|
grid-area: nav;
|
|
49
49
|
|
|
50
|
-
@media screen and (max-width: $pagination-layout-breakpoint) {
|
|
50
|
+
@media screen and (max-width: $hds-pagination-layout-breakpoint) {
|
|
51
51
|
justify-content: center;
|
|
52
52
|
order: -1;
|
|
53
53
|
// Force nav to occupy a full row so other components will wrap:
|
|
@@ -60,7 +60,7 @@ $pagination-layout-breakpoint: 1000px;
|
|
|
60
60
|
justify-self: flex-end;
|
|
61
61
|
margin-left: var(--token-pagination-child-spacing-horizontal);
|
|
62
62
|
|
|
63
|
-
@media screen and (max-width: $pagination-layout-breakpoint) {
|
|
63
|
+
@media screen and (max-width: $hds-pagination-layout-breakpoint) {
|
|
64
64
|
margin-top: var(--token-pagination-child-spacing-vertical);
|
|
65
65
|
margin-right: var(--token-pagination-child-spacing-horizontal);
|
|
66
66
|
}
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
> .hds-dropdown,
|
|
15
15
|
> .hds-form-select,
|
|
16
16
|
> .hds-form-text-input {
|
|
17
|
-
&:first-child {
|
|
17
|
+
&:first-child:not(:only-child) {
|
|
18
18
|
border-top-right-radius: 0;
|
|
19
19
|
border-bottom-right-radius: 0;
|
|
20
20
|
|
|
@@ -26,7 +26,7 @@
|
|
|
26
26
|
}
|
|
27
27
|
}
|
|
28
28
|
|
|
29
|
-
&:last-child {
|
|
29
|
+
&:last-child:not(:only-child) {
|
|
30
30
|
margin-left: -1px;
|
|
31
31
|
border-top-left-radius: 0;
|
|
32
32
|
border-bottom-left-radius: 0;
|
|
@@ -39,7 +39,7 @@
|
|
|
39
39
|
}
|
|
40
40
|
}
|
|
41
41
|
|
|
42
|
-
&:not(:first-child, :last-child) {
|
|
42
|
+
&:not(:first-child, :last-child, :only-child) {
|
|
43
43
|
margin-left: -1px;
|
|
44
44
|
border-radius: 0;
|
|
45
45
|
|
|
@@ -40,12 +40,11 @@
|
|
|
40
40
|
// (LIST) TITLE
|
|
41
41
|
|
|
42
42
|
.hds-side-nav__list-title {
|
|
43
|
-
display: flex;
|
|
44
|
-
align-items: center;
|
|
45
43
|
min-height: var(--token-side-nav-body-list-item-height);
|
|
46
44
|
margin-top: var(--token-side-nav-body-list-margin-vertical);
|
|
47
45
|
padding: 9px var(--token-side-nav-body-list-item-padding-horizontal); // 8px = (min-height - body-100-line-height) / 2
|
|
48
46
|
color: var(--token-side-nav-color-foreground-faint);
|
|
47
|
+
overflow-wrap: break-word;
|
|
49
48
|
|
|
50
49
|
// Remove margin from title at top of all list-items & lists
|
|
51
50
|
.hds-side-nav__list-wrapper:first-child .hds-side-nav__list-item:first-child > & {
|
|
@@ -53,7 +52,6 @@
|
|
|
53
52
|
}
|
|
54
53
|
}
|
|
55
54
|
|
|
56
|
-
|
|
57
55
|
// LIST (root elements)
|
|
58
56
|
|
|
59
57
|
.hds-side-nav__list-wrapper, // <nav> element
|
|
@@ -147,8 +145,11 @@
|
|
|
147
145
|
// LIST ITEM > INNER ELEMENTS
|
|
148
146
|
|
|
149
147
|
.hds-side-nav__list-item-text {
|
|
148
|
+
min-width: 0;
|
|
149
|
+
max-width: 100%;
|
|
150
150
|
color: var(--token-side-nav-color-foreground-primary);
|
|
151
151
|
text-align: left;
|
|
152
|
+
overflow-wrap: break-word;
|
|
152
153
|
}
|
|
153
154
|
|
|
154
155
|
.hds-side-nav__list-item-icon-leading {
|
|
@@ -52,7 +52,7 @@ $hds-stepper-indicator-step-size: 24px;
|
|
|
52
52
|
// Non-interactive (default)
|
|
53
53
|
|
|
54
54
|
// Non-interactive props that correspond with status
|
|
55
|
-
$non-interactive-props: (
|
|
55
|
+
$hds-stepper-indicator-step-non-interactive-props: (
|
|
56
56
|
"incomplete": (
|
|
57
57
|
"text-color": var(--token-color-foreground-strong),
|
|
58
58
|
"fill-color": var(--token-color-surface-faint),
|
|
@@ -79,12 +79,12 @@ $non-interactive-props: (
|
|
|
79
79
|
// For each status of the non-interactive variant, set the text color, svg fill, and svg stroke colors based on $non-interactive-props
|
|
80
80
|
.hds-stepper-indicator-step--status-#{$status} {
|
|
81
81
|
.hds-stepper-indicator-step__status {
|
|
82
|
-
color: map-get($non-interactive-props, $status, "text-color");
|
|
82
|
+
color: map-get($hds-stepper-indicator-step-non-interactive-props, $status, "text-color");
|
|
83
83
|
}
|
|
84
84
|
|
|
85
85
|
.hds-stepper-indicator-step__svg-hexagon path {
|
|
86
|
-
fill: map-get($non-interactive-props, $status, "fill-color");
|
|
87
|
-
stroke: map-get($non-interactive-props, $status, "stroke-color");
|
|
86
|
+
fill: map-get($hds-stepper-indicator-step-non-interactive-props, $status, "fill-color");
|
|
87
|
+
stroke: map-get($hds-stepper-indicator-step-non-interactive-props, $status, "stroke-color");
|
|
88
88
|
}
|
|
89
89
|
}
|
|
90
90
|
}
|
|
@@ -92,7 +92,7 @@ $non-interactive-props: (
|
|
|
92
92
|
// Interactive
|
|
93
93
|
|
|
94
94
|
// Determine states/status and corresponding styles
|
|
95
|
-
$status-props: (
|
|
95
|
+
$hds-stepper-indicator-step-status-props: (
|
|
96
96
|
"incomplete": (
|
|
97
97
|
"text-color-default": var(--token-color-foreground-primary),
|
|
98
98
|
"fill-color-default": var(--token-color-surface-interactive),
|
|
@@ -135,27 +135,27 @@ $status-props: (
|
|
|
135
135
|
cursor: pointer;
|
|
136
136
|
|
|
137
137
|
@each $status in $hds-stepper-indicator-step-statuses {
|
|
138
|
-
// For each status set the text, svg fill, and svg stroke color based on $status-props
|
|
138
|
+
// For each status set the text, svg fill, and svg stroke color based on $hds-stepper-indicator-step-status-props
|
|
139
139
|
&.hds-stepper-indicator-step--status-#{$status} {
|
|
140
140
|
.hds-stepper-indicator-step__status {
|
|
141
|
-
color: map-get($status-props, $status, "text-color-default");
|
|
141
|
+
color: map-get($hds-stepper-indicator-step-status-props, $status, "text-color-default");
|
|
142
142
|
}
|
|
143
143
|
|
|
144
144
|
.hds-stepper-indicator-step__svg-hexagon path {
|
|
145
|
-
fill: map-get($status-props, $status, "fill-color-default");
|
|
146
|
-
stroke: map-get($status-props, $status, "stroke-color-default");
|
|
145
|
+
fill: map-get($hds-stepper-indicator-step-status-props, $status, "fill-color-default");
|
|
146
|
+
stroke: map-get($hds-stepper-indicator-step-status-props, $status, "stroke-color-default");
|
|
147
147
|
}
|
|
148
148
|
|
|
149
149
|
&:hover,
|
|
150
150
|
&.mock-hover {
|
|
151
151
|
.hds-stepper-indicator-step__status {
|
|
152
|
-
color: map-get($status-props, $status, "text-color-hover");
|
|
152
|
+
color: map-get($hds-stepper-indicator-step-status-props, $status, "text-color-hover");
|
|
153
153
|
}
|
|
154
154
|
|
|
155
155
|
.hds-stepper-indicator-step__svg-hexagon {
|
|
156
156
|
path {
|
|
157
|
-
fill: map-get($status-props, $status, "fill-color-hover");
|
|
158
|
-
stroke: map-get($status-props, $status, "stroke-color-hover");
|
|
157
|
+
fill: map-get($hds-stepper-indicator-step-status-props, $status, "fill-color-hover");
|
|
158
|
+
stroke: map-get($hds-stepper-indicator-step-status-props, $status, "stroke-color-hover");
|
|
159
159
|
}
|
|
160
160
|
}
|
|
161
161
|
}
|
|
@@ -163,13 +163,13 @@ $status-props: (
|
|
|
163
163
|
&:active,
|
|
164
164
|
&.mock-active {
|
|
165
165
|
.hds-stepper-indicator-step__status {
|
|
166
|
-
color: map-get($status-props, $status, "text-color-active");
|
|
166
|
+
color: map-get($hds-stepper-indicator-step-status-props, $status, "text-color-active");
|
|
167
167
|
}
|
|
168
168
|
|
|
169
169
|
.hds-stepper-indicator-step__svg-hexagon {
|
|
170
170
|
path {
|
|
171
|
-
fill: map-get($status-props, $status, "fill-color-active");
|
|
172
|
-
stroke: map-get($status-props, $status, "stroke-color-active");
|
|
171
|
+
fill: map-get($hds-stepper-indicator-step-status-props, $status, "fill-color-active");
|
|
172
|
+
stroke: map-get($hds-stepper-indicator-step-status-props, $status, "stroke-color-active");
|
|
173
173
|
}
|
|
174
174
|
}
|
|
175
175
|
}
|
|
@@ -11,7 +11,7 @@ $hds-stepper-indicator-task-statuses: ( "incomplete", "progress", "processing",
|
|
|
11
11
|
$hds-stepper-indicator-task-size: 16px;
|
|
12
12
|
|
|
13
13
|
// Determine states and corresponding styles
|
|
14
|
-
$status-props: (
|
|
14
|
+
$hds-stepper-indicator-task-status-props: (
|
|
15
15
|
"incomplete": (
|
|
16
16
|
"color-default": var(--token-color-palette-neutral-300),
|
|
17
17
|
"color-hover": var(--token-color-palette-blue-300),
|
|
@@ -54,18 +54,18 @@ $status-props: (
|
|
|
54
54
|
cursor: pointer;
|
|
55
55
|
|
|
56
56
|
@each $status in $hds-stepper-indicator-task-statuses {
|
|
57
|
-
// For each status set the icon color based on the $status-props
|
|
57
|
+
// For each status set the icon color based on the $hds-stepper-indicator-task-status-props
|
|
58
58
|
&.hds-stepper-indicator-task--status-#{$status} {
|
|
59
|
-
color: map-get($status-props, $status, "color-default");
|
|
59
|
+
color: map-get($hds-stepper-indicator-task-status-props, $status, "color-default");
|
|
60
60
|
|
|
61
61
|
&:hover,
|
|
62
62
|
&.mock-hover {
|
|
63
|
-
color: map-get($status-props, $status, "color-hover");
|
|
63
|
+
color: map-get($hds-stepper-indicator-task-status-props, $status, "color-hover");
|
|
64
64
|
}
|
|
65
65
|
|
|
66
66
|
&:active,
|
|
67
67
|
&.mock-active {
|
|
68
|
-
color: map-get($status-props, $status, "color-active");
|
|
68
|
+
color: map-get($hds-stepper-indicator-task-status-props, $status, "color-active");
|
|
69
69
|
}
|
|
70
70
|
}
|
|
71
71
|
}
|
|
@@ -9,7 +9,7 @@ $hds-button-border-width: 1px;
|
|
|
9
9
|
$hds-button-focus-border-width: 3px;
|
|
10
10
|
|
|
11
11
|
// these values later may come from the design tokens
|
|
12
|
-
$size-props: (
|
|
12
|
+
$hds-button-size-props: (
|
|
13
13
|
"small": (
|
|
14
14
|
"font-size": 0.8125rem, // 13px;
|
|
15
15
|
"line-height": 0.875rem, // 14px - we need to make it even (so we set it slighly larger than the font-size; notice: in Figma is 12px but this would cut some ascendants/descendants)
|
|
@@ -273,24 +273,24 @@ $size-props: (
|
|
|
273
273
|
@mixin hds-button-size-classes($blockName) {
|
|
274
274
|
@each $size in $hds-button-sizes {
|
|
275
275
|
.#{$blockName}--size-#{$size} {
|
|
276
|
-
min-height: map-get($size-props, $size, "min-height");
|
|
277
|
-
padding: map-get($size-props, $size, "padding-vertical") map-get($size-props, $size, "padding-horizontal");
|
|
276
|
+
min-height: map-get($hds-button-size-props, $size, "min-height");
|
|
277
|
+
padding: map-get($hds-button-size-props, $size, "padding-vertical") map-get($hds-button-size-props, $size, "padding-horizontal");
|
|
278
278
|
|
|
279
279
|
.#{$blockName}__icon {
|
|
280
|
-
width: map-get($size-props, $size, "icon-size");
|
|
281
|
-
height: map-get($size-props, $size, "icon-size");
|
|
280
|
+
width: map-get($hds-button-size-props, $size, "icon-size");
|
|
281
|
+
height: map-get($hds-button-size-props, $size, "icon-size");
|
|
282
282
|
}
|
|
283
283
|
|
|
284
284
|
.#{$blockName}__text {
|
|
285
|
-
font-size: map-get($size-props, $size, "font-size");
|
|
286
|
-
line-height: map-get($size-props, $size, "line-height");
|
|
285
|
+
font-size: map-get($hds-button-size-props, $size, "font-size");
|
|
286
|
+
line-height: map-get($hds-button-size-props, $size, "line-height");
|
|
287
287
|
}
|
|
288
288
|
|
|
289
289
|
&.#{$blockName}--is-icon-only {
|
|
290
290
|
// overrides to have the icon-only button squared
|
|
291
|
-
min-width: map-get($size-props, $size, "min-height");
|
|
292
|
-
padding-right: map-get($size-props, $size, "padding-vertical");
|
|
293
|
-
padding-left: map-get($size-props, $size, "padding-vertical");
|
|
291
|
+
min-width: map-get($hds-button-size-props, $size, "min-height");
|
|
292
|
+
padding-right: map-get($hds-button-size-props, $size, "padding-vertical");
|
|
293
|
+
padding-left: map-get($hds-button-size-props, $size, "padding-vertical");
|
|
294
294
|
}
|
|
295
295
|
}
|
|
296
296
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hashicorp/design-system-components",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.5.0",
|
|
4
4
|
"description": "Helios Design System Components",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"hashicorp",
|
|
@@ -43,12 +43,11 @@
|
|
|
43
43
|
"@ember/render-modifiers": "^2.0.5",
|
|
44
44
|
"@ember/string": "^3.1.1",
|
|
45
45
|
"@ember/test-waiters": "^3.1.0",
|
|
46
|
-
"@hashicorp/design-system-tokens": "^1.
|
|
47
|
-
"@hashicorp/ember-flight-icons": "^4.0.
|
|
46
|
+
"@hashicorp/design-system-tokens": "^1.10.0",
|
|
47
|
+
"@hashicorp/ember-flight-icons": "^4.0.6",
|
|
48
48
|
"dialog-polyfill": "^0.5.6",
|
|
49
49
|
"ember-a11y-refocus": "^3.0.2",
|
|
50
50
|
"ember-auto-import": "^2.6.3",
|
|
51
|
-
"ember-cached-decorator-polyfill": "^1.0.2",
|
|
52
51
|
"ember-cli-babel": "^8.2.0",
|
|
53
52
|
"ember-cli-htmlbars": "^6.3.0",
|
|
54
53
|
"ember-cli-sass": "^11.0.1",
|