Skip to content

Commit ab68145

Browse files
committed
Progress.
1 parent e9fbd27 commit ab68145

File tree

3 files changed

+100
-6
lines changed

3 files changed

+100
-6
lines changed

src/pg/tree/tree.ts

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@ export default class PgTree extends HTMLElement {
1515

1616
@Part() $items: HTMLDivElement;
1717

18-
#selected = new Set();
1918
#selectedIndexes = new Map();
2019

2120
connectedCallback() {
@@ -85,6 +84,7 @@ export default class PgTree extends HTMLElement {
8584
item.selected = true;
8685
this.#selectedIndexes.set(unproxyItem, indexes);
8786
callback(this.#selectedIndexes.size);
87+
this.#calculateDragExcludes();
8888
});
8989
}
9090

@@ -103,4 +103,12 @@ export default class PgTree extends HTMLElement {
103103
unselect(indexes: number[]) {
104104

105105
}
106+
107+
#calculateDragExcludes() {
108+
const exclude: string[] = [];
109+
this.#selectedIndexes.forEach((indexes) => {
110+
exclude.push(indexes.join(','));
111+
});
112+
return exclude;
113+
}
106114
}

src/pg/treeItem/treeItem.css

Lines changed: 90 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@
5151
background: var(--pg-tree-item-background, transparent);
5252
border-radius: 0.25rem;
5353
padding: 0.25rem;
54-
gap: 0.5rem;
54+
gap: 0 0.5rem;
5555
user-select: none;
5656
padding-left: calc((var(--x) * 0.5rem) + 0.25rem);
5757
transition: background-color 0.1s ease-out;
@@ -61,23 +61,108 @@
6161
grid-template-columns: min-content min-content auto min-content;
6262
grid-template-rows: auto;
6363
}
64+
[part=item].items [part=toggle] {
65+
grid-row: 1;
66+
grid-column: 1;
67+
}
68+
[part=item].items [part=iconButton] {
69+
grid-row: 1;
70+
grid-column: 2;
71+
}
72+
[part=item].items [part=labelButton] {
73+
grid-row: 1;
74+
grid-column: 3;
75+
}
76+
[part=item].items [part=actions] {
77+
grid-row: 1;
78+
grid-column: 4;
79+
}
80+
[part=item].items [part=dropabove] {
81+
grid-row: 1;
82+
grid-column: 1 / 5;
83+
align-self: flex-start;
84+
transform: translateY(-0.875rem);
85+
height: 1rem;
86+
margin: 0 -0.25rem 0 -0.25rem;
87+
background: rgba(255, 0, 0, 0.1);
88+
}
89+
[part=item].items [part=dropabove]:hover {
90+
background: rgba(255, 0, 0, 0.2);
91+
}
92+
[part=item].items [part=dropon] {
93+
grid-row: 1;
94+
grid-column: 1 / 5;
95+
margin: -0.25rem;
96+
background: rgba(255, 0, 0, 0.1);
97+
}
98+
[part=item].items [part=dropon]:hover {
99+
background: rgba(255, 0, 0, 0.2);
100+
}
101+
[part=item].items.expanded [part=dropbelow] {
102+
display: none;
103+
}
104+
[part=item].items [part=dropbelow] {
105+
grid-row: 1;
106+
grid-column: 1 / 5;
107+
align-self: flex-end;
108+
transform: translateY(0.875rem);
109+
height: 1rem;
110+
margin: 0 -0.25rem 0 -0.25rem;
111+
background: rgba(255, 0, 0, 0.1);
112+
}
113+
[part=item].items [part=dropbelow]:hover {
114+
background: rgba(255, 0, 0, 0.2);
115+
}
116+
64117
[part=item]:not(.items) {
65118
grid-template-columns: min-content auto min-content;
66119
grid-template-rows: auto;
67120
}
68-
[part=dropon] {
69-
display: none;
121+
[part=item]:not(.items) [part=iconButton] {
122+
grid-row: 1;
123+
grid-column: 1;
124+
}
125+
[part=item]:not(.items) [part=labelButton] {
126+
grid-row: 1;
127+
grid-column: 2;
128+
}
129+
[part=item]:not(.items) [part=actions] {
130+
grid-row: 1;
131+
grid-column: 3;
132+
}
133+
[part=item]:not(.items) [part=dropabove] {
70134
grid-row: 1;
135+
grid-column: 1 / 4;
136+
align-self: flex-start;
137+
transform: translateY(-0.875rem);
138+
height: 1rem;
139+
margin: 0 -0.25rem 0 -1.25rem;
140+
background: rgba(255, 0, 0, 0.1);
141+
}
142+
[part=item]:not(.items) [part=dropabove]:hover {
143+
background: rgba(255, 0, 0, 0.2);
71144
}
72-
[part=dropbelow] {
145+
[part=item]:not(.items) [part=dropon] {
73146
display: none;
147+
}
148+
[part=item]:not(.items) [part=dropbelow] {
74149
grid-row: 1;
150+
grid-column: 1 / 4;
151+
align-self: flex-end;
152+
transform: translateY(0.875rem);
153+
height: 1rem;
154+
margin: 0 -0.25rem 0 -1.25rem;
155+
background: rgba(255, 0, 0, 0.1);
156+
z-index: 1;
157+
}
158+
[part=item]:not(.items) [part=dropbelow]:hover {
159+
background: rgba(255, 0, 0, 0.2);
75160
}
76161

162+
77163
[part=item]:hover {
78164
background: var(--pg-tree-item-background-hover, rgb(69, 60, 79, 0.1));
79165
}
80-
81166
[part=item].items.selected {
82167
background-color: var(--pg-tree-item-background-selected, rgb(69, 60, 79, 0.1));
83168
}

src/pg/treeItem/treeItem.html

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
<span part="label"></span>
99
</button>
1010
<div part="actions"></div>
11+
<div part="dropabove"></div>
1112
<div part="dropon"></div>
1213
<div part="dropbelow"></div>
1314
</div>

0 commit comments

Comments
 (0)