@vscode-elements/elements 2.3.1 → 2.3.2-pre.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -1
- package/custom-elements.json +1087 -665
- package/dist/bundled.js +255 -73
- package/dist/includes/VscElement.js +1 -1
- package/dist/includes/VscElement.js.map +1 -1
- package/dist/includes/vscode-select/OptionListController.d.ts +1 -1
- package/dist/includes/vscode-select/OptionListController.d.ts.map +1 -1
- package/dist/includes/vscode-select/OptionListController.js +1 -1
- package/dist/includes/vscode-select/OptionListController.js.map +1 -1
- package/dist/includes/vscode-select/vscode-select-base.d.ts +2 -0
- package/dist/includes/vscode-select/vscode-select-base.d.ts.map +1 -1
- package/dist/includes/vscode-select/vscode-select-base.js +9 -1
- package/dist/includes/vscode-select/vscode-select-base.js.map +1 -1
- package/dist/vscode-button/vscode-button.d.ts +5 -0
- package/dist/vscode-button/vscode-button.d.ts.map +1 -1
- package/dist/vscode-button/vscode-button.js +8 -0
- package/dist/vscode-button/vscode-button.js.map +1 -1
- package/dist/vscode-button/vscode-button.styles.d.ts.map +1 -1
- package/dist/vscode-button/vscode-button.styles.js +11 -0
- package/dist/vscode-button/vscode-button.styles.js.map +1 -1
- package/dist/vscode-collapsible/vscode-collapsible.d.ts +1 -0
- package/dist/vscode-collapsible/vscode-collapsible.d.ts.map +1 -1
- package/dist/vscode-collapsible/vscode-collapsible.js +4 -1
- package/dist/vscode-collapsible/vscode-collapsible.js.map +1 -1
- package/dist/vscode-collapsible/vscode-collapsible.styles.d.ts.map +1 -1
- package/dist/vscode-collapsible/vscode-collapsible.styles.js +4 -0
- package/dist/vscode-collapsible/vscode-collapsible.styles.js.map +1 -1
- package/dist/vscode-split-layout/vscode-split-layout.d.ts +18 -0
- package/dist/vscode-split-layout/vscode-split-layout.d.ts.map +1 -1
- package/dist/vscode-split-layout/vscode-split-layout.js +87 -14
- package/dist/vscode-split-layout/vscode-split-layout.js.map +1 -1
- package/dist/vscode-tree/tree-context.d.ts +1 -0
- package/dist/vscode-tree/tree-context.d.ts.map +1 -1
- package/dist/vscode-tree/tree-context.js.map +1 -1
- package/dist/vscode-tree/vscode-tree.d.ts +1 -1
- package/dist/vscode-tree/vscode-tree.d.ts.map +1 -1
- package/dist/vscode-tree/vscode-tree.js +4 -3
- package/dist/vscode-tree/vscode-tree.js.map +1 -1
- package/dist/vscode-tree/vscode-tree.styles.js +1 -1
- package/dist/vscode-tree/vscode-tree.styles.js.map +1 -1
- package/dist/vscode-tree-item/vscode-tree-item.d.ts +28 -1
- package/dist/vscode-tree-item/vscode-tree-item.d.ts.map +1 -1
- package/dist/vscode-tree-item/vscode-tree-item.js +257 -22
- package/dist/vscode-tree-item/vscode-tree-item.js.map +1 -1
- package/dist/vscode-tree-item/vscode-tree-item.styles.d.ts.map +1 -1
- package/dist/vscode-tree-item/vscode-tree-item.styles.js +147 -6
- package/dist/vscode-tree-item/vscode-tree-item.styles.js.map +1 -1
- package/package.json +12 -8
- package/vscode.css-custom-data.json +9 -9
- package/vscode.html-custom-data.json +50 -35
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vscode-tree.js","sourceRoot":"","sources":["../../src/vscode-tree/vscode-tree.ts"],"names":[],"mappings":"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","sourcesContent":["import {PropertyValues, TemplateResult, html} from 'lit';\nimport {provide} from '@lit/context';\nimport {property, queryAssignedElements} from 'lit/decorators.js';\nimport {customElement, VscElement} from '../includes/VscElement';\nimport type {VscodeTreeItem} from '../vscode-tree-item';\nimport styles from './vscode-tree.styles';\nimport {\n ConfigContext,\n configContext,\n treeContext,\n type TreeContext,\n} from './tree-context';\nimport {\n findNextItem,\n findPrevItem,\n findParentItem,\n initPathTrackerProps,\n} from './helpers.js';\n\nexport type VscTreeSelectEvent = CustomEvent<{selectedItems: VscodeTreeItem[]}>;\n\nexport const ExpandMode = {\n singleClick: 'singleClick',\n doubleClick: 'doubleClick',\n} as const;\n\nexport type ExpandMode = (typeof ExpandMode)[keyof typeof ExpandMode];\n\nexport const IndentGuides = {\n none: 'none',\n onHover: 'onHover',\n always: 'always',\n} as const;\n\nexport type IndentGuideDisplay =\n (typeof IndentGuides)[keyof typeof IndentGuides];\n\ntype ListenedKey =\n | 'ArrowDown'\n | 'ArrowUp'\n | 'ArrowLeft'\n | 'ArrowRight'\n | 'Enter'\n | 'Escape'\n | 'Shift'\n | ' ';\n\nconst listenedKeys: ListenedKey[] = [\n ' ',\n 'ArrowDown',\n 'ArrowUp',\n 'ArrowLeft',\n 'ArrowRight',\n 'Enter',\n 'Escape',\n 'Shift',\n];\n\n/**\n * @tag vscode-tree\n *\n * @cssprop [--vscode-font-family=sans-serif]\n * @cssprop [--vscode-font-size=13px]\n * @cssprop [--vscode-font-weight=normal]\n * @cssprop [--vscode-foreground=#cccccc]\n * @cssprop [--vscode-icon-foreground=#cccccc]\n * @cssprop [--vscode-list-focusAndSelectionOutline=#0078d4]\n * @cssprop [--vscode-list-focusOutline=#0078d4]\n * @cssprop [--vscode-list-hoverBackground=#2a2d2e]\n * @cssprop [--vscode-list-hoverForeground=#cccccc]\n * @cssprop [--vscode-tree-inactiveIndentGuidesStroke=rgba(88, 88, 88, 0.4)]\n * @cssprop [--vscode-tree-indentGuidesStroke=#585858]\n */\n@customElement('vscode-tree')\nexport class VscodeTree extends VscElement {\n static override styles = styles;\n\n //#region properties\n\n /**\n * Controls how tree folders are expanded when clicked. This property is designed to use\n * the `workbench.tree.expandMode` setting.\n *\n * Valid options are available as constants.\n *\n * ```javascript\n * import {ExpandMode} from '@vscode-elements/elements/dist/vscode-tree/vscode-tree.js';\n *\n * document.querySelector('vscode-tree').expandMode = ExpandMode.singleClick;\n * ```\n *\n * @type {'singleClick' | 'doubleClick'}\n */\n @property({type: String, attribute: 'expand-mode'})\n expandMode: ExpandMode = 'singleClick';\n\n /**\n * Although arrows are always visible in the Tree component by default in VSCode, some icon sets\n * (e.g., Material Icon Theme) allow disabling them in the file explorer view. This flag makes it\n * possible to mimic that behavior.\n */\n @property({type: Boolean, reflect: true, attribute: 'hide-arrows'})\n hideArrows: boolean = false;\n\n /**\n * Controls the indentation in pixels. This property is designed to use the\n * `workbench.tree.indent` setting.\n */\n @property({type: Number, reflect: true})\n indent: number = 8;\n\n /**\n * Controls whether the tree should render indent guides. This property is\n * designed to use the `workbench.tree.renderIndentGuides` setting.\n *\n * Valid options are available as constants.\n *\n * ```javascript\n * import {IndentGuides} from '@vscode-elements/elements/dist/vscode-tree/vscode-tree.js';\n *\n * document.querySelector('vscode-tree').expandMode = IndentGuides.onHover;\n * ```\n *\n * @type {'none' | 'onHover' | 'always'}\n */\n @property({\n type: String,\n attribute: 'indent-guides',\n useDefault: true,\n reflect: true,\n })\n indentGuides: IndentGuideDisplay = 'onHover';\n\n /**\n * Allows selecting multiple items.\n */\n @property({type: Boolean, reflect: true, attribute: 'multi-select'})\n multiSelect: boolean = false;\n\n //#endregion\n\n //#region private variables\n\n @provide({context: treeContext})\n private _treeContextState: TreeContext = {\n isShiftPressed: false,\n activeItem: null,\n selectedItems: new Set(),\n allItems: null,\n itemListUpToDate: false,\n focusedItem: null,\n prevFocusedItem: null,\n hasBranchItem: false,\n rootElement: this,\n highlightedItems: new Set(),\n highlightIndentGuides: () => {\n this._highlightIndentGuides();\n },\n emitSelectEvent: () => {\n this._emitSelectEvent();\n },\n };\n\n @provide({context: configContext})\n private _configContext: ConfigContext = {\n hideArrows: this.hideArrows,\n expandMode: this.expandMode,\n indent: this.indent,\n indentGuides: this.indentGuides,\n multiSelect: this.multiSelect,\n };\n\n @queryAssignedElements({selector: 'vscode-tree-item'})\n private _assignedTreeItems!: VscodeTreeItem[];\n\n //#endregion\n\n //#region lifecycle methods\n\n constructor() {\n super();\n\n this.addEventListener('keyup', this._handleComponentKeyUp);\n this.addEventListener('keydown', this._handleComponentKeyDown);\n }\n\n override connectedCallback(): void {\n super.connectedCallback();\n\n this.role = 'tree';\n }\n\n protected override willUpdate(changedProperties: PropertyValues<this>): void {\n this._updateConfigContext(changedProperties);\n\n if (changedProperties.has('multiSelect')) {\n this.ariaMultiSelectable = this.multiSelect ? 'true' : 'false';\n }\n }\n\n //#endregion\n\n //#region public methods\n\n /**\n * Expands all folders.\n */\n expandAll() {\n const children = this.querySelectorAll<VscodeTreeItem>('vscode-tree-item');\n\n children.forEach((item) => {\n if (item.branch) {\n item.open = true;\n }\n });\n }\n\n /**\n * Collapses all folders.\n */\n collapseAll() {\n const children = this.querySelectorAll<VscodeTreeItem>('vscode-tree-item');\n\n children.forEach((item) => {\n if (item.branch) {\n item.open = false;\n }\n });\n }\n\n /**\n * @internal\n * Updates `hasBranchItem` property in the context state in order to removing\n * extra padding before the leaf elements, if it is required.\n */\n updateHasBranchItemFlag() {\n const hasBranchItem = this._assignedTreeItems.some((li) => li.branch);\n this._treeContextState = {...this._treeContextState, hasBranchItem};\n }\n\n //#endregion\n\n //#region private methods\n\n private _emitSelectEvent() {\n const ev = new CustomEvent('vsc-tree-select', {\n detail: Array.from(this._treeContextState.selectedItems),\n });\n\n this.dispatchEvent(ev);\n }\n\n private _highlightIndentGuideOfItem(item: VscodeTreeItem) {\n if (item.branch && item.open) {\n item.highlightedGuides = true;\n this._treeContextState.highlightedItems?.add(item);\n } else {\n const parent = findParentItem(item);\n\n if (parent) {\n parent.highlightedGuides = true;\n this._treeContextState.highlightedItems?.add(parent);\n }\n }\n }\n\n private _highlightIndentGuides() {\n if (this.indentGuides === IndentGuides.none) {\n return;\n }\n\n this._treeContextState.highlightedItems?.forEach(\n (i) => (i.highlightedGuides = false)\n );\n this._treeContextState.highlightedItems?.clear();\n\n if (this._treeContextState.activeItem) {\n this._highlightIndentGuideOfItem(this._treeContextState.activeItem);\n }\n\n this._treeContextState.selectedItems.forEach((item) => {\n this._highlightIndentGuideOfItem(item);\n });\n }\n\n private _updateConfigContext(changedProperties: PropertyValues) {\n const {hideArrows, expandMode, indent, indentGuides, multiSelect} = this;\n\n if (changedProperties.has('hideArrows')) {\n this._configContext = {...this._configContext, hideArrows};\n }\n\n if (changedProperties.has('expandMode')) {\n this._configContext = {...this._configContext, expandMode};\n }\n\n if (changedProperties.has('indent')) {\n this._configContext = {...this._configContext, indent};\n }\n\n if (changedProperties.has('indentGuides')) {\n this._configContext = {...this._configContext, indentGuides};\n }\n\n if (changedProperties.has('multiSelect')) {\n this._configContext = {...this._configContext, multiSelect};\n }\n }\n\n private _focusItem(item: VscodeTreeItem) {\n item.active = true;\n\n item.updateComplete.then(() => {\n item.focus();\n this._highlightIndentGuides();\n });\n }\n\n private _focusPrevItem() {\n if (this._treeContextState.focusedItem) {\n const item = findPrevItem(this._treeContextState.focusedItem);\n\n if (item) {\n this._focusItem(item);\n\n if (this._treeContextState.isShiftPressed && this.multiSelect) {\n item.selected = !item.selected;\n this._emitSelectEvent();\n }\n }\n }\n }\n\n private _focusNextItem() {\n if (this._treeContextState.focusedItem) {\n const item = findNextItem(this._treeContextState.focusedItem);\n\n if (item) {\n this._focusItem(item);\n\n if (this._treeContextState.isShiftPressed && this.multiSelect) {\n item.selected = !item.selected;\n this._emitSelectEvent();\n }\n }\n }\n }\n\n //#endregion\n\n //#region event handlers\n\n private _handleArrowRightPress() {\n if (!this._treeContextState.focusedItem) {\n return;\n }\n\n const {focusedItem} = this._treeContextState;\n\n if (focusedItem.branch) {\n if (focusedItem.open) {\n this._focusNextItem();\n } else {\n focusedItem.open = true;\n }\n }\n }\n\n private _handleArrowLeftPress(ev: KeyboardEvent) {\n if (ev.ctrlKey) {\n this.collapseAll();\n return;\n }\n\n if (!this._treeContextState.focusedItem) {\n return;\n }\n\n const {focusedItem} = this._treeContextState;\n const parent = findParentItem(focusedItem);\n\n if (!focusedItem.branch) {\n if (parent && parent.branch) {\n this._focusItem(parent);\n }\n } else {\n if (focusedItem.open) {\n focusedItem.open = false;\n } else {\n if (parent && parent.branch) {\n this._focusItem(parent);\n }\n }\n }\n }\n\n private _handleArrowDownPress() {\n if (this._treeContextState.focusedItem) {\n this._focusNextItem();\n } else {\n this._focusItem(this._assignedTreeItems[0]);\n }\n }\n\n private _handleArrowUpPress() {\n if (this._treeContextState.focusedItem) {\n this._focusPrevItem();\n } else {\n this._focusItem(this._assignedTreeItems[0]);\n }\n }\n\n private _handleEnterPress() {\n const {focusedItem} = this._treeContextState;\n\n if (focusedItem) {\n this._treeContextState.selectedItems.forEach(\n (li) => (li.selected = false)\n );\n this._treeContextState.selectedItems.clear();\n this._highlightIndentGuides();\n\n focusedItem.selected = true;\n this._emitSelectEvent();\n\n if (focusedItem.branch) {\n focusedItem.open = !focusedItem.open;\n }\n }\n }\n\n private _handleShiftPress() {\n this._treeContextState.isShiftPressed = true;\n }\n\n private _handleComponentKeyDown = (ev: KeyboardEvent) => {\n const key = ev.key as ListenedKey;\n\n if (listenedKeys.includes(key)) {\n ev.stopPropagation();\n ev.preventDefault();\n }\n\n switch (key) {\n case ' ':\n case 'Enter':\n this._handleEnterPress();\n break;\n case 'ArrowDown':\n this._handleArrowDownPress();\n break;\n case 'ArrowLeft':\n this._handleArrowLeftPress(ev);\n break;\n case 'ArrowRight':\n this._handleArrowRightPress();\n break;\n case 'ArrowUp':\n this._handleArrowUpPress();\n break;\n case 'Shift':\n this._handleShiftPress();\n break;\n default:\n }\n };\n\n private _handleComponentKeyUp = (ev: KeyboardEvent) => {\n if (ev.key === 'Shift') {\n this._treeContextState.isShiftPressed = false;\n }\n };\n\n private _handleSlotChange = () => {\n this._treeContextState.itemListUpToDate = false;\n initPathTrackerProps(this, this._assignedTreeItems);\n\n this.updateComplete.then(() => {\n if (this._treeContextState.activeItem === null) {\n const firstChild = this.querySelector<VscodeTreeItem>(\n ':scope > vscode-tree-item'\n );\n\n if (firstChild) {\n firstChild.active = true;\n }\n }\n });\n };\n\n //#endregion\n\n override render(): TemplateResult {\n return html`<div>\n <slot @slotchange=${this._handleSlotChange}></slot>\n </div>`;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'vscode-tree': VscodeTree;\n }\n\n interface GlobalEventHandlersEventMap {\n 'vsc-tree-select': VscTreeSelectEvent;\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"vscode-tree.js","sourceRoot":"","sources":["../../src/vscode-tree/vscode-tree.ts"],"names":[],"mappings":"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","sourcesContent":["import {PropertyValues, TemplateResult, html} from 'lit';\nimport {provide} from '@lit/context';\nimport {property, queryAssignedElements} from 'lit/decorators.js';\nimport {customElement, VscElement} from '../includes/VscElement.js';\nimport type {VscodeTreeItem} from '../vscode-tree-item';\nimport styles from './vscode-tree.styles.js';\nimport {\n ConfigContext,\n configContext,\n treeContext,\n type TreeContext,\n} from './tree-context.js';\nimport {\n findNextItem,\n findPrevItem,\n findParentItem,\n initPathTrackerProps,\n} from './helpers.js';\n\nexport type VscTreeSelectEvent = CustomEvent<{selectedItems: VscodeTreeItem[]}>;\n\nexport const ExpandMode = {\n singleClick: 'singleClick',\n doubleClick: 'doubleClick',\n} as const;\n\nexport type ExpandMode = (typeof ExpandMode)[keyof typeof ExpandMode];\n\nexport const IndentGuides = {\n none: 'none',\n onHover: 'onHover',\n always: 'always',\n} as const;\n\nexport type IndentGuideDisplay =\n (typeof IndentGuides)[keyof typeof IndentGuides];\n\ntype ListenedKey =\n | 'ArrowDown'\n | 'ArrowUp'\n | 'ArrowLeft'\n | 'ArrowRight'\n | 'Enter'\n | 'Escape'\n | 'Shift'\n | ' ';\n\nconst listenedKeys: ListenedKey[] = [\n ' ',\n 'ArrowDown',\n 'ArrowUp',\n 'ArrowLeft',\n 'ArrowRight',\n 'Enter',\n 'Escape',\n 'Shift',\n];\n\n/**\n * @tag vscode-tree\n *\n * @cssprop [--vscode-font-family=sans-serif]\n * @cssprop [--vscode-font-size=13px]\n * @cssprop [--vscode-font-weight=normal]\n * @cssprop [--vscode-foreground=#cccccc]\n * @cssprop [--vscode-icon-foreground=#cccccc]\n * @cssprop [--vscode-list-focusAndSelectionOutline=#0078d4]\n * @cssprop [--vscode-list-focusOutline=#0078d4]\n * @cssprop [--vscode-list-hoverBackground=#2a2d2e]\n * @cssprop [--vscode-list-hoverForeground=#cccccc]\n * @cssprop [--vscode-tree-inactiveIndentGuidesStroke=rgba(88, 88, 88, 0.4)]\n * @cssprop [--vscode-tree-indentGuidesStroke=#585858]\n */\n@customElement('vscode-tree')\nexport class VscodeTree extends VscElement {\n static override styles = styles;\n\n //#region properties\n\n /**\n * Controls how tree folders are expanded when clicked. This property is designed to use\n * the `workbench.tree.expandMode` setting.\n *\n * Valid options are available as constants.\n *\n * ```javascript\n * import {ExpandMode} from '@vscode-elements/elements/dist/vscode-tree/vscode-tree.js';\n *\n * document.querySelector('vscode-tree').expandMode = ExpandMode.singleClick;\n * ```\n *\n * @type {'singleClick' | 'doubleClick'}\n */\n @property({type: String, attribute: 'expand-mode'})\n expandMode: ExpandMode = 'singleClick';\n\n /**\n * Although arrows are always visible in the Tree component by default in VSCode, some icon sets\n * (e.g., Material Icon Theme) allow disabling them in the file explorer view. This flag makes it\n * possible to mimic that behavior.\n */\n @property({type: Boolean, reflect: true, attribute: 'hide-arrows'})\n hideArrows: boolean = false;\n\n /**\n * Controls the indentation in pixels. This property is designed to use the\n * `workbench.tree.indent` setting.\n */\n @property({type: Number, reflect: true})\n indent: number = 8;\n\n /**\n * Controls whether the tree should render indent guides. This property is\n * designed to use the `workbench.tree.renderIndentGuides` setting.\n *\n * Valid options are available as constants.\n *\n * ```javascript\n * import {IndentGuides} from '@vscode-elements/elements/dist/vscode-tree/vscode-tree.js';\n *\n * document.querySelector('vscode-tree').expandMode = IndentGuides.onHover;\n * ```\n *\n * @type {'none' | 'onHover' | 'always'}\n */\n @property({\n type: String,\n attribute: 'indent-guides',\n useDefault: true,\n reflect: true,\n })\n indentGuides: IndentGuideDisplay = 'onHover';\n\n /**\n * Allows selecting multiple items.\n */\n @property({type: Boolean, reflect: true, attribute: 'multi-select'})\n multiSelect: boolean = false;\n\n //#endregion\n\n //#region private variables\n\n @provide({context: treeContext})\n private _treeContextState: TreeContext = {\n isShiftPressed: false,\n activeItem: null,\n selectedItems: new Set(),\n hoveredItem: null,\n allItems: null,\n itemListUpToDate: false,\n focusedItem: null,\n prevFocusedItem: null,\n hasBranchItem: false,\n rootElement: this,\n highlightedItems: new Set(),\n highlightIndentGuides: () => {\n this._highlightIndentGuides();\n },\n emitSelectEvent: () => {\n this._emitSelectEvent();\n },\n };\n\n @provide({context: configContext})\n private _configContext: ConfigContext = {\n hideArrows: this.hideArrows,\n expandMode: this.expandMode,\n indent: this.indent,\n indentGuides: this.indentGuides,\n multiSelect: this.multiSelect,\n };\n\n @queryAssignedElements({selector: 'vscode-tree-item'})\n private _assignedTreeItems!: VscodeTreeItem[];\n\n //#endregion\n\n //#region lifecycle methods\n\n constructor() {\n super();\n\n this.addEventListener('keyup', this._handleComponentKeyUp);\n this.addEventListener('keydown', this._handleComponentKeyDown);\n }\n\n override connectedCallback(): void {\n super.connectedCallback();\n\n this.role = 'tree';\n }\n\n protected override willUpdate(changedProperties: PropertyValues<this>): void {\n this._updateConfigContext(changedProperties);\n\n if (changedProperties.has('multiSelect')) {\n this.ariaMultiSelectable = this.multiSelect ? 'true' : 'false';\n }\n }\n\n //#endregion\n\n //#region public methods\n\n /**\n * Expands all folders.\n */\n expandAll() {\n const children = this.querySelectorAll<VscodeTreeItem>('vscode-tree-item');\n\n children.forEach((item) => {\n if (item.branch) {\n item.open = true;\n }\n });\n }\n\n /**\n * Collapses all folders.\n */\n collapseAll() {\n const children = this.querySelectorAll<VscodeTreeItem>('vscode-tree-item');\n\n children.forEach((item) => {\n if (item.branch) {\n item.open = false;\n }\n });\n }\n\n /**\n * @internal\n * Updates `hasBranchItem` property in the context state in order to removing\n * extra padding before the leaf elements, if it is required.\n */\n updateHasBranchItemFlag() {\n const hasBranchItem = this._assignedTreeItems.some((li) => li.branch);\n this._treeContextState = {...this._treeContextState, hasBranchItem};\n }\n\n //#endregion\n\n //#region private methods\n\n private _emitSelectEvent() {\n const ev = new CustomEvent('vsc-tree-select', {\n detail: Array.from(this._treeContextState.selectedItems),\n });\n\n this.dispatchEvent(ev);\n }\n\n private _highlightIndentGuideOfItem(item: VscodeTreeItem) {\n if (item.branch && item.open) {\n item.highlightedGuides = true;\n this._treeContextState.highlightedItems?.add(item);\n } else {\n const parent = findParentItem(item);\n\n if (parent) {\n parent.highlightedGuides = true;\n this._treeContextState.highlightedItems?.add(parent);\n }\n }\n }\n\n private _highlightIndentGuides() {\n if (this.indentGuides === IndentGuides.none) {\n return;\n }\n\n this._treeContextState.highlightedItems?.forEach(\n (i) => (i.highlightedGuides = false)\n );\n this._treeContextState.highlightedItems?.clear();\n\n if (this._treeContextState.activeItem) {\n this._highlightIndentGuideOfItem(this._treeContextState.activeItem);\n }\n\n this._treeContextState.selectedItems.forEach((item) => {\n this._highlightIndentGuideOfItem(item);\n });\n }\n\n private _updateConfigContext(changedProperties: PropertyValues) {\n const {hideArrows, expandMode, indent, indentGuides, multiSelect} = this;\n\n if (changedProperties.has('hideArrows')) {\n this._configContext = {...this._configContext, hideArrows};\n }\n\n if (changedProperties.has('expandMode')) {\n this._configContext = {...this._configContext, expandMode};\n }\n\n if (changedProperties.has('indent')) {\n this._configContext = {...this._configContext, indent};\n }\n\n if (changedProperties.has('indentGuides')) {\n this._configContext = {...this._configContext, indentGuides};\n }\n\n if (changedProperties.has('multiSelect')) {\n this._configContext = {...this._configContext, multiSelect};\n }\n }\n\n private _focusItem(item: VscodeTreeItem) {\n item.active = true;\n\n item.updateComplete.then(() => {\n item.focus();\n this._highlightIndentGuides();\n });\n }\n\n private _focusPrevItem() {\n if (this._treeContextState.focusedItem) {\n const item = findPrevItem(this._treeContextState.focusedItem);\n\n if (item) {\n this._focusItem(item);\n\n if (this._treeContextState.isShiftPressed && this.multiSelect) {\n item.selected = !item.selected;\n this._emitSelectEvent();\n }\n }\n }\n }\n\n private _focusNextItem() {\n if (this._treeContextState.focusedItem) {\n const item = findNextItem(this._treeContextState.focusedItem);\n\n if (item) {\n this._focusItem(item);\n\n if (this._treeContextState.isShiftPressed && this.multiSelect) {\n item.selected = !item.selected;\n this._emitSelectEvent();\n }\n }\n }\n }\n\n //#endregion\n\n //#region event handlers\n\n private _handleArrowRightPress() {\n if (!this._treeContextState.focusedItem) {\n return;\n }\n\n const {focusedItem} = this._treeContextState;\n\n if (focusedItem.branch) {\n if (focusedItem.open) {\n this._focusNextItem();\n } else {\n focusedItem.open = true;\n }\n }\n }\n\n private _handleArrowLeftPress(ev: KeyboardEvent) {\n if (ev.ctrlKey) {\n this.collapseAll();\n return;\n }\n\n if (!this._treeContextState.focusedItem) {\n return;\n }\n\n const {focusedItem} = this._treeContextState;\n const parent = findParentItem(focusedItem);\n\n if (!focusedItem.branch) {\n if (parent && parent.branch) {\n this._focusItem(parent);\n }\n } else {\n if (focusedItem.open) {\n focusedItem.open = false;\n } else {\n if (parent && parent.branch) {\n this._focusItem(parent);\n }\n }\n }\n }\n\n private _handleArrowDownPress() {\n if (this._treeContextState.focusedItem) {\n this._focusNextItem();\n } else {\n this._focusItem(this._assignedTreeItems[0]);\n }\n }\n\n private _handleArrowUpPress() {\n if (this._treeContextState.focusedItem) {\n this._focusPrevItem();\n } else {\n this._focusItem(this._assignedTreeItems[0]);\n }\n }\n\n private _handleEnterPress() {\n const {focusedItem} = this._treeContextState;\n\n if (focusedItem) {\n this._treeContextState.selectedItems.forEach(\n (li) => (li.selected = false)\n );\n this._treeContextState.selectedItems.clear();\n this._highlightIndentGuides();\n\n focusedItem.selected = true;\n this._emitSelectEvent();\n\n if (focusedItem.branch) {\n focusedItem.open = !focusedItem.open;\n }\n }\n }\n\n private _handleShiftPress() {\n this._treeContextState.isShiftPressed = true;\n }\n\n private _handleComponentKeyDown = (ev: KeyboardEvent) => {\n const key = ev.key as ListenedKey;\n\n if (listenedKeys.includes(key)) {\n ev.stopPropagation();\n ev.preventDefault();\n }\n\n switch (key) {\n case ' ':\n case 'Enter':\n this._handleEnterPress();\n break;\n case 'ArrowDown':\n this._handleArrowDownPress();\n break;\n case 'ArrowLeft':\n this._handleArrowLeftPress(ev);\n break;\n case 'ArrowRight':\n this._handleArrowRightPress();\n break;\n case 'ArrowUp':\n this._handleArrowUpPress();\n break;\n case 'Shift':\n this._handleShiftPress();\n break;\n default:\n }\n };\n\n private _handleComponentKeyUp = (ev: KeyboardEvent) => {\n if (ev.key === 'Shift') {\n this._treeContextState.isShiftPressed = false;\n }\n };\n\n private _handleSlotChange = () => {\n this._treeContextState.itemListUpToDate = false;\n initPathTrackerProps(this, this._assignedTreeItems);\n\n this.updateComplete.then(() => {\n if (this._treeContextState.activeItem === null) {\n const firstChild = this.querySelector<VscodeTreeItem>(\n ':scope > vscode-tree-item'\n );\n\n if (firstChild) {\n firstChild.active = true;\n }\n }\n });\n };\n\n //#endregion\n\n override render(): TemplateResult {\n return html`<div>\n <slot @slotchange=${this._handleSlotChange}></slot>\n </div>`;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'vscode-tree': VscodeTree;\n }\n\n interface GlobalEventHandlersEventMap {\n 'vsc-tree-select': VscTreeSelectEvent;\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vscode-tree.styles.js","sourceRoot":"","sources":["../../src/vscode-tree/vscode-tree.styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,GAAG,EAAC,MAAM,KAAK,CAAC;AACxC,OAAO,aAAa,MAAM,
|
|
1
|
+
{"version":3,"file":"vscode-tree.styles.js","sourceRoot":"","sources":["../../src/vscode-tree/vscode-tree.styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,GAAG,EAAC,MAAM,KAAK,CAAC;AACxC,OAAO,aAAa,MAAM,+BAA+B,CAAC;AAE1D,MAAM,MAAM,GAAmB;IAC7B,aAAa;IACb,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqDF;CACF,CAAC;AAEF,eAAe,MAAM,CAAC","sourcesContent":["import {CSSResultGroup, css} from 'lit';\nimport defaultStyles from '../includes/default.styles.js';\n\nconst styles: CSSResultGroup = [\n defaultStyles,\n css`\n :host {\n --vsc-tree-item-arrow-display: flex;\n --internal-selectionBackground: var(\n --vscode-list-inactiveSelectionBackground,\n #37373d\n );\n --internal-selectionForeground: var(--vscode-foreground, #cccccc);\n --internal-selectionIconForeground: var(\n --vscode-icon-foreground,\n #cccccc\n );\n --internal-defaultIndentGuideDisplay: none;\n --internal-highlightedIndentGuideDisplay: block;\n\n display: block;\n }\n\n :host(:hover) {\n --internal-defaultIndentGuideDisplay: block;\n --internal-highlightedIndentGuideDisplay: block;\n }\n\n :host(:focus-within) {\n --internal-selectionBackground: var(\n --vscode-list-activeSelectionBackground,\n #04395e\n );\n --internal-selectionForeground: var(\n --vscode-list-activeSelectionForeground,\n #ffffff\n );\n --internal-selectionIconForeground: var(\n --vscode-list-activeSelectionIconForeground,\n #ffffff\n );\n }\n\n :host([hide-arrows]) {\n --vsc-tree-item-arrow-display: none;\n }\n\n :host([indent-guides='none']),\n :host([indent-guides='none']:hover) {\n --internal-defaultIndentGuideDisplay: none;\n --internal-highlightedIndentGuideDisplay: none;\n }\n\n :host([indent-guides='always']),\n :host([indent-guides='always']:hover) {\n --internal-defaultIndentGuideDisplay: block;\n --internal-highlightedIndentGuideDisplay: block;\n }\n `,\n];\n\nexport default styles;\n"]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { PropertyValues, TemplateResult } from 'lit';
|
|
2
|
-
import { VscElement } from '../includes/VscElement';
|
|
2
|
+
import { VscElement } from '../includes/VscElement.js';
|
|
3
3
|
export declare class VscodeTreeItem extends VscElement {
|
|
4
4
|
static styles: import("lit").CSSResultGroup;
|
|
5
5
|
active: boolean;
|
|
@@ -20,23 +20,50 @@ export declare class VscodeTreeItem extends VscElement {
|
|
|
20
20
|
private _hasBranchIcon;
|
|
21
21
|
private _hasBranchOpenedIcon;
|
|
22
22
|
private _hasLeafIcon;
|
|
23
|
+
private _hasDescriptionSlotContent;
|
|
24
|
+
private _hasActionsSlotContent;
|
|
25
|
+
private _hasDecorationSlotContent;
|
|
23
26
|
private _treeContextState;
|
|
24
27
|
private _configContext;
|
|
25
28
|
private _initiallyAssignedTreeItems;
|
|
26
29
|
private _childrenTreeItems;
|
|
30
|
+
private _descriptionSlotElements;
|
|
31
|
+
private _actionsSlotElements;
|
|
32
|
+
private _decorationSlotElements;
|
|
33
|
+
private _isPointerInside;
|
|
34
|
+
private _hasKeyboardFocus;
|
|
27
35
|
constructor();
|
|
28
36
|
connectedCallback(): void;
|
|
37
|
+
protected firstUpdated(changedProperties: PropertyValues): void;
|
|
29
38
|
protected willUpdate(changedProperties: PropertyValues): void;
|
|
30
39
|
private _setAriaExpanded;
|
|
31
40
|
private _setHasActiveItemFlagOnParent;
|
|
41
|
+
private _refreshDescriptionSlotState;
|
|
42
|
+
private _refreshActionsSlotState;
|
|
43
|
+
private _refreshDecorationSlotState;
|
|
44
|
+
private _setCustomState;
|
|
45
|
+
private _getActiveElement;
|
|
46
|
+
private _isActiveElementInActions;
|
|
47
|
+
private _updateActionsVisibility;
|
|
48
|
+
private _updateFocusState;
|
|
49
|
+
private _clearHoverState;
|
|
50
|
+
private _adoptHoverFromSibling;
|
|
51
|
+
private _claimHover;
|
|
32
52
|
private _toggleActiveState;
|
|
33
53
|
private _selectItem;
|
|
34
54
|
private _selectRange;
|
|
35
55
|
private _selectItemsAndAllVisibleDescendants;
|
|
36
56
|
private _mainSlotChange;
|
|
37
57
|
private _handleChildrenSlotChange;
|
|
58
|
+
private _handleDescriptionSlotChange;
|
|
59
|
+
private _handleActionsSlotChange;
|
|
60
|
+
private _handleDecorationSlotChange;
|
|
38
61
|
private _handleMainSlotChange;
|
|
39
62
|
private _handleComponentFocus;
|
|
63
|
+
private _handlePointerEnter;
|
|
64
|
+
private _handlePointerLeave;
|
|
65
|
+
private _handleFocusIn;
|
|
66
|
+
private _handleFocusOut;
|
|
40
67
|
private _handleContentClick;
|
|
41
68
|
private _handleDoubleClick;
|
|
42
69
|
private _handleIconSlotChange;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vscode-tree-item.d.ts","sourceRoot":"","sources":["../../src/vscode-tree-item/vscode-tree-item.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,cAAc,EAAE,cAAc,EAAgB,MAAM,KAAK,CAAC;AAIlE,OAAO,EAAgB,UAAU,EAAC,MAAM,
|
|
1
|
+
{"version":3,"file":"vscode-tree-item.d.ts","sourceRoot":"","sources":["../../src/vscode-tree-item/vscode-tree-item.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,cAAc,EAAE,cAAc,EAAgB,MAAM,KAAK,CAAC;AAIlE,OAAO,EAAgB,UAAU,EAAC,MAAM,2BAA2B,CAAC;AAwCpE,qBACa,cAAe,SAAQ,UAAU;IAC5C,OAAgB,MAAM,+BAAU;IAKhC,MAAM,UAAS;IAGf,MAAM,UAAS;IAGf,aAAa,UAAS;IAGtB,eAAe,UAAS;IAExB,gBAAgB;IAEhB,iBAAiB,UAAS;IAG1B,IAAI,UAAS;IAGb,KAAK,SAAK;IAEV,IACI,QAAQ,CAAC,QAAQ,EAAE,OAAO,EAS7B;IACD,IAAI,QAAQ,IAAI,OAAO,CAEtB;IACD,OAAO,CAAC,SAAS,CAAS;IAE1B,IAAI,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,EAEzB;IACD,IAAI,IAAI,IAAI,MAAM,EAAE,CAEnB;IAMD,OAAO,CAAC,KAAK,CAAgB;IAC7B,OAAO,CAAC,UAAU,CAAmB;IAGrC,OAAO,CAAC,cAAc,CAAS;IAG/B,OAAO,CAAC,oBAAoB,CAAS;IAGrC,OAAO,CAAC,YAAY,CAAS;IAG7B,OAAO,CAAC,0BAA0B,CAAS;IAG3C,OAAO,CAAC,sBAAsB,CAAS;IAGvC,OAAO,CAAC,yBAAyB,CAAS;IAG1C,OAAO,CAAC,iBAAiB,CAWvB;IAGF,OAAO,CAAC,cAAc,CAAiB;IAGvC,OAAO,CAAC,2BAA2B,CAAoB;IAGvD,OAAO,CAAC,kBAAkB,CAAoB;IAG9C,OAAO,CAAC,wBAAwB,CAAa;IAG7C,OAAO,CAAC,oBAAoB,CAAa;IAGzC,OAAO,CAAC,uBAAuB,CAAa;IAM5C,OAAO,CAAC,gBAAgB,CAAS;IACjC,OAAO,CAAC,iBAAiB,CAAS;;IAiBzB,iBAAiB,IAAI,IAAI;cAOf,YAAY,CAAC,iBAAiB,EAAE,cAAc,GAAG,IAAI;cAarD,UAAU,CAAC,iBAAiB,EAAE,cAAc,GAAG,IAAI;IActE,OAAO,CAAC,gBAAgB;IAQxB,OAAO,CAAC,6BAA6B;IAWrC,OAAO,CAAC,4BAA4B;IAOpC,OAAO,CAAC,wBAAwB;IAQhC,OAAO,CAAC,2BAA2B;IAWnC,OAAO,CAAC,eAAe;IAqBvB,OAAO,CAAC,iBAAiB;IAczB,OAAO,CAAC,yBAAyB;IAUjC,OAAO,CAAC,wBAAwB;IAkBhC,OAAO,CAAC,iBAAiB;IAwBzB,OAAO,CAAC,gBAAgB;IAMxB,OAAO,CAAC,sBAAsB;IAK9B,OAAO,CAAC,WAAW;IAWnB,OAAO,CAAC,kBAAkB;IAyB1B,OAAO,CAAC,WAAW;IAyBnB,OAAO,CAAC,YAAY;IA8CpB,OAAO,CAAC,oCAAoC;IAwB5C,OAAO,CAAC,eAAe;IAUvB,OAAO,CAAC,yBAAyB;IAQjC,OAAO,CAAC,4BAA4B;IAIpC,OAAO,CAAC,wBAAwB;IAIhC,OAAO,CAAC,2BAA2B;IAInC,OAAO,CAAC,qBAAqB,CAG3B;IAEF,OAAO,CAAC,qBAAqB,CAc3B;IAEF,OAAO,CAAC,mBAAmB,CAGzB;IAEF,OAAO,CAAC,mBAAmB,CAezB;IAEF,OAAO,CAAC,cAAc,CAEpB;IAEF,OAAO,CAAC,eAAe,CAErB;IAEF,OAAO,CAAC,mBAAmB;IAkC3B,OAAO,CAAC,kBAAkB;IAW1B,OAAO,CAAC,qBAAqB;IAoBpB,MAAM,IAAI,cAAc;CA4HlC;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,kBAAkB,EAAE,cAAc,CAAC;KACpC;CACF"}
|
|
@@ -4,13 +4,14 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
4
4
|
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
5
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
6
|
};
|
|
7
|
+
var VscodeTreeItem_1;
|
|
7
8
|
import { html, nothing } from 'lit';
|
|
8
9
|
import { consume } from '@lit/context';
|
|
9
10
|
import { property, queryAssignedElements, state } from 'lit/decorators.js';
|
|
10
11
|
import { classMap } from 'lit/directives/class-map.js';
|
|
11
|
-
import { customElement, VscElement } from '../includes/VscElement';
|
|
12
|
-
import { stylePropertyMap } from '../includes/style-property-map';
|
|
13
|
-
import { configContext, treeContext, } from '../vscode-tree/tree-context';
|
|
12
|
+
import { customElement, VscElement } from '../includes/VscElement.js';
|
|
13
|
+
import { stylePropertyMap } from '../includes/style-property-map.js';
|
|
14
|
+
import { configContext, treeContext, } from '../vscode-tree/tree-context.js';
|
|
14
15
|
import { initPathTrackerProps } from '../vscode-tree/helpers.js';
|
|
15
16
|
import styles from './vscode-tree-item.styles.js';
|
|
16
17
|
import { ExpandMode, IndentGuides } from '../vscode-tree/vscode-tree.js';
|
|
@@ -37,11 +38,17 @@ function getParentItem(childItem) {
|
|
|
37
38
|
}
|
|
38
39
|
return childItem.parentElement;
|
|
39
40
|
}
|
|
40
|
-
let VscodeTreeItem = class VscodeTreeItem extends VscElement {
|
|
41
|
+
let VscodeTreeItem = VscodeTreeItem_1 = class VscodeTreeItem extends VscElement {
|
|
41
42
|
set selected(selected) {
|
|
42
43
|
this._selected = selected;
|
|
43
|
-
|
|
44
|
+
if (selected) {
|
|
45
|
+
this._treeContextState.selectedItems.add(this);
|
|
46
|
+
}
|
|
47
|
+
else {
|
|
48
|
+
this._treeContextState.selectedItems.delete(this);
|
|
49
|
+
}
|
|
44
50
|
this.ariaSelected = selected ? 'true' : 'false';
|
|
51
|
+
this._updateActionsVisibility();
|
|
45
52
|
}
|
|
46
53
|
get selected() {
|
|
47
54
|
return this._selected;
|
|
@@ -72,9 +79,13 @@ let VscodeTreeItem = class VscodeTreeItem extends VscElement {
|
|
|
72
79
|
this._hasBranchIcon = false;
|
|
73
80
|
this._hasBranchOpenedIcon = false;
|
|
74
81
|
this._hasLeafIcon = false;
|
|
82
|
+
this._hasDescriptionSlotContent = false;
|
|
83
|
+
this._hasActionsSlotContent = false;
|
|
84
|
+
this._hasDecorationSlotContent = false;
|
|
75
85
|
this._treeContextState = {
|
|
76
86
|
isShiftPressed: false,
|
|
77
87
|
selectedItems: new Set(),
|
|
88
|
+
hoveredItem: null,
|
|
78
89
|
allItems: null,
|
|
79
90
|
itemListUpToDate: false,
|
|
80
91
|
focusedItem: null,
|
|
@@ -83,6 +94,10 @@ let VscodeTreeItem = class VscodeTreeItem extends VscElement {
|
|
|
83
94
|
rootElement: null,
|
|
84
95
|
activeItem: null,
|
|
85
96
|
};
|
|
97
|
+
//#endregion
|
|
98
|
+
//#region derived state
|
|
99
|
+
this._isPointerInside = false;
|
|
100
|
+
this._hasKeyboardFocus = false;
|
|
86
101
|
this._handleMainSlotChange = () => {
|
|
87
102
|
this._mainSlotChange();
|
|
88
103
|
this._treeContextState.itemListUpToDate = false;
|
|
@@ -98,8 +113,36 @@ let VscodeTreeItem = class VscodeTreeItem extends VscElement {
|
|
|
98
113
|
}
|
|
99
114
|
this._treeContextState.focusedItem = this;
|
|
100
115
|
};
|
|
116
|
+
this._handlePointerEnter = () => {
|
|
117
|
+
this._isPointerInside = true;
|
|
118
|
+
this._claimHover();
|
|
119
|
+
};
|
|
120
|
+
this._handlePointerLeave = (ev) => {
|
|
121
|
+
this._isPointerInside = false;
|
|
122
|
+
if (this._treeContextState.hoveredItem === this) {
|
|
123
|
+
this._treeContextState.hoveredItem = null;
|
|
124
|
+
}
|
|
125
|
+
this._clearHoverState();
|
|
126
|
+
const relatedTarget = ev.relatedTarget;
|
|
127
|
+
if (relatedTarget instanceof Element) {
|
|
128
|
+
const nextItem = relatedTarget.closest('vscode-tree-item');
|
|
129
|
+
if (nextItem && nextItem !== this && nextItem.isConnected) {
|
|
130
|
+
nextItem._adoptHoverFromSibling();
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
};
|
|
134
|
+
this._handleFocusIn = () => {
|
|
135
|
+
this._updateFocusState();
|
|
136
|
+
};
|
|
137
|
+
this._handleFocusOut = () => {
|
|
138
|
+
this._updateFocusState();
|
|
139
|
+
};
|
|
101
140
|
this._internals = this.attachInternals();
|
|
102
141
|
this.addEventListener('focus', this._handleComponentFocus);
|
|
142
|
+
this.addEventListener('pointerenter', this._handlePointerEnter);
|
|
143
|
+
this.addEventListener('pointerleave', this._handlePointerLeave);
|
|
144
|
+
this.addEventListener('focusin', this._handleFocusIn);
|
|
145
|
+
this.addEventListener('focusout', this._handleFocusOut);
|
|
103
146
|
}
|
|
104
147
|
connectedCallback() {
|
|
105
148
|
super.connectedCallback();
|
|
@@ -107,6 +150,19 @@ let VscodeTreeItem = class VscodeTreeItem extends VscElement {
|
|
|
107
150
|
this.role = 'treeitem';
|
|
108
151
|
this.ariaDisabled = 'false';
|
|
109
152
|
}
|
|
153
|
+
firstUpdated(changedProperties) {
|
|
154
|
+
super.firstUpdated(changedProperties);
|
|
155
|
+
this._refreshDescriptionSlotState();
|
|
156
|
+
this._refreshActionsSlotState();
|
|
157
|
+
this._refreshDecorationSlotState();
|
|
158
|
+
if (this.matches(':hover')) {
|
|
159
|
+
this._isPointerInside = true;
|
|
160
|
+
this._claimHover();
|
|
161
|
+
}
|
|
162
|
+
else {
|
|
163
|
+
this._updateActionsVisibility();
|
|
164
|
+
}
|
|
165
|
+
}
|
|
110
166
|
willUpdate(changedProperties) {
|
|
111
167
|
if (changedProperties.has('active')) {
|
|
112
168
|
this._toggleActiveState();
|
|
@@ -131,6 +187,114 @@ let VscodeTreeItem = class VscodeTreeItem extends VscElement {
|
|
|
131
187
|
parent.hasActiveItem = value;
|
|
132
188
|
}
|
|
133
189
|
}
|
|
190
|
+
_refreshDescriptionSlotState() {
|
|
191
|
+
const hasContent = (this._descriptionSlotElements?.length ?? 0) > 0;
|
|
192
|
+
this._hasDescriptionSlotContent = hasContent;
|
|
193
|
+
this._setCustomState('has-description', hasContent);
|
|
194
|
+
}
|
|
195
|
+
_refreshActionsSlotState() {
|
|
196
|
+
const hasContent = (this._actionsSlotElements?.length ?? 0) > 0;
|
|
197
|
+
this._hasActionsSlotContent = hasContent;
|
|
198
|
+
this._setCustomState('has-actions', hasContent);
|
|
199
|
+
this._updateActionsVisibility();
|
|
200
|
+
}
|
|
201
|
+
_refreshDecorationSlotState() {
|
|
202
|
+
const hasContent = (this._decorationSlotElements?.length ?? 0) > 0;
|
|
203
|
+
const prevHasDecoration = this._hasDecorationSlotContent;
|
|
204
|
+
this._hasDecorationSlotContent = hasContent;
|
|
205
|
+
this._setCustomState('has-decoration', hasContent);
|
|
206
|
+
if (prevHasDecoration !== hasContent) {
|
|
207
|
+
this.requestUpdate();
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
_setCustomState(stateName, present) {
|
|
211
|
+
if (!this._internals?.states) {
|
|
212
|
+
return;
|
|
213
|
+
}
|
|
214
|
+
try {
|
|
215
|
+
if (present) {
|
|
216
|
+
this._internals.states.add(stateName);
|
|
217
|
+
}
|
|
218
|
+
else {
|
|
219
|
+
this._internals.states.delete(stateName);
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
catch {
|
|
223
|
+
// https://developer.mozilla.org/en-US/docs/Web/API/CustomStateSet#compatibility_with_dashed-ident_syntax
|
|
224
|
+
if (present) {
|
|
225
|
+
this._internals.states.add(`--${stateName}`);
|
|
226
|
+
}
|
|
227
|
+
else {
|
|
228
|
+
this._internals.states.delete(`--${stateName}`);
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
_getActiveElement() {
|
|
233
|
+
const root = this.getRootNode({ composed: true });
|
|
234
|
+
if (root instanceof Document) {
|
|
235
|
+
return root.activeElement instanceof Element ? root.activeElement : null;
|
|
236
|
+
}
|
|
237
|
+
if (root instanceof ShadowRoot) {
|
|
238
|
+
return root.activeElement instanceof Element ? root.activeElement : null;
|
|
239
|
+
}
|
|
240
|
+
return null;
|
|
241
|
+
}
|
|
242
|
+
_isActiveElementInActions(activeElement) {
|
|
243
|
+
if (!activeElement) {
|
|
244
|
+
return false;
|
|
245
|
+
}
|
|
246
|
+
return (this._actionsSlotElements ?? []).some((element) => element === activeElement || element.contains(activeElement));
|
|
247
|
+
}
|
|
248
|
+
_updateActionsVisibility() {
|
|
249
|
+
if (!this._hasActionsSlotContent) {
|
|
250
|
+
this._setCustomState('show-actions', false);
|
|
251
|
+
return;
|
|
252
|
+
}
|
|
253
|
+
const activeElement = this._getActiveElement();
|
|
254
|
+
const isActionsFocused = this._isActiveElementInActions(activeElement);
|
|
255
|
+
const shouldShow = this.selected ||
|
|
256
|
+
this._isPointerInside ||
|
|
257
|
+
this._hasKeyboardFocus ||
|
|
258
|
+
isActionsFocused;
|
|
259
|
+
this._setCustomState('show-actions', shouldShow);
|
|
260
|
+
}
|
|
261
|
+
_updateFocusState() {
|
|
262
|
+
const hostFocusVisible = this.matches(':focus-visible');
|
|
263
|
+
this._setCustomState('focus-visible', hostFocusVisible);
|
|
264
|
+
const activeElement = this._getActiveElement();
|
|
265
|
+
let owner = null;
|
|
266
|
+
if (activeElement instanceof Element) {
|
|
267
|
+
owner = activeElement.closest('vscode-tree-item');
|
|
268
|
+
if (!owner) {
|
|
269
|
+
const root = activeElement.getRootNode();
|
|
270
|
+
if (root instanceof ShadowRoot && root.host instanceof VscodeTreeItem_1) {
|
|
271
|
+
owner = root.host;
|
|
272
|
+
}
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
const hasKeyboardFocus = owner === this;
|
|
276
|
+
this._hasKeyboardFocus = hasKeyboardFocus;
|
|
277
|
+
this._setCustomState('keyboard-focus', hasKeyboardFocus);
|
|
278
|
+
this._updateActionsVisibility();
|
|
279
|
+
}
|
|
280
|
+
_clearHoverState() {
|
|
281
|
+
this._isPointerInside = false;
|
|
282
|
+
this._setCustomState('hover', false);
|
|
283
|
+
this._updateActionsVisibility();
|
|
284
|
+
}
|
|
285
|
+
_adoptHoverFromSibling() {
|
|
286
|
+
this._isPointerInside = true;
|
|
287
|
+
this._claimHover();
|
|
288
|
+
}
|
|
289
|
+
_claimHover() {
|
|
290
|
+
const treeState = this._treeContextState;
|
|
291
|
+
if (treeState.hoveredItem && treeState.hoveredItem !== this) {
|
|
292
|
+
treeState.hoveredItem._clearHoverState();
|
|
293
|
+
}
|
|
294
|
+
treeState.hoveredItem = this;
|
|
295
|
+
this._setCustomState('hover', true);
|
|
296
|
+
this._updateActionsVisibility();
|
|
297
|
+
}
|
|
134
298
|
_toggleActiveState() {
|
|
135
299
|
if (this.active) {
|
|
136
300
|
if (this._treeContextState.activeItem) {
|
|
@@ -140,7 +304,7 @@ let VscodeTreeItem = class VscodeTreeItem extends VscElement {
|
|
|
140
304
|
this._treeContextState.activeItem = this;
|
|
141
305
|
this._setHasActiveItemFlagOnParent(this, true);
|
|
142
306
|
this.tabIndex = 0;
|
|
143
|
-
this.
|
|
307
|
+
this._setCustomState('active', true);
|
|
144
308
|
}
|
|
145
309
|
else {
|
|
146
310
|
if (this._treeContextState.activeItem === this) {
|
|
@@ -148,34 +312,38 @@ let VscodeTreeItem = class VscodeTreeItem extends VscElement {
|
|
|
148
312
|
this._setHasActiveItemFlagOnParent(this, false);
|
|
149
313
|
}
|
|
150
314
|
this.tabIndex = -1;
|
|
151
|
-
this.
|
|
315
|
+
this._setCustomState('active', false);
|
|
152
316
|
}
|
|
153
317
|
}
|
|
154
318
|
_selectItem(isCtrlDown) {
|
|
155
319
|
const { selectedItems } = this._treeContextState;
|
|
156
320
|
const { multiSelect } = this._configContext;
|
|
321
|
+
const prevSelected = new Set(selectedItems);
|
|
157
322
|
if (multiSelect && isCtrlDown) {
|
|
158
|
-
|
|
159
|
-
this.selected = false;
|
|
160
|
-
selectedItems.delete(this);
|
|
161
|
-
}
|
|
162
|
-
else {
|
|
163
|
-
this.selected = true;
|
|
164
|
-
selectedItems.add(this);
|
|
165
|
-
}
|
|
323
|
+
this.selected = !this.selected;
|
|
166
324
|
}
|
|
167
325
|
else {
|
|
168
|
-
selectedItems.forEach((li) =>
|
|
326
|
+
Array.from(selectedItems).forEach((li) => {
|
|
327
|
+
if (li !== this) {
|
|
328
|
+
li.selected = false;
|
|
329
|
+
}
|
|
330
|
+
});
|
|
169
331
|
selectedItems.clear();
|
|
170
332
|
this.selected = true;
|
|
171
|
-
selectedItems.add(this);
|
|
172
333
|
}
|
|
334
|
+
const affected = new Set([
|
|
335
|
+
...prevSelected,
|
|
336
|
+
...selectedItems,
|
|
337
|
+
]);
|
|
338
|
+
affected.add(this);
|
|
339
|
+
affected.forEach((li) => li._updateActionsVisibility());
|
|
173
340
|
}
|
|
174
341
|
_selectRange() {
|
|
175
342
|
const prevFocused = this._treeContextState.prevFocusedItem;
|
|
176
343
|
if (!prevFocused || prevFocused === this) {
|
|
177
344
|
return;
|
|
178
345
|
}
|
|
346
|
+
const prevSelected = new Set(this._treeContextState.selectedItems);
|
|
179
347
|
if (!this._treeContextState.itemListUpToDate) {
|
|
180
348
|
this._treeContextState.allItems =
|
|
181
349
|
this._treeContextState.rootElement.querySelectorAll('vscode-tree-item');
|
|
@@ -191,9 +359,15 @@ let VscodeTreeItem = class VscodeTreeItem extends VscElement {
|
|
|
191
359
|
if (from > to) {
|
|
192
360
|
[from, to] = [to, from];
|
|
193
361
|
}
|
|
194
|
-
this._treeContextState.selectedItems.forEach((li) => (li.selected = false));
|
|
362
|
+
Array.from(this._treeContextState.selectedItems).forEach((li) => (li.selected = false));
|
|
195
363
|
this._treeContextState.selectedItems.clear();
|
|
196
364
|
this._selectItemsAndAllVisibleDescendants(from, to);
|
|
365
|
+
const affected = new Set([
|
|
366
|
+
...prevSelected,
|
|
367
|
+
...this._treeContextState.selectedItems,
|
|
368
|
+
]);
|
|
369
|
+
affected.add(this);
|
|
370
|
+
affected.forEach((li) => li._updateActionsVisibility());
|
|
197
371
|
}
|
|
198
372
|
_selectItemsAndAllVisibleDescendants(from, to) {
|
|
199
373
|
let i = from;
|
|
@@ -230,6 +404,15 @@ let VscodeTreeItem = class VscodeTreeItem extends VscElement {
|
|
|
230
404
|
this._treeContextState.rootElement.updateHasBranchItemFlag();
|
|
231
405
|
}
|
|
232
406
|
}
|
|
407
|
+
_handleDescriptionSlotChange() {
|
|
408
|
+
this._refreshDescriptionSlotState();
|
|
409
|
+
}
|
|
410
|
+
_handleActionsSlotChange() {
|
|
411
|
+
this._refreshActionsSlotState();
|
|
412
|
+
}
|
|
413
|
+
_handleDecorationSlotChange() {
|
|
414
|
+
this._refreshDecorationSlotState();
|
|
415
|
+
}
|
|
233
416
|
_handleContentClick(ev) {
|
|
234
417
|
ev.stopPropagation();
|
|
235
418
|
const isCtrlDown = ev.ctrlKey || ev.metaKey;
|
|
@@ -298,6 +481,9 @@ let VscodeTreeItem = class VscodeTreeItem extends VscElement {
|
|
|
298
481
|
const wrapperClasses = {
|
|
299
482
|
wrapper: true,
|
|
300
483
|
active: this.active,
|
|
484
|
+
'has-description': this._hasDescriptionSlotContent,
|
|
485
|
+
'has-actions': this._hasActionsSlotContent,
|
|
486
|
+
'has-decoration': this._hasDecorationSlotContent,
|
|
301
487
|
};
|
|
302
488
|
const childrenClasses = {
|
|
303
489
|
children: true,
|
|
@@ -309,9 +495,15 @@ let VscodeTreeItem = class VscodeTreeItem extends VscElement {
|
|
|
309
495
|
'icon-container': true,
|
|
310
496
|
'has-icon': hasVisibleIcon,
|
|
311
497
|
};
|
|
498
|
+
const contentClasses = {
|
|
499
|
+
content: true,
|
|
500
|
+
'has-description': this._hasDescriptionSlotContent,
|
|
501
|
+
'has-decoration': this._hasDecorationSlotContent,
|
|
502
|
+
};
|
|
312
503
|
return html ` <div class="root">
|
|
313
504
|
<div
|
|
314
505
|
class=${classMap(wrapperClasses)}
|
|
506
|
+
part="wrapper"
|
|
315
507
|
@click=${this._handleContentClick}
|
|
316
508
|
@dblclick=${this._handleDoubleClick}
|
|
317
509
|
.style=${stylePropertyMap({ paddingLeft: `${indentation}px` })}
|
|
@@ -322,11 +514,12 @@ let VscodeTreeItem = class VscodeTreeItem extends VscElement {
|
|
|
322
514
|
'arrow-container': true,
|
|
323
515
|
'icon-rotated': this.open,
|
|
324
516
|
})}
|
|
517
|
+
part="head expando"
|
|
325
518
|
>
|
|
326
519
|
${arrowIcon}
|
|
327
520
|
</div>`
|
|
328
521
|
: nothing}
|
|
329
|
-
<div class=${classMap(iconContainerClasses)}>
|
|
522
|
+
<div class=${classMap(iconContainerClasses)} part="head icon">
|
|
330
523
|
${this.branch && !this.open
|
|
331
524
|
? html `<slot
|
|
332
525
|
name="icon-branch"
|
|
@@ -346,8 +539,32 @@ let VscodeTreeItem = class VscodeTreeItem extends VscElement {
|
|
|
346
539
|
></slot>`
|
|
347
540
|
: nothing}
|
|
348
541
|
</div>
|
|
349
|
-
<div class
|
|
350
|
-
<
|
|
542
|
+
<div class=${classMap(contentClasses)} part="content">
|
|
543
|
+
<span class="label" part="label">
|
|
544
|
+
<slot @slotchange=${this._handleMainSlotChange}></slot>
|
|
545
|
+
</span>
|
|
546
|
+
<span
|
|
547
|
+
class="description"
|
|
548
|
+
part="description"
|
|
549
|
+
?hidden=${!this._hasDescriptionSlotContent}
|
|
550
|
+
>
|
|
551
|
+
<slot
|
|
552
|
+
name="description"
|
|
553
|
+
@slotchange=${this._handleDescriptionSlotChange}
|
|
554
|
+
></slot>
|
|
555
|
+
</span>
|
|
556
|
+
<div class="actions" part="actions">
|
|
557
|
+
<slot
|
|
558
|
+
name="actions"
|
|
559
|
+
@slotchange=${this._handleActionsSlotChange}
|
|
560
|
+
></slot>
|
|
561
|
+
</div>
|
|
562
|
+
<div class="decoration" part="decoration">
|
|
563
|
+
<slot
|
|
564
|
+
name="decoration"
|
|
565
|
+
@slotchange=${this._handleDecorationSlotChange}
|
|
566
|
+
></slot>
|
|
567
|
+
</div>
|
|
351
568
|
</div>
|
|
352
569
|
</div>
|
|
353
570
|
<div
|
|
@@ -400,6 +617,15 @@ __decorate([
|
|
|
400
617
|
__decorate([
|
|
401
618
|
state()
|
|
402
619
|
], VscodeTreeItem.prototype, "_hasLeafIcon", void 0);
|
|
620
|
+
__decorate([
|
|
621
|
+
state()
|
|
622
|
+
], VscodeTreeItem.prototype, "_hasDescriptionSlotContent", void 0);
|
|
623
|
+
__decorate([
|
|
624
|
+
state()
|
|
625
|
+
], VscodeTreeItem.prototype, "_hasActionsSlotContent", void 0);
|
|
626
|
+
__decorate([
|
|
627
|
+
state()
|
|
628
|
+
], VscodeTreeItem.prototype, "_hasDecorationSlotContent", void 0);
|
|
403
629
|
__decorate([
|
|
404
630
|
consume({ context: treeContext, subscribe: true })
|
|
405
631
|
], VscodeTreeItem.prototype, "_treeContextState", void 0);
|
|
@@ -412,7 +638,16 @@ __decorate([
|
|
|
412
638
|
__decorate([
|
|
413
639
|
queryAssignedElements({ selector: 'vscode-tree-item', slot: 'children' })
|
|
414
640
|
], VscodeTreeItem.prototype, "_childrenTreeItems", void 0);
|
|
415
|
-
|
|
641
|
+
__decorate([
|
|
642
|
+
queryAssignedElements({ slot: 'description', flatten: true })
|
|
643
|
+
], VscodeTreeItem.prototype, "_descriptionSlotElements", void 0);
|
|
644
|
+
__decorate([
|
|
645
|
+
queryAssignedElements({ slot: 'actions', flatten: true })
|
|
646
|
+
], VscodeTreeItem.prototype, "_actionsSlotElements", void 0);
|
|
647
|
+
__decorate([
|
|
648
|
+
queryAssignedElements({ slot: 'decoration', flatten: true })
|
|
649
|
+
], VscodeTreeItem.prototype, "_decorationSlotElements", void 0);
|
|
650
|
+
VscodeTreeItem = VscodeTreeItem_1 = __decorate([
|
|
416
651
|
customElement('vscode-tree-item')
|
|
417
652
|
], VscodeTreeItem);
|
|
418
653
|
export { VscodeTreeItem };
|