Skip to content

Commit 4e32a26

Browse files
committed
✨ add reload data when click a folder
1 parent f1aa7cd commit 4e32a26

File tree

7 files changed

+90
-47
lines changed

7 files changed

+90
-47
lines changed

src/app/features/folder/components/components.module.ts

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11
import { CommonModule } from '@angular/common';
22
import { NgModule } from '@angular/core';
3+
import { RouterModule } from '@angular/router';
4+
5+
import { DropdownsModule } from '@shared/dropdowns/dropdowns.module';
36

47
import { PipesModule } from '@pipes/pipes.module';
58

@@ -11,7 +14,9 @@ import { TableFilesComponent } from './table-files/table-files.component';
1114
],
1215
imports: [
1316
CommonModule,
14-
PipesModule
17+
PipesModule,
18+
RouterModule,
19+
DropdownsModule
1520
],
1621
exports: [
1722
TableFilesComponent,
Lines changed: 16 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,21 @@
11
<div class="items">
2-
<div class="item">
3-
<div class="icon">
4-
<i class="bx" [ngClass]="getIcon"></i>
2+
<div class="item" >
3+
<div class="data" (click)="goToFolder()">
4+
<div class="icon">
5+
<i class="bx" [ngClass]="getIcon" [ngStyle]="{'color': (file.color) ? file.color : ''}"></i>
6+
</div>
7+
<div class="name">
8+
<span>{{ file.name }}</span>
9+
</div>
10+
<div class="type">
11+
<span>{{ getExtension() }}</span>
12+
</div>
13+
<div class="size">
14+
<span>{{ file.size | fileSize }}</span>
15+
</div>
516
</div>
6-
<div class="name">
7-
<span>{{ file.name }}</span>
8-
</div>
9-
<div class="type">
10-
<span>{{ getExtension() }}</span>
11-
</div>
12-
<div class="size">
13-
<span>{{ file.size | fileSize }}</span>
14-
</div>
15-
<div class="actions">
16-
...
17+
<div class="dots">
18+
<app-dots-dropdown class="actions" [file]="file"></app-dots-dropdown>
1719
</div>
1820
</div>
1921
</div>

src/app/features/folder/components/table-files/table-files.component.scss

Lines changed: 48 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -5,48 +5,68 @@
55
display: flex;
66
flex-direction: row;
77
align-items: center;
8-
height: 3.2rem;
9-
padding: 0 0.5rem;
8+
justify-content: space-between;
9+
padding: 0.6rem 0.5rem;
1010
gap: 1rem;
1111
border-radius: 1rem;
1212
transition: 0.3s ease;
1313
cursor: pointer;
1414

1515
&:hover {
16-
background: var(--bg-hover-2);
16+
background: var(--bg-hover-3);
1717
}
1818

19-
& .icon {
20-
@include fs-2;
21-
width: 2.5rem;
22-
height: 2.5rem;
23-
border-radius: 50%;
19+
& .data {
2420
display: flex;
21+
flex-direction: row;
2522
align-items: center;
26-
justify-content: center;
27-
}
23+
gap: 1rem;
24+
max-width: 80%;
25+
flex: 1;
2826

29-
& .name, & .type, & .size {
30-
overflow: hidden;
31-
text-overflow: ellipsis;
32-
white-space: nowrap;
33-
}
27+
& .icon {
28+
@include fs-2;
29+
width: 2.5rem;
30+
height: 2.5rem;
31+
border-radius: 50%;
32+
display: flex;
33+
align-items: center;
34+
justify-content: center;
35+
}
3436

35-
& .name {
36-
@include fs-5;
37-
@include fw-400;
38-
flex: 2;
39-
color: var(--fc-primary);
40-
}
37+
& .name, & .type, & .size {
38+
overflow: hidden;
39+
text-overflow: ellipsis;
40+
white-space: nowrap;
41+
}
4142

42-
& .type, & .size {
43-
@include fs-6;
44-
flex: 1;
45-
color: var(--fc-secondary);
43+
& .name {
44+
@include fs-5;
45+
@include fw-400;
46+
flex: 2;
47+
color: var(--fc-primary);
48+
}
49+
50+
& .type, & .size {
51+
@include fs-6;
52+
flex: 1;
53+
color: var(--fc-secondary);
54+
}
4655
}
4756

48-
& .actions {
49-
flex: 1;
50-
text-align: center;
57+
58+
& .dots {
59+
position: relative;
60+
display: flex;
61+
align-items: center;
62+
justify-content: flex-end;
63+
64+
& .actions {
65+
margin-right: 1rem;
66+
67+
.dropdown-list {
68+
top: 40px;
69+
}
70+
}
5171
}
5272
}

src/app/features/folder/components/table-files/table-files.component.ts

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import { Component, Input } from '@angular/core';
2+
import { Router } from '@angular/router';
23

34
import { File } from '@models/file.model';
45
import { Folder } from '@models/folder.model';
@@ -13,6 +14,10 @@ import { ICONS } from '@constants/file.constant';
1314
export class TableFilesComponent {
1415
@Input() file: File | Folder;
1516

17+
constructor(
18+
private router: Router
19+
) {}
20+
1621
get getIcon(): string {
1722
if (this.file.type === 'folder') return 'bxs-folder';
1823
const extension = this.file.name.split('.').pop();
@@ -23,4 +28,10 @@ export class TableFilesComponent {
2328
if (this.file.type === 'folder') return 'folder';
2429
return this.file.name.split('.').pop() as string;
2530
}
31+
32+
goToFolder(): void {
33+
if (this.file.type === 'folder') {
34+
this.router.navigate(['/folder', this.file._id]);
35+
}
36+
}
2637
}

src/app/features/folder/folder.component.html

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,3 +18,5 @@
1818

1919
<app-new-folder></app-new-folder>
2020
<app-upload-files></app-upload-files>
21+
<app-update-name></app-update-name>
22+
<app-colors></app-colors>

src/app/features/folder/folder.component.ts

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import { Component, OnDestroy, OnInit } from '@angular/core';
2+
import { ActivatedRoute } from '@angular/router';
23

34
import { Subscription } from 'rxjs';
45

@@ -14,20 +15,23 @@ import { Folder } from '@models/folder.model';
1415
styleUrls: ['./folder.component.scss']
1516
})
1617
export class FolderComponent implements OnInit, OnDestroy {
18+
private folderCreatedSubscripion: Subscription;
19+
private filesUploadedSubscription: Subscription;
20+
private routerSubscription: Subscription;
1721
folder: Folder;
18-
folderCreatedSubscripion: Subscription;
19-
filesUploadedSubscription: Subscription;
2022
loading = false;
2123
allFiles: (Folder | File)[];
2224

2325
constructor(
2426
private folderService: FolderService,
2527
private fileService: FileService,
28+
private activadedRoute: ActivatedRoute,
2629
) { }
2730

2831
ngOnDestroy(): void {
2932
this.folderCreatedSubscripion.unsubscribe();
3033
this.filesUploadedSubscription.unsubscribe();
34+
this.routerSubscription.unsubscribe();
3135
}
3236

3337
ngOnInit(): void {
@@ -42,7 +46,7 @@ export class FolderComponent implements OnInit, OnDestroy {
4246
this.folder.files.push(...files);
4347
this.mixFilesAndFolders();
4448
});
45-
this.getFolder();
49+
this.routerSubscription = this.activadedRoute.params.subscribe(() => this.getFolder());
4650
}
4751

4852
getFolder(): void {

src/app/shared/dropdowns/dots-dropdown/dots-dropdown.component.scss

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,6 @@ ul {
8585
text-overflow: ellipsis;
8686
overflow: hidden;
8787
white-space: nowrap;
88-
flex: 1;
8988
}
9089

9190
& i {

0 commit comments

Comments
 (0)