@vscode-elements/elements 1.8.0 → 1.9.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.
Files changed (70) hide show
  1. package/custom-elements.json +127 -66
  2. package/dist/bundled.js +83 -66
  3. package/dist/includes/VscElement.js +1 -1
  4. package/dist/includes/VscElement.js.map +1 -1
  5. package/dist/includes/form-button-widget/FormButtonWidgetBase.d.ts.map +1 -1
  6. package/dist/includes/form-button-widget/FormButtonWidgetBase.js.map +1 -1
  7. package/dist/includes/form-button-widget/LabelledCheckboxOrRadio.d.ts +1 -1
  8. package/dist/includes/form-button-widget/LabelledCheckboxOrRadio.d.ts.map +1 -1
  9. package/dist/includes/form-button-widget/LabelledCheckboxOrRadio.js.map +1 -1
  10. package/dist/includes/test-helpers.d.ts.map +1 -1
  11. package/dist/includes/test-helpers.js.map +1 -1
  12. package/dist/includes/vscode-select/styles.js +5 -5
  13. package/dist/includes/vscode-select/styles.js.map +1 -1
  14. package/dist/includes/vscode-select/vscode-select-base.d.ts.map +1 -1
  15. package/dist/includes/vscode-select/vscode-select-base.js +4 -3
  16. package/dist/includes/vscode-select/vscode-select-base.js.map +1 -1
  17. package/dist/vscode-button/vscode-button.styles.d.ts.map +1 -1
  18. package/dist/vscode-button/vscode-button.styles.js +8 -2
  19. package/dist/vscode-button/vscode-button.styles.js.map +1 -1
  20. package/dist/vscode-checkbox/vscode-checkbox.d.ts +1 -1
  21. package/dist/vscode-checkbox/vscode-checkbox.d.ts.map +1 -1
  22. package/dist/vscode-checkbox/vscode-checkbox.js +5 -4
  23. package/dist/vscode-checkbox/vscode-checkbox.js.map +1 -1
  24. package/dist/vscode-checkbox/vscode-checkbox.styles.js +1 -1
  25. package/dist/vscode-checkbox/vscode-checkbox.styles.js.map +1 -1
  26. package/dist/vscode-collapsible/vscode-collapsible.styles.js +1 -1
  27. package/dist/vscode-collapsible/vscode-collapsible.styles.js.map +1 -1
  28. package/dist/vscode-context-menu/vscode-context-menu.d.ts +4 -0
  29. package/dist/vscode-context-menu/vscode-context-menu.d.ts.map +1 -1
  30. package/dist/vscode-context-menu/vscode-context-menu.js +16 -5
  31. package/dist/vscode-context-menu/vscode-context-menu.js.map +1 -1
  32. package/dist/vscode-context-menu-item/vscode-context-menu-item.styles.d.ts.map +1 -1
  33. package/dist/vscode-context-menu-item/vscode-context-menu-item.styles.js +4 -1
  34. package/dist/vscode-context-menu-item/vscode-context-menu-item.styles.js.map +1 -1
  35. package/dist/vscode-multi-select/vscode-multi-select.d.ts +3 -1
  36. package/dist/vscode-multi-select/vscode-multi-select.d.ts.map +1 -1
  37. package/dist/vscode-multi-select/vscode-multi-select.js +26 -2
  38. package/dist/vscode-multi-select/vscode-multi-select.js.map +1 -1
  39. package/dist/vscode-radio/vscode-radio.d.ts +1 -1
  40. package/dist/vscode-radio/vscode-radio.d.ts.map +1 -1
  41. package/dist/vscode-radio/vscode-radio.js +5 -4
  42. package/dist/vscode-radio/vscode-radio.js.map +1 -1
  43. package/dist/vscode-radio-group/vscode-radio-group.d.ts.map +1 -1
  44. package/dist/vscode-radio-group/vscode-radio-group.js.map +1 -1
  45. package/dist/vscode-scrollable/vscode-scrollable.d.ts.map +1 -1
  46. package/dist/vscode-scrollable/vscode-scrollable.js.map +1 -1
  47. package/dist/vscode-single-select/vscode-single-select.d.ts +1 -0
  48. package/dist/vscode-single-select/vscode-single-select.d.ts.map +1 -1
  49. package/dist/vscode-single-select/vscode-single-select.js +11 -0
  50. package/dist/vscode-single-select/vscode-single-select.js.map +1 -1
  51. package/dist/vscode-single-select/vscode-single-select.styles.d.ts.map +1 -1
  52. package/dist/vscode-single-select/vscode-single-select.styles.js.map +1 -1
  53. package/dist/vscode-split-layout/vscode-split-layout.d.ts +1 -2
  54. package/dist/vscode-split-layout/vscode-split-layout.d.ts.map +1 -1
  55. package/dist/vscode-split-layout/vscode-split-layout.js +13 -9
  56. package/dist/vscode-split-layout/vscode-split-layout.js.map +1 -1
  57. package/dist/vscode-table-body/vscode-table-body.styles.d.ts.map +1 -1
  58. package/dist/vscode-table-body/vscode-table-body.styles.js +1 -2
  59. package/dist/vscode-table-body/vscode-table-body.styles.js.map +1 -1
  60. package/dist/vscode-textarea/vscode-textarea.styles.d.ts.map +1 -1
  61. package/dist/vscode-textarea/vscode-textarea.styles.js +4 -1
  62. package/dist/vscode-textarea/vscode-textarea.styles.js.map +1 -1
  63. package/dist/vscode-textfield/vscode-textfield.styles.d.ts.map +1 -1
  64. package/dist/vscode-textfield/vscode-textfield.styles.js +5 -2
  65. package/dist/vscode-textfield/vscode-textfield.styles.js.map +1 -1
  66. package/dist/vscode-tree/vscode-tree.styles.d.ts.map +1 -1
  67. package/dist/vscode-tree/vscode-tree.styles.js +4 -1
  68. package/dist/vscode-tree/vscode-tree.styles.js.map +1 -1
  69. package/package.json +13 -12
  70. package/vscode.html-custom-data.json +10 -3
@@ -1 +1 @@
1
- {"version":3,"file":"vscode-collapsible.styles.js","sourceRoot":"","sources":["../../src/vscode-collapsible/vscode-collapsible.styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,GAAG,EAAiB,MAAM,KAAK,CAAC;AACxC,OAAO,aAAa,MAAM,+BAA+B,CAAC;AAE1D,MAAM,MAAM,GAAmB;IAC7B,aAAa;IACb,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyFF;CACF,CAAC;AAEF,eAAe,MAAM,CAAC","sourcesContent":["import {css, CSSResultGroup} from 'lit';\nimport defaultStyles from '../includes/default.styles.js';\n\nconst styles: CSSResultGroup = [\n defaultStyles,\n css`\n .collapsible {\n background-color: var(--vscode-sideBar-background);\n }\n\n .collapsible-header {\n align-items: center;\n background-color: var(--vscode-sideBarSectionHeader-background);\n cursor: pointer;\n display: flex;\n height: 22px;\n line-height: 22px;\n user-select: none;\n }\n\n .collapsible-header:focus {\n opacity: 1;\n outline-offset: -1px;\n outline-style: solid;\n outline-width: 1px;\n outline-color: var(--vscode-focusBorder);\n }\n\n .title {\n color: var(--vscode-sideBarTitle-foreground);\n display: block;\n font-family: var(--vscode-font-family);\n font-size: 11px;\n font-weight: 700;\n margin: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n text-transform: uppercase;\n white-space: nowrap;\n }\n\n .title .description {\n font-weight: 400;\n margin-left: 10px;\n text-transform: none;\n opacity: .6;\n }\n\n .header-icon {\n color: var(--vscode-icon-foreground);\n display: block;\n flex-shrink: 0;\n margin: 0 3px;\n }\n\n .collapsible.open .header-icon {\n transform: rotate(90deg);\n }\n\n .header-slots {\n align-items: center;\n display: flex;\n height: 22px;\n margin-left: auto;\n margin-right: 4px;\n }\n\n .actions {\n display: none;\n }\n\n .collapsible.open .actions {\n display: block;\n }\n\n .header-slots slot {\n display: flex;\n max-height: 22px;\n overflow: hidden;\n }\n\n .header-slots slot::slotted(div) {\n align-items: center;\n display: flex;\n }\n\n .collapsible-body {\n display: none;\n overflow: hidden;\n }\n\n .collapsible.open .collapsible-body {\n display: block;\n }\n `,\n];\n\nexport default styles;\n"]}
1
+ {"version":3,"file":"vscode-collapsible.styles.js","sourceRoot":"","sources":["../../src/vscode-collapsible/vscode-collapsible.styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,GAAG,EAAiB,MAAM,KAAK,CAAC;AACxC,OAAO,aAAa,MAAM,+BAA+B,CAAC;AAE1D,MAAM,MAAM,GAAmB;IAC7B,aAAa;IACb,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyFF;CACF,CAAC;AAEF,eAAe,MAAM,CAAC","sourcesContent":["import {css, CSSResultGroup} from 'lit';\nimport defaultStyles from '../includes/default.styles.js';\n\nconst styles: CSSResultGroup = [\n defaultStyles,\n css`\n .collapsible {\n background-color: var(--vscode-sideBar-background);\n }\n\n .collapsible-header {\n align-items: center;\n background-color: var(--vscode-sideBarSectionHeader-background);\n cursor: pointer;\n display: flex;\n height: 22px;\n line-height: 22px;\n user-select: none;\n }\n\n .collapsible-header:focus {\n opacity: 1;\n outline-offset: -1px;\n outline-style: solid;\n outline-width: 1px;\n outline-color: var(--vscode-focusBorder);\n }\n\n .title {\n color: var(--vscode-sideBarTitle-foreground);\n display: block;\n font-family: var(--vscode-font-family);\n font-size: 11px;\n font-weight: 700;\n margin: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n text-transform: uppercase;\n white-space: nowrap;\n }\n\n .title .description {\n font-weight: 400;\n margin-left: 10px;\n text-transform: none;\n opacity: 0.6;\n }\n\n .header-icon {\n color: var(--vscode-icon-foreground);\n display: block;\n flex-shrink: 0;\n margin: 0 3px;\n }\n\n .collapsible.open .header-icon {\n transform: rotate(90deg);\n }\n\n .header-slots {\n align-items: center;\n display: flex;\n height: 22px;\n margin-left: auto;\n margin-right: 4px;\n }\n\n .actions {\n display: none;\n }\n\n .collapsible.open .actions {\n display: block;\n }\n\n .header-slots slot {\n display: flex;\n max-height: 22px;\n overflow: hidden;\n }\n\n .header-slots slot::slotted(div) {\n align-items: center;\n display: flex;\n }\n\n .collapsible-body {\n display: none;\n overflow: hidden;\n }\n\n .collapsible.open .collapsible-body {\n display: block;\n }\n `,\n];\n\nexport default styles;\n"]}
@@ -30,6 +30,10 @@ export declare class VscodeContextMenu extends VscElement {
30
30
  static styles: import("lit").CSSResultGroup;
31
31
  set data(data: MenuItemData[]);
32
32
  get data(): MenuItemData[];
33
+ /**
34
+ * By default, the menu closes when an item is clicked. This attribute prevents the menu from closing.
35
+ */
36
+ preventClose: boolean;
33
37
  set show(show: boolean);
34
38
  get show(): boolean;
35
39
  /** @internal */
@@ -1 +1 @@
1
- {"version":3,"file":"vscode-context-menu.d.ts","sourceRoot":"","sources":["../../src/vscode-context-menu/vscode-context-menu.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,cAAc,EAAC,MAAM,KAAK,CAAC;AAElD,OAAO,EAAC,UAAU,EAAC,MAAM,2BAA2B,CAAC;AAKrD,OAAO,sCAAsC,CAAC;AAG9C,UAAU,YAAY;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,MAAM,yBAAyB,GAAG,WAAW,CAAC;IAClD,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,OAAO,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC,CAAC;AAEH;;;;;;;;;;GAUG;AACH,qBACa,iBAAkB,SAAQ,UAAU;IAC/C,MAAM,CAAC,MAAM,+BAAU;IAEvB,IACI,IAAI,CAAC,IAAI,EAAE,YAAY,EAAE,EAY5B;IACD,IAAI,IAAI,IAAI,YAAY,EAAE,CAEzB;IAED,IACI,IAAI,CAAC,IAAI,EAAE,OAAO,EAiBrB;IACD,IAAI,IAAI,IAAI,OAAO,CAElB;IAED,gBAAgB;IAEhB,QAAQ,SAAK;;IAkBb,OAAO,CAAC,2BAA2B,CAAM;IAGzC,OAAO,CAAC,KAAK,CAAS;IAGtB,OAAO,CAAC,UAAU,CAAkB;IAEpC,OAAO,CAAC,KAAK,CAAsB;IAEnC,OAAO,CAAC,qBAAqB,CAAgB;IAE7C,OAAO,CAAC,eAAe;IAMvB,OAAO,CAAC,oBAAoB,CAAmC;IAE/D,OAAO,CAAC,UAAU;IA6BlB,OAAO,CAAC,cAAc;IAQtB,OAAO,CAAC,gBAAgB;IAWxB,OAAO,CAAC,aAAa;IAKrB,OAAO,CAAC,oBAAoB;IAgB5B,OAAO,CAAC,0BAA0B;IAoBlC,OAAO,CAAC,YAAY;IAkBpB,OAAO,CAAC,YAAY;IAQpB,OAAO,CAAC,gBAAgB;IAYxB,OAAO,CAAC,eAAe;IAIvB,MAAM,IAAI,cAAc;CAwCzB;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,qBAAqB,EAAE,iBAAiB,CAAC;KAC1C;IAED,UAAU,2BAA2B;QACnC,yBAAyB,EAAE,yBAAyB,CAAC;KACtD;CACF"}
1
+ {"version":3,"file":"vscode-context-menu.d.ts","sourceRoot":"","sources":["../../src/vscode-context-menu/vscode-context-menu.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,cAAc,EAAC,MAAM,KAAK,CAAC;AAElD,OAAO,EAAC,UAAU,EAAC,MAAM,2BAA2B,CAAC;AAKrD,OAAO,sCAAsC,CAAC;AAG9C,UAAU,YAAY;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,MAAM,yBAAyB,GAAG,WAAW,CAAC;IAClD,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,OAAO,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC,CAAC;AAEH;;;;;;;;;;GAUG;AACH,qBACa,iBAAkB,SAAQ,UAAU;IAC/C,MAAM,CAAC,MAAM,+BAAU;IAEvB,IACI,IAAI,CAAC,IAAI,EAAE,YAAY,EAAE,EAY5B;IACD,IAAI,IAAI,IAAI,YAAY,EAAE,CAEzB;IAED;;OAEG;IAEH,YAAY,UAAS;IAErB,IACI,IAAI,CAAC,IAAI,EAAE,OAAO,EAiBrB;IACD,IAAI,IAAI,IAAI,OAAO,CAElB;IAED,gBAAgB;IAEhB,QAAQ,SAAK;;IAkBb,OAAO,CAAC,2BAA2B,CAAM;IAGzC,OAAO,CAAC,KAAK,CAAS;IAGtB,OAAO,CAAC,UAAU,CAAkB;IAEpC,OAAO,CAAC,KAAK,CAAsB;IAEnC,OAAO,CAAC,qBAAqB,CAAgB;IAE7C,OAAO,CAAC,eAAe;IAMvB,OAAO,CAAC,oBAAoB,CAAmC;IAE/D,OAAO,CAAC,UAAU;IA6BlB,OAAO,CAAC,cAAc;IAQtB,OAAO,CAAC,gBAAgB;IAWxB,OAAO,CAAC,aAAa;IAKrB,OAAO,CAAC,oBAAoB;IAgB5B,OAAO,CAAC,0BAA0B;IAoBlC,OAAO,CAAC,YAAY;IAqBpB,OAAO,CAAC,YAAY;IAWpB,OAAO,CAAC,gBAAgB;IAYxB,OAAO,CAAC,eAAe;IAIvB,MAAM,IAAI,cAAc;CAwCzB;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,qBAAqB,EAAE,iBAAiB,CAAC;KAC1C;IAED,UAAU,2BAA2B;QACnC,yBAAyB,EAAE,yBAAyB,CAAC;KACtD;CACF"}
@@ -55,6 +55,10 @@ let VscodeContextMenu = class VscodeContextMenu extends VscElement {
55
55
  }
56
56
  constructor() {
57
57
  super();
58
+ /**
59
+ * By default, the menu closes when an item is clicked. This attribute prevents the menu from closing.
60
+ */
61
+ this.preventClose = false;
58
62
  /** @internal */
59
63
  this.tabIndex = 0;
60
64
  /* connectedCallback(): void {
@@ -75,7 +79,7 @@ let VscodeContextMenu = class VscodeContextMenu extends VscElement {
75
79
  }
76
80
  _onClickOutside(ev) {
77
81
  if (!ev.composedPath().includes(this)) {
78
- this._show = false;
82
+ this.show = false;
79
83
  }
80
84
  }
81
85
  _onKeyDown(ev) {
@@ -120,7 +124,7 @@ let VscodeContextMenu = class VscodeContextMenu extends VscElement {
120
124
  }
121
125
  }
122
126
  _handleEscape() {
123
- this._show = false;
127
+ this.show = false;
124
128
  document.removeEventListener('click', this._onClickOutsideBound);
125
129
  }
126
130
  _dispatchSelectEvent(selectedOption) {
@@ -160,14 +164,18 @@ let VscodeContextMenu = class VscodeContextMenu extends VscElement {
160
164
  const selectedOption = options[realItemIndex];
161
165
  this._dispatchLegacySelectEvent(selectedOption);
162
166
  this._dispatchSelectEvent(selectedOption);
163
- this._show = false;
164
- document.removeEventListener('click', this._onClickOutsideBound);
167
+ if (!this.preventClose) {
168
+ this.show = false;
169
+ document.removeEventListener('click', this._onClickOutsideBound);
170
+ }
165
171
  }
166
172
  _onItemClick(event) {
167
173
  const et = event.currentTarget;
168
174
  this._dispatchLegacySelectEvent(et);
169
175
  this._dispatchSelectEvent(et);
170
- this._show = false;
176
+ if (!this.preventClose) {
177
+ this.show = false;
178
+ }
171
179
  }
172
180
  _onItemMouseOver(event) {
173
181
  const el = event.target;
@@ -211,6 +219,9 @@ VscodeContextMenu.styles = styles;
211
219
  __decorate([
212
220
  property({ type: Array, attribute: false })
213
221
  ], VscodeContextMenu.prototype, "data", null);
222
+ __decorate([
223
+ property({ type: Boolean, reflect: true, attribute: 'prevent-close' })
224
+ ], VscodeContextMenu.prototype, "preventClose", void 0);
214
225
  __decorate([
215
226
  property({ type: Boolean, reflect: true })
216
227
  ], VscodeContextMenu.prototype, "show", null);
@@ -1 +1 @@
1
- {"version":3,"file":"vscode-context-menu.js","sourceRoot":"","sources":["../../src/vscode-context-menu/vscode-context-menu.ts"],"names":[],"mappings":"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","sourcesContent":["import {html, nothing, TemplateResult} from 'lit';\nimport {customElement, property, query, state} from 'lit/decorators.js';\nimport {VscElement} from '../includes/VscElement.js';\nimport type {\n VscClickEventDetail,\n VscodeContextMenuItem,\n} from '../vscode-context-menu-item/vscode-context-menu-item.js';\nimport '../vscode-context-menu-item/index.js';\nimport styles from './vscode-context-menu.styles.js';\n\ninterface MenuItemData {\n label: string;\n keybinding?: string;\n value?: string;\n separator?: boolean;\n tabindex?: number;\n}\n\nexport type VscContextMenuSelectEvent = CustomEvent<{\n keybinding: string;\n label: string;\n value: string;\n separator: boolean;\n tabindex: number;\n}>;\n\n/**\n * @fires {VscMenuSelectEvent} vsc-menu-select - Emitted when a menu item is clicked\n *\n * @cssprop --vscode-font-family\n * @cssprop --vscode-font-size\n * @cssprop --vscode-font-weight\n * @cssprop --vscode-menu-background\n * @cssprop --vscode-menu-border\n * @cssprop --vscode-menu-foreground\n * @cssprop --vscode-widget-shadow\n */\n@customElement('vscode-context-menu')\nexport class VscodeContextMenu extends VscElement {\n static styles = styles;\n\n @property({type: Array, attribute: false})\n set data(data: MenuItemData[]) {\n this._data = data;\n\n const indexes: number[] = [];\n\n data.forEach((v, i) => {\n if (!v.separator) {\n indexes.push(i);\n }\n });\n\n this._clickableItemIndexes = indexes;\n }\n get data(): MenuItemData[] {\n return this._data;\n }\n\n @property({type: Boolean, reflect: true})\n set show(show: boolean) {\n this._show = show;\n this._selectedClickableItemIndex = -1;\n\n if (show) {\n this.updateComplete.then(() => {\n if (this._wrapperEl) {\n this._wrapperEl.focus();\n }\n\n requestAnimationFrame(() => {\n document.addEventListener('click', this._onClickOutsideBound, {\n once: true,\n });\n });\n });\n }\n }\n get show(): boolean {\n return this._show;\n }\n\n /** @internal */\n @property({type: Number, reflect: true})\n tabIndex = 0;\n\n constructor() {\n super();\n this.addEventListener('keydown', this._onKeyDown);\n }\n\n /* connectedCallback(): void {\n super.connectedCallback();\n document.addEventListener('click', this._onClickOutsideBound);\n }\n\n disconnectedCallback(): void {\n super.disconnectedCallback();\n document.removeEventListener('click', this._onClickOutsideBound);\n } */\n\n @state()\n private _selectedClickableItemIndex = -1;\n\n @state()\n private _show = false;\n\n @query('.context-menu')\n private _wrapperEl!: HTMLDivElement;\n\n private _data: MenuItemData[] = [];\n\n private _clickableItemIndexes: number[] = [];\n\n private _onClickOutside(ev: MouseEvent) {\n if (!ev.composedPath().includes(this)) {\n this._show = false;\n }\n }\n\n private _onClickOutsideBound = this._onClickOutside.bind(this);\n\n private _onKeyDown(ev: KeyboardEvent) {\n const {key} = ev;\n\n if (\n key === 'ArrowUp' ||\n key === 'ArrowDown' ||\n key === 'Escape' ||\n key === 'Enter'\n ) {\n ev.preventDefault();\n }\n\n switch (key) {\n case 'ArrowUp':\n this._handleArrowUp();\n break;\n case 'ArrowDown':\n this._handleArrowDown();\n break;\n case 'Escape':\n this._handleEscape();\n break;\n case 'Enter':\n this._handleEnter();\n break;\n default:\n }\n }\n\n private _handleArrowUp() {\n if (this._selectedClickableItemIndex === 0) {\n this._selectedClickableItemIndex = this._clickableItemIndexes.length - 1;\n } else {\n this._selectedClickableItemIndex -= 1;\n }\n }\n\n private _handleArrowDown() {\n if (\n this._selectedClickableItemIndex + 1 <\n this._clickableItemIndexes.length\n ) {\n this._selectedClickableItemIndex += 1;\n } else {\n this._selectedClickableItemIndex = 0;\n }\n }\n\n private _handleEscape() {\n this._show = false;\n document.removeEventListener('click', this._onClickOutsideBound);\n }\n\n private _dispatchSelectEvent(selectedOption: VscodeContextMenuItem) {\n const {keybinding, label, value, separator, tabindex} = selectedOption;\n\n this.dispatchEvent(\n new CustomEvent('vsc-context-menu-select', {\n detail: {\n keybinding,\n label,\n separator,\n tabindex,\n value,\n },\n }) as VscContextMenuSelectEvent\n );\n }\n\n private _dispatchLegacySelectEvent(selectedOption: VscodeContextMenuItem) {\n const {keybinding, label, value, separator, tabindex} = selectedOption;\n const detail: VscClickEventDetail = {\n keybinding,\n label,\n value,\n separator,\n tabindex,\n };\n\n /** @deprecated - Renamed to `vsc-context-menu-select` */\n this.dispatchEvent(\n new CustomEvent('vsc-select', {\n detail,\n bubbles: true,\n composed: true,\n })\n );\n }\n\n private _handleEnter() {\n if (this._selectedClickableItemIndex === -1) {\n return;\n }\n\n const realItemIndex =\n this._clickableItemIndexes[this._selectedClickableItemIndex];\n const options = this._wrapperEl.querySelectorAll(\n 'vscode-context-menu-item'\n );\n const selectedOption = options[realItemIndex];\n\n this._dispatchLegacySelectEvent(selectedOption);\n this._dispatchSelectEvent(selectedOption);\n this._show = false;\n document.removeEventListener('click', this._onClickOutsideBound);\n }\n\n private _onItemClick(event: CustomEvent) {\n const et = event.currentTarget as VscodeContextMenuItem;\n\n this._dispatchLegacySelectEvent(et);\n this._dispatchSelectEvent(et);\n this._show = false;\n }\n\n private _onItemMouseOver(event: MouseEvent) {\n const el = event.target as HTMLElement;\n const index = el.dataset.index ? +el.dataset.index : -1;\n const found = this._clickableItemIndexes.findIndex(\n (item) => item === index\n );\n\n if (found !== -1) {\n this._selectedClickableItemIndex = found;\n }\n }\n\n private _onItemMouseOut() {\n this._selectedClickableItemIndex = -1;\n }\n\n render(): TemplateResult {\n if (!this._show) {\n return html`${nothing}`;\n }\n\n const selectedIndex =\n this._clickableItemIndexes[this._selectedClickableItemIndex];\n\n return html`\n <div class=\"context-menu\" tabindex=\"0\">\n ${this.data\n ? this.data.map(\n (\n {\n label = '',\n keybinding = '',\n value = '',\n separator = false,\n tabindex = 0,\n },\n index\n ) => html`\n <vscode-context-menu-item\n label=\"${label}\"\n keybinding=\"${keybinding}\"\n value=\"${value}\"\n ?separator=\"${separator}\"\n ?selected=\"${index === selectedIndex}\"\n tabindex=\"${tabindex}\"\n @vsc-click=\"${this._onItemClick}\"\n @mouseover=${this._onItemMouseOver}\n @mouseout=${this._onItemMouseOut}\n data-index=${index}\n ></vscode-context-menu-item>\n `\n )\n : html`<slot></slot>`}\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'vscode-context-menu': VscodeContextMenu;\n }\n\n interface GlobalEventHandlersEventMap {\n 'vsc-context-menu-select': VscContextMenuSelectEvent;\n }\n}\n"]}
1
+ {"version":3,"file":"vscode-context-menu.js","sourceRoot":"","sources":["../../src/vscode-context-menu/vscode-context-menu.ts"],"names":[],"mappings":"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","sourcesContent":["import {html, nothing, TemplateResult} from 'lit';\nimport {customElement, property, query, state} from 'lit/decorators.js';\nimport {VscElement} from '../includes/VscElement.js';\nimport type {\n VscClickEventDetail,\n VscodeContextMenuItem,\n} from '../vscode-context-menu-item/vscode-context-menu-item.js';\nimport '../vscode-context-menu-item/index.js';\nimport styles from './vscode-context-menu.styles.js';\n\ninterface MenuItemData {\n label: string;\n keybinding?: string;\n value?: string;\n separator?: boolean;\n tabindex?: number;\n}\n\nexport type VscContextMenuSelectEvent = CustomEvent<{\n keybinding: string;\n label: string;\n value: string;\n separator: boolean;\n tabindex: number;\n}>;\n\n/**\n * @fires {VscMenuSelectEvent} vsc-menu-select - Emitted when a menu item is clicked\n *\n * @cssprop --vscode-font-family\n * @cssprop --vscode-font-size\n * @cssprop --vscode-font-weight\n * @cssprop --vscode-menu-background\n * @cssprop --vscode-menu-border\n * @cssprop --vscode-menu-foreground\n * @cssprop --vscode-widget-shadow\n */\n@customElement('vscode-context-menu')\nexport class VscodeContextMenu extends VscElement {\n static styles = styles;\n\n @property({type: Array, attribute: false})\n set data(data: MenuItemData[]) {\n this._data = data;\n\n const indexes: number[] = [];\n\n data.forEach((v, i) => {\n if (!v.separator) {\n indexes.push(i);\n }\n });\n\n this._clickableItemIndexes = indexes;\n }\n get data(): MenuItemData[] {\n return this._data;\n }\n\n /**\n * By default, the menu closes when an item is clicked. This attribute prevents the menu from closing.\n */\n @property({type: Boolean, reflect: true, attribute: 'prevent-close'})\n preventClose = false;\n\n @property({type: Boolean, reflect: true})\n set show(show: boolean) {\n this._show = show;\n this._selectedClickableItemIndex = -1;\n\n if (show) {\n this.updateComplete.then(() => {\n if (this._wrapperEl) {\n this._wrapperEl.focus();\n }\n\n requestAnimationFrame(() => {\n document.addEventListener('click', this._onClickOutsideBound, {\n once: true,\n });\n });\n });\n }\n }\n get show(): boolean {\n return this._show;\n }\n\n /** @internal */\n @property({type: Number, reflect: true})\n tabIndex = 0;\n\n constructor() {\n super();\n this.addEventListener('keydown', this._onKeyDown);\n }\n\n /* connectedCallback(): void {\n super.connectedCallback();\n document.addEventListener('click', this._onClickOutsideBound);\n }\n\n disconnectedCallback(): void {\n super.disconnectedCallback();\n document.removeEventListener('click', this._onClickOutsideBound);\n } */\n\n @state()\n private _selectedClickableItemIndex = -1;\n\n @state()\n private _show = false;\n\n @query('.context-menu')\n private _wrapperEl!: HTMLDivElement;\n\n private _data: MenuItemData[] = [];\n\n private _clickableItemIndexes: number[] = [];\n\n private _onClickOutside(ev: MouseEvent) {\n if (!ev.composedPath().includes(this)) {\n this.show = false;\n }\n }\n\n private _onClickOutsideBound = this._onClickOutside.bind(this);\n\n private _onKeyDown(ev: KeyboardEvent) {\n const {key} = ev;\n\n if (\n key === 'ArrowUp' ||\n key === 'ArrowDown' ||\n key === 'Escape' ||\n key === 'Enter'\n ) {\n ev.preventDefault();\n }\n\n switch (key) {\n case 'ArrowUp':\n this._handleArrowUp();\n break;\n case 'ArrowDown':\n this._handleArrowDown();\n break;\n case 'Escape':\n this._handleEscape();\n break;\n case 'Enter':\n this._handleEnter();\n break;\n default:\n }\n }\n\n private _handleArrowUp() {\n if (this._selectedClickableItemIndex === 0) {\n this._selectedClickableItemIndex = this._clickableItemIndexes.length - 1;\n } else {\n this._selectedClickableItemIndex -= 1;\n }\n }\n\n private _handleArrowDown() {\n if (\n this._selectedClickableItemIndex + 1 <\n this._clickableItemIndexes.length\n ) {\n this._selectedClickableItemIndex += 1;\n } else {\n this._selectedClickableItemIndex = 0;\n }\n }\n\n private _handleEscape() {\n this.show = false;\n document.removeEventListener('click', this._onClickOutsideBound);\n }\n\n private _dispatchSelectEvent(selectedOption: VscodeContextMenuItem) {\n const {keybinding, label, value, separator, tabindex} = selectedOption;\n\n this.dispatchEvent(\n new CustomEvent('vsc-context-menu-select', {\n detail: {\n keybinding,\n label,\n separator,\n tabindex,\n value,\n },\n }) as VscContextMenuSelectEvent\n );\n }\n\n private _dispatchLegacySelectEvent(selectedOption: VscodeContextMenuItem) {\n const {keybinding, label, value, separator, tabindex} = selectedOption;\n const detail: VscClickEventDetail = {\n keybinding,\n label,\n value,\n separator,\n tabindex,\n };\n\n /** @deprecated - Renamed to `vsc-context-menu-select` */\n this.dispatchEvent(\n new CustomEvent('vsc-select', {\n detail,\n bubbles: true,\n composed: true,\n })\n );\n }\n\n private _handleEnter() {\n if (this._selectedClickableItemIndex === -1) {\n return;\n }\n\n const realItemIndex =\n this._clickableItemIndexes[this._selectedClickableItemIndex];\n const options = this._wrapperEl.querySelectorAll(\n 'vscode-context-menu-item'\n );\n const selectedOption = options[realItemIndex];\n\n this._dispatchLegacySelectEvent(selectedOption);\n this._dispatchSelectEvent(selectedOption);\n\n if (!this.preventClose) {\n this.show = false;\n document.removeEventListener('click', this._onClickOutsideBound);\n }\n }\n\n private _onItemClick(event: CustomEvent) {\n const et = event.currentTarget as VscodeContextMenuItem;\n\n this._dispatchLegacySelectEvent(et);\n this._dispatchSelectEvent(et);\n\n if (!this.preventClose) {\n this.show = false;\n }\n }\n\n private _onItemMouseOver(event: MouseEvent) {\n const el = event.target as HTMLElement;\n const index = el.dataset.index ? +el.dataset.index : -1;\n const found = this._clickableItemIndexes.findIndex(\n (item) => item === index\n );\n\n if (found !== -1) {\n this._selectedClickableItemIndex = found;\n }\n }\n\n private _onItemMouseOut() {\n this._selectedClickableItemIndex = -1;\n }\n\n render(): TemplateResult {\n if (!this._show) {\n return html`${nothing}`;\n }\n\n const selectedIndex =\n this._clickableItemIndexes[this._selectedClickableItemIndex];\n\n return html`\n <div class=\"context-menu\" tabindex=\"0\">\n ${this.data\n ? this.data.map(\n (\n {\n label = '',\n keybinding = '',\n value = '',\n separator = false,\n tabindex = 0,\n },\n index\n ) => html`\n <vscode-context-menu-item\n label=\"${label}\"\n keybinding=\"${keybinding}\"\n value=\"${value}\"\n ?separator=\"${separator}\"\n ?selected=\"${index === selectedIndex}\"\n tabindex=\"${tabindex}\"\n @vsc-click=\"${this._onItemClick}\"\n @mouseover=${this._onItemMouseOver}\n @mouseout=${this._onItemMouseOut}\n data-index=${index}\n ></vscode-context-menu-item>\n `\n )\n : html`<slot></slot>`}\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'vscode-context-menu': VscodeContextMenu;\n }\n\n interface GlobalEventHandlersEventMap {\n 'vsc-context-menu-select': VscContextMenuSelectEvent;\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"vscode-context-menu-item.styles.d.ts","sourceRoot":"","sources":["../../src/vscode-context-menu-item/vscode-context-menu-item.styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAM,cAAc,EAAC,MAAM,KAAK,CAAC;AAGxC,QAAA,MAAM,MAAM,EAAE,cAwEb,CAAC;AAEF,eAAe,MAAM,CAAC"}
1
+ {"version":3,"file":"vscode-context-menu-item.styles.d.ts","sourceRoot":"","sources":["../../src/vscode-context-menu-item/vscode-context-menu-item.styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAM,cAAc,EAAC,MAAM,KAAK,CAAC;AAGxC,QAAA,MAAM,MAAM,EAAE,cA2Eb,CAAC;AAEF,eAAe,MAAM,CAAC"}
@@ -50,7 +50,10 @@ const styles = [
50
50
 
51
51
  :host([selected]) .context-menu-item a {
52
52
  background-color: var(--vscode-menu-selectionBackground);
53
- border-color: var(--vscode-menu-selectionBorder, var(--vscode-menu-selectionBackground));
53
+ border-color: var(
54
+ --vscode-menu-selectionBorder,
55
+ var(--vscode-menu-selectionBackground)
56
+ );
54
57
  color: var(--vscode-menu-selectionForeground);
55
58
  }
56
59
 
@@ -1 +1 @@
1
- {"version":3,"file":"vscode-context-menu-item.styles.js","sourceRoot":"","sources":["../../src/vscode-context-menu-item/vscode-context-menu-item.styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,GAAG,EAAiB,MAAM,KAAK,CAAC;AACxC,OAAO,aAAa,MAAM,+BAA+B,CAAC;AAE1D,MAAM,MAAM,GAAmB;IAC7B,aAAa;IACb,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqEF;CACF,CAAC;AAEF,eAAe,MAAM,CAAC","sourcesContent":["import {css, CSSResultGroup} from 'lit';\nimport defaultStyles from '../includes/default.styles.js';\n\nconst styles: CSSResultGroup = [\n defaultStyles,\n css`\n :host {\n display: block;\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.4em;\n outline: none;\n position: relative;\n }\n\n .context-menu-item {\n background-color: var(--vscode-menu-background);\n color: var(--vscode-menu-foreground);\n display: flex;\n user-select: none;\n white-space: nowrap;\n }\n\n .ruler {\n border-bottom: 1px solid var(--vscode-menu-separatorBackground);\n display: block;\n margin: 0 0 4px;\n padding-top: 4px;\n width: 100%;\n }\n\n .context-menu-item a {\n align-items: center;\n border-color: transparent;\n border-radius: 3px;\n border-style: solid;\n border-width: 1px;\n box-sizing: border-box;\n color: var(--vscode-menu-foreground);\n cursor: default;\n display: flex;\n flex: 1 1 auto;\n height: 2em;\n margin-left: 4px;\n margin-right: 4px;\n outline: none;\n position: relative;\n text-decoration: inherit;\n }\n\n :host([selected]) .context-menu-item a {\n background-color: var(--vscode-menu-selectionBackground);\n border-color: var(--vscode-menu-selectionBorder, var(--vscode-menu-selectionBackground));\n color: var(--vscode-menu-selectionForeground);\n }\n\n .label {\n background: none;\n display: flex;\n flex: 1 1 auto;\n font-size: 12px;\n line-height: 1;\n padding: 0 22px;\n text-decoration: none;\n }\n\n .keybinding {\n display: block;\n flex: 2 1 auto;\n line-height: 1;\n padding: 0 22px;\n text-align: right;\n }\n `,\n];\n\nexport default styles;\n"]}
1
+ {"version":3,"file":"vscode-context-menu-item.styles.js","sourceRoot":"","sources":["../../src/vscode-context-menu-item/vscode-context-menu-item.styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,GAAG,EAAiB,MAAM,KAAK,CAAC;AACxC,OAAO,aAAa,MAAM,+BAA+B,CAAC;AAE1D,MAAM,MAAM,GAAmB;IAC7B,aAAa;IACb,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwEF;CACF,CAAC;AAEF,eAAe,MAAM,CAAC","sourcesContent":["import {css, CSSResultGroup} from 'lit';\nimport defaultStyles from '../includes/default.styles.js';\n\nconst styles: CSSResultGroup = [\n defaultStyles,\n css`\n :host {\n display: block;\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.4em;\n outline: none;\n position: relative;\n }\n\n .context-menu-item {\n background-color: var(--vscode-menu-background);\n color: var(--vscode-menu-foreground);\n display: flex;\n user-select: none;\n white-space: nowrap;\n }\n\n .ruler {\n border-bottom: 1px solid var(--vscode-menu-separatorBackground);\n display: block;\n margin: 0 0 4px;\n padding-top: 4px;\n width: 100%;\n }\n\n .context-menu-item a {\n align-items: center;\n border-color: transparent;\n border-radius: 3px;\n border-style: solid;\n border-width: 1px;\n box-sizing: border-box;\n color: var(--vscode-menu-foreground);\n cursor: default;\n display: flex;\n flex: 1 1 auto;\n height: 2em;\n margin-left: 4px;\n margin-right: 4px;\n outline: none;\n position: relative;\n text-decoration: inherit;\n }\n\n :host([selected]) .context-menu-item a {\n background-color: var(--vscode-menu-selectionBackground);\n border-color: var(\n --vscode-menu-selectionBorder,\n var(--vscode-menu-selectionBackground)\n );\n color: var(--vscode-menu-selectionForeground);\n }\n\n .label {\n background: none;\n display: flex;\n flex: 1 1 auto;\n font-size: 12px;\n line-height: 1;\n padding: 0 22px;\n text-decoration: none;\n }\n\n .keybinding {\n display: block;\n flex: 2 1 auto;\n line-height: 1;\n padding: 0 22px;\n text-align: right;\n }\n `,\n];\n\nexport default styles;\n"]}
@@ -44,7 +44,7 @@ export declare class VscodeMultiSelect extends VscodeSelectBase implements Assoc
44
44
  name: string | undefined;
45
45
  set selectedIndexes(val: number[]);
46
46
  get selectedIndexes(): number[];
47
- set value(val: string[]);
47
+ set value(val: string[] | string);
48
48
  get value(): string[];
49
49
  get form(): HTMLFormElement | null;
50
50
  /** @internal */
@@ -65,6 +65,8 @@ export declare class VscodeMultiSelect extends VscodeSelectBase implements Assoc
65
65
  private _setDefaultValue;
66
66
  private _manageRequired;
67
67
  private _setFormValue;
68
+ private _requestedValueToSetLater;
69
+ protected _onSlotChange(): void;
68
70
  private _onOptionClick;
69
71
  private _onMultiAcceptClick;
70
72
  private _onMultiDeselectAllClick;
@@ -1 +1 @@
1
- {"version":3,"file":"vscode-multi-select.d.ts","sourceRoot":"","sources":["../../src/vscode-multi-select/vscode-multi-select.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmB,cAAc,EAAC,MAAM,KAAK,CAAC;AAKrD,OAAO,EAAC,gBAAgB,EAAC,MAAM,iDAAiD,CAAC;AAEjF,OAAO,EAAC,qBAAqB,EAAC,MAAM,sCAAsC,CAAC;AAG3E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,qBACa,iBACX,SAAQ,gBACR,YAAW,qBAAqB;IAEhC,MAAM,CAAC,MAAM,4BAAU;IAEvB,gBAAgB;IAChB,OAAgB,iBAAiB,EAAE,cAAc,CAG/C;IAEF,MAAM,CAAC,cAAc,UAAQ;IAG7B,YAAY,EAAE,MAAM,EAAE,CAAM;IAG5B,QAAQ,UAAS;IAGjB,IAAI,EAAE,MAAM,GAAG,SAAS,CAAa;IAErC,IACI,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,EAEhC;IACD,IAAI,eAAe,IAAI,MAAM,EAAE,CAE9B;IAED,IACI,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,EAmBtB;IACD,IAAI,KAAK,IAAI,MAAM,EAAE,CAEpB;IAED,IAAI,IAAI,2BAEP;IAED,gBAAgB;IAChB,IAAI,IAAI,WAEP;IAED,IAAI,QAAQ,IAAI,aAAa,CAE5B;IAED,IAAI,iBAAiB,IAAI,MAAM,CAE9B;IAED,IAAI,YAAY,YAEf;IAED,aAAa,IAAI,OAAO;IAIxB,cAAc,IAAI,OAAO;IAIzB,OAAO,CAAC,UAAU,CAAmB;;IASrC,iBAAiB,IAAI,IAAI;IASzB,gBAAgB;IAChB,iBAAiB,IAAI,IAAI;IAMzB,gBAAgB;IAChB,wBAAwB,CACtB,KAAK,EAAE,QAAQ,EACf,KAAK,EAAE,SAAS,GAAG,cAAc,GAChC,IAAI;IASP,OAAO,CAAC,YAAY,CAAkB;IAEtC,OAAO,CAAC,gBAAgB;IAOxB,OAAO,CAAC,eAAe;IAevB,OAAO,CAAC,aAAa;IAUrB,OAAO,CAAC,cAAc;IAmCtB,OAAO,CAAC,mBAAmB;IAI3B,OAAO,CAAC,wBAAwB;IAQhC,OAAO,CAAC,sBAAsB;IAc9B,OAAO,CAAC,YAAY;IAepB,SAAS,CAAC,iBAAiB,IAAI,cAAc;IAY7C,SAAS,CAAC,mBAAmB,IAAI,cAAc;IA4B/C,SAAS,CAAC,cAAc,IAAI,cAAc;IA4C1C,SAAS,CAAC,uBAAuB,IAAI,cAAc;CA6BpD;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,qBAAqB,EAAE,iBAAiB,CAAC;KAC1C;CACF"}
1
+ {"version":3,"file":"vscode-multi-select.d.ts","sourceRoot":"","sources":["../../src/vscode-multi-select/vscode-multi-select.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmB,cAAc,EAAC,MAAM,KAAK,CAAC;AAKrD,OAAO,EAAC,gBAAgB,EAAC,MAAM,iDAAiD,CAAC;AAEjF,OAAO,EAAC,qBAAqB,EAAC,MAAM,sCAAsC,CAAC;AAG3E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,qBACa,iBACX,SAAQ,gBACR,YAAW,qBAAqB;IAEhC,MAAM,CAAC,MAAM,4BAAU;IAEvB,gBAAgB;IAChB,OAAgB,iBAAiB,EAAE,cAAc,CAG/C;IAEF,MAAM,CAAC,cAAc,UAAQ;IAG7B,YAAY,EAAE,MAAM,EAAE,CAAM;IAG5B,QAAQ,UAAS;IAGjB,IAAI,EAAE,MAAM,GAAG,SAAS,CAAa;IAErC,IACI,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,EAEhC;IACD,IAAI,eAAe,IAAI,MAAM,EAAE,CAE9B;IAED,IACI,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,MAAM,EA4B/B;IACD,IAAI,KAAK,IAAI,MAAM,EAAE,CAEpB;IAED,IAAI,IAAI,2BAEP;IAED,gBAAgB;IAChB,IAAI,IAAI,WAEP;IAED,IAAI,QAAQ,IAAI,aAAa,CAE5B;IAED,IAAI,iBAAiB,IAAI,MAAM,CAE9B;IAED,IAAI,YAAY,YAEf;IAED,aAAa,IAAI,OAAO;IAIxB,cAAc,IAAI,OAAO;IAIzB,OAAO,CAAC,UAAU,CAAmB;;IASrC,iBAAiB,IAAI,IAAI;IASzB,gBAAgB;IAChB,iBAAiB,IAAI,IAAI;IAMzB,gBAAgB;IAChB,wBAAwB,CACtB,KAAK,EAAE,QAAQ,EACf,KAAK,EAAE,SAAS,GAAG,cAAc,GAChC,IAAI;IASP,OAAO,CAAC,YAAY,CAAkB;IAEtC,OAAO,CAAC,gBAAgB;IAOxB,OAAO,CAAC,eAAe;IAevB,OAAO,CAAC,aAAa;IAUrB,OAAO,CAAC,yBAAyB,CAAgB;IAEjD,SAAS,CAAC,aAAa,IAAI,IAAI;IAgB/B,OAAO,CAAC,cAAc;IAmCtB,OAAO,CAAC,mBAAmB;IAI3B,OAAO,CAAC,wBAAwB;IAQhC,OAAO,CAAC,sBAAsB;IAc9B,OAAO,CAAC,YAAY;IAepB,SAAS,CAAC,iBAAiB,IAAI,cAAc;IAY7C,SAAS,CAAC,mBAAmB,IAAI,cAAc;IA4B/C,SAAS,CAAC,cAAc,IAAI,cAAc;IA4C1C,SAAS,CAAC,uBAAuB,IAAI,cAAc;CA6BpD;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,qBAAqB,EAAE,iBAAiB,CAAC;KAC1C;CACF"}
@@ -53,8 +53,10 @@ let VscodeMultiSelect = class VscodeMultiSelect extends VscodeSelectBase {
53
53
  return this._selectedIndexes;
54
54
  }
55
55
  set value(val) {
56
- const sanitizedVal = val.map((v) => String(v));
57
- this._values = sanitizedVal;
56
+ const sanitizedVal = Array.isArray(val)
57
+ ? val.map((v) => String(v))
58
+ : [String(val)];
59
+ this._values = [];
58
60
  this._selectedIndexes.forEach((i) => {
59
61
  this._options[i].selected = false;
60
62
  });
@@ -63,8 +65,15 @@ let VscodeMultiSelect = class VscodeMultiSelect extends VscodeSelectBase {
63
65
  if (typeof this._valueOptionIndexMap[v] === 'number') {
64
66
  this._selectedIndexes.push(this._valueOptionIndexMap[v]);
65
67
  this._options[this._valueOptionIndexMap[v]].selected = true;
68
+ this._values.push(v);
66
69
  }
67
70
  });
71
+ if (this._selectedIndexes.length > 0) {
72
+ this._requestedValueToSetLater = [];
73
+ }
74
+ else {
75
+ this._requestedValueToSetLater = Array.isArray(val) ? val : [val];
76
+ }
68
77
  this._setFormValue();
69
78
  this._manageRequired();
70
79
  }
@@ -98,6 +107,7 @@ let VscodeMultiSelect = class VscodeMultiSelect extends VscodeSelectBase {
98
107
  this.defaultValue = [];
99
108
  this.required = false;
100
109
  this.name = undefined;
110
+ this._requestedValueToSetLater = [];
101
111
  /** @internal */
102
112
  this._multiple = true;
103
113
  this._internals = this.attachInternals();
@@ -146,6 +156,20 @@ let VscodeMultiSelect = class VscodeMultiSelect extends VscodeSelectBase {
146
156
  });
147
157
  this._internals.setFormValue(fd);
148
158
  }
159
+ _onSlotChange() {
160
+ super._onSlotChange();
161
+ if (this._requestedValueToSetLater.length > 0) {
162
+ this.options.forEach((o, i) => {
163
+ if (this._requestedValueToSetLater.includes(o.value)) {
164
+ this._selectedIndexes.push(i);
165
+ this._values.push(o.value);
166
+ this._options[i].selected = true;
167
+ this._requestedValueToSetLater =
168
+ this._requestedValueToSetLater.filter((v) => v !== o.value);
169
+ }
170
+ });
171
+ }
172
+ }
149
173
  _onOptionClick(ev) {
150
174
  const composedPath = ev.composedPath();
151
175
  const optEl = composedPath.find((et) => {
@@ -1 +1 @@
1
- {"version":3,"file":"vscode-multi-select.js","sourceRoot":"","sources":["../../src/vscode-multi-select/vscode-multi-select.ts"],"names":[],"mappings":"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","sourcesContent":["import {html, LitElement, TemplateResult} from 'lit';\nimport {customElement, property, query} from 'lit/decorators.js';\nimport {classMap} from 'lit/directives/class-map.js';\nimport {repeat} from 'lit/directives/repeat.js';\nimport {chevronDownIcon} from '../includes/vscode-select/template-elements.js';\nimport {VscodeSelectBase} from '../includes/vscode-select/vscode-select-base.js';\nimport styles from './vscode-multi-select.styles.js';\nimport {AssociatedFormControl} from '../includes/AssociatedFormControl.js';\nimport {highlightRanges} from '../includes/vscode-select/helpers.js';\n\n/**\n * Allows to select multiple items from a list of 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 * @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\n * @cssprop --vscode-badge-foreground\n * @cssprop --vscode-settings-dropdownBorder\n * @cssprop --vscode-settings-checkboxBackground\n * @cssprop --vscode-settings-dropdownBackground\n * @cssprop --vscode-settings-dropdownListBorder\n * @cssprop --vscode-focusBorder\n * @cssprop --vscode-foreground\n * @cssprop --vscode-font-family\n * @cssprop --vscode-font-size\n * @cssprop --vscode-font-weight\n * @cssprop --vscode-list-activeSelectionBackground\n * @cssprop --vscode-list-activeSelectionForeground\n * @cssprop --vscode-list-focusOutline\n * @cssprop --vscode-list-focusHighlightForeground\n * @cssprop --vscode-list-highlightForeground\n * @cssprop --vscode-list-hoverBackground\n * @cssprop --vscode-list-hoverForeground\n * @cssprop --vscode-list-hoverBackground\n * @cssprop --vscode-settings-textInputBackground\n * @cssprop --vscode-list-hoverBackground\n */\n@customElement('vscode-multi-select')\nexport class VscodeMultiSelect\n extends VscodeSelectBase\n implements AssociatedFormControl\n{\n static styles = styles;\n\n /** @internal */\n static override shadowRootOptions: ShadowRootInit = {\n ...LitElement.shadowRootOptions,\n delegatesFocus: true,\n };\n\n static formAssociated = true;\n\n @property({type: Array, attribute: 'default-value'})\n defaultValue: string[] = [];\n\n @property({type: Boolean, reflect: true})\n required = false;\n\n @property({reflect: true})\n name: string | undefined = undefined;\n\n @property({type: Array, attribute: false})\n set selectedIndexes(val: number[]) {\n this._selectedIndexes = val;\n }\n get selectedIndexes(): number[] {\n return this._selectedIndexes;\n }\n\n @property({type: Array})\n set value(val: string[]) {\n const sanitizedVal = val.map((v) => String(v));\n this._values = sanitizedVal;\n\n this._selectedIndexes.forEach((i) => {\n this._options[i].selected = false;\n });\n\n this._selectedIndexes = [];\n\n sanitizedVal.forEach((v) => {\n if (typeof this._valueOptionIndexMap[v] === 'number') {\n this._selectedIndexes.push(this._valueOptionIndexMap[v]);\n this._options[this._valueOptionIndexMap[v]].selected = true;\n }\n });\n\n this._setFormValue();\n this._manageRequired();\n }\n get value(): string[] {\n return this._values;\n }\n\n get form() {\n return this._internals.form;\n }\n\n /** @internal */\n get type() {\n return 'select-multiple';\n }\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 private _internals: ElementInternals;\n\n constructor() {\n super();\n /** @internal */\n this._multiple = true;\n this._internals = this.attachInternals();\n }\n\n connectedCallback(): void {\n super.connectedCallback();\n\n this.updateComplete.then(() => {\n this._setDefaultValue();\n this._manageRequired();\n });\n }\n\n /** @internal */\n formResetCallback(): void {\n this.updateComplete.then(() => {\n this.value = this.defaultValue;\n });\n }\n\n /** @internal */\n formStateRestoreCallback(\n state: FormData,\n _mode: 'restore' | 'autocomplete'\n ): void {\n const entries = Array.from(state.entries()).map((e) => String(e[1]));\n\n this.updateComplete.then(() => {\n this.value = entries;\n });\n }\n\n @query('.face')\n private _faceElement!: HTMLDivElement;\n\n private _setDefaultValue() {\n if (Array.isArray(this.defaultValue) && this.defaultValue.length > 0) {\n const val = this.defaultValue.map((v) => String(v));\n this.value = val;\n }\n }\n\n private _manageRequired() {\n const {value} = this;\n if (value.length === 0 && this.required) {\n this._internals.setValidity(\n {\n valueMissing: true,\n },\n 'Please select an item in the list.',\n this._faceElement\n );\n } else {\n this._internals.setValidity({});\n }\n }\n\n private _setFormValue() {\n const fd = new FormData();\n\n this._values.forEach((v) => {\n fd.append(this.name ?? '', v);\n });\n\n this._internals.setFormValue(fd);\n }\n\n private _onOptionClick(ev: MouseEvent) {\n const composedPath = ev.composedPath();\n const optEl = composedPath.find((et) => {\n if ('matches' in et) {\n return (et as HTMLElement).matches('li.option');\n }\n\n return false;\n });\n\n if (!optEl) {\n return;\n }\n\n const index = Number((optEl as HTMLElement).dataset.index);\n\n if (this._options[index]) {\n this._options[index].selected = !this._options[index].selected;\n }\n\n this._selectedIndexes = [];\n this._values = [];\n\n this._options.forEach((op) => {\n if (op.selected) {\n this._selectedIndexes.push(op.index);\n this._values.push(op.value);\n }\n });\n\n this._setFormValue();\n this._manageRequired();\n this._dispatchChangeEvent();\n }\n\n private _onMultiAcceptClick(): void {\n this._toggleDropdown(false);\n }\n\n private _onMultiDeselectAllClick(): void {\n this._selectedIndexes = [];\n this._values = [];\n this._options = this._options.map((op) => ({...op, selected: false}));\n this._manageRequired();\n this._dispatchChangeEvent();\n }\n\n private _onMultiSelectAllClick(): void {\n this._selectedIndexes = [];\n this._values = [];\n this._options = this._options.map((op) => ({...op, selected: true}));\n this._options.forEach((op, index) => {\n this._selectedIndexes.push(index);\n this._values.push(op.value);\n this._dispatchChangeEvent();\n });\n\n this._setFormValue();\n this._manageRequired();\n }\n\n private _renderLabel() {\n switch (this._selectedIndexes.length) {\n case 0:\n return html`<span class=\"select-face-badge no-item\"\n >No items selected</span\n >`;\n case 1:\n return html`<span class=\"select-face-badge\">1 item selected</span>`;\n default:\n return html`<span class=\"select-face-badge\"\n >${this._selectedIndexes.length} items selected</span\n >`;\n }\n }\n\n protected _renderSelectFace(): TemplateResult {\n return html`\n <div\n class=\"select-face face multiselect\"\n @click=\"${this._onFaceClick}\"\n tabindex=\"${this.tabIndex > -1 ? 0 : -1}\"\n >\n ${this._renderLabel()} ${chevronDownIcon}\n </div>\n `;\n }\n\n protected _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 ${this._renderLabel()}\n <input\n class=\"combobox-input\"\n spellcheck=\"false\"\n type=\"text\"\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 _renderOptions(): TemplateResult {\n const list = this.combobox ? this._filteredOptions : this._options;\n\n return html`\n <ul\n class=\"options\"\n @click=\"${this._onOptionClick}\"\n @mouseover=\"${this._onOptionMouseOver}\"\n >\n ${repeat(\n list,\n (op) => op.index,\n (op, index) => {\n const selected = this._selectedIndexes.includes(op.index);\n const optionClasses = classMap({\n active: index === this._activeIndex,\n option: true,\n selected,\n });\n const checkboxClasses = classMap({\n 'checkbox-icon': true,\n checked: selected,\n });\n\n return html`\n <li\n class=\"${optionClasses}\"\n data-index=\"${op.index}\"\n data-filtered-index=\"${index}\"\n >\n <span class=\"${checkboxClasses}\"></span>\n <span class=\"option-label\"\n >${(op.ranges?.length ?? 0 > 0)\n ? highlightRanges(op.label, op.ranges ?? [])\n : op.label}</span\n >\n </li>\n `;\n }\n )}\n </ul>\n `;\n }\n\n protected _renderDropdownControls(): TemplateResult {\n return html`\n <div class=\"dropdown-controls\">\n <button\n type=\"button\"\n @click=\"${this._onMultiSelectAllClick}\"\n title=\"Select all\"\n class=\"action-icon\"\n id=\"select-all\"\n >\n <vscode-icon name=\"checklist\"></vscode-icon>\n </button>\n <button\n type=\"button\"\n @click=\"${this._onMultiDeselectAllClick}\"\n title=\"Deselect all\"\n class=\"action-icon\"\n id=\"select-none\"\n >\n <vscode-icon name=\"clear-all\"></vscode-icon>\n </button>\n <vscode-button\n class=\"button-accept\"\n @click=\"${this._onMultiAcceptClick}\"\n >OK</vscode-button\n >\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'vscode-multi-select': VscodeMultiSelect;\n }\n}\n"]}
1
+ {"version":3,"file":"vscode-multi-select.js","sourceRoot":"","sources":["../../src/vscode-multi-select/vscode-multi-select.ts"],"names":[],"mappings":"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","sourcesContent":["import {html, LitElement, TemplateResult} from 'lit';\nimport {customElement, property, query} from 'lit/decorators.js';\nimport {classMap} from 'lit/directives/class-map.js';\nimport {repeat} from 'lit/directives/repeat.js';\nimport {chevronDownIcon} from '../includes/vscode-select/template-elements.js';\nimport {VscodeSelectBase} from '../includes/vscode-select/vscode-select-base.js';\nimport styles from './vscode-multi-select.styles.js';\nimport {AssociatedFormControl} from '../includes/AssociatedFormControl.js';\nimport {highlightRanges} from '../includes/vscode-select/helpers.js';\n\n/**\n * Allows to select multiple items from a list of 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 * @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\n * @cssprop --vscode-badge-foreground\n * @cssprop --vscode-settings-dropdownBorder\n * @cssprop --vscode-settings-checkboxBackground\n * @cssprop --vscode-settings-dropdownBackground\n * @cssprop --vscode-settings-dropdownListBorder\n * @cssprop --vscode-focusBorder\n * @cssprop --vscode-foreground\n * @cssprop --vscode-font-family\n * @cssprop --vscode-font-size\n * @cssprop --vscode-font-weight\n * @cssprop --vscode-list-activeSelectionBackground\n * @cssprop --vscode-list-activeSelectionForeground\n * @cssprop --vscode-list-focusOutline\n * @cssprop --vscode-list-focusHighlightForeground\n * @cssprop --vscode-list-highlightForeground\n * @cssprop --vscode-list-hoverBackground\n * @cssprop --vscode-list-hoverForeground\n * @cssprop --vscode-list-hoverBackground\n * @cssprop --vscode-settings-textInputBackground\n * @cssprop --vscode-list-hoverBackground\n */\n@customElement('vscode-multi-select')\nexport class VscodeMultiSelect\n extends VscodeSelectBase\n implements AssociatedFormControl\n{\n static styles = styles;\n\n /** @internal */\n static override shadowRootOptions: ShadowRootInit = {\n ...LitElement.shadowRootOptions,\n delegatesFocus: true,\n };\n\n static formAssociated = true;\n\n @property({type: Array, attribute: 'default-value'})\n defaultValue: string[] = [];\n\n @property({type: Boolean, reflect: true})\n required = false;\n\n @property({reflect: true})\n name: string | undefined = undefined;\n\n @property({type: Array, attribute: false})\n set selectedIndexes(val: number[]) {\n this._selectedIndexes = val;\n }\n get selectedIndexes(): number[] {\n return this._selectedIndexes;\n }\n\n @property({type: Array})\n set value(val: string[] | string) {\n const sanitizedVal = Array.isArray(val)\n ? val.map((v) => String(v))\n : [String(val)];\n this._values = [];\n\n this._selectedIndexes.forEach((i) => {\n this._options[i].selected = false;\n });\n\n this._selectedIndexes = [];\n\n sanitizedVal.forEach((v) => {\n if (typeof this._valueOptionIndexMap[v] === 'number') {\n this._selectedIndexes.push(this._valueOptionIndexMap[v]);\n this._options[this._valueOptionIndexMap[v]].selected = true;\n this._values.push(v);\n }\n });\n\n if (this._selectedIndexes.length > 0) {\n this._requestedValueToSetLater = [];\n } else {\n this._requestedValueToSetLater = Array.isArray(val) ? val : [val];\n }\n\n this._setFormValue();\n this._manageRequired();\n }\n get value(): string[] {\n return this._values;\n }\n\n get form() {\n return this._internals.form;\n }\n\n /** @internal */\n get type() {\n return 'select-multiple';\n }\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 private _internals: ElementInternals;\n\n constructor() {\n super();\n /** @internal */\n this._multiple = true;\n this._internals = this.attachInternals();\n }\n\n connectedCallback(): void {\n super.connectedCallback();\n\n this.updateComplete.then(() => {\n this._setDefaultValue();\n this._manageRequired();\n });\n }\n\n /** @internal */\n formResetCallback(): void {\n this.updateComplete.then(() => {\n this.value = this.defaultValue;\n });\n }\n\n /** @internal */\n formStateRestoreCallback(\n state: FormData,\n _mode: 'restore' | 'autocomplete'\n ): void {\n const entries = Array.from(state.entries()).map((e) => String(e[1]));\n\n this.updateComplete.then(() => {\n this.value = entries;\n });\n }\n\n @query('.face')\n private _faceElement!: HTMLDivElement;\n\n private _setDefaultValue() {\n if (Array.isArray(this.defaultValue) && this.defaultValue.length > 0) {\n const val = this.defaultValue.map((v) => String(v));\n this.value = val;\n }\n }\n\n private _manageRequired() {\n const {value} = this;\n if (value.length === 0 && this.required) {\n this._internals.setValidity(\n {\n valueMissing: true,\n },\n 'Please select an item in the list.',\n this._faceElement\n );\n } else {\n this._internals.setValidity({});\n }\n }\n\n private _setFormValue() {\n const fd = new FormData();\n\n this._values.forEach((v) => {\n fd.append(this.name ?? '', v);\n });\n\n this._internals.setFormValue(fd);\n }\n\n private _requestedValueToSetLater: string[] = [];\n\n protected _onSlotChange(): void {\n super._onSlotChange();\n\n if (this._requestedValueToSetLater.length > 0) {\n this.options.forEach((o, i) => {\n if (this._requestedValueToSetLater.includes(o.value)) {\n this._selectedIndexes.push(i);\n this._values.push(o.value);\n this._options[i].selected = true;\n this._requestedValueToSetLater =\n this._requestedValueToSetLater.filter((v) => v !== o.value);\n }\n });\n }\n }\n\n private _onOptionClick(ev: MouseEvent) {\n const composedPath = ev.composedPath();\n const optEl = composedPath.find((et) => {\n if ('matches' in et) {\n return (et as HTMLElement).matches('li.option');\n }\n\n return false;\n });\n\n if (!optEl) {\n return;\n }\n\n const index = Number((optEl as HTMLElement).dataset.index);\n\n if (this._options[index]) {\n this._options[index].selected = !this._options[index].selected;\n }\n\n this._selectedIndexes = [];\n this._values = [];\n\n this._options.forEach((op) => {\n if (op.selected) {\n this._selectedIndexes.push(op.index);\n this._values.push(op.value);\n }\n });\n\n this._setFormValue();\n this._manageRequired();\n this._dispatchChangeEvent();\n }\n\n private _onMultiAcceptClick(): void {\n this._toggleDropdown(false);\n }\n\n private _onMultiDeselectAllClick(): void {\n this._selectedIndexes = [];\n this._values = [];\n this._options = this._options.map((op) => ({...op, selected: false}));\n this._manageRequired();\n this._dispatchChangeEvent();\n }\n\n private _onMultiSelectAllClick(): void {\n this._selectedIndexes = [];\n this._values = [];\n this._options = this._options.map((op) => ({...op, selected: true}));\n this._options.forEach((op, index) => {\n this._selectedIndexes.push(index);\n this._values.push(op.value);\n this._dispatchChangeEvent();\n });\n\n this._setFormValue();\n this._manageRequired();\n }\n\n private _renderLabel() {\n switch (this._selectedIndexes.length) {\n case 0:\n return html`<span class=\"select-face-badge no-item\"\n >No items selected</span\n >`;\n case 1:\n return html`<span class=\"select-face-badge\">1 item selected</span>`;\n default:\n return html`<span class=\"select-face-badge\"\n >${this._selectedIndexes.length} items selected</span\n >`;\n }\n }\n\n protected _renderSelectFace(): TemplateResult {\n return html`\n <div\n class=\"select-face face multiselect\"\n @click=\"${this._onFaceClick}\"\n tabindex=\"${this.tabIndex > -1 ? 0 : -1}\"\n >\n ${this._renderLabel()} ${chevronDownIcon}\n </div>\n `;\n }\n\n protected _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 ${this._renderLabel()}\n <input\n class=\"combobox-input\"\n spellcheck=\"false\"\n type=\"text\"\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 _renderOptions(): TemplateResult {\n const list = this.combobox ? this._filteredOptions : this._options;\n\n return html`\n <ul\n class=\"options\"\n @click=\"${this._onOptionClick}\"\n @mouseover=\"${this._onOptionMouseOver}\"\n >\n ${repeat(\n list,\n (op) => op.index,\n (op, index) => {\n const selected = this._selectedIndexes.includes(op.index);\n const optionClasses = classMap({\n active: index === this._activeIndex,\n option: true,\n selected,\n });\n const checkboxClasses = classMap({\n 'checkbox-icon': true,\n checked: selected,\n });\n\n return html`\n <li\n class=\"${optionClasses}\"\n data-index=\"${op.index}\"\n data-filtered-index=\"${index}\"\n >\n <span class=\"${checkboxClasses}\"></span>\n <span class=\"option-label\"\n >${(op.ranges?.length ?? 0 > 0)\n ? highlightRanges(op.label, op.ranges ?? [])\n : op.label}</span\n >\n </li>\n `;\n }\n )}\n </ul>\n `;\n }\n\n protected _renderDropdownControls(): TemplateResult {\n return html`\n <div class=\"dropdown-controls\">\n <button\n type=\"button\"\n @click=\"${this._onMultiSelectAllClick}\"\n title=\"Select all\"\n class=\"action-icon\"\n id=\"select-all\"\n >\n <vscode-icon name=\"checklist\"></vscode-icon>\n </button>\n <button\n type=\"button\"\n @click=\"${this._onMultiDeselectAllClick}\"\n title=\"Deselect all\"\n class=\"action-icon\"\n id=\"select-none\"\n >\n <vscode-icon name=\"clear-all\"></vscode-icon>\n </button>\n <vscode-button\n class=\"button-accept\"\n @click=\"${this._onMultiAcceptClick}\"\n >OK</vscode-button\n >\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'vscode-multi-select': VscodeMultiSelect;\n }\n}\n"]}
@@ -55,7 +55,7 @@ export declare class VscodeRadio extends VscodeRadio_base implements AssociatedF
55
55
  update(changedProperties: PropertyValueMap<any> | Map<PropertyKey, unknown>): void;
56
56
  get form(): HTMLFormElement | null;
57
57
  /** @internal */
58
- get type(): string;
58
+ type: string;
59
59
  get validity(): ValidityState;
60
60
  get validationMessage(): string;
61
61
  get willValidate(): boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"vscode-radio.d.ts","sourceRoot":"","sources":["../../src/vscode-radio/vscode-radio.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmB,gBAAgB,EAAE,cAAc,EAAC,MAAM,KAAK,CAAC;AAGvE,OAAO,EAAC,oBAAoB,EAAC,MAAM,wDAAwD,CAAC;AAG5F,OAAO,EAAC,qBAAqB,EAAC,MAAM,sCAAsC,CAAC;;AAE3E;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,qBACa,WACX,SAAQ,gBACR,YAAW,qBAAqB;IAEhC,MAAM,CAAC,MAAM,+BAAU;IAEvB,gBAAgB;IAChB,MAAM,CAAC,cAAc,UAAQ;IAE7B,gBAAgB;IAChB,OAAgB,iBAAiB,EAAE,cAAc,CAG/C;IAGF,SAAS,UAAS;IAGlB,OAAO,UAAS;IAGhB,cAAc,UAAS;IAGvB,OAAO,UAAS;IAEhB;;OAEG;IAEH,IAAI,SAAM;IAGV,KAAK,SAAM;IAGX,QAAQ,UAAS;IAGjB,QAAQ,UAAS;IAEjB,gBAAgB;IAEhB,IAAI,SAAW;IAEf,gBAAgB;IAEhB,QAAQ,SAAK;IAGb,OAAO,CAAC,YAAY,CAAM;IAG1B,OAAO,CAAC,QAAQ,CAAoB;IAEpC,OAAO,CAAC,UAAU,CAAmB;;IAOrC,iBAAiB,IAAI,IAAI;IASzB,oBAAoB,IAAI,IAAI;IAO5B,MAAM,CAEJ,iBAAiB,EAAE,gBAAgB,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,WAAW,EAAE,OAAO,CAAC,GACnE,IAAI;IAYP,IAAI,IAAI,IAAI,eAAe,GAAG,IAAI,CAEjC;IAED,gBAAgB;IAChB,IAAI,IAAI,WAEP;IAED,IAAI,QAAQ,IAAI,aAAa,CAE5B;IAED,IAAI,iBAAiB,IAAI,MAAM,CAE9B;IAED,IAAI,YAAY,IAAI,OAAO,CAE1B;IAED,aAAa,IAAI,OAAO;IAIxB,cAAc,IAAI,OAAO;IAIzB,gBAAgB;IAChB,iBAAiB,IAAI,IAAI;IAYzB,gBAAgB;IAChB,wBAAwB,CACtB,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,SAAS,GAAG,cAAc,GAChC,IAAI;IAMP,OAAO,CAAC,oBAAoB;IAkB5B,OAAO,CAAC,UAAU;IAclB,OAAO,CAAC,cAAc;IAQtB,OAAO,CAAC,YAAY;IAWpB;;OAEG;IACH,oBAAoB,CAAC,OAAO,EAAE,OAAO;IAcrC,OAAO,CAAC,iBAAiB;IAQzB,OAAO,CAAC,mBAAmB;IAY3B,OAAO,CAAC,kBAAkB;IAmB1B,OAAO,CAAC,YAAY,CAWlB;IAEF,SAAS,CAAC,cAAc,OAAQ,aAAa,KAAG,IAAI,CAelD;IAEF,MAAM,IAAI,cAAc;CA+BzB;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,cAAc,EAAE,WAAW,CAAC;KAC7B;CACF"}
1
+ {"version":3,"file":"vscode-radio.d.ts","sourceRoot":"","sources":["../../src/vscode-radio/vscode-radio.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmB,gBAAgB,EAAE,cAAc,EAAC,MAAM,KAAK,CAAC;AAGvE,OAAO,EAAC,oBAAoB,EAAC,MAAM,wDAAwD,CAAC;AAG5F,OAAO,EAAC,qBAAqB,EAAC,MAAM,sCAAsC,CAAC;;AAE3E;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,qBACa,WACX,SAAQ,gBACR,YAAW,qBAAqB;IAEhC,MAAM,CAAC,MAAM,+BAAU;IAEvB,gBAAgB;IAChB,MAAM,CAAC,cAAc,UAAQ;IAE7B,gBAAgB;IAChB,OAAgB,iBAAiB,EAAE,cAAc,CAG/C;IAGF,SAAS,UAAS;IAGlB,OAAO,UAAS;IAGhB,cAAc,UAAS;IAGvB,OAAO,UAAS;IAEhB;;OAEG;IAEH,IAAI,SAAM;IAGV,KAAK,SAAM;IAGX,QAAQ,UAAS;IAGjB,QAAQ,UAAS;IAEjB,gBAAgB;IAEhB,IAAI,SAAW;IAEf,gBAAgB;IAEhB,QAAQ,SAAK;IAGb,OAAO,CAAC,YAAY,CAAM;IAG1B,OAAO,CAAC,QAAQ,CAAoB;IAEpC,OAAO,CAAC,UAAU,CAAmB;;IAOrC,iBAAiB,IAAI,IAAI;IASzB,oBAAoB,IAAI,IAAI;IAO5B,MAAM,CAEJ,iBAAiB,EAAE,gBAAgB,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,WAAW,EAAE,OAAO,CAAC,GACnE,IAAI;IAYP,IAAI,IAAI,IAAI,eAAe,GAAG,IAAI,CAEjC;IAED,gBAAgB;IAEhB,IAAI,SAAW;IAEf,IAAI,QAAQ,IAAI,aAAa,CAE5B;IAED,IAAI,iBAAiB,IAAI,MAAM,CAE9B;IAED,IAAI,YAAY,IAAI,OAAO,CAE1B;IAED,aAAa,IAAI,OAAO;IAIxB,cAAc,IAAI,OAAO;IAIzB,gBAAgB;IAChB,iBAAiB,IAAI,IAAI;IAYzB,gBAAgB;IAChB,wBAAwB,CACtB,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,SAAS,GAAG,cAAc,GAChC,IAAI;IAMP,OAAO,CAAC,oBAAoB;IAkB5B,OAAO,CAAC,UAAU;IAclB,OAAO,CAAC,cAAc;IAQtB,OAAO,CAAC,YAAY;IAWpB;;OAEG;IACH,oBAAoB,CAAC,OAAO,EAAE,OAAO;IAcrC,OAAO,CAAC,iBAAiB;IAQzB,OAAO,CAAC,mBAAmB;IAY3B,OAAO,CAAC,kBAAkB;IAmB1B,OAAO,CAAC,YAAY,CAWlB;IAEF,SAAS,CAAC,cAAc,OAAQ,aAAa,KAAG,IAAI,CAelD;IAEF,MAAM,IAAI,cAAc;CA+BzB;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,cAAc,EAAE,WAAW,CAAC;KAC7B;CACF"}
@@ -52,6 +52,8 @@ let VscodeRadio = class VscodeRadio extends LabelledCheckboxOrRadioMixin(FormBut
52
52
  /** @internal */
53
53
  this.tabIndex = 0;
54
54
  this._slottedText = '';
55
+ /** @internal */
56
+ this.type = 'radio';
55
57
  this._handleClick = () => {
56
58
  if (this.disabled) {
57
59
  return;
@@ -104,10 +106,6 @@ let VscodeRadio = class VscodeRadio extends LabelledCheckboxOrRadioMixin(FormBut
104
106
  get form() {
105
107
  return this._internals.form;
106
108
  }
107
- /** @internal */
108
- get type() {
109
- return 'radio';
110
- }
111
109
  get validity() {
112
110
  return this._internals.validity;
113
111
  }
@@ -296,6 +294,9 @@ __decorate([
296
294
  __decorate([
297
295
  query('#input')
298
296
  ], VscodeRadio.prototype, "_inputEl", void 0);
297
+ __decorate([
298
+ property()
299
+ ], VscodeRadio.prototype, "type", void 0);
299
300
  VscodeRadio = __decorate([
300
301
  customElement('vscode-radio')
301
302
  ], VscodeRadio);
@@ -1 +1 @@
1
- {"version":3,"file":"vscode-radio.js","sourceRoot":"","sources":["../../src/vscode-radio/vscode-radio.ts"],"names":[],"mappings":"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","sourcesContent":["import {html, LitElement, PropertyValueMap, TemplateResult} from 'lit';\nimport {customElement, property, state, query} from 'lit/decorators.js';\nimport {classMap} from 'lit/directives/class-map.js';\nimport {FormButtonWidgetBase} from '../includes/form-button-widget/FormButtonWidgetBase.js';\nimport {LabelledCheckboxOrRadioMixin} from '../includes/form-button-widget/LabelledCheckboxOrRadio.js';\nimport styles from './vscode-radio.styles.js';\nimport {AssociatedFormControl} from '../includes/AssociatedFormControl.js';\n\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 * @attr name - Name which is used as a variable name in the data of the form-container.\n * @attr label - Attribute pair of the `label` property.\n *\n * @prop label - Label text. It is only applied if component's innerHTML doesn't contain any text.\n *\n * @fires {Event} change - Dispatched when checked state is changed.\n * @fires {Event} invalid - Dispatched when the element is invalid and `checkValidity()` has been called or the form containing this element is submitted.\n *\n * [MDN Reference](https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement/invalid_event)\n *\n * @cssprop --vscode-font-family\n * @cssprop --vscode-font-size\n * @cssprop --vscode-font-weight\n * @cssprop --vsc-foreground-translucent - Label font color. 90% transparency version of `--vscode-foreground` by default.\n * @cssprop --vscode-settings-checkboxBackground\n * @cssprop --vscode-settings-checkboxBorder\n * @cssprop --vscode-settings-checkboxForeground\n * @cssprop --vscode-focusBorder\n */\n@customElement('vscode-radio')\nexport class VscodeRadio\n extends LabelledCheckboxOrRadioMixin(FormButtonWidgetBase)\n implements AssociatedFormControl\n{\n static styles = styles;\n\n /** @internal */\n static formAssociated = true;\n\n /** @internal */\n static override shadowRootOptions: ShadowRootInit = {\n ...LitElement.shadowRootOptions,\n delegatesFocus: true,\n };\n\n @property({type: Boolean, reflect: true})\n autofocus = false;\n\n @property({type: Boolean, reflect: true})\n checked = false;\n\n @property({type: Boolean, reflect: true, attribute: 'default-checked'})\n defaultChecked = false;\n\n @property({type: Boolean, reflect: true})\n invalid = false;\n\n /**\n * Name which is used as a variable name in the data of the form-container.\n */\n @property({reflect: true})\n name = '';\n\n @property()\n value = '';\n\n @property({type: Boolean, reflect: true})\n disabled = false;\n\n @property({type: Boolean, reflect: true})\n required = false;\n\n /** @internal */\n @property({reflect: true})\n role = 'radio';\n\n /** @internal */\n @property({type: Number, reflect: true})\n tabIndex = 0;\n\n @state()\n private _slottedText = '';\n\n @query('#input')\n private _inputEl!: HTMLInputElement;\n\n private _internals: ElementInternals;\n\n constructor() {\n super();\n this._internals = this.attachInternals();\n }\n\n connectedCallback(): void {\n super.connectedCallback();\n\n this.addEventListener('keydown', this._handleKeyDown);\n this.addEventListener('click', this._handleClick);\n\n this._handleValueChange();\n }\n\n disconnectedCallback(): void {\n super.disconnectedCallback();\n\n this.removeEventListener('keydown', this._handleKeyDown);\n this.removeEventListener('click', this._handleClick);\n }\n\n update(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n changedProperties: PropertyValueMap<any> | Map<PropertyKey, unknown>\n ): void {\n super.update(changedProperties);\n\n if (changedProperties.has('checked')) {\n this._handleValueChange();\n }\n\n if (changedProperties.has('required')) {\n this._handleValueChange();\n }\n }\n\n get form(): HTMLFormElement | null {\n return this._internals.form;\n }\n\n /** @internal */\n get type() {\n return 'radio';\n }\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(): boolean {\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 /** @internal */\n formResetCallback(): void {\n const radios = this._getRadios();\n\n radios.forEach((r) => {\n r.checked = r.defaultChecked;\n });\n\n this.updateComplete.then(() => {\n this._handleValueChange();\n });\n }\n\n /** @internal */\n formStateRestoreCallback(\n state: string,\n _mode: 'restore' | 'autocomplete'\n ): void {\n if (this.value === state && state !== '') {\n this.checked = true;\n }\n }\n\n private _dispatchCustomEvent() {\n /** @deprecated - Use the native `change` event instead. */\n this.dispatchEvent(\n new CustomEvent<{checked: boolean; label: string; value: string}>(\n 'vsc-change',\n {\n detail: {\n checked: this.checked,\n label: this.label,\n value: this.value,\n },\n bubbles: true,\n composed: true,\n }\n )\n );\n }\n\n private _getRadios(): VscodeRadio[] {\n const root = this.getRootNode({composed: true}) as Document | ShadowRoot;\n\n if (!root) {\n return [];\n }\n\n const radios = root.querySelectorAll(\n `vscode-radio[name=\"${this.name}\"]`\n ) as NodeListOf<VscodeRadio>;\n\n return Array.from(radios);\n }\n\n private _uncheckOthers(radios: VscodeRadio[]) {\n radios.forEach((r) => {\n if (r !== this) {\n r.checked = false;\n }\n });\n }\n\n private _checkButton() {\n const radios = this._getRadios();\n this.checked = true;\n\n radios.forEach((r) => {\n if (r !== this) {\n r.checked = false;\n }\n });\n }\n\n /**\n * @internal\n */\n setComponentValidity(isValid: boolean) {\n if (isValid) {\n this._internals.setValidity({});\n } else {\n this._internals.setValidity(\n {\n valueMissing: true,\n },\n 'Please select one of these options.',\n this._inputEl\n );\n }\n }\n\n private _setGroupValidity(radios: VscodeRadio[], isValid: boolean) {\n this.updateComplete.then(() => {\n radios.forEach((r) => {\n r.setComponentValidity(isValid);\n });\n });\n }\n\n private _setActualFormValue() {\n let actualValue: string | null = '';\n\n if (this.checked) {\n actualValue = !this.value ? 'on' : this.value;\n } else {\n actualValue = null;\n }\n\n this._internals.setFormValue(actualValue);\n }\n\n private _handleValueChange() {\n const radios = this._getRadios();\n const anyRequired = radios.some((r) => {\n return r.required;\n });\n\n this._setActualFormValue();\n\n if (this.checked) {\n this._uncheckOthers(radios);\n this._setGroupValidity(radios, true);\n } else {\n const anyChecked = !!radios.find((r) => r.checked);\n const isInvalid = anyRequired && !anyChecked;\n\n this._setGroupValidity(radios, !isInvalid);\n }\n }\n\n private _handleClick = (): void => {\n if (this.disabled) {\n return;\n }\n\n if (!this.checked) {\n this._checkButton();\n this._handleValueChange();\n this._dispatchCustomEvent();\n this.dispatchEvent(new Event('change', {bubbles: true}));\n }\n };\n\n protected _handleKeyDown = (ev: KeyboardEvent): void => {\n if (!this.disabled && (ev.key === 'Enter' || ev.key === ' ')) {\n ev.preventDefault();\n\n if (ev.key === ' ' && !this.checked) {\n this.checked = true;\n this._handleValueChange();\n this._dispatchCustomEvent();\n this.dispatchEvent(new Event('change', {bubbles: true}));\n }\n\n if (ev.key === 'Enter') {\n this._internals.form?.requestSubmit();\n }\n }\n };\n\n render(): TemplateResult {\n const iconClasses = classMap({\n icon: true,\n checked: this.checked,\n });\n const labelInnerClasses = classMap({\n 'label-inner': true,\n 'is-slot-empty': this._slottedText === '',\n });\n\n return html`\n <div class=\"wrapper\">\n <input\n ?autofocus=${this.autofocus}\n id=\"input\"\n class=\"radio\"\n type=\"checkbox\"\n ?checked=\"${this.checked}\"\n value=\"${this.value}\"\n tabindex=${this.tabIndex}\n />\n <div class=\"${iconClasses}\"></div>\n <label for=\"input\" class=\"label\" @click=\"${this._handleClick}\">\n <span class=\"${labelInnerClasses}\">\n ${this._renderLabelAttribute()}\n <slot @slotchange=\"${this._handleSlotChange}\"></slot>\n </span>\n </label>\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'vscode-radio': VscodeRadio;\n }\n}\n"]}
1
+ {"version":3,"file":"vscode-radio.js","sourceRoot":"","sources":["../../src/vscode-radio/vscode-radio.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAC,IAAI,EAAE,UAAU,EAAmC,MAAM,KAAK,CAAC;AACvE,OAAO,EAAC,aAAa,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAC,MAAM,mBAAmB,CAAC;AACxE,OAAO,EAAC,QAAQ,EAAC,MAAM,6BAA6B,CAAC;AACrD,OAAO,EAAC,oBAAoB,EAAC,MAAM,wDAAwD,CAAC;AAC5F,OAAO,EAAC,4BAA4B,EAAC,MAAM,2DAA2D,CAAC;AACvG,OAAO,MAAM,MAAM,0BAA0B,CAAC;AAG9C;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEI,IAAM,WAAW,GAAjB,MAAM,WACX,SAAQ,4BAA4B,CAAC,oBAAoB,CAAC;IAyD1D;QACE,KAAK,EAAE,CAAC;QA3CV,cAAS,GAAG,KAAK,CAAC;QAGlB,YAAO,GAAG,KAAK,CAAC;QAGhB,mBAAc,GAAG,KAAK,CAAC;QAGvB,YAAO,GAAG,KAAK,CAAC;QAEhB;;WAEG;QAEH,SAAI,GAAG,EAAE,CAAC;QAGV,UAAK,GAAG,EAAE,CAAC;QAGX,aAAQ,GAAG,KAAK,CAAC;QAGjB,aAAQ,GAAG,KAAK,CAAC;QAEjB,gBAAgB;QAEhB,SAAI,GAAG,OAAO,CAAC;QAEf,gBAAgB;QAEhB,aAAQ,GAAG,CAAC,CAAC;QAGL,iBAAY,GAAG,EAAE,CAAC;QA+C1B,gBAAgB;QAEhB,SAAI,GAAG,OAAO,CAAC;QAwJP,iBAAY,GAAG,GAAS,EAAE;YAChC,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAClB,OAAO;YACT,CAAC;YAED,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;gBAClB,IAAI,CAAC,YAAY,EAAE,CAAC;gBACpB,IAAI,CAAC,kBAAkB,EAAE,CAAC;gBAC1B,IAAI,CAAC,oBAAoB,EAAE,CAAC;gBAC5B,IAAI,CAAC,aAAa,CAAC,IAAI,KAAK,CAAC,QAAQ,EAAE,EAAC,OAAO,EAAE,IAAI,EAAC,CAAC,CAAC,CAAC;YAC3D,CAAC;QACH,CAAC,CAAC;QAEQ,mBAAc,GAAG,CAAC,EAAiB,EAAQ,EAAE;YACrD,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,EAAE,CAAC,GAAG,KAAK,OAAO,IAAI,EAAE,CAAC,GAAG,KAAK,GAAG,CAAC,EAAE,CAAC;gBAC7D,EAAE,CAAC,cAAc,EAAE,CAAC;gBAEpB,IAAI,EAAE,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;oBACpC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;oBACpB,IAAI,CAAC,kBAAkB,EAAE,CAAC;oBAC1B,IAAI,CAAC,oBAAoB,EAAE,CAAC;oBAC5B,IAAI,CAAC,aAAa,CAAC,IAAI,KAAK,CAAC,QAAQ,EAAE,EAAC,OAAO,EAAE,IAAI,EAAC,CAAC,CAAC,CAAC;gBAC3D,CAAC;gBAED,IAAI,EAAE,CAAC,GAAG,KAAK,OAAO,EAAE,CAAC;oBACvB,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,aAAa,EAAE,CAAC;gBACxC,CAAC;YACH,CAAC;QACH,CAAC,CAAC;QA5NA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;IAC3C,CAAC;IAED,iBAAiB;QACf,KAAK,CAAC,iBAAiB,EAAE,CAAC;QAE1B,IAAI,CAAC,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;QACtD,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;QAElD,IAAI,CAAC,kBAAkB,EAAE,CAAC;IAC5B,CAAC;IAED,oBAAoB;QAClB,KAAK,CAAC,oBAAoB,EAAE,CAAC;QAE7B,IAAI,CAAC,mBAAmB,CAAC,SAAS,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;QACzD,IAAI,CAAC,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;IACvD,CAAC;IAED,MAAM;IACJ,8DAA8D;IAC9D,iBAAoE;QAEpE,KAAK,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC;QAEhC,IAAI,iBAAiB,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;YACrC,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC5B,CAAC;QAED,IAAI,iBAAiB,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;YACtC,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC5B,CAAC;IACH,CAAC;IAED,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;IAC9B,CAAC;IAMD,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;IAClC,CAAC;IAED,IAAI,iBAAiB;QACnB,OAAO,IAAI,CAAC,UAAU,CAAC,iBAAiB,CAAC;IAC3C,CAAC;IAED,IAAI,YAAY;QACd,OAAO,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC;IACtC,CAAC;IAED,aAAa;QACX,OAAO,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,CAAC;IACzC,CAAC;IAED,cAAc;QACZ,OAAO,IAAI,CAAC,UAAU,CAAC,cAAc,EAAE,CAAC;IAC1C,CAAC;IAED,gBAAgB;IAChB,iBAAiB;QACf,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QAEjC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;YACnB,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,cAAc,CAAC;QAC/B,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,EAAE;YAC5B,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC5B,CAAC,CAAC,CAAC;IACL,CAAC;IAED,gBAAgB;IAChB,wBAAwB,CACtB,KAAa,EACb,KAAiC;QAEjC,IAAI,IAAI,CAAC,KAAK,KAAK,KAAK,IAAI,KAAK,KAAK,EAAE,EAAE,CAAC;YACzC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACtB,CAAC;IACH,CAAC;IAEO,oBAAoB;QAC1B,2DAA2D;QAC3D,IAAI,CAAC,aAAa,CAChB,IAAI,WAAW,CACb,YAAY,EACZ;YACE,MAAM,EAAE;gBACN,OAAO,EAAE,IAAI,CAAC,OAAO;gBACrB,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,KAAK,EAAE,IAAI,CAAC,KAAK;aAClB;YACD,OAAO,EAAE,IAAI;YACb,QAAQ,EAAE,IAAI;SACf,CACF,CACF,CAAC;IACJ,CAAC;IAEO,UAAU;QAChB,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,EAAC,QAAQ,EAAE,IAAI,EAAC,CAA0B,CAAC;QAEzE,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAClC,sBAAsB,IAAI,CAAC,IAAI,IAAI,CACT,CAAC;QAE7B,OAAO,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC5B,CAAC;IAEO,cAAc,CAAC,MAAqB;QAC1C,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;YACnB,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;gBACf,CAAC,CAAC,OAAO,GAAG,KAAK,CAAC;YACpB,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,YAAY;QAClB,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QACjC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QAEpB,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;YACnB,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;gBACf,CAAC,CAAC,OAAO,GAAG,KAAK,CAAC;YACpB,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,oBAAoB,CAAC,OAAgB;QACnC,IAAI,OAAO,EAAE,CAAC;YACZ,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;QAClC,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,UAAU,CAAC,WAAW,CACzB;gBACE,YAAY,EAAE,IAAI;aACnB,EACD,qCAAqC,EACrC,IAAI,CAAC,QAAQ,CACd,CAAC;QACJ,CAAC;IACH,CAAC;IAEO,iBAAiB,CAAC,MAAqB,EAAE,OAAgB;QAC/D,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,EAAE;YAC5B,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;gBACnB,CAAC,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC;YAClC,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,mBAAmB;QACzB,IAAI,WAAW,GAAkB,EAAE,CAAC;QAEpC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,WAAW,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC;QAChD,CAAC;aAAM,CAAC;YACN,WAAW,GAAG,IAAI,CAAC;QACrB,CAAC;QAED,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC;IAC5C,CAAC;IAEO,kBAAkB;QACxB,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QACjC,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE;YACpC,OAAO,CAAC,CAAC,QAAQ,CAAC;QACpB,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAE3B,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;YAC5B,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QACvC,CAAC;aAAM,CAAC;YACN,MAAM,UAAU,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;YACnD,MAAM,SAAS,GAAG,WAAW,IAAI,CAAC,UAAU,CAAC;YAE7C,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,CAAC,SAAS,CAAC,CAAC;QAC7C,CAAC;IACH,CAAC;IAgCD,MAAM;QACJ,MAAM,WAAW,GAAG,QAAQ,CAAC;YAC3B,IAAI,EAAE,IAAI;YACV,OAAO,EAAE,IAAI,CAAC,OAAO;SACtB,CAAC,CAAC;QACH,MAAM,iBAAiB,GAAG,QAAQ,CAAC;YACjC,aAAa,EAAE,IAAI;YACnB,eAAe,EAAE,IAAI,CAAC,YAAY,KAAK,EAAE;SAC1C,CAAC,CAAC;QAEH,OAAO,IAAI,CAAA;;;uBAGQ,IAAI,CAAC,SAAS;;;;sBAIf,IAAI,CAAC,OAAO;mBACf,IAAI,CAAC,KAAK;qBACR,IAAI,CAAC,QAAQ;;sBAEZ,WAAW;mDACkB,IAAI,CAAC,YAAY;yBAC3C,iBAAiB;cAC5B,IAAI,CAAC,qBAAqB,EAAE;iCACT,IAAI,CAAC,iBAAiB;;;;KAIlD,CAAC;IACJ,CAAC;;AApTM,kBAAM,GAAG,MAAM,AAAT,CAAU;AAEvB,gBAAgB;AACT,0BAAc,GAAG,IAAI,AAAP,CAAQ;AAE7B,gBAAgB;AACA,6BAAiB,GAAmB;IAClD,GAAG,UAAU,CAAC,iBAAiB;IAC/B,cAAc,EAAE,IAAI;CACrB,AAHgC,CAG/B;AAGF;IADC,QAAQ,CAAC,EAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAC,CAAC;8CACvB;AAGlB;IADC,QAAQ,CAAC,EAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAC,CAAC;4CACzB;AAGhB;IADC,QAAQ,CAAC,EAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,iBAAiB,EAAC,CAAC;mDAChD;AAGvB;IADC,QAAQ,CAAC,EAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAC,CAAC;4CACzB;AAMhB;IADC,QAAQ,CAAC,EAAC,OAAO,EAAE,IAAI,EAAC,CAAC;yCAChB;AAGV;IADC,QAAQ,EAAE;0CACA;AAGX;IADC,QAAQ,CAAC,EAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAC,CAAC;6CACxB;AAGjB;IADC,QAAQ,CAAC,EAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAC,CAAC;6CACxB;AAIjB;IADC,QAAQ,CAAC,EAAC,OAAO,EAAE,IAAI,EAAC,CAAC;yCACX;AAIf;IADC,QAAQ,CAAC,EAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAC,CAAC;6CAC3B;AAGL;IADP,KAAK,EAAE;iDACkB;AAGlB;IADP,KAAK,CAAC,QAAQ,CAAC;6CACoB;AA8CpC;IADC,QAAQ,EAAE;yCACI;AApGJ,WAAW;IADvB,aAAa,CAAC,cAAc,CAAC;GACjB,WAAW,CAyTvB","sourcesContent":["import {html, LitElement, PropertyValueMap, TemplateResult} from 'lit';\nimport {customElement, property, state, query} from 'lit/decorators.js';\nimport {classMap} from 'lit/directives/class-map.js';\nimport {FormButtonWidgetBase} from '../includes/form-button-widget/FormButtonWidgetBase.js';\nimport {LabelledCheckboxOrRadioMixin} from '../includes/form-button-widget/LabelledCheckboxOrRadio.js';\nimport styles from './vscode-radio.styles.js';\nimport {AssociatedFormControl} from '../includes/AssociatedFormControl.js';\n\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 * @attr name - Name which is used as a variable name in the data of the form-container.\n * @attr label - Attribute pair of the `label` property.\n *\n * @prop label - Label text. It is only applied if component's innerHTML doesn't contain any text.\n *\n * @fires {Event} change - Dispatched when checked state is changed.\n * @fires {Event} invalid - Dispatched when the element is invalid and `checkValidity()` has been called or the form containing this element is submitted.\n *\n * [MDN Reference](https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement/invalid_event)\n *\n * @cssprop --vscode-font-family\n * @cssprop --vscode-font-size\n * @cssprop --vscode-font-weight\n * @cssprop --vsc-foreground-translucent - Label font color. 90% transparency version of `--vscode-foreground` by default.\n * @cssprop --vscode-settings-checkboxBackground\n * @cssprop --vscode-settings-checkboxBorder\n * @cssprop --vscode-settings-checkboxForeground\n * @cssprop --vscode-focusBorder\n */\n@customElement('vscode-radio')\nexport class VscodeRadio\n extends LabelledCheckboxOrRadioMixin(FormButtonWidgetBase)\n implements AssociatedFormControl\n{\n static styles = styles;\n\n /** @internal */\n static formAssociated = true;\n\n /** @internal */\n static override shadowRootOptions: ShadowRootInit = {\n ...LitElement.shadowRootOptions,\n delegatesFocus: true,\n };\n\n @property({type: Boolean, reflect: true})\n autofocus = false;\n\n @property({type: Boolean, reflect: true})\n checked = false;\n\n @property({type: Boolean, reflect: true, attribute: 'default-checked'})\n defaultChecked = false;\n\n @property({type: Boolean, reflect: true})\n invalid = false;\n\n /**\n * Name which is used as a variable name in the data of the form-container.\n */\n @property({reflect: true})\n name = '';\n\n @property()\n value = '';\n\n @property({type: Boolean, reflect: true})\n disabled = false;\n\n @property({type: Boolean, reflect: true})\n required = false;\n\n /** @internal */\n @property({reflect: true})\n role = 'radio';\n\n /** @internal */\n @property({type: Number, reflect: true})\n tabIndex = 0;\n\n @state()\n private _slottedText = '';\n\n @query('#input')\n private _inputEl!: HTMLInputElement;\n\n private _internals: ElementInternals;\n\n constructor() {\n super();\n this._internals = this.attachInternals();\n }\n\n connectedCallback(): void {\n super.connectedCallback();\n\n this.addEventListener('keydown', this._handleKeyDown);\n this.addEventListener('click', this._handleClick);\n\n this._handleValueChange();\n }\n\n disconnectedCallback(): void {\n super.disconnectedCallback();\n\n this.removeEventListener('keydown', this._handleKeyDown);\n this.removeEventListener('click', this._handleClick);\n }\n\n update(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n changedProperties: PropertyValueMap<any> | Map<PropertyKey, unknown>\n ): void {\n super.update(changedProperties);\n\n if (changedProperties.has('checked')) {\n this._handleValueChange();\n }\n\n if (changedProperties.has('required')) {\n this._handleValueChange();\n }\n }\n\n get form(): HTMLFormElement | null {\n return this._internals.form;\n }\n\n /** @internal */\n @property()\n type = 'radio';\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(): boolean {\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 /** @internal */\n formResetCallback(): void {\n const radios = this._getRadios();\n\n radios.forEach((r) => {\n r.checked = r.defaultChecked;\n });\n\n this.updateComplete.then(() => {\n this._handleValueChange();\n });\n }\n\n /** @internal */\n formStateRestoreCallback(\n state: string,\n _mode: 'restore' | 'autocomplete'\n ): void {\n if (this.value === state && state !== '') {\n this.checked = true;\n }\n }\n\n private _dispatchCustomEvent() {\n /** @deprecated - Use the native `change` event instead. */\n this.dispatchEvent(\n new CustomEvent<{checked: boolean; label: string; value: string}>(\n 'vsc-change',\n {\n detail: {\n checked: this.checked,\n label: this.label,\n value: this.value,\n },\n bubbles: true,\n composed: true,\n }\n )\n );\n }\n\n private _getRadios(): VscodeRadio[] {\n const root = this.getRootNode({composed: true}) as Document | ShadowRoot;\n\n if (!root) {\n return [];\n }\n\n const radios = root.querySelectorAll(\n `vscode-radio[name=\"${this.name}\"]`\n ) as NodeListOf<VscodeRadio>;\n\n return Array.from(radios);\n }\n\n private _uncheckOthers(radios: VscodeRadio[]) {\n radios.forEach((r) => {\n if (r !== this) {\n r.checked = false;\n }\n });\n }\n\n private _checkButton() {\n const radios = this._getRadios();\n this.checked = true;\n\n radios.forEach((r) => {\n if (r !== this) {\n r.checked = false;\n }\n });\n }\n\n /**\n * @internal\n */\n setComponentValidity(isValid: boolean) {\n if (isValid) {\n this._internals.setValidity({});\n } else {\n this._internals.setValidity(\n {\n valueMissing: true,\n },\n 'Please select one of these options.',\n this._inputEl\n );\n }\n }\n\n private _setGroupValidity(radios: VscodeRadio[], isValid: boolean) {\n this.updateComplete.then(() => {\n radios.forEach((r) => {\n r.setComponentValidity(isValid);\n });\n });\n }\n\n private _setActualFormValue() {\n let actualValue: string | null = '';\n\n if (this.checked) {\n actualValue = !this.value ? 'on' : this.value;\n } else {\n actualValue = null;\n }\n\n this._internals.setFormValue(actualValue);\n }\n\n private _handleValueChange() {\n const radios = this._getRadios();\n const anyRequired = radios.some((r) => {\n return r.required;\n });\n\n this._setActualFormValue();\n\n if (this.checked) {\n this._uncheckOthers(radios);\n this._setGroupValidity(radios, true);\n } else {\n const anyChecked = !!radios.find((r) => r.checked);\n const isInvalid = anyRequired && !anyChecked;\n\n this._setGroupValidity(radios, !isInvalid);\n }\n }\n\n private _handleClick = (): void => {\n if (this.disabled) {\n return;\n }\n\n if (!this.checked) {\n this._checkButton();\n this._handleValueChange();\n this._dispatchCustomEvent();\n this.dispatchEvent(new Event('change', {bubbles: true}));\n }\n };\n\n protected _handleKeyDown = (ev: KeyboardEvent): void => {\n if (!this.disabled && (ev.key === 'Enter' || ev.key === ' ')) {\n ev.preventDefault();\n\n if (ev.key === ' ' && !this.checked) {\n this.checked = true;\n this._handleValueChange();\n this._dispatchCustomEvent();\n this.dispatchEvent(new Event('change', {bubbles: true}));\n }\n\n if (ev.key === 'Enter') {\n this._internals.form?.requestSubmit();\n }\n }\n };\n\n render(): TemplateResult {\n const iconClasses = classMap({\n icon: true,\n checked: this.checked,\n });\n const labelInnerClasses = classMap({\n 'label-inner': true,\n 'is-slot-empty': this._slottedText === '',\n });\n\n return html`\n <div class=\"wrapper\">\n <input\n ?autofocus=${this.autofocus}\n id=\"input\"\n class=\"radio\"\n type=\"checkbox\"\n ?checked=\"${this.checked}\"\n value=\"${this.value}\"\n tabindex=${this.tabIndex}\n />\n <div class=\"${iconClasses}\"></div>\n <label for=\"input\" class=\"label\" @click=\"${this._handleClick}\">\n <span class=\"${labelInnerClasses}\">\n ${this._renderLabelAttribute()}\n <slot @slotchange=\"${this._handleSlotChange}\"></slot>\n </span>\n </label>\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'vscode-radio': VscodeRadio;\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"vscode-radio-group.d.ts","sourceRoot":"","sources":["../../src/vscode-radio-group/vscode-radio-group.ts"],"names":[],"mappings":"AAAA,OAAO,EAAO,cAAc,EAAC,MAAM,KAAK,CAAC;AAOzC,OAAO,EAAC,UAAU,EAAC,MAAM,2BAA2B,CAAC;AAIrD;;GAEG;AACH,qBACa,gBAAiB,SAAQ,UAAU;IAC9C,MAAM,CAAC,MAAM,+BAAU;IAGvB,OAAO,EAAE,YAAY,GAAG,UAAU,CAAgB;IAElD,gBAAgB;IAEhB,IAAI,SAAgB;IAEpB,iBAAiB,IAAI,IAAI;IAMzB,oBAAoB,IAAI,IAAI;IAO5B,OAAO,CAAC,OAAO,CAAiB;IAGhC,OAAO,CAAC,aAAa,CAAM;IAG3B,OAAO,CAAC,aAAa,CAAM;IAE3B,OAAO,CAAC,mBAAmB,CAAS;IAEpC,OAAO,CAAC,uBAAuB;IAU/B,OAAO,CAAC,WAAW;IAOnB,OAAO,CAAC,UAAU;IAkBlB,OAAO,CAAC,UAAU;IAkBlB,OAAO,CAAC,UAAU;IAiBlB,OAAO,CAAC,eAAe,CAA8B;IAErD,OAAO,CAAC,SAAS;IAkBjB,OAAO,CAAC,aAAa;IAuBrB,MAAM,IAAI,cAAc;CAUzB;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,oBAAoB,EAAE,gBAAgB,CAAC;KACxC;CACF"}
1
+ {"version":3,"file":"vscode-radio-group.d.ts","sourceRoot":"","sources":["../../src/vscode-radio-group/vscode-radio-group.ts"],"names":[],"mappings":"AAAA,OAAO,EAAO,cAAc,EAAC,MAAM,KAAK,CAAC;AAOzC,OAAO,EAAC,UAAU,EAAC,MAAM,2BAA2B,CAAC;AAIrD;;GAEG;AACH,qBACa,gBAAiB,SAAQ,UAAU;IAC9C,MAAM,CAAC,MAAM,+BAAU;IAGvB,OAAO,EAAE,YAAY,GAAG,UAAU,CAAgB;IAElD,gBAAgB;IAEhB,IAAI,SAAgB;IAEpB,iBAAiB,IAAI,IAAI;IAMzB,oBAAoB,IAAI,IAAI;IAO5B,OAAO,CAAC,OAAO,CAAiB;IAGhC,OAAO,CAAC,aAAa,CAAM;IAG3B,OAAO,CAAC,aAAa,CAAM;IAE3B,OAAO,CAAC,mBAAmB,CAAS;IAEpC,OAAO,CAAC,uBAAuB;IAU/B,OAAO,CAAC,WAAW;IAOnB,OAAO,CAAC,UAAU;IAkBlB,OAAO,CAAC,UAAU;IAkBlB,OAAO,CAAC,UAAU;IAiBlB,OAAO,CAAC,eAAe,CAA8B;IAErD,OAAO,CAAC,SAAS;IAkBjB,OAAO,CAAC,aAAa;IAqBrB,MAAM,IAAI,cAAc;CAUzB;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,oBAAoB,EAAE,gBAAgB,CAAC;KACxC;CACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"vscode-radio-group.js","sourceRoot":"","sources":["../../src/vscode-radio-group/vscode-radio-group.ts"],"names":[],"mappings":"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","sourcesContent":["import {html, TemplateResult} from 'lit';\nimport {\n customElement,\n property,\n queryAssignedElements,\n state,\n} from 'lit/decorators.js';\nimport {VscElement} from '../includes/VscElement.js';\nimport {VscodeRadio} from '../vscode-radio/index.js';\nimport styles from './vscode-radio-group.styles.js';\n\n/**\n * @fires {Event} change - Dispatched when a child radio button is changed.\n */\n@customElement('vscode-radio-group')\nexport class VscodeRadioGroup extends VscElement {\n static styles = styles;\n\n @property({reflect: true})\n variant: 'horizontal' | 'vertical' = 'horizontal';\n\n /** @internal */\n @property({reflect: true})\n role = 'radiogroup';\n\n connectedCallback(): void {\n super.connectedCallback();\n\n this.addEventListener('keydown', this._onKeyDownBound);\n }\n\n disconnectedCallback(): void {\n super.disconnectedCallback();\n\n this.removeEventListener('keydown', this._onKeyDownBound);\n }\n\n @queryAssignedElements({selector: 'vscode-radio'})\n private _radios!: VscodeRadio[];\n\n @state()\n private _focusedRadio = -1;\n\n @state()\n private _checkedRadio = -1;\n\n private _firstContentLoaded = false;\n\n private _uncheckPreviousChecked(prevChecked: number, prevFocused: number) {\n if (prevChecked !== -1) {\n this._radios[prevChecked].checked = false;\n }\n\n if (prevFocused !== -1) {\n this._radios[prevFocused].tabIndex = -1;\n }\n }\n\n private _afterCheck() {\n this._focusedRadio = this._checkedRadio;\n this._radios[this._checkedRadio].checked = true;\n this._radios[this._checkedRadio].tabIndex = 0;\n this._radios[this._checkedRadio].focus();\n }\n\n private _checkPrev() {\n const prevChecked = this._radios.findIndex((r) => r.checked);\n const prevFocused = this._radios.findIndex((r) => r.focused);\n const startPos = prevFocused !== -1 ? prevFocused : prevChecked;\n\n this._uncheckPreviousChecked(prevChecked, prevFocused);\n\n if (startPos === -1) {\n this._checkedRadio = this._radios.length - 1;\n } else if (startPos - 1 >= 0) {\n this._checkedRadio = startPos - 1;\n } else {\n this._checkedRadio = this._radios.length - 1;\n }\n\n this._afterCheck();\n }\n\n private _checkNext() {\n const prevChecked = this._radios.findIndex((r) => r.checked);\n const prevFocused = this._radios.findIndex((r) => r.focused);\n const startPos = prevFocused !== -1 ? prevFocused : prevChecked;\n\n this._uncheckPreviousChecked(prevChecked, prevFocused);\n\n if (startPos === -1) {\n this._checkedRadio = 0;\n } else if (startPos + 1 < this._radios.length) {\n this._checkedRadio = startPos + 1;\n } else {\n this._checkedRadio = 0;\n }\n\n this._afterCheck();\n }\n\n private _onKeyDown(ev: KeyboardEvent) {\n const {key} = ev;\n const listenedKeys = ['ArrowLeft', 'ArrowUp', 'ArrowRight', 'ArrowDown'];\n\n if (listenedKeys.includes(key)) {\n ev.preventDefault();\n }\n\n if (key === 'ArrowRight' || key === 'ArrowDown') {\n this._checkNext();\n }\n\n if (key === 'ArrowLeft' || key === 'ArrowUp') {\n this._checkPrev();\n }\n }\n\n private _onKeyDownBound = this._onKeyDown.bind(this);\n\n private _onChange(ev: CustomEvent) {\n const clickedIndex = this._radios.findIndex((r) => r === ev.target);\n\n if (clickedIndex !== -1) {\n if (this._focusedRadio !== -1) {\n this._radios[this._focusedRadio].tabIndex = -1;\n }\n\n if (this._checkedRadio !== -1 && this._checkedRadio !== clickedIndex) {\n this._radios[this._checkedRadio].checked = false;\n }\n\n this._focusedRadio = clickedIndex;\n this._checkedRadio = clickedIndex;\n this._radios[clickedIndex].tabIndex = 0;\n }\n }\n\n private _onSlotChange() {\n if (!this._firstContentLoaded) {\n const autoFocusedRadio = this._radios.findIndex((r) => r.autofocus);\n\n if (autoFocusedRadio > -1) {\n this._focusedRadio = autoFocusedRadio;\n }\n\n this._firstContentLoaded = true;\n }\n\n this._radios.forEach(\n (r, i) => {\n // if _focusedRadio is not set, the first radio should be focusable\n if (this._focusedRadio > -1) {\n r.tabIndex = i === this._focusedRadio ? 0 : -1\n } else {\n r.tabIndex = i === 0 ? 0 : -1;\n }\n }\n );\n }\n\n render(): TemplateResult {\n return html`\n <div class=\"wrapper\">\n <slot\n @slotchange=${this._onSlotChange}\n @vsc-change=${this._onChange}\n ></slot>\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'vscode-radio-group': VscodeRadioGroup;\n }\n}\n"]}
1
+ {"version":3,"file":"vscode-radio-group.js","sourceRoot":"","sources":["../../src/vscode-radio-group/vscode-radio-group.ts"],"names":[],"mappings":"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","sourcesContent":["import {html, TemplateResult} from 'lit';\nimport {\n customElement,\n property,\n queryAssignedElements,\n state,\n} from 'lit/decorators.js';\nimport {VscElement} from '../includes/VscElement.js';\nimport {VscodeRadio} from '../vscode-radio/index.js';\nimport styles from './vscode-radio-group.styles.js';\n\n/**\n * @fires {Event} change - Dispatched when a child radio button is changed.\n */\n@customElement('vscode-radio-group')\nexport class VscodeRadioGroup extends VscElement {\n static styles = styles;\n\n @property({reflect: true})\n variant: 'horizontal' | 'vertical' = 'horizontal';\n\n /** @internal */\n @property({reflect: true})\n role = 'radiogroup';\n\n connectedCallback(): void {\n super.connectedCallback();\n\n this.addEventListener('keydown', this._onKeyDownBound);\n }\n\n disconnectedCallback(): void {\n super.disconnectedCallback();\n\n this.removeEventListener('keydown', this._onKeyDownBound);\n }\n\n @queryAssignedElements({selector: 'vscode-radio'})\n private _radios!: VscodeRadio[];\n\n @state()\n private _focusedRadio = -1;\n\n @state()\n private _checkedRadio = -1;\n\n private _firstContentLoaded = false;\n\n private _uncheckPreviousChecked(prevChecked: number, prevFocused: number) {\n if (prevChecked !== -1) {\n this._radios[prevChecked].checked = false;\n }\n\n if (prevFocused !== -1) {\n this._radios[prevFocused].tabIndex = -1;\n }\n }\n\n private _afterCheck() {\n this._focusedRadio = this._checkedRadio;\n this._radios[this._checkedRadio].checked = true;\n this._radios[this._checkedRadio].tabIndex = 0;\n this._radios[this._checkedRadio].focus();\n }\n\n private _checkPrev() {\n const prevChecked = this._radios.findIndex((r) => r.checked);\n const prevFocused = this._radios.findIndex((r) => r.focused);\n const startPos = prevFocused !== -1 ? prevFocused : prevChecked;\n\n this._uncheckPreviousChecked(prevChecked, prevFocused);\n\n if (startPos === -1) {\n this._checkedRadio = this._radios.length - 1;\n } else if (startPos - 1 >= 0) {\n this._checkedRadio = startPos - 1;\n } else {\n this._checkedRadio = this._radios.length - 1;\n }\n\n this._afterCheck();\n }\n\n private _checkNext() {\n const prevChecked = this._radios.findIndex((r) => r.checked);\n const prevFocused = this._radios.findIndex((r) => r.focused);\n const startPos = prevFocused !== -1 ? prevFocused : prevChecked;\n\n this._uncheckPreviousChecked(prevChecked, prevFocused);\n\n if (startPos === -1) {\n this._checkedRadio = 0;\n } else if (startPos + 1 < this._radios.length) {\n this._checkedRadio = startPos + 1;\n } else {\n this._checkedRadio = 0;\n }\n\n this._afterCheck();\n }\n\n private _onKeyDown(ev: KeyboardEvent) {\n const {key} = ev;\n const listenedKeys = ['ArrowLeft', 'ArrowUp', 'ArrowRight', 'ArrowDown'];\n\n if (listenedKeys.includes(key)) {\n ev.preventDefault();\n }\n\n if (key === 'ArrowRight' || key === 'ArrowDown') {\n this._checkNext();\n }\n\n if (key === 'ArrowLeft' || key === 'ArrowUp') {\n this._checkPrev();\n }\n }\n\n private _onKeyDownBound = this._onKeyDown.bind(this);\n\n private _onChange(ev: CustomEvent) {\n const clickedIndex = this._radios.findIndex((r) => r === ev.target);\n\n if (clickedIndex !== -1) {\n if (this._focusedRadio !== -1) {\n this._radios[this._focusedRadio].tabIndex = -1;\n }\n\n if (this._checkedRadio !== -1 && this._checkedRadio !== clickedIndex) {\n this._radios[this._checkedRadio].checked = false;\n }\n\n this._focusedRadio = clickedIndex;\n this._checkedRadio = clickedIndex;\n this._radios[clickedIndex].tabIndex = 0;\n }\n }\n\n private _onSlotChange() {\n if (!this._firstContentLoaded) {\n const autoFocusedRadio = this._radios.findIndex((r) => r.autofocus);\n\n if (autoFocusedRadio > -1) {\n this._focusedRadio = autoFocusedRadio;\n }\n\n this._firstContentLoaded = true;\n }\n\n this._radios.forEach((r, i) => {\n // if _focusedRadio is not set, the first radio should be focusable\n if (this._focusedRadio > -1) {\n r.tabIndex = i === this._focusedRadio ? 0 : -1;\n } else {\n r.tabIndex = i === 0 ? 0 : -1;\n }\n });\n }\n\n render(): TemplateResult {\n return html`\n <div class=\"wrapper\">\n <slot\n @slotchange=${this._onSlotChange}\n @vsc-change=${this._onChange}\n ></slot>\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'vscode-radio-group': VscodeRadioGroup;\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"vscode-scrollable.d.ts","sourceRoot":"","sources":["../../src/vscode-scrollable/vscode-scrollable.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,cAAc,EAAC,MAAM,KAAK,CAAC;AAUlD,OAAO,EAAC,UAAU,EAAC,MAAM,2BAA2B,CAAC;AAGrD;;;;;;GAMG;AACH,qBACa,gBAAiB,SAAQ,UAAU;IAC9C,MAAM,CAAC,MAAM,+BAAU;IAGvB,MAAM,UAAQ;IAGd,QAAQ,UAAS;IAEjB,IACI,SAAS,CAAC,GAAG,EAAE,MAAM,EAExB;IACD,IAAI,SAAS,IAAI,MAAM,CAMtB;IAED,IACI,SAAS,IAAI,MAAM,CAMtB;IAGD,OAAO,CAAC,WAAW,CAAS;IAG5B,OAAO,CAAC,YAAY,CAAK;IAGzB,OAAO,CAAC,OAAO,CAAK;IAGpB,OAAO,CAAC,aAAa,CAAS;IAG9B,OAAO,CAAC,UAAU,CAAS;IAG3B,OAAO,CAAC,YAAY,CAAS;IAG7B,OAAO,CAAC,eAAe,CAAkB;IAGzC,OAAO,CAAC,mBAAmB,CAAkB;IAG7C,OAAO,CAAC,oBAAoB,CAAkB;IAG9C,OAAO,CAAC,iBAAiB,CAAY;IAErC,OAAO,CAAC,mBAAmB,CAAkB;IAC7C,OAAO,CAAC,sBAAsB,CAAkB;IAChD,OAAO,CAAC,kBAAkB,CAAK;IAC/B,OAAO,CAAC,YAAY,CAAK;IACzB,OAAO,CAAC,iBAAiB,CAAQ;IACjC,OAAO,CAAC,gBAAgB,CAAK;IAE7B,iBAAiB,IAAI,IAAI;IAyBzB,oBAAoB,IAAI,IAAI;IAY5B,OAAO,CAAC,uBAAuB,CAE7B;IAEF,OAAO,CAAC,gBAAgB;IAcxB,OAAO,CAAC,UAAU;IAqBlB,OAAO,CAAC,aAAa;IAIrB,OAAO,CAAC,uBAAuB;IAa/B,OAAO,CAAC,uBAAuB;IAqB/B,OAAO,CAAC,4BAA4B,CACM;IAE1C,OAAO,CAAC,qBAAqB;IAoB7B,OAAO,CAAC,0BAA0B,CAAyC;IAE3E,OAAO,CAAC,4BAA4B;IAcpC,OAAO,CAAC,qBAAqB;IAK7B,OAAO,CAAC,0BAA0B,CAAyC;IAE3E,OAAO,CAAC,oBAAoB;IAO5B,OAAO,CAAC,yBAAyB,CAAwC;IAEzE,MAAM,IAAI,cAAc;CAyCzB;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,mBAAmB,EAAE,gBAAgB,CAAC;KACvC;CACF"}
1
+ {"version":3,"file":"vscode-scrollable.d.ts","sourceRoot":"","sources":["../../src/vscode-scrollable/vscode-scrollable.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,cAAc,EAAC,MAAM,KAAK,CAAC;AAUlD,OAAO,EAAC,UAAU,EAAC,MAAM,2BAA2B,CAAC;AAGrD;;;;;;GAMG;AACH,qBACa,gBAAiB,SAAQ,UAAU;IAC9C,MAAM,CAAC,MAAM,+BAAU;IAGvB,MAAM,UAAQ;IAGd,QAAQ,UAAS;IAEjB,IACI,SAAS,CAAC,GAAG,EAAE,MAAM,EAExB;IACD,IAAI,SAAS,IAAI,MAAM,CAMtB;IAED,IACI,SAAS,IAAI,MAAM,CAMtB;IAGD,OAAO,CAAC,WAAW,CAAS;IAG5B,OAAO,CAAC,YAAY,CAAK;IAGzB,OAAO,CAAC,OAAO,CAAK;IAGpB,OAAO,CAAC,aAAa,CAAS;IAG9B,OAAO,CAAC,UAAU,CAAS;IAG3B,OAAO,CAAC,YAAY,CAAS;IAG7B,OAAO,CAAC,eAAe,CAAkB;IAGzC,OAAO,CAAC,mBAAmB,CAAkB;IAG7C,OAAO,CAAC,oBAAoB,CAAkB;IAG9C,OAAO,CAAC,iBAAiB,CAAY;IAErC,OAAO,CAAC,mBAAmB,CAAkB;IAC7C,OAAO,CAAC,sBAAsB,CAAkB;IAChD,OAAO,CAAC,kBAAkB,CAAK;IAC/B,OAAO,CAAC,YAAY,CAAK;IACzB,OAAO,CAAC,iBAAiB,CAAQ;IACjC,OAAO,CAAC,gBAAgB,CAAK;IAE7B,iBAAiB,IAAI,IAAI;IAuBzB,oBAAoB,IAAI,IAAI;IAY5B,OAAO,CAAC,uBAAuB,CAE7B;IAEF,OAAO,CAAC,gBAAgB;IAcxB,OAAO,CAAC,UAAU;IAqBlB,OAAO,CAAC,aAAa;IAIrB,OAAO,CAAC,uBAAuB;IAa/B,OAAO,CAAC,uBAAuB;IAqB/B,OAAO,CAAC,4BAA4B,CACM;IAE1C,OAAO,CAAC,qBAAqB;IAoB7B,OAAO,CAAC,0BAA0B,CAAyC;IAE3E,OAAO,CAAC,4BAA4B;IAcpC,OAAO,CAAC,qBAAqB;IAK7B,OAAO,CAAC,0BAA0B,CAAyC;IAE3E,OAAO,CAAC,oBAAoB;IAO5B,OAAO,CAAC,yBAAyB,CAAwC;IAEzE,MAAM,IAAI,cAAc;CAyCzB;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,mBAAmB,EAAE,gBAAgB,CAAC;KACvC;CACF"}