@vscode-elements/elements 1.14.1-pre.2 → 1.15.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 +548 -342
- package/dist/bundled.js +90 -74
- package/dist/includes/VscElement.js +1 -1
- package/dist/includes/VscElement.js.map +1 -1
- package/dist/includes/vscode-select/helpers.d.ts +2 -0
- package/dist/includes/vscode-select/helpers.d.ts.map +1 -1
- package/dist/includes/vscode-select/helpers.js +26 -0
- package/dist/includes/vscode-select/helpers.js.map +1 -1
- package/dist/includes/vscode-select/styles.d.ts.map +1 -1
- package/dist/includes/vscode-select/styles.js +24 -11
- package/dist/includes/vscode-select/styles.js.map +1 -1
- package/dist/includes/vscode-select/vscode-select-base.d.ts +8 -1
- package/dist/includes/vscode-select/vscode-select-base.d.ts.map +1 -1
- package/dist/includes/vscode-select/vscode-select-base.js +64 -9
- package/dist/includes/vscode-select/vscode-select-base.js.map +1 -1
- package/dist/vscode-multi-select/vscode-multi-select.d.ts +1 -1
- package/dist/vscode-multi-select/vscode-multi-select.d.ts.map +1 -1
- package/dist/vscode-multi-select/vscode-multi-select.js.map +1 -1
- package/dist/vscode-single-select/vscode-single-select.d.ts +5 -1
- package/dist/vscode-single-select/vscode-single-select.d.ts.map +1 -1
- package/dist/vscode-single-select/vscode-single-select.js +38 -10
- package/dist/vscode-single-select/vscode-single-select.js.map +1 -1
- package/dist/vscode-toolbar-container/vscode-toolbar-container.d.ts +1 -1
- package/dist/vscode-toolbar-container/vscode-toolbar-container.js +1 -1
- package/dist/vscode-toolbar-container/vscode-toolbar-container.js.map +1 -1
- package/package.json +14 -12
- package/vscode.css-custom-data.json +7 -7
- package/vscode.html-custom-data.json +14 -14
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VscElement.js","sourceRoot":"","sources":["../../src/includes/VscElement.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAC,MAAM,KAAK,CAAC;AAE/B,MAAM,OAAO,GAAG,
|
|
1
|
+
{"version":3,"file":"VscElement.js","sourceRoot":"","sources":["../../src/includes/VscElement.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAC,MAAM,KAAK,CAAC;AAE/B,MAAM,OAAO,GAAG,QAAQ,CAAC;AACzB,MAAM,UAAU,GAAG,2CAA2C,CAAC;AAE/D,MAAM,OAAO,UAAW,SAAQ,UAAU;IACxC,8BAA8B;IAC9B,IAAI,OAAO;QACT,OAAO,OAAO,CAAC;IACjB,CAAC;CACF;AASD;;GAEG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,OAAe,EAAE,EAAE;IAC/C,OAAO,CAAC,aAAiC,EAAE,EAAE;QAC3C,MAAM,kBAAkB,GAAG,cAAc,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAEvD,IAAI,CAAC,kBAAkB,EAAE,CAAC;YACxB,cAAc,CAAC,MAAM,CAAC,OAAO,EAAE,aAAyC,CAAC,CAAC;YAC1E,OAAO;QACT,CAAC;QAED,IAAI,UAAU,IAAI,MAAM,EAAE,CAAC;YACzB,OAAO;QACT,CAAC;QAED,MAAM,EAAE,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;QAC3C,MAAM,cAAc,GAAI,EAAiB,EAAE,OAAO,CAAC;QACnD,IAAI,OAAO,GAAG,EAAE,CAAC;QAEjB,IAAI,CAAC,cAAc,EAAE,CAAC;YACpB,OAAO,CAAC,IAAI,CACV,OAAO,EACP,mEAAmE,CACpE,CAAC;YACF,OAAO;gBACL,mEAAmE,CAAC;QACxE,CAAC;aAAM,IAAI,cAAc,KAAK,OAAO,EAAE,CAAC;YACtC,OAAO;gBACL,mEAAmE,CAAC;YACtE,OAAO,IAAI,oBAAoB,OAAO,8BAA8B,cAAc,IAAI,CAAC;QACzF,CAAC;aAAM,CAAC;YACN,OAAO;gBACL,gEAAgE,CAAC;QACrE,CAAC;QAED,OAAO,CAAC,IAAI,CACV,qBAAqB,OAAO,IAAI,OAAO,0CAA0C,UAAU,UAAU,CACtG,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC,CAAC","sourcesContent":["import {LitElement} from 'lit';\n\nconst VERSION = '1.15.0';\nconst CONFIG_KEY = '__vscodeElements_disableRegistryWarning__';\n\nexport class VscElement extends LitElement {\n /** VSCode Elements version */\n get version(): string {\n return VERSION;\n }\n}\n\ntype CustomElementClass = Omit<typeof HTMLElement, 'new'>;\n\nexport type Constructor<T> = {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n new (...args: any[]): T;\n};\n\n/**\n * Own implementation of Lit's customElement decorator.\n */\nexport const customElement = (tagName: string) => {\n return (classOrTarget: CustomElementClass) => {\n const customElementClass = customElements.get(tagName);\n\n if (!customElementClass) {\n customElements.define(tagName, classOrTarget as CustomElementConstructor);\n return;\n }\n\n if (CONFIG_KEY in window) {\n return;\n }\n\n const el = document.createElement(tagName);\n const anotherVersion = (el as VscElement)?.version;\n let message = '';\n\n if (!anotherVersion) {\n console.warn(\n tagName,\n 'is already registered by an unknown custom element handler class.'\n );\n message +=\n 'is already registered by an unknown custom element handler class.';\n } else if (anotherVersion !== VERSION) {\n message +=\n 'is already registered by a different version of VSCode Elements. ';\n message += `This version is \"${VERSION}\", while the other one is \"${anotherVersion}\".`;\n } else {\n message +=\n 'is already registered by the same version of VSCode Elements. ';\n }\n\n console.warn(\n `[VSCode Elements] ${tagName} ${message}\\nTo suppress this warning, set window.${CONFIG_KEY} to true`\n );\n };\n};\n"]}
|
|
@@ -10,4 +10,6 @@ export declare const containsSearch: (subject: string, pattern: string) => Searc
|
|
|
10
10
|
export declare const fuzzySearch: (subject: string, pattern: string) => SearchResult;
|
|
11
11
|
export declare const filterOptionsByPattern: (list: InternalOption[], pattern: string, method: SearchMethod) => InternalOption[];
|
|
12
12
|
export declare const highlightRanges: (text: string, ranges: [number, number][]) => TemplateResult | TemplateResult[];
|
|
13
|
+
export declare function findNextSelectableOptionIndex(options: InternalOption[], fromIndex: number): number;
|
|
14
|
+
export declare function findPrevSelectableOptionIndex(options: InternalOption[], fromIndex: number): number;
|
|
13
15
|
//# sourceMappingURL=helpers.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../src/includes/vscode-select/helpers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAO,cAAc,EAAC,MAAM,KAAK,CAAC;AACzC,OAAO,EAAC,cAAc,EAAE,YAAY,EAAC,MAAM,YAAY,CAAC;AAExD,MAAM,MAAM,YAAY,GAAG;IACzB,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC;CAC5B,CAAC;AAEF,eAAO,MAAM,uBAAuB,GAClC,SAAS,MAAM,EACf,SAAS,MAAM,KACd,YAgCF,CAAC;AAEF,eAAO,MAAM,gBAAgB,GAC3B,SAAS,MAAM,EACf,SAAS,MAAM,KACd,YAaF,CAAC;AAEF,eAAO,MAAM,cAAc,GACzB,SAAS,MAAM,EACf,SAAS,MAAM,KACd,YAaF,CAAC;AAEF,eAAO,MAAM,WAAW,GAAI,SAAS,MAAM,EAAE,SAAS,MAAM,KAAG,YA4B9D,CAAC;AAEF,eAAO,MAAM,sBAAsB,GACjC,MAAM,cAAc,EAAE,EACtB,SAAS,MAAM,EACf,QAAQ,YAAY,KACnB,cAAc,EA0BhB,CAAC;AAwBF,eAAO,MAAM,eAAe,GAC1B,MAAM,MAAM,EACZ,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,KACzB,cAAc,GAAG,cAAc,EA8BjC,CAAC"}
|
|
1
|
+
{"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../src/includes/vscode-select/helpers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAO,cAAc,EAAC,MAAM,KAAK,CAAC;AACzC,OAAO,EAAC,cAAc,EAAE,YAAY,EAAC,MAAM,YAAY,CAAC;AAExD,MAAM,MAAM,YAAY,GAAG;IACzB,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC;CAC5B,CAAC;AAEF,eAAO,MAAM,uBAAuB,GAClC,SAAS,MAAM,EACf,SAAS,MAAM,KACd,YAgCF,CAAC;AAEF,eAAO,MAAM,gBAAgB,GAC3B,SAAS,MAAM,EACf,SAAS,MAAM,KACd,YAaF,CAAC;AAEF,eAAO,MAAM,cAAc,GACzB,SAAS,MAAM,EACf,SAAS,MAAM,KACd,YAaF,CAAC;AAEF,eAAO,MAAM,WAAW,GAAI,SAAS,MAAM,EAAE,SAAS,MAAM,KAAG,YA4B9D,CAAC;AAEF,eAAO,MAAM,sBAAsB,GACjC,MAAM,cAAc,EAAE,EACtB,SAAS,MAAM,EACf,QAAQ,YAAY,KACnB,cAAc,EA0BhB,CAAC;AAwBF,eAAO,MAAM,eAAe,GAC1B,MAAM,MAAM,EACZ,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,KACzB,cAAc,GAAG,cAAc,EA8BjC,CAAC;AAEF,wBAAgB,6BAA6B,CAC3C,OAAO,EAAE,cAAc,EAAE,EACzB,SAAS,EAAE,MAAM,UAgBlB;AAED,wBAAgB,6BAA6B,CAC3C,OAAO,EAAE,cAAc,EAAE,EACzB,SAAS,EAAE,MAAM,UAgBlB"}
|
|
@@ -137,4 +137,30 @@ export const highlightRanges = (text, ranges) => {
|
|
|
137
137
|
});
|
|
138
138
|
return res;
|
|
139
139
|
};
|
|
140
|
+
export function findNextSelectableOptionIndex(options, fromIndex) {
|
|
141
|
+
let result = 0;
|
|
142
|
+
if (fromIndex < 0 || !options[fromIndex] || !options[fromIndex + 1]) {
|
|
143
|
+
return result;
|
|
144
|
+
}
|
|
145
|
+
for (let i = fromIndex + 1; i < options.length; i++) {
|
|
146
|
+
if (!options[i].disabled) {
|
|
147
|
+
result = i;
|
|
148
|
+
break;
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
return result;
|
|
152
|
+
}
|
|
153
|
+
export function findPrevSelectableOptionIndex(options, fromIndex) {
|
|
154
|
+
let result = 0;
|
|
155
|
+
if (fromIndex < 0 || !options[fromIndex] || !options[fromIndex - 1]) {
|
|
156
|
+
return result;
|
|
157
|
+
}
|
|
158
|
+
for (let i = fromIndex - 1; i >= 0; i--) {
|
|
159
|
+
if (!options[i].disabled) {
|
|
160
|
+
result = i;
|
|
161
|
+
break;
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
return result;
|
|
165
|
+
}
|
|
140
166
|
//# sourceMappingURL=helpers.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../../src/includes/vscode-select/helpers.ts"],"names":[],"mappings":"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","sourcesContent":["import {html, TemplateResult} from 'lit';\nimport {InternalOption, SearchMethod} from './types.js';\n\nexport type SearchResult = {\n match: boolean;\n ranges: [number, number][];\n};\n\nexport const startsWithPerTermSearch = (\n subject: string,\n pattern: string\n): SearchResult => {\n const result: SearchResult = {\n match: false,\n ranges: [],\n };\n const lcSubject = subject.toLowerCase();\n const lcPattern = pattern.toLowerCase();\n const terms = lcSubject.split(' ');\n let offset = 0;\n\n terms.forEach((t, i) => {\n if (i > 0) {\n offset += terms[i - 1].length + 1;\n }\n\n if (result.match) {\n return;\n }\n\n const foundIndex = t.indexOf(lcPattern);\n const patternLength = lcPattern.length;\n\n if (foundIndex === 0) {\n result.match = true;\n result.ranges.push([\n offset + foundIndex,\n Math.min(offset + foundIndex + patternLength, subject.length),\n ]);\n }\n });\n\n return result;\n};\n\nexport const startsWithSearch = (\n subject: string,\n pattern: string\n): SearchResult => {\n const result: SearchResult = {\n match: false,\n ranges: [],\n };\n const foundIndex = subject.toLowerCase().indexOf(pattern.toLowerCase());\n\n if (foundIndex === 0) {\n result.match = true;\n result.ranges = [[0, pattern.length]];\n }\n\n return result;\n};\n\nexport const containsSearch = (\n subject: string,\n pattern: string\n): SearchResult => {\n const result: SearchResult = {\n match: false,\n ranges: [],\n };\n const foundIndex = subject.toLowerCase().indexOf(pattern.toLowerCase());\n\n if (foundIndex > -1) {\n result.match = true;\n result.ranges = [[foundIndex, foundIndex + pattern.length]];\n }\n\n return result;\n};\n\nexport const fuzzySearch = (subject: string, pattern: string): SearchResult => {\n const result: SearchResult = {\n match: false,\n ranges: [],\n };\n let fromIndex = 0;\n let foundIndex = 0;\n const iMax = pattern.length - 1;\n const lcSubject = subject.toLowerCase();\n const lcPattern = pattern.toLowerCase();\n\n for (let i = 0; i <= iMax; i++) {\n foundIndex = lcSubject.indexOf(lcPattern[i], fromIndex);\n\n if (foundIndex === -1) {\n return {\n match: false,\n ranges: [],\n };\n }\n\n result.match = true;\n result.ranges.push([foundIndex, foundIndex + 1]);\n\n fromIndex = foundIndex + 1;\n }\n\n return result;\n};\n\nexport const filterOptionsByPattern = (\n list: InternalOption[],\n pattern: string,\n method: SearchMethod\n): InternalOption[] => {\n const filtered: InternalOption[] = [];\n\n list.forEach((op) => {\n let result: SearchResult;\n\n switch (method) {\n case 'startsWithPerTerm':\n result = startsWithPerTermSearch(op.label, pattern);\n break;\n case 'startsWith':\n result = startsWithSearch(op.label, pattern);\n break;\n case 'contains':\n result = containsSearch(op.label, pattern);\n break;\n default:\n result = fuzzySearch(op.label, pattern);\n }\n\n if (result.match) {\n filtered.push({...op, ranges: result.ranges});\n }\n });\n\n return filtered;\n};\n\nconst preventSpaces = (text: string): TemplateResult[] => {\n const res: TemplateResult[] = [];\n\n if (text === ' ') {\n res.push(html` `);\n\n return res;\n }\n\n if (text.indexOf(' ') === 0) {\n res.push(html` `);\n }\n\n res.push(html`${text.trimStart().trimEnd()}`);\n\n if (text.lastIndexOf(' ') === text.length - 1) {\n res.push(html` `);\n }\n\n return res;\n};\n\nexport const highlightRanges = (\n text: string,\n ranges: [number, number][]\n): TemplateResult | TemplateResult[] => {\n const res: TemplateResult[] = [];\n const rl = ranges.length;\n\n if (rl < 1) {\n return html`${text}`;\n }\n\n ranges.forEach((r, i) => {\n const match = text.substring(r[0], r[1]);\n\n if (i === 0 && r[0] !== 0) {\n // text before the first range\n res.push(...preventSpaces(text.substring(0, ranges[0][0])));\n }\n\n if (i > 0 && i < rl && r[0] - ranges[i - 1][1] !== 0) {\n // text before the current range\n res.push(...preventSpaces(text.substring(ranges[i - 1][1], r[0])));\n }\n\n res.push(html`<b>${preventSpaces(match)}</b>`);\n\n if (i === rl - 1 && r[1] < text.length) {\n // text after the last range\n res.push(...preventSpaces(text.substring(r[1], text.length)));\n }\n });\n\n return res;\n};\n"]}
|
|
1
|
+
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../../src/includes/vscode-select/helpers.ts"],"names":[],"mappings":"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","sourcesContent":["import {html, TemplateResult} from 'lit';\nimport {InternalOption, SearchMethod} from './types.js';\n\nexport type SearchResult = {\n match: boolean;\n ranges: [number, number][];\n};\n\nexport const startsWithPerTermSearch = (\n subject: string,\n pattern: string\n): SearchResult => {\n const result: SearchResult = {\n match: false,\n ranges: [],\n };\n const lcSubject = subject.toLowerCase();\n const lcPattern = pattern.toLowerCase();\n const terms = lcSubject.split(' ');\n let offset = 0;\n\n terms.forEach((t, i) => {\n if (i > 0) {\n offset += terms[i - 1].length + 1;\n }\n\n if (result.match) {\n return;\n }\n\n const foundIndex = t.indexOf(lcPattern);\n const patternLength = lcPattern.length;\n\n if (foundIndex === 0) {\n result.match = true;\n result.ranges.push([\n offset + foundIndex,\n Math.min(offset + foundIndex + patternLength, subject.length),\n ]);\n }\n });\n\n return result;\n};\n\nexport const startsWithSearch = (\n subject: string,\n pattern: string\n): SearchResult => {\n const result: SearchResult = {\n match: false,\n ranges: [],\n };\n const foundIndex = subject.toLowerCase().indexOf(pattern.toLowerCase());\n\n if (foundIndex === 0) {\n result.match = true;\n result.ranges = [[0, pattern.length]];\n }\n\n return result;\n};\n\nexport const containsSearch = (\n subject: string,\n pattern: string\n): SearchResult => {\n const result: SearchResult = {\n match: false,\n ranges: [],\n };\n const foundIndex = subject.toLowerCase().indexOf(pattern.toLowerCase());\n\n if (foundIndex > -1) {\n result.match = true;\n result.ranges = [[foundIndex, foundIndex + pattern.length]];\n }\n\n return result;\n};\n\nexport const fuzzySearch = (subject: string, pattern: string): SearchResult => {\n const result: SearchResult = {\n match: false,\n ranges: [],\n };\n let fromIndex = 0;\n let foundIndex = 0;\n const iMax = pattern.length - 1;\n const lcSubject = subject.toLowerCase();\n const lcPattern = pattern.toLowerCase();\n\n for (let i = 0; i <= iMax; i++) {\n foundIndex = lcSubject.indexOf(lcPattern[i], fromIndex);\n\n if (foundIndex === -1) {\n return {\n match: false,\n ranges: [],\n };\n }\n\n result.match = true;\n result.ranges.push([foundIndex, foundIndex + 1]);\n\n fromIndex = foundIndex + 1;\n }\n\n return result;\n};\n\nexport const filterOptionsByPattern = (\n list: InternalOption[],\n pattern: string,\n method: SearchMethod\n): InternalOption[] => {\n const filtered: InternalOption[] = [];\n\n list.forEach((op) => {\n let result: SearchResult;\n\n switch (method) {\n case 'startsWithPerTerm':\n result = startsWithPerTermSearch(op.label, pattern);\n break;\n case 'startsWith':\n result = startsWithSearch(op.label, pattern);\n break;\n case 'contains':\n result = containsSearch(op.label, pattern);\n break;\n default:\n result = fuzzySearch(op.label, pattern);\n }\n\n if (result.match) {\n filtered.push({...op, ranges: result.ranges});\n }\n });\n\n return filtered;\n};\n\nconst preventSpaces = (text: string): TemplateResult[] => {\n const res: TemplateResult[] = [];\n\n if (text === ' ') {\n res.push(html` `);\n\n return res;\n }\n\n if (text.indexOf(' ') === 0) {\n res.push(html` `);\n }\n\n res.push(html`${text.trimStart().trimEnd()}`);\n\n if (text.lastIndexOf(' ') === text.length - 1) {\n res.push(html` `);\n }\n\n return res;\n};\n\nexport const highlightRanges = (\n text: string,\n ranges: [number, number][]\n): TemplateResult | TemplateResult[] => {\n const res: TemplateResult[] = [];\n const rl = ranges.length;\n\n if (rl < 1) {\n return html`${text}`;\n }\n\n ranges.forEach((r, i) => {\n const match = text.substring(r[0], r[1]);\n\n if (i === 0 && r[0] !== 0) {\n // text before the first range\n res.push(...preventSpaces(text.substring(0, ranges[0][0])));\n }\n\n if (i > 0 && i < rl && r[0] - ranges[i - 1][1] !== 0) {\n // text before the current range\n res.push(...preventSpaces(text.substring(ranges[i - 1][1], r[0])));\n }\n\n res.push(html`<b>${preventSpaces(match)}</b>`);\n\n if (i === rl - 1 && r[1] < text.length) {\n // text after the last range\n res.push(...preventSpaces(text.substring(r[1], text.length)));\n }\n });\n\n return res;\n};\n\nexport function findNextSelectableOptionIndex(\n options: InternalOption[],\n fromIndex: number\n) {\n let result = 0;\n\n if (fromIndex < 0 || !options[fromIndex] || !options[fromIndex + 1]) {\n return result;\n }\n\n for (let i = fromIndex + 1; i < options.length; i++) {\n if (!options[i].disabled) {\n result = i;\n break;\n }\n }\n\n return result;\n}\n\nexport function findPrevSelectableOptionIndex(\n options: InternalOption[],\n fromIndex: number\n) {\n let result = 0;\n\n if (fromIndex < 0 || !options[fromIndex] || !options[fromIndex - 1]) {\n return result;\n }\n\n for (let i = fromIndex - 1; i >= 0; i--) {\n if (!options[i].disabled) {\n result = i;\n break;\n }\n }\n\n return result;\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"styles.d.ts","sourceRoot":"","sources":["../../../src/includes/vscode-select/styles.ts"],"names":[],"mappings":";AAGA,
|
|
1
|
+
{"version":3,"file":"styles.d.ts","sourceRoot":"","sources":["../../../src/includes/vscode-select/styles.ts"],"names":[],"mappings":";AAGA,wBAsYE"}
|
|
@@ -106,24 +106,34 @@ export default [
|
|
|
106
106
|
}
|
|
107
107
|
|
|
108
108
|
.combobox-button {
|
|
109
|
+
align-items: center;
|
|
109
110
|
background-color: transparent;
|
|
110
111
|
border: 0;
|
|
112
|
+
border-radius: 2px;
|
|
113
|
+
box-sizing: content-box;
|
|
111
114
|
color: var(--vscode-foreground, #cccccc);
|
|
112
115
|
cursor: pointer;
|
|
116
|
+
display: flex;
|
|
113
117
|
flex-shrink: 0;
|
|
114
|
-
height:
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
+
height: 16px;
|
|
119
|
+
justify-content: center;
|
|
120
|
+
margin: 1px 1px 0 0;
|
|
121
|
+
padding: 3px;
|
|
122
|
+
width: 22px;
|
|
118
123
|
}
|
|
119
124
|
|
|
120
|
-
.combobox-button:
|
|
121
|
-
.combobox-button:
|
|
122
|
-
background-color: var(
|
|
125
|
+
.combobox-button:hover,
|
|
126
|
+
.combobox-button:focus-visible {
|
|
127
|
+
background-color: var(
|
|
128
|
+
--vscode-toolbar-hoverBackground,
|
|
129
|
+
rgba(90, 93, 94, 0.31)
|
|
130
|
+
);
|
|
131
|
+
outline-style: dashed;
|
|
132
|
+
outline-color: var(--vscode-toolbar-hoverOutline, transparent);
|
|
123
133
|
}
|
|
124
134
|
|
|
125
|
-
.combobox-button:focus {
|
|
126
|
-
outline:
|
|
135
|
+
.combobox-button:focus-visible {
|
|
136
|
+
outline: none;
|
|
127
137
|
}
|
|
128
138
|
|
|
129
139
|
.icon {
|
|
@@ -131,10 +141,13 @@ export default [
|
|
|
131
141
|
display: block;
|
|
132
142
|
height: 14px;
|
|
133
143
|
pointer-events: none;
|
|
144
|
+
width: 14px;
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
.select-face .icon {
|
|
134
148
|
position: absolute;
|
|
135
|
-
right:
|
|
149
|
+
right: 6px;
|
|
136
150
|
top: 5px;
|
|
137
|
-
width: 14px;
|
|
138
151
|
}
|
|
139
152
|
|
|
140
153
|
.icon svg {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"styles.js","sourceRoot":"","sources":["../../../src/includes/vscode-select/styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,GAAG,EAAC,MAAM,KAAK,CAAC;AACxB,OAAO,aAAa,MAAM,sBAAsB,CAAC;AAEjD,eAAe;IACb,aAAa;IACb,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsXF;CACF,CAAC","sourcesContent":["import {css} from 'lit';\nimport defaultStyles from '../default.styles.js';\n\nexport default [\n defaultStyles,\n css`\n :host {\n display: inline-block;\n max-width: 100%;\n outline: none;\n position: relative;\n width: 320px;\n }\n\n .main-slot {\n display: none;\n }\n\n .select-face,\n .combobox-face {\n background-color: var(--vscode-settings-dropdownBackground, #313131);\n border-color: var(--vscode-settings-dropdownBorder, #3c3c3c);\n border-radius: 2px;\n border-style: solid;\n border-width: 1px;\n box-sizing: border-box;\n color: var(--vscode-settings-dropdownForeground, #cccccc);\n font-family: var(--vscode-font-family, sans-serif);\n font-size: var(--vscode-font-size, 13px);\n font-weight: var(--vscode-font-weight, normal);\n line-height: 18px;\n position: relative;\n user-select: none;\n width: 100%;\n }\n\n :host([invalid]) .select-face,\n :host(:invalid) .select-face,\n :host([invalid]) .combobox-face,\n :host(:invalid) .combobox-face {\n background-color: var(--vscode-inputValidation-errorBackground, #5a1d1d);\n border-color: var(--vscode-inputValidation-errorBorder, #be1100);\n }\n\n .select-face {\n cursor: pointer;\n display: block;\n padding: 3px 4px;\n }\n\n .select-face .text {\n display: block;\n height: 18px;\n overflow: hidden;\n }\n\n .select-face.multiselect {\n padding: 0;\n }\n\n .select-face-badge {\n background-color: var(--vscode-badge-background, #616161);\n border-radius: 2px;\n color: var(--vscode-badge-foreground, #f8f8f8);\n display: inline-block;\n flex-shrink: 0;\n font-size: 11px;\n line-height: 16px;\n margin: 2px;\n padding: 2px 3px;\n text-transform: uppercase;\n white-space: nowrap;\n }\n\n .select-face-badge.no-item {\n background-color: transparent;\n color: inherit;\n }\n\n .combobox-face {\n display: flex;\n }\n\n :host(:focus) .select-face,\n :host(:focus) .combobox-face,\n :host([focused]) .select-face,\n :host([focused]) .combobox-face {\n border-color: var(--vscode-focusBorder, #0078d4);\n outline: none;\n }\n\n .combobox-input {\n background-color: transparent;\n box-sizing: border-box;\n border: 0;\n color: var(--vscode-foreground, #cccccc);\n display: block;\n font-family: var(--vscode-font-family, sans-serif);\n font-size: var(--vscode-font-size, 13px);\n line-height: 16px;\n padding: 4px;\n width: 100%;\n }\n\n .combobox-input:focus {\n outline: none;\n }\n\n .combobox-button {\n background-color: transparent;\n border: 0;\n color: var(--vscode-foreground, #cccccc);\n cursor: pointer;\n flex-shrink: 0;\n height: 24px;\n margin: 0;\n padding: 0;\n width: 30px;\n }\n\n .combobox-button:focus,\n .combobox-button:hover {\n background-color: var(--vscode-list-hoverBackground, #2a2d2e);\n }\n\n .combobox-button:focus {\n outline: 0;\n }\n\n .icon {\n color: var(--vscode-foreground, #cccccc);\n display: block;\n height: 14px;\n pointer-events: none;\n position: absolute;\n right: 8px;\n top: 5px;\n width: 14px;\n }\n\n .icon svg {\n color: var(--vscode-foreground, #cccccc);\n height: 100%;\n width: 100%;\n }\n\n .dropdown {\n background-color: var(--vscode-settings-dropdownBackground, #313131);\n border-color: var(--vscode-settings-dropdownListBorder, #454545);\n border-radius: 0 0 3px 3px;\n border-style: solid;\n border-width: 1px;\n box-sizing: border-box;\n left: 0;\n padding-bottom: 2px;\n position: absolute;\n top: 100%;\n width: 100%;\n z-index: var(--dropdown-z-index, 2);\n }\n\n :host([position='above']) .dropdown {\n border-radius: 3px 3px 0 0;\n bottom: 26px;\n padding-bottom: 0;\n padding-top: 2px;\n top: auto;\n }\n\n :host(:focus) .dropdown,\n :host([focused]) .dropdown {\n border-color: var(--vscode-focusBorder, #0078d4);\n }\n\n .options {\n box-sizing: border-box;\n cursor: pointer;\n list-style: none;\n margin: 0;\n max-height: 222px;\n overflow: auto;\n padding: 1px;\n }\n\n .option {\n align-items: center;\n box-sizing: border-box;\n color: var(--vscode-foreground, #cccccc);\n cursor: pointer;\n display: flex;\n font-family: var(--vscode-font-family, sans-serif);\n font-size: var(--vscode-font-size, 13px);\n font-weight: var(--vscode-font-weight, normal);\n height: 22px;\n line-height: 18px;\n min-height: calc(var(--vscode-font-size) * 1.3);\n padding: 1px 3px;\n user-select: none;\n outline-color: transparent;\n outline-offset: -1px;\n outline-style: solid;\n outline-width: 1px;\n }\n\n .option b {\n color: var(--vscode-list-highlightForeground, #2aaaff);\n }\n\n .option.active b {\n color: var(--vscode-list-focusHighlightForeground, #2aaaff);\n }\n\n .option:not(.disabled):hover {\n background-color: var(--vscode-list-hoverBackground, #2a2d2e);\n color: var(--vscode-list-hoverForeground, #ffffff);\n }\n\n :host-context(body[data-vscode-theme-kind='vscode-high-contrast'])\n .option:hover,\n :host-context(body[data-vscode-theme-kind='vscode-high-contrast-light'])\n .option:hover {\n outline-style: dotted;\n outline-color: var(--vscode-list-focusOutline, #0078d4);\n outline-width: 1px;\n }\n\n .option.disabled {\n cursor: not-allowed;\n opacity: 0.4;\n }\n\n .option.active,\n .option.active:hover {\n background-color: var(--vscode-list-activeSelectionBackground, #04395e);\n color: var(--vscode-list-activeSelectionForeground, #ffffff);\n outline-color: var(--vscode-list-activeSelectionBackground, #04395e);\n outline-style: solid;\n outline-width: 1px;\n }\n\n .no-options {\n align-items: center;\n border-color: transparent;\n border-style: solid;\n border-width: 1px;\n color: var(--vscode-foreground, #cccccc);\n cursor: default;\n display: flex;\n font-family: var(--vscode-font-family, sans-serif);\n font-size: var(--vscode-font-size, 13px);\n font-weight: var(--vscode-font-weight, normal);\n line-height: 18px;\n min-height: calc(var(--vscode-font-size) * 1.3);\n opacity: 0.85;\n padding: 1px 3px;\n user-select: none;\n }\n\n .placeholder {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n .placeholder span {\n font-weight: bold;\n }\n\n .placeholder:not(.disabled):hover {\n color: var(--vscode-list-activeSelectionForeground, #ffffff);\n }\n\n :host-context(body[data-vscode-theme-kind='vscode-high-contrast'])\n .option.active,\n :host-context(body[data-vscode-theme-kind='vscode-high-contrast-light'])\n .option.active:hover {\n outline-color: var(--vscode-list-focusOutline, #0078d4);\n outline-style: dashed;\n }\n\n .option-label {\n display: block;\n pointer-events: none;\n width: 100%;\n }\n\n .dropdown.multiple .option.selected {\n background-color: var(--vscode-list-hoverBackground, #2a2d2e);\n outline-color: var(--vscode-list-hoverBackground, #2a2d2e);\n }\n\n .dropdown.multiple .option.selected.active {\n background-color: var(--vscode-list-activeSelectionBackground, #04395e);\n color: var(--vscode-list-activeSelectionForeground, #ffffff);\n outline-color: var(--vscode-list-activeSelectionBackground, #04395e);\n }\n\n .checkbox-icon {\n background-color: var(--vscode-settings-checkboxBackground, #313131);\n border: 1px solid currentColor;\n border-radius: 2px;\n box-sizing: border-box;\n height: 14px;\n margin-right: 5px;\n overflow: hidden;\n position: relative;\n width: 14px;\n }\n\n .checkbox-icon.checked:before,\n .checkbox-icon.checked:after {\n content: '';\n display: block;\n height: 5px;\n position: absolute;\n transform: rotate(-45deg);\n width: 10px;\n }\n\n .checkbox-icon.checked:before {\n background-color: var(--vscode-foreground, #cccccc);\n left: 1px;\n top: 2.5px;\n }\n\n .checkbox-icon.checked:after {\n background-color: var(--vscode-settings-checkboxBackground, #313131);\n left: 1px;\n top: -0.5px;\n }\n\n .dropdown-controls {\n display: flex;\n justify-content: flex-end;\n padding: 4px;\n }\n\n .dropdown-controls :not(:last-child) {\n margin-right: 4px;\n }\n\n .action-icon {\n align-items: center;\n background-color: transparent;\n border: 0;\n color: var(--vscode-foreground, #cccccc);\n cursor: pointer;\n display: flex;\n height: 24px;\n justify-content: center;\n padding: 0;\n width: 24px;\n }\n\n .action-icon:focus {\n outline: none;\n }\n\n .action-icon:focus-visible {\n outline: 1px solid var(--vscode-focusBorder, #0078d4);\n outline-offset: -1px;\n }\n\n .description {\n border-color: var(--vscode-settings-dropdownBorder, #3c3c3c);\n border-style: solid;\n border-width: 1px 0 0;\n color: var(--vscode-foreground, #cccccc);\n font-family: var(--vscode-font-family, sans-serif);\n font-size: var(--vscode-font-size, 13px);\n font-weight: var(--vscode-font-weight, normal);\n line-height: 1.3;\n padding: 6px 4px;\n word-wrap: break-word;\n }\n\n :host([position='above']) .description {\n border-width: 0 0 1px;\n }\n `,\n];\n"]}
|
|
1
|
+
{"version":3,"file":"styles.js","sourceRoot":"","sources":["../../../src/includes/vscode-select/styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,GAAG,EAAC,MAAM,KAAK,CAAC;AACxB,OAAO,aAAa,MAAM,sBAAsB,CAAC;AAEjD,eAAe;IACb,aAAa;IACb,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmYF;CACF,CAAC","sourcesContent":["import {css} from 'lit';\nimport defaultStyles from '../default.styles.js';\n\nexport default [\n defaultStyles,\n css`\n :host {\n display: inline-block;\n max-width: 100%;\n outline: none;\n position: relative;\n width: 320px;\n }\n\n .main-slot {\n display: none;\n }\n\n .select-face,\n .combobox-face {\n background-color: var(--vscode-settings-dropdownBackground, #313131);\n border-color: var(--vscode-settings-dropdownBorder, #3c3c3c);\n border-radius: 2px;\n border-style: solid;\n border-width: 1px;\n box-sizing: border-box;\n color: var(--vscode-settings-dropdownForeground, #cccccc);\n font-family: var(--vscode-font-family, sans-serif);\n font-size: var(--vscode-font-size, 13px);\n font-weight: var(--vscode-font-weight, normal);\n line-height: 18px;\n position: relative;\n user-select: none;\n width: 100%;\n }\n\n :host([invalid]) .select-face,\n :host(:invalid) .select-face,\n :host([invalid]) .combobox-face,\n :host(:invalid) .combobox-face {\n background-color: var(--vscode-inputValidation-errorBackground, #5a1d1d);\n border-color: var(--vscode-inputValidation-errorBorder, #be1100);\n }\n\n .select-face {\n cursor: pointer;\n display: block;\n padding: 3px 4px;\n }\n\n .select-face .text {\n display: block;\n height: 18px;\n overflow: hidden;\n }\n\n .select-face.multiselect {\n padding: 0;\n }\n\n .select-face-badge {\n background-color: var(--vscode-badge-background, #616161);\n border-radius: 2px;\n color: var(--vscode-badge-foreground, #f8f8f8);\n display: inline-block;\n flex-shrink: 0;\n font-size: 11px;\n line-height: 16px;\n margin: 2px;\n padding: 2px 3px;\n text-transform: uppercase;\n white-space: nowrap;\n }\n\n .select-face-badge.no-item {\n background-color: transparent;\n color: inherit;\n }\n\n .combobox-face {\n display: flex;\n }\n\n :host(:focus) .select-face,\n :host(:focus) .combobox-face,\n :host([focused]) .select-face,\n :host([focused]) .combobox-face {\n border-color: var(--vscode-focusBorder, #0078d4);\n outline: none;\n }\n\n .combobox-input {\n background-color: transparent;\n box-sizing: border-box;\n border: 0;\n color: var(--vscode-foreground, #cccccc);\n display: block;\n font-family: var(--vscode-font-family, sans-serif);\n font-size: var(--vscode-font-size, 13px);\n line-height: 16px;\n padding: 4px;\n width: 100%;\n }\n\n .combobox-input:focus {\n outline: none;\n }\n\n .combobox-button {\n align-items: center;\n background-color: transparent;\n border: 0;\n border-radius: 2px;\n box-sizing: content-box;\n color: var(--vscode-foreground, #cccccc);\n cursor: pointer;\n display: flex;\n flex-shrink: 0;\n height: 16px;\n justify-content: center;\n margin: 1px 1px 0 0;\n padding: 3px;\n width: 22px;\n }\n\n .combobox-button:hover,\n .combobox-button:focus-visible {\n background-color: var(\n --vscode-toolbar-hoverBackground,\n rgba(90, 93, 94, 0.31)\n );\n outline-style: dashed;\n outline-color: var(--vscode-toolbar-hoverOutline, transparent);\n }\n\n .combobox-button:focus-visible {\n outline: none;\n }\n\n .icon {\n color: var(--vscode-foreground, #cccccc);\n display: block;\n height: 14px;\n pointer-events: none;\n width: 14px;\n }\n\n .select-face .icon {\n position: absolute;\n right: 6px;\n top: 5px;\n }\n\n .icon svg {\n color: var(--vscode-foreground, #cccccc);\n height: 100%;\n width: 100%;\n }\n\n .dropdown {\n background-color: var(--vscode-settings-dropdownBackground, #313131);\n border-color: var(--vscode-settings-dropdownListBorder, #454545);\n border-radius: 0 0 3px 3px;\n border-style: solid;\n border-width: 1px;\n box-sizing: border-box;\n left: 0;\n padding-bottom: 2px;\n position: absolute;\n top: 100%;\n width: 100%;\n z-index: var(--dropdown-z-index, 2);\n }\n\n :host([position='above']) .dropdown {\n border-radius: 3px 3px 0 0;\n bottom: 26px;\n padding-bottom: 0;\n padding-top: 2px;\n top: auto;\n }\n\n :host(:focus) .dropdown,\n :host([focused]) .dropdown {\n border-color: var(--vscode-focusBorder, #0078d4);\n }\n\n .options {\n box-sizing: border-box;\n cursor: pointer;\n list-style: none;\n margin: 0;\n max-height: 222px;\n overflow: auto;\n padding: 1px;\n }\n\n .option {\n align-items: center;\n box-sizing: border-box;\n color: var(--vscode-foreground, #cccccc);\n cursor: pointer;\n display: flex;\n font-family: var(--vscode-font-family, sans-serif);\n font-size: var(--vscode-font-size, 13px);\n font-weight: var(--vscode-font-weight, normal);\n height: 22px;\n line-height: 18px;\n min-height: calc(var(--vscode-font-size) * 1.3);\n padding: 1px 3px;\n user-select: none;\n outline-color: transparent;\n outline-offset: -1px;\n outline-style: solid;\n outline-width: 1px;\n }\n\n .option b {\n color: var(--vscode-list-highlightForeground, #2aaaff);\n }\n\n .option.active b {\n color: var(--vscode-list-focusHighlightForeground, #2aaaff);\n }\n\n .option:not(.disabled):hover {\n background-color: var(--vscode-list-hoverBackground, #2a2d2e);\n color: var(--vscode-list-hoverForeground, #ffffff);\n }\n\n :host-context(body[data-vscode-theme-kind='vscode-high-contrast'])\n .option:hover,\n :host-context(body[data-vscode-theme-kind='vscode-high-contrast-light'])\n .option:hover {\n outline-style: dotted;\n outline-color: var(--vscode-list-focusOutline, #0078d4);\n outline-width: 1px;\n }\n\n .option.disabled {\n cursor: not-allowed;\n opacity: 0.4;\n }\n\n .option.active,\n .option.active:hover {\n background-color: var(--vscode-list-activeSelectionBackground, #04395e);\n color: var(--vscode-list-activeSelectionForeground, #ffffff);\n outline-color: var(--vscode-list-activeSelectionBackground, #04395e);\n outline-style: solid;\n outline-width: 1px;\n }\n\n .no-options {\n align-items: center;\n border-color: transparent;\n border-style: solid;\n border-width: 1px;\n color: var(--vscode-foreground, #cccccc);\n cursor: default;\n display: flex;\n font-family: var(--vscode-font-family, sans-serif);\n font-size: var(--vscode-font-size, 13px);\n font-weight: var(--vscode-font-weight, normal);\n line-height: 18px;\n min-height: calc(var(--vscode-font-size) * 1.3);\n opacity: 0.85;\n padding: 1px 3px;\n user-select: none;\n }\n\n .placeholder {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n .placeholder span {\n font-weight: bold;\n }\n\n .placeholder:not(.disabled):hover {\n color: var(--vscode-list-activeSelectionForeground, #ffffff);\n }\n\n :host-context(body[data-vscode-theme-kind='vscode-high-contrast'])\n .option.active,\n :host-context(body[data-vscode-theme-kind='vscode-high-contrast-light'])\n .option.active:hover {\n outline-color: var(--vscode-list-focusOutline, #0078d4);\n outline-style: dashed;\n }\n\n .option-label {\n display: block;\n pointer-events: none;\n width: 100%;\n }\n\n .dropdown.multiple .option.selected {\n background-color: var(--vscode-list-hoverBackground, #2a2d2e);\n outline-color: var(--vscode-list-hoverBackground, #2a2d2e);\n }\n\n .dropdown.multiple .option.selected.active {\n background-color: var(--vscode-list-activeSelectionBackground, #04395e);\n color: var(--vscode-list-activeSelectionForeground, #ffffff);\n outline-color: var(--vscode-list-activeSelectionBackground, #04395e);\n }\n\n .checkbox-icon {\n background-color: var(--vscode-settings-checkboxBackground, #313131);\n border: 1px solid currentColor;\n border-radius: 2px;\n box-sizing: border-box;\n height: 14px;\n margin-right: 5px;\n overflow: hidden;\n position: relative;\n width: 14px;\n }\n\n .checkbox-icon.checked:before,\n .checkbox-icon.checked:after {\n content: '';\n display: block;\n height: 5px;\n position: absolute;\n transform: rotate(-45deg);\n width: 10px;\n }\n\n .checkbox-icon.checked:before {\n background-color: var(--vscode-foreground, #cccccc);\n left: 1px;\n top: 2.5px;\n }\n\n .checkbox-icon.checked:after {\n background-color: var(--vscode-settings-checkboxBackground, #313131);\n left: 1px;\n top: -0.5px;\n }\n\n .dropdown-controls {\n display: flex;\n justify-content: flex-end;\n padding: 4px;\n }\n\n .dropdown-controls :not(:last-child) {\n margin-right: 4px;\n }\n\n .action-icon {\n align-items: center;\n background-color: transparent;\n border: 0;\n color: var(--vscode-foreground, #cccccc);\n cursor: pointer;\n display: flex;\n height: 24px;\n justify-content: center;\n padding: 0;\n width: 24px;\n }\n\n .action-icon:focus {\n outline: none;\n }\n\n .action-icon:focus-visible {\n outline: 1px solid var(--vscode-focusBorder, #0078d4);\n outline-offset: -1px;\n }\n\n .description {\n border-color: var(--vscode-settings-dropdownBorder, #3c3c3c);\n border-style: solid;\n border-width: 1px 0 0;\n color: var(--vscode-foreground, #cccccc);\n font-family: var(--vscode-font-family, sans-serif);\n font-size: var(--vscode-font-size, 13px);\n font-weight: var(--vscode-font-weight, normal);\n line-height: 1.3;\n padding: 6px 4px;\n word-wrap: break-word;\n }\n\n :host([position='above']) .description {\n border-width: 0 0 1px;\n }\n `,\n];\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { nothing, TemplateResult } from 'lit';
|
|
1
|
+
import { nothing, TemplateResult, PropertyValues } from 'lit';
|
|
2
2
|
import '../../vscode-button/index.js';
|
|
3
3
|
import '../../vscode-option/index.js';
|
|
4
4
|
import type { InternalOption, Option, SearchMethod } from './types.js';
|
|
@@ -59,6 +59,9 @@ export declare class VscodeSelectBase extends VscElement {
|
|
|
59
59
|
constructor();
|
|
60
60
|
connectedCallback(): void;
|
|
61
61
|
disconnectedCallback(): void;
|
|
62
|
+
protected _firstUpdateCompleted: boolean;
|
|
63
|
+
protected firstUpdated(_changedProperties: PropertyValues): void;
|
|
64
|
+
protected willUpdate(changedProperties: PropertyValues): void;
|
|
62
65
|
protected _activeIndex: number;
|
|
63
66
|
protected _currentDescription: string;
|
|
64
67
|
protected _filter: SearchMethod;
|
|
@@ -71,6 +74,7 @@ export declare class VscodeSelectBase extends VscElement {
|
|
|
71
74
|
protected _values: string[];
|
|
72
75
|
protected _listScrollTop: number;
|
|
73
76
|
protected _isPlaceholderOptionActive: boolean;
|
|
77
|
+
private _isBeingFiltered;
|
|
74
78
|
private _listElement;
|
|
75
79
|
/** @internal */
|
|
76
80
|
protected _multiple: boolean;
|
|
@@ -87,6 +91,7 @@ export declare class VscodeSelectBase extends VscElement {
|
|
|
87
91
|
private _originalTabIndex;
|
|
88
92
|
protected get _currentOptions(): InternalOption[];
|
|
89
93
|
protected get _isSuggestedOptionVisible(): boolean;
|
|
94
|
+
protected _manageRequired(): void;
|
|
90
95
|
protected _setStateFromSlottedElements(): void;
|
|
91
96
|
protected _toggleDropdown(visible: boolean): Promise<void>;
|
|
92
97
|
protected _createSuggestedOption(): number;
|
|
@@ -100,6 +105,7 @@ export declare class VscodeSelectBase extends VscElement {
|
|
|
100
105
|
protected _onComboboxButtonKeyDown(ev: KeyboardEvent): void;
|
|
101
106
|
protected _onOptionMouseOver(ev: MouseEvent): void;
|
|
102
107
|
protected _onPlaceholderOptionMouseOut(): void;
|
|
108
|
+
protected _onNoOptionsClick(ev: MouseEvent): void;
|
|
103
109
|
protected _onEnterKeyDown(ev: KeyboardEvent): void;
|
|
104
110
|
private _onSpaceKeyDown;
|
|
105
111
|
private _scrollActiveElementToTop;
|
|
@@ -111,6 +117,7 @@ export declare class VscodeSelectBase extends VscElement {
|
|
|
111
117
|
private _onComponentBlur;
|
|
112
118
|
protected _onSlotChange(): void;
|
|
113
119
|
protected _onComboboxInputFocus(ev: FocusEvent): void;
|
|
120
|
+
protected _onComboboxInputBlur(): void;
|
|
114
121
|
protected _onComboboxInputInput(ev: InputEvent): void;
|
|
115
122
|
protected _onComboboxInputClick(): void;
|
|
116
123
|
protected _onOptionClick(_ev: MouseEvent): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vscode-select-base.d.ts","sourceRoot":"","sources":["../../../src/includes/vscode-select/vscode-select-base.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,OAAO,EAAE,cAAc,EAAC,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"vscode-select-base.d.ts","sourceRoot":"","sources":["../../../src/includes/vscode-select/vscode-select-base.ts"],"names":[],"mappings":"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"}
|
|
@@ -10,7 +10,7 @@ import { classMap } from 'lit/directives/class-map.js';
|
|
|
10
10
|
import { repeat } from 'lit/directives/repeat.js';
|
|
11
11
|
import '../../vscode-button/index.js';
|
|
12
12
|
import '../../vscode-option/index.js';
|
|
13
|
-
import { filterOptionsByPattern, highlightRanges } from './helpers.js';
|
|
13
|
+
import { filterOptionsByPattern, findNextSelectableOptionIndex, findPrevSelectableOptionIndex, highlightRanges, } from './helpers.js';
|
|
14
14
|
import { VscElement } from '../VscElement.js';
|
|
15
15
|
import { chevronDownIcon } from './template-elements.js';
|
|
16
16
|
const VISIBLE_OPTS = 10;
|
|
@@ -109,6 +109,7 @@ export class VscodeSelectBase extends VscElement {
|
|
|
109
109
|
this.position = 'below';
|
|
110
110
|
/** @internal */
|
|
111
111
|
this.tabIndex = 0;
|
|
112
|
+
this._firstUpdateCompleted = false;
|
|
112
113
|
this._activeIndex = -1;
|
|
113
114
|
this._currentDescription = '';
|
|
114
115
|
this._filter = 'fuzzy';
|
|
@@ -120,6 +121,7 @@ export class VscodeSelectBase extends VscElement {
|
|
|
120
121
|
this._values = [];
|
|
121
122
|
this._listScrollTop = 0;
|
|
122
123
|
this._isPlaceholderOptionActive = false;
|
|
124
|
+
this._isBeingFiltered = false;
|
|
123
125
|
/** @internal */
|
|
124
126
|
this._multiple = false;
|
|
125
127
|
/**
|
|
@@ -188,6 +190,14 @@ export class VscodeSelectBase extends VscElement {
|
|
|
188
190
|
this.removeEventListener('focus', this._onComponentFocus);
|
|
189
191
|
this.removeEventListener('blur', this._onComponentBlur);
|
|
190
192
|
}
|
|
193
|
+
firstUpdated(_changedProperties) {
|
|
194
|
+
this._firstUpdateCompleted = true;
|
|
195
|
+
}
|
|
196
|
+
willUpdate(changedProperties) {
|
|
197
|
+
if (changedProperties.has('required') && this._firstUpdateCompleted) {
|
|
198
|
+
this._manageRequired();
|
|
199
|
+
}
|
|
200
|
+
}
|
|
191
201
|
get _filteredOptions() {
|
|
192
202
|
if (!this.combobox || this._filterPattern === '') {
|
|
193
203
|
return this._options;
|
|
@@ -198,10 +208,14 @@ export class VscodeSelectBase extends VscElement {
|
|
|
198
208
|
return this.combobox ? this._filteredOptions : this._options;
|
|
199
209
|
}
|
|
200
210
|
get _isSuggestedOptionVisible() {
|
|
211
|
+
if (!(this.combobox && this.creatable)) {
|
|
212
|
+
return false;
|
|
213
|
+
}
|
|
201
214
|
const filterPatternExistsAsOption = typeof this._valueOptionIndexMap[this._filterPattern] !== 'undefined';
|
|
202
215
|
const filtered = this._filterPattern.length > 0;
|
|
203
|
-
return
|
|
216
|
+
return !filterPatternExistsAsOption && filtered;
|
|
204
217
|
}
|
|
218
|
+
_manageRequired() { }
|
|
205
219
|
_setStateFromSlottedElements() {
|
|
206
220
|
const options = [];
|
|
207
221
|
let nextIndex = 0;
|
|
@@ -245,6 +259,9 @@ export class VscodeSelectBase extends VscElement {
|
|
|
245
259
|
async _toggleDropdown(visible) {
|
|
246
260
|
this.open = visible;
|
|
247
261
|
this.ariaExpanded = String(visible);
|
|
262
|
+
if (visible && !this._multiple) {
|
|
263
|
+
this._activeIndex = this._selectedIndex;
|
|
264
|
+
}
|
|
248
265
|
if (visible && !this._multiple && !this.combobox) {
|
|
249
266
|
this._activeIndex = this._selectedIndex;
|
|
250
267
|
if (this._activeIndex > VISIBLE_OPTS - 1) {
|
|
@@ -331,7 +348,11 @@ export class VscodeSelectBase extends VscElement {
|
|
|
331
348
|
_onPlaceholderOptionMouseOut() {
|
|
332
349
|
this._isPlaceholderOptionActive = false;
|
|
333
350
|
}
|
|
351
|
+
_onNoOptionsClick(ev) {
|
|
352
|
+
ev.stopPropagation();
|
|
353
|
+
}
|
|
334
354
|
_onEnterKeyDown(ev) {
|
|
355
|
+
this._isBeingFiltered = false;
|
|
335
356
|
const clickedOnAcceptButton = ev?.composedPath
|
|
336
357
|
? ev
|
|
337
358
|
.composedPath()
|
|
@@ -440,9 +461,14 @@ export class VscodeSelectBase extends VscElement {
|
|
|
440
461
|
this._isPlaceholderOptionActive = false;
|
|
441
462
|
}
|
|
442
463
|
else {
|
|
443
|
-
const
|
|
444
|
-
|
|
445
|
-
|
|
464
|
+
const currentOptions = this.combobox
|
|
465
|
+
? this._filteredOptions
|
|
466
|
+
: this._options;
|
|
467
|
+
const prevSelectable = findPrevSelectableOptionIndex(currentOptions, this._activeIndex);
|
|
468
|
+
if (prevSelectable > -1) {
|
|
469
|
+
this._activeIndex = prevSelectable;
|
|
470
|
+
this._adjustOptionListScrollPos('up', prevSelectable);
|
|
471
|
+
}
|
|
446
472
|
}
|
|
447
473
|
}
|
|
448
474
|
}
|
|
@@ -450,6 +476,9 @@ export class VscodeSelectBase extends VscElement {
|
|
|
450
476
|
let numOpts = this.combobox
|
|
451
477
|
? this._filteredOptions.length
|
|
452
478
|
: this._options.length;
|
|
479
|
+
const currentOptions = this.combobox
|
|
480
|
+
? this._filteredOptions
|
|
481
|
+
: this._options;
|
|
453
482
|
const suggestedOptionVisible = this._isSuggestedOptionVisible;
|
|
454
483
|
if (suggestedOptionVisible) {
|
|
455
484
|
numOpts += 1;
|
|
@@ -464,8 +493,11 @@ export class VscodeSelectBase extends VscElement {
|
|
|
464
493
|
this._activeIndex = -1;
|
|
465
494
|
}
|
|
466
495
|
else if (this._activeIndex < numOpts - 1) {
|
|
467
|
-
this._activeIndex
|
|
468
|
-
|
|
496
|
+
const nextSelectable = findNextSelectableOptionIndex(currentOptions, this._activeIndex);
|
|
497
|
+
if (nextSelectable > -1) {
|
|
498
|
+
this._activeIndex = nextSelectable;
|
|
499
|
+
this._adjustOptionListScrollPos('down', nextSelectable);
|
|
500
|
+
}
|
|
469
501
|
}
|
|
470
502
|
}
|
|
471
503
|
}
|
|
@@ -475,16 +507,24 @@ export class VscodeSelectBase extends VscElement {
|
|
|
475
507
|
}
|
|
476
508
|
_onComboboxInputFocus(ev) {
|
|
477
509
|
ev.target.select();
|
|
510
|
+
this._isBeingFiltered = false;
|
|
511
|
+
this._filterPattern = '';
|
|
512
|
+
}
|
|
513
|
+
_onComboboxInputBlur() {
|
|
514
|
+
this._isBeingFiltered = false;
|
|
478
515
|
}
|
|
479
516
|
_onComboboxInputInput(ev) {
|
|
517
|
+
this._isBeingFiltered = true;
|
|
480
518
|
this._filterPattern = ev.target.value;
|
|
481
519
|
this._activeIndex = -1;
|
|
482
520
|
this._toggleDropdown(true);
|
|
483
521
|
}
|
|
484
522
|
_onComboboxInputClick() {
|
|
523
|
+
this._isBeingFiltered = this._filterPattern !== '';
|
|
485
524
|
this._toggleDropdown(true);
|
|
486
525
|
}
|
|
487
526
|
_onOptionClick(_ev) {
|
|
527
|
+
this._isBeingFiltered = false;
|
|
488
528
|
return;
|
|
489
529
|
}
|
|
490
530
|
_renderOptions() {
|
|
@@ -547,7 +587,9 @@ export class VscodeSelectBase extends VscElement {
|
|
|
547
587
|
}
|
|
548
588
|
else {
|
|
549
589
|
return isListEmpty
|
|
550
|
-
? html `<li class="no-options">
|
|
590
|
+
? html `<li class="no-options" @click=${this._onNoOptionsClick}>
|
|
591
|
+
No options
|
|
592
|
+
</li>`
|
|
551
593
|
: nothing;
|
|
552
594
|
}
|
|
553
595
|
}
|
|
@@ -578,7 +620,16 @@ export class VscodeSelectBase extends VscElement {
|
|
|
578
620
|
}
|
|
579
621
|
}
|
|
580
622
|
_renderComboboxFace() {
|
|
581
|
-
|
|
623
|
+
let inputVal = '';
|
|
624
|
+
if (this._isBeingFiltered) {
|
|
625
|
+
inputVal = this._filterPattern;
|
|
626
|
+
}
|
|
627
|
+
else {
|
|
628
|
+
inputVal =
|
|
629
|
+
this._selectedIndex > -1
|
|
630
|
+
? (this._options[this._selectedIndex]?.label ?? '')
|
|
631
|
+
: '';
|
|
632
|
+
}
|
|
582
633
|
return html `
|
|
583
634
|
<div class="combobox-face face">
|
|
584
635
|
${this._multiple ? this._renderMultiSelectLabel() : nothing}
|
|
@@ -589,6 +640,7 @@ export class VscodeSelectBase extends VscElement {
|
|
|
589
640
|
autocomplete="off"
|
|
590
641
|
.value=${inputVal}
|
|
591
642
|
@focus=${this._onComboboxInputFocus}
|
|
643
|
+
@blur=${this._onComboboxInputBlur}
|
|
592
644
|
@input=${this._onComboboxInputInput}
|
|
593
645
|
@click=${this._onComboboxInputClick}
|
|
594
646
|
>
|
|
@@ -702,6 +754,9 @@ __decorate([
|
|
|
702
754
|
__decorate([
|
|
703
755
|
state()
|
|
704
756
|
], VscodeSelectBase.prototype, "_isPlaceholderOptionActive", void 0);
|
|
757
|
+
__decorate([
|
|
758
|
+
state()
|
|
759
|
+
], VscodeSelectBase.prototype, "_isBeingFiltered", void 0);
|
|
705
760
|
__decorate([
|
|
706
761
|
query('.options')
|
|
707
762
|
], VscodeSelectBase.prototype, "_listElement", void 0);
|