@vonage/vivid 3.28.2 → 3.30.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.
Files changed (83) hide show
  1. package/custom-elements.json +400 -2
  2. package/index.js +13 -12
  3. package/lib/components.d.ts +1 -0
  4. package/lib/icon/icon.d.ts +1 -1
  5. package/lib/menu/menu.d.ts +1 -1
  6. package/lib/split-button/definition.d.ts +2 -0
  7. package/lib/split-button/index.d.ts +1 -0
  8. package/lib/split-button/split-button.d.ts +25 -0
  9. package/lib/split-button/split-button.template.d.ts +4 -0
  10. package/listbox/index.js +1 -1
  11. package/package.json +1 -1
  12. package/shared/definition.js +1 -1
  13. package/shared/definition10.js +1 -1
  14. package/shared/definition11.js +1 -1
  15. package/shared/definition12.js +1 -1
  16. package/shared/definition14.js +1 -1
  17. package/shared/definition15.js +1 -1
  18. package/shared/definition16.js +1 -1
  19. package/shared/definition17.js +1 -1
  20. package/shared/definition18.js +1 -1
  21. package/shared/definition19.js +1 -1
  22. package/shared/definition2.js +1 -1
  23. package/shared/definition21.js +1 -1
  24. package/shared/definition22.js +2 -2
  25. package/shared/definition23.js +1 -1
  26. package/shared/definition24.js +1 -1
  27. package/shared/definition25.js +1 -1
  28. package/shared/definition26.js +1 -1
  29. package/shared/definition27.js +1 -1
  30. package/shared/definition28.js +1 -1
  31. package/shared/definition30.js +7 -2
  32. package/shared/definition31.js +1 -1
  33. package/shared/definition33.js +1 -1
  34. package/shared/definition34.js +1 -1
  35. package/shared/definition35.js +1 -1
  36. package/shared/definition36.js +1 -1
  37. package/shared/definition37.js +1 -1
  38. package/shared/definition38.js +1 -1
  39. package/shared/definition39.js +1 -1
  40. package/shared/definition4.js +1 -1
  41. package/shared/definition40.js +1 -1
  42. package/shared/definition41.js +1 -1
  43. package/shared/definition42.js +1 -1
  44. package/shared/definition44.js +91 -126
  45. package/shared/definition45.js +123 -49
  46. package/shared/definition46.js +56 -16
  47. package/shared/definition47.js +16 -483
  48. package/shared/definition48.js +476 -96
  49. package/shared/definition49.js +108 -16
  50. package/shared/definition5.js +1 -1
  51. package/shared/definition50.js +15 -270
  52. package/shared/definition51.js +245 -89
  53. package/shared/definition52.js +113 -120
  54. package/shared/definition53.js +91 -82
  55. package/shared/definition54.js +111 -65
  56. package/shared/definition55.js +64 -291
  57. package/shared/definition56.js +303 -0
  58. package/shared/definition6.js +1 -1
  59. package/shared/definition7.js +1 -1
  60. package/shared/definition9.js +1 -1
  61. package/shared/form-elements.js +1 -1
  62. package/shared/icon.js +1 -1
  63. package/shared/patterns/form-elements/form-elements.d.ts +4 -4
  64. package/shared/text-field.js +1 -1
  65. package/split-button/index.js +15 -0
  66. package/styles/core/all.css +1 -1
  67. package/styles/core/theme.css +1 -1
  68. package/styles/core/typography.css +1 -1
  69. package/styles/tokens/theme-dark.css +4 -4
  70. package/styles/tokens/theme-light.css +4 -4
  71. package/switch/index.js +1 -1
  72. package/tab/index.js +1 -1
  73. package/tab-panel/index.js +1 -1
  74. package/tabs/index.js +3 -3
  75. package/tag/index.js +1 -1
  76. package/tag-group/index.js +1 -1
  77. package/text-area/index.js +1 -1
  78. package/text-field/index.js +1 -1
  79. package/toggletip/index.js +1 -1
  80. package/tooltip/index.js +1 -1
  81. package/tree-item/index.js +1 -1
  82. package/tree-view/index.js +1 -1
  83. package/vivid.api.json +287 -0
@@ -1,25 +1,117 @@
1
- import { F as FoundationElement, h as html, r as registerFactory } from './index.js';
1
+ import { F as FoundationElement, d as __classPrivateFieldGet, _ as __decorate, a as attr, b as __metadata, h as html, r as registerFactory } from './index.js';
2
+ import { i as iconRegistries } from './definition3.js';
3
+ import { f as focusRegistries } from './definition4.js';
4
+ import { b as AffixIcon, a as affixIconTemplateFactory } from './affix.js';
5
+ import { a as applyMixins } from './apply-mixins.js';
6
+ import { f as focusTemplateFactory } from './focus2.js';
7
+ import { I as Icon } from './icon.js';
8
+ import { w as when } from './when.js';
2
9
  import { c as classNames } from './class-names.js';
3
10
 
4
- var css_248z = ".base {\n display: flex;\n flex-wrap: wrap;\n gap: 8px;\n}";
11
+ var _Tag_select;
12
+ class Tag extends FoundationElement {
13
+ constructor() {
14
+ super(...arguments);
15
+ this.removable = false;
16
+ this.disabled = false;
17
+ this.selectable = false;
18
+ this.selected = false;
19
+ _Tag_select.set(this, () => {
20
+ if (!this.selectable || this.disabled) {
21
+ return;
22
+ }
23
+ this.selected = !this.selected;
24
+ this.$emit('selected-change');
25
+ });
26
+ }
27
+ remove() {
28
+ if (!this.removable || this.selectable) {
29
+ return;
30
+ }
31
+ this.$emit('removed');
32
+ this.parentElement && this.parentElement.removeChild(this);
33
+ }
34
+ handleKeydown(e) {
35
+ if (e.key === 'Enter') {
36
+ __classPrivateFieldGet(this, _Tag_select, "f").call(this);
37
+ }
38
+ if (e.key === 'Delete' || e.key === 'Backspace') {
39
+ this.remove();
40
+ }
41
+ return true;
42
+ }
43
+ handleClick() {
44
+ __classPrivateFieldGet(this, _Tag_select, "f").call(this);
45
+ }
46
+ }
47
+ _Tag_select = new WeakMap();
48
+ __decorate([attr, __metadata("design:type", String)], Tag.prototype, "connotation", void 0);
49
+ __decorate([attr, __metadata("design:type", String)], Tag.prototype, "shape", void 0);
50
+ __decorate([attr, __metadata("design:type", String)], Tag.prototype, "appearance", void 0);
51
+ __decorate([attr, __metadata("design:type", String)], Tag.prototype, "label", void 0);
52
+ __decorate([attr({
53
+ mode: 'boolean'
54
+ }), __metadata("design:type", Object)], Tag.prototype, "removable", void 0);
55
+ __decorate([attr({
56
+ mode: 'boolean'
57
+ }), __metadata("design:type", Object)], Tag.prototype, "disabled", void 0);
58
+ __decorate([attr({
59
+ mode: 'boolean'
60
+ }), __metadata("design:type", Object)], Tag.prototype, "selectable", void 0);
61
+ __decorate([attr({
62
+ mode: 'boolean'
63
+ }), __metadata("design:type", Object)], Tag.prototype, "selected", void 0);
64
+ applyMixins(Tag, AffixIcon);
5
65
 
6
- class TagGroup extends FoundationElement {}
66
+ var css_248z = "/**\n * Do not edit directly\n * Generated on Mon, 14 Aug 2023 13:17:40 GMT\n */\n.base {\n --tag-block-size: calc(1px * (40 + 4 * clamp(-1, var(--vvd-size-density, 0), 2) - 16));\n position: relative;\n display: inline-flex;\n box-sizing: border-box;\n align-items: center;\n background-color: var(--_appearance-color-fill);\n block-size: var(--tag-block-size);\n box-shadow: inset 0 0 0 1px var(--_appearance-color-outline);\n color: var(--_appearance-color-text);\n column-gap: 8px;\n font: var(--vvd-typography-base-bold);\n max-inline-size: 100%;\n padding-inline: 8px;\n vertical-align: middle;\n /* Shape */\n}\n.base.connotation-cta {\n /* @cssprop [--vvd-tag-cta-contrast=var(--vvd-color-cta-800)] */\n --_connotation-color-contrast: var(--vvd-tag-cta-contrast, var(--vvd-color-cta-800));\n /* @cssprop [--vvd-tag-cta-soft=var(--vvd-color-cta-100)] */\n --_connotation-color-soft: var(--vvd-tag-cta-soft, var(--vvd-color-cta-100));\n /* @cssprop [--vvd-tag-cta-pale=var(--vvd-color-cta-300)] */\n --_connotation-color-pale: var(--vvd-tag-cta-pale, var(--vvd-color-cta-300));\n /* @cssprop [--vvd-tag-cta-fierce=var(--vvd-color-cta-700)] */\n --_connotation-color-fierce: var(--vvd-tag-cta-fierce, var(--vvd-color-cta-700));\n /* @cssprop [--vvd-tag-cta-firm=var(--vvd-color-cta-600)] */\n --_connotation-color-firm: var(--vvd-tag-cta-firm, var(--vvd-color-cta-600));\n /* @cssprop [--vvd-tag-cta-faint=var(--vvd-color-cta-50)] */\n --_connotation-color-faint: var(--vvd-tag-cta-faint, var(--vvd-color-cta-50));\n /* @cssprop [--vvd-tag-cta-dim=var(--vvd-color-cta-200)] */\n --_connotation-color-dim: var(--vvd-tag-cta-dim, var(--vvd-color-cta-200));\n}\n.base:not(.connotation-cta) {\n /* @cssprop [--vvd-tag-accent-contrast=var(--vvd-color-neutral-800)] */\n --_connotation-color-contrast: var(--vvd-tag-accent-contrast, var(--vvd-color-neutral-800));\n /* @cssprop [--vvd-tag-accent-soft=var(--vvd-color-neutral-100)] */\n --_connotation-color-soft: var(--vvd-tag-accent-soft, var(--vvd-color-neutral-100));\n /* @cssprop [--vvd-tag-accent-pale=var(--vvd-color-neutral-300)] */\n --_connotation-color-pale: var(--vvd-tag-accent-pale, var(--vvd-color-neutral-300));\n /* @cssprop [--vvd-tag-accent-fierce=var(--vvd-color-neutral-700)] */\n --_connotation-color-fierce: var(--vvd-tag-accent-fierce, var(--vvd-color-neutral-700));\n /* @cssprop [--vvd-tag-accent-firm=var(--vvd-color-canvas-text)] */\n --_connotation-color-firm: var(--vvd-tag-accent-firm, var(--vvd-color-canvas-text));\n /* @cssprop [--vvd-tag-accent-faint=var(--vvd-color-neutral-50)] */\n --_connotation-color-faint: var(--vvd-tag-accent-faint, var(--vvd-color-neutral-50));\n /* @cssprop [--vvd-tag-accent-dim=var(--vvd-color-neutral-200)] */\n --_connotation-color-dim: var(--vvd-tag-accent-dim, var(--vvd-color-neutral-200));\n}\n.base {\n --_appearance-color-text: var(--_connotation-color-contrast);\n --_appearance-color-fill: var(--_connotation-color-soft);\n --_appearance-color-outline: transparent;\n}\n.base.appearance-duotone {\n --_appearance-color-text: var(--_connotation-color-fierce);\n --_appearance-color-fill: transparent;\n --_appearance-color-outline: var(--_connotation-color-pale);\n}\n.base:where(:hover, .hover):where(:not(:disabled, .disabled, .readonly)) {\n --_appearance-color-text: var(--_connotation-color-contrast);\n --_appearance-color-fill: var(--_connotation-color-faint);\n --_appearance-color-outline: transparent;\n}\n.base:where(:hover, .hover):where(:not(:disabled, .disabled, .readonly)).appearance-duotone {\n --_appearance-color-text: var(--_connotation-color-fierce);\n --_appearance-color-fill: transparent;\n --_appearance-color-outline: var(--_connotation-color-firm);\n}\n.base:where(:active, .active):where(:not(:disabled, .disabled)) {\n --_appearance-color-text: var(--_connotation-color-contrast);\n --_appearance-color-fill: var(--_connotation-color-dim);\n --_appearance-color-outline: transparent;\n}\n.base:where(:active, .active):where(:not(:disabled, .disabled)).appearance-duotone {\n --_appearance-color-text: var(--_connotation-color-fierce);\n --_appearance-color-fill: var(--_connotation-color-faint);\n --_appearance-color-outline: var(--_connotation-color-pale);\n}\n.base:where(:disabled, .disabled) {\n --_appearance-color-text: var(--vvd-color-neutral-300);\n --_appearance-color-fill: var(--vvd-color-neutral-100);\n --_appearance-color-outline: transparent;\n}\n.base:where(:disabled, .disabled).appearance-duotone {\n --_appearance-color-text: var(--vvd-color-neutral-300);\n --_appearance-color-fill: transparent;\n --_appearance-color-outline: var(--vvd-color-neutral-100);\n}\n.base:where(.selected, [aria-current]):where(:not(:disabled, .disabled, :hover, .hover)) {\n --_appearance-color-text: var(--_connotation-color-contrast);\n --_appearance-color-fill: var(--_connotation-color-pale);\n --_appearance-color-outline: transparent;\n}\n.base:where(.selected, [aria-current]):where(:not(:disabled, .disabled, :hover, .hover)).appearance-duotone {\n --_appearance-color-text: var(--_connotation-color-fierce);\n --_appearance-color-fill: var(--_connotation-color-faint);\n --_appearance-color-outline: var(--_connotation-color-pale);\n}\n.base:not(.shape-pill) {\n border-radius: 4px;\n}\n.base.shape-pill {\n border-radius: 14px;\n}\n@supports selector(:focus-visible) {\n .base:focus {\n outline: none;\n }\n}\n@supports (user-select: none) {\n .base {\n user-select: none;\n }\n}\n.base:not(.disabled) {\n cursor: pointer;\n}\n.base.disabled {\n cursor: not-allowed;\n pointer-events: none;\n}\n.base.removable {\n cursor: auto;\n}\n\n.label {\n overflow: hidden;\n max-inline-size: 100%;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.icon {\n font-size: calc(var(--tag-block-size) / 1.5);\n line-height: 1;\n}\n.icon > * {\n vertical-align: middle;\n}\n\n.dismiss-button {\n display: flex;\n align-items: center;\n background-color: var(--_appearance-color-fill);\n border-radius: inherit;\n cursor: pointer;\n}\n\n.base:not(:focus-visible) .focus-indicator {\n display: none;\n}";
7
67
 
8
- const getClasses = _ => classNames('base');
9
- const TagGroupTemplate = () => {
68
+ const getClasses = ({
69
+ connotation,
70
+ appearance,
71
+ shape,
72
+ disabled,
73
+ selectable,
74
+ removable,
75
+ selected
76
+ }) => classNames('base', ['disabled', disabled], ['selectable', selectable], ['active', selectable && selected], ['removable', removable && !selectable], [`connotation-${connotation}`, Boolean(connotation)], [`appearance-${appearance}`, Boolean(appearance)], [`shape-${shape}`, Boolean(shape)]);
77
+ function renderDismissButton(iconTag) {
10
78
  return html`
11
- <div class="${getClasses}" role="listbox" aria-orientation="horizontal">
12
- <slot></slot>
13
- </div>
14
- `;
79
+ <span
80
+ aria-hidden="true"
81
+ class="dismiss-button"
82
+ @click="${x => x.remove()}">
83
+ <${iconTag} name="close-line"></${iconTag}>
84
+ </span>`;
85
+ }
86
+ const tagTemplate = context => {
87
+ const affixIconTemplate = affixIconTemplateFactory(context);
88
+ const iconTag = context.tagFor(Icon);
89
+ const focusTemplate = focusTemplateFactory(context);
90
+ return html`
91
+ <span class="${getClasses}"
92
+ role="option"
93
+ aria-disabled="${x => x.disabled}"
94
+ aria-selected="${x => x.selectable}"
95
+ tabindex="${x => x.disabled ? null : 0}"
96
+ @keydown="${(x, c) => x.handleKeydown(c.event)}"
97
+ @click="${x => x.handleClick()}">
98
+ ${x => affixIconTemplate(x.icon)}
99
+ ${when(x => x.label, x => html`<span class="label">${x.label}</span>`)}
100
+ ${when(x => x.removable && !x.selectable, renderDismissButton(iconTag))}
101
+ ${when(x => x.selectable && x.selected, html`<${iconTag} class="selectable-icon" name="check-circle-solid"></${iconTag}>`)}
102
+ ${() => focusTemplate}
103
+ </span>`;
15
104
  };
16
105
 
17
- const tagGroupDefinition = TagGroup.compose({
18
- baseName: 'tag-group',
19
- template: TagGroupTemplate,
20
- styles: css_248z
106
+ const tagDefinition = Tag.compose({
107
+ baseName: 'tag',
108
+ template: tagTemplate,
109
+ styles: css_248z,
110
+ shadowOptions: {
111
+ delegatesFocus: true
112
+ }
21
113
  });
22
- const tagGroupRegistries = [tagGroupDefinition()];
23
- const registerTagGroup = registerFactory(tagGroupRegistries);
114
+ const tagRegistries = [tagDefinition(), ...iconRegistries, ...focusRegistries];
115
+ const registerTag = registerFactory(tagRegistries);
24
116
 
25
- export { tagGroupRegistries as a, registerTagGroup as r, tagGroupDefinition as t };
117
+ export { registerTag as r, tagDefinition as t };
@@ -1,7 +1,7 @@
1
1
  import { F as FoundationElement, _ as __decorate, a as attr, b as __metadata, h as html, r as registerFactory } from './index.js';
2
2
  import { c as classNames } from './class-names.js';
3
3
 
4
- var css_248z = "/**\n * Do not edit directly\n * Generated on Mon, 07 Aug 2023 18:00:27 GMT\n */\n:host {\n display: inline-block;\n}\n\n.base {\n position: relative;\n display: flex;\n box-sizing: border-box;\n align-items: center;\n background-color: var(--_appearance-color-fill);\n inline-size: inherit;\n vertical-align: middle;\n}\n.base {\n /* @cssprop [--vvd-action-group-accent-backdrop=var(--vvd-color-canvas)] */\n --_connotation-color-backdrop: var(--vvd-action-group-accent-backdrop, var(--vvd-color-canvas));\n /* @cssprop [--vvd-action-group-accent-primary=var(--vvd-color-canvas-text)] */\n --_connotation-color-primary: var(--vvd-action-group-accent-primary, var(--vvd-color-canvas-text));\n /* @cssprop [--vvd-action-group-accent-intermediate=var(--vvd-color-neutral-500)] */\n --_connotation-color-intermediate: var(--vvd-action-group-accent-intermediate, var(--vvd-color-neutral-500));\n /* @cssprop [--vvd-action-group-accent-faint=var(--vvd-color-neutral-50)] */\n --_connotation-color-faint: var(--vvd-action-group-accent-faint, var(--vvd-color-neutral-50));\n}\n.base {\n --_appearance-color-text: var(--vvd-color-canvas-text);\n --_appearance-color-fill: var(--_connotation-color-backdrop);\n --_appearance-color-outline: var(--_connotation-color-intermediate);\n}\n.base.appearance-ghost {\n --_appearance-color-text: var(--_connotation-color-primary);\n --_appearance-color-fill: transparent;\n --_appearance-color-outline: transparent;\n}\n.base::before {\n position: absolute;\n z-index: 1;\n border-radius: inherit;\n box-shadow: inset 0 0 0 1px var(--_appearance-color-outline);\n content: \"\";\n inset: 0;\n pointer-events: none;\n}\n.base:not(.tight) {\n padding: 4px;\n column-gap: 4px;\n}\n\n/* Shape */\n.base:not(.shape-pill) {\n border-radius: 6px;\n}\n\n.base.shape-pill {\n border-radius: 24px;\n}\n\n/* Separator */\n::slotted([role=separator]) {\n align-self: stretch;\n margin-block: 4px;\n}";
4
+ var css_248z = "/**\n * Do not edit directly\n * Generated on Mon, 14 Aug 2023 13:17:40 GMT\n */\n:host {\n display: inline-block;\n}\n\n.base {\n position: relative;\n display: flex;\n box-sizing: border-box;\n align-items: center;\n background-color: var(--_appearance-color-fill);\n inline-size: inherit;\n vertical-align: middle;\n}\n.base {\n /* @cssprop [--vvd-action-group-accent-backdrop=var(--vvd-color-canvas)] */\n --_connotation-color-backdrop: var(--vvd-action-group-accent-backdrop, var(--vvd-color-canvas));\n /* @cssprop [--vvd-action-group-accent-primary=var(--vvd-color-canvas-text)] */\n --_connotation-color-primary: var(--vvd-action-group-accent-primary, var(--vvd-color-canvas-text));\n /* @cssprop [--vvd-action-group-accent-intermediate=var(--vvd-color-neutral-500)] */\n --_connotation-color-intermediate: var(--vvd-action-group-accent-intermediate, var(--vvd-color-neutral-500));\n /* @cssprop [--vvd-action-group-accent-faint=var(--vvd-color-neutral-50)] */\n --_connotation-color-faint: var(--vvd-action-group-accent-faint, var(--vvd-color-neutral-50));\n}\n.base {\n --_appearance-color-text: var(--vvd-color-canvas-text);\n --_appearance-color-fill: var(--_connotation-color-backdrop);\n --_appearance-color-outline: var(--_connotation-color-intermediate);\n}\n.base.appearance-ghost {\n --_appearance-color-text: var(--_connotation-color-primary);\n --_appearance-color-fill: transparent;\n --_appearance-color-outline: transparent;\n}\n.base::before {\n position: absolute;\n z-index: 1;\n border-radius: inherit;\n box-shadow: inset 0 0 0 1px var(--_appearance-color-outline);\n content: \"\";\n inset: 0;\n pointer-events: none;\n}\n.base:not(.tight) {\n padding: 4px;\n column-gap: 4px;\n}\n\n/* Shape */\n.base:not(.shape-pill) {\n border-radius: 6px;\n}\n\n.base.shape-pill {\n border-radius: 24px;\n}\n\n/* Separator */\n::slotted([role=separator]) {\n align-self: stretch;\n margin-block: 4px;\n}";
5
5
 
6
6
  class ActionGroup extends FoundationElement {
7
7
  constructor() {
@@ -1,280 +1,25 @@
1
- import { F as FoundationElement, _ as __decorate, a as attr, n as nullableNumberConverter, o as observable, b as __metadata, h as html, r as registerFactory } from './index.js';
2
- import { i as iconRegistries } from './definition3.js';
3
- import { f as focusRegistries } from './definition4.js';
4
- import './affix.js';
5
- import './focus.js';
6
- import { e as errorText, f as formElements, F as FormElementSuccessText, a as FormElementHelperText, b as FormElementCharCount, g as getFeedbackTemplate } from './form-elements.js';
7
- import { D as DelegatesARIATextbox } from './text-field2.js';
8
- import { a as applyMixins } from './apply-mixins.js';
9
- import { F as FormAssociated } from './form-associated.js';
10
- import { w as when } from './when.js';
11
- import { r as ref } from './ref.js';
1
+ import { F as FoundationElement, h as html, r as registerFactory } from './index.js';
12
2
  import { c as classNames } from './class-names.js';
13
3
 
14
- class _TextArea extends FoundationElement {
15
- }
16
- /**
17
- * A form-associated base class for the {@link @microsoft/fast-foundation#(TextArea:class)} component.
18
- *
19
- * @internal
20
- */
21
- class FormAssociatedTextArea extends FormAssociated(_TextArea) {
22
- constructor() {
23
- super(...arguments);
24
- this.proxy = document.createElement("textarea");
25
- }
26
- }
4
+ var css_248z = ".base {\n display: flex;\n flex-wrap: wrap;\n gap: 8px;\n}";
27
5
 
28
- /**
29
- * Resize mode for a TextArea
30
- * @public
31
- */
32
- const TextAreaResize = {
33
- /**
34
- * No resize.
35
- */
36
- none: "none",
37
- /**
38
- * Resize vertically and horizontally.
39
- */
40
- both: "both",
41
- /**
42
- * Resize horizontally.
43
- */
44
- horizontal: "horizontal",
45
- /**
46
- * Resize vertically.
47
- */
48
- vertical: "vertical",
49
- };
50
-
51
- /**
52
- * A Text Area Custom HTML Element.
53
- * Based largely on the {@link https://developer.mozilla.org/en-US/docs/Web/HTML/Element/textarea | <textarea> element }.
54
- *
55
- * @slot - The default slot for the label
56
- * @csspart label - The label
57
- * @csspart root - The element wrapping the control
58
- * @csspart control - The textarea element
59
- * @fires change - Emits a custom 'change' event when the textarea emits a change event
60
- *
61
- * @public
62
- */
63
- class TextArea$1 extends FormAssociatedTextArea {
64
- constructor() {
65
- super(...arguments);
66
- /**
67
- * The resize mode of the element.
68
- * @public
69
- * @remarks
70
- * HTML Attribute: resize
71
- */
72
- this.resize = TextAreaResize.none;
73
- /**
74
- * Sizes the element horizontally by a number of character columns.
75
- *
76
- * @public
77
- * @remarks
78
- * HTML Attribute: cols
79
- */
80
- this.cols = 20;
81
- /**
82
- * @internal
83
- */
84
- this.handleTextInput = () => {
85
- this.value = this.control.value;
86
- };
87
- }
88
- readOnlyChanged() {
89
- if (this.proxy instanceof HTMLTextAreaElement) {
90
- this.proxy.readOnly = this.readOnly;
91
- }
92
- }
93
- autofocusChanged() {
94
- if (this.proxy instanceof HTMLTextAreaElement) {
95
- this.proxy.autofocus = this.autofocus;
96
- }
97
- }
98
- listChanged() {
99
- if (this.proxy instanceof HTMLTextAreaElement) {
100
- this.proxy.setAttribute("list", this.list);
101
- }
102
- }
103
- maxlengthChanged() {
104
- if (this.proxy instanceof HTMLTextAreaElement) {
105
- this.proxy.maxLength = this.maxlength;
106
- }
107
- }
108
- minlengthChanged() {
109
- if (this.proxy instanceof HTMLTextAreaElement) {
110
- this.proxy.minLength = this.minlength;
111
- }
112
- }
113
- spellcheckChanged() {
114
- if (this.proxy instanceof HTMLTextAreaElement) {
115
- this.proxy.spellcheck = this.spellcheck;
116
- }
117
- }
118
- /**
119
- * Selects all the text in the text area
120
- *
121
- * @public
122
- */
123
- select() {
124
- this.control.select();
125
- /**
126
- * The select event does not permeate the shadow DOM boundary.
127
- * This fn effectively proxies the select event,
128
- * emitting a `select` event whenever the internal
129
- * control emits a `select` event
130
- */
131
- this.$emit("select");
132
- }
133
- /**
134
- * Change event handler for inner control.
135
- * @remarks
136
- * "Change" events are not `composable` so they will not
137
- * permeate the shadow DOM boundary. This fn effectively proxies
138
- * the change event, emitting a `change` event whenever the internal
139
- * control emits a `change` event
140
- * @internal
141
- */
142
- handleChange() {
143
- this.$emit("change");
144
- }
145
- /** {@inheritDoc (FormAssociated:interface).validate} */
146
- validate() {
147
- super.validate(this.control);
148
- }
149
- }
150
- __decorate([
151
- attr({ mode: "boolean" })
152
- ], TextArea$1.prototype, "readOnly", void 0);
153
- __decorate([
154
- attr
155
- ], TextArea$1.prototype, "resize", void 0);
156
- __decorate([
157
- attr({ mode: "boolean" })
158
- ], TextArea$1.prototype, "autofocus", void 0);
159
- __decorate([
160
- attr({ attribute: "form" })
161
- ], TextArea$1.prototype, "formId", void 0);
162
- __decorate([
163
- attr
164
- ], TextArea$1.prototype, "list", void 0);
165
- __decorate([
166
- attr({ converter: nullableNumberConverter })
167
- ], TextArea$1.prototype, "maxlength", void 0);
168
- __decorate([
169
- attr({ converter: nullableNumberConverter })
170
- ], TextArea$1.prototype, "minlength", void 0);
171
- __decorate([
172
- attr
173
- ], TextArea$1.prototype, "name", void 0);
174
- __decorate([
175
- attr
176
- ], TextArea$1.prototype, "placeholder", void 0);
177
- __decorate([
178
- attr({ converter: nullableNumberConverter, mode: "fromView" })
179
- ], TextArea$1.prototype, "cols", void 0);
180
- __decorate([
181
- attr({ converter: nullableNumberConverter, mode: "fromView" })
182
- ], TextArea$1.prototype, "rows", void 0);
183
- __decorate([
184
- attr({ mode: "boolean" })
185
- ], TextArea$1.prototype, "spellcheck", void 0);
186
- __decorate([
187
- observable
188
- ], TextArea$1.prototype, "defaultSlottedNodes", void 0);
189
- applyMixins(TextArea$1, DelegatesARIATextbox);
190
-
191
- var css_248z = "/**\n * Do not edit directly\n * Generated on Mon, 07 Aug 2023 18:00:27 GMT\n */\n:host {\n display: inline-block;\n}\n\n.base {\n display: inline-grid;\n grid-template-columns: 1fr max-content;\n inline-size: 100%;\n row-gap: 4px;\n}\n.base {\n --_appearance-color-text: var(--vvd-color-canvas-text);\n --_appearance-color-fill: var(--_connotation-color-backdrop);\n --_appearance-color-outline: var(--_connotation-color-intermediate);\n}\n.base.appearance-ghost {\n --_appearance-color-text: var(--_connotation-color-primary);\n --_appearance-color-fill: transparent;\n --_appearance-color-outline: transparent;\n}\n.base:where(:hover, .hover):where(:not(:disabled, .disabled, .readonly)) {\n --_appearance-color-text: var(--vvd-color-canvas-text);\n --_appearance-color-fill: var(--_connotation-color-backdrop);\n --_appearance-color-outline: var(--_connotation-color-firm);\n}\n.base:where(:hover, .hover):where(:not(:disabled, .disabled, .readonly)).appearance-ghost {\n --_appearance-color-text: var(--_connotation-color-primary);\n --_appearance-color-fill: var(--_connotation-color-faint);\n --_appearance-color-outline: transparent;\n}\n.base:where(:disabled, .disabled) {\n --_appearance-color-text: var(--vvd-color-neutral-300);\n --_appearance-color-fill: var(--vvd-color-neutral-100);\n --_appearance-color-outline: var(--vvd-color-neutral-300);\n}\n.base:where(:disabled, .disabled).appearance-ghost {\n --_appearance-color-text: var(--vvd-color-neutral-300);\n --_appearance-color-fill: transparent;\n --_appearance-color-outline: transparent;\n}\n.base:where(.readonly):where(:not(:disabled, .disabled)) {\n --_appearance-color-text: var(--vvd-color-canvas-text);\n --_appearance-color-fill: var(--vvd-color-neutral-200);\n --_appearance-color-outline: var(--vvd-color-neutral-400);\n}\n.base:where(.readonly):where(:not(:disabled, .disabled)).appearance-ghost {\n --_appearance-color-text: var(--vvd-color-neutral-600);\n --_appearance-color-fill: transparent;\n --_appearance-color-outline: transparent;\n}\n.base.connotation-success {\n /* @cssprop [--vvd-text-area-success-primary=var(--vvd-color-success-500)] */\n --_connotation-color-primary: var(--vvd-text-area-success-primary, var(--vvd-color-success-500));\n /* @cssprop [--vvd-text-area-success-backdrop=var(--vvd-color-success-50)] */\n --_connotation-color-backdrop: var(--vvd-text-area-success-backdrop, var(--vvd-color-success-50));\n /* @cssprop [--vvd-text-area-success-intermediate=var(--vvd-color-success-500)] */\n --_connotation-color-intermediate: var(--vvd-text-area-success-intermediate, var(--vvd-color-success-500));\n /* @cssprop [--vvd-text-area-success-firm=var(--vvd-color-success-600)] */\n --_connotation-color-firm: var(--vvd-text-area-success-firm, var(--vvd-color-success-600));\n /* @cssprop [--vvd-text-area-success-faint=var(--vvd-color-success-50)] */\n --_connotation-color-faint: var(--vvd-text-area-success-faint, var(--vvd-color-success-50));\n /* @cssprop [--vvd-text-area-success-soft=var(--vvd-color-success-100)] */\n --_connotation-color-soft: var(--vvd-text-area-success-soft, var(--vvd-color-success-100));\n}\n.base.connotation-alert {\n /* @cssprop [--vvd-text-area-alert-primary=var(--vvd-color-alert-500)] */\n --_connotation-color-primary: var(--vvd-text-area-alert-primary, var(--vvd-color-alert-500));\n /* @cssprop [--vvd-text-area-alert-backdrop=var(--vvd-color-alert-50)] */\n --_connotation-color-backdrop: var(--vvd-text-area-alert-backdrop, var(--vvd-color-alert-50));\n /* @cssprop [--vvd-text-area-alert-intermediate=var(--vvd-color-alert-500)] */\n --_connotation-color-intermediate: var(--vvd-text-area-alert-intermediate, var(--vvd-color-alert-500));\n /* @cssprop [--vvd-text-area-alert-firm=var(--vvd-color-alert-600)] */\n --_connotation-color-firm: var(--vvd-text-area-alert-firm, var(--vvd-color-alert-600));\n /* @cssprop [--vvd-text-area-alert-faint=var(--vvd-color-alert-50)] */\n --_connotation-color-faint: var(--vvd-text-area-alert-faint, var(--vvd-color-alert-50));\n /* @cssprop [--vvd-text-area-alert-soft=var(--vvd-color-alert-100)] */\n --_connotation-color-soft: var(--vvd-text-area-alert-soft, var(--vvd-color-alert-100));\n}\n.base:not(.connotation-success, .connotation-alert) {\n /* @cssprop [--vvd-text-area-accent-primary=var(--vvd-color-canvas-text)] */\n --_connotation-color-primary: var(--vvd-text-area-accent-primary, var(--vvd-color-canvas-text));\n /* @cssprop [--vvd-text-area-accent-backdrop=var(--vvd-color-canvas)] */\n --_connotation-color-backdrop: var(--vvd-text-area-accent-backdrop, var(--vvd-color-canvas));\n /* @cssprop [--vvd-text-area-accent-intermediate=var(--vvd-color-neutral-500)] */\n --_connotation-color-intermediate: var(--vvd-text-area-accent-intermediate, var(--vvd-color-neutral-500));\n /* @cssprop [--vvd-text-area-accent-firm=var(--vvd-color-canvas-text)] */\n --_connotation-color-firm: var(--vvd-text-area-accent-firm, var(--vvd-color-canvas-text));\n /* @cssprop [--vvd-text-area-accent-faint=var(--vvd-color-neutral-50)] */\n --_connotation-color-faint: var(--vvd-text-area-accent-faint, var(--vvd-color-neutral-50));\n /* @cssprop [--vvd-text-area-accent-soft=var(--vvd-color-neutral-100)] */\n --_connotation-color-soft: var(--vvd-text-area-accent-soft, var(--vvd-color-neutral-100));\n}\n@supports (user-select: none) {\n .base {\n user-select: none;\n }\n}\n.base:not(.disabled) {\n --_low-ink-color: var(--vvd-color-neutral-600);\n}\n.base.disabled {\n --_low-ink-color: var(--_appearance-color-text);\n pointer-events: none;\n}\n\n.label {\n color: var(--vvd-color-canvas-text);\n contain: inline-size;\n font: var(--vvd-typography-base);\n grid-column: 1/2;\n grid-row: 1;\n line-height: 20px;\n}\n\n.char-count {\n color: var(--_low-ink-color);\n font: var(--vvd-typography-base);\n grid-column: 2/-1;\n}\n\n.control {\n padding: 8px 16px;\n border: 0 none;\n appearance: none; /* for box-shadow visibility on IOS */\n background-color: var(--_appearance-color-fill);\n border-radius: 6px;\n box-shadow: inset 0 0 0 1px var(--_appearance-color-outline);\n color: var(--_appearance-color-text);\n font: var(--vvd-typography-base);\n grid-column: 1/-1;\n min-block-size: calc(1px * (40 + 4 * clamp(-1, var(--vvd-size-density, 0), 2)));\n resize: none;\n transition: box-shadow 0.2s, background-color 0.2s, color 0.2s;\n}\n.control:disabled {\n cursor: not-allowed;\n opacity: 1; /* 2. correct opacity on iOS */\n pointer-events: none;\n -webkit-text-fill-color: var(--_appearance-color-text); /* 1. sets text fill to current `color` for safari */\n}\n.control::placeholder, .control:disabled::placeholder {\n opacity: 1; /* 2. correct opacity on iOS */\n pointer-events: none;\n -webkit-text-fill-color: var(--_low-ink-color); /* 1. sets text fill to current `color` for safari */\n}\n.control:focus {\n outline: 2px solid var(--focus-stroke-color, currentColor);\n outline-offset: -2px;\n}\n:host([resize=both]) .control {\n resize: both;\n}\n:host([resize=horizontal]) .control {\n resize: horizontal;\n}\n:host([resize=vertical]) .control {\n resize: vertical;\n}";
192
-
193
- let TextArea = class TextArea extends TextArea$1 {};
194
- __decorate([attr, __metadata("design:type", String)], TextArea.prototype, "wrap", void 0);
195
- TextArea = __decorate([errorText, formElements], TextArea);
196
- applyMixins(TextArea, FormElementCharCount, FormElementHelperText, FormElementSuccessText);
6
+ class TagGroup extends FoundationElement {}
197
7
 
198
- const getClasses = ({
199
- value,
200
- errorValidationMessage,
201
- disabled,
202
- placeholder,
203
- readOnly,
204
- successText
205
- }) => classNames('base', ['readonly', readOnly], ['placeholder', Boolean(placeholder)], ['disabled', disabled], ['error connotation-alert', Boolean(errorValidationMessage)], ['has-value', Boolean(value)], ['success connotation-success', !!successText]);
206
- function renderLabel() {
207
- return html`
208
- <label for="control" class="label">
209
- ${x => x.label}
210
- </label>`;
211
- }
212
- function renderCharCount() {
213
- return html`
214
- <span class="char-count">${x => x.value ? x.value.length : 0} / ${x => x.maxlength}</span>
215
- `;
216
- }
217
- const TextAreaTemplate = context => {
8
+ const getClasses = _ => classNames('base');
9
+ const TagGroupTemplate = () => {
218
10
  return html`
219
- <div class="${getClasses}">
220
- ${when(x => x.charCount && x.maxlength, renderCharCount())}
221
- ${when(x => x.label, renderLabel())}
222
- <textarea class="control"
223
- ?autofocus="${x => x.autofocus}"
224
- placeholder="${x => x.placeholder ? x.placeholder : null}"
225
- name="${x => x.name ? x.name : null}"
226
- maxlength="${x => x.maxlength ? x.maxlength : null}"
227
- rows="${x => x.rows ? x.rows : null}"
228
- cols="${x => x.cols ? x.cols : null}"
229
- wrap="${x => x.wrap ? x.wrap : null}"
230
- ?readonly="${x => x.readOnly}"
231
- ?disabled="${x => x.disabled}"
232
- ?required="${x => x.required}"
233
- ?spellcheck="${x => x.spellcheck}"
234
- :value="${x => x.value}"
235
- aria-atomic="${x => x.ariaAtomic}"
236
- aria-busy="${x => x.ariaBusy}"
237
- aria-controls="${x => x.ariaControls}"
238
- aria-current="${x => x.ariaCurrent}"
239
- aria-describedby="${x => x.ariaDescribedby}"
240
- aria-details="${x => x.ariaDetails}"
241
- aria-disabled="${x => x.ariaDisabled}"
242
- aria-errormessage="${x => x.ariaErrormessage}"
243
- aria-flowto="${x => x.ariaFlowto}"
244
- aria-haspopup="${x => x.ariaHaspopup}"
245
- aria-hidden="${x => x.ariaHidden}"
246
- aria-invalid="${x => x.ariaInvalid}"
247
- aria-keyshortcuts="${x => x.ariaKeyshortcuts}"
248
- aria-label="${x => x.ariaLabel}"
249
- aria-labelledby="${x => x.ariaLabelledby}"
250
- aria-live="${x => x.ariaLive}"
251
- aria-owns="${x => x.ariaOwns}"
252
- aria-relevant="${x => x.ariaRelevant}"
253
- aria-roledescription="${x => x.ariaRoledescription}"
254
- @input="${x => x.handleTextInput()}"
255
- @change="${x => x.handleChange()}"
256
- ${ref('control')}
257
- >
258
- </textarea>
259
- ${when(x => {
260
- var _a;
261
- return !x.successText && !x.errorValidationMessage && ((_a = x.helperText) === null || _a === void 0 ? void 0 : _a.length);
262
- }, getFeedbackTemplate('helper', context))}
263
- ${when(x => !x.successText && x.errorValidationMessage, getFeedbackTemplate('error', context))}
264
- ${when(x => x.successText, getFeedbackTemplate('success', context))}
265
- </div>
11
+ <div class="${getClasses}" role="listbox" aria-orientation="horizontal">
12
+ <slot></slot>
13
+ </div>
266
14
  `;
267
15
  };
268
16
 
269
- const textAreaDefinition = TextArea.compose({
270
- baseName: 'text-area',
271
- template: TextAreaTemplate,
272
- styles: css_248z,
273
- shadowOptions: {
274
- delegatesFocus: true
275
- }
17
+ const tagGroupDefinition = TagGroup.compose({
18
+ baseName: 'tag-group',
19
+ template: TagGroupTemplate,
20
+ styles: css_248z
276
21
  });
277
- const textAreaRegistries = [textAreaDefinition(), ...iconRegistries, ...focusRegistries];
278
- const registerTextArea = registerFactory(textAreaRegistries);
22
+ const tagGroupRegistries = [tagGroupDefinition()];
23
+ const registerTagGroup = registerFactory(tagGroupRegistries);
279
24
 
280
- export { textAreaRegistries as a, registerTextArea as r, textAreaDefinition as t };
25
+ export { tagGroupRegistries as a, registerTagGroup as r, tagGroupDefinition as t };