@synergy-design-system/metadata 3.10.0 → 3.11.1
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 +21 -0
- package/data/core/asset/asset:sick2018-icons.json +1 -1
- package/data/core/asset/asset:sick2018-logos.json +1 -1
- package/data/core/asset/asset:sick2018-system-icons.json +1 -1
- package/data/core/asset/asset:sick2025-icons-fill.json +1 -1
- package/data/core/asset/asset:sick2025-icons-outline.json +1 -1
- package/data/core/asset/asset:sick2025-logos.json +1 -1
- package/data/core/asset/asset:sick2025-system-icons.json +1 -1
- 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:assets-package.json +2 -2
- package/data/core/setup/setup:components-package.json +2 -2
- package/data/core/setup/setup:fonts-package.json +2 -2
- package/data/core/setup/setup:react-package.json +2 -2
- package/data/core/setup/setup:styles-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/style/style:syn-body.json +1 -1
- package/data/core/style/style:syn-heading.json +1 -1
- package/data/core/style/style:syn-link-list.json +1 -1
- package/data/core/style/style:syn-link.json +1 -1
- package/data/core/style/style:syn-table-cell.json +1 -1
- package/data/core/style/style:syn-table.json +1 -1
- package/data/core/style/style:syn-weight.json +1 -1
- 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/core/utility/utility:fonts-sick-intl.json +1 -1
- package/data/index.json +1 -1
- package/data/layers/full/component/component:syn-menu/components/menu.component.ts +62 -25
- package/data/layers/full/component/component:syn-menu/components/menu.styles.ts +0 -8
- package/data/layers/full/component/component:syn-menu-item/components/menu-item.component.ts +0 -7
- package/data/layers/full/component/component:syn-menu-item/components/submenu-controller.ts +94 -0
- package/data/layers/full/component/component:syn-optgroup/components/optgroup.component.ts +2 -0
- package/data/layers/full/setup/setup:angular-package/angular/CHANGELOG.md +20 -0
- package/data/layers/full/setup/setup:angular-package/angular/package.json +3 -3
- package/data/layers/full/setup/setup:assets-package/assets/CHANGELOG.md +8 -0
- package/data/layers/full/setup/setup:assets-package/assets/package.json +3 -3
- package/data/layers/full/setup/setup:components-package/components/CHANGELOG.md +27 -0
- package/data/layers/full/setup/setup:components-package/components/package.json +12 -12
- package/data/layers/full/setup/setup:fonts-package/fonts/CHANGELOG.md +8 -0
- package/data/layers/full/setup/setup:fonts-package/fonts/package.json +4 -4
- package/data/layers/full/setup/setup:react-package/react/CHANGELOG.md +20 -0
- package/data/layers/full/setup/setup:react-package/react/package.json +3 -3
- package/data/layers/full/setup/setup:styles-package/styles/CHANGELOG.md +8 -0
- package/data/layers/full/setup/setup:styles-package/styles/package.json +3 -3
- package/data/layers/full/setup/setup:tokens-package/tokens/CHANGELOG.md +10 -0
- package/data/layers/full/setup/setup:tokens-package/tokens/package.json +6 -6
- package/data/layers/full/setup/setup:vue-package/vue/CHANGELOG.md +20 -0
- package/data/layers/full/setup/setup:vue-package/vue/package.json +4 -4
- package/data/layers/full/tokens/charts/js/index.d.ts +1 -1
- package/data/layers/full/tokens/charts/js/index.js +1 -1
- package/data/layers/full/tokens/charts/scss/_tokens.scss +1 -1
- package/data/layers/full/tokens/charts/themes/sick2025_dark.css +1 -1
- package/data/layers/full/tokens/charts/themes/sick2025_light.css +1 -1
- package/data/layers/full/tokens/js/index.d.ts +1 -1
- package/data/layers/full/tokens/js/index.js +1 -1
- package/data/layers/full/tokens/scss/_tokens.scss +1 -1
- package/data/layers/full/tokens/themes/sick2018_dark.css +5 -5
- package/data/layers/full/tokens/themes/sick2018_light.css +5 -5
- package/data/layers/full/tokens/themes/sick2025_dark.css +4 -4
- package/data/layers/full/tokens/themes/sick2025_light.css +4 -4
- package/data/manifest.json +1 -1
- package/package.json +8 -8
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
import { html } from 'lit';
|
|
3
3
|
import { query } from 'lit/decorators.js';
|
|
4
4
|
import { state } from 'lit/decorators.js';
|
|
5
|
-
import { classMap } from 'lit/directives/class-map.js';
|
|
6
5
|
import type { SynAttributesChangedEvent } from '../../events/syn-attributes-changed.js';
|
|
7
6
|
import componentStyles from '../../styles/component.styles.js';
|
|
8
7
|
import SynergyElement from '../../internal/synergy-element.js';
|
|
@@ -29,11 +28,35 @@ export default class SynMenu extends SynergyElement {
|
|
|
29
28
|
|
|
30
29
|
@query('slot') defaultSlot: HTMLSlotElement;
|
|
31
30
|
@state() hasMenuItemsWithCheckmarks = false;
|
|
31
|
+
private checkmarkStyledItems = new Set<SynMenuItem>();
|
|
32
32
|
|
|
33
33
|
private handleUpdateCheckmarks(items: SynMenuItem[]) {
|
|
34
34
|
// #368: Treat a menu as having checkmarks if it has any checkboxes or items with loading states
|
|
35
35
|
// The loading indicator has to be checked as well, as it's specially placed over the check mark
|
|
36
|
-
this.hasMenuItemsWithCheckmarks = items.some(item => item.type === 'checkbox' || item.loading);
|
|
36
|
+
this.hasMenuItemsWithCheckmarks = items.some(item => item.type === 'checkbox' || item.loading);
|
|
37
|
+
this.syncCheckmarkVisibility(items);
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
private syncCheckmarkVisibility(items: SynMenuItem[]) {
|
|
41
|
+
this.checkmarkStyledItems.forEach(item => {
|
|
42
|
+
if (!items.includes(item)) {
|
|
43
|
+
item.style.removeProperty('--display-checkmark');
|
|
44
|
+
this.checkmarkStyledItems.delete(item);
|
|
45
|
+
}
|
|
46
|
+
});
|
|
47
|
+
|
|
48
|
+
if (this.hasMenuItemsWithCheckmarks) {
|
|
49
|
+
items.forEach(item => {
|
|
50
|
+
item.style.removeProperty('--display-checkmark');
|
|
51
|
+
this.checkmarkStyledItems.delete(item);
|
|
52
|
+
});
|
|
53
|
+
return;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
items.forEach(item => {
|
|
57
|
+
item.style.setProperty('--display-checkmark', 'none');
|
|
58
|
+
this.checkmarkStyledItems.add(item);
|
|
59
|
+
});
|
|
37
60
|
}
|
|
38
61
|
|
|
39
62
|
private updateCheckMarksByChildPropChange = (e: SynAttributesChangedEvent) => {
|
|
@@ -43,6 +66,8 @@ export default class SynMenu extends SynergyElement {
|
|
|
43
66
|
|
|
44
67
|
disconnectedCallback() {
|
|
45
68
|
this.removeEventListener('syn-attributes-changed', this.updateCheckMarksByChildPropChange);
|
|
69
|
+
this.checkmarkStyledItems.forEach(item => item.style.removeProperty('--display-checkmark'));
|
|
70
|
+
this.checkmarkStyledItems.clear();
|
|
46
71
|
}
|
|
47
72
|
|
|
48
73
|
connectedCallback() {
|
|
@@ -51,22 +76,26 @@ export default class SynMenu extends SynergyElement {
|
|
|
51
76
|
this.addEventListener('syn-attributes-changed', this.updateCheckMarksByChildPropChange);
|
|
52
77
|
}
|
|
53
78
|
|
|
54
|
-
private
|
|
55
|
-
const menuItemTypes = ['menuitem', 'menuitemcheckbox'];
|
|
56
|
-
|
|
79
|
+
private getMenuItemFromEvent(event: Event) {
|
|
57
80
|
const composedPath = event.composedPath();
|
|
58
|
-
const target = composedPath.find((el:
|
|
81
|
+
const target = composedPath.find((el: EventTarget) => el instanceof HTMLElement && this.isMenuItem(el));
|
|
82
|
+
|
|
83
|
+
if (!target || !(target instanceof HTMLElement)) {
|
|
84
|
+
return undefined;
|
|
85
|
+
}
|
|
59
86
|
|
|
60
|
-
|
|
87
|
+
const closestMenu = composedPath.find((el: EventTarget) => el instanceof Element && el.getAttribute('role') === 'menu');
|
|
88
|
+
if (closestMenu !== this) {
|
|
89
|
+
return undefined;
|
|
90
|
+
}
|
|
61
91
|
|
|
62
|
-
|
|
63
|
-
|
|
92
|
+
return target as SynMenuItem;
|
|
93
|
+
}
|
|
64
94
|
|
|
65
|
-
|
|
66
|
-
|
|
95
|
+
private handleClick(event: MouseEvent) {
|
|
96
|
+
const item = this.getMenuItemFromEvent(event);
|
|
67
97
|
|
|
68
|
-
|
|
69
|
-
const item = target as SynMenuItem;
|
|
98
|
+
if (!item) return;
|
|
70
99
|
|
|
71
100
|
if (item.type === 'checkbox') {
|
|
72
101
|
item.checked = !item.checked;
|
|
@@ -120,10 +149,10 @@ export default class SynMenu extends SynergyElement {
|
|
|
120
149
|
}
|
|
121
150
|
|
|
122
151
|
private handleMouseDown(event: MouseEvent) {
|
|
123
|
-
const target = event
|
|
152
|
+
const target = this.getMenuItemFromEvent(event);
|
|
124
153
|
|
|
125
|
-
if (
|
|
126
|
-
this.setCurrentItem(target
|
|
154
|
+
if (target) {
|
|
155
|
+
this.setCurrentItem(target);
|
|
127
156
|
}
|
|
128
157
|
}
|
|
129
158
|
|
|
@@ -144,14 +173,25 @@ export default class SynMenu extends SynergyElement {
|
|
|
144
173
|
);
|
|
145
174
|
}
|
|
146
175
|
|
|
176
|
+
private getMenuItemsFromElement(element: HTMLElement): SynMenuItem[] {
|
|
177
|
+
if (element.inert) {
|
|
178
|
+
return [];
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
if (this.isMenuItem(element)) {
|
|
182
|
+
return [element as SynMenuItem];
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
if (element.tagName.toLowerCase() === 'syn-menu') {
|
|
186
|
+
return [];
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
return [...element.children].flatMap(child => this.getMenuItemsFromElement(child as HTMLElement));
|
|
190
|
+
}
|
|
191
|
+
|
|
147
192
|
/** @internal Gets all slotted menu items, ignoring dividers, headers, and other elements. */
|
|
148
193
|
getAllItems() {
|
|
149
|
-
return [...this.defaultSlot.assignedElements({ flatten: true })].
|
|
150
|
-
if (el.inert || !this.isMenuItem(el)) {
|
|
151
|
-
return false;
|
|
152
|
-
}
|
|
153
|
-
return true;
|
|
154
|
-
}) as SynMenuItem[];
|
|
194
|
+
return [...this.defaultSlot.assignedElements({ flatten: true })].flatMap(el => this.getMenuItemsFromElement(el as HTMLElement));
|
|
155
195
|
}
|
|
156
196
|
|
|
157
197
|
/**
|
|
@@ -178,9 +218,6 @@ export default class SynMenu extends SynergyElement {
|
|
|
178
218
|
render() {
|
|
179
219
|
return html`
|
|
180
220
|
<slot
|
|
181
|
-
class=${classMap({
|
|
182
|
-
'menu--no-checkmarks': !this.hasMenuItemsWithCheckmarks,
|
|
183
|
-
})}
|
|
184
221
|
@slotchange=${this.handleSlotChange}
|
|
185
222
|
@click=${this.handleClick}
|
|
186
223
|
@keydown=${this.handleKeyDown}
|
|
@@ -26,12 +26,4 @@ export default css`
|
|
|
26
26
|
::slotted(syn-menu-label:first-of-type) {
|
|
27
27
|
--display-divider: none;
|
|
28
28
|
}
|
|
29
|
-
|
|
30
|
-
/*
|
|
31
|
-
* #368: Hide the checkmarks for menu items
|
|
32
|
-
* when no syn-menu-item[checkbox] or loading is present
|
|
33
|
-
*/
|
|
34
|
-
.menu--no-checkmarks::slotted(syn-menu-item) {
|
|
35
|
-
--display-checkmark: none;
|
|
36
|
-
}
|
|
37
29
|
`;
|
package/data/layers/full/component/component:syn-menu-item/components/menu-item.component.ts
CHANGED
|
@@ -79,13 +79,11 @@ export default class SynMenuItem extends SynergyElement {
|
|
|
79
79
|
connectedCallback() {
|
|
80
80
|
super.connectedCallback();
|
|
81
81
|
this.addEventListener('click', this.handleHostClick);
|
|
82
|
-
this.addEventListener('mouseover', this.handleMouseOver);
|
|
83
82
|
}
|
|
84
83
|
|
|
85
84
|
disconnectedCallback() {
|
|
86
85
|
super.disconnectedCallback();
|
|
87
86
|
this.removeEventListener('click', this.handleHostClick);
|
|
88
|
-
this.removeEventListener('mouseover', this.handleMouseOver);
|
|
89
87
|
}
|
|
90
88
|
|
|
91
89
|
private handleDefaultSlotChange() {
|
|
@@ -112,11 +110,6 @@ export default class SynMenuItem extends SynergyElement {
|
|
|
112
110
|
}
|
|
113
111
|
};
|
|
114
112
|
|
|
115
|
-
private handleMouseOver = (event: MouseEvent) => {
|
|
116
|
-
this.focus();
|
|
117
|
-
event.stopPropagation();
|
|
118
|
-
};
|
|
119
|
-
|
|
120
113
|
@watch('checked')
|
|
121
114
|
handleCheckedChange() {
|
|
122
115
|
// For proper accessibility, users have to use type="checkbox" to use the checked attribute
|
|
@@ -11,6 +11,7 @@ export class SubmenuController implements ReactiveController {
|
|
|
11
11
|
private host: ReactiveControllerHost & SynMenuItem;
|
|
12
12
|
private popupRef: Ref<SynPopup> = createRef();
|
|
13
13
|
private enableSubmenuTimer = -1;
|
|
14
|
+
private hasGlobalDismissListeners = false;
|
|
14
15
|
private isConnected = false;
|
|
15
16
|
private isPopupConnected = false;
|
|
16
17
|
private skidding = 0;
|
|
@@ -45,6 +46,7 @@ export class SubmenuController implements ReactiveController {
|
|
|
45
46
|
if (!this.isConnected) {
|
|
46
47
|
this.host.addEventListener('mousemove', this.handleMouseMove);
|
|
47
48
|
this.host.addEventListener('mouseover', this.handleMouseOver);
|
|
49
|
+
this.host.addEventListener('mouseleave', this.handleHostMouseLeave);
|
|
48
50
|
this.host.addEventListener('keydown', this.handleKeyDown);
|
|
49
51
|
this.host.addEventListener('click', this.handleClick);
|
|
50
52
|
this.host.addEventListener('focusout', this.handleFocusOut);
|
|
@@ -56,6 +58,7 @@ export class SubmenuController implements ReactiveController {
|
|
|
56
58
|
if (!this.isPopupConnected) {
|
|
57
59
|
if (this.popupRef.value) {
|
|
58
60
|
this.popupRef.value.addEventListener('mouseover', this.handlePopupMouseover);
|
|
61
|
+
this.popupRef.value.addEventListener('mouseleave', this.handlePopupMouseLeave);
|
|
59
62
|
this.popupRef.value.addEventListener('syn-reposition', this.handlePopupReposition);
|
|
60
63
|
this.isPopupConnected = true;
|
|
61
64
|
}
|
|
@@ -66,6 +69,7 @@ export class SubmenuController implements ReactiveController {
|
|
|
66
69
|
if (this.isConnected) {
|
|
67
70
|
this.host.removeEventListener('mousemove', this.handleMouseMove);
|
|
68
71
|
this.host.removeEventListener('mouseover', this.handleMouseOver);
|
|
72
|
+
this.host.removeEventListener('mouseleave', this.handleHostMouseLeave);
|
|
69
73
|
this.host.removeEventListener('keydown', this.handleKeyDown);
|
|
70
74
|
this.host.removeEventListener('click', this.handleClick);
|
|
71
75
|
this.host.removeEventListener('focusout', this.handleFocusOut);
|
|
@@ -74,10 +78,37 @@ export class SubmenuController implements ReactiveController {
|
|
|
74
78
|
if (this.isPopupConnected) {
|
|
75
79
|
if (this.popupRef.value) {
|
|
76
80
|
this.popupRef.value.removeEventListener('mouseover', this.handlePopupMouseover);
|
|
81
|
+
this.popupRef.value.removeEventListener('mouseleave', this.handlePopupMouseLeave);
|
|
77
82
|
this.popupRef.value.removeEventListener('syn-reposition', this.handlePopupReposition);
|
|
78
83
|
this.isPopupConnected = false;
|
|
79
84
|
}
|
|
80
85
|
}
|
|
86
|
+
|
|
87
|
+
this.removeGlobalDismissListeners();
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
private addGlobalDismissListeners() {
|
|
91
|
+
if (this.hasGlobalDismissListeners) {
|
|
92
|
+
return;
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
document.addEventListener('keydown', this.handleDocumentKeyDown);
|
|
96
|
+
window.addEventListener('blur', this.handleWindowBlur);
|
|
97
|
+
window.addEventListener('pagehide', this.handlePageHide);
|
|
98
|
+
document.addEventListener('visibilitychange', this.handleVisibilityChange);
|
|
99
|
+
this.hasGlobalDismissListeners = true;
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
private removeGlobalDismissListeners() {
|
|
103
|
+
if (!this.hasGlobalDismissListeners) {
|
|
104
|
+
return;
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
document.removeEventListener('keydown', this.handleDocumentKeyDown);
|
|
108
|
+
window.removeEventListener('blur', this.handleWindowBlur);
|
|
109
|
+
window.removeEventListener('pagehide', this.handlePageHide);
|
|
110
|
+
document.removeEventListener('visibilitychange', this.handleVisibilityChange);
|
|
111
|
+
this.hasGlobalDismissListeners = false;
|
|
81
112
|
}
|
|
82
113
|
|
|
83
114
|
// Set the safe triangle cursor position
|
|
@@ -92,6 +123,35 @@ export class SubmenuController implements ReactiveController {
|
|
|
92
123
|
}
|
|
93
124
|
};
|
|
94
125
|
|
|
126
|
+
private isWithinSubmenuInteractionTree(target: EventTarget | null): boolean {
|
|
127
|
+
if (!(target instanceof Node)) {
|
|
128
|
+
return false;
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
if (this.host.contains(target)) {
|
|
132
|
+
return true;
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
if (this.popupRef.value?.contains(target)) {
|
|
136
|
+
return true;
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
const rootNode = target.getRootNode();
|
|
140
|
+
if (rootNode instanceof ShadowRoot) {
|
|
141
|
+
return this.isWithinSubmenuInteractionTree(rootNode.host);
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
return false;
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
private handleHostMouseLeave = (event: MouseEvent) => {
|
|
148
|
+
if (this.isWithinSubmenuInteractionTree(event.relatedTarget)) {
|
|
149
|
+
return;
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
this.disableSubmenu();
|
|
153
|
+
};
|
|
154
|
+
|
|
95
155
|
private handleSubmenuEntry(event: KeyboardEvent) {
|
|
96
156
|
// Pass focus to the first menu-item in the submenu.
|
|
97
157
|
const submenuSlot: HTMLSlotElement | null = this.host.renderRoot.querySelector("slot[name='submenu']");
|
|
@@ -187,11 +247,40 @@ export class SubmenuController implements ReactiveController {
|
|
|
187
247
|
this.disableSubmenu();
|
|
188
248
|
};
|
|
189
249
|
|
|
250
|
+
private handleWindowBlur = () => {
|
|
251
|
+
this.disableSubmenu();
|
|
252
|
+
};
|
|
253
|
+
|
|
254
|
+
private handlePageHide = () => {
|
|
255
|
+
this.disableSubmenu();
|
|
256
|
+
};
|
|
257
|
+
|
|
258
|
+
private handleVisibilityChange = () => {
|
|
259
|
+
if (document.visibilityState === 'hidden') {
|
|
260
|
+
this.disableSubmenu();
|
|
261
|
+
}
|
|
262
|
+
};
|
|
263
|
+
|
|
264
|
+
private handleDocumentKeyDown = (event: KeyboardEvent) => {
|
|
265
|
+
if (event.key === 'Escape' && this.isExpanded()) {
|
|
266
|
+
this.disableSubmenu();
|
|
267
|
+
event.stopPropagation();
|
|
268
|
+
}
|
|
269
|
+
};
|
|
270
|
+
|
|
190
271
|
// Prevent the parent menu-item from getting focus on mouse movement on the submenu
|
|
191
272
|
private handlePopupMouseover = (event: MouseEvent) => {
|
|
192
273
|
event.stopPropagation();
|
|
193
274
|
};
|
|
194
275
|
|
|
276
|
+
private handlePopupMouseLeave = (event: MouseEvent) => {
|
|
277
|
+
if (this.isWithinSubmenuInteractionTree(event.relatedTarget)) {
|
|
278
|
+
return;
|
|
279
|
+
}
|
|
280
|
+
|
|
281
|
+
this.disableSubmenu();
|
|
282
|
+
};
|
|
283
|
+
|
|
195
284
|
// Set the safe triangle values for the submenu when the position changes
|
|
196
285
|
private handlePopupReposition = () => {
|
|
197
286
|
const submenuSlot: HTMLSlotElement | null = this.host.renderRoot.querySelector("slot[name='submenu']");
|
|
@@ -213,6 +302,11 @@ export class SubmenuController implements ReactiveController {
|
|
|
213
302
|
if (this.popupRef.value) {
|
|
214
303
|
if (this.popupRef.value.active !== state) {
|
|
215
304
|
this.popupRef.value.active = state;
|
|
305
|
+
if (state) {
|
|
306
|
+
this.addGlobalDismissListeners();
|
|
307
|
+
} else {
|
|
308
|
+
this.removeGlobalDismissListeners();
|
|
309
|
+
}
|
|
216
310
|
this.host.requestUpdate();
|
|
217
311
|
}
|
|
218
312
|
}
|
|
@@ -120,6 +120,8 @@ export default class SynOptgroup extends SynergyElement {
|
|
|
120
120
|
if (optgroupMutation.type === 'childList') {
|
|
121
121
|
optgroupMutation.addedNodes.forEach((node) => {
|
|
122
122
|
if (node instanceof HTMLElement && node.matches('syn-option')) {
|
|
123
|
+
// False positive for instanceof check, but we know this is correct since the mutation observer is only looking for syn-options
|
|
124
|
+
// eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion
|
|
123
125
|
handleInitialDisabledForOption(node as SynOption, this.disabled);
|
|
124
126
|
}
|
|
125
127
|
});
|
|
@@ -1,5 +1,25 @@
|
|
|
1
1
|
# @synergy-design-system/angular
|
|
2
2
|
|
|
3
|
+
## 3.15.2
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- [#1293](https://github.com/synergy-design-system/synergy-design-system/pull/1293) [`513e931`](https://github.com/synergy-design-system/synergy-design-system/commit/513e931c88a46e1e71a3a4d8ca7ac3c3a85b2189) Thanks [@schilchSICKAG](https://github.com/schilchSICKAG)! - Released on: 2026-06-03
|
|
8
|
+
|
|
9
|
+
fix: 🐛 dependency updates ([#258](https://github.com/synergy-design-system/synergy-design-system/issues/258))
|
|
10
|
+
|
|
11
|
+
- Updated dependencies [[`513e931`](https://github.com/synergy-design-system/synergy-design-system/commit/513e931c88a46e1e71a3a4d8ca7ac3c3a85b2189)]:
|
|
12
|
+
- @synergy-design-system/components@3.15.2
|
|
13
|
+
- @synergy-design-system/tokens@3.15.2
|
|
14
|
+
|
|
15
|
+
## 3.15.1
|
|
16
|
+
|
|
17
|
+
### Patch Changes
|
|
18
|
+
|
|
19
|
+
- Updated dependencies [[`4fdb69a`](https://github.com/synergy-design-system/synergy-design-system/commit/4fdb69aec5ddb0ddfa76a948c87eaf84be6fd670)]:
|
|
20
|
+
- @synergy-design-system/components@3.15.1
|
|
21
|
+
- @synergy-design-system/tokens@3.15.1
|
|
22
|
+
|
|
3
23
|
## 3.15.0
|
|
4
24
|
|
|
5
25
|
### Minor Changes
|
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
"url": "https://github.com/synergy-design-system/synergy-design-system.git",
|
|
23
23
|
"directory": "packages/angular"
|
|
24
24
|
},
|
|
25
|
-
"version": "3.15.
|
|
25
|
+
"version": "3.15.2",
|
|
26
26
|
"scripts": {
|
|
27
27
|
"_build": "pnpm _clean && ng-packagr -c tsconfig.lib.json && pnpm _after-build",
|
|
28
28
|
"_clean": "rm -rf ../_private/angular-demo/.angular",
|
|
@@ -36,8 +36,8 @@
|
|
|
36
36
|
"@synergy-design-system/tokens": "workspace:*"
|
|
37
37
|
},
|
|
38
38
|
"devDependencies": {
|
|
39
|
-
"@angular/core": "^21.2.
|
|
40
|
-
"@angular/forms": "^21.2.
|
|
39
|
+
"@angular/core": "^21.2.15",
|
|
40
|
+
"@angular/forms": "^21.2.15",
|
|
41
41
|
"@synergy-design-system/components": "workspace:*",
|
|
42
42
|
"ng-packagr": "^21.2.3",
|
|
43
43
|
"tslib": "^2.8.1",
|
|
@@ -1,5 +1,13 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 2.1.2
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- [#1293](https://github.com/synergy-design-system/synergy-design-system/pull/1293) [`513e931`](https://github.com/synergy-design-system/synergy-design-system/commit/513e931c88a46e1e71a3a4d8ca7ac3c3a85b2189) Thanks [@schilchSICKAG](https://github.com/schilchSICKAG)! - Released on: 2026-06-03
|
|
8
|
+
|
|
9
|
+
fix: 🐛 dependency updates ([#258](https://github.com/synergy-design-system/synergy-design-system/issues/258))
|
|
10
|
+
|
|
3
11
|
## 2.1.1
|
|
4
12
|
|
|
5
13
|
### Patch Changes
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
},
|
|
9
9
|
"description": "Assets for the Synergy Design System",
|
|
10
10
|
"devDependencies": {
|
|
11
|
-
"@dotenvx/dotenvx": "^1.
|
|
11
|
+
"@dotenvx/dotenvx": "^1.71.0",
|
|
12
12
|
"@figma-export/cli": "^6.4.0",
|
|
13
13
|
"@figma-export/core": "^6.4.0",
|
|
14
14
|
"@figma-export/output-components-as-svg": "^6.4.0",
|
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
"@figma-export/types": "^6.4.0",
|
|
17
17
|
"@figma/rest-api-spec": "^0.37.0",
|
|
18
18
|
"@synergy-design-system/eslint-config-syn": "workspace:*",
|
|
19
|
-
"@types/node": "^24.12.
|
|
19
|
+
"@types/node": "^24.12.4",
|
|
20
20
|
"cheerio": "^1.2.0",
|
|
21
21
|
"eslint": "^9.39.4",
|
|
22
22
|
"rimraf": "^6.1.3",
|
|
@@ -94,5 +94,5 @@
|
|
|
94
94
|
},
|
|
95
95
|
"type": "module",
|
|
96
96
|
"types": "./dist/index.d.ts",
|
|
97
|
-
"version": "2.1.
|
|
97
|
+
"version": "2.1.2"
|
|
98
98
|
}
|
|
@@ -1,5 +1,32 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 3.15.2
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- [#1293](https://github.com/synergy-design-system/synergy-design-system/pull/1293) [`513e931`](https://github.com/synergy-design-system/synergy-design-system/commit/513e931c88a46e1e71a3a4d8ca7ac3c3a85b2189) Thanks [@schilchSICKAG](https://github.com/schilchSICKAG)! - Released on: 2026-06-03
|
|
8
|
+
|
|
9
|
+
fix: 🐛 dependency updates ([#258](https://github.com/synergy-design-system/synergy-design-system/issues/258))
|
|
10
|
+
|
|
11
|
+
- Updated dependencies [[`513e931`](https://github.com/synergy-design-system/synergy-design-system/commit/513e931c88a46e1e71a3a4d8ca7ac3c3a85b2189)]:
|
|
12
|
+
- @synergy-design-system/tokens@3.15.2
|
|
13
|
+
|
|
14
|
+
## 3.15.1
|
|
15
|
+
|
|
16
|
+
### Patch Changes
|
|
17
|
+
|
|
18
|
+
- [#1296](https://github.com/synergy-design-system/synergy-design-system/pull/1296) [`4fdb69a`](https://github.com/synergy-design-system/synergy-design-system/commit/4fdb69aec5ddb0ddfa76a948c87eaf84be6fd670) Thanks [@schilchSICKAG](https://github.com/schilchSICKAG)! - Released on: 2026-06-03
|
|
19
|
+
|
|
20
|
+
fix: 🐛 `<syn-menu>` multiple issues ([#1295](https://github.com/synergy-design-system/synergy-design-system/issues/1295))
|
|
21
|
+
|
|
22
|
+
This release fixes multiple issues when using `<syn-menu>`:
|
|
23
|
+
- submenus no longer stay open when leaving the browser window ([#882](https://github.com/synergy-design-system/synergy-design-system/issues/882))
|
|
24
|
+
- `<syn-menu-item>` wrapped in tooltip can now be used reliably (including navigation and selection) ([#1162](https://github.com/synergy-design-system/synergy-design-system/issues/1162))
|
|
25
|
+
- `<syn-menu-item>` no longer steals focus on hover ([#1286](https://github.com/synergy-design-system/synergy-design-system/issues/1286))
|
|
26
|
+
|
|
27
|
+
- Updated dependencies []:
|
|
28
|
+
- @synergy-design-system/tokens@3.15.1
|
|
29
|
+
|
|
3
30
|
## 3.15.0
|
|
4
31
|
|
|
5
32
|
### Minor Changes
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
"url": "https://www.sick.com"
|
|
5
5
|
},
|
|
6
6
|
"name": "@synergy-design-system/components",
|
|
7
|
-
"version": "3.15.
|
|
7
|
+
"version": "3.15.2",
|
|
8
8
|
"description": "",
|
|
9
9
|
"repository": {
|
|
10
10
|
"type": "git",
|
|
@@ -68,9 +68,9 @@
|
|
|
68
68
|
"license": "MIT",
|
|
69
69
|
"devDependencies": {
|
|
70
70
|
"@custom-elements-manifest/analyzer": "^0.11.0",
|
|
71
|
-
"@figma/code-connect": "^1.4.
|
|
71
|
+
"@figma/code-connect": "^1.4.7",
|
|
72
72
|
"@open-wc/testing": "^4.0.0",
|
|
73
|
-
"@playwright/test": "^1.
|
|
73
|
+
"@playwright/test": "^1.60.0",
|
|
74
74
|
"@size-limit/esbuild": "^12.1.0",
|
|
75
75
|
"@size-limit/file": "^12.1.0",
|
|
76
76
|
"@synergy-design-system/eslint-config-syn": "workspace:*",
|
|
@@ -78,15 +78,15 @@
|
|
|
78
78
|
"@synergy-design-system/tokens": "workspace:*",
|
|
79
79
|
"@types/mocha": "^10.0.10",
|
|
80
80
|
"@types/sinon": "^21.0.1",
|
|
81
|
-
"@typescript-eslint/eslint-plugin": "^8.
|
|
82
|
-
"@typescript-eslint/parser": "^8.
|
|
81
|
+
"@typescript-eslint/eslint-plugin": "^8.60.1",
|
|
82
|
+
"@typescript-eslint/parser": "^8.60.1",
|
|
83
83
|
"@web/dev-server-esbuild": "^1.0.5",
|
|
84
84
|
"@web/test-runner": "^0.20.2",
|
|
85
85
|
"@web/test-runner-commands": "^0.9.0",
|
|
86
86
|
"@web/test-runner-playwright": "^0.11.1",
|
|
87
87
|
"change-case": "^5.4.4",
|
|
88
88
|
"command-line-args": "^6.0.2",
|
|
89
|
-
"comment-parser": "^1.4.
|
|
89
|
+
"comment-parser": "^1.4.7",
|
|
90
90
|
"custom-element-vs-code-integration": "^1.5.0",
|
|
91
91
|
"esbuild": "^0.28.0",
|
|
92
92
|
"esbuild-plugin-replace": "^1.4.0",
|
|
@@ -95,25 +95,25 @@
|
|
|
95
95
|
"eslint-config-airbnb-typescript": "^18.0.0",
|
|
96
96
|
"eslint-plugin-import": "^2.32.0",
|
|
97
97
|
"eslint-plugin-jest": "^29.15.2",
|
|
98
|
-
"eslint-plugin-lit": "^2.
|
|
98
|
+
"eslint-plugin-lit": "^2.3.1",
|
|
99
99
|
"eslint-plugin-lit-a11y": "^5.1.1",
|
|
100
|
-
"eslint-plugin-playwright": "^2.10.
|
|
100
|
+
"eslint-plugin-playwright": "^2.10.4",
|
|
101
101
|
"eslint-plugin-wc": "^3.1.0",
|
|
102
|
-
"html-validate": "^
|
|
102
|
+
"html-validate": "^11.5.0",
|
|
103
103
|
"ora": "^9.4.0",
|
|
104
|
-
"postcss": "^8.5.
|
|
104
|
+
"postcss": "^8.5.15",
|
|
105
105
|
"postcss-header": "^3.0.3",
|
|
106
106
|
"postcss-import": "^16.1.1",
|
|
107
107
|
"prettier": "^3.8.3",
|
|
108
108
|
"sinon": "^21.1.2",
|
|
109
109
|
"size-limit": "^12.1.0",
|
|
110
|
-
"stylelint": "^17.
|
|
110
|
+
"stylelint": "^17.12.0",
|
|
111
111
|
"typescript": "~5.9.3"
|
|
112
112
|
},
|
|
113
113
|
"dependencies": {
|
|
114
114
|
"@floating-ui/dom": "^1.7.6",
|
|
115
115
|
"composed-offset-position": "^0.0.6",
|
|
116
|
-
"lit": "^3.3.
|
|
116
|
+
"lit": "^3.3.3"
|
|
117
117
|
},
|
|
118
118
|
"peerDependencies": {
|
|
119
119
|
"@synergy-design-system/tokens": "workspace:*",
|
|
@@ -1,5 +1,13 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 1.0.7
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- [#1293](https://github.com/synergy-design-system/synergy-design-system/pull/1293) [`513e931`](https://github.com/synergy-design-system/synergy-design-system/commit/513e931c88a46e1e71a3a4d8ca7ac3c3a85b2189) Thanks [@schilchSICKAG](https://github.com/schilchSICKAG)! - Released on: 2026-06-03
|
|
8
|
+
|
|
9
|
+
fix: 🐛 dependency updates ([#258](https://github.com/synergy-design-system/synergy-design-system/issues/258))
|
|
10
|
+
|
|
3
11
|
## 1.0.6
|
|
4
12
|
|
|
5
13
|
### Patch Changes
|
|
@@ -9,11 +9,11 @@
|
|
|
9
9
|
"@synergy-design-system/stylelint-config-syn": "workspace:^",
|
|
10
10
|
"eslint": "^9.39.4",
|
|
11
11
|
"ora": "^9.4.0",
|
|
12
|
-
"postcss": "^8.5.
|
|
12
|
+
"postcss": "^8.5.15",
|
|
13
13
|
"postcss-header": "^3.0.3",
|
|
14
14
|
"postcss-import": "^16.1.1",
|
|
15
|
-
"postcss-url": "^10.1.
|
|
16
|
-
"stylelint": "^17.
|
|
15
|
+
"postcss-url": "^10.1.4",
|
|
16
|
+
"stylelint": "^17.12.0"
|
|
17
17
|
},
|
|
18
18
|
"exports": {
|
|
19
19
|
".": {
|
|
@@ -68,5 +68,5 @@
|
|
|
68
68
|
"lint": "pnpm run /^lint:.*/"
|
|
69
69
|
},
|
|
70
70
|
"type": "module",
|
|
71
|
-
"version": "1.0.
|
|
71
|
+
"version": "1.0.7"
|
|
72
72
|
}
|
|
@@ -1,5 +1,25 @@
|
|
|
1
1
|
# @synergy-design-system/react
|
|
2
2
|
|
|
3
|
+
## 3.15.2
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- [#1293](https://github.com/synergy-design-system/synergy-design-system/pull/1293) [`513e931`](https://github.com/synergy-design-system/synergy-design-system/commit/513e931c88a46e1e71a3a4d8ca7ac3c3a85b2189) Thanks [@schilchSICKAG](https://github.com/schilchSICKAG)! - Released on: 2026-06-03
|
|
8
|
+
|
|
9
|
+
fix: 🐛 dependency updates ([#258](https://github.com/synergy-design-system/synergy-design-system/issues/258))
|
|
10
|
+
|
|
11
|
+
- Updated dependencies [[`513e931`](https://github.com/synergy-design-system/synergy-design-system/commit/513e931c88a46e1e71a3a4d8ca7ac3c3a85b2189)]:
|
|
12
|
+
- @synergy-design-system/components@3.15.2
|
|
13
|
+
- @synergy-design-system/tokens@3.15.2
|
|
14
|
+
|
|
15
|
+
## 3.15.1
|
|
16
|
+
|
|
17
|
+
### Patch Changes
|
|
18
|
+
|
|
19
|
+
- Updated dependencies [[`4fdb69a`](https://github.com/synergy-design-system/synergy-design-system/commit/4fdb69aec5ddb0ddfa76a948c87eaf84be6fd670)]:
|
|
20
|
+
- @synergy-design-system/components@3.15.1
|
|
21
|
+
- @synergy-design-system/tokens@3.15.1
|
|
22
|
+
|
|
3
23
|
## 3.15.0
|
|
4
24
|
|
|
5
25
|
### Minor Changes
|
|
@@ -43,10 +43,10 @@
|
|
|
43
43
|
"directory": "packages/react"
|
|
44
44
|
},
|
|
45
45
|
"type": "module",
|
|
46
|
-
"version": "3.15.
|
|
46
|
+
"version": "3.15.2",
|
|
47
47
|
"devDependencies": {
|
|
48
|
-
"@types/react": "^19.2.
|
|
49
|
-
"react": "^19.2.
|
|
48
|
+
"@types/react": "^19.2.16",
|
|
49
|
+
"react": "^19.2.7"
|
|
50
50
|
},
|
|
51
51
|
"peerDependencies": {
|
|
52
52
|
"@synergy-design-system/tokens": "workspace:*"
|
|
@@ -1,5 +1,13 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 2.1.1
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- [#1293](https://github.com/synergy-design-system/synergy-design-system/pull/1293) [`513e931`](https://github.com/synergy-design-system/synergy-design-system/commit/513e931c88a46e1e71a3a4d8ca7ac3c3a85b2189) Thanks [@schilchSICKAG](https://github.com/schilchSICKAG)! - Released on: 2026-06-03
|
|
8
|
+
|
|
9
|
+
fix: 🐛 dependency updates ([#258](https://github.com/synergy-design-system/synergy-design-system/issues/258))
|
|
10
|
+
|
|
3
11
|
## 2.1.0
|
|
4
12
|
|
|
5
13
|
### Minor Changes
|
|
@@ -36,7 +36,7 @@
|
|
|
36
36
|
"lint": "pnpm run /^lint:.*/"
|
|
37
37
|
},
|
|
38
38
|
"type": "module",
|
|
39
|
-
"version": "2.1.
|
|
39
|
+
"version": "2.1.1",
|
|
40
40
|
"devDependencies": {
|
|
41
41
|
"@synergy-design-system/eslint-config-syn": "workspace:^",
|
|
42
42
|
"@synergy-design-system/stylelint-config-syn": "workspace:^",
|
|
@@ -44,12 +44,12 @@
|
|
|
44
44
|
"eslint": "^9.39.4",
|
|
45
45
|
"globby": "^16.2.0",
|
|
46
46
|
"ora": "^9.4.0",
|
|
47
|
-
"postcss": "^8.5.
|
|
47
|
+
"postcss": "^8.5.15",
|
|
48
48
|
"postcss-cli": "^11.0.1",
|
|
49
49
|
"postcss-header": "^3.0.3",
|
|
50
50
|
"postcss-import": "^16.1.1",
|
|
51
51
|
"prettier": "^3.8.3",
|
|
52
|
-
"stylelint": "^17.
|
|
52
|
+
"stylelint": "^17.12.0"
|
|
53
53
|
},
|
|
54
54
|
"peerDependencies": {
|
|
55
55
|
"@synergy-design-system/tokens": "workspace:^"
|