@vonage/vivid 4.19.0 → 4.20.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 (170) hide show
  1. package/custom-elements.json +1648 -525
  2. package/lib/accordion-item/accordion-item.d.ts +332 -5
  3. package/lib/action-group/action-group.d.ts +3 -2
  4. package/lib/alert/alert.d.ts +654 -6
  5. package/lib/audio-player/audio-player.d.ts +330 -5
  6. package/lib/avatar/avatar.d.ts +5 -4
  7. package/lib/badge/badge.d.ts +334 -7
  8. package/lib/banner/banner.d.ts +662 -15
  9. package/lib/button/button.d.ts +335 -8
  10. package/lib/calendar-event/calendar-event.d.ts +3 -2
  11. package/lib/card/card.d.ts +2 -1
  12. package/lib/checkbox/checkbox.d.ts +2 -1
  13. package/lib/combobox/combobox.d.ts +335 -6
  14. package/lib/date-picker/date-picker.d.ts +12 -12
  15. package/lib/date-range-picker/date-range-picker.d.ts +6 -6
  16. package/lib/date-time-picker/date-time-picker.d.ts +12 -12
  17. package/lib/dial-pad/dial-pad.d.ts +328 -4
  18. package/lib/dialog/dialog.d.ts +326 -4
  19. package/lib/empty-state/empty-state.d.ts +3 -2
  20. package/lib/fab/fab.d.ts +333 -6
  21. package/lib/file-picker/file-picker.d.ts +334 -4
  22. package/lib/icon/icon.d.ts +2 -1
  23. package/lib/layout/layout.d.ts +6 -5
  24. package/lib/menu-item/menu-item.d.ts +332 -10
  25. package/lib/nav-disclosure/nav-disclosure.d.ts +330 -6
  26. package/lib/nav-item/nav-item.d.ts +329 -4
  27. package/lib/note/note.d.ts +329 -4
  28. package/lib/number-field/number-field.d.ts +658 -6
  29. package/lib/option/option.d.ts +330 -4
  30. package/lib/pagination/pagination.d.ts +3 -2
  31. package/lib/radio/radio.d.ts +2 -1
  32. package/lib/range-slider/range-slider.d.ts +330 -3
  33. package/lib/rich-text-editor/facades/prose-mirror-vivid.schema.d.ts +3 -2
  34. package/lib/rich-text-editor/facades/vivid-prose-mirror.facade.d.ts +1 -0
  35. package/lib/rich-text-editor/rich-text-editor.d.ts +1 -0
  36. package/lib/searchable-select/option-tag.d.ts +330 -5
  37. package/lib/searchable-select/searchable-select.d.ts +660 -5
  38. package/lib/select/select.d.ts +336 -6
  39. package/lib/slider/slider.d.ts +326 -4
  40. package/lib/split-button/split-button.d.ts +667 -20
  41. package/lib/tab/tab.d.ts +658 -7
  42. package/lib/tabs/tabs.d.ts +2 -1
  43. package/lib/tag/tag.d.ts +333 -7
  44. package/lib/text-anchor/text-anchor.d.ts +331 -5
  45. package/lib/text-field/text-field.d.ts +333 -6
  46. package/lib/time-picker/time-picker.d.ts +6 -6
  47. package/lib/tree-item/tree-item.d.ts +329 -4
  48. package/lib/video-player/video-player.d.ts +328 -4
  49. package/package.json +1 -1
  50. package/shared/_has.cjs +0 -4
  51. package/shared/_has.js +0 -4
  52. package/shared/affix.cjs +25 -19
  53. package/shared/affix.js +26 -20
  54. package/shared/apply-mixins.js +1 -1
  55. package/shared/calendar-picker.template.cjs +1 -1
  56. package/shared/calendar-picker.template.js +1 -1
  57. package/shared/children.js +1 -1
  58. package/shared/definition.cjs +2 -4
  59. package/shared/definition.js +2 -4
  60. package/shared/definition11.cjs +2 -4
  61. package/shared/definition11.js +2 -4
  62. package/shared/definition13.cjs +85 -159
  63. package/shared/definition13.js +85 -159
  64. package/shared/definition15.cjs +1 -1
  65. package/shared/definition15.js +1 -1
  66. package/shared/definition16.cjs +2 -3
  67. package/shared/definition16.js +2 -3
  68. package/shared/definition17.cjs +1 -1
  69. package/shared/definition17.js +1 -1
  70. package/shared/definition21.cjs +2 -4
  71. package/shared/definition21.js +2 -4
  72. package/shared/definition22.cjs +2 -4
  73. package/shared/definition22.js +2 -4
  74. package/shared/definition25.cjs +2 -4
  75. package/shared/definition25.js +2 -4
  76. package/shared/definition26.cjs +3 -3
  77. package/shared/definition26.js +3 -3
  78. package/shared/definition28.cjs +27 -38
  79. package/shared/definition28.js +27 -38
  80. package/shared/definition30.cjs +4 -11
  81. package/shared/definition30.js +4 -11
  82. package/shared/definition31.cjs +2 -4
  83. package/shared/definition31.js +2 -4
  84. package/shared/definition32.cjs +2 -4
  85. package/shared/definition32.js +2 -4
  86. package/shared/definition34.cjs +1 -3
  87. package/shared/definition34.js +1 -3
  88. package/shared/definition35.cjs +6 -6
  89. package/shared/definition35.js +6 -6
  90. package/shared/definition36.cjs +1 -1
  91. package/shared/definition36.js +1 -1
  92. package/shared/definition37.cjs +5 -1
  93. package/shared/definition37.js +5 -1
  94. package/shared/definition4.cjs +1 -7
  95. package/shared/definition4.js +1 -7
  96. package/shared/definition41.cjs +1 -1
  97. package/shared/definition41.js +1 -1
  98. package/shared/definition42.cjs +3 -5
  99. package/shared/definition42.js +3 -5
  100. package/shared/definition43.cjs +219 -28
  101. package/shared/definition43.js +216 -25
  102. package/shared/definition44.cjs +9 -10
  103. package/shared/definition44.js +9 -10
  104. package/shared/definition45.cjs +3 -4
  105. package/shared/definition45.js +3 -4
  106. package/shared/definition46.cjs +1 -1
  107. package/shared/definition46.js +1 -1
  108. package/shared/definition48.cjs +3 -5
  109. package/shared/definition48.js +3 -5
  110. package/shared/definition49.cjs +4 -7
  111. package/shared/definition49.js +4 -7
  112. package/shared/definition5.cjs +1 -3
  113. package/shared/definition5.js +2 -4
  114. package/shared/definition50.cjs +1 -1
  115. package/shared/definition50.js +1 -1
  116. package/shared/definition52.cjs +2 -5
  117. package/shared/definition52.js +2 -5
  118. package/shared/definition55.cjs +2 -4
  119. package/shared/definition55.js +2 -4
  120. package/shared/definition56.cjs +1 -1
  121. package/shared/definition56.js +1 -1
  122. package/shared/definition57.cjs +3 -2
  123. package/shared/definition57.js +3 -2
  124. package/shared/definition61.cjs +2 -4
  125. package/shared/definition61.js +2 -4
  126. package/shared/definition63.cjs +2 -4
  127. package/shared/definition63.js +2 -4
  128. package/shared/definition7.cjs +1 -3
  129. package/shared/definition7.js +1 -3
  130. package/shared/definition8.cjs +2 -5
  131. package/shared/definition8.js +2 -5
  132. package/shared/definition9.cjs +1 -1
  133. package/shared/definition9.js +1 -1
  134. package/shared/form-associated.js +1 -1
  135. package/shared/localized.cjs +10 -4
  136. package/shared/localized.js +10 -4
  137. package/shared/option.cjs +1 -3
  138. package/shared/option.js +2 -4
  139. package/shared/patterns/affix.d.ts +659 -7
  140. package/shared/patterns/localized.d.ts +328 -3
  141. package/shared/patterns/trapped-focus.d.ts +329 -6
  142. package/shared/picker-field/mixins/calendar-picker.d.ts +3 -3
  143. package/shared/picker-field/mixins/calendar-picker.template.d.ts +3 -3
  144. package/shared/picker-field/mixins/inline-time-picker/inline-time-picker.d.ts +328 -4
  145. package/shared/picker-field/mixins/min-max-calendar-picker.d.ts +6 -6
  146. package/shared/picker-field/mixins/single-date-picker.d.ts +9 -9
  147. package/shared/picker-field/mixins/single-value-picker.d.ts +3 -3
  148. package/shared/picker-field/mixins/time-selection-picker.d.ts +6 -6
  149. package/shared/picker-field/mixins/time-selection-picker.template.d.ts +6 -6
  150. package/shared/picker-field/picker-field.d.ts +655 -3
  151. package/shared/picker-field.template.cjs +33 -35
  152. package/shared/picker-field.template.js +33 -35
  153. package/shared/ref.js +1 -1
  154. package/shared/slotted.js +1 -1
  155. package/shared/text-anchor.cjs +2 -2
  156. package/shared/text-anchor.js +2 -2
  157. package/shared/text-field.cjs +1 -1
  158. package/shared/text-field.js +1 -1
  159. package/shared/time-selection-picker.template.cjs +3 -5
  160. package/shared/time-selection-picker.template.js +4 -6
  161. package/shared/utils/enums.d.ts +1 -0
  162. package/shared/vivid-element.cjs +1 -1
  163. package/shared/vivid-element.js +2 -2
  164. package/styles/core/all.css +1 -1
  165. package/styles/core/theme.css +1 -1
  166. package/styles/core/typography.css +1 -1
  167. package/styles/tokens/theme-dark.css +4 -4
  168. package/styles/tokens/theme-light.css +4 -4
  169. package/styles/tokens/vivid-2-compat.css +1 -1
  170. package/vivid.api.json +187 -990
@@ -1,12 +1,14 @@
1
1
  import { V as VividElement, a as attr, h as html, f as defineVividComponent, n as nullableNumberConverter, d as createRegisterFunction } from './vivid-element.js';
2
2
  import { B as Button, b as buttonDefinition } from './definition11.js';
3
3
  import { e as Menu, M as MenuItem, c as menuDefinition, m as menuItemDefinition } from './definition30.js';
4
+ import { D as Divider, d as dividerDefinition } from './definition23.js';
5
+ import { T as Tooltip, t as tooltipDefinition } from './definition60.js';
4
6
  import { c as classNames } from './class-names.js';
5
7
  import { r as repeat } from './repeat.js';
6
8
 
7
9
  const styles$1 = "@charset \"UTF-8\";.ProseMirror li{position:relative}.ProseMirror-hideselection *::selection{background:transparent}.ProseMirror-hideselection *::-moz-selection{background:transparent}.ProseMirror-hideselection{caret-color:transparent}.ProseMirror [draggable][contenteditable=false]{user-select:text}.ProseMirror-selectednode{outline:2px solid #8cf}li.ProseMirror-selectednode{outline:none}li.ProseMirror-selectednode:after{content:\"\";position:absolute;inset:-2px -2px -2px -32px;border:2px solid #8cf;pointer-events:none}img.ProseMirror-separator{display:inline!important;border:none!important;margin:0!important}.ProseMirror-textblock-dropdown{min-width:3em}.ProseMirror-menu{margin:0 -4px;line-height:1}.ProseMirror-tooltip .ProseMirror-menu{width:-webkit-fit-content;width:fit-content;white-space:pre}.ProseMirror-menuitem{margin-right:3px;display:inline-block}.ProseMirror-menuseparator{border-right:1px solid #ddd;margin-right:3px}.ProseMirror-menu-dropdown,.ProseMirror-menu-dropdown-menu{font-size:90%;white-space:nowrap}.ProseMirror-menu-dropdown{vertical-align:1px;cursor:pointer;position:relative;padding-right:15px}.ProseMirror-menu-dropdown-wrap{padding:1px 0 1px 4px;display:inline-block;position:relative}.ProseMirror-menu-dropdown:after{content:\"\";border-left:4px solid transparent;border-right:4px solid transparent;border-top:4px solid currentColor;opacity:.6;position:absolute;right:4px;top:calc(50% - 2px)}.ProseMirror-menu-dropdown-menu,.ProseMirror-menu-submenu{position:absolute;background:#fff;color:#666;border:1px solid #aaa;padding:2px}.ProseMirror-menu-dropdown-menu{z-index:15;min-width:6em}.ProseMirror-menu-dropdown-item{cursor:pointer;padding:2px 8px 2px 4px}.ProseMirror-menu-dropdown-item:hover{background:#f2f2f2}.ProseMirror-menu-submenu-wrap{position:relative;margin-right:-4px}.ProseMirror-menu-submenu-label:after{content:\"\";border-top:4px solid transparent;border-bottom:4px solid transparent;border-left:4px solid currentColor;opacity:.6;position:absolute;right:4px;top:calc(50% - 4px)}.ProseMirror-menu-submenu{display:none;min-width:4em;left:100%;top:-3px}.ProseMirror-menu-active{background:#eee;border-radius:4px}.ProseMirror-menu-disabled{opacity:.3}.ProseMirror-menu-submenu-wrap:hover .ProseMirror-menu-submenu,.ProseMirror-menu-submenu-wrap-active .ProseMirror-menu-submenu{display:block}.ProseMirror-menubar{border-top-left-radius:inherit;border-top-right-radius:inherit;position:relative;min-height:1em;color:#666;padding:1px 6px;top:0;left:0;right:0;border-bottom:1px solid silver;background:#fff;z-index:10;-moz-box-sizing:border-box;box-sizing:border-box;overflow:visible}.ProseMirror-icon{display:inline-block;line-height:.8;vertical-align:-2px;padding:2px 8px;cursor:pointer}.ProseMirror-menu-disabled.ProseMirror-icon{cursor:default}.ProseMirror-icon svg{fill:currentColor;height:1em}.ProseMirror-icon span{vertical-align:text-top}.ProseMirror-gapcursor{display:none;pointer-events:none;position:absolute}.ProseMirror-gapcursor:after{content:\"\";display:block;position:absolute;top:-2px;width:20px;border-top:1px solid black;animation:ProseMirror-cursor-blink 1.1s steps(2,start) infinite}@keyframes ProseMirror-cursor-blink{to{visibility:hidden}}.ProseMirror-focused .ProseMirror-gapcursor{display:block}.ProseMirror-example-setup-style hr{padding:2px 10px;border:none;margin:1em 0}.ProseMirror-example-setup-style hr:after{content:\"\";display:block;height:1px;background-color:silver;line-height:2px}.ProseMirror ul,.ProseMirror ol{padding-left:30px}.ProseMirror blockquote{padding-left:1em;border-left:3px solid #eee;margin-left:0;margin-right:0}.ProseMirror-example-setup-style img{cursor:default}.ProseMirror-prompt{background:#fff;padding:5px 10px 5px 15px;border:1px solid silver;position:fixed;border-radius:3px;z-index:11;box-shadow:-.5px 2px 5px #0003}.ProseMirror-prompt h5{margin:0;font-weight:400;font-size:100%;color:#444}.ProseMirror-prompt input[type=text],.ProseMirror-prompt textarea{background:#eee;border:none;outline:none}.ProseMirror-prompt input[type=text]{padding:0 4px}.ProseMirror-prompt-close{position:absolute;left:2px;top:1px;color:#666;border:none;background:transparent;padding:0}.ProseMirror-prompt-close:after{content:\"✕\";font-size:12px}.ProseMirror-invalid{background:#ffc;border:1px solid #cc7;border-radius:4px;padding:5px 10px;position:absolute;min-width:10em}.ProseMirror-prompt-buttons{margin-top:5px;display:none}.editor{box-sizing:border-box;background:var(--vvd-color-canvas);background-clip:padding-box;color:var(--vvd-color-canvas-text)}.ProseMirror{position:relative;box-sizing:border-box;padding:10px 16px;block-size:120px;font:var(--vvd-typography-base);font-feature-settings:\"liga\" 0;font-variant-ligatures:none;line-height:1.2;outline:none;overflow-y:auto;white-space:break-spaces;word-wrap:break-word}.ProseMirror pre{white-space:pre-wrap}.ProseMirror p{margin-bottom:1em}.ProseMirror p:first-child,.ProseMirror h1:first-child,.ProseMirror h2:first-child,.ProseMirror h3:first-child,.ProseMirror h4:first-child,.ProseMirror h5:first-child,.ProseMirror h6:first-child{margin-top:10px}h2{font:var(--vvd-typography-heading-4)}h3{font:var(--vvd-typography-base-extended)}p{font:var(--vvd-typography-base)}";
8
10
 
9
- const styles = ":host{display:flex;align-items:center;padding:8px;background-color:var(--vvd-color-neutral-50);gap:4px}:host .hide-menubar{display:none}.title{--_text-primary-custom-size: var(--vvd-typography-heading-4)}.subtitle{--_text-primary-custom-size: var(--vvd-typography-base-extended)}.body{--_text-primary-custom-size: var(--vvd-typography-base)}";
11
+ const styles = ":host{display:flex;align-items:center;padding:8px;background-color:var(--vvd-color-neutral-50);gap:4px}:host .hide-menubar{display:none}.title{--_text-primary-custom-size: var(--vvd-typography-heading-4)}.subtitle{--_text-primary-custom-size: var(--vvd-typography-base-extended)}.body{--_text-primary-custom-size: var(--vvd-typography-base)}.divider{align-self:stretch}";
10
12
 
11
13
  var __defProp$1 = Object.defineProperty;
12
14
  var __decorateClass$1 = (decorators, target, key, kind) => {
@@ -27,26 +29,56 @@ function notifyMenuBarChange(menuBar, eventName, payload) {
27
29
  menuBar.$emit(eventName, payload, { bubbles: false, composed: false });
28
30
  return true;
29
31
  }
32
+ const TEXT_DECORATION_ITEMS = [
33
+ {
34
+ text: "Bold",
35
+ icon: "bold-line",
36
+ value: "bold"
37
+ },
38
+ {
39
+ text: "Italic",
40
+ icon: "italic-line",
41
+ value: "italics"
42
+ },
43
+ {
44
+ text: "Underline",
45
+ icon: "underline-line",
46
+ value: "underline"
47
+ },
48
+ {
49
+ text: "Strikethrough",
50
+ icon: "strikethrough-line",
51
+ value: "strikethrough"
52
+ },
53
+ {
54
+ text: "Monospace",
55
+ icon: "monospace-line",
56
+ value: "monospace"
57
+ }
58
+ ];
30
59
  const MENU_BAR_ITEMS = {
31
60
  textSize: function(context) {
32
61
  const buttonTag = context.tagFor(Button);
33
62
  const menuTag = context.tagFor(Menu);
34
63
  const menuItemTag = context.tagFor(MenuItem);
64
+ const tooltipTag = context.tagFor(Tooltip);
35
65
  return html`
36
66
  <${menuTag}
37
67
  trigger="auto"
38
68
  id="text-size"
39
- aria-label="Menu example"
69
+ aria-label="Text Size"
40
70
  placement="bottom-end"
41
71
  >
42
- <${buttonTag}
43
- slot="anchor"
44
- aria-label="Open menu"
45
- size="super-condensed"
46
- appearance="ghost-light"
47
- shape="pill"
48
- icon="text-size-line"
49
- ></${buttonTag}>
72
+ <${tooltipTag} slot="anchor" text="Text Size" placement="top">
73
+ <${buttonTag}
74
+ slot="anchor"
75
+ aria-label="Open text size menu"
76
+ size="super-condensed"
77
+ appearance="ghost-light"
78
+ shape="pill"
79
+ icon="text-size-line"
80
+ ></${buttonTag}>
81
+ </${tooltipTag}>
50
82
  <${menuItemTag}
51
83
  text="Title"
52
84
  value="title"
@@ -73,13 +105,42 @@ const MENU_BAR_ITEMS = {
73
105
  ></${menuItemTag}>
74
106
  </${menuTag}>
75
107
  `;
108
+ },
109
+ textDecoration: function(context) {
110
+ const buttonTag = context.tagFor(Button);
111
+ const dividerTag = context.tagFor(Divider);
112
+ const tooltipTag = context.tagFor(Tooltip);
113
+ return html`
114
+ <${dividerTag} class="divider" orientation="vertical"></${dividerTag}>
115
+ ${repeat(
116
+ (_) => TEXT_DECORATION_ITEMS,
117
+ html`
118
+ <${tooltipTag} text="${(x) => x.text}" placement="top">
119
+ <${buttonTag}
120
+ slot="anchor"
121
+ aria-label="${(x) => x.text}"
122
+ size="super-condensed"
123
+ appearance="ghost-light"
124
+ shape="pill"
125
+ icon="${(x) => x.icon}"
126
+ @click="${(x, c) => notifyMenuBarChange(
127
+ c.parentContext.parent,
128
+ "text-decoration-selected",
129
+ x.value
130
+ )}"')}"
131
+ ></${buttonTag}>
132
+ </${tooltipTag}>
133
+ `
134
+ )}
135
+ <${dividerTag} class="divider" orientation="vertical"></${dividerTag}>
136
+ `;
76
137
  }
77
138
  };
78
139
  const getClasses$1 = (menuBar) => classNames("control", [
79
140
  "hide-menubar",
80
141
  getValidMenuItems(menuBar).length === 0
81
142
  ]);
82
- const validItems = ["textSize"];
143
+ const validItems = ["textSize", "textDecoration"];
83
144
  function createMenuItem(item) {
84
145
  return MENU_BAR_ITEMS[item];
85
146
  }
@@ -102,7 +163,13 @@ const menuBarDefinition = defineVividComponent(
102
163
  "menubar",
103
164
  MenuBar,
104
165
  MenuBarTemplate,
105
- [buttonDefinition, menuDefinition, menuItemDefinition],
166
+ [
167
+ buttonDefinition,
168
+ menuDefinition,
169
+ menuItemDefinition,
170
+ dividerDefinition,
171
+ tooltipDefinition
172
+ ],
106
173
  {
107
174
  styles,
108
175
  shadowOptions: {
@@ -13233,6 +13300,68 @@ const selectTextblockStart = selectTextblockSide(-1);
13233
13300
  Moves the cursor to the end of current text block.
13234
13301
  */
13235
13302
  const selectTextblockEnd = selectTextblockSide(1);
13303
+ function markApplies(doc, ranges, type, enterAtoms) {
13304
+ for (let i = 0; i < ranges.length; i++) {
13305
+ let { $from, $to } = ranges[i];
13306
+ let can = $from.depth == 0 ? doc.inlineContent && doc.type.allowsMarkType(type) : false;
13307
+ doc.nodesBetween($from.pos, $to.pos, (node, pos) => {
13308
+ if (can || false)
13309
+ return false;
13310
+ can = node.inlineContent && node.type.allowsMarkType(type);
13311
+ });
13312
+ if (can)
13313
+ return true;
13314
+ }
13315
+ return false;
13316
+ }
13317
+ /**
13318
+ Create a command function that toggles the given mark with the
13319
+ given attributes. Will return `false` when the current selection
13320
+ doesn't support that mark. This will remove the mark if any marks
13321
+ of that type exist in the selection, or add it otherwise. If the
13322
+ selection is empty, this applies to the [stored
13323
+ marks](https://prosemirror.net/docs/ref/#state.EditorState.storedMarks) instead of a range of the
13324
+ document.
13325
+ */
13326
+ function toggleMark(markType, attrs = null, options) {
13327
+ return function (state, dispatch) {
13328
+ let { empty, $cursor, ranges } = state.selection;
13329
+ if ((empty && !$cursor) || !markApplies(state.doc, ranges, markType))
13330
+ return false;
13331
+ if (dispatch) {
13332
+ if ($cursor) {
13333
+ if (markType.isInSet(state.storedMarks || $cursor.marks()))
13334
+ dispatch(state.tr.removeStoredMark(markType));
13335
+ else
13336
+ dispatch(state.tr.addStoredMark(markType.create(attrs)));
13337
+ }
13338
+ else {
13339
+ let add, tr = state.tr;
13340
+ {
13341
+ add = !ranges.some(r => state.doc.rangeHasMark(r.$from.pos, r.$to.pos, markType));
13342
+ }
13343
+ for (let i = 0; i < ranges.length; i++) {
13344
+ let { $from, $to } = ranges[i];
13345
+ if (!add) {
13346
+ tr.removeMark($from.pos, $to.pos, markType);
13347
+ }
13348
+ else {
13349
+ let from = $from.pos, to = $to.pos, start = $from.nodeAfter, end = $to.nodeBefore;
13350
+ let spaceStart = start && start.isText ? /^\s*/.exec(start.text)[0].length : 0;
13351
+ let spaceEnd = end && end.isText ? /\s*$/.exec(end.text)[0].length : 0;
13352
+ if (from + spaceStart < to) {
13353
+ from += spaceStart;
13354
+ to -= spaceEnd;
13355
+ }
13356
+ tr.addMark(from, to, markType.create(attrs));
13357
+ }
13358
+ }
13359
+ dispatch(tr.scrollIntoView());
13360
+ }
13361
+ }
13362
+ return true;
13363
+ };
13364
+ }
13236
13365
  /**
13237
13366
  Combine a number of command functions into a single function (which
13238
13367
  calls them one by one until one returns true).
@@ -13477,6 +13606,34 @@ To reuse elements from this schema, extend or read from its
13477
13606
  */
13478
13607
  const schema = new Schema({ nodes, marks });
13479
13608
 
13609
+ const customMarks = {
13610
+ u: {
13611
+ parseDOM: [{ tag: "u" }],
13612
+ toDOM() {
13613
+ return ["u", 0];
13614
+ }
13615
+ },
13616
+ s: {
13617
+ parseDOM: [{ tag: "s" }, { tag: "del" }],
13618
+ toDOM() {
13619
+ return ["s", 0];
13620
+ }
13621
+ },
13622
+ tt: {
13623
+ parseDOM: [{ tag: "tt" }, { tag: "code" }],
13624
+ toDOM() {
13625
+ return ["tt", 0];
13626
+ }
13627
+ }
13628
+ };
13629
+ const extendedSchema = new Schema({
13630
+ nodes: schema.spec.nodes,
13631
+ marks: {
13632
+ ...schema.spec.marks.toObject(),
13633
+ ...customMarks
13634
+ }
13635
+ });
13636
+
13480
13637
  const NEGATIVE_SELECTION = {
13481
13638
  start: -1,
13482
13639
  end: -1
@@ -13526,6 +13683,13 @@ function convertSelectionToVividFormat({
13526
13683
  class ProseMirrorFacade {
13527
13684
  #userContentChange = false;
13528
13685
  #view;
13686
+ #verifyViewInitiation() {
13687
+ if (!this.#view) {
13688
+ throw new Error(
13689
+ "ProseMirror was not initiated. Please use the `init` method first."
13690
+ );
13691
+ }
13692
+ }
13529
13693
  #onSelectionChange = () => {
13530
13694
  this.#dispatchEvent("selection-changed");
13531
13695
  };
@@ -13551,7 +13715,7 @@ class ProseMirrorFacade {
13551
13715
  keymap(baseKeymap)
13552
13716
  ];
13553
13717
  const state = EditorState.create({
13554
- schema: schema,
13718
+ schema: extendedSchema,
13555
13719
  plugins
13556
13720
  });
13557
13721
  this.#view = new EditorView(element, { state });
@@ -13559,12 +13723,8 @@ class ProseMirrorFacade {
13559
13723
  this.#view.dom.addEventListener("blur", this.#handleChangeEvent);
13560
13724
  }
13561
13725
  replaceContent(content) {
13562
- if (!this.#view) {
13563
- throw new Error(
13564
- "ProseMirror was not initiated. Please use the `init` method first."
13565
- );
13566
- }
13567
- const parser = DOMParser.fromSchema(schema);
13726
+ this.#verifyViewInitiation();
13727
+ const parser = DOMParser.fromSchema(extendedSchema);
13568
13728
  const doc = parser.parse(
13569
13729
  new window.DOMParser().parseFromString(content, "text/html").body
13570
13730
  );
@@ -13592,11 +13752,7 @@ class ProseMirrorFacade {
13592
13752
  this.#eventHandler.dispatchEvent(new CustomEvent(eventName, { detail }));
13593
13753
  };
13594
13754
  setSelectionTag(tag) {
13595
- if (!this.#view) {
13596
- throw new Error(
13597
- "ProseMirror was not initiated. Please use the `init` method first."
13598
- );
13599
- }
13755
+ this.#verifyViewInitiation();
13600
13756
  const nodeDefinitions = TagToSchemaMap[tag] ?? {
13601
13757
  type: tag
13602
13758
  };
@@ -13615,6 +13771,23 @@ class ProseMirrorFacade {
13615
13771
  });
13616
13772
  dispatch(tr);
13617
13773
  }
13774
+ setSelectionDecoration(decoration) {
13775
+ const SUPPORTED_DECORATIONS = {
13776
+ bold: "strong",
13777
+ italics: "em",
13778
+ underline: "u",
13779
+ strikethrough: "s",
13780
+ monospace: "tt"
13781
+ };
13782
+ this.#verifyViewInitiation();
13783
+ const { state, dispatch } = this.#view;
13784
+ const decorationKey = decoration;
13785
+ const markType = state.schema.marks[SUPPORTED_DECORATIONS[decorationKey]];
13786
+ if (!markType) {
13787
+ throw new Error(`${decoration} is not a supported decoration`);
13788
+ }
13789
+ toggleMark(markType)(state, dispatch);
13790
+ }
13618
13791
  }
13619
13792
 
13620
13793
  var __defProp = Object.defineProperty;
@@ -13727,6 +13900,13 @@ class RichTextEditor extends VividElement {
13727
13900
  console.warn(`Invalid text size: ${size}`);
13728
13901
  }
13729
13902
  }
13903
+ setSelectionDecoration(decoration) {
13904
+ try {
13905
+ this.#editor?.setSelectionDecoration(decoration);
13906
+ } catch (e) {
13907
+ console.warn(`Invalid decoration: ${decoration}`);
13908
+ }
13909
+ }
13730
13910
  }
13731
13911
  __decorateClass([
13732
13912
  attr({ converter: nullableNumberConverter, attribute: "selection-start" })
@@ -13740,6 +13920,9 @@ const VALID_MENU_ELEMEMENT_SUFFIX = "menubar";
13740
13920
  function textSizeSelectedHandler(event) {
13741
13921
  this.setTextSize(event.detail);
13742
13922
  }
13923
+ function selectionDecorationSelectedHandler(event) {
13924
+ this.setSelectionDecoration(event.detail);
13925
+ }
13743
13926
  function handleMenuBarSlotChange(richTextEditor, { event }) {
13744
13927
  const slot = event.target;
13745
13928
  const assignedElements = slot.assignedElements({ flatten: true });
@@ -13747,13 +13930,21 @@ function handleMenuBarSlotChange(richTextEditor, { event }) {
13747
13930
  (element) => element.tagName.toLowerCase().endsWith(VALID_MENU_ELEMEMENT_SUFFIX)
13748
13931
  );
13749
13932
  assignedElements.forEach((element) => {
13750
- element.style.display = element === menuBar ? "block" : "none";
13933
+ if (element === menuBar) {
13934
+ element.style.removeProperty("display");
13935
+ } else {
13936
+ element.style.display = "none";
13937
+ }
13751
13938
  });
13752
13939
  if (menuBar) {
13753
13940
  menuBar.addEventListener(
13754
13941
  "text-size-selected",
13755
13942
  textSizeSelectedHandler.bind(richTextEditor)
13756
13943
  );
13944
+ menuBar.addEventListener(
13945
+ "text-decoration-selected",
13946
+ selectionDecorationSelectedHandler.bind(richTextEditor)
13947
+ );
13757
13948
  }
13758
13949
  }
13759
13950
  const RichTextEditorTemplate = (_) => {
@@ -12,16 +12,15 @@ const affix = require('./affix.cjs');
12
12
  const localized = require('./localized.cjs');
13
13
  const formElements = require('./form-elements.cjs');
14
14
  const option = require('./option.cjs');
15
- const applyMixins = require('./apply-mixins.cjs');
16
15
  const when = require('./when.cjs');
17
16
  const ref = require('./ref.cjs');
18
17
  const slotted = require('./slotted.cjs');
19
18
  const classNames = require('./class-names.cjs');
20
19
  const repeat = require('./repeat.cjs');
21
20
 
22
- const styles = ".chevron{display:flex;flex-shrink:0;font:var(--vvd-typography-base-extended);transform:rotate(0);transition:transform .2s}:host([aria-expanded=true]) .chevron,:host([open]) .chevron{transform:rotate(180deg)}:not(.disabled) .chevron{cursor:pointer}.disabled .chevron{color:var(--_low-ink-color);cursor:not-allowed}:host(:focus-visible){outline:none}:host{display:inline-block;inline-size:300px;--_low-ink-color: var(--vvd-color-neutral-600)}:host([disabled]){--_low-ink-color: var(--vvd-color-neutral-400);cursor:not-allowed}.control-wrapper{display:flex;flex-direction:column;gap:4px}.label{color:var(--vvd-color-canvas-text);font:var(--vvd-typography-base)}.fieldset{--_connotation-color-primary: var(--vvd-searchable-select-accent-primary, var(--vvd-color-canvas-text));--_connotation-color-primary-text: var(--vvd-searchable-select-accent-primary-text, var(--vvd-color-canvas));--_connotation-color-primary-increment: var(--vvd-searchable-select-accent-primary-increment, var(--vvd-color-neutral-800));--_connotation-color-intermediate: var(--vvd-searchable-select-accent-intermediate, var(--vvd-color-neutral-500));--_connotation-color-faint: var(--vvd-searchable-select-accent-faint, var(--vvd-color-neutral-50));--_connotation-color-soft: var(--vvd-searchable-select-accent-soft, var(--vvd-color-neutral-100));--_connotation-color-firm: var(--vvd-searchable-select-accent-firm, var(--vvd-color-canvas-text));--_connotation-color-fierce: var(--vvd-searchable-select-accent-fierce, var(--vvd-color-neutral-700))}.fieldset{--_appearance-color-text: var(--vvd-color-canvas-text);--_appearance-color-fill: var(--vvd-color-canvas);--_appearance-color-outline: var(--_connotation-color-intermediate)}.fieldset.appearance-ghost{--_appearance-color-text: var(--_connotation-color-firm);--_appearance-color-fill: transparent;--_appearance-color-outline: transparent}.fieldset:where(.hover,:hover):where(:not(.disabled,:disabled,.readonly)){--_appearance-color-text: var(--vvd-color-canvas-text);--_appearance-color-fill: var(--vvd-color-canvas);--_appearance-color-outline: var(--_connotation-color-fierce)}.fieldset:where(.hover,:hover):where(:not(.disabled,:disabled,.readonly)).appearance-ghost{--_appearance-color-text: var(--_connotation-color-firm);--_appearance-color-fill: var(--_connotation-color-faint);--_appearance-color-outline: transparent}.fieldset:where(.disabled,:disabled){--_appearance-color-text: var(--vvd-color-neutral-300);--_appearance-color-fill: var(--vvd-color-neutral-100);--_appearance-color-outline: var(--vvd-color-neutral-300)}.fieldset:where(.disabled,:disabled).appearance-ghost{--_appearance-color-text: var(--vvd-color-neutral-300);--_appearance-color-fill: transparent;--_appearance-color-outline: transparent}.fieldset:where(.readonly):where(:not(.disabled,:disabled)){--_appearance-color-text: var(--vvd-color-canvas-text);--_appearance-color-fill: var(--vvd-color-neutral-200);--_appearance-color-outline: var(--vvd-color-neutral-400)}.fieldset:where(.readonly):where(:not(.disabled,:disabled)).appearance-ghost{--_appearance-color-text: var(--vvd-color-neutral-600);--_appearance-color-fill: transparent;--_appearance-color-outline: transparent}.fieldset:where(.error):where(:not(.disabled,:disabled)){--_appearance-color-text: notSet;--_appearance-color-fill: var(--vvd-color-alert-50);--_appearance-color-outline: var(--vvd-color-alert-500)}.fieldset:where(.error):where(:not(.disabled,:disabled)).appearance-ghost{--_appearance-color-text: notSet;--_appearance-color-fill: var(--vvd-color-alert-50);--_appearance-color-outline: transparent}.fieldset:where(.success):where(:not(.disabled,:disabled)){--_appearance-color-text: notSet;--_appearance-color-fill: var(--vvd-color-success-50);--_appearance-color-outline: var(--vvd-color-success-500)}.fieldset:where(.success):where(:not(.disabled,:disabled)).appearance-ghost{--_appearance-color-text: notSet;--_appearance-color-fill: var(--vvd-color-success-50);--_appearance-color-outline: transparent}.fieldset{display:flex;align-items:center;justify-content:space-between;background-color:var(--_appearance-color-fill);box-shadow:inset 0 0 0 1px var(--_appearance-color-outline);color:var(--_appearance-color-text);font:var(--vvd-typography-base);gap:8px;padding-block:8px;padding-inline:16px;transition:box-shadow .2s,background-color .2s}.fieldset:focus-within{box-shadow:inset 0 0 0 3px var(--focus-stroke-gap-color, currentColor);outline:2px solid var(--focus-stroke-color, var(--vvd-color-canvas-text));outline-offset:calc(-2px - var(--focus-inset, 0px));--focus-stroke-gap-color: transparent}:host(:not([shape=pill])) .fieldset{border-radius:8px}:host([shape=pill]) .fieldset{border-radius:24px}.popup-wrapper{position:relative}.content-area{display:flex;overflow:hidden;flex:1;flex-direction:column;gap:8px;min-block-size:24px}.tag-row{display:flex;gap:8px;inline-size:100%}.tag-row.contains-only-input:not(:focus-within){display:contents}.tag-wrapper{overflow:hidden}.tag{max-inline-size:100%}input{box-sizing:border-box;flex:1;border:none;background:none;block-size:24px;font:var(--vvd-typography-base);max-inline-size:100%;min-inline-size:100px;outline:none}.contains-only-input input:not(:focus){position:absolute;block-size:0;inline-size:0;min-inline-size:0;opacity:0;pointer-events:none}.listbox{display:flex;flex-direction:column;padding:4px;gap:2px;max-block-size:var(--searchable-select-height, 408px);overflow-y:auto}.empty-message{display:flex;align-items:center;justify-content:center;color:var(--vvd-color-neutral-300);min-block-size:40px;text-align:center}::part(popup-base){inline-size:max-content;min-inline-size:var(--_searchable-select-fixed-width, 100%)}slot[name=icon]{font-size:20px}.visually-hidden{position:absolute;overflow:hidden;width:1px;height:1px;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap}";
21
+ const styles = ".chevron{display:flex;flex-shrink:0;font:var(--vvd-typography-base-extended);transform:rotate(0);transition:transform .2s}:host([aria-expanded=true]) .chevron,:host([open]) .chevron{transform:rotate(180deg)}:not(.disabled) .chevron{cursor:pointer}.disabled .chevron{color:var(--_low-ink-color);cursor:not-allowed}:host(:focus-visible){outline:none}:host{display:inline-block;inline-size:300px;--_low-ink-color: var(--vvd-color-neutral-600)}:host([disabled]){--_low-ink-color: var(--vvd-color-neutral-400);cursor:not-allowed}.control-wrapper{display:flex;flex-direction:column;gap:4px}.label{color:var(--vvd-color-canvas-text);font:var(--vvd-typography-base)}.fieldset{--_connotation-color-primary: var(--vvd-searchable-select-accent-primary, var(--vvd-color-canvas-text));--_connotation-color-primary-text: var(--vvd-searchable-select-accent-primary-text, var(--vvd-color-canvas));--_connotation-color-primary-increment: var(--vvd-searchable-select-accent-primary-increment, var(--vvd-color-neutral-800));--_connotation-color-intermediate: var(--vvd-searchable-select-accent-intermediate, var(--vvd-color-neutral-500));--_connotation-color-faint: var(--vvd-searchable-select-accent-faint, var(--vvd-color-neutral-50));--_connotation-color-soft: var(--vvd-searchable-select-accent-soft, var(--vvd-color-neutral-100));--_connotation-color-firm: var(--vvd-searchable-select-accent-firm, var(--vvd-color-canvas-text));--_connotation-color-fierce: var(--vvd-searchable-select-accent-fierce, var(--vvd-color-neutral-700))}.fieldset{--_appearance-color-text: var(--vvd-color-canvas-text);--_appearance-color-fill: var(--vvd-color-canvas);--_appearance-color-outline: var(--_connotation-color-intermediate)}.fieldset.appearance-ghost{--_appearance-color-text: var(--_connotation-color-firm);--_appearance-color-fill: transparent;--_appearance-color-outline: transparent}.fieldset:where(.hover,:hover):where(:not(.disabled,:disabled,.readonly)){--_appearance-color-text: var(--vvd-color-canvas-text);--_appearance-color-fill: var(--vvd-color-canvas);--_appearance-color-outline: var(--_connotation-color-fierce)}.fieldset:where(.hover,:hover):where(:not(.disabled,:disabled,.readonly)).appearance-ghost{--_appearance-color-text: var(--_connotation-color-firm);--_appearance-color-fill: var(--_connotation-color-faint);--_appearance-color-outline: transparent}.fieldset:where(.disabled,:disabled){--_appearance-color-text: var(--vvd-color-neutral-300);--_appearance-color-fill: var(--vvd-color-neutral-100);--_appearance-color-outline: var(--vvd-color-neutral-300)}.fieldset:where(.disabled,:disabled).appearance-ghost{--_appearance-color-text: var(--vvd-color-neutral-300);--_appearance-color-fill: transparent;--_appearance-color-outline: transparent}.fieldset:where(.readonly):where(:not(.disabled,:disabled)){--_appearance-color-text: var(--vvd-color-canvas-text);--_appearance-color-fill: var(--vvd-color-neutral-200);--_appearance-color-outline: var(--vvd-color-neutral-400)}.fieldset:where(.readonly):where(:not(.disabled,:disabled)).appearance-ghost{--_appearance-color-text: var(--vvd-color-neutral-600);--_appearance-color-fill: transparent;--_appearance-color-outline: transparent}.fieldset:where(.error):where(:not(.disabled,:disabled)){--_appearance-color-text: notSet;--_appearance-color-fill: var(--vvd-color-alert-50);--_appearance-color-outline: var(--vvd-color-alert-500)}.fieldset:where(.error):where(:not(.disabled,:disabled)).appearance-ghost{--_appearance-color-text: notSet;--_appearance-color-fill: var(--vvd-color-alert-50);--_appearance-color-outline: transparent}.fieldset:where(.success):where(:not(.disabled,:disabled)){--_appearance-color-text: notSet;--_appearance-color-fill: var(--vvd-color-success-50);--_appearance-color-outline: var(--vvd-color-success-500)}.fieldset:where(.success):where(:not(.disabled,:disabled)).appearance-ghost{--_appearance-color-text: notSet;--_appearance-color-fill: var(--vvd-color-success-50);--_appearance-color-outline: transparent}.fieldset{display:flex;align-items:center;justify-content:space-between;background-color:var(--_appearance-color-fill);box-shadow:inset 0 0 0 1px var(--_appearance-color-outline);color:var(--_appearance-color-text);font:var(--vvd-typography-base);gap:8px;padding-block:8px;padding-inline:16px;transition:box-shadow .2s,background-color .2s}.fieldset:focus-within{box-shadow:0 0 0 4px color-mix(in srgb,var(--vvd-color-cta-500),transparent 85%),inset 0 0 0 3px var(--focus-stroke-gap-color, currentColor);outline:1px solid var(--focus-stroke-color, var(--vvd-color-cta-500));outline-offset:calc(-1px - var(--focus-inset, 0px));--focus-stroke-gap-color: transparent}:host(:not([shape=pill])) .fieldset{border-radius:8px}:host([shape=pill]) .fieldset{border-radius:24px}.popup-wrapper{position:relative}.content-area{display:flex;overflow:hidden;flex:1;flex-direction:column;gap:8px;min-block-size:24px}.tag-row{display:flex;gap:8px;inline-size:100%}.tag-row.contains-only-input:not(:focus-within){display:contents}.tag-wrapper{overflow:hidden}.tag{max-inline-size:100%}input{box-sizing:border-box;flex:1;border:none;background:none;block-size:24px;font:var(--vvd-typography-base);max-inline-size:100%;min-inline-size:100px;outline:none}.contains-only-input input:not(:focus){position:absolute;block-size:0;inline-size:0;min-inline-size:0;opacity:0;pointer-events:none}.listbox{display:flex;flex-direction:column;padding:4px;gap:2px;max-block-size:var(--searchable-select-height, 408px);overflow-y:auto}.empty-message{display:flex;align-items:center;justify-content:center;color:var(--vvd-color-neutral-300);min-block-size:40px;text-align:center}::part(popup-base){inline-size:max-content;min-inline-size:var(--_searchable-select-fixed-width, 100%)}slot[name=icon]{font-size:20px}.visually-hidden{position:absolute;overflow:hidden;width:1px;height:1px;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap}";
23
22
 
24
- const optionTagStyles = ".base{--_connotation-color-contrast: var(--vvd-option-tag-accent-contrast, var(--vvd-color-neutral-800))}.base{position:relative;display:inline-flex;box-sizing:border-box;align-items:center;background-color:var(--fill-color);block-size:calc(1px*(24 + 4*clamp(-1,var(--vvd-size-density, 0),2)));box-shadow:inset 0 0 0 1px var(--outline-color);color:var(--text-color);column-gap:8px;font:var(--vvd-typography-base-bold);max-inline-size:100%;padding-inline:8px;user-select:none;vertical-align:middle}.base:not(.disabled){--text-color: var(--_connotation-color-contrast);--fill-color: color-mix( in srgb, var(--_connotation-color-contrast), transparent 87.5% );--outline-color: transparent}.base.disabled{--text-color: var(--vvd-color-neutral-300);--fill-color: color-mix( in srgb, var(--vvd-color-neutral-800), transparent 87.5% );--outline-color: transparent}.base:not(.shape-pill){border-radius:4px}.base.shape-pill{border-radius:16px}.label{overflow:hidden;max-inline-size:100%;text-overflow:ellipsis;white-space:nowrap}slot[name=icon]{font-size:calc(calc(1px*(24 + 4*clamp(-1,var(--vvd-size-density, 0),2))) / 1.5);line-height:1}.icon-placeholder{inline-size:calc(calc(1px*(24 + 4*clamp(-1,var(--vvd-size-density, 0),2))) / 1.5)}.remove-button{display:flex;align-items:center;border-radius:inherit;cursor:pointer;outline:none}.disabled .remove-button{pointer-events:none}.remove-button:focus-visible:before{--focus-stroke-gap-color: transparent;box-shadow:inset 0 0 0 3px var(--focus-stroke-gap-color, currentColor);outline:2px solid var(--focus-stroke-color, var(--vvd-color-canvas-text));outline-offset:calc(-2px - var(--focus-inset, 0px));position:absolute;z-index:1;display:block;border-radius:inherit;content:\"\";inset:0;pointer-events:none}";
23
+ const optionTagStyles = ".base{--_connotation-color-contrast: var(--vvd-option-tag-accent-contrast, var(--vvd-color-neutral-800))}.base{position:relative;display:inline-flex;box-sizing:border-box;align-items:center;background-color:var(--fill-color);block-size:calc(1px*(24 + 4*clamp(-1,var(--vvd-size-density, 0),2)));box-shadow:inset 0 0 0 1px var(--outline-color);color:var(--text-color);column-gap:8px;font:var(--vvd-typography-base-bold);max-inline-size:100%;padding-inline:8px;user-select:none;vertical-align:middle}.base:not(.disabled){--text-color: var(--_connotation-color-contrast);--fill-color: color-mix( in srgb, var(--_connotation-color-contrast), transparent 87.5% );--outline-color: transparent}.base.disabled{--text-color: var(--vvd-color-neutral-300);--fill-color: color-mix( in srgb, var(--vvd-color-neutral-800), transparent 87.5% );--outline-color: transparent}.base:not(.shape-pill){border-radius:4px}.base.shape-pill{border-radius:16px}.label{overflow:hidden;max-inline-size:100%;text-overflow:ellipsis;white-space:nowrap}slot[name=icon]{font-size:calc(calc(1px*(24 + 4*clamp(-1,var(--vvd-size-density, 0),2))) / 1.5);line-height:1}.icon-placeholder{inline-size:calc(calc(1px*(24 + 4*clamp(-1,var(--vvd-size-density, 0),2))) / 1.5)}.remove-button{display:flex;align-items:center;border-radius:inherit;cursor:pointer;outline:none}.disabled .remove-button{pointer-events:none}.remove-button:focus-visible:before{--focus-stroke-gap-color: transparent;box-shadow:0 0 0 4px color-mix(in srgb,var(--vvd-color-cta-500),transparent 85%),inset 0 0 0 3px var(--focus-stroke-gap-color, currentColor);outline:1px solid var(--focus-stroke-color, var(--vvd-color-cta-500));outline-offset:calc(-1px - var(--focus-inset, 0px));position:absolute;z-index:1;display:block;border-radius:inherit;content:\"\";inset:0;pointer-events:none}";
25
24
 
26
25
  class _SearchableSelect extends vividElement.VividElement {
27
26
  }
@@ -56,7 +55,9 @@ const TagGapPx = 8;
56
55
  const InputMinWidthPx = 100;
57
56
  const PageSize = 10;
58
57
  const isFormAssociatedTryingToSetFormValue = (value) => typeof value === "string";
59
- exports.SearchableSelect = class SearchableSelect extends FormAssociatedSearchableSelect {
58
+ exports.SearchableSelect = class SearchableSelect extends affix.AffixIconWithTrailing(
59
+ localized.Localized(FormAssociatedSearchableSelect)
60
+ ) {
60
61
  constructor() {
61
62
  super(...arguments);
62
63
  __privateAdd(this, _SearchableSelect_instances);
@@ -481,7 +482,8 @@ exports.SearchableSelect = class SearchableSelect extends FormAssociatedSearchab
481
482
  * @internal
482
483
  */
483
484
  _onMouseDown(event) {
484
- if (!event.defaultPrevented) {
485
+ const originalTarget = event.composedPath()[0];
486
+ if (!event.defaultPrevented && originalTarget !== this._input) {
485
487
  this._input.focus();
486
488
  return false;
487
489
  }
@@ -848,10 +850,8 @@ exports.SearchableSelect = __decorateClass$1([
848
850
  ], exports.SearchableSelect);
849
851
  applyMixinsWithObservables.applyMixinsWithObservables(
850
852
  exports.SearchableSelect,
851
- affix.AffixIconWithTrailing,
852
853
  formElements.FormElementHelperText,
853
- formElements.FormElementSuccessText,
854
- localized.Localized
854
+ formElements.FormElementSuccessText
855
855
  );
856
856
 
857
857
  var __defProp = Object.defineProperty;
@@ -863,7 +863,7 @@ var __decorateClass = (decorators, target, key, kind) => {
863
863
  if (result) __defProp(target, key, result);
864
864
  return result;
865
865
  };
866
- class OptionTag extends vividElement.VividElement {
866
+ class OptionTag extends localized.Localized(vividElement.VividElement) {
867
867
  constructor() {
868
868
  super(...arguments);
869
869
  this.removable = false;
@@ -891,7 +891,6 @@ __decorateClass([
891
891
  __decorateClass([
892
892
  vividElement.observable
893
893
  ], OptionTag.prototype, "hasIconPlaceholder");
894
- applyMixins.applyMixins(OptionTag, localized.Localized);
895
894
 
896
895
  const getStateClasses = (x) => classNames.classNames(
897
896
  ["disabled", x.disabled],
@@ -10,16 +10,15 @@ import { A as AffixIconWithTrailing, a as affixIconTemplateFactory, I as IconWra
10
10
  import { L as Localized } from './localized.js';
11
11
  import { F as FormElementSuccessText, a as FormElementHelperText, e as errorText, f as formElements, g as getFeedbackTemplate } from './form-elements.js';
12
12
  import { i as isListboxOption } from './option.js';
13
- import { a as applyMixins } from './apply-mixins.js';
14
13
  import { w as when } from './when.js';
15
14
  import { r as ref } from './ref.js';
16
15
  import { s as slotted } from './slotted.js';
17
16
  import { c as classNames } from './class-names.js';
18
17
  import { r as repeat } from './repeat.js';
19
18
 
20
- const styles = ".chevron{display:flex;flex-shrink:0;font:var(--vvd-typography-base-extended);transform:rotate(0);transition:transform .2s}:host([aria-expanded=true]) .chevron,:host([open]) .chevron{transform:rotate(180deg)}:not(.disabled) .chevron{cursor:pointer}.disabled .chevron{color:var(--_low-ink-color);cursor:not-allowed}:host(:focus-visible){outline:none}:host{display:inline-block;inline-size:300px;--_low-ink-color: var(--vvd-color-neutral-600)}:host([disabled]){--_low-ink-color: var(--vvd-color-neutral-400);cursor:not-allowed}.control-wrapper{display:flex;flex-direction:column;gap:4px}.label{color:var(--vvd-color-canvas-text);font:var(--vvd-typography-base)}.fieldset{--_connotation-color-primary: var(--vvd-searchable-select-accent-primary, var(--vvd-color-canvas-text));--_connotation-color-primary-text: var(--vvd-searchable-select-accent-primary-text, var(--vvd-color-canvas));--_connotation-color-primary-increment: var(--vvd-searchable-select-accent-primary-increment, var(--vvd-color-neutral-800));--_connotation-color-intermediate: var(--vvd-searchable-select-accent-intermediate, var(--vvd-color-neutral-500));--_connotation-color-faint: var(--vvd-searchable-select-accent-faint, var(--vvd-color-neutral-50));--_connotation-color-soft: var(--vvd-searchable-select-accent-soft, var(--vvd-color-neutral-100));--_connotation-color-firm: var(--vvd-searchable-select-accent-firm, var(--vvd-color-canvas-text));--_connotation-color-fierce: var(--vvd-searchable-select-accent-fierce, var(--vvd-color-neutral-700))}.fieldset{--_appearance-color-text: var(--vvd-color-canvas-text);--_appearance-color-fill: var(--vvd-color-canvas);--_appearance-color-outline: var(--_connotation-color-intermediate)}.fieldset.appearance-ghost{--_appearance-color-text: var(--_connotation-color-firm);--_appearance-color-fill: transparent;--_appearance-color-outline: transparent}.fieldset:where(.hover,:hover):where(:not(.disabled,:disabled,.readonly)){--_appearance-color-text: var(--vvd-color-canvas-text);--_appearance-color-fill: var(--vvd-color-canvas);--_appearance-color-outline: var(--_connotation-color-fierce)}.fieldset:where(.hover,:hover):where(:not(.disabled,:disabled,.readonly)).appearance-ghost{--_appearance-color-text: var(--_connotation-color-firm);--_appearance-color-fill: var(--_connotation-color-faint);--_appearance-color-outline: transparent}.fieldset:where(.disabled,:disabled){--_appearance-color-text: var(--vvd-color-neutral-300);--_appearance-color-fill: var(--vvd-color-neutral-100);--_appearance-color-outline: var(--vvd-color-neutral-300)}.fieldset:where(.disabled,:disabled).appearance-ghost{--_appearance-color-text: var(--vvd-color-neutral-300);--_appearance-color-fill: transparent;--_appearance-color-outline: transparent}.fieldset:where(.readonly):where(:not(.disabled,:disabled)){--_appearance-color-text: var(--vvd-color-canvas-text);--_appearance-color-fill: var(--vvd-color-neutral-200);--_appearance-color-outline: var(--vvd-color-neutral-400)}.fieldset:where(.readonly):where(:not(.disabled,:disabled)).appearance-ghost{--_appearance-color-text: var(--vvd-color-neutral-600);--_appearance-color-fill: transparent;--_appearance-color-outline: transparent}.fieldset:where(.error):where(:not(.disabled,:disabled)){--_appearance-color-text: notSet;--_appearance-color-fill: var(--vvd-color-alert-50);--_appearance-color-outline: var(--vvd-color-alert-500)}.fieldset:where(.error):where(:not(.disabled,:disabled)).appearance-ghost{--_appearance-color-text: notSet;--_appearance-color-fill: var(--vvd-color-alert-50);--_appearance-color-outline: transparent}.fieldset:where(.success):where(:not(.disabled,:disabled)){--_appearance-color-text: notSet;--_appearance-color-fill: var(--vvd-color-success-50);--_appearance-color-outline: var(--vvd-color-success-500)}.fieldset:where(.success):where(:not(.disabled,:disabled)).appearance-ghost{--_appearance-color-text: notSet;--_appearance-color-fill: var(--vvd-color-success-50);--_appearance-color-outline: transparent}.fieldset{display:flex;align-items:center;justify-content:space-between;background-color:var(--_appearance-color-fill);box-shadow:inset 0 0 0 1px var(--_appearance-color-outline);color:var(--_appearance-color-text);font:var(--vvd-typography-base);gap:8px;padding-block:8px;padding-inline:16px;transition:box-shadow .2s,background-color .2s}.fieldset:focus-within{box-shadow:inset 0 0 0 3px var(--focus-stroke-gap-color, currentColor);outline:2px solid var(--focus-stroke-color, var(--vvd-color-canvas-text));outline-offset:calc(-2px - var(--focus-inset, 0px));--focus-stroke-gap-color: transparent}:host(:not([shape=pill])) .fieldset{border-radius:8px}:host([shape=pill]) .fieldset{border-radius:24px}.popup-wrapper{position:relative}.content-area{display:flex;overflow:hidden;flex:1;flex-direction:column;gap:8px;min-block-size:24px}.tag-row{display:flex;gap:8px;inline-size:100%}.tag-row.contains-only-input:not(:focus-within){display:contents}.tag-wrapper{overflow:hidden}.tag{max-inline-size:100%}input{box-sizing:border-box;flex:1;border:none;background:none;block-size:24px;font:var(--vvd-typography-base);max-inline-size:100%;min-inline-size:100px;outline:none}.contains-only-input input:not(:focus){position:absolute;block-size:0;inline-size:0;min-inline-size:0;opacity:0;pointer-events:none}.listbox{display:flex;flex-direction:column;padding:4px;gap:2px;max-block-size:var(--searchable-select-height, 408px);overflow-y:auto}.empty-message{display:flex;align-items:center;justify-content:center;color:var(--vvd-color-neutral-300);min-block-size:40px;text-align:center}::part(popup-base){inline-size:max-content;min-inline-size:var(--_searchable-select-fixed-width, 100%)}slot[name=icon]{font-size:20px}.visually-hidden{position:absolute;overflow:hidden;width:1px;height:1px;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap}";
19
+ const styles = ".chevron{display:flex;flex-shrink:0;font:var(--vvd-typography-base-extended);transform:rotate(0);transition:transform .2s}:host([aria-expanded=true]) .chevron,:host([open]) .chevron{transform:rotate(180deg)}:not(.disabled) .chevron{cursor:pointer}.disabled .chevron{color:var(--_low-ink-color);cursor:not-allowed}:host(:focus-visible){outline:none}:host{display:inline-block;inline-size:300px;--_low-ink-color: var(--vvd-color-neutral-600)}:host([disabled]){--_low-ink-color: var(--vvd-color-neutral-400);cursor:not-allowed}.control-wrapper{display:flex;flex-direction:column;gap:4px}.label{color:var(--vvd-color-canvas-text);font:var(--vvd-typography-base)}.fieldset{--_connotation-color-primary: var(--vvd-searchable-select-accent-primary, var(--vvd-color-canvas-text));--_connotation-color-primary-text: var(--vvd-searchable-select-accent-primary-text, var(--vvd-color-canvas));--_connotation-color-primary-increment: var(--vvd-searchable-select-accent-primary-increment, var(--vvd-color-neutral-800));--_connotation-color-intermediate: var(--vvd-searchable-select-accent-intermediate, var(--vvd-color-neutral-500));--_connotation-color-faint: var(--vvd-searchable-select-accent-faint, var(--vvd-color-neutral-50));--_connotation-color-soft: var(--vvd-searchable-select-accent-soft, var(--vvd-color-neutral-100));--_connotation-color-firm: var(--vvd-searchable-select-accent-firm, var(--vvd-color-canvas-text));--_connotation-color-fierce: var(--vvd-searchable-select-accent-fierce, var(--vvd-color-neutral-700))}.fieldset{--_appearance-color-text: var(--vvd-color-canvas-text);--_appearance-color-fill: var(--vvd-color-canvas);--_appearance-color-outline: var(--_connotation-color-intermediate)}.fieldset.appearance-ghost{--_appearance-color-text: var(--_connotation-color-firm);--_appearance-color-fill: transparent;--_appearance-color-outline: transparent}.fieldset:where(.hover,:hover):where(:not(.disabled,:disabled,.readonly)){--_appearance-color-text: var(--vvd-color-canvas-text);--_appearance-color-fill: var(--vvd-color-canvas);--_appearance-color-outline: var(--_connotation-color-fierce)}.fieldset:where(.hover,:hover):where(:not(.disabled,:disabled,.readonly)).appearance-ghost{--_appearance-color-text: var(--_connotation-color-firm);--_appearance-color-fill: var(--_connotation-color-faint);--_appearance-color-outline: transparent}.fieldset:where(.disabled,:disabled){--_appearance-color-text: var(--vvd-color-neutral-300);--_appearance-color-fill: var(--vvd-color-neutral-100);--_appearance-color-outline: var(--vvd-color-neutral-300)}.fieldset:where(.disabled,:disabled).appearance-ghost{--_appearance-color-text: var(--vvd-color-neutral-300);--_appearance-color-fill: transparent;--_appearance-color-outline: transparent}.fieldset:where(.readonly):where(:not(.disabled,:disabled)){--_appearance-color-text: var(--vvd-color-canvas-text);--_appearance-color-fill: var(--vvd-color-neutral-200);--_appearance-color-outline: var(--vvd-color-neutral-400)}.fieldset:where(.readonly):where(:not(.disabled,:disabled)).appearance-ghost{--_appearance-color-text: var(--vvd-color-neutral-600);--_appearance-color-fill: transparent;--_appearance-color-outline: transparent}.fieldset:where(.error):where(:not(.disabled,:disabled)){--_appearance-color-text: notSet;--_appearance-color-fill: var(--vvd-color-alert-50);--_appearance-color-outline: var(--vvd-color-alert-500)}.fieldset:where(.error):where(:not(.disabled,:disabled)).appearance-ghost{--_appearance-color-text: notSet;--_appearance-color-fill: var(--vvd-color-alert-50);--_appearance-color-outline: transparent}.fieldset:where(.success):where(:not(.disabled,:disabled)){--_appearance-color-text: notSet;--_appearance-color-fill: var(--vvd-color-success-50);--_appearance-color-outline: var(--vvd-color-success-500)}.fieldset:where(.success):where(:not(.disabled,:disabled)).appearance-ghost{--_appearance-color-text: notSet;--_appearance-color-fill: var(--vvd-color-success-50);--_appearance-color-outline: transparent}.fieldset{display:flex;align-items:center;justify-content:space-between;background-color:var(--_appearance-color-fill);box-shadow:inset 0 0 0 1px var(--_appearance-color-outline);color:var(--_appearance-color-text);font:var(--vvd-typography-base);gap:8px;padding-block:8px;padding-inline:16px;transition:box-shadow .2s,background-color .2s}.fieldset:focus-within{box-shadow:0 0 0 4px color-mix(in srgb,var(--vvd-color-cta-500),transparent 85%),inset 0 0 0 3px var(--focus-stroke-gap-color, currentColor);outline:1px solid var(--focus-stroke-color, var(--vvd-color-cta-500));outline-offset:calc(-1px - var(--focus-inset, 0px));--focus-stroke-gap-color: transparent}:host(:not([shape=pill])) .fieldset{border-radius:8px}:host([shape=pill]) .fieldset{border-radius:24px}.popup-wrapper{position:relative}.content-area{display:flex;overflow:hidden;flex:1;flex-direction:column;gap:8px;min-block-size:24px}.tag-row{display:flex;gap:8px;inline-size:100%}.tag-row.contains-only-input:not(:focus-within){display:contents}.tag-wrapper{overflow:hidden}.tag{max-inline-size:100%}input{box-sizing:border-box;flex:1;border:none;background:none;block-size:24px;font:var(--vvd-typography-base);max-inline-size:100%;min-inline-size:100px;outline:none}.contains-only-input input:not(:focus){position:absolute;block-size:0;inline-size:0;min-inline-size:0;opacity:0;pointer-events:none}.listbox{display:flex;flex-direction:column;padding:4px;gap:2px;max-block-size:var(--searchable-select-height, 408px);overflow-y:auto}.empty-message{display:flex;align-items:center;justify-content:center;color:var(--vvd-color-neutral-300);min-block-size:40px;text-align:center}::part(popup-base){inline-size:max-content;min-inline-size:var(--_searchable-select-fixed-width, 100%)}slot[name=icon]{font-size:20px}.visually-hidden{position:absolute;overflow:hidden;width:1px;height:1px;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap}";
21
20
 
22
- const optionTagStyles = ".base{--_connotation-color-contrast: var(--vvd-option-tag-accent-contrast, var(--vvd-color-neutral-800))}.base{position:relative;display:inline-flex;box-sizing:border-box;align-items:center;background-color:var(--fill-color);block-size:calc(1px*(24 + 4*clamp(-1,var(--vvd-size-density, 0),2)));box-shadow:inset 0 0 0 1px var(--outline-color);color:var(--text-color);column-gap:8px;font:var(--vvd-typography-base-bold);max-inline-size:100%;padding-inline:8px;user-select:none;vertical-align:middle}.base:not(.disabled){--text-color: var(--_connotation-color-contrast);--fill-color: color-mix( in srgb, var(--_connotation-color-contrast), transparent 87.5% );--outline-color: transparent}.base.disabled{--text-color: var(--vvd-color-neutral-300);--fill-color: color-mix( in srgb, var(--vvd-color-neutral-800), transparent 87.5% );--outline-color: transparent}.base:not(.shape-pill){border-radius:4px}.base.shape-pill{border-radius:16px}.label{overflow:hidden;max-inline-size:100%;text-overflow:ellipsis;white-space:nowrap}slot[name=icon]{font-size:calc(calc(1px*(24 + 4*clamp(-1,var(--vvd-size-density, 0),2))) / 1.5);line-height:1}.icon-placeholder{inline-size:calc(calc(1px*(24 + 4*clamp(-1,var(--vvd-size-density, 0),2))) / 1.5)}.remove-button{display:flex;align-items:center;border-radius:inherit;cursor:pointer;outline:none}.disabled .remove-button{pointer-events:none}.remove-button:focus-visible:before{--focus-stroke-gap-color: transparent;box-shadow:inset 0 0 0 3px var(--focus-stroke-gap-color, currentColor);outline:2px solid var(--focus-stroke-color, var(--vvd-color-canvas-text));outline-offset:calc(-2px - var(--focus-inset, 0px));position:absolute;z-index:1;display:block;border-radius:inherit;content:\"\";inset:0;pointer-events:none}";
21
+ const optionTagStyles = ".base{--_connotation-color-contrast: var(--vvd-option-tag-accent-contrast, var(--vvd-color-neutral-800))}.base{position:relative;display:inline-flex;box-sizing:border-box;align-items:center;background-color:var(--fill-color);block-size:calc(1px*(24 + 4*clamp(-1,var(--vvd-size-density, 0),2)));box-shadow:inset 0 0 0 1px var(--outline-color);color:var(--text-color);column-gap:8px;font:var(--vvd-typography-base-bold);max-inline-size:100%;padding-inline:8px;user-select:none;vertical-align:middle}.base:not(.disabled){--text-color: var(--_connotation-color-contrast);--fill-color: color-mix( in srgb, var(--_connotation-color-contrast), transparent 87.5% );--outline-color: transparent}.base.disabled{--text-color: var(--vvd-color-neutral-300);--fill-color: color-mix( in srgb, var(--vvd-color-neutral-800), transparent 87.5% );--outline-color: transparent}.base:not(.shape-pill){border-radius:4px}.base.shape-pill{border-radius:16px}.label{overflow:hidden;max-inline-size:100%;text-overflow:ellipsis;white-space:nowrap}slot[name=icon]{font-size:calc(calc(1px*(24 + 4*clamp(-1,var(--vvd-size-density, 0),2))) / 1.5);line-height:1}.icon-placeholder{inline-size:calc(calc(1px*(24 + 4*clamp(-1,var(--vvd-size-density, 0),2))) / 1.5)}.remove-button{display:flex;align-items:center;border-radius:inherit;cursor:pointer;outline:none}.disabled .remove-button{pointer-events:none}.remove-button:focus-visible:before{--focus-stroke-gap-color: transparent;box-shadow:0 0 0 4px color-mix(in srgb,var(--vvd-color-cta-500),transparent 85%),inset 0 0 0 3px var(--focus-stroke-gap-color, currentColor);outline:1px solid var(--focus-stroke-color, var(--vvd-color-cta-500));outline-offset:calc(-1px - var(--focus-inset, 0px));position:absolute;z-index:1;display:block;border-radius:inherit;content:\"\";inset:0;pointer-events:none}";
23
22
 
24
23
  class _SearchableSelect extends VividElement {
25
24
  }
@@ -54,7 +53,9 @@ const TagGapPx = 8;
54
53
  const InputMinWidthPx = 100;
55
54
  const PageSize = 10;
56
55
  const isFormAssociatedTryingToSetFormValue = (value) => typeof value === "string";
57
- let SearchableSelect = class extends FormAssociatedSearchableSelect {
56
+ let SearchableSelect = class extends AffixIconWithTrailing(
57
+ Localized(FormAssociatedSearchableSelect)
58
+ ) {
58
59
  constructor() {
59
60
  super(...arguments);
60
61
  __privateAdd(this, _SearchableSelect_instances);
@@ -479,7 +480,8 @@ let SearchableSelect = class extends FormAssociatedSearchableSelect {
479
480
  * @internal
480
481
  */
481
482
  _onMouseDown(event) {
482
- if (!event.defaultPrevented) {
483
+ const originalTarget = event.composedPath()[0];
484
+ if (!event.defaultPrevented && originalTarget !== this._input) {
483
485
  this._input.focus();
484
486
  return false;
485
487
  }
@@ -846,10 +848,8 @@ SearchableSelect = __decorateClass$1([
846
848
  ], SearchableSelect);
847
849
  applyMixinsWithObservables(
848
850
  SearchableSelect,
849
- AffixIconWithTrailing,
850
851
  FormElementHelperText,
851
- FormElementSuccessText,
852
- Localized
852
+ FormElementSuccessText
853
853
  );
854
854
 
855
855
  var __defProp = Object.defineProperty;
@@ -861,7 +861,7 @@ var __decorateClass = (decorators, target, key, kind) => {
861
861
  if (result) __defProp(target, key, result);
862
862
  return result;
863
863
  };
864
- class OptionTag extends VividElement {
864
+ class OptionTag extends Localized(VividElement) {
865
865
  constructor() {
866
866
  super(...arguments);
867
867
  this.removable = false;
@@ -889,7 +889,6 @@ __decorateClass([
889
889
  __decorateClass([
890
890
  observable
891
891
  ], OptionTag.prototype, "hasIconPlaceholder");
892
- applyMixins(OptionTag, Localized);
893
892
 
894
893
  const getStateClasses = (x) => classNames(
895
894
  ["disabled", x.disabled],
@@ -8,10 +8,10 @@ const applyMixinsWithObservables = require('./applyMixinsWithObservables.cjs');
8
8
  const listbox = require('./listbox.cjs');
9
9
  const formAssociated = require('./form-associated.cjs');
10
10
  const numbers = require('./numbers.cjs');
11
+ const affix = require('./affix.cjs');
11
12
  const strings = require('./strings.cjs');
12
13
  const keyCodes = require('./key-codes.cjs');
13
14
  const formElements = require('./form-elements.cjs');
14
- const affix = require('./affix.cjs');
15
15
  const option = require('./option.cjs');
16
16
  const definition$1 = require('./definition11.cjs');
17
17
  const index = require('./index.cjs');
@@ -20,7 +20,7 @@ const when = require('./when.cjs');
20
20
  const slotted = require('./slotted.cjs');
21
21
  const classNames = require('./class-names.cjs');
22
22
 
23
- const styles = ".chevron{display:flex;flex-shrink:0;font:var(--vvd-typography-base-extended);transform:rotate(0);transition:transform .2s}:host([aria-expanded=true]) .chevron,:host([open]) .chevron{transform:rotate(180deg)}:host(:focus-visible){outline:none}:host{display:inline-flex;flex-direction:column;gap:4px;--_low-ink-color: var(--vvd-color-neutral-600);--focus-stroke-gap-color: transparent}:host([disabled]){--_low-ink-color: var(--vvd-color-neutral-400);cursor:not-allowed}.label{color:var(--vvd-color-canvas-text);contain:inline-size;font:var(--vvd-typography-base)}.control{--_appearance-color-text: var(--vvd-color-canvas-text);--_appearance-color-fill: var(--vvd-color-canvas);--_appearance-color-outline: var(--_connotation-color-intermediate)}.control.appearance-ghost{--_appearance-color-text: var(--_connotation-color-firm);--_appearance-color-fill: transparent;--_appearance-color-outline: transparent}.control:where(.hover,:hover):where(:not(.disabled,:disabled,.readonly)){--_appearance-color-text: var(--vvd-color-canvas-text);--_appearance-color-fill: var(--vvd-color-canvas);--_appearance-color-outline: var(--_connotation-color-fierce)}.control:where(.hover,:hover):where(:not(.disabled,:disabled,.readonly)).appearance-ghost{--_appearance-color-text: var(--_connotation-color-firm);--_appearance-color-fill: var(--_connotation-color-faint);--_appearance-color-outline: transparent}.control:where(.disabled,:disabled){--_appearance-color-text: var(--vvd-color-neutral-300);--_appearance-color-fill: var(--vvd-color-neutral-100);--_appearance-color-outline: var(--vvd-color-neutral-300)}.control:where(.disabled,:disabled).appearance-ghost{--_appearance-color-text: var(--vvd-color-neutral-300);--_appearance-color-fill: transparent;--_appearance-color-outline: transparent}.control:where(.readonly):where(:not(.disabled,:disabled)){--_appearance-color-text: var(--vvd-color-canvas-text);--_appearance-color-fill: var(--vvd-color-neutral-200);--_appearance-color-outline: var(--vvd-color-neutral-400)}.control:where(.readonly):where(:not(.disabled,:disabled)).appearance-ghost{--_appearance-color-text: var(--vvd-color-neutral-600);--_appearance-color-fill: transparent;--_appearance-color-outline: transparent}.control:where(.error):where(:not(.disabled,:disabled)){--_appearance-color-text: notSet;--_appearance-color-fill: var(--vvd-color-alert-50);--_appearance-color-outline: var(--vvd-color-alert-500)}.control:where(.error):where(:not(.disabled,:disabled)).appearance-ghost{--_appearance-color-text: notSet;--_appearance-color-fill: var(--vvd-color-alert-50);--_appearance-color-outline: transparent}.control:where(.success):where(:not(.disabled,:disabled)){--_appearance-color-text: notSet;--_appearance-color-fill: var(--vvd-color-success-50);--_appearance-color-outline: var(--vvd-color-success-500)}.control:where(.success):where(:not(.disabled,:disabled)).appearance-ghost{--_appearance-color-text: notSet;--_appearance-color-fill: var(--vvd-color-success-50);--_appearance-color-outline: transparent}.control{--_connotation-color-primary: var(--vvd-select-accent-primary, var(--vvd-color-canvas-text));--_connotation-color-primary-text: var(--vvd-select-accent-primary-text, var(--vvd-color-canvas));--_connotation-color-primary-increment: var(--vvd-select-accent-primary-increment, var(--vvd-color-neutral-800));--_connotation-color-intermediate: var(--vvd-select-accent-intermediate, var(--vvd-color-neutral-500));--_connotation-color-faint: var(--vvd-select-accent-faint, var(--vvd-color-neutral-50));--_connotation-color-soft: var(--vvd-select-accent-soft, var(--vvd-color-neutral-100));--_connotation-color-firm: var(--vvd-select-accent-firm, var(--vvd-color-canvas-text));--_connotation-color-fierce: var(--vvd-select-accent-fierce, var(--vvd-color-neutral-700))}.control{border-radius:var(--_select-control-border-radius);block-size:var(--_select-block-size);padding-inline:var(--_select-padding-inline)}.control{--_select-icon-size: calc(1px*(40 + 4*clamp(-1, var(--vvd-size-density, 0), 2))/2) ;--_select-block-size: calc(1px*(40 + 4*clamp(-1, var(--vvd-size-density, 0), 2))) ;--_select-padding-inline: calc(1px*(40 + 4*clamp(-1, var(--vvd-size-density, 0), 2))*.4) ;display:flex;align-items:center;justify-content:space-between;background-color:var(--_appearance-color-fill);box-shadow:inset 0 0 0 1px var(--_appearance-color-outline);color:var(--_appearance-color-text);font:var(--vvd-typography-base);gap:8px;transition:box-shadow .2s,background-color .2s}.control.size-condensed{--_select-icon-size: calc(1px*(40 + 4*clamp(-1, var(--vvd-size-density, 0), 2))*.4) ;--_select-block-size: calc(1px*(32 + 4*clamp(-1, var(--vvd-size-density, 0), 2))) ;--_select-padding-inline: calc(1px*(24 + 4*clamp(-1, var(--vvd-size-density, 0), 2))/2) }.control-wrapper{position:relative}.control:not(.disabled){cursor:pointer}.control.disabled{pointer-events:none}.control:not(.shape-pill){--_select-control-border-radius: 8px}.control.shape-pill{--_select-control-border-radius: 24px}:host(:focus-visible) .control{box-shadow:inset 0 0 0 3px var(--focus-stroke-gap-color, currentColor);outline:2px solid var(--focus-stroke-color, var(--vvd-color-canvas-text));outline-offset:calc(-2px - var(--focus-inset, 0px))}.listbox{display:flex;max-height:var(--select-height, 408px);flex-direction:column;padding:4px;gap:2px;overflow-y:auto}:host([multiple]:focus-visible) .listbox{box-shadow:inset 0 0 0 3px var(--focus-stroke-gap-color, currentColor);outline:2px solid var(--focus-stroke-color, var(--vvd-color-canvas-text));outline-offset:calc(-2px - var(--focus-inset, 0px));border-radius:8px}.selected-value{display:flex;overflow:hidden;flex-grow:1;align-items:center;column-gap:12px;white-space:nowrap}.selected-value .text{overflow:hidden;max-inline-size:100%;text-overflow:ellipsis}.control.shows-placeholder .selected-value .text{color:var(--vvd-color-neutral-600)}.selected-value slot[name=icon]{flex:0 0 var(--_select-icon-size);font-size:var(--_select-icon-size);line-height:1}.control.has-meta .selected-value{padding-inline-end:8px}.feedback-wrapper{display:contents}::part(popup-base){inline-size:max-content;min-inline-size:var(--_select-fixed-width, 100%)}:host([multiple]) ::part(popup-base){position:static}";
23
+ const styles = ".chevron{display:flex;flex-shrink:0;font:var(--vvd-typography-base-extended);transform:rotate(0);transition:transform .2s}:host([aria-expanded=true]) .chevron,:host([open]) .chevron{transform:rotate(180deg)}:host(:focus-visible){outline:none}:host{display:inline-flex;flex-direction:column;gap:4px;--_low-ink-color: var(--vvd-color-neutral-600);--focus-stroke-gap-color: transparent}:host([disabled]){--_low-ink-color: var(--vvd-color-neutral-400);cursor:not-allowed}.label{color:var(--vvd-color-canvas-text);contain:inline-size;font:var(--vvd-typography-base)}.control{--_appearance-color-text: var(--vvd-color-canvas-text);--_appearance-color-fill: var(--vvd-color-canvas);--_appearance-color-outline: var(--_connotation-color-intermediate)}.control.appearance-ghost{--_appearance-color-text: var(--_connotation-color-firm);--_appearance-color-fill: transparent;--_appearance-color-outline: transparent}.control:where(.hover,:hover):where(:not(.disabled,:disabled,.readonly)){--_appearance-color-text: var(--vvd-color-canvas-text);--_appearance-color-fill: var(--vvd-color-canvas);--_appearance-color-outline: var(--_connotation-color-fierce)}.control:where(.hover,:hover):where(:not(.disabled,:disabled,.readonly)).appearance-ghost{--_appearance-color-text: var(--_connotation-color-firm);--_appearance-color-fill: var(--_connotation-color-faint);--_appearance-color-outline: transparent}.control:where(.disabled,:disabled){--_appearance-color-text: var(--vvd-color-neutral-300);--_appearance-color-fill: var(--vvd-color-neutral-100);--_appearance-color-outline: var(--vvd-color-neutral-300)}.control:where(.disabled,:disabled).appearance-ghost{--_appearance-color-text: var(--vvd-color-neutral-300);--_appearance-color-fill: transparent;--_appearance-color-outline: transparent}.control:where(.readonly):where(:not(.disabled,:disabled)){--_appearance-color-text: var(--vvd-color-canvas-text);--_appearance-color-fill: var(--vvd-color-neutral-200);--_appearance-color-outline: var(--vvd-color-neutral-400)}.control:where(.readonly):where(:not(.disabled,:disabled)).appearance-ghost{--_appearance-color-text: var(--vvd-color-neutral-600);--_appearance-color-fill: transparent;--_appearance-color-outline: transparent}.control:where(.error):where(:not(.disabled,:disabled)){--_appearance-color-text: notSet;--_appearance-color-fill: var(--vvd-color-alert-50);--_appearance-color-outline: var(--vvd-color-alert-500)}.control:where(.error):where(:not(.disabled,:disabled)).appearance-ghost{--_appearance-color-text: notSet;--_appearance-color-fill: var(--vvd-color-alert-50);--_appearance-color-outline: transparent}.control:where(.success):where(:not(.disabled,:disabled)){--_appearance-color-text: notSet;--_appearance-color-fill: var(--vvd-color-success-50);--_appearance-color-outline: var(--vvd-color-success-500)}.control:where(.success):where(:not(.disabled,:disabled)).appearance-ghost{--_appearance-color-text: notSet;--_appearance-color-fill: var(--vvd-color-success-50);--_appearance-color-outline: transparent}.control{--_connotation-color-primary: var(--vvd-select-accent-primary, var(--vvd-color-canvas-text));--_connotation-color-primary-text: var(--vvd-select-accent-primary-text, var(--vvd-color-canvas));--_connotation-color-primary-increment: var(--vvd-select-accent-primary-increment, var(--vvd-color-neutral-800));--_connotation-color-intermediate: var(--vvd-select-accent-intermediate, var(--vvd-color-neutral-500));--_connotation-color-faint: var(--vvd-select-accent-faint, var(--vvd-color-neutral-50));--_connotation-color-soft: var(--vvd-select-accent-soft, var(--vvd-color-neutral-100));--_connotation-color-firm: var(--vvd-select-accent-firm, var(--vvd-color-canvas-text));--_connotation-color-fierce: var(--vvd-select-accent-fierce, var(--vvd-color-neutral-700))}.control{border-radius:var(--_select-control-border-radius);block-size:var(--_select-block-size);padding-inline:var(--_select-padding-inline)}.control{--_select-icon-size: calc(1px*(40 + 4*clamp(-1, var(--vvd-size-density, 0), 2))/2) ;--_select-block-size: calc(1px*(40 + 4*clamp(-1, var(--vvd-size-density, 0), 2))) ;--_select-padding-inline: calc(1px*(40 + 4*clamp(-1, var(--vvd-size-density, 0), 2))*.4) ;display:flex;align-items:center;justify-content:space-between;background-color:var(--_appearance-color-fill);box-shadow:inset 0 0 0 1px var(--_appearance-color-outline);color:var(--_appearance-color-text);font:var(--vvd-typography-base);gap:8px;transition:box-shadow .2s,background-color .2s}.control.size-condensed{--_select-icon-size: calc(1px*(40 + 4*clamp(-1, var(--vvd-size-density, 0), 2))*.4) ;--_select-block-size: calc(1px*(32 + 4*clamp(-1, var(--vvd-size-density, 0), 2))) ;--_select-padding-inline: calc(1px*(24 + 4*clamp(-1, var(--vvd-size-density, 0), 2))/2) }.control.size-condensed:not(.shape-pill){--_select-control-border-radius: 4px}.control-wrapper{position:relative}.control:not(.disabled){cursor:pointer}.control.disabled{pointer-events:none}.control:not(.shape-pill){--_select-control-border-radius: 8px}.control.shape-pill{--_select-control-border-radius: 24px}:host(:focus-visible) .control{box-shadow:0 0 0 4px color-mix(in srgb,var(--vvd-color-cta-500),transparent 85%),inset 0 0 0 3px var(--focus-stroke-gap-color, currentColor);outline:1px solid var(--focus-stroke-color, var(--vvd-color-cta-500));outline-offset:calc(-1px - var(--focus-inset, 0px))}.listbox{display:flex;max-height:var(--select-height, 408px);flex-direction:column;padding:4px;gap:2px;overflow-y:auto}:host([multiple]:focus-visible) .listbox{box-shadow:0 0 0 4px color-mix(in srgb,var(--vvd-color-cta-500),transparent 85%),inset 0 0 0 3px var(--focus-stroke-gap-color, currentColor);outline:1px solid var(--focus-stroke-color, var(--vvd-color-cta-500));outline-offset:calc(-1px - var(--focus-inset, 0px));border-radius:8px}.selected-value{display:flex;overflow:hidden;flex-grow:1;align-items:center;column-gap:12px;white-space:nowrap}.selected-value .text{overflow:hidden;max-inline-size:100%;text-overflow:ellipsis}.control.shows-placeholder .selected-value .text{color:var(--vvd-color-neutral-600)}.selected-value slot[name=icon]{flex:0 0 var(--_select-icon-size);font-size:var(--_select-icon-size);line-height:1}.control.has-meta .selected-value{padding-inline-end:8px}.feedback-wrapper{display:contents}::part(popup-base){inline-size:max-content;min-inline-size:var(--_select-fixed-width, 100%)}:host([multiple]) ::part(popup-base){position:static}";
24
24
 
25
25
  class _Select extends listbox.Listbox {
26
26
  }
@@ -41,7 +41,7 @@ var __decorateClass = (decorators, target, key, kind) => {
41
41
  if (kind && result) __defProp(target, key, result);
42
42
  return result;
43
43
  };
44
- exports.Select = class Select extends FormAssociatedSelect {
44
+ exports.Select = class Select extends affix.AffixIconWithTrailing(FormAssociatedSelect) {
45
45
  constructor() {
46
46
  super(...arguments);
47
47
  this.activeIndex = -1;
@@ -752,7 +752,6 @@ exports.Select = __decorateClass([
752
752
  ], exports.Select);
753
753
  applyMixinsWithObservables.applyMixinsWithObservables(
754
754
  exports.Select,
755
- affix.AffixIconWithTrailing,
756
755
  formElements.FormElementHelperText,
757
756
  formElements.FormElementSuccessText
758
757
  );