Compare commits

...

31 Commits

Author SHA1 Message Date
Sercan Yemen
895291c37c Updated Fuse version
+ Removed unnecessary dev dependencies and updated couple of them
2017-10-16 10:45:08 +03:00
Sercan Yemen
ac7e6f75bc Added theme options openBar function to the navigation as an example
+ Removed duplicate Black and White tabs from colors
2017-10-16 10:08:40 +03:00
Sercan Yemen
bd8b02c82d Merge branch 'master' of https://github.com/withinpixels/fuse2 2017-10-14 18:44:17 +03:00
Sercan Yemen
6d594d63db Added a way of accessing and updating nav items
+ Added an ability to add custom functions to the nav items
2017-10-14 18:44:11 +03:00
mustafahlvc
6656410696 Calendar, Scrumboard Apps datepicker fixes. 2017-10-13 17:50:59 +03:00
mustafahlvc
470b851eae colors styling fix. 2017-10-13 15:43:22 +03:00
mustafahlvc
fbe9cb83a2 missing destroy function added for Faq page. 2017-10-13 15:39:18 +03:00
mustafahlvc
13a09164ae Faq page added. 2017-10-13 15:37:30 +03:00
Sercan Yemen
56d9830176 Fixed: Lock page layout issues 2017-10-13 14:39:46 +03:00
Sercan Yemen
be820804f2 New mail confirmation page 2017-10-13 14:22:59 +03:00
Sercan Yemen
7615bc1d03 Removed pricing tables from components 2017-10-13 12:24:13 +03:00
Sercan Yemen
3198663430 Merge branch 'master' of https://github.com/withinpixels/fuse2 2017-10-13 12:21:07 +03:00
Sercan Yemen
ad432ca31d New pricing page design
+ Fixed: Some color issues
+ Fixed: Icons and Quick Nav in memory web api related data issues
2017-10-13 12:21:00 +03:00
mustafahlvc
7d26beff3d angular updated to v4.4.5 2017-10-13 12:13:03 +03:00
mustafahlvc
4711a27814 Merge remote-tracking branch 'origin/master' 2017-10-13 11:58:12 +03:00
mustafahlvc
8205a4d5b5 <agm-map> Google Maps component library added,
+ some style refinements on doc pages.
2017-10-13 11:57:54 +03:00
Sercan Yemen
4f451a74e9 fixed custom colors 2017-10-12 17:40:27 +03:00
Sercan Yemen
8518408254 Merge branch 'master' of https://github.com/withinpixels/fuse2 2017-10-12 14:29:13 +03:00
Sercan Yemen
72f968b594 Fix: Auth page v2 styles iOS height issue
+ Fix: Perfect scrollbar causes issues on outside of the zone
+ Fix: Navigation must unsubscribe the nav toggle and clear the timeout
+ Fix: Chat view is not scrollable on mobile
+ Fix: Terms & Conditions checkbox styling issues on Auth forms
+ Fix: Sidenav z-index issue on certain page layouts
+ Fix: Some page layout header heights not correct on small devices
2017-10-12 14:28:58 +03:00
mustafahlvc
688b443ea8 <mat-select> wrapped with <mat-form-field> and fixed relative issues. 2017-10-12 14:05:22 +03:00
mustafahlvc
cb89da4647 angular-in-memory-web-api updated to v0.5.0,
(HTTP response data no longer wrapped in object w/ data property by default.)
2017-10-12 13:05:56 +03:00
Sercan Yemen
cc4a04afcb Removed fxFlexFill from main-content in an attempt to fix iOS scrolling and sizing issues
+ Updated Perfect scrollbar
+ updated various packages like zone-js & core-js
+ small tweak on contacts list item padding
+ removed md2 datepicker color tweak
2017-10-12 12:42:11 +03:00
mustafahlvc
bc239571a1 @angular/material v2.0.0-beta.12 examples updated. 2017-10-10 17:19:07 +03:00
mustafahlvc
c025563145 Merge remote-tracking branch 'origin/master'
# Conflicts:
#	src/app/core/services/config.service.ts
2017-10-10 16:40:29 +03:00
mustafahlvc
c06e99dc97 @angular/material v2.0.0-beta.12 compability update,
Lots of breaking changes,
all "md" prefixes changed with "mat" due to angular material deprecation of "md",
md2 package removed, its not compatible with latest material version, will be replaced with another date picker later.
2017-10-10 16:37:24 +03:00
Sercan Yemen
c0a1dc7c37 Changed default navbar and footer colorsˆ 2017-10-09 14:22:12 +03:00
Sercan Yemen
55e1d8b2bc New Reset and Forgot password styles 2017-10-09 14:17:27 +03:00
Sercan Yemen
533f5f3f3f removed unnecessary console.logs and added possible route animations 2017-10-09 12:32:40 +03:00
Sercan Yemen
4a7b70c874 Fixes #16: Inconsistent font sizes across elements 2017-10-02 10:14:20 +03:00
Sercan Yemen
c101c432dc Fixes #14: Toolbar search bar button collapses on close 2017-10-02 10:01:22 +03:00
Sercan Yemen
04d1b2eff8 Fixes #9: print styles and page breaks 2017-09-29 12:06:47 +03:00
484 changed files with 10407 additions and 5974 deletions

2136
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@@ -1,6 +1,6 @@
{
"name": "fuse2",
"version": "1.1.1",
"version": "1.1.2",
"license": "",
"scripts": {
"ng": "ng",
@@ -15,50 +15,48 @@
},
"private": true,
"dependencies": {
"@angular/animations": "4.4.3",
"@angular/cdk": "2.0.0-beta.11",
"@angular/common": "4.4.3",
"@angular/compiler": "4.4.3",
"@angular/core": "4.4.3",
"@agm/core": "1.0.0-beta.1",
"@angular/animations": "4.4.5",
"@angular/cdk": "2.0.0-beta.12",
"@angular/common": "4.4.5",
"@angular/compiler": "4.4.5",
"@angular/core": "4.4.5",
"@angular/flex-layout": "2.0.0-beta.9",
"@angular/forms": "4.4.3",
"@angular/http": "4.4.3",
"@angular/material": "2.0.0-beta.11",
"@angular/platform-browser": "4.4.3",
"@angular/platform-browser-dynamic": "4.4.3",
"@angular/router": "4.4.3",
"@angular/forms": "4.4.5",
"@angular/http": "4.4.5",
"@angular/material": "2.0.0-beta.12",
"@angular/platform-browser": "4.4.5",
"@angular/platform-browser-dynamic": "4.4.5",
"@angular/router": "4.4.5",
"@swimlane/ngx-charts": "6.0.2",
"@swimlane/ngx-datatable": "9.3.1",
"@swimlane/ngx-dnd": "3.0.0",
"angular-calendar": "0.19.0",
"angular-in-memory-web-api": "0.4.6",
"angular-calendar": "0.21.2",
"angular-in-memory-web-api": "0.5.0",
"angular2-markdown": "1.6.0",
"classlist.js": "1.1.20150312",
"core-js": "2.5.0",
"core-js": "2.5.1",
"d3": "4.10.0",
"hammerjs": "2.0.8",
"highlight.js": "9.12.0",
"intl": "1.2.5",
"md2": "0.0.28",
"moment": "2.18.1",
"ngx-color-picker": "4.3.1",
"ngx-cookie-service": "1.0.7",
"ngx-perfect-scrollbar": "4.6.2",
"perfect-scrollbar": "0.8.1",
"moment": "2.19.1",
"ngx-color-picker": "4.4.0",
"ngx-cookie-service": "1.0.9",
"perfect-scrollbar": "1.0.3",
"rxjs": "5.4.3",
"web-animations-js": "2.3.1",
"zone.js": "0.8.17"
"zone.js": "0.8.18"
},
"devDependencies": {
"@angular/cli": "1.4.2",
"@angular/compiler-cli": "4.4.3",
"@angular/language-service": "4.4.3",
"@angular/cli": "1.4.7",
"@angular/compiler-cli": "4.4.5",
"@angular/language-service": "4.4.5",
"@angularclass/hmr": "2.1.3",
"@ngtools/webpack": "1.7.1",
"@types/jasmine": "2.6.0",
"@types/jasminewd2": "2.0.2",
"@types/node": "6.0.88",
"codelyzer": "3.0.1",
"codelyzer": "3.2.0",
"jasmine-core": "2.6.2",
"jasmine-spec-reporter": "4.1.0",
"karma": "1.7.1",
@@ -67,10 +65,9 @@
"karma-coverage-istanbul-reporter": "1.2.1",
"karma-jasmine": "1.1.0",
"karma-jasmine-html-reporter": "0.2.2",
"node-sass": "4.5.3",
"protractor": "5.1.2",
"ts-node": "3.0.4",
"tslint": "5.3.2",
"ts-node": "3.2.0",
"tslint": "5.7.0",
"typescript": "2.3.3"
}
}

View File

@@ -1,6 +1,6 @@
<h1 md-dialog-title>Confirm</h1>
<div md-dialog-content>{{confirmMessage}}</div>
<div md-dialog-actions class="pt-24">
<button md-raised-button class="mat-accent mr-16" (click)="dialogRef.close(true)">Confirm</button>
<button md-button (click)="dialogRef.close(false)">Cancel</button>
<h1 matDialogTitle>Confirm</h1>
<div mat-dialog-content>{{confirmMessage}}</div>
<div mat-dialog-actions class="pt-24">
<button mat-raised-button class="mat-accent mr-16" (click)="dialogRef.close(true)">Confirm</button>
<button mat-button (click)="dialogRef.close(false)">Cancel</button>
</div>

View File

@@ -1,5 +1,5 @@
import { Component, OnInit } from '@angular/core';
import { MdDialogRef } from '@angular/material';
import { MatDialogRef } from '@angular/material';
@Component({
selector : 'fuse-confirm-dialog',
@@ -10,7 +10,7 @@ export class FuseConfirmDialogComponent implements OnInit
{
public confirmMessage: string;
constructor(public dialogRef: MdDialogRef<FuseConfirmDialogComponent>)
constructor(public dialogRef: MatDialogRef<FuseConfirmDialogComponent>)
{
}

View File

@@ -6,55 +6,60 @@
*
* Both released under MIT license - © Zeno Rocha
*/
import {Injectable} from '@angular/core';
import { Injectable } from '@angular/core';
@Injectable()
export class CopierService {
export class CopierService
{
private textarea: HTMLTextAreaElement;
private textarea: HTMLTextAreaElement;
/** Copy the text value to the clipboard. */
copyText(text: string): boolean {
this.createTextareaAndSelect(text);
/** Copy the text value to the clipboard. */
copyText(text: string): boolean
{
this.createTextareaAndSelect(text);
const copySuccessful = document.execCommand('copy');
this.removeFake();
const copySuccessful = document.execCommand('copy');
this.removeFake();
return copySuccessful;
}
/**
* Creates a hidden textarea element, sets its value from `text` property,
* and makes a selection on it.
*/
private createTextareaAndSelect(text: string) {
// Create a fake element to hold the contents to copy
this.textarea = document.createElement('textarea');
// Prevent zooming on iOS
this.textarea.style.fontSize = '12pt';
// Hide the element
this.textarea.classList.add('cdk-visually-hidden');
// Move element to the same position vertically
const yPosition = window.pageYOffset || document.documentElement.scrollTop;
this.textarea.style.top = yPosition + 'px';
this.textarea.setAttribute('readonly', '');
this.textarea.value = text;
document.body.appendChild(this.textarea);
this.textarea.select();
this.textarea.setSelectionRange(0, this.textarea.value.length);
}
/** Remove the text area from the DOM. */
private removeFake() {
if (this.textarea) {
document.body.removeChild(this.textarea);
this.textarea = null;
return copySuccessful;
}
/**
* Creates a hidden textarea element, sets its value from `text` property,
* and makes a selection on it.
*/
private createTextareaAndSelect(text: string)
{
// Create a fake element to hold the contents to copy
this.textarea = document.createElement('textarea');
// Prevent zooming on iOS
this.textarea.style.fontSize = '12pt';
// Hide the element
this.textarea.classList.add('cdk-visually-hidden');
// Move element to the same position vertically
const yPosition = window.pageYOffset || document.documentElement.scrollTop;
this.textarea.style.top = yPosition + 'px';
this.textarea.setAttribute('readonly', '');
this.textarea.value = text;
document.body.appendChild(this.textarea);
this.textarea.select();
this.textarea.setSelectionRange(0, this.textarea.value.length);
}
/** Remove the text area from the DOM. */
private removeFake()
{
if ( this.textarea )
{
document.body.removeChild(this.textarea);
this.textarea = null;
}
}
}
}

View File

@@ -1,100 +1,100 @@
<div class="demo-sidenav">
<md-list>
<h3 md-subheader>Sidenav Demo</h3>
<mat-list>
<h3 matSubheader>Sidenav Demo</h3>
<md-list-item>
<mat-list-item>
<span>Sidenav Item 1</span>
</md-list-item>
</mat-list-item>
<md-divider></md-divider>
<mat-divider></mat-divider>
<md-list-item>
<mat-list-item>
<span>Sidenav Item 2</span>
</md-list-item>
</mat-list-item>
<md-divider></md-divider>
<mat-divider></mat-divider>
<md-list-item>
<mat-list-item>
<span>Sidenav Item 3</span>
</md-list-item>
</mat-list-item>
<md-divider></md-divider>
<mat-divider></mat-divider>
<md-list-item>
<mat-list-item>
<span>Sidenav Item 4</span>
</md-list-item>
</mat-list-item>
<md-divider></md-divider>
<mat-divider></mat-divider>
<md-list-item>
<mat-list-item>
<span>Sidenav Item 5</span>
</md-list-item>
</mat-list-item>
<md-divider></md-divider>
<mat-divider></mat-divider>
<md-list-item>
<mat-list-item>
<span>Sidenav Item 6</span>
</md-list-item>
</mat-list-item>
<md-divider></md-divider>
<mat-divider></mat-divider>
<md-list-item>
<mat-list-item>
<span>Sidenav Item 7</span>
</md-list-item>
</mat-list-item>
<md-divider></md-divider>
<mat-divider></mat-divider>
<md-list-item>
<mat-list-item>
<span>Sidenav Item 8</span>
</md-list-item>
</mat-list-item>
<md-divider></md-divider>
<mat-divider></mat-divider>
<md-list-item>
<mat-list-item>
<span>Sidenav Item 9</span>
</md-list-item>
</mat-list-item>
<md-divider></md-divider>
<mat-divider></mat-divider>
<md-list-item>
<mat-list-item>
<span>Sidenav Item 10</span>
</md-list-item>
</mat-list-item>
<md-divider></md-divider>
<mat-divider></mat-divider>
<md-list-item>
<mat-list-item>
<span>Sidenav Item 11</span>
</md-list-item>
</mat-list-item>
<md-divider></md-divider>
<mat-divider></mat-divider>
<md-list-item>
<mat-list-item>
<span>Sidenav Item 12</span>
</md-list-item>
</mat-list-item>
<md-divider></md-divider>
<mat-divider></mat-divider>
<md-list-item>
<mat-list-item>
<span>Sidenav Item 13</span>
</md-list-item>
</mat-list-item>
<md-divider></md-divider>
<mat-divider></mat-divider>
<md-list-item>
<mat-list-item>
<span>Sidenav Item 14</span>
</md-list-item>
</mat-list-item>
<md-divider></md-divider>
<mat-divider></mat-divider>
<md-list-item>
<mat-list-item>
<span>Sidenav Item 15</span>
</md-list-item>
</mat-list-item>
<md-divider></md-divider>
<mat-divider></mat-divider>
<md-list-item>
<mat-list-item>
<span>Sidenav Item 16</span>
</md-list-item>
</mat-list-item>
</md-list>
</mat-list>
</div>

View File

@@ -1,23 +1,23 @@
<button md-icon-button
<button mat-icon-button
type="button"
class="mat-elevation-z1"
[mdMenuTriggerFor]="colorMenu"
[matMenuTriggerFor]="colorMenu"
(onMenuOpen)="onMenuOpen()"
[ngClass]="'md-'+selectedPalette+'-'+selectedHue+'-bg'">
<md-icon>palette</md-icon>
[ngClass]="'mat-'+selectedPalette+'-'+selectedHue+'-bg'">
<mat-icon>palette</mat-icon>
</button>
<md-menu #colorMenu="mdMenu" class="fuse-material-color-picker-menu">
<mat-menu #colorMenu="matMenu" class="fuse-material-color-picker-menu">
<header [ngClass]="selectedColor?.class || 'md-accent-bg'"
<header [ngClass]="selectedColor?.class || 'mat-accent-bg'"
class="mat-elevation-z4"
fxLayout="row"
fxLayoutAlign="space-between center">
<button md-icon-button
<button mat-icon-button
[style.visibility]="view==='hues'?'visible':'hidden'"
(click)="$event.stopPropagation();backToPaletteSelection()" aria-label="Palette">
<md-icon class="s-20">arrow_back</md-icon>
<mat-icon class="s-20">arrow_back</mat-icon>
</button>
<span *ngIf="selectedColor?.palette">
@@ -28,11 +28,11 @@
Select Color
</span>
<button md-icon-button
<button mat-icon-button
class="remove-color-button"
(click)="removeColor()"
aria-label="Remove Color">
<md-icon class="s-20">delete</md-icon>
<mat-icon class="s-20">delete</mat-icon>
</button>
</header>
@@ -47,10 +47,10 @@
fxLayoutAlign="start start"
class="colors" fusePerfectScrollbar>
<div class="color"
[ngClass]="'md-'+color.key+'-bg'"
[ngClass]="'mat-'+color.key+'-bg'"
*ngFor="let color of (colors | keys)"
(click)="$event.stopPropagation();selectPalette(color.key)"
fxLayout="row" fxLayoutAlign="start end" md-ink-ripple>
fxLayout="row" fxLayoutAlign="start end" mat-ink-ripple>
<span class="label">
{{color.key}}
</span>
@@ -67,16 +67,16 @@
<div class="color"
*ngFor="let hue of hues"
[fxHide]="selectedPalette === 'white' && hue !== '500'|| selectedPalette === 'black' && hue !== '500'"
[ngClass]="'md-'+selectedPalette+'-'+hue+'-bg'"
[ngClass]="'mat-'+selectedPalette+'-'+hue+'-bg'"
(click)="selectHue(hue)"
fxLayout="row" fxLayoutAlign="start end" md-ink-ripple>
fxLayout="row" fxLayoutAlign="start end" mat-ink-ripple>
<span class="label">
{{hue}}
</span>
<md-icon *ngIf="selectedHue === hue" class="s-16">check</md-icon>
<mat-icon *ngIf="selectedHue === hue" class="s-16">check</mat-icon>
</div>
</div>
</div>
</div>
</md-menu>
</mat-menu>

View File

@@ -11,7 +11,7 @@
overflow: hidden;
min-height: 258px;
height: 308px;
background-color: #f7f7f7;
background-color: #F7F7F7;
.view {
position: absolute;
@@ -39,7 +39,7 @@
font-size: 10px;
}
md-icon {
mat-icon {
position: absolute;
top: 2px;
right: 2px;

View File

@@ -129,7 +129,7 @@ export class FuseMaterialColorPickerComponent implements OnInit, OnChanges
{
this.selectedBg = MatColors.getColor(this.selectedPalette)[this.selectedHue];
this.selectedFg = MatColors.getColor(this.selectedPalette).contrast[this.selectedHue];
this.selectedClass = 'md-' + this.selectedPalette + '-' + this.selectedHue + '-bg';
this.selectedClass = 'mat-' + this.selectedPalette + '-' + this.selectedHue + '-bg';
}
else
{

View File

@@ -1,7 +1,7 @@
<a class="nav-link" md-ripple>
<md-icon class="nav-link-icon" *ngIf="item.icon">{{item.icon}}</md-icon>
<a class="nav-link" matRipple>
<mat-icon class="nav-link-icon" *ngIf="item.icon">{{item.icon}}</mat-icon>
<span class="nav-link-title">{{item.title}}</span>
<md-icon class="collapse-arrow">keyboard_arrow_right</md-icon>
<mat-icon class="collapse-arrow">keyboard_arrow_right</mat-icon>
</a>
<div class="children" [ngClass]="{'open': isOpen}">

View File

@@ -1,6 +1,17 @@
<a class="nav-link" md-ripple
[routerLink]="[item.url]" routerLinkActive="active">
<md-icon class="nav-link-icon" *ngIf="item.icon">{{item.icon}}</md-icon>
<a class="nav-link" *ngIf="item.url" [routerLink]="[item.url]" routerLinkActive="active" matRipple>
<mat-icon class="nav-link-icon" *ngIf="item.icon">{{item.icon}}</mat-icon>
<span class="nav-link-title">{{item.title}}</span>
<span class="nav-link-badge" *ngIf="item.badge" [ngStyle]="{'background-color': item.badge.bg,'color': item.badge.fg}">{{item.badge.title}}</span>
</a>
<span class="nav-link-badge" *ngIf="item.badge"
[ngStyle]="{'background-color': item.badge.bg,'color': item.badge.fg}">
{{item.badge.title}}
</span>
</a>
<span class="nav-link" *ngIf="item.function" (click)="item.function()" matRipple>
<mat-icon class="nav-link-icon" *ngIf="item.icon">{{item.icon}}</mat-icon>
<span class="nav-link-title">{{item.title}}</span>
<span class="nav-link-badge" *ngIf="item.badge"
[ngStyle]="{'background-color': item.badge.bg,'color': item.badge.fg}">
{{item.badge.title}}
</span>
</span>

View File

@@ -19,6 +19,7 @@ export class FuseNavigationService
/**
* Get navigation model
*
* @returns {any[]}
*/
getNavigationModel()
@@ -28,19 +29,125 @@ export class FuseNavigationService
/**
* Set the navigation model
*
* @param model
*/
setNavigationModel(model)
{
// console.log(model);
this.navigationModel = model;
console.log(this.navigationModel);
this.onNavigationModelChange.next(this.navigationModel.model);
}
/**
* Add new navigation item
* to the given location
*/
addNavigationItem(location, item)
{
// Parse the location
const locationArr = location.split('.');
if ( locationArr.length === 0 )
{
return;
}
// Find the navigation item
const navItem = this.findNavigationItemById(locationArr);
// Act according to the item type
switch ( navItem.type )
{
case 'item':
// Create a children array
navItem.children = [];
// Push the item
navItem.children.push(item);
// Change the item type to collapsable
navItem.type = 'collapse';
break;
case 'collapse':
// Push the item
navItem.children.push(item);
break;
case 'group':
// Push the item
navItem.children.push(item);
break;
default:
break;
}
}
/**
* Get navigation item from
* given location
*
* @param location
*/
getNavigationItem(location)
{
// Parse the location
const locationArr = location.split('.');
if ( locationArr.length === 0 )
{
return;
}
// Find and return the navigation item
return this.findNavigationItemById(locationArr);
}
/**
* Find navigation item by location
*
* @param location
* @param navigation
*/
findNavigationItemById(location, navigation?)
{
if ( !navigation )
{
navigation = this.navigationModel.model;
}
// Iterate through the given navigation
for ( const navItem of navigation )
{
// If the nav item id equals the first location...
if ( navItem.id === location[0] )
{
// If there is more location to look at...
if ( location.length > 1 )
{
// Remove the first item of the location
location.splice(0, 1);
// Go nested...
return this.findNavigationItemById(location, navItem.children);
}
// Otherwise just return the nav item
else
{
return navItem;
}
}
}
}
/**
* Get flattened navigation array
* @param navigationItems

View File

@@ -1,7 +1,7 @@
<a class="nav-link" md-ripple (click)="toggleOpen($event)">
<md-icon class="nav-link-icon" *ngIf="item.icon">{{item.icon}}</md-icon>
<a class="nav-link" matRipple (click)="toggleOpen($event)">
<mat-icon class="nav-link-icon" *ngIf="item.icon">{{item.icon}}</mat-icon>
<span class="nav-link-title">{{item.title}}</span>
<md-icon class="collapse-arrow">keyboard_arrow_right</md-icon>
<mat-icon class="collapse-arrow">keyboard_arrow_right</mat-icon>
</a>
<div class="children" [@slideInOut]="isOpen">
<ng-container *ngFor="let item of item.children">

View File

@@ -1,6 +1,17 @@
<a class="nav-link" md-ripple
[routerLink]="[item.url]" routerLinkActive="active">
<md-icon class="nav-link-icon" *ngIf="item.icon">{{item.icon}}</md-icon>
<a class="nav-link" *ngIf="item.url" [routerLink]="[item.url]" routerLinkActive="active" matRipple>
<mat-icon class="nav-link-icon" *ngIf="item.icon">{{item.icon}}</mat-icon>
<span class="nav-link-title">{{item.title}}</span>
<span class="nav-link-badge" *ngIf="item.badge" [ngStyle]="{'background-color': item.badge.bg,'color': item.badge.fg}">{{item.badge.title}}</span>
<span class="nav-link-badge" *ngIf="item.badge"
[ngStyle]="{'background-color': item.badge.bg,'color': item.badge.fg}">
{{item.badge.title}}
</span>
</a>
<span class="nav-link" *ngIf="item.function" (click)="item.function()" matRipple>
<mat-icon class="nav-link-icon" *ngIf="item.icon">{{item.icon}}</mat-icon>
<span class="nav-link-title">{{item.title}}</span>
<span class="nav-link-badge" *ngIf="item.badge"
[ngStyle]="{'background-color': item.badge.bg,'color': item.badge.fg}">
{{item.badge.title}}
</span>
</span>

View File

@@ -1,20 +1,20 @@
<div class="fuse-search-bar" [ngClass]="{'expanded':!collapsed}" fxFlex="0 1 auto">
<div [ngClass]="toolbarColor" fxLayout="row" fxLayoutAlign="start center" fxFlex>
<label for="fuse-search-bar-input">
<button md-icon-button class="fuse-search-bar-expander" aria-label="Expand Search Bar" (click)="expand()"
<button mat-icon-button class="fuse-search-bar-expander" aria-label="Expand Search Bar" (click)="expand()"
*ngIf="collapsed">
<md-icon class="s-24">search</md-icon>
<mat-icon class="s-24">search</mat-icon>
</button>
<!--<span class="fuse-search-bar-loader" fxLayout="row" fxLayoutAlign="center center" *ngIf="!collapsed">
<md-progress-spinner color="md-accent" mode="indeterminate"></md-progress-spinner>
<mat-progress-spinner color="mat-accent" mode="indeterminate"></mat-progress-spinner>
</span>-->
</label>
<input id="fuse-search-bar-input" class="ml-24" type="text" placeholder="Search" (input)="search($event)" fxFlex>
<button md-icon-button class="fuse-search-bar-collapser md-icon-button" (click)="collapse()"
<button mat-icon-button class="fuse-search-bar-collapser mat-icon-button" (click)="collapse()"
aria-label="Collapse Search Bar">
<md-icon class="s-24">close</md-icon>
<mat-icon class="s-24">close</mat-icon>
</button>
</div>

View File

@@ -2,8 +2,8 @@
<div class="shortcuts-mobile-toggle" *ngIf="!mobileShortcutsPanelActive" fxLayout="row" fxLayoutAlign="start center"
fxHide fxShow.lt-md>
<button md-icon-button (click)="showMobileShortcutsPanel()">
<md-icon class="amber-600-fg">star</md-icon>
<button mat-icon-button (click)="showMobileShortcutsPanel()">
<mat-icon class="amber-600-fg">star</mat-icon>
</button>
</div>
@@ -16,8 +16,8 @@
<div class="w-40 h-40 p-4" fxLayout="row" fxLayoutAlign="center center"
*ngFor="let shortcutItem of shortcutItems">
<a md-icon-button mdTooltip="{{shortcutItem.title}}" [routerLink]="shortcutItem.url">
<md-icon *ngIf="shortcutItem.icon">{{shortcutItem.icon}}</md-icon>
<a mat-icon-button matTooltip="{{shortcutItem.title}}" [routerLink]="shortcutItem.url">
<mat-icon *ngIf="shortcutItem.icon">{{shortcutItem.icon}}</mat-icon>
<span *ngIf="!shortcutItem.icon" class="h2 secondary-text text-bold">
{{shortcutItem.title.substr(0, 1).toUpperCase()}}
</span>
@@ -25,64 +25,64 @@
</div>
<button md-icon-button [mdMenuTriggerFor]="addMenu" md-tooltip="Click to add/remove shortcut"
<button mat-icon-button [matMenuTriggerFor]="addMenu" matTooltip="Click to add/remove shortcut"
(onMenuOpen)="onMenuOpen()">
<md-icon class="amber-600-fg">star</md-icon>
<mat-icon class="amber-600-fg">star</mat-icon>
</button>
</div>
<div class="shortcuts-mobile-close" fxLayout="row" fxLayoutAlign="start center" fxHide fxShow.lt-md>
<button md-icon-button (click)="hideMobileShortcutsPanel()">
<md-icon>close</md-icon>
<button mat-icon-button (click)="hideMobileShortcutsPanel()">
<mat-icon>close</mat-icon>
</button>
</div>
</div>
<md-menu #addMenu="mdMenu" class="w-240">
<mat-menu #addMenu="matMenu" class="w-240">
<md-input-container class="px-16 w-100-p" (click)="$event.stopPropagation()" floatPlaceholder="never">
<input #searchInput mdInput placeholder="Search for an app or a page" (input)="search($event)">
</md-input-container>
<mat-form-field class="px-16 w-100-p" (click)="$event.stopPropagation()" floatPlaceholder="never">
<input #searchInput matInput placeholder="Search for an app or a page" (input)="search($event)">
</mat-form-field>
<md-divider></md-divider>
<md-nav-list *ngIf="!searching" style="max-height: 312px; overflow: auto" fusePerfectScrollbar>
<mat-divider></mat-divider>
<mat-nav-list *ngIf="!searching" style="max-height: 312px; overflow: auto" fusePerfectScrollbar>
<md-list-item *ngFor="let shortcutItem of shortcutItems"
(click)="toggleShortcut($event, shortcutItem)">
<mat-list-item *ngFor="let shortcutItem of shortcutItems"
(click)="toggleShortcut($event, shortcutItem)">
<div class="w-100-p" fxLayout="row" fxLayoutAlign="start center">
<md-icon md-list-icon class="mr-8" *ngIf="shortcutItem.icon">{{shortcutItem.icon}}</md-icon>
<mat-icon mat-list-icon class="mr-8" *ngIf="shortcutItem.icon">{{shortcutItem.icon}}</mat-icon>
<span class="h2 w-32 h-32 p-4 mr-8 secondary-text text-bold" fxLayout="row"
fxLayoutAlign="center center" *ngIf="!shortcutItem.icon">
{{shortcutItem.title.substr(0, 1).toUpperCase()}}
</span>
<p md-line fxFlex>{{shortcutItem.title}}</p>
<md-icon class="ml-8">star</md-icon>
<p matLine fxFlex>{{shortcutItem.title}}</p>
<mat-icon class="ml-8">star</mat-icon>
</div>
</md-list-item>
<md-list-item *ngIf="shortcutItems.length === 0">
</mat-list-item>
<mat-list-item *ngIf="shortcutItems.length === 0">
<p>
<small>No shortcuts yet!</small>
</p>
</md-list-item>
</md-nav-list>
</mat-list-item>
</mat-nav-list>
<md-nav-list *ngIf="searching" style="max-height: 312px; overflow: auto" fusePerfectScrollbar>
<md-list-item *ngFor="let navigationItem of filteredNavigationItems"
(click)="toggleShortcut($event, navigationItem)">
<mat-nav-list *ngIf="searching" style="max-height: 312px; overflow: auto" fusePerfectScrollbar>
<mat-list-item *ngFor="let navigationItem of filteredNavigationItems"
(click)="toggleShortcut($event, navigationItem)">
<div class="w-100-p" fxLayout="row" fxLayoutAlign="start center">
<md-icon md-list-icon class="mr-8" *ngIf="navigationItem.icon">{{navigationItem.icon}}</md-icon>
<mat-icon mat-list-icon class="mr-8" *ngIf="navigationItem.icon">{{navigationItem.icon}}</mat-icon>
<span class="h2 w-32 h-32 p-4 mr-8 secondary-text text-bold" fxLayout="row"
fxLayoutAlign="center center" *ngIf="!navigationItem.icon">
{{navigationItem.title.substr(0, 1).toUpperCase()}}
</span>
<p md-line fxFlex>{{navigationItem.title}}</p>
<md-icon class="ml-8" *ngIf="isInShortcuts(navigationItem)">star</md-icon>
<p matLine fxFlex>{{navigationItem.title}}</p>
<mat-icon class="ml-8" *ngIf="isInShortcuts(navigationItem)">star</mat-icon>
</div>
</md-list-item>
</md-nav-list>
</md-menu>
</mat-list-item>
</mat-nav-list>
</mat-menu>
</div>

View File

@@ -1,50 +1,50 @@
<button #openButton md-icon-button class="open-button md-primary-bg mat-elevation-z2" (click)="openBar()">
<md-icon>settings</md-icon>
<button #openButton mat-icon-button class="open-button mat-primary-bg mat-elevation-z2" (click)="openBar()">
<mat-icon>settings</mat-icon>
</button>
<div class="theme-options-panel-overlay" #overlay [fxHide]="barClosed" [@fadeInOut]="!barClosed"></div>
<div #panel class="theme-options-panel md-white-bg mat-elevation-z8">
<div #panel class="theme-options-panel mat-white-bg mat-elevation-z8">
<button md-icon-button class="close-button" (click)="closeBar()">
<md-icon>close</md-icon>
<button mat-icon-button class="close-button" (click)="closeBar()">
<mat-icon>close</mat-icon>
</button>
<div class="theme-options-panel-inner" fxLayout="column" fxLayoutAlign="start start">
<h3>Navigation:</h3>
<md-radio-group [(ngModel)]="fuseSettings.layout.navigation" (ngModelChange)="onSettingsChange()"
fxLayout="column" fxLayout.gt-xs="row" fxLayoutAlign="start start" fxLayoutWrap>
<md-radio-button class="mr-8 mb-8" value="top">Top</md-radio-button>
<md-radio-button class="mr-8 mb-8" value="left">Left</md-radio-button>
<md-radio-button class="mr-8 mb-8" value="right">Right</md-radio-button>
<md-radio-button class="mr-8 mb-8" value="none">None</md-radio-button>
</md-radio-group>
<mat-radio-group [(ngModel)]="fuseSettings.layout.navigation" (ngModelChange)="onSettingsChange()"
fxLayout="column" fxLayout.gt-xs="row" fxLayoutAlign="start start" fxLayoutWrap>
<mat-radio-button class="mr-8 mb-8" value="top">Top</mat-radio-button>
<mat-radio-button class="mr-8 mb-8" value="left">Left</mat-radio-button>
<mat-radio-button class="mr-8 mb-8" value="right">Right</mat-radio-button>
<mat-radio-button class="mr-8 mb-8" value="none">None</mat-radio-button>
</mat-radio-group>
<h3 class="mt-24">Toolbar:</h3>
<md-radio-group [(ngModel)]="fuseSettings.layout.toolbar" (ngModelChange)="onSettingsChange()"
fxLayout="column" fxLayout.gt-xs="row" fxLayoutAlign="start start" fxLayoutWrap>
<md-radio-button class="mr-8 mb-8" value="below">Below</md-radio-button>
<md-radio-button class="mr-8 mb-8" value="above">Above</md-radio-button>
<md-radio-button class="mr-8 mb-8" value="none">None</md-radio-button>
</md-radio-group>
<mat-radio-group [(ngModel)]="fuseSettings.layout.toolbar" (ngModelChange)="onSettingsChange()"
fxLayout="column" fxLayout.gt-xs="row" fxLayoutAlign="start start" fxLayoutWrap>
<mat-radio-button class="mr-8 mb-8" value="below">Below</mat-radio-button>
<mat-radio-button class="mr-8 mb-8" value="above">Above</mat-radio-button>
<mat-radio-button class="mr-8 mb-8" value="none">None</mat-radio-button>
</mat-radio-group>
<h3 class="mt-24">Footer:</h3>
<md-radio-group [(ngModel)]="fuseSettings.layout.footer" (ngModelChange)="onSettingsChange()"
fxLayout="column" fxLayout.gt-xs="row" fxLayoutAlign="start start" fxLayoutWrap>
<md-radio-button class="mr-8 mb-8" value="below">Below</md-radio-button>
<md-radio-button class="mr-8 mb-8" value="above">Above</md-radio-button>
<md-radio-button class="mr-8 mb-8" value="none">None</md-radio-button>
</md-radio-group>
<mat-radio-group [(ngModel)]="fuseSettings.layout.footer" (ngModelChange)="onSettingsChange()"
fxLayout="column" fxLayout.gt-xs="row" fxLayoutAlign="start start" fxLayoutWrap>
<mat-radio-button class="mr-8 mb-8" value="below">Below</mat-radio-button>
<mat-radio-button class="mr-8 mb-8" value="above">Above</mat-radio-button>
<mat-radio-button class="mr-8 mb-8" value="none">None</mat-radio-button>
</mat-radio-group>
<h3 class="mt-24">Layout Mode:</h3>
<md-radio-group [(ngModel)]="fuseSettings.layout.mode" (ngModelChange)="onSettingsChange()"
fxLayout="column" fxLayout.gt-xs="row" fxLayoutAlign="start start" fxLayoutWrap>
<md-radio-button class="mr-8 mb-8" value="boxed">Boxed</md-radio-button>
<md-radio-button class="mr-8 mb-8" value="fullwidth">Fullwidth</md-radio-button>
</md-radio-group>
<mat-radio-group [(ngModel)]="fuseSettings.layout.mode" (ngModelChange)="onSettingsChange()"
fxLayout="column" fxLayout.gt-xs="row" fxLayoutAlign="start start" fxLayoutWrap>
<mat-radio-button class="mr-8 mb-8" value="boxed">Boxed</mat-radio-button>
<mat-radio-button class="mr-8 mb-8" value="fullwidth">Fullwidth</mat-radio-button>
</mat-radio-group>
<md-divider></md-divider>
<mat-divider></mat-divider>
<h3>Colors:</h3>
<div class="colors">
@@ -69,30 +69,31 @@
</div>
<md-divider></md-divider>
<mat-divider></mat-divider>
<h3>Router Animation:</h3>
<md-select class="p-0" [(ngModel)]="fuseSettings.routerAnimation">
<md-option value="none">
None
</md-option>
<md-option value="slideUp">
Slide up
</md-option>
<md-option value="slideDown">
Slide down
</md-option>
<md-option value="slideRight">
Slide right
</md-option>
<md-option value="slideLeft">
Slide left
</md-option>
<md-option value="fadeIn">
Fade in
</md-option>
</md-select>
<mat-form-field class="w-100-p">
<mat-select class="p-0" [(ngModel)]="fuseSettings.routerAnimation">
<mat-option value="none">
None
</mat-option>
<mat-option value="slideUp">
Slide up
</mat-option>
<mat-option value="slideDown">
Slide down
</mat-option>
<mat-option value="slideRight">
Slide right
</mat-option>
<mat-option value="slideLeft">
Slide left
</mat-option>
<mat-option value="fadeIn">
Fade in
</mat-option>
</mat-select>
</mat-form-field>
</div>
</div>

View File

@@ -14,6 +14,7 @@
display: block;
right: 0;
top: 160px;
z-index: 998;
&.bar-closed .theme-options-panel {
display: none;
@@ -48,7 +49,7 @@
color: rgba(0, 0, 0, 0.54);
}
.mat-divider{
.mat-divider {
display: block !important;
width: 100%;
margin: 24px 0 16px 0;
@@ -102,7 +103,7 @@
opacity: .75;
z-index: 998;
md-icon {
mat-icon {
animation: rotating 3s linear infinite;
}

View File

@@ -3,6 +3,7 @@ import { style, animate, AnimationBuilder, AnimationPlayer } from '@angular/anim
import { Subscription } from 'rxjs/Subscription';
import { FuseConfigService } from '../../services/config.service';
import { fuseAnimations } from '../../animations';
import { FuseNavigationService } from '../navigation/navigation.service';
@Component({
selector : 'fuse-theme-options',
@@ -26,6 +27,7 @@ export class FuseThemeOptionsComponent implements OnInit, OnDestroy
constructor(
private animationBuilder: AnimationBuilder,
private fuseConfig: FuseConfigService,
private navigationService: FuseNavigationService,
private renderer: Renderer2
)
{
@@ -38,6 +40,27 @@ export class FuseThemeOptionsComponent implements OnInit, OnDestroy
this.fuseSettings = newSettings;
}
);
// Get the nav model and add customize nav item
// that opens the bar programmatically
const navModel = this.navigationService.getNavigationModel();
navModel.push({
'id' : 'custom-function',
'title' : 'Custom Function',
'type' : 'group',
'children': [
{
'id' : 'customize',
'title' : 'Customize',
'type' : 'item',
'icon' : 'settings',
'function': () => {
this.openBar();
}
}
]
});
}
ngOnInit()

View File

@@ -21,7 +21,7 @@ export class FuseIfOnDomDirective implements AfterContentChecked
{
setTimeout(() => {
this.viewContainer.createEmbeddedView(this.templateRef);
}, 350);
}, 300);
this.isCreated = true;
}
else if ( this.isCreated && !document.body.contains(this.element.nativeElement) )

View File

@@ -1,5 +1,5 @@
import { AfterViewInit, Directive, ElementRef, NgZone, OnDestroy, OnInit } from '@angular/core';
import * as Ps from 'perfect-scrollbar';
import { AfterViewInit, Directive, ElementRef, OnDestroy, OnInit } from '@angular/core';
import PerfectScrollbar from 'perfect-scrollbar';
import { FuseConfigService } from '../../services/config.service';
import { Subscription } from 'rxjs/Subscription';
import { Platform } from '@angular/cdk/platform';
@@ -13,10 +13,10 @@ export class FusePerfectScrollbarDirective implements OnInit, AfterViewInit, OnD
isDisableCustomScrollbars = false;
isMobile = false;
isInitialized = true;
ps;
constructor(
private element: ElementRef,
private zone: NgZone,
private fuseConfig: FuseConfigService,
private platform: Platform
)
@@ -48,11 +48,8 @@ export class FusePerfectScrollbarDirective implements OnInit, AfterViewInit, OnD
return;
}
this.zone.runOutsideAngular(() => {
// Initialize the perfect-scrollbar
Ps.initialize(this.element.nativeElement);
});
// Initialize the perfect-scrollbar
this.ps = new PerfectScrollbar(this.element.nativeElement);
}
ngOnDestroy()
@@ -65,7 +62,7 @@ export class FusePerfectScrollbarDirective implements OnInit, AfterViewInit, OnD
this.onSettingsChanged.unsubscribe();
// Destroy the perfect-scrollbar
Ps.destroy(this.element.nativeElement);
this.ps.destroy();
}
update()
@@ -76,7 +73,7 @@ export class FusePerfectScrollbarDirective implements OnInit, AfterViewInit, OnD
}
// Update the perfect-scrollbar
Ps.update(this.element.nativeElement);
this.ps.update();
}
destroy()
@@ -126,7 +123,6 @@ export class FusePerfectScrollbarDirective implements OnInit, AfterViewInit, OnD
// PS has weird event sending order, this is a workaround for that
this.update();
this.update();
}
else if ( value !== this.element.nativeElement[target] )

View File

@@ -0,0 +1,99 @@
import { Directive, Input, OnInit, HostListener, OnDestroy, HostBinding } from '@angular/core';
import { MatSidenav } from '@angular/material';
import { FuseMatSidenavHelperService } from 'app/core/directives/mat-sidenav-helper/mat-sidenav-helper.service';
import { FuseMatchMedia } from '../../services/match-media.service';
import { ObservableMedia } from '@angular/flex-layout';
import { Subscription } from 'rxjs/Subscription';
@Directive({
selector: '[fuseMatSidenavHelper]'
})
export class FuseMatSidenavHelperDirective implements OnInit, OnDestroy
{
matchMediaSubscription: Subscription;
@HostBinding('class.mat-is-locked-open') isLockedOpen = true;
@HostBinding('class.mat-stop-transition') stopTransition = true;
@Input('fuseMatSidenavHelper') id: string;
@Input('mat-is-locked-open') matIsLockedOpenBreakpoint: string;
constructor(
private fuseMatSidenavService: FuseMatSidenavHelperService,
private fuseMatchMedia: FuseMatchMedia,
private observableMedia: ObservableMedia,
private matSidenav: MatSidenav
)
{
}
ngOnInit()
{
this.fuseMatSidenavService.setSidenav(this.id, this.matSidenav);
if ( this.observableMedia.isActive(this.matIsLockedOpenBreakpoint) )
{
setTimeout(() => {
this.isLockedOpen = true;
this.matSidenav.mode = 'side';
this.matSidenav.open();
});
this.stopTransition = false;
}
else
{
setTimeout(() => {
this.isLockedOpen = false;
this.matSidenav.mode = 'over';
this.matSidenav.close();
});
setTimeout(() => {
this.stopTransition = false;
}, 3000);
}
this.matchMediaSubscription = this.fuseMatchMedia.onMediaChange.subscribe(() => {
if ( this.observableMedia.isActive(this.matIsLockedOpenBreakpoint) )
{
setTimeout(() => {
this.isLockedOpen = true;
this.matSidenav.mode = 'side';
this.matSidenav.open();
});
}
else
{
setTimeout(() => {
this.isLockedOpen = false;
this.matSidenav.mode = 'over';
this.matSidenav.close();
});
}
});
}
ngOnDestroy()
{
this.matchMediaSubscription.unsubscribe();
}
}
@Directive({
selector: '[fuseMatSidenavToggler]'
})
export class FuseMatSidenavTogglerDirective
{
@Input('fuseMatSidenavToggler') id;
constructor(private fuseMatSidenavService: FuseMatSidenavHelperService)
{
}
@HostListener('click')
onClick()
{
this.fuseMatSidenavService.getSidenav(this.id).toggle();
}
}

View File

@@ -1,10 +1,10 @@
import { Injectable } from '@angular/core';
import { MdSidenav } from '@angular/material';
import { MatSidenav } from '@angular/material';
@Injectable()
export class FuseMdSidenavHelperService
export class FuseMatSidenavHelperService
{
sidenavInstances: MdSidenav[];
sidenavInstances: MatSidenav[];
constructor()
{

View File

@@ -1,99 +0,0 @@
import { Directive, Input, OnInit, HostListener, OnDestroy, HostBinding } from '@angular/core';
import { MdSidenav } from '@angular/material';
import { FuseMdSidenavHelperService } from 'app/core/directives/md-sidenav-helper/md-sidenav-helper.service';
import { FuseMatchMedia } from '../../services/match-media.service';
import { ObservableMedia } from '@angular/flex-layout';
import { Subscription } from 'rxjs/Subscription';
@Directive({
selector: '[fuseMdSidenavHelper]'
})
export class FuseMdSidenavHelperDirective implements OnInit, OnDestroy
{
matchMediaSubscription: Subscription;
@HostBinding('class.md-is-locked-open') isLockedOpen = true;
@HostBinding('class.md-stop-transition') stopTransition = true;
@Input('fuseMdSidenavHelper') id: string;
@Input('md-is-locked-open') mdIsLockedOpenBreakpoint: string;
constructor(
private fuseMdSidenavService: FuseMdSidenavHelperService,
private fuseMatchMedia: FuseMatchMedia,
private observableMedia: ObservableMedia,
private mdSidenav: MdSidenav
)
{
}
ngOnInit()
{
this.fuseMdSidenavService.setSidenav(this.id, this.mdSidenav);
if ( this.observableMedia.isActive(this.mdIsLockedOpenBreakpoint) )
{
setTimeout(() => {
this.isLockedOpen = true;
this.mdSidenav.mode = 'side';
this.mdSidenav.open();
});
this.stopTransition = false;
}
else
{
setTimeout(() => {
this.isLockedOpen = false;
this.mdSidenav.mode = 'over';
this.mdSidenav.close();
});
setTimeout(() => {
this.stopTransition = false;
}, 3000);
}
this.matchMediaSubscription = this.fuseMatchMedia.onMediaChange.subscribe(() => {
if ( this.observableMedia.isActive(this.mdIsLockedOpenBreakpoint) )
{
setTimeout(() => {
this.isLockedOpen = true;
this.mdSidenav.mode = 'side';
this.mdSidenav.open();
});
}
else
{
setTimeout(() => {
this.isLockedOpen = false;
this.mdSidenav.mode = 'over';
this.mdSidenav.close();
});
}
});
}
ngOnDestroy()
{
this.matchMediaSubscription.unsubscribe();
}
}
@Directive({
selector: '[fuseMdSidenavToggler]'
})
export class FuseMdSidenavTogglerDirective
{
@Input('fuseMdSidenavToggler') id;
constructor(private fuseMdSidenavService: FuseMdSidenavHelperService)
{
}
@HostListener('click')
onClick()
{
this.fuseMdSidenavService.getSidenav(this.id).toggle();
}
}

View File

@@ -1,106 +1,108 @@
import { NgModule } from '@angular/core';
import {
MdAutocompleteModule,
MdButtonModule,
MdButtonToggleModule,
MdCheckboxModule,
MdToolbarModule,
MdTooltipModule,
MdCardModule,
MdChipsModule,
MdDatepickerModule,
MdDialogModule,
MdExpansionModule,
MdGridListModule,
MdIconModule,
MdInputModule,
MdListModule,
MdMenuModule,
MdNativeDateModule,
MdPaginatorModule,
MdProgressBarModule,
MdProgressSpinnerModule,
MdRadioModule,
MdRippleModule,
MdSelectModule,
MdSidenavModule,
MdSliderModule,
MdSlideToggleModule,
MdSnackBarModule,
MdStepperModule,
MdSortModule,
MdTableModule,
MdTabsModule
MatAutocompleteModule,
MatButtonModule,
MatButtonToggleModule,
MatCheckboxModule,
MatToolbarModule,
MatTooltipModule,
MatCardModule,
MatChipsModule,
MatDatepickerModule,
MatDialogModule,
MatExpansionModule,
MatFormFieldModule,
MatGridListModule,
MatIconModule,
MatInputModule,
MatListModule,
MatMenuModule,
MatNativeDateModule,
MatPaginatorModule,
MatProgressBarModule,
MatProgressSpinnerModule,
MatRadioModule,
MatRippleModule,
MatSelectModule,
MatSidenavModule,
MatSliderModule,
MatSlideToggleModule,
MatSnackBarModule,
MatSortModule,
MatTableModule,
MatTabsModule,
MatStepperModule
} from '@angular/material';
import { CdkTableModule } from '@angular/cdk/table';
@NgModule({
imports: [
MdAutocompleteModule,
MdButtonModule,
MdButtonToggleModule,
MdCardModule,
MdCheckboxModule,
MdChipsModule,
MdDatepickerModule,
MdDialogModule,
MdExpansionModule,
MdGridListModule,
MdIconModule,
MdInputModule,
MdListModule,
MdMenuModule,
MdNativeDateModule,
MdPaginatorModule,
MdProgressBarModule,
MdProgressSpinnerModule,
MdRadioModule,
MdRippleModule,
MdSelectModule,
MdSidenavModule,
MdSliderModule,
MdSlideToggleModule,
MdSnackBarModule,
MdStepperModule,
MdSortModule,
MdTableModule,
MdTabsModule,
MdToolbarModule,
MdTooltipModule,
MatAutocompleteModule,
MatButtonModule,
MatButtonToggleModule,
MatCardModule,
MatCheckboxModule,
MatChipsModule,
MatDatepickerModule,
MatDialogModule,
MatExpansionModule,
MatFormFieldModule,
MatGridListModule,
MatIconModule,
MatInputModule,
MatListModule,
MatMenuModule,
MatNativeDateModule,
MatPaginatorModule,
MatProgressBarModule,
MatProgressSpinnerModule,
MatRadioModule,
MatRippleModule,
MatSelectModule,
MatSidenavModule,
MatSliderModule,
MatSlideToggleModule,
MatSnackBarModule,
MatStepperModule,
MatSortModule,
MatTableModule,
MatTabsModule,
MatToolbarModule,
MatTooltipModule,
CdkTableModule
],
exports: [
MdAutocompleteModule,
MdButtonModule,
MdButtonToggleModule,
MdCardModule,
MdCheckboxModule,
MdChipsModule,
MdDatepickerModule,
MdDialogModule,
MdExpansionModule,
MdGridListModule,
MdIconModule,
MdInputModule,
MdListModule,
MdMenuModule,
MdNativeDateModule,
MdPaginatorModule,
MdProgressBarModule,
MdProgressSpinnerModule,
MdRadioModule,
MdRippleModule,
MdSelectModule,
MdSidenavModule,
MdSliderModule,
MdSlideToggleModule,
MdSnackBarModule,
MdStepperModule,
MdSortModule,
MdTableModule,
MdTabsModule,
MdToolbarModule,
MdTooltipModule,
MatAutocompleteModule,
MatButtonModule,
MatButtonToggleModule,
MatCardModule,
MatCheckboxModule,
MatChipsModule,
MatDatepickerModule,
MatDialogModule,
MatExpansionModule,
MatGridListModule,
MatIconModule,
MatInputModule,
MatListModule,
MatMenuModule,
MatNativeDateModule,
MatPaginatorModule,
MatProgressBarModule,
MatProgressSpinnerModule,
MatRadioModule,
MatRippleModule,
MatSelectModule,
MatSidenavModule,
MatSliderModule,
MatSlideToggleModule,
MatSnackBarModule,
MatStepperModule,
MatSortModule,
MatTableModule,
MatTabsModule,
MatToolbarModule,
MatTooltipModule,
CdkTableModule
]
})

View File

@@ -8,25 +8,24 @@ import { ColorPickerModule } from 'ngx-color-picker';
import { NgxDnDModule } from '@swimlane/ngx-dnd';
import { NgxDatatableModule } from '@swimlane/ngx-datatable';
import { FuseMdSidenavHelperDirective, FuseMdSidenavTogglerDirective } from '../directives/md-sidenav-helper/md-sidenav-helper.directive';
import { FuseMatSidenavHelperDirective, FuseMatSidenavTogglerDirective } from '../directives/mat-sidenav-helper/mat-sidenav-helper.directive';
import { FusePipesModule } from '../pipes/pipes.module';
import { FuseConfirmDialogComponent } from '../components/confirm-dialog/confirm-dialog.component';
import { FuseCountdownComponent } from '../components/countdown/countdown.component';
import { FuseMatchMedia } from '../services/match-media.service';
import { FuseNavbarVerticalService } from '../../main/navbar/vertical/navbar-vertical.service';
import { FuseMdSidenavHelperService } from '../directives/md-sidenav-helper/md-sidenav-helper.service';
import { FuseMatSidenavHelperService } from '../directives/mat-sidenav-helper/mat-sidenav-helper.service';
import { FuseHljsComponent } from '../components/hljs/hljs.component';
import { FusePerfectScrollbarDirective } from '../directives/fuse-perfect-scrollbar/fuse-perfect-scrollbar.directive';
import { FuseIfOnDomDirective } from '../directives/fuse-if-on-dom/fuse-if-on-dom.directive';
import { FuseMaterialColorPickerComponent } from '../components/material-color-picker/material-color-picker.component';
import { Md2Module } from 'md2';
import { CookieService } from 'ngx-cookie-service';
import { MarkdownModule } from 'angular2-markdown';
@NgModule({
declarations : [
FuseMdSidenavHelperDirective,
FuseMdSidenavTogglerDirective,
FuseMatSidenavHelperDirective,
FuseMatSidenavTogglerDirective,
FuseConfirmDialogComponent,
FuseCountdownComponent,
FuseHljsComponent,
@@ -44,7 +43,6 @@ import { MarkdownModule } from 'angular2-markdown';
ColorPickerModule,
NgxDnDModule,
NgxDatatableModule,
Md2Module,
MarkdownModule
],
exports : [
@@ -52,8 +50,8 @@ import { MarkdownModule } from 'angular2-markdown';
MaterialModule,
CommonModule,
FormsModule,
FuseMdSidenavHelperDirective,
FuseMdSidenavTogglerDirective,
FuseMatSidenavHelperDirective,
FuseMatSidenavTogglerDirective,
FusePipesModule,
FuseCountdownComponent,
FuseHljsComponent,
@@ -64,7 +62,6 @@ import { MarkdownModule } from 'angular2-markdown';
NgxDatatableModule,
FuseIfOnDomDirective,
FuseMaterialColorPickerComponent,
Md2Module,
MarkdownModule
],
entryComponents: [
@@ -74,7 +71,7 @@ import { MarkdownModule } from 'angular2-markdown';
CookieService,
FuseMatchMedia,
FuseNavbarVerticalService,
FuseMdSidenavHelperService
FuseMatSidenavHelperService
]
})

View File

@@ -3,7 +3,7 @@
@import '~@swimlane/ngx-datatable/release/themes/material.css';
@import '~@swimlane/ngx-datatable/release/assets/icons.css';
// Perfect scrollbar
@import '~perfect-scrollbar/dist/css/perfect-scrollbar.min.css';
@import '~perfect-scrollbar/css/perfect-scrollbar.css';
// Fuse
@import "fuse";

View File

@@ -1,3 +1,4 @@
// Fix: "Icon button ripple radius is not correct on Edge & Safari"
.mat-icon-button {
.mat-button-ripple {
@@ -5,11 +6,12 @@
}
}
md-sidenav-container {
// Fix: "Sidenav opening with animations for the first time"
mat-sidenav-container {
md-sidenav {
mat-sidenav {
&[md-is-locked-open].md-stop-transition {
&[mat-is-locked-open].mat-stop-transition {
transition: none !important;
transform: translate3d(0, 0, 0) !important;
opacity: 0;
@@ -39,3 +41,21 @@ md-sidenav-container {
.mat-drawer-content {
}
}
// Fix: "Inconsistent font sizes across elements"
.mat-input-wrapper {
font-size: 16px;
}
.mat-checkbox {
font-size: 16px;
}
.mat-radio-button {
font-size: 16px;
}
.mat-pseudo-checkbox-checked:after {
width: 14px;
height: 7px;
}

View File

@@ -51,14 +51,16 @@ $matColorHues: 50, 100, 200, 300, 400, 500, 600, 700, 800, 900, A100, A200, A400
// If the base text color is black...
@if (rgba(black, 1) == rgba($baseTextColor, 1)) {
&.secondary-text,
.secondary-text,
.mat-icon,
.icon,
.md2-datepicker-button {
.icon {
color: rgba(0, 0, 0, 0.54);
}
&.secondary-text,
.secondary-text {
color: rgba(0, 0, 0, 0.54) !important;
}
&.hint-text,
.hint-text,
&.disabled-text,
@@ -80,8 +82,7 @@ $matColorHues: 50, 100, 200, 300, 400, 500, 600, 700, 800, 900, A100, A200, A400
@else {
.mat-icon,
.icon,
.md2-datepicker-button {
.icon {
color: rgba(255, 255, 255, 1);
}
@@ -111,49 +112,60 @@ $matColorHues: 50, 100, 200, 300, 400, 500, 600, 700, 800, 900, A100, A200, A400
@mixin generateMaterialElementColors($contrastColor) {
// If the contrast color is white...
$foreground: $mat-dark-theme-foreground;
$fuseForeground: (
base: white,
text: white,
hint-text: rgba(white, 0.5),
divider: rgba(white, 0.12),
);
// If the contrast color is black...
@if (rgba(black, 1) == rgba($contrastColor, 1)) {
$foreground: $mat-light-theme-foreground;
$fuseForeground: (
base: black,
hint-text: rgba(black, 0.38),
divider: rgba(black, 0.12),
);
}
// Native Input
input[type="text"] {
color: mat-color($foreground, base);
color: map_get($fuseForeground, base);
}
// Input
.mat-input-placeholder {
color: mat-color($foreground, hint-text);
color: map_get($fuseForeground, hint-text);
}
.mat-input-underline {
background-color: mat-color($foreground, divider);
background-color: map_get($fuseForeground, divider);
}
// Select
.mat-select-trigger,
.mat-select-arrow {
color: mat-color($foreground, hint-text);
color: map_get($fuseForeground, hint-text);
}
.mat-select-underline {
background-color: mat-color($foreground, divider);
background-color: map_get($fuseForeground, divider);
}
.mat-select-disabled .mat-select-value,
.mat-select-arrow,
.mat-select-trigger {
color: mat-color($foreground, hint-text);
color: map_get($fuseForeground, hint-text);
}
.mat-select-content, .mat-select-panel-done-animating {
background: mat-color($background, card);
.mat-select-content,
.mat-select-panel-done-animating {
background: map_get($background, card);
}
.mat-select-value {
color: mat-color($foreground, text);
color: map_get($fuseForeground, text);
}
}
@@ -164,7 +176,7 @@ $matColorHues: 50, 100, 200, 300, 400, 500, 600, 700, 800, 900, A100, A200, A400
background-color: $color !important;
}
.md-#{$colorName}#{$hue}-bg {
.mat-#{$colorName}#{$hue}-bg {
background-color: $color !important;
color: $contrastColor !important;

View File

@@ -1,6 +1,6 @@
body {
> md-sidenav-container {
> mat-sidenav-container {
height: 100%;
}
}

View File

@@ -1,5 +1,5 @@
i,
md-icon {
mat-icon {
color: rgba(0, 0, 0, 0.54);
font-size: 24px;
width: 24px;

View File

@@ -46,14 +46,14 @@
margin-top: 0;
margin-bottom: 0;
}
md-icon.status {
mat-icon.status {
position: absolute;
top: 28px;
left: 28px;
}
}
md-icon.status {
mat-icon.status {
border-radius: 50%;
&.online {
@@ -116,7 +116,7 @@ md-icon.status {
max-height: 48px;
height: 48px;
md-icon {
mat-icon {
margin: 0 16px 0 0;
}
@@ -142,7 +142,7 @@ md-icon.status {
}
}
md-divider {
mat-divider {
margin: 8px 0;
}
}
@@ -196,7 +196,7 @@ md-icon.status {
background-color: #FFFFFF;
width: 280px;
border-radius: 2px;
margin: 24px 24px 0 0;
margin: 12px;
overflow: hidden;
&.style-1 {
@@ -234,7 +234,7 @@ md-icon.status {
}
}
md-divider {
mat-divider {
margin: 16px 32px;
}

View File

@@ -112,12 +112,12 @@ $top-bg-image: url('assets/images/backgrounds/header-bg.png');
// Single scroll
&.single-scroll {
> md-sidenav-container {
> mat-sidenav-container {
flex: 1 0 auto;
}
}
> md-sidenav-container {
> mat-sidenav-container {
display: flex;
flex: 1;
background: none;
@@ -132,11 +132,11 @@ $top-bg-image: url('assets/images/backgrounds/header-bg.png');
min-width: 240px;
max-width: 240px;
height: auto;
z-index: 2;
z-index: 4;
overflow-y: hidden;
@include mat-elevation(7);
&.md-is-locked-open {
&.mat-is-locked-open {
background: none;
box-shadow: none;
}
@@ -145,6 +145,12 @@ $top-bg-image: url('assets/images/backgrounds/header-bg.png');
height: $carded-header-height;
min-height: $carded-header-height;
max-height: $carded-header-height;
@include media-breakpoint-down('sm') {
height: $carded-header-height-sm;
min-height: $carded-header-height-sm;
max-height: $carded-header-height-sm;
}
}
.content {
@@ -175,6 +181,12 @@ $top-bg-image: url('assets/images/backgrounds/header-bg.png');
height: $carded-header-height-without-toolbar;
min-height: $carded-header-height-without-toolbar;
max-height: $carded-header-height-without-toolbar;
@include media-breakpoint-down('sm') {
height: $carded-header-height-without-toolbar-sm;
min-height: $carded-header-height-without-toolbar-sm;
max-height: $carded-header-height-without-toolbar-sm;
}
}
.content-card {
@@ -216,11 +228,11 @@ $top-bg-image: url('assets/images/backgrounds/header-bg.png');
&.left-sidenav {
// Sidenav
> md-sidenav-container {
> mat-sidenav-container {
.sidenav {
&.md-is-locked-open {
&.mat-is-locked-open {
~ .mat-sidenav-content,
~ .mat-drawer-content {
@@ -238,12 +250,12 @@ $top-bg-image: url('assets/images/backgrounds/header-bg.png');
&.right-sidenav {
// Sidenav
> md-sidenav-container {
> mat-sidenav-container {
.sidenav {
order: 999;
&.md-is-locked-open {
&.mat-is-locked-open {
~ .mat-sidenav-content,
~ .mat-drawer-content {
@@ -295,7 +307,7 @@ $top-bg-image: url('assets/images/backgrounds/header-bg.png');
// Single scroll
&.single-scroll {
> md-sidenav-container {
> mat-sidenav-container {
flex: 1 0 auto;
> .mat-sidenav-content,
@@ -309,7 +321,7 @@ $top-bg-image: url('assets/images/backgrounds/header-bg.png');
// Inner Sidenav
&.inner-sidenav {
> md-sidenav-container {
> mat-sidenav-container {
flex: 1;
.sidenav {
@@ -338,10 +350,9 @@ $top-bg-image: url('assets/images/backgrounds/header-bg.png');
}
}
> md-sidenav-container {
> mat-sidenav-container {
display: flex;
flex-direction: column;
//flex-direction: row;
flex: 1;
background: none;
z-index: 2;
@@ -354,7 +365,7 @@ $top-bg-image: url('assets/images/backgrounds/header-bg.png');
z-index: 51;
@include mat-elevation(7);
&.md-is-locked-open {
&.mat-is-locked-open {
width: 220px;
min-width: 220px;
max-width: 220px;
@@ -440,7 +451,7 @@ $top-bg-image: url('assets/images/backgrounds/header-bg.png');
&.left-sidenav,
&.right-sidenav {
> md-sidenav-container {
> mat-sidenav-container {
flex: 1 0 auto;
}
}
@@ -458,7 +469,7 @@ $top-bg-image: url('assets/images/backgrounds/header-bg.png');
&.left-sidenav,
&.right-sidenav {
> md-sidenav-container {
> mat-sidenav-container {
flex: 1 0 auto !important;
> .mat-sidenav-content,
@@ -483,7 +494,7 @@ $top-bg-image: url('assets/images/backgrounds/header-bg.png');
&.left-sidenav,
&.right-sidenav {
> md-sidenav-container {
> mat-sidenav-container {
> .mat-sidenav-content,
> .mat-drawer-content {

View File

@@ -4,8 +4,9 @@
@media all {
/* Never show page break in normal view */
.page-break {
/* Never show page breaks in normal view */
.page-break-after,
.page-break-before {
display: none;
}
@@ -13,22 +14,30 @@
@media print {
/* Page Styles */
@page {
//margin: 0.5cm;
/* html and body tweaks */
html, body {
height: auto !important;
overflow: initial !important;
}
/* Page break */
.page-break {
/* Page breaks */
.page-break-after {
display: block;
break-after: always;
page-break-after: always;
position: relative;
}
.page-break-before {
display: block;
page-break-before: always;
position: relative;
}
/* General styles */
fuse-root {
fuse-navbar,
fuse-navbar-vertical,
fuse-navbar-horizontal,
fuse-toolbar,
fuse-footer,
fuse-quick-panel,
@@ -41,11 +50,16 @@
.ps {
overflow: visible !important;
}
}
/* Printable page specific styles */
.printable {
overflow: visible !important;
height: auto !important;
.mat-drawer-container,
.mat-sidenav-container {
background-color: white !important;
.mat-drawer-content,
.mat-sidenav-content {
overflow: initial !important;
height: auto !important
}
}
}
}

View File

@@ -28,7 +28,7 @@ html, body {
}
// Reset non angular-material input's default browser/os styles
*:not(md-input-container) {
*:not(mat-input-container) {
> input {
border: none;
@@ -55,7 +55,7 @@ html, body {
}
}
*:not(md-input-container) {
*:not(mat-input-container) {
> input[type="button"],
> button,

View File

@@ -1,11 +1,12 @@
.ps {
position: relative;
> .ps__scrollbar-y-rail {
> .ps__rail-x {
z-index: 99999;
}
> .ps__scrollbar-y-rail {
> .ps__rail-y {
z-index: 99999;
left: auto !important;
}
}

View File

@@ -28,12 +28,12 @@ export class FuseConfigService
mode : 'fullwidth' // 'boxed', 'fullwidth'
},
colorClasses : {
toolbar: 'md-white-500-bg',
navbar : 'md-fuse-dark-500-bg',
footer : 'md-fuse-dark-700-bg'
toolbar: 'mat-white-500-bg',
navbar : 'mat-fuse-dark-700-bg',
footer : 'mat-fuse-dark-900-bg'
},
customScrollbars: true,
routerAnimation : 'fadeIn'
routerAnimation : 'fadeIn' // fadeIn, slideUp, slideDown, slideRight, slideLeft
};
/**

View File

@@ -0,0 +1,61 @@
export class FaqFakeDb
{
public static data = [
{
'question': 'Proident tempor est nulla irure ad est?',
'answer': 'Id nulla nulla proident deserunt deserunt proident in quis. Cillum reprehenderit labore id anim laborum.'
},
{
'question': 'Ullamco duis commodo sint ad aliqua aute?',
'answer': 'Sunt laborum enim nostrud ea fugiat cillum mollit aliqua exercitation ad elit.'
},
{
'question': 'Eiusmod non occaecat pariatur Lorem in ex?',
'answer': 'Nostrud anim mollit incididunt qui qui sit commodo duis. Anim amet irure aliquip duis nostrud sit quis fugiat ullamco non dolor labore. Lorem sunt voluptate laboris culpa proident. Aute eiusmod aliqua exercitation irure exercitation qui laboris mollit occaecat eu occaecat fugiat.'
},
{
'question': 'Lorem magna cillum consequat consequat mollit?',
'answer': 'Velit ipsum proident ea incididunt et. Consectetur eiusmod laborum voluptate duis occaecat ullamco sint enim proident.'
},
{
'question': 'Quis irure cupidatat ad consequat reprehenderit excepteur?',
'answer': 'Esse nisi mollit aliquip mollit aute consequat adipisicing. Do excepteur dolore proident cupidatat pariatur irure consequat incididunt.'
},
{
'question': 'Officia voluptate tempor ut mollit ea cillum?',
'answer': 'Deserunt veniam reprehenderit do elit magna ut.'
},
{
'question': 'Sunt fugiat officia nisi minim sunt duis?',
'answer': 'Eiusmod eiusmod sint aliquip exercitation cillum. Magna nulla officia ex consectetur ea ad excepteur in qui.'
},
{
'question': 'Non cupidatat enim quis aliquip minim laborum?',
'answer': 'Qui cillum eiusmod nostrud sunt dolore velit nostrud labore voluptate ad dolore. Eu Lorem anim pariatur aliqua. Ullamco ut dolor velit esse occaecat dolore eu cillum commodo qui. Nulla dolor consequat voluptate magna ut commodo magna consectetur non aute proident.'
},
{
'question': 'Dolor ex occaecat magna labore laboris qui?',
'answer': 'Incididunt qui excepteur eiusmod elit cillum occaecat voluptate cillum nostrud. Dolor ullamco ullamco eiusmod do sunt adipisicing pariatur. In esse esse labore id reprehenderit sint do. Pariatur culpa dolor tempor qui excepteur duis do anim minim ipsum.'
},
{
'question': 'Nisi et ullamco minim ea proident tempor?',
'answer': 'Dolor veniam dolor cillum Lorem magna nisi in occaecat nulla dolor ea eiusmod.'
},
{
'question': 'Amet sunt et quis amet commodo quis?',
'answer': 'Nulla dolore consequat aliqua sint consequat elit qui occaecat et.'
},
{
'question': 'Ut eiusmod ex ea eiusmod culpa incididunt?',
'answer': 'Fugiat non incididunt officia ex incididunt occaecat. Voluptate nostrud culpa aliquip mollit incididunt non dolore.'
},
{
'question': 'Proident reprehenderit laboris pariatur ut et nisi?',
'answer': 'Reprehenderit proident ut ad cillum quis velit quis aliqua ut aliquip tempor ullamco.'
},
{
'question': 'Aliqua aliquip aliquip aliquip et exercitation aute?',
'answer': 'Adipisicing Lorem tempor ex anim. Labore tempor laboris nostrud dolore voluptate ullamco. Fugiat ex deserunt anim minim esse velit laboris aute ea duis incididunt. Elit irure id Lorem incididunt laborum aliquip consectetur est irure sunt. Ut labore anim nisi aliqua tempor laborum nulla cillum. Duis irure consequat cillum magna cillum eiusmod ut. Et exercitation voluptate quis deserunt elit quis dolor deserunt ex ex esse ex.'
}
];
}

View File

@@ -13,6 +13,7 @@ import { QuickPanelFakeDb } from './quick-panel';
import { IconsFakeDb } from './icons';
import { ProjectsDashboardDb } from './projects-dashboard';
import { ScrumboardFakeDb } from './scrumboard';
import { FaqFakeDb } from './faq';
export class FuseFakeDbService implements InMemoryDbService
{
@@ -44,7 +45,8 @@ export class FuseFakeDbService implements InMemoryDbService
'icons' : IconsFakeDb.icons,
'projects-dashboard-projects': ProjectsDashboardDb.projects,
'projects-dashboard-widgets' : ProjectsDashboardDb.widgets,
'scrumboard-boards' : ScrumboardFakeDb.boards
'scrumboard-boards' : ScrumboardFakeDb.boards,
'faq' : FaqFakeDb.data
};
}
}

View File

@@ -1622,7 +1622,7 @@ export class ProjectsDashboardDb
[
{
'value' : 'Wireframing',
'classes': 'md-primary-bg',
'classes': 'mat-primary-bg',
'icon' : ''
},
{
@@ -1654,7 +1654,7 @@ export class ProjectsDashboardDb
[
{
'value' : 'Design',
'classes': 'md-green-bg',
'classes': 'mat-green-bg',
'icon' : ''
},
{
@@ -1686,7 +1686,7 @@ export class ProjectsDashboardDb
[
{
'value' : 'Coding',
'classes': 'md-red-bg',
'classes': 'mat-red-bg',
'icon' : ''
},
{
@@ -1718,7 +1718,7 @@ export class ProjectsDashboardDb
[
{
'value' : 'Marketing',
'classes': 'md-accent-bg',
'classes': 'mat-accent-bg',
'icon' : ''
},
{
@@ -1750,7 +1750,7 @@ export class ProjectsDashboardDb
[
{
'value' : 'Extra',
'classes': 'md-orange-bg',
'classes': 'mat-orange-bg',
'icon' : ''
},
{

View File

@@ -181,7 +181,7 @@ export class ScrumboardFakeDb
'time' : '45 mins. ago'
}
],
'due' : 'Tue Aug 29 2017 13:16:34 GMT+0300 (Turkey Standard Time)'
'due' : '2017-08-29T10:16:34.000Z'
},
{
'id' : '5637273da9b93bb84743a0f9',
@@ -274,7 +274,7 @@ export class ScrumboardFakeDb
}
],
'activities' : [],
'due' : 'Fri Sep 07 2018 15:00:00 GMT+0300 (Turkey Standard Time)'
'due' : '2018-09-07T12:00:00.000Z'
},
{
'id' : 'f6b9d7a9247e5d794a081927',
@@ -365,7 +365,7 @@ export class ScrumboardFakeDb
'checkItemsChecked': 0,
'comments' : [],
'activities' : [],
'due' : 'Wed Mar 08 2017 12:00:00 GMT+0300 (Turkey Standard Time)'
'due' : '2017-03-08T09:00:00.000Z'
},
{
'id' : '80ed.24ad3b18e2668.f28fbbceeeff9.5a834620a42f1.5909be19a2bf2.6c4a54947ce2d.da356b0c1',
@@ -536,7 +536,7 @@ export class ScrumboardFakeDb
'checkItemsChecked': 3,
'comments' : [],
'activities' : [],
'due' : 'Fri Feb 02 2017 14:20:34 GMT+0300 (Turkey Standard Time)'
'due' : '2017-02-02T11:20:34.000Z'
}
],
'members' : [
@@ -565,22 +565,22 @@ export class ScrumboardFakeDb
{
'id' : '26022e4129ad3a5sc28b36cd',
'name' : 'High Priority',
'color': 'md-red-500-bg'
'color': 'mat-red-500-bg'
},
{
'id' : '56027e4119ad3a5dc28b36cd',
'name' : 'Design',
'color': 'md-orange-400-bg'
'color': 'mat-orange-400-bg'
},
{
'id' : '5640635e19ad3a5dc21416b2',
'name' : 'App',
'color': 'md-blue-600-bg'
'color': 'mat-blue-600-bg'
},
{
'id' : '6540635g19ad3s5dc31412b2',
'name' : 'Feature',
'color': 'md-green-400-bg'
'color': 'mat-green-400-bg'
}
]
},
@@ -769,17 +769,17 @@ export class ScrumboardFakeDb
{
'id' : '56027e4119ad3a5dc28b36cd',
'name' : 'Design',
'color': 'md-red-500-bg'
'color': 'mat-red-500-bg'
},
{
'id' : '5640635e19ad3a5dc21416b2',
'name' : 'App',
'color': 'md-blue-500-bg'
'color': 'mat-blue-500-bg'
},
{
'id' : '6540635g19ad3s5dc31412b2',
'name' : 'Feature',
'color': 'md-green-400-bg'
'color': 'mat-green-400-bg'
}
]
}

View File

@@ -9,7 +9,7 @@
<div class="logo mb-16 mb-sm-0" fxLayout="row" fxLayoutAlign="start center">
<md-icon class="logo-icon" *fuseIfOnDom [@animate]="{value:'*',params:{delay:'50ms',scale:'0.2'}}">today</md-icon>
<mat-icon class="logo-icon" *fuseIfOnDom [@animate]="{value:'*',params:{delay:'50ms',scale:'0.2'}}">today</mat-icon>
<span class="logo-text" *fuseIfOnDom [@animate]="{value:'*',params:{delay:'100ms',x:'-25px'}}">Calendar</span>
@@ -18,32 +18,32 @@
<!-- TOOLBAR -->
<div class="toolbar" fxLayout="row" fxLayoutAlign="start center">
<button md-button class="mat-icon-button" aria-label="Search" md-tooltip="Search">
<md-icon>search</md-icon>
<button mat-button class="mat-icon-button" aria-label="Search" matTooltip="Search">
<mat-icon>search</mat-icon>
</button>
<button md-button class="mat-icon-button"
<button mat-button class="mat-icon-button"
mwlCalendarToday
[(viewDate)]="viewDate"
(viewDateChange)="selectedDay = {date:$event}"
aria-label="Today" md-tooltip="Today">
aria-label="Today" matTooltip="Today">
<!--(click)="selectedDay = viewDate"-->
<md-icon>today</md-icon>
<mat-icon>today</mat-icon>
</button>
<button md-button class="mat-icon-button" (click)="view='day'"
aria-label="Day" md-tooltip="Day">
<md-icon>view_day</md-icon>
<button mat-button class="mat-icon-button" (click)="view='day'"
aria-label="Day" matTooltip="Day">
<mat-icon>view_day</mat-icon>
</button>
<button md-button class="mat-icon-button" (click)="view='week'"
aria-label="Week" md-tooltip="Week">
<md-icon>view_week</md-icon>
<button mat-button class="mat-icon-button" (click)="view='week'"
aria-label="Week" matTooltip="Week">
<mat-icon>view_week</mat-icon>
</button>
<button md-button class="mat-icon-button" (click)="view='month'"
aria-label="Month" md-tooltip="Month">
<md-icon>view_module</md-icon>
<button mat-button class="mat-icon-button" (click)="view='month'"
aria-label="Month" matTooltip="Month">
<mat-icon>view_module</mat-icon>
</button>
</div>
</div>
@@ -53,35 +53,35 @@
<div class="header-bottom" fxLayout="row" fxLayoutAlign="center center"
*fuseIfOnDom [@animate]="{value:'*',params:{delay:'150ms'}}">
<button md-button class="mat-icon-button arrow"
<button mat-button class="mat-icon-button arrow"
mwlCalendarPreviousView
[view]="view"
[(viewDate)]="viewDate"
(viewDateChange)="selectedDay = {date:$event}"
aria-label="Previous">
<md-icon>chevron_left</md-icon>
<mat-icon>chevron_left</mat-icon>
</button>
<div class="title">
{{ viewDate | calendarDate:(view + 'ViewTitle'):'en' }}
</div>
<button md-button class="mat-icon-button arrow"
<button mat-button class="mat-icon-button arrow"
mwlCalendarNextView
[view]="view"
[(viewDate)]="viewDate"
(viewDateChange)="selectedDay = {date:$event}"
aria-label="Next">
<md-icon>chevron_right</md-icon>
<mat-icon>chevron_right</mat-icon>
</button>
</div>
<!-- / HEADER BOTTOM -->
</div>
<!-- ADD EVENT BUTTON -->
<button md-fab class="add-event-button mat-warn" (click)="addEvent()" aria-label="Add event"
<button mat-fab class="add-event-button mat-warn" (click)="addEvent()" aria-label="Add event"
*fuseIfOnDom [@animate]="{value:'*',params:{delay:'300ms',scale:'0.2'}}">
<md-icon>add</md-icon>
<mat-icon>add</mat-icon>
</button>
<!-- / ADD EVENT BUTTON -->
</div>

View File

@@ -303,7 +303,7 @@
z-index: 10;
}
md-icon {
mat-icon {
color: #FFFFFF;
}
}

View File

@@ -1,7 +1,7 @@
import { startOfDay, endOfDay, subDays, addDays, endOfMonth, isSameDay, isSameMonth, addHours } from 'date-fns';
import { Component, OnInit, ViewEncapsulation } from '@angular/core';
import { Subject } from 'rxjs/Subject';
import { MdDialog, MdDialogRef } from '@angular/material';
import { MatDialog, MatDialogRef } from '@angular/material';
import { FuseCalendarEventFormDialogComponent } from './event-form/event-form.component';
import { FormGroup } from '@angular/forms';
import { CalendarEventModel } from './event.model';
@@ -38,12 +38,12 @@ export class FuseCalendarComponent implements OnInit
dialogRef: any;
confirmDialogRef: MdDialogRef<FuseConfirmDialogComponent>;
confirmDialogRef: MatDialogRef<FuseConfirmDialogComponent>;
selectedDay: any;
constructor(
public dialog: MdDialog,
public dialog: MatDialog,
public calendarService: CalendarService
)
{

View File

@@ -35,7 +35,7 @@ export class CalendarService implements Resolve<any>
this.http.get('api/calendar/events')
.subscribe((response: any) => {
this.events = response.data.data;
this.events = response.data;
this.onEventsUpdated.next(this.events);
resolve(this.events);
}, reject);

View File

@@ -1,40 +1,40 @@
<div class="dialog-content-wrapper">
<md-toolbar md-dialog-title class="mat-accent m-0">
<mat-toolbar matDialogTitle class="mat-accent m-0">
<div fxFlex fxLayout="row" fxLayoutAlign="space-between center">
<span class="title dialog-title">{{dialogTitle}}</span>
<button md-button class="mat-icon-button"
<button mat-button class="mat-icon-button"
(click)="dialogRef.close()"
aria-label="Close dialog">
<md-icon>close</md-icon>
<mat-icon>close</mat-icon>
</button>
</div>
</md-toolbar>
</mat-toolbar>
<div md-dialog-content class="p-24 m-0" fusePerfectScrollbar>
<div mat-dialog-content class="p-24 m-0" fusePerfectScrollbar>
<form name="eventForm" [formGroup]="eventForm" class="event-form w-100-p" fxLayout="column" fxFlex>
<md-input-container class="w-100-p">
<input mdInput
<mat-form-field class="w-100-p">
<input matInput
name="title"
formControlName="title"
placeholder="Title"
required>
</md-input-container>
</mat-form-field>
<div class="py-16" fxFlex="1 0 auto" fxLayout="row">
<md-slide-toggle
<mat-slide-toggle
name="allDay"
formControlName="allDay"
class="mr-24"
aria-label="All day">
All Day
</md-slide-toggle>
</mat-slide-toggle>
</div>
<div class="py-16" fxFlex="1 0 auto" fxLayout="row" formGroupName="color">
<md-input-container class="mr-24" fxFlex>
<input mdInput
<mat-form-field class="mr-24" fxFlex>
<input matInput
name="primary color"
formControlName="primary"
placeholder="Primary color"
@@ -43,9 +43,9 @@
[cpPresetColors]="presetColors"
[style.background]="event.color.primary"
(colorPickerChange)="event.color.primary = $event; eventForm.patchValue({color:{primary:$event}})"/>
</md-input-container>
<md-input-container fxFlex>
<input mdInput
</mat-form-field>
<mat-form-field fxFlex>
<input matInput
name="secondary color"
formControlName="secondary"
placeholder="Secondary color"
@@ -54,62 +54,66 @@
[cpPresetColors]="presetColors"
[style.background]="event.color.secondary"
(colorPickerChange)="event.color.secondary = $event; eventForm.patchValue({color:{secondary:$event}})"/>
</md-input-container>
</mat-form-field>
</div>
<div fxFlex="1 0 auto" fxLayout="row">
<md-form-field class="mr-24" fxFlex>
<input mdInput [mdDatepicker]="startDatePicker" placeholder="Start Date">
<md-datepicker-toggle mdSuffix [for]="startDatePicker"></md-datepicker-toggle>
<md-datepicker #startDatePicker></md-datepicker>
</md-form-field>
<mat-form-field class="mr-24" fxFlex>
<input matInput [matDatepicker]="startDatePicker" placeholder="Start Date"
name="start"
formControlName="start">
<mat-datepicker-toggle matSuffix [for]="startDatePicker"></mat-datepicker-toggle>
<mat-datepicker #startDatePicker></mat-datepicker>
</mat-form-field>
<md-input-container class="no-errors-spacer" fxFlex md-no-float>
<input mdInput placeholder="Start Time">
</md-input-container>
<mat-form-field class="no-errors-spacer" fxFlex mat-no-float>
<input matInput placeholder="Start Time">
</mat-form-field>
</div>
<div fxFlex="1 0 auto" fxLayout="row">
<md-form-field class="mr-24" fxFlex>
<input mdInput [mdDatepicker]="endDatePicker" placeholder="End Date">
<md-datepicker-toggle mdSuffix [for]="endDatePicker"></md-datepicker-toggle>
<md-datepicker #endDatePicker></md-datepicker>
</md-form-field>
<mat-form-field class="mr-24" fxFlex>
<input matInput [matDatepicker]="endDatePicker" placeholder="End Date"
name="end"
formControlName="end">
<mat-datepicker-toggle matSuffix [for]="endDatePicker"></mat-datepicker-toggle>
<mat-datepicker #endDatePicker></mat-datepicker>
</mat-form-field>
<md-input-container class="no-errors-spacer" fxFlex md-no-float>
<input mdInput placeholder="End Time">
</md-input-container>
<mat-form-field class="no-errors-spacer" fxFlex mat-no-float>
<input matInput placeholder="End Time">
</mat-form-field>
</div>
<md-input-container formGroupName="meta" class="w-100-p">
<input mdInput
<mat-form-field formGroupName="meta" class="w-100-p">
<input matInput
name="location"
formControlName="location"
placeholder="Location">
</md-input-container>
</mat-form-field>
<md-input-container formGroupName="meta" class="w-100-p">
<mat-form-field formGroupName="meta" class="w-100-p">
<textarea mdInput
<textarea matInput
formControlName="notes"
placeholder="Notes"
md-maxlength="250"
mat-maxlength="250"
max-rows="4">
</textarea>
</md-input-container>
</mat-form-field>
</form>
</div>
<div md-dialog-actions class="m-0 p-16" fxLayout="row" fxLayoutAlign="space-between center">
<div mat-dialog-actions class="m-0 p-16" fxLayout="row" fxLayoutAlign="space-between center">
<button *ngIf="action !=='edit'"
md-raised-button
mat-raised-button
(click)="dialogRef.close(eventForm)"
class="save-button mat-accent"
[disabled]="eventForm.invalid"
@@ -118,7 +122,7 @@
</button>
<button *ngIf="action ==='edit'"
md-raised-button
mat-raised-button
(click)="dialogRef.close(['save',eventForm])"
class="save-button mat-accent"
[disabled]="eventForm.invalid"
@@ -127,12 +131,12 @@
</button>
<button *ngIf="action ==='edit'"
md-button
mat-button
class="mat-icon-button"
(click)="dialogRef.close(['delete',eventForm])"
aria-label="Delete"
md-tooltip="Delete">
<md-icon>delete</md-icon>
matTooltip="Delete">
<mat-icon>delete</mat-icon>
</button>
</div>
</div>

View File

@@ -1,5 +1,5 @@
import { Component, Inject, OnInit, ViewEncapsulation } from '@angular/core';
import { MD_DIALOG_DATA, MdDialogRef } from '@angular/material';
import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material';
import { CalendarEvent } from 'angular-calendar';
import { FormBuilder, FormControl, FormGroup } from '@angular/forms';
import { CalendarEventModel } from '../event.model';
@@ -22,8 +22,8 @@ export class FuseCalendarEventFormDialogComponent implements OnInit
presetColors = MatColors.presets;
constructor(
public dialogRef: MdDialogRef<FuseCalendarEventFormDialogComponent>,
@Inject(MD_DIALOG_DATA) private data: any,
public dialogRef: MatDialogRef<FuseCalendarEventFormDialogComponent>,
@Inject(MAT_DIALOG_DATA) private data: any,
private formBuilder: FormBuilder
)
{

View File

@@ -3,7 +3,7 @@
<div class="big-circle mat-elevation-z1 app-logo" fxLayout="column" fxLayoutAlign="center center"
*fuseIfOnDom [@animate]="{value:'*',params:{delay:'50ms',scale:'0.2'}}">
<md-icon class="s-64 s-md-128">chat</md-icon>
<mat-icon class="s-64 s-mat-128">chat</mat-icon>
</div>
@@ -11,7 +11,7 @@
<span fxHide fxShow.gt-md class="app-message" *fuseIfOnDom [@animate]="{value:'*',params:{delay:'200ms',y:'50px'}}">Select contact to start the chat!..</span>
<button md-raised-button fxHide.gt-md class="" fuseMdSidenavToggler="chat-left-sidenav">
<button mat-raised-button fxHide.gt-md class="" fuseMatSidenavToggler="chat-left-sidenav">
Select contact to start the chat!..
</button>

View File

@@ -19,7 +19,7 @@
line-height: 160px;
}
md-icon {
mat-icon {
color: mat-color($accent);
}
}

View File

@@ -2,23 +2,23 @@
<div class="chat" fxFlex fxLayout="column">
<!-- CHAT TOOLBAR -->
<md-toolbar class="chat-toolbar">
<mat-toolbar class="chat-toolbar">
<div fxFlex fxLayout="row" fxLayoutAlign="space-between center">
<div fxLayout="row" fxLayoutAlign="start center">
<!-- RESPONSIVE CHATS BUTTON-->
<div md-button fxHide.gt-md class="responsive-chats-button mat-icon-button mr-16"
fuseMdSidenavToggler="chat-left-sidenav"
<div mat-button fxHide.gt-md class="responsive-chats-button mat-icon-button mr-16"
fuseMatSidenavToggler="chat-left-sidenav"
aria-label="chats button">
<md-icon class="s-36">chat</md-icon>
<mat-icon class="s-36">chat</mat-icon>
</div>
<!-- / RESPONSIVE CHATS BUTTON-->
<!-- CHAT CONTACT-->
<div class="chat-contact" fxLayout="row" fxLayoutAlign="start center"
fuseMdSidenavToggler="chat-right-sidenav" (click)="selectContact()">
fuseMatSidenavToggler="chat-right-sidenav" (click)="selectContact()">
<div class="avatar-wrapper">
@@ -26,9 +26,9 @@
class="avatar"
alt="{{contact.name}}"/>
<md-icon class="s-16 status"
[ngClass]="contact.status">
</md-icon>
<mat-icon class="s-16 status"
[ngClass]="contact.status">
</mat-icon>
</div>
<div class="chat-contact-name">
@@ -40,20 +40,20 @@
</div>
<div>
<button md-button class="mat-icon-button" [mdMenuTriggerFor]="contactMenu"
<button mat-button class="mat-icon-button" [matMenuTriggerFor]="contactMenu"
aria-label="more">
<md-icon>more_vert</md-icon>
<mat-icon>more_vert</mat-icon>
</button>
<md-menu #contactMenu="mdMenu">
<button md-menu-item fuseMdSidenavToggler="chat-right-sidenav" (click)="selectContact()">
<mat-menu #contactMenu="matMenu">
<button mat-menu-item fuseMatSidenavToggler="chat-right-sidenav" (click)="selectContact()">
Contact Info
</button>
</md-menu>
</mat-menu>
</div>
</div>
</md-toolbar>
</mat-toolbar>
<!-- / CHAT TOOLBAR -->
<!-- CHAT CONTENT -->
@@ -98,13 +98,13 @@
fxLayout="row"
fxLayoutAlign="start center">
<md-input-container class="" fxFlex floatPlaceholder="never">
<textarea mdInput #replyInput placeholder="Type and hit enter to send message"
<mat-form-field class="" fxFlex floatPlaceholder="never">
<textarea matInput #replyInput placeholder="Type and hit enter to send message"
ngModel name="message"></textarea>
</md-input-container>
</mat-form-field>
<button md-fab class="" type="submit" aria-label="Send message">
<md-icon>send</md-icon>
<button mat-fab class="" type="submit" aria-label="Send message">
<mat-icon>send</mat-icon>
</button>
</form>

View File

@@ -32,6 +32,7 @@
#chat-content {
background: transparent;
overflow: auto;
.message-row {
padding: 16px;
@@ -107,7 +108,7 @@
.reply-form {
md-input-container {
mat-form-field {
margin: 0;
padding-right: 16px;
@@ -120,12 +121,12 @@
}
}
.md-errors-spacer {
.mat-errors-spacer {
display: none;
}
}
.md-button {
.mat-button {
margin: 0;
}
}

View File

@@ -1,7 +1,7 @@
<div id="chat" class="page-layout carded fullwidth">
<!-- TOP BACKGROUND -->
<div class="top-bg md-accent-bg"></div>
<div class="top-bg mat-accent-bg"></div>
<!-- / TOP BACKGROUND -->
<!-- CENTER -->
@@ -10,13 +10,13 @@
<!-- CONTENT CARD -->
<div class="content-card">
<md-sidenav-container>
<mat-sidenav-container>
<!-- LEFT SIDENAV -->
<md-sidenav class="sidenav mat-sidenav-opened" align="start" opened="true" mode="side"
fuseMdSidenavHelper="chat-left-sidenav" md-is-locked-open="gt-md">
<mat-sidenav class="sidenav mat-sidenav-opened" align="start" opened="true" mode="side"
fuseMatSidenavHelper="chat-left-sidenav" mat-is-locked-open="gt-md">
<fuse-chat-left-sidenav></fuse-chat-left-sidenav>
</md-sidenav>
</mat-sidenav>
<!-- / LEFT SIDENAV -->
<!-- CONTENT -->
@@ -26,13 +26,13 @@
<!-- / CONTENT -->
<!-- RIGHT SIDENAV -->
<md-sidenav class="sidenav mat-sidenav-opened" align="end" opened="false" mode="over"
fuseMdSidenavHelper="chat-right-sidenav">
<mat-sidenav class="sidenav mat-sidenav-opened" align="end" opened="false" mode="over"
fuseMatSidenavHelper="chat-right-sidenav">
<fuse-chat-right-sidenav></fuse-chat-right-sidenav>
</md-sidenav>
</mat-sidenav>
<!-- / RIGHT SIDENAV -->
</md-sidenav-container>
</mat-sidenav-container>
</div>
<!-- / CONTENT CARD -->

View File

@@ -37,7 +37,7 @@
max-width: 100%;
}
md-sidenav {
mat-sidenav {
display: flex;
flex-direction: column;
width: 400px;

View File

@@ -48,7 +48,7 @@ export class ChatService implements Resolve<any>
return new Promise((resolve, reject) => {
this.http.get('api/chat-chats/' + chatItem.id)
.subscribe((response: any) => {
const chat = response.data;
const chat = response;
const chatContact = this.contacts.find((contact) => {
return contact.id === contactId;
@@ -212,7 +212,7 @@ export class ChatService implements Resolve<any>
return new Promise((resolve, reject) => {
this.http.get('api/chat-contacts')
.subscribe((response: any) => {
resolve(response.data);
resolve(response);
}, reject);
});
}
@@ -226,7 +226,7 @@ export class ChatService implements Resolve<any>
return new Promise((resolve, reject) => {
this.http.get('api/chat-chats')
.subscribe((response: any) => {
resolve(response.data);
resolve(response);
}, reject);
});
}
@@ -240,7 +240,7 @@ export class ChatService implements Resolve<any>
return new Promise((resolve, reject) => {
this.http.get('api/chat-user')
.subscribe((response: any) => {
resolve(response.data[0]);
resolve(response[0]);
}, reject);
});
}

View File

@@ -1,7 +1,7 @@
<!-- SIDENAV HEADER -->
<div class="sidenav-header">
<!-- CHATS TOOLBAR -->
<md-toolbar>
<mat-toolbar>
<!-- TOOLBAR TOP -->
<div fxFlex fxLayout="row" fxLayoutAlign="space-between center">
@@ -12,75 +12,75 @@
<!-- USER AVATAR -->
<img (click)="changeLeftSidenavView('user')"
src="{{user.avatar}}"
class="md-avatar avatar"
class="mat-avatar avatar"
alt="{{user.name}}"/>
<!-- / USER AVATAR -->
<md-icon class="s-16 status" [ngClass]="user.status" [mdMenuTriggerFor]="userStatusMenu"></md-icon>
<mat-icon class="s-16 status" [ngClass]="user.status" [matMenuTriggerFor]="userStatusMenu"></mat-icon>
<!-- USER STATUS -->
<md-menu id="user-status-menu" #userStatusMenu="mdMenu">
<mat-menu id="user-status-menu" #userStatusMenu="matMenu">
<button md-menu-item (click)="setUserStatus('online')">
<button mat-menu-item (click)="setUserStatus('online')">
<div fxLayout="row" fxLayoutAlign="start center">
<md-icon class="s-16 status online"></md-icon>
<mat-icon class="s-16 status online"></mat-icon>
<span>Online</span>
</div>
</button>
<button md-menu-item (click)="setUserStatus('away')">
<button mat-menu-item (click)="setUserStatus('away')">
<div fxLayout="row" fxLayoutAlign="start center">
<md-icon class="s-16 status away"></md-icon>
<mat-icon class="s-16 status away"></mat-icon>
<span>Away</span>
</div>
</button>
<button md-menu-item (click)="setUserStatus('do-not-disturb')">
<button mat-menu-item (click)="setUserStatus('do-not-disturb')">
<div fxLayout="row" fxLayoutAlign="start center">
<md-icon class="s-16 status do-not-disturb"></md-icon>
<mat-icon class="s-16 status do-not-disturb"></mat-icon>
<span>Do not disturb</span>
</div>
</button>
<button md-menu-item (click)="setUserStatus('offline')">
<button mat-menu-item (click)="setUserStatus('offline')">
<div fxLayout="row" fxLayoutAlign="start center">
<md-icon class="s-16 status offline"></md-icon>
<mat-icon class="s-16 status offline"></mat-icon>
<span>Offline</span>
</div>
</button>
</md-menu>
</mat-menu>
<!-- / USER STATUS -->
</div>
<!-- / USER AVATAR -->
<div>
<button md-button class="mat-icon-button"
[mdMenuTriggerFor]="userMenu"
<button mat-button class="mat-icon-button"
[matMenuTriggerFor]="userMenu"
aria-label="more">
<md-icon>more_vert</md-icon>
<mat-icon>more_vert</mat-icon>
</button>
<md-menu #userMenu="mdMenu">
<button md-menu-item (click)="changeLeftSidenavView('user')">
<mat-menu #userMenu="matMenu">
<button mat-menu-item (click)="changeLeftSidenavView('user')">
Profile
</button>
<button md-menu-item (click)="logout()">
<button mat-menu-item (click)="logout()">
Logout
</button>
</md-menu>
</mat-menu>
</div>
</div>
<!-- / TOOLBAR TOP -->
<!-- TOOLBAR BOTTOM -->
<md-toolbar-row>
<mat-toolbar-row>
<!-- SEARCH -->
<div class="search-wrapper" fxFlex fxLayout="row" fxLayoutAlign="start center">
<div class="search" fxFlex fxLayout="row" fxLayoutAlign="start center">
<md-icon>search</md-icon>
<mat-icon>search</mat-icon>
<input [(ngModel)]="searchText" type="text" placeholder="Search or start new chat" fxFlex>
@@ -88,10 +88,10 @@
</div>
<!-- / SEARCH -->
</md-toolbar-row>
</mat-toolbar-row>
<!-- / TOOLBAR BOTTOM -->
</md-toolbar>
</mat-toolbar>
<!-- / CHATS TOOLBAR -->
</div>
@@ -106,11 +106,11 @@
<!-- CHATS LIST-->
<div class="chat-list" fxLayout="column">
<div md-subheader *ngIf="(user.chatList | filter: searchText).length > 0">
<div matSubheader *ngIf="(user.chatList | filter: searchText).length > 0">
Chats
</div>
<button md-button class="contact"
<button mat-button class="contact"
*ngFor="let chat of user.chatList | filter: searchText"
(click)="getChat(chat.contactId)" ngClass="{'unread':contact.unread}"
[@animate]="{value:'*',params:{y:'100%'}}">
@@ -121,7 +121,7 @@
<img [src]="contacts |getById:chat.contactId:'avatar'"
class="avatar"
alt="{{contacts |getById:chat.contactId:'name'}}"/>
<md-icon class="s-16 status" [ngClass]="contacts |getById:chat.contactId:'status'"></md-icon>
<mat-icon class="s-16 status" [ngClass]="contacts |getById:chat.contactId:'status'"></mat-icon>
</div>
<div fxLayout="row" fxFlex>
@@ -146,19 +146,19 @@
<!-- CONTACTS LIST-->
<div class="contact-list" fxLayout="column">
<div md-subheader *ngIf="(contacts| filter: searchText).length > 0">
<div matSubheader *ngIf="(contacts| filter: searchText).length > 0">
Contacts
</div>
<button md-button class="contact"
<button mat-button class="contact"
*ngFor="let contact of contacts| filter: searchText"
(click)="getChat(contact.id)"
[@animate]="{value:'*',params:{y:'100%'}}">
<div fxLayout="row" fxLayoutAlign="start center">
<div class="avatar-wrapper" fxFlex="0 1 auto">
<img src="{{contact.avatar}}" class="md-avatar avatar" alt="{{contact.name}}"/>
<md-icon class="s-16 status" [ngClass]="contact.status"></md-icon>
<img src="{{contact.avatar}}" class="mat-avatar avatar" alt="{{contact.name}}"/>
<mat-icon class="s-16 status" [ngClass]="contact.status"></mat-icon>
</div>
<div class="" fxLayout="column" fxLayoutAlign="center start">

View File

@@ -7,7 +7,7 @@
.sidenav-header {
md-toolbar {
mat-toolbar {
border-bottom: 1px solid rgba(0, 0, 0, .08);
.avatar-wrapper {

View File

@@ -1,6 +1,6 @@
import { Component, OnInit } from '@angular/core';
import { ChatService } from '../../../chat.service';
import { FuseMdSidenavHelperService } from '../../../../../../../core/directives/md-sidenav-helper/md-sidenav-helper.service';
import { FuseMatSidenavHelperService } from '../../../../../../../core/directives/mat-sidenav-helper/mat-sidenav-helper.service';
import { ObservableMedia } from '@angular/flex-layout';
import { fuseAnimations } from '../../../../../../../core/animations';
@@ -20,7 +20,7 @@ export class FuseChatChatsSidenavComponent implements OnInit
constructor(
private chatService: ChatService,
private fuseMdSidenavService: FuseMdSidenavHelperService,
private fuseMatSidenavService: FuseMatSidenavHelperService,
public media: ObservableMedia
)
{
@@ -50,7 +50,7 @@ export class FuseChatChatsSidenavComponent implements OnInit
if ( !this.media.isActive('gt-md') )
{
this.fuseMdSidenavService.getSidenav('chat-left-sidenav').toggle();
this.fuseMatSidenavService.getSidenav('chat-left-sidenav').toggle();
}
}

View File

@@ -2,29 +2,29 @@
<div class="sidenav-header">
<!-- USER TOOLBAR -->
<md-toolbar>
<mat-toolbar>
<!-- TOOLBAR TOP -->
<div fxFlex fxLayout="row" fxLayoutAlign="space-between center">
<button md-button class="mat-icon-button" (click)="changeLeftSidenavView('chats')" aria-label="back">
<md-icon>arrow_back</md-icon>
<button mat-button class="mat-icon-button" (click)="changeLeftSidenavView('chats')" aria-label="back">
<mat-icon>arrow_back</mat-icon>
</button>
</div>
<!-- / TOOLBAR TOP -->
<!-- TOOLBAR BOTTOM -->
<md-toolbar-row class="toolbar-bottom" fxLayout="column" fxLayoutAlign="center center">
<mat-toolbar-row class="toolbar-bottom" fxLayout="column" fxLayoutAlign="center center">
<img [src]="user.avatar" class="avatar user-avatar huge" alt="{{user.name}}"/>
<div class="user-name my-8">{{user.name}}</div>
</md-toolbar-row>
</mat-toolbar-row>
<!-- / TOOLBAR BOTTOM -->
</md-toolbar>
</mat-toolbar>
<!-- / USER TOOLBAR -->
</div>
@@ -32,47 +32,47 @@
<div class="sidenav-content p-16" fusePerfectScrollbar fxFlex>
<!-- USER MOOD -->
<md-card>
<mat-card>
<form [formGroup]="userForm" fxLayout="column">
<md-input-container class="mb-24" fxFlex="0 1 auto">
<textarea mdInput placeholder="Mood" name="mood"
<mat-form-field class="mb-24" fxFlex="0 1 auto">
<textarea matInput placeholder="Mood" name="mood"
formControlName="mood" rows="3"></textarea>
</md-input-container>
</mat-form-field>
<md-radio-group formControlName="status" fxLayout="column">
<mat-radio-group formControlName="status" fxLayout="column">
<md-radio-button value="online" class="py-8">
<mat-radio-button value="online" class="py-8">
<div fxLayout="row" fxLayoutAlign="start center">
<md-icon class="status online mr-8"></md-icon>
<mat-icon class="status online mr-8"></mat-icon>
<span class="mat-h4 m-0">Online</span>
</div>
</md-radio-button>
</mat-radio-button>
<md-radio-button value="away" class="py-8">
<mat-radio-button value="away" class="py-8">
<div fxLayout="row" fxLayoutAlign="start center">
<md-icon class="status away mr-8"></md-icon>
<mat-icon class="status away mr-8"></mat-icon>
<span class="mat-h4 m-0">Away</span>
</div>
</md-radio-button>
</mat-radio-button>
<md-radio-button value="do-not-disturb" class="py-8">
<mat-radio-button value="do-not-disturb" class="py-8">
<div fxLayout="row" fxLayoutAlign="start center">
<md-icon class="status do-not-disturb mr-8"></md-icon>
<mat-icon class="status do-not-disturb mr-8"></mat-icon>
<span class="mat-h4 m-0">Do not disturb</span>
</div>
</md-radio-button>
</mat-radio-button>
<md-radio-button value="offline" class="py-8">
<mat-radio-button value="offline" class="py-8">
<div fxLayout="row" fxLayoutAlign="start center">
<md-icon class="status offline mr-8"></md-icon>
<mat-icon class="status offline mr-8"></mat-icon>
<span class="mat-h4 m-0">Offline</span>
</div>
</md-radio-button>
</md-radio-group>
</mat-radio-button>
</mat-radio-group>
</form>
</md-card>
</mat-card>
<!-- / USER MOOD -->
</div>

View File

@@ -5,7 +5,7 @@
flex: 1;
flex-direction: column;
md-toolbar {
mat-toolbar {
background-color: mat-color($accent);
color: map-get($accent, default-contrast);

View File

@@ -2,31 +2,31 @@
<div class="sidenav-header" *ngIf="contact">
<!-- CONTACT TOOLBAR -->
<md-toolbar>
<mat-toolbar>
<!-- TOOLBAR TOP -->
<div fxFlex fxLayout="row" fxLayoutAlign="space-between center">
<div>Contact Info</div>
<button md-button class="mat-icon-button" fuseMdSidenavToggler="chat-right-sidenav" aria-label="close">
<md-icon>close</md-icon>
<button mat-button class="mat-icon-button" fuseMatSidenavToggler="chat-right-sidenav" aria-label="close">
<mat-icon>close</mat-icon>
</button>
</div>
<!-- / TOOLBAR TOP -->
<!-- TOOLBAR BOTTOM -->
<md-toolbar-row class="toolbar-bottom" fxLayout="column" fxLayoutAlign="center center">
<mat-toolbar-row class="toolbar-bottom" fxLayout="column" fxLayoutAlign="center center">
<img [src]="contact.avatar" class="avatar contact-avatar huge" alt="{{contact.name}}"/>
<div class="contact-name my-8">{{contact.name}}</div>
</md-toolbar-row>
</mat-toolbar-row>
<!-- / TOOLBAR BOTTOM -->
</md-toolbar>
</mat-toolbar>
<!-- / CONTACT TOOLBAR -->
</div>
@@ -34,14 +34,14 @@
<div class="sidenav-content p-16" fusePerfectScrollbar fxFlex *ngIf="contact">
<!-- CONTACT MOOD -->
<md-card>
<mat-card>
<md-input-container fxFlex>
<textarea mdInput placeholder="Mood" name="mood"
<mat-form-field fxFlex>
<textarea matInput placeholder="Mood" name="mood"
[value]="contact.mood" rows="3" disabled>
</textarea>
</md-input-container>
</mat-form-field>
</md-card>
</mat-card>
<!-- / CONTACT MOOD -->
</div>

View File

@@ -5,7 +5,7 @@
flex: 1;
flex-direction: column;
md-toolbar {
mat-toolbar {
background-color: mat-color($accent);
color: map-get($accent, default-contrast);

View File

@@ -1,104 +1,104 @@
<div class="dialog-content-wrapper">
<md-toolbar md-dialog-title class="mat-accent m-0">
<mat-toolbar matDialogTitle class="mat-accent m-0">
<div fxFlex fxLayout="row" fxLayoutAlign="space-between center">
<span class="title dialog-title">{{dialogTitle}}</span>
<button md-button class="mat-icon-button"
<button mat-button class="mat-icon-button"
(click)="dialogRef.close()"
aria-label="Close dialog">
<md-icon>close</md-icon>
<mat-icon>close</mat-icon>
</button>
</div>
<md-toolbar-row class="toolbar-bottom py-8 py-sm-16" fxLayout="column" fxLayoutAlign="center center">
<mat-toolbar-row class="toolbar-bottom py-8 py-sm-16" fxLayout="column" fxLayoutAlign="center center">
<img [src]="contact.avatar" class=" avatar contact-avatar huge"
[alt]="contact.name"/>
<div class="contact-name">{{contact.name}}</div>
</md-toolbar-row>
</md-toolbar>
</mat-toolbar-row>
</mat-toolbar>
<div md-dialog-content class="p-24 m-0" fusePerfectScrollbar>
<div mat-dialog-content class="p-24 m-0" fusePerfectScrollbar>
<form [formGroup]="contactForm">
<div class="mb-24" fxLayout="row" fxLayoutAlign="start start">
<md-icon class="mr-12 mt-12">account_circle</md-icon>
<md-input-container fxFlex>
<input name="name" formControlName="name" placeholder="Name" mdInput required>
</md-input-container>
<mat-icon class="mr-12 mt-12">account_circle</mat-icon>
<mat-form-field fxFlex>
<input name="name" formControlName="name" placeholder="Name" matInput required>
</mat-form-field>
</div>
<div class="mb-24" fxLayout="row" fxLayoutAlign="start start">
<md-icon class="mr-12 mt-12"></md-icon>
<md-input-container fxFlex>
<input name="lastName" formControlName="lastName" placeholder="Lastname" mdInput>
</md-input-container>
<mat-icon class="mr-12 mt-12"></mat-icon>
<mat-form-field fxFlex>
<input name="lastName" formControlName="lastName" placeholder="Lastname" matInput>
</mat-form-field>
</div>
<div class="mb-24" fxLayout="row" fxLayoutAlign="start start">
<md-icon class="mr-12 mt-12">star</md-icon>
<md-input-container fxFlex>
<input name="nickname" formControlName="nickname" mdInput placeholder="Nickname">
</md-input-container>
<mat-icon class="mr-12 mt-12">star</mat-icon>
<mat-form-field fxFlex>
<input name="nickname" formControlName="nickname" matInput placeholder="Nickname">
</mat-form-field>
</div>
<div class="mb-24" fxLayout="row" fxLayoutAlign="start start">
<md-icon class="mr-12 mt-12">phone</md-icon>
<md-input-container fxFlex>
<input formControlName="phone" mdInput placeholder="Phone number">
</md-input-container>
<mat-icon class="mr-12 mt-12">phone</mat-icon>
<mat-form-field fxFlex>
<input formControlName="phone" matInput placeholder="Phone number">
</mat-form-field>
</div>
<div class="mb-24" fxLayout="row" fxLayoutAlign="start start">
<md-icon class="mr-12 mt-12">email</md-icon>
<md-input-container fxFlex>
<input name="email" formControlName="email" mdInput type="email" placeholder="Email">
</md-input-container>
<mat-icon class="mr-12 mt-12">email</mat-icon>
<mat-form-field fxFlex>
<input name="email" formControlName="email" matInput type="email" placeholder="Email">
</mat-form-field>
</div>
<div class="mb-24" fxLayout="row" fxLayoutAlign="start start">
<md-icon class="mr-12 mt-12">domain</md-icon>
<md-input-container fxFlex>
<input name="company" formControlName="company" mdInput placeholder="Company">
</md-input-container>
<mat-icon class="mr-12 mt-12">domain</mat-icon>
<mat-form-field fxFlex>
<input name="company" formControlName="company" matInput placeholder="Company">
</mat-form-field>
</div>
<div class="mb-24" fxLayout="row" fxLayoutAlign="start start">
<md-icon class="mr-12 mt-12">work</md-icon>
<md-input-container fxFlex>
<input name="jobTitle" formControlName="jobTitle" mdInput placeholder="Job title">
</md-input-container>
<mat-icon class="mr-12 mt-12">work</mat-icon>
<mat-form-field fxFlex>
<input name="jobTitle" formControlName="jobTitle" matInput placeholder="Job title">
</mat-form-field>
</div>
<div class="mb-24" fxLayout="row" fxLayoutAlign="start start">
<md-form-field class="mr-24" fxFlex>
<input mdInput [mdDatepicker]="birthdayDatePicker" placeholder="Birthday">
<md-datepicker-toggle mdSuffix [for]="birthdayDatePicker"></md-datepicker-toggle>
<md-datepicker #birthdayDatePicker></md-datepicker>
</md-form-field>
<mat-form-field class="mr-24" fxFlex>
<input matInput [matDatepicker]="birthdayDatePicker" placeholder="Birthday">
<mat-datepicker-toggle matSuffix [for]="birthdayDatePicker"></mat-datepicker-toggle>
<mat-datepicker #birthdayDatePicker></mat-datepicker>
</mat-form-field>
</div>
<div class="mb-24" fxLayout="row" fxLayoutAlign="start start">
<md-icon class="mr-12 mt-12">home</md-icon>
<md-input-container fxFlex>
<input name="address" formControlName="address" mdInput placeholder="Address">
</md-input-container>
<mat-icon class="mr-12 mt-12">home</mat-icon>
<mat-form-field fxFlex>
<input name="address" formControlName="address" matInput placeholder="Address">
</mat-form-field>
</div>
<div fxLayout="row" class="textarea-wrapper" fxLayoutAlign="start start">
<md-icon class="mr-12 mt-12">note</md-icon>
<md-input-container fxFlex>
<textarea name="notes" formControlName="notes" placeholder="Notes" mdInput type="text" max-rows="4"></textarea>
</md-input-container>
<mat-icon class="mr-12 mt-12">note</mat-icon>
<mat-form-field fxFlex>
<textarea name="notes" formControlName="notes" placeholder="Notes" matInput type="text" max-rows="4"></textarea>
</mat-form-field>
</div>
</form>
</div>
<div md-dialog-actions class="m-0 p-16" fxLayout="row" fxLayoutAlign="space-between center">
<div mat-dialog-actions class="m-0 p-16" fxLayout="row" fxLayoutAlign="space-between center">
<button *ngIf="action !=='edit'"
md-raised-button
mat-raised-button
(click)="dialogRef.close(contactForm)"
class="save-button mat-accent"
[disabled]="contactForm.invalid"
@@ -107,7 +107,7 @@
</button>
<button *ngIf="action ==='edit'"
md-raised-button
mat-raised-button
(click)="dialogRef.close(['save',contactForm])"
class="save-button mat-accent"
[disabled]="contactForm.invalid"
@@ -116,12 +116,12 @@
</button>
<button *ngIf="action ==='edit'"
md-button
mat-button
class="mat-icon-button"
(click)="dialogRef.close(['delete',contactForm])"
aria-label="Delete"
md-tooltip="Delete">
<md-icon>delete</md-icon>
matTooltip="Delete">
<mat-icon>delete</mat-icon>
</button>
</div>

View File

@@ -1,5 +1,5 @@
import { Component, Inject, OnInit, ViewEncapsulation } from '@angular/core';
import { MD_DIALOG_DATA, MdDialogRef } from '@angular/material';
import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material';
import { CalendarEvent } from 'angular-calendar';
import { FormBuilder, FormGroup } from '@angular/forms';
import 'rxjs/Rx';
@@ -21,8 +21,8 @@ export class FuseContactsContactFormDialogComponent implements OnInit
contact: Contact;
constructor(
public dialogRef: MdDialogRef<FuseContactsContactFormDialogComponent>,
@Inject(MD_DIALOG_DATA) private data: any,
public dialogRef: MatDialogRef<FuseContactsContactFormDialogComponent>,
@Inject(MAT_DIALOG_DATA) private data: any,
private formBuilder: FormBuilder
)
{

View File

@@ -1,106 +1,106 @@
<md-table #table [dataSource]="dataSource"
[@animateStagger]="{value:'50'}">
<mat-table #table [dataSource]="dataSource"
[@animateStagger]="{value:'50'}">
<!-- Checkbox Column -->
<ng-container cdkColumnDef="checkbox">
<md-header-cell *cdkHeaderCellDef></md-header-cell>
<md-cell *cdkCellDef="let contact">
<md-checkbox [(ngModel)]="checkboxes[contact.id]" (ngModelChange)="onSelectedChange(contact.id)"
(click)="$event.stopPropagation()">
</md-checkbox>
</md-cell>
<mat-header-cell *cdkHeaderCellDef></mat-header-cell>
<mat-cell *cdkCellDef="let contact">
<mat-checkbox [(ngModel)]="checkboxes[contact.id]" (ngModelChange)="onSelectedChange(contact.id)"
(click)="$event.stopPropagation()">
</mat-checkbox>
</mat-cell>
</ng-container>
<!-- Avatar Column -->
<ng-container cdkColumnDef="avatar">
<md-header-cell *cdkHeaderCellDef></md-header-cell>
<md-cell *cdkCellDef="let contact">
<mat-header-cell *cdkHeaderCellDef></mat-header-cell>
<mat-cell *cdkCellDef="let contact">
<img class="avatar" *ngIf="contact.avatar" [alt]="contact.name"
[src]="contact.avatar"/>
</md-cell>
</mat-cell>
</ng-container>
<!-- Name Column -->
<ng-container cdkColumnDef="name">
<md-header-cell *cdkHeaderCellDef>Name</md-header-cell>
<md-cell *cdkCellDef="let contact">
<mat-header-cell *cdkHeaderCellDef>Name</mat-header-cell>
<mat-cell *cdkCellDef="let contact">
<p class="text-truncate font-weight-600">{{contact.name}} {{contact.lastName}}</p>
</md-cell>
</mat-cell>
</ng-container>
<!-- Email Column -->
<ng-container cdkColumnDef="email">
<md-header-cell *cdkHeaderCellDef fxHide fxShow.gt-sm>Email</md-header-cell>
<md-cell *cdkCellDef="let contact" fxHide fxShow.gt-sm>
<mat-header-cell *cdkHeaderCellDef fxHide fxShow.gt-sm>Email</mat-header-cell>
<mat-cell *cdkCellDef="let contact" fxHide fxShow.gt-sm>
<p class="email text-truncate">
{{contact.email}}
</p>
</md-cell>
</mat-cell>
</ng-container>
<!-- Phone Column -->
<ng-container cdkColumnDef="phone">
<md-header-cell *cdkHeaderCellDef fxHide fxShow.gt-md>Phone</md-header-cell>
<md-cell *cdkCellDef="let contact" fxHide fxShow.gt-md>
<mat-header-cell *cdkHeaderCellDef fxHide fxShow.gt-md>Phone</mat-header-cell>
<mat-cell *cdkCellDef="let contact" fxHide fxShow.gt-md>
<p class="phone text-truncate">
{{contact.phone}}
</p>
</md-cell>
</mat-cell>
</ng-container>
<!-- Job Title Column -->
<ng-container cdkColumnDef="jobTitle">
<md-header-cell *cdkHeaderCellDef fxHide fxShow.gt-lg>Job title</md-header-cell>
<md-cell *cdkCellDef="let contact" fxHide fxShow.gt-lg>
<mat-header-cell *cdkHeaderCellDef fxHide fxShow.gt-lg>Job title</mat-header-cell>
<mat-cell *cdkCellDef="let contact" fxHide fxShow.gt-lg>
<p class="job-title text-truncate">
{{contact.jobTitle}}
</p>
</md-cell>
</mat-cell>
</ng-container>
<!-- Company Column -->
<ng-container cdkColumnDef="company">
<md-header-cell *cdkHeaderCellDef fxHide fxShow.gt-lg>Company</md-header-cell>
<md-cell *cdkCellDef="let contact" fxHide fxShow.gt-lg>
<mat-header-cell *cdkHeaderCellDef fxHide fxShow.gt-lg>Company</mat-header-cell>
<mat-cell *cdkCellDef="let contact" fxHide fxShow.gt-lg>
<p class="company text-truncate">
{{contact.company}}
</p>
</md-cell>
</mat-cell>
</ng-container>
<!-- Buttons Column -->
<ng-container cdkColumnDef="buttons">
<md-header-cell *cdkHeaderCellDef></md-header-cell>
<md-cell *cdkCellDef="let contact">
<mat-header-cell *cdkHeaderCellDef></mat-header-cell>
<mat-cell *cdkCellDef="let contact">
<div fxFlex="row" fxLayoutAlign="end center">
<button md-icon-button (click)="$event.stopPropagation();toggleStar(contact.id)" aria-label="Toggle star">
<md-icon *ngIf="user.starred.includes(contact.id)">star</md-icon>
<md-icon *ngIf="!user.starred.includes(contact.id)">star_outline</md-icon>
<button mat-icon-button (click)="$event.stopPropagation();toggleStar(contact.id)" aria-label="Toggle star">
<mat-icon *ngIf="user.starred.includes(contact.id)">star</mat-icon>
<mat-icon *ngIf="!user.starred.includes(contact.id)">star_outline</mat-icon>
</button>
<button md-icon-button [mdMenuTriggerFor]="moreMenu" aria-label="More"
<button mat-icon-button [matMenuTriggerFor]="moreMenu" aria-label="More"
(click)="$event.stopPropagation();">
<md-icon>more_vert</md-icon>
<mat-icon>more_vert</mat-icon>
</button>
<md-menu #moreMenu="mdMenu">
<button md-menu-item aria-label="remove" (click)="deleteContact(contact)">
<md-icon>delete</md-icon>
<mat-menu #moreMenu="matMenu">
<button mat-menu-item aria-label="remove" (click)="deleteContact(contact)">
<mat-icon>delete</mat-icon>
<span>Remove</span>
</button>
</md-menu>
</mat-menu>
</div>
</md-cell>
</mat-cell>
</ng-container>
<md-header-row *cdkHeaderRowDef="displayedColumns"></md-header-row>
<md-row *cdkRowDef="let contact; columns: displayedColumns;"
class="contact"
(click)="editContact(contact)"
[ngClass]="{'md-light-blue-50-bg':checkboxes[contact.id]}"
md-ripple
[@animate]="{value:'*',params:{y:'100%'}}">
</md-row>
</md-table>
<mat-header-row *cdkHeaderRowDef="displayedColumns"></mat-header-row>
<mat-row *cdkRowDef="let contact; columns: displayedColumns;"
class="contact"
(click)="editContact(contact)"
[ngClass]="{'mat-light-blue-50-bg':checkboxes[contact.id]}"
matRipple
[@animate]="{value:'*',params:{y:'100%'}}">
</mat-row>
</mat-table>

View File

@@ -22,7 +22,7 @@
.mat-row {
position: relative;
cursor: pointer;
padding-right: 8px;
padding: 8px 8px 8px 24px;
.mat-cell {
min-width: 0;

View File

@@ -2,7 +2,7 @@ import { Component, OnInit, TemplateRef, ViewChild } from '@angular/core';
import { ContactsService } from '../contacts.service';
import { Observable } from 'rxjs/Observable';
import { FuseContactsContactFormDialogComponent } from '../contact-form/contact-form.component';
import { MdDialog, MdDialogRef } from '@angular/material';
import { MatDialog, MatDialogRef } from '@angular/material';
import { FuseConfirmDialogComponent } from '../../../../../core/components/confirm-dialog/confirm-dialog.component';
import { FormGroup } from '@angular/forms';
import { DataSource } from '@angular/cdk/collections';
@@ -27,11 +27,11 @@ export class FuseContactsContactListComponent implements OnInit
dialogRef: any;
confirmDialogRef: MdDialogRef<FuseConfirmDialogComponent>;
confirmDialogRef: MatDialogRef<FuseConfirmDialogComponent>;
constructor(
private contactsService: ContactsService,
public dialog: MdDialog
public dialog: MatDialog
)
{
this.contactsService.onContactsChanged.subscribe(contacts => {

View File

@@ -1,20 +1,20 @@
<div id="contacts" class="page-layout simple left-sidenav inner-sidenav">
<!-- HEADER -->
<div class="header md-accent-bg p-16 p-sm-24" fxLayout="column" fxLayoutAlign="start start"
<div class="header mat-accent-bg p-16 p-sm-24" fxLayout="column" fxLayoutAlign="start start"
fxLayout.gt-xs="row" fxLayoutAlign.gt-xs="space-between center">
<!-- APP TITLE -->
<div fxLayout="row" fxLayoutAlign="start center">
<button md-button class="mat-icon-button sidenav-toggle mr-12"
fuseMdSidenavToggler="contacts-main-sidenav"
<button mat-button class="mat-icon-button sidenav-toggle mr-12"
fuseMatSidenavToggler="contacts-main-sidenav"
fxHide.gt-md>
<md-icon>menu</md-icon>
<mat-icon>menu</mat-icon>
</button>
<div class="logo" fxLayout="row" fxLayoutAlign="start center">
<md-icon class="logo-icon mr-16" *fuseIfOnDom [@animate]="{value:'*',params:{delay:'50ms',scale:'0.2'}}">account_box</md-icon>
<mat-icon class="logo-icon mr-16" *fuseIfOnDom [@animate]="{value:'*',params:{delay:'50ms',scale:'0.2'}}">account_box</mat-icon>
<span class="logo-text h1" *fuseIfOnDom [@animate]="{value:'*',params:{delay:'100ms',x:'-25px'}}">Contacts</span>
</div>
@@ -24,11 +24,11 @@
<!-- SEARCH -->
<div class="search-input-wrapper mt-16 ml-8 m-sm-0" fxLayout="row" fxLayoutAlign="start center">
<label for="search" class="mr-8">
<md-icon>search</md-icon>
<mat-icon>search</mat-icon>
</label>
<md-input-container md-no-float class="m-0" floatPlaceholder="never">
<input mdInput [formControl]="searchInput" id="search" placeholder="Search for anything">
</md-input-container>
<mat-form-field mat-no-float class="m-0" floatPlaceholder="never">
<input matInput [formControl]="searchInput" id="search" placeholder="Search for anything">
</mat-form-field>
</div>
<!-- / SEARCH -->
@@ -36,25 +36,25 @@
<!-- / HEADER -->
<!-- SELECTED BAR -->
<fuse-selected-bar class="md-accent-600-bg" *ngIf="hasSelectedContacts" [@slideInTop]></fuse-selected-bar>
<fuse-selected-bar class="mat-accent-600-bg" *ngIf="hasSelectedContacts" [@slideInTop]></fuse-selected-bar>
<!-- / SELECTED BAR -->
<md-sidenav-container>
<mat-sidenav-container>
<!-- SIDENAV -->
<md-sidenav class="sidenav mat-sidenav-opened" align="start" opened="true" mode="side"
fuseMdSidenavHelper="contacts-main-sidenav" md-is-locked-open="gt-sm">
<mat-sidenav class="sidenav mat-sidenav-opened" align="start" opened="true" mode="side"
fuseMatSidenavHelper="contacts-main-sidenav" mat-is-locked-open="gt-sm">
<fuse-contacts-main-sidenav *fuseIfOnDom [@animate]="{value:'*'}"></fuse-contacts-main-sidenav>
</md-sidenav>
</mat-sidenav>
<!-- / SIDENAV -->
<!-- CENTER -->
<div class="center p-24 pb-56 pr-sm-92" fusePerfectScrollbar>
<!-- CONTENT -->
<div class="content md-white-bg mat-elevation-z4">
<div class="content mat-white-bg mat-elevation-z4">
<fuse-contacts-contact-list></fuse-contacts-contact-list>
@@ -64,13 +64,13 @@
</div>
<!-- / CENTER -->
</md-sidenav-container>
</mat-sidenav-container>
</div>
<!-- ADD CONTACT BUTTON -->
<button md-fab class="md-accent-bg" id="add-contact-button" (click)="newContact()" aria-label="add contact"
<button mat-fab class="mat-accent-bg" id="add-contact-button" (click)="newContact()" aria-label="add contact"
*fuseIfOnDom [@animate]="{value:'*', params:{delay:'300ms',scale:'.2'}}">
<md-icon>person_add</md-icon>
<mat-icon>person_add</mat-icon>
</button>
<!-- / ADD CONTACT BUTTON -->

View File

@@ -4,6 +4,7 @@
overflow: hidden;
}
}
#add-contact-button {
position: absolute;
bottom: 12px;

View File

@@ -3,7 +3,7 @@ import { ContactsService } from './contacts.service';
import { fuseAnimations } from '../../../../core/animations';
import { FormControl, FormGroup } from '@angular/forms';
import { FuseContactsContactFormDialogComponent } from './contact-form/contact-form.component';
import { MdDialog } from '@angular/material';
import { MatDialog } from '@angular/material';
@Component({
selector : 'fuse-contacts',
@@ -20,7 +20,7 @@ export class FuseContactsComponent implements OnInit
constructor(
private contactsService: ContactsService,
public dialog: MdDialog
public dialog: MatDialog
)
{
this.searchInput = new FormControl('');

View File

@@ -67,7 +67,7 @@ export class ContactsService implements Resolve<any>
this.http.get('api/contacts-contacts')
.subscribe((response: any) => {
this.contacts = response.data;
this.contacts = response;
if ( this.filterBy === 'starred' )
{
@@ -104,7 +104,7 @@ export class ContactsService implements Resolve<any>
return new Promise((resolve, reject) => {
this.http.get('api/contacts-user/5725a6802d10e277a0f35724')
.subscribe((response: any) => {
this.user = response.data;
this.user = response;
this.onUserDataChanged.next(this.user);
resolve(this.user);
}, reject);

View File

@@ -1,8 +1,8 @@
<div fxFlex fxLayout="row" fxLayoutAlign="start center" class="p-24">
<div class="close-button-wrapper" fxFlex="0 1 auto" fxFlex.gt-sm="220px" (click)="deselectAll()">
<button class="p-8" md-button fxLayout="row" fxLayoutAlign="start center">
<md-icon class="mr-8">arrow_back</md-icon>
<button class="p-8" mat-button fxLayout="row" fxLayoutAlign="start center">
<mat-icon class="mr-8">arrow_back</mat-icon>
<span class="text-uppercase">Back</span>
</button>
</div>
@@ -15,19 +15,19 @@
<span>selected</span>
</span>
<button md-icon-button [mdMenuTriggerFor]="selectMenu">
<md-icon>arrow_drop_down</md-icon>
<button mat-icon-button [matMenuTriggerFor]="selectMenu">
<mat-icon>arrow_drop_down</mat-icon>
</button>
<md-menu #selectMenu="mdMenu">
<button md-menu-item (click)="selectAll()">Select all</button>
<button md-menu-item (click)="deselectAll()">Deselect all</button>
</md-menu>
<mat-menu #selectMenu="matMenu">
<button mat-menu-item (click)="selectAll()">Select all</button>
<button mat-menu-item (click)="deselectAll()">Deselect all</button>
</mat-menu>
</div>
<div class="multi-select-actions">
<button md-icon-button (click)="deleteSelectedContacts()" aria-label="delete selected">
<md-icon>delete</md-icon>
<button mat-icon-button (click)="deleteSelectedContacts()" aria-label="delete selected">
<mat-icon>delete</mat-icon>
</button>
</div>

View File

@@ -1,6 +1,6 @@
import { Component, OnInit } from '@angular/core';
import { ContactsService } from '../contacts.service';
import { MdDialog, MdDialogRef } from '@angular/material';
import { MatDialog, MatDialogRef } from '@angular/material';
import { FuseConfirmDialogComponent } from '../../../../../core/components/confirm-dialog/confirm-dialog.component';
@Component({
@@ -13,11 +13,11 @@ export class FuseContactsSelectedBarComponent implements OnInit
selectedContacts: string[];
hasSelectedContacts: boolean;
isIndeterminate: boolean;
confirmDialogRef: MdDialogRef<FuseConfirmDialogComponent>;
confirmDialogRef: MatDialogRef<FuseConfirmDialogComponent>;
constructor(
private contactsService: ContactsService,
public dialog: MdDialog
public dialog: MatDialog
)
{
this.contactsService.onSelectedContactsChanged

View File

@@ -1,6 +1,6 @@
<div class="sidenav-content">
<div class="card md-white-bg">
<div class="card mat-white-bg">
<!-- SIDENAV HEADER -->
<div class="header p-24" fxLayout="row" fxLayoutAlign="start center">
@@ -18,19 +18,19 @@
<div class="nav">
<div class="nav-item" aria-label="inbox">
<a class="nav-link" md-ripple (click)="changeFilter('all')" [ngClass]="{'active':filterBy ==='all'}">
<a class="nav-link" matRipple (click)="changeFilter('all')" [ngClass]="{'active':filterBy ==='all'}">
<span class="title">All Contacts</span>
</a>
</div>
<div class="nav-item" aria-label="frequently contacted" (click)="changeFilter('frequent')">
<a class="nav-link" md-ripple [ngClass]="{'active':filterBy ==='frequent'}">
<a class="nav-link" matRipple [ngClass]="{'active':filterBy ==='frequent'}">
<div class="title">Freequently contacted</div>
</a>
</div>
<div class="nav-item" aria-label="starred" (click)="changeFilter('starred')">
<a class="nav-link" md-ripple [ngClass]="{'active':filterBy ==='starred'}">
<a class="nav-link" matRipple [ngClass]="{'active':filterBy ==='starred'}">
<div class="title">Starred Contacts</div>
</a>
</div>

View File

@@ -1,19 +1,19 @@
<div id="dashboard-project" class="page-layout simple right-sidenav" fxLayout="row">
<md-sidenav-container>
<mat-sidenav-container>
<!-- CENTER -->
<div class="center" fxFlex fusePerfectScrollbar>
<!-- HEADER -->
<div class="header md-accent-bg p-24 pb-0" fxLayout="column" fxLayoutAlign="space-between">
<div class="header mat-accent-bg p-24 pb-0" fxLayout="column" fxLayoutAlign="space-between">
<div fxLayout="row" fxLayoutAlign="space-between start">
<span class="mat-display-1 mb-0 welcome-message" *fuseIfOnDom [@animate]="{value:'*',params:{x:'50px'}}">Welcome back, John!</span>
<button md-icon-button fuseMdSidenavToggler="dashboards-right-sidenav" fxHide.gt-md>
<md-icon>menu</md-icon>
<button mat-icon-button fuseMatSidenavToggler="dashboards-right-sidenav" fxHide.gt-md>
<mat-icon>menu</mat-icon>
</button>
</div>
@@ -21,15 +21,15 @@
<div class="selected-project">{{selectedProject.name}}</div>
<button md-icon-button class="project-selector" [mdMenuTriggerFor]="projectsMenu" aria-label="Select project">
<md-icon>more_horiz</md-icon>
<button mat-icon-button class="project-selector" [matMenuTriggerFor]="projectsMenu" aria-label="Select project">
<mat-icon>more_horiz</mat-icon>
</button>
<md-menu #projectsMenu="mdMenu">
<button md-menu-item *ngFor="let project of projects" (click)="selectedProject = project">
<mat-menu #projectsMenu="matMenu">
<button mat-menu-item *ngFor="let project of projects" (click)="selectedProject = project">
<span>{{project.name}}</span>
</button>
</md-menu>
</mat-menu>
</div>
</div>
<!-- / HEADER -->
@@ -37,9 +37,9 @@
<!-- CONTENT -->
<div class="content">
<md-tab-group dynamicHeight>
<mat-tab-group dynamicHeight>
<md-tab label="Home">
<mat-tab label="Home">
<div class="widget-group p-12" fxLayout="row" fxFlex="100" fxLayoutWrap *fuseIfOnDom [@animateStagger]="{value:'50'}">
@@ -47,20 +47,20 @@
<fuse-widget [@animate]="{value:'*',params:{y:'100%'}}" class="widget" fxLayout="column" fxFlex="100" fxFlex.gt-xs="50" fxFlex.gt-md="25">
<!-- Front -->
<div class="fuse-widget-front md-white-bg mat-elevation-z2">
<div class="fuse-widget-front mat-white-bg mat-elevation-z2">
<div class="pl-16 pr-8 py-16 h-52" fxLayout="row" fxLayoutAlign="space-between center">
<md-select class="simplified font-size-16" [(ngModel)]="widgets.widget1.currentRange"
aria-label="Change range">
<md-option *ngFor="let range of widgets.widget1.ranges | keys"
[value]="range.key">
{{range.value}}
</md-option>
</md-select>
<button md-icon-button fuseWidgetToggle aria-label="more">
<md-icon>more_vert</md-icon>
<mat-form-field>
<mat-select class="simplified font-size-16" [(ngModel)]="widgets.widget1.currentRange"
aria-label="Change range">
<mat-option *ngFor="let range of widgets.widget1.ranges | keys"
[value]="range.key">
{{range.value}}
</mat-option>
</mat-select>
</mat-form-field>
<button mat-icon-button fuseWidgetToggle aria-label="more">
<mat-icon>more_vert</mat-icon>
</button>
</div>
<div class="pt-8 pb-32" fxLayout="column" fxLayoutAlign="center center">
@@ -78,10 +78,10 @@
<!-- / Front -->
<!-- Back -->
<div class="fuse-widget-back p-16 pt-32 md-white-bg mat-elevation-z2">
<button md-icon-button fuseWidgetToggle class="fuse-widget-flip-button"
<div class="fuse-widget-back p-16 pt-32 mat-white-bg mat-elevation-z2">
<button mat-icon-button fuseWidgetToggle class="fuse-widget-flip-button"
aria-label="Flip widget">
<md-icon class="s-16">close</md-icon>
<mat-icon class="s-16">close</mat-icon>
</button>
<div>
@@ -97,12 +97,12 @@
<fuse-widget [@animate]="{value:'*',params:{y:'100%'}}" class="widget" fxLayout="column" fxFlex="100" fxFlex.gt-xs="50" fxFlex.gt-md="25">
<!-- Front -->
<div class="fuse-widget-front md-white-bg mat-elevation-z2">
<div class="fuse-widget-front mat-white-bg mat-elevation-z2">
<div class="pl-16 pr-8 py-16 h-52" fxLayout="row" fxLayoutAlign="space-between center">
<div class="h3">{{widgets.widget2.title}}</div>
<button md-icon-button fuseWidgetToggle class="fuse-widget-flip-button" aria-label="more">
<md-icon>more_vert</md-icon>
<button mat-icon-button fuseWidgetToggle class="fuse-widget-flip-button" aria-label="more">
<mat-icon>more_vert</mat-icon>
</button>
</div>
@@ -121,10 +121,10 @@
<!-- / Front -->
<!-- Back -->
<div class="fuse-widget-back p-16 pt-32 md-white-bg mat-elevation-z2">
<button md-icon-button fuseWidgetToggle class="fuse-widget-flip-button"
<div class="fuse-widget-back p-16 pt-32 mat-white-bg mat-elevation-z2">
<button mat-icon-button fuseWidgetToggle class="fuse-widget-flip-button"
aria-label="Flip widget">
<md-icon class="s-16">close</md-icon>
<mat-icon class="s-16">close</mat-icon>
</button>
<div>
@@ -140,12 +140,12 @@
<fuse-widget [@animate]="{value:'*',params:{y:'100%'}}" class="widget" fxLayout="column" fxFlex="100" fxFlex.gt-xs="50" fxFlex.gt-md="25">
<!-- Front -->
<div class="fuse-widget-front md-white-bg mat-elevation-z2">
<div class="fuse-widget-front mat-white-bg mat-elevation-z2">
<div class="pl-16 pr-8 py-16 h-52" fxLayout="row" fxLayoutAlign="space-between center">
<div class="h3">{{widgets.widget3.title}}</div>
<button md-icon-button fuseWidgetToggle class="fuse-widget-flip-button" aria-label="more">
<md-icon>more_vert</md-icon>
<button mat-icon-button fuseWidgetToggle class="fuse-widget-flip-button" aria-label="more">
<mat-icon>more_vert</mat-icon>
</button>
</div>
@@ -164,10 +164,10 @@
<!-- / Front -->
<!-- Back -->
<div class="fuse-widget-back p-16 pt-32 md-white-bg mat-elevation-z2">
<button md-icon-button fuseWidgetToggle class="fuse-widget-flip-button"
<div class="fuse-widget-back p-16 pt-32 mat-white-bg mat-elevation-z2">
<button mat-icon-button fuseWidgetToggle class="fuse-widget-flip-button"
aria-label="Flip widget">
<md-icon class="s-16">close</md-icon>
<mat-icon class="s-16">close</mat-icon>
</button>
<div>
@@ -183,12 +183,12 @@
<fuse-widget [@animate]="{value:'*',params:{y:'100%'}}" class="widget" fxLayout="column" fxFlex="100" fxFlex.gt-xs="50" fxFlex.gt-md="25">
<!-- Front -->
<div class="fuse-widget-front md-white-bg mat-elevation-z2">
<div class="fuse-widget-front mat-white-bg mat-elevation-z2">
<div class="pl-16 pr-8 py-16 h-52" fxLayout="row" fxLayoutAlign="space-between center">
<div class="h3">{{widgets.widget4.title}}</div>
<button md-icon-button fuseWidgetToggle class="fuse-widget-flip-button" aria-label="more">
<md-icon>more_vert</md-icon>
<button mat-icon-button fuseWidgetToggle class="fuse-widget-flip-button" aria-label="more">
<mat-icon>more_vert</mat-icon>
</button>
</div>
@@ -206,10 +206,10 @@
<!-- / Front -->
<!-- Back -->
<div class="fuse-widget-back p-16 pt-32 md-white-bg mat-elevation-z2">
<button md-icon-button fuseWidgetToggle class="fuse-widget-flip-button"
<div class="fuse-widget-back p-16 pt-32 mat-white-bg mat-elevation-z2">
<button mat-icon-button fuseWidgetToggle class="fuse-widget-flip-button"
aria-label="Flip widget">
<md-icon class="s-16">close</md-icon>
<mat-icon class="s-16">close</mat-icon>
</button>
<div>
@@ -226,14 +226,14 @@
<fuse-widget [@animate]="{value:'*',params:{y:'100%'}}" class="widget" fxLayout="row" fxFlex="100">
<!-- Front -->
<div class="fuse-widget-front md-white-bg mat-elevation-z2">
<div class="fuse-widget-front mat-white-bg mat-elevation-z2">
<div class="px-16 border-bottom" fxLayout="row" fxLayoutAlign="space-between center" fxLayoutWrap>
<div fxFlex class="py-8 h3">{{widgets.widget5.title}}</div>
<div fxFlex="0 1 auto" class="py-8" fxLayout="row">
<button md-button class="px-16"
<button mat-button class="px-16"
*ngFor="let range of widgets.widget5.ranges | keys"
(click)="widget5.currentRange = range.key"
[disabled]="widget5.currentRange == range.key">
@@ -302,18 +302,18 @@
<fuse-widget [@animate]="{value:'*',params:{y:'100%'}}" class="widget" fxLayout="column" fxFlex="100" fxFlex.gt-sm="50">
<!-- Front -->
<div class="fuse-widget-front md-white-bg mat-elevation-z2">
<div class="fuse-widget-front mat-white-bg mat-elevation-z2">
<div class="px-16 border-bottom" fxLayout="row" fxLayoutAlign="space-between center">
<div class="h3">{{widgets.widget6.title}}</div>
<div class="py-16">
<md-select class="simplified" [(ngModel)]="widget6.currentRange" aria-label="Change range">
<md-option *ngFor="let range of widgets.widget6.ranges | keys"
[value]="range.key">
<mat-form-field>
<mat-select class="simplified" [(ngModel)]="widget6.currentRange" aria-label="Change range">
<mat-option *ngFor="let range of widgets.widget6.ranges | keys"
[value]="range.key">
{{range.value}}
</md-option>
</md-select>
</div>
</mat-option>
</mat-select>
</mat-form-field>
</div>
<div class="h-400">
@@ -352,20 +352,19 @@
<fuse-widget [@animate]="{value:'*',params:{y:'100%'}}" class="widget" fxLayout="column" fxFlex="100" fxFlex.gt-sm="50">
<!-- Front -->
<div class="fuse-widget-front md-white-bg mat-elevation-z2">
<div class="fuse-widget-front mat-white-bg mat-elevation-z2">
<div class="px-16 border-bottom" fxLayout="row" fxLayoutAlign="space-between center">
<div class="h3">{{widgets.widget7.title}}</div>
<div class="py-16">
<md-select class="simplified" [(ngModel)]="widget7.currentRange"
aria-label="Change range">
<md-option *ngFor="let range of widgets.widget7.ranges | keys"
[value]="range.key">
<mat-form-field>
<mat-select class="simplified" [(ngModel)]="widget7.currentRange"
aria-label="Change range">
<mat-option *ngFor="let range of widgets.widget7.ranges | keys"
[value]="range.key">
{{range.value}}
</md-option>
</md-select>
</div>
</mat-option>
</mat-select>
</mat-form-field>
</div>
<div class="p-16" fxLayout="row" fxLayoutAlign="space-between center"
@@ -378,8 +377,8 @@
</div>
</div>
<button md-icon-button aria-label="More information">
<md-icon>more_vert</md-icon>
<button mat-icon-button aria-label="More information">
<mat-icon>more_vert</mat-icon>
</button>
</div>
@@ -393,9 +392,9 @@
<!-- / WIDGET GROUP -->
</md-tab>
</mat-tab>
<md-tab label="Budget Summary">
<mat-tab label="Budget Summary">
<!-- WIDGET GROUP -->
<div class="widget-group" fxLayout="row" fxFlex="100" fxLayoutWrap *fuseIfOnDom [@animateStagger]="{value:'50'}">
@@ -404,12 +403,12 @@
<fuse-widget [@animate]="{value:'*',params:{y:'100%'}}" class="widget" fxLayout="column" fxFlex="100" fxFlex.gt-sm="50">
<!-- Front -->
<div class="fuse-widget-front md-white-bg mat-elevation-z2">
<div class="fuse-widget-front mat-white-bg mat-elevation-z2">
<div class="h3 p-16">
{{widgets.widget8.title}}
</div>
<md-divider></md-divider>
<mat-divider></mat-divider>
<div class="h-400">
<ngx-charts-pie-chart
@@ -435,19 +434,17 @@
<fuse-widget [@animate]="{value:'*',params:{y:'100%'}}" class="widget" fxLayout="column" fxFlex="100" fxFlex.gt-sm="50">
<!-- Front -->
<div class="fuse-widget-front md-white-bg mat-elevation-z2">
<div class="fuse-widget-front mat-white-bg mat-elevation-z2">
<div class="px-16 border-bottom" fxLayout="row" fxLayoutAlign="space-between center">
<div class="h3">{{widgets.widget9.title}}</div>
<div class="py-16">
<md-select [(ngModel)]="widget9.currentRange" aria-label="Change range">
<md-option *ngFor="let range of widgets.widget9.ranges | keys"
[value]="range.key">
<mat-form-field>
<mat-select [(ngModel)]="widget9.currentRange" aria-label="Change range">
<mat-option *ngFor="let range of widgets.widget9.ranges | keys"
[value]="range.key">
{{range.value}}
</md-option>
</md-select>
</div>
</mat-option>
</mat-select>
</mat-form-field>
</div>
<div class="p-16" fxLayout="column" fxLayoutAlign="center" fxLayout.gt-xs="row"
@@ -549,7 +546,7 @@
<fuse-widget [@animate]="{value:'*',params:{y:'100%'}}" class="widget" fxLayout="row" fxFlex="100">
<!-- Front -->
<div class="fuse-widget-front md-white-bg mat-elevation-z2">
<div class="fuse-widget-front mat-white-bg mat-elevation-z2">
<div class="simple-table-container" ms-responsive-table>
<div class=" table-title">
@@ -572,7 +569,7 @@
<span class="p-4" [class]="cell.classes">
{{cell.value}}
</span>
<md-icon *ngIf="cell.icon" class="s-16">{{cell.icon}}</md-icon>
<mat-icon *ngIf="cell.icon" class="s-16">{{cell.icon}}</mat-icon>
</td>
</tr>
</tbody>
@@ -588,9 +585,9 @@
</div>
<!-- / WIDGET GROUP -->
</md-tab>
</mat-tab>
<md-tab label="Team Members">
<mat-tab label="Team Members">
<!-- WIDGET GROUP -->
<div class="widget-group" fxLayout="row" fxFlex="100" fxLayoutWrap *fuseIfOnDom [@animateStagger]="{value:'50'}">
@@ -599,7 +596,7 @@
<fuse-widget [@animate]="{value:'*',params:{y:'100%'}}" class="widget" fxLayout="row" fxFlex="100">
<!-- Front -->
<div class="fuse-widget-front md-white-bg mat-elevation-z2">
<div class="fuse-widget-front mat-white-bg mat-elevation-z2">
<div class="p-24 mb-8 border-bottom" fxLayout="row" fxLayoutAlign="space-between center">
<div class="h2">{{widgets.widget11.title}}</div>
@@ -608,70 +605,70 @@
</div>
</div>
<md-table #table [dataSource]="widget11.dataSource">
<mat-table #table [dataSource]="widget11.dataSource">
<!-- Avatar Column -->
<ng-container cdkColumnDef="avatar">
<md-header-cell fxFlex="64px" *cdkHeaderCellDef></md-header-cell>
<md-cell fxFlex="64px" *cdkCellDef="let contact">
<mat-header-cell fxFlex="64px" *cdkHeaderCellDef></mat-header-cell>
<mat-cell fxFlex="64px" *cdkCellDef="let contact">
<img class="avatar" *ngIf="contact.avatar" [alt]="contact.name"
[src]="contact.avatar"/>
</md-cell>
</mat-cell>
</ng-container>
<!-- Name Column -->
<ng-container cdkColumnDef="name">
<md-header-cell *cdkHeaderCellDef>Name</md-header-cell>
<md-cell *cdkCellDef="let contact">
<mat-header-cell *cdkHeaderCellDef>Name</mat-header-cell>
<mat-cell *cdkCellDef="let contact">
<p class="text-truncate font-weight-600">{{contact.name}} {{contact.lastName}}</p>
</md-cell>
</mat-cell>
</ng-container>
<!-- Position Column -->
<ng-container cdkColumnDef="position">
<md-header-cell *cdkHeaderCellDef fxHide fxShow.gt-sm>Position</md-header-cell>
<md-cell *cdkCellDef="let contact" fxHide fxShow.gt-sm>
<mat-header-cell *cdkHeaderCellDef fxHide fxShow.gt-sm>Position</mat-header-cell>
<mat-cell *cdkCellDef="let contact" fxHide fxShow.gt-sm>
<p class="position text-truncate">
{{contact.position}}
</p>
</md-cell>
</mat-cell>
</ng-container>
<!-- Office Column -->
<ng-container cdkColumnDef="office">
<md-header-cell *cdkHeaderCellDef fxHide fxShow.gt-md>Office</md-header-cell>
<md-cell *cdkCellDef="let contact" fxHide fxShow.gt-md>
<mat-header-cell *cdkHeaderCellDef fxHide fxShow.gt-md>Office</mat-header-cell>
<mat-cell *cdkCellDef="let contact" fxHide fxShow.gt-md>
<p class="office text-truncate">
{{contact.office}}
</p>
</md-cell>
</mat-cell>
</ng-container>
<!-- Email Column -->
<ng-container cdkColumnDef="email">
<md-header-cell *cdkHeaderCellDef fxHide fxShow.gt-sm>Email</md-header-cell>
<md-cell *cdkCellDef="let contact" fxHide fxShow.gt-sm>
<mat-header-cell *cdkHeaderCellDef fxHide fxShow.gt-sm>Email</mat-header-cell>
<mat-cell *cdkCellDef="let contact" fxHide fxShow.gt-sm>
<p class="email text-truncate">
{{contact.email}}
</p>
</md-cell>
</mat-cell>
</ng-container>
<!-- Phone Column -->
<ng-container cdkColumnDef="phone">
<md-header-cell *cdkHeaderCellDef fxHide fxShow.gt-md>Phone</md-header-cell>
<md-cell *cdkCellDef="let contact" fxHide fxShow.gt-md>
<mat-header-cell *cdkHeaderCellDef fxHide fxShow.gt-md>Phone</mat-header-cell>
<mat-cell *cdkCellDef="let contact" fxHide fxShow.gt-md>
<p class="phone text-truncate">
{{contact.phone}}
</p>
</md-cell>
</mat-cell>
</ng-container>
<md-header-row *cdkHeaderRowDef="widgets.widget11.table.columns"></md-header-row>
<md-row *cdkRowDef="let contact; columns: widgets.widget11.table.columns;">
</md-row>
</md-table>
<mat-header-row *cdkHeaderRowDef="widgets.widget11.table.columns"></mat-header-row>
<mat-row *cdkRowDef="let contact; columns: widgets.widget11.table.columns;">
</mat-row>
</mat-table>
</div>
<!-- / Front -->
@@ -681,8 +678,8 @@
</div>
<!-- / WIDGET GROUP -->
</md-tab>
</md-tab-group>
</mat-tab>
</mat-tab-group>
</div>
<!-- / CONTENT -->
@@ -691,7 +688,7 @@
<!-- / CENTER -->
<!-- SIDENAV -->
<md-sidenav class="sidenav mat-sidenav-opened" align="end" mode="side" opened="true" fuseMdSidenavHelper="dashboards-right-sidenav" md-is-locked-open="gt-md">
<mat-sidenav class="sidenav mat-sidenav-opened" align="end" mode="side" opened="true" fuseMatSidenavHelper="dashboards-right-sidenav" mat-is-locked-open="gt-md">
<div class="sidenav-content" fusePerfectScrollbar>
@@ -709,15 +706,15 @@
<div class="h3">{{dateNow | date: 'EEEE, h:m:ss'}}</div>
<div>
<button md-icon-button [mdMenuTriggerFor]="moreMenu" aria-label="more">
<md-icon>more_vert</md-icon>
<button mat-icon-button [matMenuTriggerFor]="moreMenu" aria-label="more">
<mat-icon>more_vert</mat-icon>
</button>
<md-menu #moreMenu="mdMenu">
<button md-menu-item aria-label="Flip widget">
<mat-menu #moreMenu="matMenu">
<button mat-menu-item aria-label="Flip widget">
Details
</button>
</md-menu>
</mat-menu>
</div>
</div>
@@ -735,7 +732,7 @@
</div>
</div>
<md-divider></md-divider>
<mat-divider></mat-divider>
</div>
<!-- / Front -->
@@ -751,28 +748,28 @@
<div class="pl-16 pr-8 py-16" fxLayout="row" fxLayoutAlign="space-between center">
<div class="h4" fxLayout="row" fxLayoutAlign="start center">
<md-icon class="mr-8">place</md-icon>
<mat-icon class="mr-8">place</mat-icon>
{{widgets.weatherWidget.locations[widgets.weatherWidget.currentLocation].name}}
</div>
<div>
<button md-icon-button [mdMenuTriggerFor]="moreMenu" aria-label="more">
<md-icon>more_vert</md-icon>
<button mat-icon-button [matMenuTriggerFor]="moreMenu" aria-label="more">
<mat-icon>more_vert</mat-icon>
</button>
<md-menu #moreMenu="mdMenu">
<button md-menu-item aria-label="Flip widget">
<mat-menu #moreMenu="matMenu">
<button mat-menu-item aria-label="Flip widget">
Details
</button>
</md-menu>
</mat-menu>
</div>
</div>
<div class="p-16 pb-32" fxLayout="column" fxLayoutAlign="center center">
<div fxLayout="row" fxLayoutAlign="center center">
<md-icon fontSet="meteocons" [fontIcon]="widgets.weatherWidget.locations[widgets.weatherWidget.currentLocation].icon"
class="icon s-40 mr-16"></md-icon>
<mat-icon fontSet="meteocons" [fontIcon]="widgets.weatherWidget.locations[widgets.weatherWidget.currentLocation].icon"
class="icon s-40 mr-16"></mat-icon>
<span class="mat-display-2 m-0 font-weight-300 secondary-text">
{{widgets.weatherWidget.locations[widgets.weatherWidget.currentLocation].temp[widgets.weatherWidget.tempUnit]}}
</span>
@@ -783,7 +780,7 @@
<div class="grey-300-bg p-16" fxLayout="row" fxLayoutAlign="space-between center">
<div fxLayout="row" fxLayoutAlign="start center">
<md-icon fontSet="meteocons" fontIcon="icon-windy" class="mr-8 s-16"></md-icon>
<mat-icon fontSet="meteocons" fontIcon="icon-windy" class="mr-8 s-16"></mat-icon>
<span>
{{widgets.weatherWidget.locations[widgets.weatherWidget.currentLocation].windSpeed[widgets.weatherWidget.speedUnit]}}
</span>
@@ -791,12 +788,12 @@
</div>
<div fxLayout="row" fxLayoutAlign="start center">
<md-icon fontSet="meteocons" fontIcon="icon-compass" class="mr-8 s-16"></md-icon>
<mat-icon fontSet="meteocons" fontIcon="icon-compass" class="mr-8 s-16"></mat-icon>
<span>{{widgets.weatherWidget.locations[widgets.weatherWidget.currentLocation].windDirection}}</span>
</div>
<div fxLayout="row" fxLayoutAlign="start center">
<md-icon fontSet="meteocons" fontIcon="icon-rainy" class="mr-8 s-16"></md-icon>
<mat-icon fontSet="meteocons" fontIcon="icon-rainy" class="mr-8 s-16"></mat-icon>
<span>{{widgets.weatherWidget.locations[widgets.weatherWidget.currentLocation].rainProbability}}</span>
</div>
</div>
@@ -806,7 +803,7 @@
*ngFor="let day of widgets.weatherWidget.locations[widgets.weatherWidget.currentLocation].next3Days">
<span class="h4">{{day.name}}</span>
<div fxLayout="row" fxLayoutAlign="start center">
<md-icon fontSet="meteocons" [fontIcon]="day.icon" class="mr-16"></md-icon>
<mat-icon fontSet="meteocons" [fontIcon]="day.icon" class="mr-16"></mat-icon>
<span class="h2">{{day.temp[widgets.weatherWidget.tempUnit]}}</span>
<span class="h2 font-weight-300 secondary-text text-super">&deg;</span>
<span class="h2 font-weight-300 secondary-text">{{widgets.weatherWidget.tempUnit}}</span>
@@ -814,7 +811,7 @@
</div>
</div>
<md-divider></md-divider>
<mat-divider></mat-divider>
</div>
<!-- / Front -->
@@ -826,9 +823,9 @@
<!-- / WIDGET GROUP -->
</div>
</md-sidenav>
</mat-sidenav>
<!-- / SIDENAV -->
</md-sidenav-container>
</mat-sidenav-container>
</div>

View File

@@ -1,6 +1,6 @@
#dashboard-project {
md-sidenav-container {
mat-sidenav-container {
.center {
@@ -23,7 +23,7 @@
border-radius: 0;
background: rgba(0, 0, 0, 0.12);
md-icon {
mat-icon {
color: #FFFFFF;
}
}
@@ -32,7 +32,7 @@
> .content {
flex: 1;
md-tab-group {
mat-tab-group {
height: 100%;
.mat-tab-body-wrapper {

View File

@@ -43,8 +43,8 @@ export class ProjectsDashboardService implements Resolve<any>
return new Promise((resolve, reject) => {
this.http.get('api/projects-dashboard-projects')
.subscribe((response: any) => {
this.projects = response.data;
resolve(response.data);
this.projects = response;
resolve(response);
}, reject);
});
}
@@ -54,8 +54,8 @@ export class ProjectsDashboardService implements Resolve<any>
return new Promise((resolve, reject) => {
this.http.get('api/projects-dashboard-widgets')
.subscribe((response: any) => {
this.widgets = response.data;
resolve(response.data);
this.widgets = response;
resolve(response);
}, reject);
});
}

View File

@@ -1,60 +1,60 @@
<md-table #table [dataSource]="dataSource" *fuseIfOnDom [@animateStagger]="{value:'50'}">
<mat-table #table [dataSource]="dataSource" *fuseIfOnDom [@animateStagger]="{value:'50'}">
<!-- Type Column -->
<ng-container cdkColumnDef="icon">
<md-header-cell *cdkHeaderCellDef fxFlex="64px"></md-header-cell>
<md-cell *cdkCellDef="let row" fxFlex="64px">
<md-icon class="type-icon" [class]="row.type"></md-icon>
</md-cell>
<mat-header-cell *cdkHeaderCellDef fxFlex="64px"></mat-header-cell>
<mat-cell *cdkCellDef="let row" fxFlex="64px">
<mat-icon class="type-icon" [class]="row.type"></mat-icon>
</mat-cell>
</ng-container>
<!-- Name Column -->
<ng-container cdkColumnDef="name">
<md-header-cell *cdkHeaderCellDef>Name</md-header-cell>
<md-cell *cdkCellDef="let row"> {{row.name}}</md-cell>
<mat-header-cell *cdkHeaderCellDef>Name</mat-header-cell>
<mat-cell *cdkCellDef="let row"> {{row.name}}</mat-cell>
</ng-container>
<!-- Type Column -->
<ng-container cdkColumnDef="type">
<md-header-cell *cdkHeaderCellDef fxHide fxShow.gt-md>Type</md-header-cell>
<md-cell *cdkCellDef="let row" fxHide fxShow.gt-md> {{row.type}}</md-cell>
<mat-header-cell *cdkHeaderCellDef fxHide fxShow.gt-md>Type</mat-header-cell>
<mat-cell *cdkCellDef="let row" fxHide fxShow.gt-md> {{row.type}}</mat-cell>
</ng-container>
<!-- Owner Column -->
<ng-container cdkColumnDef="owner">
<md-header-cell *cdkHeaderCellDef fxHide.xs>Owner</md-header-cell>
<md-cell *cdkCellDef="let row" fxHide.xs> {{row.owner}}</md-cell>
<mat-header-cell *cdkHeaderCellDef fxHide.xs>Owner</mat-header-cell>
<mat-cell *cdkCellDef="let row" fxHide.xs> {{row.owner}}</mat-cell>
</ng-container>
<!-- Size Column -->
<ng-container cdkColumnDef="size">
<md-header-cell *cdkHeaderCellDef fxHide.xs>Size</md-header-cell>
<md-cell *cdkCellDef="let row" fxHide.xs>{{row.size === '' ? '-': row.size}}</md-cell>
<mat-header-cell *cdkHeaderCellDef fxHide.xs>Size</mat-header-cell>
<mat-cell *cdkCellDef="let row" fxHide.xs>{{row.size === '' ? '-': row.size}}</mat-cell>
</ng-container>
<!-- Modified Column -->
<ng-container cdkColumnDef="modified">
<md-header-cell *cdkHeaderCellDef fxHide fxShow.gt-md>Modified</md-header-cell>
<md-cell *cdkCellDef="let row" fxHide fxShow.gt-md>{{row.modified}}</md-cell>
<mat-header-cell *cdkHeaderCellDef fxHide fxShow.gt-md>Modified</mat-header-cell>
<mat-cell *cdkCellDef="let row" fxHide fxShow.gt-md>{{row.modified}}</mat-cell>
</ng-container>
<!-- Detail Button Column -->
<ng-container cdkColumnDef="detail-button">
<md-header-cell *cdkHeaderCellDef fxFlex="48px" fxHide.gt-md></md-header-cell>
<md-cell *cdkCellDef="let row" fxFlex="48px" fxHide.gt-md>
<button md-icon-button class="sidenav-toggle"
fuseMdSidenavToggler="file-manager-right-sidenav">
<md-icon>info</md-icon>
<mat-header-cell *cdkHeaderCellDef fxFlex="48px" fxHide.gt-md></mat-header-cell>
<mat-cell *cdkCellDef="let row" fxFlex="48px" fxHide.gt-md>
<button mat-icon-button class="sidenav-toggle"
fuseMatSidenavToggler="file-manager-right-sidenav">
<mat-icon>info</mat-icon>
</button>
</md-cell>
</mat-cell>
</ng-container>
<md-header-row *cdkHeaderRowDef="displayedColumns"></md-header-row>
<md-row *cdkRowDef="let row; columns: displayedColumns;"
(click)="onSelect(row)"
[ngClass]="{'md-light-blue-50-bg':row == selected}"
md-ripple
[@animate]="{value:'*',params:{y:'100%'}}"
<mat-header-row *cdkHeaderRowDef="displayedColumns"></mat-header-row>
<mat-row *cdkRowDef="let row; columns: displayedColumns;"
(click)="onSelect(row)"
[ngClass]="{'mat-light-blue-50-bg':row == selected}"
matRipple
[@animate]="{value:'*',params:{y:'100%'}}"
>
</md-row>
</md-table>
</mat-row>
</mat-table>

View File

@@ -1,33 +1,33 @@
<div id="file-manager" class="page-layout simple right-sidenav" fusePerfectScrollbar>
<md-sidenav-container>
<mat-sidenav-container>
<!-- SIDENAV -->
<md-sidenav class="sidenav left-sidenav" align="start" opened="false" mode="over"
fuseMdSidenavHelper="file-manager-left-sidenav">
<mat-sidenav class="sidenav left-sidenav" align="start" opened="false" mode="over"
fuseMatSidenavHelper="file-manager-left-sidenav">
<fuse-file-manager-main-sidenav></fuse-file-manager-main-sidenav>
</md-sidenav>
</mat-sidenav>
<!-- / SIDENAV -->
<!-- CENTER -->
<div class="center" fxFlex>
<!-- HEADER -->
<div class="header md-accent-bg p-24" fxLayout="column" fxLayoutAlign="space-between start">
<div class="header mat-accent-bg p-24" fxLayout="column" fxLayoutAlign="space-between start">
<!-- TOOLBAR -->
<div class="toolbar w-100-p" fxFlex fxLayout="row" fxLayoutAlign="space-between start">
<div class="left-side" fxLayout="row">
<button md-icon-button class="sidenav-toggle"
fuseMdSidenavToggler="file-manager-left-sidenav">
<md-icon>menu</md-icon>
<button mat-icon-button class="sidenav-toggle"
fuseMatSidenavToggler="file-manager-left-sidenav">
<mat-icon>menu</mat-icon>
</button>
</div>
<div class="right-side" fxLayout="row">
<button md-button class="mat-icon-button" aria-label="Search" md-tooltip="Search">
<md-icon>search</md-icon>
<button mat-button class="mat-icon-button" aria-label="Search" matTooltip="Search">
<mat-icon>search</mat-icon>
</button>
</div>
</div>
@@ -38,7 +38,7 @@
*fuseIfOnDom [@animate]="{value:'*',params:{x:'50px'}}">
<div *ngFor="let path of pathArr; last as isLast" fxLayout="row" fxLayoutAlign="start center">
<span>{{path}}</span>
<md-icon *ngIf="!isLast" class="separator">chevron_right</md-icon>
<mat-icon *ngIf="!isLast" class="separator">chevron_right</mat-icon>
</div>
</div>
<!-- / BREADCRUMB -->
@@ -46,12 +46,12 @@
<!-- ADD FILE BUTTON -->
<div class="file-uploader">
<input hidden type="file" #fileInput/>
<button md-fab
<button mat-fab
class="add-file-button mat-warn"
(click)="fileInput.click()"
aria-label="Add file"
*fuseIfOnDom [@animate]="{value:'*', params:{delay:'300ms',scale:'0.2'}}">
<md-icon>add</md-icon>
<mat-icon>add</mat-icon>
</button>
</div>
<!-- / ADD FILE BUTTON -->
@@ -60,7 +60,7 @@
<!-- / HEADER -->
<!-- CONTENT -->
<div class="content md-white-bg" fusePerfectScrollbar>
<div class="content mat-white-bg" fusePerfectScrollbar>
<fuse-file-list></fuse-file-list>
</div>
<!-- / CONTENT -->
@@ -69,11 +69,11 @@
<!-- / CENTER -->
<!-- SIDENAV -->
<md-sidenav class="sidenav right-sidenav mat-sidenav-opened" align="end" opened="true" mode="side"
fuseMdSidenavHelper="file-manager-right-sidenav" md-is-locked-open="gt-md">
<mat-sidenav class="sidenav right-sidenav mat-sidenav-opened" align="end" opened="true" mode="side"
fuseMatSidenavHelper="file-manager-right-sidenav" mat-is-locked-open="gt-md">
<fuse-file-manager-details-sidenav></fuse-file-manager-details-sidenav>
</md-sidenav>
</mat-sidenav>
<!-- / SIDENAV -->
</md-sidenav-container>
</mat-sidenav-container>
</div>

View File

@@ -2,7 +2,7 @@
#file-manager {
md-sidenav-container {
mat-sidenav-container {
.sidenav {
width: 320px !important;

View File

@@ -41,9 +41,9 @@ export class FileManagerService implements Resolve<any>
return new Promise((resolve, reject) => {
this.http.get('api/file-manager')
.subscribe((response: any) => {
this.onFilesChanged.next(response.data);
this.onFileSelected.next(response.data[0]);
resolve(response.data);
this.onFilesChanged.next(response);
this.onFileSelected.next(response[0]);
resolve(response);
}, reject);
});
}

View File

@@ -1,18 +1,18 @@
<!-- SIDENAV HEADER -->
<div class="header md-accent-bg p-24" fxLayout="column" fxLayoutAlign="space-between">
<div class="header mat-accent-bg p-24" fxLayout="column" fxLayoutAlign="space-between">
<div class="toolbar" fxLayout="row" fxLayoutAlign="end center">
<button md-icon-button class="mat-icon-button" md-tooltip="Delete">
<md-icon>delete</md-icon>
<button mat-icon-button class="mat-icon-button" matTooltip="Delete">
<mat-icon>delete</mat-icon>
</button>
<button md-icon-button class="" aria-label="Download" md-tooltip="Download">
<md-icon>file_download</md-icon>
<button mat-icon-button class="" aria-label="Download" matTooltip="Download">
<mat-icon>file_download</mat-icon>
</button>
<button md-icon-button class="mat-icon-button" aria-label="More" md-tooltip="More">
<md-icon>more_vert</md-icon>
<button mat-icon-button class="mat-icon-button" aria-label="More" matTooltip="More">
<mat-icon>more_vert</mat-icon>
</button>
</div>
@@ -27,17 +27,17 @@
<!-- / SIDENAV HEADER -->
<!-- SIDENAV CONTENT -->
<div class="content p-24 md-white-bg" fusePerfectScrollbar>
<div class="content p-24 mat-white-bg" fusePerfectScrollbar>
<div class="file-details"
*fuseIfOnDom [@animate]="{value:'*',params:{delay:'200ms'}}">
<div class="preview file-icon" fxLayout="row" fxLayoutAlign="center center">
<md-icon class="type-icon s-48" [class]="selected.type"></md-icon>
<mat-icon class="type-icon s-48" [class]="selected.type"></mat-icon>
</div>
<div class="offline-switch">
<md-slide-toggle ([ngModel])="selected.offline" labelPosition="before">Available Offline</md-slide-toggle>
<mat-slide-toggle ([ngModel])="selected.offline" labelPosition="before">Available Offline</mat-slide-toggle>
</div>
<div class="title">Info</div>

View File

@@ -2,7 +2,7 @@
<div class="header p-24" fxLayout="column" fxLayoutAlign="space-between">
<div class="logo" fxLayout="row" fxLayoutAlign="start center">
<md-icon class="logo-icon mr-16">folder</md-icon>
<mat-icon class="logo-icon mr-16">folder</mat-icon>
<span class="logo-text h1">File Manager</span>
</div>
@@ -15,36 +15,36 @@
<div class="nav">
<div class="nav-item" aria-label="inbox">
<a class="nav-link" md-ripple>
<md-icon class="nav-link-icon">folder</md-icon>
<a class="nav-link" matRipple>
<mat-icon class="nav-link-icon">folder</mat-icon>
<span class="title">My Files</span>
</a>
</div>
<div class="nav-item" aria-label="starred">
<a class="nav-link" md-ripple>
<md-icon class="nav-link-icon">star</md-icon>
<a class="nav-link" matRipple>
<mat-icon class="nav-link-icon">star</mat-icon>
<div class="title">Starred</div>
</a>
</div>
<div class="nav-item" aria-label="starred">
<a class="nav-link" md-ripple>
<md-icon class="nav-link-icon">folder_shared</md-icon>
<a class="nav-link" matRipple>
<mat-icon class="nav-link-icon">folder_shared</mat-icon>
<div class="title">Sharred with me</div>
</a>
</div>
<div class="nav-item" aria-label="starred">
<a class="nav-link" md-ripple>
<md-icon class="nav-link-icon">access_time</md-icon>
<a class="nav-link" matRipple>
<mat-icon class="nav-link-icon">access_time</mat-icon>
<div class="title">Recent</div>
</a>
</div>
<div class="nav-item" aria-label="starred">
<a class="nav-link" md-ripple>
<md-icon class="nav-link-icon">not_interested</md-icon>
<a class="nav-link" matRipple>
<mat-icon class="nav-link-icon">not_interested</mat-icon>
<div class="title">Offline</div>
</a>
</div>

View File

@@ -1,62 +1,62 @@
<div class="dialog-content-wrapper">
<md-toolbar md-dialog-title class="mat-accent m-0">
<mat-toolbar matDialogTitle class="mat-accent m-0">
<div fxFlex fxLayout="row" fxLayoutAlign="space-between center">
<span class="title dialog-title">New Message</span>
<button md-button class="mat-icon-button"
<button mat-button class="mat-icon-button"
(click)="dialogRef.close()"
aria-label="Close dialog">
<md-icon>close</md-icon>
<mat-icon>close</mat-icon>
</button>
</div>
</md-toolbar>
</mat-toolbar>
<div md-dialog-content class="p-24 m-0" fusePerfectScrollbar>
<div mat-dialog-content class="p-24 m-0" fusePerfectScrollbar>
<form name="composeForm" [formGroup]="composeForm" class="compose-form" fxLayout="column" fxFlex>
<md-input-container>
<input mdInput name="from"
<mat-form-field>
<input matInput name="from"
placeholder="From"
formControlName="from"
type="email">
</md-input-container>
</mat-form-field>
<md-input-container>
<input mdInput name="to"
<mat-form-field>
<input matInput name="to"
placeholder="To"
formControlName="to"
type="email" required>
</md-input-container>
</mat-form-field>
<md-input-container>
<input mdInput
<mat-form-field>
<input matInput
name="cc"
placeholder="Cc"
formControlName="cc"
type="email">
</md-input-container>
</mat-form-field>
<md-input-container>
<input mdInput
<mat-form-field>
<input matInput
name="bcc"
placeholder="Bcc"
formControlName="bcc"
type="email">
</md-input-container>
</mat-form-field>
<md-input-container>
<input mdInput name="subject"
<mat-form-field>
<input matInput name="subject"
placeholder="Subject"
formControlName="subject">
</md-input-container>
</mat-form-field>
<md-input-container>
<textarea mdInput name="message"
<mat-form-field>
<textarea matInput name="message"
placeholder="Message"
formControlName="message"
rows="6">
</textarea>
</md-input-container>
</mat-form-field>
<div class="attachment-list">
@@ -66,8 +66,8 @@
<span class="size">(12 Kb)</span>
</div>
<button md-icon-button aria-label="Delete attachment">
<md-icon class="s-16">close</md-icon>
<button mat-icon-button aria-label="Delete attachment">
<mat-icon class="s-16">close</mat-icon>
</button>
</div>
@@ -77,17 +77,17 @@
<span class="size">(350 Kb)</span>
</div>
<button md-icon-button aria-label="Delete attachment">
<md-icon class="s-16">close</md-icon>
<button mat-icon-button aria-label="Delete attachment">
<mat-icon class="s-16">close</mat-icon>
</button>
</div>
</div>
</form>
</div>
<div md-dialog-actions class="m-0 p-16" fxLayout="row" fxLayoutAlign="space-between center">
<div mat-dialog-actions class="m-0 p-16" fxLayout="row" fxLayoutAlign="space-between center">
<div>
<button md-raised-button
<button mat-raised-button
(click)="dialogRef.close(['send',composeForm])"
class="save-button mat-accent"
[disabled]="composeForm.invalid"
@@ -95,17 +95,17 @@
SEND
</button>
<button md-icon-button md-tooltip="Attach a file">
<md-icon>attach_file</md-icon>
<button mat-icon-button matTooltip="Attach a file">
<mat-icon>attach_file</mat-icon>
</button>
</div>
<button md-button
<button mat-button
class="mat-icon-button"
(click)="dialogRef.close(['delete',composeForm])"
aria-label="Delete"
md-tooltip="Delete">
<md-icon>delete</md-icon>
matTooltip="Delete">
<mat-icon>delete</mat-icon>
</button>
</div>
</div>

View File

@@ -5,7 +5,7 @@
.compose-form {
.mat-input-container {
.mat-form-field {
width: 100%;
}

View File

@@ -1,5 +1,5 @@
import { Component, Inject, OnInit, ViewEncapsulation } from '@angular/core';
import { MD_DIALOG_DATA, MdDialogRef } from '@angular/material';
import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material';
import { FormControl, FormGroup } from '@angular/forms';
@Component({
@@ -13,8 +13,8 @@ export class FuseMailComposeDialogComponent implements OnInit
composeForm: FormGroup;
constructor(
public dialogRef: MdDialogRef<FuseMailComposeDialogComponent>,
@Inject(MD_DIALOG_DATA) private data: any
public dialogRef: MatDialogRef<FuseMailComposeDialogComponent>,
@Inject(MAT_DIALOG_DATA) private data: any
)
{
this.composeForm = this.createComposeForm();

View File

@@ -1,5 +1,5 @@
<div *ngIf="!mail" fxLayout="column" fxLayoutAlign="center center" fxFlex>
<md-icon class="s-128 mb-16 select-message-icon" *fuseIfOnDom [@animate]="{value:'*',params:{delay:'300ms',scale:'0.2'}}">email</md-icon>
<mat-icon class="s-128 mb-16 select-message-icon" *fuseIfOnDom [@animate]="{value:'*',params:{delay:'300ms',scale:'0.2'}}">email</mat-icon>
<span class="select-message-text hint-text" *fuseIfOnDom [@animate]="{value:'*',params:{delay:'400ms'}}">Select a message to read</span>
</div>
@@ -21,14 +21,14 @@
</div>
<div class="actions" fxLayout="row" fxLayoutAlign="start center">
<button md-button class="mat-icon-button" (click)="toggleStar($event)" aria-label="Toggle star">
<md-icon *ngIf="mail.starred">star</md-icon>
<md-icon *ngIf="!mail.starred">star_outline</md-icon>
<button mat-button class="mat-icon-button" (click)="toggleStar($event)" aria-label="Toggle star">
<mat-icon *ngIf="mail.starred">star</mat-icon>
<mat-icon *ngIf="!mail.starred">star_outline</mat-icon>
</button>
<button md-button class="mat-icon-button" (click)="toggleImportant($event)" aria-label="Toggle important">
<md-icon *ngIf="mail.important">label</md-icon>
<md-icon *ngIf="!mail.important">label_outline</md-icon>
<button mat-button class="mat-icon-button" (click)="toggleImportant($event)" aria-label="Toggle important">
<mat-icon *ngIf="mail.important">label</mat-icon>
<mat-icon *ngIf="!mail.important">label_outline</mat-icon>
</button>
</div>
</div>
@@ -84,27 +84,27 @@
</div>
</div>
<button md-button [mdMenuTriggerFor]="moreMenu" aria-label="More" class="mat-icon-button"
<button mat-button [matMenuTriggerFor]="moreMenu" aria-label="More" class="mat-icon-button"
(click)="$event.stopPropagation()">
<md-icon>more_vert</md-icon>
<mat-icon>more_vert</mat-icon>
</button>
<md-menu #moreMenu="mdMenu">
<button md-menu-item aria-label="Reply">
<md-icon>reply</md-icon>
<mat-menu #moreMenu="matMenu">
<button mat-menu-item aria-label="Reply">
<mat-icon>reply</mat-icon>
<span>Reply</span>
</button>
<button md-menu-item aria-label="Forward">
<md-icon>forward</md-icon>
<button mat-menu-item aria-label="Forward">
<mat-icon>forward</mat-icon>
<span>Forward</span>
</button>
<button md-menu-item aria-label="Print">
<md-icon>print</md-icon>
<button mat-menu-item aria-label="Print">
<mat-icon>print</mat-icon>
<span>Print</span>
</button>
</md-menu>
</mat-menu>
</div>
<div [innerHTML]="mail.message"></div>

View File

@@ -1,7 +1,7 @@
<div fxLayout="row" fxLayoutAlign="start center">
<md-checkbox [(ngModel)]="selected" (ngModelChange)="onSelectedChange()"
(click)="$event.stopPropagation();"></md-checkbox>
<mat-checkbox [(ngModel)]="selected" (ngModelChange)="onSelectedChange()"
(click)="$event.stopPropagation();"></mat-checkbox>
<div class="info" fxFlex FlexLayout="column">
@@ -11,7 +11,7 @@
<img class="avatar" *ngIf="mail.from?.avatar" alt="{{mail.from?.name}}" src="{{mail.from?.avatar}}"/>
<div class="avatar" *ngIf="!mail.from?.avatar">{{mail.from?.name[0]}}</div>
<span class="text-truncate" *ngIf="mail?.from">{{mail.from?.name}}</span>
<md-icon *ngIf="mail.hasAttachments">attachment</md-icon>
<mat-icon *ngIf="mail.hasAttachments">attachment</mat-icon>
</div>
<div fxLayout="row" fxLayoutAlign="start center">
@@ -20,15 +20,15 @@
<!--<div class="actions" fxLayout="row" fxLayoutAlign="start center" fxHide fxShow.gt-sm>
<button md-button class="mat-icon-button" (click)="toggleStar($event)" aria-label="Toggle star">
<md-icon *ngIf="mail.starred">star</md-icon>
<md-icon *ngIf="!mail.starred">star_outline</md-icon>
<button mat-button class="mat-icon-button" (click)="toggleStar($event)" aria-label="Toggle star">
<mat-icon *ngIf="mail.starred">star</mat-icon>
<mat-icon *ngIf="!mail.starred">star_outline</mat-icon>
</button>
<button md-button class="mat-icon-button" (click)="toggleImportant($event)"
<button mat-button class="mat-icon-button" (click)="toggleImportant($event)"
aria-label="Toggle important">
<md-icon *ngIf="mail.important">label</md-icon>
<md-icon *ngIf="!mail.important">label_outline</md-icon>
<mat-icon *ngIf="mail.important">label</mat-icon>
<mat-icon *ngIf="!mail.important">label_outline</mat-icon>
</button>
</div>-->

View File

@@ -1,9 +1,9 @@
<div *ngIf="mails.length === 0" fxLayout="column" fxLayoutAlign="center center" fxFlex>
<div *ngIf="mails.length === 0" fxLayout="column" fxLayoutAlign="center center" fxFlexFill>
<span class="no-messages-text hint-text">There are no messages!</span>
</div>
<div class="mail-list" *fuseIfOnDom [@animateStagger]="{value:'50'}">
<fuse-mail-list-item md-ripple *ngFor="let mail of mails" [mail]="mail" (click)="readMail(mail.id)"
<fuse-mail-list-item matRipple *ngFor="let mail of mails" [mail]="mail" (click)="readMail(mail.id)"
[ngClass]="{'current-mail':mail?.id == currentMail?.id}"
[@animate]="{value:'*',params:{y:'100%'}}">
</fuse-mail-list-item>

View File

@@ -1,16 +1,16 @@
<div id="mail" class="page-layout carded left-sidenav" fusePerfectScrollbar>
<!-- TOP BACKGROUND -->
<div class="top-bg md-accent-bg"></div>
<div class="top-bg mat-accent-bg"></div>
<!-- / TOP BACKGROUND -->
<md-sidenav-container>
<mat-sidenav-container>
<!-- SIDENAV -->
<md-sidenav class="sidenav mat-sidenav-opened" align="start" opened="true" mode="side"
fuseMdSidenavHelper="carded-left-sidenav" md-is-locked-open="gt-md">
<mat-sidenav class="sidenav mat-sidenav-opened" align="start" mode="side" opened="true"
fuseMatSidenavHelper="carded-left-sidenav" mat-is-locked-open="gt-md">
<fuse-mail-main-sidenav></fuse-mail-main-sidenav>
</md-sidenav>
</mat-sidenav>
<!-- / SIDENAV -->
<!-- CENTER -->
@@ -21,14 +21,14 @@
<div class="search-wrapper" fxFlex fxLayout="row" fxLayoutAlign="start center">
<button md-button class="mat-icon-button sidenav-toggle"
fuseMdSidenavToggler="carded-left-sidenav"
<button mat-button class="mat-icon-button sidenav-toggle"
fuseMatSidenavToggler="carded-left-sidenav"
fxHide.gt-md aria-label="Toggle Sidenav">
<md-icon>menu</md-icon>
<mat-icon>menu</mat-icon>
</button>
<div class="search md-white-bg" flex fxLayout="row" fxLayoutAlign="start center">
<md-icon>search</md-icon>
<div class="search mat-white-bg" flex fxLayout="row" fxLayoutAlign="start center">
<mat-icon>search</mat-icon>
<input [formControl]="searchInput" placeholder="Search for an e-mail or contact" fxFlex>
</div>
</div>
@@ -37,57 +37,57 @@
<!-- / CONTENT HEADER -->
<!-- CONTENT CARD -->
<div class="content-card md-white-bg" [ngClass]="{'current-mail-selected':currentMail}">
<div class="content-card mat-white-bg" [ngClass]="{'current-mail-selected':currentMail}">
<!-- CONTENT TOOLBAR -->
<div class="toolbar px-24 py-8">
<div class="mail-selection" fxFlex="row" fxLayoutAlign="start center">
<md-checkbox (click)="toggleSelectAll()" [checked]="hasSelectedMails"
[indeterminate]="isIndeterminate"></md-checkbox>
<mat-checkbox (click)="toggleSelectAll()" [checked]="hasSelectedMails"
[indeterminate]="isIndeterminate"></mat-checkbox>
<button md-icon-button [mdMenuTriggerFor]="selectMenu">
<md-icon>arrow_drop_down</md-icon>
<button mat-icon-button [matMenuTriggerFor]="selectMenu">
<mat-icon>arrow_drop_down</mat-icon>
</button>
<md-menu #selectMenu="mdMenu">
<button md-menu-item (click)="selectMails()">All</button>
<button md-menu-item (click)="deselectMails()">None</button>
<button md-menu-item (click)="selectMails('read', true)">Read</button>
<button md-menu-item (click)="selectMails('read', false)">Unread</button>
<button md-menu-item (click)="selectMails('starred', true)">Starred</button>
<button md-menu-item (click)="selectMails('starred', false)">Unstarred</button>
<button md-menu-item (click)="selectMails('important', true)">Important</button>
<button md-menu-item (click)="selectMails('important', false)">Unimportant</button>
</md-menu>
<mat-menu #selectMenu="matMenu">
<button mat-menu-item (click)="selectMails()">All</button>
<button mat-menu-item (click)="deselectMails()">None</button>
<button mat-menu-item (click)="selectMails('read', true)">Read</button>
<button mat-menu-item (click)="selectMails('read', false)">Unread</button>
<button mat-menu-item (click)="selectMails('starred', true)">Starred</button>
<button mat-menu-item (click)="selectMails('starred', false)">Unstarred</button>
<button mat-menu-item (click)="selectMails('important', true)">Important</button>
<button mat-menu-item (click)="selectMails('important', false)">Unimportant</button>
</mat-menu>
<div class="toolbar-separator" *ngIf="hasSelectedMails"></div>
<button md-icon-button (click)="setFolderOnSelectedMails(4)" *ngIf="hasSelectedMails">
<md-icon>delete</md-icon>
<button mat-icon-button (click)="setFolderOnSelectedMails(4)" *ngIf="hasSelectedMails">
<mat-icon>delete</mat-icon>
</button>
<button md-icon-button [mdMenuTriggerFor]="folderMenu" *ngIf="hasSelectedMails">
<md-icon>folder</md-icon>
<button mat-icon-button [matMenuTriggerFor]="folderMenu" *ngIf="hasSelectedMails">
<mat-icon>folder</mat-icon>
</button>
<md-menu #folderMenu="mdMenu">
<button md-menu-item *ngFor="let folder of folders"
<mat-menu #folderMenu="matMenu">
<button mat-menu-item *ngFor="let folder of folders"
(click)="setFolderOnSelectedMails(folder.id)">{{folder.title}}
</button>
</md-menu>
</mat-menu>
<button md-icon-button [mdMenuTriggerFor]="labelMenu" *ngIf="hasSelectedMails">
<md-icon>label</md-icon>
<button mat-icon-button [matMenuTriggerFor]="labelMenu" *ngIf="hasSelectedMails">
<mat-icon>label</mat-icon>
</button>
<md-menu #labelMenu="mdMenu">
<button md-menu-item *ngFor="let label of labels"
<mat-menu #labelMenu="matMenu">
<button mat-menu-item *ngFor="let label of labels"
(click)="toggleLabelOnSelectedMails(label.id)">{{label.title}}
</button>
</md-menu>
</mat-menu>
</div>
<div *ngIf="currentMail" fxHide.gt-lg>
<button md-icon-button (click)="deSelectCurrentMail()">
<md-icon>arrow_back</md-icon>
<button mat-icon-button (click)="deSelectCurrentMail()">
<mat-icon>arrow_back</mat-icon>
</button>
</div>
</div>
@@ -109,6 +109,6 @@
</div>
<!-- / CENTER -->
</md-sidenav-container>
</mat-sidenav-container>
</div>

View File

@@ -89,7 +89,7 @@ export class MailService implements Resolve<any>
return new Promise((resolve, reject) => {
this.http.get('api/mail-folders')
.subscribe((response: any) => {
this.folders = response.data;
this.folders = response;
this.onFoldersChanged.next(this.folders);
resolve(this.folders);
}, reject);
@@ -105,7 +105,7 @@ export class MailService implements Resolve<any>
return new Promise((resolve, reject) => {
this.http.get('api/mail-filters')
.subscribe((response: any) => {
this.filters = response.data;
this.filters = response;
this.onFiltersChanged.next(this.filters);
resolve(this.filters);
}, reject);
@@ -121,7 +121,7 @@ export class MailService implements Resolve<any>
return new Promise((resolve, reject) => {
this.http.get('api/mail-labels')
.subscribe((response: any) => {
this.labels = response.data;
this.labels = response;
this.onLabelsChanged.next(this.labels);
resolve(this.labels);
}, reject);
@@ -159,12 +159,12 @@ export class MailService implements Resolve<any>
this.http.get('api/mail-folders?handle=' + handle)
.subscribe((folders: any) => {
const folderId = folders.data[0].id;
const folderId = folders[0].id;
this.http.get('api/mail-mails?folder=' + folderId)
.subscribe((mails: any) => {
this.mails = mails.data.map(mail => {
this.mails = mails.map(mail => {
return new Mail(mail);
});
@@ -191,7 +191,7 @@ export class MailService implements Resolve<any>
this.http.get('api/mail-mails?' + handle + '=true')
.subscribe((mails: any) => {
this.mails = mails.data.map(mail => {
this.mails = mails.map(mail => {
return new Mail(mail);
});
@@ -216,12 +216,12 @@ export class MailService implements Resolve<any>
this.http.get('api/mail-labels?handle=' + handle)
.subscribe((labels: any) => {
const labelId = labels.data[0].id;
const labelId = labels[0].id;
this.http.get('api/mail-mails?labels=' + labelId)
.subscribe((mails: any) => {
this.mails = mails.data.map(mail => {
this.mails = mails.map(mail => {
return new Mail(mail);
});

View File

@@ -1,20 +1,22 @@
<!-- SIDENAV HEADER -->
<div fxLayout="column" fxLayoutAlign="space-between start"
class="header p-24 md-accent-bg" class.gt-md="header p-24 white-fg">
class="header p-24 pb-4 mat-accent-bg" class.gt-md="header p-24 pb-4 white-fg">
<div class="logo" fxFlex fxLayout="row" fxLayoutAlign="start center">
<md-icon class="logo-icon s-32" *fuseIfOnDom [@animate]="{value:'*',params:{delay:'50ms',scale:'0.2'}}">mail</md-icon>
<mat-icon class="logo-icon s-32" *fuseIfOnDom [@animate]="{value:'*',params:{delay:'50ms',scale:'0.2'}}">mail</mat-icon>
<span class="logo-text" *fuseIfOnDom [@animate]="{value:'*',params:{delay:'100ms',x:'-25px'}}">Mailbox</span>
</div>
<div class="account" fxLayout="column" *fuseIfOnDom [@animate]="{value:'*',params:{delay:'300ms'}}">
<div class="title">John Doe</div>
<md-select class="account-selection" placeholder="Mail Selection"
floatPlaceholder="never"
[ngModel]="selectedAccount">
<md-option *ngFor="let account of (accounts | keys)" [value]="account.key">
{{account.value}}
</md-option>
</md-select>
<mat-form-field floatPlaceholder="never">
<mat-select class="account-selection" placeholder="Mail Selection"
[ngModel]="selectedAccount">
<mat-option *ngFor="let account of (accounts | keys)" [value]="account.key">
{{account.value}}
</mat-option>
</mat-select>
</mat-form-field>
</div>
</div>
@@ -24,7 +26,7 @@
<div class="content" fusePerfectScrollbar *fuseIfOnDom [@animate]="{value:'*',params:{y:'50px'}}">
<div class="p-24">
<button md-raised-button fxFlex
<button mat-raised-button fxFlex
class="mat-accent compose-dialog-button"
(click)="composeDialog()"
aria-label="Compose">
@@ -37,8 +39,8 @@
<div class="nav-subheader">FOLDERS</div>
<div class="nav-item" *ngFor="let folder of folders">
<a class="nav-link" md-ripple [routerLink]="'/apps/mail/' + folder.handle" routerLinkActive="active">
<md-icon class="nav-link-icon" *ngIf="folder.icon">{{folder.icon}}</md-icon>
<a class="nav-link" matRipple [routerLink]="'/apps/mail/' + folder.handle" routerLinkActive="active">
<mat-icon class="nav-link-icon" *ngIf="folder.icon">{{folder.icon}}</mat-icon>
<span>{{folder.title}}</span>
</a>
</div>
@@ -46,8 +48,8 @@
<div class="nav-subheader">FILTERS</div>
<div class="nav-item" *ngFor="let filter of filters">
<a class="nav-link" md-ripple [routerLink]="'/apps/mail/filter/' + filter.handle" routerLinkActive="active">
<md-icon class="nav-link-icon" *ngIf="filter.icon">{{filter.icon}}</md-icon>
<a class="nav-link" matRipple [routerLink]="'/apps/mail/filter/' + filter.handle" routerLinkActive="active">
<mat-icon class="nav-link-icon" *ngIf="filter.icon">{{filter.icon}}</mat-icon>
<span>{{filter.title}}</span>
</a>
</div>
@@ -55,8 +57,8 @@
<div class="nav-subheader">LABELS</div>
<div class="nav-item" *ngFor="let label of labels">
<a class="nav-link" md-ripple [routerLink]="'/apps/mail/label/' + label.handle" routerLinkActive="active">
<md-icon class="nav-link-icon" [ngStyle]="{'color':label.color}">label</md-icon>
<a class="nav-link" matRipple [routerLink]="'/apps/mail/label/' + label.handle" routerLinkActive="active">
<mat-icon class="nav-link-icon" [ngStyle]="{'color':label.color}">label</mat-icon>
<span>{{label.title}}</span>
</a>
</div>

View File

@@ -2,7 +2,7 @@ import { Component, OnDestroy, OnInit } from '@angular/core';
import { MailService } from '../../mail.service';
import { Subscription } from 'rxjs/Subscription';
import { FuseMailComposeDialogComponent } from '../../dialogs/compose/compose.component';
import { MdDialog } from '@angular/material';
import { MatDialog } from '@angular/material';
import { FormGroup } from '@angular/forms';
import { fuseAnimations } from '../../../../../../core/animations';
@@ -27,7 +27,7 @@ export class FuseMailMainSidenavComponent implements OnInit, OnDestroy
constructor(
private mailService: MailService,
public dialog: MdDialog
public dialog: MatDialog
)
{
// Data

View File

@@ -6,17 +6,17 @@ const sampleLabels = [
{
'id' : '56027e4119ad3a5dc28b36cd',
'name' : 'Design',
'color': 'md-red-500-bg'
'color': 'mat-red-500-bg'
},
{
'id' : '5640635e19ad3a5dc21416b2',
'name' : 'App',
'color': 'md-blue-500-bg'
'color': 'mat-blue-500-bg'
},
{
'id' : '6540635g19ad3s5dc31412b2',
'name' : 'Feature',
'color': 'md-green-400-bg'
'color': 'mat-green-400-bg'
}
];

View File

@@ -1,8 +1,8 @@
<div class="list new-list mat-elevation-z1">
<button *ngIf="!formActive" md-button class="new-list-form-button" (click)="openForm()">
<button *ngIf="!formActive" mat-button class="new-list-form-button" (click)="openForm()">
<div fxLayout="row" fxLayoutAlign="start center">
<md-icon class="md-red-bg">add</md-icon>
<mat-icon class="mat-red-bg">add</mat-icon>
<span>Add a list</span>
</div>
</button>
@@ -12,11 +12,11 @@
<input formControlName="name" #nameInput fxFlex placeholder="Write a list Name">
<button md-icon-button fxFlex="0 1 auto">
<md-icon>check</md-icon>
<button mat-icon-button fxFlex="0 1 auto">
<mat-icon>check</mat-icon>
</button>
<button md-icon-button fxFlex="0 1 auto" (click)="closeForm()">
<md-icon>close</md-icon>
<button mat-icon-button fxFlex="0 1 auto" (click)="closeForm()">
<mat-icon>close</mat-icon>
</button>
</form>
</div>

View File

@@ -11,7 +11,7 @@
margin: 0;
width: 100%;
md-icon {
mat-icon {
border-radius: 50%;
height: 40px;
width: 40px;

View File

@@ -1,4 +1,4 @@
import { Component, EventEmitter, OnInit, Output, ViewChild} from '@angular/core';
import { Component, EventEmitter, OnInit, Output, ViewChild } from '@angular/core';
import { FormBuilder, FormGroup } from '@angular/forms';
@Component({

View File

@@ -1,31 +1,31 @@
<md-sidenav-container>
<mat-sidenav-container>
<div id="board">
<!-- HEADER -->
<div class="header md-accent-bg p-16 p-md-24" [class]="'md-'+board.settings.color+'-bg'" fxLayout="column">
<div class="header mat-accent-bg p-16 p-mat-24" [class]="'mat-'+board.settings.color+'-bg'" fxLayout="column">
<div class="header-content" fxLayout="row" fxLayoutAlign="space-between" fxFlex="1 0 auto" fxLayoutWrap>
<!-- BOARD SELECTION BUTTON -->
<div fxLayout="row" fxLayoutAlign="center center" fxFlexOrder="2" fxFlexOrder.gt-xs="1">
<button md-raised-button class="mat-accent header-boards-button"
[class]="'md-'+board.settings.color+'-700-bg'"
<button mat-raised-button class="mat-accent header-boards-button"
[class]="'mat-'+board.settings.color+'-700-bg'"
routerLink="/apps/scrumboard/boards"
aria-label="boards button">
<md-icon>assessment</md-icon>
<mat-icon>assessment</mat-icon>
<span>BOARDS</span>
</button>
</div>
<!-- / BOARD SELECTION BUTTON -->
<!-- BOARD NAME -->
<div class="header-board-name mb-8 mb-md-0"
<div class="header-board-name mb-8 mb-mat-0"
fxLayout="row" fxLayoutAlign="center center"
fxLayout.gt-xs="row" fxLayoutAlign.gt-xs="center center"
fxFlex="1 0 100%" fxFlex.gt-xs="1 0 auto"
fxFlexOrder="1" fxFlexOrder.gt-xs="2">
<md-icon *ngIf="board.settings.subscribed" class="board-subscribe s-16">remove_red_eye</md-icon>
<mat-icon *ngIf="board.settings.subscribed" class="board-subscribe s-16">remove_red_eye</mat-icon>
<fuse-scrumboard-edit-board-name
[board]="board"
(onNameChanged)="onBoardNameChanged($event)">
@@ -37,9 +37,9 @@
<div class="toolbar" fxLayout="row" fxLayoutAlign="space-between center" fxFlexOrder="3">
<!-- BOARD SETTINGS BUTTON -->
<button md-icon-button (click)="settingsSidenav.toggle()"
aria-label="Settings" md-tooltip="Settings">
<md-icon>settings</md-icon>
<button mat-icon-button (click)="settingsSidenav.toggle()"
aria-label="Settings" matTooltip="Settings">
<mat-icon>settings</mat-icon>
</button>
<!-- / BOARD SETTINGS BUTTON -->
</div>
@@ -50,10 +50,10 @@
</div>
<!-- / HEADER -->
<div fxFlex class="board-content-wrapper p-16 p-md-24" [class]="board.settings.color+'-100-bg'">
<div fxFlex class="board-content-wrapper p-16 p-mat-24" [class]="board.settings.color+'-100-bg'">
<!-- BOARD -->
<div class="board-content ngx-dnd-container p-16 p-md-24" fxLayout="row"
<div class="board-content ngx-dnd-container p-16 p-mat-24" fxLayout="row"
ngxDroppable="list" [model]="board.lists" (out)="onDrop($event)"
*fuseIfOnDom [@animateStagger]="{value:'50'}">
@@ -80,8 +80,8 @@
<!-- primary content -->
</div>
<md-sidenav #settingsSidenav align="end">
<mat-sidenav #settingsSidenav align="end">
<fuse-scrumboard-board-settings></fuse-scrumboard-board-settings>
</md-sidenav>
</mat-sidenav>
</md-sidenav-container>
</mat-sidenav-container>

View File

@@ -2,19 +2,19 @@
:host {
md-sidenav-container {
mat-sidenav-container {
width: 100%;
height: 100%;
md-sidenav {
mat-sidenav {
width: 320px !important;
min-width: 320px !important;
max-width: 320px !important;
}
#board {
flex-direction: column;
display: flex;
flex-direction: column !important;
height: 100%;
> .header {
@@ -38,7 +38,7 @@
.editable-buttons {
md-icon {
mat-icon {
color: #FFFFFF !important;
}
}
@@ -46,7 +46,7 @@
.right-side {
> .md-button:last-child {
> .mat-button:last-child {
margin-right: 0;
}
}

View File

@@ -10,7 +10,7 @@ import { fuseAnimations } from '../../../../../core/animations';
selector : 'fuse-scrumboard-board',
templateUrl: './board.component.html',
styleUrls : ['./board.component.scss'],
animations : fuseAnimations
animations : fuseAnimations
})
export class FuseScrumboardBoardComponent implements OnInit, OnDestroy
{

View File

@@ -1,5 +1,5 @@
<div class="dialog-content-wrapper">
<md-toolbar *ngIf="card" md-dialog-title class="md-accent-bg m-0">
<mat-toolbar *ngIf="card" matDialogTitle class="mat-accent-bg m-0">
<div fxFlex fxLayout="row" fxLayoutAlign="space-between center">
@@ -8,123 +8,128 @@
<!-- DUE DATE -->
<div class="due-date" fxFlex="0 1 auto">
<button *ngIf="card.due" md-icon-button class="" [mdMenuTriggerFor]="dueDateMenu">
<md-icon>today</md-icon>
<button *ngIf="card.due" mat-icon-button class="" [matMenuTriggerFor]="dueDateMenu">
<mat-icon>today</mat-icon>
</button>
<md-menu #dueDateMenu="mdMenu" [overlapTrigger]="false">
<button md-menu-item (click)="removeDueDate()">Remove Due Date</button>
</md-menu>
<mat-menu #dueDateMenu="matMenu" [overlapTrigger]="false">
<button mat-menu-item (click)="removeDueDate()">Remove Due Date</button>
</mat-menu>
<mat-form-field *ngIf="!card.due">
<input matInput [matDatepicker]="menuPicker" [(ngModel)]="card.due">
<mat-datepicker-toggle matSuffix [for]="menuPicker"></mat-datepicker-toggle>
<mat-datepicker #menuPicker></mat-datepicker>
</mat-form-field>
<md2-datepicker *ngIf="!card.due" [(ngModel)]="card.due" openOnFocus="true" placeholder="Set Date/Time" type="datetime"></md2-datepicker>
</div>
<!-- / DUE DATE -->
<!-- LABELS -->
<div class="labels" fxFlex="0 1 auto">
<button md-icon-button [mdMenuTriggerFor]="labelsMenu">
<md-icon>label</md-icon>
<button mat-icon-button [matMenuTriggerFor]="labelsMenu">
<mat-icon>label</mat-icon>
</button>
<md-menu #labelsMenu="mdMenu" [overlapTrigger]="false" class="scrumboard-labels-menu">
<mat-menu #labelsMenu="matMenu" [overlapTrigger]="false" class="scrumboard-labels-menu">
<fuse-scrumboard-label-selector [card]="card" (onCardLabelsChange)="updateCard()"></fuse-scrumboard-label-selector>
</md-menu>
</mat-menu>
</div>
<!-- / LABELS -->
<!-- MEMBERS -->
<div class="members" fxFlex="0 1 auto">
<button md-icon-button class="" [mdMenuTriggerFor]="membersMenu">
<md-icon>account_circle</md-icon>
<button mat-icon-button class="" [matMenuTriggerFor]="membersMenu">
<mat-icon>account_circle</mat-icon>
</button>
<md-menu #membersMenu="mdMenu" [overlapTrigger]="false">
<mat-menu #membersMenu="matMenu" [overlapTrigger]="false">
<div fxFlex fxLayout="column" class="scrumboard-members-menu" (click)="$event.stopPropagation()">
<md-checkbox class="member px-12" [checked]="card.idMembers.indexOf(member.id) > -1"
*ngFor="let member of board.members"
(change)="toggleInArray(member.id, card.idMembers);updateCard()">
<mat-checkbox class="member px-12" [checked]="card.idMembers.indexOf(member.id) > -1"
*ngFor="let member of board.members"
(change)="toggleInArray(member.id, card.idMembers);updateCard()">
<div fxLayout="row" fxLayoutAlign="start center">
<img [alt]="member.name" [src]=" member.avatar" class="avatar"/>
<p class="member-name">{{ member.name }}</p>
</div>
</md-checkbox>
</mat-checkbox>
</div>
</md-menu>
</mat-menu>
</div>
<!-- / MEMBERS -->
<!-- ATTACHMENT -->
<button md-icon-button aria-label="Attachment">
<md-icon>attachment</md-icon>
<button mat-icon-button aria-label="Attachment">
<mat-icon>attachment</mat-icon>
</button>
<!-- / ATTACHMENT -->
<!-- CHECKLIST -->
<div class="due-date " fxFlex="0 1 auto">
<button md-icon-button class="" [mdMenuTriggerFor]="checklistMenu" #checklistMenuTrigger="mdMenuTrigger" (onMenuOpen)="onChecklistMenuOpen()">
<md-icon>check_box</md-icon>
<button mat-icon-button class="" [matMenuTriggerFor]="checklistMenu" #checklistMenuTrigger="matMenuTrigger" (onMenuOpen)="onChecklistMenuOpen()">
<mat-icon>check_box</mat-icon>
</button>
<md-menu #checklistMenu="mdMenu" [overlapTrigger]="false">
<mat-menu #checklistMenu="matMenu" [overlapTrigger]="false">
<form class="px-16 py-8" #newChecklistForm="ngForm" (submit)="addChecklist(newChecklistForm)" (click)="$event.stopPropagation()"
fxLayout="column" fxLayoutAlign="start end">
<md-input-container floatPlaceholder="never" (click)="$event.stopPropagation()" fxFlex>
<input #newCheckListTitleField mdInput ngModel #checklistTitle="ngModel" name="checklistTitle" placeholder="Checklist title" required>
</md-input-container>
<mat-form-field floatPlaceholder="never" (click)="$event.stopPropagation()" fxFlex>
<input #newCheckListTitleField matInput ngModel #checklistTitle="ngModel" name="checklistTitle" placeholder="Checklist title" required>
</mat-form-field>
<button md-raised-button class="mat-accent" aria-label="Add Checklist" [disabled]="!newChecklistForm.valid">Add Checklist</button>
<button mat-raised-button class="mat-accent" aria-label="Add Checklist" [disabled]="!newChecklistForm.valid">Add Checklist</button>
</form>
</md-menu>
</mat-menu>
</div>
<!-- / CHECKLIST -->
<!-- SUBSCRIBE -->
<div class="subscribe " fxFlex="0 1 auto">
<button md-icon-button class="" [mdMenuTriggerFor]="subscribeMenu">
<md-icon>remove_red_eye</md-icon>
<button mat-icon-button class="" [matMenuTriggerFor]="subscribeMenu">
<mat-icon>remove_red_eye</mat-icon>
</button>
<md-menu #subscribeMenu="mdMenu" [overlapTrigger]="false">
<button *ngIf="card.subscribed" md-menu-item (click)="toggleSubscribe()">
<mat-menu #subscribeMenu="matMenu" [overlapTrigger]="false">
<button *ngIf="card.subscribed" mat-menu-item (click)="toggleSubscribe()">
Unsubscribe
</button>
<button *ngIf="!card.subscribed" md-menu-item (click)="toggleSubscribe()">
<button *ngIf="!card.subscribed" mat-menu-item (click)="toggleSubscribe()">
Subscribe
</button>
</md-menu>
</mat-menu>
</div>
<!-- / SUBSCRIBE -->
<!-- OPTIONS -->
<div class="options " fxFlex="0 1 auto">
<button md-icon-button class="" [mdMenuTriggerFor]="optionsMenu">
<md-icon>more_horiz</md-icon>
<button mat-icon-button class="" [matMenuTriggerFor]="optionsMenu">
<mat-icon>more_horiz</mat-icon>
</button>
<md-menu #optionsMenu="mdMenu" [overlapTrigger]="false">
<button md-menu-item (click)="removeCard()">
<mat-menu #optionsMenu="matMenu" [overlapTrigger]="false">
<button mat-menu-item (click)="removeCard()">
Remove Card
</button>
</md-menu>
</mat-menu>
</div>
<!-- / OPTIONS -->
</div>
<!-- CLOSE DIALOG BUTTON -->
<button md-icon-button (click)="dialogRef.close()" aria-label="Close Dialog">
<md-icon>close</md-icon>
<button mat-icon-button (click)="dialogRef.close()" aria-label="Close Dialog">
<mat-icon>close</mat-icon>
</button>
<!-- / CLOSE DIALOG BUTTON -->
</div>
</md-toolbar>
</mat-toolbar>
<div *ngIf="card" md-dialog-content class="p-24 m-0" fusePerfectScrollbar>
<div *ngIf="card" mat-dialog-content class="p-24 m-0" fusePerfectScrollbar>
<div fxLayout.gt-xs="row" fxLayoutAlign.gt-xs="space-between center"
fxLayout.xs="column" fxLayoutAlign="center center">
@@ -132,7 +137,7 @@
<!-- BREADCRUMB -->
<div class="card-breadcrumb mb-16 mb-sm-0" fxLayout="row" fxLayoutAlign="start center">
<span>{{board.name}}</span>
<md-icon class="s-20">chevron_right</md-icon>
<mat-icon class="s-20">chevron_right</mat-icon>
<span>{{list.name}}</span>
</div>
<!-- / BREADCRUMB -->
@@ -140,10 +145,14 @@
<!-- DUE DATE -->
<div *ngIf="card.due" class="due-date" fxLayout="row" fxLayoutAlign="start center">
<md2-datepicker class="picker ml-8" [(ngModel)]="card.due" openOnFocus="true" type="datetime" format="dd/MM/y H:mm"></md2-datepicker>
<mat-form-field floatPlaceholder="never">
<input matInput [matDatepicker]="picker" [(ngModel)]="card.due" placeholder="Choose a due date">
<mat-datepicker-toggle matSuffix [for]="picker"></mat-datepicker-toggle>
<mat-datepicker #picker></mat-datepicker>
</mat-form-field>
<button md-icon-button class="remove-due-date" (click)="removeDueDate()">
<md-icon class="s-16">close</md-icon>
<button mat-icon-button class="remove-due-date" (click)="removeDueDate()">
<mat-icon class="s-16">close</mat-icon>
</button>
</div>
<!-- / DUE DATE -->
@@ -152,20 +161,20 @@
<!-- NAME -->
<div fxLayout="row" fxLayoutAlign="start center">
<md-icon *ngIf="card.subscribed" class="card-subscribe s-20 mr-12">remove_red_eye</md-icon>
<mat-icon *ngIf="card.subscribed" class="card-subscribe s-20 mr-12">remove_red_eye</mat-icon>
<div class="card-name">
<md-input-container floatPlaceholder="never" fxFlex>
<input mdInput [(ngModel)]="card.name" placeholder="Title" required (change)="updateCard()">
</md-input-container>
<mat-form-field floatPlaceholder="never" fxFlex>
<input matInput [(ngModel)]="card.name" placeholder="Title" required (change)="updateCard()">
</mat-form-field>
</div>
</div>
<!-- / NAME -->
<!-- DESCRIPTION -->
<div class="description">
<md-input-container fxFlex>
<textarea mdInput [(ngModel)]="card.description" placeholder="Description" columns="1" md-maxlength="150" max-rows="4" (change)="updateCard()"></textarea>
</md-input-container>
<mat-form-field fxFlex>
<textarea matInput [(ngModel)]="card.description" placeholder="Description" columns="1" mat-maxlength="150" max-rows="4" (change)="updateCard()"></textarea>
</mat-form-field>
</div>
<!-- / DESCRIPTION -->
@@ -178,36 +187,36 @@
<div *ngIf="card.idLabels[0]" fxFlex class="labels">
<div class="section-header" fxLayout="row" fxLayoutAlign="start center">
<md-icon class="s-20">label</md-icon>
<mat-icon class="s-20">label</mat-icon>
<span class="section-title">Labels</span>
</div>
<div class="section-content">
<md-chip-list class="label-chips">
<md-chip class="label-chip mb-4"
*ngFor="let labelId of card.idLabels"
[class]="board.labels | getById:labelId:'color'"
fxLayout="row" fxLayoutAlign="start center">
<mat-chip-list class="label-chips">
<mat-chip class="label-chip mb-4"
*ngFor="let labelId of card.idLabels"
[class]="board.labels | getById:labelId:'color'"
fxLayout="row" fxLayoutAlign="start center">
<span>{{board.labels|getById:labelId:'name'}}</span>
<md-icon class="ml-8 s-16 chip-remove" (click)="toggleInArray(labelId, card.idLabels);updateCard()">close</md-icon>
</md-chip>
</md-chip-list>
<mat-icon class="ml-8 s-16 chip-remove" (click)="toggleInArray(labelId, card.idLabels);updateCard()">close</mat-icon>
</mat-chip>
</mat-chip-list>
</div>
</div>
<div *ngIf="card.idMembers[0]" fxFlex class="members">
<div class="section-header" fxLayout="row" fxLayoutAlign="start center">
<md-icon class="s-20">supervisor_account</md-icon>
<mat-icon class="s-20">supervisor_account</mat-icon>
<span class="section-title">Members</span>
</div>
<div class="section-content">
<md-chip-list class="member-chips">
<md-chip class="member-chip mb-4" *ngFor="let memberId of card.idMembers"
fxLayout="row" fxLayoutAlign="start center">
<mat-chip-list class="member-chips">
<mat-chip class="member-chip mb-4" *ngFor="let memberId of card.idMembers"
fxLayout="row" fxLayoutAlign="start center">
<img class="member-chip-avatar" [src]="board.members | getById:memberId:'avatar'"
[md-tooltip]="board.members | getById:memberId:'name'">
<md-icon class="ml-8 s-16 chip-remove" (click)="toggleInArray(memberId, card.idMembers);updateCard()">close</md-icon>
</md-chip>
</md-chip-list>
[matTooltip]="board.members | getById:memberId:'name'">
<mat-icon class="ml-8 s-16 chip-remove" (click)="toggleInArray(memberId, card.idMembers);updateCard()">close</mat-icon>
</mat-chip>
</mat-chip-list>
</div>
</div>
</div>
@@ -219,7 +228,7 @@
<div class="attachments">
<div class="section-header" fxLayout="row" fxLayoutAlign="start center">
<md-icon class="s-20">attachment</md-icon>
<mat-icon class="s-20">attachment</mat-icon>
<span class="section-title">Attachments</span>
</div>
@@ -239,29 +248,29 @@
<div fxLayout="row" fxLayoutAlign="start center">
<span class="attachment-name">{{item.name}}</span>
<md-icon *ngIf="card.idAttachmentCover === item.id"
class="yellow-700-fg attachment-is-cover s-20">star
</md-icon>
<mat-icon *ngIf="card.idAttachmentCover === item.id"
class="yellow-700-fg attachment-is-cover s-20">star
</mat-icon>
</div>
<span class="attachment-time">{{item.time}}</span>
<div>
<button md-raised-button class="attachment-actions-button" [mdMenuTriggerFor]="attachmentActionsMenu">
<button mat-raised-button class="attachment-actions-button" [matMenuTriggerFor]="attachmentActionsMenu">
<span fxLayout="row" fxLayoutAlign="center center">
<span>Actions</span>
<md-icon class="s-20">arrow_drop_down</md-icon>
<mat-icon class="s-20">arrow_drop_down</mat-icon>
</span>
</button>
<md-menu #attachmentActionsMenu="mdMenu">
<button md-menu-item (click)="toggleCoverImage(item.id)">
<mat-menu #attachmentActionsMenu="matMenu">
<button mat-menu-item (click)="toggleCoverImage(item.id)">
<span *ngIf="card.idAttachmentCover !== item.id">Make Cover</span>
<span *ngIf="card.idAttachmentCover === item.id">Remove Cover</span>
</button>
<button md-menu-item (click)="removeAttachment(item)">
<button mat-menu-item (click)="removeAttachment(item)">
Remove Attachment
</button>
</md-menu>
</mat-menu>
</div>
</div>
@@ -279,9 +288,9 @@
</div>
</div>
<button md-button class="add-attachment-button" aria-label="add attachment">
<button mat-button class="add-attachment-button" aria-label="add attachment">
<div fxLayout="row" fxLayoutAlign="start center">
<md-icon class="s-20">add</md-icon>
<mat-icon class="s-20">add</mat-icon>
<span>Add an attachment</span>
</div>
</button>
@@ -297,21 +306,21 @@
<div class="section-header" fxLayout="row" fxLayoutAlign="start center">
<md-icon class="s-20">check_box</md-icon>
<mat-icon class="s-20">check_box</mat-icon>
<span fxFlex class="section-title">{{checklist.name}}</span>
<div>
<button md-icon-button class="checklist-actions-button" [mdMenuTriggerFor]="checklistActionsMenu">
<md-icon class="s-20">more_vert</md-icon>
<button mat-icon-button class="checklist-actions-button" [matMenuTriggerFor]="checklistActionsMenu">
<mat-icon class="s-20">more_vert</mat-icon>
</button>
<md-menu #checklistActionsMenu="mdMenu">
<button md-menu-item (click)="removeChecklist(checklist)">
<md-icon>delete</md-icon>
<mat-menu #checklistActionsMenu="matMenu">
<button mat-menu-item (click)="removeChecklist(checklist)">
<mat-icon>delete</mat-icon>
<span>Remove Checklist</span>
</button>
</md-menu>
</mat-menu>
</div>
</div>
@@ -324,9 +333,9 @@
{{checklist.checkItemsChecked}} / {{checklist.checkItems.length}}
</span>
<md-progress-bar class="mat-accent checklist-progressbar" mode="determinate"
value="{{100 * checklist.checkItemsChecked / checklist.checkItems.length}}">
</md-progress-bar>
<mat-progress-bar class="mat-accent checklist-progressbar" mode="determinate"
value="{{100 * checklist.checkItemsChecked / checklist.checkItems.length}}">
</mat-progress-bar>
</div>
<div class="check-items">
@@ -334,17 +343,17 @@
<div class="check-item" *ngFor="let checkItem of checklist.checkItems" fxLayout="row" fxLayoutAlign="space-between center">
<div fxFlex fxLayout="row" fxLayoutAlign="start center">
<md-checkbox [(ngModel)]="checkItem.checked"
(change)="updateCheckedCount(checklist)"
aria-label="{{checkItem.name}}">
</md-checkbox>
<md-input-container fxFlex class="mx-12">
<input mdInput [(ngModel)]="checkItem.name">
</md-input-container>
<mat-checkbox [(ngModel)]="checkItem.checked"
(change)="updateCheckedCount(checklist)"
aria-label="{{checkItem.name}}">
</mat-checkbox>
<mat-form-field fxFlex class="mx-12">
<input matInput [(ngModel)]="checkItem.name">
</mat-form-field>
</div>
<button md-icon-button class="checklist-actions-button" (click)="removeChecklistItem(checkItem, checklist)">
<md-icon class="s-20">delete</md-icon>
<button mat-icon-button class="checklist-actions-button" (click)="removeChecklistItem(checkItem, checklist)">
<mat-icon class="s-20">delete</mat-icon>
</button>
</div>
@@ -354,14 +363,14 @@
fxLayout="row" fxLayoutAlign="start center">
<div fxLayout="row" fxLayoutAlign="start center" fxFlex>
<md-icon class="s-20">add</md-icon>
<mat-icon class="s-20">add</mat-icon>
<md-input-container class="no-errors-spacer mx-12" fxFlex>
<input mdInput ngModel #checkItem="ngModel" name="checkItem" placeholder="Add an item" autocomplete="off">
</md-input-container>
<mat-form-field class="no-errors-spacer mx-12" fxFlex>
<input matInput ngModel #checkItem="ngModel" name="checkItem" placeholder="Add an item" autocomplete="off">
</mat-form-field>
</div>
<button md-raised-button
<button mat-raised-button
[disabled]="!newCheckItemForm.valid || newCheckItemForm.pristine"
class="mat-accent" aria-label="Add">
<span>Add</span>
@@ -379,7 +388,7 @@
<div class="comments">
<div class="section-header" fxLayout="row" fxLayoutAlign="start center">
<md-icon class="s-20">comment</md-icon>
<mat-icon class="s-20">comment</mat-icon>
<span class="section-title">Comments</span>
</div>
@@ -390,14 +399,14 @@
<div fxLayout="row">
<img class="comment-member-avatar" src="assets/images/avatars/profile.jpg">
<md-input-container fxFlex>
<input mdInput name="newComment" ngModel #newComment="ngModel"
<mat-form-field fxFlex>
<input matInput name="newComment" ngModel #newComment="ngModel"
placeholder="Write a comment.." required>
</md-input-container>
</mat-form-field>
</div>
<div fxLayout="row" fxLayoutAlign="end center">
<button md-raised-button class="mat-accent"
<button mat-raised-button class="mat-accent"
[disabled]="!newCommentForm.valid || newCommentForm.pristine"
aria-label="Add">
<span>Add</span>
@@ -429,7 +438,7 @@
<div class="activities">
<div class="section-header" fxLayout="row" fxLayoutAlign="start center">
<md-icon class="s-20">list</md-icon>
<mat-icon class="s-20">list</mat-icon>
<span class="section-title">Activity</span>
</div>

Some files were not shown because too many files have changed in this diff Show More