@synergy-design-system/mcp 2.8.2 → 2.10.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 CHANGED
@@ -1,5 +1,27 @@
1
1
  # Changelog
2
2
 
3
+ ## 2.10.0
4
+
5
+ ### Minor Changes
6
+
7
+ - [#1216](https://github.com/synergy-design-system/synergy-design-system/pull/1216) [`fa7ebf8`](https://github.com/synergy-design-system/synergy-design-system/commit/fa7ebf8ca9aef4e246f75688711c7dbb24cb25cb) Thanks [@schilchSICKAG](https://github.com/schilchSICKAG)! - Released on: 2026-03-06
8
+
9
+ feat: ✨ `<syn-combobox>` should support `maxlength` attribute (#1184)
10
+
11
+ This release adds the ability to set a maximal input length for `<syn-combobox>` via `<syn-combobox maxlength="5">`.
12
+ This provides the ability to set the maximal amount of free text input for the comboboxes input field.
13
+ It still allows to use options from the list of available options and works as a restriction for free text only.
14
+
15
+ ## 2.9.0
16
+
17
+ ### Minor Changes
18
+
19
+ - [#1193](https://github.com/synergy-design-system/synergy-design-system/pull/1193) [`c7f6a8b`](https://github.com/synergy-design-system/synergy-design-system/commit/c7f6a8bc8ed2eb76c5f9510c1d499f6feca5d302) Thanks [@schilchSICKAG](https://github.com/schilchSICKAG)! - Released on: 2026-03-06
20
+
21
+ feat: ✨ Add new component `<syn-tag-group>` (#1152)
22
+
23
+ Adds a new component `<syn-tag-group>`, including templates how to use this component.
24
+
3
25
  ## 2.8.2
4
26
 
5
27
  ### Patch Changes
@@ -1 +1 @@
1
- 5682e415ee9342f4cf05aadd3e23b010
1
+ ad2a168f719ee483e665e3c0bcea9fe9
@@ -265,6 +265,17 @@ and `hide()` methods and this attribute will reflect the combobox's open state.
265
265
  return this.nativeElement.label;
266
266
  }
267
267
 
268
+ /**
269
+ * The maximum length of input that will be considered valid.
270
+ */
271
+ @Input()
272
+ set maxlength(v: SynCombobox['maxlength']) {
273
+ this._ngZone.runOutsideAngular(() => (this.nativeElement.maxlength = v));
274
+ }
275
+ get maxlength(): SynCombobox['maxlength'] {
276
+ return this.nativeElement.maxlength;
277
+ }
278
+
268
279
  /**
269
280
  * The preferred placement of the combobox's menu.
270
281
  Note that the actual placement may vary as needed to keep the listbox inside of the viewport.
@@ -3,6 +3,7 @@
3
3
  /* eslint-disable no-underscore-dangle */
4
4
  import type { CSSResultGroup, PropertyValues, TemplateResult } from 'lit';
5
5
  import { classMap } from 'lit/directives/class-map.js';
6
+ import { ifDefined } from 'lit/directives/if-defined.js';
6
7
  import { html } from 'lit';
7
8
  import { property, query, state } from 'lit/decorators.js';
8
9
  import { unsafeHTML } from 'lit/directives/unsafe-html.js';
@@ -228,6 +229,9 @@ export default class SynCombobox extends SynergyElement implements SynergyFormCo
228
229
  /** The combobox's label. If you need to display HTML, use the `label` slot instead. */
229
230
  @property() label = '';
230
231
 
232
+ /** The maximum length of input that will be considered valid. */
233
+ @property({ type: Number }) maxlength: number;
234
+
231
235
  /**
232
236
  * The preferred placement of the combobox's menu.
233
237
  * Note that the actual placement may vary as needed to keep the listbox inside of the viewport.
@@ -1563,6 +1567,7 @@ export default class SynCombobox extends SynergyElement implements SynergyFormCo
1563
1567
  .disabled=${this.disabled}
1564
1568
  .readOnly=${this.readonly}
1565
1569
  .value=${this.displayLabel}
1570
+ maxlength=${ifDefined(this.maxlength)}
1566
1571
  autocomplete="off"
1567
1572
  spellcheck="false"
1568
1573
  autocapitalize="off"
@@ -135,6 +135,11 @@ and `hide()` methods and this attribute will reflect the combobox's open state.
135
135
  */
136
136
  label?: SynCombobox['label'];
137
137
 
138
+ /**
139
+ * The maximum length of input that will be considered valid.
140
+ */
141
+ maxlength?: SynCombobox['maxlength'];
142
+
138
143
  /**
139
144
  * The preferred placement of the combobox's menu.
140
145
  Note that the actual placement may vary as needed to keep the listbox inside of the viewport.
@@ -0,0 +1,83 @@
1
+ // ---------------------------------------------------------------------
2
+ // 🔒 AUTOGENERATED @synergy-design-system/angular wrappers for @synergy-design-system/components
3
+ // Please do not edit this file directly!
4
+ // It will get recreated when running pnpm build.
5
+ // ---------------------------------------------------------------------
6
+ import {
7
+ Component,
8
+ ElementRef,
9
+ NgZone,
10
+ Input,
11
+ Output,
12
+ EventEmitter,
13
+ AfterContentInit,
14
+ } from '@angular/core';
15
+ import type { SynTagGroup } from '@synergy-design-system/components';
16
+
17
+ import '@synergy-design-system/components/components/tag-group/tag-group.js';
18
+
19
+ /**
20
+ * @summary A tag group is used to display multiple tags that belong together, often representing selected filters, categories, or user‑generated labels.
21
+ * It arranges tags in flexible rows and supports different sizes and layouts.
22
+ * Tags can be removable, icon‑based, or purely textual.
23
+ *
24
+ * @documentation https://synergy-design-system.github.io/?path=/docs/components-syn-tag-group--docs
25
+ * @status stable
26
+ *
27
+ * @slot - The tag group's main content. Must be `<syn-tag />` elements.
28
+ * @slot label - The tag group's label. Alternatively, you can use the `label` attribute.
29
+ *
30
+ * @csspart base - The component's base wrapper.
31
+ * @csspart tag-label - The tag group's label.
32
+ */
33
+ @Component({
34
+ selector: 'syn-tag-group',
35
+ standalone: true,
36
+ template: '<ng-content></ng-content>',
37
+ })
38
+ export class SynTagGroupComponent {
39
+ public nativeElement: SynTagGroup;
40
+ private _ngZone: NgZone;
41
+
42
+ constructor(e: ElementRef, ngZone: NgZone) {
43
+ this.nativeElement = e.nativeElement;
44
+ this._ngZone = ngZone;
45
+ }
46
+
47
+ /**
48
+ * The tag group's label.
49
+ * If you need to display HTML, use the `label` slot instead.
50
+ */
51
+ @Input()
52
+ set label(v: SynTagGroup['label']) {
53
+ this._ngZone.runOutsideAngular(() => (this.nativeElement.label = v));
54
+ }
55
+ get label(): SynTagGroup['label'] {
56
+ return this.nativeElement.label;
57
+ }
58
+
59
+ /**
60
+ * Controls the label position.
61
+ * Use 'top' to place the label above the tags, or 'start' to place it to the begin of the tag group.
62
+ */
63
+ @Input()
64
+ set labelPosition(v: SynTagGroup['labelPosition']) {
65
+ this._ngZone.runOutsideAngular(
66
+ () => (this.nativeElement.labelPosition = v),
67
+ );
68
+ }
69
+ get labelPosition(): SynTagGroup['labelPosition'] {
70
+ return this.nativeElement.labelPosition;
71
+ }
72
+
73
+ /**
74
+ * The size that should be applied to all slotted `<syn-tag>` elements
75
+ */
76
+ @Input()
77
+ set size(v: SynTagGroup['size']) {
78
+ this._ngZone.runOutsideAngular(() => (this.nativeElement.size = v));
79
+ }
80
+ get size(): SynTagGroup['size'] {
81
+ return this.nativeElement.size;
82
+ }
83
+ }
@@ -0,0 +1,33 @@
1
+ // ---------------------------------------------------------------------
2
+ // 🔒 AUTOGENERATED @synergy-design-system/react wrappers for @synergy-design-system/components
3
+ // Please do not edit this file directly!
4
+ // It will get recreated when running pnpm build.
5
+ // ---------------------------------------------------------------------
6
+ import * as React from 'react';
7
+ import { createComponent } from '@lit/react';
8
+ import Component from '@synergy-design-system/components/components/tag-group/tag-group.component.js';
9
+
10
+ const tagName = 'syn-tag-group';
11
+ Component.define('syn-tag-group');
12
+
13
+ /**
14
+ * @summary A tag group is used to display multiple tags that belong together, often representing selected filters, categories, or user‑generated labels.
15
+ * It arranges tags in flexible rows and supports different sizes and layouts.
16
+ * Tags can be removable, icon‑based, or purely textual.
17
+ *
18
+ * @documentation https://synergy-design-system.github.io/?path=/docs/components-syn-tag-group--docs
19
+ * @status stable
20
+ *
21
+ * @slot - The tag group's main content. Must be `<syn-tag />` elements.
22
+ * @slot label - The tag group's label. Alternatively, you can use the `label` attribute.
23
+ *
24
+ * @csspart base - The component's base wrapper.
25
+ * @csspart tag-label - The tag group's label.
26
+ */
27
+ export const SynTagGroup = createComponent({
28
+ displayName: 'SynTagGroup',
29
+ elementClass: Component,
30
+ events: {},
31
+ react: React,
32
+ tagName,
33
+ });
@@ -0,0 +1,49 @@
1
+ import { css } from 'lit';
2
+
3
+ export default css`
4
+ :host {
5
+ --tag-group-item-gap: var(--syn-spacing-x-small);
6
+ --tag-group-label-gap: var(--syn-spacing-x-small);
7
+ --tag-group-label-font: var(--syn-body-medium-semibold);
8
+
9
+ display: block;
10
+ }
11
+
12
+ .tag-group {
13
+ align-items: anchor-center;
14
+ display: flex;
15
+ flex-wrap: wrap;
16
+ gap: var(--tag-group-item-gap);
17
+ }
18
+
19
+ /* Label Styles */
20
+ .tag-group__label {
21
+ color: var(--syn-input-label-color);
22
+ display: block;
23
+ font: var(--tag-group-label-font);
24
+ }
25
+
26
+ .tag-group--top .tag-group__label {
27
+ /**
28
+ * When calculating the margin-bottom, we have to take the gap of .tag-group into account.
29
+ * We dont want to remove the row-gap above, as otherwise the gap between multi line tags would be 0.
30
+ * By subtracting the row-gap from the label gap, we ensure that the distance between the label and the first row of tags is consistent.
31
+ */
32
+ margin-bottom: calc(var(--tag-group-label-gap) - var(--syn-spacing-2x-small));
33
+ order: -1;
34
+ width: 100%;
35
+ }
36
+
37
+ /* Size Modifiers */
38
+ .tag-group--small {
39
+ --tag-group-item-gap: var(--syn-spacing-2x-small);
40
+ --tag-group-label-gap: var(--syn-spacing-x-small);
41
+ --tag-group-label-font: var(--syn-body-small-semibold);
42
+ }
43
+
44
+ .tag-group--large {
45
+ --tag-group-item-gap: var(--syn-spacing-small);
46
+ --tag-group-label-gap: var(--syn-spacing-x-small);
47
+ --tag-group-label-font: var(--syn-body-large-semibold);
48
+ }
49
+ `;
@@ -0,0 +1,95 @@
1
+ import { html } from 'lit';
2
+ import { property, queryAssignedElements } from 'lit/decorators.js';
3
+ import type { CSSResultGroup } from 'lit';
4
+ import { classMap } from 'lit/directives/class-map.js';
5
+ import { HasSlotController } from '../../internal/slot.js';
6
+ import SynergyElement from '../../internal/synergy-element.js';
7
+ import { watch } from '../../internal/watch.js';
8
+ import componentStyles from '../../styles/component.styles.js';
9
+ import styles from './tag-group.styles.js';
10
+ import type SynTag from '../tag/tag.component.js';
11
+ import { enableDefaultSettings } from '../../utilities/defaultSettings/decorator.js';
12
+
13
+ /**
14
+ * @summary A tag group is used to display multiple tags that belong together, often representing selected filters, categories, or user‑generated labels.
15
+ * It arranges tags in flexible rows and supports different sizes and layouts.
16
+ * Tags can be removable, icon‑based, or purely textual.
17
+ *
18
+ * @documentation https://synergy-design-system.github.io/?path=/docs/components-syn-tag-group--docs
19
+ * @status stable
20
+ *
21
+ * @slot - The tag group's main content. Must be `<syn-tag />` elements.
22
+ * @slot label - The tag group's label. Alternatively, you can use the `label` attribute.
23
+ *
24
+ * @csspart base - The component's base wrapper.
25
+ * @csspart tag-label - The tag group's label.
26
+ */
27
+ @enableDefaultSettings('SynTagGroup')
28
+ export default class SynTagGroup extends SynergyElement {
29
+ static styles: CSSResultGroup = [
30
+ componentStyles,
31
+ styles,
32
+ ];
33
+
34
+ @queryAssignedElements({ selector: 'syn-tag' }) tagsInDefaultSlot!: SynTag[];
35
+
36
+ private readonly hasSlotController = new HasSlotController(this, 'label');
37
+
38
+ /** The tag group's label. If you need to display HTML, use the `label` slot instead. */
39
+ @property() label = '';
40
+
41
+ /**
42
+ * Controls the label position. Use 'top' to place the label above the tags, or 'start' to place it to the begin of the tag group.
43
+ */
44
+ @property({ attribute: 'label-position', reflect: true }) labelPosition: 'top' | 'start' = 'top';
45
+
46
+ /** The size that should be applied to all slotted `<syn-tag>` elements */
47
+ @property({ reflect: true }) size: 'small' | 'medium' | 'large' = 'medium';
48
+
49
+ private adjustTagSize() {
50
+ this.tagsInDefaultSlot.forEach(tag => {
51
+ tag.setAttribute('size', this.size);
52
+ });
53
+ }
54
+
55
+ @watch('size', { waitUntilFirstUpdate: true })
56
+ handleSizeChange() {
57
+ this.adjustTagSize();
58
+ }
59
+
60
+ handleSlotChange() {
61
+ this.adjustTagSize();
62
+ }
63
+
64
+ render() {
65
+ const hasLabelSlot = this.hasSlotController.test('label');
66
+ const hasLabel = this.label ? true : !!hasLabelSlot;
67
+
68
+ /* eslint-disable @typescript-eslint/unbound-method */
69
+ return html`
70
+ <div
71
+ part="base"
72
+ class=${classMap({
73
+ 'tag-group': true,
74
+ 'tag-group--large': this.size === 'large',
75
+ 'tag-group--medium': this.size === 'medium',
76
+ 'tag-group--small': this.size === 'small',
77
+ 'tag-group--start': this.labelPosition === 'start',
78
+ 'tag-group--top': this.labelPosition === 'top',
79
+ })}
80
+ >
81
+
82
+ <span
83
+ part="tag-label"
84
+ class="tag-group__label"
85
+ aria-hidden=${hasLabel ? 'false' : 'true'}
86
+ >
87
+ <slot name="label">${this.label}</slot>
88
+ </span>
89
+
90
+ <slot @slotchange=${this.handleSlotChange}></slot>
91
+ </div>
92
+ `;
93
+ /* eslint-enable @typescript-eslint/unbound-method */
94
+ }
95
+ }
@@ -0,0 +1,69 @@
1
+ <script setup lang="ts">
2
+ // ---------------------------------------------------------------------
3
+ // 🔒 AUTOGENERATED @synergy-design-system/vue wrappers for @synergy-design-system/components
4
+ // Please do not edit this file directly!
5
+ // It will get recreated when running pnpm build.
6
+ // ---------------------------------------------------------------------
7
+
8
+ /**
9
+ * @summary A tag group is used to display multiple tags that belong together, often representing selected filters, categories, or user‑generated labels.
10
+ * It arranges tags in flexible rows and supports different sizes and layouts.
11
+ * Tags can be removable, icon‑based, or purely textual.
12
+ *
13
+ * @documentation https://synergy-design-system.github.io/?path=/docs/components-syn-tag-group--docs
14
+ * @status stable
15
+ *
16
+ * @slot - The tag group's main content. Must be `<syn-tag />` elements.
17
+ * @slot label - The tag group's label. Alternatively, you can use the `label` attribute.
18
+ *
19
+ * @csspart base - The component's base wrapper.
20
+ * @csspart tag-label - The tag group's label.
21
+ */
22
+ import { computed, ref } from 'vue';
23
+ import '@synergy-design-system/components/components/tag-group/tag-group.js';
24
+
25
+ import type { SynTagGroup } from '@synergy-design-system/components';
26
+
27
+ // DOM Reference to the element
28
+ const nativeElement = ref<SynTagGroup>();
29
+
30
+ defineExpose({
31
+ nativeElement,
32
+ });
33
+
34
+ // Map attributes
35
+ const props = defineProps<{
36
+ /**
37
+ * The tag group's label.
38
+ * If you need to display HTML, use the `label` slot instead.
39
+ */
40
+ label?: SynTagGroup['label'];
41
+
42
+ /**
43
+ * Controls the label position.
44
+ * Use 'top' to place the label above the tags, or 'start' to place it to the begin of the tag group.
45
+ */
46
+ labelPosition?: SynTagGroup['labelPosition'];
47
+
48
+ /**
49
+ * The size that should be applied to all slotted `<syn-tag>` elements
50
+ */
51
+ size?: SynTagGroup['size'];
52
+ }>();
53
+
54
+ // Make sure prop binding only forwards the props that are actually there.
55
+ // This is needed because :param="param" also adds an empty attribute
56
+ // when using web-components, which breaks optional arguments like size in SynInput
57
+ // @see https://github.com/vuejs/core/issues/5190#issuecomment-1003112498
58
+ const visibleProps = computed(() =>
59
+ Object.fromEntries(
60
+ Object.entries(props).filter(([, value]) => typeof value !== 'undefined'),
61
+ ),
62
+ );
63
+ </script>
64
+
65
+ <template>
66
+ <syn-tag-group v-bind="visibleProps" ref="nativeElement">
67
+ <slot></slot>
68
+ </syn-tag-group>
69
+ </template>
@@ -1,5 +1,37 @@
1
1
  # Changelog
2
2
 
3
+ ## 3.8.0
4
+
5
+ ### Minor Changes
6
+
7
+ - [#1216](https://github.com/synergy-design-system/synergy-design-system/pull/1216) [`fa7ebf8`](https://github.com/synergy-design-system/synergy-design-system/commit/fa7ebf8ca9aef4e246f75688711c7dbb24cb25cb) Thanks [@schilchSICKAG](https://github.com/schilchSICKAG)! - Released on: 2026-03-06
8
+
9
+ feat: ✨ `<syn-combobox>` should support `maxlength` attribute (#1184)
10
+
11
+ This release adds the ability to set a maximal input length for `<syn-combobox>` via `<syn-combobox maxlength="5">`.
12
+ This provides the ability to set the maximal amount of free text input for the comboboxes input field.
13
+ It still allows to use options from the list of available options and works as a restriction for free text only.
14
+
15
+ ### Patch Changes
16
+
17
+ - Updated dependencies []:
18
+ - @synergy-design-system/tokens@3.8.0
19
+
20
+ ## 3.7.0
21
+
22
+ ### Minor Changes
23
+
24
+ - [#1193](https://github.com/synergy-design-system/synergy-design-system/pull/1193) [`c7f6a8b`](https://github.com/synergy-design-system/synergy-design-system/commit/c7f6a8bc8ed2eb76c5f9510c1d499f6feca5d302) Thanks [@schilchSICKAG](https://github.com/schilchSICKAG)! - Released on: 2026-03-06
25
+
26
+ feat: ✨ Add new component `<syn-tag-group>` (#1152)
27
+
28
+ Adds a new component `<syn-tag-group>`, including templates how to use this component.
29
+
30
+ ### Patch Changes
31
+
32
+ - Updated dependencies [[`c7f6a8b`](https://github.com/synergy-design-system/synergy-design-system/commit/c7f6a8bc8ed2eb76c5f9510c1d499f6feca5d302)]:
33
+ - @synergy-design-system/tokens@3.7.0
34
+
3
35
  ## 3.6.2
4
36
 
5
37
  ### Patch Changes
@@ -1,5 +1,17 @@
1
1
  # Changelog
2
2
 
3
+ ## 3.8.0
4
+
5
+ ## 3.7.0
6
+
7
+ ### Minor Changes
8
+
9
+ - [#1193](https://github.com/synergy-design-system/synergy-design-system/pull/1193) [`c7f6a8b`](https://github.com/synergy-design-system/synergy-design-system/commit/c7f6a8bc8ed2eb76c5f9510c1d499f6feca5d302) Thanks [@schilchSICKAG](https://github.com/schilchSICKAG)! - Released on: 2026-03-06
10
+
11
+ feat: ✨ Add new component `<syn-tag-group>` (#1152)
12
+
13
+ Adds a new component `<syn-tag-group>`, including templates how to use this component.
14
+
3
15
  ## 3.6.2
4
16
 
5
17
  ## 3.6.1
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @synergy-design-system/tokens version 3.6.1
2
+ * @synergy-design-system/tokens version 3.7.0
3
3
  * SICK Global UX Foundation
4
4
  * Do not edit directly, this file was auto-generated.
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @synergy-design-system/tokens version 3.6.1
2
+ * @synergy-design-system/tokens version 3.7.0
3
3
  * SICK Global UX Foundation
4
4
  */
5
5
 
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @synergy-design-system/tokens version 3.6.1
2
+ * @synergy-design-system/tokens version 3.7.0
3
3
  * SICK Global UX Foundation
4
4
  * Do not edit directly, this file was auto-generated.
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @synergy-design-system/tokens version 3.6.1
2
+ * @synergy-design-system/tokens version 3.7.0
3
3
  * SICK Global UX Foundation
4
4
  * Do not edit directly, this file was auto-generated.
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @synergy-design-system/tokens version 3.6.1
2
+ * @synergy-design-system/tokens version 3.7.0
3
3
  * SICK Global UX Foundation
4
4
  * Do not edit directly, this file was auto-generated.
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @synergy-design-system/tokens version 3.6.1
2
+ * @synergy-design-system/tokens version 3.7.0
3
3
  * SICK Global UX Foundation
4
4
  * Do not edit directly, this file was auto-generated.
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @synergy-design-system/tokens version 3.6.1
2
+ * @synergy-design-system/tokens version 3.7.0
3
3
  * SICK Global UX Foundation
4
4
  * Do not edit directly, this file was auto-generated.
5
5
  */