All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog
- Fixed SingleSelect value not updated in the form data.
- Fixed error in non-browser environments caused by
adoptedStyleSheets.
- Table: The column resizing algorithm has been rewritten. Columns can now push each other.
- Button, SingleSelect, MultiSelect, Textfield, Textarea: Use 4px border radius.
- SingleSelect, MultiSelect: Updated dropdown styles to align with the VSCode UI.
- Fixed import paths to prevent bundler error.
- Prevents the select dropdown from closing unless the component actually moves.
- Set the default CSS display value of Collapsible to
block.
- Added
minStartandminEndproperty to SplitLayout. - Added
blockproperty to Button. - Added new slots to TreeItem:
description,actions,decoration.
- Declared
@vscode/codiconsas a peer dependency. This allows consumers to use their own version of Codicons.
- Fixed the
checkedstate of the default selected Radio. - Fixed RadioGroup behavior in the shadow DOM.
- Fixed an issue where selected option labels were shown in MultiSelect.
- Fixed selecting items with the Meta key on macOS in the Tree component.
- Fixed an issue where the table body prevented page scrolling.
- Fixed an issue in SingleSelect and MultiSelect where reading selectedIndex threw an error after options were removed programmatically.
- Added ProgressBar component
- Fixed issue where resizing Table threw an error if no rows were available.
- Added
basecss part to Button. - Added
content-beforeandcontent-afterslot to Button. - Added
toggleproperty to Checkbox.
- The dropdown logic in SingleSelect and MultiSelect has been rewritten using the Popover API. This prevents issues such as an element overlapping the dropdown or its overflowing parts being clipped (e.g., in the Collapsible component).
- Added
alwaysShowHeaderActionsproperty to Collapsible.
- Fixed invisible option labels in MultiSelect.
- The Tree component has been completely rewritten. The most significant change is that the tree structure can now be described using plain HTML markup, instead of the previously complex and rigid configuration object. See the docs for details.
- The
:hoststyles have been minimized to reduce CSS leakage into the component. - Deprecated APIs has been removed.
- Added fallback styles for all components.
- Added
headingproperty to Collapsible.
- Made Tabs accessible.
- Fixed clipped focus outline in the ButtonGroup.
- Prevent drop shadow from appearing unnecessarily in Scrollable.
- Deprecated the
titleproperty on Scrollable.
- Added
alwaysVisible,scrollSensitivity,fastScrollSensitivityandminThumbSizeproperty to Scrollable. - Scrollable now dispatches the
vsc-scrollable-scrollevent. - Added nicer checkboxes to MultiSelect.
- Added
selectAll()andselectNone()methods to MultiSelect. - Added a themed scrollbar to the SingleSelect and MultiSelect.
- ButtonGroup can now shrink inside a flex container.
- SingleSelect and MultiSelect accessibility has been improved.
- MultiSelect: The badge displaying the number of selected options is now more compact.
- The 'Select all', 'Select none', and 'Accept' buttons have been removed from the MultiSelect dropdown for improved accessibility and better maintainability.
- Label can now be associated with SingleSelect and MultiSelect.
- Reverted the original focus style of Button, as VSCode uses the
:focusstate instead offocus-active.
- Added fallback styles to SplitLayout.
- Added ButtonGroup component
- The focus outline is only visible when the Button is focused using the keyboard. This behavior mimics the UI behavior of VSCode.
- Table: Fixed resizing scrollable part of the table when table is resized.
- SingleSelect, MultiSelect: Check the validity state when
requiredattribute is changed. - SingleSelect: Fixed a bug where the current value was not displayed in combobox mode after the input content was cleared.
- Many small bugfixes in the SingleSelect and MultiSelect.
- Added ToolbarButton component.
- Added the
creatableproperty to SingleSelect and MultiSelect, allowing users to create new options in combobox mode.
- Button: Fixed the button border style.
- SplitLayout: Prevented the handle position from resetting when the
splitproperty is changed to the same value as before.
- Added fallback styles to Textarea, Collapsible, Checkbox, Radio, SingleSelect, MultiSelect, ContextMenu, Icon, Divider, ProgressRing, Scrollable.
- Added support for handling multiple versions of registered custom elements. If a tag name is already registered in the CustomElementRegistry, the browser error is prevented, and a warning is displayed. This warning can be suppressed.
- Table: TableHeader and TableBody now automatically move into their appropriate slots.
- SingleSelect, MultiSelect: Prevent browser suggestions in single and multi-selects in combobox mode.
- SingleSelect, MultiSelect: Fixed the error when an incorrect value is typed.
- Table: The style attributes (
bordered,bordered-columns,bordered-rows,zebra,zebra-odd) could not be used in React Elements.
- Badge: Added
tab-header-countervariant. - Added fallback styles to Badge, Button and Textfield. These components still look proper even if the theme variables provided by VSCode are not present. In such cases, the components appear with the default theme (Dark Modern).
- All components are made CSP compliant. The affected components are: Icon, Scrollable, TextArea, SplitLayout, Tree, Checkbox, Radio, FormHelper.
- TextField: Fixed the synchronization of the inner input value.
- ContextMenu: Fixed mouse over styles. Fixed border styles in the Solarized Light theme.
- Icon: Show warning in the dev console when codicon css is missing.
- Table: The empty component threw an error when it was deleted from the document.
- SingleSelect, MultiSelect: Fix selected state when opened by default.
- SingleSelect, MultiSelect: Added the ability to update the state of an already initialized component by modifying its child options.
- Checkbox: Fix the border color in the focused state.
- SingleSelect, MultiSelect: Added
openproperty. - Button: Emit
clickevent on enter or space key down.
- Divider: Make component color visible in all themes.
- SingleSelect: Add the ability to set an option's value to empty.
- SingleSelect: If no option is selected, the first one should be selected by default.
- Add support for two-way binding with form controls in Vue.
- ContextMenu: Added
preventCloseproperty.
- ContextMenu:
showattribute was not synchronized correctly.
- SplitLayout: The fixed pane size was set to zero initially.
- SplitLayout: The mouse-over state was not reset when the button was released outside the component.
- SplitLayout: Added
handlePositionproperty to adjust the handle position programmatically. - SplitLayout: Added
fixedPaneproperty. When the parent element is resized, the panes adjust proportionally. This parameter allows you to set one of the panes to a fixed size so its dimensions won’t change during resizing. - SplitLayout: Added
resetHandlePosition()method to reset the handle position to the default value. - SplitLayout: Dispatch
vsc-split-layout-changeevent when a panel is resized.
- SingleSelect, MultiSelect: Fix the widget height when it is empty.
- MultiSelect: The value of
selectedIndexeswas not correctly updated. - Tabs: Active tab highlights previously showed as inactive.
- SplitLayout: Reinitialize panes when the split layout orientation changes.
- Use fully specified import paths for better compatibility. See #213
- Checkbox: Bubbling change event in the same way as the native checkbox.
- Checkbox: Click event dispatched twice.
- SingleSelect, MultiSelect: The option description was not always visible on mouseover.
- SingleSelect, MultiSelect: Fixed the unfocusable element error when validation is triggered.
- Button: Add the ability to modify the icon animation parameters.
- Button: Align and arrange any content added through the main slot.
- SingleSelect, MultiSelect: Add the ability to control the position of the select dropdown.
- Collapsible: Add
bodycss part. - Collapsible: Dispatch a toggle event when opening or closing.
- Textfield: Revalidate the element when the value is changed.
- Checkbox: Revalidate the element when
requiredorcheckedproperties are changed. - Badge: Reflect
variantproperty.
- SingleSelect: Fix error throwing when non-existent option is selected.
- SingleSelect: Set initial form value before the first user interaction.
- SingleSelect: The option value was not registered when it was set as a property.
- SingleSelect: The option selected state was not registered when it was set as a property.
- Table: Fix (#161)
- Added Divider component
- Added ProgressRing component
- SingleSelect, MultiSelect: Highlight matches in combobox mode when the list is filtered
- SingleSelect, MultiSelect: Show dropdown on input click.
- SingleSelect, MultiSelect: The focus is delegated to the inner input in the combobox mode.
- SingleSelect, MultiSelect: components were be selectable in disabled mode.
- Upgrade codicons to 0.0.36
- Tree: Added tooltip property to the item configuration.
- Tree: Added customizable CSS part regions
- Tree: Added
deselectAll()andgetItemByPath()helper methods.
- Tree: Fixed the empty payload of the
vsc-tree-selectevent.
- The form controls fully participate in the standard HTML forms. The affected components are the following: Button, Single Select, Multi Select, Textfield, Textarea, Radio, Checkbox.
- Custom events are exported as TypeScript types. Check the react-example repository for examples.
- SplitLayout: Added handle size property.
- Values from the options was not registered in the Select when the component is connected to the DOM.
- Reflect
nameproperty of the Input component similar to the native textfield. - Textarea, Textfield:
minlengthandmaxlengthproperty is renamed tominLengthandmaxLength. This change adheres to the naming convention of the native<textarea>element. The attribute names are not changed. - Textarea, Textfield: Dispatching native
inputandchangeevents. - Radio, Checkbox, SingleSelect, MultiSelect: Dispatching native
changeevent - Collapsible: Displaying the main content using the default slot instead of the named
bodyslot. - Split Layout:
initial-posis renamed toinitial-handle-position. - ContextMenu:
vsc-selectevent is renamed tovsc-context-menu-select. - Tabs:
vsc-selectevent is renamed tovsc-tabs-select. - Tree:
vsc-run-actionevent is renamed tovsc-tree-action. - Tree:
vsc-selectevent is renamed tovsc-tree-select. - Lit updated to 3.x
- Textarea, Textfield:
vsc-inputandvsc-changeevents are deprecated. - Button:
vsc-clickevent is deprecated. - Checkbox:
vsc-changeevent is deprecated. - ContextMenu:
vsc-selectis deprecated. - FormContainer:
dataproperty is deprecated. - MultiSelect, SingleSelect:
vsc-changeevent is deprecated.
- Deprecated components were removed. The affected components are: Inputbox, FormContainer, FormControl, FormDescription, FormItem, FormLabel
- Added a React demo app to the repository.
- Added
autofocusattribute to Textarea and Textfield - All boolean properties are reflected. Read the Open Web Components documentation for more details.
- Added
indeterminateattribute to Checkbox.
- Added
invalidboolean property and attribute to SingleSelect and MultiSelect component.
- Added
decorationsslot to the Collapsible header. Decorations are always visible even if the collapsible is collapsed. - Added
descriptionproperty to Collapsible. - Added optional indent guides to Tree
- Added
descriptionproperty to Tree items - Added
iconUrlsproperty to the tree item data to set custom icons in the Tree. - Added Tree actions. See the documentation for the examples.
- Added Tree decorations. See the documentation for the examples.
- In the Tree item configuration, the
iconsproperty value can also be a boolean. If it's true, the default theme icons are visible:filefor the leaf items,folderfor the branch items,folder-openedfor the opened branch items. See the Codicon project for the icon references. If it's false, the icons won't be visible at all. - Tree The colors have been refined to closely align with the style of VSCode.
- Inactivate interactive elements during scroll in Scrollable
- The color of the selected item focus border has been refined in Tree
- Preventing overflowing long texts in the Select description. (Fix #61)
- Radio button behaved as a checkbox in the RadioGroup. (Fix #59)
Sometimes VSCode theme variables are renamed or removed by the VSCode authors. When this happens the appearance of the components will change unpredictably. To prevent this, every component got a fallback style. The components will look "good" even if no theme variables are available.
- Button and ContextMenu styles was updated to follow VSCode changes.
- Customizable header background color and tinted row background color instead of the hard-coded ones in Table.
- Textarea: The default display is
inline-block, the default size is 320 x 40. It is automatically resized whenrowsorcolsattributes are set. - Textarea: Follow the source control input box styles of VSCode more closely:
- Change the cursor to hand when it is above the scrollbar.
- Add an unobtrusive drop shadow when the text is scrolled.
- Add active state to the scrollbar.
- Textarea: Fixed the ugly resize handler when the scrollbar is visible.
- Textfield: Customize the file input button styles.
- Add
colsandrowsattributes to Textarea by @chrjorgensen
- Set default color for Textfield.
- Textfield and Textarea values were not collected in the FormContainer form data.
- The value of the
valueproperty was not syncronized properly with the value of the inner form widget in Textfield and Textarea. - Fix top-margin of Textfield and Textarea in FormGroup when its
variantis "settings-group".
- Allow file type in Textfield
- Fixed whitespace in Label when the asterisk symbol is visible
- Label Added
requiredattribute
- SingleSelect, MultiSelect Minor CSS changes to better mimic VSCode styles
- Adapted latest VSCode design changes on the ContextMenu and the InputBox.
- Text inputs could not be edited in tab panels.
- Attribute names have been standardized. From now every attribute name uses the kebab-case format.
selectedIndexattribute was renamed toselected-indexin the Tabs component.iconAfterattribute was renamed toicon-afterin the Button component.selectedIndexesattribute is removed from the MultiSelect component. It still accessible as a property.scrollPosattribute was renamed toscroll-posin the Scrollable component.scrollMaxattribute was renamed toscroll-maxin the Scrollable component.selectedIndexattribute was renamed toselected-indexin the SingleSelect component.resetOnDblClickattribute was renamed toreset-on-dbl-clickin the SplitLayout component.columnLabelattribute was renamed tocolumn-labelin the TableCell component.- The Tabs component markup has been changed. See the documentation page for examples.
- Inputbox has been deprecated. Use the Textarea or Textfield instead.
- Added Textfield and Textarea components.
- Lit upgraded to 2.4.x.
- Added keyboard navigation to ContextMenu.
- Adapted the latest VSCode button styles (rounded corner).
- Added
aria-checkedattribute to the radio buttons. - Icon component accessibility improvements.
- Tabs component is fully accessible.
- Radio and Checkbox are accessible.
- TabHeader and TabPanel were added to interoperate with Tabs.
addonsslot has been added to the Tabs toolbar.content-beforeandcontent-afterslots have been added to the tab headers.- Label automatically sets the label for radios, checkboxes, and text inputs.
- Fixed the active state bug in the ContextMenu
- Fixed the Select height
- Tabs (Fix #32) Select the tab when a slotted element is clicked in the tab header
- Added scrollPos and scrollMax property to Scrollable
- Select: allow disabled single select option (thx ununian)
- Button: Fixed-width button text aligned to center
- Select: Removed the extra whitespaces from the value
- Select: css property to set the dropdown z-index to fix the overlapping issues
- Select: set multi-select value through prop
- Scrollable: The content covered the scrollbar if its position relative or absolute
- Scrollable: The scrollbar will be resized when the content height change
- The label didn't connect to the input widget in the shadow DOM.
- Added
@attrjsdoc tag to the "name" attribute to prevent the "unknown attribute" warnings in the supported IDEs.
- Tree: focused list item outline offset
- Updated icon colors as in VSCode
- Icon:
- added proper theme variables
- added action icon pressed style
- added focus border style
- Collapsible:
- keyboard support
- icon visibility mimics the VSCode behavior: it is visible when the panel is open
- Table: added responsive mode
- SplitLayout: added hover color
- Inputbox: Type definition fine tuning
- Flexible table columns
- Small documentation changes in the Inputbox which provides better code completion
- Added Table component
- Added action-icon mode to the Icon
- Floating scrollbar in the Scrollable component
- Added new components: FormContainer, FormGroup, FromHelper, Label, Radio, RadioGrop, CheckboxGroup.
- Theme variable names are readjusted in the Tree, SingleSelect and MultiSelect components.
- Button outline styles has been restored.
- The following components will be removed: FormControl, FormDescription, FormItem, FormLabel. Use the new form components instead.
- Fix #16 SingleSelect isn't updated by value and selectedIndex
- Added keyboard navigation to the Tree component.
- SingleSelect and MultiSelect import path have been simplified.
- Combobox mode has been added to the SingleSelect and MultiSelect components.
- New attributes for InputBox: min, minlength, max, maxlength, multiple, readonly, step.
- Changelog was introduced.
- Select component has been split into two different component: SingleSelect and MultiSelect.
- Multiline Inputbox resizing behavior has been fixed
- Option hover color