@vonage/vivid 4.21.0 → 4.22.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/custom-elements.json +175 -116
- package/index.cjs +1 -1
- package/index.js +2 -2
- package/lib/audio-player/audio-player.d.ts +2 -1
- package/lib/calendar/calendar.d.ts +3 -1
- package/lib/enums.d.ts +0 -4
- package/lib/file-picker/file-picker.d.ts +3 -2
- package/lib/option/option.d.ts +2 -0
- package/lib/rich-text-editor/rich-text-editor.d.ts +4 -3
- package/lib/searchable-select/option-tag.d.ts +3 -1
- package/lib/tabs/definition.d.ts +1 -0
- package/lib/tabs/tabs.d.ts +6 -1
- package/lib/video-player/video-player.d.ts +3 -1
- package/package.json +1 -1
- package/shared/definition15.cjs +1 -1
- package/shared/definition15.js +1 -1
- package/shared/definition16.cjs +1 -1
- package/shared/definition16.js +1 -1
- package/shared/definition19.cjs +3 -0
- package/shared/definition19.js +3 -0
- package/shared/definition26.cjs +8 -0
- package/shared/definition26.js +8 -0
- package/shared/definition28.cjs +1 -1
- package/shared/definition28.js +1 -1
- package/shared/definition3.cjs +1 -1
- package/shared/definition3.js +1 -1
- package/shared/definition30.cjs +1 -0
- package/shared/definition30.js +1 -0
- package/shared/definition35.cjs +1 -1
- package/shared/definition35.js +1 -1
- package/shared/definition4.cjs +1 -1
- package/shared/definition4.js +1 -1
- package/shared/definition41.cjs +1 -1
- package/shared/definition41.js +1 -1
- package/shared/definition43.cjs +105 -52
- package/shared/definition43.js +105 -52
- package/shared/definition44.cjs +18 -4
- package/shared/definition44.js +18 -4
- package/shared/definition45.cjs +3 -3
- package/shared/definition45.js +3 -3
- package/shared/definition50.cjs +1 -1
- package/shared/definition50.js +1 -1
- package/shared/definition53.cjs +5 -0
- package/shared/definition53.js +5 -1
- package/shared/definition56.cjs +1 -1
- package/shared/definition56.js +1 -1
- package/shared/enums.cjs +0 -6
- package/shared/enums.js +1 -6
- package/shared/option.cjs +3 -0
- package/shared/option.js +3 -0
- package/shared/single-value-picker.cjs +3 -0
- package/shared/single-value-picker.js +3 -0
- package/shared/text-field.cjs +1 -1
- package/shared/text-field.js +1 -1
- package/shared/vivid-element.cjs +1 -1
- package/shared/vivid-element.js +1 -1
- package/styles/core/all.css +1 -1
- package/styles/core/theme.css +1 -1
- package/styles/core/typography.css +1 -1
- package/styles/tokens/theme-dark.css +4 -4
- package/styles/tokens/theme-light.css +4 -4
- package/styles/tokens/vivid-2-compat.css +1 -1
- package/vivid.api.json +161 -56
package/shared/definition43.cjs
CHANGED
|
@@ -2,11 +2,13 @@
|
|
|
2
2
|
|
|
3
3
|
const vividElement = require('./vivid-element.cjs');
|
|
4
4
|
const definition = require('./definition11.cjs');
|
|
5
|
-
const definition$3 = require('./definition30.cjs');
|
|
6
5
|
const definition$1 = require('./definition23.cjs');
|
|
7
6
|
const definition$2 = require('./definition60.cjs');
|
|
7
|
+
const definition$3 = require('./definition45.cjs');
|
|
8
|
+
const option = require('./option.cjs');
|
|
8
9
|
const classNames = require('./class-names.cjs');
|
|
9
10
|
const repeat = require('./repeat.cjs');
|
|
11
|
+
const definition$4 = require('./definition36.cjs');
|
|
10
12
|
|
|
11
13
|
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)}";
|
|
12
14
|
|
|
@@ -59,53 +61,99 @@ const TEXT_DECORATION_ITEMS = [
|
|
|
59
61
|
}
|
|
60
62
|
];
|
|
61
63
|
const MENU_BAR_ITEMS = {
|
|
62
|
-
textSize: function(context) {
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
64
|
+
/*textSize: function (context) {
|
|
65
|
+
const buttonTag = context.tagFor(Button);
|
|
66
|
+
const menuTag = context.tagFor(Menu);
|
|
67
|
+
const menuItemTag = context.tagFor(MenuItem);
|
|
68
|
+
const tooltipTag = context.tagFor(Tooltip);
|
|
69
|
+
return html`
|
|
70
|
+
<${menuTag}
|
|
71
|
+
trigger="auto"
|
|
72
|
+
id="text-block"
|
|
73
|
+
aria-label="Text Block"
|
|
74
|
+
placement="bottom-end"
|
|
75
|
+
>
|
|
76
|
+
<${tooltipTag} slot="anchor" text="Text Block Type" placement="top">
|
|
77
|
+
<${buttonTag}
|
|
78
|
+
slot="anchor"
|
|
79
|
+
aria-label="Open text block menu"
|
|
80
|
+
size="super-condensed"
|
|
81
|
+
appearance="ghost-light"
|
|
82
|
+
shape="pill"
|
|
83
|
+
icon="text-size-line"
|
|
84
|
+
></${buttonTag}>
|
|
85
|
+
</${tooltipTag}>
|
|
86
|
+
<${menuItemTag}
|
|
87
|
+
text="Title"
|
|
88
|
+
value="title"
|
|
89
|
+
internal-part
|
|
90
|
+
class="title"
|
|
91
|
+
connotation="cta"
|
|
92
|
+
@click="${(_, { parent }) =>
|
|
93
|
+
notifyMenuBarChange(parent, 'text-block-selected', 'title')}"
|
|
94
|
+
></${menuItemTag}>
|
|
95
|
+
<${menuItemTag}
|
|
96
|
+
text="Subtitle"
|
|
97
|
+
value="subtitle"
|
|
98
|
+
internal-part
|
|
99
|
+
class="subtitle"
|
|
100
|
+
connotation="cta"
|
|
101
|
+
@click="${(_, { parent }) =>
|
|
102
|
+
notifyMenuBarChange(parent, 'text-block-selected', 'subtitle')}"
|
|
103
|
+
></${menuItemTag}>
|
|
104
|
+
<${menuItemTag}
|
|
105
|
+
text="Body"
|
|
106
|
+
value="body"
|
|
107
|
+
internal-part
|
|
108
|
+
class="body"
|
|
109
|
+
connotation="cta"
|
|
110
|
+
@click="${(_, { parent }) =>
|
|
111
|
+
notifyMenuBarChange(parent, 'text-block-selected', 'body')}"
|
|
112
|
+
></${menuItemTag}>
|
|
113
|
+
</${menuTag}>
|
|
114
|
+
`;
|
|
115
|
+
},*/
|
|
116
|
+
textBlock: function(context) {
|
|
117
|
+
const selectTag = context.tagFor(definition$3.Select);
|
|
118
|
+
const optionTag = context.tagFor(option.ListboxOption);
|
|
66
119
|
const tooltipTag = context.tagFor(definition$2.Tooltip);
|
|
67
120
|
return vividElement.html`
|
|
68
|
-
|
|
121
|
+
<${tooltipTag} text="Text Block Type" placement="top">
|
|
122
|
+
<${selectTag}
|
|
123
|
+
slot="anchor"
|
|
69
124
|
trigger="auto"
|
|
70
|
-
id="text-
|
|
71
|
-
aria-label="Text
|
|
125
|
+
id="text-block"
|
|
126
|
+
aria-label="Text Block"
|
|
72
127
|
placement="bottom-end"
|
|
128
|
+
@change="${(_, { parent, event }) => notifyMenuBarChange(
|
|
129
|
+
parent,
|
|
130
|
+
"text-block-selected",
|
|
131
|
+
event.target.value
|
|
132
|
+
)}"
|
|
73
133
|
>
|
|
74
|
-
<${
|
|
75
|
-
<${buttonTag}
|
|
76
|
-
slot="anchor"
|
|
77
|
-
aria-label="Open text size menu"
|
|
78
|
-
size="super-condensed"
|
|
79
|
-
appearance="ghost-light"
|
|
80
|
-
shape="pill"
|
|
81
|
-
icon="text-size-line"
|
|
82
|
-
></${buttonTag}>
|
|
83
|
-
</${tooltipTag}>
|
|
84
|
-
<${menuItemTag}
|
|
134
|
+
<${optionTag}
|
|
85
135
|
text="Title"
|
|
86
136
|
value="title"
|
|
87
137
|
internal-part
|
|
88
138
|
class="title"
|
|
89
139
|
connotation="cta"
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
<${menuItemTag}
|
|
140
|
+
></${optionTag}>
|
|
141
|
+
<${optionTag}
|
|
93
142
|
text="Subtitle"
|
|
94
143
|
value="subtitle"
|
|
95
144
|
internal-part
|
|
96
145
|
class="subtitle"
|
|
97
146
|
connotation="cta"
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
<${menuItemTag}
|
|
147
|
+
></${optionTag}>
|
|
148
|
+
<${optionTag}
|
|
101
149
|
text="Body"
|
|
102
150
|
value="body"
|
|
103
151
|
internal-part
|
|
104
152
|
class="body"
|
|
105
153
|
connotation="cta"
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
154
|
+
></${optionTag}>
|
|
155
|
+
</${selectTag}>
|
|
156
|
+
</${tooltipTag}>
|
|
109
157
|
`;
|
|
110
158
|
},
|
|
111
159
|
textDecoration: function(context) {
|
|
@@ -142,7 +190,7 @@ const getClasses$1 = (menuBar) => classNames.classNames("control", [
|
|
|
142
190
|
"hide-menubar",
|
|
143
191
|
getValidMenuItems(menuBar).length === 0
|
|
144
192
|
]);
|
|
145
|
-
const validItems = ["
|
|
193
|
+
const validItems = ["textBlock", "textDecoration"];
|
|
146
194
|
function createMenuItem(item) {
|
|
147
195
|
return MENU_BAR_ITEMS[item];
|
|
148
196
|
}
|
|
@@ -167,8 +215,8 @@ const menuBarDefinition = vividElement.defineVividComponent(
|
|
|
167
215
|
MenuBarTemplate,
|
|
168
216
|
[
|
|
169
217
|
definition.buttonDefinition,
|
|
170
|
-
definition$3.
|
|
171
|
-
definition$
|
|
218
|
+
definition$3.selectDefinition,
|
|
219
|
+
definition$4.listboxOptionDefinition,
|
|
172
220
|
definition$1.dividerDefinition,
|
|
173
221
|
definition$2.tooltipDefinition
|
|
174
222
|
],
|
|
@@ -13801,7 +13849,7 @@ var __decorateClass = (decorators, target, key, kind) => {
|
|
|
13801
13849
|
if (result) __defProp(target, key, result);
|
|
13802
13850
|
return result;
|
|
13803
13851
|
};
|
|
13804
|
-
const
|
|
13852
|
+
const RichTextEditorTextBlocks = {
|
|
13805
13853
|
title: "h2",
|
|
13806
13854
|
subtitle: "h3",
|
|
13807
13855
|
body: "p"
|
|
@@ -13821,13 +13869,11 @@ class RichTextEditor extends vividElement.VividElement {
|
|
|
13821
13869
|
}
|
|
13822
13870
|
};
|
|
13823
13871
|
this.selectionEnd = null;
|
|
13824
|
-
this.#selectionChangedByUser = false;
|
|
13825
13872
|
this.#handleSelectionChange = () => {
|
|
13826
13873
|
if (!this.#editor.selection()) {
|
|
13827
13874
|
return;
|
|
13828
13875
|
}
|
|
13829
13876
|
const { start, end } = this.#editor.selection();
|
|
13830
|
-
this.#selectionChangedByUser = true;
|
|
13831
13877
|
this.selectionStart = start;
|
|
13832
13878
|
this.selectionEnd = end;
|
|
13833
13879
|
this.$emit("selection-changed");
|
|
@@ -13859,9 +13905,6 @@ class RichTextEditor extends vividElement.VividElement {
|
|
|
13859
13905
|
return this.shadowRoot.querySelector("#editor");
|
|
13860
13906
|
}
|
|
13861
13907
|
selectionStartChanged() {
|
|
13862
|
-
if (this.#selectionChangedByUser) {
|
|
13863
|
-
return;
|
|
13864
|
-
}
|
|
13865
13908
|
if (!this.selectionStart || this.selectionEnd && this.selectionStart > this.selectionEnd) {
|
|
13866
13909
|
return;
|
|
13867
13910
|
}
|
|
@@ -13869,16 +13912,11 @@ class RichTextEditor extends vividElement.VividElement {
|
|
|
13869
13912
|
}
|
|
13870
13913
|
#updateEditorSelection;
|
|
13871
13914
|
selectionEndChanged() {
|
|
13872
|
-
if (this.#selectionChangedByUser) {
|
|
13873
|
-
this.#selectionChangedByUser = false;
|
|
13874
|
-
return;
|
|
13875
|
-
}
|
|
13876
13915
|
if (this.selectionEnd && !this.selectionStart) {
|
|
13877
13916
|
this.selectionStart = 1;
|
|
13878
13917
|
}
|
|
13879
13918
|
this.#updateEditorSelection();
|
|
13880
13919
|
}
|
|
13881
|
-
#selectionChangedByUser;
|
|
13882
13920
|
#handleSelectionChange;
|
|
13883
13921
|
#handleChange;
|
|
13884
13922
|
#handleInput;
|
|
@@ -13895,11 +13933,11 @@ class RichTextEditor extends vividElement.VividElement {
|
|
|
13895
13933
|
this.#editor.addEventListener("input", this.#handleInput);
|
|
13896
13934
|
}
|
|
13897
13935
|
}
|
|
13898
|
-
|
|
13936
|
+
setTextBlock(blockType) {
|
|
13899
13937
|
try {
|
|
13900
|
-
this.#editor?.setSelectionTag(
|
|
13938
|
+
this.#editor?.setSelectionTag(RichTextEditorTextBlocks[blockType]);
|
|
13901
13939
|
} catch (e) {
|
|
13902
|
-
console.warn(`Invalid text
|
|
13940
|
+
console.warn(`Invalid text block: ${blockType}`);
|
|
13903
13941
|
}
|
|
13904
13942
|
}
|
|
13905
13943
|
setSelectionDecoration(decoration) {
|
|
@@ -13909,6 +13947,14 @@ class RichTextEditor extends vividElement.VividElement {
|
|
|
13909
13947
|
console.warn(`Invalid decoration: ${decoration}`);
|
|
13910
13948
|
}
|
|
13911
13949
|
}
|
|
13950
|
+
focus() {
|
|
13951
|
+
super.focus();
|
|
13952
|
+
setTimeout(() => {
|
|
13953
|
+
this.#editorWrapperElement.querySelector(
|
|
13954
|
+
'[contenteditable="true"]'
|
|
13955
|
+
).focus();
|
|
13956
|
+
}, 0);
|
|
13957
|
+
}
|
|
13912
13958
|
}
|
|
13913
13959
|
__decorateClass([
|
|
13914
13960
|
vividElement.attr({ converter: vividElement.nullableNumberConverter, attribute: "selection-start" })
|
|
@@ -13919,13 +13965,20 @@ __decorateClass([
|
|
|
13919
13965
|
|
|
13920
13966
|
const getClasses = (_) => classNames.classNames("control");
|
|
13921
13967
|
const VALID_MENU_ELEMEMENT_SUFFIX = "menubar";
|
|
13922
|
-
|
|
13923
|
-
|
|
13968
|
+
const menuParent = (target) => target.parentElement;
|
|
13969
|
+
function textBlockSelectedHandler(event) {
|
|
13970
|
+
menuParent(event.target).setTextBlock(
|
|
13971
|
+
event.detail
|
|
13972
|
+
);
|
|
13973
|
+
menuParent(event.target).focus();
|
|
13924
13974
|
}
|
|
13925
13975
|
function selectionDecorationSelectedHandler(event) {
|
|
13926
|
-
|
|
13976
|
+
menuParent(event.target).setSelectionDecoration(
|
|
13977
|
+
event.detail
|
|
13978
|
+
);
|
|
13979
|
+
menuParent(event.target).focus();
|
|
13927
13980
|
}
|
|
13928
|
-
function handleMenuBarSlotChange(
|
|
13981
|
+
function handleMenuBarSlotChange(_, { event }) {
|
|
13929
13982
|
const slot = event.target;
|
|
13930
13983
|
const assignedElements = slot.assignedElements({ flatten: true });
|
|
13931
13984
|
const menuBar = assignedElements.find(
|
|
@@ -13940,12 +13993,12 @@ function handleMenuBarSlotChange(richTextEditor, { event }) {
|
|
|
13940
13993
|
});
|
|
13941
13994
|
if (menuBar) {
|
|
13942
13995
|
menuBar.addEventListener(
|
|
13943
|
-
"text-
|
|
13944
|
-
|
|
13996
|
+
"text-block-selected",
|
|
13997
|
+
textBlockSelectedHandler
|
|
13945
13998
|
);
|
|
13946
13999
|
menuBar.addEventListener(
|
|
13947
14000
|
"text-decoration-selected",
|
|
13948
|
-
selectionDecorationSelectedHandler
|
|
14001
|
+
selectionDecorationSelectedHandler
|
|
13949
14002
|
);
|
|
13950
14003
|
}
|
|
13951
14004
|
}
|
package/shared/definition43.js
CHANGED
|
@@ -1,10 +1,12 @@
|
|
|
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
|
-
import { e as Menu, M as MenuItem, c as menuDefinition, m as menuItemDefinition } from './definition30.js';
|
|
4
3
|
import { D as Divider, d as dividerDefinition } from './definition23.js';
|
|
5
4
|
import { T as Tooltip, t as tooltipDefinition } from './definition60.js';
|
|
5
|
+
import { S as Select, s as selectDefinition } from './definition45.js';
|
|
6
|
+
import { L as ListboxOption } from './option.js';
|
|
6
7
|
import { c as classNames } from './class-names.js';
|
|
7
8
|
import { r as repeat } from './repeat.js';
|
|
9
|
+
import { l as listboxOptionDefinition } from './definition36.js';
|
|
8
10
|
|
|
9
11
|
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)}";
|
|
10
12
|
|
|
@@ -57,53 +59,99 @@ const TEXT_DECORATION_ITEMS = [
|
|
|
57
59
|
}
|
|
58
60
|
];
|
|
59
61
|
const MENU_BAR_ITEMS = {
|
|
60
|
-
textSize: function(context) {
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
62
|
+
/*textSize: function (context) {
|
|
63
|
+
const buttonTag = context.tagFor(Button);
|
|
64
|
+
const menuTag = context.tagFor(Menu);
|
|
65
|
+
const menuItemTag = context.tagFor(MenuItem);
|
|
66
|
+
const tooltipTag = context.tagFor(Tooltip);
|
|
67
|
+
return html`
|
|
68
|
+
<${menuTag}
|
|
69
|
+
trigger="auto"
|
|
70
|
+
id="text-block"
|
|
71
|
+
aria-label="Text Block"
|
|
72
|
+
placement="bottom-end"
|
|
73
|
+
>
|
|
74
|
+
<${tooltipTag} slot="anchor" text="Text Block Type" placement="top">
|
|
75
|
+
<${buttonTag}
|
|
76
|
+
slot="anchor"
|
|
77
|
+
aria-label="Open text block menu"
|
|
78
|
+
size="super-condensed"
|
|
79
|
+
appearance="ghost-light"
|
|
80
|
+
shape="pill"
|
|
81
|
+
icon="text-size-line"
|
|
82
|
+
></${buttonTag}>
|
|
83
|
+
</${tooltipTag}>
|
|
84
|
+
<${menuItemTag}
|
|
85
|
+
text="Title"
|
|
86
|
+
value="title"
|
|
87
|
+
internal-part
|
|
88
|
+
class="title"
|
|
89
|
+
connotation="cta"
|
|
90
|
+
@click="${(_, { parent }) =>
|
|
91
|
+
notifyMenuBarChange(parent, 'text-block-selected', 'title')}"
|
|
92
|
+
></${menuItemTag}>
|
|
93
|
+
<${menuItemTag}
|
|
94
|
+
text="Subtitle"
|
|
95
|
+
value="subtitle"
|
|
96
|
+
internal-part
|
|
97
|
+
class="subtitle"
|
|
98
|
+
connotation="cta"
|
|
99
|
+
@click="${(_, { parent }) =>
|
|
100
|
+
notifyMenuBarChange(parent, 'text-block-selected', 'subtitle')}"
|
|
101
|
+
></${menuItemTag}>
|
|
102
|
+
<${menuItemTag}
|
|
103
|
+
text="Body"
|
|
104
|
+
value="body"
|
|
105
|
+
internal-part
|
|
106
|
+
class="body"
|
|
107
|
+
connotation="cta"
|
|
108
|
+
@click="${(_, { parent }) =>
|
|
109
|
+
notifyMenuBarChange(parent, 'text-block-selected', 'body')}"
|
|
110
|
+
></${menuItemTag}>
|
|
111
|
+
</${menuTag}>
|
|
112
|
+
`;
|
|
113
|
+
},*/
|
|
114
|
+
textBlock: function(context) {
|
|
115
|
+
const selectTag = context.tagFor(Select);
|
|
116
|
+
const optionTag = context.tagFor(ListboxOption);
|
|
64
117
|
const tooltipTag = context.tagFor(Tooltip);
|
|
65
118
|
return html`
|
|
66
|
-
|
|
119
|
+
<${tooltipTag} text="Text Block Type" placement="top">
|
|
120
|
+
<${selectTag}
|
|
121
|
+
slot="anchor"
|
|
67
122
|
trigger="auto"
|
|
68
|
-
id="text-
|
|
69
|
-
aria-label="Text
|
|
123
|
+
id="text-block"
|
|
124
|
+
aria-label="Text Block"
|
|
70
125
|
placement="bottom-end"
|
|
126
|
+
@change="${(_, { parent, event }) => notifyMenuBarChange(
|
|
127
|
+
parent,
|
|
128
|
+
"text-block-selected",
|
|
129
|
+
event.target.value
|
|
130
|
+
)}"
|
|
71
131
|
>
|
|
72
|
-
<${
|
|
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}>
|
|
82
|
-
<${menuItemTag}
|
|
132
|
+
<${optionTag}
|
|
83
133
|
text="Title"
|
|
84
134
|
value="title"
|
|
85
135
|
internal-part
|
|
86
136
|
class="title"
|
|
87
137
|
connotation="cta"
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
<${menuItemTag}
|
|
138
|
+
></${optionTag}>
|
|
139
|
+
<${optionTag}
|
|
91
140
|
text="Subtitle"
|
|
92
141
|
value="subtitle"
|
|
93
142
|
internal-part
|
|
94
143
|
class="subtitle"
|
|
95
144
|
connotation="cta"
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
<${menuItemTag}
|
|
145
|
+
></${optionTag}>
|
|
146
|
+
<${optionTag}
|
|
99
147
|
text="Body"
|
|
100
148
|
value="body"
|
|
101
149
|
internal-part
|
|
102
150
|
class="body"
|
|
103
151
|
connotation="cta"
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
152
|
+
></${optionTag}>
|
|
153
|
+
</${selectTag}>
|
|
154
|
+
</${tooltipTag}>
|
|
107
155
|
`;
|
|
108
156
|
},
|
|
109
157
|
textDecoration: function(context) {
|
|
@@ -140,7 +188,7 @@ const getClasses$1 = (menuBar) => classNames("control", [
|
|
|
140
188
|
"hide-menubar",
|
|
141
189
|
getValidMenuItems(menuBar).length === 0
|
|
142
190
|
]);
|
|
143
|
-
const validItems = ["
|
|
191
|
+
const validItems = ["textBlock", "textDecoration"];
|
|
144
192
|
function createMenuItem(item) {
|
|
145
193
|
return MENU_BAR_ITEMS[item];
|
|
146
194
|
}
|
|
@@ -165,8 +213,8 @@ const menuBarDefinition = defineVividComponent(
|
|
|
165
213
|
MenuBarTemplate,
|
|
166
214
|
[
|
|
167
215
|
buttonDefinition,
|
|
168
|
-
|
|
169
|
-
|
|
216
|
+
selectDefinition,
|
|
217
|
+
listboxOptionDefinition,
|
|
170
218
|
dividerDefinition,
|
|
171
219
|
tooltipDefinition
|
|
172
220
|
],
|
|
@@ -13799,7 +13847,7 @@ var __decorateClass = (decorators, target, key, kind) => {
|
|
|
13799
13847
|
if (result) __defProp(target, key, result);
|
|
13800
13848
|
return result;
|
|
13801
13849
|
};
|
|
13802
|
-
const
|
|
13850
|
+
const RichTextEditorTextBlocks = {
|
|
13803
13851
|
title: "h2",
|
|
13804
13852
|
subtitle: "h3",
|
|
13805
13853
|
body: "p"
|
|
@@ -13819,13 +13867,11 @@ class RichTextEditor extends VividElement {
|
|
|
13819
13867
|
}
|
|
13820
13868
|
};
|
|
13821
13869
|
this.selectionEnd = null;
|
|
13822
|
-
this.#selectionChangedByUser = false;
|
|
13823
13870
|
this.#handleSelectionChange = () => {
|
|
13824
13871
|
if (!this.#editor.selection()) {
|
|
13825
13872
|
return;
|
|
13826
13873
|
}
|
|
13827
13874
|
const { start, end } = this.#editor.selection();
|
|
13828
|
-
this.#selectionChangedByUser = true;
|
|
13829
13875
|
this.selectionStart = start;
|
|
13830
13876
|
this.selectionEnd = end;
|
|
13831
13877
|
this.$emit("selection-changed");
|
|
@@ -13857,9 +13903,6 @@ class RichTextEditor extends VividElement {
|
|
|
13857
13903
|
return this.shadowRoot.querySelector("#editor");
|
|
13858
13904
|
}
|
|
13859
13905
|
selectionStartChanged() {
|
|
13860
|
-
if (this.#selectionChangedByUser) {
|
|
13861
|
-
return;
|
|
13862
|
-
}
|
|
13863
13906
|
if (!this.selectionStart || this.selectionEnd && this.selectionStart > this.selectionEnd) {
|
|
13864
13907
|
return;
|
|
13865
13908
|
}
|
|
@@ -13867,16 +13910,11 @@ class RichTextEditor extends VividElement {
|
|
|
13867
13910
|
}
|
|
13868
13911
|
#updateEditorSelection;
|
|
13869
13912
|
selectionEndChanged() {
|
|
13870
|
-
if (this.#selectionChangedByUser) {
|
|
13871
|
-
this.#selectionChangedByUser = false;
|
|
13872
|
-
return;
|
|
13873
|
-
}
|
|
13874
13913
|
if (this.selectionEnd && !this.selectionStart) {
|
|
13875
13914
|
this.selectionStart = 1;
|
|
13876
13915
|
}
|
|
13877
13916
|
this.#updateEditorSelection();
|
|
13878
13917
|
}
|
|
13879
|
-
#selectionChangedByUser;
|
|
13880
13918
|
#handleSelectionChange;
|
|
13881
13919
|
#handleChange;
|
|
13882
13920
|
#handleInput;
|
|
@@ -13893,11 +13931,11 @@ class RichTextEditor extends VividElement {
|
|
|
13893
13931
|
this.#editor.addEventListener("input", this.#handleInput);
|
|
13894
13932
|
}
|
|
13895
13933
|
}
|
|
13896
|
-
|
|
13934
|
+
setTextBlock(blockType) {
|
|
13897
13935
|
try {
|
|
13898
|
-
this.#editor?.setSelectionTag(
|
|
13936
|
+
this.#editor?.setSelectionTag(RichTextEditorTextBlocks[blockType]);
|
|
13899
13937
|
} catch (e) {
|
|
13900
|
-
console.warn(`Invalid text
|
|
13938
|
+
console.warn(`Invalid text block: ${blockType}`);
|
|
13901
13939
|
}
|
|
13902
13940
|
}
|
|
13903
13941
|
setSelectionDecoration(decoration) {
|
|
@@ -13907,6 +13945,14 @@ class RichTextEditor extends VividElement {
|
|
|
13907
13945
|
console.warn(`Invalid decoration: ${decoration}`);
|
|
13908
13946
|
}
|
|
13909
13947
|
}
|
|
13948
|
+
focus() {
|
|
13949
|
+
super.focus();
|
|
13950
|
+
setTimeout(() => {
|
|
13951
|
+
this.#editorWrapperElement.querySelector(
|
|
13952
|
+
'[contenteditable="true"]'
|
|
13953
|
+
).focus();
|
|
13954
|
+
}, 0);
|
|
13955
|
+
}
|
|
13910
13956
|
}
|
|
13911
13957
|
__decorateClass([
|
|
13912
13958
|
attr({ converter: nullableNumberConverter, attribute: "selection-start" })
|
|
@@ -13917,13 +13963,20 @@ __decorateClass([
|
|
|
13917
13963
|
|
|
13918
13964
|
const getClasses = (_) => classNames("control");
|
|
13919
13965
|
const VALID_MENU_ELEMEMENT_SUFFIX = "menubar";
|
|
13920
|
-
|
|
13921
|
-
|
|
13966
|
+
const menuParent = (target) => target.parentElement;
|
|
13967
|
+
function textBlockSelectedHandler(event) {
|
|
13968
|
+
menuParent(event.target).setTextBlock(
|
|
13969
|
+
event.detail
|
|
13970
|
+
);
|
|
13971
|
+
menuParent(event.target).focus();
|
|
13922
13972
|
}
|
|
13923
13973
|
function selectionDecorationSelectedHandler(event) {
|
|
13924
|
-
|
|
13974
|
+
menuParent(event.target).setSelectionDecoration(
|
|
13975
|
+
event.detail
|
|
13976
|
+
);
|
|
13977
|
+
menuParent(event.target).focus();
|
|
13925
13978
|
}
|
|
13926
|
-
function handleMenuBarSlotChange(
|
|
13979
|
+
function handleMenuBarSlotChange(_, { event }) {
|
|
13927
13980
|
const slot = event.target;
|
|
13928
13981
|
const assignedElements = slot.assignedElements({ flatten: true });
|
|
13929
13982
|
const menuBar = assignedElements.find(
|
|
@@ -13938,12 +13991,12 @@ function handleMenuBarSlotChange(richTextEditor, { event }) {
|
|
|
13938
13991
|
});
|
|
13939
13992
|
if (menuBar) {
|
|
13940
13993
|
menuBar.addEventListener(
|
|
13941
|
-
"text-
|
|
13942
|
-
|
|
13994
|
+
"text-block-selected",
|
|
13995
|
+
textBlockSelectedHandler
|
|
13943
13996
|
);
|
|
13944
13997
|
menuBar.addEventListener(
|
|
13945
13998
|
"text-decoration-selected",
|
|
13946
|
-
selectionDecorationSelectedHandler
|
|
13999
|
+
selectionDecorationSelectedHandler
|
|
13947
14000
|
);
|
|
13948
14001
|
}
|
|
13949
14002
|
}
|
package/shared/definition44.cjs
CHANGED
|
@@ -18,9 +18,9 @@ const slotted = require('./slotted.cjs');
|
|
|
18
18
|
const classNames = require('./class-names.cjs');
|
|
19
19
|
const repeat = require('./repeat.cjs');
|
|
20
20
|
|
|
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(--
|
|
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(--vvd-color-neutral-500)}.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(--vvd-color-neutral-700)}.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);font:var(--vvd-typography-base);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}";
|
|
22
22
|
|
|
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}";
|
|
23
|
+
const optionTagStyles = ".base.connotation-cta{--_connotation-color-contrast: var(--vvd-option-tag-cta-contrast, var(--vvd-color-cta-800))}.base:not(.connotation-cta){--_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}";
|
|
24
24
|
|
|
25
25
|
class _SearchableSelect extends vividElement.VividElement {
|
|
26
26
|
}
|
|
@@ -353,6 +353,15 @@ exports.SearchableSelect = class SearchableSelect extends affix.AffixIconWithTra
|
|
|
353
353
|
);
|
|
354
354
|
return option.label;
|
|
355
355
|
}
|
|
356
|
+
/**
|
|
357
|
+
* @internal
|
|
358
|
+
*/
|
|
359
|
+
_tagConnotationForValue(value) {
|
|
360
|
+
const option = this._slottedOptions.find(
|
|
361
|
+
(option2) => option2.value === value
|
|
362
|
+
);
|
|
363
|
+
return option.tagConnotation;
|
|
364
|
+
}
|
|
356
365
|
/**
|
|
357
366
|
* @internal
|
|
358
367
|
*/
|
|
@@ -879,6 +888,9 @@ class OptionTag extends localized.Localized(vividElement.VividElement) {
|
|
|
879
888
|
__decorateClass([
|
|
880
889
|
vividElement.attr
|
|
881
890
|
], OptionTag.prototype, "shape");
|
|
891
|
+
__decorateClass([
|
|
892
|
+
vividElement.observable
|
|
893
|
+
], OptionTag.prototype, "connotation");
|
|
882
894
|
__decorateClass([
|
|
883
895
|
vividElement.attr
|
|
884
896
|
], OptionTag.prototype, "label");
|
|
@@ -915,6 +927,7 @@ const tagTemplateFactory = (context, getComponent) => {
|
|
|
915
927
|
removable
|
|
916
928
|
:label="${(x, c) => getComponent(c)._tagLabelForValue(x)}"
|
|
917
929
|
:shape="${(_, c) => getComponent(c).shape}"
|
|
930
|
+
:connotation="${(x, c) => getComponent(c)._tagConnotationForValue(x)}"
|
|
918
931
|
?disabled="${(x, c) => getComponent(c)._isTagDisabled(x)}"
|
|
919
932
|
@remove="${(x, c) => getComponent(c)._onTagRemoved(x)}"
|
|
920
933
|
@keydown="${(_, c) => getComponent(c)._onTagKeydown(c.event)}"
|
|
@@ -1117,11 +1130,12 @@ const SearchableSelectTemplate = (context) => {
|
|
|
1117
1130
|
`;
|
|
1118
1131
|
};
|
|
1119
1132
|
|
|
1120
|
-
const getClasses = ({ shape, disabled, removable }) => classNames.classNames(
|
|
1133
|
+
const getClasses = ({ shape, connotation, disabled, removable }) => classNames.classNames(
|
|
1121
1134
|
"base",
|
|
1122
1135
|
["disabled", disabled],
|
|
1123
1136
|
["removable", removable],
|
|
1124
|
-
[`shape-${shape}`, Boolean(shape)]
|
|
1137
|
+
[`shape-${shape}`, Boolean(shape)],
|
|
1138
|
+
[`connotation-${connotation}`, Boolean(connotation)]
|
|
1125
1139
|
);
|
|
1126
1140
|
function renderRemoveButton(iconTag) {
|
|
1127
1141
|
return vividElement.html`
|