@vscode-elements/elements 2.0.0 → 2.1.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.
@@ -1,5 +1,5 @@
1
1
  import { LitElement } from 'lit';
2
- const VERSION = '2.0.0';
2
+ const VERSION = '2.1.0';
3
3
  const CONFIG_KEY = '__vscodeElements_disableRegistryWarning__';
4
4
  export class VscElement extends LitElement {
5
5
  /** VSCode Elements version */
@@ -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,OAAO,CAAC;AACxB,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;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,IAAI,iEAAiE,OAAO,IAAI,CAAC;QAC1F,CAAC;QAED,sCAAsC;QACtC,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 = '2.0.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 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 += `is already registered by the same version of VSCode Elements (${VERSION}).`;\n }\n\n // eslint-disable-next-line no-console\n console.warn(\n `[VSCode Elements] ${tagName} ${message}\\nTo suppress this warning, set window.${CONFIG_KEY} to true`\n );\n };\n};\n"]}
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,OAAO,CAAC;AACxB,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;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,IAAI,iEAAiE,OAAO,IAAI,CAAC;QAC1F,CAAC;QAED,sCAAsC;QACtC,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 = '2.1.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 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 += `is already registered by the same version of VSCode Elements (${VERSION}).`;\n }\n\n // eslint-disable-next-line no-console\n console.warn(\n `[VSCode Elements] ${tagName} ${message}\\nTo suppress this warning, set window.${CONFIG_KEY} to true`\n );\n };\n};\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"styles.d.ts","sourceRoot":"","sources":["../../../src/includes/vscode-select/styles.ts"],"names":[],"mappings":";AAGA,wBAyYE"}
1
+ {"version":3,"file":"styles.d.ts","sourceRoot":"","sources":["../../../src/includes/vscode-select/styles.ts"],"names":[],"mappings":";AAGA,wBA6ZE"}
@@ -51,6 +51,9 @@ export default [
51
51
  display: block;
52
52
  height: 18px;
53
53
  overflow: hidden;
54
+ padding-right: 20px;
55
+ text-overflow: ellipsis;
56
+ white-space: nowrap;
54
57
  }
55
58
 
56
59
  .select-face.multiselect {
@@ -161,14 +164,14 @@ export default [
161
164
  border-radius: 0 0 3px 3px;
162
165
  border-style: solid;
163
166
  border-width: 1px;
167
+ bottom: unset;
164
168
  box-sizing: border-box;
165
169
  display: none;
166
- left: 0;
167
170
  padding-bottom: 2px;
168
- position: absolute;
169
- top: 100%;
170
- width: 100%;
171
- z-index: var(--dropdown-z-index, 2);
171
+ padding-left: 0;
172
+ padding-right: 0;
173
+ padding-top: 0;
174
+ right: unset;
172
175
  }
173
176
 
174
177
  .dropdown.open {
@@ -180,7 +183,7 @@ export default [
180
183
  bottom: 26px;
181
184
  padding-bottom: 0;
182
185
  padding-top: 2px;
183
- top: auto;
186
+ top: unset;
184
187
  }
185
188
 
186
189
  :host(:focus) .dropdown,
@@ -225,6 +228,18 @@ export default [
225
228
  text-overflow: ellipsis;
226
229
  }
227
230
 
231
+ .option.single-select {
232
+ display: block;
233
+ overflow: hidden;
234
+ white-space: nowrap;
235
+ text-overflow: ellipsis;
236
+ }
237
+
238
+ .option.multi-select {
239
+ align-items: center;
240
+ display: flex;
241
+ }
242
+
228
243
  .option b {
229
244
  color: var(--vscode-list-highlightForeground, #2aaaff);
230
245
  }
@@ -303,7 +318,10 @@ export default [
303
318
 
304
319
  .option-label {
305
320
  display: block;
321
+ overflow: hidden;
306
322
  pointer-events: none;
323
+ text-overflow: ellipsis;
324
+ white-space: nowrap;
307
325
  width: 100%;
308
326
  }
309
327
 
@@ -321,11 +339,13 @@ export default [
321
339
  .checkbox-icon {
322
340
  align-items: center;
323
341
  background-color: var(--vscode-checkbox-background, #313131);
324
- border: 1px solid var(--vscode-checkbox-border);
325
342
  border-radius: 2px;
343
+ border: 1px solid var(--vscode-checkbox-border);
326
344
  box-sizing: border-box;
327
345
  color: var(--vscode-checkbox-foreground);
328
- display: inline-flex;
346
+ display: flex;
347
+ flex-basis: 15px;
348
+ flex-shrink: 0;
329
349
  height: 15px;
330
350
  justify-content: center;
331
351
  margin-right: 5px;
@@ -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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsYF;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 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 display: none;\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 .dropdown.open {\n display: block;\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 .scrollable {\n display: block;\n max-height: 222px;\n margin: 1px;\n outline: none;\n overflow: hidden;\n }\n\n .options {\n box-sizing: border-box;\n cursor: pointer;\n list-style: none;\n margin: 0;\n padding: 0;\n }\n\n .option {\n box-sizing: border-box;\n color: var(--vscode-foreground, #cccccc);\n cursor: pointer;\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: 20px;\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 overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\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 align-items: center;\n background-color: var(--vscode-checkbox-background, #313131);\n border: 1px solid var(--vscode-checkbox-border);\n border-radius: 2px;\n box-sizing: border-box;\n color: var(--vscode-checkbox-foreground);\n display: inline-flex;\n height: 15px;\n justify-content: center;\n margin-right: 5px;\n overflow: hidden;\n position: relative;\n width: 15px;\n }\n\n .checkbox-icon svg {\n display: none;\n height: 13px;\n width: 13px;\n }\n\n .checkbox-icon.checked svg {\n display: block;\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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0ZF;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 padding-right: 20px;\n text-overflow: ellipsis;\n white-space: nowrap;\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 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 bottom: unset;\n box-sizing: border-box;\n display: none;\n padding-bottom: 2px;\n padding-left: 0;\n padding-right: 0;\n padding-top: 0;\n right: unset;\n }\n\n .dropdown.open {\n display: block;\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: unset;\n }\n\n :host(:focus) .dropdown,\n :host([focused]) .dropdown {\n border-color: var(--vscode-focusBorder, #0078d4);\n }\n\n .scrollable {\n display: block;\n max-height: 222px;\n margin: 1px;\n outline: none;\n overflow: hidden;\n }\n\n .options {\n box-sizing: border-box;\n cursor: pointer;\n list-style: none;\n margin: 0;\n padding: 0;\n }\n\n .option {\n box-sizing: border-box;\n color: var(--vscode-foreground, #cccccc);\n cursor: pointer;\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: 20px;\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 overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n }\n\n .option.single-select {\n display: block;\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n }\n\n .option.multi-select {\n align-items: center;\n display: flex;\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 overflow: hidden;\n pointer-events: none;\n text-overflow: ellipsis;\n white-space: nowrap;\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 align-items: center;\n background-color: var(--vscode-checkbox-background, #313131);\n border-radius: 2px;\n border: 1px solid var(--vscode-checkbox-border);\n box-sizing: border-box;\n color: var(--vscode-checkbox-foreground);\n display: flex;\n flex-basis: 15px;\n flex-shrink: 0;\n height: 15px;\n justify-content: center;\n margin-right: 5px;\n overflow: hidden;\n position: relative;\n width: 15px;\n }\n\n .checkbox-icon svg {\n display: none;\n height: 13px;\n width: 13px;\n }\n\n .checkbox-icon.checked svg {\n display: block;\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"]}
@@ -7,9 +7,6 @@ import { OptionListController } from './OptionListController.js';
7
7
  import '../../vscode-scrollable/vscode-scrollable.js';
8
8
  export declare const VISIBLE_OPTS = 10;
9
9
  export declare const OPT_HEIGHT = 22;
10
- /**
11
- * @cssprop --dropdown-z-index - workaround for dropdown z-index issues
12
- */
13
10
  export declare class VscodeSelectBase extends VscElement {
14
11
  creatable: boolean;
15
12
  /**
@@ -62,6 +59,7 @@ export declare class VscodeSelectBase extends VscElement {
62
59
  */
63
60
  position: 'above' | 'below';
64
61
  private _assignedOptions;
62
+ private _dropdownEl;
65
63
  protected _opts: OptionListController;
66
64
  constructor();
67
65
  connectedCallback(): void;
@@ -69,7 +67,6 @@ export declare class VscodeSelectBase extends VscElement {
69
67
  protected _firstUpdateCompleted: boolean;
70
68
  protected firstUpdated(_changedProperties: PropertyValues): void;
71
69
  protected willUpdate(changedProperties: PropertyValues): void;
72
- protected update(changedProperties: PropertyValues): void;
73
70
  protected _currentDescription: string;
74
71
  protected _filter: FilterMethod;
75
72
  protected get _filteredOptions(): InternalOption[];
@@ -94,7 +91,7 @@ export declare class VscodeSelectBase extends VscElement {
94
91
  protected _scrollActiveElementToTop(): void;
95
92
  private _adjustOptionListScrollPos;
96
93
  protected _onFaceClick(): void;
97
- private _onClickOutside;
94
+ private _handleDropdownToggle;
98
95
  private _onMouseMove;
99
96
  protected _onComboboxButtonClick(): void;
100
97
  protected _onComboboxButtonKeyDown(ev: KeyboardEvent): void;
@@ -117,6 +114,7 @@ export declare class VscodeSelectBase extends VscElement {
117
114
  protected _onComboboxInputClick(): void;
118
115
  protected _onComboboxInputSpaceKeyDown(ev: KeyboardEvent): void;
119
116
  protected _onOptionClick(_ev: MouseEvent): void;
117
+ private _handleWindowScroll;
120
118
  private _renderCheckbox;
121
119
  protected _renderOptions(): TemplateResult | TemplateResult[];
122
120
  protected _renderPlaceholderOption(isListEmpty: boolean): TemplateResult<1> | typeof nothing;
@@ -1 +1 @@
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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"}
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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"}
@@ -5,7 +5,7 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
5
5
  return c > 3 && r && Object.defineProperty(target, key, r), r;
6
6
  };
7
7
  import { html, render, nothing } from 'lit';
8
- import { property, queryAssignedElements, state } from 'lit/decorators.js';
8
+ import { property, query, queryAssignedElements, state } from 'lit/decorators.js';
9
9
  import { classMap } from 'lit/directives/class-map.js';
10
10
  import { ifDefined } from 'lit/directives/if-defined.js';
11
11
  import { repeat } from 'lit/directives/repeat.js';
@@ -20,9 +20,6 @@ import { checkIcon } from './template-elements.js';
20
20
  import '../../vscode-scrollable/vscode-scrollable.js';
21
21
  export const VISIBLE_OPTS = 10;
22
22
  export const OPT_HEIGHT = 22;
23
- /**
24
- * @cssprop --dropdown-z-index - workaround for dropdown z-index issues
25
- */
26
23
  export class VscodeSelectBase extends VscElement {
27
24
  /**
28
25
  * Options can be filtered by typing into a text input field.
@@ -101,6 +98,7 @@ export class VscodeSelectBase extends VscElement {
101
98
  disabled,
102
99
  }));
103
100
  }
101
+ //#region lifecycle callbacks
104
102
  constructor() {
105
103
  super();
106
104
  this.creatable = false;
@@ -127,6 +125,7 @@ export class VscodeSelectBase extends VscElement {
127
125
  this.position = 'below';
128
126
  this._opts = new OptionListController(this);
129
127
  this._firstUpdateCompleted = false;
128
+ //#endregion
130
129
  this._currentDescription = '';
131
130
  this._filter = 'fuzzy';
132
131
  this._selectedIndexes = [];
@@ -139,13 +138,6 @@ export class VscodeSelectBase extends VscElement {
139
138
  this._isHoverForbidden = false;
140
139
  this._disabled = false;
141
140
  this._originalTabIndex = undefined;
142
- this._onClickOutside = (event) => {
143
- const path = event.composedPath();
144
- const found = path.findIndex((et) => et === this);
145
- if (found === -1) {
146
- this.open = false;
147
- }
148
- };
149
141
  this._onMouseMove = () => {
150
142
  this._isHoverForbidden = false;
151
143
  window.removeEventListener('mousemove', this._onMouseMove);
@@ -180,6 +172,9 @@ export class VscodeSelectBase extends VscElement {
180
172
  this._onComponentBlur = () => {
181
173
  this.focused = false;
182
174
  };
175
+ this._handleWindowScroll = () => {
176
+ this.open = false;
177
+ };
183
178
  this.addEventListener('vsc-option-state-change', (ev) => {
184
179
  ev.stopPropagation();
185
180
  this._setStateFromSlottedElements();
@@ -206,17 +201,18 @@ export class VscodeSelectBase extends VscElement {
206
201
  if (changedProperties.has('required') && this._firstUpdateCompleted) {
207
202
  this._manageRequired();
208
203
  }
209
- }
210
- update(changedProperties) {
211
- super.update(changedProperties);
212
- if (changedProperties.has('open')) {
204
+ if (changedProperties.has('open') && this._firstUpdateCompleted) {
213
205
  if (this.open) {
206
+ this._dropdownEl.showPopover();
207
+ window.addEventListener('scroll', this._handleWindowScroll, {
208
+ capture: true,
209
+ });
214
210
  this._opts.activateDefault();
215
211
  this._scrollActiveElementToTop();
216
- window.addEventListener('click', this._onClickOutside);
217
212
  }
218
213
  else {
219
- window.removeEventListener('click', this._onClickOutside);
214
+ this._dropdownEl.hidePopover();
215
+ window.removeEventListener('scroll', this._handleWindowScroll);
220
216
  }
221
217
  }
222
218
  }
@@ -324,6 +320,9 @@ export class VscodeSelectBase extends VscElement {
324
320
  _onFaceClick() {
325
321
  this.open = !this.open;
326
322
  }
323
+ _handleDropdownToggle(event) {
324
+ this.open = event.newState === 'open';
325
+ }
327
326
  _onComboboxButtonClick() {
328
327
  this._toggleComboboxDropdown();
329
328
  }
@@ -496,6 +495,8 @@ export class VscodeSelectBase extends VscElement {
496
495
  active,
497
496
  disabled: op.disabled,
498
497
  option: true,
498
+ 'single-select': !this._opts.multiSelect,
499
+ 'multi-select': this._opts.multiSelect,
499
500
  selected,
500
501
  };
501
502
  const labelText = (op.ranges?.length ?? 0 > 0)
@@ -576,8 +577,22 @@ export class VscodeSelectBase extends VscElement {
576
577
  ? this._opts.numOfVisibleOptions + 1
577
578
  : this._opts.numOfVisibleOptions;
578
579
  const scrollPaneHeight = Math.min(visibleOptions * OPT_HEIGHT, VISIBLE_OPTS * OPT_HEIGHT);
580
+ const cr = this.getBoundingClientRect();
581
+ const dropdownStyles = {
582
+ width: `${cr.width}px`,
583
+ left: `${cr.left}px`,
584
+ top: this.position === 'below' ? `${cr.top + cr.height}px` : 'unset',
585
+ bottom: this.position === 'below'
586
+ ? 'unset'
587
+ : `${document.documentElement.clientHeight - cr.top}px`,
588
+ };
579
589
  return html `
580
- <div class=${classMap(classes)}>
590
+ <div
591
+ class=${classMap(classes)}
592
+ popover="auto"
593
+ @toggle=${this._handleDropdownToggle}
594
+ .style=${stylePropertyMap(dropdownStyles)}
595
+ >
581
596
  ${this.position === 'above' ? this._renderDescription() : nothing}
582
597
  <vscode-scrollable
583
598
  always-visible
@@ -633,6 +648,9 @@ __decorate([
633
648
  selector: 'vscode-option',
634
649
  })
635
650
  ], VscodeSelectBase.prototype, "_assignedOptions", void 0);
651
+ __decorate([
652
+ query('.dropdown', true)
653
+ ], VscodeSelectBase.prototype, "_dropdownEl", void 0);
636
654
  __decorate([
637
655
  state()
638
656
  ], VscodeSelectBase.prototype, "_currentDescription", void 0);
@@ -1 +1 @@
1
- {"version":3,"file":"vscode-select-base.js","sourceRoot":"","sources":["../../../src/includes/vscode-select/vscode-select-base.ts"],"names":[],"mappings":"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","sourcesContent":["import {html, render, nothing, TemplateResult, PropertyValues} from 'lit';\nimport {property, queryAssignedElements, state} from 'lit/decorators.js';\nimport {classMap} from 'lit/directives/class-map.js';\nimport {ifDefined} from 'lit/directives/if-defined.js';\nimport {repeat} from 'lit/directives/repeat.js';\nimport {when} from 'lit/directives/when.js';\nimport '../../vscode-button/index.js';\nimport '../../vscode-option/index.js';\nimport {VscodeOption} from '../../vscode-option/index.js';\nimport {stylePropertyMap} from '../style-property-map.js';\nimport {VscElement} from '../VscElement.js';\nimport {filterOptionsByPattern, highlightRanges} from './helpers.js';\nimport type {InternalOption, Option, FilterMethod} from './types.js';\nimport {OptionListController} from './OptionListController.js';\nimport {checkIcon} from './template-elements.js';\nimport '../../vscode-scrollable/vscode-scrollable.js';\n\nexport const VISIBLE_OPTS = 10;\nexport const OPT_HEIGHT = 22;\n\n/**\n * @cssprop --dropdown-z-index - workaround for dropdown z-index issues\n */\nexport class VscodeSelectBase extends VscElement {\n @property({type: Boolean, reflect: true})\n creatable = false;\n\n /**\n * Options can be filtered by typing into a text input field.\n */\n @property({type: Boolean, reflect: true})\n set combobox(enabled: boolean) {\n this._opts.comboboxMode = enabled;\n }\n get combobox() {\n return this._opts.comboboxMode;\n }\n\n /**\n * Accessible label for screen readers. When a `<vscode-label>` is connected\n * to the component, it will be filled automatically.\n */\n @property({reflect: true})\n label = '';\n\n /**\n * The element cannot be used and is not focusable.\n */\n @property({type: Boolean, reflect: true})\n set disabled(newState: boolean) {\n this._disabled = newState;\n this.ariaDisabled = newState ? 'true' : 'false';\n\n if (newState === true) {\n this._originalTabIndex = this.tabIndex;\n this.tabIndex = -1;\n } else {\n this.tabIndex = this._originalTabIndex ?? 0;\n this._originalTabIndex = undefined;\n }\n\n this.requestUpdate();\n }\n\n get disabled(): boolean {\n return this._disabled;\n }\n\n /**\n * Sets the invalid state manually.\n */\n @property({type: Boolean, reflect: true})\n invalid = false;\n\n /**\n * Search method in the filtered list within the combobox mode.\n *\n * - contains - The list item includes the searched pattern at any position.\n * - fuzzy - The list item contains the letters of the search pattern in the same order, but at any position.\n * - startsWith - The search pattern matches the beginning of the searched text.\n * - startsWithPerTerm - The search pattern matches the beginning of any word in the searched text.\n *\n * @default 'fuzzy'\n */\n @property()\n set filter(val: 'contains' | 'fuzzy' | 'startsWith' | 'startsWithPerTerm') {\n const validValues: FilterMethod[] = [\n 'contains',\n 'fuzzy',\n 'startsWith',\n 'startsWithPerTerm',\n ];\n\n let fm: FilterMethod;\n\n if (validValues.includes(val as FilterMethod)) {\n // this._filter = val as FilterMethod;\n fm = val;\n } else {\n // this._filter = 'fuzzy';\n // eslint-disable-next-line no-console\n console.warn(\n `[VSCode Webview Elements] Invalid filter: \"${val}\", fallback to default. Valid values are: \"contains\", \"fuzzy\", \"startsWith\", \"startsWithPerm\".`,\n this\n );\n fm = 'fuzzy';\n }\n\n this._opts.filterMethod = fm;\n }\n get filter(): 'contains' | 'fuzzy' | 'startsWith' | 'startsWithPerTerm' {\n return this._opts.filterMethod;\n }\n\n /**\n * Its value is true when element is focused.\n */\n @property({type: Boolean, reflect: true})\n focused = false;\n\n /**\n * Toggle the dropdown visibility.\n */\n @property({type: Boolean, reflect: true})\n open = false;\n\n /**\n * @attr [options=[]]\n * @type {Option[]}\n */\n @property({type: Array})\n set options(opts: Option[]) {\n this._opts.populate(opts);\n }\n get options(): Option[] {\n return this._opts.options.map(\n ({label, value, description, selected, disabled}) => ({\n label,\n value,\n description,\n selected,\n disabled,\n })\n );\n }\n\n /**\n * Position of the options list when visible.\n */\n @property({reflect: true})\n position: 'above' | 'below' = 'below';\n\n @queryAssignedElements({\n flatten: true,\n selector: 'vscode-option',\n })\n private _assignedOptions!: VscodeOption[];\n\n protected _opts = new OptionListController(this);\n\n constructor() {\n super();\n this.addEventListener('vsc-option-state-change', (ev) => {\n ev.stopPropagation();\n this._setStateFromSlottedElements();\n this.requestUpdate();\n });\n }\n\n override connectedCallback(): void {\n super.connectedCallback();\n this.addEventListener('keydown', this._onComponentKeyDown);\n this.addEventListener('focus', this._onComponentFocus);\n this.addEventListener('blur', this._onComponentBlur);\n this._setAutoFocus();\n }\n\n override disconnectedCallback(): void {\n super.disconnectedCallback();\n this.removeEventListener('keydown', this._onComponentKeyDown);\n this.removeEventListener('focus', this._onComponentFocus);\n this.removeEventListener('blur', this._onComponentBlur);\n }\n\n protected _firstUpdateCompleted = false;\n\n protected override firstUpdated(_changedProperties: PropertyValues): void {\n this._firstUpdateCompleted = true;\n }\n\n protected override willUpdate(changedProperties: PropertyValues): void {\n if (changedProperties.has('required') && this._firstUpdateCompleted) {\n this._manageRequired();\n }\n }\n\n protected override update(changedProperties: PropertyValues) {\n super.update(changedProperties);\n\n if (changedProperties.has('open')) {\n if (this.open) {\n this._opts.activateDefault();\n this._scrollActiveElementToTop();\n\n window.addEventListener('click', this._onClickOutside);\n } else {\n window.removeEventListener('click', this._onClickOutside);\n }\n }\n }\n\n @state()\n protected _currentDescription = '';\n\n @state()\n protected _filter: FilterMethod = 'fuzzy';\n\n @state()\n protected get _filteredOptions(): InternalOption[] {\n if (!this.combobox || this._opts.filterPattern === '') {\n return this._options;\n }\n\n return filterOptionsByPattern(\n this._options,\n this._opts.filterPattern,\n this._filter\n );\n }\n\n @state()\n protected _selectedIndexes: number[] = [];\n\n @state()\n protected _options: InternalOption[] = [];\n\n @state()\n protected _value = '';\n\n @state()\n protected _values: string[] = [];\n\n @state()\n protected _isPlaceholderOptionActive = false;\n\n @state()\n protected _isBeingFiltered = false;\n\n @state()\n protected _optionListScrollPos = 0;\n\n private _isHoverForbidden = false;\n private _disabled = false;\n private _originalTabIndex: number | undefined = undefined;\n\n private _setAutoFocus() {\n if (this.hasAttribute('autofocus')) {\n if (this.tabIndex < 0) {\n this.tabIndex = 0;\n }\n\n if (this.combobox) {\n this.updateComplete.then(() => {\n this.shadowRoot\n ?.querySelector<HTMLInputElement>('.combobox-input')!\n .focus();\n });\n } else {\n this.updateComplete.then(() => {\n this.shadowRoot\n ?.querySelector<HTMLInputElement>('.select-face')!\n .focus();\n });\n }\n }\n }\n\n protected get _isSuggestedOptionVisible() {\n if (!(this.combobox && this.creatable)) {\n return false;\n }\n\n const filterPatternExistsAsOption =\n this._opts.getOptionByValue(this._opts.filterPattern) !== null;\n const filtered = this._opts.filterPattern.length > 0;\n return !filterPatternExistsAsOption && filtered;\n }\n\n protected _manageRequired() {}\n\n protected _setStateFromSlottedElements() {\n const optionElements = this._assignedOptions ?? [];\n this._opts.clear();\n\n optionElements.forEach((el) => {\n const {innerText, description, disabled} = el;\n const value = typeof el.value === 'string' ? el.value : innerText.trim();\n const selected = el.selected ?? false;\n const op: Option = {\n label: innerText.trim(),\n value,\n description,\n selected,\n disabled,\n };\n\n this._opts.add(op);\n });\n }\n\n protected _createSuggestedOption() {\n const nextSelectedIndex = this._opts.numOptions;\n const op = document.createElement('vscode-option');\n op.value = this._opts.filterPattern;\n render(this._opts.filterPattern, op);\n this.appendChild(op);\n\n return nextSelectedIndex;\n }\n\n protected _dispatchChangeEvent(): void {\n this.dispatchEvent(new Event('change'));\n this.dispatchEvent(new Event('input'));\n }\n\n protected async _createAndSelectSuggestedOption() {}\n\n protected _toggleComboboxDropdown() {\n this._opts.filterPattern = '';\n this.open = !this.open;\n }\n\n protected _scrollActiveElementToTop() {\n this._optionListScrollPos = Math.floor(\n this._opts.relativeActiveIndex * OPT_HEIGHT\n );\n }\n\n private async _adjustOptionListScrollPos(\n direction: 'down' | 'up',\n optionIndex: number\n ) {\n let numOpts = this._opts.numOfVisibleOptions;\n const suggestedOptionVisible = this._isSuggestedOptionVisible;\n\n if (suggestedOptionVisible) {\n numOpts += 1;\n }\n\n if (numOpts <= VISIBLE_OPTS) {\n return;\n }\n\n this._isHoverForbidden = true;\n window.addEventListener('mousemove', this._onMouseMove);\n\n const ulScrollTop = this._optionListScrollPos;\n const liPosY = optionIndex * OPT_HEIGHT;\n\n const fullyVisible =\n liPosY >= ulScrollTop &&\n liPosY <= ulScrollTop + VISIBLE_OPTS * OPT_HEIGHT - OPT_HEIGHT;\n\n if (direction === 'down') {\n if (!fullyVisible) {\n this._optionListScrollPos =\n optionIndex * OPT_HEIGHT - (VISIBLE_OPTS - 1) * OPT_HEIGHT;\n }\n }\n\n if (direction === 'up') {\n if (!fullyVisible) {\n this._optionListScrollPos = Math.floor(\n this._opts.relativeActiveIndex * OPT_HEIGHT\n );\n }\n }\n }\n\n //#region event handlers\n protected _onFaceClick(): void {\n this.open = !this.open;\n }\n\n private _onClickOutside = (event: MouseEvent): void => {\n const path = event.composedPath();\n const found = path.findIndex((et) => et === this);\n\n if (found === -1) {\n this.open = false;\n }\n };\n\n private _onMouseMove = () => {\n this._isHoverForbidden = false;\n window.removeEventListener('mousemove', this._onMouseMove);\n };\n\n protected _onComboboxButtonClick(): void {\n this._toggleComboboxDropdown();\n }\n\n protected _onComboboxButtonKeyDown(ev: KeyboardEvent): void {\n if (ev.key === 'Enter') {\n this._toggleComboboxDropdown();\n }\n }\n\n private _onOptionListScroll = (ev: CustomEvent<number>) => {\n this._optionListScrollPos = ev.detail;\n };\n\n protected _onOptionMouseOver(ev: MouseEvent): void {\n if (this._isHoverForbidden) {\n return;\n }\n\n const el = ev.target as HTMLElement;\n\n if (!el.matches('.option')) {\n return;\n }\n\n if (el.matches('.placeholder')) {\n this._isPlaceholderOptionActive = true;\n this._opts.activeIndex = -1;\n } else {\n this._isPlaceholderOptionActive = false;\n this._opts.activeIndex = +el.dataset.index!;\n }\n }\n\n protected _onPlaceholderOptionMouseOut() {\n this._isPlaceholderOptionActive = false;\n }\n\n protected _onNoOptionsClick(ev: MouseEvent) {\n ev.stopPropagation();\n }\n\n protected _onEnterKeyDown(ev: KeyboardEvent): void {\n this._isBeingFiltered = false;\n const clickedOnAcceptButton = ev?.composedPath\n ? ev\n .composedPath()\n .find((el) =>\n (el as HTMLElement).matches\n ? (el as HTMLElement).matches('vscode-button.button-accept')\n : false\n )\n : false;\n\n if (clickedOnAcceptButton) {\n return;\n }\n }\n\n private _onSpaceKeyDown() {\n if (!this.open) {\n this.open = true;\n return;\n }\n }\n\n protected _onArrowUpKeyDown(): void {\n if (this.open) {\n if (this._opts.activeIndex <= 0 && !(this.combobox && this.creatable)) {\n return;\n }\n\n if (this._isPlaceholderOptionActive) {\n const optionIndex = this._opts.numOfVisibleOptions - 1;\n this._opts.activeIndex = optionIndex;\n this._isPlaceholderOptionActive = false;\n } else {\n const prevOp = this._opts.prev();\n\n if (prevOp !== null) {\n this._opts.activeIndex = prevOp?.index ?? -1;\n const prevSelectableIndex = prevOp?.filteredIndex ?? -1;\n\n if (prevSelectableIndex > -1) {\n this._adjustOptionListScrollPos('up', prevSelectableIndex);\n }\n }\n }\n } else {\n this.open = true;\n this._opts.activateDefault();\n }\n }\n\n protected _onArrowDownKeyDown(): void {\n let numOpts = this._opts.numOfVisibleOptions;\n const suggestedOptionVisible = this._isSuggestedOptionVisible;\n\n if (suggestedOptionVisible) {\n numOpts += 1;\n }\n\n if (this.open) {\n if (this._isPlaceholderOptionActive && this._opts.activeIndex === -1) {\n return;\n }\n\n const nextOp = this._opts.next();\n\n if (suggestedOptionVisible && nextOp === null) {\n this._isPlaceholderOptionActive = true;\n this._adjustOptionListScrollPos('down', numOpts - 1);\n this._opts.activeIndex = -1;\n } else if (nextOp !== null) {\n const nextSelectableIndex = nextOp?.filteredIndex ?? -1;\n this._opts.activeIndex = nextOp?.index ?? -1;\n\n if (nextSelectableIndex > -1) {\n this._adjustOptionListScrollPos('down', nextSelectableIndex);\n }\n }\n } else {\n this.open = true;\n this._opts.activateDefault();\n }\n }\n\n private _onEscapeKeyDown() {\n this.open = false;\n }\n\n private _onComponentKeyDown = (event: KeyboardEvent) => {\n if ([' ', 'ArrowUp', 'ArrowDown', 'Escape'].includes(event.key)) {\n event.stopPropagation();\n event.preventDefault();\n }\n\n if (event.key === 'Enter') {\n this._onEnterKeyDown(event);\n }\n\n if (event.key === ' ') {\n this._onSpaceKeyDown();\n }\n\n if (event.key === 'Escape') {\n this._onEscapeKeyDown();\n }\n\n if (event.key === 'ArrowUp') {\n this._onArrowUpKeyDown();\n }\n\n if (event.key === 'ArrowDown') {\n this._onArrowDownKeyDown();\n }\n };\n\n private _onComponentFocus = () => {\n this.focused = true;\n };\n\n private _onComponentBlur = () => {\n this.focused = false;\n };\n\n protected _onSlotChange(): void {\n this._setStateFromSlottedElements();\n this.requestUpdate();\n }\n\n protected _onComboboxInputFocus(ev: FocusEvent): void {\n (ev.target as HTMLInputElement).select();\n this._isBeingFiltered = false;\n this._opts.filterPattern = '';\n }\n\n protected _onComboboxInputBlur() {\n this._isBeingFiltered = false;\n }\n\n protected _onComboboxInputInput(ev: InputEvent): void {\n this._isBeingFiltered = true;\n this._opts.filterPattern = (ev.target as HTMLInputElement).value;\n this._opts.activeIndex = -1;\n this.open = true;\n }\n\n protected _onComboboxInputClick(): void {\n this._isBeingFiltered = this._opts.filterPattern !== '';\n this.open = true;\n }\n\n protected _onComboboxInputSpaceKeyDown(ev: KeyboardEvent) {\n if (ev.key === ' ') {\n ev.stopPropagation();\n }\n }\n\n protected _onOptionClick(_ev: MouseEvent) {\n this._isBeingFiltered = false;\n return;\n }\n //#endregion\n\n //#region render functions\n private _renderCheckbox(\n checked: boolean,\n label: string | TemplateResult | TemplateResult[]\n ) {\n const checkboxClasses = {\n 'checkbox-icon': true,\n checked,\n };\n\n return html`<span class=${classMap(checkboxClasses)}>${checkIcon}</span\n ><span class=\"option-label\">${label}</span>`;\n }\n\n protected _renderOptions(): TemplateResult | TemplateResult[] {\n const list = this._opts.options;\n\n return html`\n <ul\n aria-label=${ifDefined(this.label ?? undefined)}\n aria-multiselectable=${ifDefined(\n this._opts.multiSelect ? 'true' : undefined\n )}\n class=\"options\"\n id=\"select-listbox\"\n role=\"listbox\"\n tabindex=\"-1\"\n @click=${this._onOptionClick}\n @mouseover=${this._onOptionMouseOver}\n >\n ${repeat(\n list,\n (op) => op.index,\n (op, index) => {\n if (!op.visible) {\n return nothing;\n }\n\n const active = op.index === this._opts.activeIndex && !op.disabled;\n const selected = this._opts.getIsIndexSelected(op.index);\n\n const optionClasses = {\n active,\n disabled: op.disabled,\n option: true,\n selected,\n };\n\n const labelText =\n (op.ranges?.length ?? 0 > 0)\n ? highlightRanges(op.label, op.ranges ?? [])\n : op.label;\n\n return html`\n <li\n aria-selected=${selected ? 'true' : 'false'}\n class=${classMap(optionClasses)}\n data-index=${op.index}\n data-filtered-index=${index}\n id=${`op-${op.index}`}\n role=\"option\"\n tabindex=\"-1\"\n >\n ${when(\n this._opts.multiSelect,\n () => this._renderCheckbox(selected, labelText),\n () => labelText\n )}\n </li>\n `;\n }\n )}\n ${this._renderPlaceholderOption(this._opts.numOfVisibleOptions < 1)}\n </ul>\n `;\n }\n\n protected _renderPlaceholderOption(isListEmpty: boolean) {\n if (!this.combobox) {\n return nothing;\n }\n\n const foundOption = this._opts.getOptionByLabel(this._opts.filterPattern);\n\n if (foundOption) {\n return nothing;\n }\n\n if (this.creatable && this._opts.filterPattern.length > 0) {\n return html`<li\n class=${classMap({\n option: true,\n placeholder: true,\n active: this._isPlaceholderOptionActive,\n })}\n @mouseout=${this._onPlaceholderOptionMouseOut}\n >\n Add \"${this._opts.filterPattern}\"\n </li>`;\n } else {\n return isListEmpty\n ? html`<li class=\"no-options\" @click=${this._onNoOptionsClick}>\n No options\n </li>`\n : nothing;\n }\n }\n\n private _renderDescription() {\n const op = this._opts.getActiveOption();\n\n if (!op) {\n return nothing;\n }\n\n const {description} = op;\n\n return description\n ? html`<div class=\"description\">${description}</div>`\n : nothing;\n }\n\n protected _renderSelectFace(): TemplateResult {\n return html`${nothing}`;\n }\n\n protected _renderComboboxFace(): TemplateResult {\n return html`${nothing}`;\n }\n\n protected _renderDropdownControls(): TemplateResult {\n return html`${nothing}`;\n }\n\n protected _renderDropdown() {\n const classes = {\n dropdown: true,\n multiple: this._opts.multiSelect,\n open: this.open,\n };\n\n const visibleOptions =\n this._isSuggestedOptionVisible || this._opts.numOfVisibleOptions === 0\n ? this._opts.numOfVisibleOptions + 1\n : this._opts.numOfVisibleOptions;\n\n const scrollPaneHeight = Math.min(\n visibleOptions * OPT_HEIGHT,\n VISIBLE_OPTS * OPT_HEIGHT\n );\n\n return html`\n <div class=${classMap(classes)}>\n ${this.position === 'above' ? this._renderDescription() : nothing}\n <vscode-scrollable\n always-visible\n class=\"scrollable\"\n min-thumb-size=\"40\"\n tabindex=\"-1\"\n @vsc-scrollable-scroll=${this._onOptionListScroll}\n .scrollPos=${this._optionListScrollPos}\n .style=${stylePropertyMap({\n height: `${scrollPaneHeight}px`,\n })}\n >\n ${this._renderOptions()} ${this._renderDropdownControls()}\n </vscode-scrollable>\n ${this.position === 'below' ? this._renderDescription() : nothing}\n </div>\n `;\n }\n //#endregion\n}\n"]}
1
+ {"version":3,"file":"vscode-select-base.js","sourceRoot":"","sources":["../../../src/includes/vscode-select/vscode-select-base.ts"],"names":[],"mappings":"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","sourcesContent":["import {html, render, nothing, TemplateResult, PropertyValues} from 'lit';\nimport {property, query, queryAssignedElements, state} from 'lit/decorators.js';\nimport {classMap} from 'lit/directives/class-map.js';\nimport {ifDefined} from 'lit/directives/if-defined.js';\nimport {repeat} from 'lit/directives/repeat.js';\nimport {when} from 'lit/directives/when.js';\nimport '../../vscode-button/index.js';\nimport '../../vscode-option/index.js';\nimport {VscodeOption} from '../../vscode-option/index.js';\nimport {stylePropertyMap} from '../style-property-map.js';\nimport {VscElement} from '../VscElement.js';\nimport {filterOptionsByPattern, highlightRanges} from './helpers.js';\nimport type {InternalOption, Option, FilterMethod} from './types.js';\nimport {OptionListController} from './OptionListController.js';\nimport {checkIcon} from './template-elements.js';\nimport '../../vscode-scrollable/vscode-scrollable.js';\n\nexport const VISIBLE_OPTS = 10;\nexport const OPT_HEIGHT = 22;\n\nexport class VscodeSelectBase extends VscElement {\n @property({type: Boolean, reflect: true})\n creatable = false;\n\n /**\n * Options can be filtered by typing into a text input field.\n */\n @property({type: Boolean, reflect: true})\n set combobox(enabled: boolean) {\n this._opts.comboboxMode = enabled;\n }\n get combobox() {\n return this._opts.comboboxMode;\n }\n\n /**\n * Accessible label for screen readers. When a `<vscode-label>` is connected\n * to the component, it will be filled automatically.\n */\n @property({reflect: true})\n label = '';\n\n /**\n * The element cannot be used and is not focusable.\n */\n @property({type: Boolean, reflect: true})\n set disabled(newState: boolean) {\n this._disabled = newState;\n this.ariaDisabled = newState ? 'true' : 'false';\n\n if (newState === true) {\n this._originalTabIndex = this.tabIndex;\n this.tabIndex = -1;\n } else {\n this.tabIndex = this._originalTabIndex ?? 0;\n this._originalTabIndex = undefined;\n }\n\n this.requestUpdate();\n }\n\n get disabled(): boolean {\n return this._disabled;\n }\n\n /**\n * Sets the invalid state manually.\n */\n @property({type: Boolean, reflect: true})\n invalid = false;\n\n /**\n * Search method in the filtered list within the combobox mode.\n *\n * - contains - The list item includes the searched pattern at any position.\n * - fuzzy - The list item contains the letters of the search pattern in the same order, but at any position.\n * - startsWith - The search pattern matches the beginning of the searched text.\n * - startsWithPerTerm - The search pattern matches the beginning of any word in the searched text.\n *\n * @default 'fuzzy'\n */\n @property()\n set filter(val: 'contains' | 'fuzzy' | 'startsWith' | 'startsWithPerTerm') {\n const validValues: FilterMethod[] = [\n 'contains',\n 'fuzzy',\n 'startsWith',\n 'startsWithPerTerm',\n ];\n\n let fm: FilterMethod;\n\n if (validValues.includes(val as FilterMethod)) {\n // this._filter = val as FilterMethod;\n fm = val;\n } else {\n // this._filter = 'fuzzy';\n // eslint-disable-next-line no-console\n console.warn(\n `[VSCode Webview Elements] Invalid filter: \"${val}\", fallback to default. Valid values are: \"contains\", \"fuzzy\", \"startsWith\", \"startsWithPerm\".`,\n this\n );\n fm = 'fuzzy';\n }\n\n this._opts.filterMethod = fm;\n }\n get filter(): 'contains' | 'fuzzy' | 'startsWith' | 'startsWithPerTerm' {\n return this._opts.filterMethod;\n }\n\n /**\n * Its value is true when element is focused.\n */\n @property({type: Boolean, reflect: true})\n focused = false;\n\n /**\n * Toggle the dropdown visibility.\n */\n @property({type: Boolean, reflect: true})\n open = false;\n\n /**\n * @attr [options=[]]\n * @type {Option[]}\n */\n @property({type: Array})\n set options(opts: Option[]) {\n this._opts.populate(opts);\n }\n get options(): Option[] {\n return this._opts.options.map(\n ({label, value, description, selected, disabled}) => ({\n label,\n value,\n description,\n selected,\n disabled,\n })\n );\n }\n\n /**\n * Position of the options list when visible.\n */\n @property({reflect: true})\n position: 'above' | 'below' = 'below';\n\n @queryAssignedElements({\n flatten: true,\n selector: 'vscode-option',\n })\n private _assignedOptions!: VscodeOption[];\n\n @query('.dropdown', true)\n private _dropdownEl!: HTMLDivElement;\n\n protected _opts = new OptionListController(this);\n\n //#region lifecycle callbacks\n\n constructor() {\n super();\n this.addEventListener('vsc-option-state-change', (ev) => {\n ev.stopPropagation();\n this._setStateFromSlottedElements();\n this.requestUpdate();\n });\n }\n\n override connectedCallback(): void {\n super.connectedCallback();\n this.addEventListener('keydown', this._onComponentKeyDown);\n this.addEventListener('focus', this._onComponentFocus);\n this.addEventListener('blur', this._onComponentBlur);\n this._setAutoFocus();\n }\n\n override disconnectedCallback(): void {\n super.disconnectedCallback();\n this.removeEventListener('keydown', this._onComponentKeyDown);\n this.removeEventListener('focus', this._onComponentFocus);\n this.removeEventListener('blur', this._onComponentBlur);\n }\n\n protected _firstUpdateCompleted = false;\n\n protected override firstUpdated(_changedProperties: PropertyValues): void {\n this._firstUpdateCompleted = true;\n }\n\n protected override willUpdate(changedProperties: PropertyValues): void {\n if (changedProperties.has('required') && this._firstUpdateCompleted) {\n this._manageRequired();\n }\n\n if (changedProperties.has('open') && this._firstUpdateCompleted) {\n if (this.open) {\n this._dropdownEl.showPopover();\n\n window.addEventListener('scroll', this._handleWindowScroll, {\n capture: true,\n });\n\n this._opts.activateDefault();\n this._scrollActiveElementToTop();\n } else {\n this._dropdownEl.hidePopover();\n\n window.removeEventListener('scroll', this._handleWindowScroll);\n }\n }\n }\n\n //#endregion\n\n @state()\n protected _currentDescription = '';\n\n @state()\n protected _filter: FilterMethod = 'fuzzy';\n\n @state()\n protected get _filteredOptions(): InternalOption[] {\n if (!this.combobox || this._opts.filterPattern === '') {\n return this._options;\n }\n\n return filterOptionsByPattern(\n this._options,\n this._opts.filterPattern,\n this._filter\n );\n }\n\n @state()\n protected _selectedIndexes: number[] = [];\n\n @state()\n protected _options: InternalOption[] = [];\n\n @state()\n protected _value = '';\n\n @state()\n protected _values: string[] = [];\n\n @state()\n protected _isPlaceholderOptionActive = false;\n\n @state()\n protected _isBeingFiltered = false;\n\n @state()\n protected _optionListScrollPos = 0;\n\n private _isHoverForbidden = false;\n private _disabled = false;\n private _originalTabIndex: number | undefined = undefined;\n\n private _setAutoFocus() {\n if (this.hasAttribute('autofocus')) {\n if (this.tabIndex < 0) {\n this.tabIndex = 0;\n }\n\n if (this.combobox) {\n this.updateComplete.then(() => {\n this.shadowRoot\n ?.querySelector<HTMLInputElement>('.combobox-input')!\n .focus();\n });\n } else {\n this.updateComplete.then(() => {\n this.shadowRoot\n ?.querySelector<HTMLInputElement>('.select-face')!\n .focus();\n });\n }\n }\n }\n\n protected get _isSuggestedOptionVisible() {\n if (!(this.combobox && this.creatable)) {\n return false;\n }\n\n const filterPatternExistsAsOption =\n this._opts.getOptionByValue(this._opts.filterPattern) !== null;\n const filtered = this._opts.filterPattern.length > 0;\n return !filterPatternExistsAsOption && filtered;\n }\n\n protected _manageRequired() {}\n\n protected _setStateFromSlottedElements() {\n const optionElements = this._assignedOptions ?? [];\n this._opts.clear();\n\n optionElements.forEach((el) => {\n const {innerText, description, disabled} = el;\n const value = typeof el.value === 'string' ? el.value : innerText.trim();\n const selected = el.selected ?? false;\n const op: Option = {\n label: innerText.trim(),\n value,\n description,\n selected,\n disabled,\n };\n\n this._opts.add(op);\n });\n }\n\n protected _createSuggestedOption() {\n const nextSelectedIndex = this._opts.numOptions;\n const op = document.createElement('vscode-option');\n op.value = this._opts.filterPattern;\n render(this._opts.filterPattern, op);\n this.appendChild(op);\n\n return nextSelectedIndex;\n }\n\n protected _dispatchChangeEvent(): void {\n this.dispatchEvent(new Event('change'));\n this.dispatchEvent(new Event('input'));\n }\n\n protected async _createAndSelectSuggestedOption() {}\n\n protected _toggleComboboxDropdown() {\n this._opts.filterPattern = '';\n this.open = !this.open;\n }\n\n protected _scrollActiveElementToTop() {\n this._optionListScrollPos = Math.floor(\n this._opts.relativeActiveIndex * OPT_HEIGHT\n );\n }\n\n private async _adjustOptionListScrollPos(\n direction: 'down' | 'up',\n optionIndex: number\n ) {\n let numOpts = this._opts.numOfVisibleOptions;\n const suggestedOptionVisible = this._isSuggestedOptionVisible;\n\n if (suggestedOptionVisible) {\n numOpts += 1;\n }\n\n if (numOpts <= VISIBLE_OPTS) {\n return;\n }\n\n this._isHoverForbidden = true;\n window.addEventListener('mousemove', this._onMouseMove);\n\n const ulScrollTop = this._optionListScrollPos;\n const liPosY = optionIndex * OPT_HEIGHT;\n\n const fullyVisible =\n liPosY >= ulScrollTop &&\n liPosY <= ulScrollTop + VISIBLE_OPTS * OPT_HEIGHT - OPT_HEIGHT;\n\n if (direction === 'down') {\n if (!fullyVisible) {\n this._optionListScrollPos =\n optionIndex * OPT_HEIGHT - (VISIBLE_OPTS - 1) * OPT_HEIGHT;\n }\n }\n\n if (direction === 'up') {\n if (!fullyVisible) {\n this._optionListScrollPos = Math.floor(\n this._opts.relativeActiveIndex * OPT_HEIGHT\n );\n }\n }\n }\n\n //#region event handlers\n protected _onFaceClick(): void {\n this.open = !this.open;\n }\n\n private _handleDropdownToggle(event: ToggleEvent) {\n this.open = event.newState === 'open';\n }\n\n private _onMouseMove = () => {\n this._isHoverForbidden = false;\n window.removeEventListener('mousemove', this._onMouseMove);\n };\n\n protected _onComboboxButtonClick(): void {\n this._toggleComboboxDropdown();\n }\n\n protected _onComboboxButtonKeyDown(ev: KeyboardEvent): void {\n if (ev.key === 'Enter') {\n this._toggleComboboxDropdown();\n }\n }\n\n private _onOptionListScroll = (ev: CustomEvent<number>) => {\n this._optionListScrollPos = ev.detail;\n };\n\n protected _onOptionMouseOver(ev: MouseEvent): void {\n if (this._isHoverForbidden) {\n return;\n }\n\n const el = ev.target as HTMLElement;\n\n if (!el.matches('.option')) {\n return;\n }\n\n if (el.matches('.placeholder')) {\n this._isPlaceholderOptionActive = true;\n this._opts.activeIndex = -1;\n } else {\n this._isPlaceholderOptionActive = false;\n this._opts.activeIndex = +el.dataset.index!;\n }\n }\n\n protected _onPlaceholderOptionMouseOut() {\n this._isPlaceholderOptionActive = false;\n }\n\n protected _onNoOptionsClick(ev: MouseEvent) {\n ev.stopPropagation();\n }\n\n protected _onEnterKeyDown(ev: KeyboardEvent): void {\n this._isBeingFiltered = false;\n const clickedOnAcceptButton = ev?.composedPath\n ? ev\n .composedPath()\n .find((el) =>\n (el as HTMLElement).matches\n ? (el as HTMLElement).matches('vscode-button.button-accept')\n : false\n )\n : false;\n\n if (clickedOnAcceptButton) {\n return;\n }\n }\n\n private _onSpaceKeyDown() {\n if (!this.open) {\n this.open = true;\n return;\n }\n }\n\n protected _onArrowUpKeyDown(): void {\n if (this.open) {\n if (this._opts.activeIndex <= 0 && !(this.combobox && this.creatable)) {\n return;\n }\n\n if (this._isPlaceholderOptionActive) {\n const optionIndex = this._opts.numOfVisibleOptions - 1;\n this._opts.activeIndex = optionIndex;\n this._isPlaceholderOptionActive = false;\n } else {\n const prevOp = this._opts.prev();\n\n if (prevOp !== null) {\n this._opts.activeIndex = prevOp?.index ?? -1;\n const prevSelectableIndex = prevOp?.filteredIndex ?? -1;\n\n if (prevSelectableIndex > -1) {\n this._adjustOptionListScrollPos('up', prevSelectableIndex);\n }\n }\n }\n } else {\n this.open = true;\n this._opts.activateDefault();\n }\n }\n\n protected _onArrowDownKeyDown(): void {\n let numOpts = this._opts.numOfVisibleOptions;\n const suggestedOptionVisible = this._isSuggestedOptionVisible;\n\n if (suggestedOptionVisible) {\n numOpts += 1;\n }\n\n if (this.open) {\n if (this._isPlaceholderOptionActive && this._opts.activeIndex === -1) {\n return;\n }\n\n const nextOp = this._opts.next();\n\n if (suggestedOptionVisible && nextOp === null) {\n this._isPlaceholderOptionActive = true;\n this._adjustOptionListScrollPos('down', numOpts - 1);\n this._opts.activeIndex = -1;\n } else if (nextOp !== null) {\n const nextSelectableIndex = nextOp?.filteredIndex ?? -1;\n this._opts.activeIndex = nextOp?.index ?? -1;\n\n if (nextSelectableIndex > -1) {\n this._adjustOptionListScrollPos('down', nextSelectableIndex);\n }\n }\n } else {\n this.open = true;\n this._opts.activateDefault();\n }\n }\n\n private _onEscapeKeyDown() {\n this.open = false;\n }\n\n private _onComponentKeyDown = (event: KeyboardEvent) => {\n if ([' ', 'ArrowUp', 'ArrowDown', 'Escape'].includes(event.key)) {\n event.stopPropagation();\n event.preventDefault();\n }\n\n if (event.key === 'Enter') {\n this._onEnterKeyDown(event);\n }\n\n if (event.key === ' ') {\n this._onSpaceKeyDown();\n }\n\n if (event.key === 'Escape') {\n this._onEscapeKeyDown();\n }\n\n if (event.key === 'ArrowUp') {\n this._onArrowUpKeyDown();\n }\n\n if (event.key === 'ArrowDown') {\n this._onArrowDownKeyDown();\n }\n };\n\n private _onComponentFocus = () => {\n this.focused = true;\n };\n\n private _onComponentBlur = () => {\n this.focused = false;\n };\n\n protected _onSlotChange(): void {\n this._setStateFromSlottedElements();\n this.requestUpdate();\n }\n\n protected _onComboboxInputFocus(ev: FocusEvent): void {\n (ev.target as HTMLInputElement).select();\n this._isBeingFiltered = false;\n this._opts.filterPattern = '';\n }\n\n protected _onComboboxInputBlur() {\n this._isBeingFiltered = false;\n }\n\n protected _onComboboxInputInput(ev: InputEvent): void {\n this._isBeingFiltered = true;\n this._opts.filterPattern = (ev.target as HTMLInputElement).value;\n this._opts.activeIndex = -1;\n this.open = true;\n }\n\n protected _onComboboxInputClick(): void {\n this._isBeingFiltered = this._opts.filterPattern !== '';\n this.open = true;\n }\n\n protected _onComboboxInputSpaceKeyDown(ev: KeyboardEvent) {\n if (ev.key === ' ') {\n ev.stopPropagation();\n }\n }\n\n protected _onOptionClick(_ev: MouseEvent) {\n this._isBeingFiltered = false;\n return;\n }\n\n private _handleWindowScroll = () => {\n this.open = false;\n };\n //#endregion\n\n //#region render functions\n private _renderCheckbox(\n checked: boolean,\n label: string | TemplateResult | TemplateResult[]\n ) {\n const checkboxClasses = {\n 'checkbox-icon': true,\n checked,\n };\n\n return html`<span class=${classMap(checkboxClasses)}>${checkIcon}</span\n ><span class=\"option-label\">${label}</span>`;\n }\n\n protected _renderOptions(): TemplateResult | TemplateResult[] {\n const list = this._opts.options;\n\n return html`\n <ul\n aria-label=${ifDefined(this.label ?? undefined)}\n aria-multiselectable=${ifDefined(\n this._opts.multiSelect ? 'true' : undefined\n )}\n class=\"options\"\n id=\"select-listbox\"\n role=\"listbox\"\n tabindex=\"-1\"\n @click=${this._onOptionClick}\n @mouseover=${this._onOptionMouseOver}\n >\n ${repeat(\n list,\n (op) => op.index,\n (op, index) => {\n if (!op.visible) {\n return nothing;\n }\n\n const active = op.index === this._opts.activeIndex && !op.disabled;\n const selected = this._opts.getIsIndexSelected(op.index);\n\n const optionClasses = {\n active,\n disabled: op.disabled,\n option: true,\n 'single-select': !this._opts.multiSelect,\n 'multi-select': this._opts.multiSelect,\n selected,\n };\n\n const labelText =\n (op.ranges?.length ?? 0 > 0)\n ? highlightRanges(op.label, op.ranges ?? [])\n : op.label;\n\n return html`\n <li\n aria-selected=${selected ? 'true' : 'false'}\n class=${classMap(optionClasses)}\n data-index=${op.index}\n data-filtered-index=${index}\n id=${`op-${op.index}`}\n role=\"option\"\n tabindex=\"-1\"\n >\n ${when(\n this._opts.multiSelect,\n () => this._renderCheckbox(selected, labelText),\n () => labelText\n )}\n </li>\n `;\n }\n )}\n ${this._renderPlaceholderOption(this._opts.numOfVisibleOptions < 1)}\n </ul>\n `;\n }\n\n protected _renderPlaceholderOption(isListEmpty: boolean) {\n if (!this.combobox) {\n return nothing;\n }\n\n const foundOption = this._opts.getOptionByLabel(this._opts.filterPattern);\n\n if (foundOption) {\n return nothing;\n }\n\n if (this.creatable && this._opts.filterPattern.length > 0) {\n return html`<li\n class=${classMap({\n option: true,\n placeholder: true,\n active: this._isPlaceholderOptionActive,\n })}\n @mouseout=${this._onPlaceholderOptionMouseOut}\n >\n Add \"${this._opts.filterPattern}\"\n </li>`;\n } else {\n return isListEmpty\n ? html`<li class=\"no-options\" @click=${this._onNoOptionsClick}>\n No options\n </li>`\n : nothing;\n }\n }\n\n private _renderDescription() {\n const op = this._opts.getActiveOption();\n\n if (!op) {\n return nothing;\n }\n\n const {description} = op;\n\n return description\n ? html`<div class=\"description\">${description}</div>`\n : nothing;\n }\n\n protected _renderSelectFace(): TemplateResult {\n return html`${nothing}`;\n }\n\n protected _renderComboboxFace(): TemplateResult {\n return html`${nothing}`;\n }\n\n protected _renderDropdownControls(): TemplateResult {\n return html`${nothing}`;\n }\n\n protected _renderDropdown() {\n const classes = {\n dropdown: true,\n multiple: this._opts.multiSelect,\n open: this.open,\n };\n\n const visibleOptions =\n this._isSuggestedOptionVisible || this._opts.numOfVisibleOptions === 0\n ? this._opts.numOfVisibleOptions + 1\n : this._opts.numOfVisibleOptions;\n\n const scrollPaneHeight = Math.min(\n visibleOptions * OPT_HEIGHT,\n VISIBLE_OPTS * OPT_HEIGHT\n );\n\n const cr = this.getBoundingClientRect();\n\n const dropdownStyles: Partial<CSSStyleDeclaration> = {\n width: `${cr.width}px`,\n left: `${cr.left}px`,\n top: this.position === 'below' ? `${cr.top + cr.height}px` : 'unset',\n bottom:\n this.position === 'below'\n ? 'unset'\n : `${document.documentElement.clientHeight - cr.top}px`,\n };\n\n return html`\n <div\n class=${classMap(classes)}\n popover=\"auto\"\n @toggle=${this._handleDropdownToggle}\n .style=${stylePropertyMap(dropdownStyles)}\n >\n ${this.position === 'above' ? this._renderDescription() : nothing}\n <vscode-scrollable\n always-visible\n class=\"scrollable\"\n min-thumb-size=\"40\"\n tabindex=\"-1\"\n @vsc-scrollable-scroll=${this._onOptionListScroll}\n .scrollPos=${this._optionListScrollPos}\n .style=${stylePropertyMap({\n height: `${scrollPaneHeight}px`,\n })}\n >\n ${this._renderOptions()} ${this._renderDropdownControls()}\n </vscode-scrollable>\n ${this.position === 'below' ? this._renderDescription() : nothing}\n </div>\n `;\n }\n //#endregion\n}\n"]}
@@ -25,6 +25,12 @@ export type VscCollapsibleToggleEvent = CustomEvent<{
25
25
  */
26
26
  export declare class VscodeCollapsible extends VscElement {
27
27
  static styles: import("lit").CSSResultGroup;
28
+ /**
29
+ * When enabled, header actions are always visible; otherwise, they appear only when the cursor
30
+ * hovers over the component. Actions are shown only when the Collapsible component is open. This
31
+ * property is designed to use the `workbench.view.alwaysShowHeaderActions` setting.
32
+ */
33
+ alwaysShowHeaderActions: boolean;
28
34
  /**
29
35
  * Component heading text
30
36
  *
@@ -1 +1 @@
1
- {"version":3,"file":"vscode-collapsible.d.ts","sourceRoot":"","sources":["../../src/vscode-collapsible/vscode-collapsible.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,cAAc,EAAC,MAAM,KAAK,CAAC;AAGlD,OAAO,EAAgB,UAAU,EAAC,MAAM,2BAA2B,CAAC;AAGpE,MAAM,MAAM,yBAAyB,GAAG,WAAW,CAAC;IAAC,IAAI,EAAE,OAAO,CAAA;CAAC,CAAC,CAAC;AAErE;;;;;;;;;;;;;;;;;;;GAmBG;AACH,qBACa,iBAAkB,SAAQ,UAAU;IAC/C,OAAgB,MAAM,+BAAU;IAEhC;;;;;OAKG;IAEM,KAAK,EAAE,MAAM,CAAM;IAE5B;;OAEG;IAEH,OAAO,SAAM;IAEb,yCAAyC;IAEzC,WAAW,SAAM;IAGjB,IAAI,UAAS;IAEb,OAAO,CAAC,gBAAgB;IAQxB,OAAO,CAAC,cAAc;IAKtB,OAAO,CAAC,gBAAgB;IAOf,MAAM,IAAI,cAAc;CA4ClC;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,oBAAoB,EAAE,iBAAiB,CAAC;KACzC;IAED,UAAU,2BAA2B;QACnC,wBAAwB,EAAE,yBAAyB,CAAC;KACrD;CACF"}
1
+ {"version":3,"file":"vscode-collapsible.d.ts","sourceRoot":"","sources":["../../src/vscode-collapsible/vscode-collapsible.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,cAAc,EAAC,MAAM,KAAK,CAAC;AAGlD,OAAO,EAAgB,UAAU,EAAC,MAAM,2BAA2B,CAAC;AAGpE,MAAM,MAAM,yBAAyB,GAAG,WAAW,CAAC;IAAC,IAAI,EAAE,OAAO,CAAA;CAAC,CAAC,CAAC;AAErE;;;;;;;;;;;;;;;;;;;GAmBG;AACH,qBACa,iBAAkB,SAAQ,UAAU;IAC/C,OAAgB,MAAM,+BAAU;IAEhC;;;;OAIG;IAMH,uBAAuB,UAAS;IAEhC;;;;;OAKG;IAEM,KAAK,EAAE,MAAM,CAAM;IAE5B;;OAEG;IAEH,OAAO,SAAM;IAEb,yCAAyC;IAEzC,WAAW,SAAM;IAGjB,IAAI,UAAS;IAEb,OAAO,CAAC,gBAAgB;IAQxB,OAAO,CAAC,cAAc;IAKtB,OAAO,CAAC,gBAAgB;IAOf,MAAM,IAAI,cAAc;CAkDlC;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,oBAAoB,EAAE,iBAAiB,CAAC;KACzC;IAED,UAAU,2BAA2B;QACnC,wBAAwB,EAAE,yBAAyB,CAAC;KACrD;CACF"}