bug fix
This commit is contained in:
		
							parent
							
								
									7a6c648da8
								
							
						
					
					
						commit
						18ee6b6209
					
				| @ -10,6 +10,7 @@ import { MatSelectModule } from '@angular/material/select'; | |||||||
| import { MatButtonToggleModule } from '@angular/material/button-toggle'; | import { MatButtonToggleModule } from '@angular/material/button-toggle'; | ||||||
| import { MatExpansionModule } from '@angular/material/expansion'; | import { MatExpansionModule } from '@angular/material/expansion'; | ||||||
| import { MatTableModule } from '@angular/material/table'; | import { MatTableModule } from '@angular/material/table'; | ||||||
|  | import { MatCheckboxModule } from '@angular/material/checkbox'; | ||||||
| 
 | 
 | ||||||
| import { FuseCardModule } from '@fuse/components/card'; | import { FuseCardModule } from '@fuse/components/card'; | ||||||
| import { SharedModule } from 'app/shared/shared.module'; | import { SharedModule } from 'app/shared/shared.module'; | ||||||
| @ -32,6 +33,7 @@ import { COMPOSE } from './compose'; | |||||||
|     MatButtonToggleModule, |     MatButtonToggleModule, | ||||||
|     MatExpansionModule, |     MatExpansionModule, | ||||||
|     MatTableModule, |     MatTableModule, | ||||||
|  |     MatCheckboxModule, | ||||||
| 
 | 
 | ||||||
|     FuseCardModule, |     FuseCardModule, | ||||||
|     SharedModule, |     SharedModule, | ||||||
|  | |||||||
| @ -11,16 +11,87 @@ | |||||||
|       ></mat-icon> |       ></mat-icon> | ||||||
|     </button> |     </button> | ||||||
|   </div> |   </div> | ||||||
|   <form | 
 | ||||||
|     class="flex flex-col flex-auto p-6 sm:p-8 overflow-y-auto" |   <table | ||||||
|     [formGroup]="composeForm" |     mat-table | ||||||
|  |     [dataSource]="dataSource" | ||||||
|  |     multiTemplateDataRows | ||||||
|  |     class="mat-elevation-z8" | ||||||
|   > |   > | ||||||
|     <mat-table |     <ng-container | ||||||
|       [dataSource]="dataSource" |       matColumnDef="{{ column }}" | ||||||
|       multiTemplateDataRows |       *ngFor="let column of columnsToDisplay" | ||||||
|       class="mat-elevation-z8" |  | ||||||
|     > |     > | ||||||
|       <ng-container |       <ng-container *ngIf="column === 'select'; else notSelect"> | ||||||
|  |         <th mat-header-cell *matHeaderCellDef> | ||||||
|  |           <mat-checkbox | ||||||
|  |             (change)="$event ? masterToggle() : null" | ||||||
|  |             [checked]="selection.hasValue() && isAllSelected()" | ||||||
|  |             [indeterminate]="selection.hasValue() && !isAllSelected()" | ||||||
|  |             [aria-label]="checkboxLabel()" | ||||||
|  |           > | ||||||
|  |           </mat-checkbox> | ||||||
|  |         </th> | ||||||
|  |         <td mat-cell *matCellDef="let row; let idx = index"> | ||||||
|  |           <mat-checkbox | ||||||
|  |             (click)="$event.stopPropagation()" | ||||||
|  |             (change)="$event ? selection.toggle(row) : null" | ||||||
|  |             [checked]="selection.isSelected(row)" | ||||||
|  |             [aria-label]="checkboxLabel(row, idx)" | ||||||
|  |           > | ||||||
|  |           </mat-checkbox> | ||||||
|  |         </td> | ||||||
|  |       </ng-container> | ||||||
|  |       <ng-template #notSelect> | ||||||
|  |         <th mat-header-cell *matHeaderCellDef>{{ column }}</th> | ||||||
|  |         <td mat-cell *matCellDef="let element">{{ element[column] }}</td> | ||||||
|  |       </ng-template> | ||||||
|  |     </ng-container> | ||||||
|  | 
 | ||||||
|  |     <!-- Expanded Content Column --> | ||||||
|  |     <ng-container matColumnDef="expandedDetail"> | ||||||
|  |       <td | ||||||
|  |         mat-cell | ||||||
|  |         *matCellDef="let element" | ||||||
|  |         [attr.colspan]="columnsToDisplay.length" | ||||||
|  |       > | ||||||
|  |         <div | ||||||
|  |           class="example-element-detail" | ||||||
|  |           [@detailExpand]=" | ||||||
|  |             element == expandedElement ? 'expanded' : 'collapsed' | ||||||
|  |           " | ||||||
|  |         > | ||||||
|  |           <!-- <div class="example-element-diagram"> | ||||||
|  |             <div class="example-element-position">{{ element.state }}</div> | ||||||
|  |             <div class="example-element-symbol">{{ element.content }}</div> | ||||||
|  |             <div class="example-element-name">{{ element.delete }}</div> | ||||||
|  |             <div class="example-element-weight"> | ||||||
|  |               {{ element.applicationDate }} | ||||||
|  |             </div> | ||||||
|  |           </div> --> | ||||||
|  | 
 | ||||||
|  |           <div class="example-element-description"> | ||||||
|  |             {{ element.description }} | ||||||
|  |             <!-- <span class="example-element-description-attribution"> -- Wikipedia </span> --> | ||||||
|  |           </div> | ||||||
|  |         </div> | ||||||
|  |       </td> | ||||||
|  |     </ng-container> | ||||||
|  | 
 | ||||||
|  |     <tr mat-header-row *matHeaderRowDef="columnsToDisplay"></tr> | ||||||
|  |     <tr | ||||||
|  |       mat-row | ||||||
|  |       *matRowDef="let element; columns: columnsToDisplay" | ||||||
|  |       class="example-element-row" | ||||||
|  |       [class.example-expanded-row]="expandedElement === element" | ||||||
|  |       (click)="expandedElement = expandedElement === element ? null : element" | ||||||
|  |     ></tr> | ||||||
|  |     <tr | ||||||
|  |       mat-row | ||||||
|  |       *matRowDef="let row; columns: ['expandedDetail']" | ||||||
|  |       class="example-detail-row" | ||||||
|  |     ></tr> | ||||||
|  |     <!-- <ng-container | ||||||
|         matColumnDef="{{ column }}" |         matColumnDef="{{ column }}" | ||||||
|         *ngFor="let column of columnsToDisplay" |         *ngFor="let column of columnsToDisplay" | ||||||
|       > |       > | ||||||
| @ -53,23 +124,22 @@ | |||||||
|         *matRowDef="let row; columns: ['expandedDetail']" |         *matRowDef="let row; columns: ['expandedDetail']" | ||||||
|         class="example-detail-row" |         class="example-detail-row" | ||||||
|         style="min-height: 0" |         style="min-height: 0" | ||||||
|       ></mat-row> |       ></mat-row> --> | ||||||
|     </mat-table> |   </table> | ||||||
|     <div class="flex flex-col sm:flex-row sm:items-center mt-4 sm:mt-6"> |   <div class="flex flex-col sm:flex-row sm:items-center mt-4 sm:mt-6"> | ||||||
|       <div class="flex mt-4 sm:mt-0"> |     <div class="flex mt-4 sm:mt-0"> | ||||||
|         <!-- Save as draft --> |       <!-- Save as draft --> | ||||||
|         <button class="sm:mx-3" mat-stroked-button> |       <button class="sm:mx-3" mat-stroked-button> | ||||||
|           <span>전체읽음처리</span> |         <span>전체읽음처리</span> | ||||||
|         </button> |       </button> | ||||||
|         <!-- Send --> |       <!-- Send --> | ||||||
|         <button |       <button | ||||||
|           class="order-first sm:order-last" |         class="order-first sm:order-last" | ||||||
|           mat-flat-button |         mat-flat-button | ||||||
|           [color]="'primary'" |         [color]="'primary'" | ||||||
|         > |       > | ||||||
|           전체삭제처리 |         전체삭제처리 | ||||||
|         </button> |       </button> | ||||||
|       </div> |  | ||||||
|     </div> |     </div> | ||||||
|   </form> |   </div> | ||||||
| </div> | </div> | ||||||
|  | |||||||
| @ -0,0 +1,47 @@ | |||||||
|  | table { | ||||||
|  |   width: 100%; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | tr.example-detail-row { | ||||||
|  |   height: 0; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | tr.example-element-row:not(.example-expanded-row):hover { | ||||||
|  |   background: #777; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | tr.example-element-row:not(.example-expanded-row):active { | ||||||
|  |   background: #efefef; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .example-element-row td { | ||||||
|  |   border-bottom-width: 0; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .example-element-detail { | ||||||
|  |   overflow: hidden; | ||||||
|  |   display: flex; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .example-element-diagram { | ||||||
|  |   min-width: 80px; | ||||||
|  |   border: 2px solid black; | ||||||
|  |   padding: 8px; | ||||||
|  |   font-weight: lighter; | ||||||
|  |   margin: 8px 0; | ||||||
|  |   height: 104px; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .example-element-symbol { | ||||||
|  |   font-weight: bold; | ||||||
|  |   font-size: 40px; | ||||||
|  |   line-height: normal; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .example-element-description { | ||||||
|  |   padding: 16px; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .example-element-description-attribution { | ||||||
|  |   opacity: 0.5; | ||||||
|  | } | ||||||
| @ -5,19 +5,22 @@ import { | |||||||
|   transition, |   transition, | ||||||
|   animate, |   animate, | ||||||
| } from '@angular/animations'; | } from '@angular/animations'; | ||||||
|  | import { SelectionModel } from '@angular/cdk/collections'; | ||||||
| import { Component, OnInit } from '@angular/core'; | import { Component, OnInit } from '@angular/core'; | ||||||
| import { FormGroup, FormBuilder, Validators } from '@angular/forms'; | import { FormGroup, FormBuilder, Validators } from '@angular/forms'; | ||||||
| import { MatDialogRef } from '@angular/material/dialog'; | import { MatDialogRef } from '@angular/material/dialog'; | ||||||
| import { MatDialog } from '@angular/material/dialog'; | import { MatDialog } from '@angular/material/dialog'; | ||||||
|  | import { MatTableDataSource } from '@angular/material/table'; | ||||||
| import { CustomerRegistrationComposeComponent } from './customer-registration-compose.component'; | import { CustomerRegistrationComposeComponent } from './customer-registration-compose.component'; | ||||||
| 
 | 
 | ||||||
| @Component({ | @Component({ | ||||||
|   selector: 'message-compose', |   selector: 'message-compose', | ||||||
|  |   styleUrls: ['./message-compose.component.scss'], | ||||||
|   templateUrl: './message-compose.component.html', |   templateUrl: './message-compose.component.html', | ||||||
|   animations: [ |   animations: [ | ||||||
|     trigger('detailExpand', [ |     trigger('detailExpand', [ | ||||||
|       state('collapsed', style({ height: '0px', minHeight: '0' })), |       state('collapsed', style({ height: '0px', minHeight: '0' })), | ||||||
|       state('expanded', style({ height: '*', minHeight: '50px' })), |       state('expanded', style({ height: '*' })), | ||||||
|       transition( |       transition( | ||||||
|         'expanded <=> collapsed', |         'expanded <=> collapsed', | ||||||
|         animate('225ms cubic-bezier(0.4, 0.0, 0.2, 1)') |         animate('225ms cubic-bezier(0.4, 0.0, 0.2, 1)') | ||||||
| @ -26,11 +29,17 @@ import { CustomerRegistrationComposeComponent } from './customer-registration-co | |||||||
|   ], |   ], | ||||||
| }) | }) | ||||||
| export class MessageComposeComponent implements OnInit { | export class MessageComposeComponent implements OnInit { | ||||||
|   composeForm!: FormGroup; |   selection = new SelectionModel<PeriodicElement>(true, []); | ||||||
| 
 |   selectColumnName: string = 'select'; | ||||||
|   dataSource = ELEMENT_DATA; |   dataSource = new MatTableDataSource<PeriodicElement>(ELEMENT_DATA); | ||||||
|   columnsToDisplay = ['state', 'content', 'delete', 'applicationDate']; |   columnsToDisplay = [ | ||||||
|   expandedElement: PeriodicElement | null | undefined; |     this.selectColumnName, | ||||||
|  |     'state', | ||||||
|  |     'content', | ||||||
|  |     'delete', | ||||||
|  |     'applicationDate', | ||||||
|  |   ]; | ||||||
|  |   expandedElement!: PeriodicElement | null; | ||||||
| 
 | 
 | ||||||
|   /** |   /** | ||||||
|    * Constructor |    * Constructor | ||||||
| @ -50,10 +59,6 @@ export class MessageComposeComponent implements OnInit { | |||||||
|    */ |    */ | ||||||
|   ngOnInit(): void { |   ngOnInit(): void { | ||||||
|     // Create the form
 |     // Create the form
 | ||||||
|     this.composeForm = this._formBuilder.group({ |  | ||||||
|       accountHolder: ['', [Validators.required]], |  | ||||||
|       amount: ['', [Validators.required]], |  | ||||||
|     }); |  | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   // -----------------------------------------------------------------------------------------------------
 |   // -----------------------------------------------------------------------------------------------------
 | ||||||
| @ -85,6 +90,26 @@ export class MessageComposeComponent implements OnInit { | |||||||
|    * Send the message |    * Send the message | ||||||
|    */ |    */ | ||||||
|   send(): void {} |   send(): void {} | ||||||
|  | 
 | ||||||
|  |   isAllSelected(): boolean { | ||||||
|  |     const numSelected = this.selection.selected.length; | ||||||
|  |     const numRows = this.dataSource.data.length; | ||||||
|  |     return numSelected === numRows; | ||||||
|  |   } | ||||||
|  |   masterToggle(): void { | ||||||
|  |     this.isAllSelected() | ||||||
|  |       ? this.selection.clear() | ||||||
|  |       : this.dataSource.data.forEach((row) => this.selection.select(row)); | ||||||
|  |   } | ||||||
|  |   /** The label for the checkbox on the passed row */ | ||||||
|  |   checkboxLabel(row?: PeriodicElement, idx?: number): string { | ||||||
|  |     if (!row) { | ||||||
|  |       return `${this.isAllSelected() ? 'select' : 'deselect'} all`; | ||||||
|  |     } | ||||||
|  |     return `${ | ||||||
|  |       this.selection.isSelected(row) ? 'deselect' : 'select' | ||||||
|  |     } row ${idx}`;
 | ||||||
|  |   } | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| export interface PeriodicElement { | export interface PeriodicElement { | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user