diff --git a/src/app/shared/form-dialog/form-dialog.component.html b/src/app/shared/form-dialog/form-dialog.component.html
index 779bb46cc..158ca2f01 100644
--- a/src/app/shared/form-dialog/form-dialog.component.html
+++ b/src/app/shared/form-dialog/form-dialog.component.html
@@ -6,31 +6,43 @@
file, You can obtain one at http://mozilla.org/MPL/2.0/.
-->
-
{{ data.title }}
+
+
-
1 ? 'flex flex-wrap gap-' + layout.gap + 'percent' : 'layout-column',
- 'responsive-column'
- ]"
->
- @for (formfield of formfields; track formfield) {
-
-
-
- }
-
-
-
- {{ 'labels.buttons.' + layout.cancelButtonText | translate }}
- 1 ? 'fd-grid fd-grid--cols-' + layout.columns : 'fd-grid fd-grid--single',
+ 'responsive-column'
+ ]"
>
- {{ 'labels.buttons.' + layout.addButtonText | translate }}
-
-
+ @for (formfield of formfields; track formfield) {
+
1 ? 'fd-field--multi' : ''">
+
+
+ }
+
+
+
+
+ {{ 'labels.buttons.' + layout.cancelButtonText | translate }}
+
+
+
+ {{ 'labels.buttons.' + layout.addButtonText | translate }}
+
+
+
diff --git a/src/app/shared/form-dialog/form-dialog.component.scss b/src/app/shared/form-dialog/form-dialog.component.scss
index af9f4c075..fc210402f 100644
--- a/src/app/shared/form-dialog/form-dialog.component.scss
+++ b/src/app/shared/form-dialog/form-dialog.component.scss
@@ -5,3 +5,168 @@
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*/
+
+$primary: #1a73e8;
+$gray-50: #f8f9fa;
+$gray-100: #f1f3f4;
+$gray-200: #e8eaed;
+$gray-500: #9aa0a6;
+$gray-700: #5f6368;
+$gray-900: #202124;
+$white: #fff;
+
+.fd-dialog {
+ display: flex;
+ flex-direction: column;
+ min-width: 0;
+}
+
+// Header
+.fd-header {
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ padding: 16px 24px 12px;
+ border-bottom: 1px solid $gray-200;
+}
+
+.fd-title {
+ margin: 0 !important;
+ padding: 0 !important;
+ font-size: 17px !important;
+ font-weight: 600 !important;
+ color: $gray-900;
+ letter-spacing: -0.2px;
+}
+
+.fd-close {
+ width: 32px !important;
+ height: 32px !important;
+ line-height: 32px !important;
+ color: $gray-500;
+ transition: color 0.15s ease, background 0.15s ease;
+
+ &:hover {
+ color: $gray-900;
+ background: $gray-100;
+ border-radius: 50%;
+ }
+
+ i {
+ font-size: 14px;
+ }
+}
+
+// Content area
+.fd-content {
+ padding: 20px 24px !important;
+ max-height: 65vh;
+ overflow-y: auto;
+}
+
+.fd-grid {
+ display: flex;
+ flex-direction: column;
+ gap: 4px;
+
+ &--cols-2 {
+ display: grid;
+ grid-template-columns: repeat(2, 1fr);
+ gap: 4px 16px;
+ }
+
+ &--cols-3 {
+ display: grid;
+ grid-template-columns: repeat(3, 1fr);
+ gap: 4px 16px;
+ }
+}
+
+.fd-field {
+ min-width: 0;
+
+ ::ng-deep {
+ .mat-mdc-form-field {
+ width: 100%;
+ }
+
+ .mat-mdc-text-field-wrapper {
+ background: $gray-50;
+ border-radius: 8px;
+ }
+
+ .mdc-text-field--outlined .mdc-notched-outline__leading,
+ .mdc-text-field--outlined .mdc-notched-outline__trailing,
+ .mdc-text-field--outlined .mdc-notched-outline__notch {
+ border-color: $gray-200;
+ }
+
+ .mdc-text-field--outlined:not(.mdc-text-field--disabled):hover .mdc-notched-outline__leading,
+ .mdc-text-field--outlined:not(.mdc-text-field--disabled):hover .mdc-notched-outline__trailing,
+ .mdc-text-field--outlined:not(.mdc-text-field--disabled):hover .mdc-notched-outline__notch {
+ border-color: $primary;
+ }
+
+ .mat-mdc-floating-label {
+ font-size: 13px;
+ color: $gray-700;
+ }
+
+ input.mat-mdc-input-element {
+ font-size: 14px;
+ color: $gray-900;
+ }
+ }
+}
+
+// Actions
+.fd-actions {
+ padding: 12px 24px 16px !important;
+ border-top: 1px solid $gray-200;
+ gap: 10px;
+ margin: 0 !important;
+}
+
+.fd-btn {
+ min-width: 100px;
+ border-radius: 8px !important;
+ font-size: 13px !important;
+ font-weight: 600 !important;
+ letter-spacing: 0.2px;
+ padding: 0 20px !important;
+ height: 38px !important;
+
+ &--cancel {
+ color: $gray-700 !important;
+ border-color: $gray-200 !important;
+
+ &:hover {
+ background: $gray-50 !important;
+ }
+ }
+
+ &--submit {
+ box-shadow: 0 1px 3px rgba($primary, 0.3) !important;
+ }
+
+ &__icon {
+ margin-right: 6px;
+ font-size: 12px;
+ }
+}
+
+// Responsive
+@media (max-width: 600px) {
+ .fd-grid--cols-2,
+ .fd-grid--cols-3 {
+ grid-template-columns: 1fr;
+ }
+
+ .fd-content {
+ padding: 16px !important;
+ }
+
+ .fd-actions {
+ padding: 12px 16px !important;
+ }
+}
diff --git a/src/app/shared/form-dialog/form-dialog.component.ts b/src/app/shared/form-dialog/form-dialog.component.ts
index 391b64958..7c2a4564a 100644
--- a/src/app/shared/form-dialog/form-dialog.component.ts
+++ b/src/app/shared/form-dialog/form-dialog.component.ts
@@ -22,6 +22,7 @@ import { FormfieldBase } from './formfield/model/formfield-base';
import { FormGroupService } from './form-group.service';
import { CdkScrollable } from '@angular/cdk/scrolling';
import { NgClass } from '@angular/common';
+import { MatIconButton } from '@angular/material/button';
import { FormfieldComponent } from './formfield/formfield.component';
import { STANDALONE_SHARED_IMPORTS } from 'app/standalone-shared.module';
@@ -39,7 +40,8 @@ const layoutGap = 2;
NgClass,
FormfieldComponent,
MatDialogActions,
- MatDialogClose
+ MatDialogClose,
+ MatIconButton
]
})
export class FormDialogComponent implements OnInit {