Browse Source

update: some upgrade enhancements for the setting-management

pull/25690/head
sumeyye 4 months ago
parent
commit
8a46a5a25a
  1. 6
      npm/ng-packs/packages/setting-management/config/src/lib/components/email-setting-group/email-setting-group.component.html
  2. 17
      npm/ng-packs/packages/setting-management/config/src/lib/components/email-setting-group/email-setting-group.component.ts
  3. 10
      npm/ng-packs/packages/setting-management/src/lib/components/setting-management.component.html
  4. 38
      npm/ng-packs/packages/setting-management/src/lib/components/setting-management.component.ts

6
npm/ng-packs/packages/setting-management/config/src/lib/components/email-setting-group/email-setting-group.component.html

@ -98,7 +98,11 @@
</form> </form>
} }
<abp-modal [(visible)]="isEmailTestModalOpen" [options]="modalSize"> <abp-modal
[visible]="isEmailTestModalOpen()"
(visibleChange)="isEmailTestModalOpen.set($event)"
[options]="modalSize"
>
<ng-template #abpHeader> <ng-template #abpHeader>
<h3>{{ 'AbpSettingManagement::SendTestEmail' | abpLocalization }}</h3> <h3>{{ 'AbpSettingManagement::SendTestEmail' | abpLocalization }}</h3>
</ng-template> </ng-template>

17
npm/ng-packs/packages/setting-management/config/src/lib/components/email-setting-group/email-setting-group.component.ts

@ -5,7 +5,7 @@ import {
ModalComponent, ModalComponent,
ToasterService, ToasterService,
} from '@abp/ng.theme.shared'; } from '@abp/ng.theme.shared';
import { Component, inject, OnInit, signal } from '@angular/core'; import { Component, inject, OnInit, signal, ChangeDetectionStrategy } from '@angular/core';
import { toSignal } from '@angular/core/rxjs-interop'; import { toSignal } from '@angular/core/rxjs-interop';
import { import {
ReactiveFormsModule, ReactiveFormsModule,
@ -28,6 +28,7 @@ import { NgxValidateCoreModule } from '@ngx-validate/core';
const { required, email } = Validators; const { required, email } = Validators;
@Component({ @Component({
changeDetection: ChangeDetectionStrategy.OnPush,
selector: 'abp-email-setting-group', selector: 'abp-email-setting-group',
templateUrl: 'email-setting-group.component.html', templateUrl: 'email-setting-group.component.html',
imports: [ imports: [
@ -53,11 +54,11 @@ export class EmailSettingGroupComponent implements OnInit {
readonly form = signal<UntypedFormGroup | undefined>(undefined); readonly form = signal<UntypedFormGroup | undefined>(undefined);
readonly loading = signal(true); readonly loading = signal(true);
readonly saving = signal(false);
readonly isEmailTestModalOpen = signal(false);
emailTestForm!: UntypedFormGroup; emailTestForm!: UntypedFormGroup;
saving = false;
emailingPolicy = SettingManagementPolicyNames.Emailing; emailingPolicy = SettingManagementPolicyNames.Emailing;
isEmailTestModalOpen = false;
modalSize: NgbModalOptions = { size: 'lg' }; modalSize: NgbModalOptions = { size: 'lg' };
ngOnInit() { ngOnInit() {
@ -93,12 +94,12 @@ export class EmailSettingGroupComponent implements OnInit {
submit() { submit() {
const form = this.form(); const form = this.form();
if (!form || this.saving || form.invalid) return; if (!form || this.saving() || form.invalid) return;
this.saving = true; this.saving.set(true);
this.emailSettingsService this.emailSettingsService
.update(form.value) .update(form.value)
.pipe(finalize(() => (this.saving = false))) .pipe(finalize(() => this.saving.set(false)))
.subscribe(() => { .subscribe(() => {
this.toasterService.success('AbpSettingManagement::SavedSuccessfully'); this.toasterService.success('AbpSettingManagement::SavedSuccessfully');
this.getData(); this.getData();
@ -107,7 +108,7 @@ export class EmailSettingGroupComponent implements OnInit {
openSendEmailModal() { openSendEmailModal() {
this.buildEmailTestForm(); this.buildEmailTestForm();
this.isEmailTestModalOpen = true; this.isEmailTestModalOpen.set(true);
} }
buildEmailTestForm() { buildEmailTestForm() {
@ -133,7 +134,7 @@ export class EmailSettingGroupComponent implements OnInit {
this.emailSettingsService.sendTestEmail(this.emailTestForm.value).subscribe(() => { this.emailSettingsService.sendTestEmail(this.emailTestForm.value).subscribe(() => {
this.toasterService.success('AbpSettingManagement::SentSuccessfully'); this.toasterService.success('AbpSettingManagement::SentSuccessfully');
this.isEmailTestModalOpen = false; this.isEmailTestModalOpen.set(false);
}); });
} }
} }

10
npm/ng-packs/packages/setting-management/src/lib/components/setting-management.component.html

@ -2,7 +2,7 @@
<div id="SettingManagementWrapper"> <div id="SettingManagementWrapper">
<div class="card"> <div class="card">
<div class="card-body"> <div class="card-body">
@if (settings.length) { @if (settings().length) {
<div class="row" ngTabs> <div class="row" ngTabs>
<div class="col-12 col-md-3 mb-2 mb-md-0"> <div class="col-12 col-md-3 mb-2 mb-md-0">
<div <div
@ -10,14 +10,14 @@
id="nav-tab" id="nav-tab"
ngTabList ngTabList
orientation="vertical" orientation="vertical"
[selectedTab]="selected?.name" [selectedTab]="selected()?.name"
> >
<ng-container *abpFor="let setting of settings"> <ng-container *abpFor="let setting of settings()">
<button <button
ngTab ngTab
#tab="ngTab" #tab="ngTab"
[value]="setting.name" [value]="setting.name"
(click)="selected = setting" (click)="selected.set(setting)"
class="nav-link text-start" class="nav-link text-start"
[class.active]="tab.selected()" [class.active]="tab.selected()"
*abpPermission="setting.requiredPolicy" *abpPermission="setting.requiredPolicy"
@ -28,7 +28,7 @@
</div> </div>
</div> </div>
<div class="col-12 col-md-9"> <div class="col-12 col-md-9">
<ng-container *abpFor="let setting of settings"> <ng-container *abpFor="let setting of settings()">
<div <div
ngTabPanel ngTabPanel
[value]="setting.name" [value]="setting.name"

38
npm/ng-packs/packages/setting-management/src/lib/components/setting-management.component.ts

@ -1,12 +1,13 @@
import { ChangeDetectionStrategy, Component, effect, inject, signal } from '@angular/core';
import { Tab as NgTab, TabContent, TabList, TabPanel, Tabs } from '@angular/aria/tabs';
import { NgComponentOutlet } from '@angular/common';
import { toSignal } from '@angular/core/rxjs-interop';
import { ABP, ForDirective, LocalizationPipe, PermissionDirective } from '@abp/ng.core'; import { ABP, ForDirective, LocalizationPipe, PermissionDirective } from '@abp/ng.core';
import { SettingTabsService } from '@abp/ng.setting-management/config'; import { SettingTabsService } from '@abp/ng.setting-management/config';
import { Component, inject, OnDestroy, OnInit } from '@angular/core';
import { Subscription } from 'rxjs';
import { NgComponentOutlet } from '@angular/common';
import { PageComponent } from '@abp/ng.components/page'; import { PageComponent } from '@abp/ng.components/page';
import { Tab, TabContent, TabList, TabPanel, Tabs } from '@angular/aria/tabs';
@Component({ @Component({
changeDetection: ChangeDetectionStrategy.OnPush,
selector: 'abp-setting-management', selector: 'abp-setting-management',
templateUrl: './setting-management.component.html', templateUrl: './setting-management.component.html',
imports: [ imports: [
@ -17,7 +18,7 @@ import { Tab, TabContent, TabList, TabPanel, Tabs } from '@angular/aria/tabs';
ForDirective, ForDirective,
Tabs, Tabs,
TabList, TabList,
Tab, NgTab,
TabPanel, TabPanel,
TabContent, TabContent,
], ],
@ -29,25 +30,18 @@ import { Tab, TabContent, TabList, TabPanel, Tabs } from '@angular/aria/tabs';
`, `,
], ],
}) })
export class SettingManagementComponent implements OnDestroy, OnInit { export class SettingManagementComponent {
private settingTabsService = inject(SettingTabsService); private settingTabsService = inject(SettingTabsService);
private subscription = new Subscription();
settings: ABP.Tab[] = []; readonly settings = toSignal(this.settingTabsService.visible$, { initialValue: [] });
readonly selected = signal<ABP.Tab | undefined>(undefined);
selected!: ABP.Tab; constructor() {
effect(() => {
ngOnDestroy() { const settings = this.settings();
this.subscription.unsubscribe(); if (!this.selected() && settings.length) {
} this.selected.set(settings[0] as ABP.Tab);
}
ngOnInit() { });
this.subscription.add(
this.settingTabsService.visible$.subscribe(settings => {
this.settings = settings;
if (!this.selected) this.selected = this.settings[0];
}),
);
} }
} }

Loading…
Cancel
Save