@synergy-design-system/metadata 3.16.1 → 3.18.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 +26 -0
- package/data/core/component/component:syn-button-group.json +0 -5
- package/data/core/component/component:syn-button.json +3 -3
- package/data/core/component/component:syn-chart.json +147 -2
- package/data/core/component/component:syn-radio-button.json +123 -14
- package/data/core/component/component:syn-radio-group.json +11 -0
- package/data/core/setup/setup:angular-components-module.json +1 -1
- package/data/core/setup/setup:angular-forms-module.json +1 -1
- package/data/core/setup/setup:angular-package.json +2 -2
- package/data/core/setup/setup:angular-validators-module.json +1 -1
- package/data/core/setup/setup:components-package.json +2 -2
- package/data/core/setup/setup:react-package.json +2 -2
- package/data/core/setup/setup:tokens-package.json +2 -2
- package/data/core/setup/setup:vue-package.json +2 -2
- package/data/core/token/token:tokens-charts-js-index-d-ts.json +1 -1
- package/data/core/token/token:tokens-charts-js-index-js.json +1 -1
- package/data/core/token/token:tokens-charts-scss-tokens-scss.json +1 -1
- package/data/core/token/token:tokens-charts-themes-sick2025-dark-css.json +1 -1
- package/data/core/token/token:tokens-charts-themes-sick2025-light-css.json +1 -1
- package/data/core/token/token:tokens-figma-variables-sick2018-dark-json.json +1 -1
- package/data/core/token/token:tokens-figma-variables-sick2018-light-json.json +1 -1
- package/data/core/token/token:tokens-figma-variables-sick2025-dark-json.json +1 -1
- package/data/core/token/token:tokens-figma-variables-sick2025-light-json.json +1 -1
- package/data/core/token/token:tokens-js-index-d-ts.json +1 -1
- package/data/core/token/token:tokens-js-index-js.json +1 -1
- package/data/core/token/token:tokens-scss-tokens-scss.json +1 -1
- package/data/core/token/token:tokens-themes-sick2018-dark-css.json +1 -1
- package/data/core/token/token:tokens-themes-sick2018-light-css.json +1 -1
- package/data/core/token/token:tokens-themes-sick2025-dark-css.json +1 -1
- package/data/core/token/token:tokens-themes-sick2025-light-css.json +1 -1
- package/data/index.json +3 -2
- package/data/layers/examples/component/component:syn-chart.md +115 -106
- package/data/layers/examples/component/component:syn-checkbox.md +16 -2
- package/data/layers/examples/component/component:syn-combobox.md +10 -21
- package/data/layers/examples/component/component:syn-file.md +16 -10
- package/data/layers/examples/component/component:syn-input.md +10 -3
- package/data/layers/examples/component/component:syn-radio-button.md +200 -0
- package/data/layers/examples/component/component:syn-radio-group.md +27 -2
- package/data/layers/examples/component/component:syn-radio.md +12 -5
- package/data/layers/examples/component/component:syn-range.md +16 -14
- package/data/layers/examples/component/component:syn-select.md +10 -3
- package/data/layers/examples/component/component:syn-switch.md +10 -3
- package/data/layers/examples/component/component:syn-textarea.md +10 -3
- package/data/layers/full/component/component:syn-button/components/button-group.styles.ts +66 -0
- package/data/layers/full/component/component:syn-button/components/button.component.ts +40 -52
- package/data/layers/full/component/component:syn-button/components/button.styles.ts +162 -173
- package/data/layers/full/component/component:syn-button-group/components/button-group.component.ts +22 -18
- package/data/layers/full/component/component:syn-button-group/components/button-group.styles.ts +0 -2
- package/data/layers/full/component/component:syn-chart/angular/chart.component.ts +11 -5
- package/data/layers/full/component/component:syn-chart/components/chart.component.ts +67 -20
- package/data/layers/full/component/component:syn-chart/components/chart.palettes.ts +59 -59
- package/data/layers/full/component/component:syn-chart/components/types.ts +47 -4
- package/data/layers/full/component/component:syn-chart/react/chart.ts +1 -1
- package/data/layers/full/component/component:syn-chart/vue/SynVueChart.vue +11 -5
- package/data/layers/full/component/component:syn-radio-button/angular/radio-button.component.ts +14 -14
- package/data/layers/full/component/component:syn-radio-button/components/radio-button.component.ts +45 -25
- package/data/layers/full/component/component:syn-radio-button/components/radio-button.styles.ts +87 -25
- package/data/layers/full/component/component:syn-radio-button/react/radio-button.ts +1 -1
- package/data/layers/full/component/component:syn-radio-button/vue/SynVueRadioButton.vue +6 -6
- package/data/layers/full/component/component:syn-radio-group/components/radio-group.component.ts +23 -11
- package/data/layers/full/component/component:syn-radio-group/components/radio-group.styles.ts +51 -6
- package/data/layers/full/setup/setup:angular-package/angular/CHANGELOG.md +38 -0
- package/data/layers/full/setup/setup:angular-package/angular/package.json +1 -1
- package/data/layers/full/setup/setup:components-package/components/CHANGELOG.md +36 -0
- package/data/layers/full/setup/setup:components-package/components/package.json +1 -1
- package/data/layers/full/setup/setup:react-package/react/CHANGELOG.md +28 -0
- package/data/layers/full/setup/setup:react-package/react/package.json +1 -1
- package/data/layers/full/setup/setup:react-package/react/syn-jsx-elements.ts +4 -4
- package/data/layers/full/setup/setup:tokens-package/tokens/CHANGELOG.md +31 -0
- package/data/layers/full/setup/setup:tokens-package/tokens/package.json +1 -1
- package/data/layers/full/setup/setup:vue-package/vue/CHANGELOG.md +38 -0
- package/data/layers/full/setup/setup:vue-package/vue/package.json +1 -1
- package/data/layers/full/tokens/charts/js/index.d.ts +275 -265
- package/data/layers/full/tokens/charts/js/index.js +143 -133
- package/data/layers/full/tokens/charts/scss/_tokens.scss +135 -133
- package/data/layers/full/tokens/charts/themes/sick2025_dark.css +135 -133
- package/data/layers/full/tokens/charts/themes/sick2025_light.css +135 -133
- package/data/layers/full/tokens/figma-variables/sick2018-dark.json +20 -0
- package/data/layers/full/tokens/figma-variables/sick2018-light.json +20 -0
- package/data/layers/full/tokens/figma-variables/sick2025-dark.json +20 -0
- package/data/layers/full/tokens/figma-variables/sick2025-light.json +20 -0
- package/data/layers/full/tokens/js/index.d.ts +31 -1
- package/data/layers/full/tokens/js/index.js +31 -1
- package/data/layers/full/tokens/scss/_tokens.scss +7 -1
- package/data/layers/full/tokens/themes/sick2018_dark.css +7 -1
- package/data/layers/full/tokens/themes/sick2018_light.css +7 -1
- package/data/layers/full/tokens/themes/sick2025_dark.css +7 -1
- package/data/layers/full/tokens/themes/sick2025_light.css +7 -1
- package/data/layers/interface/component/component:syn-chart.json +5 -5
- package/data/layers/interface/component/component:syn-chart.md +4 -4
- package/data/layers/interface/component/component:syn-radio-button.json +14 -12
- package/data/layers/interface/component/component:syn-radio-button.md +6 -4
- package/data/layers/rules/component/component:syn-radio-button.md +16 -11
- package/data/manifest.json +1 -1
- package/dist/intentPolicy/domains/input/capabilities.js +4 -0
- package/dist/intentPolicy/domains/input/patterns.js +9 -0
- package/package.json +5 -5
- package/data/layers/full/component/component:syn-button/components/button.custom.styles.ts +0 -245
- package/data/layers/full/component/component:syn-button-group/components/button-group.custom.styles.ts +0 -5
|
@@ -1,36 +1,58 @@
|
|
|
1
|
-
/* eslint-disable */
|
|
2
1
|
import { css } from 'lit';
|
|
3
2
|
|
|
4
3
|
export default css`
|
|
5
|
-
/* stylelint-disable */
|
|
6
4
|
:host {
|
|
5
|
+
cursor: pointer;
|
|
7
6
|
display: inline-block;
|
|
8
7
|
position: relative;
|
|
9
8
|
width: auto;
|
|
10
|
-
cursor: pointer;
|
|
11
9
|
}
|
|
12
10
|
|
|
13
11
|
.button {
|
|
14
|
-
|
|
12
|
+
/* Icon size tokens */
|
|
13
|
+
--button-small-icon-size: var(--syn-font-size-medium);
|
|
14
|
+
--button-medium-icon-size: var(--syn-font-size-x-large);
|
|
15
|
+
--button-large-icon-size: var(--syn-font-size-2x-large);
|
|
16
|
+
|
|
17
|
+
/* Icon alignment tokens */
|
|
18
|
+
--button-icon-offset-small: -3px;
|
|
19
|
+
--button-icon-offset-medium: -6px;
|
|
20
|
+
--button-icon-offset-large: -8px;
|
|
21
|
+
|
|
22
|
+
/* Default (medium) spacing tokens */
|
|
23
|
+
--button-icon-only-padding: 0 calc(var(--syn-spacing-small) - var(--syn-spacing-4x-small));
|
|
24
|
+
--button-label-padding-inline-start: var(--syn-spacing-medium);
|
|
25
|
+
--button-label-padding-inline-end: var(--syn-spacing-medium);
|
|
26
|
+
--button-label-padding-inline-start-with-prefix: var(--syn-spacing-x-small);
|
|
27
|
+
--button-label-padding-inline-end-with-suffix: var(--syn-spacing-x-small);
|
|
28
|
+
--button-prefix-spacing: var(--syn-spacing-small);
|
|
29
|
+
--button-suffix-spacing: var(--syn-spacing-small);
|
|
30
|
+
--button-affix-size: var(--button-medium-icon-size);
|
|
31
|
+
--button-labeled-prefix-spacing: var(--syn-spacing-medium);
|
|
32
|
+
--button-labeled-suffix-spacing: var(--syn-spacing-medium);
|
|
33
|
+
|
|
15
34
|
align-items: stretch;
|
|
16
|
-
justify-content: center;
|
|
17
|
-
width: 100%;
|
|
18
35
|
border-style: solid;
|
|
19
36
|
border-width: var(--syn-input-border-width);
|
|
37
|
+
cursor: inherit;
|
|
38
|
+
display: inline-flex;
|
|
20
39
|
font-family: var(--syn-input-font-family);
|
|
21
|
-
font-weight: var(--syn-font-weight-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
-webkit-user-select: none;
|
|
25
|
-
white-space: nowrap;
|
|
26
|
-
vertical-align: middle;
|
|
40
|
+
font-weight: var(--syn-font-weight-bold);
|
|
41
|
+
height: auto;
|
|
42
|
+
justify-content: center;
|
|
27
43
|
padding: 0;
|
|
44
|
+
text-decoration: none;
|
|
28
45
|
transition:
|
|
29
46
|
var(--syn-transition-x-fast) background-color,
|
|
30
47
|
var(--syn-transition-x-fast) color,
|
|
31
48
|
var(--syn-transition-x-fast) border,
|
|
32
49
|
var(--syn-transition-x-fast) box-shadow;
|
|
33
|
-
|
|
50
|
+
/* stylelint-disable-next-line property-no-vendor-prefix */
|
|
51
|
+
-webkit-user-select: none;
|
|
52
|
+
user-select: none;
|
|
53
|
+
vertical-align: middle;
|
|
54
|
+
white-space: nowrap;
|
|
55
|
+
width: 100%;
|
|
34
56
|
}
|
|
35
57
|
|
|
36
58
|
.button::-moz-focus-inner {
|
|
@@ -42,13 +64,13 @@ export default css`
|
|
|
42
64
|
}
|
|
43
65
|
|
|
44
66
|
.button:focus-visible {
|
|
45
|
-
outline: var(--syn-focus-ring);
|
|
46
|
-
outline-offset: var(--syn-focus-ring-
|
|
67
|
+
outline: var(--syn-focus-ring-color) solid var(--syn-focus-ring-width);
|
|
68
|
+
outline-offset: var(--syn-focus-ring-width);
|
|
47
69
|
}
|
|
48
70
|
|
|
49
71
|
.button--disabled {
|
|
50
|
-
opacity: 0.5;
|
|
51
72
|
cursor: not-allowed;
|
|
73
|
+
opacity: var(--syn-input-disabled-opacity); /* #429: Use token for opacity */
|
|
52
74
|
}
|
|
53
75
|
|
|
54
76
|
/* When disabled, prevent mouse events from bubbling up from children */
|
|
@@ -56,11 +78,17 @@ export default css`
|
|
|
56
78
|
pointer-events: none;
|
|
57
79
|
}
|
|
58
80
|
|
|
81
|
+
.button__prefix,
|
|
82
|
+
.button__suffix,
|
|
83
|
+
.button__caret {
|
|
84
|
+
font-size: var(--button-affix-size);
|
|
85
|
+
}
|
|
86
|
+
|
|
59
87
|
.button__prefix,
|
|
60
88
|
.button__suffix {
|
|
61
|
-
flex: 0 0 auto;
|
|
62
|
-
display: flex;
|
|
63
89
|
align-items: center;
|
|
90
|
+
display: flex;
|
|
91
|
+
flex: 0 0 auto;
|
|
64
92
|
pointer-events: none;
|
|
65
93
|
}
|
|
66
94
|
|
|
@@ -68,8 +96,16 @@ export default css`
|
|
|
68
96
|
display: inline-block;
|
|
69
97
|
}
|
|
70
98
|
|
|
99
|
+
/**
|
|
100
|
+
* Icon-only buttons
|
|
101
|
+
*/
|
|
102
|
+
.button__label.button__icon-only {
|
|
103
|
+
padding: var(--button-icon-only-padding);
|
|
104
|
+
}
|
|
105
|
+
|
|
71
106
|
.button__label::slotted(syn-icon) {
|
|
72
|
-
|
|
107
|
+
font-size: var(--button-medium-icon-size);
|
|
108
|
+
vertical-align: var(--button-icon-offset-medium);
|
|
73
109
|
}
|
|
74
110
|
|
|
75
111
|
/*
|
|
@@ -78,76 +114,85 @@ export default css`
|
|
|
78
114
|
|
|
79
115
|
/* Primary */
|
|
80
116
|
.button--filled.button--primary {
|
|
81
|
-
background
|
|
82
|
-
border-color: var(--syn-color
|
|
83
|
-
color: var(--syn-color-
|
|
117
|
+
background: var(--syn-button-color);
|
|
118
|
+
border-color: var(--syn-button-color);
|
|
119
|
+
color: var(--syn-button-filled-color-text);
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
.button--filled.button--primary.button--disabled {
|
|
123
|
+
background: var(--syn-color-neutral-600);
|
|
124
|
+
border-color: var(--syn-color-neutral-600);
|
|
125
|
+
color: var(--syn-typography-color-text-inverted);
|
|
84
126
|
}
|
|
85
127
|
|
|
86
128
|
.button--filled.button--primary:hover:not(.button--disabled) {
|
|
87
|
-
background
|
|
88
|
-
border-color: var(--syn-color-
|
|
89
|
-
color: var(--syn-color-
|
|
129
|
+
background: var(--syn-button-color-hover);
|
|
130
|
+
border-color: var(--syn-button-color-hover);
|
|
131
|
+
color: var(--syn-button-filled-color-text-hover);
|
|
90
132
|
}
|
|
91
133
|
|
|
92
134
|
.button--filled.button--primary:active:not(.button--disabled) {
|
|
93
|
-
background
|
|
94
|
-
border-color: var(--syn-color-
|
|
95
|
-
color: var(--syn-color-
|
|
135
|
+
background: var(--syn-button-color-active);
|
|
136
|
+
border-color: var(--syn-button-color-active);
|
|
137
|
+
color: var(--syn-button-filled-color-text-active);
|
|
96
138
|
}
|
|
97
139
|
|
|
98
140
|
/*
|
|
99
141
|
* Outline buttons
|
|
100
142
|
*/
|
|
101
|
-
|
|
102
143
|
.button--outline {
|
|
103
144
|
background: none;
|
|
104
|
-
border: solid
|
|
145
|
+
border: var(--syn-input-border-width) solid; /* #901: Use token for border width */
|
|
105
146
|
}
|
|
106
147
|
|
|
107
148
|
/* Primary */
|
|
108
149
|
.button--outline.button--primary {
|
|
109
|
-
border-color: var(--syn-color
|
|
110
|
-
color: var(--syn-color-
|
|
150
|
+
border-color: var(--syn-button-color);
|
|
151
|
+
color: var(--syn-button-outline-color-text);
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
.button--outline.button--primary.button--disabled {
|
|
155
|
+
background: none;
|
|
156
|
+
border-color: var(--syn-color-neutral-600);
|
|
157
|
+
color: var(--syn-color-neutral-600);
|
|
111
158
|
}
|
|
112
159
|
|
|
113
160
|
.button--outline.button--primary:hover:not(.button--disabled),
|
|
114
161
|
.button--outline.button--primary.button--checked:not(.button--disabled) {
|
|
115
|
-
background
|
|
116
|
-
color: var(--syn-color-
|
|
162
|
+
background: var(--syn-button-outline-color-hover);
|
|
163
|
+
border-color: var(--syn-button-outline-color-hover);
|
|
164
|
+
color: var(--syn-button-outline-color-text-hover);
|
|
117
165
|
}
|
|
118
166
|
|
|
119
167
|
.button--outline.button--primary:active:not(.button--disabled) {
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
color: var(--syn-color-
|
|
168
|
+
background: var(--syn-button-outline-color-active);
|
|
169
|
+
border-color: var(--syn-button-outline-color-active);
|
|
170
|
+
color: var(--syn-button-outline-color-text-active);
|
|
123
171
|
}
|
|
124
172
|
|
|
125
173
|
/*
|
|
126
174
|
* Text buttons
|
|
127
175
|
*/
|
|
128
|
-
|
|
129
176
|
.button--text {
|
|
130
|
-
background
|
|
177
|
+
background: transparent;
|
|
131
178
|
border-color: transparent;
|
|
132
|
-
color: var(--syn-color-
|
|
179
|
+
color: var(--syn-button-text-color-text);
|
|
133
180
|
}
|
|
134
181
|
|
|
135
182
|
.button--text:hover:not(.button--disabled) {
|
|
136
|
-
|
|
137
|
-
border-color: transparent;
|
|
138
|
-
color: var(--syn-color-primary-500);
|
|
183
|
+
color: var(--syn-button-text-color-text-hover);
|
|
139
184
|
}
|
|
140
185
|
|
|
141
186
|
.button--text:focus-visible:not(.button--disabled) {
|
|
142
|
-
|
|
143
|
-
border-color: transparent;
|
|
144
|
-
color: var(--syn-color-primary-500);
|
|
187
|
+
color: var(--syn-button-color);
|
|
145
188
|
}
|
|
146
189
|
|
|
147
|
-
.button--text:active:not(.button--disabled) {
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
190
|
+
.button--text.button--primary:active:not(.button--disabled) {
|
|
191
|
+
color: var(--syn-button-text-color-text-active);
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
.button--text.button--primary.button--disabled {
|
|
195
|
+
color: var(--syn-color-neutral-600);
|
|
151
196
|
}
|
|
152
197
|
|
|
153
198
|
/*
|
|
@@ -155,33 +200,59 @@ export default css`
|
|
|
155
200
|
*/
|
|
156
201
|
|
|
157
202
|
.button--small {
|
|
158
|
-
|
|
159
|
-
|
|
203
|
+
--button-icon-only-padding: 0 calc(var(--syn-spacing-x-small) + var(--syn-spacing-4x-small));
|
|
204
|
+
--button-label-padding-inline-start: var(--syn-spacing-small);
|
|
205
|
+
--button-label-padding-inline-end: var(--syn-spacing-small);
|
|
206
|
+
--button-label-padding-inline-start-with-prefix: var(--syn-spacing-2x-small);
|
|
207
|
+
--button-label-padding-inline-end-with-suffix: var(--syn-spacing-2x-small);
|
|
208
|
+
--button-prefix-spacing: var(--syn-spacing-x-small);
|
|
209
|
+
--button-suffix-spacing: var(--syn-spacing-x-small);
|
|
210
|
+
--button-affix-size: var(--button-small-icon-size);
|
|
211
|
+
--button-labeled-prefix-spacing: var(--syn-spacing-small);
|
|
212
|
+
--button-labeled-suffix-spacing: var(--syn-spacing-small);
|
|
213
|
+
|
|
214
|
+
border-radius: var(--syn-button-border-radius-small);
|
|
160
215
|
font-size: var(--syn-button-font-size-small);
|
|
161
216
|
line-height: calc(var(--syn-input-height-small) - var(--syn-input-border-width) * 2);
|
|
162
|
-
|
|
217
|
+
min-height: var(--syn-input-height-small);
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
.button--small .button__label::slotted(syn-icon) {
|
|
221
|
+
font-size: var(--button-small-icon-size);
|
|
222
|
+
vertical-align: var(--button-icon-offset-small);
|
|
163
223
|
}
|
|
164
224
|
|
|
165
225
|
.button--medium {
|
|
166
|
-
|
|
167
|
-
min-height: var(--syn-input-height-medium);
|
|
226
|
+
border-radius: var(--syn-button-border-radius-medium);
|
|
168
227
|
font-size: var(--syn-button-font-size-medium);
|
|
169
228
|
line-height: calc(var(--syn-input-height-medium) - var(--syn-input-border-width) * 2);
|
|
170
|
-
|
|
229
|
+
min-height: var(--syn-input-height-medium);
|
|
171
230
|
}
|
|
172
231
|
|
|
173
232
|
.button--large {
|
|
174
|
-
|
|
175
|
-
|
|
233
|
+
--button-icon-only-padding: 0 calc(var(--syn-spacing-medium) - var(--syn-spacing-4x-small));
|
|
234
|
+
--button-label-padding-inline-start: var(--syn-spacing-large);
|
|
235
|
+
--button-label-padding-inline-end: var(--syn-spacing-large);
|
|
236
|
+
--button-label-padding-inline-start-with-prefix: var(--syn-spacing-small);
|
|
237
|
+
--button-label-padding-inline-end-with-suffix: var(--syn-spacing-small);
|
|
238
|
+
--button-affix-size: var(--button-large-icon-size);
|
|
239
|
+
--button-labeled-prefix-spacing: var(--syn-spacing-large);
|
|
240
|
+
--button-labeled-suffix-spacing: var(--syn-spacing-large);
|
|
241
|
+
|
|
242
|
+
border-radius: var(--syn-button-border-radius-large);
|
|
176
243
|
font-size: var(--syn-button-font-size-large);
|
|
177
244
|
line-height: calc(var(--syn-input-height-large) - var(--syn-input-border-width) * 2);
|
|
178
|
-
|
|
245
|
+
min-height: var(--syn-input-height-large);
|
|
246
|
+
}
|
|
247
|
+
|
|
248
|
+
.button--large .button__label::slotted(syn-icon) {
|
|
249
|
+
font-size: var(--button-large-icon-size);
|
|
250
|
+
vertical-align: var(--button-icon-offset-large);
|
|
179
251
|
}
|
|
180
252
|
|
|
181
253
|
/*
|
|
182
254
|
* Caret modifier
|
|
183
255
|
*/
|
|
184
|
-
|
|
185
256
|
.button--caret .button__suffix {
|
|
186
257
|
display: none;
|
|
187
258
|
}
|
|
@@ -193,10 +264,9 @@ export default css`
|
|
|
193
264
|
/*
|
|
194
265
|
* Loading modifier
|
|
195
266
|
*/
|
|
196
|
-
|
|
197
267
|
.button--loading {
|
|
198
|
-
position: relative;
|
|
199
268
|
cursor: wait;
|
|
269
|
+
position: relative;
|
|
200
270
|
}
|
|
201
271
|
|
|
202
272
|
.button--loading .button__prefix,
|
|
@@ -208,154 +278,73 @@ export default css`
|
|
|
208
278
|
|
|
209
279
|
.button--loading syn-spinner {
|
|
210
280
|
--indicator-color: currentColor;
|
|
211
|
-
|
|
281
|
+
|
|
212
282
|
font-size: 1em;
|
|
213
283
|
height: 1em;
|
|
214
|
-
width: 1em;
|
|
215
|
-
top: calc(50% - 0.5em);
|
|
216
284
|
left: calc(50% - 0.5em);
|
|
285
|
+
position: absolute;
|
|
286
|
+
top: calc(50% - 0.5em);
|
|
287
|
+
width: 1em;
|
|
217
288
|
}
|
|
218
289
|
|
|
219
290
|
/*
|
|
220
291
|
* Badges
|
|
221
292
|
*/
|
|
222
|
-
|
|
223
293
|
.button ::slotted(syn-badge) {
|
|
294
|
+
pointer-events: none;
|
|
224
295
|
position: absolute;
|
|
225
|
-
top: 0;
|
|
226
296
|
right: 0;
|
|
297
|
+
top: 0;
|
|
227
298
|
translate: 50% -50%;
|
|
228
|
-
pointer-events: none;
|
|
229
299
|
}
|
|
230
300
|
|
|
231
301
|
.button--rtl ::slotted(syn-badge) {
|
|
232
|
-
right: auto;
|
|
233
302
|
left: 0;
|
|
303
|
+
right: auto;
|
|
234
304
|
translate: -50% -50%;
|
|
235
305
|
}
|
|
236
306
|
|
|
237
307
|
/*
|
|
238
308
|
* Button spacing
|
|
239
309
|
*/
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
padding:
|
|
243
|
-
}
|
|
244
|
-
|
|
245
|
-
.button--has-label.button--medium .button__label {
|
|
246
|
-
padding: 0 var(--syn-spacing-medium);
|
|
310
|
+
.button--has-label .button__label {
|
|
311
|
+
padding-block: 0;
|
|
312
|
+
padding-inline: var(--button-label-padding-inline-start) var(--button-label-padding-inline-end);
|
|
247
313
|
}
|
|
248
314
|
|
|
249
|
-
.button--has-label
|
|
250
|
-
padding:
|
|
251
|
-
}
|
|
252
|
-
|
|
253
|
-
.button--has-prefix.button--small {
|
|
254
|
-
padding-inline-start: var(--syn-spacing-x-small);
|
|
255
|
-
}
|
|
256
|
-
|
|
257
|
-
.button--has-prefix.button--small .button__label {
|
|
258
|
-
padding-inline-start: var(--syn-spacing-x-small);
|
|
259
|
-
}
|
|
260
|
-
|
|
261
|
-
.button--has-prefix.button--medium {
|
|
262
|
-
padding-inline-start: var(--syn-spacing-small);
|
|
263
|
-
}
|
|
264
|
-
|
|
265
|
-
.button--has-prefix.button--medium .button__label {
|
|
266
|
-
padding-inline-start: var(--syn-spacing-small);
|
|
267
|
-
}
|
|
268
|
-
|
|
269
|
-
.button--has-prefix.button--large {
|
|
270
|
-
padding-inline-start: var(--syn-spacing-small);
|
|
271
|
-
}
|
|
272
|
-
|
|
273
|
-
.button--has-prefix.button--large .button__label {
|
|
274
|
-
padding-inline-start: var(--syn-spacing-small);
|
|
275
|
-
}
|
|
276
|
-
|
|
277
|
-
.button--has-suffix.button--small,
|
|
278
|
-
.button--caret.button--small {
|
|
279
|
-
padding-inline-end: var(--syn-spacing-x-small);
|
|
280
|
-
}
|
|
281
|
-
|
|
282
|
-
.button--has-suffix.button--small .button__label,
|
|
283
|
-
.button--caret.button--small .button__label {
|
|
284
|
-
padding-inline-end: var(--syn-spacing-x-small);
|
|
285
|
-
}
|
|
286
|
-
|
|
287
|
-
.button--has-suffix.button--medium,
|
|
288
|
-
.button--caret.button--medium {
|
|
289
|
-
padding-inline-end: var(--syn-spacing-small);
|
|
290
|
-
}
|
|
291
|
-
|
|
292
|
-
.button--has-suffix.button--medium .button__label,
|
|
293
|
-
.button--caret.button--medium .button__label {
|
|
294
|
-
padding-inline-end: var(--syn-spacing-small);
|
|
295
|
-
}
|
|
296
|
-
|
|
297
|
-
.button--has-suffix.button--large,
|
|
298
|
-
.button--caret.button--large {
|
|
299
|
-
padding-inline-end: var(--syn-spacing-small);
|
|
300
|
-
}
|
|
301
|
-
|
|
302
|
-
.button--has-suffix.button--large .button__label,
|
|
303
|
-
.button--caret.button--large .button__label {
|
|
304
|
-
padding-inline-end: var(--syn-spacing-small);
|
|
315
|
+
.button--has-label .button__label.button__icon-only {
|
|
316
|
+
padding: var(--button-icon-only-padding);
|
|
305
317
|
}
|
|
306
318
|
|
|
307
319
|
/*
|
|
308
|
-
*
|
|
309
|
-
*
|
|
310
|
-
* ::slotted selector. To work around this, the button group component does some magic to add these special classes to
|
|
311
|
-
* buttons and we style them here instead.
|
|
320
|
+
* Adjustments for button label paddings
|
|
321
|
+
* @see https://github.com/synergy-design-system/synergy-design-system/issues/243
|
|
312
322
|
*/
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
border-start-end-radius: 0;
|
|
316
|
-
border-end-end-radius: 0;
|
|
317
|
-
}
|
|
318
|
-
|
|
319
|
-
:host([data-syn-button-group__button--inner]) .button {
|
|
320
|
-
border-radius: 0;
|
|
323
|
+
.button--has-prefix .button__label {
|
|
324
|
+
padding-inline-start: var(--button-label-padding-inline-start-with-prefix);
|
|
321
325
|
}
|
|
322
326
|
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
327
|
+
.button--has-suffix .button__label,
|
|
328
|
+
.button--caret .button__label {
|
|
329
|
+
padding-inline-end: var(--button-label-padding-inline-end-with-suffix);
|
|
326
330
|
}
|
|
327
331
|
|
|
328
|
-
/*
|
|
329
|
-
|
|
330
|
-
|
|
332
|
+
/* Basic prefix/suffix spacing */
|
|
333
|
+
.button--has-prefix {
|
|
334
|
+
padding-inline-start: var(--button-prefix-spacing);
|
|
331
335
|
}
|
|
332
336
|
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
[data-syn-button-group__button--first],
|
|
337
|
-
[data-syn-button-group__button--radio],
|
|
338
|
-
[variant='filled']
|
|
339
|
-
):not(:hover)
|
|
340
|
-
)
|
|
341
|
-
.button:after {
|
|
342
|
-
content: '';
|
|
343
|
-
position: absolute;
|
|
344
|
-
top: 0;
|
|
345
|
-
inset-inline-start: 0;
|
|
346
|
-
bottom: 0;
|
|
347
|
-
border-left: solid 1px rgb(128 128 128 / 33%);
|
|
348
|
-
mix-blend-mode: multiply;
|
|
337
|
+
.button--has-suffix,
|
|
338
|
+
.button--caret {
|
|
339
|
+
padding-inline-end: var(--button-suffix-spacing);
|
|
349
340
|
}
|
|
350
341
|
|
|
351
|
-
/*
|
|
352
|
-
|
|
353
|
-
|
|
342
|
+
/* Enhanced spacing for labeled buttons with prefix/suffix */
|
|
343
|
+
.button--has-label.button--has-prefix {
|
|
344
|
+
padding-inline-start: var(--button-labeled-prefix-spacing);
|
|
354
345
|
}
|
|
355
346
|
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
:host([data-syn-button-group__button][checked]) {
|
|
359
|
-
z-index: 2;
|
|
347
|
+
.button--has-label.button--has-suffix {
|
|
348
|
+
padding-inline-end: var(--button-labeled-suffix-spacing);
|
|
360
349
|
}
|
|
361
350
|
`;
|
package/data/layers/full/component/component:syn-button-group/components/button-group.component.ts
CHANGED
|
@@ -1,15 +1,20 @@
|
|
|
1
|
-
|
|
1
|
+
import type { CSSResultGroup } from 'lit';
|
|
2
2
|
import { html } from 'lit';
|
|
3
3
|
import { property, query, state } from 'lit/decorators.js';
|
|
4
4
|
import componentStyles from '../../styles/component.styles.js';
|
|
5
5
|
import SynergyElement from '../../internal/synergy-element.js';
|
|
6
6
|
import styles from './button-group.styles.js';
|
|
7
|
-
import customStyles from './button-group.custom.styles.js';
|
|
8
|
-
import type { CSSResultGroup } from 'lit';
|
|
9
7
|
import type SynButton from '../button/button.component.js';
|
|
10
8
|
import type SynRadioButton from '../radio-button/radio-button.component.js';
|
|
11
9
|
import { enableDefaultSettings } from '../../utilities/defaultSettings/decorator.js';
|
|
12
10
|
|
|
11
|
+
function findButton(el: HTMLElement) {
|
|
12
|
+
const selector = 'syn-button, syn-radio-button';
|
|
13
|
+
|
|
14
|
+
// The button could be the target element or a child of it (e.g. a dropdown or tooltip anchor)
|
|
15
|
+
return el.closest(selector) ?? el.querySelector(selector);
|
|
16
|
+
}
|
|
17
|
+
|
|
13
18
|
/**
|
|
14
19
|
* @summary Button groups can be used to group related buttons into sections.
|
|
15
20
|
* @documentation https://synergy-design-system.github.io/?path=/docs/components-syn-button-group--docs
|
|
@@ -22,7 +27,7 @@ import { enableDefaultSettings } from '../../utilities/defaultSettings/decorator
|
|
|
22
27
|
*/
|
|
23
28
|
@enableDefaultSettings('SynButtonGroup')
|
|
24
29
|
export default class SynButtonGroup extends SynergyElement {
|
|
25
|
-
static styles: CSSResultGroup = [componentStyles, styles
|
|
30
|
+
static styles: CSSResultGroup = [componentStyles, styles];
|
|
26
31
|
|
|
27
32
|
@query('slot') defaultSlot: HTMLSlotElement;
|
|
28
33
|
|
|
@@ -42,21 +47,25 @@ export default class SynButtonGroup extends SynergyElement {
|
|
|
42
47
|
|
|
43
48
|
private mutationObserver: MutationObserver;
|
|
44
49
|
|
|
50
|
+
// eslint-disable-next-line class-methods-use-this
|
|
45
51
|
private handleFocus(event: Event) {
|
|
46
52
|
const button = findButton(event.target as HTMLElement);
|
|
47
53
|
button?.toggleAttribute('data-syn-button-group__button--focus', true);
|
|
48
54
|
}
|
|
49
55
|
|
|
56
|
+
// eslint-disable-next-line class-methods-use-this
|
|
50
57
|
private handleBlur(event: Event) {
|
|
51
58
|
const button = findButton(event.target as HTMLElement);
|
|
52
59
|
button?.toggleAttribute('data-syn-button-group__button--focus', false);
|
|
53
60
|
}
|
|
54
61
|
|
|
62
|
+
// eslint-disable-next-line class-methods-use-this
|
|
55
63
|
private handleMouseOver(event: Event) {
|
|
56
64
|
const button = findButton(event.target as HTMLElement);
|
|
57
65
|
button?.toggleAttribute('data-syn-button-group__button--hover', true);
|
|
58
66
|
}
|
|
59
67
|
|
|
68
|
+
// eslint-disable-next-line class-methods-use-this
|
|
60
69
|
private handleMouseOut(event: Event) {
|
|
61
70
|
const button = findButton(event.target as HTMLElement);
|
|
62
71
|
button?.toggleAttribute('data-syn-button-group__button--hover', false);
|
|
@@ -82,7 +91,7 @@ export default class SynButtonGroup extends SynergyElement {
|
|
|
82
91
|
button.toggleAttribute('data-syn-button-group__button--last', index === slottedElements.length - 1);
|
|
83
92
|
button.toggleAttribute(
|
|
84
93
|
'data-syn-button-group__button--radio',
|
|
85
|
-
button.tagName.toLowerCase() === 'syn-radio-button'
|
|
94
|
+
button.tagName.toLowerCase() === 'syn-radio-button',
|
|
86
95
|
);
|
|
87
96
|
}
|
|
88
97
|
});
|
|
@@ -91,9 +100,9 @@ export default class SynButtonGroup extends SynergyElement {
|
|
|
91
100
|
firstUpdated() {
|
|
92
101
|
const startObserving = () => {
|
|
93
102
|
this.mutationObserver.observe(this, {
|
|
94
|
-
subtree: true,
|
|
95
|
-
attributes: true,
|
|
96
103
|
attributeFilter: ['size', 'variant'],
|
|
104
|
+
attributes: true,
|
|
105
|
+
subtree: true,
|
|
97
106
|
});
|
|
98
107
|
};
|
|
99
108
|
|
|
@@ -115,11 +124,11 @@ export default class SynButtonGroup extends SynergyElement {
|
|
|
115
124
|
|
|
116
125
|
if (button) {
|
|
117
126
|
// Unset the size property to allow button-group to control it
|
|
118
|
-
button.size = undefined as
|
|
127
|
+
button.size = undefined as never;
|
|
119
128
|
|
|
120
129
|
// Also unset variant for syn-buttons
|
|
121
130
|
if (button.tagName.toLowerCase() === 'syn-button') {
|
|
122
|
-
(button as SynButton).variant = undefined as
|
|
131
|
+
(button as SynButton).variant = undefined as never;
|
|
123
132
|
}
|
|
124
133
|
}
|
|
125
134
|
});
|
|
@@ -129,8 +138,9 @@ export default class SynButtonGroup extends SynergyElement {
|
|
|
129
138
|
if (buttonGroupChanged || childrenChanged) {
|
|
130
139
|
this.handleSlotChange();
|
|
131
140
|
}
|
|
132
|
-
|
|
141
|
+
|
|
133
142
|
// Reconnect observer after changes are done
|
|
143
|
+
// eslint-disable-next-line @typescript-eslint/no-floating-promises
|
|
134
144
|
this.updateComplete.then(() => {
|
|
135
145
|
startObserving();
|
|
136
146
|
});
|
|
@@ -145,7 +155,7 @@ export default class SynButtonGroup extends SynergyElement {
|
|
|
145
155
|
}
|
|
146
156
|
|
|
147
157
|
render() {
|
|
148
|
-
|
|
158
|
+
/* eslint-disable @typescript-eslint/unbound-method, lit-a11y/mouse-events-have-key-events */
|
|
149
159
|
return html`
|
|
150
160
|
<div
|
|
151
161
|
part="base"
|
|
@@ -160,12 +170,6 @@ export default class SynButtonGroup extends SynergyElement {
|
|
|
160
170
|
<slot @slotchange=${this.handleSlotChange}></slot>
|
|
161
171
|
</div>
|
|
162
172
|
`;
|
|
173
|
+
/* eslint-enable @typescript-eslint/unbound-method, lit-a11y/mouse-events-have-key-events */
|
|
163
174
|
}
|
|
164
175
|
}
|
|
165
|
-
|
|
166
|
-
function findButton(el: HTMLElement) {
|
|
167
|
-
const selector = 'syn-button, syn-radio-button';
|
|
168
|
-
|
|
169
|
-
// The button could be the target element or a child of it (e.g. a dropdown or tooltip anchor)
|
|
170
|
-
return el.closest(selector) ?? el.querySelector(selector);
|
|
171
|
-
}
|
|
@@ -21,7 +21,7 @@ import '@synergy-design-system/components/components/chart/chart.js';
|
|
|
21
21
|
*
|
|
22
22
|
* @documentation https://synergy-design-system.github.io/?path=/docs/charting-syn-chart--docs
|
|
23
23
|
* @status experimental
|
|
24
|
-
* @since
|
|
24
|
+
* @since 3.15.0
|
|
25
25
|
*
|
|
26
26
|
* @csspart base - The component's base wrapper.
|
|
27
27
|
*/
|
|
@@ -61,16 +61,22 @@ it takes precedence over the palette.
|
|
|
61
61
|
}
|
|
62
62
|
|
|
63
63
|
/**
|
|
64
|
-
* The ECharts configuration
|
|
64
|
+
* The ECharts configuration input.
|
|
65
65
|
|
|
66
|
-
This property
|
|
66
|
+
This property accepts either:
|
|
67
|
+
- a plain `ECConfig` object, or
|
|
68
|
+
- a callback that receives a typed preset handle and applies chart presets.
|
|
69
|
+
|
|
70
|
+
The resolved result maps 1:1 to the ECharts `option` parameter passed to
|
|
71
|
+
`setOption()`.
|
|
67
72
|
Consult the [ECharts option documentation](https://echarts.apache.org/en/option.html)
|
|
68
|
-
and assign the object directly
|
|
73
|
+
and assign either the object directly or build it through the handle.
|
|
69
74
|
|
|
70
75
|
> **Note:** Currently only **line charts** (`series[].type: 'line'`) are supported.
|
|
71
76
|
> Support for additional chart types (bar, pie, etc.) will be added in future releases or can be requested.
|
|
72
77
|
|
|
73
|
-
Assigning a new
|
|
78
|
+
Assigning a new config input completely replaces the previous chart
|
|
79
|
+
configuration (`notMerge: true`).
|
|
74
80
|
To update only parts of the chart, access the underlying ECharts instance directly and
|
|
75
81
|
call `setOption()` with custom merge options.
|
|
76
82
|
*/
|