@vscode-elements/elements 1.9.2-pre.1 → 1.11.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +0 -12
- package/custom-elements.json +432 -269
- package/dist/bundled.js +135 -136
- package/dist/includes/VscElement.d.ts +1 -1
- package/dist/includes/VscElement.d.ts.map +1 -1
- package/dist/includes/VscElement.js +2 -2
- package/dist/includes/VscElement.js.map +1 -1
- package/dist/includes/vscode-select/styles.js +1 -1
- package/dist/includes/vscode-select/styles.js.map +1 -1
- package/dist/includes/vscode-select/vscode-select-base.d.ts +15 -7
- package/dist/includes/vscode-select/vscode-select-base.d.ts.map +1 -1
- package/dist/includes/vscode-select/vscode-select-base.js +101 -84
- package/dist/includes/vscode-select/vscode-select-base.js.map +1 -1
- package/dist/vscode-badge/vscode-badge.d.ts +4 -0
- package/dist/vscode-badge/vscode-badge.d.ts.map +1 -1
- package/dist/vscode-badge/vscode-badge.js +4 -0
- package/dist/vscode-badge/vscode-badge.js.map +1 -1
- package/dist/vscode-button/vscode-button.d.ts +4 -0
- package/dist/vscode-button/vscode-button.d.ts.map +1 -1
- package/dist/vscode-button/vscode-button.js +15 -7
- package/dist/vscode-button/vscode-button.js.map +1 -1
- package/dist/vscode-checkbox/vscode-checkbox.d.ts +26 -2
- package/dist/vscode-checkbox/vscode-checkbox.d.ts.map +1 -1
- package/dist/vscode-checkbox/vscode-checkbox.js +32 -8
- package/dist/vscode-checkbox/vscode-checkbox.js.map +1 -1
- package/dist/vscode-checkbox-group/vscode-checkbox-group.d.ts +5 -0
- package/dist/vscode-checkbox-group/vscode-checkbox-group.d.ts.map +1 -1
- package/dist/vscode-checkbox-group/vscode-checkbox-group.js +5 -0
- package/dist/vscode-checkbox-group/vscode-checkbox-group.js.map +1 -1
- package/dist/vscode-collapsible/vscode-collapsible.d.ts +4 -0
- package/dist/vscode-collapsible/vscode-collapsible.d.ts.map +1 -1
- package/dist/vscode-collapsible/vscode-collapsible.js +8 -4
- package/dist/vscode-collapsible/vscode-collapsible.js.map +1 -1
- package/dist/vscode-context-menu/vscode-context-menu.d.ts +2 -0
- package/dist/vscode-context-menu/vscode-context-menu.d.ts.map +1 -1
- package/dist/vscode-context-menu/vscode-context-menu.js +8 -8
- package/dist/vscode-context-menu/vscode-context-menu.js.map +1 -1
- package/dist/vscode-context-menu-item/vscode-context-menu-item.d.ts +2 -0
- package/dist/vscode-context-menu-item/vscode-context-menu-item.d.ts.map +1 -1
- package/dist/vscode-context-menu-item/vscode-context-menu-item.js +3 -1
- package/dist/vscode-context-menu-item/vscode-context-menu-item.js.map +1 -1
- package/dist/vscode-divider/vscode-divider.d.ts +3 -0
- package/dist/vscode-divider/vscode-divider.d.ts.map +1 -1
- package/dist/vscode-divider/vscode-divider.js +3 -0
- package/dist/vscode-divider/vscode-divider.js.map +1 -1
- package/dist/vscode-form-container/vscode-form-container.d.ts +3 -0
- package/dist/vscode-form-container/vscode-form-container.d.ts.map +1 -1
- package/dist/vscode-form-container/vscode-form-container.js +3 -0
- package/dist/vscode-form-container/vscode-form-container.js.map +1 -1
- package/dist/vscode-form-group/vscode-form-group.d.ts +2 -0
- package/dist/vscode-form-group/vscode-form-group.d.ts.map +1 -1
- package/dist/vscode-form-group/vscode-form-group.js +2 -0
- package/dist/vscode-form-group/vscode-form-group.js.map +1 -1
- package/dist/vscode-form-helper/vscode-form-helper.d.ts +2 -0
- package/dist/vscode-form-helper/vscode-form-helper.d.ts.map +1 -1
- package/dist/vscode-form-helper/vscode-form-helper.js +2 -0
- package/dist/vscode-form-helper/vscode-form-helper.js.map +1 -1
- package/dist/vscode-icon/vscode-icon.d.ts +2 -0
- package/dist/vscode-icon/vscode-icon.d.ts.map +1 -1
- package/dist/vscode-icon/vscode-icon.js +8 -6
- package/dist/vscode-icon/vscode-icon.js.map +1 -1
- package/dist/vscode-label/vscode-label.d.ts +2 -0
- package/dist/vscode-label/vscode-label.d.ts.map +1 -1
- package/dist/vscode-label/vscode-label.js +3 -1
- package/dist/vscode-label/vscode-label.js.map +1 -1
- package/dist/vscode-multi-select/vscode-multi-select.d.ts +2 -0
- package/dist/vscode-multi-select/vscode-multi-select.d.ts.map +1 -1
- package/dist/vscode-multi-select/vscode-multi-select.js +24 -18
- package/dist/vscode-multi-select/vscode-multi-select.js.map +1 -1
- package/dist/vscode-option/vscode-option.d.ts +8 -1
- package/dist/vscode-option/vscode-option.d.ts.map +1 -1
- package/dist/vscode-option/vscode-option.js +27 -1
- package/dist/vscode-option/vscode-option.js.map +1 -1
- package/dist/vscode-progress-ring/vscode-progress-ring.d.ts +3 -0
- package/dist/vscode-progress-ring/vscode-progress-ring.d.ts.map +1 -1
- package/dist/vscode-progress-ring/vscode-progress-ring.js +3 -0
- package/dist/vscode-progress-ring/vscode-progress-ring.js.map +1 -1
- package/dist/vscode-radio/vscode-radio.d.ts +2 -0
- package/dist/vscode-radio/vscode-radio.d.ts.map +1 -1
- package/dist/vscode-radio/vscode-radio.js +8 -6
- package/dist/vscode-radio/vscode-radio.js.map +1 -1
- package/dist/vscode-radio-group/vscode-radio-group.d.ts +2 -0
- package/dist/vscode-radio-group/vscode-radio-group.d.ts.map +1 -1
- package/dist/vscode-radio-group/vscode-radio-group.js +2 -0
- package/dist/vscode-radio-group/vscode-radio-group.js.map +1 -1
- package/dist/vscode-scrollable/vscode-scrollable.d.ts +2 -0
- package/dist/vscode-scrollable/vscode-scrollable.d.ts.map +1 -1
- package/dist/vscode-scrollable/vscode-scrollable.js +14 -12
- package/dist/vscode-scrollable/vscode-scrollable.js.map +1 -1
- package/dist/vscode-single-select/vscode-single-select.d.ts +2 -1
- package/dist/vscode-single-select/vscode-single-select.d.ts.map +1 -1
- package/dist/vscode-single-select/vscode-single-select.js +21 -37
- package/dist/vscode-single-select/vscode-single-select.js.map +1 -1
- package/dist/vscode-split-layout/vscode-split-layout.d.ts +2 -0
- package/dist/vscode-split-layout/vscode-split-layout.d.ts.map +1 -1
- package/dist/vscode-split-layout/vscode-split-layout.js +12 -10
- package/dist/vscode-split-layout/vscode-split-layout.js.map +1 -1
- package/dist/vscode-tab-header/vscode-tab-header.d.ts +2 -0
- package/dist/vscode-tab-header/vscode-tab-header.d.ts.map +1 -1
- package/dist/vscode-tab-header/vscode-tab-header.js +2 -0
- package/dist/vscode-tab-header/vscode-tab-header.js.map +1 -1
- package/dist/vscode-tab-panel/vscode-tab-panel.d.ts +2 -0
- package/dist/vscode-tab-panel/vscode-tab-panel.d.ts.map +1 -1
- package/dist/vscode-tab-panel/vscode-tab-panel.js +2 -0
- package/dist/vscode-tab-panel/vscode-tab-panel.js.map +1 -1
- package/dist/vscode-table/vscode-table.d.ts +4 -2
- package/dist/vscode-table/vscode-table.d.ts.map +1 -1
- package/dist/vscode-table/vscode-table.js +16 -14
- package/dist/vscode-table/vscode-table.js.map +1 -1
- package/dist/vscode-table-body/vscode-table-body.d.ts +2 -0
- package/dist/vscode-table-body/vscode-table-body.d.ts.map +1 -1
- package/dist/vscode-table-body/vscode-table-body.js +2 -0
- package/dist/vscode-table-body/vscode-table-body.js.map +1 -1
- package/dist/vscode-table-cell/vscode-table-cell.d.ts +2 -0
- package/dist/vscode-table-cell/vscode-table-cell.d.ts.map +1 -1
- package/dist/vscode-table-cell/vscode-table-cell.js +2 -0
- package/dist/vscode-table-cell/vscode-table-cell.js.map +1 -1
- package/dist/vscode-table-header/vscode-table-header.d.ts +2 -0
- package/dist/vscode-table-header/vscode-table-header.d.ts.map +1 -1
- package/dist/vscode-table-header/vscode-table-header.js +2 -0
- package/dist/vscode-table-header/vscode-table-header.js.map +1 -1
- package/dist/vscode-table-header-cell/vscode-table-header-cell.d.ts +2 -0
- package/dist/vscode-table-header-cell/vscode-table-header-cell.d.ts.map +1 -1
- package/dist/vscode-table-header-cell/vscode-table-header-cell.js +2 -0
- package/dist/vscode-table-header-cell/vscode-table-header-cell.js.map +1 -1
- package/dist/vscode-table-row/vscode-table-row.d.ts +2 -0
- package/dist/vscode-table-row/vscode-table-row.d.ts.map +1 -1
- package/dist/vscode-table-row/vscode-table-row.js +2 -0
- package/dist/vscode-table-row/vscode-table-row.js.map +1 -1
- package/dist/vscode-tabs/vscode-tabs.d.ts +2 -0
- package/dist/vscode-tabs/vscode-tabs.d.ts.map +1 -1
- package/dist/vscode-tabs/vscode-tabs.js +3 -1
- package/dist/vscode-tabs/vscode-tabs.js.map +1 -1
- package/dist/vscode-textarea/vscode-textarea.d.ts +2 -0
- package/dist/vscode-textarea/vscode-textarea.d.ts.map +1 -1
- package/dist/vscode-textarea/vscode-textarea.js +2 -0
- package/dist/vscode-textarea/vscode-textarea.js.map +1 -1
- package/dist/vscode-textfield/vscode-textfield.d.ts +2 -0
- package/dist/vscode-textfield/vscode-textfield.d.ts.map +1 -1
- package/dist/vscode-textfield/vscode-textfield.js +3 -1
- package/dist/vscode-textfield/vscode-textfield.js.map +1 -1
- package/dist/vscode-tree/vscode-tree.d.ts +3 -1
- package/dist/vscode-tree/vscode-tree.d.ts.map +1 -1
- package/dist/vscode-tree/vscode-tree.js +9 -7
- package/dist/vscode-tree/vscode-tree.js.map +1 -1
- package/package.json +23 -20
- package/vscode.css-custom-data.json +11 -11
- package/vscode.html-custom-data.json +71 -29
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VscElement.d.ts","sourceRoot":"","sources":["../../src/includes/VscElement.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAC,MAAM,KAAK,CAAC;AAE/B,qBAAa,UAAW,SAAQ,UAAU;IACxC,OAAO,CAAC,QAAQ,
|
|
1
|
+
{"version":3,"file":"VscElement.d.ts","sourceRoot":"","sources":["../../src/includes/VscElement.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAC,MAAM,KAAK,CAAC;AAE/B,qBAAa,UAAW,SAAQ,UAAU;IACxC,OAAO,CAAC,QAAQ,CAAY;IAE5B,8BAA8B;IAC9B,IAAI,OAAO,IAAI,MAAM,CAEpB;CACF"}
|
|
@@ -2,9 +2,9 @@ import { LitElement } from 'lit';
|
|
|
2
2
|
export class VscElement extends LitElement {
|
|
3
3
|
constructor() {
|
|
4
4
|
super(...arguments);
|
|
5
|
-
this._version = '1.
|
|
5
|
+
this._version = '1.11.0';
|
|
6
6
|
}
|
|
7
|
-
/**
|
|
7
|
+
/** VSCode Elements version */
|
|
8
8
|
get version() {
|
|
9
9
|
return this._version;
|
|
10
10
|
}
|
|
@@ -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,UAAW,SAAQ,UAAU;IAA1C;;QACU,aAAQ,GAAG,
|
|
1
|
+
{"version":3,"file":"VscElement.js","sourceRoot":"","sources":["../../src/includes/VscElement.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAC,MAAM,KAAK,CAAC;AAE/B,MAAM,OAAO,UAAW,SAAQ,UAAU;IAA1C;;QACU,aAAQ,GAAG,QAAQ,CAAC;IAM9B,CAAC;IAJC,8BAA8B;IAC9B,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;CACF","sourcesContent":["import {LitElement} from 'lit';\n\nexport class VscElement extends LitElement {\n private _version = '1.11.0';\n\n /** VSCode Elements version */\n get version(): string {\n return this._version;\n }\n}\n"]}
|
|
@@ -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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkVF;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);\n border-color: var(--vscode-settings-dropdownBorder);\n border-radius: 2px;\n border-style: solid;\n border-width: 1px;\n box-sizing: border-box;\n color: var(--vscode-settings-dropdownForeground);\n font-family: var(--vscode-font-family);\n font-size: var(--vscode-font-size);\n font-weight: var(--vscode-font-weight);\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);\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);\n border-radius: 2px;\n color: var(--vscode-badge-foreground);\n display: inline-block;\n flex-shrink: 0;\n font-size: 11px;\n line-height: 16px;\n margin: 2px;\n padding: 2px 3px;\n text-transform: uppercase;\n white-space: nowrap;\n }\n\n .select-face-badge.no-item {\n background-color: transparent;\n color: inherit;\n }\n\n .combobox-face {\n display: flex;\n }\n\n :host(:focus) .select-face,\n :host(:focus) .combobox-face,\n :host([focused]) .select-face,\n :host([focused]) .combobox-face {\n border-color: var(--vscode-focusBorder);\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);\n display: block;\n font-family: var(--vscode-font-family);\n font-size: var(--vscode-font-size);\n line-height: 16px;\n padding: 4px;\n width: 100%;\n }\n\n .combobox-input:focus {\n outline: none;\n }\n\n .combobox-button {\n background-color: transparent;\n border: 0;\n color: var(--vscode-foreground);\n cursor: pointer;\n flex-shrink: 0;\n height: 24px;\n margin: 0;\n padding: 0;\n width: 30px;\n }\n\n .combobox-button:focus,\n .combobox-button:hover {\n background-color: var(--vscode-list-hoverBackground);\n }\n\n .combobox-button:focus {\n outline: 0;\n }\n\n .icon {\n color: var(--vscode-foreground);\n display: block;\n height: 14px;\n pointer-events: none;\n position: absolute;\n right: 8px;\n top: 5px;\n width: 14px;\n }\n\n .icon svg {\n color: var(--vscode-foreground);\n height: 100%;\n width: 100%;\n }\n\n .dropdown {\n background-color: var(--vscode-settings-dropdownBackground);\n border-color: var(--vscode-settings-dropdownListBorder);\n border-radius: 0 0 3px 3px;\n border-style: solid;\n border-width: 1px;\n box-sizing: border-box;\n left: 0;\n padding-bottom: 2px;\n position: absolute;\n top: 100%;\n width: 100%;\n z-index: var(--dropdown-z-index, 2);\n }\n\n :host([position='above']) .dropdown {\n border-radius: 3px 3px 0 0;\n bottom: 26px;\n padding-bottom: 0;\n padding-top: 2px;\n top: auto;\n }\n\n :host(:focus) .dropdown,\n :host([focused]) .dropdown {\n border-color: var(--vscode-focusBorder);\n }\n\n .options {\n box-sizing: border-box;\n cursor: pointer;\n list-style: none;\n margin: 0;\n max-height: 222px;\n overflow: auto;\n padding: 1px;\n }\n\n .option {\n align-items: center;\n color: var(--vscode-foreground);\n cursor: pointer;\n display: flex;\n font-family: var(--vscode-font-family);\n font-size: var(--vscode-font-size);\n font-weight: var(--vscode-font-weight);\n line-height: 18px;\n min-height: calc(var(--vscode-font-size) * 1.3);\n padding: 1px 3px;\n user-select: none;\n border-width: 1px;\n border-style: solid;\n border-color: transparent;\n }\n\n .option b {\n color: var(--vscode-list-highlightForeground);\n }\n\n .option.active b {\n color: var(--vscode-list-focusHighlightForeground);\n }\n\n .option:hover {\n background-color: var(--vscode-list-hoverBackground);\n color: var(--vscode-list-hoverForeground);\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 border-style: dotted;\n border-color: var(--vscode-list-focusOutline);\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);\n color: var(--vscode-list-activeSelectionForeground);\n border-color: var(--vscode-list-activeSelectionBackground);\n border-style: solid;\n border-width: 1px;\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 border-color: var(--vscode-list-focusOutline);\n border-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);\n border-color: var(--vscode-list-hoverBackground);\n }\n\n .dropdown.multiple .option.selected.active {\n background-color: var(--vscode-list-activeSelectionBackground);\n color: var(--vscode-list-activeSelectionForeground);\n border-color: var(--vscode-list-activeSelectionBackground);\n }\n\n .checkbox-icon {\n background-color: var(--vscode-settings-checkboxBackground);\n border: 1px solid currentColor;\n border-radius: 2px;\n box-sizing: border-box;\n height: 14px;\n margin-right: 5px;\n overflow: hidden;\n position: relative;\n width: 14px;\n }\n\n .checkbox-icon.checked:before,\n .checkbox-icon.checked:after {\n content: '';\n display: block;\n height: 5px;\n position: absolute;\n transform: rotate(-45deg);\n width: 10px;\n }\n\n .checkbox-icon.checked:before {\n background-color: var(--vscode-foreground);\n left: 1px;\n top: 2.5px;\n }\n\n .checkbox-icon.checked:after {\n background-color: var(--vscode-settings-checkboxBackground);\n left: 1px;\n top: -0.5px;\n }\n\n .dropdown-controls {\n display: flex;\n justify-content: flex-end;\n padding: 4px;\n }\n\n .dropdown-controls :not(:last-child) {\n margin-right: 4px;\n }\n\n .action-icon {\n align-items: center;\n background-color: transparent;\n border: 0;\n color: var(--vscode-foreground);\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);\n outline-offset: -1px;\n }\n\n .description {\n border-color: var(--vscode-settings-dropdownBorder);\n border-style: solid;\n border-width: 1px 0 0;\n color: var(--vscode-foreground);\n font-family: var(--vscode-font-family);\n font-size: var(--vscode-font-size);\n font-weight: var(--vscode-font-weight);\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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkVF;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);\n border-color: var(--vscode-settings-dropdownBorder);\n border-radius: 2px;\n border-style: solid;\n border-width: 1px;\n box-sizing: border-box;\n color: var(--vscode-settings-dropdownForeground);\n font-family: var(--vscode-font-family);\n font-size: var(--vscode-font-size);\n font-weight: var(--vscode-font-weight);\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);\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);\n border-radius: 2px;\n color: var(--vscode-badge-foreground);\n display: inline-block;\n flex-shrink: 0;\n font-size: 11px;\n line-height: 16px;\n margin: 2px;\n padding: 2px 3px;\n text-transform: uppercase;\n white-space: nowrap;\n }\n\n .select-face-badge.no-item {\n background-color: transparent;\n color: inherit;\n }\n\n .combobox-face {\n display: flex;\n }\n\n :host(:focus) .select-face,\n :host(:focus) .combobox-face,\n :host([focused]) .select-face,\n :host([focused]) .combobox-face {\n border-color: var(--vscode-focusBorder);\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);\n display: block;\n font-family: var(--vscode-font-family);\n font-size: var(--vscode-font-size);\n line-height: 16px;\n padding: 4px;\n width: 100%;\n }\n\n .combobox-input:focus {\n outline: none;\n }\n\n .combobox-button {\n background-color: transparent;\n border: 0;\n color: var(--vscode-foreground);\n cursor: pointer;\n flex-shrink: 0;\n height: 24px;\n margin: 0;\n padding: 0;\n width: 30px;\n }\n\n .combobox-button:focus,\n .combobox-button:hover {\n background-color: var(--vscode-list-hoverBackground);\n }\n\n .combobox-button:focus {\n outline: 0;\n }\n\n .icon {\n color: var(--vscode-foreground);\n display: block;\n height: 14px;\n pointer-events: none;\n position: absolute;\n right: 8px;\n top: 5px;\n width: 14px;\n }\n\n .icon svg {\n color: var(--vscode-foreground);\n height: 100%;\n width: 100%;\n }\n\n .dropdown {\n background-color: var(--vscode-settings-dropdownBackground);\n border-color: var(--vscode-settings-dropdownListBorder);\n border-radius: 0 0 3px 3px;\n border-style: solid;\n border-width: 1px;\n box-sizing: border-box;\n left: 0;\n padding-bottom: 2px;\n position: absolute;\n top: 100%;\n width: 100%;\n z-index: var(--dropdown-z-index, 2);\n }\n\n :host([position='above']) .dropdown {\n border-radius: 3px 3px 0 0;\n bottom: 26px;\n padding-bottom: 0;\n padding-top: 2px;\n top: auto;\n }\n\n :host(:focus) .dropdown,\n :host([focused]) .dropdown {\n border-color: var(--vscode-focusBorder);\n }\n\n .options {\n box-sizing: border-box;\n cursor: pointer;\n list-style: none;\n margin: 0;\n max-height: 222px;\n overflow: auto;\n padding: 1px;\n }\n\n .option {\n align-items: center;\n color: var(--vscode-foreground);\n cursor: pointer;\n display: flex;\n font-family: var(--vscode-font-family);\n font-size: var(--vscode-font-size);\n font-weight: var(--vscode-font-weight);\n line-height: 18px;\n min-height: calc(var(--vscode-font-size) * 1.3);\n padding: 1px 3px;\n user-select: none;\n border-width: 1px;\n border-style: solid;\n border-color: transparent;\n }\n\n .option b {\n color: var(--vscode-list-highlightForeground);\n }\n\n .option.active b {\n color: var(--vscode-list-focusHighlightForeground);\n }\n\n .option:not(.disabled):hover {\n background-color: var(--vscode-list-hoverBackground);\n color: var(--vscode-list-hoverForeground);\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 border-style: dotted;\n border-color: var(--vscode-list-focusOutline);\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);\n color: var(--vscode-list-activeSelectionForeground);\n border-color: var(--vscode-list-activeSelectionBackground);\n border-style: solid;\n border-width: 1px;\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 border-color: var(--vscode-list-focusOutline);\n border-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);\n border-color: var(--vscode-list-hoverBackground);\n }\n\n .dropdown.multiple .option.selected.active {\n background-color: var(--vscode-list-activeSelectionBackground);\n color: var(--vscode-list-activeSelectionForeground);\n border-color: var(--vscode-list-activeSelectionBackground);\n }\n\n .checkbox-icon {\n background-color: var(--vscode-settings-checkboxBackground);\n border: 1px solid currentColor;\n border-radius: 2px;\n box-sizing: border-box;\n height: 14px;\n margin-right: 5px;\n overflow: hidden;\n position: relative;\n width: 14px;\n }\n\n .checkbox-icon.checked:before,\n .checkbox-icon.checked:after {\n content: '';\n display: block;\n height: 5px;\n position: absolute;\n transform: rotate(-45deg);\n width: 10px;\n }\n\n .checkbox-icon.checked:before {\n background-color: var(--vscode-foreground);\n left: 1px;\n top: 2.5px;\n }\n\n .checkbox-icon.checked:after {\n background-color: var(--vscode-settings-checkboxBackground);\n left: 1px;\n top: -0.5px;\n }\n\n .dropdown-controls {\n display: flex;\n justify-content: flex-end;\n padding: 4px;\n }\n\n .dropdown-controls :not(:last-child) {\n margin-right: 4px;\n }\n\n .action-icon {\n align-items: center;\n background-color: transparent;\n border: 0;\n color: var(--vscode-foreground);\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);\n outline-offset: -1px;\n }\n\n .description {\n border-color: var(--vscode-settings-dropdownBorder);\n border-style: solid;\n border-width: 1px 0 0;\n color: var(--vscode-foreground);\n font-family: var(--vscode-font-family);\n font-size: var(--vscode-font-size);\n font-weight: var(--vscode-font-weight);\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"]}
|
|
@@ -3,17 +3,19 @@ import '../../vscode-button/index.js';
|
|
|
3
3
|
import '../../vscode-option/index.js';
|
|
4
4
|
import type { InternalOption, Option, SearchMethod } from './types.js';
|
|
5
5
|
import { VscElement } from '../VscElement.js';
|
|
6
|
-
interface OptionListStat {
|
|
7
|
-
selectedIndexes: number[];
|
|
8
|
-
values: string[];
|
|
9
|
-
}
|
|
10
6
|
/**
|
|
11
7
|
* @cssprop --dropdown-z-index - workaround for dropdown z-index issues
|
|
12
8
|
*/
|
|
13
9
|
export declare class VscodeSelectBase extends VscElement {
|
|
14
10
|
/** @internal */
|
|
15
11
|
ariaExpanded: string;
|
|
12
|
+
/**
|
|
13
|
+
* Options can be filtered by typing into a text input field.
|
|
14
|
+
*/
|
|
16
15
|
combobox: boolean;
|
|
16
|
+
/**
|
|
17
|
+
* The element cannot be used and is not focusable.
|
|
18
|
+
*/
|
|
17
19
|
set disabled(newState: boolean);
|
|
18
20
|
get disabled(): boolean;
|
|
19
21
|
/**
|
|
@@ -32,7 +34,14 @@ export declare class VscodeSelectBase extends VscElement {
|
|
|
32
34
|
*/
|
|
33
35
|
set filter(val: 'contains' | 'fuzzy' | 'startsWith' | 'startsWithPerTerm');
|
|
34
36
|
get filter(): 'contains' | 'fuzzy' | 'startsWith' | 'startsWithPerTerm';
|
|
37
|
+
/**
|
|
38
|
+
* Its value is true when element is focused.
|
|
39
|
+
*/
|
|
35
40
|
focused: boolean;
|
|
41
|
+
/**
|
|
42
|
+
* Toggle the dropdown visibility.
|
|
43
|
+
*/
|
|
44
|
+
open: boolean;
|
|
36
45
|
/**
|
|
37
46
|
* @attr [options=[]]
|
|
38
47
|
* @type {Option[]}
|
|
@@ -46,6 +55,7 @@ export declare class VscodeSelectBase extends VscElement {
|
|
|
46
55
|
/** @internal */
|
|
47
56
|
tabIndex: number;
|
|
48
57
|
private _assignedOptions;
|
|
58
|
+
constructor();
|
|
49
59
|
connectedCallback(): void;
|
|
50
60
|
disconnectedCallback(): void;
|
|
51
61
|
protected _activeIndex: number;
|
|
@@ -55,7 +65,6 @@ export declare class VscodeSelectBase extends VscElement {
|
|
|
55
65
|
protected _filterPattern: string;
|
|
56
66
|
protected _selectedIndex: number;
|
|
57
67
|
protected _selectedIndexes: number[];
|
|
58
|
-
protected _showDropdown: boolean;
|
|
59
68
|
protected _options: InternalOption[];
|
|
60
69
|
protected _value: string;
|
|
61
70
|
protected _values: string[];
|
|
@@ -75,7 +84,7 @@ export declare class VscodeSelectBase extends VscElement {
|
|
|
75
84
|
private _disabled;
|
|
76
85
|
private _originalTabIndex;
|
|
77
86
|
protected get _currentOptions(): InternalOption[];
|
|
78
|
-
protected
|
|
87
|
+
protected _setStateFromSlottedElements(): void;
|
|
79
88
|
protected _toggleDropdown(visible: boolean): Promise<void>;
|
|
80
89
|
protected _dispatchChangeEvent(): void;
|
|
81
90
|
protected _onFaceClick(): void;
|
|
@@ -106,5 +115,4 @@ export declare class VscodeSelectBase extends VscElement {
|
|
|
106
115
|
private _renderDropdown;
|
|
107
116
|
render(): TemplateResult;
|
|
108
117
|
}
|
|
109
|
-
export {};
|
|
110
118
|
//# sourceMappingURL=vscode-select-base.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vscode-select-base.d.ts","sourceRoot":"","sources":["../../../src/includes/vscode-select/vscode-select-base.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,cAAc,EAAC,MAAM,KAAK,CAAC;AAGlD,OAAO,8BAA8B,CAAC;AACtC,OAAO,8BAA8B,CAAC;AAEtC,OAAO,KAAK,EAAC,cAAc,EAAE,MAAM,EAAE,YAAY,EAAC,MAAM,YAAY,CAAC;AAErE,OAAO,EAAC,UAAU,EAAC,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"vscode-select-base.d.ts","sourceRoot":"","sources":["../../../src/includes/vscode-select/vscode-select-base.ts"],"names":[],"mappings":"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"}
|
|
@@ -18,57 +18,9 @@ const LIST_HEIGHT = VISIBLE_OPTS + OPT_HEIGHT + 2;
|
|
|
18
18
|
* @cssprop --dropdown-z-index - workaround for dropdown z-index issues
|
|
19
19
|
*/
|
|
20
20
|
export class VscodeSelectBase extends VscElement {
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
this.ariaExpanded = 'false';
|
|
25
|
-
this.combobox = false;
|
|
26
|
-
/**
|
|
27
|
-
* Sets the invalid state manually.
|
|
28
|
-
*/
|
|
29
|
-
this.invalid = false;
|
|
30
|
-
this.focused = false;
|
|
31
|
-
/**
|
|
32
|
-
* Position of the options list when visible.
|
|
33
|
-
*/
|
|
34
|
-
this.position = 'below';
|
|
35
|
-
/** @internal */
|
|
36
|
-
this.tabIndex = 0;
|
|
37
|
-
this._activeIndex = -1;
|
|
38
|
-
this._currentDescription = '';
|
|
39
|
-
this._filter = 'fuzzy';
|
|
40
|
-
this._filterPattern = '';
|
|
41
|
-
this._selectedIndex = -1;
|
|
42
|
-
this._selectedIndexes = [];
|
|
43
|
-
this._showDropdown = false;
|
|
44
|
-
this._options = [];
|
|
45
|
-
this._value = '';
|
|
46
|
-
this._values = [];
|
|
47
|
-
this._listScrollTop = 0;
|
|
48
|
-
/** @internal */
|
|
49
|
-
this._multiple = false;
|
|
50
|
-
/**
|
|
51
|
-
* @internal
|
|
52
|
-
* Quick-searchable map for searching a value in the options list.
|
|
53
|
-
* Keys are the options values, values are the option indexes.
|
|
54
|
-
*/
|
|
55
|
-
this._valueOptionIndexMap = {};
|
|
56
|
-
this._isHoverForbidden = false;
|
|
57
|
-
this._disabled = false;
|
|
58
|
-
this._originalTabIndex = undefined;
|
|
59
|
-
this._onClickOutside = (event) => {
|
|
60
|
-
const path = event.composedPath();
|
|
61
|
-
const found = path.findIndex((et) => et === this);
|
|
62
|
-
if (found === -1) {
|
|
63
|
-
this._toggleDropdown(false);
|
|
64
|
-
window.removeEventListener('click', this._onClickOutside);
|
|
65
|
-
}
|
|
66
|
-
};
|
|
67
|
-
this._onMouseMove = () => {
|
|
68
|
-
this._isHoverForbidden = false;
|
|
69
|
-
window.removeEventListener('mousemove', this._onMouseMove);
|
|
70
|
-
};
|
|
71
|
-
}
|
|
21
|
+
/**
|
|
22
|
+
* The element cannot be used and is not focusable.
|
|
23
|
+
*/
|
|
72
24
|
set disabled(newState) {
|
|
73
25
|
this._disabled = newState;
|
|
74
26
|
this.ariaDisabled = newState ? 'true' : 'false';
|
|
@@ -129,6 +81,71 @@ export class VscodeSelectBase extends VscElement {
|
|
|
129
81
|
disabled,
|
|
130
82
|
}));
|
|
131
83
|
}
|
|
84
|
+
constructor() {
|
|
85
|
+
super();
|
|
86
|
+
/** @internal */
|
|
87
|
+
this.ariaExpanded = 'false';
|
|
88
|
+
/**
|
|
89
|
+
* Options can be filtered by typing into a text input field.
|
|
90
|
+
*/
|
|
91
|
+
this.combobox = false;
|
|
92
|
+
/**
|
|
93
|
+
* Sets the invalid state manually.
|
|
94
|
+
*/
|
|
95
|
+
this.invalid = false;
|
|
96
|
+
/**
|
|
97
|
+
* Its value is true when element is focused.
|
|
98
|
+
*/
|
|
99
|
+
this.focused = false;
|
|
100
|
+
/**
|
|
101
|
+
* Toggle the dropdown visibility.
|
|
102
|
+
*/
|
|
103
|
+
this.open = false;
|
|
104
|
+
/**
|
|
105
|
+
* Position of the options list when visible.
|
|
106
|
+
*/
|
|
107
|
+
this.position = 'below';
|
|
108
|
+
/** @internal */
|
|
109
|
+
this.tabIndex = 0;
|
|
110
|
+
this._activeIndex = -1;
|
|
111
|
+
this._currentDescription = '';
|
|
112
|
+
this._filter = 'fuzzy';
|
|
113
|
+
this._filterPattern = '';
|
|
114
|
+
this._selectedIndex = -1;
|
|
115
|
+
this._selectedIndexes = [];
|
|
116
|
+
this._options = [];
|
|
117
|
+
this._value = '';
|
|
118
|
+
this._values = [];
|
|
119
|
+
this._listScrollTop = 0;
|
|
120
|
+
/** @internal */
|
|
121
|
+
this._multiple = false;
|
|
122
|
+
/**
|
|
123
|
+
* @internal
|
|
124
|
+
* Quick-searchable map for searching a value in the options list.
|
|
125
|
+
* Keys are the options values, values are the option indexes.
|
|
126
|
+
*/
|
|
127
|
+
this._valueOptionIndexMap = {};
|
|
128
|
+
this._isHoverForbidden = false;
|
|
129
|
+
this._disabled = false;
|
|
130
|
+
this._originalTabIndex = undefined;
|
|
131
|
+
this._onClickOutside = (event) => {
|
|
132
|
+
const path = event.composedPath();
|
|
133
|
+
const found = path.findIndex((et) => et === this);
|
|
134
|
+
if (found === -1) {
|
|
135
|
+
this._toggleDropdown(false);
|
|
136
|
+
window.removeEventListener('click', this._onClickOutside);
|
|
137
|
+
}
|
|
138
|
+
};
|
|
139
|
+
this._onMouseMove = () => {
|
|
140
|
+
this._isHoverForbidden = false;
|
|
141
|
+
window.removeEventListener('mousemove', this._onMouseMove);
|
|
142
|
+
};
|
|
143
|
+
this.addEventListener('vsc-option-state-change', (ev) => {
|
|
144
|
+
ev.stopPropagation();
|
|
145
|
+
this._setStateFromSlottedElements();
|
|
146
|
+
this.requestUpdate();
|
|
147
|
+
});
|
|
148
|
+
}
|
|
132
149
|
connectedCallback() {
|
|
133
150
|
super.connectedCallback();
|
|
134
151
|
this.addEventListener('keydown', this._onComponentKeyDown);
|
|
@@ -150,16 +167,14 @@ export class VscodeSelectBase extends VscElement {
|
|
|
150
167
|
get _currentOptions() {
|
|
151
168
|
return this.combobox ? this._filteredOptions : this._options;
|
|
152
169
|
}
|
|
153
|
-
|
|
170
|
+
_setStateFromSlottedElements() {
|
|
154
171
|
const options = [];
|
|
155
172
|
let nextIndex = 0;
|
|
156
173
|
const optionElements = this._assignedOptions ?? [];
|
|
157
|
-
const
|
|
158
|
-
|
|
159
|
-
values: [],
|
|
160
|
-
};
|
|
174
|
+
const selectedIndexes = [];
|
|
175
|
+
const values = [];
|
|
161
176
|
this._valueOptionIndexMap = {};
|
|
162
|
-
optionElements.forEach((el) => {
|
|
177
|
+
optionElements.forEach((el, i) => {
|
|
163
178
|
const { innerText, description, disabled } = el;
|
|
164
179
|
const value = typeof el.value === 'string' ? el.value : innerText.trim();
|
|
165
180
|
const selected = el.selected ?? false;
|
|
@@ -172,17 +187,30 @@ export class VscodeSelectBase extends VscElement {
|
|
|
172
187
|
disabled,
|
|
173
188
|
};
|
|
174
189
|
nextIndex = options.push(op);
|
|
190
|
+
if (selected && !this._multiple) {
|
|
191
|
+
this._activeIndex = i;
|
|
192
|
+
}
|
|
175
193
|
if (selected) {
|
|
176
|
-
|
|
177
|
-
|
|
194
|
+
selectedIndexes.push(options.length - 1);
|
|
195
|
+
values.push(value);
|
|
178
196
|
}
|
|
179
197
|
this._valueOptionIndexMap[op.value] = op.index;
|
|
180
198
|
});
|
|
181
199
|
this._options = options;
|
|
182
|
-
|
|
200
|
+
if (selectedIndexes.length > 0) {
|
|
201
|
+
this._selectedIndex = selectedIndexes[0];
|
|
202
|
+
this._selectedIndexes = selectedIndexes;
|
|
203
|
+
this._value = values[0];
|
|
204
|
+
this._values = values;
|
|
205
|
+
}
|
|
206
|
+
if (!this._multiple &&
|
|
207
|
+
!this.combobox &&
|
|
208
|
+
selectedIndexes.length === 0) {
|
|
209
|
+
this._selectedIndex = this._options.length > 0 ? 0 : -1;
|
|
210
|
+
}
|
|
183
211
|
}
|
|
184
212
|
async _toggleDropdown(visible) {
|
|
185
|
-
this.
|
|
213
|
+
this.open = visible;
|
|
186
214
|
this.ariaExpanded = String(visible);
|
|
187
215
|
if (visible && !this._multiple && !this.combobox) {
|
|
188
216
|
this._activeIndex = this._selectedIndex;
|
|
@@ -221,14 +249,14 @@ export class VscodeSelectBase extends VscElement {
|
|
|
221
249
|
this.dispatchEvent(new Event('input'));
|
|
222
250
|
}
|
|
223
251
|
_onFaceClick() {
|
|
224
|
-
this._toggleDropdown(!this.
|
|
252
|
+
this._toggleDropdown(!this.open);
|
|
225
253
|
if (this._multiple) {
|
|
226
254
|
this._activeIndex = 0;
|
|
227
255
|
}
|
|
228
256
|
}
|
|
229
257
|
_toggleComboboxDropdown() {
|
|
230
258
|
this._filterPattern = '';
|
|
231
|
-
this._toggleDropdown(!this.
|
|
259
|
+
this._toggleDropdown(!this.open);
|
|
232
260
|
if (this._multiple) {
|
|
233
261
|
this._activeIndex = -1;
|
|
234
262
|
}
|
|
@@ -253,7 +281,7 @@ export class VscodeSelectBase extends VscElement {
|
|
|
253
281
|
}
|
|
254
282
|
_onEnterKeyDown() {
|
|
255
283
|
const list = this.combobox ? this._filteredOptions : this._options;
|
|
256
|
-
const showDropdownNext = !this.
|
|
284
|
+
const showDropdownNext = !this.open;
|
|
257
285
|
this._toggleDropdown(showDropdownNext);
|
|
258
286
|
if (!this._multiple &&
|
|
259
287
|
!showDropdownNext &&
|
|
@@ -277,11 +305,11 @@ export class VscodeSelectBase extends VscElement {
|
|
|
277
305
|
}
|
|
278
306
|
}
|
|
279
307
|
_onSpaceKeyDown() {
|
|
280
|
-
if (!this.
|
|
308
|
+
if (!this.open) {
|
|
281
309
|
this._toggleDropdown(true);
|
|
282
310
|
return;
|
|
283
311
|
}
|
|
284
|
-
if (this.
|
|
312
|
+
if (this.open && this._multiple && this._activeIndex > -1) {
|
|
285
313
|
const opts = this.combobox ? this._filteredOptions : this._options;
|
|
286
314
|
const { selected } = opts[this._activeIndex];
|
|
287
315
|
opts[this._activeIndex].selected = !selected;
|
|
@@ -323,7 +351,7 @@ export class VscodeSelectBase extends VscElement {
|
|
|
323
351
|
}
|
|
324
352
|
}
|
|
325
353
|
_onArrowUpKeyDown() {
|
|
326
|
-
if (this.
|
|
354
|
+
if (this.open) {
|
|
327
355
|
if (this._activeIndex <= 0) {
|
|
328
356
|
return;
|
|
329
357
|
}
|
|
@@ -332,7 +360,7 @@ export class VscodeSelectBase extends VscElement {
|
|
|
332
360
|
}
|
|
333
361
|
}
|
|
334
362
|
_onArrowDownKeyDown() {
|
|
335
|
-
if (this.
|
|
363
|
+
if (this.open) {
|
|
336
364
|
if (this._activeIndex >= this._currentOptions.length - 1) {
|
|
337
365
|
return;
|
|
338
366
|
}
|
|
@@ -368,18 +396,7 @@ export class VscodeSelectBase extends VscElement {
|
|
|
368
396
|
this.focused = false;
|
|
369
397
|
}
|
|
370
398
|
_onSlotChange() {
|
|
371
|
-
|
|
372
|
-
if (stat.selectedIndexes.length > 0) {
|
|
373
|
-
this._selectedIndex = stat.selectedIndexes[0];
|
|
374
|
-
this._selectedIndexes = stat.selectedIndexes;
|
|
375
|
-
this._value = stat.values[0];
|
|
376
|
-
this._values = stat.values;
|
|
377
|
-
}
|
|
378
|
-
if (!this._multiple &&
|
|
379
|
-
!this.combobox &&
|
|
380
|
-
stat.selectedIndexes.length === 0) {
|
|
381
|
-
this._selectedIndex = this._options.length > 0 ? 0 : -1;
|
|
382
|
-
}
|
|
399
|
+
this._setStateFromSlottedElements();
|
|
383
400
|
this.requestUpdate();
|
|
384
401
|
}
|
|
385
402
|
_onComboboxInputFocus(ev) {
|
|
@@ -431,7 +448,7 @@ export class VscodeSelectBase extends VscElement {
|
|
|
431
448
|
return html `
|
|
432
449
|
<slot class="main-slot" @slotchange="${this._onSlotChange}"></slot>
|
|
433
450
|
${this.combobox ? this._renderComboboxFace() : this._renderSelectFace()}
|
|
434
|
-
${this.
|
|
451
|
+
${this.open ? this._renderDropdown() : nothing}
|
|
435
452
|
`;
|
|
436
453
|
}
|
|
437
454
|
}
|
|
@@ -453,6 +470,9 @@ __decorate([
|
|
|
453
470
|
__decorate([
|
|
454
471
|
property({ type: Boolean, reflect: true })
|
|
455
472
|
], VscodeSelectBase.prototype, "focused", void 0);
|
|
473
|
+
__decorate([
|
|
474
|
+
property({ type: Boolean, reflect: true })
|
|
475
|
+
], VscodeSelectBase.prototype, "open", void 0);
|
|
456
476
|
__decorate([
|
|
457
477
|
property({ type: Array })
|
|
458
478
|
], VscodeSelectBase.prototype, "options", null);
|
|
@@ -489,9 +509,6 @@ __decorate([
|
|
|
489
509
|
__decorate([
|
|
490
510
|
state()
|
|
491
511
|
], VscodeSelectBase.prototype, "_selectedIndexes", void 0);
|
|
492
|
-
__decorate([
|
|
493
|
-
state()
|
|
494
|
-
], VscodeSelectBase.prototype, "_showDropdown", void 0);
|
|
495
512
|
__decorate([
|
|
496
513
|
state()
|
|
497
514
|
], VscodeSelectBase.prototype, "_options", void 0);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vscode-select-base.js","sourceRoot":"","sources":["../../../src/includes/vscode-select/vscode-select-base.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAC,IAAI,EAAE,OAAO,EAAiB,MAAM,KAAK,CAAC;AAClD,OAAO,EAAC,QAAQ,EAAE,KAAK,EAAE,qBAAqB,EAAE,KAAK,EAAC,MAAM,mBAAmB,CAAC;AAChF,OAAO,EAAC,QAAQ,EAAC,MAAM,6BAA6B,CAAC;AACrD,OAAO,8BAA8B,CAAC;AACtC,OAAO,8BAA8B,CAAC;AAGtC,OAAO,EAAC,sBAAsB,EAAC,MAAM,cAAc,CAAC;AACpD,OAAO,EAAC,UAAU,EAAC,MAAM,kBAAkB,CAAC;AAO5C,MAAM,YAAY,GAAG,EAAE,CAAC;AACxB,MAAM,UAAU,GAAG,EAAE,CAAC;AACtB,MAAM,WAAW,GAAG,YAAY,GAAG,UAAU,GAAG,CAAC,CAAC;AAElD;;GAEG;AACH,MAAM,OAAO,gBAAiB,SAAQ,UAAU;IAAhD;;QACE,gBAAgB;QAEhB,iBAAY,GAAG,OAAO,CAAC;QAGvB,aAAQ,GAAG,KAAK,CAAC;QAsBjB;;WAEG;QAEH,YAAO,GAAG,KAAK,CAAC;QAoChB,YAAO,GAAG,KAAK,CAAC;QAsBhB;;WAEG;QAEH,aAAQ,GAAsB,OAAO,CAAC;QAEtC,gBAAgB;QAEhB,aAAQ,GAAG,CAAC,CAAC;QAuBH,iBAAY,GAAG,CAAC,CAAC,CAAC;QAGlB,wBAAmB,GAAG,EAAE,CAAC;QAGzB,YAAO,GAAiB,OAAO,CAAC;QAgBhC,mBAAc,GAAG,EAAE,CAAC;QAGpB,mBAAc,GAAG,CAAC,CAAC,CAAC;QAGpB,qBAAgB,GAAa,EAAE,CAAC;QAGhC,kBAAa,GAAG,KAAK,CAAC;QAGtB,aAAQ,GAAqB,EAAE,CAAC;QAGhC,WAAM,GAAG,EAAE,CAAC;QAGZ,YAAO,GAAa,EAAE,CAAC;QAGvB,mBAAc,GAAG,CAAC,CAAC;QAK7B,gBAAgB;QACN,cAAS,GAAG,KAAK,CAAC;QAE5B;;;;WAIG;QACO,yBAAoB,GAA4B,EAAE,CAAC;QAErD,sBAAiB,GAAG,KAAK,CAAC;QAC1B,cAAS,GAAG,KAAK,CAAC;QAClB,sBAAiB,GAAuB,SAAS,CAAC;QAqGlD,oBAAe,GAAG,CAAC,KAAiB,EAAQ,EAAE;YACpD,MAAM,IAAI,GAAG,KAAK,CAAC,YAAY,EAAE,CAAC;YAClC,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,IAAI,CAAC,CAAC;YAElD,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE,CAAC;gBACjB,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;gBAC5B,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;YAC5D,CAAC;QACH,CAAC,CAAC;QAEM,iBAAY,GAAG,GAAG,EAAE;YAC1B,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;YAC/B,MAAM,CAAC,mBAAmB,CAAC,WAAW,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;QAC7D,CAAC,CAAC;IA8QJ,CAAC;IA5iBC,IAAI,QAAQ,CAAC,QAAiB;QAC5B,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;QAC1B,IAAI,CAAC,YAAY,GAAG,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC;QAEhD,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;YACtB,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,QAAQ,CAAC;YACvC,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;QACrB,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,iBAAiB,IAAI,CAAC,CAAC;YAC5C,IAAI,CAAC,iBAAiB,GAAG,SAAS,CAAC;QACrC,CAAC;QAED,IAAI,CAAC,aAAa,EAAE,CAAC;IACvB,CAAC;IAED,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAQD;;;;;;;;;OASG;IAEH,IAAI,MAAM,CAAC,GAA8D;QACvE,MAAM,WAAW,GAAmB;YAClC,UAAU;YACV,OAAO;YACP,YAAY;YACZ,mBAAmB;SACpB,CAAC;QAEF,IAAI,WAAW,CAAC,QAAQ,CAAC,GAAmB,CAAC,EAAE,CAAC;YAC9C,IAAI,CAAC,OAAO,GAAG,GAAmB,CAAC;QACrC,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;YACvB,OAAO,CAAC,IAAI,CACV,8CAA8C,GAAG,gGAAgG,EACjJ,IAAI,CACL,CAAC;QACJ,CAAC;IACH,CAAC;IACD,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAKD;;;OAGG;IAEH,IAAI,OAAO,CAAC,IAAc;QACxB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,EAAC,GAAG,EAAE,EAAE,KAAK,EAAC,CAAC,CAAC,CAAC;IAC5D,CAAC;IACD,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CACtB,CAAC,EAAC,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAC,EAAE,EAAE,CAAC,CAAC;YACpD,KAAK;YACL,KAAK;YACL,WAAW;YACX,QAAQ;YACR,QAAQ;SACT,CAAC,CACH,CAAC;IACJ,CAAC;IAkBD,iBAAiB;QACf,KAAK,CAAC,iBAAiB,EAAE,CAAC;QAC1B,IAAI,CAAC,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,mBAAmB,CAAC,CAAC;QAC3D,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;QACvD,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;IACvD,CAAC;IAED,oBAAoB;QAClB,KAAK,CAAC,oBAAoB,EAAE,CAAC;QAC7B,IAAI,CAAC,mBAAmB,CAAC,SAAS,EAAE,IAAI,CAAC,mBAAmB,CAAC,CAAC;QAC9D,IAAI,CAAC,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;QAC1D,IAAI,CAAC,mBAAmB,CAAC,MAAM,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;IAC1D,CAAC;IAYD,IAAc,gBAAgB;QAC5B,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,cAAc,KAAK,EAAE,EAAE,CAAC;YACjD,OAAO,IAAI,CAAC,QAAQ,CAAC;QACvB,CAAC;QAED,OAAO,sBAAsB,CAC3B,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,cAAc,EACnB,IAAI,CAAC,OAAO,CACb,CAAC;IACJ,CAAC;IA2CD,IAAc,eAAe;QAC3B,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC;IAC/D,CAAC;IAES,8BAA8B;QACtC,MAAM,OAAO,GAAqB,EAAE,CAAC;QACrC,IAAI,SAAS,GAAG,CAAC,CAAC;QAClB,MAAM,cAAc,GAAG,IAAI,CAAC,gBAAgB,IAAI,EAAE,CAAC;QACnD,MAAM,eAAe,GAAmB;YACtC,eAAe,EAAE,EAAE;YACnB,MAAM,EAAE,EAAE;SACX,CAAC;QACF,IAAI,CAAC,oBAAoB,GAAG,EAAE,CAAC;QAE/B,cAAc,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE;YAC5B,MAAM,EAAC,SAAS,EAAE,WAAW,EAAE,QAAQ,EAAC,GAAG,EAAE,CAAC;YAC9C,MAAM,KAAK,GAAG,OAAO,EAAE,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;YACzE,MAAM,QAAQ,GAAG,EAAE,CAAC,QAAQ,IAAI,KAAK,CAAC;YACtC,MAAM,EAAE,GAAmB;gBACzB,KAAK,EAAE,SAAS,CAAC,IAAI,EAAE;gBACvB,KAAK;gBACL,WAAW;gBACX,QAAQ;gBACR,KAAK,EAAE,SAAS;gBAChB,QAAQ;aACT,CAAC;YAEF,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAE7B,IAAI,QAAQ,EAAE,CAAC;gBACb,eAAe,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;gBACzD,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACrC,CAAC;YAED,IAAI,CAAC,oBAAoB,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC;QACjD,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;QAExB,OAAO,eAAe,CAAC;IACzB,CAAC;IAES,KAAK,CAAC,eAAe,CAAC,OAAgB;QAC9C,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC;QAC7B,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;QAEpC,IAAI,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACjD,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,cAAc,CAAC;YAExC,IAAI,IAAI,CAAC,YAAY,GAAG,YAAY,GAAG,CAAC,EAAE,CAAC;gBACzC,MAAM,IAAI,CAAC,cAAc,CAAC;gBAE1B,IAAI,CAAC,YAAY,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK,CACtC,IAAI,CAAC,YAAY,GAAG,UAAU,CAC/B,CAAC;YACJ,CAAC;QACH,CAAC;QAED,IAAI,OAAO,EAAE,CAAC;YACZ,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;QACzD,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;QAC5D,CAAC;IACH,CAAC;IAES,oBAAoB;QAC5B,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YACpB,kBAAkB;YAClB,IAAI,CAAC,aAAa,CAChB,IAAI,WAAW,CAAC,YAAY,EAAE;gBAC5B,MAAM,EAAE;oBACN,aAAa,EAAE,IAAI,CAAC,cAAc;oBAClC,KAAK,EAAE,IAAI,CAAC,MAAM;iBACnB;aACF,CAAC,CACH,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,kBAAkB;YAClB,IAAI,CAAC,aAAa,CAChB,IAAI,WAAW,CAAC,YAAY,EAAE;gBAC5B,MAAM,EAAE;oBACN,eAAe,EAAE,IAAI,CAAC,gBAAgB;oBACtC,KAAK,EAAE,IAAI,CAAC,OAAO;iBACpB;aACF,CAAC,CACH,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,aAAa,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;QACxC,IAAI,CAAC,aAAa,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;IACzC,CAAC;IAES,YAAY;QACpB,IAAI,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAE1C,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC;QACxB,CAAC;IACH,CAAC;IAiBO,uBAAuB;QAC7B,IAAI,CAAC,cAAc,GAAG,EAAE,CAAC;QACzB,IAAI,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAE1C,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC;QACzB,CAAC;IACH,CAAC;IAES,sBAAsB;QAC9B,IAAI,CAAC,uBAAuB,EAAE,CAAC;IACjC,CAAC;IAES,wBAAwB,CAAC,EAAiB;QAClD,IAAI,EAAE,CAAC,GAAG,KAAK,OAAO,EAAE,CAAC;YACvB,IAAI,CAAC,uBAAuB,EAAE,CAAC;QACjC,CAAC;IACH,CAAC;IAES,kBAAkB,CAAC,EAAc;QACzC,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;YAC3B,OAAO;QACT,CAAC;QAED,MAAM,EAAE,GAAG,EAAE,CAAC,MAAqB,CAAC;QAEpC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;YAC3B,OAAO;QACT,CAAC;QAED,IAAI,CAAC,YAAY,GAAG,MAAM,CACxB,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,CAC5D,CAAC;IACJ,CAAC;IAES,eAAe;QACvB,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC;QACnE,MAAM,gBAAgB,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC;QAE7C,IAAI,CAAC,eAAe,CAAC,gBAAgB,CAAC,CAAC;QAEvC,IACE,CAAC,IAAI,CAAC,SAAS;YACf,CAAC,gBAAgB;YACjB,IAAI,CAAC,cAAc,KAAK,IAAI,CAAC,YAAY,EACzC,CAAC;YACD,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,KAAK,CAAC;YACpD,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,KAAK,CAAC;YACvD,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC9B,CAAC;QAED,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,gBAAgB,EAAE,CAAC;gBACzC,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,KAAK,CAAC;YACvE,CAAC;YAED,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,gBAAgB,EAAE,CAAC;gBACxC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,EAAE;oBAC5B,IAAI,CAAC,yBAAyB,EAAE,CAAC;gBACnC,CAAC,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,IAAI,IAAI,CAAC,SAAS,IAAI,gBAAgB,EAAE,CAAC;YACvC,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC;QACxB,CAAC;IACH,CAAC;IAEO,eAAe;QACrB,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;YACxB,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;YAC3B,OAAO;QACT,CAAC;QAED,IAAI,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC,EAAE,CAAC;YACnE,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC;YACnE,MAAM,EAAC,QAAQ,EAAC,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YAE3C,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,QAAQ,GAAG,CAAC,QAAQ,CAAC;YAC7C,IAAI,CAAC,gBAAgB,GAAG,EAAE,CAAC;YAE3B,IAAI,CAAC,OAAO,CAAC,CAAC,EAAC,KAAK,EAAE,QAAQ,EAAC,EAAE,EAAE;gBACjC,IAAI,QAAQ,EAAE,CAAC;oBACb,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBACpC,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAEO,yBAAyB;QAC/B,IAAI,CAAC,YAAY,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,GAAG,UAAU,CAAC,CAAC;IAC3E,CAAC;IAEO,KAAK,CAAC,0BAA0B,CAAC,SAAwB;QAC/D,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ;YAC3B,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,MAAM;YAC9B,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;QAEzB,IAAI,OAAO,IAAI,YAAY,EAAE,CAAC;YAC5B,OAAO;QACT,CAAC;QAED,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;QAC9B,MAAM,CAAC,gBAAgB,CAAC,WAAW,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;QAExD,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;YACvB,MAAM,IAAI,CAAC,cAAc,CAAC;QAC5B,CAAC;QAED,MAAM,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC;QAChD,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,GAAG,UAAU,CAAC;QAE9C,IAAI,SAAS,KAAK,MAAM,EAAE,CAAC;YACzB,IAAI,MAAM,GAAG,UAAU,IAAI,WAAW,GAAG,WAAW,EAAE,CAAC;gBACrD,IAAI,CAAC,YAAY,CAAC,SAAS;oBACzB,CAAC,IAAI,CAAC,YAAY,GAAG,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC;YAC1D,CAAC;QACH,CAAC;QAED,IAAI,SAAS,KAAK,IAAI,EAAE,CAAC;YACvB,IAAI,MAAM,IAAI,WAAW,GAAG,UAAU,EAAE,CAAC;gBACvC,IAAI,CAAC,yBAAyB,EAAE,CAAC;YACnC,CAAC;QACH,CAAC;IACH,CAAC;IAES,iBAAiB;QACzB,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YACvB,IAAI,IAAI,CAAC,YAAY,IAAI,CAAC,EAAE,CAAC;gBAC3B,OAAO;YACT,CAAC;YAED,IAAI,CAAC,YAAY,IAAI,CAAC,CAAC;YACvB,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,CAAC;QACxC,CAAC;IACH,CAAC;IAES,mBAAmB;QAC3B,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YACvB,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACzD,OAAO;YACT,CAAC;YAED,IAAI,CAAC,YAAY,IAAI,CAAC,CAAC;YACvB,IAAI,CAAC,0BAA0B,CAAC,MAAM,CAAC,CAAC;QAC1C,CAAC;IACH,CAAC;IAEO,mBAAmB,CAAC,KAAoB;QAC9C,IAAI,CAAC,GAAG,EAAE,SAAS,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;YAChE,KAAK,CAAC,eAAe,EAAE,CAAC;YACxB,KAAK,CAAC,cAAc,EAAE,CAAC;QACzB,CAAC;QAED,IAAI,KAAK,CAAC,GAAG,KAAK,OAAO,EAAE,CAAC;YAC1B,IAAI,CAAC,eAAe,EAAE,CAAC;QACzB,CAAC;QAED,IAAI,KAAK,CAAC,GAAG,KAAK,GAAG,EAAE,CAAC;YACtB,IAAI,CAAC,eAAe,EAAE,CAAC;QACzB,CAAC;QAED,IAAI,KAAK,CAAC,GAAG,KAAK,QAAQ,EAAE,CAAC;YAC3B,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;QAC9B,CAAC;QAED,IAAI,KAAK,CAAC,GAAG,KAAK,SAAS,EAAE,CAAC;YAC5B,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAC3B,CAAC;QAED,IAAI,KAAK,CAAC,GAAG,KAAK,WAAW,EAAE,CAAC;YAC9B,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC7B,CAAC;IACH,CAAC;IAEO,iBAAiB;QACvB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;IACtB,CAAC;IAEO,gBAAgB;QACtB,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;IACvB,CAAC;IAES,aAAa;QACrB,MAAM,IAAI,GAAG,IAAI,CAAC,8BAA8B,EAAE,CAAC;QAEnD,IAAI,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACpC,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;YAC9C,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,eAAe,CAAC;YAC7C,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YAC7B,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC;QAC7B,CAAC;QAED,IACE,CAAC,IAAI,CAAC,SAAS;YACf,CAAC,IAAI,CAAC,QAAQ;YACd,IAAI,CAAC,eAAe,CAAC,MAAM,KAAK,CAAC,EACjC,CAAC;YACD,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1D,CAAC;QAED,IAAI,CAAC,aAAa,EAAE,CAAC;IACvB,CAAC;IAES,qBAAqB,CAAC,EAAc;QAC3C,EAAE,CAAC,MAA2B,CAAC,MAAM,EAAE,CAAC;IAC3C,CAAC;IAES,qBAAqB,CAAC,EAAc;QAC5C,IAAI,CAAC,cAAc,GAAI,EAAE,CAAC,MAA2B,CAAC,KAAK,CAAC;QAC5D,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC;QACvB,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;IAES,qBAAqB;QAC7B,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;IAES,cAAc;QACtB,OAAO,EAAE,CAAC;IACZ,CAAC;IAEO,kBAAkB;QACxB,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC;YACtC,OAAO,OAAO,CAAC;QACjB,CAAC;QAED,MAAM,EAAC,WAAW,EAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAEvD,OAAO,WAAW;YAChB,CAAC,CAAC,IAAI,CAAA,4BAA4B,WAAW,QAAQ;YACrD,CAAC,CAAC,OAAO,CAAC;IACd,CAAC;IAES,iBAAiB;QACzB,OAAO,IAAI,CAAA,GAAG,OAAO,EAAE,CAAC;IAC1B,CAAC;IAES,mBAAmB;QAC3B,OAAO,IAAI,CAAA,GAAG,OAAO,EAAE,CAAC;IAC1B,CAAC;IAES,uBAAuB;QAC/B,OAAO,IAAI,CAAA,GAAG,OAAO,EAAE,CAAC;IAC1B,CAAC;IAEO,eAAe;QACrB,MAAM,OAAO,GAAG,QAAQ,CAAC;YACvB,QAAQ,EAAE,IAAI;YACd,QAAQ,EAAE,IAAI,CAAC,SAAS;SACzB,CAAC,CAAC;QAEH,OAAO,IAAI,CAAA;oBACK,OAAO;UACjB,IAAI,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC,CAAC,CAAC,OAAO;UAC/D,IAAI,CAAC,cAAc,EAAE,IAAI,IAAI,CAAC,uBAAuB,EAAE;UACvD,IAAI,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC,CAAC,CAAC,OAAO;;KAEpE,CAAC;IACJ,CAAC;IAED,MAAM;QACJ,OAAO,IAAI,CAAA;6CAC8B,IAAI,CAAC,aAAa;QACvD,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,mBAAmB,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,iBAAiB,EAAE;QACrE,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,OAAO;KACxD,CAAC;IACJ,CAAC;CACF;AAljBC;IADC,QAAQ,CAAC,EAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,eAAe,EAAC,CAAC;sDAC7C;AAGvB;IADC,QAAQ,CAAC,EAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAC,CAAC;kDACxB;AAGjB;IADC,QAAQ,CAAC,EAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAC,CAAC;gDAcxC;AAUD;IADC,QAAQ,CAAC,EAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAC,CAAC;iDACzB;AAahB;IADC,QAAQ,EAAE;8CAkBV;AAMD;IADC,QAAQ,CAAC,EAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAC,CAAC;iDACzB;AAOhB;IADC,QAAQ,CAAC,EAAC,IAAI,EAAE,KAAK,EAAC,CAAC;+CAGvB;AAiBD;IADC,QAAQ,CAAC,EAAC,OAAO,EAAE,IAAI,EAAC,CAAC;kDACY;AAItC;IADC,QAAQ,CAAC,EAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAC,CAAC;kDAC5C;AAML;IAJP,qBAAqB,CAAC;QACrB,OAAO,EAAE,IAAI;QACb,QAAQ,EAAE,eAAe;KAC1B,CAAC;0DACwC;AAiBhC;IADT,KAAK,EAAE;sDACoB;AAGlB;IADT,KAAK,EAAE;6DAC2B;AAGzB;IADT,KAAK,EAAE;iDACkC;AAG1C;IADC,KAAK,EAAE;wDAWP;AAGS;IADT,KAAK,EAAE;wDACsB;AAGpB;IADT,KAAK,EAAE;wDACsB;AAGpB;IADT,KAAK,EAAE;0DACkC;AAGhC;IADT,KAAK,EAAE;uDACwB;AAGtB;IADT,KAAK,EAAE;kDACkC;AAGhC;IADT,KAAK,EAAE;gDACc;AAGZ;IADT,KAAK,EAAE;iDACyB;AAGvB;IADT,KAAK,EAAE;wDACqB;AAGrB;IADP,KAAK,CAAC,UAAU,CAAC;sDACsB","sourcesContent":["import {html, nothing, TemplateResult} from 'lit';\nimport {property, query, queryAssignedElements, state} from 'lit/decorators.js';\nimport {classMap} from 'lit/directives/class-map.js';\nimport '../../vscode-button/index.js';\nimport '../../vscode-option/index.js';\nimport {VscodeOption} from '../../vscode-option/index.js';\nimport type {InternalOption, Option, SearchMethod} from './types.js';\nimport {filterOptionsByPattern} from './helpers.js';\nimport {VscElement} from '../VscElement.js';\n\ninterface OptionListStat {\n selectedIndexes: number[];\n values: string[];\n}\n\nconst VISIBLE_OPTS = 10;\nconst OPT_HEIGHT = 22;\nconst LIST_HEIGHT = VISIBLE_OPTS + OPT_HEIGHT + 2;\n\n/**\n * @cssprop --dropdown-z-index - workaround for dropdown z-index issues\n */\nexport class VscodeSelectBase extends VscElement {\n /** @internal */\n @property({type: String, reflect: true, attribute: 'aria-expanded'})\n ariaExpanded = 'false';\n\n @property({type: Boolean, reflect: true})\n combobox = false;\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: SearchMethod[] = [\n 'contains',\n 'fuzzy',\n 'startsWith',\n 'startsWithPerTerm',\n ];\n\n if (validValues.includes(val as SearchMethod)) {\n this._filter = val as SearchMethod;\n } else {\n this._filter = 'fuzzy';\n console.warn(\n `[VSCode Webview Elements] Invalid filter: \"${val}\", fallback to default. Valid values are: \"contains\", \"fuzzy\", \"startsWith\", \"startsWithPerm\".`,\n this\n );\n }\n }\n get filter(): 'contains' | 'fuzzy' | 'startsWith' | 'startsWithPerTerm' {\n return this._filter;\n }\n\n @property({type: Boolean, reflect: true})\n focused = false;\n\n /**\n * @attr [options=[]]\n * @type {Option[]}\n */\n @property({type: Array})\n set options(opts: Option[]) {\n this._options = opts.map((op, index) => ({...op, index}));\n }\n get options(): Option[] {\n return this._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 /** @internal */\n @property({type: Number, attribute: true, reflect: true})\n tabIndex = 0;\n\n @queryAssignedElements({\n flatten: true,\n selector: 'vscode-option',\n })\n private _assignedOptions!: VscodeOption[];\n\n connectedCallback(): void {\n super.connectedCallback();\n this.addEventListener('keydown', this._onComponentKeyDown);\n this.addEventListener('focus', this._onComponentFocus);\n this.addEventListener('blur', this._onComponentBlur);\n }\n\n 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 @state()\n protected _activeIndex = -1;\n\n @state()\n protected _currentDescription = '';\n\n @state()\n protected _filter: SearchMethod = 'fuzzy';\n\n @state()\n protected get _filteredOptions(): InternalOption[] {\n if (!this.combobox || this._filterPattern === '') {\n return this._options;\n }\n\n return filterOptionsByPattern(\n this._options,\n this._filterPattern,\n this._filter\n );\n }\n\n @state()\n protected _filterPattern = '';\n\n @state()\n protected _selectedIndex = -1;\n\n @state()\n protected _selectedIndexes: number[] = [];\n\n @state()\n protected _showDropdown = false;\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 _listScrollTop = 0;\n\n @query('.options')\n private _listElement!: HTMLUListElement;\n\n /** @internal */\n protected _multiple = false;\n\n /**\n * @internal\n * Quick-searchable map for searching a value in the options list.\n * Keys are the options values, values are the option indexes.\n */\n protected _valueOptionIndexMap: {[key: string]: number} = {};\n\n private _isHoverForbidden = false;\n private _disabled = false;\n private _originalTabIndex: number | undefined = undefined;\n\n protected get _currentOptions(): InternalOption[] {\n return this.combobox ? this._filteredOptions : this._options;\n }\n\n protected _addOptionsFromSlottedElements(): OptionListStat {\n const options: InternalOption[] = [];\n let nextIndex = 0;\n const optionElements = this._assignedOptions ?? [];\n const optionsListStat: OptionListStat = {\n selectedIndexes: [],\n values: [],\n };\n this._valueOptionIndexMap = {};\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: InternalOption = {\n label: innerText.trim(),\n value,\n description,\n selected,\n index: nextIndex,\n disabled,\n };\n\n nextIndex = options.push(op);\n\n if (selected) {\n optionsListStat.selectedIndexes.push(options.length - 1);\n optionsListStat.values.push(value);\n }\n\n this._valueOptionIndexMap[op.value] = op.index;\n });\n\n this._options = options;\n\n return optionsListStat;\n }\n\n protected async _toggleDropdown(visible: boolean): Promise<void> {\n this._showDropdown = visible;\n this.ariaExpanded = String(visible);\n\n if (visible && !this._multiple && !this.combobox) {\n this._activeIndex = this._selectedIndex;\n\n if (this._activeIndex > VISIBLE_OPTS - 1) {\n await this.updateComplete;\n\n this._listElement.scrollTop = Math.floor(\n this._activeIndex * OPT_HEIGHT\n );\n }\n }\n\n if (visible) {\n window.addEventListener('click', this._onClickOutside);\n } else {\n window.removeEventListener('click', this._onClickOutside);\n }\n }\n\n protected _dispatchChangeEvent(): void {\n if (!this._multiple) {\n /** @deprecated */\n this.dispatchEvent(\n new CustomEvent('vsc-change', {\n detail: {\n selectedIndex: this._selectedIndex,\n value: this._value,\n },\n })\n );\n } else {\n /** @deprecated */\n this.dispatchEvent(\n new CustomEvent('vsc-change', {\n detail: {\n selectedIndexes: this._selectedIndexes,\n value: this._values,\n },\n })\n );\n }\n this.dispatchEvent(new Event('change'));\n this.dispatchEvent(new Event('input'));\n }\n\n protected _onFaceClick(): void {\n this._toggleDropdown(!this._showDropdown);\n\n if (this._multiple) {\n this._activeIndex = 0;\n }\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._toggleDropdown(false);\n window.removeEventListener('click', this._onClickOutside);\n }\n };\n\n private _onMouseMove = () => {\n this._isHoverForbidden = false;\n window.removeEventListener('mousemove', this._onMouseMove);\n };\n\n private _toggleComboboxDropdown() {\n this._filterPattern = '';\n this._toggleDropdown(!this._showDropdown);\n\n if (this._multiple) {\n this._activeIndex = -1;\n }\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 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 this._activeIndex = Number(\n this.combobox ? el.dataset.filteredIndex : el.dataset.index\n );\n }\n\n protected _onEnterKeyDown(): void {\n const list = this.combobox ? this._filteredOptions : this._options;\n const showDropdownNext = !this._showDropdown;\n\n this._toggleDropdown(showDropdownNext);\n\n if (\n !this._multiple &&\n !showDropdownNext &&\n this._selectedIndex !== this._activeIndex\n ) {\n this._selectedIndex = list[this._activeIndex].index;\n this._value = this._options[this._selectedIndex].value;\n this._dispatchChangeEvent();\n }\n\n if (this.combobox) {\n if (!this._multiple && !showDropdownNext) {\n this._selectedIndex = this._filteredOptions[this._activeIndex].index;\n }\n\n if (!this._multiple && showDropdownNext) {\n this.updateComplete.then(() => {\n this._scrollActiveElementToTop();\n });\n }\n }\n\n if (this._multiple && showDropdownNext) {\n this._activeIndex = 0;\n }\n }\n\n private _onSpaceKeyDown() {\n if (!this._showDropdown) {\n this._toggleDropdown(true);\n return;\n }\n\n if (this._showDropdown && this._multiple && this._activeIndex > -1) {\n const opts = this.combobox ? this._filteredOptions : this._options;\n const {selected} = opts[this._activeIndex];\n\n opts[this._activeIndex].selected = !selected;\n this._selectedIndexes = [];\n\n opts.forEach(({index, selected}) => {\n if (selected) {\n this._selectedIndexes.push(index);\n }\n });\n }\n }\n\n private _scrollActiveElementToTop() {\n this._listElement.scrollTop = Math.floor(this._activeIndex * OPT_HEIGHT);\n }\n\n private async _adjustOptionListScrollPos(direction: 'down' | 'up') {\n const numOpts = this.combobox\n ? this._filteredOptions.length\n : this._options.length;\n\n if (numOpts <= VISIBLE_OPTS) {\n return;\n }\n\n this._isHoverForbidden = true;\n window.addEventListener('mousemove', this._onMouseMove);\n\n if (!this._listElement) {\n await this.updateComplete;\n }\n\n const ulScrollTop = this._listElement.scrollTop;\n const liPosY = this._activeIndex * OPT_HEIGHT;\n\n if (direction === 'down') {\n if (liPosY + OPT_HEIGHT >= LIST_HEIGHT + ulScrollTop) {\n this._listElement.scrollTop =\n (this._activeIndex - (VISIBLE_OPTS - 1)) * OPT_HEIGHT;\n }\n }\n\n if (direction === 'up') {\n if (liPosY <= ulScrollTop - OPT_HEIGHT) {\n this._scrollActiveElementToTop();\n }\n }\n }\n\n protected _onArrowUpKeyDown(): void {\n if (this._showDropdown) {\n if (this._activeIndex <= 0) {\n return;\n }\n\n this._activeIndex -= 1;\n this._adjustOptionListScrollPos('up');\n }\n }\n\n protected _onArrowDownKeyDown(): void {\n if (this._showDropdown) {\n if (this._activeIndex >= this._currentOptions.length - 1) {\n return;\n }\n\n this._activeIndex += 1;\n this._adjustOptionListScrollPos('down');\n }\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();\n }\n\n if (event.key === ' ') {\n this._onSpaceKeyDown();\n }\n\n if (event.key === 'Escape') {\n this._toggleDropdown(false);\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 const stat = this._addOptionsFromSlottedElements();\n\n if (stat.selectedIndexes.length > 0) {\n this._selectedIndex = stat.selectedIndexes[0];\n this._selectedIndexes = stat.selectedIndexes;\n this._value = stat.values[0];\n this._values = stat.values;\n }\n\n if (\n !this._multiple &&\n !this.combobox &&\n stat.selectedIndexes.length === 0\n ) {\n this._selectedIndex = this._options.length > 0 ? 0 : -1;\n }\n\n this.requestUpdate();\n }\n\n protected _onComboboxInputFocus(ev: FocusEvent): void {\n (ev.target as HTMLInputElement).select();\n }\n\n protected _onComboboxInputInput(ev: InputEvent): void {\n this._filterPattern = (ev.target as HTMLInputElement).value;\n this._activeIndex = -1;\n this._toggleDropdown(true);\n }\n\n protected _onComboboxInputClick(): void {\n this._toggleDropdown(true);\n }\n\n protected _renderOptions(): TemplateResult | TemplateResult[] {\n return [];\n }\n\n private _renderDescription() {\n if (!this._options[this._activeIndex]) {\n return nothing;\n }\n\n const {description} = this._options[this._activeIndex];\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 private _renderDropdown() {\n const classes = classMap({\n dropdown: true,\n multiple: this._multiple,\n });\n\n return html`\n <div class=\"${classes}\">\n ${this.position === 'above' ? this._renderDescription() : nothing}\n ${this._renderOptions()} ${this._renderDropdownControls()}\n ${this.position === 'below' ? this._renderDescription() : nothing}\n </div>\n `;\n }\n\n render(): TemplateResult {\n return html`\n <slot class=\"main-slot\" @slotchange=\"${this._onSlotChange}\"></slot>\n ${this.combobox ? this._renderComboboxFace() : this._renderSelectFace()}\n ${this._showDropdown ? this._renderDropdown() : nothing}\n `;\n }\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, nothing, TemplateResult} from 'lit';\nimport {property, query, queryAssignedElements, state} from 'lit/decorators.js';\nimport {classMap} from 'lit/directives/class-map.js';\nimport '../../vscode-button/index.js';\nimport '../../vscode-option/index.js';\nimport {VscodeOption} from '../../vscode-option/index.js';\nimport type {InternalOption, Option, SearchMethod} from './types.js';\nimport {filterOptionsByPattern} from './helpers.js';\nimport {VscElement} from '../VscElement.js';\n\nconst VISIBLE_OPTS = 10;\nconst OPT_HEIGHT = 22;\nconst LIST_HEIGHT = VISIBLE_OPTS + OPT_HEIGHT + 2;\n\n/**\n * @cssprop --dropdown-z-index - workaround for dropdown z-index issues\n */\nexport class VscodeSelectBase extends VscElement {\n /** @internal */\n @property({type: String, reflect: true, attribute: 'aria-expanded'})\n ariaExpanded = 'false';\n\n /**\n * Options can be filtered by typing into a text input field.\n */\n @property({type: Boolean, reflect: true})\n combobox = false;\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: SearchMethod[] = [\n 'contains',\n 'fuzzy',\n 'startsWith',\n 'startsWithPerTerm',\n ];\n\n if (validValues.includes(val as SearchMethod)) {\n this._filter = val as SearchMethod;\n } else {\n this._filter = 'fuzzy';\n console.warn(\n `[VSCode Webview Elements] Invalid filter: \"${val}\", fallback to default. Valid values are: \"contains\", \"fuzzy\", \"startsWith\", \"startsWithPerm\".`,\n this\n );\n }\n }\n get filter(): 'contains' | 'fuzzy' | 'startsWith' | 'startsWithPerTerm' {\n return this._filter;\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._options = opts.map((op, index) => ({...op, index}));\n }\n get options(): Option[] {\n return this._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 /** @internal */\n @property({type: Number, attribute: true, reflect: true})\n tabIndex = 0;\n\n @queryAssignedElements({\n flatten: true,\n selector: 'vscode-option',\n })\n private _assignedOptions!: VscodeOption[];\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 connectedCallback(): void {\n super.connectedCallback();\n this.addEventListener('keydown', this._onComponentKeyDown);\n this.addEventListener('focus', this._onComponentFocus);\n this.addEventListener('blur', this._onComponentBlur);\n }\n\n 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 @state()\n protected _activeIndex = -1;\n\n @state()\n protected _currentDescription = '';\n\n @state()\n protected _filter: SearchMethod = 'fuzzy';\n\n @state()\n protected get _filteredOptions(): InternalOption[] {\n if (!this.combobox || this._filterPattern === '') {\n return this._options;\n }\n\n return filterOptionsByPattern(\n this._options,\n this._filterPattern,\n this._filter\n );\n }\n\n @state()\n protected _filterPattern = '';\n\n @state()\n protected _selectedIndex = -1;\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 _listScrollTop = 0;\n\n @query('.options')\n private _listElement!: HTMLUListElement;\n\n /** @internal */\n protected _multiple = false;\n\n /**\n * @internal\n * Quick-searchable map for searching a value in the options list.\n * Keys are the options values, values are the option indexes.\n */\n protected _valueOptionIndexMap: {[key: string]: number} = {};\n\n private _isHoverForbidden = false;\n private _disabled = false;\n private _originalTabIndex: number | undefined = undefined;\n\n protected get _currentOptions(): InternalOption[] {\n return this.combobox ? this._filteredOptions : this._options;\n }\n\n protected _setStateFromSlottedElements() {\n const options: InternalOption[] = [];\n let nextIndex = 0;\n const optionElements = this._assignedOptions ?? [];\n const selectedIndexes: number[] = [];\n const values: string[] = [];\n this._valueOptionIndexMap = {};\n\n optionElements.forEach((el, i) => {\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: InternalOption = {\n label: innerText.trim(),\n value,\n description,\n selected,\n index: nextIndex,\n disabled,\n };\n\n nextIndex = options.push(op);\n\n if (selected && !this._multiple) {\n this._activeIndex = i;\n }\n\n if (selected) {\n selectedIndexes.push(options.length - 1);\n values.push(value);\n }\n\n this._valueOptionIndexMap[op.value] = op.index;\n });\n\n this._options = options;\n\n if (selectedIndexes.length > 0) {\n this._selectedIndex = selectedIndexes[0];\n this._selectedIndexes = selectedIndexes;\n this._value = values[0];\n this._values = values;\n }\n\n if (\n !this._multiple &&\n !this.combobox &&\n selectedIndexes.length === 0\n ) {\n this._selectedIndex = this._options.length > 0 ? 0 : -1;\n }\n }\n\n protected async _toggleDropdown(visible: boolean): Promise<void> {\n this.open = visible;\n this.ariaExpanded = String(visible);\n\n if (visible && !this._multiple && !this.combobox) {\n this._activeIndex = this._selectedIndex;\n\n if (this._activeIndex > VISIBLE_OPTS - 1) {\n await this.updateComplete;\n\n this._listElement.scrollTop = Math.floor(\n this._activeIndex * OPT_HEIGHT\n );\n }\n }\n\n if (visible) {\n window.addEventListener('click', this._onClickOutside);\n } else {\n window.removeEventListener('click', this._onClickOutside);\n }\n }\n\n protected _dispatchChangeEvent(): void {\n if (!this._multiple) {\n /** @deprecated */\n this.dispatchEvent(\n new CustomEvent('vsc-change', {\n detail: {\n selectedIndex: this._selectedIndex,\n value: this._value,\n },\n })\n );\n } else {\n /** @deprecated */\n this.dispatchEvent(\n new CustomEvent('vsc-change', {\n detail: {\n selectedIndexes: this._selectedIndexes,\n value: this._values,\n },\n })\n );\n }\n this.dispatchEvent(new Event('change'));\n this.dispatchEvent(new Event('input'));\n }\n\n protected _onFaceClick(): void {\n this._toggleDropdown(!this.open);\n\n if (this._multiple) {\n this._activeIndex = 0;\n }\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._toggleDropdown(false);\n window.removeEventListener('click', this._onClickOutside);\n }\n };\n\n private _onMouseMove = () => {\n this._isHoverForbidden = false;\n window.removeEventListener('mousemove', this._onMouseMove);\n };\n\n private _toggleComboboxDropdown() {\n this._filterPattern = '';\n this._toggleDropdown(!this.open);\n\n if (this._multiple) {\n this._activeIndex = -1;\n }\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 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 this._activeIndex = Number(\n this.combobox ? el.dataset.filteredIndex : el.dataset.index\n );\n }\n\n protected _onEnterKeyDown(): void {\n const list = this.combobox ? this._filteredOptions : this._options;\n const showDropdownNext = !this.open;\n\n this._toggleDropdown(showDropdownNext);\n\n if (\n !this._multiple &&\n !showDropdownNext &&\n this._selectedIndex !== this._activeIndex\n ) {\n this._selectedIndex = list[this._activeIndex].index;\n this._value = this._options[this._selectedIndex].value;\n this._dispatchChangeEvent();\n }\n\n if (this.combobox) {\n if (!this._multiple && !showDropdownNext) {\n this._selectedIndex = this._filteredOptions[this._activeIndex].index;\n }\n\n if (!this._multiple && showDropdownNext) {\n this.updateComplete.then(() => {\n this._scrollActiveElementToTop();\n });\n }\n }\n\n if (this._multiple && showDropdownNext) {\n this._activeIndex = 0;\n }\n }\n\n private _onSpaceKeyDown() {\n if (!this.open) {\n this._toggleDropdown(true);\n return;\n }\n\n if (this.open && this._multiple && this._activeIndex > -1) {\n const opts = this.combobox ? this._filteredOptions : this._options;\n const {selected} = opts[this._activeIndex];\n\n opts[this._activeIndex].selected = !selected;\n this._selectedIndexes = [];\n\n opts.forEach(({index, selected}) => {\n if (selected) {\n this._selectedIndexes.push(index);\n }\n });\n }\n }\n\n private _scrollActiveElementToTop() {\n this._listElement.scrollTop = Math.floor(this._activeIndex * OPT_HEIGHT);\n }\n\n private async _adjustOptionListScrollPos(direction: 'down' | 'up') {\n const numOpts = this.combobox\n ? this._filteredOptions.length\n : this._options.length;\n\n if (numOpts <= VISIBLE_OPTS) {\n return;\n }\n\n this._isHoverForbidden = true;\n window.addEventListener('mousemove', this._onMouseMove);\n\n if (!this._listElement) {\n await this.updateComplete;\n }\n\n const ulScrollTop = this._listElement.scrollTop;\n const liPosY = this._activeIndex * OPT_HEIGHT;\n\n if (direction === 'down') {\n if (liPosY + OPT_HEIGHT >= LIST_HEIGHT + ulScrollTop) {\n this._listElement.scrollTop =\n (this._activeIndex - (VISIBLE_OPTS - 1)) * OPT_HEIGHT;\n }\n }\n\n if (direction === 'up') {\n if (liPosY <= ulScrollTop - OPT_HEIGHT) {\n this._scrollActiveElementToTop();\n }\n }\n }\n\n protected _onArrowUpKeyDown(): void {\n if (this.open) {\n if (this._activeIndex <= 0) {\n return;\n }\n\n this._activeIndex -= 1;\n this._adjustOptionListScrollPos('up');\n }\n }\n\n protected _onArrowDownKeyDown(): void {\n if (this.open) {\n if (this._activeIndex >= this._currentOptions.length - 1) {\n return;\n }\n\n this._activeIndex += 1;\n this._adjustOptionListScrollPos('down');\n }\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();\n }\n\n if (event.key === ' ') {\n this._onSpaceKeyDown();\n }\n\n if (event.key === 'Escape') {\n this._toggleDropdown(false);\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 }\n\n protected _onComboboxInputInput(ev: InputEvent): void {\n this._filterPattern = (ev.target as HTMLInputElement).value;\n this._activeIndex = -1;\n this._toggleDropdown(true);\n }\n\n protected _onComboboxInputClick(): void {\n this._toggleDropdown(true);\n }\n\n protected _renderOptions(): TemplateResult | TemplateResult[] {\n return [];\n }\n\n private _renderDescription() {\n if (!this._options[this._activeIndex]) {\n return nothing;\n }\n\n const {description} = this._options[this._activeIndex];\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 private _renderDropdown() {\n const classes = classMap({\n dropdown: true,\n multiple: this._multiple,\n });\n\n return html`\n <div class=\"${classes}\">\n ${this.position === 'above' ? this._renderDescription() : nothing}\n ${this._renderOptions()} ${this._renderDropdownControls()}\n ${this.position === 'below' ? this._renderDescription() : nothing}\n </div>\n `;\n }\n\n render(): TemplateResult {\n return html`\n <slot class=\"main-slot\" @slotchange=\"${this._onSlotChange}\"></slot>\n ${this.combobox ? this._renderComboboxFace() : this._renderSelectFace()}\n ${this.open ? this._renderDropdown() : nothing}\n `;\n }\n}\n"]}
|
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
import { TemplateResult } from 'lit';
|
|
2
2
|
import { VscElement } from '../includes/VscElement.js';
|
|
3
3
|
/**
|
|
4
|
+
* Show counts or status information. Badges can also be used within [Textfield](https://vscode-elements.github.io/components/textfield) and [TabHeader](https://vscode-elements.github.io/components/tabs) components.
|
|
5
|
+
*
|
|
6
|
+
* @tag vscode-badge
|
|
7
|
+
*
|
|
4
8
|
* @cssprop --vscode-font-family
|
|
5
9
|
* @cssprop --vscode-badge-background - default and counter variant background color
|
|
6
10
|
* @cssprop --vscode-badge-foreground - default and counter variant foreground color
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vscode-badge.d.ts","sourceRoot":"","sources":["../../src/vscode-badge/vscode-badge.ts"],"names":[],"mappings":"AAAA,OAAO,EAAO,cAAc,EAAC,MAAM,KAAK,CAAC;AAEzC,OAAO,EAAC,UAAU,EAAC,MAAM,2BAA2B,CAAC;AAGrD
|
|
1
|
+
{"version":3,"file":"vscode-badge.d.ts","sourceRoot":"","sources":["../../src/vscode-badge/vscode-badge.ts"],"names":[],"mappings":"AAAA,OAAO,EAAO,cAAc,EAAC,MAAM,KAAK,CAAC;AAEzC,OAAO,EAAC,UAAU,EAAC,MAAM,2BAA2B,CAAC;AAGrD;;;;;;;;;;GAUG;AACH,qBACa,WAAY,SAAQ,UAAU;IACzC,MAAM,CAAC,MAAM,+BAAU;IAGvB,OAAO,EAAE,SAAS,GAAG,SAAS,GAAG,sBAAsB,CAAa;IAEpE,MAAM,IAAI,cAAc;CAGzB;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,cAAc,EAAE,WAAW,CAAC;KAC7B;CACF"}
|
|
@@ -9,6 +9,10 @@ import { customElement, property } from 'lit/decorators.js';
|
|
|
9
9
|
import { VscElement } from '../includes/VscElement.js';
|
|
10
10
|
import styles from './vscode-badge.styles.js';
|
|
11
11
|
/**
|
|
12
|
+
* Show counts or status information. Badges can also be used within [Textfield](https://vscode-elements.github.io/components/textfield) and [TabHeader](https://vscode-elements.github.io/components/tabs) components.
|
|
13
|
+
*
|
|
14
|
+
* @tag vscode-badge
|
|
15
|
+
*
|
|
12
16
|
* @cssprop --vscode-font-family
|
|
13
17
|
* @cssprop --vscode-badge-background - default and counter variant background color
|
|
14
18
|
* @cssprop --vscode-badge-foreground - default and counter variant foreground color
|