@vscode-elements/elements 1.14.1-pre.1 → 1.14.1-pre.3

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 +1 @@
1
- {"version":3,"file":"vscode-single-select.js","sourceRoot":"","sources":["../../src/vscode-single-select/vscode-single-select.ts"],"names":[],"mappings":"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","sourcesContent":["import {html, LitElement, TemplateResult} from 'lit';\nimport {property, query} from 'lit/decorators.js';\nimport {classMap} from 'lit/directives/class-map.js';\nimport {customElement} from '../includes/VscElement.js';\nimport {chevronDownIcon} from '../includes/vscode-select/template-elements.js';\nimport {VscodeSelectBase} from '../includes/vscode-select/vscode-select-base.js';\nimport styles from './vscode-single-select.styles.js';\nimport {AssociatedFormControl} from '../includes/AssociatedFormControl.js';\nimport {highlightRanges} from '../includes/vscode-select/helpers.js';\n\n/**\n * Allows to select an item from multiple options.\n *\n * When participating in a form, it supports the `:invalid` pseudo class. Otherwise the error styles\n * can be applied through the `invalid` property.\n *\n * @tag vscode-single-select\n *\n * ## Types\n *\n * ```typescript\n *interface Option {\n * label: string;\n * value: string;\n * description: string;\n * selected: boolean;\n * disabled: boolean;\n *}\n * ```\n * @prop {boolean} invalid\n * @attr {boolean} invalid\n * @attr name - Name which is used as a variable name in the data of the form-container.\n *\n * @cssprop [--dropdown-z-index=2]\n * @cssprop [--vscode-badge-background=#616161]\n * @cssprop [--vscode-badge-foreground=#f8f8f8]\n * @cssprop [--vscode-settings-dropdownBorder=#3c3c3c]\n * @cssprop [--vscode-settings-checkboxBackground=#313131]\n * @cssprop [--vscode-settings-dropdownBackground=#313131]\n * @cssprop [--vscode-settings-dropdownForeground=#cccccc]\n * @cssprop [--vscode-settings-dropdownListBorder=#454545]\n * @cssprop [--vscode-focusBorder=#0078d4]\n * @cssprop [--vscode-foreground=#cccccc]\n * @cssprop [--vscode-font-family=sans-serif]\n * @cssprop [--vscode-font-size=13px]\n * @cssprop [--vscode-font-weight=normal]\n * @cssprop [--vscode-inputValidation-errorBackground=#5a1d1d]\n * @cssprop [--vscode-inputValidation-errorBorder=#be1100]\n * @cssprop [--vscode-list-activeSelectionBackground=#04395e]\n * @cssprop [--vscode-list-activeSelectionForeground=#ffffff]\n * @cssprop [--vscode-list-focusOutline=#0078d4]\n * @cssprop [--vscode-list-focusHighlightForeground=#2aaaff]\n * @cssprop [--vscode-list-highlightForeground=#2aaaff]\n * @cssprop [--vscode-list-hoverBackground=#2a2d2e]\n * @cssprop [--vscode-list-hoverForeground=#ffffff]\n */\n@customElement('vscode-single-select')\nexport class VscodeSingleSelect\n extends VscodeSelectBase\n implements AssociatedFormControl\n{\n static override styles = styles;\n\n /** @internal */\n static override shadowRootOptions: ShadowRootInit = {\n ...LitElement.shadowRootOptions,\n delegatesFocus: true,\n };\n\n /** @internal */\n static formAssociated = true;\n\n @property({attribute: 'default-value'})\n defaultValue = '';\n\n /** @internal */\n @property({type: String, attribute: true, reflect: true})\n override role = 'listbox';\n\n @property({reflect: true})\n name: string | undefined = undefined;\n\n @property({type: Number, attribute: 'selected-index'})\n set selectedIndex(val: number) {\n this._selectedIndex = val;\n this._value = this._options[this._selectedIndex]\n ? this._options[this._selectedIndex].value\n : '';\n }\n get selectedIndex(): number {\n return this._selectedIndex;\n }\n\n @property({type: String})\n set value(val: string) {\n if (this._options[this._selectedIndex]) {\n this._options[this._selectedIndex].selected = false;\n }\n\n this._selectedIndex = this._options.findIndex((op) => op.value === val);\n\n if (this._selectedIndex > -1) {\n this._options[this._selectedIndex].selected = true;\n this._value = val;\n this._requestedValueToSetLater = '';\n } else {\n this._value = '';\n this._requestedValueToSetLater = val;\n }\n }\n get value(): string {\n if (this._options[this._selectedIndex]) {\n return this._options[this._selectedIndex]?.value ?? '';\n }\n\n return '';\n }\n\n @property({type: Boolean, reflect: true})\n required = false;\n\n get validity(): ValidityState {\n return this._internals.validity;\n }\n\n get validationMessage(): string {\n return this._internals.validationMessage;\n }\n\n get willValidate() {\n return this._internals.willValidate;\n }\n\n checkValidity(): boolean {\n return this._internals.checkValidity();\n }\n\n reportValidity(): boolean {\n return this._internals.reportValidity();\n }\n\n @query('.face')\n private _face!: HTMLDivElement;\n\n private _internals: ElementInternals;\n\n private updateInputValue() {\n if (!this.combobox) {\n return;\n }\n\n const input = this.renderRoot.querySelector(\n '.combobox-input'\n ) as HTMLInputElement;\n\n if (input) {\n input.value = this._options[this._selectedIndex]\n ? this._options[this._selectedIndex].label\n : '';\n }\n }\n\n constructor() {\n super();\n /** @internal */\n this._multiple = false;\n this._internals = this.attachInternals();\n }\n\n override connectedCallback(): void {\n super.connectedCallback();\n\n this.updateComplete.then(() => {\n this._manageRequired();\n });\n }\n\n /** @internal */\n formResetCallback(): void {\n this.value = this.defaultValue;\n }\n\n /** @internal */\n formStateRestoreCallback(\n state: string,\n _mode: 'restore' | 'autocomplete'\n ): void {\n this.updateComplete.then(() => {\n this.value = state;\n });\n }\n\n /** @internal */\n get type(): 'select-one' {\n return 'select-one';\n }\n\n get form(): HTMLFormElement | null {\n return this._internals.form;\n }\n\n private _requestedValueToSetLater = '';\n\n protected override _onSlotChange(): void {\n super._onSlotChange();\n\n if (this._requestedValueToSetLater) {\n // the value is set before the available options are appended\n const foundIndex = this._options.findIndex(\n (op) => op.value === this._requestedValueToSetLater\n );\n\n if (foundIndex > 0) {\n this._selectedIndex = foundIndex;\n this._requestedValueToSetLater = '';\n }\n }\n\n if (this._selectedIndex > -1 && this._options.length > 0) {\n this._internals.setFormValue(this._options[this._selectedIndex].value);\n } else {\n this._internals.setFormValue(null);\n }\n }\n\n protected override _onArrowUpKeyDown(): void {\n super._onArrowUpKeyDown();\n\n if (this.open || this._selectedIndex <= 0) {\n return;\n }\n\n this._filterPattern = '';\n this._selectedIndex -= 1;\n this._activeIndex = this._selectedIndex;\n this._value = this._options[this._selectedIndex].value;\n this._internals.setFormValue(this._value);\n this._manageRequired();\n this._dispatchChangeEvent();\n }\n\n protected override _onArrowDownKeyDown(): void {\n super._onArrowDownKeyDown();\n\n if (this.open || this._selectedIndex >= this._options.length - 1) {\n return;\n }\n\n this._filterPattern = '';\n this._selectedIndex += 1;\n this._activeIndex = this._selectedIndex;\n this._value = this._options[this._selectedIndex].value;\n this._internals.setFormValue(this._value);\n this._manageRequired();\n this._dispatchChangeEvent();\n }\n\n protected override _onEnterKeyDown(): void {\n super._onEnterKeyDown();\n\n this.updateInputValue();\n this._internals.setFormValue(this._value);\n this._manageRequired();\n }\n\n private _onOptionClick(ev: MouseEvent) {\n const composedPath = ev.composedPath();\n const optEl = composedPath.find((et) =>\n (et as HTMLElement)?.matches('li.option')\n ) as HTMLElement | undefined;\n\n if (!optEl || optEl.matches('.disabled')) {\n return;\n }\n\n const isPlaceholderOption = optEl.classList.contains('placeholder');\n let nextSelectedIndex = Number((optEl as HTMLElement).dataset.index);\n\n if (isPlaceholderOption) {\n if (this.creatable) {\n nextSelectedIndex = this._createSuggestedOption();\n } else {\n return;\n }\n }\n\n this._selectedIndex = nextSelectedIndex;\n this._value = this._options[this._selectedIndex].value;\n\n this._toggleDropdown(false);\n this._internals.setFormValue(this._value);\n this._manageRequired();\n this._dispatchChangeEvent();\n }\n\n private _manageRequired() {\n const {value} = this;\n if (value === '' && this.required) {\n this._internals.setValidity(\n {valueMissing: true},\n 'Please select an item in the list.',\n this._face\n );\n } else {\n this._internals.setValidity({});\n }\n }\n\n protected override _renderSelectFace(): TemplateResult {\n const label = this._options[this._selectedIndex]?.label ?? '';\n\n return html`\n <div\n class=\"select-face face\"\n @click=${this._onFaceClick}\n tabindex=${this.tabIndex > -1 ? 0 : -1}\n >\n <span class=\"text\">${label}</span> ${chevronDownIcon}\n </div>\n `;\n }\n\n protected override _renderComboboxFace(): TemplateResult {\n const inputVal =\n this._selectedIndex > -1 ? this._options[this._selectedIndex].label : '';\n\n return html`\n <div class=\"combobox-face face\">\n <input\n class=\"combobox-input\"\n spellcheck=\"false\"\n type=\"text\"\n autocomplete=\"off\"\n .value=${inputVal}\n @focus=${this._onComboboxInputFocus}\n @input=${this._onComboboxInputInput}\n @click=${this._onComboboxInputClick}\n >\n <button\n class=\"combobox-button\"\n type=\"button\"\n @click=${this._onComboboxButtonClick}\n @keydown=${this._onComboboxButtonKeyDown}\n >\n ${chevronDownIcon}\n </button>\n </div>\n `;\n }\n\n protected override _renderOptions(): TemplateResult {\n const list = this.combobox ? this._filteredOptions : this._options;\n\n const options =\n list.length > 0\n ? list.map((op, index) => {\n const classes = classMap({\n option: true,\n disabled: op.disabled,\n selected: op.selected,\n active: index === this._activeIndex && !op.disabled,\n });\n\n return html`\n <li\n class=${classes}\n data-index=${op.index}\n data-filtered-index=${index}\n >\n ${(op.ranges?.length ?? 0 > 0)\n ? highlightRanges(op.label, op.ranges ?? [])\n : op.label}\n </li>\n `;\n })\n : this._renderPlaceholderOption();\n\n return html`\n <ul\n class=\"options\"\n @mouseover=${this._onOptionMouseOver}\n @click=${this._onOptionClick}\n >\n ${options}\n </ul>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'vscode-single-select': VscodeSingleSelect;\n }\n}\n"]}
1
+ {"version":3,"file":"vscode-single-select.js","sourceRoot":"","sources":["../../src/vscode-single-select/vscode-single-select.ts"],"names":[],"mappings":"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","sourcesContent":["import {html, LitElement, TemplateResult} from 'lit';\nimport {property, query} from 'lit/decorators.js';\nimport {customElement} from '../includes/VscElement.js';\nimport {chevronDownIcon} from '../includes/vscode-select/template-elements.js';\nimport {VscodeSelectBase} from '../includes/vscode-select/vscode-select-base.js';\nimport styles from './vscode-single-select.styles.js';\nimport {AssociatedFormControl} from '../includes/AssociatedFormControl.js';\nimport {\n findNextSelectableOptionIndex,\n findPrevSelectableOptionIndex,\n} from '../includes/vscode-select/helpers.js';\n\nexport type VscSingleSelectCreateOptionEvent = CustomEvent<{value: string}>;\n\n/**\n * Allows to select an item from multiple options.\n *\n * When participating in a form, it supports the `:invalid` pseudo class. Otherwise the error styles\n * can be applied through the `invalid` property.\n *\n * @tag vscode-single-select\n *\n * ## Types\n *\n * ```typescript\n *interface Option {\n * label: string;\n * value: string;\n * description: string;\n * selected: boolean;\n * disabled: boolean;\n *}\n * ```\n * @prop {boolean} invalid\n * @attr {boolean} invalid\n * @attr name - Name which is used as a variable name in the data of the form-container.\n *\n * @cssprop [--dropdown-z-index=2]\n * @cssprop [--vscode-badge-background=#616161]\n * @cssprop [--vscode-badge-foreground=#f8f8f8]\n * @cssprop [--vscode-settings-dropdownBorder=#3c3c3c]\n * @cssprop [--vscode-settings-checkboxBackground=#313131]\n * @cssprop [--vscode-settings-dropdownBackground=#313131]\n * @cssprop [--vscode-settings-dropdownForeground=#cccccc]\n * @cssprop [--vscode-settings-dropdownListBorder=#454545]\n * @cssprop [--vscode-focusBorder=#0078d4]\n * @cssprop [--vscode-foreground=#cccccc]\n * @cssprop [--vscode-font-family=sans-serif]\n * @cssprop [--vscode-font-size=13px]\n * @cssprop [--vscode-font-weight=normal]\n * @cssprop [--vscode-inputValidation-errorBackground=#5a1d1d]\n * @cssprop [--vscode-inputValidation-errorBorder=#be1100]\n * @cssprop [--vscode-list-activeSelectionBackground=#04395e]\n * @cssprop [--vscode-list-activeSelectionForeground=#ffffff]\n * @cssprop [--vscode-list-focusOutline=#0078d4]\n * @cssprop [--vscode-list-focusHighlightForeground=#2aaaff]\n * @cssprop [--vscode-list-highlightForeground=#2aaaff]\n * @cssprop [--vscode-list-hoverBackground=#2a2d2e]\n * @cssprop [--vscode-list-hoverForeground=#ffffff]\n */\n@customElement('vscode-single-select')\nexport class VscodeSingleSelect\n extends VscodeSelectBase\n implements AssociatedFormControl\n{\n static override styles = styles;\n\n /** @internal */\n static override shadowRootOptions: ShadowRootInit = {\n ...LitElement.shadowRootOptions,\n delegatesFocus: true,\n };\n\n /** @internal */\n static formAssociated = true;\n\n @property({attribute: 'default-value'})\n defaultValue = '';\n\n /** @internal */\n @property({type: String, attribute: true, reflect: true})\n override role = 'listbox';\n\n @property({reflect: true})\n name: string | undefined = undefined;\n\n @property({type: Number, attribute: 'selected-index'})\n set selectedIndex(val: number) {\n this._selectedIndex = val;\n\n if (this._options[val]) {\n this._activeIndex = val;\n this._value = this._options[val].value;\n } else {\n this._value = '';\n }\n }\n get selectedIndex(): number {\n return this._selectedIndex;\n }\n\n @property({type: String})\n set value(val: string) {\n if (this._options[this._selectedIndex]) {\n this._options[this._selectedIndex].selected = false;\n }\n\n this._selectedIndex = this._options.findIndex((op) => op.value === val);\n\n if (this._selectedIndex > -1) {\n this._options[this._selectedIndex].selected = true;\n this._value = val;\n this._requestedValueToSetLater = '';\n } else {\n this._value = '';\n this._requestedValueToSetLater = val;\n }\n }\n get value(): string {\n if (this._options[this._selectedIndex]) {\n return this._options[this._selectedIndex]?.value ?? '';\n }\n\n return '';\n }\n\n @property({type: Boolean, reflect: true})\n required = false;\n\n get validity(): ValidityState {\n return this._internals.validity;\n }\n\n get validationMessage(): string {\n return this._internals.validationMessage;\n }\n\n get willValidate() {\n return this._internals.willValidate;\n }\n\n checkValidity(): boolean {\n return this._internals.checkValidity();\n }\n\n reportValidity(): boolean {\n return this._internals.reportValidity();\n }\n\n @query('.face')\n private _face!: HTMLDivElement;\n\n private _internals: ElementInternals;\n\n private updateInputValue() {\n if (!this.combobox) {\n return;\n }\n\n const input = this.renderRoot.querySelector(\n '.combobox-input'\n ) as HTMLInputElement;\n\n if (input) {\n input.value = this._options[this._selectedIndex]\n ? this._options[this._selectedIndex].label\n : '';\n }\n }\n\n constructor() {\n super();\n /** @internal */\n this._multiple = false;\n this._internals = this.attachInternals();\n }\n\n override connectedCallback(): void {\n super.connectedCallback();\n\n this.updateComplete.then(() => {\n this._manageRequired();\n });\n }\n\n /** @internal */\n formResetCallback(): void {\n this.value = this.defaultValue;\n }\n\n /** @internal */\n formStateRestoreCallback(\n state: string,\n _mode: 'restore' | 'autocomplete'\n ): void {\n this.updateComplete.then(() => {\n this.value = state;\n });\n }\n\n /** @internal */\n get type(): 'select-one' {\n return 'select-one';\n }\n\n get form(): HTMLFormElement | null {\n return this._internals.form;\n }\n\n private _requestedValueToSetLater = '';\n\n protected override async _createAndSelectSuggestedOption() {\n const nextIndex = this._createSuggestedOption();\n\n await this.updateComplete;\n\n this.selectedIndex = nextIndex;\n this._dispatchChangeEvent();\n const opCreateEvent: VscSingleSelectCreateOptionEvent = new CustomEvent(\n 'vsc-single-select-create-option',\n {detail: {value: this._options[nextIndex]?.value ?? ''}}\n );\n this.dispatchEvent(opCreateEvent);\n this._toggleDropdown(false);\n this._isPlaceholderOptionActive = false;\n }\n\n protected override _onSlotChange(): void {\n super._onSlotChange();\n\n if (this._requestedValueToSetLater) {\n // the value is set before the available options are appended\n const foundIndex = this._options.findIndex(\n (op) => op.value === this._requestedValueToSetLater\n );\n\n if (foundIndex > 0) {\n this._selectedIndex = foundIndex;\n this._requestedValueToSetLater = '';\n }\n }\n\n if (this._selectedIndex > -1 && this._options.length > 0) {\n this._internals.setFormValue(this._options[this._selectedIndex].value);\n } else {\n this._internals.setFormValue(null);\n }\n }\n\n protected override _onArrowUpKeyDown(): void {\n super._onArrowUpKeyDown();\n\n if (this.open || this._selectedIndex <= 0) {\n return;\n }\n\n const options = this.combobox ? this._filteredOptions : this._options;\n const prevIndex = findPrevSelectableOptionIndex(options, this._activeIndex);\n\n this._filterPattern = '';\n this._selectedIndex = prevIndex;\n this._activeIndex = prevIndex;\n this._value = prevIndex > -1 ? this._options[prevIndex].value : '';\n this._internals.setFormValue(this._value);\n this._manageRequired();\n this._dispatchChangeEvent();\n }\n\n protected override _onArrowDownKeyDown(): void {\n super._onArrowDownKeyDown();\n\n if (this.open || this._selectedIndex >= this._options.length - 1) {\n return;\n }\n\n const options = this.combobox ? this._filteredOptions : this._options;\n const nextIndex = findNextSelectableOptionIndex(options, this._activeIndex);\n\n this._filterPattern = '';\n this._selectedIndex = nextIndex;\n this._activeIndex = nextIndex;\n this._value = nextIndex > -1 ? this._options[nextIndex].value : '';\n this._internals.setFormValue(this._value);\n this._manageRequired();\n this._dispatchChangeEvent();\n }\n\n protected override _onEnterKeyDown(ev: KeyboardEvent): void {\n super._onEnterKeyDown(ev);\n\n this.updateInputValue();\n this._internals.setFormValue(this._value);\n this._manageRequired();\n }\n\n protected override _onOptionClick(ev: MouseEvent) {\n const composedPath = ev.composedPath();\n const optEl = composedPath.find((et) => {\n const el = et as HTMLElement;\n\n if ('matches' in el) {\n return el.matches('li.option');\n }\n\n return;\n }) as HTMLElement | undefined;\n\n if (!optEl || optEl.matches('.disabled')) {\n return;\n }\n\n const isPlaceholderOption = optEl.classList.contains('placeholder');\n\n if (isPlaceholderOption) {\n if (this.creatable) {\n this._createAndSelectSuggestedOption();\n }\n } else {\n this._selectedIndex = Number((optEl as HTMLElement).dataset.index);\n this._value = this._options[this._selectedIndex].value;\n\n this._toggleDropdown(false);\n this._internals.setFormValue(this._value);\n this._manageRequired();\n this._dispatchChangeEvent();\n }\n }\n\n protected override _manageRequired() {\n const {value} = this;\n if (value === '' && this.required) {\n this._internals.setValidity(\n {valueMissing: true},\n 'Please select an item in the list.',\n this._face\n );\n } else {\n this._internals.setValidity({});\n }\n }\n\n protected override _renderSelectFace(): TemplateResult {\n const label = this._options[this._selectedIndex]?.label ?? '';\n\n return html`\n <div\n class=\"select-face face\"\n @click=${this._onFaceClick}\n tabindex=${this.tabIndex > -1 ? 0 : -1}\n >\n <span class=\"text\">${label}</span> ${chevronDownIcon}\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'vscode-single-select': VscodeSingleSelect;\n }\n\n interface GlobalEventHandlersEventMap {\n 'vsc-single-select-create-option': VscSingleSelectCreateOptionEvent;\n }\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vscode-elements/elements",
3
- "version": "1.14.1-pre.1",
3
+ "version": "1.14.1-pre.3",
4
4
  "description": "Webcomponents for creating Visual Studio Code extensions",
5
5
  "main": "dist/main.js",
6
6
  "module": "dist/main.js",
@@ -28,6 +28,7 @@
28
28
  "test": "wireit",
29
29
  "test:coverage": "wireit",
30
30
  "test:watch": "concurrently --raw \"tsc --watch --preserveWatchOutput\" \"wtr --watch\"",
31
+ "wtr:watch": "wtr --watch",
31
32
  "checksize": "npm run build && cat dist/bundled.js | gzip -9 | wc -c",
32
33
  "icons": "node scripts/generateIconList.js",
33
34
  "vscode-data": "wireit"