Skip to content

Commit

Permalink
Revert "feat/tree-view-select (#1779)"
Browse files Browse the repository at this point in the history
This reverts commit fa91c64.
  • Loading branch information
AdrianGonz97 authored Aug 14, 2023
1 parent c8d3df3 commit b313aa6
Show file tree
Hide file tree
Showing 8 changed files with 29 additions and 1,227 deletions.
5 changes: 0 additions & 5 deletions .changeset/fresh-carrots-lick.md

This file was deleted.

1 change: 0 additions & 1 deletion cspell.json
Original file line number Diff line number Diff line change
Expand Up @@ -79,7 +79,6 @@
"Menlo",
"minima",
"mininal",
"Morty",
"Muertos",
"Nahua",
"Neue",
Expand Down
101 changes: 3 additions & 98 deletions packages/skeleton/src/lib/components/TreeView/TreeView.svelte
Original file line number Diff line number Diff line change
Expand Up @@ -2,29 +2,15 @@
import { setContext } from 'svelte';
// Types
import type { CssClasses, TreeViewNode } from '../../index.js';
import TreeViewDataDrivenItem from './TreeViewDataDrivenItem.svelte';
import type { CssClasses } from '../../index.js';
// Props (parent)
/** Enable tree-view selection. */
export let selection = false;
/** Enable selection of multiple items. */
export let multiple = false;
/**
* Provide data-driven nodes.
* @type {TreeViewNode[]}
*/
export let nodes: TreeViewNode[] = [];
/** Provide classes to set the tree width. */
export let width: CssClasses = 'w-full';
/** Provide classes to set the vertical spacing between items. */
export let spacing: CssClasses = 'space-y-1';
// Props (children)
/** Set open by default on load. */
export let open = false;
/** Set the tree disabled state */
export let disabled = false;
/** Provide classes to set the tree item padding styles. */
export let padding: CssClasses = 'py-4 px-4';
/** Provide classes to set the tree children indentation */
Expand Down Expand Up @@ -54,73 +40,7 @@
/** Provide the ARIA labelledby value. */
export let labelledby = '';
// Functionality
/**
* expands all tree view items.
* @type {() => void}
*/
export function expandAll(): void {
const detailsElements = [...tree.querySelectorAll('details.tree-item')] as HTMLDetailsElement[];
detailsElements.forEach((details) => {
if (!details.open) {
const summary: HTMLElement | null = details.querySelector('summary.tree-item-summary');
if (summary) summary.click();
}
});
}
/**
* collapses all tree view items.
* @type {() => void}
*/
export function collapseAll(): void {
const detailsElements = [...tree.querySelectorAll('details.tree-item')] as HTMLDetailsElement[];
detailsElements.forEach((details) => {
if (details.open) {
const summary: HTMLElement | null = details.querySelector('summary.tree-item-summary');
if (summary) summary.click();
}
});
}
/**
* select all tree view items. Only available in Multiple selection mode.
* @type {() => void}
*/
export function selectAll(): void {
const detailsElements = [...tree.querySelectorAll('details.tree-item')] as HTMLDetailsElement[];
detailsElements.forEach((details) => {
const input: HTMLInputElement | null = details.querySelector('input[type="checkbox"].tree-item-checkbox');
if (!input) return;
if (!input.checked) {
// needs delay
setTimeout(() => {
input.click();
}, 5);
}
});
}
/**
* deselect all tree view items. Only available in Multiple selection mode.
* @type {() => void}
*/
export function deselectAll(): void {
const detailsElements = [...tree.querySelectorAll('details.tree-item')] as HTMLDetailsElement[];
detailsElements.forEach((details) => {
const input: HTMLInputElement | null = details.querySelector('input[type="checkbox"].tree-item-checkbox');
if (!input) return;
if (input.checked) {
// needs delay
setTimeout(() => {
input.click();
}, 5);
}
});
}
// Context API
setContext('open', open);
setContext('selection', selection);
setContext('multiple', multiple);
setContext('disabled', disabled);
setContext('padding', padding);
setContext('indent', indent);
setContext('hover', hover);
Expand All @@ -134,23 +54,8 @@
// Reactive
$: classesBase = `${width} ${spacing} ${$$props.class ?? ''}`;
// Locals
let tree: HTMLDivElement;
</script>

<div
bind:this={tree}
class="tree {classesBase}"
data-testid="tree"
role="tree"
aria-multiselectable={multiple}
aria-label={labelledby}
aria-disabled={disabled}
>
{#if nodes && nodes.length > 0}
<TreeViewDataDrivenItem bind:nodes />
{:else}
<slot />
{/if}
<div class="tree {classesBase}" data-testid="tree" role="tree" aria-multiselectable="true" aria-label={labelledby}>
<slot />
</div>

This file was deleted.

Loading

0 comments on commit b313aa6

Please sign in to comment.