-
-
+
+
+
+
+
{{'USER_MAINTENANCE'| translate}}
+
{{ 'SECURITY' | translate }}
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{'LOADING' | translate}} ...
+
+ {{error}}
+
+
+
+
+ {{'USER_ID' | translate}}
+
+
+
+
+ {{'FULL_NAME' | translate}}
+
+
+
+
+ {{'EMAIL' | translate}}
+
+
+
+
+ {{'USER_GROUP_NAME' | translate}}
+
+
+
+
+ {{user.userId}}
+ {{user.fullName}}
+ {{user.email}}
+ {{user.usrGrpName}}
+
+
+
+
+
+
+
+
+
+
+ | username |
+ {{user.username}} |
+
+
+
+
+
+
+
+
+
+
+
+
+
{{'EMAIL' | translate}}{{user.email}}
+
{{'GROUP' | translate}}{{user.usrGrpName}}
+
+
+
+
-
-
Are You Sure Want to delete?
-
{{rowSelected.userId}}
+
+
+
+
+ {{'USER_ID' | translate}}:
+ {{rowSelected.userId}}
+
+
+ {{'FULL_NAME' | translate}}:
+ {{rowSelected.fullName}}
+
+
+ {{'EMAIL' | translate}}:
+ {{rowSelected.email}}
+
+
+
-
- Import File
+ {{'IMPORT_FILE' | translate}}
-
+
\ No newline at end of file
diff --git a/frontend/angular-clarity-master/src/app/modules/main/admin/usermaintance/usermaintance.component.scss b/frontend/angular-clarity-master/src/app/modules/main/admin/usermaintance/usermaintance.component.scss
index 76ab29b..428932d 100644
--- a/frontend/angular-clarity-master/src/app/modules/main/admin/usermaintance/usermaintance.component.scss
+++ b/frontend/angular-clarity-master/src/app/modules/main/admin/usermaintance/usermaintance.component.scss
@@ -1,4 +1,654 @@
-.delete,.heading{
+@import '../../../../../styles.scss';
+@import '../../../../../styles/design-tokens';
+
+.delete, .heading {
text-align: center;
color: red;
}
+
+// Modern User Maintenance Styles
+.um-hero {
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ padding: 24px 32px;
+ background: linear-gradient(135deg, var(--theme-primary) 0%, var(--theme-accent) 100%);
+ color: white;
+ border-radius: 16px;
+ margin-bottom: 24px;
+ box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04);
+ backdrop-filter: blur(16px);
+ border: 1px solid rgba(255, 255, 255, 0.2);
+ font-family: var(--theme-font-primary);
+
+ &__content {
+ display: flex;
+ align-items: center;
+ gap: 16px;
+ }
+
+ &__icon {
+ background: rgba(255, 255, 255, 0.2);
+ border-radius: 50%;
+ padding: 16px;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+
+ clr-icon {
+ width: 36px;
+ height: 36px;
+ color: white;
+ }
+ }
+
+ &__title {
+ font-size: 28px;
+ font-weight: 700;
+ margin: 0;
+ color: white;
+ font-family: var(--theme-font-secondary);
+ }
+
+ &__subtitle {
+ font-size: 16px;
+ margin: 0;
+ opacity: 0.9;
+ color: rgba(255, 255, 255, 0.8);
+ }
+
+ &__actions {
+ display: flex;
+ gap: 12px;
+ }
+}
+
+.um-btn-text {
+ margin-left: 8px;
+}
+
+// Modern Button Styles using ThemeService
+.um-btn {
+ display: inline-flex;
+ align-items: center;
+ justify-content: center;
+ gap: 8px;
+ padding: 12px 20px;
+ font-size: 14px;
+ font-weight: 500;
+ line-height: 1;
+ border-radius: 8px;
+ border: 1px solid transparent;
+ cursor: pointer;
+ transition: all 200ms ease-out;
+ text-decoration: none;
+ position: relative;
+ overflow: hidden;
+ font-family: var(--theme-font-primary);
+ z-index: 1;
+
+ &:focus {
+ outline: 2px solid var(--theme-primary);
+ outline-offset: 2px;
+ }
+
+ &:disabled {
+ opacity: 0.5;
+ cursor: not-allowed;
+ pointer-events: none;
+ }
+
+ // Sizes
+ &.um-btn-sm {
+ padding: 8px 16px;
+ font-size: 13px;
+ height: 32px;
+ }
+
+ &.um-btn-md {
+ padding: 12px 20px;
+ font-size: 14px;
+ height: 40px;
+ }
+
+ &.um-btn-lg {
+ padding: 16px 24px;
+ font-size: 16px;
+ height: 48px;
+ }
+
+ // Variants
+ &.um-btn-primary {
+ background: linear-gradient(135deg, var(--theme-primary) 0%, var(--theme-accent) 100%);
+ color: white;
+ border-color: var(--theme-primary);
+ box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06);
+
+ &:hover {
+ background: linear-gradient(135deg, var(--theme-primary, #0284c7) 0%, var(--theme-accent, #7c3aed) 100%);
+ transform: translateY(-2px);
+ box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05);
+ }
+
+ &:active {
+ transform: translateY(0);
+ box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06);
+ }
+ }
+
+ &.um-btn-secondary {
+ background: var(--theme-surface);
+ color: var(--theme-text);
+ border-color: rgba(0, 0, 0, 0.1);
+ box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06);
+
+ &:hover {
+ background: var(--theme-background);
+ border-color: rgba(0, 0, 0, 0.2);
+ transform: translateY(-1px);
+ box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05);
+ }
+ }
+
+ &.um-btn-outline {
+ background: transparent;
+ color: var(--theme-secondary);
+ border-color: var(--theme-secondary);
+ box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06);
+
+ &:hover {
+ background: rgba(100, 116, 139, 0.1); // var(--theme-secondary) with 10% opacity
+ border-color: var(--theme-secondary);
+ color: var(--theme-secondary);
+ box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05);
+ }
+ }
+
+ &.um-btn-error {
+ background: var(--theme-error, #ef4444);
+ color: white;
+ border-color: var(--theme-error, #ef4444);
+ box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06);
+
+ &:hover {
+ background: var(--theme-error-dark, #dc2626);
+ border-color: var(--theme-error-dark, #dc2626);
+ transform: translateY(-2px);
+ box-shadow: 0 10px 15px -3px rgba(239, 68, 68, 0.3), 0 4px 6px -2px rgba(239, 68, 68, 0.1);
+ }
+ }
+
+ &.um-btn-ghost {
+ background: transparent;
+ color: var(--theme-text-secondary);
+ border-color: transparent;
+
+ &:hover {
+ background: var(--theme-background);
+ color: var(--theme-text);
+ }
+ }
+}
+
+.um-toolbar {
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ margin-bottom: 24px;
+ padding: 16px;
+ background: var(--theme-surface);
+ border-radius: 12px;
+ box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06);
+
+ &__left {
+ flex: 1;
+ }
+
+ &__right {
+ display: flex;
+ gap: 8px;
+ }
+}
+
+.um-search {
+ position: relative;
+ max-width: 400px;
+
+ clr-icon {
+ position: absolute;
+ left: 12px;
+ top: 50%;
+ transform: translateY(-50%);
+ color: #9ca3af;
+ z-index: 1;
+ }
+
+ &__input {
+ width: 100%;
+ padding: 12px 12px 12px 40px;
+ border: 1px solid rgba(0, 0, 0, 0.1);
+ border-radius: 8px;
+ font-size: 14px;
+ transition: all 200ms ease-out;
+ background: var(--theme-surface);
+ color: var(--theme-text);
+ box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.05);
+
+ &:focus {
+ outline: none;
+ border-color: var(--theme-primary);
+ box-shadow: 0 0 0 3px rgba(14, 165, 233, 0.1); // var(--theme-primary) with 10% opacity
+ }
+ }
+}
+
+.um-view-toggle {
+ display: flex;
+ border: 1px solid #d1d5db;
+ border-radius: 8px;
+ overflow: hidden;
+
+ .um-btn {
+ border-radius: 0;
+ border: none;
+ background: var(--theme-surface);
+ color: var(--theme-text-secondary);
+
+ &:first-child {
+ border-right: 1px solid #d1d5db;
+ }
+
+ &.um-btn-primary {
+ background: var(--theme-primary);
+ color: white;
+ }
+ }
+}
+
+// Modern Table Styles
+.um-grid {
+ background: var(--theme-surface);
+ border-radius: 16px;
+ overflow: hidden;
+ box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04);
+ margin-bottom: 24px;
+
+ ::ng-deep .datagrid {
+ .datagrid-head {
+ background: var(--theme-background);
+
+ .datagrid-column {
+ padding: 16px 24px;
+ font-size: 12px;
+ font-weight: 600;
+ color: var(--theme-text-secondary);
+ text-transform: uppercase;
+ letter-spacing: 0.05em;
+ border-bottom: 1px solid #e5e7eb;
+ }
+ }
+
+ .datagrid-row {
+ transition: background-color 150ms ease-out;
+
+ &:hover {
+ background: var(--theme-background);
+ }
+
+ &:not(:last-child) {
+ border-bottom: 1px solid #e5e7eb;
+ }
+
+ .datagrid-cell {
+ padding: 16px 24px;
+ font-size: 14px;
+ color: var(--theme-text);
+ }
+ }
+
+ .datagrid-footer {
+ background: var(--theme-background);
+ border-top: 1px solid #e5e7eb;
+ padding: 16px 24px;
+ }
+ }
+}
+
+.um-grid-footer {
+ background: var(--theme-background);
+ border-top: 1px solid #e5e7eb;
+}
+
+// Modern Card Styles - More beautiful design
+.um-cards {
+ display: grid;
+ grid-template-columns: repeat(auto-fill, minmax(320px, 1fr));
+ gap: 24px;
+ margin-bottom: 24px;
+}
+
+.um-card-item {
+ background: var(--theme-surface);
+ border: 1px solid rgba(0, 0, 0, 0.06);
+ border-radius: var(--theme-border-radius); // Using theme variable
+ box-shadow: var(--theme-shadow); // Using theme variable
+ overflow: hidden;
+ display: flex;
+ flex-direction: column;
+ transition: all 300ms cubic-bezier(0.4, 0, 0.2, 1);
+
+ &:hover {
+ transform: translateY(-5px);
+ box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25);
+ border-color: rgba(14, 165, 233, 0.3); // var(--theme-primary) with 30% opacity
+ }
+
+ &__header {
+ display: flex;
+ align-items: center;
+ gap: 10px;
+ padding: 16px;
+ background: linear-gradient(135deg, rgba(14, 165, 233, 0.1), transparent); // var(--theme-primary) with 10% opacity
+ min-height: 60px;
+ }
+
+ &__icon {
+ clr-icon {
+ width: 24px;
+ height: 24px;
+ color: var(--theme-primary);
+ }
+ }
+
+ &__title {
+ font-weight: 700;
+ flex: 1 1 auto;
+ font-size: 18px;
+ color: var(--theme-text);
+ max-width: 60%;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ white-space: nowrap;
+ }
+
+ &__badge {
+ margin-left: auto;
+ display: inline-flex;
+ align-items: center;
+ padding: 4px 12px;
+ font-size: 12px;
+ font-weight: 600;
+ border-radius: 9999px;
+ text-transform: uppercase;
+ letter-spacing: 0.05em;
+ background: linear-gradient(135deg, rgba(100, 116, 139, 0.1) 0%, rgba(100, 116, 139, 0.05) 100%);
+ color: var(--theme-secondary);
+ }
+
+ &__body {
+ padding: 16px;
+ display: grid;
+ grid-template-columns: repeat(2, minmax(0, 1fr));
+ gap: 12px;
+ }
+
+ &__footer {
+ padding: 16px;
+ display: flex;
+ gap: 8px;
+ border-top: 1px solid rgba(0, 0, 0, 0.06);
+ background: var(--theme-background);
+ }
+}
+
+.um-kv {
+ display: flex;
+ justify-content: space-between;
+ font-size: 14px;
+
+ span {
+ color: var(--theme-text-secondary);
+ }
+
+ strong {
+ color: var(--theme-text);
+ font-weight: 500;
+ text-align: right;
+ max-width: 60%;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ }
+}
+
+// Theme the card footer buttons
+.um-card-item__footer .um-btn {
+ border-radius: 10px;
+ flex: 1;
+ justify-content: center;
+}
+
+.um-card-item__footer .um-btn.um-btn-outline {
+ border: 1px solid var(--theme-secondary);
+ color: var(--theme-secondary);
+ background: transparent;
+}
+
+.um-card-item__footer .um-btn.um-btn-outline:hover {
+ background: rgba(0, 0, 0, 0.04);
+}
+
+.um-card-item__footer .um-btn.um-btn-error {
+ background: var(--theme-error, #ef4444);
+ color: #fff;
+}
+
+.um-card-item__footer .um-btn.um-btn-error:hover {
+ background: var(--theme-error-dark, #dc2626);
+}
+
+// Action items in table
+.um-action-item {
+ @extend .um-btn;
+ @extend .um-btn-ghost;
+ @extend .um-btn-sm;
+ width: 100%;
+ justify-content: flex-start;
+ margin-bottom: 4px;
+ text-align: left;
+
+ clr-icon {
+ width: 16px;
+ height: 16px;
+ margin-right: 8px;
+ }
+
+ &.um-btn-error {
+ color: var(--theme-error, #ef4444);
+
+ &:hover {
+ background: rgba(239, 68, 68, 0.1);
+ }
+ }
+}
+
+// Ensure action overflow is visible
+::ng-deep .datagrid-action-overflow {
+ button.action-item {
+ display: flex;
+ align-items: center;
+ width: 100%;
+ text-align: left;
+ padding: 8px 12px;
+
+ clr-icon {
+ margin-right: 8px;
+ }
+ }
+}
+
+// Delete Modal Styles
+.um-delete-header {
+ text-align: center;
+ padding: 24px;
+ border-bottom: 1px solid rgba(0, 0, 0, 0.05);
+}
+
+.um-delete-icon {
+ color: #ef4444;
+ margin-bottom: 16px;
+}
+
+.um-delete-title {
+ font-size: 24px;
+ font-weight: 700;
+ color: var(--theme-text);
+ margin: 0 0 8px 0;
+}
+
+.um-delete-subtitle {
+ font-size: 16px;
+ color: var(--theme-text-secondary);
+ margin: 0;
+}
+
+.um-delete-details {
+ padding: 24px;
+}
+
+.um-delete-detail-item {
+ display: flex;
+ justify-content: space-between;
+ padding: 12px 0;
+ border-bottom: 1px solid rgba(0, 0, 0, 0.05);
+
+ &:last-child {
+ border-bottom: none;
+ }
+}
+
+.um-delete-detail-label {
+ font-weight: 500;
+ color: var(--theme-text-secondary);
+}
+
+.um-delete-detail-value {
+ font-weight: 600;
+ color: var(--theme-text);
+}
+
+// Form Styles
+.um-form-group {
+ margin-bottom: 20px;
+}
+
+.um-form-label {
+ display: block;
+ font-size: 14px;
+ font-weight: 500;
+ color: var(--theme-text);
+ margin-bottom: 8px;
+ font-family: var(--theme-font-primary);
+}
+
+.um-file-input {
+ width: 100%;
+ padding: 12px;
+ border: 1px solid rgba(0, 0, 0, 0.1);
+ border-radius: 8px;
+ background: var(--theme-surface);
+ color: var(--theme-text);
+
+ &::file-selector-button {
+ @extend .um-btn;
+ @extend .um-btn-secondary;
+ margin-right: 12px;
+ padding: 8px 16px;
+ border: none;
+ }
+}
+
+// Modal Header
+::ng-deep .modal-header {
+ background: linear-gradient(135deg, var(--theme-primary) 0%, var(--theme-accent) 100%);
+ color: white;
+ border-radius: 16px 16px 0 0 !important;
+ padding: 20px 24px !important;
+
+ .modal-title {
+ color: white;
+ font-weight: 600;
+ font-size: 20px;
+ margin: 0;
+ }
+
+ .close {
+ color: white;
+ opacity: 0.8;
+
+ &:hover {
+ opacity: 1;
+ }
+ }
+}
+
+// Modal Body
+::ng-deep .modal-body {
+ padding: 24px !important;
+}
+
+// Modal Footer
+::ng-deep .modal-footer {
+ padding: 20px 24px !important;
+ background: var(--theme-background);
+ border-radius: 0 0 16px 16px !important;
+ border-top: 1px solid rgba(0, 0, 0, 0.05) !important;
+}
+
+// Responsive adjustments
+@media (max-width: 768px) {
+ .um-hero {
+ flex-direction: column;
+ gap: 16px;
+ text-align: center;
+
+ &__content {
+ flex-direction: column;
+ text-align: center;
+ }
+
+ &__actions {
+ width: 100%;
+ justify-content: center;
+ flex-wrap: wrap;
+ }
+ }
+
+ .um-toolbar {
+ flex-direction: column;
+ gap: 16px;
+ }
+
+ .um-search {
+ max-width: 100%;
+ }
+
+ .um-cards {
+ grid-template-columns: 1fr;
+ }
+
+ .um-card-item {
+ &__header {
+ flex-direction: column;
+ text-align: center;
+
+ &__icon {
+ margin-right: 0;
+ margin-bottom: 16px;
+ }
+ }
+
+ &__footer {
+ justify-content: center;
+ }
+ }
+}
\ No newline at end of file
diff --git a/frontend/angular-clarity-master/src/app/modules/main/admin/usermaintance/usermaintance.component.ts b/frontend/angular-clarity-master/src/app/modules/main/admin/usermaintance/usermaintance.component.ts
index 84197e8..d801642 100644
--- a/frontend/angular-clarity-master/src/app/modules/main/admin/usermaintance/usermaintance.component.ts
+++ b/frontend/angular-clarity-master/src/app/modules/main/admin/usermaintance/usermaintance.component.ts
@@ -1,4 +1,4 @@
-import { Component, OnInit } from '@angular/core';
+import { Component, OnInit, OnDestroy } from '@angular/core';
import { FormBuilder, FormGroup } from '@angular/forms';
import { ActivatedRoute, Router } from '@angular/router';
import { ExcelService } from '../../../../services/excel.service';
@@ -8,12 +8,15 @@ import { MenuGroupService } from 'src/app/services/admin/menu-group.service';
import { ToastrService } from 'ngx-toastr';
import { CsvService } from 'src/app/services/csv.service';
import { TranslateService } from '@ngx-translate/core';
+import { ThemeService } from 'src/app/services/theme.service';
+import { Subscription } from 'rxjs';
+
@Component({
selector: 'app-usermaintance',
templateUrl: './usermaintance.component.html',
styleUrls: ['./usermaintance.component.scss']
})
-export class UsermaintanceComponent implements OnInit {
+export class UsermaintanceComponent implements OnInit, OnDestroy {
loading = false;
loading1=false;
public entryForm: FormGroup;
@@ -21,13 +24,18 @@ export class UsermaintanceComponent implements OnInit {
orders;
modalAdd= false;
modaledit=false;
-mcreate;
-medit;
-mdelete;
-showdata;
-error;
-modaldelete=false;
-rowSelected :any= {};
+ mcreate: string | boolean = false;
+ medit: string | boolean = false;
+ mdelete;
+ showdata;
+ error;
+ modaldelete=false;
+ rowSelected :any= {};
+ // UI-only state
+ filterText: string = '';
+ viewMode: 'table' | 'cards' = 'cards';
+ private themeSubscription: Subscription;
+
constructor(private excel: ExcelService,
private _fb: FormBuilder,
private router: Router, private toastr:ToastrService,
@@ -36,25 +44,41 @@ rowSelected :any= {};
private mainservice:UsermaintanceService,
private csvService: CsvService,
private translate: TranslateService,
+ private themeService: ThemeService,
) {this.loading1 = true;
setTimeout(() => {
this.loading1 = false;
}, 1000); }
- switchLanguage(language: string) {
- this.translate.use(language);
- }
+
+ switchLanguage(language: string) {
+ this.translate.use(language);
+ }
+
ngOnInit(): void {
+ this.themeSubscription = this.themeService.currentTheme$.subscribe(() => {
+ // Theme changes will automatically update CSS variables
+ // This triggers a re-render of themed elements
+ });
+
this.showdata = this.menuGroupService.getdata();
console.log(this.showdata);
- this.mcreate=this.showdata.mcreate;
+ if (this.showdata) {
+ this.mcreate = this.showdata.mcreate === 'true' || this.showdata.mcreate === true ? true : false;
console.log(this.mcreate);
this.mdelete=this.showdata.mdelete
console.log(this.mdelete);
- this.medit=this.showdata.medit
+ this.medit = this.showdata.medit === 'true' || this.showdata.medit === true ? true : false;
console.log(this.medit);
+ }
this.getData();
-
- }
+ }
+
+ ngOnDestroy(): void {
+ if (this.themeSubscription) {
+ this.themeSubscription.unsubscribe();
+ }
+ }
+
getData(){
this.mainservice.getAll().subscribe((data) => {
console.log(data);
@@ -79,6 +103,23 @@ rowSelected :any= {};
});
}
+ // UI helpers
+ get totalUsers(): number {
+ const list: any[] = (this.givendata as unknown as any[]) || [];
+ return list.length;
+ }
+ get filteredUsers(): any[] {
+ const items: any[] = (this.givendata as unknown as any[]) || [];
+ const text = (this.filterText || '').toLowerCase();
+ if (!text) { return items; }
+ return items.filter(u => (
+ (u?.fullName || '').toLowerCase().includes(text) ||
+ (u?.email || '').toLowerCase().includes(text) ||
+ (u?.usrGrpName || '').toLowerCase().includes(text)
+ ));
+ }
+ setViewMode(mode: 'table' | 'cards') { this.viewMode = mode; }
+
// csv
@@ -129,7 +170,7 @@ rowSelected :any= {};
this.router.navigate(["../usermaintancedit/"+ id], { relativeTo: this.route });
}
onDelete(row) {
- this.rowSelected = row;
+ this.rowSelected = {...row}; // Create a copy to avoid reference issues
this.modaldelete=true;
}
@@ -155,4 +196,4 @@ rowSelected :any= {};
}
-}
+}
\ No newline at end of file
diff --git a/frontend/angular-clarity-master/src/app/modules/main/admin/usermaintanceadd/usermaintanceadd.component.html b/frontend/angular-clarity-master/src/app/modules/main/admin/usermaintanceadd/usermaintanceadd.component.html
index 3f73f06..d673199 100644
--- a/frontend/angular-clarity-master/src/app/modules/main/admin/usermaintanceadd/usermaintanceadd.component.html
+++ b/frontend/angular-clarity-master/src/app/modules/main/admin/usermaintanceadd/usermaintanceadd.component.html
@@ -1,319 +1,282 @@
+
+
+ - Security
+ - User Maintenance
+
-
User Maintenance
-
Add Mode
-
-