Skip to content

Commit a659098

Browse files
committed
refactor: move antigas dependencies fora do entry-point forms em ui-global
1 parent 5007f8d commit a659098

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

42 files changed

+246
-161
lines changed

packages/account/feature-admin/src/lib/containers/event/event.container.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { AccountRefForm, PresentationRefForm } from '@devmx/shared-ui-global';
1+
import { AccountRefForm, PresentationRefForm } from '@devmx/shared-ui-global/forms';
22
import { MatDatepickerModule } from '@angular/material/datepicker';
33
import { MatFormFieldModule } from '@angular/material/form-field';
44
import { provideNativeDateAdapter } from '@angular/material/core';

packages/account/feature-admin/src/lib/forms/change-roles.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { FormControl, FormGroup, Validators } from '@angular/forms';
22
import { ChangeRoles } from '@devmx/account-data-access';
33
import { AccountRole } from '@devmx/shared-api-interfaces';
4-
import { TypedForm } from '@devmx/shared-ui-global';
4+
import { TypedForm } from '@devmx/shared-ui-global/forms';
55

66
export class ChangeRolesForm extends FormGroup<TypedForm<ChangeRoles>> {
77
constructor() {

packages/account/feature-admin/src/lib/forms/create-event.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { CreateEvent, EventFormat } from '@devmx/shared-api-interfaces';
2+
import { FormOption, TypedForm } from '@devmx/shared-ui-global/forms';
23
import { FormControl, FormGroup, Validators } from '@angular/forms';
3-
import { FormOption, TypedForm } from '@devmx/shared-ui-global';
44

55
export class CreateEventForm extends FormGroup<TypedForm<CreateEvent>> {
66
formats: FormOption<EventFormat | ''>[] = [

packages/account/feature-admin/src/lib/forms/event.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import {
44
FormOption,
55
AccountRefForm,
66
PresentationRefForm,
7-
} from '@devmx/shared-ui-global';
7+
} from '@devmx/shared-ui-global/forms';
88
import {
99
Event,
1010
AccountRef,

packages/account/feature-admin/src/lib/forms/filter-account.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { FilterAccount } from '@devmx/account-data-access';
2+
import { TypedForm } from '@devmx/shared-ui-global/forms';
23
import { FormControl, FormGroup } from '@angular/forms';
3-
import { TypedForm } from '@devmx/shared-ui-global';
44

55
export class FilterAccountForm extends FormGroup<TypedForm<FilterAccount>> {
66
constructor() {

packages/account/feature-admin/src/lib/forms/filter-presentation.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1+
import { FormOption, TypedForm } from '@devmx/shared-ui-global/forms';
2+
import { PresentationFormat } from '@devmx/shared-api-interfaces';
13
import { FilterPresentation } from '@devmx/account-data-access';
24
import { FormControl, FormGroup } from '@angular/forms';
3-
import { FormOption, TypedForm } from '@devmx/shared-ui-global';
4-
import { PresentationFormat } from '@devmx/shared-api-interfaces';
55

66
export class FilterPresentationForm extends FormGroup<
77
TypedForm<FilterPresentation>

packages/account/feature-admin/src/lib/forms/roles.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
import { FormControl, FormGroup } from '@angular/forms';
21
import { AccountRole } from '@devmx/shared-api-interfaces';
3-
import { TypedForm } from '@devmx/shared-ui-global';
2+
import { TypedForm } from '@devmx/shared-ui-global/forms';
3+
import { FormControl, FormGroup } from '@angular/forms';
44

55
export class RolesForm extends FormGroup<TypedForm<AccountRole>> {
66
constructor() {

packages/account/feature-auth/src/lib/forms/sign-in.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { FormControl, FormGroup, Validators } from '@angular/forms';
2+
import { TypedForm } from '@devmx/shared-ui-global/forms';
23
import { SignIn } from '@devmx/shared-api-interfaces';
3-
import { TypedForm } from '@devmx/shared-ui-global';
44
import { BehaviorSubject } from 'rxjs';
55

66
export class SignInForm extends FormGroup<TypedForm<SignIn>> {

packages/account/feature-auth/src/lib/forms/sign-up.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1+
import { FormOption, TypedForm } from '@devmx/shared-ui-global/forms';
12
import { FormControl, FormGroup, Validators } from '@angular/forms';
2-
import { FormOption, TypedForm } from '@devmx/shared-ui-global';
33
import { Gender, SignUp } from '@devmx/shared-api-interfaces';
44
import { signal } from '@angular/core';
55
import { BehaviorSubject } from 'rxjs';

packages/account/feature-shell/src/lib/account-feature-shell.routes.ts

+2
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import { provideAutocompleteCitiesService } from '@devmx/location-ui-forms';
44
import { AuthFacade, provideAccount } from '@devmx/account-data-access';
55
import { providePresentation } from '@devmx/presentation-data-access';
66
import { roleGroupsGuard, roleGroupGuard, roleGuard } from './guards';
7+
import { provideFormDialog } from '@devmx/shared-ui-global/forms';
78
import { provideLocation } from '@devmx/location-data-access';
89
import { provideEvent } from '@devmx/event-data-access';
910
import { SidenavLeftOutlet } from './outlets';
@@ -36,6 +37,7 @@ export const accountFeatureShellRoutes: Route[] = [
3637
provideAutocompleteCitiesService(),
3738
provideLayoutToolbar(AuthFacade),
3839
provideLayoutSidenav(accountFeatureShellSidenav),
40+
provideFormDialog()
3941
],
4042
component: AccountFeatureShellComponent,
4143
children: [

packages/account/feature-shell/src/lib/components/editable-account/editable-account.component.html

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
<form [formGroup]="form" (submit)="onSubmit()">
1+
<!-- <form [formGroup]="form" (submit)="onSubmit()"> -->
22
<section formGroupName="name">
33
<mat-form-field>
44
<mat-label>Nome</mat-label>
@@ -96,4 +96,4 @@
9696
</button>
9797
</div>
9898
</footer>
99-
</form>
99+
<!-- </form> -->

packages/account/feature-shell/src/lib/components/editable-account/editable-account.component.scss

+6-12
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,18 @@
11
:host {
22
flex: 2;
3+
gap: 1.2em;
4+
width: 100%;
35
display: flex;
46
flex-direction: column;
5-
width: 100%;
6-
// margin: 0.6em;
77

8-
form {
8+
section {
99
display: flex;
10-
flex-direction: column;
1110
gap: 1.2em;
1211

13-
section {
14-
display: flex;
15-
gap: 1.2em;
16-
17-
align-items: center;
12+
align-items: center;
1813

19-
& > * {
20-
flex: 1;
21-
}
14+
& > * {
15+
flex: 1;
2216
}
2317

2418
footer {

packages/account/feature-shell/src/lib/components/editable-account/editable-account.component.ts

+14-1
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,14 @@ import { MatSelectModule } from '@angular/material/select';
88
import { UpdateAccount } from '@devmx/account-data-access';
99
import { MatInputModule } from '@angular/material/input';
1010
import { MatIconModule } from '@angular/material/icon';
11-
import { ReactiveFormsModule } from '@angular/forms';
11+
import { ControlContainer, ReactiveFormsModule } from '@angular/forms';
1212
import { UpdateAccountForm, UpdateAccountWithCity } from '../../forms';
1313
import {
1414
output,
1515
OnInit,
1616
Component,
1717
ChangeDetectionStrategy,
18+
inject,
1819
} from '@angular/core';
1920

2021
@Component({
@@ -24,6 +25,12 @@ import {
2425
styleUrl: './editable-account.component.scss',
2526
changeDetection: ChangeDetectionStrategy.OnPush,
2627
providers: [provideNativeDateAdapter()],
28+
viewProviders: [
29+
{
30+
provide: ControlContainer,
31+
useFactory: () => inject(ControlContainer, { skipSelf: true }),
32+
},
33+
],
2734
imports: [
2835
ReactiveFormsModule,
2936
AutocompleteCitiesComponent,
@@ -38,6 +45,12 @@ import {
3845
standalone: true,
3946
})
4047
export class EditableAccountComponent implements OnInit {
48+
container = inject(ControlContainer);
49+
50+
get formGroup() {
51+
return this.container.control as UpdateAccountForm;
52+
}
53+
4154
form = new UpdateAccountForm();
4255

4356
submitted = output<UpdateAccount | UpdateAccountWithCity>();

packages/account/feature-shell/src/lib/containers/settings/settings.container.html

+34-4
Original file line numberDiff line numberDiff line change
@@ -23,10 +23,12 @@
2323
</button>
2424
</div>
2525
</aside>
26-
<devmx-editable-account
27-
#accountComponent="devmxEditableAccount"
28-
(submitted)="onAccountSubmitted($event)"
29-
/>
26+
<form [formGroup]="form.updateAccount">
27+
<devmx-editable-account
28+
#accountComponent="devmxEditableAccount"
29+
(submitted)="onAccountSubmitted($event)"
30+
/>
31+
</form>
3032
</div>
3133
</mat-expansion-panel>
3234

@@ -84,3 +86,31 @@
8486
</div>
8587
</mat-expansion-panel>
8688
</mat-accordion>
89+
90+
@if (accountFacade.account$ | async; as account) {
91+
<mat-card>
92+
<mat-card-header>
93+
<mat-card-title>Conta</mat-card-title>
94+
</mat-card-header>
95+
96+
<mat-card-content>
97+
<button
98+
type="button"
99+
mat-raised-button
100+
(click)="openUpdateAccount(account)"
101+
>
102+
Alterar dados da conta
103+
</button>
104+
</mat-card-content>
105+
106+
<mat-card-header>
107+
<mat-card-title>Segurança</mat-card-title>
108+
</mat-card-header>
109+
110+
<mat-card-content>
111+
<button type="button" mat-raised-button (click)="openPassword(account)">
112+
Alterar senha
113+
</button>
114+
</mat-card-content>
115+
</mat-card>
116+
}

packages/account/feature-shell/src/lib/containers/settings/settings.container.scss

+2-1
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,9 @@
22
flex: 1;
33
display: flex;
44
flex-direction: column;
5-
align-items: center;
5+
// align-items: center;
66
margin-top: 2em;
7+
gap: 2em;
78

89
.settings-panel {
910
width: 48em;

packages/account/feature-shell/src/lib/containers/settings/settings.container.ts

+51-3
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,23 @@
1+
import { FormService, createFormGroup } from '@devmx/shared-ui-global/forms';
12
import { ImageComponent, PhotoComponent } from '@devmx/shared-ui-global';
23
import { MatDialog, MatDialogModule } from '@angular/material/dialog';
3-
import { AutoAssignable, UpdateAccountWithCity } from '../../forms';
44
import { MatExpansionModule } from '@angular/material/expansion';
55
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
66
import { MatButtonModule } from '@angular/material/button';
77
import { AccountOut } from '@devmx/shared-api-interfaces';
88
import { CityFacade } from '@devmx/location-data-access';
99
import { MatIconModule } from '@angular/material/icon';
1010
import { MatCardModule } from '@angular/material/card';
11+
import { ReactiveFormsModule } from '@angular/forms';
1112
import { CommonModule } from '@angular/common';
1213
import { switchMap, take } from 'rxjs';
14+
import {
15+
AutoAssignable,
16+
changePassword,
17+
updateAccount,
18+
UpdateAccountForm,
19+
UpdateAccountWithCity,
20+
} from '../../forms';
1321
import {
1422
AutocompleteCitiesComponent,
1523
AutocompleteCitiesService,
@@ -41,6 +49,7 @@ import {
4149
styleUrl: './settings.container.scss',
4250
changeDetection: ChangeDetectionStrategy.OnPush,
4351
imports: [
52+
ReactiveFormsModule,
4453
CommonModule,
4554
MatCardModule,
4655
MatIconModule,
@@ -68,8 +77,14 @@ export class SettingsContainer implements OnInit {
6877

6978
destroyRef = inject(DestroyRef);
7079

80+
formService = inject(FormService);
81+
7182
dialog = inject(MatDialog);
7283

84+
form = {
85+
updateAccount: new UpdateAccountForm(),
86+
};
87+
7388
editableAccountChild = viewChild(EditableAccountComponent);
7489
get editableAccount() {
7590
return this.editableAccountChild();
@@ -123,7 +138,7 @@ export class SettingsContainer implements OnInit {
123138

124139
populate(account: AccountOut) {
125140
if (this.editableAccount) {
126-
this.editableAccount.form.patchValue(account);
141+
this.form.updateAccount.patchValue(account);
127142
}
128143
if (this.editablePassword) {
129144
this.editablePassword.form.patchValue(account);
@@ -139,6 +154,39 @@ export class SettingsContainer implements OnInit {
139154
});
140155
}
141156

157+
openPassword(account: AccountOut) {
158+
const title = 'Alterar senha';
159+
160+
const fields = changePassword(account);
161+
const form = createFormGroup<ChangePassword>(fields);
162+
163+
const password$ = this.formService
164+
.open<ChangePassword>({ title, form, fields })
165+
.afterClosed();
166+
password$.pipe(take(1)).subscribe((result) => {
167+
console.log(result);
168+
});
169+
}
170+
171+
openUpdateAccount(account: AccountOut) {
172+
const title = 'Alterar dados da conta';
173+
174+
const fields = updateAccount(account);
175+
console.log(fields);
176+
177+
const form = createFormGroup(fields);
178+
console.log(form);
179+
180+
181+
const account$ = this.formService
182+
.open({ title, fields, form })
183+
.afterClosed();
184+
185+
// account$.pipe(take(1)).subscribe((result) => {
186+
// console.log(result);
187+
// });
188+
}
189+
142190
onAccountSubmitted(data: UpdateAccount | UpdateAccountWithCity) {
143191
if (data.city && typeof data.city === 'object') {
144192
data.city = data.city.id;
@@ -147,7 +195,7 @@ export class SettingsContainer implements OnInit {
147195
}
148196

149197
onPasswordSubmitted(data: ChangePassword) {
150-
this.accountFacade.changePassword(data);
198+
// this.accountFacade.changePassword(data);
151199
}
152200

153201
onRolesSubmitted(data: AutoAssignable) {

packages/account/feature-shell/src/lib/forms/auto-assignable-role.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { FormControl, FormGroup, Validators } from '@angular/forms';
22
import { AutoAssignableRole } from '@devmx/shared-api-interfaces';
3-
import { Form } from '@devmx/shared-ui-global';
3+
import { Form } from '@devmx/shared-ui-global/forms';
44

55
export interface AutoAssignable {
66
id: string;

packages/account/feature-shell/src/lib/forms/create-presentation.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { FormArray, FormControl, FormGroup, Validators } from '@angular/forms';
2-
import { FormOption, TypedForm } from '@devmx/shared-ui-global';
2+
import { FormOption, TypedForm } from '@devmx/shared-ui-global/forms';
33
import {
44
CreatePresentation,
55
PresentationFormat,
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
import { textbox, TypedFields } from '@devmx/shared-ui-global/forms';
2+
import { ChangePassword } from '@devmx/account-data-access';
3+
import { AccountOut } from '@devmx/shared-api-interfaces';
4+
5+
export const changePassword = (account: Pick<AccountOut, 'id' | 'username'>): TypedFields<ChangePassword> => ({
6+
id: textbox({
7+
label: 'Id',
8+
type: 'hidden',
9+
value: account.id,
10+
}),
11+
12+
username: textbox({
13+
label: 'Usuário',
14+
type: 'hidden',
15+
value: account.username,
16+
errors: {
17+
required: 'Obrigatório',
18+
},
19+
}),
20+
21+
currentPassword: textbox({
22+
label: 'Senha atual',
23+
type: 'password',
24+
autocomplete: 'current-password',
25+
errors: {
26+
required: 'Obrigatório',
27+
},
28+
}),
29+
30+
newPassword: textbox({
31+
label: 'Nova senha',
32+
type: 'password',
33+
autocomplete: 'new-password',
34+
errors: {
35+
required: 'Obrigatório',
36+
},
37+
}),
38+
});
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
export * from './change-password';
2+
export * from './update-account';

0 commit comments

Comments
 (0)