Skip to content

Commit 6925831

Browse files
committed
More progress.
1 parent ab68145 commit 6925831

File tree

5 files changed

+83
-38
lines changed

5 files changed

+83
-38
lines changed

src/pg/search/search.css

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,10 +21,10 @@ input {
2121
border: .0625rem solid var(--pg-search-border-color);
2222
}
2323
input:active {
24-
box-shadow: 0 0 0 3px var(--pg-search-active-glow, rgb(79, 143, 249, 0.6));
24+
box-shadow: 0 0 0 3px var(--pg-search-active-glow, rgba(79, 143, 249, 0.6));
2525
}
2626
input:focus {
27-
box-shadow: 0 0 0 3px var(--pg-focus-color, rgb(79, 143, 249, 0.5));
27+
box-shadow: 0 0 0 3px var(--pg-focus-color, rgba(79, 143, 249, 0.5));
2828
}
2929
.active input + svg path {
3030
fill: #453C4F;

src/pg/tree/tree.css

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,16 @@
22
display: contents;
33
}
44

5-
[part="items"] {
5+
[part=items] {
66
display: flex;
77
flex-direction: column;
88
background: var(--pg-tree-background, transparent);
99
padding: 0.25rem;
1010
gap: 0.25rem;
1111
--x: 0;
12+
--pg-_is-dragging: false;
13+
}
14+
15+
[part=items].dragging {
16+
--pg-_is-dragging: true;
1217
}

src/pg/tree/tree.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ export default class PgTree extends HTMLElement {
7272
});*/
7373
}
7474
});
75-
this.addEventListener('itemdragstart', (e: any) => {
75+
this.$items.addEventListener('itemdragstart', (e: any) => {
7676
const { indexes, callback, ctrlKey, shiftKey } = e.detail;
7777
console.log('testing', indexes);
7878
const item = this.#getItem(indexes);
@@ -85,6 +85,10 @@ export default class PgTree extends HTMLElement {
8585
this.#selectedIndexes.set(unproxyItem, indexes);
8686
callback(this.#selectedIndexes.size);
8787
this.#calculateDragExcludes();
88+
this.$items.classList.toggle('dragging', true);
89+
});
90+
this.$items.addEventListener('itemdragend', (e: any) => {
91+
this.$items.classList.toggle('dragging', false);
8892
});
8993
}
9094

src/pg/treeItem/treeItem.css

Lines changed: 30 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -84,19 +84,13 @@
8484
transform: translateY(-0.875rem);
8585
height: 1rem;
8686
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);
87+
z-index: 1;
9188
}
9289
[part=item].items [part=dropon] {
9390
grid-row: 1;
9491
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);
92+
margin: 0.125rem -0.25rem;
93+
z-index: 1;
10094
}
10195
[part=item].items.expanded [part=dropbelow] {
10296
display: none;
@@ -108,10 +102,7 @@
108102
transform: translateY(0.875rem);
109103
height: 1rem;
110104
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);
105+
z-index: 1;
115106
}
116107

117108
[part=item]:not(.items) {
@@ -137,10 +128,7 @@
137128
transform: translateY(-0.875rem);
138129
height: 1rem;
139130
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);
131+
z-index: 1;
144132
}
145133
[part=item]:not(.items) [part=dropon] {
146134
display: none;
@@ -152,27 +140,22 @@
152140
transform: translateY(0.875rem);
153141
height: 1rem;
154142
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);
143+
z-index: 2;
160144
}
161145

162-
163146
[part=item]:hover {
164147
background: var(--pg-tree-item-background-hover, rgb(69, 60, 79, 0.1));
165148
}
166149
[part=item].items.selected {
167150
background-color: var(--pg-tree-item-background-selected, rgb(69, 60, 79, 0.1));
168151
}
169-
[part=item].items.selected:not(.expanded) [part=toggle] {
152+
[part=item].items.selected:not(.expanded):not(.dragging) [part=toggle] {
170153
border-radius: 0.125rem;
171154
background-color: var(--pg-tree-item-background-selected, #453C4F);
172155
background-image: url("data:image/svg+xml; utf8, <svg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 24 24%27><path d=%27M 17,13L 17,11L 11,5L 9,7L 14,12L 9,17L 11,19%27 fill='white' /></svg>") !important;
173156
}
174157

175-
[part=item].items.selected.expanded [part=toggle] {
158+
[part=item].items.selected.expanded:not(.dragging) [part=toggle] {
176159
border-radius: 0.125rem;
177160
background-color: var(--pg-tree-item-background-selected, #453C4F);
178161
background-image: url("data:image/svg+xml; utf8, <svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><path d='M 11,17L 13,17L 19,11L 17,9L 12,14L 7,9L 5,11' fill='white' /></svg>") !important;
@@ -200,7 +183,6 @@
200183

201184
[part=item].dragging {
202185
position: relative;
203-
opacity: 0.5;
204186
}
205187
[part=item].dragging::after {
206188
position: absolute;
@@ -211,7 +193,8 @@
211193
bottom: 0;
212194
left: 0;
213195
border-radius: 0.25rem;
214-
border: 2px dashed #453C4F;
196+
background: rgba(255, 255, 255, 0.5);
197+
user-select: none;
215198
}
216199

217200
[part=actions] {
@@ -259,14 +242,27 @@
259242
display: flex;
260243
background-image: url("data:image/svg+xml; utf8, <svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><path d='M 11,17L 13,17L 19,11L 17,9L 12,14L 7,9L 5,11' fill='rgb(69 60 79)' /></svg>");
261244
}
262-
/*
263-
[part=item].items:not(.expanded):hover [part=toggle] {
245+
246+
[part=dropabove].drop::before,
247+
[part=dropbelow].drop::before {
248+
content: ' ';
249+
height: 0.25rem;
250+
background-color: rgb(79, 143, 249);
251+
border-radius: 0.125rem;
264252
display: flex;
265-
background-image: url("data:image/svg+xml; utf8, <svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><path d='M 17,13L 17,11L 11,5L 9,7L 14,12L 9,17L 11,19' fill='white' /></svg>");
253+
margin-top: 0.375rem;
266254
}
267255

268-
[part=item].items.expanded:hover [part=toggle] {
269-
display: flex;
270-
background-image: url("data:image/svg+xml; utf8, <svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><path d='M 11,17L 13,17L 19,11L 17,9L 12,14L 7,9L 5,11' fill='white' /></svg>");
256+
[part=dropon].drop {
257+
margin: -0.25rem !important;
258+
border: 4px solid rgb(79, 143, 249);
259+
border-radius: 0.25rem;
260+
}
261+
262+
@container style(--pg-_is-dragging: false) {
263+
[part=dropabove],
264+
[part=dropon],
265+
[part=dropbelow] {
266+
display: none;
267+
}
271268
}
272-
*/

src/pg/treeItem/treeItem.ts

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,9 @@ export default class PgTreeItem extends HTMLElement {
3131
@Part() $labelButton: HTMLButtonElement;
3232
@Part() $actions: HTMLDivElement;
3333
@Part() $items: HTMLDivElement;
34+
@Part() $dropabove: HTMLDivElement;
35+
@Part() $dropon: HTMLDivElement;
36+
@Part() $dropbelow: HTMLDivElement;
3437

3538
connectedCallback() {
3639
this.$toggle.addEventListener('click', this.#handleToggleClick.bind(this));
@@ -55,6 +58,13 @@ export default class PgTreeItem extends HTMLElement {
5558
this.$items.addEventListener('down', this.#handleDown.bind(this));
5659
this.$items.addEventListener('itemdragstart', this.#handleItemDragStart.bind(this));
5760
this.$items.addEventListener('itemdragend', this.#handleItemDragEnd.bind(this));
61+
// Drag
62+
this.$dropabove.addEventListener('dragenter', this.#handleDropAboveEnter.bind(this));
63+
this.$dropabove.addEventListener('dragleave', this.#handleDropAboveLeave.bind(this));
64+
this.$dropon.addEventListener('dragenter', this.#handleDropOnEnter.bind(this));
65+
this.$dropon.addEventListener('dragleave', this.#handleDropOnLeave.bind(this));
66+
this.$dropbelow.addEventListener('dragenter', this.#handleDropBelowEnter.bind(this));
67+
this.$dropbelow.addEventListener('dragleave', this.#handleDropBelowLeave.bind(this));
5868
forEach({
5969
container: this.$actions,
6070
items: this.actions,
@@ -393,4 +403,34 @@ export default class PgTreeItem extends HTMLElement {
393403
e.detail.indexes.unshift(this.index);
394404
}
395405

406+
#handleDropAboveEnter(e: any) {
407+
console.log('darg above');
408+
e.target.classList.toggle('drop', true);
409+
}
410+
411+
#handleDropAboveLeave(e: any) {
412+
console.log('darg leave');
413+
e.target.classList.toggle('drop', false);
414+
}
415+
416+
#handleDropOnEnter(e: any) {
417+
console.log('darg above');
418+
e.target.classList.toggle('drop', true);
419+
}
420+
421+
#handleDropOnLeave(e: any) {
422+
console.log('darg leave');
423+
e.target.classList.toggle('drop', false);
424+
}
425+
426+
#handleDropBelowEnter(e: any) {
427+
console.log('darg above');
428+
e.target.classList.toggle('drop', true);
429+
}
430+
431+
#handleDropBelowLeave(e: any) {
432+
console.log('darg leave');
433+
e.target.classList.toggle('drop', false);
434+
}
435+
396436
}

0 commit comments

Comments
 (0)